如何解决跨多个解析器规则的 ANLTR 优先级
考虑以下语法
grammar precedence;
s: expr EOF;
expr: '!' expr | expr '.' ID | ID;
ID: [a-zA-Z];
WS: [ \n] -> skip;
给定此文法的优先规则,表达式 !a.b
应生成以下解析树
为了组织我的语法,我把它改成了
grammar precedence;
s: expr EOF;
expr: not | expr '.' ID | ID;
not: '!' expr;
ID: [a-zA-Z];
WS: [ \n] -> skip;
运行时,我们得到如下解析树
ANLTR 参考说明
ANTLR 解决了歧义,有利于首先给出的替代方案,隐含地允许我们指定运算符优先级。
然而,not
选项的位置没有改变,但被赋予了不同的优先级。为什么?有这样的间接层时,是否有不同的规则?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。