Алгоритм Эрли — различия между версиями
м |
|||
Строка 31: | Строка 31: | ||
<i>Шаг 6.</i> Пусть <tex>[A \rightarrow \alpha \cdot B \beta, i] \in I_j</tex>. Для каждого <tex>B \rightarrow \gamma</tex> из <tex>P</tex> включить в <tex>I_j</tex> ситуацию <tex>[B \rightarrow \cdot \gamma, j]</tex>.<br> | <i>Шаг 6.</i> Пусть <tex>[A \rightarrow \alpha \cdot B \beta, i] \in I_j</tex>. Для каждого <tex>B \rightarrow \gamma</tex> из <tex>P</tex> включить в <tex>I_j</tex> ситуацию <tex>[B \rightarrow \cdot \gamma, j]</tex>.<br> | ||
Вычисляем все <tex>I_j</tex> для <tex>0 \leqslant j \leqslant n</tex>.<br> | Вычисляем все <tex>I_j</tex> для <tex>0 \leqslant j \leqslant n</tex>.<br> | ||
− | <tex>\omega \in L(G) \Leftrightarrow [S \rightarrow \alpha \cdot, 0] \in I_n</tex>. | + | <tex>\omega \in L(G) \Leftrightarrow [S \rightarrow \alpha \cdot, 0] \in I_n</tex>.<br> |
+ | '''Шаг 4.''' '''Шаг 5.''' '''Шаг 6.'''<br> | ||
+ | [[Файл:Эрли2.png]] [[Файл:Эрли1.png]] [[Файл:Эрли3.png]] | ||
==Литература== | ==Литература== | ||
*А.Ахо, Дж. Ульман. Теория синтакического анализа, перевода и компиляции. Том 1. Синтактический анализ. | *А.Ахо, Дж. Ульман. Теория синтакического анализа, перевода и компиляции. Том 1. Синтактический анализ. |
Версия 00:37, 16 января 2011
Определение: |
Пусть | — контекстно свободная грамматика и — входная цепочка из . Объект вида назовем ситуацией, относящейся к цепочке , если — правило из и . является метасимволом, не принадлежащим ни , ни . .
Определение: |
Для каждого | построим список ситуаций такой, что для тогда и только тогда, когда для некоторых и существуют выводы и .
Определение: |
Последовательность списков | называется списком разбора для входной цепочки .
Алгоритм Эрли
Вход. контекстно свободная грамматика
Выход. Список разбора для цепочки .
Метод.
Строим
Шаг 1. Если — правило из , включить в .
Выполняем шаги 2 и 3 до тех пор, пока можем включать новые ситуации в .
Шаг 2. Если , включить в ситуацию для всех , уже принадлежащих .
Шаг 3. Допустим, что . Для каждого правила из вида включить в ситуацию (если она еще не там).
Построение по .
Шаг 4. Для каждой ситуации , для которой включить в ситуацию .
Выполняем шаги 5 и 6 до тех пор, пока можем включать новые ситуации в .
Шаг 5. Пусть . Ищем ситуации вида . Для каждой из них включить в ситуацию .
Шаг 6. Пусть . Для каждого из включить в ситуацию .
Вычисляем все для .
.
Шаг 4. Шаг 5. Шаг 6.
Литература
- А.Ахо, Дж. Ульман. Теория синтакического анализа, перевода и компиляции. Том 1. Синтактический анализ.