Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсова2.doc
Скачиваний:
8
Добавлен:
11.07.2019
Размер:
214.02 Кб
Скачать

Автоматні граматики

Серед усіх регулярних граматик можна виділити окремий клас - автомат ¬ ні граматики. Вони також можуть бути леволінейнимі і праволінейнимі. Леволінейние автоматні граматики G (VT, VN, P, S), V - VNuVT можуть мати правила двох видів: А Bt або А -> t, де A. BeVN, teVT.

Праволінейние автоматні граматики G (VT, VN, P, S), V = VNuVT можуть мати правила двох видів: А tB або А t, де A. BeVN, teVT.Різниця між автоматними граматиками і звичайними регулярними грама ¬ тиками полягає в наступному: там, де в правилах звичайних регулярних граматик може бути присутнім ланцюжок термінальних символів, в автоматних граматиках може бути присутнім тільки один термінальний символ.Будь автоматна граматика є регулярною, але не навпаки - не всяка регу ¬ лярная граматика є автоматною.

Доведено, що класи звичайних регулярних граматик і автоматних граматик майже еквівалентні.Це означає, що для будь-якої мови, який заданий регуляр ¬ ної граматикою, можна побудувати автоматну граматику, визначальну майже еквівалентний мова (зворотне твердження очевидно).Щоб класи автоматних і регулярних граматик були повністю еквівалент ¬ лентни, в автоматних граматиках дозволяється додаткове правило виду S-> \, де S - цільовий символ граматики. При цьому символ S не повинен встре ¬ чаться в правих частинах інших правил граматики.Тоді мова, заданий авто ¬ ароматних граматикою G, може включати в себе порожню ланцюжок: XeL (G). Автоматні граматики, так само як звичайні леволінейние і праволінейние граматики, задають регулярні мови.Оскільки реально використовувані мови, як правило, не містять порожню ланцюжок символів, різниця на порожню ланцюжок між цими двома типами граматик значення не має, і правила виду S -> ■ до далі розглядатися не будуть.

Існує алгоритм, який дозволяє перетворити довільну регуляр ¬ ву граматику до автоматному увазі - тобто побудувати еквівалентну їй автоматну граматику. Цей алгоритм розглянуто нижче.Він є исклю ¬ ве корисним, оскільки дозволяє істотно полегшити побудову розпізнавачів для регулярних граматик.

Перетворення регулярної граматики до автоматному увазі

Є регулярна граматика G (VT, VN, P, S), необхідно перетворити її в майже еквівалентну автоматну граматику G '(VT, VN', P ', S').Як вже було сказано вище, будемо розглядати леволінейние граматики (для праволі-лінійних граматик можна легко побудувати аналогічний алгоритм). Алгоритм перетворення простий і полягає він в такій послідовник ¬ ності дій:

Крок 1.Всі нетермінальні символи з безлічі VN граматики G перено ¬ сятся у безліч VN 'граматики G'.

Крок 2. Необхідно переглядати всі безліч правил Р граматики G.Якщо зустрічаються правила виду А -> ■ Ва1 (A, BeVN, ateVT або виду А -> ■ АІ AeVN, aieVT, то вони переносяться в безліч Р 'правил граматики G' без змін.

Якщо зустрічаються правила виду А Ва ^ .-. а,,, n> 1, A. BeVN, Vn> i> 0: VT,

то в безліч нетермінальних символів VN 'граматики G' додаються сім-

воли АЬА2 Ап_!, а в безліч правил Р 'граматики З додаються правила:

А Ап.! Ап An_! -> ■ Ап_2ап_!

А-2 - ^ А.

Ai - »Ва (

Якщо зустрічаються правила виду А - »aia2 ...ani n> 1, AeVN, Vn> i> 0: a, eVT, то в безліч нетермінальних символів VN 'граматики G' додаються симво ¬ ли А1, А2 ,..., АП_1, а в безліч правил Р 'граматики З додаються правила:

А Ап_! Ап Ап_! - »Ап_2ап_!

А-2 - ^ A.j3-2

A, -> at

Якщо зустрічаються правила виду А - »В або виду А X, то вони переносяться в безліч правил Р 'граматики С без змін.

Крок 3. Проглядається безліч правил Р 'граматики С. У ньому шукаються пра ¬ вила виду А - »В або виду А -» X.

Якщо знаходиться правило виду А - »В, то проглядається безліч правил Р 'граматики С.Якщо в ньому присутні правила виду В С, В Са, В а чи В -> ■ X, то в нього додаються правила виду А С, А Са, А -> • а і А -> • X соот ¬ повідно, VA, B, Ce VN ', Vae VT' (при цьому слід враховувати, що в Граммати ¬ ке не повинно бути співпадаючих правил,і якщо якесь правило вже присутні ¬ ет в граматиці G ',то повторно його туди додавати не слід).Правило А -> ■ У видаляється з безлічі правил Р '.

Якщо знаходиться правило виду А X (і символ А не є цільовим симво ¬ лом S), то проглядається безліч правил Р 'граматики G'.Якщо в ньому присутні правила виду В А чи В -> ■ Аа, то в нього додаються правила виду В-> 1іВ-^ а відповідно, VA, BeVN ', VaeVT (при цьому слід вчи ¬ ють, що в граматиці не повинно бути співпадаючих правил, і якщо якесь правило вже присутня у граматиці G ',то повторно його туди додавати не слід).Правило А -> ■ X видаляється з безлічі правил Р '. Крок 4. Якщо на кроці 3 було знайдено хоча б одне правило виду А - »В або А -> ■ X зо безлічі правил Р 'граматики G', то треба повторити крок 3, інакше перейти до кроку 5.

Крок 5. Цільовим символом S 'граматики G' стає символ S.Кроки 3 і 4 алгоритму, в принципі, можна не виконувати, якщо граматика не содер ¬ жит правил виду А В (такі правила називаються ланцюговими) або виду А - »X ​​такі правила називаються ^-правилами). Реальні регулярні граматики зви ¬ но не містять правил такого виду.Тоді алгоритм перетворення граматики до автоматному увазі істотно спрощується. Крім того, ці правила можна було б усунути попередньо з допомогою спеціальних алгоритмів перетворення (ці алгоритми розглянуті далі, в розділі 4 «Синтаксичні аналізатори»).