在Rascal中打印漂亮的AST

时间:2015-02-24 18:11:25

标签: rascal

我正在尝试{/ 1}来自

pretty print an AST generated

我刚刚错过了如何在文档中执行此操作吗?

2 个答案:

答案 0 :(得分:4)

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

如果你的意思是打印出很好地缩进的AST结构,那么我们完全就是iprintln

此外,对于大型AST,REPL可能不太喜欢它,在util::FastPrint中检查我们的(如果尚未完成的)未记录的快速打印功能。 fiprintln打印到流氓输出窗口,速度要快得多。

答案 1 :(得分:1)

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

rascal>import IO;
ok
rascal>readFile(ast@\loc)
str: ...

仅在天气适宜时才有效..其他解决方案是:

  • 使用字符串模板将AST映射回源(最简单)
  • 将AST映射到Box语言并调用格式函数(功能最强大且可配置)
  • 上述
  • 的混合体

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