Алгоритм Эрли — различия между версиями
м |
|||
| Строка 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. Синтактический анализ.