| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- Listing:
- 1 MODULE Showcase;
- 2 (* Exercises every syntax form of M2comp.atg step 1. *)
- 3 FROM In IMPORT x;
- 4 IMPORT w, dbg;
- 5
- 6 CONST
- 7 N = 10;
- 8 H = 0FFH;
- 9 R = 3.14;
- 10 E = 2.0E+3;
- 11 S = "hi";
- 12 Q = 'q';
- 13 Neg = -N + 2;
- 14
- 15 TYPE
- 16 Sub = [0 .. 9];
- 17 RS = INTEGER[1 .. N];
- 18 Vec = ARRAY [0 .. 9] OF INTEGER;
- 19 Mat = ARRAY [0 .. 9], [0 .. 3] OF REAL;
- 20 Rec = RECORD a : INTEGER; b : Vec END;
- 21 Empty = RECORD END;
- 22 Ptr = POINTER TO Rec;
- 23 St = SET OF Sub;
- 24 Boo = BOOLEAN;
- 25 Chars = ARRAY [0 .. 15] OF CHAR;
- 26
- 27 VAR
- 28 i, j : INTEGER;
- 29 v : Vec;
- 30 m : Mat;
- 31 r : Rec;
- 32 p : Ptr;
- 33 s : St;
- 34 b : BOOLEAN;
- 35 ch : CHAR;
- 36 sa : Chars;
- 37
- 38 PROCEDURE y(a : INTEGER; VAR s : Chars; w : INTEGER);
- 39 BEGIN
- 40 s[0] := ch;
- 41 a := a + w
- 42 END y;
- 43
- 44 PROCEDURE z;
- 45 BEGIN
- 46 END z;
- 47
- 48 PROCEDURE Min(a, b : INTEGER) : INTEGER;
- 49 BEGIN
- 50 IF a < b THEN RETURN a ELSE RETURN b END
- 51 END Min;
- 52
- 53 PROCEDURE Work(VAR v : Vec; n : CARDINAL; flag : BOOLEAN);
- 54 VAR k : INTEGER;
- 55
- 56 PROCEDURE Nested(t : INTEGER) : INTEGER;
- 57 BEGIN
- 58 RETURN t * 2
- 59 END Nested;
- 60
- 61 BEGIN
- 62 k := +n - 1;
- 63 k := -k + 1;
- 64 v[0] := k;
- 65 v[N - 1] := Nested(k);
- 66 m[1, 2] := R;
- 67 r.a := k;
- 68 p^ := r;
- 69 s := s;
- 70 b := (k <= 0) OR (k >= N) OR NOT flag;
- 71 IF k = 0 THEN k := 1
- 72 ELSIF k # 1 THEN k := 2
- 73 ELSE k := 3
- 74 END;
- 75 WHILE k < N DO
- 76 k := k + 1
- 77 END;
- 78 REPEAT
- 79 k := k - 1
- 80 UNTIL k = 0;
- 81 LOOP
- 82 k := k + 1;
- 83 IF k > N THEN EXIT END
- 84 END;
- 85 FOR k := 1 TO N BY 2 DO
- 86 Work(v, k, flag)
- 87 END;
- 88 FOR k := N TO 1 DO
- 89 k := k DIV 2
- 90 END;
- 91 b := (k IN s) AND (H <> 0) AND (Q = Q);
- 92 j := k MOD 3;
- 93 r := r
- 94 END Work;
- 95
- 96 MODULE Local [3];
- 97 FROM In IMPORT w;
- 98 EXPORT QUALIFIED q;
- 99 VAR q : INTEGER;
- 100 PROCEDURE Init;
- 101 BEGIN
- 102 q := 0
- 103 END Init;
- 104 BEGIN
- 105 q := 1
- 106 END Local;
- 107
- 108 BEGIN
- 109 i := Min(3, 4) + (2 * 3 - 4 / 2);
- 110 Work(v, N, TRUE);
- 111 Local.q := i;
- 112 y(i, sa, x);
- 113 z
- 114 END Showcase.
- 0 errors
|