Module Surface.Tokens

type token =
| YEAR
| XOR
| WITH_V
| WITH
| WILDCARD
| WE_HAVE
| VARIES
| UNDER_CONDITION
| UIDENT of string
| TRUE
| THEN
| THAT
| TEXT
| SUM
| SUCH
| STRUCT
| STATE
| SEMICOLON
| SCOPE
| RULE
| RPAREN
| RBRACKET
| RBRACE
| PLUSPLUS
| PLUS of Ast.op_kind
| PERCENT
| OUTPUT
| OR
| OF
| NOT_EQUAL
| NOT
| MULT of Ast.op_kind
| MONTH
| MONEY_AMOUNT of string * string
| MONEY
| MINUS of Ast.op_kind
| MINIMUM
| MAXIMUM
| MATCH
| LPAREN
| LIDENT of string
| LET
| LESSER_EQUAL of Ast.op_kind
| LESSER of Ast.op_kind
| LBRACKET
| LBRACE
| LAW_TEXT of string
| LAW_INCLUDE
| LAW_HEADING of string * string option * bool * int
| LABEL
| IS
| INT_LITERAL of string
| INTERNAL
| INTEGER
| INPUT
| INCREASING
| IN
| IF
| GREATER_EQUAL of Ast.op_kind
| GREATER of Ast.op_kind
| FOR
| FIXED
| FILLED
| FALSE
| EXISTS
| EXCEPTION
| EQUAL
| EOF
| ENUM
| END_DIRECTIVE
| END_CODE of string
| EMPTY
| ELSE
| DURATION
| DOT
| DIV of Ast.op_kind
| DIRECTIVE_ARG of string
| DEPENDS
| DEFINITION
| DEFINED_AS
| DECREASING
| DECLARATION
| DECIMAL_LITERAL of string * string
| DECIMAL
| DAY
| DATE_LITERAL of int * int * int
| DATE
| DATA
| CONTEXT
| CONTENT
| CONTAINS
| CONSEQUENCE
| CONDITION
| COMMA
| COLON
| COLLECTION
| CARDINAL
| BY
| BOOLEAN
| BEGIN_METADATA
| BEGIN_DIRECTIVE
| BEGIN_CODE
| AT_PAGE of int
| ASSERTION
| AND
| AMONG
| ALT
| ALL