Изменения

Перейти к: навигация, поиск

LR(1)-разбор

30 байт убрано, 21:57, 14 сентября 2015
Нет описания правки
$$I_6 = goto(I_2, c) = closure(\{[C\rightarrow c\cdot C,\char36]\})$$
$$I_6=\{[C\rightarrow c\cdot C,\char36],[C\rightarrow \cdot cC,\char36],[C\rightarrow \cdot d,\char36]\}$$
Обратим внимание, что $I_6$ отличается от $I_3$ только правыми частями пунктов. Такое явление является частым в $LR(1)$ - анализе, из-за него результирующая таблица будет неоправданно большой. $LALR$-анализ борется с этим явлением.
Продолжим:
$$I_7 = goto(I_2, d) = closure(\{[C\rightarrow d\cdot ,\char36]\}) = \{[C\rightarrow d\cdot ,\char36]\}$$
'''if''' <tex>goto(I_i,A) = I_j</tex>
<tex>goto[i,A]\leftarrow j</tex>
Если в процессе построения обнаружатся конфликтующие действия - это значит, что грамматика не принадлежит классу <tex>LR(1)</tex>
Таблица, построенная в результате применения алгоритм называется ''канонической таблицей'' <tex>LR(1)</tex> - анализа.
==== Пример ====
262
правки

Навигация