UNPKG

fruitsconfits

Version:

FruitsConfits - A well typed and sugared parser combinator framework for TypeScript/JavaScript.

35 lines (34 loc) 1.83 kB
export interface ParserInputWithCtx<T extends ArrayLike<T[number]>, C> { src: T; start: number; end: number; context: C; templateArgs?: any[]; templateArgsPos?: number[]; } export declare type ParserInput<T extends ArrayLike<T[number]>> = ParserInputWithCtx<T, undefined>; export declare type StringParserInputWithCtx<C> = ParserInputWithCtx<string, C>; export declare type StringParserInput = StringParserInputWithCtx<undefined>; export declare class ParseError<T extends ArrayLike<T[number]>, C, R> extends Error { result: ParserFnFailedResult<T, C, R>; constructor(result: ParserFnFailedResult<T, C, R>); } export declare function parserInput<T extends ArrayLike<T[number]>>(src: T): ParserInputWithCtx<T, undefined>; export declare function parserInput<T extends ArrayLike<T[number]>, C>(src: T, context: C): ParserInputWithCtx<T, C>; export declare function templateStringsParserInput<C>(strings: TemplateStringsArray, values: any[], context?: C): ParserInputWithCtx<string, C>; export declare type ParserFnSucceededResult<T extends ArrayLike<T[number]>, C, R> = { succeeded: true; next: ParserInputWithCtx<T, C>; tokens: R[]; }; export declare type ParserFnFailedResult<T extends ArrayLike<T[number]>, C, R> = { succeeded: false; error: boolean; src: T; pos: number; message: string; }; export declare type ParserFnWithCtx<T extends ArrayLike<T[number]>, C, R> = (input: ParserInputWithCtx<T, C>) => ParserFnSucceededResult<T, C, R> | ParserFnFailedResult<T, C, R>; export declare type ParserFn<T extends ArrayLike<T[number]>, R> = ParserFnWithCtx<T, undefined, R>; export declare type StringParserFnWithCtx<C, R> = ParserFnWithCtx<string, C, R>; export declare type StringParserFn<R> = StringParserFnWithCtx<undefined, R>;