擅长:python、mysql、java
<p>或许有必要详细阐述@rici的评论,并给出解决问题的方法:</p>
<p><code>E = E "+" E / id</code>实际上是指:<code>E = E "+" (E / id)</code>,这是一个无结尾的递归定义:</p>
<p><code>E = E "+" E / id</code>当<code>E</code>被替换为右侧时:</p>
<p><code>E = (E "+" (E / id)) "+" (E / id)</code>等</p>
<p>这意味着,尽管<code>+</code>的右操作数在示例表达式中立即匹配(选择<code>id</code>产生式,即终端字符<code>2</code>),但对于如何匹配左侧仍然存在疑问。在</p>
<p>这就是为什么您提供的EBNF是错误的,并将其更改为:</p>
<p><code>E = ( E "+" E ) / id</code></p>
<p>解决问题。在</p>