@abdullah2993/expression-parser
Version:
An expression evaluator written in typescript with the goal to support SQL like WHERE clauses.
47 lines (46 loc) • 1.69 kB
TypeScript
import { TokenType } from './token';
export declare type Expression = BinaryExpression | UnaryExpression | ValueExpression | FunctionCallExpression | IdentifierExpression | CaseExpression;
export interface Node {
readonly type: 'BinaryExpression' | 'UnaryExpression' | 'ValueExpression' | 'FunctionCallExpression' | 'IdentifierExpression' | 'CaseExpression';
}
export declare class BinaryExpression implements Node {
operator: TokenType;
left: Expression;
right: Expression;
constructor(operator: TokenType, left: Expression, right: Expression);
readonly type = "BinaryExpression";
}
export declare class UnaryExpression implements Node {
operator: TokenType;
operand: Expression;
constructor(operator: TokenType, operand: Expression);
readonly type = "UnaryExpression";
}
export declare class ValueExpression implements Node {
value: any;
constructor(value: any);
readonly type = "ValueExpression";
}
export declare class FunctionCallExpression implements Node {
name: string;
args: Expression[];
constructor(name: string, args: Expression[]);
readonly type = "FunctionCallExpression";
}
export declare class IdentifierExpression implements Node {
name: string;
constructor(name: string);
readonly type = "IdentifierExpression";
}
export declare class CaseExpression implements Node {
conditions: {
when: Expression;
then: Expression;
}[];
last?: Expression | undefined;
constructor(conditions: {
when: Expression;
then: Expression;
}[], last?: Expression | undefined);
readonly type = "CaseExpression";
}