camxes-rs 0.1.5

A Parsing Expression Grammar (PEG) parser generator with zero-copy parsing and rich debugging capabilities
Documentation
use camxes_rs::{grammars::LOGLAN_GRAMMAR, peg::grammar::Peg};
use std::time::Instant;

fn main() {
    use env_logger;
    env_logger::builder().init();

    let (start, grammar) = LOGLAN_GRAMMAR;
    let p = Peg::new(start, grammar).unwrap();
    println!("{:#?}", "go...");
    let input = "mi cluva";
    println!("Parsing input: '{}'", input);

    let start_time_debug = Instant::now();
    let result_debug = p.parse(input);
    let duration_debug = start_time_debug.elapsed();
    println!("\n--- Debug Output ---");
    println!("{:#?}", result_debug);
    println!("Debug parsing took: {:?}", duration_debug);

    let start_time_json = Instant::now();
    match p.parse_to_json(input) {
        Ok(json_output) => {
            let duration_json = start_time_json.elapsed();
            println!("\n--- JSON Output ---");
            println!("{}", json_output);
            println!("JSON parsing & serialization took: {:?}", duration_json);
        }
        Err(e) => {
            eprintln!("\nError generating JSON output: {}", e);
        }
    }
}