Изменения

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

LR(1)-разбор

296 байт добавлено, 08:29, 4 сентября 2015
Алгоритм
'''function''' <tex>\mathtt{getLR1LexTable}(G'):</tex>
<tex> C'(G') \leftarrow \{I_0,I_1..I_n\}</tex> <font color=green>// множество канонических пунктов для <tex>G'</tex></font>
<tex>\mathtt{fillArray}(ACTION,</tex>"ошибка"<tex> ):</tex>
'''foreach''' <tex>I_i \in (E(G))\</tex>
'''if''' <tex>[A\rightarrow \alpha\cdot a\beta, b] \in I_i</tex> <font color=green>здесь <tex>a</tex> - терминал</font>
'''if''' <tex>[S'\rightarrow S\cdot, \char36] \in I_i</tex>
<tex>ACTION[i,\char36] = </tex> "принятие"
Если в процессе построения обнаружатся конфликтующие действия - это значит, что грамматика не принадлежит классу <tex>LR(1)</tex>
==== Пример ====
Анонимный участник

Навигация