33 lines
719 B
Rust
33 lines
719 B
Rust
use crate::parser::{ParseResult, Parser, ParserInput};
|
|
use super::boxed_parser::BoxedParser;
|
|
|
|
pub struct NamedParser<'a, I, O, E>
|
|
where
|
|
I: ParserInput,
|
|
{
|
|
inner_parser: BoxedParser<'a, I, O, E>,
|
|
name: String,
|
|
}
|
|
|
|
impl<'a, I, O, E> NamedParser<'a, I, O, E>
|
|
where
|
|
I: ParserInput,
|
|
{
|
|
pub(super) fn new(inner_parser: BoxedParser<'a, I, O, E>, name: String) -> Self
|
|
where
|
|
I: 'a,
|
|
{
|
|
NamedParser { inner_parser, name }
|
|
}
|
|
|
|
pub fn get_name(&'a self) -> &'a str {
|
|
self.name.as_ref()
|
|
}
|
|
}
|
|
|
|
impl<'a, I: ParserInput, O, E> Parser<I, O, E> for NamedParser<'a, I, O, E> {
|
|
fn parse(&self, input: I) -> ParseResult<I, O, E> {
|
|
self.inner_parser.parse(input)
|
|
}
|
|
}
|