Parsing 重写没有左递归且显示右优先级的语法的形式算法

Parsing 重写没有左递归且显示右优先级的语法的形式算法,parsing,compiler-construction,ll,Parsing,Compiler Construction,Ll,是否有任何形式算法或步骤重写没有左递归且显示右优先级的语法。例如,中描述的用于消除左递归的简单算法 例如,给定以下算法: 1 <goal> ::= <expr>$ 2 <expr> ::= <expr><op><expr> 3 | num 4 | id 5 <op> ::= + 6 |- 7 |* 8 |/

是否有任何形式算法步骤重写没有左递归且显示右优先级的语法。例如,中描述的用于消除左递归的简单算法

例如,给定以下算法:

1 <goal> ::= <expr>$
2 <expr> ::= <expr><op><expr>
3           | num
4           | id
5 <op>   ::= +
6           |-
7           |*
8           |/
1::=$
2  ::= 
3 | num
4 | id
5    ::= +
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'>
1.:=:=+
5.   ::=  ::= *

这个假设的算法如何从您的输入中知道所需的运算符优先级是什么?哦。我忘了说。我们应该先定义一些优先级