sig
  type token =
      IDENTIFIER of (Loc.loc * string)
    | INTEGER of (Loc.loc * Intbig.intbig)
    | FLOAT of (Loc.loc * float)
    | STRING of (Loc.loc * string)
    | BOOLEAN of (Loc.loc * bool)
    | VECTOR of (Loc.loc * string)
    | FREE of (Loc.loc * string)
    | END of (Loc.loc * string)
    | COMP of (Loc.loc * string)
    | COMPONENT of (Loc.loc * string)
    | PRIM of (Loc.loc * string)
    | IF of (Loc.loc * string)
    | EF of (Loc.loc * string)
    | ELSE of (Loc.loc * string)
    | WITH of (Loc.loc * string)
    | IS of (Loc.loc * string)
    | LOCAL of (Loc.loc * string)
    | IMPORT of (Loc.loc * string)
    | ENVIRONMENT of (Loc.loc * string)
    | ROOTENVIRONMENT of (Loc.loc * string)
    | BRACE_LEFT of (Loc.loc * string)
    | BRACE_RIGHT of (Loc.loc * string)
    | PAREN_LEFT of (Loc.loc * string)
    | PAREN_RIGHT of (Loc.loc * string)
    | BRACKET_LEFT of (Loc.loc * string)
    | BRACKET_RIGHT of (Loc.loc * string)
    | DOLLAR of (Loc.loc * string)
    | COLON of (Loc.loc * string)
    | EOF of (Loc.loc * string)
    | LexerError of (Loc.loc * string)
    | OP_UNIFY of (Loc.loc * string)
    | OP_CONNECT_LEFT of (Loc.loc * string)
    | OP_CONNECT_RIGHT of (Loc.loc * string)
    | OP_THEN of (Loc.loc * string)
    | OP_VEC_THEN of (Loc.loc * string)
    | OP_VEC_ELSE of (Loc.loc * string)
    | OP_PROP_U of (Loc.loc * string)
    | OP_PROP_IMPLY of (Loc.loc * string)
    | OP_PROP_EQUIV of (Loc.loc * string)
    | OP_OR of (Loc.loc * string)
    | OP_PROP_OR of (Loc.loc * string)
    | OP_PROP_XOR of (Loc.loc * string)
    | OP_AND of (Loc.loc * string)
    | OP_PROP_AND of (Loc.loc * string)
    | OP_BW_OR of (Loc.loc * string)
    | OP_VEC_OR of (Loc.loc * string)
    | OP_BW_XOR of (Loc.loc * string)
    | OP_VEC_XOR of (Loc.loc * string)
    | OP_BW_AND of (Loc.loc * string)
    | OP_VEC_AND of (Loc.loc * string)
    | OP_EQU of (Loc.loc * string)
    | OP_NEQ of (Loc.loc * string)
    | OP_VEC_EQU of (Loc.loc * string)
    | OP_VEC_NEQ of (Loc.loc * string)
    | OP_CONCAT of (Loc.loc * string)
    | OP_RETURN of (Loc.loc * string)
    | OP_VEC_CONCAT of (Loc.loc * string)
    | OP_CONS of (Loc.loc * string)
    | OP_REPEAT of (Loc.loc * string)
    | OP_VEC_REPEAT of (Loc.loc * string)
    | OP_LT of (Loc.loc * string)
    | OP_GT of (Loc.loc * string)
    | OP_LE of (Loc.loc * string)
    | OP_GE of (Loc.loc * string)
    | OP_VEC_LT of (Loc.loc * string)
    | OP_VEC_GT of (Loc.loc * string)
    | OP_VEC_LE of (Loc.loc * string)
    | OP_VEC_GE of (Loc.loc * string)
    | OP_VEC_LT_S of (Loc.loc * string)
    | OP_VEC_GT_S of (Loc.loc * string)
    | OP_VEC_LE_S of (Loc.loc * string)
    | OP_VEC_GE_S of (Loc.loc * string)
    | OP_LSHIFT of (Loc.loc * string)
    | OP_RSHIFT of (Loc.loc * string)
    | OP_VEC_LSHIFT of (Loc.loc * string)
    | OP_VEC_RSHIFT of (Loc.loc * string)
    | OP_VEC_RSHIFT_S of (Loc.loc * string)
    | OP_ADD of (Loc.loc * string)
    | OP_SUB of (Loc.loc * string)
    | OP_VEC_ADD of (Loc.loc * string)
    | OP_VEC_SUB of (Loc.loc * string)
    | OP_MUL of (Loc.loc * string)
    | OP_DIV of (Loc.loc * string)
    | OP_MOD of (Loc.loc * string)
    | OP_VEC_MUL of (Loc.loc * string)
    | OP_VEC_DIV of (Loc.loc * string)
    | OP_VEC_MOD of (Loc.loc * string)
    | OP_VEC_MUL_S of (Loc.loc * string)
    | OP_POW of (Loc.loc * string)
    | OP_VEC_POW of (Loc.loc * string)
    | OP_NOT of (Loc.loc * string)
    | OP_BW_NOT of (Loc.loc * string)
    | OP_HEAD of (Loc.loc * string)
    | OP_TAIL of (Loc.loc * string)
    | OP_LENGTH of (Loc.loc * string)
    | OP_WIDTH of (Loc.loc * string)
    | OP_VEC_NOT of (Loc.loc * string)
    | OP_VEC_MSB of (Loc.loc * string)
    | OP_VEC_MSBS of (Loc.loc * string)
    | OP_VEC_LSB of (Loc.loc * string)
    | OP_VEC_LSBS of (Loc.loc * string)
    | OP_PROP_NOT of (Loc.loc * string)
    | OP_PROP_X of (Loc.loc * string)
    | OP_DOT of (Loc.loc * string)
    | OP_VEC_SELECT of (Loc.loc * string)
  val file : (Lexing.lexbuf -> CfParser.token) -> Lexing.lexbuf -> CfAst.expr
end