Add quick-and-dirty binary for loading and evaluating grammars
This commit is contained in:
parent
e3998d1ff7
commit
c990de795e
3 changed files with 43 additions and 1 deletions
25
src/bin/purrchance.rs
Normal file
25
src/bin/purrchance.rs
Normal 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());
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue