我想开发一个使用 scala 语法树的工具(如标题所示)。更具体地说,如果我可以在每个编译阶段之后使用这些树,那就太好了。
我的研究使我找到了 Dotty 的 TASTY 交换格式,这似乎正是我所寻找的。也许是的。但是,我无法在网上找到足够的文档来弄清楚如何提取和使用它。
我还查看了 dotc 编译器标志,但找不到明显的方法。我注意到选项:“-print-tasty”,但我无法验证预期的输出,或者我错过了什么?
当然,我总是可以在每个阶段之后使用 scala 打印机(即 -Yshow-trees 等)打印 AST。这是我唯一的选择吗?如果是,那很好。
理想情况下,如果您愿意的话,如果我能以更“机器友好”的格式使用 AST,那就太好了。TASTY 似乎是我理论上想要的,即 AST 的序列化,但我不确定如何在每个阶段之后提取它。
如果我的问题太琐碎或已经解决,我深表歉意。任何反馈将不胜感激!谢谢 !
PS:如果 AST 以 JSON 格式编码会怎样?像这样的 scala 工具是否有意义(即,将 Scala AST 转换为 JSON 并返回的工具)?