- •Содержание
- •1. Цель работы.
- •2. Краткое описание учебного языка, варианты заданий.
- •3. Расшифровка цифр варианта задания.
- •4. Пример праграммы
- •5. Регулярные выражения
- •6. Построить ка в форме матрицы:
- •7. Формальная грамматика
- •8. Примеры результатов работы Результат реализации лексического блока
- •Результат реализации синтаксичекого блока
- •Результат реализации генератора кода с переводом в язык абстрактной стековой машины
- •9. Список литературы
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Факультет кибернетики
Кафедра вычислительной техники
Пояснительная записка к курсовому проекту
по дисциплине
Системное программное обеспечение
-
Выполнил студент группы
ЭВМ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