about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBrian Leibig <brian@brianleibig.com>2015-02-10 17:54:38 -0800
committerBrian Leibig <brian@brianleibig.com>2015-02-10 17:59:02 -0800
commit3bca5f23aa8ac7a9e27ec582e05c2420313515d7 (patch)
tree4a1e55701960e109fe12fc96ad366cfd895ddd27 /src
parent03cc48c38ddd3bbdf7f928dede249e7c8527edd0 (diff)
downloadrust-3bca5f23aa8ac7a9e27ec582e05c2420313515d7.tar.gz
rust-3bca5f23aa8ac7a9e27ec582e05c2420313515d7.zip
Bison grammar: fix precedence with ranges followed by blocks
Diffstat (limited to 'src')
-rw-r--r--src/grammar/parser-lalr.y4
1 files changed, 3 insertions, 1 deletions
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()); }