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

24 lines (23 loc) 1.74 kB
import type { LogicalOperatorValues, ComparatorValues } from '../logic/constants'; import type { Position } from '../logic/types'; import type { ASTNode, BooleanExpression, ComparatorNode, ConditionExpression, Expression, GroupExpression, KeyNode, LogicalOperatorNode, NotExpression, QueryExpression, ValueNode } from './types'; export declare class ASTUtils { static createQuery(expression: Expression, position: Position): QueryExpression; static createBooleanExpression(operator: LogicalOperatorNode, left: Expression, right: Expression, position: Position): BooleanExpression; static createKey(value: string, position: Position): KeyNode; static createComparator(value: ComparatorValues, position: Position): ComparatorNode; static createOperator(value: LogicalOperatorValues, position: Position): LogicalOperatorNode; static createValue(value: string, position: Position): ValueNode; static createCondition(key: KeyNode, comparator: ComparatorNode, value: ValueNode, spacesAfterKey: number, spacesAfterComparator: number, spacesAfterValue: number, position: Position): ConditionExpression; static createGroup(expression: Expression, position: Position): GroupExpression; static createNotExpression(expression: Expression, position: Position): NotExpression; static createPosition(start: number, end: number): Position; /** * Merge multiple positions into a single position that spans all of them */ static mergePositions(...positions: Position[]): Position; /** * Traverse the AST and apply a callback to each node */ static traverseAST(node: Expression, parentNode: Expression | null, callback: (node: ASTNode, parentNode: ASTNode | null) => boolean): void; }