* src/symtab.h, src/symtab.c (symbol_print): New.

* src/symlist.h, src/symlist.c (symbol_list_print): New.
* src/symlist.c (symbol_list_n_type_name_get): Report the culprit.
This commit is contained in:
Akim Demaille
2005-07-12 13:41:58 +00:00
parent fa0e93148c
commit 867a3e0085
5 changed files with 49 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
/* Lists of symbols for Bison
Copyright (C) 2002 Free Software Foundation, Inc.
Copyright (C) 2002, 2005 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
@@ -44,6 +44,18 @@ symbol_list_new (symbol *sym, location loc)
}
/*------------------.
| Print this list. |
`------------------*/
void
symbol_list_print (FILE *f, symbol_list *l)
{
for (/* Nothing. */; l; l = l->next)
symbol_print (f, l->sym);
}
/*---------------------------------.
| Prepend SYM at LOC to the LIST. |
`---------------------------------*/
@@ -94,7 +106,7 @@ symbol_list_n_type_name_get (symbol_list *rp, location loc, int n)
if (n < 0)
{
complain_at (loc, _("invalid $ value"));
complain_at (loc, _("invalid $ value: $%d"), n);
return NULL;
}
@@ -105,7 +117,8 @@ symbol_list_n_type_name_get (symbol_list *rp, location loc, int n)
rp = rp->next;
if (rp == NULL || rp->sym == NULL)
{
complain_at (loc, _("invalid $ value"));
complain_at (loc, _("invalid $ value: $%d"), n);
fprintf (stderr, "\n");
return NULL;
}
++i;

View File

@@ -1,6 +1,6 @@
/* Lists of symbols for Bison
Copyright (C) 2002 Free Software Foundation, Inc.
Copyright (C) 2002, 2005 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
@@ -44,6 +44,9 @@ typedef struct symbol_list
/* Create a list containing SYM at LOC. */
symbol_list *symbol_list_new (symbol *sym, location loc);
/* Print it. */
void symbol_list_print (FILE *f, symbol_list *l);
/* Prepend SYM at LOC to the LIST. */
symbol_list *symbol_list_prepend (symbol_list *list,
symbol *sym,

View File

@@ -74,6 +74,25 @@ symbol_new (uniqstr tag, location loc)
}
/*-----------------.
| Print a symbol. |
`-----------------*/
#define SYMBOL_ATTR_PRINT(Attr) \
if (s->Attr) \
fprintf (stderr, " %s { %s }", #Attr, s->Attr)
void
symbol_print (FILE *f, symbol *s)
{
fprintf (stderr, "\"%s\"", s->tag);
SYMBOL_ATTR_PRINT (type_name);
SYMBOL_ATTR_PRINT (destructor);
SYMBOL_ATTR_PRINT (printer);
}
#undef SYMBOL_ATTR_PRINT
/*------------------------------------------------------------------.
| Complain that S's WHAT is redeclared at SECOND, and was first set |
| at FIRST. |

View File

@@ -1,6 +1,6 @@
/* Definitions for symtab.c and callers, part of Bison.
Copyright (C) 1984, 1989, 1992, 2000, 2001, 2002, 2004
Copyright (C) 1984, 1989, 1992, 2000, 2001, 2002, 2004, 2005
Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
@@ -91,6 +91,8 @@ struct symbol
/* Undefined internal token number. */
#define NUMBER_UNDEFINED (-1)
/* Print a symbol (for debugging). */
void symbol_print (FILE *f, symbol *s);
/* Fetch (or create) the symbol associated to KEY. */
symbol *symbol_get (const char *key, location loc);