aboutsummaryrefslogtreecommitdiffstats
path: root/cparser/pre_parser.mly
diff options
context:
space:
mode:
authorFrançois Pottier <francois.pottier@inria.fr>2015-10-19 10:59:28 +0200
committerFrançois Pottier <francois.pottier@inria.fr>2015-10-23 12:55:13 +0200
commit4a088ba7c9f82d105b25935c1ff7abb07e72de6b (patch)
treec90e57171f1fa51524d1dfffb81ab1aa5f7d97ae /cparser/pre_parser.mly
parentc6d574de8b0435676947b6b7e97d6d36d89f1f20 (diff)
downloadcompcert-kvx-4a088ba7c9f82d105b25935c1ff7abb07e72de6b.tar.gz
compcert-kvx-4a088ba7c9f82d105b25935c1ff7abb07e72de6b.zip
Reformulated [specifier_qualifier_list_no_typedef_name] as a left-recursive list.
This saves 7 states and 4 error states.
Diffstat (limited to 'cparser/pre_parser.mly')
-rw-r--r--cparser/pre_parser.mly8
1 files changed, 4 insertions, 4 deletions
diff --git a/cparser/pre_parser.mly b/cparser/pre_parser.mly
index 61fd6972..639c5ac5 100644
--- a/cparser/pre_parser.mly
+++ b/cparser/pre_parser.mly
@@ -463,12 +463,12 @@ struct_declaration:
(* The phantom parameter can be [struct_declaration] or [type_name]. *)
specifier_qualifier_list(phantom):
| type_qualifier_list? TYPEDEF_NAME type_qualifier_list?
-| type_qualifier_list? type_specifier_no_typedef_name specifier_qualifier_list_no_typedef_name?
+| type_qualifier_list? type_specifier_no_typedef_name specifier_qualifier_no_typedef_name*
{}
-specifier_qualifier_list_no_typedef_name:
-| type_specifier_no_typedef_name specifier_qualifier_list_no_typedef_name?
-| type_qualifier specifier_qualifier_list_no_typedef_name?
+specifier_qualifier_no_typedef_name:
+| type_specifier_no_typedef_name
+| type_qualifier
{}
struct_declarator_list: