Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
pos.doc
Скачиваний:
161
Добавлен:
10.06.2015
Размер:
2.55 Mб
Скачать

2 Регулярные грамматики и языки

2.1 Регулярные выражения

Регулярный язык Lв некотором алфавитепредставляет собой регулярное множество строк.

Определение Регулярное множество есть, либо {}, либо {а} для некоторогоа, либо множество, которое можно получить из указанных множеств путем применения конечного числа операций сцепления, объединения и итерации.

В основе метода определения регулярности заданного языка лежит лемма о разрастании языка.

2.2 Лемма о разрастании языка

В достаточно длинной строке регулярного языка всегда можно найти непустую подстроку, повторение которой произвольное количество раз порождает новые строки того же самого языка.

Пример ЯзыкL1= {ambn |m,n0} – регулярный, т.к., например, в строкеaabbbповторение любой подстроки, образованной только из нулей или единиц, порождает строки (aaaabbb,aaabbb,aabbbb,aabbbbbbи т.д.) языкаL1.

Язык L2= {anbn |n1} – не регулярный, т.к. Действительно, любая итерация подстроки, состоящей только из нулей или единиц, нарушает баланс нулей и единиц. Подобные действия со смешанными подстроками, содержащими нули и единицы, приводят к нарушению порядка следования нулей и единиц. Таким образом, для языкаL2 не строк, удовлетворяющих условиям леммы.

Удобным средством формального определения регулярных языков являются регулярные выражения.

Определение Регулярные выражения над алфавитомопределяются следующим образом:

1) - регулярное выражение (обозначает пустоте регулярное множество);

2) - регулярное выражение (обозначает регулярное множество {}, состоящее из пустой строки);

3) а- регулярное выражение (обозначает множество {а});

4) если pиq– регулярные выражения, обозначающие множестваPиQ, то посредством операций над выражениями определяются выражения следующих трех типов:

а) p|qилиp+q– регулярное выражение (обозначает объединениеPQ), где символ | или + называют операциейили(альтернативы);

б) pqилиpq – регулярное выражение (обозначает множествоPQ= {xy|xP,yQ}), где символ «точка» (возможно умалчиваемый) называют операциейсцепления(конкатенации);

в) p*- регулярное выражение (обозначает множествоP*), где символ «*» называют операцией итерации.

Соотношение между регулярными языками и регулярными выражениями устанавливает теорема Клини.

Теорема Клини. Каждому регулярному языку из*соответствует регулярное выражение над множеством.

Пример Примеры регулярных выражений и их значений представлены в таблице 2.1.

Таблица 2.1 – Примеры регулярных выражений

Регулярное выражение

Значение регулярного выражения

01

единственная строка 01

0|1

две строки: 0 и 1

1*

строки, образованные из единиц, включая пустую строку

(0|1)*

строки, образованные из символов 0 и 1, включая пустую строку

0|1*

строки, состоящие из нуля и любой строки единиц, включая пустую

0|1*

строки, состоящие из нуля и любой строки единиц, включая пустую

(0|1)*011

строки, образованные из символов 0 и 1, включая пустую, обязательно оканчивающиеся строкой 011

В практических приложениях вводятся дополнительные соглашения относительно записи регулярных выражений, например, запись вида р+используется для обозначения выражениярр*.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]