Crystal 中的 python ast 模块是否有替代方案?
Is there any alternative to python ast module in Crystal?
Crystal 是否像 python 对其 ast 模块那样将其内部解析器公开为标准库?如何解析 crystal 源代码并获取它的 AST?
是的!事实上,它在 stdlib 中提供了整个编译器。所以我们可以访问解析器来获取 AST:
require "compiler/crystal/syntax/*"
root = Crystal::Parser.new(%(
class Foo
def hello
:world
end
end)).parse
官方文档不包括Crystal::ASTNode
及其子类,您在文档中找到的是暴露宏语言的,因此略有不同。因此,您必须深入研究源代码才能了解如何使用 AST。
Crystal 是否像 python 对其 ast 模块那样将其内部解析器公开为标准库?如何解析 crystal 源代码并获取它的 AST?
是的!事实上,它在 stdlib 中提供了整个编译器。所以我们可以访问解析器来获取 AST:
require "compiler/crystal/syntax/*"
root = Crystal::Parser.new(%(
class Foo
def hello
:world
end
end)).parse
官方文档不包括Crystal::ASTNode
及其子类,您在文档中找到的是暴露宏语言的,因此略有不同。因此,您必须深入研究源代码才能了解如何使用 AST。