- •Лекция 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. Уравнения с регулярными коэффициентами
Лекция 1 Введение
Дисциплина посвящена проблеме теоретического описания вычислительных процессов, а также теории языков программирования и методов трансляции. Существует достаточно большое количество вариантов организации вычислительного процесса.
Однако всем этим схемам присуща общая технологическая цепочка – «лексический анализ → синтаксический анализ → генерация кода → оптимизация кода».
1. Предварительные сведения
1.1. Множества
Атом a.
Множество A.
Атомы являются элементами множества, aA.
Таким образом, множество состоит из элементов (атомов или других множеств): A = {a1, a2, …, an}. Если множествоBпринадлежит множествуA, то пишутBA.
Атому ничего не принадлежит.
Утверждение #A=nозначает, что множествоAимеетnэлементов. Символобозначает пустое множество, т.е. множество, в котором нет элементов. При этом атом тоже не имеет элементов, но пустое множество не атом и атом не является пустым множеством.
Один из способов определения множества – определение с помощью предиката. Предикат – это утверждение, состоящее из нескольких переменных и принимающее значение 0 или 1 («ложь» или «истина»). Множество, определяемое с помощью предиката, состоит из тех элементов, для которых предикат истинен.
1.2. Операции и отношения
1.2.1. Операции на множествах
Объединение AB= {x|xAилиxB}
(диаграмма)
Пересечение AB= {x|xAиxB}
(диаграмма)
Разность A–B= {x|xAиxB}
(диаграмма)
Декартово произведение AB= {(a,b) |aAиbB}
Примеры на
и т.д.
1.2.2. Отношения на множествах
Пусть AиB– множества. Отношением изAвBназывается любое подмножество множествAB.
Если A=B, то отношение задано (определено) наA.
Если R– отношение изAвBи (a,b)R, то пишутaRb.
Пример.A–множествоцелых чисел. ОтношениеLпредставляет множество {(a,b) |a<b} илиa<b(aLb).
Определение. Отношение {(b,a) | (a,b)R} называют обратным к отношениюR, т.е.R–1.
Определение. ПустьA– множество,R– отношение на A. ТогдаRназывают:
1) рефлексивным, еслиaRaдля всех пар изA;
2) симметричным, еслиaRbвлечетbRaдля всехaиbизA;
3) транзитивным, еслиaRbиbRсвлекутaRсдляa,b,cизA.
Определение. Степень отношения RнаAобозначаетсяkи определяется следующим образом:
1) aR1bтогда и только тогда, когдаaRb;
2) aRibдляi > 1тогда и только тогда, когда существует такоеcA, чтоaRcиcRi–1b.
Это пример рекурсивного определения:
[aR4b → aRc1 и c1R3b → c1Rc2 и c2R2b → c2Rc3 и c3R1b].
Транзитивное замыканиеотношения множестваRнаA(R+) определяется так:аR+bтогда и только тогда, когдаaRibдлянекоторогоi 1.
Расшифровка понятия транзитивного замыкания: аR+b, если существует последовательностьc1, c2, …, cn, состоящая из 0 или более элементов, принадлежащихA, такая, чтоaRc1, c1Rc2, …, cn–1Rcn, cnRb. Еслиn= 0, тоаRb.
Рефлексивное и транзитивное замыканиеотношенияR(R*) на множествеAопределяется следующим образом:
1) aR*a для всех aA;
2)аR*b, еслиаR+b;
3) в R*нет ничего другого, кроме того, что содержится в 1) и 2).
Если определить R0, сказав, чтоaR0bтогда и только тогда, когдаa=b, тоаR*bтогда и только тогда, когдаaRibдлянекоторогоi 0.
Единственное различие между R+иR*состоит в том, чтоaR*aистиннодля всехaA, ноаR+aможет быть, а может и не быть истинным.
1.3. Множества цепочек
1.3.1. Цепочки
Алфавитомбудем называть любое множество символов (оно не обязательно конечно и дажесчетно), но в наших приложениях оно конечно. Предполагается, что слово «символ» имеет достаточно ясный интуитивный смысл.
Символ– элемент алфавита (синонимы: буква, знак).
Пример: 01011 – цепочка в бинарном алфавите {0, 1}.
Особый вид цепочки – пустая цепочка, обозначается как e. Пустая цепочка не содержит символов.
Соглашения:
Прописные буквы греческого алфавита – алфавиты.
a,b,cиd– отдельные символы.
t,u,v,w,x,yиz– цепочка символов.
Если цепочку из iсимволов обозначитьa→ai, тогдаa0=e– пустая цепочка.
Определение. Цепочки в алфавитеΣопределяются следующим образом:
1) e– цепочкавΣ;
2) если xцепочка вΣиaΣ, тоxa– цепочкавΣ;
3) y– цепочкавΣтогда и только тогда, когдаонаявляется таковой в силу 1) и 2).
