Автор работы: Пользователь скрыл имя, 25 Декабря 2013 в 12:58, курсовая работа
Уже в ЭВМ первого поколения появляется язык мнемокода (впоследствии – язык ассемблера) для более понятного человеку представления машинных команд. Программистам уже не нужно тратить уйму времени над загадочной последовательностью нулей и единиц. Затем возникают и занимают прочное место в решение задач другие, более сложные языки программирования, и дальнейшее развитие систем программирования идет именно в повешении дружественности к человеку.
Введение
Анализ технического задания
Описание языка
Выбор и обоснование архитектуры системы
Выбор и обоснование алгоритма
Описание программы
Методика испытаний
Заключение
Список использованной литературы
4) Создание таблицы стандартных символов
В таблицу стандартных символов записывается пары <таблица –индекс лексемы> в той последовательности, в которой элемент встречается в тексте программы(Рисунок 1).
Рисунок 1 - пример кода программы создания таблицы стандартных символов
В техническом задании указано, что синтаксический разбор осуществить LR-разбором. LR-разбор и детерминированная грамматика представлены в пункте 2 пояснительной записки.
В процессе синтаксического разбора
при встрече сложного или простого
арифметического выражения
1. Формируем польскую запись:
Операнды переписываются в выходную строку, а знаки операций помещаются вначале в стек операций. Если приоритет входного знака равен нулю или больше приоритета знака, находящегося на вершине стека, то новый знак добавляется к вершине стека. В противном случае из стека выталкивается и переписывается в выходную строку знак находящийся на вершине, а также следующие за ним знаки с приоритетами большими или равными приоритету входного знака. После этого входной знак добавляется к вершине стека. Открывающаяся скобка просто записывается в стек и не выталкивает ни одного знака. Но и её не может вытолкнуть ни один знак, кроме закрывающейся скобки. Появление закрывающейся скобки вызывает выталкивание всех знаков до ближайшей отрывающейся скобки включительно. Скобки взаимно уничтожаются и в выходную строку не переносятся. После просмотра всех символов входной строки происходит выталкивание всех оставшихся в стеке символов и дописывание их к выходной строке.
2. Переводим польскую запись в матричную форму:
Читаем обратную польскую запись слева направо. При чтении операнда – он записывается в стек ; при чтении операции –извлекаем из стека два верхних операнда, формируем тройку (операция, операнды), записываем её в матрицу; в стек E записываем элемент матрицы, в котором будет результат выполнения операции.
Согласно методу Дейкстры строится
таблица приоритетов
Таблица 3 –Таблица приоритетов.
( |
0 |
) |
1 |
+- |
2 |
*/ |
3 |
Поясним описанный алгоритм разбора сложного арифметического выражения на примере. Разберем строку следующего вида: d+(a+b)*c.
Таблица 4 –Таблица перевода арифметического выражения в ОПН:
Стек оп-ий |
Вход |
Выход |
E |
D |
D |
+ |
+ |
D |
+( |
( |
D |
+( |
A |
DA |
+(+ |
+ |
DA |
+(+ |
B |
DAB |
+ |
) |
DAB+ |
+* |
* |
DAB+ |
+* |
C |
DAB+C |
E |
$ |
DAB+C*+ |
Таблица 5 –Таблица ОПН в матричную форму:
Стек оп-ов |
Вход |
Выход |
D |
D |
|
DA |
A |
|
DAB |
B |
|
DM1 |
+ |
M1:AB+ |
DM1C |
C |
|
DM2 |
* |
M2:M1C* |
M3 |
+ |
M3:DM2+ |
Данные таблицы наглядно демонстрирует принцип разбора сложного арифметического выражения методом Дейкстры.
5. Описание программы.
5.1 Общее описание
При разработке транслятора с подмножества языка Рапира использовался язык программирования Object Pascal и среда программирования Delphi2007. Данный продукт позволяет проводить лексический анализ программы, состоящей из определенного набора команд и операторов, написанной на данном языке. Производится синтаксический анализ программы и выводится на экран информация о том, какая именно ошибка допущена при написании программы на данном языке. В случае положительного результата разбора выводится сообщение, что ошибок нет.
Установка программы - данное приложение не требует дополнительной установки. В комплект поставки включается исполняемый файл Project4_XE3.exe.
Минимальные требования:
- Операционная система: Windows XP/Vista/Windows7;
- Процессор: Pentium 3 и выше;
- Оперативная память: 1,5 Мb;
- Видеокарта: VGA;
- Жесткий диск: 1,5 Мb свободного места;
В случае отклонения от данной конфигурации в худшую сторону работа программы не гарантирована.
6. Методика испытаний
Правильный текст программы:
имена k,i,j;
для i от 1 до 10::
для j от 1 до 5::
k=k+i*j;
все;
все;
кнц.
При компиляции получим сообщение, что ошибок нет(рисунок 1).
Рисунок 1-При компиляции нет ошибок
Текст программы:
имена k,i,j;
для i от 1 до 10::
для j от 1 до 5::
k=k+i*j;
все;
все
кнц.
При компиляции этого кода была найдена ошибка и вывелось соответствующее сообщение, что «; после цикла не найдена» (Рисунок 2). Это обусловлено несходимостью с грамматикой цикла, описанной правилом <цикл>::=от <оп> до <оп>::<спис_опер>все;
Рисунок 2- Ошибка в цикле
-проверка на описание
Текст программы:
имена k,i,j;
для iyt от 1 до 10::
для j от 1 до 5::
k=k+i*j;
все;
все;
кнц.
Используемые переменные должны быть описаны, если она будет не описана, появится сообщение с ошибкой( Рисунок 3)
Рисунок 3 – переменная не описана
Заключение
В результате выполнения данного курсового проекта был создан Компилятор, который предназначен для синтаксического, лексического и семантического анализа программы, написанной на языке Рапира.
При обнаружении ошибки в исходной программе, разработанная программа выдает соответствующее сообщение.
Возможности модификации и расширения представлены в виде возможности добавления новых модулей и процедур в исходный проект. Так как для разработки программы применялась модульная архитектура системы, то данная программа легко модифицируется путем внесения изменений в соответствующий модуль.
В ходе выполнения курсового проектирования были получены навыки оформления программной документации в соответствии с Единой Системой Программной Документации и повышен уровень практических навыков программирования в интегрированной среде программирования Borland Delphi 2007. Также были углублены теоретические знания по дисциплине «Теория языков программирования и методы трансляции» и развиты навыки самостоятельной деятельности в области создания программных продуктов.
Список используемой литературы
1. Фаронов В.В. Delphi. Программирование на языке высокого
уровня: Учебник для вузов –Спб.: Питер, 2006. –640с.: ил.
2. Архангельский А.Я.
3. Разработка компиляторов: метод. Указ. По курсовому проектированию. –Муром: ИПЦ МИВлГУ, 2007 –52с.
4. Гордеев А.В., Молчанов А.Ю.
Системное программное
5. Грис Д. Конструирование компиляторов для ЦВМ. М.: Мир,
1975. -544, 1 экз.
6. Петюшкин А.В. HTML. Экспресс курс. –Спб.: БХВ-Петербург,
2003. –256с.
7. Ахо А., Ульман Дж. Теория
синтаксического анализа,
компиляции. –М.: Мир, 1978. Т.1, 612с. –Т.2, 487с.