Если грамматика не имеет синтаксического анализатора LR (1), вам нужно использовать другой алгоритм разбора. В этом случае вы можете использовать синтаксический анализатор LR (3). Или вы можете (в общем) использовать парсер Earley или GLR, у которого нет ограничений на просмотр.
Я думаю, что ваш вопрос связан с восстановлением исходного синтаксического анализа по результатам анализа с преобразованной грамматикой. Это будет зависеть от алгоритма преобразования.
В приведенном вами примере, я думаю, вы используете преобразование левой рекурсии-исключения; эта процедура не сохраняет деривации, поэтому, насколько мне известно, не существует алгоритма восстановления исходного синтаксического анализа.
Существует другое преобразование, которое можно использовать для построения грамматики LR (1) из грамматики LR (k), если известно значение k
. Это преобразование обратимо. Тем не менее, это обычно не считается практичным, потому что он эффективно кодирует LR (k) машину в правила грамматики, что приводит к огромному взрыву грамматики. Было бы эквивалентно использовать реальный парсер LR (k), который также имеет огромный автомат.