АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Синтаксис и семантика. Структура компилятора

Читайте также:
  1. APQC структура классификации процессов SM
  2. III. Диалектика: ее суть структура и альтернативы.
  3. III. Социальная структура и стратификация
  4. III. Художественная речь: фонетика, лексика, синтаксис
  5. IV.Структура, порядок изложения и оформления работы
  6. VI. Взаимодействие Церкви с государственными структурами и обществом в деятельности по реабилитации
  7. Административная структура ММЦ «Валко. Новая звезда»
  8. Адміністративно-правові відносини, їх структура, особливості та види.
  9. Акцентная структура слова в русском языке. Система акцентных противопоставлений. Функции словесного ударения.
  10. Акцентная структура слова в русском языке. Функции словесного ударения.
  11. Архитектурой компьютера называется ее логическая организация, структура и ресурсы, которые может использовать программист.
  12. АРХІВНІ ДОВІДНИКИ В СИСТЕМІ НДА: ФУНКЦІЇ ТА СТРУКТУРА

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

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

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

Лексема обозначает относительно простое понятие языка. Всего существует 2 типа лексем:

а) лексемы, соответствующие символам алфавита языка, такие как «Служебные слова» и «Служебные символы»;

б) лексемы, соответствующие базовым понятиям языка, такие как «Идентификатор» и «Литерал».

Пример. При лексическом разборе предложения: if Sum>5 then pr:= true;

будет получена строка токенов (см. таблицу 1) и, возможно, расширены таблицы переменных (см. таблицу 2) и литералов (см. таблицу 3):

Таблица 1 – Пример строки токенов

Лексема Тип лексемы Значение Ссылка
if Служебное слово Код «if» -
Sum Идентификатор - Адрес в таблице идентификаторов
> Служебный символ Код «>» -
  Литерал - Адрес в таблице литералов
then Служебное слово Код «then» -
pr Идентификатор - Адрес в таблице идентификаторов
:= Служебный символ Код «:=» -
true Литерал - Адрес в таблице литералов
; Служебный символ Код «;» -

 

Таблица 2 –Таблица идентификаторов переменных Таблица 3 – Таблица литералов

Имя Тип Адрес
Sum Integer Æ (пока не распределена)
pr Boolean Æ (пока не распределена)
Имя Тип Значение
«5» Byte  
«true» Boolean  

 

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

Пример. На этом этапе для предыдущего примера должны быть распознаны конструкции: <Логическое выражение>, <Оператор присваивания>, <Оператор if >.

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

Пример. На этом этапе может быть проверена инициализация переменной Sum.

4. Распределение памяти – процесс назначения адресов для именованных констант и переменных программы.

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

Лексический и синтаксический анализ предполагают выполнение грамматического разбора. При их построении используют специальный математический аппарат – формальные грамматики.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)