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.78 kB
TypeScript
import type { BooleanOperatorValues, ComparatorValues } from '../common/constants';
import type { Position } from '../common/types';
import type { ASTNode, BooleanExpression, ComparatorNode, ConditionExpression, Expression, GroupExpression, KeyNode, LogicalOperatorNode, NotExpression, QueryExpression, ValueNode } from './types';
export declare class ASTBuilder {
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: BooleanOperatorValues, 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, line?: number, column?: 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;
}