- •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. Приклади застосування генераторыв.
2.Поняття транслятора, компілятора, інтерпретатора, автокоду, асемблера.
Транслятор-програма, яка переводить вихідну програму еквівалентної об. у програму. Якщо об. мова є автокодом чи деякою машинною мовою, то такий транслятор-компілятор.
Автокод- засіб ,яка близька до маш. мови більшість команд автокоду точне, символьне представлення команд машини.
Асемблер-програма, яка переводить вихідну програму яка написана на AutoCod, або мовою Асемблер в обєктний код.
Інтерпретатор- приймає вихідну програму як вхідну інформацію і виконує її. Він не створює обємного коду. Спочатку аналізує вих. програму як компілятор і транслює її в деяке внутр. представлення .
3. Логічна стуруктура компілятора.
Початкова програма
Компілятор
Внутрішнє представлення програми
Аналіз
символи
Синтаксис і семантичний аналізатор
Підготовка до генерації програми і
оптимізація
Генерація команд
Інформаційна
таблиця
Таблиці символів, імен констант
Таблиця циклів
Таблиці переходів, адрес
Об’єктна програма
сканер
4.Основні частини компілятора.
На вході сканера є ланцюг символів деякого алфавіту. При цьому деякі комбінації символів розглядаються як 1 обєкт.
Лексичний аналізатор групує термінальні символи в синтаксичні обєкти-лексеми.
В найпростішому випадку лексема – це пара вигляду тип. лексеми
Задача виділення лексеми з заг. потоку є нетривіальноюі залежить від отр. мови. Є 2 основних типи лексичних аналізаторів: прямі та непрямі.
5Лексичний аналіз роботи з таблицями
Лексичний аналізатор- на вході поступає потік лексем з цього потоку викидається все лишнє(коментарі, розділювачі).
Вид лексеми з яких буд. лекс. мова і перетв. їх або в вн. предст. або в проміжне представлення програми.
Результатом роботи лексичного аналізатора є потік лексем що еквів. поч. тексту програми.
Синтаксичний аналіз потрібний щоб перевірити чи задовольняє речення з яких складається програма правилу граматики тієї мови яка розпізнається.
6. Синтаксичний та семантичний аналіз, дерева
Синтаксичний аналіз(СА) – процес в якому досліджує ланцюжок лексем і встановлює чи задовольняє цей ланцюг структурним умовам, які явно сформульовані у визначені синтаксису мови. Це найменша частина компілятора. СА розділяє вихідну програму (лексеми) на складові частини, формує вн. Представлення, заносить інформацію в вікно символів і інші вікна. При цьому здійснюється синтаксичний і семантичний аналіз програми. Старається відокремити синтаксис від семантичного на скільки це можливо, коли синтаксичний аналіз розпізнає конструкцію вих.. мови, то викликається семантична процедура, яка контролює цю конструкцію, заносить інформацію в потрібне місце, перев. Відпов. Типів, дублювання визначень і т.д. Індексний запис є незручний для операторної обробки. Альтернативою до інткс. Є інфіксна форма запису:
Префіксна
Постфіксна(оператори записуються перед операцією)
Префіксна(оператори записуються після операції)
5+3*8
Постфіксна 5,3,8,*,+
5,24,+
29
П рефіксний 5,3,8,*,+ 8,8,* 8*8=64
Крім польської форми запису використовують такі форми представлення програм як дерева і тетроди.
Дерево, як спискова структура дозволяє творчо і просто й ефективно будувати внутрішнє представлення програм. Використовують типи виводу, які створюють синтаксис розпізнавачем. В синтаксичних деревах внутрішні вузли (вершини) є операціями, а листки є операндами. Листки зв’язані із вікнами ідентифікаторів. Структура синтаксичного дерева відображає синт. Мови програми, якою вона написана. С.дерева можуть бути побудовані для декларативної частин програми. В цьому вип..оператор дерева не вим. Ств. Область коду, а несуть інформацію для роботи компілятора. Як дереві відповідають послідовність операцій з якої випливає створення області коду говорять про дерева операцій. Д. операцій є формою представлення програми, якою зручно користуватись на етапах синтаксичного розбору тематичного аналізу і підготовити до ген. Коду коли немає необхідної програми з кодами програми.
Дерево операцій відображає зв'язок всіх операцій між собою і його зручно використовують для перетворень, які зв’яз. Перестан. І перед порядком операцій без зміни кінцевих результатів (арифметичних операцій). Дерево операцій є складною списковою структурою і тому не може бути тривіальним чином перетворюється в лінійну послідовність команд результуючої програми включно Кожного елемента дерева є 1 рядок. Дерево читається з знизу вверх і зліва на право.
І:= -1