如果你的语法是这样的:何时在EBNF中使用括号?
<assign> → <id> = <expr>
<id> → A | B | C
<expr> → <expr> + <term>
| <term>
<term> → <term> * <factor>
| <factor>
<factor> → (<expr>)
| <id>
然后是句子A = B + C * A,你得到这个最左推导:
<assign> => <id> = <expr>
=> A = <expr>
=> A = <expr> + <term>
=> A = <term> + <term>
=> A = <factor> + <term>
=> A = <id> + <term>
=> A = B + <term>
=> A = B + <term> * <factor>
=> A = B + <factor> * <factor>
=> A = B + <id> * <factor>
=> A = B + C * <factor>
=> A = B + C * <id>
=> A = B + C * A
但对于A = B +(C * 一个 )?
我找不到詹姆斯的代码中的缺陷,所以我必须 – 2010-09-24 20:12:21