Parsing 转换/减少cup解析器中的冲突
我写了以下语法:Parsing 转换/减少cup解析器中的冲突,parsing,cup,Parsing,Cup,我写了以下语法: /* Precedences */ precedence left UMINUS; precedence left ID; Expr ::= ID:e | NUM:e | Expr:e1 TIMES Expr:e2 | LP Expr:e RP ; Call ::= ID:id LP ExprComma:args RP ; 当我尝试在
/* Precedences */
precedence left UMINUS;
precedence left ID;
Expr ::= ID:e
| NUM:e
| Expr:e1 TIMES Expr:e2
| LP Expr:e RP
;
Call ::= ID:id LP ExprComma:args RP ;
当我尝试在此程序上运行解析器时:
weirdAverage(5)
(标记为:id lp num(即expr)rp)
我得到:
Syntax error in line 1 '('
因此,我尝试删除以下内容:
precedence left ID;
现在我得到一个错误:
[java] Warning : *** Shift/Reduce conflict found in state #16
[java] between Expr ::= ID (*)
[java] and Call ::= ID (*) LP ExprComma RP
[java] under symbol LP
[java] Resolved in favor of shifting.
[java] Warning : *** Shift/Reduce conflict found in state #79
[java] between Expr ::= ID (*)
[java] and Call ::= ID (*) LP ExprComma RP
[java] under symbol LP
[java] Resolved in favor of shifting.
[java] Error : *** More conflicts encountered than expected -- parser generation aborted