Add quick-and-dirty binary for loading and evaluating grammars

This commit is contained in:
xenofem 2020-06-19 02:18:11 -04:00
parent e3998d1ff7
commit c990de795e
3 changed files with 43 additions and 1 deletions

25
src/bin/purrchance.rs Normal file
View file

@ -0,0 +1,25 @@
use purrchance::*;
use purrchance::parser::*;
use std::env;
use std::fs::read_to_string;
use std::process::exit;
fn main() {
let args: Vec<String> = env::args().collect();
if args.len() < 2 {
eprintln!("too few arguments!");
exit(1);
}
let raw_grammar = read_to_string(&args[1]).unwrap();
let grammar = load_grammar(&raw_grammar);
if args.len() < 3 {
eprintln!("{:?}", grammar);
exit(0);
}
let sym = Symbol::NonTerminal(args[2].clone());
println!("{}", sym.eval(&grammar).unwrap());
}