以下(简化的)Bison 语法会产生减少减少冲突:
expr
: '(' expr ')'
| ID
| fn
;
arg_list
: ID
| arg_list ID
;
fn
: '(' ')' fnbody
| '(' arg_list ')' fnbody
;
fnbody
: '{' '}'
;
我看到了这个问题——只有一个前瞻标记,无法判断(an_id
是 an'(' expr ')'
还是 a fn
。但是我该如何解决呢?