Monadic parser combinators
No dependencies
Published modules that use this version
typealias @moonbitlang/core/list.TT as List
pub(all) struct Input { chars : @moonbitlang/core/string.StringViewStringView row : Int col : Int}
impl Show for Input
fn output(Input, Logger) -> Unit
fn Input::new(chars : @moonbitlang/core/string.StringViewStringView) -> Input
pub(all) enum ParseError { ParseError(SourcePos, @moonbitlang/core/list.TT[String])}
impl Show for ParseError
fn output(self : ParseError, logger : Logger) -> Unit
fn ParseError::cons(self : ParseError, x : String) -> ParseError
fn ParseError::expect(row~ : Int, col~ : Int, msg : String) -> ParseError
fn ParseError::source_pos(self : ParseError) -> SourcePos
pub(all) type Parser[A] (Input) -> (A, Input) raise ParseError
impl BitOr for Parser[A]
fn[A] lor(x : Parser[A], y : Parser[A]) -> Parser[A]
fn[A, B, C] Parser::between(self : Parser[A], open~ : Parser[B], close~ : Parser[C]) -> Parser[A]
fn[A, B] Parser::bind(x : Parser[A], f : (A) -> Parser[B]) -> Parser[B]
fn Parser::char(ch : Char) -> Parser[Char]
fn[A] Parser::curly_bracket(self : Parser[A]) -> Parser[A]
fn[A, B] Parser::discard_left(x : Parser[A], y : Parser[B]) -> Parser[B]
fn[A, B] Parser::discard_right(x : Parser[A], y : Parser[B]) -> Parser[A]
fn[A] Parser::discard_spaces(self : Parser[A]) -> Parser[A]
fn[A] Parser::eof(x : A) -> Parser[A]
fn[A, B] Parser::foldl(x : Parser[A], z : Parser[B], f : Parser[(B, A) -> B]) -> Parser[B]
fn[A] Parser::foldl1(x : Parser[A], f : Parser[(A, A) -> A]) -> Parser[A]
fn[A, B] Parser::foldr(x : Parser[A], z : Parser[B], f : Parser[(B, A) -> B]) -> Parser[B]
fn[A] Parser::foldr1(x : Parser[A], f : Parser[(A, A) -> A]) -> Parser[A]
fn[A] Parser::inner(self : Parser[A]) -> ((Input) -> (A, Input) raise ParseError)
fn[A] Parser::label(x : Parser[A], msg : String) -> Parser[A]
fn[A] Parser::many(self : Parser[A]) -> Parser[Array[A]]
fn[A] Parser::many_each(x : Parser[A], f : (A) -> Unit) -> Parser[Unit]
fn[A, B] Parser::map(self : Parser[A], f : (A) -> B) -> Parser[B]
fn[A, B] Parser::map_srcpos(self : Parser[A], f : (SourcePos, A) -> B) -> Parser[B]
fn Parser::none_of(xs : String) -> Parser[Char]
fn Parser::one_of(xs : String) -> Parser[Char]
fn[A] Parser::or(x : Parser[A], y : Parser[A]) -> Parser[A]
fn[A] Parser::pure(x : A) -> Parser[A]
fn[A] Parser::round_bracket(self : Parser[A]) -> Parser[A]
fn[A] Parser::run(self : Parser[A], input : Input) -> A raise ParseError
fn Parser::satisfy(f : (Char) -> Bool, label~ : String) -> Parser[Char]
fn[A] Parser::square_bracket(self : Parser[A]) -> Parser[A]
fn Parser::string(str : String) -> Parser[String]
pub(all) struct SourcePos { row : Int col : Int}
impl Compare for SourcePos
fn compare(SourcePos, SourcePos) -> Int
impl Eq for SourcePos
fn op_equal(SourcePos, SourcePos) -> Bool
impl Show for SourcePos
fn output(SourcePos, Logger) -> Unit
let alphabetic : Parser[Char]
let any : Parser[Char]
fn[A, B, C] between(self : Parser[A], open~ : Parser[B], close~ : Parser[C]) -> Parser[A]
fn[A, B] bind(x : Parser[A], f : (A) -> Parser[B]) -> Parser[B]
fn char(ch : Char) -> Parser[Char]
fn[A] curly_bracket(self : Parser[A]) -> Parser[A]
let digit : Parser[Char]
fn[A, B] discard_left(x : Parser[A], y : Parser[B]) -> Parser[B]
fn[A, B] discard_right(x : Parser[A], y : Parser[B]) -> Parser[A]
fn[A] discard_spaces(self : Parser[A]) -> Parser[A]
fn[A] eof(x : A) -> Parser[A]
fn expect(row~ : Int, col~ : Int, msg : String) -> ParseError
fn[A, B] foldl(x : Parser[A], z : Parser[B], f : Parser[(B, A) -> B]) -> Parser[B]
fn[A] foldl1(x : Parser[A], f : Parser[(A, A) -> A]) -> Parser[A]
fn[A, B] foldr(x : Parser[A], z : Parser[B], f : Parser[(B, A) -> B]) -> Parser[B]
fn[A] foldr1(x : Parser[A], f : Parser[(A, A) -> A]) -> Parser[A]
fn[A] label(x : Parser[A], msg : String) -> Parser[A]
fn[A] many(self : Parser[A]) -> Parser[Array[A]]
fn[A] many_each(x : Parser[A], f : (A) -> Unit) -> Parser[Unit]
fn[A, B] map(self : Parser[A], f : (A) -> B) -> Parser[B]
fn[A, B] map_srcpos(self : Parser[A], f : (SourcePos, A) -> B) -> Parser[B]
fn none_of(xs : String) -> Parser[Char]
fn one_of(xs : String) -> Parser[Char]
fn[A] or(x : Parser[A], y : Parser[A]) -> Parser[A]
fn[A] pure(x : A) -> Parser[A]
fn[A] round_bracket(self : Parser[A]) -> Parser[A]
fn[A] run(self : Parser[A], input : Input) -> A raise ParseError
fn satisfy(f : (Char) -> Bool, label~ : String) -> Parser[Char]
let space : Parser[Char]
let space1 : Parser[Char]
let spaces : Parser[Char]
fn[A] square_bracket(self : Parser[A]) -> Parser[A]
fn string(str : String) -> Parser[String]
Install
Powered by MoonBit
© 2026 mooncakes.io