Есть некоторые грамматики, которые не могут быть «переписаны» для анализа парсерами LL, которые могут быть проанализированы парсерами LR. Один пример: дана простая грамматика, которая строит термины с вычитаниями:
S -> S - S | num
Вы, очевидно, имеете здесь левую рекурсию, которая не может быть обработана LL-парсерами. Чтобы сделать эту грамматику доступной для LL, вы должны исключить левую рекурсию:
S -> num S'
S' -> - num S' | epsilon
Теперь ваш анализатор LL может обрабатывать эту грамматику. Но при построении вашего синтаксического дерева для термина, подобного 4 - 2 -1, поиск по глубине, выполняемый в дереве, даст вам 4 - (2 - 1) = 3 вместо (4 - 2) - 1 = 3 как и следовало ожидать.
Причина этого в том, что вам нужно использовать леворекурсивные правила в вашей грамматике для обработки левоассоциативных операторов (например, substract). Но леворекурсивные правила не могут быть обработаны LL-парсерами.
Итак, у вас есть класс языков, которые не могут быть обработаны LL.