- •2. Формальное определение грамматики. Форма Бэкуса—Наура
- •3. Регулярные выражения как способ определения языка. Первый вариант
- •Второй вариант
- •Способы задания регулярных языков
- •Конечные автоматы, виды.
- •Построение дка на основе нка.
- •Минимальный конечный автомат. Первый вариант
- •Второй вариант
- •Метод нахождения лишних состояний.
- •Алгоритм минимизация ка.
- •13. Лексический анализ.
- •14. Построение Полиза.
- •15. Формальное определение языка, способы задания.
- •16. Классификация Хомского.
3. Регулярные выражения как способ определения языка. Первый вариант
Регуля́рные выраже́ния — это формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов. По сути это строка-образец, состоящая из символов и метасимволов и задающая правило поиска.
Регулярные выражения состоят из констант и операторов, которые определяют множества строк и множества операций на них соответственно. На данном конечном алфавите Σ определены следующие константы:
(пустое множество) ∅.
(пустая строка) ε обозначает строку, не содержащую ни одного символа. Эквивалентно «».
(символьный литерал) «a», где a — символ алфавита Σ.
и следующие операции:
(сцепление, конкатенация) RS обозначает множество {αβ | α ∈ R & β ∈ S}. Например, {"boy", "girl"}{"friend", "cott"} = {"boyfriend", "girlfriend", "boycott", "girlcott"}.
(дизъюнкция, чередование) R|S обозначает объединение R и S. Например, {"ab", "c"}|{"ab", "d", "ef"} = {"ab", "c", "d", "ef"}.[4]
(замыкание Клини, звезда Клини) R* обозначает минимальное надмножество множества R, которое содержит ε и замкнуто относительно конкатенации. Это есть множество всех строк, полученных конкатенацией нуля или более строк из R. Например, {"Go", "Russia"}* = {ε, "Go", "Russia", "GoGo", "GoRussia", "RussiaGo", "RussiaRussia", "GoGoGo", "GoGoRussia", "GoRussiaGo", …}.
Второй вариант
Регулярные выражения — это аналитический (формульный) способ задания регулярных языков.
Определение.
Регулярным выражением над алфавитом
называется
выражение, построенное по следующим
правилам:
-
—
регулярное
выражение; -
—
регулярное
выражение; -
—
регулярное
выражение, если
; -
—
регулярное
выражение, если
и
—
регулярные выражения; -
—
регулярное
выражение, если
и
—
регулярные выражения; -
—
регулярное
выражение, если
—
регулярное выражение.
Регулярное
выражение
задает
язык
в
соответствии со следующими правилами:
-
—
пустой язык; -
—
язык, состоящий
из одного пустого слова; -
—
язык, состоящий
из одного однобуквенного слова
; -
; -
; -
.
Пример.
Рассмотрим регулярное выражение
над
алфавитом
.
Язык
состоит
из слов, в которых на нечетных местах
стоит символ
,
а на четных
или
.
Замечание
1. В регулярных
выражениях вместо знака "
"
часто используют знак "
".
Замечание 2. Если дополнить правила построения регулярных выражений еще двумя правилами
-
—
регулярное
выражение, если
и
—
регулярные выражения, -
—
регулярное
выражение, если
—
регулярное выражение, и
,
а
,
то
получим так называемые расширенные
регулярные выражения. Здесь дополнение
берется до множества всех слов в алфавите
.
Если не использовать дополнение, то
получим полурасширенное регулярное
выражение.
Как увидим в дальнейшем, использование расширенных регулярных выражений не расширяет класса регулярных языков.
Замечание
3. Используя
описанную выше интерпретацию регулярных
выражений, мы будем вместо соотношения
писать
.
