2015-02-24 86 views
1

漂亮的印刷AST我从在流氓

createAstFromFile(|cwd:///Java/Hello.java|,true); 

试图pretty print an AST generated有我只是错过了如何在文档中做到这一点?

回答

4

如果你的意思是解析AST(取回Java代码),你将不得不自己编写一些东西。

如果你的意思是打印AST结构很好地缩进,我们有iprintln正是为了这个目的。

此外,对于大型AST,REPL可能不会那么喜欢它,请检查我们的(如pf)没有记录的快速打印功能util::FastPrintfiprintln打印到流氓输出窗口,速度快得多。

+0

太棒了,这似乎很好地工作。谢谢。 – josh 2015-02-25 22:45:03

1

不,我相信当前版本不包含此功能。如果不重写AST,当然你也可以通过读取位置获得源,如:

rascal>import IO; 
ok 
rascal>readFile([email protected]\loc) 
str: ... 

,只有当天气是正确的工程..其他的解决方案是:

  • 使用字符串模板映射AST回到源(简单的)
  • 地图的AST到Box语言和调用格式化功能(最强大的和可配置的)
  • 上述
的混合

我似乎还记得有一个函数可以将M3 AST映射回Java中的JDT AST,然后调用JDT的漂亮打印函数,但看起来它已停用。换句话说,这里有一些TODO。