]> git.saurik.com Git - bison.git/blame - ChangeLog
* configure.in: Rename as...
[bison.git] / ChangeLog
CommitLineData
3a93251e
AD
12002-09-04 Akim Demaille <akim@epita.fr>
2
3 * configure.in: Rename as...
4 * configure.ac: this.
5 Bump to 1.49c.
6
427c0dda
AD
72002-09-04 Akim Demaille <akim@epita.fr>
8
9 * src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
10 * src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
11 translate maintainer only messages.
12
6a254321
PE
132002-08-12 Paul Eggert <eggert@twinsun.com>
14
645e30d1
PE
15 Version 1.49b.
16
6a254321
PE
17 * Makefile.am (SUBDIRS): Remove intl.
18 (DISTCLEANFILES): Remove.
19 * NEWS: Mention that GNU M4 is now required. Clarify what is
20 meant by "larger grammars". Mention the pt_BR translation.
21 * configure.in (AC_CHECK_DECLS): Add getenv, getopt.
22 (AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var.
23 Bump version from 0.11.2 to 0.11.5.
24 (BISON_PREREQ_STAGE): Remove.
25 (AM_GNU_GETTEXT): Use external gettext.
26 (AC_OUTPUT): Remove intl/Makefile.
27
28 * config/depcomp, config/install-sh: Sync with Automake 1.6.3.
29
30 * data/glr.c: Include string.h, for strlen.
31 (yyreportParseError): Use size_t for yysize.
32 (yy_yypstack): No longer nested inside yypstates, as nested
33 functions are not portable. Do not assume size_t is the
34 same width as int.
35 (yypstates): Do not assume that ptrdiff_t is the same width
36 as int, and similarly for yyposn and YYINDEX.
37
38 * data/yacc.c: Fix comment about `$$ = $1': it can copy garbage.
39
40 * lib/Makefile.am (INCLUDES): Do not include from the intl
41 directory, which has been removed.
42 * src/Makefile.am (INCLUDES): Likewise.
43
44 * lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h.
45 (bitsets_sources, additional_bitsets_sources, timevars_sources):
46 New vars.
47
48 * lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension.
49 * tests/Makefile.am (EXTRA_DIST): Likewise.
50
51 * lib/abitset.c (abitset_reverse_list, ebitset_reverse_list):
52 Do not assume that bitset_windex is the same width as unsigned.
53
54 * lib/abitset.c (abitset_unused_clear): Do not assume that
55 bitset_word is the same width as int.
56 * lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise.
57 * lib/bitset.h (bitset_set, bitset_reset): Likewise.
58 * lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise.
59 * lib/ebitset.c (ebitset_set, ebitset_reset): Likewise.
60 * lib/lbitset.c (lbitset_set, lbitset_reset): Likewise.
61
62 * lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for
63 portability to one's complement hosts!).
64 * lib/ebitset.c (ebitset_op1): Likewise.
65 * lib/lbitset.c (lbitset_op1): Likewise.
66
67 * lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar.
68 * lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
69 lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c:
70 Sync with fileutils.
71 * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
72 lib/gettext.h: Sync with diffutils.
73
74 * lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c,
75 lib/strspn.c, lib/tempname.c: Use GPL, not LGPL.
76
77 * lib/obstack.c, lib/obstack.h: Sync with fileutils, except use
78 PROTOTYPES to check for prototypes, and "defined __STDC__" to
79 check for void *.
80
81 * lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not
82 size_t; the old version tried to do this but casted improperly.
83 (bitset_bindex, bitset_windex): Now size_t, not unsigned long.
84 (bitset_test): Now returns int, not unsigned long.
85
86 * lib/bitset_stats.c: Include "gettext.h".
87 (_): New macro.
88 (bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't
89 name locals "index", as it generates unnecessary warnings on some
90 hosts that have an "index" function.
91
92 * lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print,
93 bitset_stats_read, bitset_stats_write): Wrap strings in _() if
94 they need translation.
95 * src/LR0.c (state_list_append, new_itemsets, get_state,
96 append_states, generate_states): Likewise.
97 * src/assoc.c (assoc_to_string): Likewise.
98 * src/closure.c (print_closure, set_firsts, closure): Likewise.
99 * src/gram.c (grammar_dump): Likewise.
100 * src/injections.c (injections_compute): Likewise.
101 * src/lalr.c (lookaheads_print): Likewise.
102 * src/relation.c (relation_transpose): Likewise.
103 * src/scan-gram.l: Likewise.
104 * src/tables.c (table_grow, pack_vector): Likewise.
105
106 * m4/Makefile.am (EXTRA_DIST): Remove codeset.m4,
107 glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4.
108 * m4/malloc.m4, m4/realloc.m4: Sync with diffutils.
109 * m4/mbstate_t.m4: Sync with fileutils.
110 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T.
111
112 * po/LINGUAS: Add pt_BR.
113 * po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c,
114 src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c,
115 lib/timevar.c.
116 Use src/parse-gram.y instead of src/parse-gram.c, as the gettext
117 manual recommends.
118 Similarly, use src/scan-gram.l instead of src/scan-gram.c.
119
120 * src/complain.c (strerror_r): Remove decl; not needed.
121 (strerror): Use same pattern as ../lib/error.c.
122
123 * src/files.c, src/files.h (compute_header_macro): Remove; unused.
124
125 * src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int.
126
127 * src/main.c (main): Cast result of bindtextdomain and textdomain
128 to void, to avoid a GCC warning when --disable-nls is in effect.
129
130 * src/scan-gram.l: Use strings rather than escapes when possible,
131 to minimize the number of warnings from xgettext.
132 (handle_action_dollar, handle_action_at): Don't use isdigit,
133 as it mishandles negative chars and it may not work as expected
134 outside the C locale.
135
136 * src/symtab.c (symbol_get): Don't cast LHS of an assignment;
137 this is a GCC extension and is not portable to other compilers.
138
139 * src/system.h (alloca): Use same pattern as ../lib/error.c.
140 Do not include <ctype.h>; no longer needed.
141 Do not include <malloc.h>; no longer needed (and generates
142 warnings on OpenBSD 3.0).
143
144 * tests/cxx-type.at (yylex): Do not pass signed char to isupper;
145 it's not portable.
146
147 * tests/regression.at: Do not use 'cc -c input.c -o input';
148 Sun C rejects this. Instead, use 'cc -c input.c -o input.o'.
149
150 * tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero
151 exit status as failure, not just exit status 1. Sun C exits
152 with status 2 sometimes.
153
154 * tests/torture.at (AT_INCREASE_DATA_SIZE): New macro.
155 Use it for the two large tests.
156
c8f002c7
AD
1572002-08-02 Akim Demaille <akim@epita.fr>
158
159 * src/conflicts.c (conflicts_output): Don't output rules never
160 reduced here, since anyway that computation doesn't work.
161 * src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
162 (rule_useless_p, rule_never_reduced_p): New.
163 (grammar_rules_partial_print): Use a filter instead of a range.
164 Display the title only if needed.
165 (grammar_rules_print): Adjust.
166 (grammar_rules_never_reduced_report): New.
167 * src/tables.c (action_row): Move the computation of rules never
168 reduced to...
169 (token_actions): here.
170 * src/main.c (main): Make the parser before making the report, so
171 that rules never reduced are computed.
172 Call grammar_rules_never_reduced_report.
173 * src/print.c (print_results): Report rules never reduced.
174 * tests/conflicts.at, tests/reduce.at: Adjust.
175
cd08e51e
AD
1762002-08-01 Akim Demaille <akim@epita.fr>
177
178 Instead of attaching lookaheads and duplicating the rules being
179 reduced by a state, attach the lookaheads to the reductions.
180
181 * src/state.h (state_t): Remove the `lookaheads',
182 `lookaheads_rule' member.
183 (reductions_t): Add a `lookaheads' member.
184 Use a regular array for the `rules'.
185 * src/state.c (reductions_new): Initialize the lookaheads member
186 to 0.
187 (state_rule_lookaheads_print): Adjust.
188 * src/state.h, src/state.c (state_reductions_find): New.
189 * src/conflicts.c (resolve_sr_conflict, set_conflicts)
190 (count_rr_conflicts): Adjust.
191 * src/lalr.c (LArule): Remove.
192 (add_lookback_edge): Adjust.
193 (state_lookaheads_count): New.
194 (states_lookaheads_initialize): Merge into...
195 (initialize_LA): this.
196 (lalr_free): Adjust.
197 * src/main.c (main): Don't free nullable and derives too early: it
198 is used by --verbose.
199 * src/print.c, src/print_graph.c, src/tables.c: Adjust.
200
bb0027a9
AD
2012002-08-01 Akim Demaille <akim@epita.fr>
202
203 * src/derives.h, src/derives.c (derives): A `rule_t***' instead of
204 `rule_number_t**'.
205 (set_derives, free_derives): Rename as...
206 (derives_compute, derives_free): this.
207 Adjust all dependencies.
208 * src/nullable.c (set_nullable, free_nullable): Rename as...
209 (nullable_compute, nullable_free): these.
210 (rule_list_t): Store rule_t *, not rule_number_t.
211 * src/state.c (state_rule_lookaheads_print): Directly compare rule
212 pointers, instead of their numbers.
213 * src/main.c (main): Call nullable_free, and derives_free earlier,
214 as they were lo longer used.
215
3325ddc4
AD
2162002-08-01 Akim Demaille <akim@epita.fr>
217
218 * lib/timevar.c (get_time): Include children time.
219 * src/lalr.h (LA, LArule): Don't export them: used with the
220 state_t.
221 * src/lalr.c (LA, LArule): Static.
222 * src/lalr.h, src/lalr.c (lalr_free): New.
223 * src/main.c (main): Call it.
224 * src/tables.c (pack_vector): Check whether loc is >= to the
225 table_size, not >.
226 (pack_tables): Don't free froms, tos, conflict_tos, and pos...
227 (tables_generate): do it, since that's also it which allocates
228 them.
229 Don't free LA and LArule, main does.
230
c6f1a33c
AD
2312002-07-31 Akim Demaille <akim@epita.fr>
232
233 Separate parser tables computation and output.
234
235 * src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
236 (conflict_list, conflict_list_cnt, table, check, table_ninf)
237 (yydefgoto, yydefact, high): Move to...
238 * src/tables.h, src/tables.c: here.
239 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
240 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
241 (symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
242 (froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
243 (ACTION_MIN, actrow, order, nentries, pos, conflrow)
244 (conflict_list_free, table_size, lowzero, table_grow, conflict_row)
245 (action_row, save_row, token_actions, save_column, default_goto)
246 (goto_actions, sort_actions, matching_state, pack_vector)
247 (table_ninf_remap, pack_table, prepare_actions): Move to...
248 * src/tables.c: here.
249 * src/tables.h, src/tables.c(tables_generate, tables_free): New.
250 * src/output.c (token_actions, output_base, output_conflicts)
251 (output_check): Merge into...
252 (prepare_actions): this.
253 (actions_output): Rename as...
254 (user_actions_output): this.
255 * src/main.c (main): Call tables_generate and tables_free.
256
1509d42f
AD
2572002-07-31 Akim Demaille <akim@epita.fr>
258
259 Steal GCC's --time-report support.
260
261 * lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
262 stolen/adjusted from GCC.
263 * m4/stage.m4: Remove time related checks.
264 * m4/timevar.m4: New.
265 * configure.in: Adjust.
266 * src/system.h: Adjust to using timevar.h.
267 * src/getargs.h, src/getargs.c: Support trace_time for
268 --trace=time.
269 * src/main.c (stage): Remove.
270 (main): Replace `stage' invocations with timevar calls.
271 * src/output.c: Insert pertinent timevar calls.
272
273a74fa
AD
2732002-07-31 Akim Demaille <akim@epita.fr>
274
275 Let --trace have arguments.
276
277 * src/getargs.h (enum trace_e): New.
278 * src/getargs.c (trace_args, trace_types, trace_argmatch): New.
279 (long_options, short_options): --trace/-T takes an optional
280 argument.
281 Change all the uses of trace_flag to reflect the new flags.
282 * tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.
283
284 Strengthen `stage' portability.
285
286 * m4/stage.m4 (BISON_PREREQ_STAGE): New.
287 * configure.in: Use it.
288 Don't check for malloc.h and sys/times.h.
289 * src/system.h: Include them when appropriate.
290 * src/main.c (stage): Compile only when mallinfo, struct mallinfo,
291 times and struct tms are available.
292
217598da
AD
2932002-07-30 Akim Demaille <akim@epita.fr>
294
295 In verbose parse error message, don't report `error' as an
296 expected token.
297 * tests/actions.at (Printers and Destructors): Adjust.
298 * tests/calc.at (Calculator $1): Adjust.
299 * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
300 error message, do not report the parser accepts the error token in
301 that state.
302
52489d44
AD
3032002-07-30 Akim Demaille <akim@epita.fr>
304
305 Normalize conflict related messages.
306
307 * src/complain.h, src/complain.c (warn, complain): New.
308 * src/conflicts.c (conflicts_print): Use them.
309 (conflict_report_yacc): New, extracted from...
310 (conflicts_print): here.
311 * tests/conflicts.at, tests/existing.at: Adjust.
312
e8832397
AD
3132002-07-30 Akim Demaille <akim@epita.fr>
314
315 Report rules which are never reduced by the parser: those hidden
316 by conflicts.
317
318 * src/LR0.c (save_reductions): Don't make the final state too
319 different: save its reduction (accept) instead of having a state
320 without any action (no shift or goto, no reduce).
321 Note: the final state is now a ``regular'' state, i.e., the
322 parsers now contain `reduce 0' as default reduction.
323 Nevertheless, since they decide to `accept' when yystate =
324 final_state, they still will not reduce rule 0.
325 * src/print.c (print_actions, print_reduction): Adjust.
326 * src/output.c (action_row): Track reduced rules.
327 (token_actions): Report rules never reduced.
328 * tests/conflicts.at, tests/regression.at: Adjust.
329
caf23d24
AD
3302002-07-30 Akim Demaille <akim@epita.fr>
331
332 `stage' was accidently included in a previous patch.
333 Initiate its autoconfiscation.
334
335 * configure.in: Look for malloc.h and sys/times.h.
336 * src/main.c (stage): Adjust.
337 Report only when trace_flag.
338
640748ee
AD
3392002-07-29 Akim Demaille <akim@epita.fr>
340
341 * src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
342 state_number_t.
343 (errs_t): symbol_t*, not symbol_number_t.
344 (reductions_t): rule_t*, not rule_number_t.
345 (FOR_EACH_SHIFT): New.
346 * src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
347 * src/print.c, src/print_graph.c: Adjust.
348
88bce5a2
AD
3492002-07-29 Akim Demaille <akim@epita.fr>
350
351 Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.
352
353 * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
354 (endtoken, accept): these.
355 * src/reader.c (reader): Set endtoken's default tag to "$end".
356 Set undeftoken's tag to "$undefined" instead of "$undefined.".
357 * doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
358 Adjust.
359
1bfb97db
AD
3602002-07-29 Akim Demaille <akim@epita.fr>
361
362 * src/reduce.c (reduce_grammar): When the language is empty,
363 complain about the start symbol, not the axiom.
364 Use its location.
365 * tests/reduce.at (Empty Language): New.
366
fc5734fe
AD
3672002-07-26 Akim Demaille <akim@epita.fr>
368
369 * src/reader.h, src/reader.c (gram_error): ... can't get
370 yycontrol without making too strong assumptions on the parser
371 itself.
372 * src/output.c (prepare_tokens): Use the real 0th value of
373 token_translations instead of `0'.
374 * src/parse-gram.y (yyerror): Don't rely on yycontrol being
375 visible here.
376 * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
377 for the time being: %locations ought to provide it to yyerror.
378
3650b4b8
AD
3792002-07-25 Akim Demaille <akim@epita.fr>
380
381 * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
382 * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
383 * tests/regression.at (Web2c Actions): Adjust.
384
4b3d3a8e
AD
3852002-07-25 Akim Demaille <akim@epita.fr>
386
387 Stop storing rules from 1 to nrules + 1.
388
389 * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
390 * src/nullable.c, src/output.c, src/print.c, src/reader.c
391 * src/reduce.c: Allocate and free from &rules[0], not &rules[1].
392 Iterate from 0 to nrules.
393 Use rule_number_as_item_number and item_number_as_rule_number.
394 Adjust to `derive' now containing possibly 0.
395 * src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
396 Handle the `- 1' part in rule numbers from/to item numbers.
397 * src/conflicts.c (log_resolution): Fix the message which reversed
398 shift and reduce.
399 * src/output.c (action_row): Initialize default_rule to -1.
400 (token_actions): Adjust.
401 * tests/sets.at (Nullable, Firsts): Fix the previously bogus
402 expected output.
403 * tests/conflicts.at (Resolved SR Conflicts): Likewise.
404
4a2a22f4
AD
4052002-07-25 Akim Demaille <akim@epita.fr>
406
407 * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
408 (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
409 (b4_c_knr_arg_decl): New.
410 * data/yacc.c: Use it to define yysymprint, yydestruct, and
411 yyreport_parse_error.
412
b8df3223
AD
4132002-07-25 Akim Demaille <akim@epita.fr>
414
415 * data/yacc.c (yyreport_parse_error): New, extracted from...
416 (yyparse): here.
417 (yydestruct, yysymprint): Move above yyparse.
418 Be K&R compliant.
419
a762e609
AD
4202002-07-25 Akim Demaille <akim@epita.fr>
421
422 * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
423 replace...
424 (b4_sint_type, b4_uint_type): these.
425 * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
426 * tests/regression.at (Web2c Actions): Adjust.
427
12b0043a
AD
4282002-07-25 Akim Demaille <akim@epita.fr>
429
430 * src/gram.h (TIEM_NUMBER_MAX): New.
431 (item_number_of_rule_number, rule_number_of_item_number): Rename
432 as...
433 (rule_number_as_item_number, item_number_as_rule_number): these.
434 Adjust dependencies.
435 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
436 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
437 (symbol_number_to_vector_number): New.
438 (order): Of vector_number_t* type.
439 (base_t, BASE_MAX, BASE_MIN): New.
440 (froms, tos, width, pos, check): Of base_t type.
441 (action_number_t, ACTION_MIN, ACTION_MAX): New.
442 (actrow): Of action_number_t type.
443 (conflrow): Of unsigned int type.
444 (table_ninf, base_ninf): New.
445 (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
446 (muscle_insert_int_table, muscle_insert_base_table)
447 (muscle_insert_rule_number_table): New.
448 (prepare_tokens): Output `toknum' as int_table.
449 (action_row): Returns a rule_number_t.
450 Use ACTION_MIN, not SHRT_MIN.
451 (token_actions): yydefact is rule_number_t*.
452 (table_ninf_remap): New.
453 (pack_table): Use it for `base' and `table'.
454 * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
455 replaced with...
456 (YYPACT_NINF, YYTABLE_NINF): these.
457 (yypact, yytable): Compute their types instead of hard-coded
458 `short'.
459 * tests/regression.at (Web2c Actions): Adjust.
460
5dde258a
AD
4612002-07-19 Akim Demaille <akim@epita.fr>
462
463 * src/scan-gram.l (id): Can start with an underscore.
464
a945ec39
AD
4652002-07-16 Akim Demaille <akim@epita.fr>
466
467 * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
468 Adjust all former `associativity' dependencies.
469 * src/symtab.c (symbol_new): Default associativity is `undef', not
470 `right'.
471 (symbol_check_alias_consistence): Adjust.
472
fae437e8
AD
4732002-07-09 Akim Demaille <akim@epita.fr>
474
475 * doc/bison.texinfo: Properly set the ``header'' part.
476 Use @dircategory ``GNU programming tools'' as per Texinfo's
477 documentation.
478 Use @copying.
479
1a715ef2
AD
4802002-07-09 Akim Demaille <akim@epita.fr>
481
482 * lib/quotearg.h: Protect against multiple inclusions.
483 * src/location.h (location_t): Add a `file' member.
484 (LOCATION_RESET, LOCATION_PRINT): Adjust.
485 * src/complain.c (warn_at, complain_at, fatal_at): Drop
486 `error_one_per_line' support.
487
a5d50994
AD
4882002-07-09 Akim Demaille <akim@epita.fr>
489
490 * src/complain.h, src/complain.c (warn, complain): Remove, unused.
491 * src/reader.c (lineno): Remove.
492 Adjust all dependencies.
493 (get_merge_function): Take a location and use complain_at.
494 * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
495 * tests/regression.at (Invalid inputs, Mixing %token styles):
496 Adjust.
497
b275314e
AD
4982002-07-09 Akim Demaille <akim@epita.fr>
499
500 * src/parse-gram.y (rules_or_grammar_declaration): Add an error
501 recovery rule, and forbid extensions when --yacc.
502 (gram_error): Use complain_at.
503 * src/reader.c (reader): Exit if there were parse errors.
504
865b9df1
AD
5052002-07-09 Akim Demaille <akim@epita.fr>
506
507 * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
508 (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
509 Reported by R Blake <blakers@mac.com>.
510
c76e14da
AD
5112002-07-09 Akim Demaille <akim@epita.fr>
512
513 * data/yacc.c: Output the copyright notive in the header.
514
7db2ed2d
AD
5152002-07-03 Akim Demaille <akim@epita.fr>
516
517 * src/output.c (froms, tos): Are state_number_t.
518 (save_column): sp, sp1, and sp2 are state_number_t.
519 (prepare): Rename `final' as `final_state_number', `nnts' as
520 `nterms_number', `nrules' as `rules_number', `nstates' as
521 `states_number', and `ntokens' as `tokens_number'. Remove `nsym',
522 unused.
523 * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
524 * data/lalr1.cc (nsym_): Remove, unused.
525
e68e0410
AD
5262002-07-03 Akim Demaille <akim@epita.fr>
527
528 * src/lalr.h, src/lalr.c (goto_number_t): New.
529 * src/lalr.c (goto_list_t): New.
530 Propagate them.
531 * src/nullable.c (rule_list_t): New.
532 Propagate.
533 * src/types.h: Remove.
534
e1a4f3a4
AD
5352002-07-03 Akim Demaille <akim@epita.fr>
536
537 * src/closure.c (print_fderives): Use rule_rhs_print.
538 * src/derives.c (print_derives): Use rule_rhs_print.
539 (rule_list_t): New, replaces `shorts'.
540 (set_derives): Add comments.
541 * tests/sets.at (Nullable, Firsts): Adjust.
542
536545f3
AD
5432002-07-03 Akim Demaille <akim@epita.fr>
544
545 * src/output.c (prepare_actions): Free `tally' and `width'.
546 (prepare_actions): Allocate and free `order'.
547 * src/symtab.c (symbols_free): Free `symbols'.
548 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
549 * src/output.c (m4_invoke): Move to...
550 * src/scan-skel.l: here.
551 (<<EOF>>): Close yyout, and free its name.
552
8b752b00
AD
5532002-07-03 Akim Demaille <akim@epita.fr>
554
555 Fix some memory leaks, and fix a bug: state 0 was examined twice.
556
557 * src/LR0.c (new_state): Merge into...
558 (state_list_append): this.
559 (new_states): Merge into...
560 (generate_states): here.
561 (set_states): Don't ensure a proper `errs' state member here, do it...
562 * src/conflicts.c (conflicts_solve): here.
563 * src/state.h, src/state.c: Comment changes.
564 (state_t): Rename member `shifts' as `transitions'.
565 Adjust all dependencies.
566 (errs_new): For consistency, also take the values as argument.
567 (errs_dup): Remove.
568 (state_errs_set): New.
569 (state_reductions_set, state_transitions_set): Assert that no
570 previous value was assigned.
571 (state_free): New.
572 (states_free): Use it.
573 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
574 temporary storage: use `errs' and `nerrs' as elsewhere.
575 (set_conflicts): Allocate and free this `errs'.
576
613f5e1a
AD
5772002-07-02 Akim Demaille <akim@epita.fr>
578
579 * lib/libiberty.h: New.
580 * lib: Update the bitset implementation from upstream.
581 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
582 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
583 * src/main.c: Adjust bitset stats calls.
584
26e0cadc
PE
5852002-07-01 Paul Eggert <eggert@twinsun.com>
586
587 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
588 char, so that negative chars don't collide with $.
589
1154cced
AD
5902002-06-30 Akim Demaille <akim@epita.fr>
591
592 Have the GLR tests be `warning' checked, and fix the warnings.
593
594 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
595 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
596 (yyremoveDeletes): `yyi' and `yyj' are size_t.
597 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
598 (yyaddDeferredAction): static.
599 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
600 (yyreportParseError): yyprefix is const.
601 yytokenp is used only when verbose.
602 (yy__GNUC__): Replace with __GNUC__.
603 (yypdumpstack): yyi is size_t.
604 (yypreference): Un-yy local variables and arguments, to avoid
605 clashes with `yyr1'. Anyway, we are not in the user name space.
606 (yytname_size): be an int, as is compared with ints.
607 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
608 Use them.
609 * tests/cxx-gram.at: Use quotation to protect $1.
610 Use AT_COMPILE to enable warnings hunts.
611 Prototype yylex and yyerror.
612 `Use' argc.
613 Include `string.h', not `strings.h'.
614 Produce and prototype stmtMerge only when used.
615 yylex takes a location.
616
97650f4e
AD
6172002-06-30 Akim Demaille <akim@epita.fr>
618
619 We spend a lot of time in quotearg, in particular when --verbose.
620
621 * src/symtab.c (symbol_get): Store a quoted version of the key.
622 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
623 Adjust all callers.
624
d2576365
AD
6252002-06-30 Akim Demaille <akim@epita.fr>
626
627 * src/state.h (reductions_t): Rename member `nreds' as num.
628 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
629 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
630
ccaf65bc
AD
6312002-06-30 Akim Demaille <akim@epita.fr>
632
633 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
634 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
635 (shifts_to): Rename as...
636 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
637 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
638 (TRANSITION_IS_DISABLED, transitions_to): these.
639
87675353
AD
6402002-06-30 Akim Demaille <akim@epita.fr>
641
642 * src/print.c (print_shifts, print_gotos): Merge into...
643 (print_transitions): this.
644 (print_transitions, print_errs, print_reductions): Align the
645 lookaheads columns.
646 (print_core, print_transitions, print_errs, print_state,
647 print_grammar): Output empty lines separator before, not after.
648 (state_default_rule_compute): Rename as...
649 (state_default_rule): this.
650 * tests/conflicts.at (Defaulted Conflicted Reduction),
651 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
652 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
653
ce4ccb4b
AD
6542002-06-30 Akim Demaille <akim@epita.fr>
655
656 Display items as we display rules.
657
658 * src/gram.h, src/gram.c (rule_lhs_print): New.
659 * src/gram.c (grammar_rules_partial_print): Use it.
660 * src/print.c (print_core): Likewise.
661 * tests/conflicts.at (Defaulted Conflicted Reduction),
662 (Unresolved SR Conflicts): Adjust.
663 (Unresolved SR Conflicts): Adjust and rename as...
664 (Resolved SR Conflicts): this, as was meant.
665 * tests/regression.at (Web2c Report): Adjust.
666
bc933ef1
AD
6672002-06-30 Akim Demaille <akim@epita.fr>
668
669 * src/print.c (state_default_rule_compute): New, extracted from...
670 (print_reductions): here.
671 Pessimize, but clarify the code.
672 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
673
53d4308d
AD
6742002-06-30 Akim Demaille <akim@epita.fr>
675
676 * src/output.c (action_row): Let default_rule be always a rule
677 number.
678
574fb2d5
AD
6792002-06-30 Akim Demaille <akim@epita.fr>
680
681 * src/closure.c (print_firsts, print_fderives, closure):
682 Use BITSET_EXECUTE.
683 * src/lalr.c (lookaheads_print): Likewise.
684 * src/state.c (state_rule_lookaheads_print): Likewise.
685 * src/print_graph.c (print_core): Likewise.
686 * src/print.c (print_reductions): Likewise.
687 * src/output.c (action_row): Likewise.
688 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
689
05811fd7
AD
6902002-06-30 Akim Demaille <akim@epita.fr>
691
692 * src/print_graph.c: Use report_flag.
693
0e4d5753
AD
6942002-06-30 Akim Demaille <akim@epita.fr>
695
696 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
697 to...
698 * src/relation.h, src/relation.c (traverse, relation_digraph)
699 (relation_print, relation_transpose): New.
700
24c7d800
AD
7012002-06-30 Akim Demaille <akim@epita.fr>
702
703 * src/state.h, src/state.c (shifts_to): New.
704 * src/lalr.c (build_relations): Use it.
705
9222837b
AD
7062002-06-30 Akim Demaille <akim@epita.fr>
707
708 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
709 (item_number_of_rule_number, rule_number_of_item_number): New.
710 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
711 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
712 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
713 Propagate their use.
714 Much remains to be done, in particular wrt `shorts' from types.h.
715
260008e5
AD
7162002-06-30 Akim Demaille <akim@epita.fr>
717
718 * src/symtab.c (symbol_new): Initialize the `printer' member.
719
8a731ca8
AD
7202002-06-30 Akim Demaille <akim@epita.fr>
721
722 * src/LR0.c (save_reductions): Remove, replaced by...
723 * src/state.h, src/state.c (state_reductions_set): New.
724 (reductions, errs): Rename as...
725 (reductions_t, errs_t): these.
726 Adjust all dependencies.
727
32e1e0a4
AD
7282002-06-30 Akim Demaille <akim@epita.fr>
729
730 * src/LR0.c (state_list_t, state_list_append): New.
731 (first_state, last_state): Now symbol_list_t.
732 (this_state): Remove.
733 (new_itemsets, append_states, save_reductions): Take a state_t as
734 argument.
735 (set_states, generate_states): Adjust.
736 (save_shifts): Remove, replaced by...
737 * src/state.h, src/state.c (state_shifts_set): New.
738 (shifts): Rename as...
739 (shifts_t): this.
740 Adjust all dependencies.
741 * src/state.h (state_t): Remove the `next' member.
742
e5fb6710
AD
7432002-06-30 Akim Demaille <akim@epita.fr>
744
745 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
746 escaped in slot 0.
747
c7ca99d4
AD
7482002-06-30 Akim Demaille <akim@epita.fr>
749
750 Use hash.h for the state hash table.
751
752 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
753 (allocate_storage): Use state_hash_new.
754 (free_storage): Use state_hash_free.
755 (new_state, get_state): Adjust.
756 * src/lalr.h, src/lalr.c (states): Move to...
757 * src/states.h (state_t): Remove the `link' member, no longer
758 used.
759 * src/states.h, src/states.c: here.
760 (state_hash_new, state_hash_free, state_hash_lookup)
761 (state_hash_insert, states_free): New.
762 * src/states.c (state_table, state_compare, state_hash): New.
763 * src/output.c (output_actions): Do not free states now, since we
764 still need to know the final_state number in `prepare', called
765 afterwards. Do it...
766 * src/main.c (main): here: call states_free after `output'.
767
df0e7316
AD
7682002-06-30 Akim Demaille <akim@epita.fr>
769
770 * src/state.h, src/state.c (state_new): New, extracted from...
771 * src/LR0.c (new_state): here.
772 * src/state.h (STATE_ALLOC): Move to...
773 * src/state.c: here.
774 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
775 * src/state.h, src/state.c: here.
776
39f41916
AD
7772002-06-30 Akim Demaille <akim@epita.fr>
778
779 * src/reader.c (gensym): Rename as...
780 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
781 (getsym): Rename as...
782 (symbol_get): this.
783
d57650a5
AD
7842002-06-30 Akim Demaille <akim@epita.fr>
785
786 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
787 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
788 * src/output.c, src/print.c, src/print_graph.c: Propagate.
789 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
790
5a08f1ce
AD
7912002-06-30 Akim Demaille <akim@epita.fr>
792
793 Make the test suite pass with warnings checked.
794
795 * tests/actions.at (Printers and Destructors): Improve.
796 Avoid unsigned vs. signed issues.
797 * tests/calc.at: Don't exercise the scanner here, do it...
798 * tests/input.at (Torturing the Scanner): here.
799
720623af
PH
8002002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
801
88e7e941 802 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
720623af
PH
803 reorganize first lines parallel to yacc.c.
804
fb8135fa
AD
8052002-06-28 Akim Demaille <akim@epita.fr>
806
807 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
808 (b4_token_enum, b4_token_defines): New, factored from...
809 * data/lalr1.cc, data/yacc.c, glr.c: here.
810
41442480
AD
8112002-06-28 Akim Demaille <akim@epita.fr>
812
813 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
814 unused variables.
815 * src/output.c (merger_output): static.
816
e0e5bf84
AD
8172002-06-28 Akim Demaille <akim@epita.fr>
818
819 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
820 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
821 pacify GCC.
822 * src/output.c (save_row): Initialize all the variables to pacify GCC.
e0e5bf84 823
676385e2
PH
8242002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
825
826 Accumulated changelog for new GLR parsing features.
827
6a254321 828 * src/conflicts.c (count_total_conflicts): Change name to
676385e2
PH
829 conflicts_total_count.
830 * src/conflicts.h: Ditto.
831 * src/output.c (token_actions): Use the new name.
832 (output_conflicts): Change conflp => conflict_list_heads, and
833 confl => conflict_list for better readability.
834 * data/glr.c: Use the new names.
835 * NEWS: Add self to GLR announcement.
e0e5bf84 836
676385e2
PH
837 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
838
839 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
840 Akim Demaille.
841
842 * data/bison.glr: Change name to glr.c
843 * data/glr.c: Renamed from bison.glr.
844 * data/Makefile.am: Add glr.c
e0e5bf84
AD
845
846 * src/getargs.c:
847
676385e2
PH
848 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
849 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
e0e5bf84 850
676385e2
PH
851 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
852
853 * data/bison.glr: Be sure to restore the
854 current #line when returning to the skeleton contents after having
855 exposed the input file's #line.
856
857 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
858
859 * data/bison.glr: Bring up to date with changes to bison.simple.
860
861 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
862
863 * data/bison.glr: Correct definitions that use b4_prefix.
864 Various reformatting.
865 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
866 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
867 yytokenp argument; now part of stack.
868 (yychar): Define to behave as documented.
869 (yyclearin): Ditto.
e0e5bf84 870
676385e2
PH
871 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
872
873 * src/reader.h: Add declaration for free_merger_functions.
874
875 * src/reader.c (merge_functions): New variable.
876 (get_merge_function): New function.
877 (free_merger_functions): New function.
878 (readgram): Check for %prec that is not followed by a symbol.
879 Handle %dprec and %merge declarations.
880 (packgram): Initialize dprec and merger fields in rules array.
881
882 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
883 conflict_list_cnt, conflict_list_free): New variables.
884 (table_grow): Also grow conflict_table.
e0e5bf84 885 (prepare_rules): Output dprec and merger tables.
676385e2 886 (conflict_row): New function.
e0e5bf84 887 (action_row): Output conflict lists for GLR parser. Don't use
676385e2
PH
888 default reduction in conflicted states for GLR parser so that there
889 are spaces for the conflict lists.
890 (save_row): Also save conflict information.
891 (token_actions): Allocate conflict list.
892 (merger_output): New function.
893 (pack_vector): Pack conflict table, too.
894 (output_conflicts): New function to output yyconflp and yyconfl.
895 (output_check): Allocate conflict_tos.
896 (output_actions): Output conflict tables, also.
897 (output_skeleton): Output b4_mergers definition.
898 (prepare): Output b4_max_rhs_length definition.
899 Use 'bison.glr' as default skeleton for GLR parsers.
900
901 * src/gram.c (glr_parser): New flag.
902 (grammar_free): Call free_merger_functions.
903
904 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
905 all pairs of conflicting reductions, rather than just all tokens
906 causing conflicts. Needed to size conflict tables.
e0e5bf84 907 (conflicts_output): Modify call to count_rr_conflicts for new
676385e2
PH
908 interface.
909 (conflicts_print): Ditto.
910 (count_total_conflicts): New function.
911
912 * src/reader.h (merger_list): New type.
913 (merge_functions): New variable.
914
915 * src/lex.h (tok_dprec, tok_merge): New token types.
916
917 * src/gram.h (rule_s): Add dprec and merger fields.
918 (glr_parser): New flag.
919
920 * src/conflicts.h (count_total_conflicts): New function.
921
922 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
923
924 * doc/bison.texinfo (Generalized LR Parsing): New section.
925 (GLR Parsers): New section.
926 (Language and Grammar): Mention GLR parsing.
927 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
928 Correct typo ("tge" -> "the").
929
930 * data/bison.glr: New skeleton for GLR parsing.
931
932 * tests/cxx-gram.at: New tests for GLR parsing.
933
934 * tests/testsuite.at: Include cxx-gram.at.
935
936 * tests/Makefile.am: Add cxx-gram.at.
e0e5bf84 937
676385e2
PH
938 * src/parse-gram.y:
939
940 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
941
942 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
e0e5bf84 943
b5480d74 9442002-06-27 Akim Demaille <akim@epita.fr>
e2aaf4c4
AD
945
946 * src/options.h, src/options.c: Remove.
947 * src/getargs.c (short_options, long_options): New.
948
60491a94
AD
9492002-06-27 Akim Demaille <akim@epita.fr>
950
951 * data/bison.simple, data/bison.c++: Rename as...
952 * data/yacc.c, data/lalr1.cc: these.
953 * doc/bison.texinfo (Environment Variables): Remove.
954
9be0c25b
AD
9552002-06-25 Raja R Harinath <harinath@cs.umn.edu>
956
957 * src/getargs.c (report_argmatch): Initialize strtok().
958
1ae72863
AD
9592002-06-20 Akim Demaille <akim@epita.fr>
960
961 * data/bison.simple (b4_symbol_actions): New, replaces...
962 (b4_symbol_destructor, b4_symbol_printer): these.
963 (yysymprint): Be sure to call YYPRINT only for tokens, and using
964 user token numbers.
965
87542d29
AD
9662002-06-20 Akim Demaille <akim@epita.fr>
967
968 * data/bison.simple (yydestructor): Rename as...
969 (yydestruct): this.
970
1a31ed21
AD
9712002-06-20 Akim Demaille <akim@epita.fr>
972
973 * src/symtab.h, src/symtab.c (symbol_type_set)
974 (symbol_destructor_set, symbol_precedence_set): The location is
975 the last argument.
976 Adjust all callers.
977
e776192e
AD
9782002-06-20 Akim Demaille <akim@epita.fr>
979
980 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
981 internals.
982 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
983 Takes a location.
984 * src/symtab.h, src/symtab.c (symbol_class_set)
985 (symbol_user_token_number_set): Likewise.
986 Adjust all callers.
987 Promote complain_at.
988 * tests/input.at (Type Clashes): Adjust.
989
5c1180b3
AD
9902002-06-20 Akim Demaille <akim@epita.fr>
991
992 * data/bison.simple (YYLEX): Fix the declaration when
993 %pure-parser.
994
e3170060
AD
9952002-06-20 Akim Demaille <akim@epita.fr>
996
997 * data/bison.simple (yysymprint): Don't print the token number,
998 just its name.
999 * tests/actions.at (Destructors): Rename as...
1000 (Printers and Destructors): this.
1001 Also exercise %printer.
1002
253862fd
AD
10032002-06-20 Akim Demaille <akim@epita.fr>
1004
1005 * data/bison.simple (YYDSYMPRINT): New.
1006 Use it to remove many of the #if YYDEBUG/if (yydebug).
1007
366eea36
AD
10082002-06-20 Akim Demaille <akim@epita.fr>
1009
1010 * src/symtab.h, src/symtab.c (symbol_t): printer and
1011 printer_location are new members.
1012 (symbol_printer_set): New.
1013 * src/parse-gram.y (PERCENT_PRINTER): New token.
1014 Handle its associated rule.
1015 * src/scan-gram.l: Adjust.
1016 (handle_destructor_at, handle_destructor_dollar): Rename as...
1017 (handle_symbol_code_at, handle_symbol_code_dollar): these.
1018 * src/output.c (symbol_printers_output): New.
1019 (output_skeleton): Call it.
1020 * data/bison.simple (yysymprint): New. Cannot be named yyprint
1021 since there are already many grammar files with a user `yyprint'.
1022 Replace the calls to YYPRINT to calls to yysymprint.
1023 * tests/calc.at: Adjust.
1024 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
1025 taking advantage of parser very internal details (stack size!).
1026
4f25ebb0
AD
10272002-06-20 Akim Demaille <akim@epita.fr>
1028
1029 * src/scan-gram.l: Complete the scanner with the missing patterns
1030 to pacify Flex.
1031 Use `quote' and `symbol_tag_get' where appropriate.
1032
93b68a0e
AD
10332002-06-19 Akim Demaille <akim@epita.fr>
1034
1035 * tests/actions.at (Destructors): Augment to test locations.
1036 * data/bison.simple (yydestructor): Pass it the current location
1037 if locations are enabled.
1038 Prototype only when __STDC__ or C++.
1039 Change the argument names to move into the yy name space: there is
1040 user code here.
1041
58612f1d
AD
10422002-06-19 Akim Demaille <akim@epita.fr>
1043
74310291
AD
1044 * data/bison.simple (b4_pure_if): New.
1045 Use it instead of #ifdef YYPURE.
1046
10472002-06-19 Akim Demaille <akim@epita.fr>
1048
1049 * data/bison.simple (b4_location_if): New.
58612f1d
AD
1050 Use it instead of #ifdef YYLSP_NEEDED.
1051
f25bfb75
AD
10522002-06-19 Akim Demaille <akim@epita.fr>
1053
1054 Prepare @$ in %destructor, but currently don't bind it in the
1055 skeleton, as %location use is not cleaned up yet.
1056
1057 * src/scan-gram.l (handle_dollar, handle_destructor_at)
1058 (handle_action_at): New.
1059 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
1060 a braced_code_t and a location as additional arguments.
1061 (handle_destructor_dollar): Instead of requiring `b4_eval', just
1062 unquote one when outputting `b4_dollar_dollar'.
1063 Adjust callers.
1064 * data/bison.simple (b4_eval): Remove.
1065 (b4_symbol_destructor): Adjust.
1066 * tests/input.at (Invalid @n): Adjust.
1067
c732d2c6
AD
10682002-06-19 Zack Weinberg <zack@codesourcery.com>
1069
1070 * doc/bison.texinfo: Document ability to have multiple
1071 prologue sections.
1072
8c165d89
AD
10732002-06-18 Akim Demaille <akim@epita.fr>
1074
1075 * src/files.c (compute_base_names): When computing the output file
1076 names from the input file name, strip the directory part.
1077
ca98bf57
AD
10782002-06-18 Akim Demaille <akim@epita.fr>
1079
1080 * data/bison.simple.new: Comment changes.
1081 Reported by Andreas Schwab.
1082
0bfb02ff
AD
10832002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
1084
1085 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
1086 there are no `label `yyoverflowlab' defined but not used' warnings
1087 when yyoverflow is defined.
1088
24c0aad7
AD
10892002-06-18 Akim Demaille <akim@epita.fr>
1090
1091 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
1092 new member.
1093 (symbol_destructor_set): Adjust.
1094 * src/output.c (symbol_destructors_output): Output the destructor
1095 locations.
1096 Output the symbol name.
1097 * data/bison.simple (b4_symbol_destructor): Adjust.
1098
5719c109
AD
10992002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
1100 and Akim Demaille <akim@epita.fr>
1101
1102 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
1103 what's left on the stack when the error recovery hits EOF.
1104 * tests/actions.at (Destructors): Complete to exercise this case.
1105
9280d3ef
AD
11062002-06-17 Akim Demaille <akim@epita.fr>
1107
1108 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
1109 arguments is really empty, not only equal to `[]'.
1110 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
1111 member.
1112 (symbol_destructor_set): New.
1113 * src/output.c (symbol_destructors_output): New.
1114 * src/reader.h (brace_code_t, current_braced_code): New.
1115 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
1116 (handle_dollar): Rename as...
1117 (handle_action_dollar): this.
1118 (handle_destructor_dollar): New.
1119 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
1120 (grammar_declaration): Use it.
1121 * data/bison.simple (yystos): Is always defined.
1122 (yydestructor): New.
1123 * tests/actions.at (Destructors): New.
1124 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
1125
dafdc66f
AD
11262002-06-17 Akim Demaille <akim@epita.fr>
1127
1128 * src/symlist.h, src/symlist.c (symbol_list_length): New.
1129 * src/scan-gram.l (handle_dollar, handle_at): Compute the
1130 rule_length only when needed.
1131 * src/output.c (actions_output, token_definitions_output): Output
1132 the full M4 block.
1133 * src/symtab.c: Don't access directly to the symbol tag, use
1134 symbol_tag_get.
1135 * src/parse-gram.y: Use symbol_list_free.
1136
56c47203
AD
11372002-06-17 Akim Demaille <akim@epita.fr>
1138
1139 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
1140 (symbol_list_prepend, get_type_name): Move to...
1141 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
1142 (symbol_list_prepend, symbol_list_n_type_name_get): here.
1143 Adjust all callers.
1144 (symbol_list_free): New.
1145 * src/scan-gram.l (handle_dollar): Takes a location.
1146 * tests/input.at (Invalid $n): Adjust.
1147
1e0bab92
AD
11482002-06-17 Akim Demaille <akim@epita.fr>
1149
1150 * src/reader.h, src/reader.c (symbol_list_new): Export it.
1151 (symbol_list_prepend): New.
1152 * src/parse-gram.y (%union): `list' is a new member.
1153 (symbols.1): New, replaces...
1154 (terms_to_prec.1, nterms_to_type.1): these.
1155 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
1156 Take a location as additional argument.
1157 Adjust all callers.
1158
04e60654
AD
11592002-06-15 Akim Demaille <akim@epita.fr>
1160
1161 * src/parse-gram.y: Move %token in the declaration section so that
1162 we don't depend upon CVS Bison.
1163
10e5b8bd
AD
11642002-06-15 Akim Demaille <akim@epita.fr>
1165
1166 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
1167 * src/print.c (print_core): Use it.
1168
9801d40c
AD
11692002-06-15 Akim Demaille <akim@epita.fr>
1170
1171 * src/conflicts.c (log_resolution): Accept the rule involved in
1172 the sr conflicts instead of the lookahead number that points to
1173 that rule.
1174 (flush_reduce): Accept the current lookahead vector as argument,
1175 instead of the index in LA.
1176 (resolve_sr_conflict): Accept the current number of lookahead
1177 bitset to consider for the STATE, instead of the index in LA.
1178 (set_conflicts): Adjust.
1179 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
1180
c0263492
AD
11812002-06-15 Akim Demaille <akim@epita.fr>
1182
1183 * src/state.h (state_t): Replace the `lookaheadsp' member, a
1184 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
1185 Adjust all dependencies.
1186 * src/lalr.c (initialize_lookaheads): Split into...
1187 (states_lookaheads_count, states_lookaheads_initialize): these.
1188 (lalr): Adjust.
1189
9757c359
AD
11902002-06-15 Akim Demaille <akim@epita.fr>
1191
1192 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
1193 out of...
1194 (grammar_rules_print): here.
1195 * src/reduce.c (reduce_output): Use it.
1196 * tests/reduce.at (Useless Rules, Reduced Automaton)
1197 (Underivable Rules): Adjust.
1198
6b98e4b5
AD
11992002-06-15 Akim Demaille <akim@epita.fr>
1200
1201 Copy BYacc's nice way to report the grammar.
1202
1203 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
1204 New.
1205 Don't print the rules' location, it is confusing and useless.
1206 (rule_print): Use grammar_rhs_print.
1207 * src/print.c (print_grammar): Use grammar_rules_print.
1208
6b98e4b5
AD
12092002-06-15 Akim Demaille <akim@epita.fr>
1210
1211 Complete and rationalize `useless thing' warnings.
1212
1213 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
1214 (symbol_tag_print): New.
1215 Use them everywhere in place of accessing directly the tag member.
1216 * src/gram.h, src/gram.c (rule_print): New.
1217 Use it where a rule used to be printed `by hand'.
1218 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
1219 (reduce_grammar_tables): Report the useless rules.
1220 (reduce_print): Useless things are a warning, not an error.
1221 Report it as such.
1222 * tests/reduce.at (Useless Nonterminals, Useless Rules):
1223 (Reduced Automaton, Underivable Rules): Adjust.
1224 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
1225 * tests/conflicts.at (Unresolved SR Conflicts)
1226 (Solved SR Conflicts): Adjust.
1227
ee000ba4
AD
12282002-06-15 Akim Demaille <akim@epita.fr>
1229
1230 Let symbols have a location.
1231
1232 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
1233 (getsym): Adjust.
1234 Adjust all callers.
1235 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
1236 Use location_t, not int.
1237 * src/symtab.c (symbol_check_defined): Take advantage of the
1238 location.
1239 * tests/regression.at (Invalid inputs): Adjust.
1240
8efe435c
AD
12412002-06-15 Akim Demaille <akim@epita.fr>
1242
1243 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
1244 (input): Don't try to initialize yylloc here, do it in the
1245 scanner.
1246 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
1247 * src/gram.h (rule_t): Change line and action_line into location
1248 and action_location, of location_t type.
1249 Adjust all dependencies.
1250 * src/location.h, src/location.c (empty_location): New.
1251 * src/reader.h, src/reader.c (grammar_start_symbol_set)
1252 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
1253 (grammar_current_rule_symbol_append)
1254 (grammar_current_rule_action_append): Expect a location as argument.
1255 * src/reader.c (grammar_midrule_action): Adjust to attach an
1256 action's location as dummy symbol location.
1257 * src/symtab.h, src/symtab.c (startsymbol_location): New.
1258 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
1259 the line numbers.
1260
1921f1d7
AD
12612002-06-14 Akim Demaille <akim@epita.fr>
1262
1263 Grammar declarations may be found in the grammar section.
1264
1265 * src/parse-gram.y (rules_or_grammar_declaration): New.
1266 (declarations): Each declaration may end with a semicolon, not
1267 just...
1268 (grammar_declaration): `"%union"'.
1269 (grammar): Branch to rules_or_grammar_declaration.
1270
4515534c
AD
12712002-06-14 Akim Demaille <akim@epita.fr>
1272
1273 * src/main.c (main): Invoke scanner_free.
1274
f958596b
AD
12752002-06-14 Akim Demaille <akim@epita.fr>
1276
1277 * src/output.c (m4_invoke): Extracted from...
1278 (output_skeleton): here.
1279 Free tempfile.
1280
2c569025
AD
12812002-06-14 Akim Demaille <akim@epita.fr>
1282
1283 * src/parse-gram.y (directives, directive, gram)
1284 (grammar_directives, precedence_directives, precedence_directive):
1285 Rename as...
1286 (declarations, declaration, grammar, grammar_declaration)
1287 (precedence_declaration, precedence_declarator): these.
1288 (symbol_declaration): New.
1289
592e8d4d
AD
12902002-06-14 Akim Demaille <akim@epita.fr>
1291
1292 * src/files.c (action_obstack): Remove, unused.
1293 (output_obstack): Remove it, and all its dependencies, as it is no
1294 longer needed.
1295 * src/reader.c (epilogue_set): Build the epilogue in the
1296 muscle_obstack.
1297 * src/output.h, src/output.c (muscle_obstack): Move to...
1298 * src/muscle_tab.h, src/muscle_tab.h: here.
1299 (muscle_init): Initialize muscle_obstack.
1300 (muscle_free): New.
1301 * src/main.c (main): Call it.
1302
0c15323d
AD
13032002-06-14 Akim Demaille <akim@epita.fr>
1304
1305 * src/location.h: New, extracted from...
1306 * src/reader.h: here.
1307 * src/Makefile.am (noinst_HEADERS): Merge into
1308 (bison_SOURCES): this.
1309 Add location.h.
1310 * src/parse-gram.y: Use location_t instead of Bison's.
1311 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
1312 Use location_t instead of ints.
1313
e96c9728
AD
13142002-06-14 Akim Demaille <akim@epita.fr>
1315
1316 * data/bison.simple, data/bison.c++: Be sure to restore the
1317 current #line when returning to the skeleton contents after having
1318 exposed the input file's #line.
1319
75d1fe16
AD
13202002-06-12 Akim Demaille <akim@epita.fr>
1321
1322 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
1323 eager.
1324 * tests/actions.at (Exotic Dollars): New.
1325
6c35d22c
AD
13262002-06-12 Akim Demaille <akim@epita.fr>
1327
1328 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
1329 ['"/] too eagerly.
1330 * tests/input.at (Torturing the Scanner): New.
1331
1d6412ad
AD
13322002-06-11 Akim Demaille <akim@epita.fr>
1333
1334 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
1335 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
1336 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
1337 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
1338 * src/reader.c (reader): Use it.
1339
4cdb01db
AD
13402002-06-11 Akim Demaille <akim@epita.fr>
1341
1342 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
1343 Adjust all callers.
1344 (scanner_last_string_free): New.
1345
44995b2e
AD
13462002-06-11 Akim Demaille <akim@epita.fr>
1347
1348 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
1349 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
1350 (last_string, YY_OBS_FREE): New.
1351 Use them when returning an ID.
1352
e9955c83
AD
13532002-06-11 Akim Demaille <akim@epita.fr>
1354
1355 Have Bison grammars parsed by a Bison grammar.
1356
1357 * src/reader.c, src/reader.h (prologue_augment): New.
1358 * src/reader.c (copy_definition): Remove.
1359
1360 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
1361 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
1362 (grammar_current_rule_prec_set, grammar_current_rule_check)
1363 (grammar_current_rule_symbol_append)
1364 (grammar_current_rule_action_append): Export.
1365 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
1366 (symbol_list_action_append): Remove.
1367 Hook the routines from reader.
1368 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
1369 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
1370
1371 * src/reader.c (read_declarations): Remove, unused.
1372
1373 * src/parse-gram.y: Handle the epilogue.
1374 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
1375 (grammar_start_symbol_set): this.
1376 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
1377 * src/reader.c (readgram): Remove, unused.
1378 (reader): Adjust to insert eoftoken and axiom where appropriate.
1379
1380 * src/reader.c (copy_dollar): Replace with...
1381 * src/scan-gram.h (handle_dollar): this.
1382 * src/parse-gram.y: Remove `%thong'.
1383
1384 * src/reader.c (copy_at): Replace with...
1385 * src/scan-gram.h (handle_at): this.
1386
1387 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
1388 New.
1389
1390 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
1391 time being.
1392
1393 * src/reader.h, src/reader.c (grammar_rule_end): New.
1394
1395 * src/parse.y (current_type, current_class): New.
1396 Implement `%nterm', `%token' support.
1397 Merge `%term' into `%token'.
1398 (string_as_id): New.
1399 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
1400 type name.
1401
1402 * src/parse-gram.y: Be sure to handle properly the beginning of
1403 rules.
1404
1405 * src/parse-gram.y: Handle %type.
1406 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
1407
1408 * src/parse-gram.y: More directives support.
1409 * src/options.c: No longer handle source directives.
1410
1411 * src/parse-gram.y: Fix %output.
1412
1413 * src/parse-gram.y: Handle %union.
1414 Use the prologue locations.
1415 * src/reader.c (parse_union_decl): Remove.
1416
1417 * src/reader.h, src/reader.c (epilogue_set): New.
1418 * src/parse-gram.y: Use it.
1419
1420 * data/bison.simple, data/bison.c++: b4_stype is now either not
1421 defined, then default to int, or to the contents of %union,
1422 without `union' itself.
1423 Adjust.
1424 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
1425
1426 * src/output.c (actions_output): Don't output braces, as they are
1427 already handled by the scanner.
1428
1429 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
1430 characters to themselves.
1431
1432 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
1433 that the epilogue has a proper #line.
1434
1435 * src/parse-gram.y: Handle precedence/associativity.
1436
1437 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
1438 a terminal.
1439 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
1440 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
1441 at all to define terminals that cannot be emitted.
1442
1443 * src/scan-gram.l: Escape M4 characters.
1444
1445 * src/scan-gram.l: Working properly with escapes in user
1446 strings/characters.
1447
1448 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
1449 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
1450 grammar.
1451 Use more modest sizes, as for the time being the parser does not
1452 release memory, and therefore the process swallows a huge amount
1453 of memory.
1454
1455 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
1456 stricter %token grammar.
1457
1458 * src/symtab.h (associativity): Add `undef_assoc'.
1459 (symbol_precedence_set): Do nothing when passed an undef_assoc.
1460 * src/symtab.c (symbol_check_alias_consistence): Adjust.
1461
1462 * tests/regression.at (Invalid %directive): Remove, as it is now
1463 meaningless.
1464 (Invalid inputs): Adjust to the new error messages.
1465 (Token definitions): The new grammar doesn't allow too many
1466 eccentricities.
1467
1468 * src/lex.h, src/lex.c: Remove.
1469 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
1470 (copy_character, copy_string2, copy_string, copy_identifier)
1471 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
1472 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
1473 (parse_action): Remove.
1474 * po/POTFILES.in: Adjust.
1475
2e047461
AD
14762002-06-11 Akim Demaille <akim@epita.fr>
1477
1478 * src/reader.c (parse_action): Don't store directly into the
1479 rule's action member: return the action as a string.
1480 Don't require `rule_length' as an argument: compute it.
1481 (grammar_current_rule_symbol_append)
1482 (grammar_current_rule_action_append): New, eved out from
1483 (readgram): here.
1484 Remove `action_flag', `rulelength', unused now.
1485
9af3fbce
AD
14862002-06-11 Akim Demaille <akim@epita.fr>
1487
1488 * src/reader.c (grammar_current_rule_prec_set).
1489 (grammar_current_rule_check): New, eved out from...
1490 (readgram): here.
1491 Remove `xaction', `first_rhs': useless.
1492 * tests/input.at (Type clashes): New.
1493 * tests/existing.at (GNU Cim Grammar): Adjust.
1494
1485e106
AD
14952002-06-11 Akim Demaille <akim@epita.fr>
1496
1497 * src/reader.c (grammar_midrule_action): New, Eved out from
1498 (readgram): here.
1499
da4160c3
AD
15002002-06-11 Akim Demaille <akim@epita.fr>
1501
1502 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
1503 New.
1504 (readgram): Use them as replacement of inlined code, crule and
1505 crule1.
1506
f6d0f937
AD
15072002-06-11 Akim Demaille <akim@epita.fr>
1508
1509 * src/reader.c (grammar_end, grammar_symbol_append): New.
1510 (readgram): Use them.
1511 Make the use of `p' as local as possible.
1512
69078d4b
AD
15132002-06-10 Akim Demaille <akim@epita.fr>
1514
1515 GCJ's parser requires the tokens to be defined before the prologue.
1516
1517 * data/bison.simple: Output the token definition before the user's
1518 prologue.
1519 * tests/regression.at (Braces parsing, Duplicate string)
1520 (Mixing %token styles): Check the output from bison.
1521 (Early token definitions): New.
1522
5e424082
AD
15232002-06-10 Akim Demaille <akim@epita.fr>
1524
1525 * src/symtab.c (symbol_user_token_number_set): Don't complain when
1526 assigning twice the same user number to a token, so that we can
1527 use it in...
1528 * src/lex.c (lex): here.
1529 Also use `symbol_class_set' instead of hand written code.
1530 * src/reader.c (parse_assoc_decl): Likewise.
1531
44536b35
AD
15322002-06-10 Akim Demaille <akim@epita.fr>
1533
1534 * src/symtab.c, src/symtab.c (symbol_class_set)
1535 (symbol_user_token_number_set): New.
1536 * src/reader.c (parse_token_decl): Use them.
1537 Use a switch instead of ifs.
1538 Use a single argument.
1539
8b9f2372
AD
15402002-06-10 Akim Demaille <akim@epita.fr>
1541
1542 Remove `%thong' support as it is undocumented, unused, duplicates
1543 `%token's job, and creates useless e-mail traffic with people who
1544 want to know what it is, why it is undocumented, unused, and
1545 duplicates `%token's job.
1546
1547 * src/reader.c (parse_thong_decl): Remove.
1548 * src/options.c (option_table): Remove "thong".
1549 * src/lex.h (tok_thong): Remove.
1550
3ae2b51f
AD
15512002-06-10 Akim Demaille <akim@epita.fr>
1552
1553 * src/symtab.c, src/symtab.c (symbol_type_set)
1554 (symbol_precedence_set): New.
1555 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
1556 (value_components_used): Remove, unused.
1557
2f1afb73
AD
15582002-06-09 Akim Demaille <akim@epita.fr>
1559
1560 Move symbols handling code out of the reader.
1561
1562 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
1563 (axiom): Move to...
1564 * src/symtab.h, src/symtab.c: here.
1565
1566 * src/gram.c (start_symbol): Remove: use startsymbol->number.
1567 * src/reader.c (startval): Rename as...
1568 * src/symtab.h, src/symtab.c (startsymbol): this.
1569 * src/reader.c: Adjust.
1570
1571 * src/reader.c (symbol_check_defined, symbol_make_alias)
1572 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
1573 (token_translations_init)
1574 Move to...
1575 * src/symtab.c: here.
1576 * src/reader.c (packsymbols): Move to...
1577 * src/symtab.h, src/symtab.c (symbols_pack): here.
1578 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
1579 argument.
1580
e9bca3ad
AD
15812002-06-03 Akim Demaille <akim@epita.fr>
1582
1583 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
1584 then statements.
1585
86eff183
AD
15862002-06-03 Akim Demaille <akim@epita.fr>
1587
1588 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
1589 structs with non literals.
1590 * src/scan-skel.l: never-interactive.
1591 * src/conflicts.c (enum conflict_resolution_e): No trailing
1592 comma.
1593 * src/getargs.c (usage): Split long literal strings.
1594 Reported by Hans Aberg.
1595
717be197
AD
15962002-05-28 Akim Demaille <akim@epita.fr>
1597
1598 * data/bison.c++: Use C++ ostreams.
1599 (cdebug_): New member.
1600
670ddffd
AD
16012002-05-28 Akim Demaille <akim@epita.fr>
1602
1603 * src/output.c (output_skeleton): Be sure to allocate enough room
1604 for `/' _and_ for `\0' in full_skeleton.
1605
769b430f
AD
16062002-05-28 Akim Demaille <akim@epita.fr>
1607
1608 * data/bison.c++: Catch up with bison.simple:
1609 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1610 and Paul Eggert <eggert@twinsun.com>: `error' handing.
1611 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
1612 and popping traces.
1613
7067cb36
PH
16142002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1615
1616 * src/output.c (output_skeleton): Put an explicit path in front of
1617 the skeleton file name, rather than relying on the -I directory,
1618 to partially alleviate effects of having a skeleton file lying around
1619 in the current directory.
769b430f 1620
4a713ec2
PH
16212002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1622
769b430f 1623 * src/conflicts.c (log_resolution): Correct typo:
4a713ec2
PH
1624 obstack_printf should be obstack_fgrow1.
1625
b408954b
AD
16262002-05-26 Akim Demaille <akim@epita.fr>
1627
1628 * src/state.h (state_t): `solved_conflicts' is a new member.
1629 * src/LR0.c (new_state): Set it to 0.
1630 * src/conflicts.h, src/conflicts.c (print_conflicts)
1631 (free_conflicts, solve_conflicts): Rename as...
1632 (conflicts_print, conflicts_free, conflicts_solve): these.
1633 Adjust callers.
1634 * src/conflicts.c (enum conflict_resolution_e)
1635 (solved_conflicts_obstack): New, used by...
1636 (log_resolution): this.
1637 Adjust to attach the conflict resolution to each state.
1638 Complete the description with the precedence/associativity
1639 information.
1640 (resolve_sr_conflict): Adjust.
1641 * src/print.c (print_state): Output its solved_conflicts.
1642 * tests/conflicts.at (Unresolved SR Conflicts)
1643 (Solved SR Conflicts): Exercise --report=all.
1644
a49aecd5
AD
16452002-05-26 Akim Demaille <akim@epita.fr>
1646
1647 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
1648 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
1649 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
1650 (token_number_t, item_number_as_token_number)
1651 (token_number_as_item_number, muscle_insert_token_number_table):
1652 Rename as...
1653 (symbol_number_t, item_number_as_symbol_number)
1654 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
1655 these, since it is more appropriate.
1656
5504898e
AD
16572002-05-26 Akim Demaille <akim@epita.fr>
1658
1659 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
1660 `Error:' lines.
1661 * data/bison.simple (yystos) [YYDEBUG]: New.
1662 (yyparse) [YYDEBUG]: Display the symbols which are popped during
1663 error recovery.
1664 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
1665
ec3bc396
AD
16662002-05-25 Akim Demaille <akim@epita.fr>
1667
1668 * doc/bison.texinfo (Debugging): Split into...
1669 (Tracing): this new section, its former contents, and...
1670 (Understanding): this new section.
1671 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
1672 by...
1673 (report_flag): this.
1674 Adjust all dependencies.
1675 (report_args, report_types, report_argmatch): New.
1676 (usage, getargs): Report/support -r, --report.
1677 * src/options.h
1678 (struct option_table_struct): Rename as..,
1679 (struct option_table_s): this.
1680 Rename the `set_flag' member to `flag' to match with getopt_long's
1681 struct.
1682 * src/options.c (option_table): Split verbose into an entry for
1683 %verbose, and another for --verbose.
1684 Support --report/-r, so remove -r from the obsolete --raw.
1685 * src/print.c: Attach full item sets and lookaheads reports to
1686 report_flag instead of trace_flag.
1687 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
1688
78df8250
PE
16892002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1690 and Paul Eggert <eggert@twinsun.com>
769b430f 1691
78df8250
PE
1692 * data/bison.simple (yyparse): Correct error handling to conform to
1693 POSIX and yacc. Specifically, after syntax error is discovered,
1694 do not reduce further before shifting the error token.
1695 Clean up the code a bit by removing the labels yyerrdefault,
1696 yyerrhandle, yyerrpop.
1697 * NEWS: Document the above.
1698
c0c9ea05
PH
16992002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1700
1701 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
1702 type; it isn't always big enough, since it doesn't necessarily
1703 include non-terminals.
769b430f 1704 (yytranslate): Expand definition of yy_token_number_type, so that
c0c9ea05
PH
1705 the latter can be removed.
1706 (yy_token_number_type): Remove, only one use.
1707 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
1708 don't use TokenNumberType as element type.
769b430f 1709
c0c9ea05
PH
1710 * tests/regression.at: Modify expected output to agree with change
1711 to yyr1 and yytranslate.
769b430f 1712
6390a83f
FK
17132002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
1714
1715 * src/reader.c (parse_action): Use copy_character instead of
1716 obstack_1grow.
1717
db7c8e9a
AD
17182002-05-13 Akim Demaille <akim@epita.fr>
1719
1720 * tests/regression.at (Token definitions): Prototype yylex and
1721 yyerror.
1722
fcc61800
PH
17232002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1724
158c687b 1725 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
fcc61800
PH
1726 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
1727 32-bit arithmetic.
1728 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
1729
5683e9b2
AD
17302002-05-07 Akim Demaille <akim@epita.fr>
1731
1732 * tests/synclines.at: Be sure to prototype yylex and yyerror to
1733 avoid GCC warnings.
1734
0c2d3f4c
AD
17352002-05-07 Akim Demaille <akim@epita.fr>
1736
1737 Kill GCC warnings.
1738
1739 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
1740 over the RHS of each rule.
1741 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
1742 * src/state.h (state_t): Member `nitems' is unsigned short.
1743 * src/LR0.c (get_state): Adjust.
1744 * src/reader.c (packgram): Likewise.
1745 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
1746 `Type'.
1747 (muscle_insert_int_table): Remove, unused.
1748 (prepare_rules): Remove `max'.
1749
1565b720
AD
17502002-05-06 Akim Demaille <akim@epita.fr>
1751
1752 * src/closure.c (print_firsts): Display of the symbol tags.
1753 (bitmatrix_print): Move to...
1754 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
1755 here.
1756 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
1757
cfaee611
AD
17582002-05-06 Akim Demaille <akim@epita.fr>
1759
1760 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
1761 hash_do_for_each.
1762
458be8e0
AD
17632002-05-06 Akim Demaille <akim@epita.fr>
1764
1765 * src/LR0.c (new_state, get_state): Instead of using the global
1766 `kernel_size' and `kernel_base', have two new arguments:
1767 `core_size' and `core'.
1768 Adjust callers.
1769
a900a624
AD
17702002-05-06 Akim Demaille <akim@epita.fr>
1771
1772 * src/reader.c (packgram): No longer end `ritem' with a 0
1773 sentinel: it is not used.
1774
d4e7d3a1
AD
17752002-05-05 Akim Demaille <akim@epita.fr>
1776
1777 New experimental feature: display the lookaheads in the report and
1778 graph.
1779
1780 * src/print (print_core): When --trace-flag, display the rules
1781 lookaheads.
1782 * src/print_graph.c (print_core): Likewise.
1783 Swap the arguments.
1784 Adjust caller.
1785
39ceb25b
AD
17862002-05-05 Akim Demaille <akim@epita.fr>
1787
1788 * tests/torture.at (Many lookaheads): New test.
1789
5372019f
AD
17902002-05-05 Akim Demaille <akim@epita.fr>
1791
1792 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
1793 (GENERATE_MUSCLE_INSERT_TABLE): this.
1794 (output_int_table, output_unsigned_int_table, output_short_table)
1795 (output_token_number_table, output_item_number_table): Replace with...
1796 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
1797 (muscle_insert_short_table, muscle_insert_token_number_table)
1798 (muscle_insert_item_number_table): these.
1799 Adjust all callers.
1800 (prepare_tokens): Don't free `translations', since...
1801 * src/reader.h, src/reader.c (grammar_free): do it.
1802 Move to...
1803 * src/gram.h, src/gram.c (grammar_free): here.
1804 * data/bison.simple, data/bison.c++: b4_token_number_max is now
1805 b4_translate_max.
1806
5df5f6d5
AD
18072002-05-05 Akim Demaille <akim@epita.fr>
1808
1809 * src/output.c (output_unsigned_int_table): New.
1810 (prepare_rules): `i' is unsigned.
1811 `prhs', `rline', `r2' are unsigned int.
1812 Rename muscle `rhs_number_max' as `rhs_max'.
1813 Output muscles `prhs_max', `rline_max', and `r2_max'.
1814 Free rline and r1.
1815 * data/bison.simple, data/bison.c++: Adjust to use these muscles
1816 to compute types instead of constant types.
1817 * tests/regression.at (Web2c Actions): Adjust.
1818
b87f8b21
AD
18192002-05-04 Akim Demaille <akim@epita.fr>
1820
1821 * src/symtab.h (SALIAS, SUNDEF): Rename as...
1822 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
1823 Adjust dependencies.
1824 * src/output.c (token_definitions_output): Be sure not to output a
1825 `#define 'a'' when fed with `%token 'a' "a"'.
1826 * tests/regression.at (Token definitions): New.
1827
8bb936e4
PE
18282002-05-03 Paul Eggert <eggert@twinsun.com>
1829
1830 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
1831 for K&R C.
1832
18332002-05-03 gettextize <bug-gnu-gettext@gnu.org>
1834
1835 * Makefile.am (SUBDIRS): Remove intl.
1836 (EXTRA_DIST): Add config/config.rpath.
1837
53c71a12
AD
18382002-05-03 Akim Demaille <akim@epita.fr>
1839
1840 * data/bison.simple (m4_if): Don't output empty enums.
1841 And actually, output valid enum definitions :(.
1842
289dd0cf
AD
18432002-05-03 Akim Demaille <akim@epita.fr>
1844
1845 * configure.bat: Remove, completely obsolete.
1846 * Makefile.am (EXTRA_DIST): Adjust.
1847 Don't distribute config.rpath...
1848 * config/Makefile.am (EXTRA_DIST): Do it.
1849
db85e524
AD
18502002-05-03 Akim Demaille <akim@epita.fr>
1851
1852 * configure.in (GETTEXT_VERSION): New.
1853 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
1854
83ccf991
AD
18552002-05-03 Akim Demaille <akim@epita.fr>
1856
1857 * data/bison.simple (b4_token_enum): New.
1858 (b4_token_defines): Use it to output tokens both as #define and
1859 enums.
1860 Suggested by Paul Eggert.
1861 * src/output.c (token_definitions_output): Don't output spurious
1862 white spaces.
1863
1f418995
AD
18642002-05-03 Akim Demaille <akim@epita.fr>
1865
1866 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
1867
45119f04
RA
18682002-05-02 Robert Anisko <robert@lrde.epita.fr>
1869
1870 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
1871 Update the stack class, give a try to deque as the default container.
1872
b2d52318
AD
18732002-05-02 Akim Demaille <akim@epita.fr>
1874
1875 * data/bison.simple (yyparse): Do not implement @$ = @1.
1876 (YYLLOC_DEFAULT): Adjust to do it.
1877 * doc/bison.texinfo (Location Default Action): Fix.
1878
3a8b4109
AD
18792002-05-02 Akim Demaille <akim@epita.fr>
1880
1881 * src/reader.c (parse_braces): Merge into...
1882 (parse_action): this.
1883
84614e13
AD
18842002-05-02 Akim Demaille <akim@epita.fr>
1885
1886 * configure.in (ALL_LINGUAS): Remove.
1887 * po/LINGUAS, hr.po: New.
1888
fdbcd8e2
AD
18892002-05-02 Akim Demaille <akim@epita.fr>
1890
1891 Remove the so called hairy (semantic) parsers.
1892
1893 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
1894 * src/gram.h, src/gram.c (semantic_parser): Remove.
1895 (rule_t): Remove the guard and guard_line members.
1896 * src/lex.h (token_t): remove tok_guard.
1897 * src/options.c (option_table): Remove %guard and %semantic_parser
1898 support.
1899 * src/output.c, src/output.h (guards_output): Remove.
1900 (prepare): Adjust.
1901 (token_definitions_output): Don't output the `T'
1902 tokens (???).
1903 (output_skeleton): Don't output the guards.
1904 * src/files.c, src/files.c (attrsfile): Remove.
1905 * src/reader.c (symbol_list): Remove the guard and guard_line
1906 members.
1907 Adjust dependencies.
1908 (parse_guard): Remove.
1909 * data/bison.hairy: Remove.
1910 * doc/bison.texinfo (Environment Variables): Remove occurrences of
1911 BISON_HAIRY.
1912
82b6cb3f
AD
19132002-05-02 Akim Demaille <akim@epita.fr>
1914
1915 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
1916 (parse_guard): Rename the formal argument `stack_offset' as
1917 `rule_length', which is more readable.
1918 Adjust callers.
1919 (copy_at, copy_dollar): Instead of outputting the hard coded
1920 values of $$, $n and so forth, output invocation to b4_lhs_value,
1921 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
900c877b
AD
1922 Note: this patch partially drops `semantic-parser' support: it
1923 always does `rule_length - n', where semantic parsers ought to
1924 always use `-n'.
82b6cb3f
AD
1925 * data/bison.simple, data/bison.c++ (b4_lhs_value)
1926 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
1927
6cbfbcc5
AD
19282002-05-02 Akim Demaille <akim@epita.fr>
1929
1930 * configure.in (AC_INIT): Bump to 1.49b.
1931 (AM_INIT_AUTOMAKE): Short invocation.
1932
b8548114
AD
19332002-05-02 Akim Demaille <akim@epita.fr>
1934
1935 Version 1.49a.
1936
c20cd1fa
AD
19372002-05-01 Akim Demaille <akim@epita.fr>
1938
1939 * src/skeleton.h: Remove.
1940
8a9566d4
AD
19412002-05-01 Akim Demaille <akim@epita.fr>
1942
1943 * src/skeleton.h: Fix the #endif.
1944 Reported by Magnus Fromreide.
1945
8c6d399a
PE
19462002-04-26 Paul Eggert <eggert@twinsun.com>
1947
1948 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
1949 Define if we define YYSTYPE and YYLTYPE, respectively.
b756bb75 1950 (YYCOPY): Fix [] quoting problem in the non-GCC case.
8a9566d4 1951
2b7ed18a
RA
19522002-04-25 Robert Anisko <robert@lrde.epita.fr>
1953
1954 * src/scan-skel.l: Postprocess quadrigraphs.
1955
1956 * src/reader.c (copy_character): New function, used to output
1957 single characters while replacing `[' and `]' with quadrigraphs, to
1958 avoid troubles with M4 quotes.
1959 (copy_comment): Output characters with copy_character.
1960 (read_additionnal_code): Likewise.
1961 (copy_string2): Likewise.
1962 (copy_definition): Likewise.
1963
1964 * tests/calc.at: Exercise M4 quoting.
1965
34a89c50
AD
19662002-04-25 Akim Demaille <akim@epita.fr>
1967
1968 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
1969 between `!' and the command.
1970 Reported by Paul Eggert.
1971
0dd1580a
RA
19722002-04-24 Robert Anisko <robert@lrde.epita.fr>
1973
1974 * tests/calc.at: Exercise prologue splitting.
1975
1976 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
1977 `b4_post_prologue' instead of `b4_prologue'.
1978
1979 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
1980 muscles.
1981 (output): Free pre_prologue_obstack and post_prologue_obstack.
1982 * src/files.h, src/files.c (attrs_obstack): Remove.
1983 (pre_prologue_obstack, post_prologue_obstack): New.
1984 * src/reader.c (copy_definition): Add a parameter to specify the
1985 obstack to fill, instead of using attrs_obstack unconditionally.
1986 (read_declarations): Pass pre_prologue_obstack to copy_definition if
1987 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
1988
83c1796f
PE
19892002-04-23 Paul Eggert <eggert@twinsun.com>
1990
1991 * data/bison.simple: Remove unnecessary commentary and white
1992 space differences from 1_29-branch.
1993 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
1994
1995 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
1996 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
1997 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
1998 constructors or destructors.
1999
2000 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
2001
1207eeac
AD
20022002-04-23 Akim Demaille <akim@epita.fr>
2003
2004 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
2005 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
2006 location with columns.
2007 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
2008 All reported by Paul Eggert.
2009
78ab8f67
AD
20102002-04-22 Akim Demaille <akim@epita.fr>
2011
2012 * src/reduce.c (dump_grammar): Move to...
2013 * src/gram.h, src/gram.c (grammar_dump): here.
2014 Be sure to separate long item numbers.
2015 Don't read the members of a rule's prec if its nil.
2016
133c20e2
AD
20172002-04-22 Akim Demaille <akim@epita.fr>
2018
2019 * src/output.c (table_size, table_grow): New.
2020 (MAXTABLE): Remove, replace uses with table_size.
2021 (pack_vector): Instead of dying when the table is too big, grow it.
2022
9515e8a7
AD
20232002-04-22 Akim Demaille <akim@epita.fr>
2024
2025 * data/bison.simple (yyr1): Its type is that of a token number.
2026 * data/bison.c++ (r1_): Likewise.
2027 * tests/regression.at (Web2c Actions): Adjust.
2028
23c5a174
AD
20292002-04-22 Akim Demaille <akim@epita.fr>
2030
2031 * src/reader.c (token_translations_init): 256 is now the default
2032 value for the error token, i.e., it will be assigned another
2033 number if the user assigned 256 to one of her tokens.
2034 (reader): Don't force 256 to error.
2035 * doc/bison.texinfo (Symbols): Adjust.
2036 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
2037 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
2038 etc. instead of 10, 20, 30 (which was used to `jump' over error
2039 (256) and undefined (2)).
2040
5fbb0954
AD
20412002-04-22 Akim Demaille <akim@epita.fr>
2042
2043 Propagate more token_number_t.
2044
2045 * src/gram.h (token_number_as_item_number)
2046 (item_number_as_token_number): New.
2047 * src/output.c (GENERATE_OUTPUT_TABLE): New.
2048 Use it to create output_item_number_table and
2049 output_token_number_table.
2050 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
2051 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
2052 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
2053 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
2054
4f940944
AD
20552002-04-22 Akim Demaille <akim@epita.fr>
2056
2057 * src/output.h, src/output.c (get_lines_number): Remove.
2058
3ded9a63
AD
20592002-04-19 Akim Demaille <akim@epita.fr>
2060
2061 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
2062 as Lex/Flex'.
2063 (Debugging): More details about enabling the debugging features.
2064 (Table of Symbols): Describe $$, $n, @$, and @n.
2065 Suggested by Tim Josling.
2066
e0c471a9
AD
20672002-04-19 Akim Demaille <akim@epita.fr>
2068
2069 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
2070
fecc10cd
AD
20712002-04-10 Akim Demaille <akim@epita.fr>
2072
2073 * src/system.h: Rely on HAVE_LIMITS_H.
2074 Suggested by Paul Eggert.
2075
51dec47b
AD
20762002-04-09 Akim Demaille <akim@epita.fr>
2077
2078 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
2079 full stderr, and strip it according to the bison options, instead
2080 of composing the error message from different bits.
2081 This makes it easier to check for several error messages.
2082 Adjust all the invocations.
2083 Add an invocation exercising the error token.
2084 Add an invocation demonstrating a stupid error message.
2085 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
2086 Adjust the tests.
2087 Error message are for stderr, not stdout.
2088
007a50a4
AD
20892002-04-09 Akim Demaille <akim@epita.fr>
2090
2091 * src/gram.h, src/gram.c (error_token_number): Remove, use
2092 errtoken->number.
2093 * src/reader.c (reader): Don't specify the user token number (2)
2094 for $undefined, as it uselessly prevents using it.
2095 * src/gram.h (token_number_t): Move to...
2096 * src/symtab.h: here.
2097 (state_t.number): Is a token_number_t.
2098 * src/print.c, src/reader.c: Use undeftoken->number instead of
2099 hard coded 2.
2100 (Even though this 2 is not the same as above: the number of the
2101 undeftoken remains being 2, it is its user token number which
2102 might not be 2).
2103 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
2104 `user_token_number_max'.
2105 Output `undef_token_number'.
2106 * data/bison.simple, data/bison.c++: Use them.
2107 Be sure to map invalid yylex return values to
2108 `undef_token_number'. This saves us from gratuitous SEGV.
2109
2110 * tests/conflicts.at (Solved SR Conflicts)
2111 (Unresolved SR Conflicts): Adjust.
2112 * tests/regression.at (Web2c Actions): Adjust.
2113
06446ccf
AD
21142002-04-08 Akim Demaille <akim@epita.fr>
2115
2116 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
2117 Adding #line.
2118 Remove the duplicate `typedefs'.
2119 (RhsNumberType): Fix the declaration and various other typos.
2120 Use __ofile__.
2121 * data/bison.simple: Use __ofile__.
2122 * src/scan-skel.l: Handle __ofile__.
2123
62a3e4f0
AD
21242002-04-08 Akim Demaille <akim@epita.fr>
2125
2126 * src/gram.h (item_number_t): New, the type of item numbers in
2127 RITEM. Note that it must be able to code symbol numbers as
2128 positive number, and the negation of rule numbers as negative
2129 numbers.
2130 Adjust all dependencies (pretty many).
2131 * src/reduce.c (rule): Remove this `short *' pointer: use
2132 item_number_t.
2133 * src/system.h (MINSHORT, MAXSHORT): Remove.
2134 Include `limits.h'.
2135 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
2136 (shortcpy): Remove.
2137 (MAXTABLE): Move to...
2138 * src/output.c (MAXTABLE): here.
2139 (prepare_rules): Use output_int_table to output rhs.
2140 * data/bison.simple, data/bison.c++: Adjust.
2141 * tests/torture.at (Big triangle): Move the limit from 254 to
2142 500.
2143 * tests/regression.at (Web2c Actions): Ajust.
2144
2145 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
2146 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
2147 passes, but produces negative #line number, once fixed, GCC is
2148 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
2149 C), it passes.
2150 * src/state.h (state_h): Code input lines on ints, not shorts.
2151
bb88b0fc
AD
21522002-04-08 Akim Demaille <akim@epita.fr>
2153
2154 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
2155 and then the grammar.
2156
9a636f47
AD
21572002-04-08 Akim Demaille <akim@epita.fr>
2158
2159 * src/system.h: No longer using strndup.
2160
680e8701
AD
21612002-04-07 Akim Demaille <akim@epita.fr>
2162
2163 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
2164 * src/output.c (output_table_data): Return the longest number.
2165 (prepare_tokens): Output `token_number_max').
2166 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
2167 New.
2168 Use them to define yy_token_number_type/TokenNumberType.
2169 Use this type for yytranslate.
2170 * tests/torture.at (Big triangle): Push the limit from 124 to
2171 253.
2172 * tests/regression.at (Web2c Actions): Adjust.
2173
817e9f41
AD
21742002-04-07 Akim Demaille <akim@epita.fr>
2175
2176 * tests/torture.at (Big triangle): New.
2177 (GNU AWK Grammar, GNU Cim Grammar): Move to...
2178 * tests/existing.at: here.
2179
5123689b
AD
21802002-04-07 Akim Demaille <akim@epita.fr>
2181
2182 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
2183 nritems.
2184 Adjust dependencies.
2185
f3849179
AD
21862002-04-07 Akim Demaille <akim@epita.fr>
2187
2188 * src/reader.c: Normalize increments to prefix form.
2189
bd02036a
AD
21902002-04-07 Akim Demaille <akim@epita.fr>
2191
2192 * src/reader.c, symtab.c: Remove debugging code.
2193
db8837cb
AD
21942002-04-07 Akim Demaille <akim@epita.fr>
2195
2196 Rename all the `bucket's as `symbol_t'.
2197
2198 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
2199 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
2200 * src/symtab.c, src/symtab.h (bucket): Rename as...
2201 (symbol_t): this.
2202 (symbol_list_new, bucket_check_defined, bucket_make_alias)
2203 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
2204 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
2205 (buckets_new, buckets_free, buckets_do): Rename as...
2206 (symbol_list_new, symbol_check_defined, symbol_make_alias)
2207 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
2208 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
2209 (symbols_new, symbols_free, symbols_do): these.
2210
72a23c97
AD
22112002-04-07 Akim Demaille <akim@epita.fr>
2212
2213 Use lib/hash for the symbol table.
2214
2215 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
2216 EOF.
2217 * src/lex.c (lex): Set the `number' member of new terminals.
2218 * src/reader.c (bucket_check_defined, bucket_make_alias)
2219 (bucket_check_alias_consistence, bucket_translation): New.
2220 (reader, grammar_free, readgram, token_translations_init)
2221 (packsymbols): Adjust.
2222 (reader): Number the predefined tokens.
2223 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
2224 for predefined tokens.
2225 * src/symtab.h (bucket): Remove all the hash table related
2226 members.
2227 * src/symtab.c (symtab): Replace by...
2228 (bucket_table): this.
2229 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
2230 (buckets_new, buckets_do): New.
2231
280a38c3
AD
22322002-04-07 Akim Demaille <akim@epita.fr>
2233
2234 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
2235 (start_symbol, max_user_token_number, semantic_parser)
2236 (error_token_number): Initialize.
2237 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
2238 Initialize.
2239 (reader): Don't.
2240 (errtoken, eoftoken, undeftoken, axiom): Extern.
2241
03b31c0c
AD
22422002-04-07 Akim Demaille <akim@epita.fr>
2243
2244 * src/gram.h (rule_s): prec and precsym are now pointers
2245 to the bucket giving the priority/associativity.
2246 Member `associativity' removed: useless.
2247 * src/reduce.c, src/conflicts.c: Adjust.
2248
8b3df748
AD
22492002-04-07 Akim Demaille <akim@epita.fr>
2250
2251 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
2252 Properly escape the symbols' TAG when outputting them.
2253
e601aa1d
AD
22542002-04-07 Akim Demaille <akim@epita.fr>
2255
2256 * src/lalr.h (LA): Is a bitsetv, not bitset*.
2257
b0299a2e
AD
22582002-04-07 Akim Demaille <akim@epita.fr>
2259
2260 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
2261 (LArule): this, which is an array to rule_t*.
2262 * src/print.c, src/conflicts.c: Adjust.
2263
d7e1f00c
AD
22642002-04-07 Akim Demaille <akim@epita.fr>
2265
2266 * src/gram.h (rule_t): Rename `number' as `user_number'.
2267 `number' is a new member.
2268 Adjust dependencies.
2269 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
2270
cc9305dd
AD
22712002-04-07 Akim Demaille <akim@epita.fr>
2272
2273 As a result of the previous patch, it is no longer needed
2274 to reorder ritem itself.
2275
2276 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
2277
b0940840
AD
22782002-04-07 Akim Demaille <akim@epita.fr>
2279
2280 Be sure never to walk through RITEMS, but use only data related to
2281 the rules themselves. RITEMS should be banished.
2282
2283 * src/output.c (output_token_translations): Rename as...
2284 (prepare_tokens): this.
2285 In addition to `translate', prepare the muscles `tname' and
2286 `toknum', which were handled by...
2287 (output_rule_data): this.
2288 Remove, and move the remainder of its outputs into...
2289 (prepare_rules): this new routines, which also merges content from
2290 (output_gram): this.
2291 (prepare_rules): Be sure never to walk through RITEMS.
2292 (output_stos): Rename as...
2293 (prepare_stos): this.
2294 (output): Always invoke prepare_states, after all, just don't use it
2295 in the output if you don't need it.
2296
643a5994
AD
22972002-04-07 Akim Demaille <akim@epita.fr>
2298
2299 * src/LR0.c (new_state): Display `nstates' as the name of the
2300 newly created state.
2301 Adjust to initialize first_state and last_state if needed.
2302 Be sure to distinguish the initial from the final state.
2303 (new_states): Create the itemset of the initial state, and use
2304 new_state.
2305 * src/closure.c (closure): Now that the initial state has its
2306 items properly set, there is no need for a special case when
2307 creating `ruleset'.
2308
2309 As a result, now the rule 0, reducing to $axiom, is visible in the
2310 outputs. Adjust the test suite.
2311
2312 * tests/conflicts.at (Solved SR Conflicts)
2313 (Unresolved SR Conflicts): Adjust.
2314 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
2315 * tests/conflicts.at (S/R in initial): New.
2316
b4c4ccc2
AD
23172002-04-07 Akim Demaille <akim@epita.fr>
2318
2319 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
2320 the RHS of the rules.
2321 * src/output.c (output_gram): Likewise.
2322
bba97eb2
AD
23232002-04-07 Akim Demaille <akim@epita.fr>
2324
2325 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
2326 bucket.
2327 Adjust all dependencies.
2328 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
2329 `number' of the buckets too.
2330 * src/gram.h: Include `symtab.h'.
2331 (associativity): Move to...
2332 * src/symtab.h: here.
2333 No longer include `gram.h'.
2334
c3b407f4
AD
23352002-04-07 Akim Demaille <akim@epita.fr>
2336
2337 * src/gram.h, src/gram.c (rules_rhs_length): New.
2338 (ritem_longest_rhs): Use it.
2339 * src/gram.h (rule_t): `number' is a new member.
2340 * src/reader.c (packgram): Set it.
2341 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
2342 the end of `rules', and count them out of `nrules'.
2343 (reduce_output, dump_grammar): Adjust.
2344 * src/print.c (print_grammar): It is no longer needed to check for
2345 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
2346 * tests/reduce.at (Reduced Automaton): New test.
2347
11652ab3
AD
23482002-04-07 Akim Demaille <akim@epita.fr>
2349
2350 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
2351 lacking `+ 1' to nrules, Bison reported as useless a token if it
2352 was used solely to set the precedence of the last rule...
2353
26b23c1a
AD
23542002-04-07 Akim Demaille <akim@epita.fr>
2355
2356 * data/bison.c++, data/bison.simple: Don't output the current file
2357 name in #line, to avoid useless diffs between two identical
2358 outputs under different names.
2359
18bcecb0
AD
23602002-04-07 Akim Demaille <akim@epita.fr>
2361
2362 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
2363 Normalize loops to using `< nrules + 1', not `<= nrules'.
2364
fa770c86
AD
23652002-04-07 Akim Demaille <akim@epita.fr>
2366
2367 * TODO: Update.
2368
d9b739c3
AD
23692002-04-07 Akim Demaille <akim@epita.fr>
2370
2371 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
2372 bucket.value as bucket.number.
2373
99013900
AD
23742002-04-07 Akim Demaille <akim@epita.fr>
2375
2376 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
2377 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
2378 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
2379 RHS, instead of being an index in RITEMS.
2380
e966383b
PE
23812002-04-04 Paul Eggert <eggert@twinsun.com>
2382
2383 * doc/bison.texinfo: Update copyright date.
2384 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
2385 (Symbols): Warn about running Bison in one character set,
2386 but compiling and/or running in an incompatible one.
2387 Warn about character code 256, too.
2388
23892002-04-03 Paul Eggert <eggert@twinsun.com>
2390
2391 * src/bison.data (YYSTACK_ALLOC): Depend on whether
2392 YYERROR_VERBOSE is nonzero, not whether it is defined.
2393
2394 Merge changes from bison-1_29-branch.
c307773e 2395
8d6c48b9
PE
23962002-03-20 Paul Eggert <eggert@twinsun.com>
2397
2398 Merge fixes from Debian bison_1.34-1.diff.
2399
2400 * configure.in (AC_PREREQ): 2.53.
2401
e53c6322
AD
24022002-03-20 Akim Demaille <akim@epita.fr>
2403
2404 * src/conflicts.c (log_resolution): Argument `resolution' is const.
2405
9ffbeca7
PE
24062002-03-19 Paul Eggert <eggert@twinsun.com>
2407
21db0b2a
PE
2408 * src/bison.simple (YYCOPY): New macro.
2409 (YYSTACK_RELOCATE): Use it.
2410 Remove Type arg; no longer needed. All callers changed.
2411 (yymemcpy): Remove; no longer needed.
2412
9ffbeca7
PE
2413 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
2414 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
2415
642cb8f8
AD
24162002-03-19 Akim Demaille <akim@epita.fr>
2417
2418 Test and fix the #line outputs.
2419
2420 * tests/atlocal.at (GCC): New.
2421 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
2422 (Prologue synch line, ,%union synch line, Postprologue synch line)
2423 (Action synch line, Epilogue synch line): New tests.
2424 * src/reader.c (parse_union_decl): Define the muscle stype_line.
2425 * data/bison.simple, data/bison.c++: Use it.
2426
3c31a486
AD
24272002-03-19 Akim Demaille <akim@epita.fr>
2428
2429 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
2430 (Solved SR Conflicts, %expect not enough, %expect right)
2431 (%expect too much): Move to...
2432 * tests/conflicts.at: this new file.
2433
0d8bed56
AD
24342002-03-19 Akim Demaille <akim@epita.fr>
2435
2436 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
2437 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
2438 that we can move to enums for instance.
2439 * src/output.c (token_definitions_output): Output a list of
2440 `token-name, token-number' instead of the #define.
2441 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
2442
9208d17f
AD
24432002-03-14 Akim Demaille <akim@epita.fr>
2444
2445 Use Gettext 0.11.1.
2446
af27eacb
RA
24472002-03-09 Robert Anisko <robert@lrde.epita.fr>
2448
2449 * data/bison.c++: Make the user able to add members to the generated
2450 parser by subclassing.
2451
9101a310
RA
24522002-03-05 Robert Anisko <robert@lrde.epita.fr>
2453
2454 * src/reader.c (read_additionnal_code): `c' should be an integer, not
2455 a character.
2456 Reported by Nicolas Tisserand and Nicolas Burrus.
2457
fff9bf0b
RA
24582002-03-04 Robert Anisko <robert@lrde.epita.fr>
2459
2460 * src/reader.c: Warn about lacking semi-colons, do not complain.
2461
64dba31e
RA
24622002-03-04 Robert Anisko <robert@lrde.epita.fr>
2463
2464 * data/bison.c++: Remove a debug line.
2465
374f5a14
RA
24662002-03-04 Robert Anisko <robert@lrde.epita.fr>
2467
2468 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
2469 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
2470 provide a default implementation.
2471
bfcf1f3a
AD
24722002-03-04 Akim Demaille <akim@epita.fr>
2473
2474 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
2475 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
2476 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
2477 * tests/semantic.at (Parsing Guards): Similarly.
2478 * src/reader.at (readgram): Complain if the last rule is not ended
2479 with a semi-colon.
2480
65ccf9fc
AD
24812002-03-04 Akim Demaille <akim@epita.fr>
2482
2483 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
2484 * src/closure.c: here.
2485 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
2486 RTC.
2487 * src/warshall.h, src/warshall.c: Remove.
2488 * tests/sets.at (Broken Closure): Adjust.
2489
d0039cbc
AD
24902002-03-04 Akim Demaille <akim@epita.fr>
2491
2492 * src/output.c (output_skeleton): tempdir is const.
2493 bytes_read is unused.
2494
345cea78
AD
24952002-03-04 Akim Demaille <akim@epita.fr>
2496
2497 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
2498 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
2499 Update.
2500 From Michael Hayes.
2501
564801f7
AD
25022002-03-04 Akim Demaille <akim@epita.fr>
2503
2504 * src/closure.c (closure): `r' is unused.
2505
e5352bc7
AD
25062002-03-04 Akim Demaille <akim@epita.fr>
2507
2508 * tests/sets.at (Broken Closure): Add the ending `;'.
2509 * src/reader.at (readgram): Complain if a rule is not ended with a
2510 semi-colon.
2511
914feea9
AD
25122002-03-04 Akim Demaille <akim@epita.fr>
2513
2514 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
2515 (count_sr_conflicts): Use bitset_count.
2516 * src/reduce.c (inaccessable_symbols): Ditto.
2517 (bits_size): Remove.
2518 * src/warshall.h, src/warshall.c: Convert to bitsetv.
2519
f0250de6
AD
25202002-03-04 Akim Demaille <akim@epita.fr>
2521
2522 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
2523 * src/reduce.c: Remove the `bitset_zero's following the
2524 `bitset_create's, as now it is performed by the latter.
2525
ef017502
AD
25262002-03-04 Akim Demaille <akim@epita.fr>
2527
2528 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
2529 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
2530 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
2531 latest sources from Michael.
2532
76514394
AD
25332002-03-04 Akim Demaille <akim@epita.fr>
2534
2535 * src/output.c (output): Don't free the grammar.
2536 * src/reader.c (grammar_free): New.
2537 * src/main.c (main): Call it and don't free symtab here.
2538
55024580
AD
25392002-03-04 Akim Demaille <akim@epita.fr>
2540
2541 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
2542 before returning.
2543 Reported by Benoit Perrot.
2544
f9abaa2c
AD
25452002-03-04 Akim Demaille <akim@epita.fr>
2546
2547 Use bitset operations when possible, not loops over bits.
2548
2549 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
2550 bitset_or.
2551 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
2552 * src/reduce.c (useless_nonterminals): Formatting changes.
2553 * src/warshall.c (TC): Use bitset_or.
2554
0e721e75
AD
25552002-03-04 Akim Demaille <akim@epita.fr>
2556
2557 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
2558 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
2559 Ditto.
2560
0fb1ffb1
AD
25612002-03-04 Akim Demaille <akim@epita.fr>
2562
2563 * src/lalr.c (F): Now a bitset*.
2564 Adjust all dependencies.
2565
b86796bf
AD
25662002-03-04 Akim Demaille <akim@epita.fr>
2567
2568 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
2569 Adjust all dependencies.
2570
602bbf31
AD
25712002-03-04 Akim Demaille <akim@epita.fr>
2572
2573 * src/L0.c, src/LR0.h (nstates): Be size_t.
2574 Adjust comparisons (signed vs unsigned).
2575 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
2576 bitset*.
2577 Adjust all dependencies.
2578
d8a0245c
AD
25792002-03-04 Akim Demaille <akim@epita.fr>
2580
2581 * src/closure.c (firsts): Now, also a bitset.
2582 Adjust all dependencies.
2583 (varsetsize): Remove, now unused.
2584 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
2585
34ba9743
AD
25862002-03-04 Akim Demaille <akim@epita.fr>
2587
2588 * src/print.c: Convert to use bitset.h, not hand coded iterations
2589 over ints.
2590
ed86e78c
AD
25912002-03-04 Akim Demaille <akim@epita.fr>
2592
2593 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
2594
dfdb1797
AD
25952002-03-04 Akim Demaille <akim@epita.fr>
2596
2597 * src/closure.c (ruleset): Be a bitset.
2598 (rulesetsize): Remove.
2599
7086e707
AD
26002002-03-04 Akim Demaille <akim@epita.fr>
2601
2602 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
2603 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
2604 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
2605 * src/closure.c (fderives): Be an array of bitsets.
2606
98254360
RA
26072002-02-28 Robert Anisko <robert@lrde.epita.fr>
2608
2609 * data/bison.c++: Merge the two generated headers. Insert a copyright
2610 notice in each output file.
2611
a75c057f
AD
26122002-02-28 Akim Demaille <akim@epita.fr>
2613
2614 * data/bison.c++: Copy the prologue of bison.simple to fetch
2615 useful M4 definitions, such as b4_header_guard.
2616
06b00abc
AD
26172002-02-25 Akim Demaille <akim@epita.fr>
2618
2619 * src/getargs.c (version): Give the name of the authors, and use a
a75c057f
AD
2620 translator friendly scheme for the bgr
2621 copyright notice.
06b00abc 2622
70e7d534
AD
26232002-02-25 Akim Demaille <akim@epita.fr>
2624
2625 * src/output.c (header_output): Remove, now handled completely via
2626 M4.
2627
abe017f6
AD
26282002-02-25 Akim Demaille <akim@epita.fr>
2629
2630 * m4/m4.m4: New, from CVS Autoconf.
2631 * configure.in: Invoke it.
2632 * src/output.c (output_skeleton): Use its result instead of the
2633 hard coded name.
2634
381fb12e
AD
26352002-02-25 Akim Demaille <akim@epita.fr>
2636
2637 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
2638 Fileutils 4.1.5.
2639 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
2640 * src/output.c (output_skeleton): Use mkstemp to create a real
2641 temporary file.
2642 Move the filling of `skeleton' and its muscle to...
2643 (prepare): here.
2644 (output): Move the definition of the prologue muscle to...
2645 (prepare): here.
2646 * src/system.h (DEFAULT_TMPDIR): New.
2647
6f38107f
PE
26482002-02-14 Paul Eggert <eggert@twinsun.com>
2649
2650 Remove the support for C++ namespace cleanliness; it was
2651 causing more problems than it was curing, since it didn't work
2652 properly on some nonstandard C++ compilers. This can wait
2653 for a proper C++ parser.
2654
2655 * NEWS: Document this.
2656 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
2657 of C++, as it's treated like C now.
2658 * src/bison.simple (YYSTD): Remove.
2659 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
2660 Treat C++ just like Standard C instead of trying to support
2661 namespace cleanliness.
2662
80cce3da
AD
26632002-02-14 Akim Demaille <akim@epita.fr>
2664
2665 * tests/regression.at (else): Adjust to Andreas' change.
2666
842e8679
AD
26672002-02-14 Akim Demaille <akim@epita.fr>
2668
2669 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
2670
4bda3f10
AD
26712002-02-13 Andreas Schwab <schwab@suse.de>
2672
2673 * src/output.c (output_rule_data): Don't output NULL, it might
2674 not be defined yet.
2675
4162fa07 26762002-02-11 Robert Anisko <robert@lrde.epita.fr>
b418ecd8 2677
4162fa07
RA
2678 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
2679 (Copyright notice): Update.
b418ecd8 2680
bd16a5dc
AD
26812002-02-11 Akim Demaille <akim@epita.fr>
2682
2683 * tests/regression.at (%nonassoc and eof): Don't include
2684 nonportable headers.
2685
8d69a1a3
RA
26862002-02-08 Robert Anisko <robert@lrde.epita.fr>
2687
2688 * data/bison.c++: Correct error recovery. Make the user able to
2689 initialize the starting location.
2690
9b2d0677
AD
26912002-02-07 Akim Demaille <akim@epita.fr>
2692
2693 * tests/input.at: New.
2694
69e2658b
RA
26952002-02-07 Robert Anisko <robert@lrde.epita.fr>
2696
2697 * data/bison.c++: Replace some direct m4 expansions by constants. Be
9b2d0677 2698 more consistent when naming methods and variables. Put preprocessor
69e2658b
RA
2699 directives around tables only needed for debugging.
2700
4aacc3a7
RA
27012002-02-07 Robert Anisko <robert@lrde.epita.fr>
2702
2703 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
2704 C++ parsers.
2705 (yy::b4_name::parse): Use print_.
2706
762a801e
RA
27072002-02-07 Robert Anisko <robert@lrde.epita.fr>
2708
2709 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
2710
4bb2bc3f
RA
27112002-02-07 Robert Anisko <robert@lrde.epita.fr>
2712
2713 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
2714 C++ parsers.
2715 (yy::b4_name::parse): Build verbose error messages, and use error_.
2716
6b45a3ca
RA
27172002-02-06 Robert Anisko <robert@lrde.epita.fr>
2718
2719 * data/bison.c++: Fix m4 quoting in comments.
2720
50997c6e
RA
27212002-02-06 Robert Anisko <robert@lrde.epita.fr>
2722
2723 * data/bison.c++: Adjust the parser code. Fix some muscles that were
2724 not expanded by m4.
2725
3f3eed27
AD
27262002-02-05 Akim Demaille <akim@epita.fr>
2727
2728 * data/bison.c++: Adjust to the M4 back end.
2729 More is certainly needed.
2730
be2a1a68
AD
27312002-02-05 Akim Demaille <akim@epita.fr>
2732
2733 Give a try to M4 as a back end.
2734
2735 * lib/readpipe.c: New, from wdiff.
2736 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
2737 BISON_HAIRY.
2738 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
2739 specific values. Now it is m4 that performs the lookup.
2740 * src/parse-skel.y: Remove.
2741 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
2742 * src/output.c (actions_output, guards_output)
2743 (token_definitions_output): No longer keeps track of the output
2744 line number, hence remove the second argument.
2745 (guards_output): Check against the guard member of a rule, not the
2746 action member.
2747 Adjust callers.
2748 (output_skeleton): Don't look for the skeleton location, let m4 do
2749 that.
2750 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
2751 file will be used.
2752 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
2753 (prepare): Given that for the time being changesyntax is not
2754 usable in M4, rename the muscles using `-' to `_'.
2755 Define `defines_flag', `output_parser_name' and `output_header_name'.
2756 * src/output.h (actions_output, guards_output)
2757 (token_definitions_output): Adjust prototypes.
2758 * src/scan-skel.l: Instead of scanning the skeletons, it now
2759 processes the output of m4: `__oline__' and `#output'.
2760 * data/bison.simple: Adjust to be used by M4(sugar).
2761 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
2762 to date.
2763 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
2764 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
2765 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
2766 shamelessly stolen from CVS Autoconf.
2767
beda758b
AD
27682002-02-05 Akim Demaille <akim@epita.fr>
2769
2770 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
2771 * configure.in: Check for the declarations of free and malloc.
2772 * src/muscle_tab.c: Adjust.
2773
5ece6d43
AD
27742002-02-05 Akim Demaille <akim@epita.fr>
2775
2776 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
2777 which have no values.
2778
5bb18f9a
AD
27792002-02-05 Akim Demaille <akim@epita.fr>
2780
2781 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
2782 * data/: here.
2783
894dd62e
PE
27842002-01-29 Paul Eggert <eggert@twinsun.com>
2785
2786 * src/bison.simple (YYSIZE_T): Do not define merely because
2787 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
2788 On some platforms, <alloca.h> does not declare YYSTD (size_t).
2789
82841af7
AD
27902002-01-27 Akim Demaille <akim@epita.fr>
2791
2792 Fix `%nonassoc and eof'.
2793
2794 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
2795 which were not properly copied! Replace
2796 memcpy (res->errs, src->errs, src->nerrs);
2797 with
2798 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
2799 !!!
2800 * tests/regression.at (%nonassoc and eof): Adjust to newest
2801 Autotest: `.' is not in the PATH.
2802
318b76e9
AD
28032002-01-27 Akim Demaille <akim@epita.fr>
2804
2805 * tests/sets.at (AT_EXTRACT_SETS): New.
2806 (Nullable): Use it.
2807 (Firsts): New.
2808
30d2f3d5
AD
28092002-01-26 Akim Demaille <akim@epita.fr>
2810
2811 * tests/actions.at, tests/calc.at, tests/headers.at,
2812 * tests/torture.at: Adjust to the newest Autotest which no longer
2813 forces `.' in the PATH.
2814
30f8c395
AD
28152002-01-25 Akim Demaille <akim@epita.fr>
2816
2817 * tests/regression.at (%nonassoc and eof): New.
2818 Suggested by Robert Anisko.
2819
29ae55f1
AD
28202002-01-24 Akim Demaille <akim@epita.fr>
2821
2822 Bison dumps core when trying to complain about broken input files.
2823 Reported by Cris van Pelt.
2824
2825 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
2826 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
2827 into...
2828 (Invalid inputs): Strengthen: exercise parse_percent_token.
2829
2b548aa6
RA
28302002-01-24 Robert Anisko <robert.anisko@epita.fr>
2831
2832 * src/Makefile.am: Add bison.c++.
2833 * src/bison.c++: New skeleton.
2834
bb0146c2
AD
28352002-01-21 Paolo Bonzini <bonzini@gnu.org>
2836
2837 * po/it.po: New.
2838
bec30531
AD
28392002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
2840
2841 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
2842
fc6edc45
MA
28432002-01-20 Marc Autret <marc@gnu.org>
2844
2845 * src/files.c (compute_output_file_names): Fix
2846
5e5d5415
MA
28472002-01-20 Marc Autret <marc@gnu.org>
2848
2849 * tests/output.at: New test.
2850 * src/files.c (compute_base_names): Don't map extensions when
2851 the YACC flag is set, use defaults.
2852 Reported by Evgeny Stambulchik.
2853
44ea3fbd
MA
28542002-01-20 Marc Autret <marc@gnu.org>
2855
bb0146c2 2856 * src/system.h: Need to define __attribute__ away for non-GCC
44ea3fbd
MA
2857 compilers as well (i.e. the vendor C compiler).
2858 Suggested by Albert Chin-A-Young.
2859
338963d1
TVH
28602002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
2861
2862 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
2863 canonical definition.
2864 * src/system.h: Use the canonical definition for PARAMS (avoids
2865 a conflict with the macro from lib/hash.h).
2866
c57b2479
AD
28672002-01-11 Akim Demaille <akim@epita.fr>
2868
2869 * configure.in: Use AC_FUNC_STRNLEN.
d9e9746c 2870 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
c57b2479 2871
b85810ae
AD
28722002-01-09 Akim Demaille <akim@epita.fr>
2873
2874 * src/files.c, src/files.h (output_infix): New.
2875 (tab_extension): Remove.
2876 (compute_base_names): Compute the former, drop the latter.
2877 * src/output.c (prepare): Insert the muscles `output-infix', and
2878 `output-suffix'.
2879 * src/parse-skel.y (string, string.1): New.
2880 (section.header): Use it.
2881 (section.yacc): Remove.
2882 (prefix): Remove too.
2883 * src/scan-skel.l: Adjust.
2884 * src/bison.simple, src/bison.hairy: Adjust.
2885
cae60122
AD
28862002-01-09 Akim Demaille <akim@epita.fr>
2887
2888 * configure.in (WERROR_CFLAGS): Compute it.
2889 * src/Makefile.am (CFLAGS): Pass it.
2890 * tests/atlocal.in (CFLAGS): Idem.
2891 * src/files.c: Fix a few warnings.
2892 (get_extension_index): Remove, unused.
2893
ae404801
AD
28942002-01-08 Akim Demaille <akim@epita.fr>
2895
2896 * src/getargs.c (AS_FILE_NAME): New.
2897 (getargs): Use it to convert DOSish file names.
2898 * src/files.c (base_name): Rename as full_base_name to avoid
2899 clashes with `base_name ()'.
2900 (filename_split): New.
2901 (compute_base_names): N-th rewrite, using filename_split.
2902
22312b71
AD
29032002-01-08 Akim Demaille <akim@epita.fr>
2904
2905 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
2906 New, stolen from the Fileutils 4.1.
2907 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
2908 * configure.in: Check for the presence of memrchr, and of its
2909 prototype.
2910
a67cef01
TVH
29112002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
2912
2913 * lib/hash.h (__P): Added definition for this macro.
2914 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
2915 BUILT_SOURCES, to ensure they are generated first.
2916 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
2917 %error-verbose to allow bootstrapping with bison 1.30x.
2918
2b25d624
AD
29192002-01-06 Akim Demaille <akim@epita.fr>
2920
2921 * src/reader.c (parse_braces): Don't fetch the next char, the
2922 convention is to fetch on entry.
2923 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
2924 'switch' without a following semicolon.
2925 * tests/regression.at (braces parsing): New.
2926
3460813b
AD
29272002-01-06 Akim Demaille <akim@epita.fr>
2928
2929 Bison is dead wrong in its RR conflict reports.
2930
2931 * tests/torture.at (GNU Cim Grammar): New.
2932 * src/conflicts.c (count_rr_conflicts): Fix.
2933
73784c64
AD
29342002-01-06 Akim Demaille <akim@epita.fr>
2935
2936 Creating package.m4 from configure.ac causes too many problems.
2937
2938 * tests/Makefile.am (package.m4): Create it by hand,
2939 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
2940
25d81090
AD
29412002-01-06 Akim Demaille <akim@epita.fr>
2942
2943 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
2944 skeleton.h.
2945
a9b8959e
PE
29462002-01-04 Paul Eggert <eggert@twinsun.com>
2947
2948 * doc/bison.texinfo (Debugging):
2949 Remove YYSTDERR; it's no longer defined or used.
2950 Also, s/cstdio.h/cstdio/.
2951
25d81090
AD
29522002-01-03 Akim Demaille <akim@epita.fr>
2953
2954 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
2955
1109455c
AD
29562002-01-03 Akim Demaille <akim@epita.fr>
2957
2958 * src/parse-skel.y (process_skeleton): Don't bind the parser's
2959 tracing code to --trace, wait for a better --trace option, with
2960 args.
2961
7ea5e977
AD
29622002-01-03 Akim Demaille <akim@epita.fr>
2963
2964 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
2965 The ISO C++ standard is extremely clear about it: stderr is
2966 considered a macro, not a regular symbol (see table 94 `Header
2967 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
2968 Therefore std:: does not apply to it. It still does with fprintf.
2969 Also, s/cstdio.h/cstdio/.
2970
fab5b110
AD
29712002-01-03 Akim Demaille <akim@epita.fr>
2972
2973 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
2974 for non system headers.
2975
aed7fd9b
AD
29762002-01-02 Akim Demaille <akim@epita.fr>
2977
2978 Equip the skeleton chain with location tracking, runtime trace,
2979 pure parser and scanner.
2980
2981 * src/parse-skel.y: Request a pure parser, locations, and prefix
2982 renaming.
2983 (%union): Having several members with the same type does not help
2984 type mismatches, simplify.
2985 (YYPRINT, yyprint): New.
2986 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
2987 (skel_error): this.
2988 Handle locations.
2989 * src/scan-skel.l: Adjust to these changes.
2990 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
2991 (LOCATION_PRINT, skel_control_t): New.
2992
24fad99e
AD
29932001-12-30 Akim Demaille <akim@epita.fr>
2994
2995 * src/parse-skel.y: Get rid of the shift/reduce conflict:
2996 replace `gb' with BLANKS.
2997 * src/scan-skel.l: Adjust.
2998
a4b36db4
AD
29992001-12-30 Akim Demaille <akim@epita.fr>
3000
3001 * src/system.h: We don't need nor want bcopy.
3002 Throw away MS-DOS crap: we don't need getpid.
3003 * configure.in: We don't need strndup. It was even causing
3004 problems: because Flex includes the headers *before* us,
3005 _GNU_SOURCE is not defined by config.h, and therefore strndup was
3006 not visible.
3007 * lib/xstrndup.c: New.
3008 * src/scan-skel.l: Use it.
3009 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
3010 * src/parse-skel.y: Use %directives instead of #defines.
3011
1239777d
AD
30122001-12-30 Akim Demaille <akim@epita.fr>
3013
3014 * src/skeleton.h: New.
3015 * src/output.c (output_parser, output_master_parser): Remove, dead
3016 code.
3017 * src/output.h (get_lines_number, actions_output, guards_output)
3018 (token_definitions_output): Prototype them.
3019 * src/parse-skel.y: Add the license notice.
3020 Include output.h and skeleton.h.
3021 (process_skeleton): Returns void, and takes a single parameter.
3022 * src/scan-skel.l: Add the license notice.
3023 Include skeleton.h.
3024 Don't use %option yylineno: it seems that then Flex imagines
3025 REJECT has been used, and therefore it won't reallocate its
3026 buffers (which makes no other sense to me than a bug). It results
3027 in warnings for `unused: yy_flex_realloc'.
3028
9b3add5b
RA
30292001-12-30 Robert Anisko <robert.anisko@epita.fr>
3030
3031 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
3032 (MUSCLE_INSERT_PREFIX): ...to there.
3033 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
3034 (MUSCLE_INSERT_PREFIX): Move from here...
3035
3036 * src/bison.hairy: Add a section directive. Put braces around muscle
3037 names. This parser skeleton is still broken, but Bison should not
3038 choke on a bad muscle 'syntax'.
3039 * src/bison.simple: Add a section directive. Put braces around muscle
3040 names.
3041
3042 * src/files.h (strsuffix, stringappend): Add declarations.
3043 (tab_extension): Add declaration.
3044 (short_base_name): Add declaration.
3045
3046 * src/files.c (strsuffix, stringappend): No longer static. These
3047 functions are used in the skeleton parser.
3048 (tab_extension): New.
3049 (compute_base_names): Use the computations done in this function
fab5b110 3050 to guess if the generated parsers should have '.tab' in their
9b3add5b
RA
3051 names.
3052 (short_base_name): No longer static.
3053
3054 * src/output.c (output_skeleton): New.
3055 (output): Disable call to output_master_parser, and give a try to
3056 a new skeleton handling system.
3057 (guards_output, actions_output): No longer static.
3058 (token_definitions_output, get_lines_number): No longer static.
3059
3060 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
3061
fab5b110 3062 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
9b3add5b
RA
3063 parse-skel.y.
3064
3065 * src/parse-skel.y: New file.
3066 * src/scan-skel.l: New file.
3067
b5b61c61
AD
30682001-12-29 Akim Demaille <akim@epita.fr>
3069
3070 %name-prefix is broken.
3071
3072 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
3073 Adjust all dependencies.
3074 * tests/headers.at (export YYLTYPE): Strengthen this test: use
3075 %name-prefix.
3076
3077 Renaming yylval but not yylloc is not consistent. Now we do.
3078
3079 * src/bison.simple: Prefix yylloc if used.
3080 * doc/bison.texinfo (Decl Summary): Document that.
3081
8c9a50be
AD
30822001-12-29 Akim Demaille <akim@epita.fr>
3083
3084 * doc/bison.texinfo: Promote `%long-directive' over
3085 `%long_directive'.
3086 Remove all references to fixed-output-files, yacc is enough.
3087
d99361e6
AD
30882001-12-29 Akim Demaille <akim@epita.fr>
3089
3090 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
3091 user prologue. These are defaults.
3092 * tests/actions.at (Mid-rule actions): Make sure the user can
3093 define YYDEBUG and YYERROR_VERBOSE.
3094
b9cecb91
AD
30952001-12-29 Akim Demaille <akim@epita.fr>
3096
3097 * src/output.c (header_output): Don't forget to export YYLTYPE and
3098 yylloc.
3099 * tests/headers.at (export YYLTYPE): New, make sure it does.
3100 * tests/regression.at (%union and --defines, Invalid CPP headers):
3101 Move to...
3102 * tests/headers.at: here.
3103
aea13e97
AD
31042001-12-29 Akim Demaille <akim@epita.fr>
3105
3106 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
3107
931394cb
AD
31082001-12-29 Akim Demaille <akim@epita.fr>
3109
3110 * tests/actions.at (Mid-rule actions): Output on a single line
3111 instead of several.
3112
704a47c4
AD
31132001-12-29 Akim Demaille <akim@epita.fr>
3114
3115 * doc/bison.texinfo: Formatting changes.
3116
091e20bb
AD
31172001-12-29 Akim Demaille <akim@epita.fr>
3118
3119 Don't store the token defs in a muscle, just be ready to output it
3120 on command. Now possible via `symbols'. Fixes a memory leak.
3121
3122 * src/output.c (token_definitions_output): New.
3123 (output_parser, header_output): Use it.
3124 * src/reader.c (symbols_save): Remove.
3125
cce71710
AD
31262001-12-29 Akim Demaille <akim@epita.fr>
3127
3128 * src/bison.simple: Do not provide a default for YYSTYPE and
3129 YYLTYPE before the user's prologue. Otherwise it's hardly... a
3130 default.
3131
82c035a8
AD
31322001-12-29 Akim Demaille <akim@epita.fr>
3133
3134 Mid-rule actions are simply... ignored!
3135
3136 * src/reader.c (readgram): Be sure to attach mid-rule actions to
3137 the empty-rule associated to the dummy symbol, not to the host
3138 rule.
3139 * tests/actions.at (Mid-rule actions): New.
3140
8419d367
AD
31412001-12-29 Akim Demaille <akim@epita.fr>
3142
3143 Memory leak.
3144
3145 * src/reader.c (reader): Free grammar.
3146
375d5806
AD
31472001-12-29 Akim Demaille <akim@epita.fr>
3148
3149 Memory leak.
3150
3151 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
3152 since it allocates it for each state, although only one is needed.
3153 (allocate_storage): Do it here.
3154
f51cb8ff
AD
31552001-12-29 Akim Demaille <akim@epita.fr>
3156
3157 * src/options.h, src/options.c (create_long_option_table): Rename
3158 as...
3159 (long_option_table_new): this, with a clearer prototype.
3160 (percent_table): Remove, unused,
3161 * src/getargs.c (getargs): Adjust.
3162
29e88316
AD
31632001-12-29 Akim Demaille <akim@epita.fr>
3164
3165 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
3166 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
3167 as states.
3168
b9f71f19
AD
31692001-12-29 Akim Demaille <akim@epita.fr>
3170
3171 * src/lalr.c (build_relations): Rename `states' as `states1'.
3172 Sorry, I don't understand exactly what it is, no better name...
3173
1a2b5d37
AD
31742001-12-29 Akim Demaille <akim@epita.fr>
3175
3176 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
3177 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
3178 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
3179 as rules.
3180
1cca533e
AD
31812001-12-29 Akim Demaille <akim@epita.fr>
3182
3183 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
3184 ago.
3185
c03ae966
AD
31862001-12-29 Akim Demaille <akim@epita.fr>
3187
3188 * src/reader.c, src/reader.h (user_toknums): Remove.
3189 Adjust all users to use symbols[i]->user_token_number.
3190
5a670b1e
AD
31912001-12-29 Akim Demaille <akim@epita.fr>
3192
3193 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
3194 Adjust all users to use symbols[i]->prec or ->assoc.
3195
ad949da9
AD
31962001-12-29 Akim Demaille <akim@epita.fr>
3197
3198 * src/reader.c, src/reader.h (tags): Remove.
3199 Adjust all users to use symbols[i]->tag.
3200
0e78e603
AD
32012001-12-29 Akim Demaille <akim@epita.fr>
3202
3203 * src/gram.h, src/gram.c (symbols): New, similar to state_table
3204 and rule_table.
3205 * src/reader.c (packsymbols): Fill this table.
3206 Drop sprec.
3207 * src/conflicts.c (resolve_sr_conflict): Adjust.
3208 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
3209 single table.
3210 Use symbols[i]->tag instead of tags[i].
3211
213e640e
AD
32122001-12-29 Akim Demaille <akim@epita.fr>
3213
3214 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
3215 In addition, put a comment in there, to replace...
3216 * tests/regression.at (%union and C comments): Remove.
3217
e7b8bef1
AD
32182001-12-29 Akim Demaille <akim@epita.fr>
3219
3220 * tests/regression.at (Web2c Actions): Blindly move the actual
3221 output as expected output. The contents *seem* right to me, but I
3222 can't pretend reading perfectly parser tables... Nonetheless, all
3223 the other tests pass correctly, the table look OK, even though the
3224 presence of `$axiom' is to be noted: AFAICS it is useless (but
3225 harmless).
3226
b68e7744
AD
32272001-12-29 Akim Demaille <akim@epita.fr>
3228
3229 * src/reader.c (readgram): Don't add the rule 0 if there were no
3230 rules read. In other words, add it _after_ having performed
3231 grammar sanity checks.
3232 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
3233
78d5bae9
AD
32342001-12-29 Akim Demaille <akim@epita.fr>
3235
3236 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
3237 visible, and some states have now a different number.
3238
ff442794
AD
32392001-12-29 Akim Demaille <akim@epita.fr>
3240
3241 * src/reader.c (readgram): Bind the initial rule's lineno to that
3242 of the first rule.
3243 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
3244 (Solved SR Conflicts): Adjust rule 0's line number.
3245
610ab194
AD
32462001-12-29 Akim Demaille <akim@epita.fr>
3247
3248 Fix the `GAWK Grammar' failure.
3249
3250 * src/LR0.c (final_state): Initialize to -1 so that we do compute
3251 the reductions of the first state which was mistakenly confused
3252 with the final state because precisely final_state was initialized
3253 to 0.
3254 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
3255 now noticed by Bison.
3256 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
3257 have a reduction on $default.
3258
29d29c8f
AD
32592001-12-29 Akim Demaille <akim@epita.fr>
3260
3261 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
3262 rule line numbers.
3263 * src/closure.c (print_closure): Likewise.
3264 * src/derives.c (print_derives): Likewise.
3265 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
3266 now.
3267
7c6b64d0
AD
32682001-12-29 Akim Demaille <akim@epita.fr>
3269
3270 * src/lalr.c (lookaheads_print): New.
3271 (lalr): Call it when --trace-flag.
3272 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
3273 are dumped.
3274
3d4daee3
AD
32752001-12-29 Akim Demaille <akim@epita.fr>
3276
3277 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
3278 when walking through ritem, even via rule->rhs.
3279 * src/reduce.c (dump_grammar, useful_production, reduce_output)
3280 (useful_production, useless_nonterminals): Likewise.
3281 (reduce_grammar_tables): Likewise, plus update nritems.
3282 * src/nullable.c (set_nullable): Likewise.
3283 * src/lalr.c (build_relations): Likewise.
3284 * tests/sets.at (Nullable): Adjust.
3285 Fortunately, now, the $axiom is no longer nullable.
3286
9e7f6bbd
AD
32872001-12-29 Akim Demaille <akim@epita.fr>
3288
3289 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
3290 the 0-sentinel.
3291 * src/gram.c (ritem_longest_rhs): Likewise.
3292 * src/reduce.c (nonterminals_reduce): Likewise.
3293 * src/print_graph.c (print_graph): Likewise.
3294 * src/output.c (output_rule_data): Likewise.
3295 * src/nullable.c (set_nullable): Likewise.
3296
255ef638
AD
32972001-12-29 Akim Demaille <akim@epita.fr>
3298
3299 * src/output.c: Comment changes.
3300
0d8a7363
AD
33012001-12-27 Paul Eggert <eggert@twinsun.com>
3302
3303 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
3304 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
3305 Sparc, as they were causing more porting problems than the
3306 (minor) performance improvement was worth.
3307
3308 Also, catch up with 1.31's YYSTD.
3309
3db472b9
AD
33102001-12-27 Akim Demaille <akim@epita.fr>
3311
3312 * src/output.c (output_gram): Rely on nritems, not the
3313 0-sentinel. See below.
3314 Use -1 as separator, not 0.
3315 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
3316 Rely on -1 as separator in yyrhs, instead of 0.
3317 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
3318 twice `Now at end of input', therefore there are two lines less to
3319 expect.
3320
b365aa05
AD
33212001-12-27 Akim Demaille <akim@epita.fr>
3322
3323 * tests/regression.at (Unresolved SR Conflicts):
3324 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
3325 below.
3326
30171f79
AD
33272001-12-27 Akim Demaille <akim@epita.fr>
3328
3329 * src/LR0.c (new_state): Recognize the final state by the fact it
3330 is reached by eoftoken.
3331 (insert_start_shifting_state, insert_eof_shifting_state)
3332 (insert_accepting_state, augment_automaton): Remove, since now
3333 these states are automatically computed from the initial state.
3334 (generate_states): Adjust.
3335 * src/print.c: When reporting a rule number to the user, substract
3336 1, so that the axiom rule is rule 0, and the first user rule is 1.
3337 * src/reduce.c: Likewise.
3338 * src/print_graph.c (print_core): For the time being, just as for
3339 the report, depend upon --trace-flags to dump the full set of
3340 items.
3341 * src/reader.c (readgram): Once the grammar read, insert the rule
3342 0: `$axiom: START-SYMBOL $'.
3343 * tests/set.at: Adjust: rule 0 is now displayed, and since the
3344 number of the states has changed (the final state is no longer
3345 necessarily the last), catch up.
3346
75142d45
AD
33472001-12-27 Akim Demaille <akim@epita.fr>
3348
3349 Try to make the use of the eoftoken valid. Given that its value
3350 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
3351 is used instead of > 0 where appropriate, (ii), depend upon nritems
3352 instead of the 0-sentinel.
3353
3354 * src/gram.h, src/gram.c (nritems): New.
3355 Expected to be duplication of nitems, but for the time being...
3356 * src/reader.c (packgram): Assert nritems and nitems are equal.
3357 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
3358 * src/closure.c (print_closure, print_fderives): Likewise.
3359 * src/gram.c (ritem_print): Likewise.
3360 * src/print.c (print_core, print_grammar): Likewise.
3361 * src/print_graph.c: Likewise.
3362
b7c49edf
AD
33632001-12-27 Akim Demaille <akim@epita.fr>
3364
3365 * src/main.c (main): If there are complains after grammar
3366 reductions, then output the report anyway if requested, then die.
3367 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
3368 * src/reader.c (eoftoken): New.
3369 (parse_token_decl): If the token being defined has value `0', it
3370 is the eoftoken.
3371 (packsymbols): No longer hack `tags' to insert `$' by hand.
3372 Be sure to preserve the value of the eoftoken.
3373 (reader): Make sure eoftoken is defined.
3374 Initialize nsyms to 0: now eoftoken is created just like the others.
3375 * src/print.c (print_grammar): Don't special case the eof token.
3376 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
3377 lie anyway, albeit pleasant.
3378 * tests/calc.at: Exercise error messages with eoftoken.
3379 Change the grammar so that empty input is invalid.
3380 Adjust expectations.
3381 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
3382
ec2da99f
AD
33832001-12-27 Akim Demaille <akim@epita.fr>
3384
3385 * configure.in: Check the protos of strchr ans strspn.
3386 Replace strchr if needed.
3387 * src/system.h: Provide the protos of strchr, strspn and memchr if
3388 missing.
3389 * lib/strchr.c: New.
3390 * src/reader.c (symbols_save): Use strchr.
3391
8adfa272
AD
33922001-12-27 Akim Demaille <akim@epita.fr>
3393
3394 * src/print.c, src/print_graph.c (escape): New.
3395 Use it to quote the TAGS outputs.
3396 * src/print_graph.c (print_state): Now errors are in red, and
3397 reductions in green.
3398 Prefer high to wide: output the state number on a line of its own.
3399
80dac38c
AD
34002001-12-27 Akim Demaille <akim@epita.fr>
3401
3402 * src/state.h, src/state.c (reductions_new): New.
3403 * src/LR0.c (set_state_table): Let all the states have a
3404 `reductions', even if reduced to 0.
3405 (save_reductions): Adjust.
3406 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
3407 * src/print.c (print_reductions, print_actions): Adjust.
3408 * src/output.c (action_row): Adjust.
3409
2cec70b9
AD
34102001-12-27 Akim Demaille <akim@epita.fr>
3411
3412 * src/state.h, src/state.c (errs_new, errs_dup): New.
3413 * src/LR0.c (set_state_table): Let all the states have an errs,
3414 even if reduced to 0.
3415 * src/print.c (print_errs, print_reductions): Adjust.
3416 * src/output.c (output_actions, action_row): Adjust.
3417 * src/conflicts.c (resolve_sr_conflict): Adjust.
3418
13ca549a
AD
34192001-12-27 Akim Demaille <akim@epita.fr>
3420
3421 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
3422
5092aba5
AD
34232001-12-27 Akim Demaille <akim@epita.fr>
3424
3425 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
3426 * src/print.c: here.
3427 (lookaheadset, shiftset): New, used as additional storage by
3428 print_reductions.
3429 (print_results): Adjust.
3430 (print_shifts, print_gotos, print_errs): New, extracted from...
3431 (print_actions): here.
3432 * src/print_graph.c (print_actions): Remove dead code.
3433
11e2beca
AD
34342001-12-27 Akim Demaille <akim@epita.fr>
3435
3436 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
3437 `$n' and `@n'.
3438
dac3c910
AD
34392001-12-27 Akim Demaille <akim@epita.fr>
3440
3441 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
3442 (build_relations): Adjust.
3443
d0b0fefa
AD
34442001-12-27 Akim Demaille <akim@epita.fr>
3445
3446 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
3447 duplication.
3448
adc8c848
AD
34492001-12-27 Akim Demaille <akim@epita.fr>
3450
3451 * src/reader.c (packgram): Catch nitems overflows.
3452
14d293ac
AD
34532001-12-27 Akim Demaille <akim@epita.fr>
3454
3455 * src/files.c, src/files.h (guard_obstack): Remove.
3456 * src/output.c (output): Adjust.
3457 * src/reader.c (parse_braces): New, factoring...
3458 (copy_action, copy_guard): these two which are renamed as...
3459 (parse_action, parse_guard): these.
3460 As a voluntary consequence, using braces around guards is now
3461 mandatory.
3462
f499b062
AD
34632001-12-27 Akim Demaille <akim@epita.fr>
3464
3465 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
3466 * src/reader.c (symbol_list): `guard' and `guard_line' are new
3467 members.
3468 (symbol_list_new): Adjust.
3469 (copy_action): action_line is the first line, not the last.
3470 (copy_guard): Just as for actions, store the `action' only, not
3471 the switch/case/break flesh.
3472 Don't parse the user action that might follow the guard, let...
3473 (readgram): do it, i.e., now, there can be an action after a
3474 guard.
3475 In other words the guard is just explicitly optional.
3476 (packgram): Adjust.
3477 * src/output.c (guards_output): New.
3478 (output_parser): Call it when needed.
3479 (output): Also free the guard and attrs obstacks.
3480 * src/files.c, src/files.h (obstack_save): Remove.
3481 (output_files): Remove.
3482 As a result, if one needs the former `.act' file, using an
3483 appropriate skeleton which requires actions and guards is now
3484 required.
3485 * src/main.c (main): Adjust.
3486 * tests/semantic.at: New.
3487 * tests/regression.at: Use `input.y' as input file name.
3488 Avoid 8+3 problems by requiring input.c when the test needs the
3489 parser.
3490
d945f5cd
AD
34912001-12-27 Akim Demaille <akim@epita.fr>
3492
3493 * src/reader.c (symbol_list_new): Be sure to initialize all the
3494 fields.
3495
d200e455
AD
34962001-12-27 Akim Demaille <akim@epita.fr>
3497
3498 All the hacks using a final pseudo state are now useless.
3499
3500 * src/LR0.c (set_state_table): state_table holds exactly nstates.
3501 * src/lalr.c (nLA): New.
3502 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
3503 instead of lookaheadsp from the pseudo state (nstate + 1).
3504
f9507c28
AD
35052001-12-27 Akim Demaille <akim@epita.fr>
3506
3507 * src/output.c (action_row, token_actions): Use a state_t instead
3508 of a integer, and nlookaheads instead of the following state's
3509 lookaheadsp.
3510
065fbd27
AD
35112001-12-27 Akim Demaille <akim@epita.fr>
3512
3513 * src/conflicts.c (log_resolution, flush_shift)
3514 (resolve_sr_conflict, set_conflicts, solve_conflicts)
3515 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
3516 (conflicts_print, print_reductions): Use a state_t instead of an
3517 integer when referring to a state.
3518 As much as possible, depend upon nlookaheads, instead of the
3519 `lookaheadsp' member of the following state (since lookaheads of
3520 successive states are successive, the difference between state n + 1
3521 and n served as the number of lookaheads for state n).
3522 * src/lalr.c (add_lookback_edge): Likewise.
3523 * src/print.c (print_core, print_actions, print_state)
3524 (print_results): Likewise.
3525 * src/print_graph.c (print_core, print_actions, print_state)
3526 (print_graph): Likewise.
3527 * src/conflicts.h: Adjust.
3528
1b177bd7
AD
35292001-12-27 Akim Demaille <akim@epita.fr>
3530
3531 * src/bison.hairy: Formatting/comment changes.
3532 ANSIfy.
3533 Remove `register' indications.
3534 Add plenty of `static'.
3535
7742ddeb
AD
35362001-12-27 Akim Demaille <akim@epita.fr>
3537
3538 * src/output.c (prepare): Drop the muscle `ntbase' which
3539 duplicates ntokens.
3540 * src/bison.simple: Formatting/comment changes.
3541 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
3542 is an undocumented synonym.
3543
1fa14068
AD
35442001-12-22 Akim Demaille <akim@epita.fr>
3545
3546 * src/output.c (output_table_data): Change the prototype to use
3547 `int' for array ranges: some invocations do pass an int, not a
3548 short.
3549 Reported by Wayne Green.
3550
b9752825
AD
35512001-12-22 Akim Demaille <akim@epita.fr>
3552
3553 Some actions of web2c.y are improperly triggered.
3554 Reported by Mike Castle.
3555
3556 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
3557 * tests/regression.at (Web2c): Rename as...
3558 (Web2c Report): this.
3559 (Web2c Actions): New.
3560
776209d6
AD
35612001-12-22 Akim Demaille <akim@epita.fr>
3562
3563 Reductions in web2c.y are improperly reported.
3564 Reported by Mike Castle.
3565
3566 * src/conflicts.c (print_reductions): Fix.
3567 * tests/regression.at (Web2c): New.
3568
275fc3ad
AD
35692001-12-18 Akim Demaille <akim@epita.fr>
3570
3571 Some host fail on `assert (!"foo")', which expands to
3572 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
3573 Reported by Nelson Beebee.
3574
3575 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
3576 `#define it_succeeded 0' and `assert (it_succeeded)'.
3577
897668ee
MA
35782001-12-17 Marc Autret <autret_m@epita.fr>
3579
3580 * src/bison.simple: Don't hard code the skeleton line and filename.
3581 * src/output.c (output_parser): Rename 'line' as 'output_line'.
3582 New line counter 'skeleton_line' (skeleton-line muscle).
3583
ab3399e0
PE
35842001-12-17 Paul Eggert <eggert@twinsun.com>
3585
3586 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
3587 YYDEBUG must be defined to a nonzero value.
3588
3589 * src/bison.simple (yytname): Do not assume that the user defines
3590 YYDEBUG to a properly parenthesized expression.
3591
3877f72b
AD
35922001-12-17 Akim Demaille <akim@epita.fr>
3593
3594 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
3595 nlookaheads is a new member.
3596 Adjust all users.
3597 * src/lalr.h (nlookaheads): Remove this orphan declaration.
3598 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
3599 state.
776209d6 3600
331dbc1b
AD
36012001-12-17 Akim Demaille <akim@epita.fr>
3602
3603 * src/files.h, src/files.c (open_files, close_files): Remove.
3604 * src/main.c (main): Don't open/close files, nor invoke lex_free,
3605 let...
3606 * src/reader.c (reader): Do it.
776209d6 3607
be750e4c
AD
36082001-12-17 Akim Demaille <akim@epita.fr>
3609
3610 * src/conflicts.c (print_reductions): Formatting changes.
776209d6 3611
709ae8c6
AD
36122001-12-17 Akim Demaille <akim@epita.fr>
3613
3614 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
3615 (flush_reduce): New.
3616 (resolve_sr_conflict): Adjust.
776209d6 3617
f87685c3
AD
36182001-12-17 Akim Demaille <akim@epita.fr>
3619
3620 * src/output.c (output_obstack): Be static and rename as...
3621 (format_obstack): this, to avoid any confusion with files.c's
3622 output_obstack.
3623 * src/reader.h (muscle_obstack): Move to...
3624 * src/output.h: here, since it's defined in output.c.
3625
837491d8
AD
36262001-12-17 Akim Demaille <akim@epita.fr>
3627
3628 * src/output.c (action_row, save_column, default_goto)
3629 (sort_actions, matching_state, pack_vector): Better variable
3630 locality.
3631
796d61fb
AD
36322001-12-17 Akim Demaille <akim@epita.fr>
3633
3634 * src/output.c: Various formatting changes.
776209d6 3635
64d15509
AD
36362001-12-17 Akim Demaille <akim@epita.fr>
3637
3638 * src/files.c (output_files): Free the output_obstack.
3639 * src/main.c (main): Call print and print_graph conditionally.
3640 * src/print.c (print): Work unconditionally.
3641 * src/print_graph.c (print_graph): Work unconditionally.
3642 * src/conflicts.c (log_resolution): Output only if verbose_flag.
3643
fbc8ecb7
MA
36442001-12-16 Marc Autret <autret_m@epita.fr>
3645
3646 * src/output.c (actions_output): Fix. When we use %no-lines,
3647 there is one less line per action.
3648
f0440388
MA
36492001-12-16 Marc Autret <autret_m@epita.fr>
3650
3651 * src/bison.simple: Remove a useless #line directive.
3652 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
3653 * src/output.c (get_lines_number): New.
776209d6 3654 (output_parser): Adjust, now takes care about the lines of a
f0440388
MA
3655 output muscles.
3656 Fix line numbering.
3657 (actions_output): Computes the number of lines taken by actions.
3658 (output_master_parser): Insert new skeleton which is the name of
3659 the output parser file name.
3660
a79986b8
MA
36612001-12-15 Marc Autret <autret_m@epita.fr>
3662
3663 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
3664
4ec8e00f
MA
36652001-12-15 Marc Autret <autret_m@epita.fr>
3666
3667 * src/output.c (output_gram): Keep track of the hairy one.
3668
1a4648ff
AD
36692001-12-15 Akim Demaille <akim@epita.fr>
3670
3671 Make `make distcheck' work.
3672
3673 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
3674 system.h which uses libgettext.h.
3675
9c2c67e6
AD
36762001-12-15 Akim Demaille <akim@epita.fr>
3677
3678 * src/nullable.c (set_nullable): Useless rules must be skipped,
3679 otherwise, since we range over their symbols, we might look at a
3680 nonterminal which no longer ``exists'', i.e., it is not counted in
3681 `nvars', hence we overflow our arrays.
3682
93ede233
AD
36832001-12-15 Akim Demaille <akim@epita.fr>
3684
3685 The header can also be produced directly, without any obstack!
3686 Yahoo!
3687
3688 * src/files.c, src/files.h (defines_obstack): Remove.
3689 (compute_header_macro): Global.
3690 (defines_obstack_save): Remove.
3691 * src/reader.c (parse_union_decl): No longer output to
3692 defines_obstack: its content can be found in the `stype' muscle
3693 anyway.
3694 (output_token_translations): Merge into...
3695 (symbols_output): this.
3696 Rename as...
3697 (symbols_save): this.
3698 (reader): Adjust.
3699 * src/output.c (header_output): New.
3700 (output): Call it.
3701
2666f928
AD
37022001-12-15 Akim Demaille <akim@epita.fr>
3703
3704 * src/reader.c (parse_union_decl): Instead of handling two obstack
3705 simultaneously, use one to define the `stype' muscle, and use the
3706 value of the latter to fill defines_obstack.
3707 (copy_comment): Remove.
3708 (copy_comment2): Work for a single obstack.
3709 Rename as...
3710 (copy_comment): this.
3711
428046f8
AD
37122001-12-15 Akim Demaille <akim@epita.fr>
3713
3714 * src/lex.c, src/lex.h (xgetc): No longer static.
3715 * src/reader.c (parse_union_decl): Revamp.
3716
ea52d706
AD
37172001-12-15 Akim Demaille <akim@epita.fr>
3718
3719 Still making progress in separating Bison into (i) input, (ii)
3720 process, (iii) output: now we can directly output the parser file
3721 without using table_obstack at all.
3722
3723 * src/files.c, src/files.h (table_obstack): Bye bye.
3724 (parser_file_name): New.
3725 * src/files.c (compute_output_file_names): Compute it.
3726 * src/output.c (actions_output, output_parser)
3727 (output_master_parser): To a file instead of an obstack.
3728
3f96f4dc
AD
37292001-12-15 Akim Demaille <akim@epita.fr>
3730
3731 Attach actions to rules, instead of pre-outputting them to
3732 actions_obstack.
3733
3734 * src/gram.h (rule_t): action and action_line are new members.
3735 * src/reader.c (symbol_list): Likewise.
3736 (copy_action): Save the actions within the rule.
3737 (packgram): Save them in rule_table.
3738 * src/output.c (actions_output): New.
3739 (output_parser): Use it on `%%actions'.
3740 (output_rule_data): Don't free rule_table.
3741 (output): Do it.
3742 (prepare): Don't save the `action' muscle.
3743 * src/bison.simple: s/%%action/%%actions/.
3744
51576fb3
AD
37452001-12-15 Akim Demaille <akim@epita.fr>
3746
3747 * src/reader.c (copy_action): When --yacc, don't append a `;'
3748 to the user action: let it fail if lacking.
dee049eb 3749 Suggested by Arnold Robbins and Tom Tromey.
51576fb3 3750
2648a72d
AD
37512001-12-14 Akim Demaille <akim@epita.fr>
3752
3753 * src/lex.c (literalchar): Simply return the char you decoded, non
3754 longer mess around with obstacks and int pointers.
3755 Adjust all callers.
3756
92790e5b
AD
37572001-12-14 Akim Demaille <akim@epita.fr>
3758
3759 * src/lex.c (literalchar): Don't escape the special characters,
3760 just decode them, and keep them as char (before, eol was output as
3761 the 2 char string `\n' etc.).
3762 * src/output.c (output_rule_data): Use quotearg to output the
3763 token strings.
3764
927c1557
PE
37652001-12-13 Paul Eggert <eggert@twinsun.com>
3766
3767 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
3768 Do not infringe on the global user namespace when using C++.
3769 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
3770 All uses of `fprintf' and `stderr' changed.
3771
3772 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
3773
ed8e1f68
AD
37742001-12-13 Akim Demaille <akim@epita.fr>
3775
3776 The computation of nullable is broken: it doesn't handle empty
3777 RHS's properly.
3778
3779 * tests/torture.at (GNU AWK Grammar): New.
3780 * tests/sets.at (Nullable): New.
3781 * src/nullable.c (set_nullable): Instead of blindly looping over
3782 `ritems', loop over the rules, and then over their rhs's.
3783
3784 Work around Autotest bugs.
3785
3786 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
3787 frame, because Autotest understand lines starting with a `+' as
3788 traces from the shell. Then, they are not processed properly.
3789 Admittedly an Autotest bug, but we don't have time to wait for
3790 Autotest to catch up.
3791 * tests/regression.at (Broken Closure): Adjust to the new table
3792 frames.
3793 Move to...
3794 * tests/sets.at: here.
3795
cb581495
AD
37962001-12-13 Akim Demaille <akim@epita.fr>
3797
3798 * src/closure.c (closure): Use nrules instead of playing tricks
3799 with BITS_PER_WORD.
3800
2e729273
AD
38012001-12-13 Akim Demaille <akim@epita.fr>
3802
3803 * src/print.c (print_actions): Output the handling of `$' as the
3804 traces do: shifting the token EOF. Before EOF was treated as a
3805 nonterminal.
3806 * tests/regression.at: Adjust some tests.
3807 * src/print_graph.c (print_core): Complete the set of items via
3808 closure. The next-to-final and final states are still unsatisfying,
3809 but that's to be addressed elsewhere.
3810 No longer output the rule numbers, but do output the state number.
3811 A single loop for the shifts + gotos is enough, but picked a
3812 distinct color for each.
3813 (print_graph): Initialize and finalize closure.
3814
107f7dfb
AD
38152001-12-13 Akim Demaille <akim@epita.fr>
3816
3817 * src/reader.c (readgram): Remove dead code, an strip useless
3818 braces.
3819 (get_type): Remove, unused.
3820
9b53a24f
AD
38212001-12-12 Akim Demaille <akim@epita.fr>
3822
3823 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
3824 on that of lib/error.c.
3825
dbfb6dcd
AD
38262001-12-12 Akim Demaille <akim@epita.fr>
3827
3828 Some hosts don't like `/' in includes.
3829
3830 * src/system.h: Include libgettext.h without qualifying the path.
3831 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
3832 $(top_srcdir).
3833
c25fb648
MA
38342001-12-11 Marc Autret <autret_m@epita.fr>
3835
3836 * src/output.c (output_parser): Remove useless muscle.
3837
710ddc4f
MA
38382001-12-11 Marc Autret <autret_m@epita.fr>
3839
3840 * src/bison.simple: Remove #line just before %%epilogue. It
3841 is now handled in ...
3842 * src/reader.c (read_additionnal_code): Add the output of a
3843 #line for the epilogue.
3844
e83d80b8
MA
38452001-12-10 Marc Autret <autret_m@epita.fr>
3846
927c1557 3847 * src/reader.c (copy_definition): Re-use CPP-outed code which
e83d80b8
MA
3848 replace precedent remove.
3849 * src/bison.simple: Remove #line before %%prologue because
3850 %%input-line is wrong at this time.
3851
971d5158
MA
38522001-12-10 Marc Autret <autret_m@epita.fr>
3853
3854 * src/reader.c (symbols_output): Clean up.
927c1557 3855 * src/output.c (output_gram, output): Clean up.
971d5158 3856
5edafffd
AD
38572001-12-10 Akim Demaille <akim@epita.fr>
3858
3859 * src/lalr.c (initialize_lookaheads): New. Extracted from...
3860 * src/LR0.c (set_state_table): here.
3861 * src/lalr.c (lalr): Call it.
3862
0279f8e9
AD
38632001-12-10 Akim Demaille <akim@epita.fr>
3864
3865 * src/state.h (shifts): Remove the `number' member: shifts are
3866 attached to state, hence no longer need to be labelled with a
3867 state number.
3868
190c4f5f
AD
38692001-12-10 Akim Demaille <akim@epita.fr>
3870
3871 Now that states have a complete set of members, the linked list of
3872 shifts is useless: just fill directly the state's shifts member.
3873
3874 * src/state.h (shifts): Remove the `next' member.
3875 * src/LR0.c (first_state, last_state): Remove.
3876 Adjust the callers.
3877 (augment_automaton): Don't look for the shifts that must be added
3878 a shift on EOF: it is those of the state we looked for! But now,
3879 since shifts are attached, it is no longer needed to looking
3880 merely by its id: its number.
3881
2a73b93d
AD
38822001-12-10 Akim Demaille <akim@epita.fr>
3883
3884 * src/LR0.c (augment_automaton): Better variable locality.
3885 Remove an impossible branch: if there is a state corresponding to
3886 the start symbol being shifted, then there is shift for the start
3887 symbol from the initial state.
3888
74392f6a
AD
38892001-12-10 Akim Demaille <akim@epita.fr>
3890
3891 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
3892 only when appropriate: when insert_start_shifting_state' is not
3893 invoked.
3894 * tests/regression.at (Rule Line Numbers): Adjust.
3895
37c82725
AD
38962001-12-10 Akim Demaille <akim@epita.fr>
3897
3898 * src/LR0.c (augment_automaton): Now that all states have shifts,
3899 merge the two cases addition shifts to the initial state.
3900
6a164e0c
AD
39012001-12-10 Akim Demaille <akim@epita.fr>
3902
3903 * src/lalr.c (set_state_table): Move to...
3904 * src/LR0.c: here.
3905 * src/lalr.c (lalr): Don't call it...
3906 * src/LR0.c (generate_states): do it.
3907 * src/LR0.h (first_state): Remove, only the table is used.
3908
7215de24
AD
39092001-12-10 Akim Demaille <akim@epita.fr>
3910
3911 * src/LR0.h (first_shift, first_reduction): Remove.
3912 * src/lalr.c: Don't use first_shift: find shifts through the
3913 states.
3914
80e25d4d
AD
39152001-12-10 Akim Demaille <akim@epita.fr>
3916
3917 * src/LR0.c: Attach shifts to states as soon as they are
3918 computed.
3919 * src/lalr.c (set_state_table): Instead of assigning shifts to
3920 state, just assert that the mapping was properly done.
3921
0ab3728b
AD
39222001-12-10 Akim Demaille <akim@epita.fr>
3923
3924 * src/LR0.c (insert_start_shift): Rename as...
3925 (insert_start_shifting_state): this.
3926 (insert_eof_shifting_state, insert_accepting_state): New.
3927 (augment_automaton): Adjust.
3928 Better locality of the variables.
3929 When looking if the start_symbol is shifted from the initial
3930 state, using `while (... symbol != start_symbol ...)' sounds
3931 better than `while (... symbol < start_symbol ...)': If fail
3932 to see how the order between symbols could be relevant!
3933
78af9bbc
AD
39342001-12-10 Akim Demaille <akim@epita.fr>
3935
3936 * src/getargs.h: Don't declare `spec_name_prefix' and
3937 `spec_file_prefix', declared by src/files.h.
3938 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
3939 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
3940 * src/output.c (prepare): Adjust.
3941 * src/reader.c (symbols_output): Likewise.
3942 * src/vmsgetargs.c: Vaguely adjust, but who cares?
3943
bdef2a41
AD
39442001-12-10 Akim Demaille <akim@epita.fr>
3945
3946 * src/muscle_tab.c (muscle_init): NULL is a better default than
3947 `"0"'.
3948
3735969c
AD
39492001-12-10 Akim Demaille <akim@epita.fr>
3950
3951 * src/reader.c (reader): Calling symbols_output once is enough.
3952
49701457
AD
39532001-12-10 Akim Demaille <akim@epita.fr>
3954
3955 Now that states have a complete set of members, the linked list of
3956 reductions is useless: just fill directly the state's reductions
3957 member.
3958
3959 * src/state.h (struct reductions): Remove member `number' and
3960 `next'.
3961 * src/LR0.c (first_reduction, last_reduction): Remove.
3962 (save_reductions): Don't link the new reductions, store them in
3963 this_state.
3964 * src/lalr.c (set_state_table): No need to attach reductions to
3965 states, it's already done.
3966 * src/output.c (output_actions): No longer free the shifts, then
3967 the reductions, then the states: free all the states and their
3968 members.
3969
0edad749
AD
39702001-12-10 Akim Demaille <akim@epita.fr>
3971
3972 * src/options.c (OPTN, DRTV, BOTH): New.
3973 (option_table): Use them.
3974
0edad749
AD
3975 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
3976 the job of system.h.
3977 * src/options.c: Don't include stdio.h and xalloc.h for the same
3978 reasons.
3979
5449dd0f
AD
39802001-12-10 Akim Demaille <akim@epita.fr>
3981
3982 * src/output.c (output, prepare): Make sure the values of the
3983 muscles `action' and `prologue' are 0-terminated.
3984
a870c567
AD
39852001-12-10 Akim Demaille <akim@epita.fr>
3986
3987 Clean up GCC warnings.
3988
3989 * src/reader.c (copy_action): `buf' is not used.
3990 (parse_skel_decl): Be static.
3991 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
3992 * src/options.h (create_long_option_table): Have a real prototype.
3993 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
3994 (hash_delete_at): Return const void *.
3995 Adjust casts to preserve the const.
3996
80df8768
AD
39972001-12-10 Akim Demaille <akim@epita.fr>
3998
3999 * configure.in: Require 2.52g.
4000 M4 is not needed, but AUTOM4TE is.
4001 * m4/m4.m4: Remove.
4002 * tests/Makefile.am: Adjust.
4003
f693ad14
AD
40042001-12-10 Akim Demaille <akim@epita.fr>
4005
4006 One structure for states is enough, even though theoretically
4007 there are LR(0) states and LALR(1) states.
4008
4009 * src/lalr.h (state_t): Remove.
4010 (state_table): Be state_t **, not state_t *.
4011 * src/state.h (core, CORE_ALLOC): Rename as...
4012 (state_t, STATE_ALLOC): this.
4013 Add the LALR(1) members: shifts, reductions, errs.
4014 * src/LR0.c (state_table): Rename as...
4015 (state_hash): this, to avoid name clashes with the global
4016 `state_table'.
4017 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
4018 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
4019
74ffbcb6
AD
40202001-12-10 Akim Demaille <akim@epita.fr>
4021
4022 Bison dumps core on bash.y.
4023 Reported by Pascal Bart.
4024
4025 * src/warshall.c (bitmatrix_print): New.
4026 (TC): Use it.
4027 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
4028 j must be the outer loop.
4029 * tests/regression.at (Broken Closure): New.
4030
07708e19
AD
40312001-12-05 Akim Demaille <akim@epita.fr>
4032
4033 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
4034 its argument.
4035