- •Лекция 1 Введение
- •1. Предварительные сведения
- •1.1. Множества
- •1.2. Операции и отношения
- •1.2.1. Операции на множествах
- •1.2.2. Отношения на множествах
- •1.3. Множества цепочек
- •1.3.1. Цепочки
- •1.3.2. Операции над цепочками
- •1.4. Языки
- •1.4.1. Определения
- •1.4.2. Операции над языком
- •2. Теория языков программирования
- •2.1. Способы определения языков
- •2.2. Грамматики
- •2.3. Грамматики с ограничениями
- •2.4. Регулярные множества
- •2.4.1. Определения
- •2.4.2. Уравнения с регулярными коэффициентами
2.3. Грамматики с ограничениями
Грамматики можно классифицировать по виду их правил: пусть G = (N, Σ, P, S)– грамматика.
Определение. ГрамматикаGназывается:
1) праволинейной, если каждое правило изPимеет видA→xBилиA→x, гдеA,BN;
2) контекстно-свободной(илибесконтекстной), если каждое правило изPимеет видA→α, гдеAN, α(NΣ)*;
3) контекстно-зависимой(илинеукорачивающей), если каждое правило изPимеет видα→β, |α||β|.
Грамматика, не удовлетворяющая ни одному из заданных ограничений, называется грамматикой общего вида (грамматика без ограничений).
Рассмотренный ранее пример (множество арифметических выражений, построенных из символов a, +, * и скобок) является примером контекстно-свободной грамматики.
Заметим, что согласно введенным определениям, каждая праволинейнаяграмматика – контекстно-свободная грамматика. Контекстно-зависимая грамматика запрещает правилоA→e(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) α+ = α
