mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
Try to make the use of the eoftoken valid. Given that its value
is 0 which was also used as a sentinel in ritem, (i) make sure >= 0 is used instead of > 0 where appropriate, (ii), depend upon nritems instead of the 0-sentinel. * src/gram.h, src/gram.c (nritems): New. Expected to be duplication of nitems, but for the time being... * src/reader.c (packgram): Assert nritems and nitems are equal. * src/LR0.c (allocate_itemsets, new_itemsets): Adjust. * src/closure.c (print_closure, print_fderives): Likewise. * src/gram.c (ritem_print): Likewise. * src/print.c (print_core, print_grammar): Likewise. * src/print_graph.c: Likewise.
This commit is contained in:
16
ChangeLog
16
ChangeLog
@@ -1,3 +1,19 @@
|
||||
2001-12-27 Akim Demaille <akim@epita.fr>
|
||||
|
||||
Try to make the use of the eoftoken valid. Given that its value
|
||||
is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
|
||||
is used instead of > 0 where appropriate, (ii), depend upon nritems
|
||||
instead of the 0-sentinel.
|
||||
|
||||
* src/gram.h, src/gram.c (nritems): New.
|
||||
Expected to be duplication of nitems, but for the time being...
|
||||
* src/reader.c (packgram): Assert nritems and nitems are equal.
|
||||
* src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
|
||||
* src/closure.c (print_closure, print_fderives): Likewise.
|
||||
* src/gram.c (ritem_print): Likewise.
|
||||
* src/print.c (print_core, print_grammar): Likewise.
|
||||
* src/print_graph.c: Likewise.
|
||||
|
||||
2001-12-27 Akim Demaille <akim@epita.fr>
|
||||
|
||||
* src/main.c (main): If there are complains after grammar
|
||||
|
||||
@@ -68,8 +68,8 @@ allocate_itemsets (void)
|
||||
int count = 0;
|
||||
short *symbol_count = XCALLOC (short, nsyms + nuseless_nonterminals);
|
||||
|
||||
for (i = 0; ritem[i]; ++i)
|
||||
if (ritem[i] > 0)
|
||||
for (i = 0; i < nritems; ++i)
|
||||
if (ritem[i] >= 0)
|
||||
{
|
||||
count++;
|
||||
symbol_count[ritem[i]]++;
|
||||
@@ -152,7 +152,7 @@ new_itemsets (void)
|
||||
for (i = 0; i < nitemset; ++i)
|
||||
{
|
||||
int symbol = ritem[itemset[i]];
|
||||
if (symbol > 0)
|
||||
if (symbol >= 0)
|
||||
{
|
||||
if (!kernel_size[symbol])
|
||||
{
|
||||
|
||||
@@ -60,7 +60,7 @@ print_closure (const char *title, short *array, size_t size)
|
||||
{
|
||||
short *rp;
|
||||
fprintf (stderr, " %2d: .", array[i]);
|
||||
for (rp = &ritem[array[i]]; *rp > 0; ++rp)
|
||||
for (rp = &ritem[array[i]]; *rp >= 0; ++rp)
|
||||
fprintf (stderr, " %s", tags[*rp]);
|
||||
fprintf (stderr, " (rule %d)\n", -*rp);
|
||||
}
|
||||
@@ -101,7 +101,7 @@ print_fderives (void)
|
||||
{
|
||||
short *rhsp;
|
||||
fprintf (stderr, "\t\t%d:", j);
|
||||
for (rhsp = ritem + rule_table[j].rhs; *rhsp > 0; ++rhsp)
|
||||
for (rhsp = ritem + rule_table[j].rhs; *rhsp >= 0; ++rhsp)
|
||||
fprintf (stderr, " %s", tags[*rhsp]);
|
||||
fputc ('\n', stderr);
|
||||
}
|
||||
|
||||
@@ -32,6 +32,8 @@ int ntokens;
|
||||
int nvars;
|
||||
|
||||
short *ritem = NULL;
|
||||
int nritems;
|
||||
|
||||
rule_t *rule_table = NULL;
|
||||
short *rprec = NULL;
|
||||
short *rprecsym = NULL;
|
||||
@@ -60,8 +62,8 @@ ritem_print (FILE *out)
|
||||
{
|
||||
int i;
|
||||
fputs ("RITEM\n", out);
|
||||
for (i = 0; ritem[i]; ++i)
|
||||
if (ritem[i] > 0)
|
||||
for (i = 0; i < nritems; ++i)
|
||||
if (ritem[i] >= 0)
|
||||
fprintf (out, " %s", tags[ritem[i]]);
|
||||
else
|
||||
fprintf (out, " (rule %d)\n", -ritem[i]);
|
||||
|
||||
@@ -98,6 +98,7 @@ extern int ntokens;
|
||||
extern int nvars;
|
||||
|
||||
extern short *ritem;
|
||||
extern int nritems;
|
||||
|
||||
extern short *sprec;
|
||||
extern short *sassoc;
|
||||
|
||||
@@ -204,7 +204,7 @@ output_gram (void)
|
||||
yyrhs = XMALLOC (short, yyrhs_size);
|
||||
|
||||
for (sp = ritem + 1, i = 1; *sp; ++sp, ++i)
|
||||
yyrhs[i] = *sp > 0 ? *sp : 0;
|
||||
yyrhs[i] = *sp >= 0 ? *sp : 0;
|
||||
|
||||
output_table_data (&format_obstack, yyrhs,
|
||||
ritem[0], 1, yyrhs_size);
|
||||
|
||||
14
src/print.c
14
src/print.c
@@ -88,7 +88,7 @@ print_core (FILE *out, state_t *state)
|
||||
|
||||
sp1 = sp = ritem + sitems[i];
|
||||
|
||||
while (*sp > 0)
|
||||
while (*sp >= 0)
|
||||
sp++;
|
||||
|
||||
rule = -(*sp);
|
||||
@@ -99,7 +99,7 @@ print_core (FILE *out, state_t *state)
|
||||
|
||||
fputc ('.', out);
|
||||
|
||||
for (/* Nothing */; *sp > 0; ++sp)
|
||||
for (/* Nothing */; *sp >= 0; ++sp)
|
||||
fprintf (out, " %s", escape (tags[*sp]));
|
||||
|
||||
fprintf (out, _(" (rule %d)"), rule);
|
||||
@@ -377,8 +377,8 @@ print_grammar (FILE *out)
|
||||
fprintf (out, _(" %3d %3d %s ->"),
|
||||
i, rule_table[i].line, escape (tags[rule_table[i].lhs]));
|
||||
rule = &ritem[rule_table[i].rhs];
|
||||
if (*rule > 0)
|
||||
while (*rule > 0)
|
||||
if (*rule >= 0)
|
||||
while (*rule >= 0)
|
||||
fprintf (out, " %s", escape (tags[*rule++]));
|
||||
else
|
||||
fprintf (out, " /* %s */", _("empty"));
|
||||
@@ -399,7 +399,7 @@ print_grammar (FILE *out)
|
||||
sprintf (buffer, " (%d)", i);
|
||||
|
||||
for (j = 1; j <= nrules; j++)
|
||||
for (rule = &ritem[rule_table[j].rhs]; *rule > 0; rule++)
|
||||
for (rule = &ritem[rule_table[j].rhs]; *rule >= 0; rule++)
|
||||
if (*rule == token_translations[i])
|
||||
{
|
||||
END_TEST (65);
|
||||
@@ -420,7 +420,7 @@ print_grammar (FILE *out)
|
||||
{
|
||||
if (rule_table[j].lhs == i)
|
||||
left_count++;
|
||||
for (rule = &ritem[rule_table[j].rhs]; *rule > 0; rule++)
|
||||
for (rule = &ritem[rule_table[j].rhs]; *rule >= 0; rule++)
|
||||
if (*rule == i)
|
||||
{
|
||||
right_count++;
|
||||
@@ -455,7 +455,7 @@ print_grammar (FILE *out)
|
||||
sprintf (buffer + strlen (buffer), _(" on right:"));
|
||||
for (j = 1; j <= nrules; j++)
|
||||
{
|
||||
for (rule = &ritem[rule_table[j].rhs]; *rule > 0; rule++)
|
||||
for (rule = &ritem[rule_table[j].rhs]; *rule >= 0; rule++)
|
||||
if (*rule == i)
|
||||
{
|
||||
END_TEST (65);
|
||||
|
||||
@@ -66,7 +66,7 @@ print_core (state_t *state, struct obstack *node_obstack)
|
||||
|
||||
sp1 = sp = ritem + sitems[i];
|
||||
|
||||
while (*sp > 0)
|
||||
while (*sp >= 0)
|
||||
sp++;
|
||||
|
||||
rule = -(*sp);
|
||||
@@ -81,7 +81,7 @@ print_core (state_t *state, struct obstack *node_obstack)
|
||||
|
||||
obstack_1grow (node_obstack, '.');
|
||||
|
||||
for (/* Nothing */; *sp > 0; ++sp)
|
||||
for (/* Nothing */; *sp >= 0; ++sp)
|
||||
obstack_fgrow1 (node_obstack, " %s", escape (tags[*sp]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1764,6 +1764,8 @@ packgram (void)
|
||||
}
|
||||
|
||||
ritem[itemno] = 0;
|
||||
nritems = itemno;
|
||||
assert (nritems == nitems);
|
||||
|
||||
if (trace_flag)
|
||||
ritem_print (stderr);
|
||||
|
||||
Reference in New Issue
Block a user