我正在使用 CUP 创建我的论文所需的解析器。我的语法有移位/减少冲突。我有这个生产规则:
command ::= IDENTIFIER | IDENTIFIER LPAREN parlist RPAREN;
我有这个警告:
Warning : *** Shift/Reduce conflict found in state #3
between command ::= IDENTIFIER (*)
and command ::= IDENTIFIER (*) LPAREN parlist RPAREN
under symbol LPAREN
现在,我实际上希望它改变,所以我很好,但我的教授告诉我要找到解决冲突的方法。我瞎了。我一直在阅读有关 if/else 冲突的信息,但对我而言,情况似乎并非如此。你能帮助我吗?
PS:IDENTIFIER、LPAREN "(" 和 RPAREN ")" 是终端,parlist 和 command 不是。