summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-03-05 14:09:58 +0800
committerJohn Hodge <tpg@mutabah.net>2016-03-05 14:09:58 +0800
commitbc539dbc6f21cc3c5d12e0606f02421fc4eb06ad (patch)
tree88ee37159dd171c0086fcd553e7a3a4c7c1228d6
parent6791cb4e605fbccb36a160c350420fc693c36b92 (diff)
downloadmrust-bc539dbc6f21cc3c5d12e0606f02421fc4eb06ad.tar.gz
BNF - Clean up conflicts, extra handling
-rw-r--r--bnf/rust.y23
-rw-r--r--bnf/rust_expr.y_tree.h6
-rw-r--r--bnf/rust_tts.y.h1
3 files changed, 18 insertions, 12 deletions
diff --git a/bnf/rust.y b/bnf/rust.y
index 0239a1a5..1260ecf6 100644
--- a/bnf/rust.y
+++ b/bnf/rust.y
@@ -154,7 +154,8 @@ attr
| DOC_COMMENT { $$ = new MetaItem("doc", consume($1)); }
;
meta_items
- : meta_item { $$ = new MetaItems(); $$->push_back( consume($1) ); }
+ : { $$ = new MetaItems(); }
+ | meta_item { $$ = new MetaItems(); $$->push_back( consume($1) ); }
| meta_items ',' meta_item { $$ = $1; $$->push_back( consume($3) ); }
;
meta_item
@@ -280,7 +281,7 @@ fn_def_arg_PROTO
fn_qualifiers
: RWD_extern extern_abi
| RWD_const
- | RWD_unsafe
+/* | RWD_unsafe */
| RWD_const RWD_unsafe
;
@@ -347,14 +348,14 @@ struct_def_item: attrs opt_pub IDENT ':' type;
/* --- Enum --- */
enum_def: IDENT generic_def where_clause '{' enum_variants '}' { $$ = new Enum(); };
-enum_variants: | enum_variant_list | enum_variant_list ',';
-enum_variant_list: enum_variant | enum_variant_list ',' enum_variant;
+enum_variants: | enum_variant_list;
+enum_variant_list: enum_variant | enum_variant ',' | enum_variant ',' enum_variant_list;
enum_variant: attrs enum_variant_;
enum_variant_
: IDENT
| IDENT '=' expr
| IDENT '(' type_list ')'
- | IDENT '{' struct_def_items '}'
+ | IDENT '{' struct_def_items opt_comma '}'
;
/* --- Trait --- */
@@ -508,10 +509,14 @@ type_nopath
: hrlb_def opt_unsafe RWD_fn '(' fn_def_arg_list_PROTO ')' fn_def_ret
| hrlb_def opt_unsafe RWD_extern extern_abi RWD_fn '(' fn_def_arg_list_PROTO ')' fn_def_ret
| '_'
- | '&' opt_lifetime type_ele
- | DOUBLEAMP opt_lifetime type_ele
- | '&' opt_lifetime RWD_mut type_ele
- | DOUBLEAMP opt_lifetime RWD_mut type_ele
+ | '&' type_ele
+ | '&' LIFETIME type_ele
+ | DOUBLEAMP type_ele
+ | DOUBLEAMP LIFETIME type_ele
+ | '&' RWD_mut type_ele
+ | '&' LIFETIME RWD_mut type_ele
+ | DOUBLEAMP RWD_mut type_ele
+ | DOUBLEAMP LIFETIME RWD_mut type_ele
| '*' RWD_const type_ele
| '*' RWD_mut type_ele
| '[' type ']'
diff --git a/bnf/rust_expr.y_tree.h b/bnf/rust_expr.y_tree.h
index c3635830..ec019884 100644
--- a/bnf/rust_expr.y_tree.h
+++ b/bnf/rust_expr.y_tree.h
@@ -1,8 +1,8 @@
_(expr_noblock): _(expr_assign);
_(expr_assign)
- : _(expr_0) assign_op _(expr_assign)
- | _(expr_0)
+ : _(expr_0)
+ | _(expr_0) assign_op _(expr_assign)
;
_(expr_0): _(expr_range);
@@ -10,8 +10,8 @@ _(expr_0): _(expr_range);
_(expr_range)
: _(expr_range_n)
| _(expr_range_n) DOUBLEDOT
- | DOUBLEDOT _(expr_range_n)
| _(expr_range_n) DOUBLEDOT _(expr_range_n)
+ | DOUBLEDOT _(expr_range_n)
| DOUBLEDOT
;
_(expr_range_n): _(expr_bor);
diff --git a/bnf/rust_tts.y.h b/bnf/rust_tts.y.h
index 78d3d581..e406d58c 100644
--- a/bnf/rust_tts.y.h
+++ b/bnf/rust_tts.y.h
@@ -6,6 +6,7 @@ tt_tok
| _T(CHARLIT) | _T(INTEGER)
| _T(FLOAT)
| _C(',') | _C(';') | _C('_')
+ | _T(RWD_mod)
| _T(RWD_self) | _T(RWD_super) | _T(RWD_mut) | _T(RWD_ref) | _T(RWD_let) | _T(RWD_where) | _T(RWD_pub) | _T(RWD_in) | _T(RWD_as)
| _T(RWD_for ) | _T(RWD_while) | _T(RWD_loop) | _T(RWD_if) | _T(RWD_else) | _T(RWD_match) | _T(RWD_box) | _T(RWD_move)
| _T(RWD_return) | _T(RWD_continue) | _T(RWD_break)