Программно-методический комплекс для обучения процессу создания компиляторовРефераты >> Программирование и компьютеры >> Программно-методический комплекс для обучения процессу создания компиляторов
2. Грис Д. Конструирование компиляторов для цифровых вычислительных машин. – М.: Мир, 1975.
3. Карпов В.Э. Классическая теория компиляторов. – http://itlab.net.ru/ materials/compiler/compiler.html
4. Конспект лекций по теме "Трансляторы". – http://www.kulichki.net/ kit/library/transl.zip
5. Креншоу Д. Давайте создадим компилятор! – http://kit.kulichki.net/ crenshaw/crenshaw.html
6. Лабораторные работы по курсу Системное ПО. – http://www.fi.ru/~mill/ LabFl-97.htm
7. Основы компиляции. http://structur.h1.ru/compil.htm
8. Романов Е.Л. Основы построения трансляторов. – http://www.kulichki. net/kit/library/nstu_trans.zip.
9. Пратт Т. Языки программирования. Разработка и реализация.: Пер. с англ. – М.: Мир, 1979.
10. Типовые нормы времени на программирование задач для ЭВМ. – М.: Экономика, 1989.
11. Типовые нормы времени на разработку конструкторской документации. – М.: Экономика, 1991.
12. Фаронов В.В. Турбо Паскаль. Книга1. Основы Турбо Паскаля. – М.: Учебно-инженерный центр «МВТУ-ФЕСТО ДИДАКТИК», 1992.
13. Шаньгин В. Ф., Илюшечкин В. М., Тимофеев П. А. Программирование микропроцессорных систем. / Под ред. В. Ф. Шаньгина. – М.: Высш. шк., 1990.
Приложение А
Пример выполнения задания по работе со сканером LEXAN
Дана следующая грамматика языка:
1. <prog> ::= PROGRAM <prog-name> VAR <dec-list> BEGIN <stmt-list> END.
2. <prog-name> ::= id
3. <dec-list> ::= <dec> | <dec-list> ; <dec>
4. <dec> ::= <id-list> : <type>
5. <type> ::= INTEGER
6. <id-list> ::= id | <id-list> , id
7. <stmt-list> ::= <stmt> | <stmt-list> ; <stmt>
8. <stmt> ::= <assign> | <for>
9. <assign> ::= id := <exp>
10. <exp> ::= <term> | <exp> + <term> | <exp> - <term>
11. <term> ::= id | int | ( <exp> )
12. <for> ::= FOR <index-exp> DO <body>
13. <index-exp> ::= id := <exp> TO <exp>
14. <body> ::= <stmt> | BEGIN <begin-list> END
Используя программу LEXAN произвести следующие действия:
1. Выбрать элементы из таблицы терминальных символов, при желании можно изменить названия ключевых слов (таблица 1);
2. Написать исходный текст на учебном языке с использованием заданной грамматики;
3. Заполнить таблицы: – символьных имен (таблица 2);
– литералов (таблица 3);
– лексического анализа (выходных символов);
4. Проверить правильность заполнения таблиц встроенным анализатором;
5. При наличии ошибок, исправить имеющиеся, и повторно обработать программой LEXAN;
6. Получить листинг полученных результатов.
7. Сохранить результат в файл.
Сначала производится анализ, какие терминальные символы входят в грамматику: ”PROGRAM”, ”VAR”, ”BEGIN”, ”END”, ”.”, ”INTEGER”, ”;”, ”:=”, ”+”, ”-”, ”FOR”, ”DO”, ”TO”.
Исходная программа, написанная с использованием терминов исходной грамматики:
program prog1;
var
i, x:integer;
begin
x:=0;
for i:=1 to 10 do
x:=x+i;
end.
Далее выбираются терминальные символы, использованные в программе, заполняется таблица выбранных терминальных символов. Примерное представление таблицы выбранных терминальных символов показано в таблице 19.
Таблица 19
№ стр. |
Терминальный символ |
Комментарий (обозначение) |
Код |
1 |
PROGRAM |
1 | |
2 |
; |
27 | |
3 |
VAR |
2 | |
4 |
, |
29 |
Продолжение таблицы 19
№ стр. |
Терминальный символ |
Комментарий (обозначение) |
Код |
5 |
: |
31 | |
6 |
INTEGER |
5 | |
7 |
BEGIN |
3 | |
8 |
:= |
28 | |
9 |
FOR |
8 | |
10 |
TO |
9 | |
11 |
DO |
10 | |
12 |
+ |
32 | |
13 |
END |
4 | |
14 |
. |
30 |
Определяются символические имена, встречающиеся в программе, и заполняется таблица 20 в порядке их появления в тексте
Таблица 20
Специф |
Идентификатор |
Тип |
Размер, занимаемый в памяти, байт |
Относительный адрес в памяти |
1 |
prog1 | |||
2 |
i | |||
3 |
x |