sig
  type token =
      NEWLINE
    | COMMENT
    | EOF
    | LPAREN
    | RPAREN
    | LBRACE
    | RBRACE
    | LBRACKET
    | RBRACKET
    | SEMI
    | PERIOD
    | COMMA
    | DOUBLECOLON
    | EQUALS
    | NEQUALS
    | DEQUALS
    | IMPLIES
    | ASSERT
    | ASSUME
    | RETURN
    | INTTY
    | FLOATTY
    | STRINGTY
    | LT
    | LTE
    | GT
    | GTE
    | AND
    | OR
    | EMPTYLIST
    | CONS
    | PLUS
    | MINUS
    | MULTIPLY
    | DIVIDE
    | NEG
    | CARET
    | MISSING
    | LET
    | RELATION
    | TYPE
    | FOREACH
    | IN
    | IF
    | ELSE
    | DATA
    | FUN
    | WITH
    | DROP
    | FLOAT of float
    | INTEGER of int
    | IDENTIFIER of string
  val input :
    (Lexing.lexbuf -> Parser.token) -> Lexing.lexbuf -> Ast.Ast.topdecl list
end