diff options
| author | Brian Leibig <brian@brianleibig.com> | 2015-02-10 17:54:38 -0800 |
|---|---|---|
| committer | Brian Leibig <brian@brianleibig.com> | 2015-02-10 17:59:02 -0800 |
| commit | 3bca5f23aa8ac7a9e27ec582e05c2420313515d7 (patch) | |
| tree | 4a1e55701960e109fe12fc96ad366cfd895ddd27 /src | |
| parent | 03cc48c38ddd3bbdf7f928dede249e7c8527edd0 (diff) | |
| download | rust-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.y | 4 |
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()); } |
