- •4.Основні частини компілятора.
- •5Лексичний аналіз роботи з таблицями
- •6. Синтаксичний та семантичний аналіз, дерева
- •7. Польський запис, тетради.
- •8. Формальне визначення мови, операції над мовами.
- •9. Граматики
- •11.Регулярний вираз
- •12) Нормальна форма Бекуса-Наура
- •13. Ієрархія Хомського
- •14. Регулярні граматики.
- •15. Скінченні автомати
- •16. Детерміновані і недетерміновані кінцеві автомати.
- •18. Побудова детермінованих кінцевих автоматів за недетермінованими кінцевими автоматами.
- •19. Програмування сканера.
- •20. Таблиці символів, хеш-функції, хеш-адресація
- •21. Колізія, ре хешування
- •23.Контекстно-выльны граматики.
- •24. Синтаксично-керований переклад
- •25. Переклад інфіксної форми запису у польську
- •26. Алгоритм синтаксично-керованого перекладу:
- •27. Автомати з магазинною пам’яттю
- •28. Операторні граматики
- •29.Алгоритм розборуоператорних грамматик.
- •37. Оптимізація булевих виразів, циклів.
- •38. Генерація коду. Скп на мову Асамблер.
- •39. Інтерпретатори, адресація, представлення ідентифікаторів.
- •40 Компілятор компіляторів.
- •41 Генератор лексичних аналізаторів.(lex)
- •42. Генератор синтаксичних аналізаторів.
- •43. Приклади застосування генераторыв.
7. Польський запис, тетради.
Альтернативою до індексної форми запису є інфіксна форма запису:
префіксна;
постфіксна.
Префіксна – операнди записуються після операції.
Постфіксна – операнди записуються перед операцією.
5 + 3 * 8
Префіксна 5, 3, 8, *, +
5, 24, +
29
Префіксна:
5, 3, 8, *, + => 8, 8,* => 8 * 8 = 64
(5 + 3) * (4 - 2) / 8
5, 3, +, 4, 2, -, *, 8, /
Крім польської форми запису використовують такі форми представлення програм як дерева і тетроди.
Тетради – 4-ка, яка скл. З коду операції приймача і 2 операндів.
Якщо необх. 1 оп. То тетрода наз. виродженою.
Част. Вх.. виразу |
Опер. Код. |
Приймач |
Операнд 1 |
Операнд 2 |
a + b →T1 |
+ |
T1 |
a |
b |
T1 * C → T2 |
* |
T2 |
T1 |
C |
i:= T2 |
:= |
i |
T2 |
- |
+; T1; a; b;
*; T2; T1; c;
:=; I; T2.
Алгоритм обчислення польської форми запису:
Переглядаємо послідовність символів вхідного ланцюга.
Якщо наступний символ є операнд(ідентифікатор чи константа) то читаємо далі.
Якщо наступний символ є операція, то якщо бінарна, то з вх.. ланцюга беремо 2 операнди, що перед операцією, виконуємо цю операцію і результат записуємо назад в цю послідовність замість цих елементів. Так ідемо далі доки не виконаємо останню операцію.
8. Формальне визначення мови, операції над мовами.
Фраза – кінцева послідовність слів мови.
Якщо існує механізм побудови фраз і механізм визначення їх коректності і механізм їх розпізнавання, то можна говорити про існування деякої теорії розглянутої мови.
Мова L – множина ланцюгів скінченної довжини в алфавіті ∑(сігма).
Мову можна задати:
шляхом повного перерахування;
скласти скінченний опис мови.
Один з найефективніших описів є граматика.
Операції над мовами:
Нехай є множина L = {A, B, …, Z, a, …, z}
D = {0, 1, …,9}.
1. Множина L являє собою алфавіт з великих і малих букв, а D – алфавіт, що скл. З арабських цифр.
2. Всі ці символи можна розглянути як символи з довжиною 1.
L U D – об’єднання.
LD – множина, що скл. З 2-х символьних слів 1-буква 2-цифра: A0, Z5,…
Ln , де n – число – множина всіх слів довж. n, які скл. з символів множини L.
Li = Li-1 L
L0 = ε
L1 = L0 L = εL = L
L* - множина всіх букв + ε
L(LUD)* (визнач. ідентифікатора)
D+
9. Граматики
1 Граматика- це математична система яка визначає мову(математичний опис мови).
Классификация грамматик
Согласно Хомскому, формальные грамматики делятся на четыре типа. Для отнесения грамматики к тому или иному типу необходимо соответствие всех её правил (продукций) некоторым схемам.
Тип 0 — неограниченные
К типу 0 по классификации Хомского относятся неограниченные грамматики (также известные как грамматики с фразовой структурой). Это — все без исключения формальные грамматики. Для грамматики G(VT,VN,P,S), V=VT∪VN все правила имеют вид:
α→β, где α — любая цепочка, содержащая хотя бы один нетерминальный символ, а β — любая цепочка символов из алфавита.
Практического применения в силу своей сложности такие грамматики не имеют.
Тип 1 — контекстно-зависимые
К этому типу относятся контекстно-зависимые (КЗ) грамматики и неукорачивающие грамматики. Для грамматики G(VT,VN,P,S), V=VT∪VN все правила имеют вид:
αAβ→αγβ, где α, β∈V*, γ∈V+, A∈VN. Такие грамматики относят к контекстно-зависимым.
α→β, где α, β∈V+, |α|≤|β|. Такие грамматики относят к неукорачивающим.
Эти классы грамматик эквивалентны. Могут использоваться при анализе текстов на естественных языках, однако при построении компиляторов практически не используются в силу своей сложности. Для контекстно-зависимых грамматик доказано утверждение: по некоторому алгоритму за конечное число шагов можно установить, принадлежит цепочка терминальных символов данному языку или нет.
Тип 2 — контекстно-свободные
К этому типу относятся контекстно-свободные (КС) грамматики. Для грамматики G(VT,VN,P,S), V=VT∪VN все правила имеют вид:
A→β, где β∈V+ (для неукорачивающих КС-грамматик, β∈V* для укорачивающих), A∈VN. То есть грамматика допускает появление в левой части правила только нетерминального символа.
КС-грамматики широко применяются для описания синтаксиса компьютерных языков (см. грамматический анализ).
Тип 3 — регулярные
К третьему типу относятся регулярные грамматики (автоматные) — самые простые из формальных грамматик. Они являются контекстно-свободными, но с ограниченными возможностями.
Все регулярные грамматики могут быть разделены на два эквивалентных класса, которые для грамматики вида III будут иметь правила следующего вида:
A→Bγ или A→γ, где γ∈VT*, A, B∈VN (для леволинейных грамматик).
A→γB; или A→γ, где γ∈VT*, A, B∈VN (для праволинейных грамматик).
Регулярные грамматики применяются для описания простейших конструкций: идентификаторов, строк, констант, а также языков ассемблера, командных процессоров и др.