From 20bb505929cf4f79e273195763117c56bfcec903 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sat, 13 Jun 2015 22:26:03 -0400 Subject: [PATCH] Test with multiple alternatives --- src/parser/mod.rs | 6 +++--- src/parser/test.rs | 11 +++++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 7ddba65..a1ed4b1 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -26,7 +26,7 @@ rusty_peg! { (, "=>", , ";") => (from, to); NONTERMINAL: GrammarItem = - (, , "=", , ";") => { + (, , "=", ) => { GrammarItem::Nonterminal(NonterminalData { name: n, type_decl: t, alternatives: a }) @@ -47,10 +47,10 @@ rusty_peg! { () => vec![a]; ALTERNATIVESN: Vec = - ("{", , "}") => a; + ("{", , "}", ";") => a; ALTERNATIVE: Alternative = - (, ) => Alternative { + (, , ";") => Alternative { expr: SymbolExpr { args: s }, action: a }; diff --git a/src/parser/test.rs b/src/parser/test.rs index ec925e1..ceccf8d 100644 --- a/src/parser/test.rs +++ b/src/parser/test.rs @@ -47,7 +47,14 @@ fn token_expr() { } #[test] -fn map() { - assert!(parse_grammar(r#"grammar Foo { Expr = => { { foo } }; }"#).is_ok()); +fn map1() { + assert!(parse_grammar( + r#"grammar Foo { Expr = => { { foo } }; }"#).is_ok()); +} + +#[test] +fn mapN() { + assert!(parse_grammar( + r#"grammar Foo { Expr = { Bar => { Baz }; X => { Y }; }; }"#).is_ok()); }