/*! * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ export declare enum SyntaxKind { Unknown = 0, EndOfInputToken = 1, NumberLiteral = 2, StringLiteral = 3, TrueKeyword = 4, FalseKeyword = 5, Identifier = 6, AsteriskToken = 7, CaretToken = 8, PlusToken = 9, MinusToken = 10, DotToken = 11, LessThanToken = 12, GreaterThanToken = 13, LessThanEqualsToken = 14, GreaterThanEqualsToken = 15, EqualsToken = 16, NotEqualsToken = 17, OpenParenToken = 18, CloseParenToken = 19, CommaToken = 20, SlashToken = 21 } declare const enum TokenFlags { None = 0, Unterminated = 1, Quoted = 2 } export interface ParserErrorHandler { errors: () => E; reset: () => void; onError: (message: string, start: number, end: number) => void; } export interface AlgebraContext { text: string; onError: (message: string, start: number, end: number) => void; } export interface ExpAlgebra { lit: (value: boolean | number | string, start: number, end: number, ctx: AlgebraContext) => R; ident: (id: string, kind: TokenFlags, fieldAccess: boolean, start: number, end: number, ctx: AlgebraContext) => R; paren: (expr: R, start: number, end: number, ctx: AlgebraContext) => R; app: (head: R, args: R[], start: number, end: number, ctx: AlgebraContext) => R; dot: (left: R, right: R, start: number, end: number, ctx: AlgebraContext) => R; binOp: (op: BinaryOperatorToken, left: R, right: R, start: number, end: number, ctx: AlgebraContext) => R; unaryOp: (op: UnaryOperatorToken, expr: R, start: number, end: number, ctx: AlgebraContext) => R; missing: (position: number, ctx: AlgebraContext) => R; sequence: (expressions: R[], start: number, end: number, ctx: AlgebraContext) => R; } export declare type Diagnostic = [string, number, number]; export interface Parser { (input: string): [E, R]; } export declare type BinaryOperatorToken = SyntaxKind.EqualsToken | SyntaxKind.LessThanToken | SyntaxKind.GreaterThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.NotEqualsToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.AsteriskToken | SyntaxKind.SlashToken | SyntaxKind.CaretToken; export declare type UnaryOperatorToken = SyntaxKind.PlusToken | SyntaxKind.MinusToken; export declare const createDiagnosticErrorHandler: () => ParserErrorHandler; export declare const createBooleanErrorHandler: () => ParserErrorHandler; export declare const createParser: (algebra: ExpAlgebra, handler: ParserErrorHandler) => (input: string) => [E, R]; export {}; //# sourceMappingURL=parser.d.ts.map