代码之家  ›  专栏  ›  技术社区  ›  AWhitford

Scala中的Scala AST[关闭]

  •  15
  • AWhitford  · 技术社区  · 15 年前

    是否有一个Scala库可以解析Scala并创建 抽象语法树

    Scala Syntax Summary .)

    6 回复  |  直到 15 年前
        1
  •  9
  •   PrimosK    13 年前

    我认为访问AST的最好方法是使用编译器插件。你应该读一本书 soft introduction diving in deep .

        2
  •  4
  •   Matt R    15 年前

    一些现有的解析器:

    附录和内联语法之间不匹配,以及scalac编译的语言(并在scala源代码中使用)和语法声明的语言之间不匹配-- Scala Trac bug #1826 .

        3
  •  2
  •   Daniel C. Sobral    15 年前

    但是,您可以调用编译器本身——毕竟它只是一个jar文件。特别是Scala 2.8,有很多钩子可供其他程序使用——这是Miles Sabin的工作,他正是这样做的,这样Scala的Eclipse插件就可以以这种方式利用编译器。

        4
  •  2
  •   Flora Liu    9 年前

    如果您想生成一段代码的AST。您可以使用scala反射:

    showRaw(reify{
      //your code here like:
      print(2)
    })
    

    上述代码将生成一个AST:

    Expr(Apply(Select(Ident(scala.Predef), TermName("print")), List(Literal(Constant(2)))))
    

    参考:

    http://docs.scala-lang.org/overviews/reflection/symbols-trees-types.html

        6
  •  0
  •   Steve Lianoglou    15 年前

    不确定纯scala解决方案,但如果您发现自己需要实施计划B,您可以先查看 ANTLR Rats!