问题描述
考虑以下语法
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 (将#修改为@)