为什么我的小语法中有3个解析冲突?

//complete
start ::= template.

//template
template ::= template_elements.
template ::= template template_elements.
template ::= .

//template elements
template_elements(res) ::= COMMENT. 
template_elements(res) ::= tag(t). 

//tag
tag(res) ::= LDEL exp(e) RDEL. 

//exp
exp(res) ::= value(v). 
exp(res) ::= exp(e1) OP(o) exp(e2).

//value
value(res) ::= variable(v). 

//variable
variable(res) ::= DOLLAR ID(i).
谁知道冲突的位置? UPDATE 如果我删除
exp(res) ::= exp(e1) OP(o) exp(e2).
,那将只有两个冲突,但我不知道为什么这会导致冲突...... UPDATE2 为什么这里没问题:
template ::= template_elements.
template ::= template template_elements.
template ::= .
    
已邀请:
要修复exp歧义,请设置优先级和关联性 - 请参阅优先规则下的文档。 柠檬可以处理左递归,但你的
template
规则应该是
template ::= template template_elements.
template ::= .
因为
template
可以为空,所以你不需要
template ::= template_elements
的情况。 进行这些更改后,您会得到什么错误?     

要回复问题请先登录注册