317
правок
Изменения
→Алгоритм
Будем рассматривать грамматику [[Удаление eps-правил из грамматики|без ε-правил]] и [[Удаление бесполезных символов из грамматики|бесполезных символов]].
'''function''' <tex>I_0\mathtt{earley_mod}(G, w)</tex> : <font color= green>// Инициализация </font> <tex>D_{0} = \{lbrace [S' \rightarrow \cdot S, 0]\}rbrace </tex> # Правило (0) — инициализация useful_loop(0) '''for ''' j = 1..n '''for ''' <tex>[A \rightarrow \alpha \cdot a_{j} \beta, i] \in I_D_{j-1}</tex> <tex>I_jD_j</tex> &<tex> \cup;</tex> = <tex>[A \rightarrow \alpha a_{j} \cdot \beta, i]</tex> # Правило (1) <font color=green>// Первое правило </font> useful_loop(j)
'''function ''' useful_loop(j): <tex>I_jD_j'' = I_jD_j</tex> '''while ''' <tex>I_jD_j'' \ne \varnothing</tex> <tex>I_jD_j' = I_jD_j''</tex> <tex>I_jD_j'' = \varnothing</tex> '''for ''' <tex>[B \rightarrow \eta \cdot , i] \in I_jD_j'</tex> # <font color=green>// Цикл (*)</font> '''for ''' <tex>[A \rightarrow \alpha \cdot B \beta, k] \in I_D_{i}</tex> <tex>I_jD_j''</tex> &<tex> \cup;</tex> = <tex>[A \rightarrow \alpha B \cdot \beta, k] </tex> # Правило (2)<font color=green>// Второе правило </font>
'''for ''' <tex>[B \rightarrow \alpha \cdot A \eta, k] \in I_jD_j'</tex> # <font color=green>// Цикл (**)</font> '''for ''' <tex>\beta : (A \rightarrow \beta) \in P</tex> <tex>I_jD_j''</tex> &<tex> \cup;</tex> = <tex>[A \rightarrow \cdot \beta, j]</tex> # Правило (3) <font color=green>// Третье правило </font> <tex>I_jD_j</tex> &<tex> \cup;</tex> = <tex>I_jD_j''</tex>
== Доказательство эквивалентности ==