Список использованных источников
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

 

1. Бек Л. Введение в системное программирование.: Пер. с англ. – М.: Мир, 1998.

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      

 

В тексте определяются литералы и заносятся в таблицу 21 в порядке их появления.

 

Таблица 21

Специф Литерал Тип Размер, занимаемый в памяти, байт
1 0 Integer 2
2 1 Integer 2
3 10 Integer 2

 

 

Во время заполнения этих трех таблиц заполняется четвертая – таблица 22 (таблица выходных кодов лексем): в поле «Таблица» подставляются номера таблиц (таблица терминальных символов – №1, таблица символических имен – №2, таблица литералов – №3), в поле строка – код элемента (из таблицы 1), спецификаторы (из таблицы 2 и 3). Поле «№п.п.» заполняется автоматически.

 

Таблица 22

№ п.п. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Таблица 1 2 1 1 2 1 2 1 1 1 1 2 1 3 1
Строка 1 1 27 2 2 29 3 31 5 27 3 3 28 1 27

 

№ п.п. 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Таблица 1 2 1 3 1 3 1 2 1 2 1 2 1 1 1
Строка 8 2 28 2 9 3 10 3 28 3 32 2 27 4 30

 

 



Дата: 2019-05-29, просмотров: 150.