Я пытаюсь удалить левую рекурсию из следующей грамматики:
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'
Что неверно. Я вообще на правильном пути?