这是右递归语法:
<assign> -> <id> = <exp>
<id> -> A | B | C
<exp> -> <term> + <exp> | <temp>
<term> -> <factor> * <term> | <factor>
<factor> -> ( <exp> ) | <id>
这是左递归语法:
<assign> -> <id> = <exp>
<id> -> A | B | C
<exp> -> <exp> + <term> | <term>
<term> -> <term> * <factor> | <factor>
<factor> -> ( <exp> ) | <id>
这些语法会为字符串 B + C + A 生成相同的解析树吗?下图是左递归。
但是,我为右递归绘制了解析树,它在节点的位置之间有点不同。我不知道我所做的是否正确。所以我想知道左递归和右递归会产生两个不同的解析树或者应该是相同的解析树。请帮助澄清这个问题。谢谢。