- •Визначення меж лексем
- •1 Паралельний метод роботи лексичного аналізатора і синтаксичного зовсім не означає, що вони повинні будуть виконуватися як паралельні взаємодіючі процеси. Такий варіант можливий, але не обов'язковий.
- •Виконання дій, пов'язаних з лексемами
- •Автоматні граматики
- •Перетворення регулярної граматики до автоматному увазі
- •Приклад перетворення регулярної граматики до автоматному увазі
- •Кінцеві автомати Визначення кінцевого автомата
- •Граф переходів кінцевого автомата
- •3.3 Є недетерміновані ка.
- •Перетворення кінцевого автомата до детермінованому увазі
- •Регулярні вирази. Властивості регулярних виразів
- •Рівняння з регулярними коефіцієнтами
- •Властивості регулярних мов Основні властивості регулярних мов
- •Проблеми, розв'язні для регулярних мов
- •Лемма про розростанні для регулярних мов
Властивості регулярних мов Основні властивості регулярних мов
Безліч називається замкнутим щодо деякої операції, якщо в резуль ¬ таті виконання цієї операції над будь-якими елементами, що належать дан ¬ ному безлічі, виходить новий елемент, що належить тому ж безлічі.
Наприклад, безліч цілих чисел замкнуто щодо операцій додавання, множення і віднімання, але воно не замкнуто щодо операції поділу - при розподілі двох цілих чисел не завжди виходить ціле число.
Регулярні множини (і однозначно пов'язані з ними регулярні мови) замк ¬ нути щодо багатьох операцій, які застосовні до ланцюжків символів. Наприклад, регулярні мови замкнуті щодо наступних операцій:
□ перетину;
□ об'єднання;
□ доповнення;
□ ітерації;
□ конкатенації;
□ гомоморфізму (зміни імен символів і підстановки ланцюжків замість символів).
Оскільки регулярні безлічі замкнуті щодо операцій перетину, об'єднання і доповнення, то вони представляють булеву алгебру множин.Суще ¬ обхідних документів та інші операції, щодо яких замкнуті регулярні безлі ¬ ства. Взагалі кажучи, таких операцій достатньо багато.
Проблеми, розв'язні для регулярних мов
Регулярні мови є дуже зручний тип мов.Для них раз ¬ вирішимо багато проблем, нерозв'язні для інших типів мов. Наприклад, доведено, що розв'язуються є наступні проблеми:
□ Проблема еквівалентності. Дано два регулярних мови L, (V) і L2 (V). Необ ¬ хідно перевірити, чи є ці дві мови еквівалентними.
□ Проблема приналежності ланцюжка мови. Дан регулярний мову L (V) і Це ¬ нирка символів aeV *. Необхідно перевірити, чи належить ланцюжок дан ¬ ному мови.
□ Проблема порожнечі мови. Дан регулярний мову L (V).Необхідно прове ¬ ри ти, чи є ця мова порожнім, тобто знайти хоча б один ланцюжок a * X, таку що aeL (V).
Ці проблеми можна розв'язати незалежно від того, яким із трьох способів за ¬ дан регулярний мову.Отже, ці проблеми можна розв'язати для всіх спосо ¬ бов подання регулярних мов: регулярних множин, регулярних грам ¬ Матік і кінцевих автоматів.Насправді достатньо довести разрешимость будь-який з цих проблем хоча б для одного зі способів представлення мови, то ¬ гда для інших способів можна скористатися алгоритмами перетворення ¬ ня, розглянутими више1.
Для регулярних граматик також розв'язна проблема однозначності - доказа ¬ но, що для будь-якої регулярної граматики можна побудувати еквівалентну їй однозначну регулярну граматику.
Лемма про розростанні для регулярних мов
Іноді буває необхідно довести, є чи ні деякий мову регуляр ¬ вим. Існує спосіб перевірки, є чи ні заданий мову регулярним. Цей метод заснований на перевірці так званої леми про розростанні мови.Доведено, що якщо для деякого заданого мови виконується лема про роз ¬ Растану регулярного мови, то ця мова є регулярною, якщо ж лема не виконується, то і мова не є регулярним [4. т. 1].Лемма про розростанні для регулярних мов формулюється таким обра ¬ зом: якщо дано регулярний мову і досить довгий ланцюжок символів, при ¬ належна цій мові, то в цьому ланцюжку можна знайти непустих подцепочку, яку можна повторити як завгодно багато разів,і всі отримані таким спо ¬ собом нові ланцюжка будуть належати тому ж регулярному язику2.Формально цю лему можна записати так: якщо дано мову L, то 3 константа р> О, така, що якщо aeL і | а |> р, то ланцюжок а можна записати у вигляді a = 8 (3е, де О <| р | <р, і тоді а '= 8рЧ a'eL VI> 0.
Використовуючи лему про розростанні регулярних мов, доведемо, що мова L = {а "Іоп | п> 0} не є регулярним.
Припустимо, що ця мова регулярний, тоді для нього має виконуватися лема про розростанні. Візьмемо деяку ланцюжок цієї мови a = апЬ "і запи ¬ шем її у вигляді a = 8ре.Якщо (Зба + або (ЗеЬ +, то тоді для i = 0 ланцюжок 5р ° с = 8е не належить мови L, що суперечить умовам леми, якщо ж Реа + Ь +, тоді для i = 2 ланцюжок 8р2 £ = 8рре не належить мови L. Таким чином, мова L не може бути регулярним мовою.