Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПЗ / lkspoukr.doc
Скачиваний:
69
Добавлен:
07.02.2016
Размер:
772.1 Кб
Скачать

6.4.7 Варіанти побудови компіляторів.

Найпростішою схемою компіляції є однопереглядова, в основі якої лежить процес граматичного розбору. Лексичний сканер викликається, коли для граматичного розбору викликається чергова лексема. Звертання до програм генерації об'єктного коду відбувається після того, як тільки розпізнана чергова конструкція мови. Одержуваний код недостатньо ефективний, оскільки більшість прийомів оптимізації не прийнятно для однопереглядових компіляторів. З іншого боку, процес компіляції, що вимагає тільки одного перегляду по програмі і не здійснююче перетворення в проміжний код, є дуже швидким.

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

Існують кілька факторів, що впливають на вибір схем компіляції:

  • якщо важлива швидкість компіляції, то однопереглядова схема може виявитися переважною;

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

Розбивка на дескілька переглядів може бути технологічно переважніше, тому що перегляди спрощуються, і кожний з них може розроблятися різними програмістами.

6.4.8 Інтерпретатори.

Також як і компілятор, інтерпретатор обробляє вихідну програму, написану мовою високого рівня. Основне розходження полягає в тому, що інтерпретатор безпосередньо виконує деяке представлення вихідної програми, а не транслює його в машинні коди.

Інтерпретатори звичайно виконують, подібно компіляторам, лексичний і синтаксичний аналіз і транслюють вихідну програму у своє внутрішнє представлення. Внутрішніх представлень безліч. Одне з них послідовність «четвірок». Частіше використовуються розширена польська постфіксний запис. Як внутрішнє представлення можна використовувати навіть вихідну форму запису програми, хоча звичайно набагато більш ефективної є попередня обробка вихідної програми.

Після трансляції вихідної програми у внутрішнє представлення інтерпретатор виконує задані нею операції.

Виконання інтерпретатором внутрішнього представлення програм здійснюється набагато повільніше, ніж виконання машинних кодів, генерованих компілятором.

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

6.4.9 Компілятори на p-код.

Вихідна інформація перетвориться в псевдокод (P-код) деякої гіпотетичний псевдомашини. Далі ця програма читається й виконується інтерпретатором P-коду. Достоїнством такого підходу є переносимість програмного забезпечення на інші типи ЕОМ, що мають інтерпретатор P-коду.

6.4.10 Компілятори компіляторів.

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

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

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

Соседние файлы в папке СПЗ