piston_meta 2.0.1

A DSL parsing library for human readable text documents
Documentation
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!");
}