]> git.saurik.com Git - bison.git/blame_incremental - ChangeLog
Fixes from Jim Meyering.
[bison.git] / ChangeLog
... / ...
CommitLineData
12002-09-27 Akim Demaille <akim@epita.fr>
2
3 Version 1.49c.
4
52002-09-27 Akim Demaille <akim@epita.fr>
6
7 * configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7.
8 (Because of AC_LIBSOURCE).
9
102002-09-27 Akim Demaille <akim@epita.fr>
11
12 Playing with Autoscan.
13
14 * configure.ac: Remove the old LIBOBJ tweaks.
15 (AC_REPLACE_FUNCS): Add strrchr and strtol.
16 * lib/strrchr.c: New.
17 * lib/strtol.c: New, from the Coreutils 4.5.1.
18
192002-09-27 Akim Demaille <akim@epita.fr>
20
21 Playing with Autoscan.
22
23 * m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New.
24 * lib/Makefile.am (libbison_a_SOURCES): No longer include
25 argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd.
26 * lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the
27 Coreutils 4.5.1.
28
292002-09-24 Akim Demaille <akim@epita.fr>
30
31 * doc/bison.texinfo (Stack Overflow): xref to Recursion.
32 (Frequently Asked Questions, Parser Stack Overflow): New.
33
342002-09-13 Akim Demaille <akim@epita.fr>
35
36 Playing with autoscan.
37
38 * src/reader.c (get_merge_function): Use xstrdup, not strdup.
39 * src/files.c (skeleton_find): Remove, unused.
40 * m4/memcmp.m4: New, from the Coreutils 4.5.1.
41 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP.
42
432002-09-13 Akim Demaille <akim@epita.fr>
44
45 * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3.
46 * Makefile.am (AUTOMAKE_OPTIONS): Don't.
47
482002-09-13 Akim Demaille <akim@epita.fr>
49
50 * configure.ac: Require 2.54.
51 s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/.
52 s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/.
53 * m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4:
54 Remove, provided by Autoconf macros.
55
562002-09-12 Akim Demaille <akim@epita.fr>
57
58 * m4/prereq.m4: Update, from Coreutils 4.5.1.
59
602002-09-12 Akim Demaille <akim@epita.fr>
61
62 * m4/prereq.m4: Update, from Fileutils 4.1.5.
63 * configure.ac (jm_PREREQ_TEMPNAME): Invoke it.
64 Reported by Martin Mokrejs.
65
662002-09-10 Akim Demaille <akim@epita.fr>
67
68 * src/parse-gram.y: Associate a human readable string to each
69 token type.
70 * tests/regression.at (Invalid inputs): Adjust.
71
722002-09-10 Gary V. Vaughan <gary@gnu.org>
73
74 * tests/Makefile.am ($(srcdir)/package.m4): Bison now ships
75 with an Autoconf-2.5x style configure.ac.
76
772002-09-06 Paul Eggert <eggert@twinsun.com>
78
79 * doc/bison.texinfo (Conditions): Make explicit that the GPL
80 exception applies only to yacc.c. This is a modification of a
81 patch originally suggested by Akim Demaille.
82
832002-09-06 Akim Demaille <akim@epita.fr>
84
85 * data/c.m4 (b4_copyright): Move the GPL exception comment from
86 here to...
87 * data/yacc.c: here.
88
89 * data/lalr1.cc (struct yyltype): Don't define it, since we use
90 LocationType.
91 (b4_ltype): Default to yy::Location from location.hh.
92
932002-09-04 Jim Meyering <jim@meyering.net>
94
95 * data/yacc.c: Guard the declaration of yytoknum also with
96 `#ifdef YYPRINT', so it is declared only when used.
97
982002-09-04 Akim Demaille <akim@epita.fr>
99
100 * configure.in: Rename as...
101 * configure.ac: this.
102 Bump to 1.49c.
103
1042002-09-04 Akim Demaille <akim@epita.fr>
105
106 * src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
107 * src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
108 translate maintainer only messages.
109
1102002-08-12 Paul Eggert <eggert@twinsun.com>
111
112 Version 1.49b.
113
114 * Makefile.am (SUBDIRS): Remove intl.
115 (DISTCLEANFILES): Remove.
116 * NEWS: Mention that GNU M4 is now required. Clarify what is
117 meant by "larger grammars". Mention the pt_BR translation.
118 * configure.in (AC_CHECK_DECLS): Add getenv, getopt.
119 (AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var.
120 Bump version from 0.11.2 to 0.11.5.
121 (BISON_PREREQ_STAGE): Remove.
122 (AM_GNU_GETTEXT): Use external gettext.
123 (AC_OUTPUT): Remove intl/Makefile.
124
125 * config/depcomp, config/install-sh: Sync with Automake 1.6.3.
126
127 * data/glr.c: Include string.h, for strlen.
128 (yyreportParseError): Use size_t for yysize.
129 (yy_yypstack): No longer nested inside yypstates, as nested
130 functions are not portable. Do not assume size_t is the
131 same width as int.
132 (yypstates): Do not assume that ptrdiff_t is the same width
133 as int, and similarly for yyposn and YYINDEX.
134
135 * data/yacc.c: Fix comment about `$$ = $1': it can copy garbage.
136
137 * lib/Makefile.am (INCLUDES): Do not include from the intl
138 directory, which has been removed.
139 * src/Makefile.am (INCLUDES): Likewise.
140
141 * lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h.
142 (bitsets_sources, additional_bitsets_sources, timevars_sources):
143 New vars.
144
145 * lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension.
146 * tests/Makefile.am (EXTRA_DIST): Likewise.
147
148 * lib/abitset.c (abitset_reverse_list, ebitset_reverse_list):
149 Do not assume that bitset_windex is the same width as unsigned.
150
151 * lib/abitset.c (abitset_unused_clear): Do not assume that
152 bitset_word is the same width as int.
153 * lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise.
154 * lib/bitset.h (bitset_set, bitset_reset): Likewise.
155 * lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise.
156 * lib/ebitset.c (ebitset_set, ebitset_reset): Likewise.
157 * lib/lbitset.c (lbitset_set, lbitset_reset): Likewise.
158
159 * lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for
160 portability to one's complement hosts!).
161 * lib/ebitset.c (ebitset_op1): Likewise.
162 * lib/lbitset.c (lbitset_op1): Likewise.
163
164 * lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar.
165 * lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
166 lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c:
167 Sync with fileutils.
168 * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
169 lib/gettext.h: Sync with diffutils.
170
171 * lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c,
172 lib/strspn.c, lib/tempname.c: Use GPL, not LGPL.
173
174 * lib/obstack.c, lib/obstack.h: Sync with fileutils, except use
175 PROTOTYPES to check for prototypes, and "defined __STDC__" to
176 check for void *.
177
178 * lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not
179 size_t; the old version tried to do this but casted improperly.
180 (bitset_bindex, bitset_windex): Now size_t, not unsigned long.
181 (bitset_test): Now returns int, not unsigned long.
182
183 * lib/bitset_stats.c: Include "gettext.h".
184 (_): New macro.
185 (bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't
186 name locals "index", as it generates unnecessary warnings on some
187 hosts that have an "index" function.
188
189 * lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print,
190 bitset_stats_read, bitset_stats_write): Wrap strings in _() if
191 they need translation.
192 * src/LR0.c (state_list_append, new_itemsets, get_state,
193 append_states, generate_states): Likewise.
194 * src/assoc.c (assoc_to_string): Likewise.
195 * src/closure.c (print_closure, set_firsts, closure): Likewise.
196 * src/gram.c (grammar_dump): Likewise.
197 * src/injections.c (injections_compute): Likewise.
198 * src/lalr.c (lookaheads_print): Likewise.
199 * src/relation.c (relation_transpose): Likewise.
200 * src/scan-gram.l: Likewise.
201 * src/tables.c (table_grow, pack_vector): Likewise.
202
203 * m4/Makefile.am (EXTRA_DIST): Remove codeset.m4,
204 glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4.
205 * m4/malloc.m4, m4/realloc.m4: Sync with diffutils.
206 * m4/mbstate_t.m4: Sync with fileutils.
207 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T.
208
209 * po/LINGUAS: Add pt_BR.
210 * po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c,
211 src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c,
212 lib/timevar.c.
213 Use src/parse-gram.y instead of src/parse-gram.c, as the gettext
214 manual recommends.
215 Similarly, use src/scan-gram.l instead of src/scan-gram.c.
216
217 * src/complain.c (strerror_r): Remove decl; not needed.
218 (strerror): Use same pattern as ../lib/error.c.
219
220 * src/files.c, src/files.h (compute_header_macro): Remove; unused.
221
222 * src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int.
223
224 * src/main.c (main): Cast result of bindtextdomain and textdomain
225 to void, to avoid a GCC warning when --disable-nls is in effect.
226
227 * src/scan-gram.l: Use strings rather than escapes when possible,
228 to minimize the number of warnings from xgettext.
229 (handle_action_dollar, handle_action_at): Don't use isdigit,
230 as it mishandles negative chars and it may not work as expected
231 outside the C locale.
232
233 * src/symtab.c (symbol_get): Don't cast LHS of an assignment;
234 this is a GCC extension and is not portable to other compilers.
235
236 * src/system.h (alloca): Use same pattern as ../lib/error.c.
237 Do not include <ctype.h>; no longer needed.
238 Do not include <malloc.h>; no longer needed (and generates
239 warnings on OpenBSD 3.0).
240
241 * tests/cxx-type.at (yylex): Do not pass signed char to isupper;
242 it's not portable.
243
244 * tests/regression.at: Do not use 'cc -c input.c -o input';
245 Sun C rejects this. Instead, use 'cc -c input.c -o input.o'.
246
247 * tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero
248 exit status as failure, not just exit status 1. Sun C exits
249 with status 2 sometimes.
250
251 * tests/torture.at (AT_INCREASE_DATA_SIZE): New macro.
252 Use it for the two large tests.
253
2542002-08-02 Akim Demaille <akim@epita.fr>
255
256 * src/conflicts.c (conflicts_output): Don't output rules never
257 reduced here, since anyway that computation doesn't work.
258 * src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
259 (rule_useless_p, rule_never_reduced_p): New.
260 (grammar_rules_partial_print): Use a filter instead of a range.
261 Display the title only if needed.
262 (grammar_rules_print): Adjust.
263 (grammar_rules_never_reduced_report): New.
264 * src/tables.c (action_row): Move the computation of rules never
265 reduced to...
266 (token_actions): here.
267 * src/main.c (main): Make the parser before making the report, so
268 that rules never reduced are computed.
269 Call grammar_rules_never_reduced_report.
270 * src/print.c (print_results): Report rules never reduced.
271 * tests/conflicts.at, tests/reduce.at: Adjust.
272
2732002-08-01 Akim Demaille <akim@epita.fr>
274
275 Instead of attaching lookaheads and duplicating the rules being
276 reduced by a state, attach the lookaheads to the reductions.
277
278 * src/state.h (state_t): Remove the `lookaheads',
279 `lookaheads_rule' member.
280 (reductions_t): Add a `lookaheads' member.
281 Use a regular array for the `rules'.
282 * src/state.c (reductions_new): Initialize the lookaheads member
283 to 0.
284 (state_rule_lookaheads_print): Adjust.
285 * src/state.h, src/state.c (state_reductions_find): New.
286 * src/conflicts.c (resolve_sr_conflict, set_conflicts)
287 (count_rr_conflicts): Adjust.
288 * src/lalr.c (LArule): Remove.
289 (add_lookback_edge): Adjust.
290 (state_lookaheads_count): New.
291 (states_lookaheads_initialize): Merge into...
292 (initialize_LA): this.
293 (lalr_free): Adjust.
294 * src/main.c (main): Don't free nullable and derives too early: it
295 is used by --verbose.
296 * src/print.c, src/print_graph.c, src/tables.c: Adjust.
297
2982002-08-01 Akim Demaille <akim@epita.fr>
299
300 * src/derives.h, src/derives.c (derives): A `rule_t***' instead of
301 `rule_number_t**'.
302 (set_derives, free_derives): Rename as...
303 (derives_compute, derives_free): this.
304 Adjust all dependencies.
305 * src/nullable.c (set_nullable, free_nullable): Rename as...
306 (nullable_compute, nullable_free): these.
307 (rule_list_t): Store rule_t *, not rule_number_t.
308 * src/state.c (state_rule_lookaheads_print): Directly compare rule
309 pointers, instead of their numbers.
310 * src/main.c (main): Call nullable_free, and derives_free earlier,
311 as they were lo longer used.
312
3132002-08-01 Akim Demaille <akim@epita.fr>
314
315 * lib/timevar.c (get_time): Include children time.
316 * src/lalr.h (LA, LArule): Don't export them: used with the
317 state_t.
318 * src/lalr.c (LA, LArule): Static.
319 * src/lalr.h, src/lalr.c (lalr_free): New.
320 * src/main.c (main): Call it.
321 * src/tables.c (pack_vector): Check whether loc is >= to the
322 table_size, not >.
323 (pack_tables): Don't free froms, tos, conflict_tos, and pos...
324 (tables_generate): do it, since that's also it which allocates
325 them.
326 Don't free LA and LArule, main does.
327
3282002-07-31 Akim Demaille <akim@epita.fr>
329
330 Separate parser tables computation and output.
331
332 * src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
333 (conflict_list, conflict_list_cnt, table, check, table_ninf)
334 (yydefgoto, yydefact, high): Move to...
335 * src/tables.h, src/tables.c: here.
336 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
337 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
338 (symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
339 (froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
340 (ACTION_MIN, actrow, order, nentries, pos, conflrow)
341 (conflict_list_free, table_size, lowzero, table_grow, conflict_row)
342 (action_row, save_row, token_actions, save_column, default_goto)
343 (goto_actions, sort_actions, matching_state, pack_vector)
344 (table_ninf_remap, pack_table, prepare_actions): Move to...
345 * src/tables.c: here.
346 * src/tables.h, src/tables.c(tables_generate, tables_free): New.
347 * src/output.c (token_actions, output_base, output_conflicts)
348 (output_check): Merge into...
349 (prepare_actions): this.
350 (actions_output): Rename as...
351 (user_actions_output): this.
352 * src/main.c (main): Call tables_generate and tables_free.
353
3542002-07-31 Akim Demaille <akim@epita.fr>
355
356 Steal GCC's --time-report support.
357
358 * lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
359 stolen/adjusted from GCC.
360 * m4/stage.m4: Remove time related checks.
361 * m4/timevar.m4: New.
362 * configure.in: Adjust.
363 * src/system.h: Adjust to using timevar.h.
364 * src/getargs.h, src/getargs.c: Support trace_time for
365 --trace=time.
366 * src/main.c (stage): Remove.
367 (main): Replace `stage' invocations with timevar calls.
368 * src/output.c: Insert pertinent timevar calls.
369
3702002-07-31 Akim Demaille <akim@epita.fr>
371
372 Let --trace have arguments.
373
374 * src/getargs.h (enum trace_e): New.
375 * src/getargs.c (trace_args, trace_types, trace_argmatch): New.
376 (long_options, short_options): --trace/-T takes an optional
377 argument.
378 Change all the uses of trace_flag to reflect the new flags.
379 * tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.
380
381 Strengthen `stage' portability.
382
383 * m4/stage.m4 (BISON_PREREQ_STAGE): New.
384 * configure.in: Use it.
385 Don't check for malloc.h and sys/times.h.
386 * src/system.h: Include them when appropriate.
387 * src/main.c (stage): Compile only when mallinfo, struct mallinfo,
388 times and struct tms are available.
389
3902002-07-30 Akim Demaille <akim@epita.fr>
391
392 In verbose parse error message, don't report `error' as an
393 expected token.
394 * tests/actions.at (Printers and Destructors): Adjust.
395 * tests/calc.at (Calculator $1): Adjust.
396 * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
397 error message, do not report the parser accepts the error token in
398 that state.
399
4002002-07-30 Akim Demaille <akim@epita.fr>
401
402 Normalize conflict related messages.
403
404 * src/complain.h, src/complain.c (warn, complain): New.
405 * src/conflicts.c (conflicts_print): Use them.
406 (conflict_report_yacc): New, extracted from...
407 (conflicts_print): here.
408 * tests/conflicts.at, tests/existing.at: Adjust.
409
4102002-07-30 Akim Demaille <akim@epita.fr>
411
412 Report rules which are never reduced by the parser: those hidden
413 by conflicts.
414
415 * src/LR0.c (save_reductions): Don't make the final state too
416 different: save its reduction (accept) instead of having a state
417 without any action (no shift or goto, no reduce).
418 Note: the final state is now a ``regular'' state, i.e., the
419 parsers now contain `reduce 0' as default reduction.
420 Nevertheless, since they decide to `accept' when yystate =
421 final_state, they still will not reduce rule 0.
422 * src/print.c (print_actions, print_reduction): Adjust.
423 * src/output.c (action_row): Track reduced rules.
424 (token_actions): Report rules never reduced.
425 * tests/conflicts.at, tests/regression.at: Adjust.
426
4272002-07-30 Akim Demaille <akim@epita.fr>
428
429 `stage' was accidently included in a previous patch.
430 Initiate its autoconfiscation.
431
432 * configure.in: Look for malloc.h and sys/times.h.
433 * src/main.c (stage): Adjust.
434 Report only when trace_flag.
435
4362002-07-29 Akim Demaille <akim@epita.fr>
437
438 * src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
439 state_number_t.
440 (errs_t): symbol_t*, not symbol_number_t.
441 (reductions_t): rule_t*, not rule_number_t.
442 (FOR_EACH_SHIFT): New.
443 * src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
444 * src/print.c, src/print_graph.c: Adjust.
445
4462002-07-29 Akim Demaille <akim@epita.fr>
447
448 Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.
449
450 * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
451 (endtoken, accept): these.
452 * src/reader.c (reader): Set endtoken's default tag to "$end".
453 Set undeftoken's tag to "$undefined" instead of "$undefined.".
454 * doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
455 Adjust.
456
4572002-07-29 Akim Demaille <akim@epita.fr>
458
459 * src/reduce.c (reduce_grammar): When the language is empty,
460 complain about the start symbol, not the axiom.
461 Use its location.
462 * tests/reduce.at (Empty Language): New.
463
4642002-07-26 Akim Demaille <akim@epita.fr>
465
466 * src/reader.h, src/reader.c (gram_error): ... can't get
467 yycontrol without making too strong assumptions on the parser
468 itself.
469 * src/output.c (prepare_tokens): Use the real 0th value of
470 token_translations instead of `0'.
471 * src/parse-gram.y (yyerror): Don't rely on yycontrol being
472 visible here.
473 * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
474 for the time being: %locations ought to provide it to yyerror.
475
4762002-07-25 Akim Demaille <akim@epita.fr>
477
478 * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
479 * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
480 * tests/regression.at (Web2c Actions): Adjust.
481
4822002-07-25 Akim Demaille <akim@epita.fr>
483
484 Stop storing rules from 1 to nrules + 1.
485
486 * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
487 * src/nullable.c, src/output.c, src/print.c, src/reader.c
488 * src/reduce.c: Allocate and free from &rules[0], not &rules[1].
489 Iterate from 0 to nrules.
490 Use rule_number_as_item_number and item_number_as_rule_number.
491 Adjust to `derive' now containing possibly 0.
492 * src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
493 Handle the `- 1' part in rule numbers from/to item numbers.
494 * src/conflicts.c (log_resolution): Fix the message which reversed
495 shift and reduce.
496 * src/output.c (action_row): Initialize default_rule to -1.
497 (token_actions): Adjust.
498 * tests/sets.at (Nullable, Firsts): Fix the previously bogus
499 expected output.
500 * tests/conflicts.at (Resolved SR Conflicts): Likewise.
501
5022002-07-25 Akim Demaille <akim@epita.fr>
503
504 * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
505 (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
506 (b4_c_knr_arg_decl): New.
507 * data/yacc.c: Use it to define yysymprint, yydestruct, and
508 yyreport_parse_error.
509
5102002-07-25 Akim Demaille <akim@epita.fr>
511
512 * data/yacc.c (yyreport_parse_error): New, extracted from...
513 (yyparse): here.
514 (yydestruct, yysymprint): Move above yyparse.
515 Be K&R compliant.
516
5172002-07-25 Akim Demaille <akim@epita.fr>
518
519 * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
520 replace...
521 (b4_sint_type, b4_uint_type): these.
522 * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
523 * tests/regression.at (Web2c Actions): Adjust.
524
5252002-07-25 Akim Demaille <akim@epita.fr>
526
527 * src/gram.h (TIEM_NUMBER_MAX): New.
528 (item_number_of_rule_number, rule_number_of_item_number): Rename
529 as...
530 (rule_number_as_item_number, item_number_as_rule_number): these.
531 Adjust dependencies.
532 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
533 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
534 (symbol_number_to_vector_number): New.
535 (order): Of vector_number_t* type.
536 (base_t, BASE_MAX, BASE_MIN): New.
537 (froms, tos, width, pos, check): Of base_t type.
538 (action_number_t, ACTION_MIN, ACTION_MAX): New.
539 (actrow): Of action_number_t type.
540 (conflrow): Of unsigned int type.
541 (table_ninf, base_ninf): New.
542 (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
543 (muscle_insert_int_table, muscle_insert_base_table)
544 (muscle_insert_rule_number_table): New.
545 (prepare_tokens): Output `toknum' as int_table.
546 (action_row): Returns a rule_number_t.
547 Use ACTION_MIN, not SHRT_MIN.
548 (token_actions): yydefact is rule_number_t*.
549 (table_ninf_remap): New.
550 (pack_table): Use it for `base' and `table'.
551 * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
552 replaced with...
553 (YYPACT_NINF, YYTABLE_NINF): these.
554 (yypact, yytable): Compute their types instead of hard-coded
555 `short'.
556 * tests/regression.at (Web2c Actions): Adjust.
557
5582002-07-19 Akim Demaille <akim@epita.fr>
559
560 * src/scan-gram.l (id): Can start with an underscore.
561
5622002-07-16 Akim Demaille <akim@epita.fr>
563
564 * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
565 Adjust all former `associativity' dependencies.
566 * src/symtab.c (symbol_new): Default associativity is `undef', not
567 `right'.
568 (symbol_check_alias_consistence): Adjust.
569
5702002-07-09 Akim Demaille <akim@epita.fr>
571
572 * doc/bison.texinfo: Properly set the ``header'' part.
573 Use @dircategory ``GNU programming tools'' as per Texinfo's
574 documentation.
575 Use @copying.
576
5772002-07-09 Akim Demaille <akim@epita.fr>
578
579 * lib/quotearg.h: Protect against multiple inclusions.
580 * src/location.h (location_t): Add a `file' member.
581 (LOCATION_RESET, LOCATION_PRINT): Adjust.
582 * src/complain.c (warn_at, complain_at, fatal_at): Drop
583 `error_one_per_line' support.
584
5852002-07-09 Akim Demaille <akim@epita.fr>
586
587 * src/complain.h, src/complain.c (warn, complain): Remove, unused.
588 * src/reader.c (lineno): Remove.
589 Adjust all dependencies.
590 (get_merge_function): Take a location and use complain_at.
591 * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
592 * tests/regression.at (Invalid inputs, Mixing %token styles):
593 Adjust.
594
5952002-07-09 Akim Demaille <akim@epita.fr>
596
597 * src/parse-gram.y (rules_or_grammar_declaration): Add an error
598 recovery rule, and forbid extensions when --yacc.
599 (gram_error): Use complain_at.
600 * src/reader.c (reader): Exit if there were parse errors.
601
6022002-07-09 Akim Demaille <akim@epita.fr>
603
604 * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
605 (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
606 Reported by R Blake <blakers@mac.com>.
607
6082002-07-09 Akim Demaille <akim@epita.fr>
609
610 * data/yacc.c: Output the copyright notive in the header.
611
6122002-07-03 Akim Demaille <akim@epita.fr>
613
614 * src/output.c (froms, tos): Are state_number_t.
615 (save_column): sp, sp1, and sp2 are state_number_t.
616 (prepare): Rename `final' as `final_state_number', `nnts' as
617 `nterms_number', `nrules' as `rules_number', `nstates' as
618 `states_number', and `ntokens' as `tokens_number'. Remove `nsym',
619 unused.
620 * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
621 * data/lalr1.cc (nsym_): Remove, unused.
622
6232002-07-03 Akim Demaille <akim@epita.fr>
624
625 * src/lalr.h, src/lalr.c (goto_number_t): New.
626 * src/lalr.c (goto_list_t): New.
627 Propagate them.
628 * src/nullable.c (rule_list_t): New.
629 Propagate.
630 * src/types.h: Remove.
631
6322002-07-03 Akim Demaille <akim@epita.fr>
633
634 * src/closure.c (print_fderives): Use rule_rhs_print.
635 * src/derives.c (print_derives): Use rule_rhs_print.
636 (rule_list_t): New, replaces `shorts'.
637 (set_derives): Add comments.
638 * tests/sets.at (Nullable, Firsts): Adjust.
639
6402002-07-03 Akim Demaille <akim@epita.fr>
641
642 * src/output.c (prepare_actions): Free `tally' and `width'.
643 (prepare_actions): Allocate and free `order'.
644 * src/symtab.c (symbols_free): Free `symbols'.
645 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
646 * src/output.c (m4_invoke): Move to...
647 * src/scan-skel.l: here.
648 (<<EOF>>): Close yyout, and free its name.
649
6502002-07-03 Akim Demaille <akim@epita.fr>
651
652 Fix some memory leaks, and fix a bug: state 0 was examined twice.
653
654 * src/LR0.c (new_state): Merge into...
655 (state_list_append): this.
656 (new_states): Merge into...
657 (generate_states): here.
658 (set_states): Don't ensure a proper `errs' state member here, do it...
659 * src/conflicts.c (conflicts_solve): here.
660 * src/state.h, src/state.c: Comment changes.
661 (state_t): Rename member `shifts' as `transitions'.
662 Adjust all dependencies.
663 (errs_new): For consistency, also take the values as argument.
664 (errs_dup): Remove.
665 (state_errs_set): New.
666 (state_reductions_set, state_transitions_set): Assert that no
667 previous value was assigned.
668 (state_free): New.
669 (states_free): Use it.
670 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
671 temporary storage: use `errs' and `nerrs' as elsewhere.
672 (set_conflicts): Allocate and free this `errs'.
673
6742002-07-02 Akim Demaille <akim@epita.fr>
675
676 * lib/libiberty.h: New.
677 * lib: Update the bitset implementation from upstream.
678 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
679 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
680 * src/main.c: Adjust bitset stats calls.
681
6822002-07-01 Paul Eggert <eggert@twinsun.com>
683
684 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
685 char, so that negative chars don't collide with $.
686
6872002-06-30 Akim Demaille <akim@epita.fr>
688
689 Have the GLR tests be `warning' checked, and fix the warnings.
690
691 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
692 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
693 (yyremoveDeletes): `yyi' and `yyj' are size_t.
694 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
695 (yyaddDeferredAction): static.
696 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
697 (yyreportParseError): yyprefix is const.
698 yytokenp is used only when verbose.
699 (yy__GNUC__): Replace with __GNUC__.
700 (yypdumpstack): yyi is size_t.
701 (yypreference): Un-yy local variables and arguments, to avoid
702 clashes with `yyr1'. Anyway, we are not in the user name space.
703 (yytname_size): be an int, as is compared with ints.
704 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
705 Use them.
706 * tests/cxx-gram.at: Use quotation to protect $1.
707 Use AT_COMPILE to enable warnings hunts.
708 Prototype yylex and yyerror.
709 `Use' argc.
710 Include `string.h', not `strings.h'.
711 Produce and prototype stmtMerge only when used.
712 yylex takes a location.
713
7142002-06-30 Akim Demaille <akim@epita.fr>
715
716 We spend a lot of time in quotearg, in particular when --verbose.
717
718 * src/symtab.c (symbol_get): Store a quoted version of the key.
719 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
720 Adjust all callers.
721
7222002-06-30 Akim Demaille <akim@epita.fr>
723
724 * src/state.h (reductions_t): Rename member `nreds' as num.
725 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
726 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
727
7282002-06-30 Akim Demaille <akim@epita.fr>
729
730 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
731 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
732 (shifts_to): Rename as...
733 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
734 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
735 (TRANSITION_IS_DISABLED, transitions_to): these.
736
7372002-06-30 Akim Demaille <akim@epita.fr>
738
739 * src/print.c (print_shifts, print_gotos): Merge into...
740 (print_transitions): this.
741 (print_transitions, print_errs, print_reductions): Align the
742 lookaheads columns.
743 (print_core, print_transitions, print_errs, print_state,
744 print_grammar): Output empty lines separator before, not after.
745 (state_default_rule_compute): Rename as...
746 (state_default_rule): this.
747 * tests/conflicts.at (Defaulted Conflicted Reduction),
748 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
749 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
750
7512002-06-30 Akim Demaille <akim@epita.fr>
752
753 Display items as we display rules.
754
755 * src/gram.h, src/gram.c (rule_lhs_print): New.
756 * src/gram.c (grammar_rules_partial_print): Use it.
757 * src/print.c (print_core): Likewise.
758 * tests/conflicts.at (Defaulted Conflicted Reduction),
759 (Unresolved SR Conflicts): Adjust.
760 (Unresolved SR Conflicts): Adjust and rename as...
761 (Resolved SR Conflicts): this, as was meant.
762 * tests/regression.at (Web2c Report): Adjust.
763
7642002-06-30 Akim Demaille <akim@epita.fr>
765
766 * src/print.c (state_default_rule_compute): New, extracted from...
767 (print_reductions): here.
768 Pessimize, but clarify the code.
769 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
770
7712002-06-30 Akim Demaille <akim@epita.fr>
772
773 * src/output.c (action_row): Let default_rule be always a rule
774 number.
775
7762002-06-30 Akim Demaille <akim@epita.fr>
777
778 * src/closure.c (print_firsts, print_fderives, closure):
779 Use BITSET_EXECUTE.
780 * src/lalr.c (lookaheads_print): Likewise.
781 * src/state.c (state_rule_lookaheads_print): Likewise.
782 * src/print_graph.c (print_core): Likewise.
783 * src/print.c (print_reductions): Likewise.
784 * src/output.c (action_row): Likewise.
785 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
786
7872002-06-30 Akim Demaille <akim@epita.fr>
788
789 * src/print_graph.c: Use report_flag.
790
7912002-06-30 Akim Demaille <akim@epita.fr>
792
793 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
794 to...
795 * src/relation.h, src/relation.c (traverse, relation_digraph)
796 (relation_print, relation_transpose): New.
797
7982002-06-30 Akim Demaille <akim@epita.fr>
799
800 * src/state.h, src/state.c (shifts_to): New.
801 * src/lalr.c (build_relations): Use it.
802
8032002-06-30 Akim Demaille <akim@epita.fr>
804
805 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
806 (item_number_of_rule_number, rule_number_of_item_number): New.
807 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
808 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
809 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
810 Propagate their use.
811 Much remains to be done, in particular wrt `shorts' from types.h.
812
8132002-06-30 Akim Demaille <akim@epita.fr>
814
815 * src/symtab.c (symbol_new): Initialize the `printer' member.
816
8172002-06-30 Akim Demaille <akim@epita.fr>
818
819 * src/LR0.c (save_reductions): Remove, replaced by...
820 * src/state.h, src/state.c (state_reductions_set): New.
821 (reductions, errs): Rename as...
822 (reductions_t, errs_t): these.
823 Adjust all dependencies.
824
8252002-06-30 Akim Demaille <akim@epita.fr>
826
827 * src/LR0.c (state_list_t, state_list_append): New.
828 (first_state, last_state): Now symbol_list_t.
829 (this_state): Remove.
830 (new_itemsets, append_states, save_reductions): Take a state_t as
831 argument.
832 (set_states, generate_states): Adjust.
833 (save_shifts): Remove, replaced by...
834 * src/state.h, src/state.c (state_shifts_set): New.
835 (shifts): Rename as...
836 (shifts_t): this.
837 Adjust all dependencies.
838 * src/state.h (state_t): Remove the `next' member.
839
8402002-06-30 Akim Demaille <akim@epita.fr>
841
842 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
843 escaped in slot 0.
844
8452002-06-30 Akim Demaille <akim@epita.fr>
846
847 Use hash.h for the state hash table.
848
849 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
850 (allocate_storage): Use state_hash_new.
851 (free_storage): Use state_hash_free.
852 (new_state, get_state): Adjust.
853 * src/lalr.h, src/lalr.c (states): Move to...
854 * src/states.h (state_t): Remove the `link' member, no longer
855 used.
856 * src/states.h, src/states.c: here.
857 (state_hash_new, state_hash_free, state_hash_lookup)
858 (state_hash_insert, states_free): New.
859 * src/states.c (state_table, state_compare, state_hash): New.
860 * src/output.c (output_actions): Do not free states now, since we
861 still need to know the final_state number in `prepare', called
862 afterwards. Do it...
863 * src/main.c (main): here: call states_free after `output'.
864
8652002-06-30 Akim Demaille <akim@epita.fr>
866
867 * src/state.h, src/state.c (state_new): New, extracted from...
868 * src/LR0.c (new_state): here.
869 * src/state.h (STATE_ALLOC): Move to...
870 * src/state.c: here.
871 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
872 * src/state.h, src/state.c: here.
873
8742002-06-30 Akim Demaille <akim@epita.fr>
875
876 * src/reader.c (gensym): Rename as...
877 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
878 (getsym): Rename as...
879 (symbol_get): this.
880
8812002-06-30 Akim Demaille <akim@epita.fr>
882
883 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
884 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
885 * src/output.c, src/print.c, src/print_graph.c: Propagate.
886 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
887
8882002-06-30 Akim Demaille <akim@epita.fr>
889
890 Make the test suite pass with warnings checked.
891
892 * tests/actions.at (Printers and Destructors): Improve.
893 Avoid unsigned vs. signed issues.
894 * tests/calc.at: Don't exercise the scanner here, do it...
895 * tests/input.at (Torturing the Scanner): here.
896
8972002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
898
899 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
900 reorganize first lines parallel to yacc.c.
901
9022002-06-28 Akim Demaille <akim@epita.fr>
903
904 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
905 (b4_token_enum, b4_token_defines): New, factored from...
906 * data/lalr1.cc, data/yacc.c, glr.c: here.
907
9082002-06-28 Akim Demaille <akim@epita.fr>
909
910 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
911 unused variables.
912 * src/output.c (merger_output): static.
913
9142002-06-28 Akim Demaille <akim@epita.fr>
915
916 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
917 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
918 pacify GCC.
919 * src/output.c (save_row): Initialize all the variables to pacify GCC.
920
9212002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
922
923 Accumulated changelog for new GLR parsing features.
924
925 * src/conflicts.c (count_total_conflicts): Change name to
926 conflicts_total_count.
927 * src/conflicts.h: Ditto.
928 * src/output.c (token_actions): Use the new name.
929 (output_conflicts): Change conflp => conflict_list_heads, and
930 confl => conflict_list for better readability.
931 * data/glr.c: Use the new names.
932 * NEWS: Add self to GLR announcement.
933
934 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
935
936 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
937 Akim Demaille.
938
939 * data/bison.glr: Change name to glr.c
940 * data/glr.c: Renamed from bison.glr.
941 * data/Makefile.am: Add glr.c
942
943 * src/getargs.c:
944
945 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
946 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
947
948 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
949
950 * data/bison.glr: Be sure to restore the
951 current #line when returning to the skeleton contents after having
952 exposed the input file's #line.
953
954 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
955
956 * data/bison.glr: Bring up to date with changes to bison.simple.
957
958 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
959
960 * data/bison.glr: Correct definitions that use b4_prefix.
961 Various reformatting.
962 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
963 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
964 yytokenp argument; now part of stack.
965 (yychar): Define to behave as documented.
966 (yyclearin): Ditto.
967
968 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
969
970 * src/reader.h: Add declaration for free_merger_functions.
971
972 * src/reader.c (merge_functions): New variable.
973 (get_merge_function): New function.
974 (free_merger_functions): New function.
975 (readgram): Check for %prec that is not followed by a symbol.
976 Handle %dprec and %merge declarations.
977 (packgram): Initialize dprec and merger fields in rules array.
978
979 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
980 conflict_list_cnt, conflict_list_free): New variables.
981 (table_grow): Also grow conflict_table.
982 (prepare_rules): Output dprec and merger tables.
983 (conflict_row): New function.
984 (action_row): Output conflict lists for GLR parser. Don't use
985 default reduction in conflicted states for GLR parser so that there
986 are spaces for the conflict lists.
987 (save_row): Also save conflict information.
988 (token_actions): Allocate conflict list.
989 (merger_output): New function.
990 (pack_vector): Pack conflict table, too.
991 (output_conflicts): New function to output yyconflp and yyconfl.
992 (output_check): Allocate conflict_tos.
993 (output_actions): Output conflict tables, also.
994 (output_skeleton): Output b4_mergers definition.
995 (prepare): Output b4_max_rhs_length definition.
996 Use 'bison.glr' as default skeleton for GLR parsers.
997
998 * src/gram.c (glr_parser): New flag.
999 (grammar_free): Call free_merger_functions.
1000
1001 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
1002 all pairs of conflicting reductions, rather than just all tokens
1003 causing conflicts. Needed to size conflict tables.
1004 (conflicts_output): Modify call to count_rr_conflicts for new
1005 interface.
1006 (conflicts_print): Ditto.
1007 (count_total_conflicts): New function.
1008
1009 * src/reader.h (merger_list): New type.
1010 (merge_functions): New variable.
1011
1012 * src/lex.h (tok_dprec, tok_merge): New token types.
1013
1014 * src/gram.h (rule_s): Add dprec and merger fields.
1015 (glr_parser): New flag.
1016
1017 * src/conflicts.h (count_total_conflicts): New function.
1018
1019 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
1020
1021 * doc/bison.texinfo (Generalized LR Parsing): New section.
1022 (GLR Parsers): New section.
1023 (Language and Grammar): Mention GLR parsing.
1024 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
1025 Correct typo ("tge" -> "the").
1026
1027 * data/bison.glr: New skeleton for GLR parsing.
1028
1029 * tests/cxx-gram.at: New tests for GLR parsing.
1030
1031 * tests/testsuite.at: Include cxx-gram.at.
1032
1033 * tests/Makefile.am: Add cxx-gram.at.
1034
1035 * src/parse-gram.y:
1036
1037 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
1038
1039 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
1040
10412002-06-27 Akim Demaille <akim@epita.fr>
1042
1043 * src/options.h, src/options.c: Remove.
1044 * src/getargs.c (short_options, long_options): New.
1045
10462002-06-27 Akim Demaille <akim@epita.fr>
1047
1048 * data/bison.simple, data/bison.c++: Rename as...
1049 * data/yacc.c, data/lalr1.cc: these.
1050 * doc/bison.texinfo (Environment Variables): Remove.
1051
10522002-06-25 Raja R Harinath <harinath@cs.umn.edu>
1053
1054 * src/getargs.c (report_argmatch): Initialize strtok().
1055
10562002-06-20 Akim Demaille <akim@epita.fr>
1057
1058 * data/bison.simple (b4_symbol_actions): New, replaces...
1059 (b4_symbol_destructor, b4_symbol_printer): these.
1060 (yysymprint): Be sure to call YYPRINT only for tokens, and using
1061 user token numbers.
1062
10632002-06-20 Akim Demaille <akim@epita.fr>
1064
1065 * data/bison.simple (yydestructor): Rename as...
1066 (yydestruct): this.
1067
10682002-06-20 Akim Demaille <akim@epita.fr>
1069
1070 * src/symtab.h, src/symtab.c (symbol_type_set)
1071 (symbol_destructor_set, symbol_precedence_set): The location is
1072 the last argument.
1073 Adjust all callers.
1074
10752002-06-20 Akim Demaille <akim@epita.fr>
1076
1077 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
1078 internals.
1079 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
1080 Takes a location.
1081 * src/symtab.h, src/symtab.c (symbol_class_set)
1082 (symbol_user_token_number_set): Likewise.
1083 Adjust all callers.
1084 Promote complain_at.
1085 * tests/input.at (Type Clashes): Adjust.
1086
10872002-06-20 Akim Demaille <akim@epita.fr>
1088
1089 * data/bison.simple (YYLEX): Fix the declaration when
1090 %pure-parser.
1091
10922002-06-20 Akim Demaille <akim@epita.fr>
1093
1094 * data/bison.simple (yysymprint): Don't print the token number,
1095 just its name.
1096 * tests/actions.at (Destructors): Rename as...
1097 (Printers and Destructors): this.
1098 Also exercise %printer.
1099
11002002-06-20 Akim Demaille <akim@epita.fr>
1101
1102 * data/bison.simple (YYDSYMPRINT): New.
1103 Use it to remove many of the #if YYDEBUG/if (yydebug).
1104
11052002-06-20 Akim Demaille <akim@epita.fr>
1106
1107 * src/symtab.h, src/symtab.c (symbol_t): printer and
1108 printer_location are new members.
1109 (symbol_printer_set): New.
1110 * src/parse-gram.y (PERCENT_PRINTER): New token.
1111 Handle its associated rule.
1112 * src/scan-gram.l: Adjust.
1113 (handle_destructor_at, handle_destructor_dollar): Rename as...
1114 (handle_symbol_code_at, handle_symbol_code_dollar): these.
1115 * src/output.c (symbol_printers_output): New.
1116 (output_skeleton): Call it.
1117 * data/bison.simple (yysymprint): New. Cannot be named yyprint
1118 since there are already many grammar files with a user `yyprint'.
1119 Replace the calls to YYPRINT to calls to yysymprint.
1120 * tests/calc.at: Adjust.
1121 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
1122 taking advantage of parser very internal details (stack size!).
1123
11242002-06-20 Akim Demaille <akim@epita.fr>
1125
1126 * src/scan-gram.l: Complete the scanner with the missing patterns
1127 to pacify Flex.
1128 Use `quote' and `symbol_tag_get' where appropriate.
1129
11302002-06-19 Akim Demaille <akim@epita.fr>
1131
1132 * tests/actions.at (Destructors): Augment to test locations.
1133 * data/bison.simple (yydestructor): Pass it the current location
1134 if locations are enabled.
1135 Prototype only when __STDC__ or C++.
1136 Change the argument names to move into the yy name space: there is
1137 user code here.
1138
11392002-06-19 Akim Demaille <akim@epita.fr>
1140
1141 * data/bison.simple (b4_pure_if): New.
1142 Use it instead of #ifdef YYPURE.
1143
11442002-06-19 Akim Demaille <akim@epita.fr>
1145
1146 * data/bison.simple (b4_location_if): New.
1147 Use it instead of #ifdef YYLSP_NEEDED.
1148
11492002-06-19 Akim Demaille <akim@epita.fr>
1150
1151 Prepare @$ in %destructor, but currently don't bind it in the
1152 skeleton, as %location use is not cleaned up yet.
1153
1154 * src/scan-gram.l (handle_dollar, handle_destructor_at)
1155 (handle_action_at): New.
1156 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
1157 a braced_code_t and a location as additional arguments.
1158 (handle_destructor_dollar): Instead of requiring `b4_eval', just
1159 unquote one when outputting `b4_dollar_dollar'.
1160 Adjust callers.
1161 * data/bison.simple (b4_eval): Remove.
1162 (b4_symbol_destructor): Adjust.
1163 * tests/input.at (Invalid @n): Adjust.
1164
11652002-06-19 Zack Weinberg <zack@codesourcery.com>
1166
1167 * doc/bison.texinfo: Document ability to have multiple
1168 prologue sections.
1169
11702002-06-18 Akim Demaille <akim@epita.fr>
1171
1172 * src/files.c (compute_base_names): When computing the output file
1173 names from the input file name, strip the directory part.
1174
11752002-06-18 Akim Demaille <akim@epita.fr>
1176
1177 * data/bison.simple.new: Comment changes.
1178 Reported by Andreas Schwab.
1179
11802002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
1181
1182 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
1183 there are no `label `yyoverflowlab' defined but not used' warnings
1184 when yyoverflow is defined.
1185
11862002-06-18 Akim Demaille <akim@epita.fr>
1187
1188 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
1189 new member.
1190 (symbol_destructor_set): Adjust.
1191 * src/output.c (symbol_destructors_output): Output the destructor
1192 locations.
1193 Output the symbol name.
1194 * data/bison.simple (b4_symbol_destructor): Adjust.
1195
11962002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
1197 and Akim Demaille <akim@epita.fr>
1198
1199 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
1200 what's left on the stack when the error recovery hits EOF.
1201 * tests/actions.at (Destructors): Complete to exercise this case.
1202
12032002-06-17 Akim Demaille <akim@epita.fr>
1204
1205 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
1206 arguments is really empty, not only equal to `[]'.
1207 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
1208 member.
1209 (symbol_destructor_set): New.
1210 * src/output.c (symbol_destructors_output): New.
1211 * src/reader.h (brace_code_t, current_braced_code): New.
1212 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
1213 (handle_dollar): Rename as...
1214 (handle_action_dollar): this.
1215 (handle_destructor_dollar): New.
1216 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
1217 (grammar_declaration): Use it.
1218 * data/bison.simple (yystos): Is always defined.
1219 (yydestructor): New.
1220 * tests/actions.at (Destructors): New.
1221 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
1222
12232002-06-17 Akim Demaille <akim@epita.fr>
1224
1225 * src/symlist.h, src/symlist.c (symbol_list_length): New.
1226 * src/scan-gram.l (handle_dollar, handle_at): Compute the
1227 rule_length only when needed.
1228 * src/output.c (actions_output, token_definitions_output): Output
1229 the full M4 block.
1230 * src/symtab.c: Don't access directly to the symbol tag, use
1231 symbol_tag_get.
1232 * src/parse-gram.y: Use symbol_list_free.
1233
12342002-06-17 Akim Demaille <akim@epita.fr>
1235
1236 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
1237 (symbol_list_prepend, get_type_name): Move to...
1238 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
1239 (symbol_list_prepend, symbol_list_n_type_name_get): here.
1240 Adjust all callers.
1241 (symbol_list_free): New.
1242 * src/scan-gram.l (handle_dollar): Takes a location.
1243 * tests/input.at (Invalid $n): Adjust.
1244
12452002-06-17 Akim Demaille <akim@epita.fr>
1246
1247 * src/reader.h, src/reader.c (symbol_list_new): Export it.
1248 (symbol_list_prepend): New.
1249 * src/parse-gram.y (%union): `list' is a new member.
1250 (symbols.1): New, replaces...
1251 (terms_to_prec.1, nterms_to_type.1): these.
1252 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
1253 Take a location as additional argument.
1254 Adjust all callers.
1255
12562002-06-15 Akim Demaille <akim@epita.fr>
1257
1258 * src/parse-gram.y: Move %token in the declaration section so that
1259 we don't depend upon CVS Bison.
1260
12612002-06-15 Akim Demaille <akim@epita.fr>
1262
1263 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
1264 * src/print.c (print_core): Use it.
1265
12662002-06-15 Akim Demaille <akim@epita.fr>
1267
1268 * src/conflicts.c (log_resolution): Accept the rule involved in
1269 the sr conflicts instead of the lookahead number that points to
1270 that rule.
1271 (flush_reduce): Accept the current lookahead vector as argument,
1272 instead of the index in LA.
1273 (resolve_sr_conflict): Accept the current number of lookahead
1274 bitset to consider for the STATE, instead of the index in LA.
1275 (set_conflicts): Adjust.
1276 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
1277
12782002-06-15 Akim Demaille <akim@epita.fr>
1279
1280 * src/state.h (state_t): Replace the `lookaheadsp' member, a
1281 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
1282 Adjust all dependencies.
1283 * src/lalr.c (initialize_lookaheads): Split into...
1284 (states_lookaheads_count, states_lookaheads_initialize): these.
1285 (lalr): Adjust.
1286
12872002-06-15 Akim Demaille <akim@epita.fr>
1288
1289 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
1290 out of...
1291 (grammar_rules_print): here.
1292 * src/reduce.c (reduce_output): Use it.
1293 * tests/reduce.at (Useless Rules, Reduced Automaton)
1294 (Underivable Rules): Adjust.
1295
12962002-06-15 Akim Demaille <akim@epita.fr>
1297
1298 Copy BYacc's nice way to report the grammar.
1299
1300 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
1301 New.
1302 Don't print the rules' location, it is confusing and useless.
1303 (rule_print): Use grammar_rhs_print.
1304 * src/print.c (print_grammar): Use grammar_rules_print.
1305
13062002-06-15 Akim Demaille <akim@epita.fr>
1307
1308 Complete and rationalize `useless thing' warnings.
1309
1310 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
1311 (symbol_tag_print): New.
1312 Use them everywhere in place of accessing directly the tag member.
1313 * src/gram.h, src/gram.c (rule_print): New.
1314 Use it where a rule used to be printed `by hand'.
1315 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
1316 (reduce_grammar_tables): Report the useless rules.
1317 (reduce_print): Useless things are a warning, not an error.
1318 Report it as such.
1319 * tests/reduce.at (Useless Nonterminals, Useless Rules):
1320 (Reduced Automaton, Underivable Rules): Adjust.
1321 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
1322 * tests/conflicts.at (Unresolved SR Conflicts)
1323 (Solved SR Conflicts): Adjust.
1324
13252002-06-15 Akim Demaille <akim@epita.fr>
1326
1327 Let symbols have a location.
1328
1329 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
1330 (getsym): Adjust.
1331 Adjust all callers.
1332 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
1333 Use location_t, not int.
1334 * src/symtab.c (symbol_check_defined): Take advantage of the
1335 location.
1336 * tests/regression.at (Invalid inputs): Adjust.
1337
13382002-06-15 Akim Demaille <akim@epita.fr>
1339
1340 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
1341 (input): Don't try to initialize yylloc here, do it in the
1342 scanner.
1343 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
1344 * src/gram.h (rule_t): Change line and action_line into location
1345 and action_location, of location_t type.
1346 Adjust all dependencies.
1347 * src/location.h, src/location.c (empty_location): New.
1348 * src/reader.h, src/reader.c (grammar_start_symbol_set)
1349 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
1350 (grammar_current_rule_symbol_append)
1351 (grammar_current_rule_action_append): Expect a location as argument.
1352 * src/reader.c (grammar_midrule_action): Adjust to attach an
1353 action's location as dummy symbol location.
1354 * src/symtab.h, src/symtab.c (startsymbol_location): New.
1355 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
1356 the line numbers.
1357
13582002-06-14 Akim Demaille <akim@epita.fr>
1359
1360 Grammar declarations may be found in the grammar section.
1361
1362 * src/parse-gram.y (rules_or_grammar_declaration): New.
1363 (declarations): Each declaration may end with a semicolon, not
1364 just...
1365 (grammar_declaration): `"%union"'.
1366 (grammar): Branch to rules_or_grammar_declaration.
1367
13682002-06-14 Akim Demaille <akim@epita.fr>
1369
1370 * src/main.c (main): Invoke scanner_free.
1371
13722002-06-14 Akim Demaille <akim@epita.fr>
1373
1374 * src/output.c (m4_invoke): Extracted from...
1375 (output_skeleton): here.
1376 Free tempfile.
1377
13782002-06-14 Akim Demaille <akim@epita.fr>
1379
1380 * src/parse-gram.y (directives, directive, gram)
1381 (grammar_directives, precedence_directives, precedence_directive):
1382 Rename as...
1383 (declarations, declaration, grammar, grammar_declaration)
1384 (precedence_declaration, precedence_declarator): these.
1385 (symbol_declaration): New.
1386
13872002-06-14 Akim Demaille <akim@epita.fr>
1388
1389 * src/files.c (action_obstack): Remove, unused.
1390 (output_obstack): Remove it, and all its dependencies, as it is no
1391 longer needed.
1392 * src/reader.c (epilogue_set): Build the epilogue in the
1393 muscle_obstack.
1394 * src/output.h, src/output.c (muscle_obstack): Move to...
1395 * src/muscle_tab.h, src/muscle_tab.h: here.
1396 (muscle_init): Initialize muscle_obstack.
1397 (muscle_free): New.
1398 * src/main.c (main): Call it.
1399
14002002-06-14 Akim Demaille <akim@epita.fr>
1401
1402 * src/location.h: New, extracted from...
1403 * src/reader.h: here.
1404 * src/Makefile.am (noinst_HEADERS): Merge into
1405 (bison_SOURCES): this.
1406 Add location.h.
1407 * src/parse-gram.y: Use location_t instead of Bison's.
1408 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
1409 Use location_t instead of ints.
1410
14112002-06-14 Akim Demaille <akim@epita.fr>
1412
1413 * data/bison.simple, data/bison.c++: Be sure to restore the
1414 current #line when returning to the skeleton contents after having
1415 exposed the input file's #line.
1416
14172002-06-12 Akim Demaille <akim@epita.fr>
1418
1419 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
1420 eager.
1421 * tests/actions.at (Exotic Dollars): New.
1422
14232002-06-12 Akim Demaille <akim@epita.fr>
1424
1425 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
1426 ['"/] too eagerly.
1427 * tests/input.at (Torturing the Scanner): New.
1428
14292002-06-11 Akim Demaille <akim@epita.fr>
1430
1431 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
1432 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
1433 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
1434 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
1435 * src/reader.c (reader): Use it.
1436
14372002-06-11 Akim Demaille <akim@epita.fr>
1438
1439 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
1440 Adjust all callers.
1441 (scanner_last_string_free): New.
1442
14432002-06-11 Akim Demaille <akim@epita.fr>
1444
1445 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
1446 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
1447 (last_string, YY_OBS_FREE): New.
1448 Use them when returning an ID.
1449
14502002-06-11 Akim Demaille <akim@epita.fr>
1451
1452 Have Bison grammars parsed by a Bison grammar.
1453
1454 * src/reader.c, src/reader.h (prologue_augment): New.
1455 * src/reader.c (copy_definition): Remove.
1456
1457 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
1458 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
1459 (grammar_current_rule_prec_set, grammar_current_rule_check)
1460 (grammar_current_rule_symbol_append)
1461 (grammar_current_rule_action_append): Export.
1462 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
1463 (symbol_list_action_append): Remove.
1464 Hook the routines from reader.
1465 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
1466 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
1467
1468 * src/reader.c (read_declarations): Remove, unused.
1469
1470 * src/parse-gram.y: Handle the epilogue.
1471 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
1472 (grammar_start_symbol_set): this.
1473 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
1474 * src/reader.c (readgram): Remove, unused.
1475 (reader): Adjust to insert eoftoken and axiom where appropriate.
1476
1477 * src/reader.c (copy_dollar): Replace with...
1478 * src/scan-gram.h (handle_dollar): this.
1479 * src/parse-gram.y: Remove `%thong'.
1480
1481 * src/reader.c (copy_at): Replace with...
1482 * src/scan-gram.h (handle_at): this.
1483
1484 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
1485 New.
1486
1487 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
1488 time being.
1489
1490 * src/reader.h, src/reader.c (grammar_rule_end): New.
1491
1492 * src/parse.y (current_type, current_class): New.
1493 Implement `%nterm', `%token' support.
1494 Merge `%term' into `%token'.
1495 (string_as_id): New.
1496 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
1497 type name.
1498
1499 * src/parse-gram.y: Be sure to handle properly the beginning of
1500 rules.
1501
1502 * src/parse-gram.y: Handle %type.
1503 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
1504
1505 * src/parse-gram.y: More directives support.
1506 * src/options.c: No longer handle source directives.
1507
1508 * src/parse-gram.y: Fix %output.
1509
1510 * src/parse-gram.y: Handle %union.
1511 Use the prologue locations.
1512 * src/reader.c (parse_union_decl): Remove.
1513
1514 * src/reader.h, src/reader.c (epilogue_set): New.
1515 * src/parse-gram.y: Use it.
1516
1517 * data/bison.simple, data/bison.c++: b4_stype is now either not
1518 defined, then default to int, or to the contents of %union,
1519 without `union' itself.
1520 Adjust.
1521 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
1522
1523 * src/output.c (actions_output): Don't output braces, as they are
1524 already handled by the scanner.
1525
1526 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
1527 characters to themselves.
1528
1529 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
1530 that the epilogue has a proper #line.
1531
1532 * src/parse-gram.y: Handle precedence/associativity.
1533
1534 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
1535 a terminal.
1536 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
1537 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
1538 at all to define terminals that cannot be emitted.
1539
1540 * src/scan-gram.l: Escape M4 characters.
1541
1542 * src/scan-gram.l: Working properly with escapes in user
1543 strings/characters.
1544
1545 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
1546 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
1547 grammar.
1548 Use more modest sizes, as for the time being the parser does not
1549 release memory, and therefore the process swallows a huge amount
1550 of memory.
1551
1552 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
1553 stricter %token grammar.
1554
1555 * src/symtab.h (associativity): Add `undef_assoc'.
1556 (symbol_precedence_set): Do nothing when passed an undef_assoc.
1557 * src/symtab.c (symbol_check_alias_consistence): Adjust.
1558
1559 * tests/regression.at (Invalid %directive): Remove, as it is now
1560 meaningless.
1561 (Invalid inputs): Adjust to the new error messages.
1562 (Token definitions): The new grammar doesn't allow too many
1563 eccentricities.
1564
1565 * src/lex.h, src/lex.c: Remove.
1566 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
1567 (copy_character, copy_string2, copy_string, copy_identifier)
1568 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
1569 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
1570 (parse_action): Remove.
1571 * po/POTFILES.in: Adjust.
1572
15732002-06-11 Akim Demaille <akim@epita.fr>
1574
1575 * src/reader.c (parse_action): Don't store directly into the
1576 rule's action member: return the action as a string.
1577 Don't require `rule_length' as an argument: compute it.
1578 (grammar_current_rule_symbol_append)
1579 (grammar_current_rule_action_append): New, eved out from
1580 (readgram): here.
1581 Remove `action_flag', `rulelength', unused now.
1582
15832002-06-11 Akim Demaille <akim@epita.fr>
1584
1585 * src/reader.c (grammar_current_rule_prec_set).
1586 (grammar_current_rule_check): New, eved out from...
1587 (readgram): here.
1588 Remove `xaction', `first_rhs': useless.
1589 * tests/input.at (Type clashes): New.
1590 * tests/existing.at (GNU Cim Grammar): Adjust.
1591
15922002-06-11 Akim Demaille <akim@epita.fr>
1593
1594 * src/reader.c (grammar_midrule_action): New, Eved out from
1595 (readgram): here.
1596
15972002-06-11 Akim Demaille <akim@epita.fr>
1598
1599 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
1600 New.
1601 (readgram): Use them as replacement of inlined code, crule and
1602 crule1.
1603
16042002-06-11 Akim Demaille <akim@epita.fr>
1605
1606 * src/reader.c (grammar_end, grammar_symbol_append): New.
1607 (readgram): Use them.
1608 Make the use of `p' as local as possible.
1609
16102002-06-10 Akim Demaille <akim@epita.fr>
1611
1612 GCJ's parser requires the tokens to be defined before the prologue.
1613
1614 * data/bison.simple: Output the token definition before the user's
1615 prologue.
1616 * tests/regression.at (Braces parsing, Duplicate string)
1617 (Mixing %token styles): Check the output from bison.
1618 (Early token definitions): New.
1619
16202002-06-10 Akim Demaille <akim@epita.fr>
1621
1622 * src/symtab.c (symbol_user_token_number_set): Don't complain when
1623 assigning twice the same user number to a token, so that we can
1624 use it in...
1625 * src/lex.c (lex): here.
1626 Also use `symbol_class_set' instead of hand written code.
1627 * src/reader.c (parse_assoc_decl): Likewise.
1628
16292002-06-10 Akim Demaille <akim@epita.fr>
1630
1631 * src/symtab.c, src/symtab.c (symbol_class_set)
1632 (symbol_user_token_number_set): New.
1633 * src/reader.c (parse_token_decl): Use them.
1634 Use a switch instead of ifs.
1635 Use a single argument.
1636
16372002-06-10 Akim Demaille <akim@epita.fr>
1638
1639 Remove `%thong' support as it is undocumented, unused, duplicates
1640 `%token's job, and creates useless e-mail traffic with people who
1641 want to know what it is, why it is undocumented, unused, and
1642 duplicates `%token's job.
1643
1644 * src/reader.c (parse_thong_decl): Remove.
1645 * src/options.c (option_table): Remove "thong".
1646 * src/lex.h (tok_thong): Remove.
1647
16482002-06-10 Akim Demaille <akim@epita.fr>
1649
1650 * src/symtab.c, src/symtab.c (symbol_type_set)
1651 (symbol_precedence_set): New.
1652 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
1653 (value_components_used): Remove, unused.
1654
16552002-06-09 Akim Demaille <akim@epita.fr>
1656
1657 Move symbols handling code out of the reader.
1658
1659 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
1660 (axiom): Move to...
1661 * src/symtab.h, src/symtab.c: here.
1662
1663 * src/gram.c (start_symbol): Remove: use startsymbol->number.
1664 * src/reader.c (startval): Rename as...
1665 * src/symtab.h, src/symtab.c (startsymbol): this.
1666 * src/reader.c: Adjust.
1667
1668 * src/reader.c (symbol_check_defined, symbol_make_alias)
1669 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
1670 (token_translations_init)
1671 Move to...
1672 * src/symtab.c: here.
1673 * src/reader.c (packsymbols): Move to...
1674 * src/symtab.h, src/symtab.c (symbols_pack): here.
1675 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
1676 argument.
1677
16782002-06-03 Akim Demaille <akim@epita.fr>
1679
1680 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
1681 then statements.
1682
16832002-06-03 Akim Demaille <akim@epita.fr>
1684
1685 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
1686 structs with non literals.
1687 * src/scan-skel.l: never-interactive.
1688 * src/conflicts.c (enum conflict_resolution_e): No trailing
1689 comma.
1690 * src/getargs.c (usage): Split long literal strings.
1691 Reported by Hans Aberg.
1692
16932002-05-28 Akim Demaille <akim@epita.fr>
1694
1695 * data/bison.c++: Use C++ ostreams.
1696 (cdebug_): New member.
1697
16982002-05-28 Akim Demaille <akim@epita.fr>
1699
1700 * src/output.c (output_skeleton): Be sure to allocate enough room
1701 for `/' _and_ for `\0' in full_skeleton.
1702
17032002-05-28 Akim Demaille <akim@epita.fr>
1704
1705 * data/bison.c++: Catch up with bison.simple:
1706 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1707 and Paul Eggert <eggert@twinsun.com>: `error' handing.
1708 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
1709 and popping traces.
1710
17112002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1712
1713 * src/output.c (output_skeleton): Put an explicit path in front of
1714 the skeleton file name, rather than relying on the -I directory,
1715 to partially alleviate effects of having a skeleton file lying around
1716 in the current directory.
1717
17182002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1719
1720 * src/conflicts.c (log_resolution): Correct typo:
1721 obstack_printf should be obstack_fgrow1.
1722
17232002-05-26 Akim Demaille <akim@epita.fr>
1724
1725 * src/state.h (state_t): `solved_conflicts' is a new member.
1726 * src/LR0.c (new_state): Set it to 0.
1727 * src/conflicts.h, src/conflicts.c (print_conflicts)
1728 (free_conflicts, solve_conflicts): Rename as...
1729 (conflicts_print, conflicts_free, conflicts_solve): these.
1730 Adjust callers.
1731 * src/conflicts.c (enum conflict_resolution_e)
1732 (solved_conflicts_obstack): New, used by...
1733 (log_resolution): this.
1734 Adjust to attach the conflict resolution to each state.
1735 Complete the description with the precedence/associativity
1736 information.
1737 (resolve_sr_conflict): Adjust.
1738 * src/print.c (print_state): Output its solved_conflicts.
1739 * tests/conflicts.at (Unresolved SR Conflicts)
1740 (Solved SR Conflicts): Exercise --report=all.
1741
17422002-05-26 Akim Demaille <akim@epita.fr>
1743
1744 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
1745 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
1746 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
1747 (token_number_t, item_number_as_token_number)
1748 (token_number_as_item_number, muscle_insert_token_number_table):
1749 Rename as...
1750 (symbol_number_t, item_number_as_symbol_number)
1751 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
1752 these, since it is more appropriate.
1753
17542002-05-26 Akim Demaille <akim@epita.fr>
1755
1756 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
1757 `Error:' lines.
1758 * data/bison.simple (yystos) [YYDEBUG]: New.
1759 (yyparse) [YYDEBUG]: Display the symbols which are popped during
1760 error recovery.
1761 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
1762
17632002-05-25 Akim Demaille <akim@epita.fr>
1764
1765 * doc/bison.texinfo (Debugging): Split into...
1766 (Tracing): this new section, its former contents, and...
1767 (Understanding): this new section.
1768 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
1769 by...
1770 (report_flag): this.
1771 Adjust all dependencies.
1772 (report_args, report_types, report_argmatch): New.
1773 (usage, getargs): Report/support -r, --report.
1774 * src/options.h
1775 (struct option_table_struct): Rename as..,
1776 (struct option_table_s): this.
1777 Rename the `set_flag' member to `flag' to match with getopt_long's
1778 struct.
1779 * src/options.c (option_table): Split verbose into an entry for
1780 %verbose, and another for --verbose.
1781 Support --report/-r, so remove -r from the obsolete --raw.
1782 * src/print.c: Attach full item sets and lookaheads reports to
1783 report_flag instead of trace_flag.
1784 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
1785
17862002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1787 and Paul Eggert <eggert@twinsun.com>
1788
1789 * data/bison.simple (yyparse): Correct error handling to conform to
1790 POSIX and yacc. Specifically, after syntax error is discovered,
1791 do not reduce further before shifting the error token.
1792 Clean up the code a bit by removing the labels yyerrdefault,
1793 yyerrhandle, yyerrpop.
1794 * NEWS: Document the above.
1795
17962002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1797
1798 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
1799 type; it isn't always big enough, since it doesn't necessarily
1800 include non-terminals.
1801 (yytranslate): Expand definition of yy_token_number_type, so that
1802 the latter can be removed.
1803 (yy_token_number_type): Remove, only one use.
1804 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
1805 don't use TokenNumberType as element type.
1806
1807 * tests/regression.at: Modify expected output to agree with change
1808 to yyr1 and yytranslate.
1809
18102002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
1811
1812 * src/reader.c (parse_action): Use copy_character instead of
1813 obstack_1grow.
1814
18152002-05-13 Akim Demaille <akim@epita.fr>
1816
1817 * tests/regression.at (Token definitions): Prototype yylex and
1818 yyerror.
1819
18202002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1821
1822 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
1823 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
1824 32-bit arithmetic.
1825 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
1826
18272002-05-07 Akim Demaille <akim@epita.fr>
1828
1829 * tests/synclines.at: Be sure to prototype yylex and yyerror to
1830 avoid GCC warnings.
1831
18322002-05-07 Akim Demaille <akim@epita.fr>
1833
1834 Kill GCC warnings.
1835
1836 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
1837 over the RHS of each rule.
1838 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
1839 * src/state.h (state_t): Member `nitems' is unsigned short.
1840 * src/LR0.c (get_state): Adjust.
1841 * src/reader.c (packgram): Likewise.
1842 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
1843 `Type'.
1844 (muscle_insert_int_table): Remove, unused.
1845 (prepare_rules): Remove `max'.
1846
18472002-05-06 Akim Demaille <akim@epita.fr>
1848
1849 * src/closure.c (print_firsts): Display of the symbol tags.
1850 (bitmatrix_print): Move to...
1851 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
1852 here.
1853 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
1854
18552002-05-06 Akim Demaille <akim@epita.fr>
1856
1857 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
1858 hash_do_for_each.
1859
18602002-05-06 Akim Demaille <akim@epita.fr>
1861
1862 * src/LR0.c (new_state, get_state): Instead of using the global
1863 `kernel_size' and `kernel_base', have two new arguments:
1864 `core_size' and `core'.
1865 Adjust callers.
1866
18672002-05-06 Akim Demaille <akim@epita.fr>
1868
1869 * src/reader.c (packgram): No longer end `ritem' with a 0
1870 sentinel: it is not used.
1871
18722002-05-05 Akim Demaille <akim@epita.fr>
1873
1874 New experimental feature: display the lookaheads in the report and
1875 graph.
1876
1877 * src/print (print_core): When --trace-flag, display the rules
1878 lookaheads.
1879 * src/print_graph.c (print_core): Likewise.
1880 Swap the arguments.
1881 Adjust caller.
1882
18832002-05-05 Akim Demaille <akim@epita.fr>
1884
1885 * tests/torture.at (Many lookaheads): New test.
1886
18872002-05-05 Akim Demaille <akim@epita.fr>
1888
1889 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
1890 (GENERATE_MUSCLE_INSERT_TABLE): this.
1891 (output_int_table, output_unsigned_int_table, output_short_table)
1892 (output_token_number_table, output_item_number_table): Replace with...
1893 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
1894 (muscle_insert_short_table, muscle_insert_token_number_table)
1895 (muscle_insert_item_number_table): these.
1896 Adjust all callers.
1897 (prepare_tokens): Don't free `translations', since...
1898 * src/reader.h, src/reader.c (grammar_free): do it.
1899 Move to...
1900 * src/gram.h, src/gram.c (grammar_free): here.
1901 * data/bison.simple, data/bison.c++: b4_token_number_max is now
1902 b4_translate_max.
1903
19042002-05-05 Akim Demaille <akim@epita.fr>
1905
1906 * src/output.c (output_unsigned_int_table): New.
1907 (prepare_rules): `i' is unsigned.
1908 `prhs', `rline', `r2' are unsigned int.
1909 Rename muscle `rhs_number_max' as `rhs_max'.
1910 Output muscles `prhs_max', `rline_max', and `r2_max'.
1911 Free rline and r1.
1912 * data/bison.simple, data/bison.c++: Adjust to use these muscles
1913 to compute types instead of constant types.
1914 * tests/regression.at (Web2c Actions): Adjust.
1915
19162002-05-04 Akim Demaille <akim@epita.fr>
1917
1918 * src/symtab.h (SALIAS, SUNDEF): Rename as...
1919 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
1920 Adjust dependencies.
1921 * src/output.c (token_definitions_output): Be sure not to output a
1922 `#define 'a'' when fed with `%token 'a' "a"'.
1923 * tests/regression.at (Token definitions): New.
1924
19252002-05-03 Paul Eggert <eggert@twinsun.com>
1926
1927 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
1928 for K&R C.
1929
19302002-05-03 gettextize <bug-gnu-gettext@gnu.org>
1931
1932 * Makefile.am (SUBDIRS): Remove intl.
1933 (EXTRA_DIST): Add config/config.rpath.
1934
19352002-05-03 Akim Demaille <akim@epita.fr>
1936
1937 * data/bison.simple (m4_if): Don't output empty enums.
1938 And actually, output valid enum definitions :(.
1939
19402002-05-03 Akim Demaille <akim@epita.fr>
1941
1942 * configure.bat: Remove, completely obsolete.
1943 * Makefile.am (EXTRA_DIST): Adjust.
1944 Don't distribute config.rpath...
1945 * config/Makefile.am (EXTRA_DIST): Do it.
1946
19472002-05-03 Akim Demaille <akim@epita.fr>
1948
1949 * configure.in (GETTEXT_VERSION): New.
1950 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
1951
19522002-05-03 Akim Demaille <akim@epita.fr>
1953
1954 * data/bison.simple (b4_token_enum): New.
1955 (b4_token_defines): Use it to output tokens both as #define and
1956 enums.
1957 Suggested by Paul Eggert.
1958 * src/output.c (token_definitions_output): Don't output spurious
1959 white spaces.
1960
19612002-05-03 Akim Demaille <akim@epita.fr>
1962
1963 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
1964
19652002-05-02 Robert Anisko <robert@lrde.epita.fr>
1966
1967 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
1968 Update the stack class, give a try to deque as the default container.
1969
19702002-05-02 Akim Demaille <akim@epita.fr>
1971
1972 * data/bison.simple (yyparse): Do not implement @$ = @1.
1973 (YYLLOC_DEFAULT): Adjust to do it.
1974 * doc/bison.texinfo (Location Default Action): Fix.
1975
19762002-05-02 Akim Demaille <akim@epita.fr>
1977
1978 * src/reader.c (parse_braces): Merge into...
1979 (parse_action): this.
1980
19812002-05-02 Akim Demaille <akim@epita.fr>
1982
1983 * configure.in (ALL_LINGUAS): Remove.
1984 * po/LINGUAS, hr.po: New.
1985
19862002-05-02 Akim Demaille <akim@epita.fr>
1987
1988 Remove the so called hairy (semantic) parsers.
1989
1990 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
1991 * src/gram.h, src/gram.c (semantic_parser): Remove.
1992 (rule_t): Remove the guard and guard_line members.
1993 * src/lex.h (token_t): remove tok_guard.
1994 * src/options.c (option_table): Remove %guard and %semantic_parser
1995 support.
1996 * src/output.c, src/output.h (guards_output): Remove.
1997 (prepare): Adjust.
1998 (token_definitions_output): Don't output the `T'
1999 tokens (???).
2000 (output_skeleton): Don't output the guards.
2001 * src/files.c, src/files.c (attrsfile): Remove.
2002 * src/reader.c (symbol_list): Remove the guard and guard_line
2003 members.
2004 Adjust dependencies.
2005 (parse_guard): Remove.
2006 * data/bison.hairy: Remove.
2007 * doc/bison.texinfo (Environment Variables): Remove occurrences of
2008 BISON_HAIRY.
2009
20102002-05-02 Akim Demaille <akim@epita.fr>
2011
2012 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
2013 (parse_guard): Rename the formal argument `stack_offset' as
2014 `rule_length', which is more readable.
2015 Adjust callers.
2016 (copy_at, copy_dollar): Instead of outputting the hard coded
2017 values of $$, $n and so forth, output invocation to b4_lhs_value,
2018 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
2019 Note: this patch partially drops `semantic-parser' support: it
2020 always does `rule_length - n', where semantic parsers ought to
2021 always use `-n'.
2022 * data/bison.simple, data/bison.c++ (b4_lhs_value)
2023 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
2024
20252002-05-02 Akim Demaille <akim@epita.fr>
2026
2027 * configure.in (AC_INIT): Bump to 1.49b.
2028 (AM_INIT_AUTOMAKE): Short invocation.
2029
20302002-05-02 Akim Demaille <akim@epita.fr>
2031
2032 Version 1.49a.
2033
20342002-05-01 Akim Demaille <akim@epita.fr>
2035
2036 * src/skeleton.h: Remove.
2037
20382002-05-01 Akim Demaille <akim@epita.fr>
2039
2040 * src/skeleton.h: Fix the #endif.
2041 Reported by Magnus Fromreide.
2042
20432002-04-26 Paul Eggert <eggert@twinsun.com>
2044
2045 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
2046 Define if we define YYSTYPE and YYLTYPE, respectively.
2047 (YYCOPY): Fix [] quoting problem in the non-GCC case.
2048
20492002-04-25 Robert Anisko <robert@lrde.epita.fr>
2050
2051 * src/scan-skel.l: Postprocess quadrigraphs.
2052
2053 * src/reader.c (copy_character): New function, used to output
2054 single characters while replacing `[' and `]' with quadrigraphs, to
2055 avoid troubles with M4 quotes.
2056 (copy_comment): Output characters with copy_character.
2057 (read_additionnal_code): Likewise.
2058 (copy_string2): Likewise.
2059 (copy_definition): Likewise.
2060
2061 * tests/calc.at: Exercise M4 quoting.
2062
20632002-04-25 Akim Demaille <akim@epita.fr>
2064
2065 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
2066 between `!' and the command.
2067 Reported by Paul Eggert.
2068
20692002-04-24 Robert Anisko <robert@lrde.epita.fr>
2070
2071 * tests/calc.at: Exercise prologue splitting.
2072
2073 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
2074 `b4_post_prologue' instead of `b4_prologue'.
2075
2076 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
2077 muscles.
2078 (output): Free pre_prologue_obstack and post_prologue_obstack.
2079 * src/files.h, src/files.c (attrs_obstack): Remove.
2080 (pre_prologue_obstack, post_prologue_obstack): New.
2081 * src/reader.c (copy_definition): Add a parameter to specify the
2082 obstack to fill, instead of using attrs_obstack unconditionally.
2083 (read_declarations): Pass pre_prologue_obstack to copy_definition if
2084 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
2085
20862002-04-23 Paul Eggert <eggert@twinsun.com>
2087
2088 * data/bison.simple: Remove unnecessary commentary and white
2089 space differences from 1_29-branch.
2090 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
2091
2092 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
2093 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
2094 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
2095 constructors or destructors.
2096
2097 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
2098
20992002-04-23 Akim Demaille <akim@epita.fr>
2100
2101 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
2102 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
2103 location with columns.
2104 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
2105 All reported by Paul Eggert.
2106
21072002-04-22 Akim Demaille <akim@epita.fr>
2108
2109 * src/reduce.c (dump_grammar): Move to...
2110 * src/gram.h, src/gram.c (grammar_dump): here.
2111 Be sure to separate long item numbers.
2112 Don't read the members of a rule's prec if its nil.
2113
21142002-04-22 Akim Demaille <akim@epita.fr>
2115
2116 * src/output.c (table_size, table_grow): New.
2117 (MAXTABLE): Remove, replace uses with table_size.
2118 (pack_vector): Instead of dying when the table is too big, grow it.
2119
21202002-04-22 Akim Demaille <akim@epita.fr>
2121
2122 * data/bison.simple (yyr1): Its type is that of a token number.
2123 * data/bison.c++ (r1_): Likewise.
2124 * tests/regression.at (Web2c Actions): Adjust.
2125
21262002-04-22 Akim Demaille <akim@epita.fr>
2127
2128 * src/reader.c (token_translations_init): 256 is now the default
2129 value for the error token, i.e., it will be assigned another
2130 number if the user assigned 256 to one of her tokens.
2131 (reader): Don't force 256 to error.
2132 * doc/bison.texinfo (Symbols): Adjust.
2133 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
2134 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
2135 etc. instead of 10, 20, 30 (which was used to `jump' over error
2136 (256) and undefined (2)).
2137
21382002-04-22 Akim Demaille <akim@epita.fr>
2139
2140 Propagate more token_number_t.
2141
2142 * src/gram.h (token_number_as_item_number)
2143 (item_number_as_token_number): New.
2144 * src/output.c (GENERATE_OUTPUT_TABLE): New.
2145 Use it to create output_item_number_table and
2146 output_token_number_table.
2147 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
2148 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
2149 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
2150 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
2151
21522002-04-22 Akim Demaille <akim@epita.fr>
2153
2154 * src/output.h, src/output.c (get_lines_number): Remove.
2155
21562002-04-19 Akim Demaille <akim@epita.fr>
2157
2158 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
2159 as Lex/Flex'.
2160 (Debugging): More details about enabling the debugging features.
2161 (Table of Symbols): Describe $$, $n, @$, and @n.
2162 Suggested by Tim Josling.
2163
21642002-04-19 Akim Demaille <akim@epita.fr>
2165
2166 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
2167
21682002-04-10 Akim Demaille <akim@epita.fr>
2169
2170 * src/system.h: Rely on HAVE_LIMITS_H.
2171 Suggested by Paul Eggert.
2172
21732002-04-09 Akim Demaille <akim@epita.fr>
2174
2175 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
2176 full stderr, and strip it according to the bison options, instead
2177 of composing the error message from different bits.
2178 This makes it easier to check for several error messages.
2179 Adjust all the invocations.
2180 Add an invocation exercising the error token.
2181 Add an invocation demonstrating a stupid error message.
2182 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
2183 Adjust the tests.
2184 Error message are for stderr, not stdout.
2185
21862002-04-09 Akim Demaille <akim@epita.fr>
2187
2188 * src/gram.h, src/gram.c (error_token_number): Remove, use
2189 errtoken->number.
2190 * src/reader.c (reader): Don't specify the user token number (2)
2191 for $undefined, as it uselessly prevents using it.
2192 * src/gram.h (token_number_t): Move to...
2193 * src/symtab.h: here.
2194 (state_t.number): Is a token_number_t.
2195 * src/print.c, src/reader.c: Use undeftoken->number instead of
2196 hard coded 2.
2197 (Even though this 2 is not the same as above: the number of the
2198 undeftoken remains being 2, it is its user token number which
2199 might not be 2).
2200 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
2201 `user_token_number_max'.
2202 Output `undef_token_number'.
2203 * data/bison.simple, data/bison.c++: Use them.
2204 Be sure to map invalid yylex return values to
2205 `undef_token_number'. This saves us from gratuitous SEGV.
2206
2207 * tests/conflicts.at (Solved SR Conflicts)
2208 (Unresolved SR Conflicts): Adjust.
2209 * tests/regression.at (Web2c Actions): Adjust.
2210
22112002-04-08 Akim Demaille <akim@epita.fr>
2212
2213 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
2214 Adding #line.
2215 Remove the duplicate `typedefs'.
2216 (RhsNumberType): Fix the declaration and various other typos.
2217 Use __ofile__.
2218 * data/bison.simple: Use __ofile__.
2219 * src/scan-skel.l: Handle __ofile__.
2220
22212002-04-08 Akim Demaille <akim@epita.fr>
2222
2223 * src/gram.h (item_number_t): New, the type of item numbers in
2224 RITEM. Note that it must be able to code symbol numbers as
2225 positive number, and the negation of rule numbers as negative
2226 numbers.
2227 Adjust all dependencies (pretty many).
2228 * src/reduce.c (rule): Remove this `short *' pointer: use
2229 item_number_t.
2230 * src/system.h (MINSHORT, MAXSHORT): Remove.
2231 Include `limits.h'.
2232 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
2233 (shortcpy): Remove.
2234 (MAXTABLE): Move to...
2235 * src/output.c (MAXTABLE): here.
2236 (prepare_rules): Use output_int_table to output rhs.
2237 * data/bison.simple, data/bison.c++: Adjust.
2238 * tests/torture.at (Big triangle): Move the limit from 254 to
2239 500.
2240 * tests/regression.at (Web2c Actions): Ajust.
2241
2242 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
2243 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
2244 passes, but produces negative #line number, once fixed, GCC is
2245 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
2246 C), it passes.
2247 * src/state.h (state_h): Code input lines on ints, not shorts.
2248
22492002-04-08 Akim Demaille <akim@epita.fr>
2250
2251 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
2252 and then the grammar.
2253
22542002-04-08 Akim Demaille <akim@epita.fr>
2255
2256 * src/system.h: No longer using strndup.
2257
22582002-04-07 Akim Demaille <akim@epita.fr>
2259
2260 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
2261 * src/output.c (output_table_data): Return the longest number.
2262 (prepare_tokens): Output `token_number_max').
2263 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
2264 New.
2265 Use them to define yy_token_number_type/TokenNumberType.
2266 Use this type for yytranslate.
2267 * tests/torture.at (Big triangle): Push the limit from 124 to
2268 253.
2269 * tests/regression.at (Web2c Actions): Adjust.
2270
22712002-04-07 Akim Demaille <akim@epita.fr>
2272
2273 * tests/torture.at (Big triangle): New.
2274 (GNU AWK Grammar, GNU Cim Grammar): Move to...
2275 * tests/existing.at: here.
2276
22772002-04-07 Akim Demaille <akim@epita.fr>
2278
2279 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
2280 nritems.
2281 Adjust dependencies.
2282
22832002-04-07 Akim Demaille <akim@epita.fr>
2284
2285 * src/reader.c: Normalize increments to prefix form.
2286
22872002-04-07 Akim Demaille <akim@epita.fr>
2288
2289 * src/reader.c, symtab.c: Remove debugging code.
2290
22912002-04-07 Akim Demaille <akim@epita.fr>
2292
2293 Rename all the `bucket's as `symbol_t'.
2294
2295 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
2296 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
2297 * src/symtab.c, src/symtab.h (bucket): Rename as...
2298 (symbol_t): this.
2299 (symbol_list_new, bucket_check_defined, bucket_make_alias)
2300 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
2301 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
2302 (buckets_new, buckets_free, buckets_do): Rename as...
2303 (symbol_list_new, symbol_check_defined, symbol_make_alias)
2304 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
2305 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
2306 (symbols_new, symbols_free, symbols_do): these.
2307
23082002-04-07 Akim Demaille <akim@epita.fr>
2309
2310 Use lib/hash for the symbol table.
2311
2312 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
2313 EOF.
2314 * src/lex.c (lex): Set the `number' member of new terminals.
2315 * src/reader.c (bucket_check_defined, bucket_make_alias)
2316 (bucket_check_alias_consistence, bucket_translation): New.
2317 (reader, grammar_free, readgram, token_translations_init)
2318 (packsymbols): Adjust.
2319 (reader): Number the predefined tokens.
2320 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
2321 for predefined tokens.
2322 * src/symtab.h (bucket): Remove all the hash table related
2323 members.
2324 * src/symtab.c (symtab): Replace by...
2325 (bucket_table): this.
2326 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
2327 (buckets_new, buckets_do): New.
2328
23292002-04-07 Akim Demaille <akim@epita.fr>
2330
2331 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
2332 (start_symbol, max_user_token_number, semantic_parser)
2333 (error_token_number): Initialize.
2334 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
2335 Initialize.
2336 (reader): Don't.
2337 (errtoken, eoftoken, undeftoken, axiom): Extern.
2338
23392002-04-07 Akim Demaille <akim@epita.fr>
2340
2341 * src/gram.h (rule_s): prec and precsym are now pointers
2342 to the bucket giving the priority/associativity.
2343 Member `associativity' removed: useless.
2344 * src/reduce.c, src/conflicts.c: Adjust.
2345
23462002-04-07 Akim Demaille <akim@epita.fr>
2347
2348 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
2349 Properly escape the symbols' TAG when outputting them.
2350
23512002-04-07 Akim Demaille <akim@epita.fr>
2352
2353 * src/lalr.h (LA): Is a bitsetv, not bitset*.
2354
23552002-04-07 Akim Demaille <akim@epita.fr>
2356
2357 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
2358 (LArule): this, which is an array to rule_t*.
2359 * src/print.c, src/conflicts.c: Adjust.
2360
23612002-04-07 Akim Demaille <akim@epita.fr>
2362
2363 * src/gram.h (rule_t): Rename `number' as `user_number'.
2364 `number' is a new member.
2365 Adjust dependencies.
2366 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
2367
23682002-04-07 Akim Demaille <akim@epita.fr>
2369
2370 As a result of the previous patch, it is no longer needed
2371 to reorder ritem itself.
2372
2373 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
2374
23752002-04-07 Akim Demaille <akim@epita.fr>
2376
2377 Be sure never to walk through RITEMS, but use only data related to
2378 the rules themselves. RITEMS should be banished.
2379
2380 * src/output.c (output_token_translations): Rename as...
2381 (prepare_tokens): this.
2382 In addition to `translate', prepare the muscles `tname' and
2383 `toknum', which were handled by...
2384 (output_rule_data): this.
2385 Remove, and move the remainder of its outputs into...
2386 (prepare_rules): this new routines, which also merges content from
2387 (output_gram): this.
2388 (prepare_rules): Be sure never to walk through RITEMS.
2389 (output_stos): Rename as...
2390 (prepare_stos): this.
2391 (output): Always invoke prepare_states, after all, just don't use it
2392 in the output if you don't need it.
2393
23942002-04-07 Akim Demaille <akim@epita.fr>
2395
2396 * src/LR0.c (new_state): Display `nstates' as the name of the
2397 newly created state.
2398 Adjust to initialize first_state and last_state if needed.
2399 Be sure to distinguish the initial from the final state.
2400 (new_states): Create the itemset of the initial state, and use
2401 new_state.
2402 * src/closure.c (closure): Now that the initial state has its
2403 items properly set, there is no need for a special case when
2404 creating `ruleset'.
2405
2406 As a result, now the rule 0, reducing to $axiom, is visible in the
2407 outputs. Adjust the test suite.
2408
2409 * tests/conflicts.at (Solved SR Conflicts)
2410 (Unresolved SR Conflicts): Adjust.
2411 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
2412 * tests/conflicts.at (S/R in initial): New.
2413
24142002-04-07 Akim Demaille <akim@epita.fr>
2415
2416 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
2417 the RHS of the rules.
2418 * src/output.c (output_gram): Likewise.
2419
24202002-04-07 Akim Demaille <akim@epita.fr>
2421
2422 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
2423 bucket.
2424 Adjust all dependencies.
2425 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
2426 `number' of the buckets too.
2427 * src/gram.h: Include `symtab.h'.
2428 (associativity): Move to...
2429 * src/symtab.h: here.
2430 No longer include `gram.h'.
2431
24322002-04-07 Akim Demaille <akim@epita.fr>
2433
2434 * src/gram.h, src/gram.c (rules_rhs_length): New.
2435 (ritem_longest_rhs): Use it.
2436 * src/gram.h (rule_t): `number' is a new member.
2437 * src/reader.c (packgram): Set it.
2438 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
2439 the end of `rules', and count them out of `nrules'.
2440 (reduce_output, dump_grammar): Adjust.
2441 * src/print.c (print_grammar): It is no longer needed to check for
2442 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
2443 * tests/reduce.at (Reduced Automaton): New test.
2444
24452002-04-07 Akim Demaille <akim@epita.fr>
2446
2447 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
2448 lacking `+ 1' to nrules, Bison reported as useless a token if it
2449 was used solely to set the precedence of the last rule...
2450
24512002-04-07 Akim Demaille <akim@epita.fr>
2452
2453 * data/bison.c++, data/bison.simple: Don't output the current file
2454 name in #line, to avoid useless diffs between two identical
2455 outputs under different names.
2456
24572002-04-07 Akim Demaille <akim@epita.fr>
2458
2459 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
2460 Normalize loops to using `< nrules + 1', not `<= nrules'.
2461
24622002-04-07 Akim Demaille <akim@epita.fr>
2463
2464 * TODO: Update.
2465
24662002-04-07 Akim Demaille <akim@epita.fr>
2467
2468 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
2469 bucket.value as bucket.number.
2470
24712002-04-07 Akim Demaille <akim@epita.fr>
2472
2473 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
2474 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
2475 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
2476 RHS, instead of being an index in RITEMS.
2477
24782002-04-04 Paul Eggert <eggert@twinsun.com>
2479
2480 * doc/bison.texinfo: Update copyright date.
2481 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
2482 (Symbols): Warn about running Bison in one character set,
2483 but compiling and/or running in an incompatible one.
2484 Warn about character code 256, too.
2485
24862002-04-03 Paul Eggert <eggert@twinsun.com>
2487
2488 * src/bison.data (YYSTACK_ALLOC): Depend on whether
2489 YYERROR_VERBOSE is nonzero, not whether it is defined.
2490
2491 Merge changes from bison-1_29-branch.
2492
24932002-03-20 Paul Eggert <eggert@twinsun.com>
2494
2495 Merge fixes from Debian bison_1.34-1.diff.
2496
2497 * configure.in (AC_PREREQ): 2.53.
2498
24992002-03-20 Akim Demaille <akim@epita.fr>
2500
2501 * src/conflicts.c (log_resolution): Argument `resolution' is const.
2502
25032002-03-19 Paul Eggert <eggert@twinsun.com>
2504
2505 * src/bison.simple (YYCOPY): New macro.
2506 (YYSTACK_RELOCATE): Use it.
2507 Remove Type arg; no longer needed. All callers changed.
2508 (yymemcpy): Remove; no longer needed.
2509
2510 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
2511 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
2512
25132002-03-19 Akim Demaille <akim@epita.fr>
2514
2515 Test and fix the #line outputs.
2516
2517 * tests/atlocal.at (GCC): New.
2518 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
2519 (Prologue synch line, ,%union synch line, Postprologue synch line)
2520 (Action synch line, Epilogue synch line): New tests.
2521 * src/reader.c (parse_union_decl): Define the muscle stype_line.
2522 * data/bison.simple, data/bison.c++: Use it.
2523
25242002-03-19 Akim Demaille <akim@epita.fr>
2525
2526 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
2527 (Solved SR Conflicts, %expect not enough, %expect right)
2528 (%expect too much): Move to...
2529 * tests/conflicts.at: this new file.
2530
25312002-03-19 Akim Demaille <akim@epita.fr>
2532
2533 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
2534 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
2535 that we can move to enums for instance.
2536 * src/output.c (token_definitions_output): Output a list of
2537 `token-name, token-number' instead of the #define.
2538 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
2539
25402002-03-14 Akim Demaille <akim@epita.fr>
2541
2542 Use Gettext 0.11.1.
2543
25442002-03-09 Robert Anisko <robert@lrde.epita.fr>
2545
2546 * data/bison.c++: Make the user able to add members to the generated
2547 parser by subclassing.
2548
25492002-03-05 Robert Anisko <robert@lrde.epita.fr>
2550
2551 * src/reader.c (read_additionnal_code): `c' should be an integer, not
2552 a character.
2553 Reported by Nicolas Tisserand and Nicolas Burrus.
2554
25552002-03-04 Robert Anisko <robert@lrde.epita.fr>
2556
2557 * src/reader.c: Warn about lacking semi-colons, do not complain.
2558
25592002-03-04 Robert Anisko <robert@lrde.epita.fr>
2560
2561 * data/bison.c++: Remove a debug line.
2562
25632002-03-04 Robert Anisko <robert@lrde.epita.fr>
2564
2565 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
2566 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
2567 provide a default implementation.
2568
25692002-03-04 Akim Demaille <akim@epita.fr>
2570
2571 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
2572 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
2573 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
2574 * tests/semantic.at (Parsing Guards): Similarly.
2575 * src/reader.at (readgram): Complain if the last rule is not ended
2576 with a semi-colon.
2577
25782002-03-04 Akim Demaille <akim@epita.fr>
2579
2580 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
2581 * src/closure.c: here.
2582 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
2583 RTC.
2584 * src/warshall.h, src/warshall.c: Remove.
2585 * tests/sets.at (Broken Closure): Adjust.
2586
25872002-03-04 Akim Demaille <akim@epita.fr>
2588
2589 * src/output.c (output_skeleton): tempdir is const.
2590 bytes_read is unused.
2591
25922002-03-04 Akim Demaille <akim@epita.fr>
2593
2594 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
2595 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
2596 Update.
2597 From Michael Hayes.
2598
25992002-03-04 Akim Demaille <akim@epita.fr>
2600
2601 * src/closure.c (closure): `r' is unused.
2602
26032002-03-04 Akim Demaille <akim@epita.fr>
2604
2605 * tests/sets.at (Broken Closure): Add the ending `;'.
2606 * src/reader.at (readgram): Complain if a rule is not ended with a
2607 semi-colon.
2608
26092002-03-04 Akim Demaille <akim@epita.fr>
2610
2611 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
2612 (count_sr_conflicts): Use bitset_count.
2613 * src/reduce.c (inaccessable_symbols): Ditto.
2614 (bits_size): Remove.
2615 * src/warshall.h, src/warshall.c: Convert to bitsetv.
2616
26172002-03-04 Akim Demaille <akim@epita.fr>
2618
2619 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
2620 * src/reduce.c: Remove the `bitset_zero's following the
2621 `bitset_create's, as now it is performed by the latter.
2622
26232002-03-04 Akim Demaille <akim@epita.fr>
2624
2625 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
2626 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
2627 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
2628 latest sources from Michael.
2629
26302002-03-04 Akim Demaille <akim@epita.fr>
2631
2632 * src/output.c (output): Don't free the grammar.
2633 * src/reader.c (grammar_free): New.
2634 * src/main.c (main): Call it and don't free symtab here.
2635
26362002-03-04 Akim Demaille <akim@epita.fr>
2637
2638 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
2639 before returning.
2640 Reported by Benoit Perrot.
2641
26422002-03-04 Akim Demaille <akim@epita.fr>
2643
2644 Use bitset operations when possible, not loops over bits.
2645
2646 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
2647 bitset_or.
2648 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
2649 * src/reduce.c (useless_nonterminals): Formatting changes.
2650 * src/warshall.c (TC): Use bitset_or.
2651
26522002-03-04 Akim Demaille <akim@epita.fr>
2653
2654 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
2655 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
2656 Ditto.
2657
26582002-03-04 Akim Demaille <akim@epita.fr>
2659
2660 * src/lalr.c (F): Now a bitset*.
2661 Adjust all dependencies.
2662
26632002-03-04 Akim Demaille <akim@epita.fr>
2664
2665 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
2666 Adjust all dependencies.
2667
26682002-03-04 Akim Demaille <akim@epita.fr>
2669
2670 * src/L0.c, src/LR0.h (nstates): Be size_t.
2671 Adjust comparisons (signed vs unsigned).
2672 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
2673 bitset*.
2674 Adjust all dependencies.
2675
26762002-03-04 Akim Demaille <akim@epita.fr>
2677
2678 * src/closure.c (firsts): Now, also a bitset.
2679 Adjust all dependencies.
2680 (varsetsize): Remove, now unused.
2681 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
2682
26832002-03-04 Akim Demaille <akim@epita.fr>
2684
2685 * src/print.c: Convert to use bitset.h, not hand coded iterations
2686 over ints.
2687
26882002-03-04 Akim Demaille <akim@epita.fr>
2689
2690 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
2691
26922002-03-04 Akim Demaille <akim@epita.fr>
2693
2694 * src/closure.c (ruleset): Be a bitset.
2695 (rulesetsize): Remove.
2696
26972002-03-04 Akim Demaille <akim@epita.fr>
2698
2699 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
2700 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
2701 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
2702 * src/closure.c (fderives): Be an array of bitsets.
2703
27042002-02-28 Robert Anisko <robert@lrde.epita.fr>
2705
2706 * data/bison.c++: Merge the two generated headers. Insert a copyright
2707 notice in each output file.
2708
27092002-02-28 Akim Demaille <akim@epita.fr>
2710
2711 * data/bison.c++: Copy the prologue of bison.simple to fetch
2712 useful M4 definitions, such as b4_header_guard.
2713
27142002-02-25 Akim Demaille <akim@epita.fr>
2715
2716 * src/getargs.c (version): Give the name of the authors, and use a
2717 translator friendly scheme for the bgr
2718 copyright notice.
2719
27202002-02-25 Akim Demaille <akim@epita.fr>
2721
2722 * src/output.c (header_output): Remove, now handled completely via
2723 M4.
2724
27252002-02-25 Akim Demaille <akim@epita.fr>
2726
2727 * m4/m4.m4: New, from CVS Autoconf.
2728 * configure.in: Invoke it.
2729 * src/output.c (output_skeleton): Use its result instead of the
2730 hard coded name.
2731
27322002-02-25 Akim Demaille <akim@epita.fr>
2733
2734 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
2735 Fileutils 4.1.5.
2736 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
2737 * src/output.c (output_skeleton): Use mkstemp to create a real
2738 temporary file.
2739 Move the filling of `skeleton' and its muscle to...
2740 (prepare): here.
2741 (output): Move the definition of the prologue muscle to...
2742 (prepare): here.
2743 * src/system.h (DEFAULT_TMPDIR): New.
2744
27452002-02-14 Paul Eggert <eggert@twinsun.com>
2746
2747 Remove the support for C++ namespace cleanliness; it was
2748 causing more problems than it was curing, since it didn't work
2749 properly on some nonstandard C++ compilers. This can wait
2750 for a proper C++ parser.
2751
2752 * NEWS: Document this.
2753 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
2754 of C++, as it's treated like C now.
2755 * src/bison.simple (YYSTD): Remove.
2756 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
2757 Treat C++ just like Standard C instead of trying to support
2758 namespace cleanliness.
2759
27602002-02-14 Akim Demaille <akim@epita.fr>
2761
2762 * tests/regression.at (else): Adjust to Andreas' change.
2763
27642002-02-14 Akim Demaille <akim@epita.fr>
2765
2766 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
2767
27682002-02-13 Andreas Schwab <schwab@suse.de>
2769
2770 * src/output.c (output_rule_data): Don't output NULL, it might
2771 not be defined yet.
2772
27732002-02-11 Robert Anisko <robert@lrde.epita.fr>
2774
2775 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
2776 (Copyright notice): Update.
2777
27782002-02-11 Akim Demaille <akim@epita.fr>
2779
2780 * tests/regression.at (%nonassoc and eof): Don't include
2781 nonportable headers.
2782
27832002-02-08 Robert Anisko <robert@lrde.epita.fr>
2784
2785 * data/bison.c++: Correct error recovery. Make the user able to
2786 initialize the starting location.
2787
27882002-02-07 Akim Demaille <akim@epita.fr>
2789
2790 * tests/input.at: New.
2791
27922002-02-07 Robert Anisko <robert@lrde.epita.fr>
2793
2794 * data/bison.c++: Replace some direct m4 expansions by constants. Be
2795 more consistent when naming methods and variables. Put preprocessor
2796 directives around tables only needed for debugging.
2797
27982002-02-07 Robert Anisko <robert@lrde.epita.fr>
2799
2800 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
2801 C++ parsers.
2802 (yy::b4_name::parse): Use print_.
2803
28042002-02-07 Robert Anisko <robert@lrde.epita.fr>
2805
2806 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
2807
28082002-02-07 Robert Anisko <robert@lrde.epita.fr>
2809
2810 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
2811 C++ parsers.
2812 (yy::b4_name::parse): Build verbose error messages, and use error_.
2813
28142002-02-06 Robert Anisko <robert@lrde.epita.fr>
2815
2816 * data/bison.c++: Fix m4 quoting in comments.
2817
28182002-02-06 Robert Anisko <robert@lrde.epita.fr>
2819
2820 * data/bison.c++: Adjust the parser code. Fix some muscles that were
2821 not expanded by m4.
2822
28232002-02-05 Akim Demaille <akim@epita.fr>
2824
2825 * data/bison.c++: Adjust to the M4 back end.
2826 More is certainly needed.
2827
28282002-02-05 Akim Demaille <akim@epita.fr>
2829
2830 Give a try to M4 as a back end.
2831
2832 * lib/readpipe.c: New, from wdiff.
2833 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
2834 BISON_HAIRY.
2835 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
2836 specific values. Now it is m4 that performs the lookup.
2837 * src/parse-skel.y: Remove.
2838 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
2839 * src/output.c (actions_output, guards_output)
2840 (token_definitions_output): No longer keeps track of the output
2841 line number, hence remove the second argument.
2842 (guards_output): Check against the guard member of a rule, not the
2843 action member.
2844 Adjust callers.
2845 (output_skeleton): Don't look for the skeleton location, let m4 do
2846 that.
2847 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
2848 file will be used.
2849 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
2850 (prepare): Given that for the time being changesyntax is not
2851 usable in M4, rename the muscles using `-' to `_'.
2852 Define `defines_flag', `output_parser_name' and `output_header_name'.
2853 * src/output.h (actions_output, guards_output)
2854 (token_definitions_output): Adjust prototypes.
2855 * src/scan-skel.l: Instead of scanning the skeletons, it now
2856 processes the output of m4: `__oline__' and `#output'.
2857 * data/bison.simple: Adjust to be used by M4(sugar).
2858 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
2859 to date.
2860 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
2861 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
2862 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
2863 shamelessly stolen from CVS Autoconf.
2864
28652002-02-05 Akim Demaille <akim@epita.fr>
2866
2867 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
2868 * configure.in: Check for the declarations of free and malloc.
2869 * src/muscle_tab.c: Adjust.
2870
28712002-02-05 Akim Demaille <akim@epita.fr>
2872
2873 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
2874 which have no values.
2875
28762002-02-05 Akim Demaille <akim@epita.fr>
2877
2878 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
2879 * data/: here.
2880
28812002-01-29 Paul Eggert <eggert@twinsun.com>
2882
2883 * src/bison.simple (YYSIZE_T): Do not define merely because
2884 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
2885 On some platforms, <alloca.h> does not declare YYSTD (size_t).
2886
28872002-01-27 Akim Demaille <akim@epita.fr>
2888
2889 Fix `%nonassoc and eof'.
2890
2891 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
2892 which were not properly copied! Replace
2893 memcpy (res->errs, src->errs, src->nerrs);
2894 with
2895 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
2896 !!!
2897 * tests/regression.at (%nonassoc and eof): Adjust to newest
2898 Autotest: `.' is not in the PATH.
2899
29002002-01-27 Akim Demaille <akim@epita.fr>
2901
2902 * tests/sets.at (AT_EXTRACT_SETS): New.
2903 (Nullable): Use it.
2904 (Firsts): New.
2905
29062002-01-26 Akim Demaille <akim@epita.fr>
2907
2908 * tests/actions.at, tests/calc.at, tests/headers.at,
2909 * tests/torture.at: Adjust to the newest Autotest which no longer
2910 forces `.' in the PATH.
2911
29122002-01-25 Akim Demaille <akim@epita.fr>
2913
2914 * tests/regression.at (%nonassoc and eof): New.
2915 Suggested by Robert Anisko.
2916
29172002-01-24 Akim Demaille <akim@epita.fr>
2918
2919 Bison dumps core when trying to complain about broken input files.
2920 Reported by Cris van Pelt.
2921
2922 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
2923 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
2924 into...
2925 (Invalid inputs): Strengthen: exercise parse_percent_token.
2926
29272002-01-24 Robert Anisko <robert.anisko@epita.fr>
2928
2929 * src/Makefile.am: Add bison.c++.
2930 * src/bison.c++: New skeleton.
2931
29322002-01-21 Paolo Bonzini <bonzini@gnu.org>
2933
2934 * po/it.po: New.
2935
29362002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
2937
2938 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
2939
29402002-01-20 Marc Autret <marc@gnu.org>
2941
2942 * src/files.c (compute_output_file_names): Fix
2943
29442002-01-20 Marc Autret <marc@gnu.org>
2945
2946 * tests/output.at: New test.
2947 * src/files.c (compute_base_names): Don't map extensions when
2948 the YACC flag is set, use defaults.
2949 Reported by Evgeny Stambulchik.
2950
29512002-01-20 Marc Autret <marc@gnu.org>
2952
2953 * src/system.h: Need to define __attribute__ away for non-GCC
2954 compilers as well (i.e. the vendor C compiler).
2955 Suggested by Albert Chin-A-Young.
2956
29572002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
2958
2959 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
2960 canonical definition.
2961 * src/system.h: Use the canonical definition for PARAMS (avoids
2962 a conflict with the macro from lib/hash.h).
2963
29642002-01-11 Akim Demaille <akim@epita.fr>
2965
2966 * configure.in: Use AC_FUNC_STRNLEN.
2967 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
2968
29692002-01-09 Akim Demaille <akim@epita.fr>
2970
2971 * src/files.c, src/files.h (output_infix): New.
2972 (tab_extension): Remove.
2973 (compute_base_names): Compute the former, drop the latter.
2974 * src/output.c (prepare): Insert the muscles `output-infix', and
2975 `output-suffix'.
2976 * src/parse-skel.y (string, string.1): New.
2977 (section.header): Use it.
2978 (section.yacc): Remove.
2979 (prefix): Remove too.
2980 * src/scan-skel.l: Adjust.
2981 * src/bison.simple, src/bison.hairy: Adjust.
2982
29832002-01-09 Akim Demaille <akim@epita.fr>
2984
2985 * configure.in (WERROR_CFLAGS): Compute it.
2986 * src/Makefile.am (CFLAGS): Pass it.
2987 * tests/atlocal.in (CFLAGS): Idem.
2988 * src/files.c: Fix a few warnings.
2989 (get_extension_index): Remove, unused.
2990
29912002-01-08 Akim Demaille <akim@epita.fr>
2992
2993 * src/getargs.c (AS_FILE_NAME): New.
2994 (getargs): Use it to convert DOSish file names.
2995 * src/files.c (base_name): Rename as full_base_name to avoid
2996 clashes with `base_name ()'.
2997 (filename_split): New.
2998 (compute_base_names): N-th rewrite, using filename_split.
2999
30002002-01-08 Akim Demaille <akim@epita.fr>
3001
3002 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
3003 New, stolen from the Fileutils 4.1.
3004 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
3005 * configure.in: Check for the presence of memrchr, and of its
3006 prototype.
3007
30082002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
3009
3010 * lib/hash.h (__P): Added definition for this macro.
3011 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
3012 BUILT_SOURCES, to ensure they are generated first.
3013 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
3014 %error-verbose to allow bootstrapping with bison 1.30x.
3015
30162002-01-06 Akim Demaille <akim@epita.fr>
3017
3018 * src/reader.c (parse_braces): Don't fetch the next char, the
3019 convention is to fetch on entry.
3020 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
3021 'switch' without a following semicolon.
3022 * tests/regression.at (braces parsing): New.
3023
30242002-01-06 Akim Demaille <akim@epita.fr>
3025
3026 Bison is dead wrong in its RR conflict reports.
3027
3028 * tests/torture.at (GNU Cim Grammar): New.
3029 * src/conflicts.c (count_rr_conflicts): Fix.
3030
30312002-01-06 Akim Demaille <akim@epita.fr>
3032
3033 Creating package.m4 from configure.ac causes too many problems.
3034
3035 * tests/Makefile.am (package.m4): Create it by hand,
3036 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
3037
30382002-01-06 Akim Demaille <akim@epita.fr>
3039
3040 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
3041 skeleton.h.
3042
30432002-01-04 Paul Eggert <eggert@twinsun.com>
3044
3045 * doc/bison.texinfo (Debugging):
3046 Remove YYSTDERR; it's no longer defined or used.
3047 Also, s/cstdio.h/cstdio/.
3048
30492002-01-03 Akim Demaille <akim@epita.fr>
3050
3051 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
3052
30532002-01-03 Akim Demaille <akim@epita.fr>
3054
3055 * src/parse-skel.y (process_skeleton): Don't bind the parser's
3056 tracing code to --trace, wait for a better --trace option, with
3057 args.
3058
30592002-01-03 Akim Demaille <akim@epita.fr>
3060
3061 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
3062 The ISO C++ standard is extremely clear about it: stderr is
3063 considered a macro, not a regular symbol (see table 94 `Header
3064 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
3065 Therefore std:: does not apply to it. It still does with fprintf.
3066 Also, s/cstdio.h/cstdio/.
3067
30682002-01-03 Akim Demaille <akim@epita.fr>
3069
3070 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
3071 for non system headers.
3072
30732002-01-02 Akim Demaille <akim@epita.fr>
3074
3075 Equip the skeleton chain with location tracking, runtime trace,
3076 pure parser and scanner.
3077
3078 * src/parse-skel.y: Request a pure parser, locations, and prefix
3079 renaming.
3080 (%union): Having several members with the same type does not help
3081 type mismatches, simplify.
3082 (YYPRINT, yyprint): New.
3083 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
3084 (skel_error): this.
3085 Handle locations.
3086 * src/scan-skel.l: Adjust to these changes.
3087 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
3088 (LOCATION_PRINT, skel_control_t): New.
3089
30902001-12-30 Akim Demaille <akim@epita.fr>
3091
3092 * src/parse-skel.y: Get rid of the shift/reduce conflict:
3093 replace `gb' with BLANKS.
3094 * src/scan-skel.l: Adjust.
3095
30962001-12-30 Akim Demaille <akim@epita.fr>
3097
3098 * src/system.h: We don't need nor want bcopy.
3099 Throw away MS-DOS crap: we don't need getpid.
3100 * configure.in: We don't need strndup. It was even causing
3101 problems: because Flex includes the headers *before* us,
3102 _GNU_SOURCE is not defined by config.h, and therefore strndup was
3103 not visible.
3104 * lib/xstrndup.c: New.
3105 * src/scan-skel.l: Use it.
3106 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
3107 * src/parse-skel.y: Use %directives instead of #defines.
3108
31092001-12-30 Akim Demaille <akim@epita.fr>
3110
3111 * src/skeleton.h: New.
3112 * src/output.c (output_parser, output_master_parser): Remove, dead
3113 code.
3114 * src/output.h (get_lines_number, actions_output, guards_output)
3115 (token_definitions_output): Prototype them.
3116 * src/parse-skel.y: Add the license notice.
3117 Include output.h and skeleton.h.
3118 (process_skeleton): Returns void, and takes a single parameter.
3119 * src/scan-skel.l: Add the license notice.
3120 Include skeleton.h.
3121 Don't use %option yylineno: it seems that then Flex imagines
3122 REJECT has been used, and therefore it won't reallocate its
3123 buffers (which makes no other sense to me than a bug). It results
3124 in warnings for `unused: yy_flex_realloc'.
3125
31262001-12-30 Robert Anisko <robert.anisko@epita.fr>
3127
3128 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
3129 (MUSCLE_INSERT_PREFIX): ...to there.
3130 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
3131 (MUSCLE_INSERT_PREFIX): Move from here...
3132
3133 * src/bison.hairy: Add a section directive. Put braces around muscle
3134 names. This parser skeleton is still broken, but Bison should not
3135 choke on a bad muscle 'syntax'.
3136 * src/bison.simple: Add a section directive. Put braces around muscle
3137 names.
3138
3139 * src/files.h (strsuffix, stringappend): Add declarations.
3140 (tab_extension): Add declaration.
3141 (short_base_name): Add declaration.
3142
3143 * src/files.c (strsuffix, stringappend): No longer static. These
3144 functions are used in the skeleton parser.
3145 (tab_extension): New.
3146 (compute_base_names): Use the computations done in this function
3147 to guess if the generated parsers should have '.tab' in their
3148 names.
3149 (short_base_name): No longer static.
3150
3151 * src/output.c (output_skeleton): New.
3152 (output): Disable call to output_master_parser, and give a try to
3153 a new skeleton handling system.
3154 (guards_output, actions_output): No longer static.
3155 (token_definitions_output, get_lines_number): No longer static.
3156
3157 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
3158
3159 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
3160 parse-skel.y.
3161
3162 * src/parse-skel.y: New file.
3163 * src/scan-skel.l: New file.
3164
31652001-12-29 Akim Demaille <akim@epita.fr>
3166
3167 %name-prefix is broken.
3168
3169 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
3170 Adjust all dependencies.
3171 * tests/headers.at (export YYLTYPE): Strengthen this test: use
3172 %name-prefix.
3173
3174 Renaming yylval but not yylloc is not consistent. Now we do.
3175
3176 * src/bison.simple: Prefix yylloc if used.
3177 * doc/bison.texinfo (Decl Summary): Document that.
3178
31792001-12-29 Akim Demaille <akim@epita.fr>
3180
3181 * doc/bison.texinfo: Promote `%long-directive' over
3182 `%long_directive'.
3183 Remove all references to fixed-output-files, yacc is enough.
3184
31852001-12-29 Akim Demaille <akim@epita.fr>
3186
3187 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
3188 user prologue. These are defaults.
3189 * tests/actions.at (Mid-rule actions): Make sure the user can
3190 define YYDEBUG and YYERROR_VERBOSE.
3191
31922001-12-29 Akim Demaille <akim@epita.fr>
3193
3194 * src/output.c (header_output): Don't forget to export YYLTYPE and
3195 yylloc.
3196 * tests/headers.at (export YYLTYPE): New, make sure it does.
3197 * tests/regression.at (%union and --defines, Invalid CPP headers):
3198 Move to...
3199 * tests/headers.at: here.
3200
32012001-12-29 Akim Demaille <akim@epita.fr>
3202
3203 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
3204
32052001-12-29 Akim Demaille <akim@epita.fr>
3206
3207 * tests/actions.at (Mid-rule actions): Output on a single line
3208 instead of several.
3209
32102001-12-29 Akim Demaille <akim@epita.fr>
3211
3212 * doc/bison.texinfo: Formatting changes.
3213
32142001-12-29 Akim Demaille <akim@epita.fr>
3215
3216 Don't store the token defs in a muscle, just be ready to output it
3217 on command. Now possible via `symbols'. Fixes a memory leak.
3218
3219 * src/output.c (token_definitions_output): New.
3220 (output_parser, header_output): Use it.
3221 * src/reader.c (symbols_save): Remove.
3222
32232001-12-29 Akim Demaille <akim@epita.fr>
3224
3225 * src/bison.simple: Do not provide a default for YYSTYPE and
3226 YYLTYPE before the user's prologue. Otherwise it's hardly... a
3227 default.
3228
32292001-12-29 Akim Demaille <akim@epita.fr>
3230
3231 Mid-rule actions are simply... ignored!
3232
3233 * src/reader.c (readgram): Be sure to attach mid-rule actions to
3234 the empty-rule associated to the dummy symbol, not to the host
3235 rule.
3236 * tests/actions.at (Mid-rule actions): New.
3237
32382001-12-29 Akim Demaille <akim@epita.fr>
3239
3240 Memory leak.
3241
3242 * src/reader.c (reader): Free grammar.
3243
32442001-12-29 Akim Demaille <akim@epita.fr>
3245
3246 Memory leak.
3247
3248 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
3249 since it allocates it for each state, although only one is needed.
3250 (allocate_storage): Do it here.
3251
32522001-12-29 Akim Demaille <akim@epita.fr>
3253
3254 * src/options.h, src/options.c (create_long_option_table): Rename
3255 as...
3256 (long_option_table_new): this, with a clearer prototype.
3257 (percent_table): Remove, unused,
3258 * src/getargs.c (getargs): Adjust.
3259
32602001-12-29 Akim Demaille <akim@epita.fr>
3261
3262 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
3263 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
3264 as states.
3265
32662001-12-29 Akim Demaille <akim@epita.fr>
3267
3268 * src/lalr.c (build_relations): Rename `states' as `states1'.
3269 Sorry, I don't understand exactly what it is, no better name...
3270
32712001-12-29 Akim Demaille <akim@epita.fr>
3272
3273 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
3274 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
3275 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
3276 as rules.
3277
32782001-12-29 Akim Demaille <akim@epita.fr>
3279
3280 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
3281 ago.
3282
32832001-12-29 Akim Demaille <akim@epita.fr>
3284
3285 * src/reader.c, src/reader.h (user_toknums): Remove.
3286 Adjust all users to use symbols[i]->user_token_number.
3287
32882001-12-29 Akim Demaille <akim@epita.fr>
3289
3290 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
3291 Adjust all users to use symbols[i]->prec or ->assoc.
3292
32932001-12-29 Akim Demaille <akim@epita.fr>
3294
3295 * src/reader.c, src/reader.h (tags): Remove.
3296 Adjust all users to use symbols[i]->tag.
3297
32982001-12-29 Akim Demaille <akim@epita.fr>
3299
3300 * src/gram.h, src/gram.c (symbols): New, similar to state_table
3301 and rule_table.
3302 * src/reader.c (packsymbols): Fill this table.
3303 Drop sprec.
3304 * src/conflicts.c (resolve_sr_conflict): Adjust.
3305 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
3306 single table.
3307 Use symbols[i]->tag instead of tags[i].
3308
33092001-12-29 Akim Demaille <akim@epita.fr>
3310
3311 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
3312 In addition, put a comment in there, to replace...
3313 * tests/regression.at (%union and C comments): Remove.
3314
33152001-12-29 Akim Demaille <akim@epita.fr>
3316
3317 * tests/regression.at (Web2c Actions): Blindly move the actual
3318 output as expected output. The contents *seem* right to me, but I
3319 can't pretend reading perfectly parser tables... Nonetheless, all
3320 the other tests pass correctly, the table look OK, even though the
3321 presence of `$axiom' is to be noted: AFAICS it is useless (but
3322 harmless).
3323
33242001-12-29 Akim Demaille <akim@epita.fr>
3325
3326 * src/reader.c (readgram): Don't add the rule 0 if there were no
3327 rules read. In other words, add it _after_ having performed
3328 grammar sanity checks.
3329 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
3330
33312001-12-29 Akim Demaille <akim@epita.fr>
3332
3333 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
3334 visible, and some states have now a different number.
3335
33362001-12-29 Akim Demaille <akim@epita.fr>
3337
3338 * src/reader.c (readgram): Bind the initial rule's lineno to that
3339 of the first rule.
3340 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
3341 (Solved SR Conflicts): Adjust rule 0's line number.
3342
33432001-12-29 Akim Demaille <akim@epita.fr>
3344
3345 Fix the `GAWK Grammar' failure.
3346
3347 * src/LR0.c (final_state): Initialize to -1 so that we do compute
3348 the reductions of the first state which was mistakenly confused
3349 with the final state because precisely final_state was initialized
3350 to 0.
3351 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
3352 now noticed by Bison.
3353 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
3354 have a reduction on $default.
3355
33562001-12-29 Akim Demaille <akim@epita.fr>
3357
3358 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
3359 rule line numbers.
3360 * src/closure.c (print_closure): Likewise.
3361 * src/derives.c (print_derives): Likewise.
3362 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
3363 now.
3364
33652001-12-29 Akim Demaille <akim@epita.fr>
3366
3367 * src/lalr.c (lookaheads_print): New.
3368 (lalr): Call it when --trace-flag.
3369 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
3370 are dumped.
3371
33722001-12-29 Akim Demaille <akim@epita.fr>
3373
3374 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
3375 when walking through ritem, even via rule->rhs.
3376 * src/reduce.c (dump_grammar, useful_production, reduce_output)
3377 (useful_production, useless_nonterminals): Likewise.
3378 (reduce_grammar_tables): Likewise, plus update nritems.
3379 * src/nullable.c (set_nullable): Likewise.
3380 * src/lalr.c (build_relations): Likewise.
3381 * tests/sets.at (Nullable): Adjust.
3382 Fortunately, now, the $axiom is no longer nullable.
3383
33842001-12-29 Akim Demaille <akim@epita.fr>
3385
3386 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
3387 the 0-sentinel.
3388 * src/gram.c (ritem_longest_rhs): Likewise.
3389 * src/reduce.c (nonterminals_reduce): Likewise.
3390 * src/print_graph.c (print_graph): Likewise.
3391 * src/output.c (output_rule_data): Likewise.
3392 * src/nullable.c (set_nullable): Likewise.
3393
33942001-12-29 Akim Demaille <akim@epita.fr>
3395
3396 * src/output.c: Comment changes.
3397
33982001-12-27 Paul Eggert <eggert@twinsun.com>
3399
3400 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
3401 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
3402 Sparc, as they were causing more porting problems than the
3403 (minor) performance improvement was worth.
3404
3405 Also, catch up with 1.31's YYSTD.
3406
34072001-12-27 Akim Demaille <akim@epita.fr>
3408
3409 * src/output.c (output_gram): Rely on nritems, not the
3410 0-sentinel. See below.
3411 Use -1 as separator, not 0.
3412 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
3413 Rely on -1 as separator in yyrhs, instead of 0.
3414 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
3415 twice `Now at end of input', therefore there are two lines less to
3416 expect.
3417
34182001-12-27 Akim Demaille <akim@epita.fr>
3419
3420 * tests/regression.at (Unresolved SR Conflicts):
3421 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
3422 below.
3423
34242001-12-27 Akim Demaille <akim@epita.fr>
3425
3426 * src/LR0.c (new_state): Recognize the final state by the fact it
3427 is reached by eoftoken.
3428 (insert_start_shifting_state, insert_eof_shifting_state)
3429 (insert_accepting_state, augment_automaton): Remove, since now
3430 these states are automatically computed from the initial state.
3431 (generate_states): Adjust.
3432 * src/print.c: When reporting a rule number to the user, substract
3433 1, so that the axiom rule is rule 0, and the first user rule is 1.
3434 * src/reduce.c: Likewise.
3435 * src/print_graph.c (print_core): For the time being, just as for
3436 the report, depend upon --trace-flags to dump the full set of
3437 items.
3438 * src/reader.c (readgram): Once the grammar read, insert the rule
3439 0: `$axiom: START-SYMBOL $'.
3440 * tests/set.at: Adjust: rule 0 is now displayed, and since the
3441 number of the states has changed (the final state is no longer
3442 necessarily the last), catch up.
3443
34442001-12-27 Akim Demaille <akim@epita.fr>
3445
3446 Try to make the use of the eoftoken valid. Given that its value
3447 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
3448 is used instead of > 0 where appropriate, (ii), depend upon nritems
3449 instead of the 0-sentinel.
3450
3451 * src/gram.h, src/gram.c (nritems): New.
3452 Expected to be duplication of nitems, but for the time being...
3453 * src/reader.c (packgram): Assert nritems and nitems are equal.
3454 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
3455 * src/closure.c (print_closure, print_fderives): Likewise.
3456 * src/gram.c (ritem_print): Likewise.
3457 * src/print.c (print_core, print_grammar): Likewise.
3458 * src/print_graph.c: Likewise.
3459
34602001-12-27 Akim Demaille <akim@epita.fr>
3461
3462 * src/main.c (main): If there are complains after grammar
3463 reductions, then output the report anyway if requested, then die.
3464 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
3465 * src/reader.c (eoftoken): New.
3466 (parse_token_decl): If the token being defined has value `0', it
3467 is the eoftoken.
3468 (packsymbols): No longer hack `tags' to insert `$' by hand.
3469 Be sure to preserve the value of the eoftoken.
3470 (reader): Make sure eoftoken is defined.
3471 Initialize nsyms to 0: now eoftoken is created just like the others.
3472 * src/print.c (print_grammar): Don't special case the eof token.
3473 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
3474 lie anyway, albeit pleasant.
3475 * tests/calc.at: Exercise error messages with eoftoken.
3476 Change the grammar so that empty input is invalid.
3477 Adjust expectations.
3478 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
3479
34802001-12-27 Akim Demaille <akim@epita.fr>
3481
3482 * configure.in: Check the protos of strchr ans strspn.
3483 Replace strchr if needed.
3484 * src/system.h: Provide the protos of strchr, strspn and memchr if
3485 missing.
3486 * lib/strchr.c: New.
3487 * src/reader.c (symbols_save): Use strchr.
3488
34892001-12-27 Akim Demaille <akim@epita.fr>
3490
3491 * src/print.c, src/print_graph.c (escape): New.
3492 Use it to quote the TAGS outputs.
3493 * src/print_graph.c (print_state): Now errors are in red, and
3494 reductions in green.
3495 Prefer high to wide: output the state number on a line of its own.
3496
34972001-12-27 Akim Demaille <akim@epita.fr>
3498
3499 * src/state.h, src/state.c (reductions_new): New.
3500 * src/LR0.c (set_state_table): Let all the states have a
3501 `reductions', even if reduced to 0.
3502 (save_reductions): Adjust.
3503 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
3504 * src/print.c (print_reductions, print_actions): Adjust.
3505 * src/output.c (action_row): Adjust.
3506
35072001-12-27 Akim Demaille <akim@epita.fr>
3508
3509 * src/state.h, src/state.c (errs_new, errs_dup): New.
3510 * src/LR0.c (set_state_table): Let all the states have an errs,
3511 even if reduced to 0.
3512 * src/print.c (print_errs, print_reductions): Adjust.
3513 * src/output.c (output_actions, action_row): Adjust.
3514 * src/conflicts.c (resolve_sr_conflict): Adjust.
3515
35162001-12-27 Akim Demaille <akim@epita.fr>
3517
3518 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
3519
35202001-12-27 Akim Demaille <akim@epita.fr>
3521
3522 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
3523 * src/print.c: here.
3524 (lookaheadset, shiftset): New, used as additional storage by
3525 print_reductions.
3526 (print_results): Adjust.
3527 (print_shifts, print_gotos, print_errs): New, extracted from...
3528 (print_actions): here.
3529 * src/print_graph.c (print_actions): Remove dead code.
3530
35312001-12-27 Akim Demaille <akim@epita.fr>
3532
3533 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
3534 `$n' and `@n'.
3535
35362001-12-27 Akim Demaille <akim@epita.fr>
3537
3538 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
3539 (build_relations): Adjust.
3540
35412001-12-27 Akim Demaille <akim@epita.fr>
3542
3543 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
3544 duplication.
3545
35462001-12-27 Akim Demaille <akim@epita.fr>
3547
3548 * src/reader.c (packgram): Catch nitems overflows.
3549
35502001-12-27 Akim Demaille <akim@epita.fr>
3551
3552 * src/files.c, src/files.h (guard_obstack): Remove.
3553 * src/output.c (output): Adjust.
3554 * src/reader.c (parse_braces): New, factoring...
3555 (copy_action, copy_guard): these two which are renamed as...
3556 (parse_action, parse_guard): these.
3557 As a voluntary consequence, using braces around guards is now
3558 mandatory.
3559
35602001-12-27 Akim Demaille <akim@epita.fr>
3561
3562 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
3563 * src/reader.c (symbol_list): `guard' and `guard_line' are new
3564 members.
3565 (symbol_list_new): Adjust.
3566 (copy_action): action_line is the first line, not the last.
3567 (copy_guard): Just as for actions, store the `action' only, not
3568 the switch/case/break flesh.
3569 Don't parse the user action that might follow the guard, let...
3570 (readgram): do it, i.e., now, there can be an action after a
3571 guard.
3572 In other words the guard is just explicitly optional.
3573 (packgram): Adjust.
3574 * src/output.c (guards_output): New.
3575 (output_parser): Call it when needed.
3576 (output): Also free the guard and attrs obstacks.
3577 * src/files.c, src/files.h (obstack_save): Remove.
3578 (output_files): Remove.
3579 As a result, if one needs the former `.act' file, using an
3580 appropriate skeleton which requires actions and guards is now
3581 required.
3582 * src/main.c (main): Adjust.
3583 * tests/semantic.at: New.
3584 * tests/regression.at: Use `input.y' as input file name.
3585 Avoid 8+3 problems by requiring input.c when the test needs the
3586 parser.
3587
35882001-12-27 Akim Demaille <akim@epita.fr>
3589
3590 * src/reader.c (symbol_list_new): Be sure to initialize all the
3591 fields.
3592
35932001-12-27 Akim Demaille <akim@epita.fr>
3594
3595 All the hacks using a final pseudo state are now useless.
3596
3597 * src/LR0.c (set_state_table): state_table holds exactly nstates.
3598 * src/lalr.c (nLA): New.
3599 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
3600 instead of lookaheadsp from the pseudo state (nstate + 1).
3601
36022001-12-27 Akim Demaille <akim@epita.fr>
3603
3604 * src/output.c (action_row, token_actions): Use a state_t instead
3605 of a integer, and nlookaheads instead of the following state's
3606 lookaheadsp.
3607
36082001-12-27 Akim Demaille <akim@epita.fr>
3609
3610 * src/conflicts.c (log_resolution, flush_shift)
3611 (resolve_sr_conflict, set_conflicts, solve_conflicts)
3612 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
3613 (conflicts_print, print_reductions): Use a state_t instead of an
3614 integer when referring to a state.
3615 As much as possible, depend upon nlookaheads, instead of the
3616 `lookaheadsp' member of the following state (since lookaheads of
3617 successive states are successive, the difference between state n + 1
3618 and n served as the number of lookaheads for state n).
3619 * src/lalr.c (add_lookback_edge): Likewise.
3620 * src/print.c (print_core, print_actions, print_state)
3621 (print_results): Likewise.
3622 * src/print_graph.c (print_core, print_actions, print_state)
3623 (print_graph): Likewise.
3624 * src/conflicts.h: Adjust.
3625
36262001-12-27 Akim Demaille <akim@epita.fr>
3627
3628 * src/bison.hairy: Formatting/comment changes.
3629 ANSIfy.
3630 Remove `register' indications.
3631 Add plenty of `static'.
3632
36332001-12-27 Akim Demaille <akim@epita.fr>
3634
3635 * src/output.c (prepare): Drop the muscle `ntbase' which
3636 duplicates ntokens.
3637 * src/bison.simple: Formatting/comment changes.
3638 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
3639 is an undocumented synonym.
3640
36412001-12-22 Akim Demaille <akim@epita.fr>
3642
3643 * src/output.c (output_table_data): Change the prototype to use
3644 `int' for array ranges: some invocations do pass an int, not a
3645 short.
3646 Reported by Wayne Green.
3647
36482001-12-22 Akim Demaille <akim@epita.fr>
3649
3650 Some actions of web2c.y are improperly triggered.
3651 Reported by Mike Castle.
3652
3653 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
3654 * tests/regression.at (Web2c): Rename as...
3655 (Web2c Report): this.
3656 (Web2c Actions): New.
3657
36582001-12-22 Akim Demaille <akim@epita.fr>
3659
3660 Reductions in web2c.y are improperly reported.
3661 Reported by Mike Castle.
3662
3663 * src/conflicts.c (print_reductions): Fix.
3664 * tests/regression.at (Web2c): New.
3665
36662001-12-18 Akim Demaille <akim@epita.fr>
3667
3668 Some host fail on `assert (!"foo")', which expands to
3669 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
3670 Reported by Nelson Beebee.
3671
3672 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
3673 `#define it_succeeded 0' and `assert (it_succeeded)'.
3674
36752001-12-17 Marc Autret <autret_m@epita.fr>
3676
3677 * src/bison.simple: Don't hard code the skeleton line and filename.
3678 * src/output.c (output_parser): Rename 'line' as 'output_line'.
3679 New line counter 'skeleton_line' (skeleton-line muscle).
3680
36812001-12-17 Paul Eggert <eggert@twinsun.com>
3682
3683 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
3684 YYDEBUG must be defined to a nonzero value.
3685
3686 * src/bison.simple (yytname): Do not assume that the user defines
3687 YYDEBUG to a properly parenthesized expression.
3688
36892001-12-17 Akim Demaille <akim@epita.fr>
3690
3691 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
3692 nlookaheads is a new member.
3693 Adjust all users.
3694 * src/lalr.h (nlookaheads): Remove this orphan declaration.
3695 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
3696 state.
3697
36982001-12-17 Akim Demaille <akim@epita.fr>
3699
3700 * src/files.h, src/files.c (open_files, close_files): Remove.
3701 * src/main.c (main): Don't open/close files, nor invoke lex_free,
3702 let...
3703 * src/reader.c (reader): Do it.
3704
37052001-12-17 Akim Demaille <akim@epita.fr>
3706
3707 * src/conflicts.c (print_reductions): Formatting changes.
3708
37092001-12-17 Akim Demaille <akim@epita.fr>
3710
3711 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
3712 (flush_reduce): New.
3713 (resolve_sr_conflict): Adjust.
3714
37152001-12-17 Akim Demaille <akim@epita.fr>
3716
3717 * src/output.c (output_obstack): Be static and rename as...
3718 (format_obstack): this, to avoid any confusion with files.c's
3719 output_obstack.
3720 * src/reader.h (muscle_obstack): Move to...
3721 * src/output.h: here, since it's defined in output.c.
3722
37232001-12-17 Akim Demaille <akim@epita.fr>
3724
3725 * src/output.c (action_row, save_column, default_goto)
3726 (sort_actions, matching_state, pack_vector): Better variable
3727 locality.
3728
37292001-12-17 Akim Demaille <akim@epita.fr>
3730
3731 * src/output.c: Various formatting changes.
3732
37332001-12-17 Akim Demaille <akim@epita.fr>
3734
3735 * src/files.c (output_files): Free the output_obstack.
3736 * src/main.c (main): Call print and print_graph conditionally.
3737 * src/print.c (print): Work unconditionally.
3738 * src/print_graph.c (print_graph): Work unconditionally.
3739 * src/conflicts.c (log_resolution): Output only if verbose_flag.
3740
37412001-12-16 Marc Autret <autret_m@epita.fr>
3742
3743 * src/output.c (actions_output): Fix. When we use %no-lines,
3744 there is one less line per action.
3745
37462001-12-16 Marc Autret <autret_m@epita.fr>
3747
3748 * src/bison.simple: Remove a useless #line directive.
3749 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
3750 * src/output.c (get_lines_number): New.
3751 (output_parser): Adjust, now takes care about the lines of a
3752 output muscles.
3753 Fix line numbering.
3754 (actions_output): Computes the number of lines taken by actions.
3755 (output_master_parser): Insert new skeleton which is the name of
3756 the output parser file name.
3757
37582001-12-15 Marc Autret <autret_m@epita.fr>
3759
3760 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
3761
37622001-12-15 Marc Autret <autret_m@epita.fr>
3763
3764 * src/output.c (output_gram): Keep track of the hairy one.
3765
37662001-12-15 Akim Demaille <akim@epita.fr>
3767
3768 Make `make distcheck' work.
3769
3770 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
3771 system.h which uses libgettext.h.
3772
37732001-12-15 Akim Demaille <akim@epita.fr>
3774
3775 * src/nullable.c (set_nullable): Useless rules must be skipped,
3776 otherwise, since we range over their symbols, we might look at a
3777 nonterminal which no longer ``exists'', i.e., it is not counted in
3778 `nvars', hence we overflow our arrays.
3779
37802001-12-15 Akim Demaille <akim@epita.fr>
3781
3782 The header can also be produced directly, without any obstack!
3783 Yahoo!
3784
3785 * src/files.c, src/files.h (defines_obstack): Remove.
3786 (compute_header_macro): Global.
3787 (defines_obstack_save): Remove.
3788 * src/reader.c (parse_union_decl): No longer output to
3789 defines_obstack: its content can be found in the `stype' muscle
3790 anyway.
3791 (output_token_translations): Merge into...
3792 (symbols_output): this.
3793 Rename as...
3794 (symbols_save): this.
3795 (reader): Adjust.
3796 * src/output.c (header_output): New.
3797 (output): Call it.
3798
37992001-12-15 Akim Demaille <akim@epita.fr>
3800
3801 * src/reader.c (parse_union_decl): Instead of handling two obstack
3802 simultaneously, use one to define the `stype' muscle, and use the
3803 value of the latter to fill defines_obstack.
3804 (copy_comment): Remove.
3805 (copy_comment2): Work for a single obstack.
3806 Rename as...
3807 (copy_comment): this.
3808
38092001-12-15 Akim Demaille <akim@epita.fr>
3810
3811 * src/lex.c, src/lex.h (xgetc): No longer static.
3812 * src/reader.c (parse_union_decl): Revamp.
3813
38142001-12-15 Akim Demaille <akim@epita.fr>
3815
3816 Still making progress in separating Bison into (i) input, (ii)
3817 process, (iii) output: now we can directly output the parser file
3818 without using table_obstack at all.
3819
3820 * src/files.c, src/files.h (table_obstack): Bye bye.
3821 (parser_file_name): New.
3822 * src/files.c (compute_output_file_names): Compute it.
3823 * src/output.c (actions_output, output_parser)
3824 (output_master_parser): To a file instead of an obstack.
3825
38262001-12-15 Akim Demaille <akim@epita.fr>
3827
3828 Attach actions to rules, instead of pre-outputting them to
3829 actions_obstack.
3830
3831 * src/gram.h (rule_t): action and action_line are new members.
3832 * src/reader.c (symbol_list): Likewise.
3833 (copy_action): Save the actions within the rule.
3834 (packgram): Save them in rule_table.
3835 * src/output.c (actions_output): New.
3836 (output_parser): Use it on `%%actions'.
3837 (output_rule_data): Don't free rule_table.
3838 (output): Do it.
3839 (prepare): Don't save the `action' muscle.
3840 * src/bison.simple: s/%%action/%%actions/.
3841
38422001-12-15 Akim Demaille <akim@epita.fr>
3843
3844 * src/reader.c (copy_action): When --yacc, don't append a `;'
3845 to the user action: let it fail if lacking.
3846 Suggested by Arnold Robbins and Tom Tromey.
3847
38482001-12-14 Akim Demaille <akim@epita.fr>
3849
3850 * src/lex.c (literalchar): Simply return the char you decoded, non
3851 longer mess around with obstacks and int pointers.
3852 Adjust all callers.
3853
38542001-12-14 Akim Demaille <akim@epita.fr>
3855
3856 * src/lex.c (literalchar): Don't escape the special characters,
3857 just decode them, and keep them as char (before, eol was output as
3858 the 2 char string `\n' etc.).
3859 * src/output.c (output_rule_data): Use quotearg to output the
3860 token strings.
3861
38622001-12-13 Paul Eggert <eggert@twinsun.com>
3863
3864 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
3865 Do not infringe on the global user namespace when using C++.
3866 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
3867 All uses of `fprintf' and `stderr' changed.
3868
3869 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
3870
38712001-12-13 Akim Demaille <akim@epita.fr>
3872
3873 The computation of nullable is broken: it doesn't handle empty
3874 RHS's properly.
3875
3876 * tests/torture.at (GNU AWK Grammar): New.
3877 * tests/sets.at (Nullable): New.
3878 * src/nullable.c (set_nullable): Instead of blindly looping over
3879 `ritems', loop over the rules, and then over their rhs's.
3880
3881 Work around Autotest bugs.
3882
3883 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
3884 frame, because Autotest understand lines starting with a `+' as
3885 traces from the shell. Then, they are not processed properly.
3886 Admittedly an Autotest bug, but we don't have time to wait for
3887 Autotest to catch up.
3888 * tests/regression.at (Broken Closure): Adjust to the new table
3889 frames.
3890 Move to...
3891 * tests/sets.at: here.
3892
38932001-12-13 Akim Demaille <akim@epita.fr>
3894
3895 * src/closure.c (closure): Use nrules instead of playing tricks
3896 with BITS_PER_WORD.
3897
38982001-12-13 Akim Demaille <akim@epita.fr>
3899
3900 * src/print.c (print_actions): Output the handling of `$' as the
3901 traces do: shifting the token EOF. Before EOF was treated as a
3902 nonterminal.
3903 * tests/regression.at: Adjust some tests.
3904 * src/print_graph.c (print_core): Complete the set of items via
3905 closure. The next-to-final and final states are still unsatisfying,
3906 but that's to be addressed elsewhere.
3907 No longer output the rule numbers, but do output the state number.
3908 A single loop for the shifts + gotos is enough, but picked a
3909 distinct color for each.
3910 (print_graph): Initialize and finalize closure.
3911
39122001-12-13 Akim Demaille <akim@epita.fr>
3913
3914 * src/reader.c (readgram): Remove dead code, an strip useless
3915 braces.
3916 (get_type): Remove, unused.
3917
39182001-12-12 Akim Demaille <akim@epita.fr>
3919
3920 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
3921 on that of lib/error.c.
3922
39232001-12-12 Akim Demaille <akim@epita.fr>
3924
3925 Some hosts don't like `/' in includes.
3926
3927 * src/system.h: Include libgettext.h without qualifying the path.
3928 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
3929 $(top_srcdir).
3930
39312001-12-11 Marc Autret <autret_m@epita.fr>
3932
3933 * src/output.c (output_parser): Remove useless muscle.
3934
39352001-12-11 Marc Autret <autret_m@epita.fr>
3936
3937 * src/bison.simple: Remove #line just before %%epilogue. It
3938 is now handled in ...
3939 * src/reader.c (read_additionnal_code): Add the output of a
3940 #line for the epilogue.
3941
39422001-12-10 Marc Autret <autret_m@epita.fr>
3943
3944 * src/reader.c (copy_definition): Re-use CPP-outed code which
3945 replace precedent remove.
3946 * src/bison.simple: Remove #line before %%prologue because
3947 %%input-line is wrong at this time.
3948
39492001-12-10 Marc Autret <autret_m@epita.fr>
3950
3951 * src/reader.c (symbols_output): Clean up.
3952 * src/output.c (output_gram, output): Clean up.
3953
39542001-12-10 Akim Demaille <akim@epita.fr>
3955
3956 * src/lalr.c (initialize_lookaheads): New. Extracted from...
3957 * src/LR0.c (set_state_table): here.
3958 * src/lalr.c (lalr): Call it.
3959
39602001-12-10 Akim Demaille <akim@epita.fr>
3961
3962 * src/state.h (shifts): Remove the `number' member: shifts are
3963 attached to state, hence no longer need to be labelled with a
3964 state number.
3965
39662001-12-10 Akim Demaille <akim@epita.fr>
3967
3968 Now that states have a complete set of members, the linked list of
3969 shifts is useless: just fill directly the state's shifts member.
3970
3971 * src/state.h (shifts): Remove the `next' member.
3972 * src/LR0.c (first_state, last_state): Remove.
3973 Adjust the callers.
3974 (augment_automaton): Don't look for the shifts that must be added
3975 a shift on EOF: it is those of the state we looked for! But now,
3976 since shifts are attached, it is no longer needed to looking
3977 merely by its id: its number.
3978
39792001-12-10 Akim Demaille <akim@epita.fr>
3980
3981 * src/LR0.c (augment_automaton): Better variable locality.
3982 Remove an impossible branch: if there is a state corresponding to
3983 the start symbol being shifted, then there is shift for the start
3984 symbol from the initial state.
3985
39862001-12-10 Akim Demaille <akim@epita.fr>
3987
3988 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
3989 only when appropriate: when insert_start_shifting_state' is not
3990 invoked.
3991 * tests/regression.at (Rule Line Numbers): Adjust.
3992
39932001-12-10 Akim Demaille <akim@epita.fr>
3994
3995 * src/LR0.c (augment_automaton): Now that all states have shifts,
3996 merge the two cases addition shifts to the initial state.
3997
39982001-12-10 Akim Demaille <akim@epita.fr>
3999
4000 * src/lalr.c (set_state_table): Move to...
4001 * src/LR0.c: here.
4002 * src/lalr.c (lalr): Don't call it...
4003 * src/LR0.c (generate_states): do it.
4004 * src/LR0.h (first_state): Remove, only the table is used.
4005
40062001-12-10 Akim Demaille <akim@epita.fr>
4007
4008 * src/LR0.h (first_shift, first_reduction): Remove.
4009 * src/lalr.c: Don't use first_shift: find shifts through the
4010 states.
4011
40122001-12-10 Akim Demaille <akim@epita.fr>
4013
4014 * src/LR0.c: Attach shifts to states as soon as they are
4015 computed.
4016 * src/lalr.c (set_state_table): Instead of assigning shifts to
4017 state, just assert that the mapping was properly done.
4018
40192001-12-10 Akim Demaille <akim@epita.fr>
4020
4021 * src/LR0.c (insert_start_shift): Rename as...
4022 (insert_start_shifting_state): this.
4023 (insert_eof_shifting_state, insert_accepting_state): New.
4024 (augment_automaton): Adjust.
4025 Better locality of the variables.
4026 When looking if the start_symbol is shifted from the initial
4027 state, using `while (... symbol != start_symbol ...)' sounds
4028 better than `while (... symbol < start_symbol ...)': If fail
4029 to see how the order between symbols could be relevant!
4030
40312001-12-10 Akim Demaille <akim@epita.fr>
4032
4033 * src/getargs.h: Don't declare `spec_name_prefix' and
4034 `spec_file_prefix', declared by src/files.h.
4035 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
4036 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
4037 * src/output.c (prepare): Adjust.
4038 * src/reader.c (symbols_output): Likewise.
4039 * src/vmsgetargs.c: Vaguely adjust, but who cares?
4040
40412001-12-10 Akim Demaille <akim@epita.fr>
4042
4043 * src/muscle_tab.c (muscle_init): NULL is a better default than
4044 `"0"'.
4045
40462001-12-10 Akim Demaille <akim@epita.fr>
4047
4048 * src/reader.c (reader): Calling symbols_output once is enough.
4049
40502001-12-10 Akim Demaille <akim@epita.fr>
4051
4052 Now that states have a complete set of members, the linked list of
4053 reductions is useless: just fill directly the state's reductions
4054 member.
4055
4056 * src/state.h (struct reductions): Remove member `number' and
4057 `next'.
4058 * src/LR0.c (first_reduction, last_reduction): Remove.
4059 (save_reductions): Don't link the new reductions, store them in
4060 this_state.
4061 * src/lalr.c (set_state_table): No need to attach reductions to
4062 states, it's already done.
4063 * src/output.c (output_actions): No longer free the shifts, then
4064 the reductions, then the states: free all the states and their
4065 members.
4066
40672001-12-10 Akim Demaille <akim@epita.fr>
4068
4069 * src/options.c (OPTN, DRTV, BOTH): New.
4070 (option_table): Use them.
4071
4072 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
4073 the job of system.h.
4074 * src/options.c: Don't include stdio.h and xalloc.h for the same
4075 reasons.
4076
40772001-12-10 Akim Demaille <akim@epita.fr>
4078
4079 * src/output.c (output, prepare): Make sure the values of the
4080 muscles `action' and `prologue' are 0-terminated.
4081
40822001-12-10 Akim Demaille <akim@epita.fr>
4083
4084 Clean up GCC warnings.
4085
4086 * src/reader.c (copy_action): `buf' is not used.
4087 (parse_skel_decl): Be static.
4088 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
4089 * src/options.h (create_long_option_table): Have a real prototype.
4090 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
4091 (hash_delete_at): Return const void *.
4092 Adjust casts to preserve the const.
4093
40942001-12-10 Akim Demaille <akim@epita.fr>
4095
4096 * configure.in: Require 2.52g.
4097 M4 is not needed, but AUTOM4TE is.
4098 * m4/m4.m4: Remove.
4099 * tests/Makefile.am: Adjust.
4100
41012001-12-10 Akim Demaille <akim@epita.fr>
4102
4103 One structure for states is enough, even though theoretically
4104 there are LR(0) states and LALR(1) states.
4105
4106 * src/lalr.h (state_t): Remove.
4107 (state_table): Be state_t **, not state_t *.
4108 * src/state.h (core, CORE_ALLOC): Rename as...
4109 (state_t, STATE_ALLOC): this.
4110 Add the LALR(1) members: shifts, reductions, errs.
4111 * src/LR0.c (state_table): Rename as...
4112 (state_hash): this, to avoid name clashes with the global
4113 `state_table'.
4114 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
4115 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
4116
41172001-12-10 Akim Demaille <akim@epita.fr>
4118
4119 Bison dumps core on bash.y.
4120 Reported by Pascal Bart.
4121
4122 * src/warshall.c (bitmatrix_print): New.
4123 (TC): Use it.
4124 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
4125 j must be the outer loop.
4126 * tests/regression.at (Broken Closure): New.
4127
41282001-12-05 Akim Demaille <akim@epita.fr>
4129
4130 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
4131 its argument.
4132