Skip to main content

ParserExt

Trait ParserExt 

Source
pub trait ParserExt<I: Input>: Parser<I> + Sized {
Show 18 methods // Provided methods fn map<F, O2>(self, f: F) -> Map<Self, F> where F: FnMut(Self::Output) -> O2 { ... } fn zip<P2>(self, rhs: P2) -> Zip<Self, P2> where P2: Parser<I, Error = Self::Error> { ... } fn zip_left<P2>(self, rhs: P2) -> ZipLeft<Self, P2> where P2: Parser<I, Error = Self::Error> { ... } fn zip_right<P2>(self, rhs: P2) -> ZipRight<Self, P2> where P2: Parser<I, Error = Self::Error> { ... } fn or<P2>(self, rhs: P2) -> Or<Self, P2> where Self::Error: MergeError, P2: Parser<I, Output = Self::Output, Error = Self::Error> { ... } fn attempt(self) -> Attempt<Self> { ... } fn cut(self) -> Cut<Self> { ... } fn optional(self) -> Optional<Self> { ... } fn many0(self) -> Many<Self> { ... } fn many1(self) -> Many1<Self> { ... } fn context(self, label: &'static str) -> Context<Self> where Self::Error: ContextError { ... } fn sep_by0<S>(self, sep: S) -> SepBy0<Self, S> where S: Parser<I, Error = Self::Error> { ... } fn sep_by1<S>(self, sep: S) -> SepBy1<Self, S> where S: Parser<I, Error = Self::Error> { ... } fn chainl1<Op, F>(self, op: Op) -> ChainL1<Self, Op> where Op: Parser<I, Output = F, Error = Self::Error>, F: FnMut(Self::Output, Self::Output) -> Self::Output { ... } fn chainr1<Op, F>(self, op: Op) -> ChainR1<Self, Op> where Op: Parser<I, Output = F, Error = Self::Error>, F: FnMut(Self::Output, Self::Output) -> Self::Output { ... } fn map_res<F, O2, E2>(self, f: F, label: &'static str) -> MapRes<Self, F> where Self: Parser<I, Error = ParseError>, F: FnMut(Self::Output) -> Result<O2, E2> { ... } fn flat_map<F, P2>(self, f: F) -> FlatMap<Self, F> where P2: Parser<I, Error = Self::Error>, F: FnMut(Self::Output) -> P2 { ... } fn and_then<F, P2>(self, f: F) -> FlatMap<Self, F> where P2: Parser<I, Error = Self::Error>, F: FnMut(Self::Output) -> P2 { ... }
}

Provided Methods§

Source

fn map<F, O2>(self, f: F) -> Map<Self, F>
where F: FnMut(Self::Output) -> O2,

Source

fn zip<P2>(self, rhs: P2) -> Zip<Self, P2>
where P2: Parser<I, Error = Self::Error>,

Source

fn zip_left<P2>(self, rhs: P2) -> ZipLeft<Self, P2>
where P2: Parser<I, Error = Self::Error>,

両方実行し、左(self)の値だけを返す(= terminated)。

Source

fn zip_right<P2>(self, rhs: P2) -> ZipRight<Self, P2>
where P2: Parser<I, Error = Self::Error>,

両方実行し、右(rhs)の値だけを返す(= preceded)。

Source

fn or<P2>(self, rhs: P2) -> Or<Self, P2>
where Self::Error: MergeError, P2: Parser<I, Output = Self::Output, Error = Self::Error>,

Source

fn attempt(self) -> Attempt<Self>

Source

fn cut(self) -> Cut<Self>

Source

fn optional(self) -> Optional<Self>

Source

fn many0(self) -> Many<Self>

Source

fn many1(self) -> Many1<Self>

Source

fn context(self, label: &'static str) -> Context<Self>
where Self::Error: ContextError,

エラーにコンテキストラベルを付与する。

Source

fn sep_by0<S>(self, sep: S) -> SepBy0<Self, S>
where S: Parser<I, Error = Self::Error>,

区切り付き 0 個以上の繰り返し。

Source

fn sep_by1<S>(self, sep: S) -> SepBy1<Self, S>
where S: Parser<I, Error = Self::Error>,

区切り付き 1 個以上の繰り返し。

Source

fn chainl1<Op, F>(self, op: Op) -> ChainL1<Self, Op>
where Op: Parser<I, Output = F, Error = Self::Error>, F: FnMut(Self::Output, Self::Output) -> Self::Output,

左結合の二項演算子チェーン。operand (op operand)* を左から畳む。

Source

fn chainr1<Op, F>(self, op: Op) -> ChainR1<Self, Op>
where Op: Parser<I, Output = F, Error = Self::Error>, F: FnMut(Self::Output, Self::Output) -> Self::Output,

右結合の二項演算子チェーン。operand (op operand)* を右から畳む。

Source

fn map_res<F, O2, E2>(self, f: F, label: &'static str) -> MapRes<Self, F>
where Self: Parser<I, Error = ParseError>, F: FnMut(Self::Output) -> Result<O2, E2>,

パーサーの結果を失敗しうる関数で変換する。 関数が Err を返した場合、Backtrack エラーになる。 入力は巻き戻さない(巻き戻したい場合は .attempt() と組み合わせる)。

Source

fn flat_map<F, P2>(self, f: F) -> FlatMap<Self, F>
where P2: Parser<I, Error = Self::Error>, F: FnMut(Self::Output) -> P2,

Source

fn and_then<F, P2>(self, f: F) -> FlatMap<Self, F>
where P2: Parser<I, Error = Self::Error>, F: FnMut(Self::Output) -> P2,

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<I: Input, P: Parser<I> + Sized> ParserExt<I> for P