Управляющая таблица
Теперь мы можем вычислить множество сверток R :
R = empty set; for (each state I in T) { for (each item [A->w.] in I) { R+={(I, A->w)}; } }
Таким образом, алгоритм построения управляющей таблицы автомата состоит из следующих шагов:
- Пополнение грамматики
- Построение множества состояний
- Построение множества переходов
- Построение множества сверток
Для того, чтобы построить таблицу анализатора для грамматики, поступим следующим образом:
- для каждого ребра I->X J мы поместим в позицию [I, X] таблицы
- shift J , если X - терминал,
- goto J , если X - нетерминал.
- для каждого состояния I , содержащего ситуацию [S'->S.] мы поместим accept в позицию [I,$]
- для состояния, содержащего ситуацию [A->w.] (правило номер n с точкой в конце правила), поместим reduce n в позицию [I, Y] для каждого терминала Y .
- пустая ячейка означает ошибочную ситуацию
Приведем управляющую таблицу для грамматики G0:
| ( | ) | x | , | $ | S | L |
0 | s2 | | s2 | | | 3 | |
1 | r2 | r2 | r2 | r2 | r2 | | |
2 | s2 | | s1 | | | 6 | 4 |
3 | | | | | acc | | |
4 | | s5 | | s7 | | | |
5 | r1 | r1 | r1 | r1 | r1 | | |
6 | r3 | r3 | r3 | r3 | r3 | | |
7 | s3 | | s2 | | | 8 | |
8 | r4 | r4 | r4 | r4 | r4 | | |
Содержание раздела