export interface OkResult { ok: true; index: number; value: T; expect: string; } export interface FailResult { ok: false; index: number; expect: string; } export declare type ParseResult = OkResult | FailResult; export declare type ParseFn = (input: string, index: number, makeOk: (index: number, value: U, expected?: string) => OkResult, makeFail: (index: number, expected: string) => FailResult) => ParseResult; export declare type Index = { offset: number; line: number; column: number; }; export declare type Mark = { start: Index; end: Index; value: T; }; export declare type Node = { start: Index; end: Index; name: U; value: T; }; export declare type Tree = { start: Index; end: Index; name: U; value: Node | Tree[] | (Tree | Node)[]; }; interface To { (a: (t: T) => A): A; (a: (t: T) => A, ab: (a: A) => B): B; (a: (t: T) => A, ab: (a: A) => B, bc: (b: B) => C): C; (a: (t: T) => A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D): D; (a: (t: T) => A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E): E; (a: (t: T) => A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F): F; } declare const isOk: (x: ParseResult) => x is OkResult; declare const isFail: (x: ParseResult) => x is FailResult; declare const offsetToPosition: (input: string, offset: number) => { offset: number; line: number; column: number; }; declare const makeOk: (index: number, value: T, expect?: string) => OkResult; declare const makeFail: (index: number, expect: string) => FailResult; declare const makeParser: (action: ParseFn) => Parser; declare type ErrorFormatter = (input: string, index: number, expected: string) => string; declare class Parser { private action; constructor(action: ParseFn); static formatter: ErrorFormatter; parse(input: string, index?: number): ParseResult; static setDefaultErrorFormatter(formatter: ErrorFormatter): void; tryParse(input: string, formatter?: ErrorFormatter): T; to: To; } declare const isParser: (x: unknown) => x is Parser; declare const string: (str: T) => Parser; declare const ok: (value: T) => Parser; declare const fail: (expected: string) => Parser; declare const regexp: (re: RegExp, group?: number) => Parser; export { Parser, string, makeOk, makeFail, makeParser, ok, fail, regexp, isParser, isFail, isOk, offsetToPosition, }; //# sourceMappingURL=parser.d.ts.map