是否有一个Scala库可以解析Scala并创建抽象语法树(AST)?
理想情况下,我对Scala库感兴趣。备选方案是Java库。
(我知道可以利用来自 Scala Syntax Summary的EBNF。)
是否有一个Scala库可以解析Scala并创建抽象语法树(AST)?
理想情况下,我对Scala库感兴趣。备选方案是Java库。
(我知道可以利用来自 Scala Syntax Summary的EBNF。)
一些现有的解析器:
PsiBuilder
API。如果使用规范中的EBNF,请小心,因为显然存在以下问题:
"附录和内联语法之间存在不匹配,以及scalac编译的语言(在Scala源代码中使用)与语法声明的语言之间存在不匹配" -- Scala Trac bug #1826。
showRaw(reify{
//your code here like:
print(2)
})
Expr(Apply(Select(Ident(scala.Predef), TermName("print")), List(Literal(Constant(2)))))
Reference:
http://docs.scala-lang.org/overviews/reflection/symbols-trees-types.html