Условие имеет следующую структуру: (<выражение><знак сравнения><выражение>)
В языке возможно использование вещественных положительных констант и положительных целых констант. Отрицательные значения получаются в результате выполнения арифметических действий. Выражение представляет собой правильное математическое сочетание знаков операции -, +, *, /, идентификаторов и констант. Знаки операции имеют следующий приоритет (по убыванию): *(/), +(-). В выражения возможно использование скобок для изменения порядка выполнения операций.
Признаком конца текущего оператора является символ «;». Одиночное использование этого символа, без предшествующего ему оператора, недопустимо.
К семантики заданного языка предъявляются следующие требования:
· уникальность имени блока;
· недопустимость присвоения значения переменной самой себе;
· недопустимость передачи значений с выхода на вход одного и того же блока;
· недопустимость передачи значений на входы блоков типа vars;
· недопустимость передачи значений не идентифицированному блоку или передачи значений из не идентифицированного блока;
· соответствие имён блоков и имён идентификаторов, заданных в блоках связей, таблицам идентификаторов;
· недопустимость многократной передачи данных на одни и те же входы одних и тех же блоков.
{1vars1:vars;
let a1 let a2 2;
let b 2;
}
{1join1:join;
1vars1 _o_ a1 -> 1do1 _i_ x1;
1vars1 _o_ a2 -> 3do3 _i_ x42;
1vars1 _o_ b -> 1do1 _i_ x2, 3do3 _i_ x43;
1do1 _o_ out1 -> 3do3 _i_ x41, 2do2 _i_ v3v2;
}
{1do1:do;
{2vars2_o_ c -> 1do1 _i_ x3;
2vars2_o_ d -> 1do1_i_ x4;}
let in1 x1+x2;
let in2 x3+x4;
if (in1>in2) let out1 in1-in2;
if (in1<in2) { let out1 in2-in1; }
else { let out1 0;}
}
{2do2:do;
let in1 v3v1+v3v2;
let in2 v3v1-v3v2;
if (in1 > in2) { let stek1 in1;}
else if (in2 >= in1) let stek1 in2;
if (v3v1*v3v2 > stek1) let stek1 v3v1*v3v2;
if(v3v2/v3v1 > stek1) { let stek1 v3v2/v3v1;}
let out1 stek1;
}
{3do3:do;
if (x41 >= 4) { let out41 (x42+x43+x44+x45)/4;}
else if (x41 == 0) let out41 x42*x43*x44*x45;
else let out41 (x42+x43+x44+x45)/x41;
}
{2join2:join;
2vars2_o_ c -> 3do3_i_ x44;
2vars2_o_ d -> 3do3_i_ x45;
3do3_o_ out41 -> 2do2 _i_ v3v1;
}
{4do4:do;
{ 2do2 _o_ out1 -> 4do4_i_ x51, 4do4_i_ x52;}
if (x51==0) { let out1 0;}
else { if (x51 >0) { let out1 1;}
else { let out1 0.5;} }
let new x52*8/(2*x52+1);
if (new==0)
{let out2 0;
if(x51==5) let out3 5;}
else { if (new <0) { let out2 0.5;}
else let out2 1; }
}
{2vars2:vars;
let c 3;
let d 3;}
Лексика
.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.