import { Blank, BooleanLiteral, Empty, Expression, Identifier, Nil, IntegerLiteral, FloatLiteral, RangeLiteral, StringLiteral } from "../expression"; import { Token } from "../token"; import { ExpressionTokenStream } from "./tokens"; export type Tokenizer = (expression: string, startIndex?: number) => Generator; export declare const IDENTIFIER_PATTERN = "[a-zA-Z_][\\w\\-]*\\??"; export declare const ASSIGN_IDENTIFIER_PATTERN = "[0-9a-zA-Z_][\\w\\-]*"; export declare const IDENT_STRING_PATTERN: string; export declare const IDENT_INDEX_PATTERN = "\\[\\s*(?\\-?\\d+)\\s*]"; export declare const STRING_PATTERN: string; export declare function parseBoolean(stream: ExpressionTokenStream): BooleanLiteral; export declare function parseNil(): Nil; export declare function parseEmpty(): Empty; export declare function parseBlank(): Blank; export declare function parseStringLiteral(stream: ExpressionTokenStream): StringLiteral; export declare function parseIntegerLiteral(stream: ExpressionTokenStream): IntegerLiteral; export declare function parseFloatLiteral(stream: ExpressionTokenStream): FloatLiteral; export declare const IDENT_TOKENS: Set; export declare function parseIdentifier(stream: ExpressionTokenStream): Identifier; /** * * @param stream - * @returns */ export declare function parseStringOrIdentifier(stream: ExpressionTokenStream): StringLiteral | Identifier; /** * * @param stream - * @returns */ export declare function parseUnchainedIdentifier(stream: ExpressionTokenStream): Identifier; /** * * @param parseObj - * @returns */ export declare function makeParseRange(parseObj: (stream: ExpressionTokenStream) => Expression, expectToken?: string): (stream: ExpressionTokenStream) => RangeLiteral;