rulescribe
Version:
Typescript rule engine
25 lines (24 loc) • 958 B
TypeScript
export declare enum FunctionType {
BUILTIN = 0,
USER_DEFINED = 1,
CLASS_METHOD = 2,
UNDEFINED = 3
}
export type TokenType = 'NUMBER' | 'FLOAT' | 'STRING' | 'BOOLEAN' | 'IDENTIFIER' | 'PLUS' | 'MINUS' | 'MULTIPLY' | 'DIVIDE' | 'MODULO' | 'EQUALS' | 'NOT_EQUALS' | 'LESS_THAN' | 'GREATER_THAN' | 'LESS_THAN_OR_EQUAL' | 'GREATER_THAN_OR_EQUAL' | 'AND' | 'OR' | 'NOT' | 'LPAREN' | 'RPAREN' | 'COMMA' | 'ASSIGN' | 'RULE' | 'WHEN' | 'IF' | 'THEN' | 'ELSE' | 'END' | 'WHILE' | 'DO' | 'FOR' | 'FROM' | 'TO' | 'STEP' | 'CALL_FUNCTION' | 'FUNCTION' | 'RETURN' | 'NEWLINE' | 'EOF';
export interface Token {
type: TokenType;
value: string | number | boolean | null;
}
export type FunctionDefinition<T extends Token[] | Function> = {
parameters?: string[];
func: T;
thisArg?: any;
};
export type RuleDefenition = {
condition: Token[];
body: Token[];
};
export interface ILexer {
reset(): void;
getNextToken(): Token;
}