UNPKG

create-query-language

Version:

A flexible TypeScript library for parsing and building query languages with support for lexical analysis, AST generation, and token stream processing

52 lines (51 loc) 1.58 kB
import type { LogicalOperatorValues, ComparatorValues } from '../logic/constants'; import type { Position } from '../logic/types'; import { AstTypes } from './logic/constants'; export interface ASTNode { type: string; position: Position; } export interface QueryExpression extends ASTNode { type: typeof AstTypes.Query; expression: Expression; } export interface BooleanExpression extends ASTNode { type: typeof AstTypes.Boolean; operator: LogicalOperatorNode; left: Expression; right: Expression; } export interface KeyNode extends ASTNode { type: typeof AstTypes.Key; value: string; } export interface ComparatorNode extends ASTNode { type: typeof AstTypes.Comparator; value: ComparatorValues; } export interface LogicalOperatorNode extends ASTNode { type: typeof AstTypes.LogicalOperator; value: LogicalOperatorValues; } export interface ValueNode extends ASTNode { type: typeof AstTypes.Value; value: string; } export interface ConditionExpression extends ASTNode { type: typeof AstTypes.Condition; key: KeyNode; comparator: ComparatorNode; value: ValueNode; spacesAfterKey: number; spacesAfterComparator: number; spacesAfterValue: number; } export interface GroupExpression extends ASTNode { type: typeof AstTypes.Group; expression: Expression; } export interface NotExpression extends ASTNode { type: typeof AstTypes.Not; expression: Expression; } export type Expression = QueryExpression | BooleanExpression | ConditionExpression | GroupExpression | NotExpression;