export interface Query { property?: string; excludeProperty: boolean; value: string; excludeValue: boolean; } export declare namespace Lex { } export interface TokenDefinition { tType: string; pattern: RegExp; } export interface Token { tType: string; idx: number; value: string; } export declare function Lexer(query: string): Generator; export declare namespace Parse { type Expression = Expression.VALUE | Expression.MATCH | Expression.AND | Expression.OR | Expression.EXCLUDE; namespace Expression { interface VALUE { eType: 'VALUE'; value: any; } type MATCH = MATCH.FULL_MATCH | MATCH.PROPERTY_MATCH | MATCH.VALUE_MATCH | MATCH.ALL_MATCH; namespace MATCH { interface BASE_MATCH { eType: 'MATCH'; } interface FULL_MATCH extends BASE_MATCH { mType: 'FULL'; property: VALUE | EXCLUDE; value: VALUE | EXCLUDE; } interface PROPERTY_MATCH extends BASE_MATCH { mType: 'PROPERTY'; property: VALUE | EXCLUDE; } interface VALUE_MATCH extends BASE_MATCH { mType: 'VALUE'; value: VALUE | EXCLUDE; } interface ALL_MATCH extends BASE_MATCH { mType: 'ALL'; } } interface AND { eType: 'AND'; lhs?: Expression; rhs?: Expression; } interface OR { eType: 'OR'; lhs?: Expression; rhs?: Expression; } interface EXCLUDE { eType: 'EXCLUDE'; expr: VALUE; } } } export declare class Parser { lexer: Generator | undefined; stack: Parse.Expression[]; constructor(); parse(query: string): Parse.Expression[]; nextExpression(): Parse.Expression | undefined; parseExpression(token: Token): Parse.Expression | undefined; } //# sourceMappingURL=query.d.ts.map