Построить LL-анализатор для языка, порождаемого грамматикой. (Вариант 3)

Слайд 2

Ясно, что полученная грамматика не LL(1) (см. правила 2-3). Проверим условие

Ясно, что полученная грамматика не LL(1) (см. правила 2-3). Проверим условие

LL(2). Для этого построим для всех A ∈ {P, S, D, D', L} функцию :

Решение: Данная грамматика леворекурсивна, следовательно, она не LL-грамматика. Исключим левую рекурсию:

(1) P → D ; L
(2-3) S → a = a ⏐a : S
(4) D → int a D'

(5-6) D' → , aD' ⏐ε
(7) L → SL'
(8-9) L' → ; SL'⏐ε

Слайд 3

Проверим условие сильной LL(2)-грамматики. Достаточно проверить для нетерминалов D' и L'

Проверим условие сильной LL(2)-грамматики. Достаточно проверить для нетерминалов D' и L'

условие вида:
Построим {; a}, {ε}.
{, a} ∩ {; a}= ∅.
Итак, рабочая грамматика сильная LL(2)-грамматика. Поэтому можно применить алгоритм построения 2-предсказывающего алгоритма анализа без построения LL(2)-таблиц.

{; a} ∩ {ε}= ∅.

Слайд 4