Crate nom_tracable[−][src]
Expand description
nom-tracable
is an extension of nom to trace parser.
Examples
The following example show a quick example.
use nom::character::complete::*;
use nom::IResult;
use nom_locate::LocatedSpan;
use nom_tracable::{tracable_parser, TracableInfo};
// Input type must implement trait Tracable
// nom_locate::LocatedSpan<T, TracableInfo> implements it.
type Span<'a> = LocatedSpan<&'a str, TracableInfo>;
// Apply tracable_parser by custom attribute
#[tracable_parser]
pub fn term(s: Span) -> IResult<Span, String> {
let (s, x) = char('1')(s)?;
Ok((s, x.to_string()))
}
#[test]
fn test() {
// Configure trace setting
let info = TracableInfo::new().forward(true).backward(true);
let ret = term(LocatedSpan::new_extra("1", info));
assert_eq!("\"1\"", format!("{:?}", ret.unwrap().1));
}
Structs
Struct to have trace configuration.
Traits
Trait to indicate the type can display as fragment.
Trait to indicate TracableInfo
is provided.
Trait to indicate the type has information for tracing.
Functions
Show cumulative histogram of parser call count.
Show histogram of parser call count.
Attribute Macros
Custom attribute to enable trace