pub(open) trait CanMerge {
fn merge(Self, other : Self) -> Self
}pub(open) trait Commit {
fn is_committed(Self) -> Bool
fn mark_committed(Self) -> Self
fn clear_commit(Self) -> Self
fn[I, T] reject_if_committed(Self, value : T, rest : I) -> Result[(T, I), Self]
}pub(open) trait Cursor {
fn cursor(Self) -> Int
fn position(Self) -> Position
fn is_at_eof(Self) -> Bool
fn same_cursor(Self, other : Self) -> Bool = _
}pub(open) trait ParseFailure : Commit + CanMerge + Positioned {
fn[I : Cursor] signal(input : I, expected : String) -> Self
fn[I : Cursor] message(input : I, msg : String) -> Self
}pub(open) trait Positioned {
fn error_offset(Self) -> Int
fn error_line(Self) -> Int
fn error_column(Self) -> Int
}impl CanMerge for ParseErrorimpl Commit for ParseErrorimpl ParseFailure for ParseErrorimpl Positioned for ParseErrorfn[I, T] ParseError::reject_if_committed(self : ParseError, value : T, rest : I) -> Result[(T, I), ParseError]pub(all) struct ParserRaw[I, T, E] {
parse_fn : (I) -> Result[(T, I), E]
}fn[I : Cursor, T, E : ParseFailure + Commit + CanMerge + Positioned] ParserRaw::label(self : ParserRaw[I, T, E], expected : String) -> ParserRaw[I, T, E]fn[I : Cursor, T, E : Commit + ParseFailure + CanMerge + Positioned] ParserRaw::many(self : ParserRaw[I, T, E]) -> ParserRaw[I, Array[T], E]fn[I : Cursor, T, U, E : Commit + ParseFailure + CanMerge + Positioned] ParserRaw::many_until(self : ParserRaw[I, T, E], terminator : ParserRaw[I, U, E]) -> ParserRaw[I, Array[T], E]fn[I : Cursor, T, E : ParseFailure + Commit + CanMerge + Positioned] ParserRaw::not_followed_by(self : ParserRaw[I, T, E], label : String) -> ParserRaw[I, Unit, E]fn[I : Cursor, T, E : ParseFailure + Commit + CanMerge + Positioned] ParserRaw::parse(self : ParserRaw[I, T, E], input : I) -> Result[T, E]fn[I : Cursor, T, S, E : Commit + CanMerge + ParseFailure + Positioned] ParserRaw::sep_by(self : ParserRaw[I, T, E], sep : ParserRaw[I, S, E]) -> ParserRaw[I, Array[T], E]fn[I : Cursor, T, S, E : Commit + ParseFailure + CanMerge + Positioned] ParserRaw::sep_by1(self : ParserRaw[I, T, E], separator : ParserRaw[I, S, E]) -> ParserRaw[I, Array[T], E]fn[I : Cursor, T, E : Commit + ParseFailure + CanMerge + Positioned] ParserRaw::some(self : ParserRaw[I, T, E]) -> ParserRaw[I, Array[T], E]fn[I : Cursor, T, E : Commit + CanMerge + ParseFailure + Positioned] choice(parsers : Array[ParserRaw[I, T, E]]) -> ParserRaw[I, T, E]fn[I : Cursor, T, E : ParseFailure + Commit + CanMerge + Positioned] fail(expected : String) -> ParserRaw[I, T, E]fn[E : Commit + ParseFailure + CanMerge + Positioned] many_chars(parser : ParserRaw[Input, Char, E]) -> ParserRaw[Input, String, E]fn[E : Commit + ParseFailure + CanMerge + Positioned] many_chars1(parser : ParserRaw[Input, Char, E]) -> ParserRaw[Input, String, E]fn[I : Cursor, T] satisfy_input(next : (I) -> (T, I)?, name : String, predicate : (T) -> Bool) -> ParserRaw[I, T, ParseError]