[][src]Crate nom_packrat

nom-packrat is an extension of nom to apply "Packrat Parsing".

Examples

The following example show a quick example.

use nom::character::complete::char;
use nom::IResult;
use nom_packrat::{init, packrat_parser, storage};

// Declare storage used by packrat_parser
storage!(String);

// Apply packrat_parser by custom attribute
#[packrat_parser]
pub fn parser(s: &str) -> IResult<&str, String> {
    let (s, x) = char('a')(s)?;
    Ok((s, x.to_string()))
}

fn main() {
    let input = "a";

    // Initialize before parsing
    init!();
    let result = parser(input);

    println!("{:?}", result);
}

Re-exports

pub use nom_packrat_macros::packrat_parser;
pub use nom_packrat_macros::storage;

Macros

init

Initialize packrat storage