我正在尝试解析ocamlyacc中的语法(与常规yacc几乎相同),它支持无运算符的函数应用程序(如Ocaml或Haskell),以及二元运算符和一元运算符的普通分类。我得到了一个与'-‘运算符的reduce/reduce冲突,它既可以用于减法,也可以用于否定。start expr%left MINUS { ExprInt $1}
| ID
情况是我写了一个非常非常简单的语法,但在编译时,我得到了一个冲突。我不知道为什么如此简单的语法会产生冲突。%start functions
functions: SCRIPT_ID '(' STRING ')' {printf("script_id is %s", $3);};我只想使用yacc我在yacc手册上搜索,当谈到shift/reduce冲突时,它提出了一个类似于'if and el