Алгоритм Ерлі: відмінності між версіями

[неперевірена версія][перевірена версія]
Вилучено вміст Додано вміст
Dexbot (обговорення | внесок)
м Removing Link FA template (handled by wikidata)
Рядок 28:
 
== Алгоритм ==
Спочатку ініціюємо список I0.<br />
1. Для всіх правил S → α, включити [S → ∙α, 0] в І0. <br />
Поки в I0 можна включати, виконуємо кроки 2-3<br />
2. Якщо [B → γ∙, 0] належить I0, то включити в І0 всі ситуації вигляду [A → αB∙β, 0] (якщо вони ще не там) для всіх [A → α∙Bβ, 0], що вже належать I0.<br />
3. Якщо A → [α∙Bβ, 0] належить I0, то включити в I0 ситуації вигляду [B → ∙γ, 0](якщо вона ще не там) для всіх правил вигляду B → γ.<br />
Нехай ми маємо побудовані списки I0, I1,… Ij-1.<br />
4. Для кожної ситуації [B → α∙ajβ, i] з Ij-1 включити до Ij ситуацію [B → αaj∙B, i]
Поки в Ij можна включати, виконуємо кроки 5-6.<br />
5. Нехай [A → α∙, i] належить до Ij. Шукати в Ii ситуації вигляду [B → α∙Aβ, k]. Для кожної з них включити до Ij ситуацію [B → αA∙β, k].<br />
6. Нехай [A → α∙Bβ, i] належить Ij. Для кожного правила B → γ включити до Ij ситуацію [B → ∙γ, j]
 
 
{{Compu-lang-stub}}
{{Comp-stub}}
{{Без джерел}}
{{Переписати}}
[[Категорія:Рядкові алгоритми]]
[[Категорія:Алгоритми синтаксичного розбору]]