我需要创建从Scala到另一种语言的转换器。我正在寻找scala代码解析器,它可以在没有编译的情况下将代码转换为语法树。
答案 0 :(得分:14)
让我简单一点:单独使用解析器无法生成Scala程序的AST。运行typer是绝对必要的,这意味着类型推断和暗示。
之后,你可以做任何你想做的事。但是编译器的前几个阶段(最新版本中的四个,计算typer)是必要的。
巧合的是,这是presentation compiler所运行的阶段,Scala IDE for Eclipse使用了这些阶段。在我看来,这可能是你的完美界面。
ENSIME也uses it,它似乎是有关它的最佳信息来源,您可能还想看一下Scala Refactoring工具,因为它使用了编译器AST也是。
最后,您可以尝试使用-Ybrowse:typer
编译代码以查看typer之后的树。使用-Xshow-phases
显示现有阶段,或-Xprint:typer
在typer(或任何其他阶段)之后打印“source”。