
- •1. Основные понятия спо.
- •2. Функции ос
- •5. Ресурсы. Классификация ресурсов.
- •6. Понятие сетевых ос и распределенных ос. Функциональные компоненты сое.
- •7. Сетевые службы и сетевые сервисы.
- •8. Схемы построения сетей (одноранговые сети, сети с выделенными серверами, гибридные сети).
- •9. Трансляторы. Компиляторы. Интерпретаторы.
- •10.Этапы компиляции. Общая схема работы компилятора.
10.Этапы компиляции. Общая схема работы компилятора.
Процесс компиляции состоит из двух этапов - анализа и синтеза.
На этапе анализа выполняется распознавание текста исходной программы, создание и заполнение таблиц идентификаторов. Результатом его работы служит некое внутреннее представление программы, понятное компилятору.
На этапе синтеза на основании внутреннего представления программы и информации, содержащейся в таблицах идентификаторов, порождается текст результирующей программы. Результатом этого этапа является код.
Кроме того, в составе компилятора присутствует часть, ответственная за анализ и исправление ошибок, которая при наличии ошибки в тексте исходной программы должна максимально полно информировать пользователя о типе ошибке и месте ее возникновения.
Эти этапы, в свою очередь, состоят из более мелких этапов, названных фазами компиляции. Состав фаз компиляции приведен на рисунке в общем виде. Их конкретная реализация и процесс взаимодействия могут различаться в зависимости от версии компилятора.
Лексический анализ- это часть компилятора, которая читает литеры программы на исходном языке и строит из них слова (лексимы) исходного языка. На вход лексического анализатора поступает текст исходной программы, а выходная информация передается для дальнейшей обработки компилятором на этапе синтаксического разбора.
Синтаксический разбор- это основная часть компилятора на этапе анализа. Она выполняет выделение синтаксической конструкции в тексте исходной программы, и проверяет правильность программы.
Семантический анализ- часть компилятора, проверяющая правильность текста программы с точки зрения семантики входного языка.
Подготовка к генерации кода- это фаза, на которой компилятором выполняются предварительные действия, связанные с синтезом текста результирующей программы, но еще не ведущей к порождению текста на выходном языке. Обычно в эту фазу входят действия, связанные с идентификацией элементов языка, распределением памяти и т.д.
Генерация кода - эта фаза, непосредственно связанная с порождением команд, составляющих предложение выходного языка и в целом текст результирующей программы. Генерация обычно включает в себя также оптимизацию- процесс, связанный с обработкой уже порожденного текста.
Таблица идентификаторов - это специальным образом организованные наборы данных, служащие для хранения информации об элементах исходной программы , которые затем используются для порождения текста результирующей программы.