首页 > 解决方案 > Crystal中的python ast模块有什么替代品吗?

问题描述

Crystal 是否像 python 使用它的ast模块一样将其内部解析器公开为标准库?如何解析水晶源代码并获取它的AST?

标签: crystal-lang

解决方案


是的!事实上,它在 stdlib 中提供了整个编译器。所以我们可以访问解析器来获取 AST:

require "compiler/crystal/syntax/*"

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

官方文档不包括Crystal::ASTNode及其子类,您找到的文档是暴露宏语言的文档,因此略有不同。因此,您必须深入研究源代码以了解如何使用 AST。


推荐阅读