297
правок
Изменения
→Управляющая таблица
=== Управляющая таблица ===
После того, как автомат построен, перейдем к построению управляющей таблицыможно построить управляющую таблицу.
Обращение к таблице происходит слудующим образом <tex>\mathtt{T[state, token]}</tex>, где
*<tex>\mathtt{state}</tex> {{---}} состояние автомата,
*<tex>\mathtt{token}</tex> {{---}} входной символ;
В таблице информация имеет следующий видсоответствии со [[LR(k)-грамматики#LR-разборщик#Структура|структурой]] управляющей таблицы будем действовать следующим образом: 1. для каждого ребра <tex>I \xrightarrow{\text{X}} J </tex> мы поместим в позицию <tex>[I,X]</tex> таблицы * <tex>s\ J</tex> (сокр. от ''shift'struct''' Cell enum: Shift Reduce Accept ) , если <font color="green"tex>// допуск X</fonttex>{{---}} терминал, Error *<font color="green"tex>J<// ошибкаtex>, если <tex>X</fonttex>{{---}} нетерминал. '''struct''' Shift state: '''int''' 2. для состояния, содержащего ситуацию <font color="green"tex>[A\to w \cdot]<// переход в стостояние statetex>, поместим <tex>r(n)</fonttex> (сокр. от ''reduce'struct''' Reduce rule: '''int''' ) в позицию <font color="green"tex>[I, Y]</tex> для каждого терминала <tex>Y</ свертка по правилу ruletex>, где <tex>n</fonttex>{{---}} это номер правила в изначальной грамматике. 3. пустая ячейка означает ошибочную ситуацию.
== Иллюстрация алгоритма ==