piston_meta 2.0.1

A DSL parsing library for human readable text documents
Documentation
/*

This example shows how to use negative matching on tokens.

For example:

    !"hi":"hi_did_not_occured"

This rule generates:

    "hi_did_not_occured":true

when "hi" was *not* parsed.

One can also use double negative for simplicity:

    !"hi":!"hi"

This will generate:

    "hi":false

*/

extern crate piston_meta;

use piston_meta::*;

fn main() {
    let text = r#"hello!"#;
    let rules = r#"
        1 document = [!"hi":"hi_did_not_occured" ...""?]
    "#;
    // Parse rules with meta language and convert to rules for parsing text.
    let rules = match syntax_errstr(rules) {
        Err(err) => {
            println!("{}", err);
            return;
        }
        Ok(rules) => rules
    };
    let mut data = vec![];
    match parse_errstr(&rules, text, &mut data) {
        Err(err) => {
            println!("{}", err);
        }
        Ok(()) => {}
    };
    // Prints `"hi_did_not_occured":true`.
    json::print(&data);
}