-
Notifications
You must be signed in to change notification settings - Fork 0
/
t3.txt
101 lines (93 loc) · 3.2 KB
/
t3.txt
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
** Test case 3: Testing symbol table creation for variable declaration and redeclaration checks**
** Multiple level nesting using primitive data types**
**Variant of test case 1**
<<module var_demo>>
takes input [x:integer, w: boolean, p:real];
returns [m_out:integer, n_out:integer, u: boolean];
start
declare a,b:integer;
m_out:= 56;
n_out:= 20;
declare m,n: boolean;
get_value(b);
declare value, q, r: real;
get_value(q);
r:= 23.67e+2;
for(a in 1..10)
start
declare b, q: integer;
declare r: boolean;
get_value(b);
q:= 18;
r:= b+q*a+x < 100 AND w OR m; **not an error as r, w, m, a and x are found in the static parent scope**
print(a);
declare q,r: real; ** ERROR: variables q and r are re-declared**
print(r);
q:= b-a*x+y*20; ** ERROR: variable y is not declared**
end
value:= p+q*r;
m:=a <= x AND true;
u:= true AND false OR v; ** ERROR: variable v is not declared**
u:= a<=b;
declare w: integer; ** Not an error as a local variable can shadow the input parameter**
w:= 23; ** not an error as type of w is integer now**
n_out:= a*25+100;
declare b, c: real; **ERROR: variable b is re-declared**
c:= value-q+r;
w:= w + 5; **No type error as well as type of w is now taken as integer;**
end
<<module compute>>
takes input[a:integer, b:integer, s: real, c:integer];
returns [res_1:boolean, res_2_a:integer, res_2__b:real];
start
declare new:boolean;
declare abc_1, pqr_2: integer;
pqr_2:= abc_1 + 6;
declare abc_1: real; **ERROR: variable abc_1 is re-declared**
res_2_a:= -(a*b-c/pqr_2);
declare s: integer; **Not an error as a local variable can shadow the input parameter**
declare q4, q5: real;
res_2__b:= (res_2__b + p)*12+22.34E-2*q5; **ERROR variable p is not declared**
declare m,n: boolean;
s:= 12;
res_1 := a <= b AND c >= a OR a<0 AND false;
m:= n AND (abc_1<=pqr_2);
while(m OR a>=b AND res_2__b <=129.54e+3)
start
b:=b+1;
m:= n OR b>=res_2_a;
declare w1, w2: integer;
declare abc_1: integer;
switch (m)
start
case true: declare w1, s: real;
s:= w1 + 54.24e-2+ q4;
abc_1:= w2 + a*pqr_2 - c*abc_1;
break;
case false: w1:= w1+5.76;
s:= s*k; **ERROR: variable k is not declared**
declare s:integer; **ERROR: variable s is redeclared**
break;
end
abc_1:= 16;
w2:= a-s*abc_1*c-pqr_2+w1;
m:= abc_1<=pqr_2 OR res_1;
w1:= w2*a-s*k*c-pqr_2; **ERROR: variable k is not declared**
end
m:= m OR (a <= b) AND (res_2 >= 30.65); **ERROR: Variable res_2 is not declared**
res_1:= (true AND c==b)OR(b>p AND (a<=d)); **ERROR: variables p and d are not declared**
declare new: integer; **ERROR: variable new is re-declared**
new:= a<b;
print(res_1);
end
<<<driver program>>>
start
declare v_1_2_3:integer;
get_value(v_1_2_43); **ERROR: variable v_1_2_43 is not declared**
declare result_, v7, v9:integer;
declare v10:real;
declare u1:boolean;
[u1, result_, k]:=use module compute with parameters v_1_2_3, v7, v10, v9; **ERROR: variable k is not declared**
print(result_);
declare u1: real; **ERROR: variable u1 is re-declared**
end