我目前正在做大量的编译器研究。这不仅需要编写编译器插件,还需要将Dotty编译器从解析器修改为类型器。因此,我需要不断地查看原始的AST来绘制必要的转换。
在Scala 2中,反射库提供了以下功能:
val expression = ....
val tree = reify{expression}.tree
showRaw(tree)
现在,根据我对from the docs的理解,最后一步已经被Printer.TreeStructure.show(tree)
取代
然而,我在元编程文档中找不到任何可以替代reify
的东西。现在,我显然可以在Scala程序中使用各种元编程技术,并将树打印到stdout
,但与在REPL中展开以进行快速手动验证相比,这是一个非常耗时的过程。
在Scala3REPL中有什么方法可以做到这一点吗?
1条答案
按热度按时间y53ybaqx1#
您可以在项目中定义自己的
reify
并在REPL中使用它
遗憾的是,在REPL中直接定义
reify
似乎不起作用在3.2.0中,可以在REPL(scala-cli)中直接定义
reify