Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otchot.doc
Скачиваний:
2
Добавлен:
21.12.2018
Размер:
163.84 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Факультет кибернетики

Кафедра вычислительной техники

Пояснительная записка к курсовому проекту

по дисциплине

Системное программное обеспечение

Выполнил студент группы

ЭВМ08-2

Ву Тьен Као

Оценка

" " 2011г.

Руководитель курсового проекта:

Профессор Сосинская С. С.

Иркутск 2011 г.

Содержание

Содержание 2

1. Цель работы. 3

2. Краткое описание учебного языка, варианты заданий. 3

3. Расшифровка цифр варианта задания. 3

4. Пример праграммы 4

5. Регулярные выражения 6

6. Построить КА в форме матрицы: 6

7. Формальная грамматика 8

8. Примеры результатов работы 8

Результат реализации лексического блока 8

Результат реализации синтаксичекого блока 9

Результат реализации генератора кода с переводом в язык абстрактной стековой машины 14

9. Список литературы 15

1. Цель работы.

Практическое применение теоретических основ проектирования трансляторов с языков программирования; освоение средств автоматизации построения трансляторов; разработка элементов транслятора для учебного языка.

2. Краткое описание учебного языка, варианты заданий.

Лексика, синтаксис и семантика учебного языка основаны на языках типа Java и C#.

Ключевые слова (выделены жирным шрифтом, например: число, строка, данные, …) должны быть нечувствительны к регистру. Обозначения:

[ ] – необязательная часть

… – часть, повторяющаяся произвольное количество раз

< > – описание конструкции

<Б>|<Ц>|<пБ>|<пЦ>|<пБЦ> – буква | цифра | последовательность букв | последовательность цифр | последовательность букв и/или цифр или пусто

<И> – <имя объекта>

<В> – <выражение>

<ЛВ> – <ЛогическоеВыражение>

<ОБ> – <ОператорИлиБлок> (<О> - одиночный оператор)

<К> –<константа>

3. Расшифровка цифр варианта задания.

a). Идентификаторы и константы:

Вариант:

2

Идентификаторы

<пБ><Ц>

Константы

целые

вещественные

символьные

5-ричные

yes/ no

b . Объявления примитивных типов (целое, вещественное, символьное, булево):

Вариант:

1

 

int[e[g[e[r]]]]

float

char

bool 

c. Оператор присваивания:

Вариант:

3

 

<И> = <В> ;

d. Условный оператор:

Вариант:

1

 

by <ЛВ> do <ОБ> [otherwise <ОБ>]

e. Переключатель:

Вариант:

2

 

switch<В> {by <К>:<ОБ> …}

f .Оператор цикла:

Вариант:

3

 

for<И>from<К>to<К> [step<К>] <ОБ>

4. Пример праграммы

int ab2, d3; float c1;

bool xy4;

by(xy4==yes) do ab2 = 4;

otherwise c1=3 ;

switch (ab2) { by 1 : d3=4 * (c1 + 3); by 2 : c1 =(ab2 + 3) *3; }

for d3 from 0 to 3 ab2 = d3 * 1;

Интерпретация программы в код абстрактной стековой машины:

1)

int ab2, d3;

float c1;

bool xy4;

ab2 DW

d3 DW

c1 DD

xy4 DB

2)

switch (ab2)

{

by 1 : d3= (c1 + 3)*4;

by 2 : c1 =(ab2 + 3) *3;

}

RVALUE ab2

PUSH 1

=

GOTRUE CASE2

RVALUE ab2

PUSH 2

=

GOTRUE CASE1

GOTO OUT_SWITCH

LABEL CASE2

LVALUE d3

PUSH 4

RVALUE c1

PUSH 3

ADD

MULT

:=

GOTO OUT_SWITCH

LABEL CASE 1

LVALUE c1

RVALUE ab2

PUSH 3

ADD

PUSH 3

MULT

:=

GOTO OUT_SWITCH

LABEL OUT_SWITCH

3. by(xy4==yes) ab2 = 4; otherwise c1=3 ;

RVALUE xy4

PUSH yes

==

GOTRUE M1

GOTO M2

LABEL M2

LVALUE c1

PUSH 3

:=

GOTO M3

LABEL M1

LVALUE ab2

PUSH 4

:=

GOTO M3

LABEL M3

4)

for d3 from 0 to 3 ab2 = d3 + 1;

LVALUE d3

PUSH 0

:=

LABEL LAP

RVALUE d3

PUSH 3

<=

GOFALSE OUTFOR

LVALUE ab2

RVALUE d3

PUSH 1

MULT

:=

LVALUE

d3

RVALUE

d3

PUSH 1

ADD

:=

GOTO LAP

LABEL OUTFOR

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]