Задания К КУРСОВОЙ по Грамматикам

advertisement
ЗАДАНИЯ ПО РАСШИРЕНИЮ ЯЗЫКА МИЛАН
для построения транслятора
ГРУППА N ...
N
1
2
3
4
5
ФИО
Задание
Оператор цикла
for<переменная>:=<выражение> to <выражение> step
<выражение> do <список операторов> od
Оператор цикла
for<переменная>:=<выражение>, <выражение>, … ,
<выражение> do <список операторов> od
Оператор цикла
for(<инициализация>;<условие>;<выражение> do <список
операторов> od
Операторы цикла
while <условие> do<список операторов> od
repeat <список операторов> until <условие>
Пустой оператор skip и все типы комментариев.
10
Оператор цикла с предполагаемым шагом 1 или –1
for<переменная>:=<выражение> , … , <выражение> do <список
операторов> od
Оператор выбора
switch(<выражение >)
begin
case <значение 1>: <список операторов> break;
case <выражение2>: <список операторов> break;
…
default: <список операторов>
endcase
Операции инкремента и декремента (префиксные и
постфиксные): ++i; --i; i++; i-C точки зрения действия на операнд i между префиксными и
постфиксными операциями разницы нет. Если эти выражения
являются частью более сложного выражения, то при префиксной
форме сначала изменяется операнд i, и уже измененый результат
используется в выражении. При постфиксной форме операторов
инкремента или декремента сначала операнд i используется в
выражении, а потом уже изменяется.
Арифметическое “if”:
<логическое выражение>? <выражение>: <выражение>.
Операторы break и continue.
11
Метки и операторы goto.
12
Перечислимый тип. Операции над данными перечислимого типа
13
Интервальный тип (отрезок целого типа).
14
Целый и вещественный типы. Автоматическое и явное (с
помощью префикса (int) или (float) приведение типов.
6
7
8
9
Примечание
15
16
17
18
19
Возможный фрагмент программы:
int a, b:=35, c:=167;
float d:=7.26, e, f:= .0 + c;
е:=с/b; e:=(float)c/b;
Одномерные массивы и операции с массивами и элементами
массивов
Многомерные массивы и операции с подмассивами и
элементами массивов
Булевы константы (true и false), переменные и операции –(как в
языке Java). Операции {&, &&, |, ||, !}. Пример логического
выражения: !(A || !(B && C | А)). Пример условного выражения:
! (х>2 || y<=z+5). Учесть особенность операций || и && по
сравнению с операциями | и & соответственно (для || если
первый операнд истина, то второй не вычисляется, для && если
первый операнд ложь, то второй не вычисляется).
Множественное присваивание типа x:=y:=z:=w+3
Блоки { } и области видимости переменных
Возможные задания для нестандартной курсовой работы
1. Реализовать для базового компилятора языка Милан одну из стратегий
восстановления синтаксического анализа после синтаксической ошибки и
выполнить исследование ее качества
2. Построить транслятор, который по заданной формуле Ф темпоральной логики
CTL и заданной структуры Крипке строит множество состояний структуры Крипке,
на которых формула Ф выполняется.
Download