UNPKG

lexer-state

Version:

Lightweight state machine library to define and manage state transition declaratively

53 lines (47 loc) 2.01 kB
import { ILexem } from './ILexem'; import { TokenType, TokenClassType } from './token'; export class GenericEvent implements ILexem { public readonly tokenClass: TokenClassType = 'GENERIC'; public readonly tokenKey: TokenType[TokenClassType] = 3; constructor(public readonly matchers: RegExp) {} } export class IntState implements ILexem { public readonly tokenClass: TokenClassType = 'INT'; public readonly tokenKey: TokenType[TokenClassType] = 3; constructor(public readonly matchers: RegExp) {} } export class FloatState implements ILexem { public readonly tokenClass: TokenClassType = 'FLOAT'; public readonly tokenKey: TokenType[TokenClassType] = 0; constructor(public readonly matchers?: RegExp) {} } export class SymbolState implements ILexem { public readonly tokenClass: TokenClassType = 'SYMBOL'; public readonly tokenKey: TokenType[TokenClassType] = 3; constructor(public readonly matchers: RegExp) {} } export class SemiState implements ILexem { public readonly tokenClass: TokenClassType = 'SEMI'; public readonly tokenKey: TokenType[TokenClassType] = 5; constructor(public readonly matchers: RegExp) {} } export class EpsilonState implements ILexem { public readonly tokenClass: TokenClassType = 'EPSILON'; public readonly tokenKey: TokenType[TokenClassType] = 0; constructor(public readonly matchers?: RegExp) {} } export class ParenState implements ILexem { public readonly tokenClass: TokenClassType = 'PAREN'; public readonly tokenKey: TokenType[TokenClassType] = 0; constructor(public readonly matchers: RegExp) {} } export class OperatorState implements ILexem { public readonly tokenClass: TokenClassType = 'OPERATOR'; public readonly tokenKey: TokenType[TokenClassType] = 0; constructor(public readonly matchers: RegExp) {} } export class EqlState implements ILexem { public readonly tokenClass: TokenClassType = 'EQL'; public readonly tokenKey: TokenType[TokenClassType] = 0; constructor(public readonly matchers: RegExp) {} }