优先级:
%nonassoc low
%nonassoc less_than_or_equal less_than equal_operator
%left op_plus op_minus
%left op_multiply op_devision
规则:
expr : expr op_plus expr
| expr op_minus expr
|expr op_multiply expr
|expr op_devision expr
|'~' expr
|open_paran expr close_paran
|int_val
|float_val
;
bool_expr : expr less_than_or_equal expr
| expr less_than expr
|expr equal_operator expr
|NOT bool_expr
|TRUE
|FALSE ;
expression : expr %prec low
|bool_expr;
我在expr之后得到shift / reduce冲突,任何想法如何解决它?
答案 0 :(得分:1)
为'〜'添加一个优先级规则来解决问题(例如,如果'〜'用于否定我会让它从右边关联):
%right '~'