设有文法S -> a | ^ | ( T ) . T -> T , S | S .请消除文法的左递归。
时间: 2024-06-07 15:05:55 浏览: 164
消除文法的左递归
5星 · 资源好评率100%
首先,我们需要把S的产生式分成两组,一组是以S开头的,另一组是以非S开头的。在这个文法中,只有一个以S开头的产生式,因此我们可以把它提取出来:
S -> ^
S -> ( T )
现在我们需要解决T的左递归问题。我们可以把T的产生式分成两组,一组是以T开头的,另一组是以非T开头的。在这个文法中,只有一个以T开头的产生式,因此我们可以把它提取出来:
T -> S T'
T' -> , S T' | ^
现在我们得到了消除左递归后的文法:
S -> ^
S -> ( T )
T -> S T'
T' -> , S T' | ^
这个文法中已经没有左递归了。
阅读全文