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。