从外部工具中使用Scala语法树

时间:2017-12-04 23:33:51

标签: scala abstract-syntax-tree intermediate-language dotty

我想开发一个使用scala语法树的工具(如标题所示)。更具体地说,如果我可以在每个编译阶段之后消耗树,那将是很好的。

我的研究使我得到了Dotty的TASTY交换格式,这似乎是我正在寻找的。也许是这样。 但是,我无法在线找到足够的文档来弄清楚如何提取和使用它。

我也查看了dotc编译器标志,但无法找出明显的方法。 我注意到了选项:“-print-tasty”但是我无法验证预期的输出或者我错过了什么?

当然,我总是可以使用scala打印机(即-Yshow-trees等)在每个阶段之后打印AST。这是我唯一的选择吗?如果是的话,那很好。

理想情况下,如果您愿意以更“机器友好”的格式使用AST,那将会很棒。 TASTY在理论上似乎是我想要的,即AST的序列化,但我不确定如何在每个阶段之后提取它。

如果我的问题太微不足道或者已经解决了,我会道歉。任何反馈将非常感谢!谢谢!

P.S。:如果AST以JSON格式编码怎么办?像这样的scala工具是否有意义(即,将Scala AST转换为JSON并返回的工具)?

0 个答案:

没有答案