mirror of
https://github.com/fluencelabs/lalrpop
synced 2025-03-16 17:00:53 +00:00
Test with multiple alternatives
This commit is contained in:
parent
2186eed80b
commit
20bb505929
@ -26,7 +26,7 @@ rusty_peg! {
|
||||
(<from:LITERAL>, "=>", <to:LITERAL>, ";") => (from, to);
|
||||
|
||||
NONTERMINAL: GrammarItem =
|
||||
(<n:ID>, <t:[NONTERMINAL_TYPE]>, "=", <a:ALTERNATIVES>, ";") => {
|
||||
(<n:ID>, <t:[NONTERMINAL_TYPE]>, "=", <a:ALTERNATIVES>) => {
|
||||
GrammarItem::Nonterminal(NonterminalData { name: n,
|
||||
type_decl: t,
|
||||
alternatives: a })
|
||||
@ -47,10 +47,10 @@ rusty_peg! {
|
||||
(<a:ALTERNATIVE>) => vec![a];
|
||||
|
||||
ALTERNATIVESN: Vec<Alternative> =
|
||||
("{", <a:{ALTERNATIVE}>, "}") => a;
|
||||
("{", <a:{ALTERNATIVE}>, "}", ";") => a;
|
||||
|
||||
ALTERNATIVE: Alternative =
|
||||
(<s:{SYMBOL_ARG}>, <a:[ACTION]>) => Alternative {
|
||||
(<s:{SYMBOL_ARG}>, <a:[ACTION]>, ";") => Alternative {
|
||||
expr: SymbolExpr { args: s },
|
||||
action: a
|
||||
};
|
||||
|
@ -47,7 +47,14 @@ fn token_expr() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn map() {
|
||||
assert!(parse_grammar(r#"grammar Foo { Expr = <n:Alt+> => { { foo } }; }"#).is_ok());
|
||||
fn map1() {
|
||||
assert!(parse_grammar(
|
||||
r#"grammar Foo { Expr = <n:Alt+> => { { foo } }; }"#).is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn mapN() {
|
||||
assert!(parse_grammar(
|
||||
r#"grammar Foo { Expr = { Bar => { Baz }; X <n:Bar> => { Y }; }; }"#).is_ok());
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user