[Crystal是否像python的ast模块那样将其内部解析器作为标准库公开?如何解析水晶源代码并获得其AST?
是的!实际上,它将整个编译器都放在stdlib中。这样我们就可以访问解析器以获得AST:
require "compiler/crystal/syntax/*"
root = Crystal::Parser.new(%(
class Foo
def hello
:world
end
end)).parse
官方文档不包含Crystal::ASTNode
及其子类,您找到的文档是公开了宏语言的文档,因此略有不同。因此,您必须深入源代码以了解如何利用AST。