sig
  exception Error
  type token =
      WITNESS
    | WITH
    | WHILE
    | VAL
    | UNKNOWN
    | UNDERSCORE
    | UIDENT of string
    | TYPE
    | TO
    | THEN
    | TERM
    | TAKING
    | TAKE
    | TAGOF
    | STAR of string
    | SEMI
    | RPAREN
    | REC
    | RBRACKET
    | RBRACE
    | PRESERVING
    | PLUS of string
    | PERM
    | PACK
    | OWNS
    | OPPREFIX of string
    | OPINFIX4 of string
    | OPINFIX3 of string
    | OPINFIX2 of string
    | OPINFIX1 of string
    | OPINFIX0d of string
    | OPINFIX0c of string
    | OPINFIX0b of string
    | OPINFIX0a of string
    | OPEN
    | MUTABLE
    | MINUS of string
    | MATCH
    | LPAREN
    | LIDENT of string
    | LET
    | LBRACKET
    | LBRACE
    | LARROW
    | INT of int
    | IN
    | IF
    | GIVE
    | FUN
    | FROM
    | FOR
    | FLEX
    | FAIL
    | FACT
    | EXPLAIN
    | EXCLUSIVE
    | EQUAL of string
    | EOF
    | END
    | EMPTY
    | ELSE
    | DYNAMIC
    | DUPLICABLE
    | DOWNTO
    | DOT
    | DO
    | DBLARROW
    | DATA
    | CONSUMES
    | COMMA
    | COLONEQUAL of string
    | COLONCOLON
    | COLON
    | BUILTIN
    | BELOW
    | BEGIN
    | BAR
    | AT
    | ASSERT
    | AS
    | ARROW
    | AND
    | ALIAS
    | ADOPTS
    | ABSTRACT
    | ABOVE
  val warn_error_list :
    (Lexing.lexbuf -> Grammar.token) ->
    Lexing.lexbuf -> (ClFlags.flag * (int * int)) list
  val interface :
    (Lexing.lexbuf -> Grammar.token) ->
    Lexing.lexbuf -> SurfaceSyntax.interface
  val implementation :
    (Lexing.lexbuf -> Grammar.token) ->
    Lexing.lexbuf -> SurfaceSyntax.implementation
end