* src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.

* src/conflicts.c (conflicts_total_count): `i' is unsigned, to
pacify GCC.
* src/output.c (save_row): Initialize all the variables to pacify GCC.
(merger_output): static.
This commit is contained in:
Akim Demaille
2002-06-28 08:41:45 +00:00
parent b5480d74b8
commit e0e5bf84b0
4 changed files with 42 additions and 34 deletions

View File

@@ -1,8 +1,16 @@
2002-06-28 Akim Demaille <akim@epita.fr>
* src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
* src/conflicts.c (conflicts_total_count): `i' is unsigned, to
pacify GCC.
* src/output.c (save_row): Initialize all the variables to pacify GCC.
(merger_output): static.
2002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU> 2002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
Accumulated changelog for new GLR parsing features. Accumulated changelog for new GLR parsing features.
* src/conflicts.c (count_total_conflicts): Change name to * src/conflicts.c (count_total_conflicts): Change name to
conflicts_total_count. conflicts_total_count.
* src/conflicts.h: Ditto. * src/conflicts.h: Ditto.
* src/output.c (token_actions): Use the new name. * src/output.c (token_actions): Use the new name.
@@ -10,7 +18,7 @@
confl => conflict_list for better readability. confl => conflict_list for better readability.
* data/glr.c: Use the new names. * data/glr.c: Use the new names.
* NEWS: Add self to GLR announcement. * NEWS: Add self to GLR announcement.
* src/reader.c (free_merger_functions): Cleanup: XFREE->free. * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
* doc/bison.texinfo (GLR Parsers): Make corrections suggested by * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
@@ -19,12 +27,12 @@
* data/bison.glr: Change name to glr.c * data/bison.glr: Change name to glr.c
* data/glr.c: Renamed from bison.glr. * data/glr.c: Renamed from bison.glr.
* data/Makefile.am: Add glr.c * data/Makefile.am: Add glr.c
* src/getargs.c: * src/getargs.c:
* src/symlist.h: Add dprec and merger fields to symbol_list_s. * src/symlist.h: Add dprec and merger fields to symbol_list_s.
* src/symlist.c (symbol_list_new): Initialize dprec and merger fields. * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU> Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
* data/bison.glr: Be sure to restore the * data/bison.glr: Be sure to restore the
@@ -44,7 +52,7 @@
yytokenp argument; now part of stack. yytokenp argument; now part of stack.
(yychar): Define to behave as documented. (yychar): Define to behave as documented.
(yyclearin): Ditto. (yyclearin): Ditto.
Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU> Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
* src/reader.h: Add declaration for free_merger_functions. * src/reader.h: Add declaration for free_merger_functions.
@@ -59,9 +67,9 @@
* src/output.c (conflict_tos, conflrow, conflict_table, conflict_list, * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
conflict_list_cnt, conflict_list_free): New variables. conflict_list_cnt, conflict_list_free): New variables.
(table_grow): Also grow conflict_table. (table_grow): Also grow conflict_table.
(prepare_rules): Output dprec and merger tables. (prepare_rules): Output dprec and merger tables.
(conflict_row): New function. (conflict_row): New function.
(action_row): Output conflict lists for GLR parser. Don't use (action_row): Output conflict lists for GLR parser. Don't use
default reduction in conflicted states for GLR parser so that there default reduction in conflicted states for GLR parser so that there
are spaces for the conflict lists. are spaces for the conflict lists.
(save_row): Also save conflict information. (save_row): Also save conflict information.
@@ -81,7 +89,7 @@
* src/conflicts.c (count_rr_conflicts): Augment to optionally count * src/conflicts.c (count_rr_conflicts): Augment to optionally count
all pairs of conflicting reductions, rather than just all tokens all pairs of conflicting reductions, rather than just all tokens
causing conflicts. Needed to size conflict tables. causing conflicts. Needed to size conflict tables.
(conflicts_output): Modify call to count_rr_conflicts for new (conflicts_output): Modify call to count_rr_conflicts for new
interface. interface.
(conflicts_print): Ditto. (conflicts_print): Ditto.
(count_total_conflicts): New function. (count_total_conflicts): New function.
@@ -111,13 +119,13 @@
* tests/testsuite.at: Include cxx-gram.at. * tests/testsuite.at: Include cxx-gram.at.
* tests/Makefile.am: Add cxx-gram.at. * tests/Makefile.am: Add cxx-gram.at.
* src/parse-gram.y: * src/parse-gram.y:
* src/scan-gram.l: Add %dprec, %glr-parser, %merge. * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
* src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser. * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
2002-06-27 Akim Demaille <akim@epita.fr> 2002-06-27 Akim Demaille <akim@epita.fr>
* src/options.h, src/options.c: Remove. * src/options.h, src/options.c: Remove.

View File

@@ -432,7 +432,7 @@ conflicts_output (FILE *out)
int int
conflicts_total_count (void) conflicts_total_count (void)
{ {
int i; unsigned i;
int count; int count;
/* Conflicts by state. */ /* Conflicts by state. */
@@ -445,7 +445,7 @@ conflicts_total_count (void)
} }
return count; return count;
} }
/*------------------------------------------. /*------------------------------------------.
| Reporting the total number of conflicts. | | Reporting the total number of conflicts. |

View File

@@ -378,8 +378,8 @@ conflict_row (state_t *state)
if (! glr_parser) if (! glr_parser)
return; return;
for (j = 0; j < ntokens; j += 1) for (j = 0; j < ntokens; j += 1)
if (conflrow[j]) if (conflrow[j])
{ {
conflrow[j] = conflict_list_cnt; conflrow[j] = conflict_list_cnt;
@@ -388,14 +388,14 @@ conflict_row (state_t *state)
for (i = 0; i < state->nlookaheads; i += 1) for (i = 0; i < state->nlookaheads; i += 1)
if (bitset_test (state->lookaheads[i], j) if (bitset_test (state->lookaheads[i], j)
&& actrow[j] != -state->lookaheads_rule[i]->number) && actrow[j] != -state->lookaheads_rule[i]->number)
{ {
assert (conflict_list_free > 0); assert (conflict_list_free > 0);
conflict_list[conflict_list_cnt] conflict_list[conflict_list_cnt]
= state->lookaheads_rule[i]->number; = state->lookaheads_rule[i]->number;
conflict_list_cnt += 1; conflict_list_cnt += 1;
conflict_list_free -= 1; conflict_list_free -= 1;
} }
/* Leave a 0 at the end */ /* Leave a 0 at the end */
assert (conflict_list_free > 0); assert (conflict_list_free > 0);
conflict_list_cnt += 1; conflict_list_cnt += 1;
@@ -519,7 +519,7 @@ action_row (state_t *state)
/* GLR parsers need space for conflict lists, so we can't /* GLR parsers need space for conflict lists, so we can't
default conflicted entries. For non-conflicted entries default conflicted entries. For non-conflicted entries
or as long as we are not building a GLR parser, or as long as we are not building a GLR parser,
actions that match the default are replaced with zero, actions that match the default are replaced with zero,
which means "use the default". */ which means "use the default". */
@@ -554,10 +554,10 @@ save_row (int state)
{ {
int i; int i;
int count; int count;
short *sp; short *sp = NULL;
short *sp1; short *sp1 = NULL;
short *sp2; short *sp2 = NULL;
unsigned int *sp3; unsigned int *sp3 = NULL;
count = 0; count = 0;
for (i = 0; i < ntokens; i++) for (i = 0; i < ntokens; i++)
@@ -570,8 +570,8 @@ save_row (int state)
froms[state] = sp1 = sp = XCALLOC (short, count); froms[state] = sp1 = sp = XCALLOC (short, count);
tos[state] = sp2 = XCALLOC (short, count); tos[state] = sp2 = XCALLOC (short, count);
if (glr_parser) if (glr_parser)
conflict_tos[state] = sp3 = XCALLOC (unsigned int, count); conflict_tos[state] = sp3 = XCALLOC (unsigned int, count);
else else
conflict_tos[state] = NULL; conflict_tos[state] = NULL;
for (i = 0; i < ntokens; i++) for (i = 0; i < ntokens; i++)
@@ -612,8 +612,8 @@ token_actions (void)
conflict_list = XCALLOC (unsigned int, 1 + 2 * nconflict); conflict_list = XCALLOC (unsigned int, 1 + 2 * nconflict);
conflict_list_free = 2 * nconflict; conflict_list_free = 2 * nconflict;
conflict_list_cnt = 1; conflict_list_cnt = 1;
} }
else else
conflict_list_free = conflict_list_cnt = 0; conflict_list_free = conflict_list_cnt = 0;
for (i = 0; i < nstates; ++i) for (i = 0; i < nstates; ++i)
@@ -667,9 +667,9 @@ merger_output (FILE *out)
merger_list* p; merger_list* p;
fputs ("m4_define([b4_mergers], \n[[", out); fputs ("m4_define([b4_mergers], \n[[", out);
for (n = 1, p = merge_functions; p != NULL; n += 1, p = p->next) for (n = 1, p = merge_functions; p != NULL; n += 1, p = p->next)
{ {
if (p->type[0] == '\0') if (p->type[0] == '\0')
fprintf (out, " case %d: yyval = %s (*yy0, *yy1); break;\n", fprintf (out, " case %d: yyval = %s (*yy0, *yy1); break;\n",
n, p->name); n, p->name);
else else
@@ -1103,9 +1103,9 @@ output_conflicts (void)
if (! glr_parser) if (! glr_parser)
return; return;
muscle_insert_unsigned_int_table ("conflict_list_heads", conflict_table, muscle_insert_unsigned_int_table ("conflict_list_heads", conflict_table,
conflict_table[0], 1, high+1); conflict_table[0], 1, high+1);
muscle_insert_unsigned_int_table ("conflicting_rules", conflict_list, muscle_insert_unsigned_int_table ("conflicting_rules", conflict_list,
conflict_list[0], 1, conflict_list_cnt); conflict_list[0], 1, conflict_list_cnt);
XFREE (conflict_table); XFREE (conflict_table);

View File

@@ -29,7 +29,7 @@ typedef struct merger_list
struct merger_list* next; struct merger_list* next;
const char* name; const char* name;
const char* type; const char* type;
} }
merger_list; merger_list;
typedef struct gram_control_s typedef struct gram_control_s
@@ -80,7 +80,7 @@ void grammar_current_rule_prec_set PARAMS ((symbol_t *precsym,
location_t l)); location_t l));
void grammar_current_rule_dprec_set PARAMS ((int dprec, void grammar_current_rule_dprec_set PARAMS ((int dprec,
location_t l)); location_t l));
void grammer_current_rule_merge_set PARAMS ((const char* name, void grammar_current_rule_merge_set PARAMS ((const char* name,
location_t l)); location_t l));
void grammar_current_rule_symbol_append PARAMS ((symbol_t *symbol, void grammar_current_rule_symbol_append PARAMS ((symbol_t *symbol,