我试图从语法中删除左递归,但是在遵循算法这样做之后我现在相信我生成的语法允许推导出无效的语句。
语法的一部分如下:
A - > a A b A c A d
A - > e A
A - > ˚F
A - > A + A
A - > A * A
所以根据我的理解,底部的两个产品是直接左递归,并且删除左递归的方法是引入一个新的非终结A'然而我得到这个:
A - > a A b A c A d A'
A - > e A A'
A - > f A'
一个' - > + A A'
一个' - > * A'
一个' - >小量
然而,这允许推导 a A b A c A d * f
这不是原始语法的有效推导。请有人请解释我做错了什么?