piston_meta 2.0.1

A DSL parsing library for human readable text documents
Documentation

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);
}