deep.Mod 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. MODULE Deep;
  2. IMPORT Out;
  3. CONST N = 10;
  4. Neg = -5;
  5. Pi = 3.14159;
  6. Hello = 'hi';
  7. TYPE
  8. IntArr = ARRAY 10 OF INTEGER;
  9. Matrix = ARRAY 2, 3 OF INTEGER;
  10. Point = RECORD x, y: INTEGER END;
  11. PInt = POINTER TO RECORD v: INTEGER END;
  12. Node = POINTER TO NodeDesc;
  13. NodeDesc = RECORD
  14. key: INTEGER;
  15. left, right: Node
  16. END;
  17. VAR
  18. i, j: INTEGER;
  19. ch: CHAR;
  20. b: BOOLEAN;
  21. r: REAL;
  22. a: IntArr;
  23. pt: Point;
  24. p: PInt;
  25. t: Node;
  26. PROCEDURE Sum(a, b: INTEGER): INTEGER;
  27. BEGIN
  28. RETURN a + b
  29. END Sum;
  30. PROCEDURE Fill(VAR a: IntArr; val: INTEGER);
  31. VAR k: INTEGER;
  32. BEGIN
  33. FOR k := 1 TO N DO a[k] := val END
  34. END Fill;
  35. PROCEDURE (t: Node) Insert(key: INTEGER);
  36. BEGIN
  37. t.key := key
  38. END Insert;
  39. BEGIN
  40. FOR i := 1 TO N DO a[i] := i END;
  41. WHILE i < N DO i := i + 1 END;
  42. REPEAT
  43. CASE i OF
  44. 1: Out.Int(1, 0)
  45. | 2, 3: Out.Int(2, 0)
  46. ELSE Out.Int(9, 0)
  47. END
  48. UNTIL i > N;
  49. LOOP
  50. IF i > N THEN EXIT END;
  51. i := i + 1
  52. END;
  53. pt.x := Sum(1, 2);
  54. NEW(p); p.v := 1;
  55. NEW(t); t.Insert(5);
  56. WITH p: PInt DO p.v := 2 END;
  57. r := 1.5E-3;
  58. b := (i = 1) & (j # 2) OR ~b;
  59. Fill(a, 0);
  60. Out.String('done'); Out.Ln
  61. END Deep.