使用ANTLR4生成的访问器生成AST [英] Generate AST using ANTLR4 generated visitor
本文介绍了使用ANTLR4生成的访问器生成AST的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在将ANTLR3语法转换为ANTLR4语法,这意味着我必须删除所有树重写规则,因为它们现在必须在代码中实现,并且通过使用自定义Visitor
访问ParseTree
可以生成AST。
- A
Visitor
需要用作所有visit*
函数的返回类型的类型。如果我需要生成AST,我应该使用什么返回类型?ANTLR3使用了CommonTree
个对象。 - 输入
visit*
节点时,可以创建树的节点,但如何跟踪其父节点? - 有没有树重写规则转换成生成AST节点的方法的例子?如果没有,是否可以为下面这样的规则提供一个示例?
这里是(3)的规则:
ctor_initializer: '::'? identifier '(' expr? ')' -> ^(CTOR_INITIALIZER^(INITIALIZER_ID '::'? identifier) ^(CTOR_EXPR expr?) );
Antlr4
习惯性地,推荐答案创建并支持使用解析树。不直接支持创建和修改AST。
优先选择语法分析树而不是语法分析树的一些动机因素是summarized here。
Antlr4不排除构造AST--可以以任何所需的方式定义该结构。例如here和here。这篇关于使用ANTLR4生成的访问器生成AST的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文