[−][src]Crate nom_both
nom-both
is an extension of nom to provide special both_
parser.
Examples
The following example show a quick example.
use nom::branch::*; use nom::bytes::complete::*; use nom::IResult; use nom_both::both_parser; #[both_parser] pub fn both_opt_parser(s: &str) -> IResult<&str, Option<&str>> { let (s, _) = tag("1")(s)?; let (s, x) = both_opt(tag("2"))(s)?; let (s, _) = tag("2")(s)?; let (s, _) = tag("3")(s)?; Ok((s, x)) } #[both_parser] pub fn both_alt_parser(s: &str) -> IResult<&str, &str> { let (s, _) = tag("1")(s)?; let (s, x) = both_alt(tag("22"), tag("2"))(s)?; let (s, _) = tag("2")(s)?; let (s, _) = tag("3")(s)?; Ok((s, x)) } fn main() { let ret = both_opt_parser("123"); assert_eq!("None", format!("{:?}", ret.unwrap().1)); let ret = both_alt_parser("1223"); assert_eq!("\"2\"", format!("{:?}", ret.unwrap().1)); }
Re-exports
pub use nom_both_macros::both_parser; |
Functions
alt_left | |
alt_right | |
none | |
some |