%type <declspec> declspecs declspecs_noid
%type <declarator> direct_declarator declarator pointer array parens postfix
%type <declarator> direct_declarator_ish declarator_ish parameter_type_list
-%type <decl> declaration declarators declarator_wrap
-%type <decl> parameter
+%type <decl> cdecl declaration declarators declarator_wrap parameter
%type <item> english_vla
%type <declspec> storage_func_specs post_specs
%type <declspec> type_qual_spec type_qual_specs typedef_name_qual
%type <declarator> english_declarator english_array english_function
%type <declarator> english_parameter_list null_decl
-%type <decl> english english_declaration
-%type <decl> english_parameter
+%type <decl> english english_declaration english_parameter
/* Precedence declaration to avoid conflict in english_parameter; see below. */
%right T_TYPE
%%
-input: english {
- *out = $1;
-} | declaration {
- *out = $1;
-};
+input: cdecl { *out = $1; }
+cdecl: english | declaration
semi: | T_SEMICOLON
-
declaration: declspecs declarators semi {
$$ = $2;
$$->specifiers = $1;