我有经由ANTLR产生的AST,以及我需要将其转换为一个DLR兼容酮(表达式树)。然而,这似乎是我不能用树模式的匹配此作为表达式树需要他们的子树实例化(这我不能得到)。有什么解决办法将是最适合我用?

有帮助吗?

解决方案

几年前我做了非常类似的东西 - 我没有建立一个DLR结构,但我建立了自己的表达式树的结构,这也需要在施工时间参数(实现不变性)

那时候,我曾与ANTLR V2 - 我必须承认,我是不熟悉的新V3语法,再加上我不记得我是怎么做到的当时的每一个细节 - 所以不是为您提供一个完全制定出例子,我就试着告诉你我的故事(不知道,它是否适用于您的问题,太!):

首先,这是没有必要建立自己的结构的的AST的。我只用ANLTR的AST Builder作为车辆:每AST构建规则可以在除AST节点自身返回一个对象。返回值然后可以在所述外规则被用作构造,等等的参数。这样的结构自动建立自下而上的为您服务!

督察,你在同一时间的AST构建构建最终结构(AST只建,以确保语法规则,并且可以扔掉。)这种做法是非常坚实的,它的速度甚至比第一建立AST,然后改变着!但它仍然采用了AST解析器的力量(而不是仅仅单独使用正常的语法/词法分析器)。如果你需要的AST,太 - 只需保存到某个地方

但如果你想走路成品AST - 我想你可以使用任何编程程序来做到这一点 - 只要确保,它的工作原理自下而上来构建你的结果

希望这有助于以某种方式!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top