chomchom 0.2.2

A simple parser generator for Rust
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use std::error::Error;

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

pub fn get_parser(
    grammar_file: &str,
    tokeniser: Option<parser_generator::GetTokeniserType>,
) -> impl Fn(&str) -> Result<parser_generator::AST, 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");
    parser_generator::get_parser(ast.to_chomsky(), tokeniser)
        .expect("Failed to generate parser")
}