【发布时间】:2015-03-03 23:12:56
【问题描述】:
有没有办法让 ANTLR4 自动删除生成的解析树中的冗余节点?
更具体地说,我一直在试验 GLSL 的语法,由于自动处理运算符优先级所需的规则转发,您最终会在解析树中得到长的线性“表达式”序列。
大多数生成的树节点只是“前进到下一级优先级”,所以不要提供任何有用的句法信息——你只需要每个序列中的最后一个表达式节点(即规则所在的点)转发停止),或者它成为具有多个子节点的实际树节点(即在源中遇到实际表达式)...
我希望有一种简单的方法可以消除伪中间表达式节点 - 这种类型的结构必须在任何具有运算符优先级的语法中都很常见。
语法的基本结构是从该语言的 Khronos 规范中直接复制而来的:
https://www.khronos.org/registry/gles/specs/3.1/es_spec_3.1.pdf
【问题讨论】: