Есть ли какая-нибудь альтернатива python ast модуля в Crystal? - PullRequest
0 голосов
/ 23 апреля 2020

Представляет ли Crystal свой внутренний синтаксический анализатор как стандартную библиотеку, как python с его модулем ast ? Как разобрать исходный код кристалла и получить его AST?

1 Ответ

1 голос
/ 23 апреля 2020

Да! Фактически он отправляет весь компилятор в stdlib. Таким образом, мы можем просто получить доступ к парсеру, чтобы получить AST:

require "compiler/crystal/syntax/*"

root = Crystal::Parser.new(%(
class Foo
  def hello
    :world
  end
end)).parse

Официальные документы не включают Crystal::ASTNode и его подклассы, те, которые вы находите, являются документами, раскрывающими язык макросов и, таким образом, немного отличаются. Так что вам придется погрузиться в исходный код, чтобы увидеть, как использовать AST.

...