Разработка компилятора модельного языка

Цели и задачи

Цель курсовой работы состоит в описании заданного, в соответствии с вариантом, языка программирования и разработке компилятора и интерпретатора данного языка.

Введение и актуальность


Все проверки на соответствие входного текста кода программы лексема, требуемым грамматикой, выполняет функция «CheckLexema». Она возвращает «true» если лексема соответствует грамматике, в противном случае выдается ошибка компиляции. Как видно из РБНФ описания нетерминала «программа» нетерминал «описание» не является обязательным. Поэтому в коде процедуры «Prog» проверка на лексему «dim» выполняется не функцией «CheckLexema», а условным оператором «if». Если декларативная часть в программе присутствует, то будет осуществляться её синтаксический анализ, в противном случае начинается выполнение синтаксического анализа совокупности операторов, разделенных символом «;». Работа выполняется до тех пор, пока не будет встречена лексема «}» конца программы.
3.3 Контекстный анализ
Контекстные, семантические, проверки выполняются в парсере и сканере. Их можно разделить на две группы:
Проверки соответствия типов операндов;
Проверки употребления имен идентификаторов;
Для реализации данных проверок используется таблица идентификаторов, которая заполняется при синтаксическом анализе декларативной части программы. Таблица идентификаторов представляет собой односвязный список, объявление которого показано на рисунке 23.

Заключение и вывод


В ходе выполнения данной курсовой работы был разработан компилятор с модельного заданного языка программирования. Была составлена формальная грамматика языка в форме РБНФ. Затем, на основе этой грамматики был запрограммирован синтаксический анализатор методом рекурсивного спуска, в котором каждому нетерминалу грамматики соответствовала отдельная одноимённая процедура. В этой работе был использован подход синтаксически управляемой трансляции, когда в парсере были реализованы все контекстные проверки и генерация кода. Так как компилирование исходного текста программы под целевую, реальную архитектуру, подобную IA32, является весьма сложной задачей, в виду сложности реальных архитектур, то в этой работе использовался гипотетический процессор, реализованный в виде стекового интерпретатора с простым набором команд.

Нужна похожая работа?

Оставь заявку на бесплатный расчёт

Смотреть все Еще 421 дипломных работ