| 12345678910111213141516171819202122232425262728293031323334353637 |
- MODULE Showcase13;
- // Step showcase: FORWARD declarations driving mutual recursion, plus
- // BITSET set operations (union, membership) and the typed set
- // constructor BITSET{...}. Expected ExitCode: 42.
- VAR ExitCode : INTEGER;
- VAR s, t : BITSET;
- VAR n : INTEGER;
- // --- mutual recursion via FORWARD -------------------------------
- PROCEDURE Even (k : INTEGER) : BOOLEAN; FORWARD;
- PROCEDURE Odd (k : INTEGER) : BOOLEAN; FORWARD;
- PROCEDURE Even (k : INTEGER) : BOOLEAN;
- BEGIN
- IF k = 0 THEN RETURN TRUE ELSE RETURN Odd(k - 1) END
- END Even;
- PROCEDURE Odd (k : INTEGER) : BOOLEAN;
- BEGIN
- IF k = 0 THEN RETURN FALSE ELSE RETURN Even(k - 1) END
- END Odd;
- BEGIN
- n := 0;
- IF Even(8) THEN n := n + 10 END; // TRUE -> 10
- IF Odd(7) THEN n := n + 11 END; // TRUE -> 21
- s := BITSET{1, 3, 5}; // typed set constructor
- t := BITSET{5, 7};
- IF 3 IN s THEN n := n + 10 END; // member -> 31
- s := s + t; // union {1, 3, 5, 7}
- IF 7 IN s THEN n := n + 11 END; // member -> 42
- ExitCode := n
- END Showcase13.
|