Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЯП / Лекция 1.doc
Скачиваний:
50
Добавлен:
11.05.2015
Размер:
117.25 Кб
Скачать

2.3. Грамматики с ограничениями

Грамматики можно классифицировать по виду их правил: пусть G = (N, Σ, P, S)– грамматика.

Определение. ГрамматикаGназывается:

1) праволинейной, если каждое правило изPимеет видAxBилиAx, гдеA,BN;

2) контекстно-свободной(илибесконтекстной), если каждое правило изPимеет видA→α, гдеAN, α(NΣ)*;

3) контекстно-зависимой(илинеукорачивающей), если каждое правило изPимеет видα→β, |α||β|.

Грамматика, не удовлетворяющая ни одному из заданных ограничений, называется грамматикой общего вида (грамматика без ограничений).

Рассмотренный ранее пример (множество арифметических выражений, построенных из символов a, +, * и скобок) является примером контекстно-свободной грамматики.

Заметим, что согласно введенным определениям, каждая праволинейнаяграмматика – контекстно-свободная грамматика. Контекстно-зависимая грамматика запрещает правилоAe(e-правило).

Соглашение. Если языкLпорождается грамматикой типаx, тоLназывается языком типаx. Это соглашение относится ко всем «типамx».

Определенные нами выше типы грамматик и языков называют иерархией Хомского.

2.4. Регулярные множества

2.4.1. Определения

Рассмотрим методы задания языков программирования и класс множеств, образующий этот класс языков. Основным аппаратом задания будут регулярные множества и регулярные выражения на них.

Определение. ПустьΣ– конечный алфавит. Регулярное множество в алфавитеΣопределяется рекурсивно следующим образом:

1) (пустое множество) – регулярное множество в алфавитеΣ;

2) {e} – регулярное множество в алфавитеΣ;

3) {a} – регулярное множество в алфавитеΣдля каждогоaΣ;

4) если PиQ– регулярные множества в алфавитеΣ, то таковы же и множества:

а) PQ;

б) PQ;

в) P*;

5) ничто другое не является регулярным множеством в алфавите Σ.

Таким образом, множество в алфавите Σрегулярно тогда и только тогда, когда оно либо, либо {e}, либо {a} для некоторогоaΣ, либо его можно получить из этихмножеств при­ме­не­ни­емконечного числа операций объединения, конкатенации и итерации.

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

1) – регулярное выражение, обозначающее регулярное множество;

2) e– регулярное выражение, обозначающее регулярное множество {e};

3) если aΣ, тоa– регулярное выражение, обозначающее регулярное множество {a};

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

а) (p+q) – регулярное выражение, обозначающееPQ;

б) pq– регулярное выражение, обозначающееPQ;

в) p*– регулярное выражение, обозначающееP*;

5) ничто другое не является регулярным выражением.

Принято обозначать p+для сокращенного обозначениярр*. Расстановка приоритетов:

  • * (итерация) – наивысший приоритет;

  • конкатенация;

  • + (объединение).

Таким образом, 0 + 10*= (0 + (1 (0*))).

Примеры:

1. 01 означает {01};

2. 0*– {0}*;

3. (0+1)*– {0, 1}*;

4. (0+1)*011 – означает множество всех цепочек, составленных из 0 и 1 и оканчивающихся цепочкой 011;

5. (a+b) (a+b+0+1)*означает множество всех цепочек {0, 1,a,b}*, начинающихся сaилиb.

6. (00+11)*((01+10)(00+11)*(01+10)(00+11)*) означает мно­жество всех цепочек нулей и единиц, содержащих четное число 0 и четное число 1.

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

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

Пусть α,βиγрегулярные выражения, тогда:

1) α + β = β + α

2) * = e

3) α + (β + γ) = (α + β) + γ

4) α(βγ) = (αβ)γ

5) α(β + γ) = αβ + αγ

6) (α + β)γ = αγ + βγ

7) αe = eα = α

8) α = α = 

9) α* = α+α*

10) (α*)* = α*

11) α+α = α

12) α+ = α

Соседние файлы в папке ТЯП