我正在研究一个简单的Xquery处理器并使用Antlr4来解析语法。我使用访问者模式遍历解析树。现在我想在查询满足某些条件时重写查询。如果查询直接使用像“join”这样的关键字并满足“join”语法,则处理器现在可以处理查询。
如果查询可以更改为连接查询,或者不执行任何操作,我想首先重写解析树。有没有办法手动操作解析树?像添加规则上下文或构建新的解析树?
答案 0 :(得分:2)
对于Antlr4,惯用法是用分析产品装饰树节点,而不是改变树结构。也就是说,可以使用一个或多个树遍历来识别和标记可以合并为连接的节点和最终步行以输出结果。
当然,可以走路解析树来生成一个单独的AST,而AST又可以走路并进一步进行结构修改。 Antlr4不支持这种AST的构建和行走。