extern crate piston_meta;
use piston_meta::*;
use std::fs::File;
use std::io::Read;
use std::path::PathBuf;
fn main() {
let rules = bootstrap::rules();
let self_syntax: PathBuf = "assets/self-syntax.txt".into();
let mut file_h = File::open(self_syntax).unwrap();
let mut source = String::new();
file_h.read_to_string(&mut source).unwrap();
let mut res = vec![];
stderr_unwrap(&source, parse(&rules, &source, &mut res));
let mut ignored1 = vec![];
let rules1 = bootstrap::convert(&res, &mut ignored1).unwrap();
println!("ignored1 {:?}", ignored1.len());
let mut res = vec![];
stderr_unwrap(&source, parse(&rules1, &source, &mut res));
let mut ignored2 = vec![];
let rules2 = bootstrap::convert(&res, &mut ignored2).unwrap();
println!("ignored2 {:?}", ignored2.len());
stderr_unwrap(&source, parse(&rules2, &source, &mut vec![]));
assert_eq!(rules1, rules2);
println!("Bootstrapping succeeded!");
}