mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-19 17:23:02 +00:00
* 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:
32
ChangeLog
32
ChangeLog
@@ -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.
|
||||||
|
|||||||
@@ -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. |
|
||||||
|
|||||||
36
src/output.c
36
src/output.c
@@ -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);
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user