summaryrefslogtreecommitdiff
path: root/ecomp-c/test1.e
blob: a85f46973350bb39dda8e414c06d516a820f950a (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
/*
 * module trying to show all features of the language
 */

module test1;

const
	// integer constant
	N, M : integer = 20;
	O : integer = N;
	
	// boolean constant
	INIT_STATE : boolean = true;

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;

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;
end