Реферат: Контекстно-вільні та LA-граматики

(1) для кожного нетермінала A з продукціями A ® w 1 |…|wk , де wi ¹ e для всіх i =1,…,k , справджується умова

first ( wi ) Ç first ( wj ) = Æ при i , j = 1, … , k , i ¹ j ;

(2) для кожного нетермінала A такого, що в P є продукція A ® e , справджується

first ( A ) Ç follow ( A ) = Æ .

Умови (1), (2) називаються LA(1)-умовами .

Не кожна КВ-мова породжується LA(1)-граматикою, але синтаксис практично всіх конструкцій сучасних мов програмування можна задати LA(1)-граматиками. Досить часто мова "природно" задається не LA(1)-граматикою, але таку граматику для неї можна побудувати.

Приклад 9. За продукціями E ® E +T |T , T ® T *F |F , F ® (E )|a граматики G 0 маємо

first ( (E ) ) = { ( }, first ( a ) = { a }, звідки

first ( F ) = { a , ( }; first ( T *F ) = first ( F ), звідки

first ( T *F ) Ç first ( F ) ¹ Æ ,

тобто G 0 не є LA(1)-граматикою. Проте мова виразів L(G 0 ) задається еквівалентною LA(1)-граматикою. Побудуємо її.

Із T виводяться слова F , F *F , F *F *F , … . Додамо нетермінал B та правила B ® e |*FB , T ® FB замість правил T ® F |T *F . Маємо

first ( T ) = first ( F ) = { a , ( }, first ( *FB ) = { * },

first ( B ) = { * }, follow ( B ) = follow ( T ) =

= follow ( E ) = { +, ) }.

Отже, продукції T ® FB і B ® e |*FB не порушують LA(1)-умови. Аналогічно, додавши нетермінал A , а замість правил E ® E +T |T правила E ® TA , A ® e |+EA , одержимо LA(1)-граматику.-

4. Ліворекурсивні та розширені продукції

Правило вигляду A ® Av називається ліворекурсивним . Якщо в граматиці є продукції A ® Av |u , де u ¹ e , то first(Av )=first(u )¹ Æ , і граматика не є LA(1)-граматикою. Але за допомогою цих правил виводяться слова з множини {u , uv , uvv , …}, яка задається регулярним виразом uv * або u {v }. Замість продукцій A ® Av |u запишемо A ® u {v }. Продукції з регулярними виразами в правій частині називаються розширеними , як і граматики з такими продукціями. Неважко переконатися, що розширені правила не збагачують множину мов, породжених КВ-граматиками.

Приклад 10. Розширена граматика G 01 із правилами E ® T {+T }, T ® F {*F }, F ® (E )|a еквівалентна граматиці G 0 . Фактично РБНФ є іншим записом розширених продукцій, а сукупності РБНФ – іншою формою розширених КВ-граматик.-

К-во Просмотров: 120
Бесплатно скачать Реферат: Контекстно-вільні та LA-граматики