deep.mod 1002 B

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