Adjust all users to use symbols[i]->tag.
+2001-12-29 Akim Demaille <akim@epita.fr>
+
+ * src/reader.c, src/reader.h (tags): Remove.
+ Adjust all users to use symbols[i]->tag.
+
+
2001-12-29 Akim Demaille <akim@epita.fr>
* src/gram.h, src/gram.c (symbols): New, similar to state_table
if (trace_flag)
fprintf (stderr, "Entering new_state, state = %d, symbol = %d (%s)\n",
- this_state->number, symbol, tags[symbol]);
+ this_state->number, symbol, symbols[symbol]->tag);
if (nstates >= MAXSHORT)
fatal (_("too many states (max %d)"), MAXSHORT);
if (trace_flag)
fprintf (stderr, "Entering get_state, state = %d, symbol = %d (%s)\n",
- this_state->number, symbol, tags[symbol]);
+ this_state->number, symbol, symbols[symbol]->tag);
/* Add up the target state's active item numbers to get a hash key.
*/
{
if (trace_flag)
fprintf (stderr, "Processing state %d (reached by %s)\n",
- this_state->number, tags[this_state->accessing_symbol]);
+ this_state->number,
+ symbols[this_state->accessing_symbol]->tag);
/* Set up ruleset and itemset for the transitions out of this
state. ruleset gets a 1 bit for each rule that could reduce
now. itemset gets a vector of all the items that could be
#include "system.h"
#include "getargs.h"
+#include "symtab.h"
#include "gram.h"
#include "reader.h"
#include "closure.h"
short *rp;
fprintf (stderr, " %2d: .", array[i]);
for (rp = &ritem[array[i]]; *rp >= 0; ++rp)
- fprintf (stderr, " %s", tags[*rp]);
+ fprintf (stderr, " %s", symbols[*rp]->tag);
fprintf (stderr, " (rule %d)\n", -*rp - 1);
}
fputs ("\n\n", stderr);
fprintf (stderr, "FIRSTS\n");
for (i = ntokens; i < nsyms; i++)
{
- fprintf (stderr, "\t%s firsts\n", tags[i]);
+ fprintf (stderr, "\t%s firsts\n", symbols[i]->tag);
for (j = 0; j < nvars; j++)
if (BITISSET (FIRSTS (i), j))
- fprintf (stderr, "\t\t%d (%s)\n", j + ntokens, tags[j + ntokens]);
+ fprintf (stderr, "\t\t%d (%s)\n",
+ j + ntokens, symbols[j + ntokens]->tag);
}
fprintf (stderr, "\n\n");
}
for (i = ntokens; i < nsyms; i++)
{
- fprintf (stderr, "\t%s derives\n", tags[i]);
+ fprintf (stderr, "\t%s derives\n", symbols[i]->tag);
for (j = 0; j <= nrules; j++)
if (BITISSET (FDERIVES (i), j))
{
short *rhsp;
fprintf (stderr, "\t\t%d:", j - 1);
for (rhsp = &ritem[rule_table[j].rhs]; *rhsp >= 0; ++rhsp)
- fprintf (stderr, " %s", tags[*rhsp]);
+ fprintf (stderr, " %s", symbols[*rhsp]->tag);
fputc ('\n', stderr);
}
}
obstack_fgrow4 (&output_obstack,
_("\
Conflict in state %d between rule %d and token %s resolved as %s.\n"),
- state->number, LAruleno[LAno], tags[token], resolution);
+ state->number, LAruleno[LAno], symbols[token]->tag,
+ resolution);
}
#include "system.h"
#include "getargs.h"
+#include "symtab.h"
#include "types.h"
#include "reader.h"
#include "gram.h"
for (i = ntokens; i < nsyms; i++)
{
short *sp;
- fprintf (stderr, "\t%s derives\n", tags[i]);
+ fprintf (stderr, "\t%s derives\n", symbols[i]->tag);
for (sp = derives[i]; *sp > 0; sp++)
{
short *rhsp;
fprintf (stderr, "\t\t%d:", *sp);
for (rhsp = &ritem[rule_table[*sp].rhs]; *rhsp >= 0; ++rhsp)
- fprintf (stderr, " %s", tags[*rhsp]);
+ fprintf (stderr, " %s", symbols[*rhsp]->tag);
fprintf (stderr, " (rule %d)\n", -*rhsp - 1);
}
}
fputs ("RITEM\n", out);
for (i = 0; i < nritems; ++i)
if (ritem[i] >= 0)
- fprintf (out, " %s", tags[ritem[i]]);
+ fprintf (out, " %s", symbols[ritem[i]]->tag);
else
fprintf (out, " (rule %d)\n", -ritem[i] - 1);
fputs ("\n\n", out);
#include "reader.h"
#include "types.h"
#include "LR0.h"
+#include "symtab.h"
#include "gram.h"
#include "complain.h"
#include "lalr.h"
for (k = 0; k < ntokens; ++k)
if (BITISSET (LA (state_table[i]->lookaheadsp + j), j))
fprintf (out, " on %d (%s) -> rule %d\n",
- k, tags[k],
+ k, symbols[k]->tag,
-LAruleno[state_table[i]->lookaheadsp + j] - 1);
}
fprintf (out, "Lookaheads: END\n");
#include "system.h"
#include "getargs.h"
-#include "reader.h"
+#include "symtab.h"
#include "types.h"
#include "gram.h"
#include "reduce.h"
int i;
fputs ("NULLABLE\n", out);
for (i = ntokens; i < nsyms; i++)
- fprintf (out, "\t%s: %s\n", tags[i], nullable[i] ? "yes" : "no");
+ fprintf (out, "\t%s: %s\n", symbols[i]->tag, nullable[i] ? "yes" : "no");
fputs ("\n\n", out);
}
#include "output.h"
#include "lalr.h"
#include "reader.h"
+#include "symtab.h"
#include "conflicts.h"
#include "muscle_tab.h"
/* Be sure not to use twice the same quotearg slot. */
const char *cp =
quotearg_n_style (1, c_quoting_style,
- quotearg_style (escape_quoting_style, tags[i]));
+ quotearg_style (escape_quoting_style, symbols[i]->tag));
/* Width of the next token, including the two quotes, the coma
and the space. */
int strsize = strlen (cp) + 2;
for (i = ntokens; i < nsyms; i++)
/* don't make these for dummy nonterminals made by gensym. */
- if (*tags[i] != '@')
- fprintf (out, "# define NT%s\t%d\n", tags[i], i);
+ if (*symbols[i]->tag != '@')
+ fprintf (out, "# define NT%s\t%d\n", symbols[i]->tag, i);
}
fprintf (out, "\n#endif /* not %s */\n", macro_name);
#include "system.h"
#include "quotearg.h"
#include "files.h"
+#include "symtab.h"
#include "gram.h"
#include "LR0.h"
#include "lalr.h"
sp++;
rule = -(*sp);
- fprintf (out, " %s -> ", escape (tags[rule_table[rule].lhs]));
+ fprintf (out, " %s -> ", escape (symbols[rule_table[rule].lhs]->tag));
for (sp = ritem + rule_table[rule].rhs; sp < sp1; sp++)
- fprintf (out, "%s ", escape (tags[*sp]));
+ fprintf (out, "%s ", escape (symbols[*sp]->tag));
fputc ('.', out);
for (/* Nothing */; *sp >= 0; ++sp)
- fprintf (out, " %s", escape (tags[*sp]));
+ fprintf (out, " %s", escape (symbols[*sp]->tag));
fprintf (out, _(" (rule %d)"), rule - 1);
fputc ('\n', out);
int symbol = state_table[state1]->accessing_symbol;
fprintf (out,
_(" %-4s\tshift, and go to state %d\n"),
- escape (tags[symbol]), state1);
+ escape (symbols[symbol]->tag), state1);
}
if (i > 0)
for (i = 0; i < errp->nerrs; ++i)
if (errp->errs[i])
fprintf (out, _(" %-4s\terror (nonassociative)\n"),
- escape (tags[errp->errs[i]]));
+ escape (symbols[errp->errs[i]]->tag));
if (i > 0)
fputc ('\n', out);
int state1 = shiftp->shifts[i];
int symbol = state_table[state1]->accessing_symbol;
fprintf (out, _(" %-4s\tgo to state %d\n"),
- escape (tags[symbol]), state1);
+ escape (symbols[symbol]->tag), state1);
}
fputc ('\n', out);
int rule = redp->rules[0];
int symbol = rule_table[rule].lhs;
fprintf (out, _(" $default\treduce using rule %d (%s)\n\n"),
- rule - 1, escape (tags[symbol]));
+ rule - 1, escape (symbols[symbol]->tag));
return;
}
for (i = 0; i < ntokens; i++)
if (BITISSET (lookaheadset, i))
fprintf (out, _(" %-4s\t[reduce using rule %d (%s)]\n"),
- escape (tags[i]), default_rule - 1,
- escape2 (tags[rule_table[default_rule].lhs]));
+ escape (symbols[i]->tag), default_rule - 1,
+ escape2 (symbols[rule_table[default_rule].lhs]->tag));
fprintf (out, _(" $default\treduce using rule %d (%s)\n\n"),
- default_rule - 1, escape (tags[rule_table[default_rule].lhs]));
+ default_rule - 1, escape (symbols[rule_table[default_rule].lhs]->tag));
}
else if (state->nlookaheads >= 1)
{
if (state->lookaheadsp + j != default_LA)
fprintf (out,
_(" %-4s\treduce using rule %d (%s)\n"),
- escape (tags[i]),
+ escape (symbols[i]->tag),
LAruleno[state->lookaheadsp + j] - 1,
- escape2 (tags[rule_table[LAruleno[state->lookaheadsp + j]].lhs]));
+ escape2 (symbols[rule_table[LAruleno[state->lookaheadsp + j]].lhs]->tag));
else
defaulted = 1;
if (defaulted)
fprintf (out,
_(" %-4s\treduce using rule %d (%s)\n"),
- escape (tags[i]),
+ escape (symbols[i]->tag),
LAruleno[default_LA] - 1,
- escape2 (tags[rule_table[LAruleno[default_LA]].lhs]));
+ escape2 (symbols[rule_table[LAruleno[default_LA]].lhs]->tag));
defaulted = 0;
fprintf (out,
_(" %-4s\t[reduce using rule %d (%s)]\n"),
- escape (tags[i]),
+ escape (symbols[i]->tag),
LAruleno[state->lookaheadsp + j] - 1,
- escape2 (tags[rule_table[LAruleno[state->lookaheadsp + j]].lhs]));
+ escape2 (symbols[rule_table[LAruleno[state->lookaheadsp + j]].lhs]->tag));
}
}
}
if (default_LA >= 0)
fprintf (out, _(" $default\treduce using rule %d (%s)\n"),
default_rule - 1,
- escape (tags[rule_table[default_rule].lhs]));
+ escape (symbols[rule_table[default_rule].lhs]->tag));
}
}
if (rule_table[i].useful)
{
fprintf (out, _(" %3d %3d %s ->"),
- i - 1, rule_table[i].line, escape (tags[rule_table[i].lhs]));
+ i - 1, rule_table[i].line, escape (symbols[rule_table[i].lhs]->tag));
rule = &ritem[rule_table[i].rhs];
if (*rule >= 0)
while (*rule >= 0)
- fprintf (out, " %s", escape (tags[*rule++]));
+ fprintf (out, " %s", escape (symbols[*rule++]->tag));
else
fprintf (out, " /* %s */", _("empty"));
fputc ('\n', out);
if (token_translations[i] != 2)
{
buffer[0] = 0;
- column = strlen (escape (tags[token_translations[i]]));
- fputs (escape (tags[token_translations[i]]), out);
+ column = strlen (escape (symbols[token_translations[i]]->tag));
+ fputs (escape (symbols[token_translations[i]]->tag), out);
END_TEST (50);
sprintf (buffer, " (%d)", i);
}
buffer[0] = 0;
- fputs (escape (tags[i]), out);
- column = strlen (escape (tags[i]));
+ fputs (escape (symbols[i]->tag), out);
+ column = strlen (escape (symbols[i]->tag));
sprintf (buffer, " (%d)", i);
END_TEST (0);
#include "system.h"
#include "quotearg.h"
#include "files.h"
+#include "symtab.h"
#include "gram.h"
#include "LR0.h"
#include "lalr.h"
if (i)
obstack_1grow (node_obstack, '\n');
obstack_fgrow1 (node_obstack, " %s -> ",
- escape (tags[rule_table[rule].lhs]));
+ escape (symbols[rule_table[rule].lhs]->tag));
for (sp = ritem + rule_table[rule].rhs; sp < sp1; sp++)
- obstack_fgrow1 (node_obstack, "%s ", escape (tags[*sp]));
+ obstack_fgrow1 (node_obstack, "%s ", escape (symbols[*sp]->tag));
obstack_1grow (node_obstack, '.');
for (/* Nothing */; *sp >= 0; ++sp)
- obstack_fgrow1 (node_obstack, " %s", escape (tags[*sp]));
+ obstack_fgrow1 (node_obstack, " %s", escape (symbols[*sp]->tag));
}
}
edge.color = red;
else
edge.color = SHIFT_IS_SHIFT(shiftp, i) ? blue : green;
- edge.label = escape (tags[symbol]);
+ edge.label = escape (symbols[symbol]->tag);
output_edge (&edge, fgraph);
close_edge (fgraph);
}
} symbol_list;
int lineno;
-char **tags;
short *user_toknums;
static symbol_list *grammar;
static int start_flag;
/* A token which translation has already been set? */
if (token_translations[bp->user_token_number] != 2)
complain (_("tokens %s and %s both assigned number %d"),
- tags[token_translations[bp->user_token_number]],
+ symbols[token_translations[bp->user_token_number]]->tag,
bp->tag, bp->user_token_number);
token_translations[bp->user_token_number] = bp->value;
}
int tokno = 1;
int last_user_token_number;
- tags = XCALLOC (char *, nsyms + 1);
user_toknums = XCALLOC (short, nsyms + 1);
symbols = XCALLOC (bucket *, nsyms);
}
symbols[bp->value] = bp;
- tags[bp->value] = bp->tag;
user_toknums[bp->value] = bp->user_token_number;
sassoc[bp->value] = bp->assoc;
}
extern int lineno;
-extern char **tags;
extern short *user_toknums;
#endif /* !READER_H_ */