diff options
author | François Pottier <francois.pottier@inria.fr> | 2015-10-19 10:59:28 +0200 |
---|---|---|
committer | François Pottier <francois.pottier@inria.fr> | 2015-10-23 12:55:13 +0200 |
commit | 4a088ba7c9f82d105b25935c1ff7abb07e72de6b (patch) | |
tree | c90e57171f1fa51524d1dfffb81ab1aa5f7d97ae | |
parent | c6d574de8b0435676947b6b7e97d6d36d89f1f20 (diff) | |
download | compcert-4a088ba7c9f82d105b25935c1ff7abb07e72de6b.tar.gz compcert-4a088ba7c9f82d105b25935c1ff7abb07e72de6b.zip |
Reformulated [specifier_qualifier_list_no_typedef_name] as a left-recursive list.
This saves 7 states and 4 error states.
-rw-r--r-- | cparser/pre_parser.mly | 8 |
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: |