我工作的一个简单的XQuery处理,并使用Antlr4解析语法。 我用的是访问者模式通过解析树行走。 现在我想重写查询,如果查询满足一定条件。 处理器如果查询直接使用,如“加盟”,满足“加入”语法关键字现在可以处理的查询。
我想先重写分析树,如果查询可以更改为一个连接查询,或者什么都不做。 有没有一种方法来手动操作解析树? 如添加规则上下文或构建新的解析树?
我工作的一个简单的XQuery处理,并使用Antlr4解析语法。 我用的是访问者模式通过解析树行走。 现在我想重写查询,如果查询满足一定条件。 处理器如果查询直接使用,如“加盟”,满足“加入”语法关键字现在可以处理的查询。
我想先重写分析树,如果查询可以更改为一个连接查询,或者什么都不做。 有没有一种方法来手动操作解析树? 如添加规则上下文或构建新的解析树?
对于Antlr4,惯用的方法是装饰树节点与分析产品,而不是突变的树结构。 也就是说,一个或多个树散步可以用来识别和标记可以合并成一个连接和最后步行到输出结果的节点。
当然,解析树可以走到生成单独的AST,反过来,可以走了,并进一步结构修饰。 Antlr4不提供这样的AST的建设和步行的支持。