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