summaryrefslogtreecommitdiff
path: root/ecomp-c/test1.e
blob: 907e5954dcc4475469dc2898e3afb5370d25c2f2 (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
/*
 * 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 ) {
		x := n + m;
		a1[4] := x;
	}
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( 1, 2, false );
end