/** * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal * @author Koya Sakuma ** * Adapted from Parsimmon (https://github.com/jneen/parsimmon) * Copyright (c) 2011-present J. Adkisson (http://jneen.net). **/ export declare class MonadicParser { _: MonadicParser.Action; constructor(_: MonadicParser.Action); parse(input: string): MonadicParser.ParseResult; tryParse(str: string): A; or(alternative: MonadicParser): MonadicParser; trim(parser: MonadicParser | string): MonadicParser; wrap(leftParser: MonadicParser | string, rightParser: MonadicParser | string): MonadicParser; thru(wrapper: (p: MonadicParser) => MonadicParser): MonadicParser; then(next: MonadicParser): MonadicParser; many(): MonadicParser; times(min: number, _max?: number): MonadicParser; result(res: B): MonadicParser; atMost(n: number): MonadicParser; atLeast(n: number): MonadicParser; map(f: (a: A) => B): MonadicParser; skip(next: MonadicParser): MonadicParser; mark(): MonadicParser>; node(name: string): MonadicParser>; sepBy(separator: MonadicParser): MonadicParser; sepBy1(separator: MonadicParser): MonadicParser; lookahead(x: MonadicParser): MonadicParser; notFollowedBy(x: MonadicParser): MonadicParser; desc(expected: string): MonadicParser; fallback(result: B): MonadicParser; ap(other: MonadicParser<(x: A) => B>): MonadicParser; chain(f: (a: A) => MonadicParser): MonadicParser; } export declare namespace MonadicParser { type Action = (input: string, i: number) => MonadicParser.Result; type ParseResult = ParseSuccess | ParseFailure; interface Index { /** zero-based character offset */ offset: number; /** one-based line offset */ line: number; /** one-based column offset */ column: number; } interface ParseSuccess { success: true; value: T; } interface ParseFailure { success: false; index: Index; expected: string[]; } interface Mark { start: Index; end: Index; value: T; } interface Node extends Mark { name: string; } interface Success { status: true; value: T; index: number; } interface Failure { status: false; furthest: number; expected: string[]; } type Result = Success | Failure; function seqMap(a: MonadicParser, b: MonadicParser, c: any): any; function createLanguage(parsers: any): any; function seq(a: MonadicParser): MonadicParser<[A]>; function seq(a: MonadicParser, b: MonadicParser): MonadicParser<[A, B]>; function seq(a: MonadicParser, b: MonadicParser, c: MonadicParser): MonadicParser<[A, B, C]>; function seq(a: MonadicParser, b: MonadicParser, c: MonadicParser, d: MonadicParser): MonadicParser<[A, B, C, D]>; function seq(a: MonadicParser, b: MonadicParser, c: MonadicParser, d: MonadicParser, e: MonadicParser): MonadicParser<[A, B, C, D, E]>; function seq(...parsers: MonadicParser[]): MonadicParser; function alt(a: MonadicParser): MonadicParser; function alt(a: MonadicParser, b: MonadicParser): MonadicParser; function alt(a: MonadicParser, b: MonadicParser, c: MonadicParser): MonadicParser; function alt(a: MonadicParser, b: MonadicParser, c: MonadicParser, d: MonadicParser): MonadicParser; function alt(a: MonadicParser, b: MonadicParser, c: MonadicParser, d: MonadicParser, e: MonadicParser): MonadicParser; function alt(...parsers: MonadicParser[]): MonadicParser; function sepBy(parser: MonadicParser, separator: MonadicParser): MonadicParser; function sepBy1(parser: MonadicParser, separator: MonadicParser): MonadicParser; function string(str: string): MonadicParser; function regexp(re: RegExp, group?: number): MonadicParser; function succeed(value: A): MonadicParser; function fail(expected: string): MonadicParser; function lookahead(x: MonadicParser | string | RegExp): MonadicParser; function notFollowedBy(parser: MonadicParser): MonadicParser; function test(predicate: (char: string) => boolean): MonadicParser; function oneOf(str: string): MonadicParser; function noneOf(str: string): MonadicParser; function range(begin: string, end: string): MonadicParser; function takeWhile(predicate: (ch: string) => boolean): MonadicParser; function lazy(f: () => MonadicParser): MonadicParser; function empty(): MonadicParser; const index: MonadicParser; const anyChar: MonadicParser; const all: MonadicParser; const eof: MonadicParser; const digit: MonadicParser; const digits: MonadicParser; const letter: MonadicParser; const letters: MonadicParser; const optWhitespace: MonadicParser; const whitespace: MonadicParser; const cr: MonadicParser; const lf: MonadicParser; const crlf: MonadicParser; const newline: MonadicParser; const end: MonadicParser; function of(value: A): MonadicParser; function regex(re: RegExp): MonadicParser; }