|
1 |
| -use glc::{nt_seq_rule, t_or_rule, Expression, Grammar}; |
| 1 | +#![recursion_limit = "256"] |
| 2 | +use glc::{grammar, Expression, Grammar}; |
2 | 3 |
|
3 | 4 | fn grammar() -> Grammar {
|
4 |
| - Grammar( |
5 |
| - "E".into(), |
6 |
| - vec![ |
7 |
| - nt_seq_rule!("E" => "T", "E'"), |
8 |
| - nt_seq_rule!("E'" => "PM", "T", "E'"), |
9 |
| - t_or_rule!("E'" => ""), |
10 |
| - t_or_rule!("E'" => ""), // increase prob. by duplicating rule |
11 |
| - t_or_rule!("E'" => ""), // increase prob. by duplicating rule |
12 |
| - t_or_rule!("PM" => "+", "-"), |
13 |
| - nt_seq_rule!("T" => "F", "T'"), |
14 |
| - nt_seq_rule!("T'" => "MD", "F", "T'"), |
15 |
| - t_or_rule!("MD" => "*", "/"), |
16 |
| - t_or_rule!("T'" => ""), |
17 |
| - t_or_rule!("T'" => ""), // increase prob. |
18 |
| - t_or_rule!("T'" => ""), // increase prob. |
19 |
| - nt_seq_rule!("F" => "LP", "E", "RP"), |
20 |
| - nt_seq_rule!("F" => "M", "LP", "E", "RP"), |
21 |
| - nt_seq_rule!("F" => "N"), |
22 |
| - nt_seq_rule!("F" => "M", "N"), |
23 |
| - t_or_rule!("LP" => "("), |
24 |
| - t_or_rule!("RP" => ")"), |
25 |
| - t_or_rule!("M" => "-"), |
26 |
| - nt_seq_rule!("N" => "D", "DEC"), |
27 |
| - nt_seq_rule!("D" => "D", "OD"), |
28 |
| - nt_seq_rule!("OD" => "D"), |
29 |
| - t_or_rule!("OD" => ""), |
30 |
| - t_or_rule!("OD" => ""), // increase probability |
31 |
| - t_or_rule!("OD" => ""), // increase probability |
32 |
| - t_or_rule!("D" => "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"), |
33 |
| - nt_seq_rule!("DEC" => "P", "D"), |
34 |
| - t_or_rule!("P" => "."), |
35 |
| - ], |
36 |
| - ) |
| 5 | + grammar!{ |
| 6 | + E => T E_; |
| 7 | + E_ => PM T E_; |
| 8 | + E_ => ""; |
| 9 | + E_ => ""; |
| 10 | + E_ => ""; |
| 11 | + PM => "+", "-"; |
| 12 | + T => F T_; |
| 13 | + T_ => MD F T_; |
| 14 | + MD => "*", "/"; |
| 15 | + T_ => ""; |
| 16 | + T_ => ""; |
| 17 | + T_ => ""; |
| 18 | + F => LP E RP; |
| 19 | + F => M LP E RP; |
| 20 | + F => N; |
| 21 | + F => M N; |
| 22 | + LP => "("; |
| 23 | + RP => ")"; |
| 24 | + M => "-"; |
| 25 | + N => D DEC; |
| 26 | + D => D OD; |
| 27 | + OD => D; |
| 28 | + OD => ""; |
| 29 | + OD => ""; |
| 30 | + OD => ""; |
| 31 | + D => "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"; |
| 32 | + DEC => P D; |
| 33 | + P => "." |
| 34 | + } |
37 | 35 | }
|
38 | 36 |
|
39 | 37 | #[test]
|
|
0 commit comments