extern crate piston_meta; use piston_meta::*; fn main() { let text = r#" # A monster age = 250 strength = 200 name = "Big Dragon" violent = true "#; let rules = r##" 0 document = .l({ [.w? "#" ..."\n"?] [.w? .."="!:"key" .w? "=" .w? { .$_:"number" {"true":"bool" "false":!"bool"} .t?:"string" ..""!:"value" } .w?] })"##; // Parse rules with meta language and convert to rules for parsing text. let rules = stderr_unwrap(rules, syntax(rules)); let mut data = vec![]; stderr_unwrap(text, parse(&rules, text, &mut data)); /* prints "key":"age", "number":250, "key":"strength", "number":200, "key":"name", "string":"Big Dragon", "key":"violent", "bool":true */ json::print(&data); }