Изменения

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

Алгоритм Эрли

468 байт убрано, 23:32, 18 января 2012
Пример
==Пример==
Рассмотрим грамматику Построим список разбора для строки <tex>G\omega = (a + a)</tex> с в грамматике со следующими правилами: <br>* <tex>S \rightarrow T + S</tex> <br>* <tex>S \rightarrow T </tex> <br>* <tex>T \rightarrow F * T</tex> <br>* <tex>T \rightarrow F</tex> <br>* <tex>F \rightarrow ( S )</tex> <br>* <tex>F \rightarrow a</tex> <br>Построим для строки <tex>\omega = (a + a)</tex> список разбора.<br>
{|
|-
|
<b>{| class="wikitable"|-!<tex>I_0</tex></b> <br>|-|{||-!Ситуация !! Из правила|-|<tex>[S' \rightarrow \cdot S, 0]</tex> — из инициализации <br>|| 0|-|<tex>[S \rightarrow \cdot T + S, 0]</tex> — из правила || 3 <br>|-|<tex>[S \rightarrow \cdot T, 0]</tex> — из правила || 3 <br>|-|<tex>[T \rightarrow \cdot F * T, 0]</tex> — из правила || 3 <br>|-|<tex>[T \rightarrow \cdot F, 0]</tex> — из правила || 3 <br>|-|<tex>[F \rightarrow \cdot ( S ), 0]</tex> — из правила || 3 <br>|-|<tex>[F \rightarrow \cdot a, 0]</tex> — из правила || 3 <br>|}|}
||
<b>{| class="wikitable"|-!<tex>I_1</tex></b> <br>|-|{||-!Ситуация !! Из правила|-|<tex>[F \rightarrow ( \cdot S ), 0]</tex> — из правила || 1 <br>|-|<tex>[S \rightarrow \cdot T + S, 1]</tex> — из правила || 3 <br>|-|<tex>[S \rightarrow \cdot T, 1]</tex> — из правила || 3 <br>|-|<tex>[T \rightarrow \cdot F * T, 1]</tex> — из правила || 3 <br>|-|<tex>[T \rightarrow \cdot F, 1]</tex> — из правила || 3 <br>|-|<tex>[F \rightarrow \cdot ( S ), 1]</tex> — из правила || 3 <br>|-|<tex>[F \rightarrow \cdot a, 1]</tex> — из правила || 3 <br>|}|}
||
<b>{| class="wikitable"|-!<tex>I_2</tex></b> <br>|-|{||-!Ситуация !! Из правила|-|<tex>[F \rightarrow a \cdot, 1]</tex> — из правила || 1 <br>|-|<tex>[T \rightarrow F \cdot * T, 1]</tex> — из правила || 2 <br>|-|<tex>[T \rightarrow F \cdot , 1]</tex> — из правила || 2<br>|-|<tex>[S \rightarrow T \cdot , 1]</tex> — из правила || 2 <br>|-|<tex>[S \rightarrow T \cdot + S, 1]</tex> — из правила || 2 <br>|-|<tex>[F \rightarrow ( S \cdot ), 0]</tex> — из правила || 2 <br>|}|}
|-
|
<b>{| class="wikitable"|-!<tex>I_3</tex></b> <br>|-|{||-!Ситуация !! Из правила|-|<tex>[S \rightarrow T + \cdot S, 1]</tex> — из правила || 1 <br>|-|<tex>[S \rightarrow \cdot T + S, 3]</tex> — из правила || 3 <br>|-|<tex>[S \rightarrow \cdot T, 3]</tex> — из правила || 3<br>|-|<tex>[T \rightarrow \cdot F * T, 3]</tex> — из правила || 3 <br>|-|<tex>[T \rightarrow \cdot F, 3]</tex> — из правила || 3 <br>|-|<tex>[F \rightarrow \cdot ( S ), 3]</tex> — из правила || 3 <br>|-|<tex>[F \rightarrow \cdot a, 3]</tex> — из правила || 3 <br>|}|}
||
<b>{| class="wikitable"|-!<tex>I_4</tex></b> <br>|-|{||-!Ситуация !! Из правила|-|<tex>[F \rightarrow a \cdot , 3]</tex> — из правила || 1 <br>|-|<tex>[T \rightarrow F \cdot * T, 3]</tex> — из правила || 2 <br>|-|<tex>[T \rightarrow F \cdot , 3]</tex> — из правила || 2<br>|-|<tex>[S \rightarrow T \cdot + S, 3]</tex> — из правила || 2 <br>|-|<tex>[S \rightarrow T \cdot , 3]</tex> — из правила || 2 <br>|-|<tex>[S \rightarrow T + S \cdot , 1]</tex> — из правила || 2 <br>|-|<tex>[F \rightarrow ( S \cdot ), 0]</tex> — из правила || 2 <br>|}|}
||
<b>{| class="wikitable"|-!<tex>I_5</tex></b> <br>|-|{||-!Ситуация !! Из правила|-|<tex>[F \rightarrow ( S )\cdot , 0]</tex> — из правила || 1 <br>|-|<tex>[T \rightarrow F \cdot * T, 0]</tex> — из правила || 2 <br>|-|<tex>[T \rightarrow F \cdot , 0]</tex> — из правила || 2<br>|-|<tex>[S \rightarrow T \cdot + S, 0]</tex> — из правила || 2 <br>|-|<tex>[S \rightarrow T \cdot , 0]</tex> — из правила || 2 <br>|-|<tex>[S' \rightarrow S \cdot , 0]</tex> — из правила || 2 <br>|}|}
|}
Так как <tex>[S' \rightarrow S \cdot , 0] \in I_5</tex>, то <tex>\omega \in L(G) </tex>.<br>

Навигация