Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
відповіді 2.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6.74 Mб
Скачать

8.4 Дерева. Їх застосування в компіляції.

Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера). Процесс компиляции осуществляется с помощью компилятора. Компиля́тор — программа или техническое средство, выполняющее компиляцию. Входной информацией для компилятора (исходный код) является описание алгоритма или программа на проблемно-ориентированном языке, а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код).

Виды компиляторов:

Векторизующий. Транслирует исходный код в машинный код компьютеров, оснащённых векторным процессором.

Гибкий. Сконструирован по модульному принципу, управляется таблицами и запрограммирован на языке высокого уровня или реализован с помощью компилятора компиляторов.

Инкрементальный. Повторно транслирует фрагменты программы и дополнения к ней без перекомпиляции всей программы.

Интерпретирующий (пошаговый). Последовательно выполняет независимую компиляцию каждого отдельного оператора (команды) исходной программы.

Компилятор компиляторов. Транслятор, воспринимающий формальное описание языка программирования и генерирующий компилятор для этого языка.

Отладочный. Устраняет отдельные виды синтаксических ошибок.

Резидентный. Постоянно находится в оперативной памяти и доступен для повторного использования многими задачами.

Самокомпилируемый. Написан на том же языке, с которого осуществляется трансляция.

Универсальный. Основан на формальном описании синтаксиса и семантики входного языка. Составными частями такого компилятора являются: ядро, синтаксический и семантический загрузчики.

Виды компиляции:

Пакетная. Компиляция нескольких исходных модулей в одном пункте задания.

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

Условная. Компиляция, при которой транслируемый текст зависит от условий, заданных в исходной программе директивами компилятора. Так, в зависимости от значения некоторой константы, можно включать или выключать трансляцию части текста программы.

Фази компіляції :

Концептуально компілятор працює фазово, в процесі кожної фази відбувається перетворення початкової програми з одного представлення до іншого. На практиці фази можуть об'єднуватись і деякі проміжні представлення можуть не будуватись в явному вигляді. Типове розбиття компілятора на фази:

· Лексичний аналізатор

· Синтаксичний аналізатор

· Семантичний аналізатор

· Генератор проміжного коду

· Оптимізатор

· Генератор цільового коду

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

Приклад розбору виразу в дерево .

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

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