Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СИСТЕМНЕ ПРОГРАМУВАННЯ ТА ОС.doc
Скачиваний:
9
Добавлен:
28.10.2018
Размер:
503.3 Кб
Скачать
  1. Модель мовного транслятора. Фази мовного аналізу.

Трансля́тор (англ. translator) — програма або технічний засіб, який виконує трансляцію програми.

Транслятори поділяються на компілятори та інтерпретатори. Відмінність між ними в тому, що компілятор створює новий файл, на іншій мові (зазвичай машинній), а інтерпретатор - виконує кожну команду одразу після трансляції.

Системні і прикладні команди у виконавчому вигляді складаються з послідовності інструкцій кодованих двійковими числами кожне з яких місить двійковий код елементарної операції з одним або декількома аргументами. Аргументами можуть бути безпосередні дані, коди процесорних регістрів або адреси ОП за якими розміщенно реальні дані. Для створення програм використовується спеціальне середовище і застосовується відповідні мови програмування. Програми які перетворюють програмний код з мови програмування у будь-яку іншу мову називаються трансляторами або мовними процесорами. З точки зору режиму роботи транслятори діляться на наступні категорії:

    1. Асемблери – перекладають програму з мови асемблера у машині коди. Машині коди –це форма представлення програми яку може виконувати безпосередньо ОС.

    2. Інтерпретатори – програми синхронної дії які аналізують послідовно інструкції мови високого рівня і без переведення у машинні коди виконують відповідні дії.

    3. Компілятори – програми які перекладають програмний текст з мови високго рівня у машині коди.

    4. Препроцесори – додаток до мов високого рівня, які дозволяють покращити та розширити безпосередній початковий програмний текст самої мови.

    5. Крос-компілятори- це компілятори які на потужних комп’ютерах готують виконавчий код для комп’ютерів з обмеженою памятю мікропроцесорів та мікроконтролерів.

Оскільки код програми високого рівня складається з мовних інструкцій які містять мнемонічні ключові слова з відповідними параметрами дії, то процес перекладу має таку структуру

ВП – вхідна програма, текст програми на мові високого рівня.

ЛА – лексичний аналіз, на даному етапі текст програми розбивається на елементарні мовні одиниці, такі як ключові слова, знаки операції, знак пунктуації, змінні, числові константи, текстові константи, дужки.

СА – синтаксний аналіз. На мовах високого рівня інструкції мають чітко регламентовану структуру. Лексеми в кожній структурі мають власне місце і обмежені за типом. Під час синтаксичного аналізу аналізується загальна структура суцільної програми і структура кожної інструкції. Результатом синтаксичного аналізу є розбиття програми на відповідні структурні групи.

ГПК – генерація проміжного коду. Структурні букви отримані після синтаксичного аналізу замінюються послідовностями елементарних дій, які виконують безпосередні алгоритмічні дії програми та керують загальним обчислювальним процесом.

ОК – оптимізація коду. Послідовність елементарних дій яка отримана після ГПК містить велику кількість повторних дій та використовує надлишкову пам'ять. В розділі оптимізації перестановкою, переіменуванням та арифметичними перетвореннями з послідовності елементарних дій вилучається надлишкові операції.

ГК – генерація коду. Проміжний код після оптимізації змінюється відповідними машинними інструкціями.

УТ – управління таблицями. Під час обробки програмного тексту компілятор автоматично будує і керує наступними таблицями:

        1. Таблиця ідентифікаторів місить ідентифікатори, константи і змінні, їх тип і значення.

        2. Таблиця допоміжних функцій, які складаються з назви функції, тип результату, кількість параметрів і адреси точок входу.

        3. Таблиця проміжного коду.

        4. Таблиця стекових значень для проміжних результатів.

ОП- обробка помилок. В даному блоці аналізується синтаксична структура програми, до якої входять правила використання лексем, узгодження типів даних в мовних інструкціях, узгодження операндів в елементарних інструкціях проміжного коду. Така схема відображає повний цикл компіляції