root/trunk/gcc/gcc/testsuite/algol60.dg/compile/prec1.a60

Revision 155, 10.3 kB (checked in by ant_39, 2 years ago)
Line 
1 'comment' { dg-do run } ;
2
3 'begin'
4   'integer' ci, di, qi, errors;
5   'Boolean' cb, db, qb;
6   'real' cr, dr, qr;
7
8   errors := 0;
9   qi := 5;
10   qr := 5.0;
11   qb := 'true';
12
13 'comment'
14   few wild tests
15 ;
16
17   ci := 'if' qb 'then' 2*qi      + 3 'div' 4    'else' 'if' qb 'then' qi+6**2**3             'else' qi+8-9-6+5;
18   di := 'if' qb 'then' ((2 * qi) + (3 'div' 4)) 'else' 'if' qb 'then' (qi + ((6 ** 2) ** 3)) 'else' ((((qi + 8) - 9) - 6) + 5);
19   errors := errors + ('if' ci != di 'then' 1 'else' 0);
20
21   cb := qi > qi && qi < qi         || qi >= qi && qi <= qi        || qi = qi && qi != qi;
22   db := ((((qi > qi) && (qi < qi)) || ((qi >= qi) && (qi <= qi))) || ((qi = qi) && (qi != qi)));
23   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
24
25   cb := qb => qb => qi >= qi;
26   db := ((qb => qb) => (qi >= qi));
27   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
28
29 'comment'
30   check precedence level by level
31 ;
32
33   ci :=  -qi ** -qi;
34   di := ((-qi) ** (-qi));
35   errors := errors + ('if' ci != di 'then' 1 'else' 0);
36
37   ci :=  --qi;
38   di := (-(-qi));
39   errors := errors + ('if' ci != di 'then' 1 'else' 0);
40
41   ci :=  --qi ** --qi;
42   di := ((-(-qi)) ** (-(-qi)));
43   errors := errors + ('if' ci != di 'then' 1 'else' 0);
44
45   ci :=   qi ** qi  *  qi ** qi  ;
46   di := ((qi ** qi) * (qi ** qi));
47   errors := errors + ('if' ci != di 'then' 1 'else' 0);
48
49   cr :=   qi ** qi  /  qi ** qi  ;
50   dr := ((qi ** qi) / (qi ** qi));
51   errors := errors + ('if' cr != dr 'then' 1 'else' 0);
52
53   ci :=   qi ** qi  'div'  qi ** qi  ;
54   di := ((qi ** qi) 'div' (qi ** qi));
55   errors := errors + ('if' ci != di 'then' 1 'else' 0);
56
57   ci :=    qi ** qi  ** qi  ** qi ;
58   di := (((qi ** qi) ** qi) ** qi);
59   errors := errors + ('if' ci != di 'then' 1 'else' 0);
60
61   ci :=   qi * qi  +  qi * qi  ;
62   di := ((qi * qi) + (qi * qi));
63   errors := errors + ('if' ci != di 'then' 1 'else' 0);
64
65   cr :=   qi / qi  +  qi / qi  ;
66   dr := ((qi / qi) + (qi / qi));
67   errors := errors + ('if' cr != dr 'then' 1 'else' 0);
68
69   ci :=   qi 'div' qi  +  qi 'div' qi  ;
70   di := ((qi 'div' qi) + (qi 'div' qi));
71   errors := errors + ('if' ci != di 'then' 1 'else' 0);
72
73   ci :=   qi * qi  -  qi * qi  ;
74   di := ((qi * qi) - (qi * qi));
75   errors := errors + ('if' ci != di 'then' 1 'else' 0);
76
77   cr :=   qi / qi  -  qi / qi  ;
78   dr := ((qi / qi) - (qi / qi));
79   errors := errors + ('if' cr != dr 'then' 1 'else' 0);
80
81   ci :=   qi 'div' qi  -  qi 'div' qi  ;
82   di := ((qi 'div' qi) - (qi 'div' qi));
83   errors := errors + ('if' ci != di 'then' 1 'else' 0);
84
85   ci :=    qi * qi  * qi  * qi ;
86   di := (((qi * qi) * qi) * qi);
87   errors := errors + ('if' ci != di 'then' 1 'else' 0);
88
89   cr :=    qr / qr / qr  / qr ;
90   dr := (((qr / qr) / qr) / qr);
91   errors := errors + ('if' cr != dr 'then' 1 'else' 0);
92
93   ci :=    qi 'div' qi  'div' qi  'div' qi ;
94   di := (((qi 'div' qi) 'div' qi) 'div' qi);
95   errors := errors + ('if' ci != di 'then' 1 'else' 0);
96
97   cr :=    qr * qr  / qr  / qr ;
98   dr := (((qr * qr) / qr) / qr);
99   errors := errors + ('if' cr != dr 'then' 1 'else' 0);
100
101   cr :=    qr / qr  * qr  / qr ;
102   dr := (((qr / qr) * qr) / qr);
103   errors := errors + ('if' cr != dr 'then' 1 'else' 0);
104
105   ci :=    qi * qi  'div' qi  'div' qi ;
106   di := (((qi * qi) 'div' qi) 'div' qi);
107   errors := errors + ('if' ci != di 'then' 1 'else' 0);
108
109   ci :=    qi 'div' qi  * qi  'div' qi ;
110   di := (((qi 'div' qi) * qi) 'div' qi);
111   errors := errors + ('if' ci != di 'then' 1 'else' 0);
112
113
114   cb :=   qi + qi  <  qi + qi  ;
115   db := ((qi + qi) < (qi + qi));
116   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
117
118   cb :=   qi + qi  <=  qi + qi  ;
119   db := ((qi + qi) <= (qi + qi));
120   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
121
122   cb :=   qi + qi  =  qi + qi  ;
123   db := ((qi + qi) = (qi + qi));
124   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
125
126   cb :=   qi + qi  >=  qi + qi  ;
127   db := ((qi + qi) >= (qi + qi));
128   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
129
130   cb :=   qi + qi  >  qi + qi  ;
131   db := ((qi + qi) > (qi + qi));
132   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
133
134   cb :=   qi + qi  !=  qi + qi  ;
135   db := ((qi + qi) != (qi + qi));
136   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
137
138   cb :=   qi - qi  <  qi - qi  ;
139   db := ((qi - qi) < (qi - qi));
140   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
141
142   cb :=   qi - qi  <=  qi - qi  ;
143   db := ((qi - qi) <= (qi - qi));
144   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
145
146   cb :=   qi - qi  =  qi - qi  ;
147   db := ((qi - qi) = (qi - qi));
148   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
149
150   cb :=   qi - qi  >=  qi - qi  ;
151   db := ((qi - qi) >= (qi - qi));
152   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
153
154   cb :=   qi - qi  >  qi - qi  ;
155   db := ((qi - qi) > (qi - qi));
156   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
157
158   cb :=   qi - qi  !=  qi - qi  ;
159   db := ((qi - qi) != (qi - qi));
160   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
161
162   ci :=    qi + qi  + qi  + qi ;
163   di := (((qi + qi) + qi) + qi);
164   errors := errors + ('if' ci != di 'then' 1 'else' 0);
165
166   ci :=    qi - qi  - qi  - qi ;
167   di := (((qi - qi) - qi) - qi);
168   errors := errors + ('if' ci != di 'then' 1 'else' 0);
169
170   ci :=    qi + qi  - qi  - qi ;
171   di := (((qi + qi) - qi) - qi);
172   errors := errors + ('if' ci != di 'then' 1 'else' 0);
173
174   ci :=    qi - qi  + qi  - qi ;
175   di := (((qi - qi) + qi) - qi);
176   errors := errors + ('if' ci != di 'then' 1 'else' 0);
177
178
179   cb :=  !qb && !qb;
180   db := ((!qb) && (!qb));
181   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
182
183   cb :=  !!qb;
184   db := (!(!qb));
185   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
186
187
188   cb :=   qb && qb  ||  qb && qb  ;
189   db := ((qb && qb) || (qb && qb));
190   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
191
192   cb :=    qb && qb  && qb  && qb ;
193   db := (((qb && qb) && qb) && qb);
194   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
195
196
197   cb :=   qb || qb  =>  qb || qb  ;
198   db := ((qb || qb) => (qb || qb));
199   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
200
201   cb :=    qb || qb  || qb  || qb ;
202   db := (((qb || qb) || qb) || qb);
203   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
204
205
206   cb :=   qb => qb  ==  qb => qb  ;
207   db := ((qb => qb) == (qb => qb));
208   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
209
210   cb :=    qb => qb  => qb  => qb ;
211   db := (((qb => qb) => qb) => qb);
212   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
213
214
215   cb :=    qb == qb  == qb  == qb ;
216   db := (((qb == qb) == qb) == qb);
217   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
218
219
220 'comment'
221   parentheses tests
222 ;
223
224   ci :=  -(qi ** -qi);
225   di := (-(qi ** (-qi)));
226   errors := errors + ('if' ci != di 'then' 1 'else' 0);
227
228
229   ci :=   qi ** (qi * qi) ** qi  ;
230   di := ((qi ** (qi * qi)) ** qi);
231   errors := errors + ('if' ci != di 'then' 1 'else' 0);
232
233
234   ci :=   qi * (qi + qi) * qi  ;
235   di := ((qi * (qi + qi)) * qi);
236   errors := errors + ('if' ci != di 'then' 1 'else' 0);
237
238   cr :=   qr / (qr + qr) / qr  ;
239   dr := ((qr / (qr + qr)) / qr);
240   errors := errors + ('if' cr != dr 'then' 1 'else' 0);
241
242   ci :=   qi 'div' (qi + qi) 'div' qi  ;
243   di := ((qi 'div' (qi + qi)) 'div' qi);
244   errors := errors + ('if' ci != di 'then' 1 'else' 0);
245
246   ci :=   qi * (qi - qi) * qi  ;
247   di := ((qi * (qi - qi)) * qi);
248   errors := errors + ('if' ci != di 'then' 1 'else' 0);
249
250   cr :=   qr / (qr - qr) / qr  ;
251   dr := ((qr / (qr - qr)) / qr);
252   errors := errors + ('if' cr != dr 'then' 1 'else' 0);
253
254   ci :=   qi 'div' (qi + qi) 'div' qi  ;
255   di := ((qi 'div' (qi + qi)) 'div' qi);
256   errors := errors + ('if' ci != di 'then' 1 'else' 0);
257
258
259   cb :=   qb && (qi < qi) && qb  ;
260   db := ((qb && (qi < qi)) && qb);
261   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
262
263   cb :=   qb && (qi <= qi) && qb  ;
264   db := ((qb && (qi <= qi)) && qb);
265   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
266
267   cb :=   qb && (qi = qi) && qb  ;
268   db := ((qb && (qi = qi)) && qb);
269   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
270
271   cb :=   qb && (qi >= qi) && qb  ;
272   db := ((qb && (qi >= qi)) && qb);
273   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
274
275   cb :=   qb && (qi > qi) && qb  ;
276   db := ((qb && (qi > qi)) && qb);
277   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
278
279   cb :=   qb && (qi != qi) && qb  ;
280   db := ((qb && (qi != qi)) && qb);
281   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
282
283   cb :=   qb || (qi < qi) || qb  ;
284   db := ((qb || (qi < qi)) || qb);
285   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
286
287   cb :=   qb || (qi <= qi) || qb  ;
288   db := ((qb || (qi <= qi)) || qb);
289   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
290
291   cb :=   qb || (qi = qi) || qb  ;
292   db := ((qb || (qi = qi)) || qb);
293   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
294
295   cb :=   qb || (qi >= qi) || qb  ;
296   db := ((qb || (qi >= qi)) || qb);
297   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
298
299   cb :=   qb || (qi > qi) || qb  ;
300   db := ((qb || (qi > qi)) || qb);
301   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
302
303   cb :=   qb || (qi != qi) || qb  ;
304   db := ((qb || (qi != qi)) || qb);
305   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
306
307
308   cb :=  !(qb && !qb);
309   db := (!(qb && (!qb)));
310   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
311
312
313   cb :=   qb && (qb || qb) && qb  ;
314   db := ((qb && (qb || qb)) && qb);
315   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
316
317
318   cb :=   qb || (qb => qb) || qb  ;
319   db := ((qb || (qb => qb)) || qb);
320   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
321
322
323   cb :=   qb => (qb == qb) => qb  ;
324   db := ((qb => (qb == qb)) => qb);
325   errors := errors + ('if' ((cb && db) || !(cb || db)) 'then' 0 'else' 1);
326
327
328   ci := ((((((((((((((qi ** ((((((((((((((qi * qi)))))))))))))) ** qi))))))))))))));
329   di := ((qi ** (qi * qi)) ** qi);
330   errors := errors + ('if' ci != di 'then' 1 'else' 0);
331
332   exit ('if' errors > 100 'then' 100 'else' errors);
333
334  'end';
Note: See TracBrowser for help on using the browser.