什么是%prec
理解%prec
%prec即是precedence的缩写,也就是用来决定优先级的。比如在符号中本来没有UMINUS这个说法(UMINUS表示一元负号,也就是给一个数加上负号,例如: − 5 × 6 -5\times6 −5×6,其实UMINUS就是个名字,想取什么就取什么)但却有所需求,在规则后面加上此话则可以确定其优先级。
定义语法
%prec terminal-symbol
这个定义就是把该终结符(terminal)所具有的优先级赋予该规则,而这个优先级将会覆盖在普通方式下推断出来的该规则的优先级。
案例
%nonassoc UMINUS
即为定义。
expr: '-' expr %prec UMINUS {...}
这句话就是用来提升expr: '-' expr
的优先级的。