chomchom 0.3.3

A simple parser generator for Rust
Documentation
use std::error::Error;

use crate::parser_generator::{TokenIteratorType, TokenReq};

pub mod grammar;
pub mod parser;
pub mod parser_generator;
pub mod tokeniser;

pub fn get_parser<'a, TokenT: TokenReq>(
    grammar_file: &str,
    tokeniser: impl Fn(&'a str) -> TokenIteratorType<'a, TokenT>,
) -> impl Fn(&'a str) -> Result<parser_generator::AST<TokenT>, Box<dyn Error>> {
    let gram_str =
        std::fs::read_to_string(grammar_file).expect("Failed to read grammar.");
    let tokens = tokeniser::tokenize(gram_str.as_str());
    let ast = parser::parse(tokens).expect("Failed to parse grammar");
    // println!("{}", &ast.to_chomsky());
    parser_generator::get_parser(ast.to_chomsky(), tokeniser)
        .expect("Failed to generate parser")
}