Программно-методический комплекс для обучения процессу создания компиляторов
Рефераты >> Программирование и компьютеры >> Программно-методический комплекс для обучения процессу создания компиляторов

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

     


Страница: