next up previous
Next: Types numériques Up: Spécifications des principaux types Previous: Booléens

Caractères

TYPE char
  INHERIT equality{char}
  INHERIT total_order{char}

  MODEL(code: nat)  -- ASCII codes.
  INVARIANT ALL(c: char :: 0 <= c.code <= 127)

  MESSAGE create(n: nat)  -- literal 'a' = create(97) and so on.
    WHEN 0 <= n <= 127 REPLY(c: char) WHERE c.code = n
    OTHERWISE REPLY EXCEPTION illegal_code

  MESSAGE ordinal(c: char) REPLY(n: nat)
    WHERE n = c.code

  MESSAGE equal(c1 c2: char) REPLY(b: boolean)
    WHERE b <=> (c1.code = c2.code)

  MESSAGE "<"(c1 c2: char) REPLY(b: boolean)
    WHERE b <=> (c1.code < c2.code)

  CONCEPT letter(c: char) VALUE(b: boolean)
    WHERE b <=> (c IN ['a' .. 'z'] | c IN ['A' .. 'Z'])

  CONCEPT digit(c: char) VALUE(b: boolean)
    WHERE b <=> c IN ['0' .. '9']
END



Tremblay Guy
2/4/1999