blob: 93007930461ebb992334d3ee8d020e59aca3c635 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
/*
* module trying to show all features of the language
*/
module test1;
const
// integer constant
N, M : integer = 20;
O : integer = N;
C : character = 'A';
// boolean constant
INIT_STATE : boolean = true;
// string constant
S : array 10 of character = "hello";
var
// this is an integer
a : integer;
// this is also an integer
b : integer;
c : integer; // c too
d, e, f : integer;
flag : boolean;
i : integer;
j : character := C;
s : array 10 of character := S;
s1 : array 10 of character;
s2 : array 10 of character := "hello";
a1 : array 10 of integer;
procedure B( n : integer, m : integer, f : boolean );
procedure A;
const
N : integer = 10;
S : array N of character = "local";
var
s : array N of character := S;
begin
a1[5] := 43;
s[0] := 'L';
B( a1[5], 7, true );
end
procedure B( n : integer, m : integer, f : boolean );
var
x : integer;
begin
if f do
x := n - m;
a1[4] := x;
end
end
function iszero( c : character ) : boolean;
var
res : boolean := false;
begin
if c = '0' do
res := true
end
return res;
end
begin
a := 1;
b := 7;
c := N; // c should be 20
a := b; // a should be 7
a := a + 1; // a should be 8 now
d := a * c + b; // d should be 8 * 20 + 7 = 167 (A7 hex)
d := a * ( c + b ); // d should be 8 * ( 20 + 7 ) = 216 (D8 hex)
e := ( ( 7 * a + b ) + 2 * ( b + a + 3 ) ) * 4 div 2; // ((7*8+7)+2*(7+8+3))*4/2=198 (C6 hex)
f := a - b; // should be 8-7=1
flag := INIT_STATE; // should be false
flag := a = b; // flag should be false
//flag := a <> b; // flag should be true
//flag := a < b; // flag should be false
//flag := a <= b; // flag should be false
//flag := a > b; // flag should be true
//flag := a >= b; // flag should be false
if flag do
a := 9;
else
a := 8;
end;
i := 0;
while ( i < 10 ) and not flag do
i := i + 1;
end;
j := 'B';
s1[0] := ' ';
s[0] := 'X';
s[1] := s[0];
j := s[2];
i := 0;
while i < 10 do
a1[i] := i;
//s2[i] := 'A' + i;
i := i + 1;
end;
a1[3] := 42;
s2[a1[2]] := 'Z';
A;
B( 2, 1, false );
if iszero( '0' ) do
i := 1
else
i := 2
end
end
|