From 3bca5f23aa8ac7a9e27ec582e05c2420313515d7 Mon Sep 17 00:00:00 2001 From: Brian Leibig <brian@brianleibig.com> Date: Tue, 10 Feb 2015 17:54:38 -0800 Subject: [PATCH] Bison grammar: fix precedence with ranges followed by blocks --- src/grammar/parser-lalr.y | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/grammar/parser-lalr.y b/src/grammar/parser-lalr.y index 2788476ebfe..6a6f7e0e9f9 100644 --- a/src/grammar/parser-lalr.y +++ b/src/grammar/parser-lalr.y @@ -177,6 +177,8 @@ extern char *yytext; %precedence '{' '[' '(' '.' +%precedence RANGE + %start crate %% @@ -1475,7 +1477,7 @@ expr_nostruct | expr_nostruct '*' expr_nostruct { $$ = mk_node("ExprBinary", 3, mk_atom("BiMul"), $1, $3); } | expr_nostruct '/' expr_nostruct { $$ = mk_node("ExprBinary", 3, mk_atom("BiDiv"), $1, $3); } | expr_nostruct '%' expr_nostruct { $$ = mk_node("ExprBinary", 3, mk_atom("BiRem"), $1, $3); } -| expr_nostruct DOTDOT { $$ = mk_node("ExprRange", 2, $1, mk_none()); } +| expr_nostruct DOTDOT %prec RANGE { $$ = mk_node("ExprRange", 2, $1, mk_none()); } | expr_nostruct DOTDOT expr_nostruct { $$ = mk_node("ExprRange", 2, $1, $3); } | DOTDOT expr_nostruct { $$ = mk_node("ExprRange", 2, mk_none(), $2); } | DOTDOT { $$ = mk_node("ExprRange", 2, mk_none(), mk_none()); }