diff options
author | JSDurand <mmemmew@gmail.com> | 2023-07-21 16:21:00 +0800 |
---|---|---|
committer | JSDurand <mmemmew@gmail.com> | 2023-07-21 16:21:00 +0800 |
commit | 201830e33ab5c45044e960217e0ac8803e3e134d (patch) | |
tree | b5e2f6275cf3245cc155cfabaac91beab56df75a | |
parent | 659c2195d2c224122cc8da813bec3af46084b61b (diff) |
Add variations to the test
Add an intentionally ambiguous grammar for testing purposes.
It seems to work fine.
-rw-r--r-- | grammar/abnf grammars/test.abnf | 2 | ||||
-rw-r--r-- | src/lib.rs | 7 | ||||
-rw-r--r-- | src/test.c | 6 |
3 files changed, 11 insertions, 4 deletions
diff --git a/grammar/abnf grammars/test.abnf b/grammar/abnf grammars/test.abnf index c960577..1c3a884 100644 --- a/grammar/abnf grammars/test.abnf +++ b/grammar/abnf grammars/test.abnf @@ -2,6 +2,8 @@ document = 1*( item ) item = header [ price ] *1( note ) +item =/ header [ price ] *1( note ) + header = *1star "SP" title %xA *( "SP" / %xA ) title = 1*"TEXT" @@ -32,6 +32,9 @@ impl Parser { /// format. pub fn new(s: &str) -> Result<Self, String> { let grammar: Grammar = s.parse().map_err(|err| format!("{err}"))?; + + println!("grammar: {grammar}"); + let atom: DefaultAtom = DefaultAtom::from_grammar(grammar).map_err(|err| format!("{err}"))?; @@ -480,8 +483,8 @@ extern "C" fn parser_parse( match forest { Ok(forest) => { - // use graph::Graph; - // forest.print_viz("test forest.gv").unwrap(); + use graph::Graph; + forest.print_viz("test forest.gv").unwrap(); Box::leak(parser_box); @@ -23,6 +23,8 @@ main(int argc, char **argv) "\n" "item = header [ price ] *1( note )\n" "\n" +"item =/ header [ note ] *1( price )\n" +"\n" "header = *1star \"SP\" title %xA *( \"SP\" / %xA )\n" "\n" "title = 1*\"TEXT\"\n" @@ -66,13 +68,13 @@ main(int argc, char **argv) return EXIT_FAILURE; } - int input_unenc[10] = { 3, 0, 2, 2, 2, 1, 1, 1, 0, 1 }; + int input_unenc[10] = { 3, 0, 2, 2, 2, 1, 5, 0, 6, 1 }; for (int i = 0; i < 10; i++) to_big_endian(input_unenc[i], input + (8 * i)); unsigned char input_len[8] = { 0 }; - input_len[7] = 8*6; + input_len[7] = 8*10; struct UnsignedVec input_vec = (struct UnsignedVec) { input_len, NULL, input }; |