README

#ParserC

ParserC is a parser combinator library for Moonbit.

#Usage

Copy from https://github.com/illusory0x0/parserc.mbt

#
Parser

pub struct Parser[Token, Value]((Seq[Token]) -> (Value, Seq[Token])?)

A parser combinator

#
Parser::and_then

fn[Token, A, B] Parser::and_then(self : Parser[Token, A], other : Parser[Token, B]) -> Parser[Token, (A, B)]

#
Parser::apply

fn[Token, A, B] Parser::apply(self : Parser[Token, A], f : Parser[Token, (A) -> B]) -> Parser[Token, B]

#
Parser::between

fn[Token, A, B] Parser::between(self : Parser[Token, A], around : Parser[Token, B]) -> Parser[Token, A]

#
Parser::from_ref

fn[Token, A] Parser::from_ref(self :
Ref
[Parser[Token, A]]) -> Parser[Token, A]

#
Parser::map

fn[Token, A, B] Parser::map(self : Parser[Token, A], f : (A) -> B) -> Parser[Token, B]

#
Parser::new

fn[Token, Value] Parser::new(f : (Seq[Token]) -> (Value, Seq[Token])?) -> Parser[Token, Value]

#
Parser::omit_first

fn[Token, A, B] Parser::omit_first(parser : Parser[Token, (A, B)]) -> Parser[Token, B]

#
Parser::omit_second

fn[Token, A, B] Parser::omit_second(parser : Parser[Token, (A, B)]) -> Parser[Token, A]

#
Parser::optional

fn[Token, A] Parser::optional(self : Parser[Token, A]) -> Parser[Token, A?]

#
Parser::or_else

fn[Token, A] Parser::or_else(self : Parser[Token, A], other : Parser[Token, A]) -> Parser[Token, A]

#
Parser::or_others

fn[Token, A] Parser::or_others(self : Parser[Token, A], others : ArrayView[Parser[Token, A]]) -> Parser[Token, A]

#
Parser::parse

#deprecated("use `Parser::run` instead")
fn[Token, Value] Parser::parse(self : Parser[Token, Value], sequence : Seq[Token]) -> (Value, Seq[Token])?

#
Parser::repeat

fn[Token, A] Parser::repeat(self : Parser[Token, A]) -> Parser[Token, Array[A]]

#
Parser::repeat_0_to_n

fn[Token, A] Parser::repeat_0_to_n(self : Parser[Token, A], n : Int) -> Parser[Token, Array[A]]

#
Parser::repeat_0_to_n_with_sep

fn[Token, A, B] Parser::repeat_0_to_n_with_sep(self : Parser[Token, A], n : Int, separator : Parser[Token, B]) -> Parser[Token, Array[A]]

#
Parser::repeat_n

fn[Token, A] Parser::repeat_n(self : Parser[Token, A], n : Int) -> Parser[Token, Array[A]]

#
Parser::repeat_n_with_sep

fn[Token, A, B] Parser::repeat_n_with_sep(self : Parser[Token, A], n : Int, sep : Parser[Token, B]) -> Parser[Token, Array[A]]

#
Parser::repeat_with_sep

fn[Token, A, B] Parser::repeat_with_sep(self : Parser[Token, A], separator : Parser[Token, B]) -> Parser[Token, Array[A]]

#
Parser::run

fn[Token, Value] Parser::run(self : Parser[Token, Value], sequence : Seq[Token]) -> (Value, Seq[Token])?

Parses a sequence of tokens

If the parsing succeeds, Some(result, rest) is returned Otherwise, None is returned.

#
Seq

pub struct Seq[T](ArrayView[T])

A possibility infinite lazy list
impl Show for Seq[T]
impl Debug for Seq[T]

#
Seq::default

fn[T] Seq::default() -> Seq[T]

#
Seq::from_array

fn[T] Seq::from_array(array : ArrayView[T]) -> Seq[T]

Construct a sequence from array

#
Seq::from_list

fn[T] Seq::from_list(list :
List
[T]) -> Seq[T]

Construct a sequence from list

#
Seq::from_string

fn Seq::from_string(str : String) -> Seq[Char]

Construct a sequence from string

#
Seq::is_empty

fn[T] Seq::is_empty(self : Seq[T]) -> Bool

Checks if the sequence is empty

#
Seq::length

fn[T] Seq::length(self : Seq[T]) -> Int

#
Seq::map

fn[T1, T2] Seq::map(seq : Seq[T1], f : (T1) -> T2) -> Seq[T2]

Map the sequence

If the sequence is x0, x1, ... then seq.map(f) is f(x0), f(x1), ...

#
Seq::new

fn[T] Seq::new(view : ArrayView[T]) -> Seq[T]

#
Seq::peek_char

fn Seq::peek_char(self : Seq[Char], n : Int) -> String?

Look forward n characters

#
Seq::to_array

fn[T] Seq::to_array(self : Seq[T]) -> Array[T]

#
Seq::to_iter

fn[T] Seq::to_iter(self : Seq[T]) -> Iter[T]

#
Seq::uncons

fn[T] Seq::uncons(self : Seq[T]) -> (T, Seq[T])?

Unwrap a sequence

If self is empty, then seq.uncons() is None Else is Some(hd, tl) where hd is the head of the sequence and tl is the tail

#
lift2

fn[Token, A, B, C] lift2(f : (A, B) -> C) -> ((Parser[Token, A], Parser[Token, B]) -> Parser[Token, C])

#
one_of

fn[A : Show] one_of(array : Array[A]) -> Parser[Char, A]

#
pchar

fn pchar(char : Char) -> Parser[Char, Char]

#
pchar_such_that

fn pchar_such_that(predicate : (Char) -> Bool) -> Parser[Char, Char]

#
pconst

fn[Token, A] pconst(a : A) -> Parser[Token, A]

Parser that always succeed with given value

#
pdigit

let pdigit : Parser[Char, Int]

parse digit

%x30-39

#
pfail

fn[Token, A] pfail() -> Parser[Token, A]

Parser that always fail

#
pint

let pint : Parser[Char, Int]

parser for integer

[ "-" ] ( %x30 / (%x31-39) *(%x30-39)

#
pint64

let pint64 : Parser[Char, Int64]

parser for integer 64 bits

[ "-" ] ( %x30 / (%x31-39) *(%x30-39)

#
pstring

fn pstring(string : String) -> Parser[Char, String]

parser that tries to match the given string

#
pvalue

fn[Token, Value] pvalue(predicate : (Token) -> Value?) -> Parser[Token, Value]

Parses a token with predicate

The predicate should return Some(value) if the tokens fulfills or None otherwise

#
sequence

fn[Token, A] sequence(parsers : Array[Parser[Token, A]]) -> Parser[Token, Array[A]]

Powered by MoonBit

Site sourceReport issuePackagesBuild queueSkillsStatistics

© 2026 mooncakes.io