From e0e5bf84b0e5494553cc1c1c6db599c4033df4df Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Fri, 28 Jun 2002 08:41:45 +0000 Subject: [PATCH] * 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. --- ChangeLog | 32 ++++++++++++++++++++------------ src/conflicts.c | 4 ++-- src/output.c | 36 ++++++++++++++++++------------------ src/reader.h | 4 ++-- 4 files changed, 42 insertions(+), 34 deletions(-) diff --git a/ChangeLog b/ChangeLog index 24a8a794..6603bc49 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,16 @@ +2002-06-28 Akim Demaille + + * 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 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. * src/conflicts.h: Ditto. * src/output.c (token_actions): Use the new name. @@ -10,7 +18,7 @@ confl => conflict_list for better readability. * data/glr.c: Use the new names. * NEWS: Add self to GLR announcement. - + * src/reader.c (free_merger_functions): Cleanup: XFREE->free. * doc/bison.texinfo (GLR Parsers): Make corrections suggested by @@ -19,12 +27,12 @@ * data/bison.glr: Change name to glr.c * data/glr.c: Renamed from bison.glr. * 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.c (symbol_list_new): Initialize dprec and merger fields. - + Originally 2002-06-16 Paul Hilfinger * data/bison.glr: Be sure to restore the @@ -44,7 +52,7 @@ yytokenp argument; now part of stack. (yychar): Define to behave as documented. (yyclearin): Ditto. - + Originally 2002-05-14 Paul Hilfinger * src/reader.h: Add declaration for free_merger_functions. @@ -59,9 +67,9 @@ * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list, conflict_list_cnt, conflict_list_free): New variables. (table_grow): Also grow conflict_table. - (prepare_rules): Output dprec and merger tables. + (prepare_rules): Output dprec and merger tables. (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 are spaces for the conflict lists. (save_row): Also save conflict information. @@ -81,7 +89,7 @@ * src/conflicts.c (count_rr_conflicts): Augment to optionally count all pairs of conflicting reductions, rather than just all tokens 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. (conflicts_print): Ditto. (count_total_conflicts): New function. @@ -111,13 +119,13 @@ * tests/testsuite.at: Include cxx-gram.at. * tests/Makefile.am: Add cxx-gram.at. - + * src/parse-gram.y: * src/scan-gram.l: Add %dprec, %glr-parser, %merge. * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser. - + 2002-06-27 Akim Demaille * src/options.h, src/options.c: Remove. diff --git a/src/conflicts.c b/src/conflicts.c index 4b576894..f9bb23a0 100644 --- a/src/conflicts.c +++ b/src/conflicts.c @@ -432,7 +432,7 @@ conflicts_output (FILE *out) int conflicts_total_count (void) { - int i; + unsigned i; int count; /* Conflicts by state. */ @@ -445,7 +445,7 @@ conflicts_total_count (void) } return count; } - + /*------------------------------------------. | Reporting the total number of conflicts. | diff --git a/src/output.c b/src/output.c index 5175fb3f..a15570a7 100644 --- a/src/output.c +++ b/src/output.c @@ -378,8 +378,8 @@ conflict_row (state_t *state) if (! glr_parser) return; - for (j = 0; j < ntokens; j += 1) - if (conflrow[j]) + for (j = 0; j < ntokens; j += 1) + if (conflrow[j]) { conflrow[j] = conflict_list_cnt; @@ -388,14 +388,14 @@ conflict_row (state_t *state) for (i = 0; i < state->nlookaheads; i += 1) if (bitset_test (state->lookaheads[i], j) && actrow[j] != -state->lookaheads_rule[i]->number) - { + { assert (conflict_list_free > 0); - conflict_list[conflict_list_cnt] + conflict_list[conflict_list_cnt] = state->lookaheads_rule[i]->number; conflict_list_cnt += 1; conflict_list_free -= 1; } - + /* Leave a 0 at the end */ assert (conflict_list_free > 0); conflict_list_cnt += 1; @@ -519,7 +519,7 @@ action_row (state_t *state) /* GLR parsers need space for conflict lists, so we can't 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, which means "use the default". */ @@ -554,10 +554,10 @@ save_row (int state) { int i; int count; - short *sp; - short *sp1; - short *sp2; - unsigned int *sp3; + short *sp = NULL; + short *sp1 = NULL; + short *sp2 = NULL; + unsigned int *sp3 = NULL; count = 0; for (i = 0; i < ntokens; i++) @@ -570,8 +570,8 @@ save_row (int state) froms[state] = sp1 = sp = XCALLOC (short, count); tos[state] = sp2 = XCALLOC (short, count); if (glr_parser) - conflict_tos[state] = sp3 = XCALLOC (unsigned int, count); - else + conflict_tos[state] = sp3 = XCALLOC (unsigned int, count); + else conflict_tos[state] = NULL; for (i = 0; i < ntokens; i++) @@ -612,8 +612,8 @@ token_actions (void) conflict_list = XCALLOC (unsigned int, 1 + 2 * nconflict); conflict_list_free = 2 * nconflict; conflict_list_cnt = 1; - } - else + } + else conflict_list_free = conflict_list_cnt = 0; for (i = 0; i < nstates; ++i) @@ -667,9 +667,9 @@ merger_output (FILE *out) merger_list* p; 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", n, p->name); else @@ -1103,9 +1103,9 @@ output_conflicts (void) if (! glr_parser) 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); - 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); XFREE (conflict_table); diff --git a/src/reader.h b/src/reader.h index 956fec13..321740a0 100644 --- a/src/reader.h +++ b/src/reader.h @@ -29,7 +29,7 @@ typedef struct merger_list struct merger_list* next; const char* name; const char* type; -} +} merger_list; typedef struct gram_control_s @@ -80,7 +80,7 @@ void grammar_current_rule_prec_set PARAMS ((symbol_t *precsym, location_t l)); void grammar_current_rule_dprec_set PARAMS ((int dprec, 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)); void grammar_current_rule_symbol_append PARAMS ((symbol_t *symbol, -- 2.45.2