的规则变为Q→Sababb。代换后的Q不含有直接左递归,将其代入S,S的规则变为S→Sabcabcbcc。此时,S存在直接左递归。在消除了S的直接左递归后,得到整个文法为:S→abcS’bcScSS’→abcSεQ→SababbR→Saa可以看到从文法开始符号S出发,永远无法达到Q和R,所以关于Q和R的规则是多余的,将其删除并化简,最后得到文法GS为:S→abcSbcS’cSS→abcSε当然如果对文法非终结符排序的不同,最后得到的文法在形式上可能不一样,但它们都是等价的。例如,如果对上述非终结符排序选为S、Q、R,那么最后得到的文法GR为:R→bcaRcaRaR’R→bcaRε容易证明上述两个文法是等价的。
3、实验内容:分析见下图
f图(a)变量说明
f图(b)直接左递归分析图
f图(c)间接左递归分析图
f用C语言实现定义四个函数i
tdirectcharPNN左递归函数i
ti
directcharPNN左递归函数voiddirectRemovecharPNN直接左递归函数voidi
directRemovecharPNN左递归函数并在mai
函数中依次调用4、代码实现i
clude