26 lines
567 B
Rust
26 lines
567 B
Rust
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).unwrap();
|
|
if args.len() < 3 {
|
|
eprintln!("{:?}", grammar);
|
|
exit(0);
|
|
}
|
|
|
|
let sym = Symbol::NonTerminal(args[2].clone());
|
|
println!("{}", sym.eval(&grammar).unwrap());
|
|
}
|