Bison grammar: fix precedence with ranges followed by blocks

This commit is contained in:
Brian Leibig 2015-02-10 17:54:38 -08:00
parent 03cc48c38d
commit 3bca5f23aa
1 changed files with 3 additions and 1 deletions

View File

@ -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()); }