1
0
mirror of https://github.com/pdemian/human2regex.git synced 2025-05-17 04:50:09 -07:00
human2regex/src/tokens.ts
Patrick Demian 88c5b203fd Fixed tokenizer
Just 1 more commit and I think I'll be done with it
2020-10-13 05:04:44 -04:00

79 lines
1.7 KiB
TypeScript

export enum TokenType {
END_OF_STATEMENT,
INDENT,
BETWEEN,
QUOTE,
NUMBER,
PARTIAL_KEYWORD,
KEYWORD_BETWEEN,
KEYWORD_OPTIONAL,
KEYWORD_MATCH,
KEYWORD_THEN,
KEYWORD_AND,
KEYWORD_OR,
KEYWORD_ANY,
KEYWORD_OF,
KEYWODE_WORD_SPECIFIER,
KEYWORD_DIGIT_SPECIFIER,
KEYWORD_CHAR_SPECIFIER,
KEYWORD_WHITESPACE_SPECIFIER,
KEYWORD_NUMBER_SPECIFIER,
KEYWORD_MULTIPLE,
KEYWORD_AS,
KEYWORD_IF,
KEYWORD_STARTS,
KEYWORD_WITH,
KEYWORD_ENDS,
KEYWORD_ELSE,
KEYWORD_UNLESS,
KEYWORD_WHILE,
KEYWORD_MORE,
KEYWORD_USING,
KEYWORD_GLOBAL,
KEYWORD_MULTILINE,
KEYWORD_EXACT,
KEYWORD_MATCHING,
KEYWORD_NOT,
KEYWORD_TAB,
KEYWORD_LINEFEED,
KEYWORD_CARRIAGE_RETURN,
KEYWORD_GROUP,
KEYWORD_BY,
KEYWORD_ARTICLE,
KEYWORD_EXACTLY,
KEYWORD_INCLUSIVE,
KEYWORD_EXCLUSIVE,
KEYWORD_FROM,
KEYWORD_TO,
KEYWORD_CREATE,
KEYWORD_CALLED,
KEYWORD_REPEAT,
KEYWORD_NEWLINE
}
export class TokenError extends Error {
constructor(message: string, public line: number, public position: number) {
super(message);
}
public to_string(): string {
return `${this.line}:${this.position} ${this.message}`;
}
}
export class Token {
/* TODO: end line and position? */
constructor(public type: TokenType, public line: number, public position: number, public token_string?: string) {
/* nothing required */
}
public to_string(): string {
let str = `${this.line}:${this.position} ${TokenType[this.type]}`;
if (this.token_string) {
str += ` "${this.token_string}"`;
}
return str;
}
}