Алгоритм Ерлі — алгоритм синтаксичного аналізу, призначений для перевірки коректності вхідного рядка.
Основні поняття алгоритму
Алгоритм Ерлі за вхідним ланцюжком та граматикою породжує список розобру для даного вхідного ланцюжка в заданій граматиці.
Нехай вхідна граматика задається четвіркою G = (T,N, S, P).
Вхідний ланцюжок задається послідовністю терміналів w=a1,a2,…,an
Списком розбору будемо називати послідовність списків ситуацій I0, I1,… In.
Ситуацією будемо називати конструкцію вигляду [A-> X1,..,Xk∙Xk+1,…,Xm, i] (де k,i — довільні натуральні числа від 0 до m, а ∙ — метасимвол, який не належить ні N ні T), якщо A-> X1,.., Xm — правило з P.
Список ситуацій Ij для слова w будемо будувати таким чином:
[A->α∙β, i] (i≤j) належить Ij тоді і тільки тоді, якщо існують такі γ та δ, що S=>* γAδ, γ=>*a1…ai та α=>*ai+1…aj. Тобто певна частина слова w [1..j] може бути виведена використовуючи A-> α∙β.
Зрозуміло, що w буде належати L(G) т. і т.т., якщо [S->α∙,0] буде належати In.
Одержаний список розбору може слугувати базою для багатьох алгоритмів, зокрема побудови правого розбору ланцюжка.
Вхід алгоритму
1)Граматика G = (T,N, S, P)
2)Вхідний ланцюжок w=a1,a2,…,an
Вихід алгоритму
Список розбору I0, I1,… In.
Алгоритм
Спочатку ініціюємо список I0.
1. Для всіх правил S → α, включити [S → ∙α, 0] в І0.
Поки в I0 можна включати, виконуємо кроки 2-3
2. Якщо [B → γ∙, 0] належить I0, то включити в І0 всі ситуації вигляду [A → αB∙β, 0] (якщо вони ще не там) для всіх [A → α∙Bβ, 0], що вже належать I0.
3. Якщо A → [α∙Bβ, 0] належить I0, то включити в I0 ситуації вигляду [B → ∙γ, 0](якщо вона ще не там) для всіх правил вигляду B → γ.
Нехай ми маємо побудовані списки I0, I1,… Ij-1.
4. Для кожної ситуації [B → α∙ajβ, i] з Ij-1 включити до Ij ситуацію [B → αaj∙B, i] Поки в Ij можна включати, виконуємо кроки 5-6.
5. Нехай [A → α∙, i] належить до Ij. Шукати в Ii ситуації вигляду [B → α∙Aβ, k]. Для кожної з них включити до Ij ситуацію [B → αA∙β, k].
6. Нехай [A → α∙Bβ, i] належить Ij. Для кожного правила B → γ включити до Ij ситуацію [B → ∙γ, j]
Посилання
- JavaScript реалізація алгоритму з можливістю генерації лісу синтаксичних дерев (у випадку неоднозначної граматики) [ 11 червня 2018 у Wayback Machine.]
Це незавершена стаття про мови програмування. Ви можете проєкту, виправивши або дописавши її. |
Це незавершена стаття про інформаційні технології. Ви можете проєкту, виправивши або дописавши її. |
Ця стаття потребує додаткових для поліпшення її . (серпень 2017) |
Цю статтю потрібно повністю переписати відповідно до Вікіпедії. (грудень 2015) |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Algoritm Erli algoritm sintaksichnogo analizu priznachenij dlya perevirki korektnosti vhidnogo ryadka Osnovni ponyattya algoritmuAlgoritm Erli za vhidnim lancyuzhkom ta gramatikoyu porodzhuye spisok rozobru dlya danogo vhidnogo lancyuzhka v zadanij gramatici Nehaj vhidna gramatika zadayetsya chetvirkoyu G T N S P Vhidnij lancyuzhok zadayetsya poslidovnistyu terminaliv w a1 a2 an Spiskom rozboru budemo nazivati poslidovnist spiskiv situacij I0 I1 In Situaciyeyu budemo nazivati konstrukciyu viglyadu A gt X1 Xk Xk 1 Xm i de k i dovilni naturalni chisla vid 0 do m a metasimvol yakij ne nalezhit ni N ni T yaksho A gt X1 Xm pravilo z P Spisok situacij Ij dlya slova w budemo buduvati takim chinom A gt a b i i j nalezhit Ij todi i tilki todi yaksho isnuyut taki g ta d sho S gt gAd g gt a1 ai ta a gt ai 1 aj Tobto pevna chastina slova w 1 j mozhe buti vivedena vikoristovuyuchi A gt a b Zrozumilo sho w bude nalezhati L G t i t t yaksho S gt a 0 bude nalezhati In Oderzhanij spisok rozboru mozhe sluguvati bazoyu dlya bagatoh algoritmiv zokrema pobudovi pravogo rozboru lancyuzhka Vhid algoritmu 1 Gramatika G T N S P 2 Vhidnij lancyuzhok w a1 a2 an Vihid algoritmu Spisok rozboru I0 I1 In AlgoritmSpochatku iniciyuyemo spisok I0 1 Dlya vsih pravil S a vklyuchiti S a 0 v I0 Poki v I0 mozhna vklyuchati vikonuyemo kroki 2 3 2 Yaksho B g 0 nalezhit I0 to vklyuchiti v I0 vsi situaciyi viglyadu A aB b 0 yaksho voni she ne tam dlya vsih A a Bb 0 sho vzhe nalezhat I0 3 Yaksho A a Bb 0 nalezhit I0 to vklyuchiti v I0 situaciyi viglyadu B g 0 yaksho vona she ne tam dlya vsih pravil viglyadu B g Nehaj mi mayemo pobudovani spiski I0 I1 Ij 1 4 Dlya kozhnoyi situaciyi B a ajb i z Ij 1 vklyuchiti do Ij situaciyu B aaj B i Poki v Ij mozhna vklyuchati vikonuyemo kroki 5 6 5 Nehaj A a i nalezhit do Ij Shukati v Ii situaciyi viglyadu B a Ab k Dlya kozhnoyi z nih vklyuchiti do Ij situaciyu B aA b k 6 Nehaj A a Bb i nalezhit Ij Dlya kozhnogo pravila B g vklyuchiti do Ij situaciyu B g j PosilannyaJavaScript realizaciya algoritmu z mozhlivistyu generaciyi lisu sintaksichnih derev u vipadku neodnoznachnoyi gramatiki 11 chervnya 2018 u Wayback Machine Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Ce nezavershena stattya pro informacijni tehnologiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno serpen 2017 Cyu stattyu potribno povnistyu perepisati vidpovidno do standartiv yakosti Vikipediyi Vi mozhete dopomogti pererobivshi yiyi Mozhlivo storinka obgovorennya mistit zauvazhennya shodo potribnih zmin gruden 2015