Struct rushell_deps_pom::parser::Parser [−][src]
pub struct Parser<'a, I: Sized, O> { pub method: Box<dyn Fn(Arc<dyn Input<I>>, usize) -> Result<(O, usize)> + Sync + Send + 'a>, }
Parser combinator.
Fields
method: Box<dyn Fn(Arc<dyn Input<I>>, usize) -> Result<(O, usize)> + Sync + Send + 'a>
Implementations
impl<'a, I: Send, O: Send> Parser<'a, I, O>
[src]
impl<'a, I: Send, O: Send> Parser<'a, I, O>
[src]pub fn new<P>(parse: P) -> Parser<'a, I, O> where
P: Fn(Arc<dyn Input<I>>, usize) -> Result<(O, usize)> + 'a + Sync + Send,
[src]
pub fn new<P>(parse: P) -> Parser<'a, I, O> where
P: Fn(Arc<dyn Input<I>>, usize) -> Result<(O, usize)> + 'a + Sync + Send,
[src]Create new parser.
pub fn parse_at(
&self,
input: Arc<dyn Input<I>>,
start: usize
) -> Result<(O, usize)>
[src]
pub fn parse_at(
&self,
input: Arc<dyn Input<I>>,
start: usize
) -> Result<(O, usize)>
[src]Parse input at specified position.
pub fn map<U, F>(self, f: F) -> Parser<'a, I, U> where
F: Fn(O) -> U + 'a + Sync + Send,
I: 'a,
O: 'a,
U: Send,
[src]
pub fn map<U, F>(self, f: F) -> Parser<'a, I, U> where
F: Fn(O) -> U + 'a + Sync + Send,
I: 'a,
O: 'a,
U: Send,
[src]Convert parser result to desired value.
pub fn map_collect<U, F>(self, f: F) -> Parser<'a, I, U> where
F: Fn(O, Vec<I>) -> U + 'a + Sync + Send,
O: 'a,
I: 'a,
U: Send,
[src]
pub fn map_collect<U, F>(self, f: F) -> Parser<'a, I, U> where
F: Fn(O, Vec<I>) -> U + 'a + Sync + Send,
O: 'a,
I: 'a,
U: Send,
[src]Convert parser result to desired value. Matched slice is also delivered.
pub fn custom_parser<U, F>(self, f: F) -> Parser<'a, I, U> where
F: Fn(O, Arc<dyn Input<I>>, usize) -> Result<(U, usize)> + 'a + Sync + Send,
I: 'a,
O: 'a,
U: Send,
[src]
F: Fn(O, Arc<dyn Input<I>>, usize) -> Result<(U, usize)> + 'a + Sync + Send,
I: 'a,
O: 'a,
U: Send,
pub fn log(self, message: &'a str) -> Parser<'a, I, O> where
I: 'a,
O: 'a + Debug,
[src]
I: 'a,
O: 'a + Debug,
pub fn convert<U, E, F>(self, f: F) -> Parser<'a, I, U> where
F: Fn(O) -> Result<U, E> + 'a + Sync + Send,
E: Debug,
I: 'a,
O: 'a,
U: Send,
[src]
pub fn convert<U, E, F>(self, f: F) -> Parser<'a, I, U> where
F: Fn(O) -> Result<U, E> + 'a + Sync + Send,
E: Debug,
I: 'a,
O: 'a,
U: Send,
[src]Convert parser result to desired value, fail in case of conversion error.
pub fn pos(self) -> Parser<'a, I, usize> where
I: 'a,
O: 'a,
[src]
pub fn pos(self) -> Parser<'a, I, usize> where
I: 'a,
O: 'a,
[src]Cache parser output result to speed up backtracking. Get input position after matching parser.
pub fn range(self) -> Parser<'a, I, (usize, usize)> where
I: 'a,
O: 'a,
[src]
I: 'a,
O: 'a,
pub fn collect(self) -> Parser<'a, I, Vec<I>> where
I: 'a + Clone,
O: 'a,
[src]
pub fn collect(self) -> Parser<'a, I, Vec<I>> where
I: 'a + Clone,
O: 'a,
[src]Collect all matched input symbols.
pub fn repeat<R>(self, range: R) -> Parser<'a, I, Vec<O>> where
R: RangeArgument<usize> + Debug + 'a + Sync + Send,
O: 'a,
I: 'a,
[src]
pub fn repeat<R>(self, range: R) -> Parser<'a, I, Vec<O>> where
R: RangeArgument<usize> + Debug + 'a + Sync + Send,
O: 'a,
I: 'a,
[src]p.repeat(5)
repeat p exactly 5 times
p.repeat(0..)
repeat p zero or more times
p.repeat(1..)
repeat p one or more times
p.repeat(1..4)
match p at least 1 and at most 3 times
Trait Implementations
impl<'a, I: 'a + Send, O: 'a + Send, U: 'a + Send> Add<Parser<'a, I, U>> for Parser<'a, I, O>
[src]
impl<'a, I: 'a + Send, O: 'a + Send, U: 'a + Send> Add<Parser<'a, I, U>> for Parser<'a, I, O>
[src]Sequence reserve value
impl<'a, I: 'a + Send, O: 'a + Send> BitOr<Parser<'a, I, O>> for Parser<'a, I, O>
[src]
impl<'a, I: 'a + Send, O: 'a + Send> BitOr<Parser<'a, I, O>> for Parser<'a, I, O>
[src]Ordered choice
impl<'a, I: 'a + Send, O: 'a, U: 'a + Send> Mul<Parser<'a, I, U>> for Parser<'a, I, O>
[src]
impl<'a, I: 'a + Send, O: 'a, U: 'a + Send> Mul<Parser<'a, I, U>> for Parser<'a, I, O>
[src]Sequence discard first value