t_setconst.mod 732 B

1234567891011121314151617181920212223
  1. MODULE TSetConst;
  2. // SET CONST declarations: a char-range literal, a literal with a char
  3. // constant, and a union of two set constants, all folded to static
  4. // masks. Exit 42.
  5. TYPE CharSet = SET OF CHAR;
  6. Colour = (Red, Green, Blue);
  7. CS = SET OF Colour;
  8. CONST Digits = CharSet{"0".."9"};
  9. Signs = CharSet{'+', '-'};
  10. NumCh = Signs + Digits; (* union of two set constants *)
  11. Warm = CS{Red, Blue};
  12. VAR c : CHAR;
  13. s : CharSet;
  14. col : CS;
  15. ExitCode : INTEGER;
  16. BEGIN
  17. c := '5';
  18. s := Digits;
  19. col := Warm;
  20. IF (c IN s) AND ('+' IN NumCh) AND ('9' IN NumCh) AND NOT ('z' IN NumCh)
  21. AND (Red IN col) AND NOT (Green IN col)
  22. THEN ExitCode := 42 ELSE ExitCode := 1 END
  23. END TSetConst.