From a8753bb69c0455ae59fd258aad988e9613f76330 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Wed, 19 Jul 2023 21:25:09 -0400 Subject: [PATCH] libcdecl: Combine tag/typedef identifier rules. There are actually no conflicts to add an empty production alongside the rule for "struct", "union" and "enum", which allows the subsequent reductions for "tag identifier" and "[nothing] identifier" to be done with just one rule. This replaces a relatively large action from the eliminated rule with a very simple one. --- src/parse.y | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/parse.y b/src/parse.y index 1542c09..a993ea6 100644 --- a/src/parse.y +++ b/src/parse.y @@ -343,7 +343,7 @@ typespec_simple: T_VOID | T_COMPLEX | T_IMAGINARY -typespec_tagged: T_STRUCT | T_UNION | T_ENUM +typespec_tagged: T_STRUCT | T_UNION | T_ENUM | { $$ = CDECL_TYPE_IDENT; } qualifier_simple: T_CONST | T_RESTRICT @@ -365,10 +365,6 @@ typespec: typespec_noid | typespec_tagged T_IDENT { ALLOC_STRUCT($$, struct cdecl_declspec, .type = $1, .ident = $2); -} | T_IDENT { - ALLOC_STRUCT($$, struct cdecl_declspec, - .type = CDECL_TYPE_IDENT, - .ident = $1); } declspec_noid: declspec_notype | typespec_noid -- 2.43.2