- •Скінчені детерміновані автомати. Математична модель, форми представлення. Оптимізація.
- •Формальне визначення
- •Приклад
- •Переваги і недоліки
- •Стекові автомати. Представлення, операції, принцип роботи. Магазинний автомат (ма)
- •Стековий автомат (са)
- •Організація автомата з магазинною пам'яттю
- •Операції автомата
- •Регулярні вирази та граматики. Синтаксичні діаграми.
- •Синтаксис регулярних висловів
- •Модель мовного транслятора. Фази мовного аналізу.
- •Представлення синтаксичної структури формальної мови. Форма Бекуса-Наура.
- •Представлення проміжного коду. Елементарні операції, польський запис.
- •Формування проміжного коду
- •Поняття оптимізації проміжного коду. Оптимізаційні операції.
- •Графічне представлення лінійних ділянок проміжного коду. Перетворення на графах.
- •Загальна модель операційної системи. Загальна та машинно-залежна складові.
- •Забезпечення функцій ос. Управління пам’яттю та зовнішніми пристроями.
- •Підсистема управління оперативною пам'яттю
-
Модель мовного транслятора. Фази мовного аналізу.
Трансля́тор (англ. translator) — програма або технічний засіб, який виконує трансляцію програми.
Транслятори поділяються на компілятори та інтерпретатори. Відмінність між ними в тому, що компілятор створює новий файл, на іншій мові (зазвичай машинній), а інтерпретатор - виконує кожну команду одразу після трансляції.
Системні і прикладні команди у виконавчому вигляді складаються з послідовності інструкцій кодованих двійковими числами кожне з яких місить двійковий код елементарної операції з одним або декількома аргументами. Аргументами можуть бути безпосередні дані, коди процесорних регістрів або адреси ОП за якими розміщенно реальні дані. Для створення програм використовується спеціальне середовище і застосовується відповідні мови програмування. Програми які перетворюють програмний код з мови програмування у будь-яку іншу мову називаються трансляторами або мовними процесорами. З точки зору режиму роботи транслятори діляться на наступні категорії:
-
Асемблери – перекладають програму з мови асемблера у машині коди. Машині коди –це форма представлення програми яку може виконувати безпосередньо ОС.
-
Інтерпретатори – програми синхронної дії які аналізують послідовно інструкції мови високого рівня і без переведення у машинні коди виконують відповідні дії.
-
Компілятори – програми які перекладають програмний текст з мови високго рівня у машині коди.
-
Препроцесори – додаток до мов високого рівня, які дозволяють покращити та розширити безпосередній початковий програмний текст самої мови.
-
Крос-компілятори- це компілятори які на потужних комп’ютерах готують виконавчий код для комп’ютерів з обмеженою памятю мікропроцесорів та мікроконтролерів.
Оскільки код програми високого рівня складається з мовних інструкцій які містять мнемонічні ключові слова з відповідними параметрами дії, то процес перекладу має таку структуру
ВП – вхідна програма, текст програми на мові високого рівня.
ЛА – лексичний аналіз, на даному етапі текст програми розбивається на елементарні мовні одиниці, такі як ключові слова, знаки операції, знак пунктуації, змінні, числові константи, текстові константи, дужки.
СА – синтаксний аналіз. На мовах високого рівня інструкції мають чітко регламентовану структуру. Лексеми в кожній структурі мають власне місце і обмежені за типом. Під час синтаксичного аналізу аналізується загальна структура суцільної програми і структура кожної інструкції. Результатом синтаксичного аналізу є розбиття програми на відповідні структурні групи.
ГПК – генерація проміжного коду. Структурні букви отримані після синтаксичного аналізу замінюються послідовностями елементарних дій, які виконують безпосередні алгоритмічні дії програми та керують загальним обчислювальним процесом.
ОК – оптимізація коду. Послідовність елементарних дій яка отримана після ГПК містить велику кількість повторних дій та використовує надлишкову пам'ять. В розділі оптимізації перестановкою, переіменуванням та арифметичними перетвореннями з послідовності елементарних дій вилучається надлишкові операції.
ГК – генерація коду. Проміжний код після оптимізації змінюється відповідними машинними інструкціями.
УТ – управління таблицями. Під час обробки програмного тексту компілятор автоматично будує і керує наступними таблицями:
-
Таблиця ідентифікаторів місить ідентифікатори, константи і змінні, їх тип і значення.
-
Таблиця допоміжних функцій, які складаються з назви функції, тип результату, кількість параметрів і адреси точок входу.
-
Таблиця проміжного коду.
-
Таблиця стекових значень для проміжних результатів.
ОП- обробка помилок. В даному блоці аналізується синтаксична структура програми, до якої входять правила використання лексем, узгодження типів даних в мовних інструкціях, узгодження операндів в елементарних інструкціях проміжного коду. Така схема відображає повний цикл компіляції