Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по СПО [укр. язык].DOC
Скачиваний:
43
Добавлен:
02.05.2014
Размер:
526.85 Кб
Скачать

Лекція №1. Тема 1: Компілятори, інтерпретатори, критерії розробки, основні етапи та їх взаємозв’язок . Основні поняття.

Транслятор - це програма для перекладу із однієї формальної мови (є вихідна) в іншу (є об’єктною). Мови транслятора діляться на групи :

за призначенням:

  • універсальні ( Pascal, Ci);

  • спеціалізовані (мови управління базами даних: Кобол);

за ступеню близькості до ЕОМ:

  • машинно-залежні (Assembler);

  • машинно-орієнтовані (MASM);

  • машинно-незалежні ;

за функціональним призначенням:

  • мови опису алгоритмів (будують об’єктний код за алгоритмом);

  • мови специфікацій (будують об’єктний код за специфікацією).

Розрізняють два підходи трансляції:

  1. Компіляція - будується об’єктний код усієї програми , а потім виконується об’єктний

модуль;

2. Інтерпретація - будується об’єктний код одного оператора і тут же виконується . Цей

підхід використаний у такій мові програмування як Бейсік.

Також існує таке поняття як крос-компілятор - об’єктний код не можливо виконати на машині

самого компілятора.

Критерії розробки трансляторів:

  1. Ефективність об’єктного коду ;

  2. Розробка мінімальних об’єктних програм;

  3. Мінімальний час компіляції програми;

  4. Розробка компілятора мінімального об’єму;

  5. Точність виявлення і виправлення помилок;

  6. Час розробки транслятора.

Вибір критеріїв залежить від області використання, особливостей (як буде використовуватися,

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

Етапи трансляції:

  1. Аналіз (вихідного тексту, його правильності);

  2. Синтез (формування об’єктного коду за допомогою об’єктної мови).

Фази трансляції:

1. Лексичний аналіз;

2. Синтаксичній аналіз (перевірка правильності слідування лексем);

3. Генерація коду;

4. Фаза оптимізації (не обов’язкова).

Найпростіший лінійний підхід реалізації транслятора:

генерація

коду

Недоліком такого підходу є те , що текст проходиться (аналізується) три - чотири рази. В одно-

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

  • запит чергової лексеми у лексичного аналізатора;

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

  • передача управління генератору коду;

  • оптимізація або , якщо вона відсутня , знову управління передається синтаксичному аналізатору.

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

Лекція №2. Тема 2 : Лексичний аналізатор та його основні задачі. Основна задача лексичного аналізатора.

Основна задача лексичного аналізатора – це виділення лексеми. Результатом його роботи є

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

  • ідентифікатори;

  • зарезервовані слова;

  • роздільники (; , . : ^ | і т.п.);

  • знаки операції (+ - / * = := < > і т. п.);

  • службові слова (begin, end);

  • літерали (явні значення: “a”, 1..5, a:=1.8 і т. п.);

  • терми (a[i]^.b і т.п.);

  • коментарі.

В розроблюваному трансляторі не обов’язково всі вони повинні бути присутніми. Після виділення лексеми необхідно визначити номер класу та номер в класі цієї лексеми Винятками є:

  • коментарі - лексичний аналізатор пропускає;

  • директива - по признаку у генератора коду;

  • літерали - не нумеруються, а відразу генератор коду переводить у внутрішнє представлення.

Для лексичного аналізатора розрізняють : ідентифікатор в декларативній частині (те що відповідає синтаксису і стоїть на своєму місці) та ідентифікатор в недекларативній частині (повинен бути описаний в декларативній частині).

Соседние файлы в предмете Системное программное обеспечение