Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 9.11.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. Century pinters s Crvggio the Dutch genre pinters the Spnish pinters Josй de Riber Diego Velбzquez nd Frncisco de Zurbrбn nd the Le Nin brothers in Frnce re relist in pproch
3. Ребёнок становится полноправным гражданином своей страны жителем планеты Земля
4. познавательной деятельности которая направлена на извлечение информации из письменного текста
5. тематическая постановка задачи32 2
6. Реферат- Учение о мировой воле и смысл человеческого существования в философии Шопенгауэра
7. Лабораторная работа 2 Тема- Способы подключения к интернету.
8. Статья- Лексическая семантика и дискурс
9. . Активные индивидуальные методы Активные индивидуальные методы извлечения знаний на сегодняшний день ~ н
10. Питер Пауль Рубенс Питер Пауль Рубенс знаменитый живописец первой половины XVII века был сыном богатой и
11. Пожарная безопасность религиозных организаций
12. Правоспособности и дееспособности граждан в Российской Федерации.html
13. В мире бактерий
14. Тема- Природні угруповання рідного краю
15. а 276 шпионаж 283 разглашение сведений составляющих государственную тайну и 284 утрата документов содержащ
16. Комедия А С Грибоедова Горе от ума
17. Екстрена та невідкладна медична допомога
18. Тема- Вариативность дополнительного образования как способ реализации возможностей личностного развити
19. Пенсии за выслугу лет.html
20. Изнасилование, совершенное групповым способом