Содержание работы:
|
|
стр. |
1. Введение |
3 |
|
2. Внешний проект |
4 |
|
|
Описание синтаксических конструкций входного языка |
4 |
|
Описание синтаксических конструкций выходного языка |
5 |
|
Выходные данные для операторов |
6 |
3. Проект архитектуры |
8 |
|
4. Разработка. Общие параметры системы |
9 |
|
|
Лексический анализ |
9 |
|
Синтаксический анализ |
12 |
|
Генератор кода |
16 |
|
Тестирование |
17 |
5. Заключение |
28 |
|
6. Приложения |
29 |
|
|
Файл, формирующий список лексем из входного файла |
29 |
|
Файл, формирующий дерево синтаксического разбора из списка лексем |
36 |
|
Файл, формирующий выходной файл из дерева синтаксического разбора |
44 |
Задание
Заданием на курсовую работу является разработка компилятора для некоторого подмножества операторов АЯ.
Язык реализации - Pascal.
Язык входной - Pascal.
Язык выходной - TASM.
Необходимо разработать компилятор, позволяющий разбирать следующие операторы языка Pascal:
оператор if
оператор while
составной оператор
оператор присваивания
Используемые типы данных:
целые числа - integer
Логический тип - boolean
Реализовать стандартные процедуры:
read
write
readln
writeln
Со следующими операциями:
+ сложение
2) - вычитание
3) * умножение
4) / целочисленное деление
5) операциями сравнения: <, >, =, <=, >=, <>
Литература
1. Ахо Альфред В., Ульман, Джефри Д. Теория синтаксического анализа и компиляции. Под редакцией В.М. Курочкиной. – М.: Мир, 1978.
2. Лекции по СПО за 2001 г. для специальности 2201.
3. Программирование на языке Ассемблера: Учеб. пособие. – М.: Высш. шк., 1999.
4. Программирование в интегрированной среде Турбо-Паскаль: Справ. пособие. Мн.: Беларусь, 1992.
1. Введение
Компиляция (от латинского compilatio - ограбление), составление сочинений на основе чужих исследований или чужих произведений без самостоятельной обработки источников; работа, составленная таким методом (Советский энциклопедический словарь, 1983 г.)
Компиляция - процедура перевода программы с языка высокого уровня на язык нижнего уровня. Традиционно компиляция включает три основные фазы - лексический анализ, грамматический разбор (синтаксический анализ) и генерацию кода.
Лексический анализ - это первая фаза компиляции, в ходе которой распознаются так называемые лексемы. Реализуется программным модулем, который называется лексическим анализатором или сканером. Лексема - это последовательность литер, правила построения которой могут быть заданы регулярной грамматикой. Традиционно к лексемам относят идентификаторы, ключевые слова, константы и служебные слова или разделители. Сканер преобразует строковое представление программы в последовательность более крупных структурных элементов, что в конечном итоге призвано уменьшить сложность решения общей задачи грамматического разбора программы.
Синтаксический анализ - фаза компиляции, которая преобразует программу в форме последовательности лексем в структурное представление, которое выражает структуру программы в наиболее явной форме.
Генерация кода - фаза компилятора, в ходе которой по структурному представлению программы строится её код на машинном языке.