Частина тексту файла (без зображень, графіків і формул):
Системне програмування. Розрахункова робота
Задано граматику
<cекція операторів> ::= begin <оператори> end
<oператори> ::= <оператор> | <оператори> ; <оператор>
< оператор > ::= < ціле > : < оператор без мітки > | < оператор без мітки >
< оператор без мітки > ::= < оператор присвоєння > | < умовний оператор >
| < оператор переходу > | < блок >
< оператор присвоєння > ::= < змінна > := < вираз >
<умовний оператор > ::= if < вираз > then < оператор > else < оператор >
if < вираз > then < оператор >
< оператор переходу > ::= goto < ціле >
< блок > ::= begin < оператори > end
< вираз > ::= < простий вираз > < відношення > < простий вираз >
| < простий вираз >
< відношення > ::= = | < | > | < > | <= | >=
< простий вираз > ::= < терм > | < простий вираз > + < терм >
| < простий вираз > − < терм > | < простий вираз > or < терм >
< терм > ::= < множник > | < терм > * < множник > | < терм > / < множник >
| < терм > and < множник >
< множник > ::= < змінна > | < ціле > | ( < вираз > ) | not < множник >
Постановка задачі:
із заданої граматики вибрати необхідну для заданого варіанту підмножину правил ;
знайти відношення передування;
виконати синтаксичний аналіз знизу догори; побудувати дерево виводу. При потреби внести зміни у граматику.
побудувати дерево з семантичною інформацією, побудувати тетради для заданого фрагменту. При потреби внести зміни у граматику.
Варіанти завдань
Варіант 1
Begin i:=1; j:=3; s:=1;
20: if ( i <= 5 ) and (j < 4) then
Begin s:=s*i*j; i:=i+1; j:=j+2; goto 20 end
End .
Варіант 2
Begin i:=1; j:=2; s:=3;
15: if ( i <= 3 ) and ( j <= 5 ) then
Begin s:=s+i+j; i:=i+1; j:=j+3; goto 15 end
End .
Варіант 3
Begin i:=1; s:=0;
5: if i <= 4 then
Begin s:=s+i; i:=i+1; ; goto 5 end;
x:=s+a*b
End .
Варіант 4
Begin x:=a; p:=x;
if ( p < > 0) or (a=0) then z:=b+c*d; else z:=b−c*d
End .
Варіант 5
Begin a:=10; b:=3;
if ( a <= x ) and ( b >= y ) then
begin c:=2*d; d:=2*b end else begin c:=a*3; d:=a*b end
End .
Варіант 6
Begin a:=3; b:=4; k:=8;
10: if ( a+b = 10 ) and (j < 4) then goto 20 else
Begin b:=b+1; k:=k+1; ; goto 10 end
20: z:=(a+3)*(b+k)
End .
Варіант 7
Begin x:=4; y:=2; p:=1; i:=1;
10: if i+p < 4 then
Begin i:=i+1; p:=p+x−i; goto 10 end
End .
Варіант 8
Begin y:=4; a:=1; c:=5; b:=3;
if a*2+c*3 >b then s:=y*(c+b) else s:=y*(a+b)
End .
Варіант 9
Begin x:=10; y:=30; z:=15;
1: if ( x+1 <= z ) and ( y > z ) then
Begin z:=z−x*2; x:=x+2; y:=y+1; goto 1 end
p:=x*y*z
End .
Варіант 10
Begin i:=1; j:=10; k:=30;
if ( i <k ) and ( j > i ) then
x:=(j−i)* (k−j); end x:=(i+j+k)*2;
End .
Варіант 11
Begin x:=4; y:=2; p:=1;
if i <4 then
Begin i:=i+1; p:=p+x−i end else p:=p*2+10;
End .
Варіант 12
Begin a:=1; b:=5; c:=20;
12: q:=a*b;
if q < 100 then begin a:=a+1; b:=b*2; goto 12 end
End .
Варіант 13
Begin i:=1; j:=25;
20: k:=(i+j)/2; s:=0;
if k < j then begin s:=s+i; i:=k; goto 20 end
End .
Варіант 14
Begin i:=2; j:=3; p:=1;
if (i <10) and (j<5) then Begin p:=p*i*j; q:=i end
else p:=i;
End .
Варіант 15
Begin a:=1; b:=4; c:=5;
if ( a+b > c ) then Begin x:=(a−b)*c; y:=a+b end
else Begin x:=a+b; y:=b+c end
p:=x+y;
End .
Варіант 16
Begin a:=10; b:=5; c:=4;
if ( a < c ) or ( a > b ) then x:=a*2+1; else x:=a*3+2;
p:=x*a; q:=x*b
End .
Варіант 17
Begin a:=1; b:=10; c:=4;
if (a < b) then x:=(a+b)*2+5; else x:=a*8+b*3+4;
s:=x*5
End .
Варіант 18
Begin k:=4; m:=8; n:=10;
if k+m=n then a:=n/3+m/4 else a:=n+(m+k)/5;
b:= (a−k) /(m+n)
End .
Варіант 19
Begin a:=10; b:=3;
if ( a <= x ) and ( b >= y ) then begin x:=a*b; d:=a/b end
else begin c:=c*3; d:=a+b end
p:=c+d
End .
Варіант 20
Begin k:=4; i:=3; m:=10;
if k+i > 10 then s:=(k+i)*m else s:=k+i*m;
b:= (s−k) *(m+i)
End .
Варіант 21
Begin i:=10; s:=1;
20: if I < > 10 then begin s:=s*i+1; i:=i+2; goto 20 end
End .
Варіант 22
Begin x:=2; y:=4; z:=12;
if x*y >z then k:=(x−z)*y else
begin f:=x*z; k:=(x+y)*(z−y) End
End .
Варіант 23
Begin a:=5; b:=3; c:=20;
10: if (a+b = c) or (a−b > 0) then x:=(a+b)*3+c else x:=a+c*5;
a:=a+1; goto 10;
End .
Варіант 24
Begin x:=1; y:=2;
if x+y <= 20 then begin a:=(x+y)*2; b:=x*y End
else begin a:=x; b:=y+4 End
End .
Варіант 25
Begin r:=1; s:=10; k:=5;
if r < k−s+1 then x:=(r+k)*s else x:=(r−k)/s;
p:=x+r
End .
Варіант 26
Begin x:=3; y:=4; q:=10;
if x+y<10 then w:=(x−y)*d else w:=x*d−y*u−v;
p:=p*w
End .
Варіант 27
Begin m:=1; n:=2; l:=9;
k:=m+n;
if k >= 1 then begin z:=a+b*c; y:=a+c End
else begin z:=a; y:=b*c+a End
End .
Варіант 28
Begin k:=4; m:=8; h:=12;
2: k:= k*m; h:=h+m;
if k <= 100 then begin m:=m−1; goto 2 End
End .
Варіант 29
Begin a:=1; b:=2;
if ( a = 3 ) or (b=7) then begin x:=(a+b)*c; y:=a*b End
else begin x:=a; y:=b+c End
End .
Варіант 30
Begin
if a*b > c*d then begin x:=a*b+y*z; w:=a+b End
else begin x:=a+y; w:=a*(y+z) End
End .