[go: up one dir, main page]

syntax

Function syntax 

Source
pub fn syntax(rules: &str) -> Result<Syntax, Range<ParseError>>
Expand description

Reads syntax from text.

Examples found in repository?
examples/bootstrap_old.rs (line 18)
15fn main() {
16    // Get the old syntax in the new syntax.
17    let old = load_file("assets/old-syntax.txt");
18    let old_syntax = stderr_unwrap(&old, syntax(&old));
19
20    let old_in_old = load_file("assets/old-self-syntax.txt");
21    let mut old_in_old_syntax = vec![];
22    stderr_unwrap(&old_in_old,
23        parse(&old_syntax, &old_in_old, &mut old_in_old_syntax));
24    let old_in_old_syntax = bootstrap::convert(&old_in_old_syntax, &mut vec![])
25        .unwrap();
26
27    assert_eq!(old_syntax, old_in_old_syntax);
28    println!("Bootstrap succeeded!");
29}
More examples
Hide additional examples
examples/key_value.rs (line 25)
6fn main() {
7    let text = r#"
8        # A monster
9        age = 250
10        strength = 200
11        name = "Big Dragon"
12        violent = true
13    "#;
14    let rules = r##"
15        0 document = .l({
16            [.w? "#" ..."\n"?]
17            [.w? .."="!:"key" .w? "=" .w? {
18                .$_:"number"
19                {"true":"bool" "false":!"bool"}
20                .t?:"string"
21                ..""!:"value"
22            } .w?]
23        })"##;
24    // Parse rules with meta language and convert to rules for parsing text.
25    let rules = stderr_unwrap(rules, syntax(rules));
26    let mut data = vec![];
27    stderr_unwrap(text, parse(&rules, text, &mut data));
28    /* prints
29
30    "key":"age",
31    "number":250,
32    "key":"strength",
33    "number":200,
34    "key":"name",
35    "string":"Big Dragon",
36    "key":"violent",
37    "bool":true
38
39    */
40    json::print(&data);
41}