type token = (* Tokens with data *) | INT of string | FLOAT of string (* A path (starting with / or ./) *) | PATH of string (* Search path, enclosed in < and > *) | SPATH of string (* Home path, starting with ~/ *) | HPATH of string | URI of string | STR_START of string | STR_MID of string | STR_END | ISTR_START of string | ISTR_MID of string | ISTR_END of int | ID of string (* Tokens that stand for themselves *) | SELECT | QMARK | CONCAT | NOT | MERGE | ASSIGN | LT | LTE | GT | GTE | EQ | NEQ | AND | OR | IMPL | AQUOTE_OPEN | AQUOTE_CLOSE | LBRACE | RBRACE | LBRACK | RBRACK | PLUS | MINUS | TIMES | SLASH | LPAREN | RPAREN | COLON | SEMICOLON | COMMA | ELLIPSIS | AS (* Keywords *) | WITH | REC | LET | IN | INHERIT | IF | THEN | ELSE | ASSERT | ORDEF (* End of input *) | EOF