【问题标题】:Pretty printing AST in Rascal在 Rascal 中漂亮地打印 AST
【发布时间】:2015-02-24 18:11:25
【问题描述】:

我正在尝试pretty print an AST generated来自

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

我只是错过了文档中的操作方法吗?

【问题讨论】:

    标签: rascal


    【解决方案1】:

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

    如果您的意思是打印缩进良好的 AST 结构,我们有 iprintln 正是为此目的。

    另外,对于大型 AST,REPL 可能不太喜欢它,请在 util::FastPrint 中查看我们(还没有)未记录的快速打印功能。 fiprintln 打印到流氓输出窗口,这要快得多。

    【讨论】:

      【解决方案2】:

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

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

      这只有在天气合适的时候才有效。其他解决方案是:

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

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

      【讨论】:

        猜你喜欢
        • 2012-11-22
        • 2017-12-19
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 1970-01-01
        相关资源
        最近更新 更多