| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- MODULE Showcase;
- (* Exercises every syntax form of M2comp.atg step 1. *)
- FROM In IMPORT x;
- IMPORT w, dbg;
- CONST
- N = 10;
- H = 0FFH;
- R = 3.14;
- E = 2.0E+3;
- S = "hi";
- Q = 'q';
- Neg = -N + 2;
- TYPE
- Sub = [0 .. 9];
- RS = INTEGER[1 .. N];
- Vec = ARRAY [0 .. 9] OF INTEGER;
- Mat = ARRAY [0 .. 9], [0 .. 3] OF REAL;
- Rec = RECORD a : INTEGER; b : Vec END;
- Empty = RECORD END;
- Ptr = POINTER TO Rec;
- St = SET OF Sub;
- Boo = BOOLEAN;
- Chars = ARRAY [0 .. 15] OF CHAR;
- VAR
- i, j : INTEGER;
- v : Vec;
- m : Mat;
- r : Rec;
- p : Ptr;
- s : St;
- b : BOOLEAN;
- ch : CHAR;
- sa : Chars;
- PROCEDURE y(a : INTEGER; VAR s : Chars; w : INTEGER);
- BEGIN
- s[0] := ch;
- a := a + w
- END y;
- PROCEDURE z;
- BEGIN
- END z;
- PROCEDURE Min(a, b : INTEGER) : INTEGER;
- BEGIN
- IF a < b THEN RETURN a ELSE RETURN b END
- END Min;
- PROCEDURE Work(VAR v : Vec; n : CARDINAL; flag : BOOLEAN);
- VAR k : INTEGER;
- PROCEDURE Nested(t : INTEGER) : INTEGER;
- BEGIN
- RETURN t * 2
- END Nested;
- BEGIN
- k := +n - 1;
- k := -k + 1;
- v[0] := k;
- v[N - 1] := Nested(k);
- m[1, 2] := R;
- r.a := k;
- p^ := r;
- s := s;
- b := (k <= 0) OR (k >= N) OR NOT flag;
- IF k = 0 THEN k := 1
- ELSIF k # 1 THEN k := 2
- ELSE k := 3
- END;
- WHILE k < N DO
- k := k + 1
- END;
- REPEAT
- k := k - 1
- UNTIL k = 0;
- LOOP
- k := k + 1;
- IF k > N THEN EXIT END
- END;
- FOR k := 1 TO N BY 2 DO
- Work(v, k, flag)
- END;
- FOR k := N TO 1 DO
- k := k DIV 2
- END;
- b := (k IN s) AND (H <> 0) AND (Q = Q);
- j := k MOD 3;
- r := r
- END Work;
- MODULE Local [3];
- FROM In IMPORT w;
- EXPORT QUALIFIED q;
- VAR q : INTEGER;
- PROCEDURE Init;
- BEGIN
- q := 0
- END Init;
- BEGIN
- q := 1
- END Local;
- BEGIN
- i := Min(3, 4) + (2 * 3 - 4 / 2);
- Work(v, N, TRUE);
- Local.q := i;
- y(i, sa, N);
- z
- END Showcase.
|