Antlr4 Antlr 4:手动创建树

Antlr4 Antlr 4:手动创建树,antlr4,Antlr4,在将现有查询语言解析器从Antlr 2移植到Antlr 4时,我一直在“踢轮胎”。但由于Antlr 4代表着与Antlr 2和Antlr 3的重大偏差,这代表着重大风险,因为我不完全了解Antlr 4;我知道Antlr 2,Antlr 3离它很近,至少我在那里很舒服。现有的转换(最终转换为SQL)依赖于两个在Antlr4中不再可用的主要租户:树行走(树解析器)和树重写。基本上,我有一个多阶段转换,每个阶段输出一个稍微规范化/简化的树。在某种程度上,我觉得其中一些仍然是需要的。也许这只是因为我不熟

在将现有查询语言解析器从Antlr 2移植到Antlr 4时,我一直在“踢轮胎”。但由于Antlr 4代表着与Antlr 2和Antlr 3的重大偏差,这代表着重大风险,因为我不完全了解Antlr 4;我知道Antlr 2,Antlr 3离它很近,至少我在那里很舒服。现有的转换(最终转换为SQL)依赖于两个在Antlr4中不再可用的主要租户:树行走(树解析器)和树重写。基本上,我有一个多阶段转换,每个阶段输出一个稍微规范化/简化的树。在某种程度上,我觉得其中一些仍然是需要的。也许这只是因为我不熟悉Antlr 4。但在这两种情况下,我都不知道如何合理地使用相同的原始解析树结构进行转换

所以我的问题是。。。如何手动构建Antlr 4树?这里的思想过程是,我将根据我的初始语法遍历从Antlr创建的第一棵树,并生成一棵树,该树与我编写的第二棵语法中所期望的树相匹配,该语法仅用于生成侦听器/访问者


首先我要指出的是,我第一次也是唯一一次遇到antlr是在版本4中。当然,可以走树。老实说,我看不到任何需要手动构建Antlr树的场景。我的意思是,你可以建立自己的树或类似树的结构,但你几乎不需要Antlr树。所以我的问题是,你需要一个类似树的结构,还是确切地说是Antlr树?如果是后者,请详细说明我在Antlr讨论组中提到的原因,原因是我想让Antlr从描述我在这里构建的树的第二个语法生成第二个侦听器/访问者集。