У вас вопросы?
У нас ответы:) SamZan.net

Компилятор ~ программное средство которое используется для трансляции программ с языка высокого уровня

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.12.2024

Основные функции компиляторов.

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

Функции:

  •  Лексический анализ – распознавание и классификация лексем.
  •  Синтаксический разбор – анализ предложений на соответствие конструкциям языка.
  •  Генерация объектного кода.

Лексический анализ. Происходит разбор текста программы. Используются три таблицы: таблица терминальных символов (хранит все ключевые слова и специальные символы, используемые в языке, а также коды, соответствующие каждому символу); таблица символических имен (заполняется в процессе разбора текста программы и хранит в себе имена идентификаторов); таблица литералов (заполняется в процессе разбора программы и хранит в себе литералы: численные и строковые значения, с указанием типов данных и относительных адресов).

Сканер в процессе анализа текста программы выделяет один из элементов текста и сравнивает с каждым терминальным символом. Если такой символ найден, то в выходной код передаются код таблицы и спецификатор (номер строки в таблице). В случае если этот элемент не является терминальным символом, проверяется, является ли он идентификатором (первый символ обычно буква, остальные могут быть либо буквой, либо цифрой), если такой определен, то данный элемент заносится в таблицу символических имен, а к выходному коду добавляется пара численных значений: номер таблицы и спецификатор найденного элемента. В случае если такой элемент в таблице уже имеется, то в выходной код заносится номер таблицы и его спецификатор. В таблицу литералов заносят численные, строковые и иные определенные языком значения. При этом распознается тип значения и тут же заполняется относительная таблица адресов.

Лексема

Код

program

1

var

2

begin

3

end

4

Лит.

Тип

Р.

А.

1

1

integer

2

0

2

100

integer

2

2

….

Идентиф.

Тип

1

I

integer

2

Y

integer

3

X

real

FOR I:=1 TO 100 DO Y:=X → <1,6><2,1><1,14><3,1><1,7><3,2><1,8><2,2><1,14><2,3>

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

A+B*C-D; + <∙ *; * ∙> -; В*С должно быть вычислено до обработки любых других операторов выражения. Для операторов языка программирования задается матрица предшествования. Предложение сканируется слева направо до тех пор, пока не будет найдено подвыражение, операторы которого имеют более высокий уровень предшествования, чем соседние операторы. Далее это подвыражение распознается в терминах правил вывода используемой грамматики. Этот процесс продолжается до тех пор, пока не достигнут корень дерева, что и будет означать окончание процесса грамматического разбора. Пример синтаксического дерева: READ (SUM)

Генерация объектного кода. Выполняется семантический контроль (анализ предложения с точки зрения смыслового значения предложений языка). Машинно-зависимая оптимизация. Для каждой грамматической конструкции определены алгоритмы генерации кода. Из отдельных объектов составляется объектный код программы. После генерации каждого фрагмента, указатель свободной памяти модифицируется таким образом, чтобы он указывал на первую свободную ячейку памяти.


<read>

EAD

(

id

)

{SUM}




1. Контрольная работа- Методика внутрицехового планирования
2. нестелс вирусов это достигается при помощи меню Сервис-Макрос
3. Контрольна робота Вариант 1 Модуль 5 Запишите уравнение гармонического колебательного движения точк
4. ЭСТЕТИЧЕСКИХ ВИДАХ СПОРТА ГЛАВА 18 ОСНОВНЫЕ ПОНЯТИЯ И ПОКАЗАТЕЛИ СПОРТИВНОЙ ЭСТЕТИКИ Эстетические пока
5. тема маркетингової інформації Процес маркетингового дослідження Система маркетингової інфо
6. Born in 1888 he lived for 103 yers
7. лекция бабочек Тихо играет музыка
8. Правовое обеспечение профессиональной деятельности
9. Мне надобно креститься от Тебя и Ты ли приходишь ко мне На это Господь Иисус ответил что надлежит нам исп
10. Тепловая схема ТЭЦ на органическом топливе
11. Технология работы и функции сотрудников прачечной-химчистки
12. Его вызывает повышенная секреция гормона соматотропина так называемого гормона роста.html
13. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ По дисциплине ПЛАНИРОВАНИЕ ГОРОДОВ И ТРАНСПОРТ На тему Разработка генераль
14. Спасательные и другие неотложные работы в очагах поражения
15. становление в нашей философии не очень везет
16. ДИСТАНЦИЯ ~ ПЕШЕХОДНАЯ ЛИЧНАЯ Количество этапов ~ 6 Контрольное время ~ 4 минуты Класс дистанции ~
17. Эпоха вселенских соборов
18. способы мышления действия чувствования которые даны нам извне и обладают принудительной силой 3 типа са
19. Работа с программой PageMaker
20. Москва 6 лет назад переехали из Ашхабада в Москву у жены родители в Ашхабаде остались ездил провожал ее на