Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
72
Добавлен:
27.03.2016
Размер:
3.38 Mб
Скачать

Висновки по проробленій роботі

У результаті лабораторної роботи № 4 побудований генератор списку тріад, що породжує тріади для логічних операцій, оператора присвоювання й умовного оператора. Генератор списку тріад виявляє семантичні помилки, пов'язані із присвоюванням значень константам (коли перший операнд оператора присвоювання - константа). При наявності однієї помилки користувачеві видається повідомлення із вказівкою місця розташування помилки. При наявності декількох помилок виявляється тільки перша з них, і подальший аналіз вихідного тексту припиняється.

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

Побудований при виконанні даної лабораторної роботи генератор списку тріад входить до складу компілятора, у який також входять: лексичний аналізатор, побудований при виконанні лабораторної роботи № 2, і синтаксичний аналізатор, побудований при виконанні лабораторної роботи № 3. Цей компілятор одержує на вхід вихідну програму відповідно до заданої граматики й породжує результуючу програму у вигляді списку тріад.

Компілятор дозволяє виявляти наступні однократні помилки:

  • будь-які лексичні помилки (неправильні лексеми);

  • будь-які синтаксичні помилки (невідповідність вихідної програми синтаксису заданої вхідної мови);

  • семантичні помилки типу «присвоювання значення константі».

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

У результаті виконання лабораторних робіт № 1 - 4 побудований компілятор, що виконує обробку вихідної програми за п'ять проходів:

  1. Лексичний аналіз вихідного тексту й побудова таблиці лексем.

  1. Синтаксичний аналіз по таблиці лексем і побудова дерева синтаксичного розбору.

  1. Побудова списку тріад по дереву синтаксичного розбору.

  2. Оптимізація списку тріад методом згортки об'єктного коду.

  3. Оптимізація списку тріад методом виключення зайвих операцій.

На кожному проході компілятора вихідними даними є результати, отримані при виконанні попереднього проходу.

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

159