我需要将以下语法转换为 EBNF:
<assign> -> <id> = <expr>
<id> -> A|B|C
<expr> -> <expr> + <expr>
|<expr> * <expr>
|<expr> * <expr>
|( <expr> )
|<id>
我目前取得的进展如下:
<assign> -> <id> = <expr>
<id> = (A | B | C)
<expr> -> <id> {(+ | * ) <expr>} | ‘(‘ <expr> ‘)’
如果使用 EBNF,最好消除所有递归吗?有没有办法只使用<id>
in来完成它<expr>
?