From d7d088921bcd26012bd27e5cc4f01746f91d029b Mon Sep 17 00:00:00 2001 From: François Pottier Date: Thu, 8 Oct 2015 10:16:25 +0200 Subject: Replaced [declaration_specifiers_no_typedef_name] with [declaration_specifier_no_typedef_name*]. This replaces a right-recursive list with a left-recursive list. This saves 2 states and 6 error states. --- cparser/pre_parser.mly | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'cparser/pre_parser.mly') diff --git a/cparser/pre_parser.mly b/cparser/pre_parser.mly index f25dde4f..f077a30c 100644 --- a/cparser/pre_parser.mly +++ b/cparser/pre_parser.mly @@ -388,10 +388,6 @@ declaration_specifier_no_typedef_name: | type_specifier_no_typedef_name {} -declaration_specifiers_no_typedef_name: - declaration_specifier_no_typedef_name declaration_specifiers_no_typedef_name? - {} - (* [declaration_specifiers_no_type] matches declaration_specifiers that do not contains "typedef". Moreover, it makes sure that it contains either one typename and not other type specifier or no @@ -414,7 +410,7 @@ declaration_specifiers_no_typedef_name: parameter declaration. *) declaration_specifiers(phantom): | ilist(declaration_specifier_no_type) TYPEDEF_NAME declaration_specifier_no_type* -| declaration_specifier_no_type* type_specifier_no_typedef_name declaration_specifiers_no_typedef_name? +| declaration_specifier_no_type* type_specifier_no_typedef_name declaration_specifier_no_typedef_name* {} (* This matches declaration_specifiers that do contains once the @@ -423,8 +419,8 @@ declaration_specifiers(phantom): declaration_specifiers_typedef: | declaration_specifier_no_type* TYPEDEF declaration_specifier_no_type* TYPEDEF_NAME declaration_specifier_no_type* | ilist(declaration_specifier_no_type) TYPEDEF_NAME declaration_specifier_no_type* TYPEDEF declaration_specifier_no_type* -| declaration_specifier_no_type* TYPEDEF declaration_specifier_no_type* type_specifier_no_typedef_name declaration_specifiers_no_typedef_name? -| declaration_specifier_no_type* type_specifier_no_typedef_name declaration_specifiers_no_typedef_name? TYPEDEF declaration_specifiers_no_typedef_name? +| declaration_specifier_no_type* TYPEDEF declaration_specifier_no_type* type_specifier_no_typedef_name declaration_specifier_no_typedef_name* +| declaration_specifier_no_type* type_specifier_no_typedef_name declaration_specifier_no_typedef_name* TYPEDEF declaration_specifier_no_typedef_name* {} (* A type specifier which is not a typedef name. *) -- cgit