summaryrefslogtreecommitdiff
path: root/ecomp-c/test1.e
blob: 6e979c9a08972359c0c5b6b5d0fa81aa17f995c0 (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
/*
 * 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;

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[4] := 42;
	s2[a1[2]] := 'Z';
end