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

Оглавление

  1. Упрощенная модель компилятора. Проходы компилятора.

Для того, чтобы компьютер мог понять программу, написанную на каком-то языке программирования, необходим переводчик (транслятор) такой программы в машинные коды. Отметим, что, если оператор языка ассемблера отображается при трансляции чаще всего1)в одну машинную инструкцию, предложения языков более высокого уровня отображаются, вообще говоря, в несколько машинных инструкций.

Трансляторы бывают двух типов: компиляторы (compiler) и интерпретаторы (interpreter). Процесс компиляции состоит из двух частей: анализа (analysis) и синтеза (synthesis). Анализирующая часть компилятора разбивает исходную программу на составляющие ее элементы (конструкции языка) и создает промежуточное представление исходной программы. Синтезирующая часть из промежуточного представления создает новую программу, которую компьютер в состоянии понять. Такая программа называется объектной программой. Объектная программа может в дальнейшем выполняться без перетрансляции. В качестве промежуточного представления обычно используются деревья, в частности, так называемые деревья разбора. Под деревом разбора понимается дерево, каждый узел которого соответствует некоторой операции, а сыновья этого узла - операндам.

2. УПРОЩЕННАЯ МОДЕЛЬ КОМПИЛЯТОРА

Я

промежут.

представл.

(атом)

промежут.

представл.

семантич.

корректн.

зык программирования
– формальный язык для написания программ

язык высокого уровня

лексема

(токен)

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

синтаксич. анализатор

семантич. анализатор

генератор

кода

объектн. язык

таблица (словарь)

Лексический анализатор (ЛА)

На входе: набор символов (литер)

Разбивает цепочку на слова (лексемы), где слово – некоторая структура, объединенная некой семантической структурой.

  • «Умный» ЛА

На входе транслитератор считывает первый символ и, в зависимости от него, определяет класс символа и что делать дальше.

  • Примитивный ЛА – без транслитератора, не работает с классами слов

Лексема – слово языка, которое выделяет ЛА.

Атрибуты лексемы:

  • Класс (константа, зарезервированное слово и т.д.)

  • Значение

В результате при лексическом анализе должны получить вот такую табличку:

№ строки

Имя лексемы

Класс

Значение

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

Задачи синтаксического анализатора:

  • должен обрабатывать ошибочные ситуации

  • представить синтаксическую последовательность в виде атомов (единой конструкции)

Семантический анализатор проверяет соответствие семантики входных выражений семантическим соглашениям языка, которые хранятся в таблице. Семантика – это смысл языковой конструкции.

Генератор кода развертывает атомы в последовательность команд целевой машины (объектный язык).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]