我正在尝试从以下语法中删除左递归:
S -> id = E
S -> id [ E ] = E
E -> E [ E ]
E -> id
我尝试遵循https://en.wikipedia.org/wiki/Left_recursion提供的左递归删除算法,但该E -> E [ E ]
行给我带来了问题,应该如何处理?我不想得到一个完整的解决方案,只是一些提示,所以我可以真正了解它是如何工作的。
到目前为止,我尝试过的是:
E -> E [ E ]
E -> id
变成:
E -> id E'
E' -> [ E ] E'
这是不正确的。我什至在正确的轨道上吗?