是否有任何正式的算法或步骤来重写没有左递归并显示右优先级的语法。例如维基百科中描述的消除左递归的简单算法
例如,给定以下算法:
1 <goal> ::= <expr>$
2 <expr> ::= <expr><op><expr>
3 | num
4 | id
5 <op> ::= +
6 |-
7 |*
8 |/
所需的输出应该是:
1. <expr> ::= <term><expr'>
2. <expr'> ::= +<term><expr'>
3. | epsilon
4. | -<term><expr'>
5. <term> ::= <factor><term'>
6. <term'> ::= *<factor><term'>
7. | epsilon
8. | /<factor><term'>