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§
- Tracable
Info - Struct to have trace configuration.
Traits§
- Fragment
Display - Trait to indicate the type can display as fragment.
- HasTracable
Info - Trait to indicate
TracableInfo
is provided. - Tracable
- Trait to indicate the type has information for tracing.
Functions§
- cumulative_
histogram - Show cumulative histogram of parser call count.
- histogram
- Show histogram of parser call count.
Attribute Macros§
- tracable_
parser - Custom attribute to enable trace