use std::fmt::Debug;
use crate::*;
pub trait ParseUnit<S: Source>: Sized + Debug {
type Result: Debug;
fn parse(p: &mut Parser<S>) -> Result<Self::Result, ParseError>;
}
pub trait ReverseParseUnit<S: Source> {
type Left;
fn reverse_parse(&self, p: &mut Parser<S>) -> Result<Self::Left, ParseError>;
}