ЗАДАНИЯ ПО РАСШИРЕНИЮ ЯЗЫКА МИЛАН для построения транслятора ГРУППА 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 и заданной структуры Крипке строит множество состояний структуры Крипке, на которых формула Ф выполняется.