using_reentrant
: using_reentrant_interrupt
- | using_reentrant_interrupt using_reentrant { $$ = mergeSpec($1,$2); }
+ | using_reentrant_interrupt using_reentrant { $$ = mergeSpec($1,$2,"using_reentrant"); }
;
using_reentrant_interrupt
sym_link *lnk = $2 ;
while (lnk && !IS_SPEC(lnk->next))
lnk = lnk->next;
- lnk->next = mergeSpec($1,lnk->next);
+ lnk->next = mergeSpec($1,lnk->next, yytext);
$$ = $2 ;
}
else
- $$ = mergeSpec($1,$2);
+ $$ = mergeSpec($1,$2, yytext);
}
| type_specifier { $$ = $1; }
| type_specifier declaration_specifiers {
sym_link *lnk = $2 ;
while (lnk && !IS_SPEC(lnk->next))
lnk = lnk->next;
- lnk->next = mergeSpec($1,lnk->next);
+ lnk->next = mergeSpec($1,lnk->next, yytext);
$$ = $2 ;
}
else
- $$ = mergeSpec($1,$2);
+ $$ = mergeSpec($1,$2, yytext);
}
;
type_specifier_list
: type_specifier
- | type_specifier_list type_specifier { $$ = mergeSpec ($1,$2); }
+ | type_specifier_list type_specifier { $$ = mergeSpec ($1,$2, "type_specifier_list"); }
;
parameter_identifier_list
};
/* forward definition for variables accessed globally */
+extern char *yytext;
extern char *currFname;
extern char *srcFileName; /* source file name without the extenstion */
extern char *moduleName; /* source file name without path & extension */
{
if (IS_SPEC (sym->etype) && IS_SPEC (head) && head == tail)
{
- sym->etype = mergeSpec (sym->etype, head);
+ sym->etype = mergeSpec (sym->etype, head, sym->name);
}
else
{
/* mergeSpec - merges two specifiers and returns the new one */
/*------------------------------------------------------------------*/
sym_link *
-mergeSpec (sym_link * dest, sym_link * src)
+mergeSpec (sym_link * dest, sym_link * src, char *name)
{
+ if (getenv("DEBUG_mergeSpec")) {
+ fprintf (stderr, "mergeSpec: \"%s\"\n", name);
+ }
+
if (SPEC_NOUN(src)) {
if (!SPEC_NOUN(dest)) {
SPEC_NOUN(dest)=SPEC_NOUN(src);
if (getenv("DEBUG_SANITY")) {
fprintf (stderr, "mergeSpec: ");
}
- werror(E_TWO_OR_MORE_DATA_TYPES, yylval.yychar);
+ werror(E_TWO_OR_MORE_DATA_TYPES, name);
}
}
if (getenv("DEBUG_SANITY")) {
fprintf (stderr, "mergeSpec: ");
}
- werror(E_TWO_OR_MORE_STORAGE_CLASSES, yylval.yychar);
+ werror(E_TWO_OR_MORE_STORAGE_CLASSES, name);
}
}
sym_link *newFloatLink ();
structdef *newStruct (char *);
void addDecl (symbol *, int, sym_link *);
-sym_link *mergeSpec (sym_link *, sym_link *);
+sym_link *mergeSpec (sym_link *, sym_link *, char *name);
sym_link *cloneSpec (sym_link *);
symbol *reverseSyms (symbol *);
sym_link *reverseLink (sym_link *);