+ | abstract_declarator2 '(' ')' {
+ // $1 must be a pointer to a function
+ sym_link *p=newLink();
+ DCL_TYPE(p) = FUNCTION;
+ $1->next=p;
+ }
+ | abstract_declarator2 '(' parameter_type_list ')' {
+ if (!IS_VOID($3->type)) {
+ // this is nonsense, so let's just burp something
+ werror(E_TOO_FEW_PARMS);
+ } else {
+ // $1 must be a pointer to a function
+ sym_link *p=newLink();
+ DCL_TYPE(p) = FUNCTION;
+ $1->next=p;
+ }
+ }