]> git.saurik.com Git - bison.git/blame_incremental - ChangeLog
(output_skeleton): Use xfclose rather than fclose and ferror. xfclose
[bison.git] / ChangeLog
... / ...
CommitLineData
12002-10-24 Paul Eggert <eggert@twinsun.com>
2
3 Version 1.75a.
4
5 * tests/calc.at (_AT_DATA_CALC_Y): Remove unused strcat declaration.
6 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Include stdlib.h, since
7 we use malloc. Don't assume 'A' through 'Z' are contiguous.
8 Don't assume strdup exists; POSIX says its an XSI extension.
9 Check for buffer overflow on input.
10
112002-10-24 Akim Demaille <akim@epita.fr>
12
13 * src/output.c (output_skeleton): Don't disable M4sugar comments
14 too soon: it results in comments being expanded.
15 * data/yacc.c, data/glr.c, data/lalr1.cc: Do it right before the
16 first output.
17
182002-10-24 Akim Demaille <akim@epita.fr>
19
20 * data/yacc.c (m4_int_type): New.
21 * data/c.m4 (m4_int_type): Don't use yysigned_char, but `signed
22 char' as only yacc.c wants K&R portability.
23 * data/glr.c (yysigned_char): Remove.
24 * data/lalr1.cc: Rename the trailing b4_name as b4_parser_class_name.
25 Reported by Quoc Peyrot.
26
272002-10-23 Paul Eggert <eggert@twinsun.com>
28
29 * src/main.c (main): With --trace=time, report times even if a
30 non-fatal error occurs. Formerly, the times were reported in some
31 such cases but not in others.
32 * src/reader.c (reader): Just return if a complaint has been issued,
33 instead of exiting, so that 'main' can report times.
34
352002-10-22 Akim Demaille <akim@epita.fr>
36
37 * src/system.h: Include sys/types.
38 Reported by Bert Deknuydt.
39
402002-10-23 Paul Eggert <eggert@twinsun.com>
41
42 * configure.ac (AC_PROG_LEX): Use instead of AM_PROG_LEX.
43 Suggested by Art Haas.
44
452002-10-22 Paul Eggert <eggert@twinsun.com>
46
47 * src/complain.c (exit) [! (STDC_HEADERS || _LIBC)]: Remove exit
48 decl; not needed any more.
49 * src/main.c (main): Use return to exit, undoing yesterday's change.
50 The last OS that we could find where this wouldn't work is
51 SunOS 3.5, and that's too old to worry about now.
52
53 * data/glr.c (struct yyltype): Define members even when not
54 doing locations. This is more consistent with yacc.c, and it
55 works around the following bug reports:
56 http://mail.gnu.org/pipermail/bug-bison/2002-October/001764.html
57 http://mail.gnu.org/pipermail/bug-bison/2002-October/001769.html
58 and I hope it also fixes this bug report:
59 http://mail.gnu.org/pipermail/bug-bison/2002-October/001748.html
60
61 * doc/bison.texinfo: Minor spelling and typographical fixes. Use
62 @acronym consistently. Standardize on "Yacc" instead of "YACC",
63 "Algol" instead of "ALGOL". Give a bit more history about BNF.
64
652002-10-22 Akim Demaille <akim@epita.fr>
66
67 * data/README: New.
68
692002-10-21 Paul Eggert <eggert@twinsun.com>
70
71 Be consistent about 'bool'; the old code used an enum in one
72 module and an int in another, and this violates the C standard.
73 * m4/stdbool.m4: New file, from coreutils 4.5.3.
74 * configure.ac (AC_HEADER_STDBOOL): Add.
75 * m4/Makefile.am (EXTRA_DIST): Add stdbool.m4.
76 * src/muscle_tab.c (hash_compare_muscles): (a ? FALSE : TRUE) -> (! a)
77 * src/symtab.c (hash_compare_symbol_t): Likewise.
78 * src/system.h (bool, false, true): Use a definition consistent
79 with ../lib/hash.c. All uses changed.
80
81 * src/complain.c (warning_issued): Renamed from warn_message_count,
82 so that we needn't worry about integer overflow (!).
83 Now of type bool. All uses changed.
84 (complaint_issued): Renamed from complain_message_count; likewise.
85
86 * src/main.c (main): Use exit to exit with failure.
87
88 * src/complain.c (fatal_at, fatal): Use EXIT_FAILURE and EXIT_SUCCESS
89 rather than 1 and 0.
90 * src/main.c (main): Likewise.
91 * src/getargs.c (getargs): Likewise.
92 * src/reader.c (reader): Likewise.
93
94 * src/getarg.c (getargs): Remove duplicate code for
95 "Try `bison --help'".
96
97 * src/files.c (xfopen, xfclose): Use EXIT_FAILURE rather than 2.
98 What was that "2" for?
99
100 * src/complain.h (fatal, fatal_at): Add __attribute__((__noreturn__)).
101 * src/getargs.c (usage): Likewise.
102
103 * src/getargs.c (getargs): When there are too few operands, report
104 the last one. When there are too many, report the first extra
105 one. This is how diffutils does it.
106
1072002-10-20 Paul Eggert <eggert@twinsun.com>
108
109 Remove K&R vestiges.
110 * configure.ac (AC_C_CONST, AM_C_PROTOTYPES): Remove.
111 * src/complain.c (VA_START): Remove. Assume prototypes.
112 (vfprintf) [! (HAVE_VPRINTF || defined vfprintf)]: New macro.
113 (private_strerror, warn_at, warn, complain_at, complain, fatal_at,
114 fatal): Assume prototypes.
115 * src/complain.h: Assume prototypes.
116 * src/system.h (PARAMS): Remove.
117 Include <limits.h> unconditionally, since it's guaranteeed even
118 for a freestanding C89 compiler.
119 (SHRT_MIN, SHRT_MAX): Remove, since C89 guarantees them.
120 * src/vmsgetargs.c (getargs, cli_present, cli_get_value): Prototype.
121
1222002-10-20 Akim Demaille <akim@epita.fr>
123
124 * src/muscle_tab.c (muscle_grow): Remove trailing debugging code.
125 * data/glr.c (YY_USER_FORMALS, YY_USER_ARGS): New.
126 (yyuserAction, yydoAction, yyglrReduce, yyresolveValue)
127 (yyresolveStates, yyresolveAction, yyresolveStack)
128 (yyprocessOneStack): Use them.
129 (yy_reduce_print): New.
130 * tests/calc.at (_AT_DATA_CALC_Y): Exercise %parse-param.
131
1322002-10-20 Akim Demaille <akim@epita.fr>
133
134 * data/c.m4 (b4_c_ansi_args): Recognize functions with no
135 arguments and output `void'.
136 (b4_c_function): Rename as...
137 (b4_c_function_def): this.
138 (b4_c_function_decl, b4_c_ansi_function_def)
139 (b4_c_ansi_function_decl): New.
140 Change the interpretation of the arguments: before `int, foo', now
141 `int foo, foo'.
142 * data/yacc.c (yyparse): Prototype and define thanks to these.
143 Adjust b4_c_function_def uses.
144 * data/glr.c (yyparse): Likewise, but ANSI only.
145
1462002-10-20 Akim Demaille <akim@epita.fr>
147
148 * src/output.c (prepare): Move the definition of `tokens_number',
149 `nterms_number', `undef_token_number', `user_token_number_max'
150 to...
151 (prepare_tokens): Here.
152 (prepare_tokens): Rename as...
153 (prepare_symbols): this.
154 (prepare): Move the definition of `rules_number' to...
155 (prepare_rules): here.
156 (prepare): Move the definition of `last', `final_state_number',
157 `states_number' to...
158 (prepare_states): here.
159 * data/yacc.c, data/lalr1.cc, data/glr.c: Normalize `>' into `<'.
160
1612002-10-20 Akim Demaille <akim@epita.fr>
162
163 * src/tables.h, src/tables.c, src/output.c: Comment changes.
164
1652002-10-20 Akim Demaille <akim@epita.fr>
166
167 * data/yacc.c, data/yacc.c (b4_location_if, b4_pure_if): Move to...
168 * data/c.m4: here.
169
1702002-10-20 Akim Demaille <akim@epita.fr>
171
172 * src/output.c (prepare): Use MUSCLE_INSERT_STRING.
173 * src/muscle_tab.c (muscle_pair_list_grow): Rename `val as
174 `pair'.
175 (muscle_init): Move the `b4_ltype', `b4_maxdepth', `b4_initdepth',
176 `name' to...
177 * data/glr.c, data/lalr1.cc, data/yacc.c (b4_location_type)
178 (b4_stack_depth_init, b4_stack_depth_max, b4_parser_class_name):
179 These.
180
1812002-10-19 Paul Eggert <eggert@twinsun.com>
182
183 Do not create a temporary file, as that involves security and
184 cleanup headaches. Instead, use a pair of pipes.
185 Derived from a suggestion by Florian Krohm.
186 * lib/subpipe.c, lib/subpipe.h, m4/subpipe.m4: New files.
187 * lib/mkstemp.c, lib/readpipe.c, lib/tempname.c, m4/mkstemp.m4: Remove.
188 * configure.ac (UTILS_FUNC_MKSTEMP, jm_PREREQ_TEMPNAME): Remove.
189 (BISON_PREREQ_SUBPIPE): Add.
190 * lib/Makefile.am (libbison_a_SOURCES): Remove readpipe.c.
191 Add subpipe.h, subpipe.c.
192 * m4/Makefile.am (EXTRA_DIST): Remove mkstemp.m4. Add subpipe.m4.
193 * po/POTFILES.in: Add lib/subpipe.c.
194 * src/output.c: Include "subpipe.h".
195 (m4_invoke): Remove decl.
196 (scan_skel): New decl.
197 (output_skeleton): Use pipe rather than temporary file for m4 input.
198 Check that m4sugar.m4 is readable, to avoid deadlock.
199 Check for pipe I/O error.
200 * src/scan-skel.l (readpipe): Remove decl.
201 (scan_skel): New function, to be used in place of m4_invoke.
202 Read from stream rather than file.
203
204 * lib/timevar.c (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Do not cast to
205 float, as this generates a warning on Solaris 8 + GCC 3.2 with
206 --enable-gcc-warnings. Instead, divide into 1.0 rather than 1;
207 this generates a more-accurate value anyway.
208
209 * lib/timevar.c (timervar_accumulate): Rename locals to
210 avoid confusion with similarly-named more-global.
211 * src/muscle_tab.c (muscle_pair_list_grow): Likewise.
212
213 * src/output.c (prepare): Use xstrdup to convert char const *
214 to char *, to avoid GCC warning.
215
2162002-10-19 Akim Demaille <akim@epita.fr>
217
218 * tests/calc.at (_AT_DATA_CALC_Y): Define VAL, LOC, LEX_FORMALS,
219 LEX_PRE_FORMALS, LEX_ARGS, LEX_PRE_ARGS, USE_LEX_ARGS.
220 Use them to have `calc.y' ready for %pure-parser.
221 * data/yacc.c (YYLEX): Pass a yylex return type to
222 b4_c_function_call.
223
2242002-10-19 Akim Demaille <akim@epita.fr>
225
226 Prototype support of %lex-param and %parse-param.
227
228 * src/parse-gram.y: Add the definition of the %lex-param and
229 %parse-param tokens, plus their rules.
230 Drop the `_' version of %glr-parser.
231 Add the "," token.
232 * src/scan-gram.l (INITIAL): Scan them.
233 * src/muscle_tab.c: Comment changes.
234 (muscle_insert, muscle_find): Rename `pair' as `probe'.
235 * src/muscle_tab.h (MUSCLE_INSERT_PREFIX): Remove unused.
236 (muscle_entry_s): The `value' member is no longer const.
237 Adjust all dependencies.
238 * src/muscle_tab.c (muscle_init): Adjust: use
239 MUSCLE_INSERT_STRING.
240 Initialize the obstack earlier.
241 * src/muscle_tab.h, src/muscle_tab.c (muscle_grow)
242 (muscle_pair_list_grow): New.
243 * data/c.m4 (b4_c_function_call, b4_c_args): New.
244 * data/yacc.c (YYLEX): Use b4_c_function_call to honor %lex-param.
245 * tests/calc.at: Use %locations, not --locations.
246 (AT_CHECK_CALC_GLR): Use %glr-parser, not %glr_parser.
247
2482002-10-19 Akim Demaille <akim@epita.fr>
249
250 * src/getargs.c (usage): Take status as argument and exit
251 accordingly.
252 Report the traditional `Try ... --help' message when status != 0.
253 (usage, version): Don't take a FILE * as arg, it is pointless.
254 (getargs): When there is an incorrect number of arguments, make it
255 an error, and report it GNUlically thanks to `usage ()'.
256
2572002-10-18 Paul Eggert <eggert@twinsun.com>
258
259 * data/glr.c (yyreportParseError): Don't assume that sprintf
260 yields the length of the printed string, as this is not true
261 on SunOS 4.1.4. Reported by Peter Klein.
262
263 * tests/calc.at (_AT_DATA_CALC_Y): #undef memcmp and realloc.
264 * tests/conflicts.at (%nonassoc and eof): Likewise.
265 Fixes SunOS 4.1.4 test failure reported by Peter Klein.
266
2672002-10-17 Akim Demaille <akim@epita.fr>
268
269 * src/getargs.h (trace_e): Add trace_scan, and trace_parse.
270 * src/getargs.c (trace_types, trace_args): Adjust.
271 * src/reader.c (grammar_current_rule_prec_set)
272 (grammar_current_rule_dprec_set, grammar_current_rule_merge_set):
273 Standardize error messages.
274 And s/@prec/%prec/!
275 (reader): Use trace_flag to enable scanner/parser debugging,
276 instead of an adhoc scheme.
277 * src/scan-gram.l: Remove trailing debugging code.
278
2792002-10-16 Paul Eggert <eggert@twinsun.com>
280
281 * src/muscle_tab.h (MUSCLE_TAB_H_): Was misspelled as
282 MUSCLE_TAB_H.
283
284 * NEWS: Officially drop support for building Bison with K&R C,
285 since it didn't work anyway and it's not worth worrying about.
286 * Makefile.maint (wget_files): Remove ansi2knr.c.
287 (ansi2knr.c-url_prefix): Remove.
288 * lib/.cvsignore: Remove ansi2knr, ansi2knr.*.
289 * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove.
290 * src/Makefile.am (AUTOMAKE_OPTIONS): Remove.
291
2922002-10-15 Paul Eggert <eggert@twinsun.com>
293
294 Stop using the "enum_" trick for K&R-style function definitions;
295 it confused me, and I was the author! Instead, assume that people
296 who want to use K&R C compilers (when using these modules in GCC,
297 perhaps?) will run ansi2knr.
298
299 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): Remove.
300 All uses of "enum_" changed to "enum ".
301 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
302 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
303
304 * lib/abitset.c (abitset_and, abitset_and_cmp, abitset_and_or,
305 abitset_and_or_cmp, abitset_andn, abitset_andn_cmp,
306 abitset_andn_or, abitset_andn_or_cmp, abitset_bytes, abitset_copy,
307 abitset_copy1, abitset_disjoint_p, abitset_empty_p,
308 abitset_equal_p, abitset_init, abitset_list, abitset_list_reverse,
309 abitset_not, abitset_ones, abitset_or, abitset_or_and,
310 abitset_or_and_cmp, abitset_or_cmp, abitset_reset, abitset_set,
311 abitset_size, abitset_small_list, abitset_subset_p, abitset_test,
312 abitset_unused_clear, abitset_xor, abitset_xor_cmp, abitset_zero):
313 Use function prototypes; this removes the need for declaring
314 static functions simply to provide their prototypes.
315 * lib/bitset.c (bitset_alloc, bitset_and_or_, bitset_and_or_cmp_,
316 bitset_andn_or_, bitset_andn_or_cmp_, bitset_bytes, bitset_copy_,
317 bitset_count_, bitset_create, bitset_dump, bitset_first,
318 bitset_free, bitset_init, bitset_last, bitset_next,
319 bitset_obstack_alloc, bitset_obstack_free, bitset_only_set_p,
320 bitset_op4_cmp, bitset_or_and_, bitset_or_and_cmp_, bitset_prev,
321 bitset_print, bitset_release_memory, bitset_toggle_,
322 bitset_type_choose, bitset_type_get, bitset_type_name_get,
323 debug_bitset): Likewise.
324 * lib/bitset.h (bitset_set, bitset_reset, bitset_test): Likewise.
325 * lib/bitset_stats.c (bitset_log_histogram_print,
326 bitset_percent_histogram_print, bitset_stats_and,
327 bitset_stats_and_cmp, bitset_stats_and_or,
328 bitset_stats_and_or_cmp, bitset_stats_andn, bitset_stats_andn_cmp,
329 bitset_stats_andn_or, bitset_stats_andn_or_cmp, bitset_stats_copy,
330 bitset_stats_count, bitset_stats_disable, bitset_stats_disjoint_p,
331 bitset_stats_dump, bitset_stats_empty_p, bitset_stats_enable,
332 bitset_stats_equal_p, bitset_stats_free, bitset_stats_init,
333 bitset_stats_list, bitset_stats_list_reverse, bitset_stats_not,
334 bitset_stats_ones, bitset_stats_or, bitset_stats_or_and,
335 bitset_stats_or_and_cmp, bitset_stats_or_cmp, bitset_stats_print,
336 bitset_stats_print_1, bitset_stats_read, bitset_stats_reset,
337 bitset_stats_set, bitset_stats_size, bitset_stats_subset_p,
338 bitset_stats_test, bitset_stats_toggle, bitset_stats_type_get,
339 bitset_stats_write, bitset_stats_xor, bitset_stats_xor_cmp,
340 bitset_stats_zero): Likewise.
341 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
342 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
343 bitsetv_dump, debug_bitsetv): Likewise.
344 * lib/ebitset.c (ebitset_and, ebitset_and_cmp, ebitset_andn,
345 ebitset_andn_cmp, ebitset_bytes, ebitset_copy, ebitset_copy_,
346 ebitset_copy_cmp, ebitset_disjoint_p, ebitset_elt_add,
347 ebitset_elt_alloc, ebitset_elt_calloc, ebitset_elt_find,
348 ebitset_elt_free, ebitset_elt_last, ebitset_elt_remove,
349 ebitset_elt_zero_p, ebitset_elts_grow, ebitset_empty_p,
350 ebitset_equal_p, ebitset_free, ebitset_init, ebitset_list,
351 ebitset_list_reverse, ebitset_not, ebitset_ones, ebitset_op3_cmp,
352 ebitset_or, ebitset_or_cmp, ebitset_release_memory, ebitset_reset,
353 ebitset_set, ebitset_size, ebitset_subset_p, ebitset_test,
354 ebitset_weed, ebitset_xor, ebitset_xor_cmp, ebitset_zero):
355 Likewise.
356 * lib/lbitset.c (debug_lbitset, lbitset_and, lbitset_and_cmp,
357 lbitset_andn, lbitset_andn_cmp, lbitset_bytes, lbitset_copy,
358 lbitset_copy_cmp, lbitset_disjoint_p, lbitset_elt_alloc,
359 lbitset_elt_calloc, lbitset_elt_find, lbitset_elt_free,
360 lbitset_elt_link, lbitset_elt_unlink, lbitset_elt_zero_p,
361 lbitset_empty_p, lbitset_equal_p, lbitset_free, lbitset_init,
362 lbitset_list, lbitset_list_reverse, lbitset_not, lbitset_ones,
363 lbitset_op3_cmp, lbitset_or, lbitset_or_cmp, lbitset_prune,
364 lbitset_release_memory, lbitset_reset, lbitset_set, lbitset_size,
365 lbitset_subset_p, lbitset_test, lbitset_weed, lbitset_xor,
366 lbitset_xor_cmp, lbitset_zero): Likewise.
367
3682002-10-14 Akim Demaille <akim@epita.fr>
369
370 Version 1.75.
371
3722002-10-14 Akim Demaille <akim@epita.fr>
373
374 * tests/Makefile.am (maintainer-check-posix): New.
375
3762002-10-14 Akim Demaille <akim@epita.fr>
377
378 * data/glr.c [YYDEBUG] (YYLEFTMOST_STATE): Initialize the yyloc
379 member.
380
3812002-10-14 Akim Demaille <akim@epita.fr>
382
383 * src/tables.c (table_ninf_remap): base -> tab.
384 Reported by Matt Rosing.
385
3862002-10-14 Paul Eggert <eggert@twinsun.com>
387
388 * tests/action.at, tests/calc.at, tests/conflicts.at,
389 tests/cxx-type.at, tests/headers.at, tests/input.at,
390 tests/regression.at, tests/synclines.at, tests/torture.at:
391 Say "bison -o foo.c foo.y", not "bison foo.y -o foo.c",
392 so that the tests still work even if POSIXLY_CORRECT is set.
393 * doc/bison.texinfo (Rpcalc Compile, Invocation): Likewise.
394
395 * data/c.m4 (b4_int_type): Use yysigned_char instead of signed char,
396 for portability to K&R hosts. Fix typo: signed char is guaranteed
397 only to 127, not to 128.
398 * data/glr.c (yysigned_char): New type.
399 * data/yacc.c (yysigned_char): Likewise.
400 * tests/regression.at (Web2c Actions): signed char -> yysigned_char.
401
4022002-10-13 Paul Eggert <eggert@twinsun.com>
403
404 * data/yacc.c (yyparse): Rewrite to avoid "comparison is always
405 true due to limited range of data type" warning from GCC.
406
407 * data/c.m4 (b4_token_defines): Protect against double-inclusion
408 by wrapping enum yytokentype's definition inside #ifndef
409 YYTOKENTYPE. This undoes a bug I introduced on 2002-10-12.
410
4112002-10-13 Akim Demaille <akim@epita.fr>
412
413 * data/glr.c (yyglrShiftDefer, yyaddDeferredAction, yydoAction):
414 Un yy- yyrhs to avoid the name clash with the global YYRHS.
415
4162002-10-13 Akim Demaille <akim@epita.fr>
417
418 * Makefile.maint: Update from Autoconf 2.54.
419 * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Remove, shipped with 2.54.
420
4212002-10-13 Akim Demaille <akim@epita.fr>
422
423 * src/print.c (print_state): Separate the list of solved conflicts
424 from the other items.
425 * tests/conflicts.at (Resolved SR Conflicts): Adjust.
426
4272002-10-13 Akim Demaille <akim@epita.fr>
428
429 Let nondeterministic skeletons be usable with deterministic
430 tables.
431
432 With the patch, GAWK compiled by GCC without -O2 passes its test
433 suite using a GLR parser driven by LALR tables. It fails with -O2
434 because `struct stat' gives two different answers on my machine:
435 88 (definition of an auto var) and later 96 (memset on this var).
436 Hence the stack is badly corrumpted. The headers inclusion is to
437 blame: if I move the awk.h inclusion before GLR's system header
438 inclusion, the two struct stat have the same size.
439
440 * src/tables.c (pack_table): Always create conflict_table.
441 (token_actions): Always create conflict_list.
442 * data/glr.c (YYFLAG): Remove, unused.
443
4442002-10-13 Akim Demaille <akim@epita.fr>
445
446 * configure.ac (AC_GNU_SOURCE): Use it instead of hand written code.
447 (O0FLAGS): New.
448 (VALGRIND, GXX): New.
449 * tests/atlocal.in (CFLAGS): Use O0FLAGS.
450 * tests/bison.in: Run $PREBISON a pre-command.
451 * tests/Makefile.am (maintainer-check, maintainer-check-valgrind)
452 (maintainer-check-g++): New.
453 * Makefile.am (maintainer-check): New.
454
4552002-10-13 Akim Demaille <akim@epita.fr>
456
457 * data/glr.c: Formatting changes.
458 Tweak some trace messages to match yacc.c's.
459
4602002-10-13 Akim Demaille <akim@epita.fr>
461
462 GLR parsers sometimes raise parse errors instead of performing the
463 default reduction.
464 Reported by Charles-Henry de Boysson.
465
466 * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't
467 check the length of the traces when %glr.
468 (_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from
469 GLR's traces.
470 (AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New.
471 Test GLR parsers.
472 * data/glr.c (YYLEFTMOST_STATE): Fix its value.
473 (yyltype): Remove the yy prefix from the member names.
474 (yytable): Complete its comment.
475 (yygetLRActions): Map error action number from YYTABLE from
476 YYTABLE_NINF to 0.
477 (yyisErrorAction): No longer compare YYACTION to YYPACT_NINF
478 (which was a bug: it should have been YYTABEL_NINF, and yet it was
479 not satisfying as we could compare an YYACTION computed from
480 YYDEFACT to YYTABLE_NINF although they are unrelated): 0 is the
481 only value for error actions.
482 (yyreportParseError): In verbose parse error messages, don't issue
483 `error' in the list of expected tokens.
484 * data/yacc.c (yyparse) <yybackup>: Rewrite the decoding of the
485 next action to perform to match glr.c's decoding.
486 (yytable): Complete its comment.
487
4882002-10-13 Paul Eggert <eggert@twinsun.com>
489
490 Fix problem reported by Henrik Grubbstroem in
491 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001670.html>:
492 "nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected,
493 because the Bison parser reads the second action before reducing
494 the first one.
495 * src/scan-gram.l (rule_length): New static var.
496 Use it to keep track of the rule length in the scanner, since
497 we can't expect the parser to be in lock-step sync with the scanner.
498 (handle_action_dollar, handle_action_at): Use this var.
499 * tests/actions.at (Exotic Dollars): Test for the problem.
500
5012002-10-12 Paul Eggert <eggert@twinsun.com>
502
503 * lib/timevar.c [! IN_GCC && HAVE_SYS_TIME_H]: Include <sys/time.h>.
504 * m4/timevar.m4 (BISON_PREREQ_TIMEVAR): Check for <sys/time.h>.
505 Include <sys/time.h> when checking for clock_t and struct tms.
506 Use same include order as source.
507 This is for the SunOS 4.1.4 porting bug reported by Peter Klein in
508 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001674.html>.
509
510 * lib/timevar.c: Update copyright date and clarify comments.
511 (get_time) [IN_GCC]: Keep the GCC version for reference.
512
513 * lib/timevar.c, lib/timevar.h, lib/timevar.def: Import
514 GCC version as of today, then merge Bison's changes.
515 Change "GCC" to "Bison" in copyright notice. timevar.def's
516 author is Akim, so change that too.
517
518 * src/reader.c (grammar_current_rule_check):
519 Don't worry about the default action if $$ is untyped.
520 Prevents bogus warnings reported by Jim Gifford in
521 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001673.html>.
522
523 * data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE.
524 * data/glr.c, data/lalr1.cc, data/yacc.c:
525 Output token definitions before the first part of user declarations.
526 Fixes compatibility problem reported by Jim Gifford for kbd in
527 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001672.html>.
528
5292002-10-11 Paul Eggert <eggert@twinsun.com>
530
531 * data/yacc.c (yyreport_parse_error): Remove, putting its body into...
532 (yyparse): here. This undoes some of the 2002-07-25 change.
533 Compatibility problem reported by Ralf S. Engelschall with
534 OSSP cfg <http://www.ossp.org/pkg/lib/cfg/>.
535
5362002-10-11 Akim Demaille <akim@epita.fr>
537
538 * tests/regression.at Characters Escapes): New.
539 * src/scan-gram.l (SC_ESCAPED_CHARACTER): Accept \' in strings and
540 characters.
541 Reported by Jan Nieuwenhuizen.
542
5432002-10-11 Akim Demaille <akim@epita.fr>
544
545 * po/id.po: New.
546
5472002-10-10 Paul Eggert <eggert@twinsun.com>
548
549 Portability fixes for bitsets; this also avoids several GCC
550 warnings.
551
552 * lib/abitset.c: Include <stddef.h>, for offsetof.
553 * lib/lbitset.c: Likewise.
554
555 * lib/abitset.c (abitset_bytes): Return a size that is aligned
556 properly for vectors of objects. Do not assume that adding a
557 header size to a multiple of a word size yields a value that is
558 properly aligned for the whole union.
559 * lib/bitsetv.c (bitsetv_alloc): Likewise.
560
561 * lib/bitset_stats.c (bitset_stats_bytes): Adjust to new,
562 unique names for structures.
563 * lib/ebitset.c (ebitset_bytes): Likewise.
564 * lib/lbitset.c (lbitset_bytes): Likewise.
565
566 * lib/abitset.c (abitset_ones, abitset_zero, abitset_empty_p,
567 abitset_copy1, abitset_not, abitset_equal_p, abitset_subset_p,
568 abitset_disjoint_p, abitset_and, abitset_and_cmp, abitset_andn,
569 abitset_andn_cmp, abitset_or, abitset_or_cmp, abitset_xor,
570 abitset_xor_cmp, abitset_and_or, abitset_and_or_cmp,
571 abitset_andn_or, abitset_andn_or_cmp, abitset_or_and,
572 abitset_or_and_cmp, abitset_copy): Supply prototype decls,
573 to improve the type-checking that GCC can do.
574 * lib/bitset.c (bitset_op4_cmp): Likewise.
575 * lib/bitset_stats.c (bitset_stats_count,
576 bitset_stats_empty_p, bitset_stats_ones, bitset_stats_zero,
577 bitset_stats_copy, bitset_stats_disjoint_p,
578 bitset_stats_equal_p, bitset_stats_not, bitset_stats_subset_p,
579 bitset_stats_and, bitset_stats_and_cmp, bitset_stats_andn,
580 bitset_stats_andn_cmp, bitset_stats_or, bitset_stats_or_cmp,
581 bitset_stats_xor, bitset_stats_xor_cmp, bitset_stats_and_or,
582 bitset_stats_and_or_cmp, bitset_stats_andn_or,
583 bitset_stats_andn_or_cmp, bitset_stats_or_and,
584 bitset_stats_or_and_cmp): Likewise.
585 * lib/lbitset.c (lbitset_and, lbitset_and_cmp, lbitset_andn,
586 lbitset_andn_cmp, lbitset_or, lbitset_or_cmp, lbitset_xor,
587 lbitset_xor_cmp, lbitset_empty_p, lbitset_ones, lbitset_not,
588 lbitset_subset_p, lbitset_disjoint_p, debug_lbitset): Likewise.
589
590 * lib/abitset.h: Include bitset.h, not bbitset.h.
591 * lib/ebitset.h: Likewise.
592 * lib/lbitset.h: Likewise.
593
594 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): New types.
595 All instances of parameters of type enum bitset_opts are now of
596 type enum_bitset_opts, to conform to the C Standard, and similarly
597 for enum_bitset_type.
598 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
599 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
600
601 Do not use "struct bitset_struct" to mean different things in
602 different modules. Not only is this confusing, it violates
603 the C Standard, which requires that structure types in different
604 modules must be compatible if one is to be passed to the other.
605 * lib/bbitset.h (bitset): Now points to a union, not to a struct.
606 All instances of "struct bitset_struct *" replaced with "bitset".
607 * lib/bitset.h (struct bitset_struct): Remove, replacing with....
608 (union bitset_union, struct abitset_struct, struct ebitset_struct,
609 struct lbitset_struct, struct bitset_stats_struct): New types.
610 All uses of struct bitset_struct changed to union bitset_union,
611 etc.
612 * lib/abitset.c (struct abitset_struct, abitset,
613 struct bitset_struct): Remove.
614 * lib/bitset_stats.c (struct bitset_stats_struct, bitset_stats,
615 struct bitset_struct): Remove.
616 * lib/ebitset.c (struct ebitset_struct, ebitset, struct
617 bitset_struct): Remove.
618 * lib/lbitset.c (struct lbitset_struct, lbitset, bitset_struct):
619 Likewise.
620
621 Do not call a function of type T using a call that assumes the
622 function is of a different type U. Standard C requires that a
623 function must be called with a type that is compatible with its
624 definition.
625 * lib/bbitset.h (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
626 New decls.
627 * lib/bitset.c (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
628 New functions.
629 * lib/ebitset.c (PFV): Remove.
630 * lib/lbitset.c (PFV): Likewise.
631 * lib/ebitset.c (ebitset_and, ebitset_andn, ebitset_or,
632 ebitset_xor, ebitset_copy, ebitset_ones, ebitset_empty_p): New
633 decls.
634 (ebitset_and, ebitset_andn, ebitset_or, ebitset_xor): New functions.
635 (ebitset_vtable): Use them.
636 * lib/lbitset.c (lbitset_and, lbitset_andn, lbitset_or,
637 lbitset_xor): New functions.
638 (lbitset_vtable): Use them.
639
640 * lib/bitset.h (bitset_next, bitset_prev, bitset_only_set_p):
641 Declare.
642
643 * lib/bitsetv.c (bitsetv_alloc): Add a cast to (void *) to avoid a
644 GCC warning.
645 * lib/lbitset.c (LBITSET_CURRENT1): Likewise.
646 Use offsetof, for simplicity.
647
6482002-10-06 Paul Eggert <eggert@twinsun.com>
649
650 * lib/bitset.h (bitset_reset): Do not assume that bitset_word is
651 the same width as int. This reapplies a hunk of the 2002-08-12 patch
652 <http://mail.gnu.org/pipermail/bison-patches/2002-August/001111.html>,
653 which was inadvertently undone by the 2002-09-30 patch.
654 * lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is
655 the same width as int.
656
6572002-10-04 Paul Eggert <eggert@twinsun.com>
658
659 Version 1.50.
660
661 * configure.ac (AC_INIT), NEWS: Increment version number.
662
663 * doc/bison.texinfo: Minor spelling, grammar, and white space
664 fixes.
665 (Symbols): Mention that any negative value returned from yylex
666 signifies end-of-input. Warn about negative chars. Mention
667 the portable Standard C character set.
668
669 The GNU coding standard says CFLAGS and YFLAGS are reserved
670 for the installer to set.
671 * lib/Makefile.am (AM_CFLAGS): Renamed from CFLAGS.
672 * src/Makefile.am (AM_CFLAGS): Likewise.
673 (AM_YFLAGS): Renamed from YFLAGS.
674
675 Fix some MAX and MIN problems.
676 * src/gram.h (ITEM_NUMBER_MIN): MIN_MAX -> INT_MIN.
677 * src/lalr.h (GOTO_NUMBER_MAX): INT_MAX -> SHRT_MAX.
678 * src/symtab.h (SYMBOL_NUMBER_MAX): New macro.
679 * src/reader.c (reader): Use it.
680
681 * tests/regression.at (Braces parsing): Use grep, not fgrep, as
682 POSIX 1003.1-2001 has removed fgrep.
683
6842002-10-04 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
685
686 * lib/bbitset.h (BITSET_WINDEX_MAX): Redefine so that it cannot be
687 interpreted as signed.
688 * lib/ebitset.c (ebitset_list): Fix bug.
689
6902002-10-01 Paul Eggert <eggert@twinsun.com>
691
692 More fixes for 64-bit hosts and large bitsets.
693
694 * lib/abitset.c (struct abitset_struct.n_bits, abitset_small_list,
695 abitset_size, abitset_list, abitset_list_reverse, abitset_list):
696 Use bitset_bindex, not int or unsigned int or size_t, to count bits.
697 * lib/bbitset.h (struct bitset_vtable.size, struct bitset_vtable.count,
698 struct bitset_vtable.list, struct bitset_vtable.list_reverse,
699 bitset_count_, bitset_next, bitset_prev, bitset_first, bitset_last,
700 bitset_count_): Likewise.
701 * lib/bitset.h (bitset_iterator.num, bitset_iterator.i,
702 bitset_first, bitset_last): Likewise.
703 * lib/bitset_stats.c (bitset_stats_size, bitset_stats_list,
704 bitset_stats_list_reverse, bitset_stats_size,
705 bitset_stats_count, bitset_stats_list, bitset_stat_list_reverse):
706 Likewise.
707 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
708 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
709 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
710 bitsetv_reflexive_transitive_closure): Likewise.
711 * lib/bitsetv.h (bitsetv_alloc, bitsetv_create): Likewise.
712 * lib/ebitset.c (ebitset_size, ebitset_list, ebitset_list_reverse):
713 Likewise.
714 * lib/lbitset.c (lbitset_size, lbitset_list, lbitset_list_merge):
715 Likewise.
716
717 * lib/abitset.c (abitset_ones, abitset_zero, abitset_bytes):
718 Use size_t, not unsigned int, to count bytes.
719 * lib/abitset.h (abitset_bytes): Likewise.
720 * lib/bitset.c (bitset_bytes, bitset_alloc, bitset_obstack_alloc):
721 Likewise.
722 * lib/bitset.h (bitset_bytes): Likewise.
723 * lib/bitset_stats.c (bitset_stats_bytes, bitset_stats_init): Likewise.
724 * lib/bitset_stats.h (bitset_stats_bytes): Likewise.
725 * lib/bitsetv.c (bitsetv_alloc): Likewise.
726 * lib/ebitset.c (ebitset_bytes): Likewise.
727 * lib/ebitset.h (ebitset_bytes): Likewise.
728 * lib/lbitset.c (lbitset_bytes): Likewise.
729 * lib/lbitset.h (lbitset_bytes): Likewise.
730
731 * lib/abitset.c (abitset_empty_p, abitset_not, abitset_equal_p,
732 abitset_subset_p, abitset_disjoint_p, abitset_and,
733 abitset_and_cmp, abitset_andn, abitset_andn_cmp, abitset_or,
734 abitset_or_cmp, abitset_xor, abitset_xor_cmp, abitset_and_or,
735 abitset_and_or_cmp, abitset_andn_or, abitset_andn_or_cmp,
736 abitset_or_and, abitset_or_and_cmp):
737 Use bitset_windex instead of unsigned int.
738 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
739 * lib/ebitset.c (struct ebitset_struct.size, ebitset_elts_grow,
740 ebitset_elt_add, ebitset_elt_remove, ebitset_weed,
741 ebitset_elt_find, ebitset_list_reverse, ebitset_list, ebitset_init):
742 Likewise.
743 * lib/lbitset.c (lbitset_ones, lbitset_not): Likewise.
744
745 * lib/bitset.c (bitset_print):
746 Use proper printf formats for widths of integer types.
747 * lib/bitset_stats.c (bitset_percent_histogram_print,
748 bitset_log_histogram_print, bitset_stats_print_1): Likewise.
749 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
750 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
751 * lib/lbitset.c (lbitset_bytes): Likewise.
752
753 * lib/bbitset.h (BITSET_BINDEX_MAX, BITSET_WINDEX_MAX,
754 BITSET_SIZE_MAX): New macros.
755 (BITSET_INDEX_MAX): Remove. It wasn't right, since it assumed that
756 sizeof (bitset_word) == sizeof (bitset_windex). All uses changed
757 to BITSET_WINDEX_MAX.
758
759 * lib/bitset.c (bitset_next, bitset_prev, bitset_first,
760 bitset_last): Return BITSET_BINDEX_MAX (not -1) for no value,
761 since we now return the bitset_bindex type (not int).
762
763 * lib/bitsetv.c (bitsetv_alloc): Check for arithmetic overflow
764 when computing sizes.
765 * lib/ebitset.c (ebitset_elts_grow): Likewise.
766
767 * lib/lbitset.c (lbitset_elt_find): Simplify windex calculation
768 and avoid cast to unsigned.
769
7702002-09-30 Akim Demaille <akim@epita.fr>
771
772 * lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
773 * lib/bitset_stats.c, lib/bitsetv.c, lib/ebitset.c, lib/lbitset.c:
774 Updates from Michael Hayes.
775
7762002-09-30 Art Haas <ahaas@neosoft.com>
777
778 * configure.ac: Update AC_OUTPUT and AM_CONFIG_HEADER
779 invocations.
780 * tests/cxx-type.at (declarator): Don't rely on NDEBUG being not
781 defined.
782
7832002-09-27 Akim Demaille <akim@epita.fr>
784
785 Version 1.49c.
786
7872002-09-27 Akim Demaille <akim@epita.fr>
788
789 * configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7.
790 (Because of AC_LIBSOURCE).
791
7922002-09-27 Akim Demaille <akim@epita.fr>
793
794 Playing with Autoscan.
795
796 * configure.ac: Remove the old LIBOBJ tweaks.
797 (AC_REPLACE_FUNCS): Add strrchr and strtol.
798 * lib/strrchr.c: New.
799 * lib/strtol.c: New, from the Coreutils 4.5.1.
800
8012002-09-27 Akim Demaille <akim@epita.fr>
802
803 Playing with Autoscan.
804
805 * m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New.
806 * lib/Makefile.am (libbison_a_SOURCES): No longer include
807 argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd.
808 * lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the
809 Coreutils 4.5.1.
810
8112002-09-24 Akim Demaille <akim@epita.fr>
812
813 * doc/bison.texinfo (Stack Overflow): xref to Recursion.
814 (Frequently Asked Questions, Parser Stack Overflow): New.
815
8162002-09-13 Akim Demaille <akim@epita.fr>
817
818 Playing with autoscan.
819
820 * src/reader.c (get_merge_function): Use xstrdup, not strdup.
821 * src/files.c (skeleton_find): Remove, unused.
822 * m4/memcmp.m4: New, from the Coreutils 4.5.1.
823 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP.
824
8252002-09-13 Akim Demaille <akim@epita.fr>
826
827 * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3.
828 * Makefile.am (AUTOMAKE_OPTIONS): Don't.
829
8302002-09-13 Akim Demaille <akim@epita.fr>
831
832 * configure.ac: Require 2.54.
833 s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/.
834 s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/.
835 * m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4:
836 Remove, provided by Autoconf macros.
837
8382002-09-12 Akim Demaille <akim@epita.fr>
839
840 * m4/prereq.m4: Update, from Coreutils 4.5.1.
841
8422002-09-12 Akim Demaille <akim@epita.fr>
843
844 * m4/prereq.m4: Update, from Fileutils 4.1.5.
845 * configure.ac (jm_PREREQ_TEMPNAME): Invoke it.
846 Reported by Martin Mokrejs.
847
8482002-09-10 Akim Demaille <akim@epita.fr>
849
850 * src/parse-gram.y: Associate a human readable string to each
851 token type.
852 * tests/regression.at (Invalid inputs): Adjust.
853
8542002-09-10 Gary V. Vaughan <gary@gnu.org>
855
856 * tests/Makefile.am ($(srcdir)/package.m4): Bison now ships
857 with an Autoconf-2.5x style configure.ac.
858
8592002-09-06 Paul Eggert <eggert@twinsun.com>
860
861 * doc/bison.texinfo (Conditions): Make explicit that the GPL
862 exception applies only to yacc.c. This is a modification of a
863 patch originally suggested by Akim Demaille.
864
8652002-09-06 Akim Demaille <akim@epita.fr>
866
867 * data/c.m4 (b4_copyright): Move the GPL exception comment from
868 here to...
869 * data/yacc.c: here.
870
871 * data/lalr1.cc (struct yyltype): Don't define it, since we use
872 LocationType.
873 (b4_ltype): Default to yy::Location from location.hh.
874
8752002-09-04 Jim Meyering <jim@meyering.net>
876
877 * data/yacc.c: Guard the declaration of yytoknum also with
878 `#ifdef YYPRINT', so it is declared only when used.
879
8802002-09-04 Akim Demaille <akim@epita.fr>
881
882 * configure.in: Rename as...
883 * configure.ac: this.
884 Bump to 1.49c.
885
8862002-09-04 Akim Demaille <akim@epita.fr>
887
888 * src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
889 * src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
890 translate maintainer only messages.
891
8922002-08-12 Paul Eggert <eggert@twinsun.com>
893
894 Version 1.49b.
895
896 * Makefile.am (SUBDIRS): Remove intl.
897 (DISTCLEANFILES): Remove.
898 * NEWS: Mention that GNU M4 is now required. Clarify what is
899 meant by "larger grammars". Mention the pt_BR translation.
900 * configure.in (AC_CHECK_DECLS): Add getenv, getopt.
901 (AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var.
902 Bump version from 0.11.2 to 0.11.5.
903 (BISON_PREREQ_STAGE): Remove.
904 (AM_GNU_GETTEXT): Use external gettext.
905 (AC_OUTPUT): Remove intl/Makefile.
906
907 * config/depcomp, config/install-sh: Sync with Automake 1.6.3.
908
909 * data/glr.c: Include string.h, for strlen.
910 (yyreportParseError): Use size_t for yysize.
911 (yy_yypstack): No longer nested inside yypstates, as nested
912 functions are not portable. Do not assume size_t is the
913 same width as int.
914 (yypstates): Do not assume that ptrdiff_t is the same width
915 as int, and similarly for yyposn and YYINDEX.
916
917 * data/yacc.c: Fix comment about `$$ = $1': it can copy garbage.
918
919 * lib/Makefile.am (INCLUDES): Do not include from the intl
920 directory, which has been removed.
921 * src/Makefile.am (INCLUDES): Likewise.
922
923 * lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h.
924 (bitsets_sources, additional_bitsets_sources, timevars_sources):
925 New vars.
926
927 * lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension.
928 * tests/Makefile.am (EXTRA_DIST): Likewise.
929
930 * lib/abitset.c (abitset_reverse_list, ebitset_reverse_list):
931 Do not assume that bitset_windex is the same width as unsigned.
932
933 * lib/abitset.c (abitset_unused_clear): Do not assume that
934 bitset_word is the same width as int.
935 * lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise.
936 * lib/bitset.h (bitset_set, bitset_reset): Likewise.
937 * lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise.
938 * lib/ebitset.c (ebitset_set, ebitset_reset): Likewise.
939 * lib/lbitset.c (lbitset_set, lbitset_reset): Likewise.
940
941 * lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for
942 portability to one's complement hosts!).
943 * lib/ebitset.c (ebitset_op1): Likewise.
944 * lib/lbitset.c (lbitset_op1): Likewise.
945
946 * lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar.
947 * lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
948 lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c:
949 Sync with fileutils.
950 * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
951 lib/gettext.h: Sync with diffutils.
952
953 * lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c,
954 lib/strspn.c, lib/tempname.c: Use GPL, not LGPL.
955
956 * lib/obstack.c, lib/obstack.h: Sync with fileutils, except use
957 PROTOTYPES to check for prototypes, and "defined __STDC__" to
958 check for void *.
959
960 * lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not
961 size_t; the old version tried to do this but casted improperly.
962 (bitset_bindex, bitset_windex): Now size_t, not unsigned long.
963 (bitset_test): Now returns int, not unsigned long.
964
965 * lib/bitset_stats.c: Include "gettext.h".
966 (_): New macro.
967 (bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't
968 name locals "index", as it generates unnecessary warnings on some
969 hosts that have an "index" function.
970
971 * lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print,
972 bitset_stats_read, bitset_stats_write): Wrap strings in _() if
973 they need translation.
974 * src/LR0.c (state_list_append, new_itemsets, get_state,
975 append_states, generate_states): Likewise.
976 * src/assoc.c (assoc_to_string): Likewise.
977 * src/closure.c (print_closure, set_firsts, closure): Likewise.
978 * src/gram.c (grammar_dump): Likewise.
979 * src/injections.c (injections_compute): Likewise.
980 * src/lalr.c (lookaheads_print): Likewise.
981 * src/relation.c (relation_transpose): Likewise.
982 * src/scan-gram.l: Likewise.
983 * src/tables.c (table_grow, pack_vector): Likewise.
984
985 * m4/Makefile.am (EXTRA_DIST): Remove codeset.m4,
986 glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4.
987 * m4/malloc.m4, m4/realloc.m4: Sync with diffutils.
988 * m4/mbstate_t.m4: Sync with fileutils.
989 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T.
990
991 * po/LINGUAS: Add pt_BR.
992 * po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c,
993 src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c,
994 lib/timevar.c.
995 Use src/parse-gram.y instead of src/parse-gram.c, as the gettext
996 manual recommends.
997 Similarly, use src/scan-gram.l instead of src/scan-gram.c.
998
999 * src/complain.c (strerror_r): Remove decl; not needed.
1000 (strerror): Use same pattern as ../lib/error.c.
1001
1002 * src/files.c, src/files.h (compute_header_macro): Remove; unused.
1003
1004 * src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int.
1005
1006 * src/main.c (main): Cast result of bindtextdomain and textdomain
1007 to void, to avoid a GCC warning when --disable-nls is in effect.
1008
1009 * src/scan-gram.l: Use strings rather than escapes when possible,
1010 to minimize the number of warnings from xgettext.
1011 (handle_action_dollar, handle_action_at): Don't use isdigit,
1012 as it mishandles negative chars and it may not work as expected
1013 outside the C locale.
1014
1015 * src/symtab.c (symbol_get): Don't cast LHS of an assignment;
1016 this is a GCC extension and is not portable to other compilers.
1017
1018 * src/system.h (alloca): Use same pattern as ../lib/error.c.
1019 Do not include <ctype.h>; no longer needed.
1020 Do not include <malloc.h>; no longer needed (and generates
1021 warnings on OpenBSD 3.0).
1022
1023 * tests/cxx-type.at (yylex): Do not pass signed char to isupper;
1024 it's not portable.
1025
1026 * tests/regression.at: Do not use 'cc -c input.c -o input';
1027 Sun C rejects this. Instead, use 'cc -c input.c -o input.o'.
1028
1029 * tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero
1030 exit status as failure, not just exit status 1. Sun C exits
1031 with status 2 sometimes.
1032
1033 * tests/torture.at (AT_INCREASE_DATA_SIZE): New macro.
1034 Use it for the two large tests.
1035
10362002-08-02 Akim Demaille <akim@epita.fr>
1037
1038 * src/conflicts.c (conflicts_output): Don't output rules never
1039 reduced here, since anyway that computation doesn't work.
1040 * src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
1041 (rule_useless_p, rule_never_reduced_p): New.
1042 (grammar_rules_partial_print): Use a filter instead of a range.
1043 Display the title only if needed.
1044 (grammar_rules_print): Adjust.
1045 (grammar_rules_never_reduced_report): New.
1046 * src/tables.c (action_row): Move the computation of rules never
1047 reduced to...
1048 (token_actions): here.
1049 * src/main.c (main): Make the parser before making the report, so
1050 that rules never reduced are computed.
1051 Call grammar_rules_never_reduced_report.
1052 * src/print.c (print_results): Report rules never reduced.
1053 * tests/conflicts.at, tests/reduce.at: Adjust.
1054
10552002-08-01 Akim Demaille <akim@epita.fr>
1056
1057 Instead of attaching lookaheads and duplicating the rules being
1058 reduced by a state, attach the lookaheads to the reductions.
1059
1060 * src/state.h (state_t): Remove the `lookaheads',
1061 `lookaheads_rule' member.
1062 (reductions_t): Add a `lookaheads' member.
1063 Use a regular array for the `rules'.
1064 * src/state.c (reductions_new): Initialize the lookaheads member
1065 to 0.
1066 (state_rule_lookaheads_print): Adjust.
1067 * src/state.h, src/state.c (state_reductions_find): New.
1068 * src/conflicts.c (resolve_sr_conflict, set_conflicts)
1069 (count_rr_conflicts): Adjust.
1070 * src/lalr.c (LArule): Remove.
1071 (add_lookback_edge): Adjust.
1072 (state_lookaheads_count): New.
1073 (states_lookaheads_initialize): Merge into...
1074 (initialize_LA): this.
1075 (lalr_free): Adjust.
1076 * src/main.c (main): Don't free nullable and derives too early: it
1077 is used by --verbose.
1078 * src/print.c, src/print_graph.c, src/tables.c: Adjust.
1079
10802002-08-01 Akim Demaille <akim@epita.fr>
1081
1082 * src/derives.h, src/derives.c (derives): A `rule_t***' instead of
1083 `rule_number_t**'.
1084 (set_derives, free_derives): Rename as...
1085 (derives_compute, derives_free): this.
1086 Adjust all dependencies.
1087 * src/nullable.c (set_nullable, free_nullable): Rename as...
1088 (nullable_compute, nullable_free): these.
1089 (rule_list_t): Store rule_t *, not rule_number_t.
1090 * src/state.c (state_rule_lookaheads_print): Directly compare rule
1091 pointers, instead of their numbers.
1092 * src/main.c (main): Call nullable_free, and derives_free earlier,
1093 as they were lo longer used.
1094
10952002-08-01 Akim Demaille <akim@epita.fr>
1096
1097 * lib/timevar.c (get_time): Include children time.
1098 * src/lalr.h (LA, LArule): Don't export them: used with the
1099 state_t.
1100 * src/lalr.c (LA, LArule): Static.
1101 * src/lalr.h, src/lalr.c (lalr_free): New.
1102 * src/main.c (main): Call it.
1103 * src/tables.c (pack_vector): Check whether loc is >= to the
1104 table_size, not >.
1105 (pack_tables): Don't free froms, tos, conflict_tos, and pos...
1106 (tables_generate): do it, since that's also it which allocates
1107 them.
1108 Don't free LA and LArule, main does.
1109
11102002-07-31 Akim Demaille <akim@epita.fr>
1111
1112 Separate parser tables computation and output.
1113
1114 * src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
1115 (conflict_list, conflict_list_cnt, table, check, table_ninf)
1116 (yydefgoto, yydefact, high): Move to...
1117 * src/tables.h, src/tables.c: here.
1118 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
1119 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
1120 (symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
1121 (froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
1122 (ACTION_MIN, actrow, order, nentries, pos, conflrow)
1123 (conflict_list_free, table_size, lowzero, table_grow, conflict_row)
1124 (action_row, save_row, token_actions, save_column, default_goto)
1125 (goto_actions, sort_actions, matching_state, pack_vector)
1126 (table_ninf_remap, pack_table, prepare_actions): Move to...
1127 * src/tables.c: here.
1128 * src/tables.h, src/tables.c(tables_generate, tables_free): New.
1129 * src/output.c (token_actions, output_base, output_conflicts)
1130 (output_check): Merge into...
1131 (prepare_actions): this.
1132 (actions_output): Rename as...
1133 (user_actions_output): this.
1134 * src/main.c (main): Call tables_generate and tables_free.
1135
11362002-07-31 Akim Demaille <akim@epita.fr>
1137
1138 Steal GCC's --time-report support.
1139
1140 * lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
1141 stolen/adjusted from GCC.
1142 * m4/stage.m4: Remove time related checks.
1143 * m4/timevar.m4: New.
1144 * configure.in: Adjust.
1145 * src/system.h: Adjust to using timevar.h.
1146 * src/getargs.h, src/getargs.c: Support trace_time for
1147 --trace=time.
1148 * src/main.c (stage): Remove.
1149 (main): Replace `stage' invocations with timevar calls.
1150 * src/output.c: Insert pertinent timevar calls.
1151
11522002-07-31 Akim Demaille <akim@epita.fr>
1153
1154 Let --trace have arguments.
1155
1156 * src/getargs.h (enum trace_e): New.
1157 * src/getargs.c (trace_args, trace_types, trace_argmatch): New.
1158 (long_options, short_options): --trace/-T takes an optional
1159 argument.
1160 Change all the uses of trace_flag to reflect the new flags.
1161 * tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.
1162
1163 Strengthen `stage' portability.
1164
1165 * m4/stage.m4 (BISON_PREREQ_STAGE): New.
1166 * configure.in: Use it.
1167 Don't check for malloc.h and sys/times.h.
1168 * src/system.h: Include them when appropriate.
1169 * src/main.c (stage): Compile only when mallinfo, struct mallinfo,
1170 times and struct tms are available.
1171
11722002-07-30 Akim Demaille <akim@epita.fr>
1173
1174 In verbose parse error message, don't report `error' as an
1175 expected token.
1176 * tests/actions.at (Printers and Destructors): Adjust.
1177 * tests/calc.at (Calculator $1): Adjust.
1178 * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
1179 error message, do not report the parser accepts the error token in
1180 that state.
1181
11822002-07-30 Akim Demaille <akim@epita.fr>
1183
1184 Normalize conflict related messages.
1185
1186 * src/complain.h, src/complain.c (warn, complain): New.
1187 * src/conflicts.c (conflicts_print): Use them.
1188 (conflict_report_yacc): New, extracted from...
1189 (conflicts_print): here.
1190 * tests/conflicts.at, tests/existing.at: Adjust.
1191
11922002-07-30 Akim Demaille <akim@epita.fr>
1193
1194 Report rules which are never reduced by the parser: those hidden
1195 by conflicts.
1196
1197 * src/LR0.c (save_reductions): Don't make the final state too
1198 different: save its reduction (accept) instead of having a state
1199 without any action (no shift or goto, no reduce).
1200 Note: the final state is now a ``regular'' state, i.e., the
1201 parsers now contain `reduce 0' as default reduction.
1202 Nevertheless, since they decide to `accept' when yystate =
1203 final_state, they still will not reduce rule 0.
1204 * src/print.c (print_actions, print_reduction): Adjust.
1205 * src/output.c (action_row): Track reduced rules.
1206 (token_actions): Report rules never reduced.
1207 * tests/conflicts.at, tests/regression.at: Adjust.
1208
12092002-07-30 Akim Demaille <akim@epita.fr>
1210
1211 `stage' was accidently included in a previous patch.
1212 Initiate its autoconfiscation.
1213
1214 * configure.in: Look for malloc.h and sys/times.h.
1215 * src/main.c (stage): Adjust.
1216 Report only when trace_flag.
1217
12182002-07-29 Akim Demaille <akim@epita.fr>
1219
1220 * src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
1221 state_number_t.
1222 (errs_t): symbol_t*, not symbol_number_t.
1223 (reductions_t): rule_t*, not rule_number_t.
1224 (FOR_EACH_SHIFT): New.
1225 * src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
1226 * src/print.c, src/print_graph.c: Adjust.
1227
12282002-07-29 Akim Demaille <akim@epita.fr>
1229
1230 Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.
1231
1232 * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
1233 (endtoken, accept): these.
1234 * src/reader.c (reader): Set endtoken's default tag to "$end".
1235 Set undeftoken's tag to "$undefined" instead of "$undefined.".
1236 * doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
1237 Adjust.
1238
12392002-07-29 Akim Demaille <akim@epita.fr>
1240
1241 * src/reduce.c (reduce_grammar): When the language is empty,
1242 complain about the start symbol, not the axiom.
1243 Use its location.
1244 * tests/reduce.at (Empty Language): New.
1245
12462002-07-26 Akim Demaille <akim@epita.fr>
1247
1248 * src/reader.h, src/reader.c (gram_error): ... can't get
1249 yycontrol without making too strong assumptions on the parser
1250 itself.
1251 * src/output.c (prepare_tokens): Use the real 0th value of
1252 token_translations instead of `0'.
1253 * src/parse-gram.y (yyerror): Don't rely on yycontrol being
1254 visible here.
1255 * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
1256 for the time being: %locations ought to provide it to yyerror.
1257
12582002-07-25 Akim Demaille <akim@epita.fr>
1259
1260 * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
1261 * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
1262 * tests/regression.at (Web2c Actions): Adjust.
1263
12642002-07-25 Akim Demaille <akim@epita.fr>
1265
1266 Stop storing rules from 1 to nrules + 1.
1267
1268 * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
1269 * src/nullable.c, src/output.c, src/print.c, src/reader.c
1270 * src/reduce.c: Allocate and free from &rules[0], not &rules[1].
1271 Iterate from 0 to nrules.
1272 Use rule_number_as_item_number and item_number_as_rule_number.
1273 Adjust to `derive' now containing possibly 0.
1274 * src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
1275 Handle the `- 1' part in rule numbers from/to item numbers.
1276 * src/conflicts.c (log_resolution): Fix the message which reversed
1277 shift and reduce.
1278 * src/output.c (action_row): Initialize default_rule to -1.
1279 (token_actions): Adjust.
1280 * tests/sets.at (Nullable, Firsts): Fix the previously bogus
1281 expected output.
1282 * tests/conflicts.at (Resolved SR Conflicts): Likewise.
1283
12842002-07-25 Akim Demaille <akim@epita.fr>
1285
1286 * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
1287 (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
1288 (b4_c_knr_arg_decl): New.
1289 * data/yacc.c: Use it to define yysymprint, yydestruct, and
1290 yyreport_parse_error.
1291
12922002-07-25 Akim Demaille <akim@epita.fr>
1293
1294 * data/yacc.c (yyreport_parse_error): New, extracted from...
1295 (yyparse): here.
1296 (yydestruct, yysymprint): Move above yyparse.
1297 Be K&R compliant.
1298
12992002-07-25 Akim Demaille <akim@epita.fr>
1300
1301 * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
1302 replace...
1303 (b4_sint_type, b4_uint_type): these.
1304 * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
1305 * tests/regression.at (Web2c Actions): Adjust.
1306
13072002-07-25 Akim Demaille <akim@epita.fr>
1308
1309 * src/gram.h (TIEM_NUMBER_MAX): New.
1310 (item_number_of_rule_number, rule_number_of_item_number): Rename
1311 as...
1312 (rule_number_as_item_number, item_number_as_rule_number): these.
1313 Adjust dependencies.
1314 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
1315 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
1316 (symbol_number_to_vector_number): New.
1317 (order): Of vector_number_t* type.
1318 (base_t, BASE_MAX, BASE_MIN): New.
1319 (froms, tos, width, pos, check): Of base_t type.
1320 (action_number_t, ACTION_MIN, ACTION_MAX): New.
1321 (actrow): Of action_number_t type.
1322 (conflrow): Of unsigned int type.
1323 (table_ninf, base_ninf): New.
1324 (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
1325 (muscle_insert_int_table, muscle_insert_base_table)
1326 (muscle_insert_rule_number_table): New.
1327 (prepare_tokens): Output `toknum' as int_table.
1328 (action_row): Returns a rule_number_t.
1329 Use ACTION_MIN, not SHRT_MIN.
1330 (token_actions): yydefact is rule_number_t*.
1331 (table_ninf_remap): New.
1332 (pack_table): Use it for `base' and `table'.
1333 * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
1334 replaced with...
1335 (YYPACT_NINF, YYTABLE_NINF): these.
1336 (yypact, yytable): Compute their types instead of hard-coded
1337 `short'.
1338 * tests/regression.at (Web2c Actions): Adjust.
1339
13402002-07-19 Akim Demaille <akim@epita.fr>
1341
1342 * src/scan-gram.l (id): Can start with an underscore.
1343
13442002-07-16 Akim Demaille <akim@epita.fr>
1345
1346 * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
1347 Adjust all former `associativity' dependencies.
1348 * src/symtab.c (symbol_new): Default associativity is `undef', not
1349 `right'.
1350 (symbol_check_alias_consistence): Adjust.
1351
13522002-07-09 Akim Demaille <akim@epita.fr>
1353
1354 * doc/bison.texinfo: Properly set the ``header'' part.
1355 Use @dircategory ``GNU programming tools'' as per Texinfo's
1356 documentation.
1357 Use @copying.
1358
13592002-07-09 Akim Demaille <akim@epita.fr>
1360
1361 * lib/quotearg.h: Protect against multiple inclusions.
1362 * src/location.h (location_t): Add a `file' member.
1363 (LOCATION_RESET, LOCATION_PRINT): Adjust.
1364 * src/complain.c (warn_at, complain_at, fatal_at): Drop
1365 `error_one_per_line' support.
1366
13672002-07-09 Akim Demaille <akim@epita.fr>
1368
1369 * src/complain.h, src/complain.c (warn, complain): Remove, unused.
1370 * src/reader.c (lineno): Remove.
1371 Adjust all dependencies.
1372 (get_merge_function): Take a location and use complain_at.
1373 * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
1374 * tests/regression.at (Invalid inputs, Mixing %token styles):
1375 Adjust.
1376
13772002-07-09 Akim Demaille <akim@epita.fr>
1378
1379 * src/parse-gram.y (rules_or_grammar_declaration): Add an error
1380 recovery rule, and forbid extensions when --yacc.
1381 (gram_error): Use complain_at.
1382 * src/reader.c (reader): Exit if there were parse errors.
1383
13842002-07-09 Akim Demaille <akim@epita.fr>
1385
1386 * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
1387 (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
1388 Reported by R Blake <blakers@mac.com>.
1389
13902002-07-09 Akim Demaille <akim@epita.fr>
1391
1392 * data/yacc.c: Output the copyright notive in the header.
1393
13942002-07-03 Akim Demaille <akim@epita.fr>
1395
1396 * src/output.c (froms, tos): Are state_number_t.
1397 (save_column): sp, sp1, and sp2 are state_number_t.
1398 (prepare): Rename `final' as `final_state_number', `nnts' as
1399 `nterms_number', `nrules' as `rules_number', `nstates' as
1400 `states_number', and `ntokens' as `tokens_number'. Remove `nsym',
1401 unused.
1402 * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
1403 * data/lalr1.cc (nsym_): Remove, unused.
1404
14052002-07-03 Akim Demaille <akim@epita.fr>
1406
1407 * src/lalr.h, src/lalr.c (goto_number_t): New.
1408 * src/lalr.c (goto_list_t): New.
1409 Propagate them.
1410 * src/nullable.c (rule_list_t): New.
1411 Propagate.
1412 * src/types.h: Remove.
1413
14142002-07-03 Akim Demaille <akim@epita.fr>
1415
1416 * src/closure.c (print_fderives): Use rule_rhs_print.
1417 * src/derives.c (print_derives): Use rule_rhs_print.
1418 (rule_list_t): New, replaces `shorts'.
1419 (set_derives): Add comments.
1420 * tests/sets.at (Nullable, Firsts): Adjust.
1421
14222002-07-03 Akim Demaille <akim@epita.fr>
1423
1424 * src/output.c (prepare_actions): Free `tally' and `width'.
1425 (prepare_actions): Allocate and free `order'.
1426 * src/symtab.c (symbols_free): Free `symbols'.
1427 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
1428 * src/output.c (m4_invoke): Move to...
1429 * src/scan-skel.l: here.
1430 (<<EOF>>): Close yyout, and free its name.
1431
14322002-07-03 Akim Demaille <akim@epita.fr>
1433
1434 Fix some memory leaks, and fix a bug: state 0 was examined twice.
1435
1436 * src/LR0.c (new_state): Merge into...
1437 (state_list_append): this.
1438 (new_states): Merge into...
1439 (generate_states): here.
1440 (set_states): Don't ensure a proper `errs' state member here, do it...
1441 * src/conflicts.c (conflicts_solve): here.
1442 * src/state.h, src/state.c: Comment changes.
1443 (state_t): Rename member `shifts' as `transitions'.
1444 Adjust all dependencies.
1445 (errs_new): For consistency, also take the values as argument.
1446 (errs_dup): Remove.
1447 (state_errs_set): New.
1448 (state_reductions_set, state_transitions_set): Assert that no
1449 previous value was assigned.
1450 (state_free): New.
1451 (states_free): Use it.
1452 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
1453 temporary storage: use `errs' and `nerrs' as elsewhere.
1454 (set_conflicts): Allocate and free this `errs'.
1455
14562002-07-02 Akim Demaille <akim@epita.fr>
1457
1458 * lib/libiberty.h: New.
1459 * lib: Update the bitset implementation from upstream.
1460 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
1461 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
1462 * src/main.c: Adjust bitset stats calls.
1463
14642002-07-01 Paul Eggert <eggert@twinsun.com>
1465
1466 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
1467 char, so that negative chars don't collide with $.
1468
14692002-06-30 Akim Demaille <akim@epita.fr>
1470
1471 Have the GLR tests be `warning' checked, and fix the warnings.
1472
1473 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
1474 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
1475 (yyremoveDeletes): `yyi' and `yyj' are size_t.
1476 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
1477 (yyaddDeferredAction): static.
1478 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
1479 (yyreportParseError): yyprefix is const.
1480 yytokenp is used only when verbose.
1481 (yy__GNUC__): Replace with __GNUC__.
1482 (yypdumpstack): yyi is size_t.
1483 (yypreference): Un-yy local variables and arguments, to avoid
1484 clashes with `yyr1'. Anyway, we are not in the user name space.
1485 (yytname_size): be an int, as is compared with ints.
1486 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
1487 Use them.
1488 * tests/cxx-gram.at: Use quotation to protect $1.
1489 Use AT_COMPILE to enable warnings hunts.
1490 Prototype yylex and yyerror.
1491 `Use' argc.
1492 Include `string.h', not `strings.h'.
1493 Produce and prototype stmtMerge only when used.
1494 yylex takes a location.
1495
14962002-06-30 Akim Demaille <akim@epita.fr>
1497
1498 We spend a lot of time in quotearg, in particular when --verbose.
1499
1500 * src/symtab.c (symbol_get): Store a quoted version of the key.
1501 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
1502 Adjust all callers.
1503
15042002-06-30 Akim Demaille <akim@epita.fr>
1505
1506 * src/state.h (reductions_t): Rename member `nreds' as num.
1507 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
1508 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
1509
15102002-06-30 Akim Demaille <akim@epita.fr>
1511
1512 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
1513 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
1514 (shifts_to): Rename as...
1515 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
1516 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
1517 (TRANSITION_IS_DISABLED, transitions_to): these.
1518
15192002-06-30 Akim Demaille <akim@epita.fr>
1520
1521 * src/print.c (print_shifts, print_gotos): Merge into...
1522 (print_transitions): this.
1523 (print_transitions, print_errs, print_reductions): Align the
1524 lookaheads columns.
1525 (print_core, print_transitions, print_errs, print_state,
1526 print_grammar): Output empty lines separator before, not after.
1527 (state_default_rule_compute): Rename as...
1528 (state_default_rule): this.
1529 * tests/conflicts.at (Defaulted Conflicted Reduction),
1530 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
1531 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
1532
15332002-06-30 Akim Demaille <akim@epita.fr>
1534
1535 Display items as we display rules.
1536
1537 * src/gram.h, src/gram.c (rule_lhs_print): New.
1538 * src/gram.c (grammar_rules_partial_print): Use it.
1539 * src/print.c (print_core): Likewise.
1540 * tests/conflicts.at (Defaulted Conflicted Reduction),
1541 (Unresolved SR Conflicts): Adjust.
1542 (Unresolved SR Conflicts): Adjust and rename as...
1543 (Resolved SR Conflicts): this, as was meant.
1544 * tests/regression.at (Web2c Report): Adjust.
1545
15462002-06-30 Akim Demaille <akim@epita.fr>
1547
1548 * src/print.c (state_default_rule_compute): New, extracted from...
1549 (print_reductions): here.
1550 Pessimize, but clarify the code.
1551 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
1552
15532002-06-30 Akim Demaille <akim@epita.fr>
1554
1555 * src/output.c (action_row): Let default_rule be always a rule
1556 number.
1557
15582002-06-30 Akim Demaille <akim@epita.fr>
1559
1560 * src/closure.c (print_firsts, print_fderives, closure):
1561 Use BITSET_EXECUTE.
1562 * src/lalr.c (lookaheads_print): Likewise.
1563 * src/state.c (state_rule_lookaheads_print): Likewise.
1564 * src/print_graph.c (print_core): Likewise.
1565 * src/print.c (print_reductions): Likewise.
1566 * src/output.c (action_row): Likewise.
1567 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
1568
15692002-06-30 Akim Demaille <akim@epita.fr>
1570
1571 * src/print_graph.c: Use report_flag.
1572
15732002-06-30 Akim Demaille <akim@epita.fr>
1574
1575 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
1576 to...
1577 * src/relation.h, src/relation.c (traverse, relation_digraph)
1578 (relation_print, relation_transpose): New.
1579
15802002-06-30 Akim Demaille <akim@epita.fr>
1581
1582 * src/state.h, src/state.c (shifts_to): New.
1583 * src/lalr.c (build_relations): Use it.
1584
15852002-06-30 Akim Demaille <akim@epita.fr>
1586
1587 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
1588 (item_number_of_rule_number, rule_number_of_item_number): New.
1589 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
1590 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
1591 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
1592 Propagate their use.
1593 Much remains to be done, in particular wrt `shorts' from types.h.
1594
15952002-06-30 Akim Demaille <akim@epita.fr>
1596
1597 * src/symtab.c (symbol_new): Initialize the `printer' member.
1598
15992002-06-30 Akim Demaille <akim@epita.fr>
1600
1601 * src/LR0.c (save_reductions): Remove, replaced by...
1602 * src/state.h, src/state.c (state_reductions_set): New.
1603 (reductions, errs): Rename as...
1604 (reductions_t, errs_t): these.
1605 Adjust all dependencies.
1606
16072002-06-30 Akim Demaille <akim@epita.fr>
1608
1609 * src/LR0.c (state_list_t, state_list_append): New.
1610 (first_state, last_state): Now symbol_list_t.
1611 (this_state): Remove.
1612 (new_itemsets, append_states, save_reductions): Take a state_t as
1613 argument.
1614 (set_states, generate_states): Adjust.
1615 (save_shifts): Remove, replaced by...
1616 * src/state.h, src/state.c (state_shifts_set): New.
1617 (shifts): Rename as...
1618 (shifts_t): this.
1619 Adjust all dependencies.
1620 * src/state.h (state_t): Remove the `next' member.
1621
16222002-06-30 Akim Demaille <akim@epita.fr>
1623
1624 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
1625 escaped in slot 0.
1626
16272002-06-30 Akim Demaille <akim@epita.fr>
1628
1629 Use hash.h for the state hash table.
1630
1631 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
1632 (allocate_storage): Use state_hash_new.
1633 (free_storage): Use state_hash_free.
1634 (new_state, get_state): Adjust.
1635 * src/lalr.h, src/lalr.c (states): Move to...
1636 * src/states.h (state_t): Remove the `link' member, no longer
1637 used.
1638 * src/states.h, src/states.c: here.
1639 (state_hash_new, state_hash_free, state_hash_lookup)
1640 (state_hash_insert, states_free): New.
1641 * src/states.c (state_table, state_compare, state_hash): New.
1642 * src/output.c (output_actions): Do not free states now, since we
1643 still need to know the final_state number in `prepare', called
1644 afterwards. Do it...
1645 * src/main.c (main): here: call states_free after `output'.
1646
16472002-06-30 Akim Demaille <akim@epita.fr>
1648
1649 * src/state.h, src/state.c (state_new): New, extracted from...
1650 * src/LR0.c (new_state): here.
1651 * src/state.h (STATE_ALLOC): Move to...
1652 * src/state.c: here.
1653 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
1654 * src/state.h, src/state.c: here.
1655
16562002-06-30 Akim Demaille <akim@epita.fr>
1657
1658 * src/reader.c (gensym): Rename as...
1659 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
1660 (getsym): Rename as...
1661 (symbol_get): this.
1662
16632002-06-30 Akim Demaille <akim@epita.fr>
1664
1665 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
1666 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
1667 * src/output.c, src/print.c, src/print_graph.c: Propagate.
1668 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
1669
16702002-06-30 Akim Demaille <akim@epita.fr>
1671
1672 Make the test suite pass with warnings checked.
1673
1674 * tests/actions.at (Printers and Destructors): Improve.
1675 Avoid unsigned vs. signed issues.
1676 * tests/calc.at: Don't exercise the scanner here, do it...
1677 * tests/input.at (Torturing the Scanner): here.
1678
16792002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1680
1681 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
1682 reorganize first lines parallel to yacc.c.
1683
16842002-06-28 Akim Demaille <akim@epita.fr>
1685
1686 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
1687 (b4_token_enum, b4_token_defines): New, factored from...
1688 * data/lalr1.cc, data/yacc.c, glr.c: here.
1689
16902002-06-28 Akim Demaille <akim@epita.fr>
1691
1692 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
1693 unused variables.
1694 * src/output.c (merger_output): static.
1695
16962002-06-28 Akim Demaille <akim@epita.fr>
1697
1698 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
1699 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
1700 pacify GCC.
1701 * src/output.c (save_row): Initialize all the variables to pacify GCC.
1702
17032002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1704
1705 Accumulated changelog for new GLR parsing features.
1706
1707 * src/conflicts.c (count_total_conflicts): Change name to
1708 conflicts_total_count.
1709 * src/conflicts.h: Ditto.
1710 * src/output.c (token_actions): Use the new name.
1711 (output_conflicts): Change conflp => conflict_list_heads, and
1712 confl => conflict_list for better readability.
1713 * data/glr.c: Use the new names.
1714 * NEWS: Add self to GLR announcement.
1715
1716 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
1717
1718 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
1719 Akim Demaille.
1720
1721 * data/bison.glr: Change name to glr.c
1722 * data/glr.c: Renamed from bison.glr.
1723 * data/Makefile.am: Add glr.c
1724
1725 * src/getargs.c:
1726
1727 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
1728 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
1729
1730 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1731
1732 * data/bison.glr: Be sure to restore the
1733 current #line when returning to the skeleton contents after having
1734 exposed the input file's #line.
1735
1736 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1737
1738 * data/bison.glr: Bring up to date with changes to bison.simple.
1739
1740 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1741
1742 * data/bison.glr: Correct definitions that use b4_prefix.
1743 Various reformatting.
1744 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
1745 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
1746 yytokenp argument; now part of stack.
1747 (yychar): Define to behave as documented.
1748 (yyclearin): Ditto.
1749
1750 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1751
1752 * src/reader.h: Add declaration for free_merger_functions.
1753
1754 * src/reader.c (merge_functions): New variable.
1755 (get_merge_function): New function.
1756 (free_merger_functions): New function.
1757 (readgram): Check for %prec that is not followed by a symbol.
1758 Handle %dprec and %merge declarations.
1759 (packgram): Initialize dprec and merger fields in rules array.
1760
1761 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
1762 conflict_list_cnt, conflict_list_free): New variables.
1763 (table_grow): Also grow conflict_table.
1764 (prepare_rules): Output dprec and merger tables.
1765 (conflict_row): New function.
1766 (action_row): Output conflict lists for GLR parser. Don't use
1767 default reduction in conflicted states for GLR parser so that there
1768 are spaces for the conflict lists.
1769 (save_row): Also save conflict information.
1770 (token_actions): Allocate conflict list.
1771 (merger_output): New function.
1772 (pack_vector): Pack conflict table, too.
1773 (output_conflicts): New function to output yyconflp and yyconfl.
1774 (output_check): Allocate conflict_tos.
1775 (output_actions): Output conflict tables, also.
1776 (output_skeleton): Output b4_mergers definition.
1777 (prepare): Output b4_max_rhs_length definition.
1778 Use 'bison.glr' as default skeleton for GLR parsers.
1779
1780 * src/gram.c (glr_parser): New flag.
1781 (grammar_free): Call free_merger_functions.
1782
1783 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
1784 all pairs of conflicting reductions, rather than just all tokens
1785 causing conflicts. Needed to size conflict tables.
1786 (conflicts_output): Modify call to count_rr_conflicts for new
1787 interface.
1788 (conflicts_print): Ditto.
1789 (count_total_conflicts): New function.
1790
1791 * src/reader.h (merger_list): New type.
1792 (merge_functions): New variable.
1793
1794 * src/lex.h (tok_dprec, tok_merge): New token types.
1795
1796 * src/gram.h (rule_s): Add dprec and merger fields.
1797 (glr_parser): New flag.
1798
1799 * src/conflicts.h (count_total_conflicts): New function.
1800
1801 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
1802
1803 * doc/bison.texinfo (Generalized LR Parsing): New section.
1804 (GLR Parsers): New section.
1805 (Language and Grammar): Mention GLR parsing.
1806 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
1807 Correct typo ("tge" -> "the").
1808
1809 * data/bison.glr: New skeleton for GLR parsing.
1810
1811 * tests/cxx-gram.at: New tests for GLR parsing.
1812
1813 * tests/testsuite.at: Include cxx-gram.at.
1814
1815 * tests/Makefile.am: Add cxx-gram.at.
1816
1817 * src/parse-gram.y:
1818
1819 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
1820
1821 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
1822
18232002-06-27 Akim Demaille <akim@epita.fr>
1824
1825 * src/options.h, src/options.c: Remove.
1826 * src/getargs.c (short_options, long_options): New.
1827
18282002-06-27 Akim Demaille <akim@epita.fr>
1829
1830 * data/bison.simple, data/bison.c++: Rename as...
1831 * data/yacc.c, data/lalr1.cc: these.
1832 * doc/bison.texinfo (Environment Variables): Remove.
1833
18342002-06-25 Raja R Harinath <harinath@cs.umn.edu>
1835
1836 * src/getargs.c (report_argmatch): Initialize strtok().
1837
18382002-06-20 Akim Demaille <akim@epita.fr>
1839
1840 * data/bison.simple (b4_symbol_actions): New, replaces...
1841 (b4_symbol_destructor, b4_symbol_printer): these.
1842 (yysymprint): Be sure to call YYPRINT only for tokens, and using
1843 user token numbers.
1844
18452002-06-20 Akim Demaille <akim@epita.fr>
1846
1847 * data/bison.simple (yydestructor): Rename as...
1848 (yydestruct): this.
1849
18502002-06-20 Akim Demaille <akim@epita.fr>
1851
1852 * src/symtab.h, src/symtab.c (symbol_type_set)
1853 (symbol_destructor_set, symbol_precedence_set): The location is
1854 the last argument.
1855 Adjust all callers.
1856
18572002-06-20 Akim Demaille <akim@epita.fr>
1858
1859 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
1860 internals.
1861 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
1862 Takes a location.
1863 * src/symtab.h, src/symtab.c (symbol_class_set)
1864 (symbol_user_token_number_set): Likewise.
1865 Adjust all callers.
1866 Promote complain_at.
1867 * tests/input.at (Type Clashes): Adjust.
1868
18692002-06-20 Akim Demaille <akim@epita.fr>
1870
1871 * data/bison.simple (YYLEX): Fix the declaration when
1872 %pure-parser.
1873
18742002-06-20 Akim Demaille <akim@epita.fr>
1875
1876 * data/bison.simple (yysymprint): Don't print the token number,
1877 just its name.
1878 * tests/actions.at (Destructors): Rename as...
1879 (Printers and Destructors): this.
1880 Also exercise %printer.
1881
18822002-06-20 Akim Demaille <akim@epita.fr>
1883
1884 * data/bison.simple (YYDSYMPRINT): New.
1885 Use it to remove many of the #if YYDEBUG/if (yydebug).
1886
18872002-06-20 Akim Demaille <akim@epita.fr>
1888
1889 * src/symtab.h, src/symtab.c (symbol_t): printer and
1890 printer_location are new members.
1891 (symbol_printer_set): New.
1892 * src/parse-gram.y (PERCENT_PRINTER): New token.
1893 Handle its associated rule.
1894 * src/scan-gram.l: Adjust.
1895 (handle_destructor_at, handle_destructor_dollar): Rename as...
1896 (handle_symbol_code_at, handle_symbol_code_dollar): these.
1897 * src/output.c (symbol_printers_output): New.
1898 (output_skeleton): Call it.
1899 * data/bison.simple (yysymprint): New. Cannot be named yyprint
1900 since there are already many grammar files with a user `yyprint'.
1901 Replace the calls to YYPRINT to calls to yysymprint.
1902 * tests/calc.at: Adjust.
1903 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
1904 taking advantage of parser very internal details (stack size!).
1905
19062002-06-20 Akim Demaille <akim@epita.fr>
1907
1908 * src/scan-gram.l: Complete the scanner with the missing patterns
1909 to pacify Flex.
1910 Use `quote' and `symbol_tag_get' where appropriate.
1911
19122002-06-19 Akim Demaille <akim@epita.fr>
1913
1914 * tests/actions.at (Destructors): Augment to test locations.
1915 * data/bison.simple (yydestructor): Pass it the current location
1916 if locations are enabled.
1917 Prototype only when __STDC__ or C++.
1918 Change the argument names to move into the yy name space: there is
1919 user code here.
1920
19212002-06-19 Akim Demaille <akim@epita.fr>
1922
1923 * data/bison.simple (b4_pure_if): New.
1924 Use it instead of #ifdef YYPURE.
1925
19262002-06-19 Akim Demaille <akim@epita.fr>
1927
1928 * data/bison.simple (b4_location_if): New.
1929 Use it instead of #ifdef YYLSP_NEEDED.
1930
19312002-06-19 Akim Demaille <akim@epita.fr>
1932
1933 Prepare @$ in %destructor, but currently don't bind it in the
1934 skeleton, as %location use is not cleaned up yet.
1935
1936 * src/scan-gram.l (handle_dollar, handle_destructor_at)
1937 (handle_action_at): New.
1938 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
1939 a braced_code_t and a location as additional arguments.
1940 (handle_destructor_dollar): Instead of requiring `b4_eval', just
1941 unquote one when outputting `b4_dollar_dollar'.
1942 Adjust callers.
1943 * data/bison.simple (b4_eval): Remove.
1944 (b4_symbol_destructor): Adjust.
1945 * tests/input.at (Invalid @n): Adjust.
1946
19472002-06-19 Zack Weinberg <zack@codesourcery.com>
1948
1949 * doc/bison.texinfo: Document ability to have multiple
1950 prologue sections.
1951
19522002-06-18 Akim Demaille <akim@epita.fr>
1953
1954 * src/files.c (compute_base_names): When computing the output file
1955 names from the input file name, strip the directory part.
1956
19572002-06-18 Akim Demaille <akim@epita.fr>
1958
1959 * data/bison.simple.new: Comment changes.
1960 Reported by Andreas Schwab.
1961
19622002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
1963
1964 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
1965 there are no `label `yyoverflowlab' defined but not used' warnings
1966 when yyoverflow is defined.
1967
19682002-06-18 Akim Demaille <akim@epita.fr>
1969
1970 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
1971 new member.
1972 (symbol_destructor_set): Adjust.
1973 * src/output.c (symbol_destructors_output): Output the destructor
1974 locations.
1975 Output the symbol name.
1976 * data/bison.simple (b4_symbol_destructor): Adjust.
1977
19782002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
1979 and Akim Demaille <akim@epita.fr>
1980
1981 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
1982 what's left on the stack when the error recovery hits EOF.
1983 * tests/actions.at (Destructors): Complete to exercise this case.
1984
19852002-06-17 Akim Demaille <akim@epita.fr>
1986
1987 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
1988 arguments is really empty, not only equal to `[]'.
1989 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
1990 member.
1991 (symbol_destructor_set): New.
1992 * src/output.c (symbol_destructors_output): New.
1993 * src/reader.h (brace_code_t, current_braced_code): New.
1994 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
1995 (handle_dollar): Rename as...
1996 (handle_action_dollar): this.
1997 (handle_destructor_dollar): New.
1998 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
1999 (grammar_declaration): Use it.
2000 * data/bison.simple (yystos): Is always defined.
2001 (yydestructor): New.
2002 * tests/actions.at (Destructors): New.
2003 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
2004
20052002-06-17 Akim Demaille <akim@epita.fr>
2006
2007 * src/symlist.h, src/symlist.c (symbol_list_length): New.
2008 * src/scan-gram.l (handle_dollar, handle_at): Compute the
2009 rule_length only when needed.
2010 * src/output.c (actions_output, token_definitions_output): Output
2011 the full M4 block.
2012 * src/symtab.c: Don't access directly to the symbol tag, use
2013 symbol_tag_get.
2014 * src/parse-gram.y: Use symbol_list_free.
2015
20162002-06-17 Akim Demaille <akim@epita.fr>
2017
2018 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
2019 (symbol_list_prepend, get_type_name): Move to...
2020 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
2021 (symbol_list_prepend, symbol_list_n_type_name_get): here.
2022 Adjust all callers.
2023 (symbol_list_free): New.
2024 * src/scan-gram.l (handle_dollar): Takes a location.
2025 * tests/input.at (Invalid $n): Adjust.
2026
20272002-06-17 Akim Demaille <akim@epita.fr>
2028
2029 * src/reader.h, src/reader.c (symbol_list_new): Export it.
2030 (symbol_list_prepend): New.
2031 * src/parse-gram.y (%union): `list' is a new member.
2032 (symbols.1): New, replaces...
2033 (terms_to_prec.1, nterms_to_type.1): these.
2034 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
2035 Take a location as additional argument.
2036 Adjust all callers.
2037
20382002-06-15 Akim Demaille <akim@epita.fr>
2039
2040 * src/parse-gram.y: Move %token in the declaration section so that
2041 we don't depend upon CVS Bison.
2042
20432002-06-15 Akim Demaille <akim@epita.fr>
2044
2045 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
2046 * src/print.c (print_core): Use it.
2047
20482002-06-15 Akim Demaille <akim@epita.fr>
2049
2050 * src/conflicts.c (log_resolution): Accept the rule involved in
2051 the sr conflicts instead of the lookahead number that points to
2052 that rule.
2053 (flush_reduce): Accept the current lookahead vector as argument,
2054 instead of the index in LA.
2055 (resolve_sr_conflict): Accept the current number of lookahead
2056 bitset to consider for the STATE, instead of the index in LA.
2057 (set_conflicts): Adjust.
2058 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
2059
20602002-06-15 Akim Demaille <akim@epita.fr>
2061
2062 * src/state.h (state_t): Replace the `lookaheadsp' member, a
2063 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
2064 Adjust all dependencies.
2065 * src/lalr.c (initialize_lookaheads): Split into...
2066 (states_lookaheads_count, states_lookaheads_initialize): these.
2067 (lalr): Adjust.
2068
20692002-06-15 Akim Demaille <akim@epita.fr>
2070
2071 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
2072 out of...
2073 (grammar_rules_print): here.
2074 * src/reduce.c (reduce_output): Use it.
2075 * tests/reduce.at (Useless Rules, Reduced Automaton)
2076 (Underivable Rules): Adjust.
2077
20782002-06-15 Akim Demaille <akim@epita.fr>
2079
2080 Copy BYacc's nice way to report the grammar.
2081
2082 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
2083 New.
2084 Don't print the rules' location, it is confusing and useless.
2085 (rule_print): Use grammar_rhs_print.
2086 * src/print.c (print_grammar): Use grammar_rules_print.
2087
20882002-06-15 Akim Demaille <akim@epita.fr>
2089
2090 Complete and rationalize `useless thing' warnings.
2091
2092 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
2093 (symbol_tag_print): New.
2094 Use them everywhere in place of accessing directly the tag member.
2095 * src/gram.h, src/gram.c (rule_print): New.
2096 Use it where a rule used to be printed `by hand'.
2097 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
2098 (reduce_grammar_tables): Report the useless rules.
2099 (reduce_print): Useless things are a warning, not an error.
2100 Report it as such.
2101 * tests/reduce.at (Useless Nonterminals, Useless Rules):
2102 (Reduced Automaton, Underivable Rules): Adjust.
2103 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
2104 * tests/conflicts.at (Unresolved SR Conflicts)
2105 (Solved SR Conflicts): Adjust.
2106
21072002-06-15 Akim Demaille <akim@epita.fr>
2108
2109 Let symbols have a location.
2110
2111 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
2112 (getsym): Adjust.
2113 Adjust all callers.
2114 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
2115 Use location_t, not int.
2116 * src/symtab.c (symbol_check_defined): Take advantage of the
2117 location.
2118 * tests/regression.at (Invalid inputs): Adjust.
2119
21202002-06-15 Akim Demaille <akim@epita.fr>
2121
2122 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
2123 (input): Don't try to initialize yylloc here, do it in the
2124 scanner.
2125 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
2126 * src/gram.h (rule_t): Change line and action_line into location
2127 and action_location, of location_t type.
2128 Adjust all dependencies.
2129 * src/location.h, src/location.c (empty_location): New.
2130 * src/reader.h, src/reader.c (grammar_start_symbol_set)
2131 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
2132 (grammar_current_rule_symbol_append)
2133 (grammar_current_rule_action_append): Expect a location as argument.
2134 * src/reader.c (grammar_midrule_action): Adjust to attach an
2135 action's location as dummy symbol location.
2136 * src/symtab.h, src/symtab.c (startsymbol_location): New.
2137 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
2138 the line numbers.
2139
21402002-06-14 Akim Demaille <akim@epita.fr>
2141
2142 Grammar declarations may be found in the grammar section.
2143
2144 * src/parse-gram.y (rules_or_grammar_declaration): New.
2145 (declarations): Each declaration may end with a semicolon, not
2146 just...
2147 (grammar_declaration): `"%union"'.
2148 (grammar): Branch to rules_or_grammar_declaration.
2149
21502002-06-14 Akim Demaille <akim@epita.fr>
2151
2152 * src/main.c (main): Invoke scanner_free.
2153
21542002-06-14 Akim Demaille <akim@epita.fr>
2155
2156 * src/output.c (m4_invoke): Extracted from...
2157 (output_skeleton): here.
2158 Free tempfile.
2159
21602002-06-14 Akim Demaille <akim@epita.fr>
2161
2162 * src/parse-gram.y (directives, directive, gram)
2163 (grammar_directives, precedence_directives, precedence_directive):
2164 Rename as...
2165 (declarations, declaration, grammar, grammar_declaration)
2166 (precedence_declaration, precedence_declarator): these.
2167 (symbol_declaration): New.
2168
21692002-06-14 Akim Demaille <akim@epita.fr>
2170
2171 * src/files.c (action_obstack): Remove, unused.
2172 (output_obstack): Remove it, and all its dependencies, as it is no
2173 longer needed.
2174 * src/reader.c (epilogue_set): Build the epilogue in the
2175 muscle_obstack.
2176 * src/output.h, src/output.c (muscle_obstack): Move to...
2177 * src/muscle_tab.h, src/muscle_tab.h: here.
2178 (muscle_init): Initialize muscle_obstack.
2179 (muscle_free): New.
2180 * src/main.c (main): Call it.
2181
21822002-06-14 Akim Demaille <akim@epita.fr>
2183
2184 * src/location.h: New, extracted from...
2185 * src/reader.h: here.
2186 * src/Makefile.am (noinst_HEADERS): Merge into
2187 (bison_SOURCES): this.
2188 Add location.h.
2189 * src/parse-gram.y: Use location_t instead of Bison's.
2190 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
2191 Use location_t instead of ints.
2192
21932002-06-14 Akim Demaille <akim@epita.fr>
2194
2195 * data/bison.simple, data/bison.c++: Be sure to restore the
2196 current #line when returning to the skeleton contents after having
2197 exposed the input file's #line.
2198
21992002-06-12 Akim Demaille <akim@epita.fr>
2200
2201 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
2202 eager.
2203 * tests/actions.at (Exotic Dollars): New.
2204
22052002-06-12 Akim Demaille <akim@epita.fr>
2206
2207 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
2208 ['"/] too eagerly.
2209 * tests/input.at (Torturing the Scanner): New.
2210
22112002-06-11 Akim Demaille <akim@epita.fr>
2212
2213 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
2214 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
2215 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
2216 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
2217 * src/reader.c (reader): Use it.
2218
22192002-06-11 Akim Demaille <akim@epita.fr>
2220
2221 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
2222 Adjust all callers.
2223 (scanner_last_string_free): New.
2224
22252002-06-11 Akim Demaille <akim@epita.fr>
2226
2227 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
2228 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
2229 (last_string, YY_OBS_FREE): New.
2230 Use them when returning an ID.
2231
22322002-06-11 Akim Demaille <akim@epita.fr>
2233
2234 Have Bison grammars parsed by a Bison grammar.
2235
2236 * src/reader.c, src/reader.h (prologue_augment): New.
2237 * src/reader.c (copy_definition): Remove.
2238
2239 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
2240 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
2241 (grammar_current_rule_prec_set, grammar_current_rule_check)
2242 (grammar_current_rule_symbol_append)
2243 (grammar_current_rule_action_append): Export.
2244 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
2245 (symbol_list_action_append): Remove.
2246 Hook the routines from reader.
2247 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
2248 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
2249
2250 * src/reader.c (read_declarations): Remove, unused.
2251
2252 * src/parse-gram.y: Handle the epilogue.
2253 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
2254 (grammar_start_symbol_set): this.
2255 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
2256 * src/reader.c (readgram): Remove, unused.
2257 (reader): Adjust to insert eoftoken and axiom where appropriate.
2258
2259 * src/reader.c (copy_dollar): Replace with...
2260 * src/scan-gram.h (handle_dollar): this.
2261 * src/parse-gram.y: Remove `%thong'.
2262
2263 * src/reader.c (copy_at): Replace with...
2264 * src/scan-gram.h (handle_at): this.
2265
2266 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
2267 New.
2268
2269 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
2270 time being.
2271
2272 * src/reader.h, src/reader.c (grammar_rule_end): New.
2273
2274 * src/parse.y (current_type, current_class): New.
2275 Implement `%nterm', `%token' support.
2276 Merge `%term' into `%token'.
2277 (string_as_id): New.
2278 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
2279 type name.
2280
2281 * src/parse-gram.y: Be sure to handle properly the beginning of
2282 rules.
2283
2284 * src/parse-gram.y: Handle %type.
2285 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
2286
2287 * src/parse-gram.y: More directives support.
2288 * src/options.c: No longer handle source directives.
2289
2290 * src/parse-gram.y: Fix %output.
2291
2292 * src/parse-gram.y: Handle %union.
2293 Use the prologue locations.
2294 * src/reader.c (parse_union_decl): Remove.
2295
2296 * src/reader.h, src/reader.c (epilogue_set): New.
2297 * src/parse-gram.y: Use it.
2298
2299 * data/bison.simple, data/bison.c++: b4_stype is now either not
2300 defined, then default to int, or to the contents of %union,
2301 without `union' itself.
2302 Adjust.
2303 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
2304
2305 * src/output.c (actions_output): Don't output braces, as they are
2306 already handled by the scanner.
2307
2308 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
2309 characters to themselves.
2310
2311 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
2312 that the epilogue has a proper #line.
2313
2314 * src/parse-gram.y: Handle precedence/associativity.
2315
2316 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
2317 a terminal.
2318 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
2319 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
2320 at all to define terminals that cannot be emitted.
2321
2322 * src/scan-gram.l: Escape M4 characters.
2323
2324 * src/scan-gram.l: Working properly with escapes in user
2325 strings/characters.
2326
2327 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
2328 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
2329 grammar.
2330 Use more modest sizes, as for the time being the parser does not
2331 release memory, and therefore the process swallows a huge amount
2332 of memory.
2333
2334 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
2335 stricter %token grammar.
2336
2337 * src/symtab.h (associativity): Add `undef_assoc'.
2338 (symbol_precedence_set): Do nothing when passed an undef_assoc.
2339 * src/symtab.c (symbol_check_alias_consistence): Adjust.
2340
2341 * tests/regression.at (Invalid %directive): Remove, as it is now
2342 meaningless.
2343 (Invalid inputs): Adjust to the new error messages.
2344 (Token definitions): The new grammar doesn't allow too many
2345 eccentricities.
2346
2347 * src/lex.h, src/lex.c: Remove.
2348 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
2349 (copy_character, copy_string2, copy_string, copy_identifier)
2350 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
2351 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
2352 (parse_action): Remove.
2353 * po/POTFILES.in: Adjust.
2354
23552002-06-11 Akim Demaille <akim@epita.fr>
2356
2357 * src/reader.c (parse_action): Don't store directly into the
2358 rule's action member: return the action as a string.
2359 Don't require `rule_length' as an argument: compute it.
2360 (grammar_current_rule_symbol_append)
2361 (grammar_current_rule_action_append): New, eved out from
2362 (readgram): here.
2363 Remove `action_flag', `rulelength', unused now.
2364
23652002-06-11 Akim Demaille <akim@epita.fr>
2366
2367 * src/reader.c (grammar_current_rule_prec_set).
2368 (grammar_current_rule_check): New, eved out from...
2369 (readgram): here.
2370 Remove `xaction', `first_rhs': useless.
2371 * tests/input.at (Type clashes): New.
2372 * tests/existing.at (GNU Cim Grammar): Adjust.
2373
23742002-06-11 Akim Demaille <akim@epita.fr>
2375
2376 * src/reader.c (grammar_midrule_action): New, Eved out from
2377 (readgram): here.
2378
23792002-06-11 Akim Demaille <akim@epita.fr>
2380
2381 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
2382 New.
2383 (readgram): Use them as replacement of inlined code, crule and
2384 crule1.
2385
23862002-06-11 Akim Demaille <akim@epita.fr>
2387
2388 * src/reader.c (grammar_end, grammar_symbol_append): New.
2389 (readgram): Use them.
2390 Make the use of `p' as local as possible.
2391
23922002-06-10 Akim Demaille <akim@epita.fr>
2393
2394 GCJ's parser requires the tokens to be defined before the prologue.
2395
2396 * data/bison.simple: Output the token definition before the user's
2397 prologue.
2398 * tests/regression.at (Braces parsing, Duplicate string)
2399 (Mixing %token styles): Check the output from bison.
2400 (Early token definitions): New.
2401
24022002-06-10 Akim Demaille <akim@epita.fr>
2403
2404 * src/symtab.c (symbol_user_token_number_set): Don't complain when
2405 assigning twice the same user number to a token, so that we can
2406 use it in...
2407 * src/lex.c (lex): here.
2408 Also use `symbol_class_set' instead of hand written code.
2409 * src/reader.c (parse_assoc_decl): Likewise.
2410
24112002-06-10 Akim Demaille <akim@epita.fr>
2412
2413 * src/symtab.c, src/symtab.c (symbol_class_set)
2414 (symbol_user_token_number_set): New.
2415 * src/reader.c (parse_token_decl): Use them.
2416 Use a switch instead of ifs.
2417 Use a single argument.
2418
24192002-06-10 Akim Demaille <akim@epita.fr>
2420
2421 Remove `%thong' support as it is undocumented, unused, duplicates
2422 `%token's job, and creates useless e-mail traffic with people who
2423 want to know what it is, why it is undocumented, unused, and
2424 duplicates `%token's job.
2425
2426 * src/reader.c (parse_thong_decl): Remove.
2427 * src/options.c (option_table): Remove "thong".
2428 * src/lex.h (tok_thong): Remove.
2429
24302002-06-10 Akim Demaille <akim@epita.fr>
2431
2432 * src/symtab.c, src/symtab.c (symbol_type_set)
2433 (symbol_precedence_set): New.
2434 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
2435 (value_components_used): Remove, unused.
2436
24372002-06-09 Akim Demaille <akim@epita.fr>
2438
2439 Move symbols handling code out of the reader.
2440
2441 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
2442 (axiom): Move to...
2443 * src/symtab.h, src/symtab.c: here.
2444
2445 * src/gram.c (start_symbol): Remove: use startsymbol->number.
2446 * src/reader.c (startval): Rename as...
2447 * src/symtab.h, src/symtab.c (startsymbol): this.
2448 * src/reader.c: Adjust.
2449
2450 * src/reader.c (symbol_check_defined, symbol_make_alias)
2451 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
2452 (token_translations_init)
2453 Move to...
2454 * src/symtab.c: here.
2455 * src/reader.c (packsymbols): Move to...
2456 * src/symtab.h, src/symtab.c (symbols_pack): here.
2457 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
2458 argument.
2459
24602002-06-03 Akim Demaille <akim@epita.fr>
2461
2462 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
2463 then statements.
2464
24652002-06-03 Akim Demaille <akim@epita.fr>
2466
2467 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
2468 structs with non literals.
2469 * src/scan-skel.l: never-interactive.
2470 * src/conflicts.c (enum conflict_resolution_e): No trailing
2471 comma.
2472 * src/getargs.c (usage): Split long literal strings.
2473 Reported by Hans Aberg.
2474
24752002-05-28 Akim Demaille <akim@epita.fr>
2476
2477 * data/bison.c++: Use C++ ostreams.
2478 (cdebug_): New member.
2479
24802002-05-28 Akim Demaille <akim@epita.fr>
2481
2482 * src/output.c (output_skeleton): Be sure to allocate enough room
2483 for `/' _and_ for `\0' in full_skeleton.
2484
24852002-05-28 Akim Demaille <akim@epita.fr>
2486
2487 * data/bison.c++: Catch up with bison.simple:
2488 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2489 and Paul Eggert <eggert@twinsun.com>: `error' handing.
2490 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
2491 and popping traces.
2492
24932002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2494
2495 * src/output.c (output_skeleton): Put an explicit path in front of
2496 the skeleton file name, rather than relying on the -I directory,
2497 to partially alleviate effects of having a skeleton file lying around
2498 in the current directory.
2499
25002002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2501
2502 * src/conflicts.c (log_resolution): Correct typo:
2503 obstack_printf should be obstack_fgrow1.
2504
25052002-05-26 Akim Demaille <akim@epita.fr>
2506
2507 * src/state.h (state_t): `solved_conflicts' is a new member.
2508 * src/LR0.c (new_state): Set it to 0.
2509 * src/conflicts.h, src/conflicts.c (print_conflicts)
2510 (free_conflicts, solve_conflicts): Rename as...
2511 (conflicts_print, conflicts_free, conflicts_solve): these.
2512 Adjust callers.
2513 * src/conflicts.c (enum conflict_resolution_e)
2514 (solved_conflicts_obstack): New, used by...
2515 (log_resolution): this.
2516 Adjust to attach the conflict resolution to each state.
2517 Complete the description with the precedence/associativity
2518 information.
2519 (resolve_sr_conflict): Adjust.
2520 * src/print.c (print_state): Output its solved_conflicts.
2521 * tests/conflicts.at (Unresolved SR Conflicts)
2522 (Solved SR Conflicts): Exercise --report=all.
2523
25242002-05-26 Akim Demaille <akim@epita.fr>
2525
2526 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
2527 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
2528 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
2529 (token_number_t, item_number_as_token_number)
2530 (token_number_as_item_number, muscle_insert_token_number_table):
2531 Rename as...
2532 (symbol_number_t, item_number_as_symbol_number)
2533 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
2534 these, since it is more appropriate.
2535
25362002-05-26 Akim Demaille <akim@epita.fr>
2537
2538 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
2539 `Error:' lines.
2540 * data/bison.simple (yystos) [YYDEBUG]: New.
2541 (yyparse) [YYDEBUG]: Display the symbols which are popped during
2542 error recovery.
2543 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
2544
25452002-05-25 Akim Demaille <akim@epita.fr>
2546
2547 * doc/bison.texinfo (Debugging): Split into...
2548 (Tracing): this new section, its former contents, and...
2549 (Understanding): this new section.
2550 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
2551 by...
2552 (report_flag): this.
2553 Adjust all dependencies.
2554 (report_args, report_types, report_argmatch): New.
2555 (usage, getargs): Report/support -r, --report.
2556 * src/options.h
2557 (struct option_table_struct): Rename as..,
2558 (struct option_table_s): this.
2559 Rename the `set_flag' member to `flag' to match with getopt_long's
2560 struct.
2561 * src/options.c (option_table): Split verbose into an entry for
2562 %verbose, and another for --verbose.
2563 Support --report/-r, so remove -r from the obsolete --raw.
2564 * src/print.c: Attach full item sets and lookaheads reports to
2565 report_flag instead of trace_flag.
2566 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
2567
25682002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2569 and Paul Eggert <eggert@twinsun.com>
2570
2571 * data/bison.simple (yyparse): Correct error handling to conform to
2572 POSIX and yacc. Specifically, after syntax error is discovered,
2573 do not reduce further before shifting the error token.
2574 Clean up the code a bit by removing the labels yyerrdefault,
2575 yyerrhandle, yyerrpop.
2576 * NEWS: Document the above.
2577
25782002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2579
2580 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
2581 type; it isn't always big enough, since it doesn't necessarily
2582 include non-terminals.
2583 (yytranslate): Expand definition of yy_token_number_type, so that
2584 the latter can be removed.
2585 (yy_token_number_type): Remove, only one use.
2586 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
2587 don't use TokenNumberType as element type.
2588
2589 * tests/regression.at: Modify expected output to agree with change
2590 to yyr1 and yytranslate.
2591
25922002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
2593
2594 * src/reader.c (parse_action): Use copy_character instead of
2595 obstack_1grow.
2596
25972002-05-13 Akim Demaille <akim@epita.fr>
2598
2599 * tests/regression.at (Token definitions): Prototype yylex and
2600 yyerror.
2601
26022002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2603
2604 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
2605 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
2606 32-bit arithmetic.
2607 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
2608
26092002-05-07 Akim Demaille <akim@epita.fr>
2610
2611 * tests/synclines.at: Be sure to prototype yylex and yyerror to
2612 avoid GCC warnings.
2613
26142002-05-07 Akim Demaille <akim@epita.fr>
2615
2616 Kill GCC warnings.
2617
2618 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
2619 over the RHS of each rule.
2620 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
2621 * src/state.h (state_t): Member `nitems' is unsigned short.
2622 * src/LR0.c (get_state): Adjust.
2623 * src/reader.c (packgram): Likewise.
2624 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
2625 `Type'.
2626 (muscle_insert_int_table): Remove, unused.
2627 (prepare_rules): Remove `max'.
2628
26292002-05-06 Akim Demaille <akim@epita.fr>
2630
2631 * src/closure.c (print_firsts): Display of the symbol tags.
2632 (bitmatrix_print): Move to...
2633 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
2634 here.
2635 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
2636
26372002-05-06 Akim Demaille <akim@epita.fr>
2638
2639 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
2640 hash_do_for_each.
2641
26422002-05-06 Akim Demaille <akim@epita.fr>
2643
2644 * src/LR0.c (new_state, get_state): Instead of using the global
2645 `kernel_size' and `kernel_base', have two new arguments:
2646 `core_size' and `core'.
2647 Adjust callers.
2648
26492002-05-06 Akim Demaille <akim@epita.fr>
2650
2651 * src/reader.c (packgram): No longer end `ritem' with a 0
2652 sentinel: it is not used.
2653
26542002-05-05 Akim Demaille <akim@epita.fr>
2655
2656 New experimental feature: display the lookaheads in the report and
2657 graph.
2658
2659 * src/print (print_core): When --trace-flag, display the rules
2660 lookaheads.
2661 * src/print_graph.c (print_core): Likewise.
2662 Swap the arguments.
2663 Adjust caller.
2664
26652002-05-05 Akim Demaille <akim@epita.fr>
2666
2667 * tests/torture.at (Many lookaheads): New test.
2668
26692002-05-05 Akim Demaille <akim@epita.fr>
2670
2671 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
2672 (GENERATE_MUSCLE_INSERT_TABLE): this.
2673 (output_int_table, output_unsigned_int_table, output_short_table)
2674 (output_token_number_table, output_item_number_table): Replace with...
2675 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
2676 (muscle_insert_short_table, muscle_insert_token_number_table)
2677 (muscle_insert_item_number_table): these.
2678 Adjust all callers.
2679 (prepare_tokens): Don't free `translations', since...
2680 * src/reader.h, src/reader.c (grammar_free): do it.
2681 Move to...
2682 * src/gram.h, src/gram.c (grammar_free): here.
2683 * data/bison.simple, data/bison.c++: b4_token_number_max is now
2684 b4_translate_max.
2685
26862002-05-05 Akim Demaille <akim@epita.fr>
2687
2688 * src/output.c (output_unsigned_int_table): New.
2689 (prepare_rules): `i' is unsigned.
2690 `prhs', `rline', `r2' are unsigned int.
2691 Rename muscle `rhs_number_max' as `rhs_max'.
2692 Output muscles `prhs_max', `rline_max', and `r2_max'.
2693 Free rline and r1.
2694 * data/bison.simple, data/bison.c++: Adjust to use these muscles
2695 to compute types instead of constant types.
2696 * tests/regression.at (Web2c Actions): Adjust.
2697
26982002-05-04 Akim Demaille <akim@epita.fr>
2699
2700 * src/symtab.h (SALIAS, SUNDEF): Rename as...
2701 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
2702 Adjust dependencies.
2703 * src/output.c (token_definitions_output): Be sure not to output a
2704 `#define 'a'' when fed with `%token 'a' "a"'.
2705 * tests/regression.at (Token definitions): New.
2706
27072002-05-03 Paul Eggert <eggert@twinsun.com>
2708
2709 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
2710 for K&R C.
2711
27122002-05-03 gettextize <bug-gnu-gettext@gnu.org>
2713
2714 * Makefile.am (SUBDIRS): Remove intl.
2715 (EXTRA_DIST): Add config/config.rpath.
2716
27172002-05-03 Akim Demaille <akim@epita.fr>
2718
2719 * data/bison.simple (m4_if): Don't output empty enums.
2720 And actually, output valid enum definitions :(.
2721
27222002-05-03 Akim Demaille <akim@epita.fr>
2723
2724 * configure.bat: Remove, completely obsolete.
2725 * Makefile.am (EXTRA_DIST): Adjust.
2726 Don't distribute config.rpath...
2727 * config/Makefile.am (EXTRA_DIST): Do it.
2728
27292002-05-03 Akim Demaille <akim@epita.fr>
2730
2731 * configure.in (GETTEXT_VERSION): New.
2732 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
2733
27342002-05-03 Akim Demaille <akim@epita.fr>
2735
2736 * data/bison.simple (b4_token_enum): New.
2737 (b4_token_defines): Use it to output tokens both as #define and
2738 enums.
2739 Suggested by Paul Eggert.
2740 * src/output.c (token_definitions_output): Don't output spurious
2741 white spaces.
2742
27432002-05-03 Akim Demaille <akim@epita.fr>
2744
2745 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
2746
27472002-05-02 Robert Anisko <robert@lrde.epita.fr>
2748
2749 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
2750 Update the stack class, give a try to deque as the default container.
2751
27522002-05-02 Akim Demaille <akim@epita.fr>
2753
2754 * data/bison.simple (yyparse): Do not implement @$ = @1.
2755 (YYLLOC_DEFAULT): Adjust to do it.
2756 * doc/bison.texinfo (Location Default Action): Fix.
2757
27582002-05-02 Akim Demaille <akim@epita.fr>
2759
2760 * src/reader.c (parse_braces): Merge into...
2761 (parse_action): this.
2762
27632002-05-02 Akim Demaille <akim@epita.fr>
2764
2765 * configure.in (ALL_LINGUAS): Remove.
2766 * po/LINGUAS, hr.po: New.
2767
27682002-05-02 Akim Demaille <akim@epita.fr>
2769
2770 Remove the so called hairy (semantic) parsers.
2771
2772 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
2773 * src/gram.h, src/gram.c (semantic_parser): Remove.
2774 (rule_t): Remove the guard and guard_line members.
2775 * src/lex.h (token_t): remove tok_guard.
2776 * src/options.c (option_table): Remove %guard and %semantic_parser
2777 support.
2778 * src/output.c, src/output.h (guards_output): Remove.
2779 (prepare): Adjust.
2780 (token_definitions_output): Don't output the `T'
2781 tokens (???).
2782 (output_skeleton): Don't output the guards.
2783 * src/files.c, src/files.c (attrsfile): Remove.
2784 * src/reader.c (symbol_list): Remove the guard and guard_line
2785 members.
2786 Adjust dependencies.
2787 (parse_guard): Remove.
2788 * data/bison.hairy: Remove.
2789 * doc/bison.texinfo (Environment Variables): Remove occurrences of
2790 BISON_HAIRY.
2791
27922002-05-02 Akim Demaille <akim@epita.fr>
2793
2794 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
2795 (parse_guard): Rename the formal argument `stack_offset' as
2796 `rule_length', which is more readable.
2797 Adjust callers.
2798 (copy_at, copy_dollar): Instead of outputting the hard coded
2799 values of $$, $n and so forth, output invocation to b4_lhs_value,
2800 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
2801 Note: this patch partially drops `semantic-parser' support: it
2802 always does `rule_length - n', where semantic parsers ought to
2803 always use `-n'.
2804 * data/bison.simple, data/bison.c++ (b4_lhs_value)
2805 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
2806
28072002-05-02 Akim Demaille <akim@epita.fr>
2808
2809 * configure.in (AC_INIT): Bump to 1.49b.
2810 (AM_INIT_AUTOMAKE): Short invocation.
2811
28122002-05-02 Akim Demaille <akim@epita.fr>
2813
2814 Version 1.49a.
2815
28162002-05-01 Akim Demaille <akim@epita.fr>
2817
2818 * src/skeleton.h: Remove.
2819
28202002-05-01 Akim Demaille <akim@epita.fr>
2821
2822 * src/skeleton.h: Fix the #endif.
2823 Reported by Magnus Fromreide.
2824
28252002-04-26 Paul Eggert <eggert@twinsun.com>
2826
2827 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
2828 Define if we define YYSTYPE and YYLTYPE, respectively.
2829 (YYCOPY): Fix [] quoting problem in the non-GCC case.
2830
28312002-04-25 Robert Anisko <robert@lrde.epita.fr>
2832
2833 * src/scan-skel.l: Postprocess quadrigraphs.
2834
2835 * src/reader.c (copy_character): New function, used to output
2836 single characters while replacing `[' and `]' with quadrigraphs, to
2837 avoid troubles with M4 quotes.
2838 (copy_comment): Output characters with copy_character.
2839 (read_additionnal_code): Likewise.
2840 (copy_string2): Likewise.
2841 (copy_definition): Likewise.
2842
2843 * tests/calc.at: Exercise M4 quoting.
2844
28452002-04-25 Akim Demaille <akim@epita.fr>
2846
2847 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
2848 between `!' and the command.
2849 Reported by Paul Eggert.
2850
28512002-04-24 Robert Anisko <robert@lrde.epita.fr>
2852
2853 * tests/calc.at: Exercise prologue splitting.
2854
2855 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
2856 `b4_post_prologue' instead of `b4_prologue'.
2857
2858 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
2859 muscles.
2860 (output): Free pre_prologue_obstack and post_prologue_obstack.
2861 * src/files.h, src/files.c (attrs_obstack): Remove.
2862 (pre_prologue_obstack, post_prologue_obstack): New.
2863 * src/reader.c (copy_definition): Add a parameter to specify the
2864 obstack to fill, instead of using attrs_obstack unconditionally.
2865 (read_declarations): Pass pre_prologue_obstack to copy_definition if
2866 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
2867
28682002-04-23 Paul Eggert <eggert@twinsun.com>
2869
2870 * data/bison.simple: Remove unnecessary commentary and white
2871 space differences from 1_29-branch.
2872 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
2873
2874 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
2875 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
2876 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
2877 constructors or destructors.
2878
2879 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
2880
28812002-04-23 Akim Demaille <akim@epita.fr>
2882
2883 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
2884 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
2885 location with columns.
2886 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
2887 All reported by Paul Eggert.
2888
28892002-04-22 Akim Demaille <akim@epita.fr>
2890
2891 * src/reduce.c (dump_grammar): Move to...
2892 * src/gram.h, src/gram.c (grammar_dump): here.
2893 Be sure to separate long item numbers.
2894 Don't read the members of a rule's prec if its nil.
2895
28962002-04-22 Akim Demaille <akim@epita.fr>
2897
2898 * src/output.c (table_size, table_grow): New.
2899 (MAXTABLE): Remove, replace uses with table_size.
2900 (pack_vector): Instead of dying when the table is too big, grow it.
2901
29022002-04-22 Akim Demaille <akim@epita.fr>
2903
2904 * data/bison.simple (yyr1): Its type is that of a token number.
2905 * data/bison.c++ (r1_): Likewise.
2906 * tests/regression.at (Web2c Actions): Adjust.
2907
29082002-04-22 Akim Demaille <akim@epita.fr>
2909
2910 * src/reader.c (token_translations_init): 256 is now the default
2911 value for the error token, i.e., it will be assigned another
2912 number if the user assigned 256 to one of her tokens.
2913 (reader): Don't force 256 to error.
2914 * doc/bison.texinfo (Symbols): Adjust.
2915 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
2916 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
2917 etc. instead of 10, 20, 30 (which was used to `jump' over error
2918 (256) and undefined (2)).
2919
29202002-04-22 Akim Demaille <akim@epita.fr>
2921
2922 Propagate more token_number_t.
2923
2924 * src/gram.h (token_number_as_item_number)
2925 (item_number_as_token_number): New.
2926 * src/output.c (GENERATE_OUTPUT_TABLE): New.
2927 Use it to create output_item_number_table and
2928 output_token_number_table.
2929 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
2930 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
2931 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
2932 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
2933
29342002-04-22 Akim Demaille <akim@epita.fr>
2935
2936 * src/output.h, src/output.c (get_lines_number): Remove.
2937
29382002-04-19 Akim Demaille <akim@epita.fr>
2939
2940 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
2941 as Lex/Flex'.
2942 (Debugging): More details about enabling the debugging features.
2943 (Table of Symbols): Describe $$, $n, @$, and @n.
2944 Suggested by Tim Josling.
2945
29462002-04-19 Akim Demaille <akim@epita.fr>
2947
2948 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
2949
29502002-04-10 Akim Demaille <akim@epita.fr>
2951
2952 * src/system.h: Rely on HAVE_LIMITS_H.
2953 Suggested by Paul Eggert.
2954
29552002-04-09 Akim Demaille <akim@epita.fr>
2956
2957 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
2958 full stderr, and strip it according to the bison options, instead
2959 of composing the error message from different bits.
2960 This makes it easier to check for several error messages.
2961 Adjust all the invocations.
2962 Add an invocation exercising the error token.
2963 Add an invocation demonstrating a stupid error message.
2964 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
2965 Adjust the tests.
2966 Error message are for stderr, not stdout.
2967
29682002-04-09 Akim Demaille <akim@epita.fr>
2969
2970 * src/gram.h, src/gram.c (error_token_number): Remove, use
2971 errtoken->number.
2972 * src/reader.c (reader): Don't specify the user token number (2)
2973 for $undefined, as it uselessly prevents using it.
2974 * src/gram.h (token_number_t): Move to...
2975 * src/symtab.h: here.
2976 (state_t.number): Is a token_number_t.
2977 * src/print.c, src/reader.c: Use undeftoken->number instead of
2978 hard coded 2.
2979 (Even though this 2 is not the same as above: the number of the
2980 undeftoken remains being 2, it is its user token number which
2981 might not be 2).
2982 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
2983 `user_token_number_max'.
2984 Output `undef_token_number'.
2985 * data/bison.simple, data/bison.c++: Use them.
2986 Be sure to map invalid yylex return values to
2987 `undef_token_number'. This saves us from gratuitous SEGV.
2988
2989 * tests/conflicts.at (Solved SR Conflicts)
2990 (Unresolved SR Conflicts): Adjust.
2991 * tests/regression.at (Web2c Actions): Adjust.
2992
29932002-04-08 Akim Demaille <akim@epita.fr>
2994
2995 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
2996 Adding #line.
2997 Remove the duplicate `typedefs'.
2998 (RhsNumberType): Fix the declaration and various other typos.
2999 Use __ofile__.
3000 * data/bison.simple: Use __ofile__.
3001 * src/scan-skel.l: Handle __ofile__.
3002
30032002-04-08 Akim Demaille <akim@epita.fr>
3004
3005 * src/gram.h (item_number_t): New, the type of item numbers in
3006 RITEM. Note that it must be able to code symbol numbers as
3007 positive number, and the negation of rule numbers as negative
3008 numbers.
3009 Adjust all dependencies (pretty many).
3010 * src/reduce.c (rule): Remove this `short *' pointer: use
3011 item_number_t.
3012 * src/system.h (MINSHORT, MAXSHORT): Remove.
3013 Include `limits.h'.
3014 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
3015 (shortcpy): Remove.
3016 (MAXTABLE): Move to...
3017 * src/output.c (MAXTABLE): here.
3018 (prepare_rules): Use output_int_table to output rhs.
3019 * data/bison.simple, data/bison.c++: Adjust.
3020 * tests/torture.at (Big triangle): Move the limit from 254 to
3021 500.
3022 * tests/regression.at (Web2c Actions): Ajust.
3023
3024 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
3025 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
3026 passes, but produces negative #line number, once fixed, GCC is
3027 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
3028 C), it passes.
3029 * src/state.h (state_h): Code input lines on ints, not shorts.
3030
30312002-04-08 Akim Demaille <akim@epita.fr>
3032
3033 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
3034 and then the grammar.
3035
30362002-04-08 Akim Demaille <akim@epita.fr>
3037
3038 * src/system.h: No longer using strndup.
3039
30402002-04-07 Akim Demaille <akim@epita.fr>
3041
3042 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
3043 * src/output.c (output_table_data): Return the longest number.
3044 (prepare_tokens): Output `token_number_max').
3045 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
3046 New.
3047 Use them to define yy_token_number_type/TokenNumberType.
3048 Use this type for yytranslate.
3049 * tests/torture.at (Big triangle): Push the limit from 124 to
3050 253.
3051 * tests/regression.at (Web2c Actions): Adjust.
3052
30532002-04-07 Akim Demaille <akim@epita.fr>
3054
3055 * tests/torture.at (Big triangle): New.
3056 (GNU AWK Grammar, GNU Cim Grammar): Move to...
3057 * tests/existing.at: here.
3058
30592002-04-07 Akim Demaille <akim@epita.fr>
3060
3061 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
3062 nritems.
3063 Adjust dependencies.
3064
30652002-04-07 Akim Demaille <akim@epita.fr>
3066
3067 * src/reader.c: Normalize increments to prefix form.
3068
30692002-04-07 Akim Demaille <akim@epita.fr>
3070
3071 * src/reader.c, symtab.c: Remove debugging code.
3072
30732002-04-07 Akim Demaille <akim@epita.fr>
3074
3075 Rename all the `bucket's as `symbol_t'.
3076
3077 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
3078 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
3079 * src/symtab.c, src/symtab.h (bucket): Rename as...
3080 (symbol_t): this.
3081 (symbol_list_new, bucket_check_defined, bucket_make_alias)
3082 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
3083 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
3084 (buckets_new, buckets_free, buckets_do): Rename as...
3085 (symbol_list_new, symbol_check_defined, symbol_make_alias)
3086 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
3087 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
3088 (symbols_new, symbols_free, symbols_do): these.
3089
30902002-04-07 Akim Demaille <akim@epita.fr>
3091
3092 Use lib/hash for the symbol table.
3093
3094 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
3095 EOF.
3096 * src/lex.c (lex): Set the `number' member of new terminals.
3097 * src/reader.c (bucket_check_defined, bucket_make_alias)
3098 (bucket_check_alias_consistence, bucket_translation): New.
3099 (reader, grammar_free, readgram, token_translations_init)
3100 (packsymbols): Adjust.
3101 (reader): Number the predefined tokens.
3102 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
3103 for predefined tokens.
3104 * src/symtab.h (bucket): Remove all the hash table related
3105 members.
3106 * src/symtab.c (symtab): Replace by...
3107 (bucket_table): this.
3108 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
3109 (buckets_new, buckets_do): New.
3110
31112002-04-07 Akim Demaille <akim@epita.fr>
3112
3113 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
3114 (start_symbol, max_user_token_number, semantic_parser)
3115 (error_token_number): Initialize.
3116 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
3117 Initialize.
3118 (reader): Don't.
3119 (errtoken, eoftoken, undeftoken, axiom): Extern.
3120
31212002-04-07 Akim Demaille <akim@epita.fr>
3122
3123 * src/gram.h (rule_s): prec and precsym are now pointers
3124 to the bucket giving the priority/associativity.
3125 Member `associativity' removed: useless.
3126 * src/reduce.c, src/conflicts.c: Adjust.
3127
31282002-04-07 Akim Demaille <akim@epita.fr>
3129
3130 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
3131 Properly escape the symbols' TAG when outputting them.
3132
31332002-04-07 Akim Demaille <akim@epita.fr>
3134
3135 * src/lalr.h (LA): Is a bitsetv, not bitset*.
3136
31372002-04-07 Akim Demaille <akim@epita.fr>
3138
3139 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
3140 (LArule): this, which is an array to rule_t*.
3141 * src/print.c, src/conflicts.c: Adjust.
3142
31432002-04-07 Akim Demaille <akim@epita.fr>
3144
3145 * src/gram.h (rule_t): Rename `number' as `user_number'.
3146 `number' is a new member.
3147 Adjust dependencies.
3148 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
3149
31502002-04-07 Akim Demaille <akim@epita.fr>
3151
3152 As a result of the previous patch, it is no longer needed
3153 to reorder ritem itself.
3154
3155 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
3156
31572002-04-07 Akim Demaille <akim@epita.fr>
3158
3159 Be sure never to walk through RITEMS, but use only data related to
3160 the rules themselves. RITEMS should be banished.
3161
3162 * src/output.c (output_token_translations): Rename as...
3163 (prepare_tokens): this.
3164 In addition to `translate', prepare the muscles `tname' and
3165 `toknum', which were handled by...
3166 (output_rule_data): this.
3167 Remove, and move the remainder of its outputs into...
3168 (prepare_rules): this new routines, which also merges content from
3169 (output_gram): this.
3170 (prepare_rules): Be sure never to walk through RITEMS.
3171 (output_stos): Rename as...
3172 (prepare_stos): this.
3173 (output): Always invoke prepare_states, after all, just don't use it
3174 in the output if you don't need it.
3175
31762002-04-07 Akim Demaille <akim@epita.fr>
3177
3178 * src/LR0.c (new_state): Display `nstates' as the name of the
3179 newly created state.
3180 Adjust to initialize first_state and last_state if needed.
3181 Be sure to distinguish the initial from the final state.
3182 (new_states): Create the itemset of the initial state, and use
3183 new_state.
3184 * src/closure.c (closure): Now that the initial state has its
3185 items properly set, there is no need for a special case when
3186 creating `ruleset'.
3187
3188 As a result, now the rule 0, reducing to $axiom, is visible in the
3189 outputs. Adjust the test suite.
3190
3191 * tests/conflicts.at (Solved SR Conflicts)
3192 (Unresolved SR Conflicts): Adjust.
3193 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
3194 * tests/conflicts.at (S/R in initial): New.
3195
31962002-04-07 Akim Demaille <akim@epita.fr>
3197
3198 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
3199 the RHS of the rules.
3200 * src/output.c (output_gram): Likewise.
3201
32022002-04-07 Akim Demaille <akim@epita.fr>
3203
3204 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
3205 bucket.
3206 Adjust all dependencies.
3207 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
3208 `number' of the buckets too.
3209 * src/gram.h: Include `symtab.h'.
3210 (associativity): Move to...
3211 * src/symtab.h: here.
3212 No longer include `gram.h'.
3213
32142002-04-07 Akim Demaille <akim@epita.fr>
3215
3216 * src/gram.h, src/gram.c (rules_rhs_length): New.
3217 (ritem_longest_rhs): Use it.
3218 * src/gram.h (rule_t): `number' is a new member.
3219 * src/reader.c (packgram): Set it.
3220 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
3221 the end of `rules', and count them out of `nrules'.
3222 (reduce_output, dump_grammar): Adjust.
3223 * src/print.c (print_grammar): It is no longer needed to check for
3224 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
3225 * tests/reduce.at (Reduced Automaton): New test.
3226
32272002-04-07 Akim Demaille <akim@epita.fr>
3228
3229 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
3230 lacking `+ 1' to nrules, Bison reported as useless a token if it
3231 was used solely to set the precedence of the last rule...
3232
32332002-04-07 Akim Demaille <akim@epita.fr>
3234
3235 * data/bison.c++, data/bison.simple: Don't output the current file
3236 name in #line, to avoid useless diffs between two identical
3237 outputs under different names.
3238
32392002-04-07 Akim Demaille <akim@epita.fr>
3240
3241 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
3242 Normalize loops to using `< nrules + 1', not `<= nrules'.
3243
32442002-04-07 Akim Demaille <akim@epita.fr>
3245
3246 * TODO: Update.
3247
32482002-04-07 Akim Demaille <akim@epita.fr>
3249
3250 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
3251 bucket.value as bucket.number.
3252
32532002-04-07 Akim Demaille <akim@epita.fr>
3254
3255 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
3256 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
3257 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
3258 RHS, instead of being an index in RITEMS.
3259
32602002-04-04 Paul Eggert <eggert@twinsun.com>
3261
3262 * doc/bison.texinfo: Update copyright date.
3263 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
3264 (Symbols): Warn about running Bison in one character set,
3265 but compiling and/or running in an incompatible one.
3266 Warn about character code 256, too.
3267
32682002-04-03 Paul Eggert <eggert@twinsun.com>
3269
3270 * src/bison.data (YYSTACK_ALLOC): Depend on whether
3271 YYERROR_VERBOSE is nonzero, not whether it is defined.
3272
3273 Merge changes from bison-1_29-branch.
3274
32752002-03-20 Paul Eggert <eggert@twinsun.com>
3276
3277 Merge fixes from Debian bison_1.34-1.diff.
3278
3279 * configure.in (AC_PREREQ): 2.53.
3280
32812002-03-20 Akim Demaille <akim@epita.fr>
3282
3283 * src/conflicts.c (log_resolution): Argument `resolution' is const.
3284
32852002-03-19 Paul Eggert <eggert@twinsun.com>
3286
3287 * src/bison.simple (YYCOPY): New macro.
3288 (YYSTACK_RELOCATE): Use it.
3289 Remove Type arg; no longer needed. All callers changed.
3290 (yymemcpy): Remove; no longer needed.
3291
3292 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
3293 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
3294
32952002-03-19 Akim Demaille <akim@epita.fr>
3296
3297 Test and fix the #line outputs.
3298
3299 * tests/atlocal.at (GCC): New.
3300 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
3301 (Prologue synch line, ,%union synch line, Postprologue synch line)
3302 (Action synch line, Epilogue synch line): New tests.
3303 * src/reader.c (parse_union_decl): Define the muscle stype_line.
3304 * data/bison.simple, data/bison.c++: Use it.
3305
33062002-03-19 Akim Demaille <akim@epita.fr>
3307
3308 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
3309 (Solved SR Conflicts, %expect not enough, %expect right)
3310 (%expect too much): Move to...
3311 * tests/conflicts.at: this new file.
3312
33132002-03-19 Akim Demaille <akim@epita.fr>
3314
3315 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
3316 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
3317 that we can move to enums for instance.
3318 * src/output.c (token_definitions_output): Output a list of
3319 `token-name, token-number' instead of the #define.
3320 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
3321
33222002-03-14 Akim Demaille <akim@epita.fr>
3323
3324 Use Gettext 0.11.1.
3325
33262002-03-09 Robert Anisko <robert@lrde.epita.fr>
3327
3328 * data/bison.c++: Make the user able to add members to the generated
3329 parser by subclassing.
3330
33312002-03-05 Robert Anisko <robert@lrde.epita.fr>
3332
3333 * src/reader.c (read_additionnal_code): `c' should be an integer, not
3334 a character.
3335 Reported by Nicolas Tisserand and Nicolas Burrus.
3336
33372002-03-04 Robert Anisko <robert@lrde.epita.fr>
3338
3339 * src/reader.c: Warn about lacking semi-colons, do not complain.
3340
33412002-03-04 Robert Anisko <robert@lrde.epita.fr>
3342
3343 * data/bison.c++: Remove a debug line.
3344
33452002-03-04 Robert Anisko <robert@lrde.epita.fr>
3346
3347 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
3348 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
3349 provide a default implementation.
3350
33512002-03-04 Akim Demaille <akim@epita.fr>
3352
3353 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
3354 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
3355 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
3356 * tests/semantic.at (Parsing Guards): Similarly.
3357 * src/reader.at (readgram): Complain if the last rule is not ended
3358 with a semi-colon.
3359
33602002-03-04 Akim Demaille <akim@epita.fr>
3361
3362 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
3363 * src/closure.c: here.
3364 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
3365 RTC.
3366 * src/warshall.h, src/warshall.c: Remove.
3367 * tests/sets.at (Broken Closure): Adjust.
3368
33692002-03-04 Akim Demaille <akim@epita.fr>
3370
3371 * src/output.c (output_skeleton): tempdir is const.
3372 bytes_read is unused.
3373
33742002-03-04 Akim Demaille <akim@epita.fr>
3375
3376 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
3377 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
3378 Update.
3379 From Michael Hayes.
3380
33812002-03-04 Akim Demaille <akim@epita.fr>
3382
3383 * src/closure.c (closure): `r' is unused.
3384
33852002-03-04 Akim Demaille <akim@epita.fr>
3386
3387 * tests/sets.at (Broken Closure): Add the ending `;'.
3388 * src/reader.at (readgram): Complain if a rule is not ended with a
3389 semi-colon.
3390
33912002-03-04 Akim Demaille <akim@epita.fr>
3392
3393 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
3394 (count_sr_conflicts): Use bitset_count.
3395 * src/reduce.c (inaccessable_symbols): Ditto.
3396 (bits_size): Remove.
3397 * src/warshall.h, src/warshall.c: Convert to bitsetv.
3398
33992002-03-04 Akim Demaille <akim@epita.fr>
3400
3401 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
3402 * src/reduce.c: Remove the `bitset_zero's following the
3403 `bitset_create's, as now it is performed by the latter.
3404
34052002-03-04 Akim Demaille <akim@epita.fr>
3406
3407 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
3408 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
3409 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
3410 latest sources from Michael.
3411
34122002-03-04 Akim Demaille <akim@epita.fr>
3413
3414 * src/output.c (output): Don't free the grammar.
3415 * src/reader.c (grammar_free): New.
3416 * src/main.c (main): Call it and don't free symtab here.
3417
34182002-03-04 Akim Demaille <akim@epita.fr>
3419
3420 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
3421 before returning.
3422 Reported by Benoit Perrot.
3423
34242002-03-04 Akim Demaille <akim@epita.fr>
3425
3426 Use bitset operations when possible, not loops over bits.
3427
3428 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
3429 bitset_or.
3430 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
3431 * src/reduce.c (useless_nonterminals): Formatting changes.
3432 * src/warshall.c (TC): Use bitset_or.
3433
34342002-03-04 Akim Demaille <akim@epita.fr>
3435
3436 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
3437 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
3438 Ditto.
3439
34402002-03-04 Akim Demaille <akim@epita.fr>
3441
3442 * src/lalr.c (F): Now a bitset*.
3443 Adjust all dependencies.
3444
34452002-03-04 Akim Demaille <akim@epita.fr>
3446
3447 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
3448 Adjust all dependencies.
3449
34502002-03-04 Akim Demaille <akim@epita.fr>
3451
3452 * src/L0.c, src/LR0.h (nstates): Be size_t.
3453 Adjust comparisons (signed vs unsigned).
3454 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
3455 bitset*.
3456 Adjust all dependencies.
3457
34582002-03-04 Akim Demaille <akim@epita.fr>
3459
3460 * src/closure.c (firsts): Now, also a bitset.
3461 Adjust all dependencies.
3462 (varsetsize): Remove, now unused.
3463 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
3464
34652002-03-04 Akim Demaille <akim@epita.fr>
3466
3467 * src/print.c: Convert to use bitset.h, not hand coded iterations
3468 over ints.
3469
34702002-03-04 Akim Demaille <akim@epita.fr>
3471
3472 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
3473
34742002-03-04 Akim Demaille <akim@epita.fr>
3475
3476 * src/closure.c (ruleset): Be a bitset.
3477 (rulesetsize): Remove.
3478
34792002-03-04 Akim Demaille <akim@epita.fr>
3480
3481 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
3482 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
3483 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
3484 * src/closure.c (fderives): Be an array of bitsets.
3485
34862002-02-28 Robert Anisko <robert@lrde.epita.fr>
3487
3488 * data/bison.c++: Merge the two generated headers. Insert a copyright
3489 notice in each output file.
3490
34912002-02-28 Akim Demaille <akim@epita.fr>
3492
3493 * data/bison.c++: Copy the prologue of bison.simple to fetch
3494 useful M4 definitions, such as b4_header_guard.
3495
34962002-02-25 Akim Demaille <akim@epita.fr>
3497
3498 * src/getargs.c (version): Give the name of the authors, and use a
3499 translator friendly scheme for the bgr
3500 copyright notice.
3501
35022002-02-25 Akim Demaille <akim@epita.fr>
3503
3504 * src/output.c (header_output): Remove, now handled completely via
3505 M4.
3506
35072002-02-25 Akim Demaille <akim@epita.fr>
3508
3509 * m4/m4.m4: New, from CVS Autoconf.
3510 * configure.in: Invoke it.
3511 * src/output.c (output_skeleton): Use its result instead of the
3512 hard coded name.
3513
35142002-02-25 Akim Demaille <akim@epita.fr>
3515
3516 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
3517 Fileutils 4.1.5.
3518 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
3519 * src/output.c (output_skeleton): Use mkstemp to create a real
3520 temporary file.
3521 Move the filling of `skeleton' and its muscle to...
3522 (prepare): here.
3523 (output): Move the definition of the prologue muscle to...
3524 (prepare): here.
3525 * src/system.h (DEFAULT_TMPDIR): New.
3526
35272002-02-14 Paul Eggert <eggert@twinsun.com>
3528
3529 Remove the support for C++ namespace cleanliness; it was
3530 causing more problems than it was curing, since it didn't work
3531 properly on some nonstandard C++ compilers. This can wait
3532 for a proper C++ parser.
3533
3534 * NEWS: Document this.
3535 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
3536 of C++, as it's treated like C now.
3537 * src/bison.simple (YYSTD): Remove.
3538 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
3539 Treat C++ just like Standard C instead of trying to support
3540 namespace cleanliness.
3541
35422002-02-14 Akim Demaille <akim@epita.fr>
3543
3544 * tests/regression.at (else): Adjust to Andreas' change.
3545
35462002-02-14 Akim Demaille <akim@epita.fr>
3547
3548 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
3549
35502002-02-13 Andreas Schwab <schwab@suse.de>
3551
3552 * src/output.c (output_rule_data): Don't output NULL, it might
3553 not be defined yet.
3554
35552002-02-11 Robert Anisko <robert@lrde.epita.fr>
3556
3557 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
3558 (Copyright notice): Update.
3559
35602002-02-11 Akim Demaille <akim@epita.fr>
3561
3562 * tests/regression.at (%nonassoc and eof): Don't include
3563 nonportable headers.
3564
35652002-02-08 Robert Anisko <robert@lrde.epita.fr>
3566
3567 * data/bison.c++: Correct error recovery. Make the user able to
3568 initialize the starting location.
3569
35702002-02-07 Akim Demaille <akim@epita.fr>
3571
3572 * tests/input.at: New.
3573
35742002-02-07 Robert Anisko <robert@lrde.epita.fr>
3575
3576 * data/bison.c++: Replace some direct m4 expansions by constants. Be
3577 more consistent when naming methods and variables. Put preprocessor
3578 directives around tables only needed for debugging.
3579
35802002-02-07 Robert Anisko <robert@lrde.epita.fr>
3581
3582 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
3583 C++ parsers.
3584 (yy::b4_name::parse): Use print_.
3585
35862002-02-07 Robert Anisko <robert@lrde.epita.fr>
3587
3588 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
3589
35902002-02-07 Robert Anisko <robert@lrde.epita.fr>
3591
3592 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
3593 C++ parsers.
3594 (yy::b4_name::parse): Build verbose error messages, and use error_.
3595
35962002-02-06 Robert Anisko <robert@lrde.epita.fr>
3597
3598 * data/bison.c++: Fix m4 quoting in comments.
3599
36002002-02-06 Robert Anisko <robert@lrde.epita.fr>
3601
3602 * data/bison.c++: Adjust the parser code. Fix some muscles that were
3603 not expanded by m4.
3604
36052002-02-05 Akim Demaille <akim@epita.fr>
3606
3607 * data/bison.c++: Adjust to the M4 back end.
3608 More is certainly needed.
3609
36102002-02-05 Akim Demaille <akim@epita.fr>
3611
3612 Give a try to M4 as a back end.
3613
3614 * lib/readpipe.c: New, from wdiff.
3615 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
3616 BISON_HAIRY.
3617 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
3618 specific values. Now it is m4 that performs the lookup.
3619 * src/parse-skel.y: Remove.
3620 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
3621 * src/output.c (actions_output, guards_output)
3622 (token_definitions_output): No longer keeps track of the output
3623 line number, hence remove the second argument.
3624 (guards_output): Check against the guard member of a rule, not the
3625 action member.
3626 Adjust callers.
3627 (output_skeleton): Don't look for the skeleton location, let m4 do
3628 that.
3629 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
3630 file will be used.
3631 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
3632 (prepare): Given that for the time being changesyntax is not
3633 usable in M4, rename the muscles using `-' to `_'.
3634 Define `defines_flag', `output_parser_name' and `output_header_name'.
3635 * src/output.h (actions_output, guards_output)
3636 (token_definitions_output): Adjust prototypes.
3637 * src/scan-skel.l: Instead of scanning the skeletons, it now
3638 processes the output of m4: `__oline__' and `#output'.
3639 * data/bison.simple: Adjust to be used by M4(sugar).
3640 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
3641 to date.
3642 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
3643 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
3644 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
3645 shamelessly stolen from CVS Autoconf.
3646
36472002-02-05 Akim Demaille <akim@epita.fr>
3648
3649 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
3650 * configure.in: Check for the declarations of free and malloc.
3651 * src/muscle_tab.c: Adjust.
3652
36532002-02-05 Akim Demaille <akim@epita.fr>
3654
3655 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
3656 which have no values.
3657
36582002-02-05 Akim Demaille <akim@epita.fr>
3659
3660 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
3661 * data/: here.
3662
36632002-01-29 Paul Eggert <eggert@twinsun.com>
3664
3665 * src/bison.simple (YYSIZE_T): Do not define merely because
3666 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
3667 On some platforms, <alloca.h> does not declare YYSTD (size_t).
3668
36692002-01-27 Akim Demaille <akim@epita.fr>
3670
3671 Fix `%nonassoc and eof'.
3672
3673 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
3674 which were not properly copied! Replace
3675 memcpy (res->errs, src->errs, src->nerrs);
3676 with
3677 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
3678 !!!
3679 * tests/regression.at (%nonassoc and eof): Adjust to newest
3680 Autotest: `.' is not in the PATH.
3681
36822002-01-27 Akim Demaille <akim@epita.fr>
3683
3684 * tests/sets.at (AT_EXTRACT_SETS): New.
3685 (Nullable): Use it.
3686 (Firsts): New.
3687
36882002-01-26 Akim Demaille <akim@epita.fr>
3689
3690 * tests/actions.at, tests/calc.at, tests/headers.at,
3691 * tests/torture.at: Adjust to the newest Autotest which no longer
3692 forces `.' in the PATH.
3693
36942002-01-25 Akim Demaille <akim@epita.fr>
3695
3696 * tests/regression.at (%nonassoc and eof): New.
3697 Suggested by Robert Anisko.
3698
36992002-01-24 Akim Demaille <akim@epita.fr>
3700
3701 Bison dumps core when trying to complain about broken input files.
3702 Reported by Cris van Pelt.
3703
3704 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
3705 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
3706 into...
3707 (Invalid inputs): Strengthen: exercise parse_percent_token.
3708
37092002-01-24 Robert Anisko <robert.anisko@epita.fr>
3710
3711 * src/Makefile.am: Add bison.c++.
3712 * src/bison.c++: New skeleton.
3713
37142002-01-21 Paolo Bonzini <bonzini@gnu.org>
3715
3716 * po/it.po: New.
3717
37182002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
3719
3720 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
3721
37222002-01-20 Marc Autret <marc@gnu.org>
3723
3724 * src/files.c (compute_output_file_names): Fix
3725
37262002-01-20 Marc Autret <marc@gnu.org>
3727
3728 * tests/output.at: New test.
3729 * src/files.c (compute_base_names): Don't map extensions when
3730 the YACC flag is set, use defaults.
3731 Reported by Evgeny Stambulchik.
3732
37332002-01-20 Marc Autret <marc@gnu.org>
3734
3735 * src/system.h: Need to define __attribute__ away for non-GCC
3736 compilers as well (i.e. the vendor C compiler).
3737 Suggested by Albert Chin-A-Young.
3738
37392002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
3740
3741 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
3742 canonical definition.
3743 * src/system.h: Use the canonical definition for PARAMS (avoids
3744 a conflict with the macro from lib/hash.h).
3745
37462002-01-11 Akim Demaille <akim@epita.fr>
3747
3748 * configure.in: Use AC_FUNC_STRNLEN.
3749 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
3750
37512002-01-09 Akim Demaille <akim@epita.fr>
3752
3753 * src/files.c, src/files.h (output_infix): New.
3754 (tab_extension): Remove.
3755 (compute_base_names): Compute the former, drop the latter.
3756 * src/output.c (prepare): Insert the muscles `output-infix', and
3757 `output-suffix'.
3758 * src/parse-skel.y (string, string.1): New.
3759 (section.header): Use it.
3760 (section.yacc): Remove.
3761 (prefix): Remove too.
3762 * src/scan-skel.l: Adjust.
3763 * src/bison.simple, src/bison.hairy: Adjust.
3764
37652002-01-09 Akim Demaille <akim@epita.fr>
3766
3767 * configure.in (WERROR_CFLAGS): Compute it.
3768 * src/Makefile.am (CFLAGS): Pass it.
3769 * tests/atlocal.in (CFLAGS): Idem.
3770 * src/files.c: Fix a few warnings.
3771 (get_extension_index): Remove, unused.
3772
37732002-01-08 Akim Demaille <akim@epita.fr>
3774
3775 * src/getargs.c (AS_FILE_NAME): New.
3776 (getargs): Use it to convert DOSish file names.
3777 * src/files.c (base_name): Rename as full_base_name to avoid
3778 clashes with `base_name ()'.
3779 (filename_split): New.
3780 (compute_base_names): N-th rewrite, using filename_split.
3781
37822002-01-08 Akim Demaille <akim@epita.fr>
3783
3784 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
3785 New, stolen from the Fileutils 4.1.
3786 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
3787 * configure.in: Check for the presence of memrchr, and of its
3788 prototype.
3789
37902002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
3791
3792 * lib/hash.h (__P): Added definition for this macro.
3793 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
3794 BUILT_SOURCES, to ensure they are generated first.
3795 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
3796 %error-verbose to allow bootstrapping with bison 1.30x.
3797
37982002-01-06 Akim Demaille <akim@epita.fr>
3799
3800 * src/reader.c (parse_braces): Don't fetch the next char, the
3801 convention is to fetch on entry.
3802 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
3803 'switch' without a following semicolon.
3804 * tests/regression.at (braces parsing): New.
3805
38062002-01-06 Akim Demaille <akim@epita.fr>
3807
3808 Bison is dead wrong in its RR conflict reports.
3809
3810 * tests/torture.at (GNU Cim Grammar): New.
3811 * src/conflicts.c (count_rr_conflicts): Fix.
3812
38132002-01-06 Akim Demaille <akim@epita.fr>
3814
3815 Creating package.m4 from configure.ac causes too many problems.
3816
3817 * tests/Makefile.am (package.m4): Create it by hand,
3818 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
3819
38202002-01-06 Akim Demaille <akim@epita.fr>
3821
3822 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
3823 skeleton.h.
3824
38252002-01-04 Paul Eggert <eggert@twinsun.com>
3826
3827 * doc/bison.texinfo (Debugging):
3828 Remove YYSTDERR; it's no longer defined or used.
3829 Also, s/cstdio.h/cstdio/.
3830
38312002-01-03 Akim Demaille <akim@epita.fr>
3832
3833 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
3834
38352002-01-03 Akim Demaille <akim@epita.fr>
3836
3837 * src/parse-skel.y (process_skeleton): Don't bind the parser's
3838 tracing code to --trace, wait for a better --trace option, with
3839 args.
3840
38412002-01-03 Akim Demaille <akim@epita.fr>
3842
3843 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
3844 The ISO C++ standard is extremely clear about it: stderr is
3845 considered a macro, not a regular symbol (see table 94 `Header
3846 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
3847 Therefore std:: does not apply to it. It still does with fprintf.
3848 Also, s/cstdio.h/cstdio/.
3849
38502002-01-03 Akim Demaille <akim@epita.fr>
3851
3852 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
3853 for non system headers.
3854
38552002-01-02 Akim Demaille <akim@epita.fr>
3856
3857 Equip the skeleton chain with location tracking, runtime trace,
3858 pure parser and scanner.
3859
3860 * src/parse-skel.y: Request a pure parser, locations, and prefix
3861 renaming.
3862 (%union): Having several members with the same type does not help
3863 type mismatches, simplify.
3864 (YYPRINT, yyprint): New.
3865 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
3866 (skel_error): this.
3867 Handle locations.
3868 * src/scan-skel.l: Adjust to these changes.
3869 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
3870 (LOCATION_PRINT, skel_control_t): New.
3871
38722001-12-30 Akim Demaille <akim@epita.fr>
3873
3874 * src/parse-skel.y: Get rid of the shift/reduce conflict:
3875 replace `gb' with BLANKS.
3876 * src/scan-skel.l: Adjust.
3877
38782001-12-30 Akim Demaille <akim@epita.fr>
3879
3880 * src/system.h: We don't need nor want bcopy.
3881 Throw away MS-DOS crap: we don't need getpid.
3882 * configure.in: We don't need strndup. It was even causing
3883 problems: because Flex includes the headers *before* us,
3884 _GNU_SOURCE is not defined by config.h, and therefore strndup was
3885 not visible.
3886 * lib/xstrndup.c: New.
3887 * src/scan-skel.l: Use it.
3888 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
3889 * src/parse-skel.y: Use %directives instead of #defines.
3890
38912001-12-30 Akim Demaille <akim@epita.fr>
3892
3893 * src/skeleton.h: New.
3894 * src/output.c (output_parser, output_master_parser): Remove, dead
3895 code.
3896 * src/output.h (get_lines_number, actions_output, guards_output)
3897 (token_definitions_output): Prototype them.
3898 * src/parse-skel.y: Add the license notice.
3899 Include output.h and skeleton.h.
3900 (process_skeleton): Returns void, and takes a single parameter.
3901 * src/scan-skel.l: Add the license notice.
3902 Include skeleton.h.
3903 Don't use %option yylineno: it seems that then Flex imagines
3904 REJECT has been used, and therefore it won't reallocate its
3905 buffers (which makes no other sense to me than a bug). It results
3906 in warnings for `unused: yy_flex_realloc'.
3907
39082001-12-30 Robert Anisko <robert.anisko@epita.fr>
3909
3910 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
3911 (MUSCLE_INSERT_PREFIX): ...to there.
3912 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
3913 (MUSCLE_INSERT_PREFIX): Move from here...
3914
3915 * src/bison.hairy: Add a section directive. Put braces around muscle
3916 names. This parser skeleton is still broken, but Bison should not
3917 choke on a bad muscle 'syntax'.
3918 * src/bison.simple: Add a section directive. Put braces around muscle
3919 names.
3920
3921 * src/files.h (strsuffix, stringappend): Add declarations.
3922 (tab_extension): Add declaration.
3923 (short_base_name): Add declaration.
3924
3925 * src/files.c (strsuffix, stringappend): No longer static. These
3926 functions are used in the skeleton parser.
3927 (tab_extension): New.
3928 (compute_base_names): Use the computations done in this function
3929 to guess if the generated parsers should have '.tab' in their
3930 names.
3931 (short_base_name): No longer static.
3932
3933 * src/output.c (output_skeleton): New.
3934 (output): Disable call to output_master_parser, and give a try to
3935 a new skeleton handling system.
3936 (guards_output, actions_output): No longer static.
3937 (token_definitions_output, get_lines_number): No longer static.
3938
3939 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
3940
3941 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
3942 parse-skel.y.
3943
3944 * src/parse-skel.y: New file.
3945 * src/scan-skel.l: New file.
3946
39472001-12-29 Akim Demaille <akim@epita.fr>
3948
3949 %name-prefix is broken.
3950
3951 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
3952 Adjust all dependencies.
3953 * tests/headers.at (export YYLTYPE): Strengthen this test: use
3954 %name-prefix.
3955
3956 Renaming yylval but not yylloc is not consistent. Now we do.
3957
3958 * src/bison.simple: Prefix yylloc if used.
3959 * doc/bison.texinfo (Decl Summary): Document that.
3960
39612001-12-29 Akim Demaille <akim@epita.fr>
3962
3963 * doc/bison.texinfo: Promote `%long-directive' over
3964 `%long_directive'.
3965 Remove all references to fixed-output-files, yacc is enough.
3966
39672001-12-29 Akim Demaille <akim@epita.fr>
3968
3969 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
3970 user prologue. These are defaults.
3971 * tests/actions.at (Mid-rule actions): Make sure the user can
3972 define YYDEBUG and YYERROR_VERBOSE.
3973
39742001-12-29 Akim Demaille <akim@epita.fr>
3975
3976 * src/output.c (header_output): Don't forget to export YYLTYPE and
3977 yylloc.
3978 * tests/headers.at (export YYLTYPE): New, make sure it does.
3979 * tests/regression.at (%union and --defines, Invalid CPP headers):
3980 Move to...
3981 * tests/headers.at: here.
3982
39832001-12-29 Akim Demaille <akim@epita.fr>
3984
3985 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
3986
39872001-12-29 Akim Demaille <akim@epita.fr>
3988
3989 * tests/actions.at (Mid-rule actions): Output on a single line
3990 instead of several.
3991
39922001-12-29 Akim Demaille <akim@epita.fr>
3993
3994 * doc/bison.texinfo: Formatting changes.
3995
39962001-12-29 Akim Demaille <akim@epita.fr>
3997
3998 Don't store the token defs in a muscle, just be ready to output it
3999 on command. Now possible via `symbols'. Fixes a memory leak.
4000
4001 * src/output.c (token_definitions_output): New.
4002 (output_parser, header_output): Use it.
4003 * src/reader.c (symbols_save): Remove.
4004
40052001-12-29 Akim Demaille <akim@epita.fr>
4006
4007 * src/bison.simple: Do not provide a default for YYSTYPE and
4008 YYLTYPE before the user's prologue. Otherwise it's hardly... a
4009 default.
4010
40112001-12-29 Akim Demaille <akim@epita.fr>
4012
4013 Mid-rule actions are simply... ignored!
4014
4015 * src/reader.c (readgram): Be sure to attach mid-rule actions to
4016 the empty-rule associated to the dummy symbol, not to the host
4017 rule.
4018 * tests/actions.at (Mid-rule actions): New.
4019
40202001-12-29 Akim Demaille <akim@epita.fr>
4021
4022 Memory leak.
4023
4024 * src/reader.c (reader): Free grammar.
4025
40262001-12-29 Akim Demaille <akim@epita.fr>
4027
4028 Memory leak.
4029
4030 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
4031 since it allocates it for each state, although only one is needed.
4032 (allocate_storage): Do it here.
4033
40342001-12-29 Akim Demaille <akim@epita.fr>
4035
4036 * src/options.h, src/options.c (create_long_option_table): Rename
4037 as...
4038 (long_option_table_new): this, with a clearer prototype.
4039 (percent_table): Remove, unused,
4040 * src/getargs.c (getargs): Adjust.
4041
40422001-12-29 Akim Demaille <akim@epita.fr>
4043
4044 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
4045 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
4046 as states.
4047
40482001-12-29 Akim Demaille <akim@epita.fr>
4049
4050 * src/lalr.c (build_relations): Rename `states' as `states1'.
4051 Sorry, I don't understand exactly what it is, no better name...
4052
40532001-12-29 Akim Demaille <akim@epita.fr>
4054
4055 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
4056 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
4057 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
4058 as rules.
4059
40602001-12-29 Akim Demaille <akim@epita.fr>
4061
4062 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
4063 ago.
4064
40652001-12-29 Akim Demaille <akim@epita.fr>
4066
4067 * src/reader.c, src/reader.h (user_toknums): Remove.
4068 Adjust all users to use symbols[i]->user_token_number.
4069
40702001-12-29 Akim Demaille <akim@epita.fr>
4071
4072 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
4073 Adjust all users to use symbols[i]->prec or ->assoc.
4074
40752001-12-29 Akim Demaille <akim@epita.fr>
4076
4077 * src/reader.c, src/reader.h (tags): Remove.
4078 Adjust all users to use symbols[i]->tag.
4079
40802001-12-29 Akim Demaille <akim@epita.fr>
4081
4082 * src/gram.h, src/gram.c (symbols): New, similar to state_table
4083 and rule_table.
4084 * src/reader.c (packsymbols): Fill this table.
4085 Drop sprec.
4086 * src/conflicts.c (resolve_sr_conflict): Adjust.
4087 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
4088 single table.
4089 Use symbols[i]->tag instead of tags[i].
4090
40912001-12-29 Akim Demaille <akim@epita.fr>
4092
4093 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
4094 In addition, put a comment in there, to replace...
4095 * tests/regression.at (%union and C comments): Remove.
4096
40972001-12-29 Akim Demaille <akim@epita.fr>
4098
4099 * tests/regression.at (Web2c Actions): Blindly move the actual
4100 output as expected output. The contents *seem* right to me, but I
4101 can't pretend reading perfectly parser tables... Nonetheless, all
4102 the other tests pass correctly, the table look OK, even though the
4103 presence of `$axiom' is to be noted: AFAICS it is useless (but
4104 harmless).
4105
41062001-12-29 Akim Demaille <akim@epita.fr>
4107
4108 * src/reader.c (readgram): Don't add the rule 0 if there were no
4109 rules read. In other words, add it _after_ having performed
4110 grammar sanity checks.
4111 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
4112
41132001-12-29 Akim Demaille <akim@epita.fr>
4114
4115 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
4116 visible, and some states have now a different number.
4117
41182001-12-29 Akim Demaille <akim@epita.fr>
4119
4120 * src/reader.c (readgram): Bind the initial rule's lineno to that
4121 of the first rule.
4122 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
4123 (Solved SR Conflicts): Adjust rule 0's line number.
4124
41252001-12-29 Akim Demaille <akim@epita.fr>
4126
4127 Fix the `GAWK Grammar' failure.
4128
4129 * src/LR0.c (final_state): Initialize to -1 so that we do compute
4130 the reductions of the first state which was mistakenly confused
4131 with the final state because precisely final_state was initialized
4132 to 0.
4133 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
4134 now noticed by Bison.
4135 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
4136 have a reduction on $default.
4137
41382001-12-29 Akim Demaille <akim@epita.fr>
4139
4140 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
4141 rule line numbers.
4142 * src/closure.c (print_closure): Likewise.
4143 * src/derives.c (print_derives): Likewise.
4144 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
4145 now.
4146
41472001-12-29 Akim Demaille <akim@epita.fr>
4148
4149 * src/lalr.c (lookaheads_print): New.
4150 (lalr): Call it when --trace-flag.
4151 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
4152 are dumped.
4153
41542001-12-29 Akim Demaille <akim@epita.fr>
4155
4156 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
4157 when walking through ritem, even via rule->rhs.
4158 * src/reduce.c (dump_grammar, useful_production, reduce_output)
4159 (useful_production, useless_nonterminals): Likewise.
4160 (reduce_grammar_tables): Likewise, plus update nritems.
4161 * src/nullable.c (set_nullable): Likewise.
4162 * src/lalr.c (build_relations): Likewise.
4163 * tests/sets.at (Nullable): Adjust.
4164 Fortunately, now, the $axiom is no longer nullable.
4165
41662001-12-29 Akim Demaille <akim@epita.fr>
4167
4168 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
4169 the 0-sentinel.
4170 * src/gram.c (ritem_longest_rhs): Likewise.
4171 * src/reduce.c (nonterminals_reduce): Likewise.
4172 * src/print_graph.c (print_graph): Likewise.
4173 * src/output.c (output_rule_data): Likewise.
4174 * src/nullable.c (set_nullable): Likewise.
4175
41762001-12-29 Akim Demaille <akim@epita.fr>
4177
4178 * src/output.c: Comment changes.
4179
41802001-12-27 Paul Eggert <eggert@twinsun.com>
4181
4182 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
4183 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
4184 Sparc, as they were causing more porting problems than the
4185 (minor) performance improvement was worth.
4186
4187 Also, catch up with 1.31's YYSTD.
4188
41892001-12-27 Akim Demaille <akim@epita.fr>
4190
4191 * src/output.c (output_gram): Rely on nritems, not the
4192 0-sentinel. See below.
4193 Use -1 as separator, not 0.
4194 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
4195 Rely on -1 as separator in yyrhs, instead of 0.
4196 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
4197 twice `Now at end of input', therefore there are two lines less to
4198 expect.
4199
42002001-12-27 Akim Demaille <akim@epita.fr>
4201
4202 * tests/regression.at (Unresolved SR Conflicts):
4203 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
4204 below.
4205
42062001-12-27 Akim Demaille <akim@epita.fr>
4207
4208 * src/LR0.c (new_state): Recognize the final state by the fact it
4209 is reached by eoftoken.
4210 (insert_start_shifting_state, insert_eof_shifting_state)
4211 (insert_accepting_state, augment_automaton): Remove, since now
4212 these states are automatically computed from the initial state.
4213 (generate_states): Adjust.
4214 * src/print.c: When reporting a rule number to the user, substract
4215 1, so that the axiom rule is rule 0, and the first user rule is 1.
4216 * src/reduce.c: Likewise.
4217 * src/print_graph.c (print_core): For the time being, just as for
4218 the report, depend upon --trace-flags to dump the full set of
4219 items.
4220 * src/reader.c (readgram): Once the grammar read, insert the rule
4221 0: `$axiom: START-SYMBOL $'.
4222 * tests/set.at: Adjust: rule 0 is now displayed, and since the
4223 number of the states has changed (the final state is no longer
4224 necessarily the last), catch up.
4225
42262001-12-27 Akim Demaille <akim@epita.fr>
4227
4228 Try to make the use of the eoftoken valid. Given that its value
4229 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
4230 is used instead of > 0 where appropriate, (ii), depend upon nritems
4231 instead of the 0-sentinel.
4232
4233 * src/gram.h, src/gram.c (nritems): New.
4234 Expected to be duplication of nitems, but for the time being...
4235 * src/reader.c (packgram): Assert nritems and nitems are equal.
4236 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
4237 * src/closure.c (print_closure, print_fderives): Likewise.
4238 * src/gram.c (ritem_print): Likewise.
4239 * src/print.c (print_core, print_grammar): Likewise.
4240 * src/print_graph.c: Likewise.
4241
42422001-12-27 Akim Demaille <akim@epita.fr>
4243
4244 * src/main.c (main): If there are complains after grammar
4245 reductions, then output the report anyway if requested, then die.
4246 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
4247 * src/reader.c (eoftoken): New.
4248 (parse_token_decl): If the token being defined has value `0', it
4249 is the eoftoken.
4250 (packsymbols): No longer hack `tags' to insert `$' by hand.
4251 Be sure to preserve the value of the eoftoken.
4252 (reader): Make sure eoftoken is defined.
4253 Initialize nsyms to 0: now eoftoken is created just like the others.
4254 * src/print.c (print_grammar): Don't special case the eof token.
4255 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
4256 lie anyway, albeit pleasant.
4257 * tests/calc.at: Exercise error messages with eoftoken.
4258 Change the grammar so that empty input is invalid.
4259 Adjust expectations.
4260 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
4261
42622001-12-27 Akim Demaille <akim@epita.fr>
4263
4264 * configure.in: Check the protos of strchr ans strspn.
4265 Replace strchr if needed.
4266 * src/system.h: Provide the protos of strchr, strspn and memchr if
4267 missing.
4268 * lib/strchr.c: New.
4269 * src/reader.c (symbols_save): Use strchr.
4270
42712001-12-27 Akim Demaille <akim@epita.fr>
4272
4273 * src/print.c, src/print_graph.c (escape): New.
4274 Use it to quote the TAGS outputs.
4275 * src/print_graph.c (print_state): Now errors are in red, and
4276 reductions in green.
4277 Prefer high to wide: output the state number on a line of its own.
4278
42792001-12-27 Akim Demaille <akim@epita.fr>
4280
4281 * src/state.h, src/state.c (reductions_new): New.
4282 * src/LR0.c (set_state_table): Let all the states have a
4283 `reductions', even if reduced to 0.
4284 (save_reductions): Adjust.
4285 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
4286 * src/print.c (print_reductions, print_actions): Adjust.
4287 * src/output.c (action_row): Adjust.
4288
42892001-12-27 Akim Demaille <akim@epita.fr>
4290
4291 * src/state.h, src/state.c (errs_new, errs_dup): New.
4292 * src/LR0.c (set_state_table): Let all the states have an errs,
4293 even if reduced to 0.
4294 * src/print.c (print_errs, print_reductions): Adjust.
4295 * src/output.c (output_actions, action_row): Adjust.
4296 * src/conflicts.c (resolve_sr_conflict): Adjust.
4297
42982001-12-27 Akim Demaille <akim@epita.fr>
4299
4300 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
4301
43022001-12-27 Akim Demaille <akim@epita.fr>
4303
4304 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
4305 * src/print.c: here.
4306 (lookaheadset, shiftset): New, used as additional storage by
4307 print_reductions.
4308 (print_results): Adjust.
4309 (print_shifts, print_gotos, print_errs): New, extracted from...
4310 (print_actions): here.
4311 * src/print_graph.c (print_actions): Remove dead code.
4312
43132001-12-27 Akim Demaille <akim@epita.fr>
4314
4315 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
4316 `$n' and `@n'.
4317
43182001-12-27 Akim Demaille <akim@epita.fr>
4319
4320 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
4321 (build_relations): Adjust.
4322
43232001-12-27 Akim Demaille <akim@epita.fr>
4324
4325 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
4326 duplication.
4327
43282001-12-27 Akim Demaille <akim@epita.fr>
4329
4330 * src/reader.c (packgram): Catch nitems overflows.
4331
43322001-12-27 Akim Demaille <akim@epita.fr>
4333
4334 * src/files.c, src/files.h (guard_obstack): Remove.
4335 * src/output.c (output): Adjust.
4336 * src/reader.c (parse_braces): New, factoring...
4337 (copy_action, copy_guard): these two which are renamed as...
4338 (parse_action, parse_guard): these.
4339 As a voluntary consequence, using braces around guards is now
4340 mandatory.
4341
43422001-12-27 Akim Demaille <akim@epita.fr>
4343
4344 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
4345 * src/reader.c (symbol_list): `guard' and `guard_line' are new
4346 members.
4347 (symbol_list_new): Adjust.
4348 (copy_action): action_line is the first line, not the last.
4349 (copy_guard): Just as for actions, store the `action' only, not
4350 the switch/case/break flesh.
4351 Don't parse the user action that might follow the guard, let...
4352 (readgram): do it, i.e., now, there can be an action after a
4353 guard.
4354 In other words the guard is just explicitly optional.
4355 (packgram): Adjust.
4356 * src/output.c (guards_output): New.
4357 (output_parser): Call it when needed.
4358 (output): Also free the guard and attrs obstacks.
4359 * src/files.c, src/files.h (obstack_save): Remove.
4360 (output_files): Remove.
4361 As a result, if one needs the former `.act' file, using an
4362 appropriate skeleton which requires actions and guards is now
4363 required.
4364 * src/main.c (main): Adjust.
4365 * tests/semantic.at: New.
4366 * tests/regression.at: Use `input.y' as input file name.
4367 Avoid 8+3 problems by requiring input.c when the test needs the
4368 parser.
4369
43702001-12-27 Akim Demaille <akim@epita.fr>
4371
4372 * src/reader.c (symbol_list_new): Be sure to initialize all the
4373 fields.
4374
43752001-12-27 Akim Demaille <akim@epita.fr>
4376
4377 All the hacks using a final pseudo state are now useless.
4378
4379 * src/LR0.c (set_state_table): state_table holds exactly nstates.
4380 * src/lalr.c (nLA): New.
4381 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
4382 instead of lookaheadsp from the pseudo state (nstate + 1).
4383
43842001-12-27 Akim Demaille <akim@epita.fr>
4385
4386 * src/output.c (action_row, token_actions): Use a state_t instead
4387 of a integer, and nlookaheads instead of the following state's
4388 lookaheadsp.
4389
43902001-12-27 Akim Demaille <akim@epita.fr>
4391
4392 * src/conflicts.c (log_resolution, flush_shift)
4393 (resolve_sr_conflict, set_conflicts, solve_conflicts)
4394 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
4395 (conflicts_print, print_reductions): Use a state_t instead of an
4396 integer when referring to a state.
4397 As much as possible, depend upon nlookaheads, instead of the
4398 `lookaheadsp' member of the following state (since lookaheads of
4399 successive states are successive, the difference between state n + 1
4400 and n served as the number of lookaheads for state n).
4401 * src/lalr.c (add_lookback_edge): Likewise.
4402 * src/print.c (print_core, print_actions, print_state)
4403 (print_results): Likewise.
4404 * src/print_graph.c (print_core, print_actions, print_state)
4405 (print_graph): Likewise.
4406 * src/conflicts.h: Adjust.
4407
44082001-12-27 Akim Demaille <akim@epita.fr>
4409
4410 * src/bison.hairy: Formatting/comment changes.
4411 ANSIfy.
4412 Remove `register' indications.
4413 Add plenty of `static'.
4414
44152001-12-27 Akim Demaille <akim@epita.fr>
4416
4417 * src/output.c (prepare): Drop the muscle `ntbase' which
4418 duplicates ntokens.
4419 * src/bison.simple: Formatting/comment changes.
4420 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
4421 is an undocumented synonym.
4422
44232001-12-22 Akim Demaille <akim@epita.fr>
4424
4425 * src/output.c (output_table_data): Change the prototype to use
4426 `int' for array ranges: some invocations do pass an int, not a
4427 short.
4428 Reported by Wayne Green.
4429
44302001-12-22 Akim Demaille <akim@epita.fr>
4431
4432 Some actions of web2c.y are improperly triggered.
4433 Reported by Mike Castle.
4434
4435 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
4436 * tests/regression.at (Web2c): Rename as...
4437 (Web2c Report): this.
4438 (Web2c Actions): New.
4439
44402001-12-22 Akim Demaille <akim@epita.fr>
4441
4442 Reductions in web2c.y are improperly reported.
4443 Reported by Mike Castle.
4444
4445 * src/conflicts.c (print_reductions): Fix.
4446 * tests/regression.at (Web2c): New.
4447
44482001-12-18 Akim Demaille <akim@epita.fr>
4449
4450 Some host fail on `assert (!"foo")', which expands to
4451 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
4452 Reported by Nelson Beebee.
4453
4454 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
4455 `#define it_succeeded 0' and `assert (it_succeeded)'.
4456
44572001-12-17 Marc Autret <autret_m@epita.fr>
4458
4459 * src/bison.simple: Don't hard code the skeleton line and filename.
4460 * src/output.c (output_parser): Rename 'line' as 'output_line'.
4461 New line counter 'skeleton_line' (skeleton-line muscle).
4462
44632001-12-17 Paul Eggert <eggert@twinsun.com>
4464
4465 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
4466 YYDEBUG must be defined to a nonzero value.
4467
4468 * src/bison.simple (yytname): Do not assume that the user defines
4469 YYDEBUG to a properly parenthesized expression.
4470
44712001-12-17 Akim Demaille <akim@epita.fr>
4472
4473 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
4474 nlookaheads is a new member.
4475 Adjust all users.
4476 * src/lalr.h (nlookaheads): Remove this orphan declaration.
4477 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
4478 state.
4479
44802001-12-17 Akim Demaille <akim@epita.fr>
4481
4482 * src/files.h, src/files.c (open_files, close_files): Remove.
4483 * src/main.c (main): Don't open/close files, nor invoke lex_free,
4484 let...
4485 * src/reader.c (reader): Do it.
4486
44872001-12-17 Akim Demaille <akim@epita.fr>
4488
4489 * src/conflicts.c (print_reductions): Formatting changes.
4490
44912001-12-17 Akim Demaille <akim@epita.fr>
4492
4493 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
4494 (flush_reduce): New.
4495 (resolve_sr_conflict): Adjust.
4496
44972001-12-17 Akim Demaille <akim@epita.fr>
4498
4499 * src/output.c (output_obstack): Be static and rename as...
4500 (format_obstack): this, to avoid any confusion with files.c's
4501 output_obstack.
4502 * src/reader.h (muscle_obstack): Move to...
4503 * src/output.h: here, since it's defined in output.c.
4504
45052001-12-17 Akim Demaille <akim@epita.fr>
4506
4507 * src/output.c (action_row, save_column, default_goto)
4508 (sort_actions, matching_state, pack_vector): Better variable
4509 locality.
4510
45112001-12-17 Akim Demaille <akim@epita.fr>
4512
4513 * src/output.c: Various formatting changes.
4514
45152001-12-17 Akim Demaille <akim@epita.fr>
4516
4517 * src/files.c (output_files): Free the output_obstack.
4518 * src/main.c (main): Call print and print_graph conditionally.
4519 * src/print.c (print): Work unconditionally.
4520 * src/print_graph.c (print_graph): Work unconditionally.
4521 * src/conflicts.c (log_resolution): Output only if verbose_flag.
4522
45232001-12-16 Marc Autret <autret_m@epita.fr>
4524
4525 * src/output.c (actions_output): Fix. When we use %no-lines,
4526 there is one less line per action.
4527
45282001-12-16 Marc Autret <autret_m@epita.fr>
4529
4530 * src/bison.simple: Remove a useless #line directive.
4531 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
4532 * src/output.c (get_lines_number): New.
4533 (output_parser): Adjust, now takes care about the lines of a
4534 output muscles.
4535 Fix line numbering.
4536 (actions_output): Computes the number of lines taken by actions.
4537 (output_master_parser): Insert new skeleton which is the name of
4538 the output parser file name.
4539
45402001-12-15 Marc Autret <autret_m@epita.fr>
4541
4542 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
4543
45442001-12-15 Marc Autret <autret_m@epita.fr>
4545
4546 * src/output.c (output_gram): Keep track of the hairy one.
4547
45482001-12-15 Akim Demaille <akim@epita.fr>
4549
4550 Make `make distcheck' work.
4551
4552 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
4553 system.h which uses libgettext.h.
4554
45552001-12-15 Akim Demaille <akim@epita.fr>
4556
4557 * src/nullable.c (set_nullable): Useless rules must be skipped,
4558 otherwise, since we range over their symbols, we might look at a
4559 nonterminal which no longer ``exists'', i.e., it is not counted in
4560 `nvars', hence we overflow our arrays.
4561
45622001-12-15 Akim Demaille <akim@epita.fr>
4563
4564 The header can also be produced directly, without any obstack!
4565 Yahoo!
4566
4567 * src/files.c, src/files.h (defines_obstack): Remove.
4568 (compute_header_macro): Global.
4569 (defines_obstack_save): Remove.
4570 * src/reader.c (parse_union_decl): No longer output to
4571 defines_obstack: its content can be found in the `stype' muscle
4572 anyway.
4573 (output_token_translations): Merge into...
4574 (symbols_output): this.
4575 Rename as...
4576 (symbols_save): this.
4577 (reader): Adjust.
4578 * src/output.c (header_output): New.
4579 (output): Call it.
4580
45812001-12-15 Akim Demaille <akim@epita.fr>
4582
4583 * src/reader.c (parse_union_decl): Instead of handling two obstack
4584 simultaneously, use one to define the `stype' muscle, and use the
4585 value of the latter to fill defines_obstack.
4586 (copy_comment): Remove.
4587 (copy_comment2): Work for a single obstack.
4588 Rename as...
4589 (copy_comment): this.
4590
45912001-12-15 Akim Demaille <akim@epita.fr>
4592
4593 * src/lex.c, src/lex.h (xgetc): No longer static.
4594 * src/reader.c (parse_union_decl): Revamp.
4595
45962001-12-15 Akim Demaille <akim@epita.fr>
4597
4598 Still making progress in separating Bison into (i) input, (ii)
4599 process, (iii) output: now we can directly output the parser file
4600 without using table_obstack at all.
4601
4602 * src/files.c, src/files.h (table_obstack): Bye bye.
4603 (parser_file_name): New.
4604 * src/files.c (compute_output_file_names): Compute it.
4605 * src/output.c (actions_output, output_parser)
4606 (output_master_parser): To a file instead of an obstack.
4607
46082001-12-15 Akim Demaille <akim@epita.fr>
4609
4610 Attach actions to rules, instead of pre-outputting them to
4611 actions_obstack.
4612
4613 * src/gram.h (rule_t): action and action_line are new members.
4614 * src/reader.c (symbol_list): Likewise.
4615 (copy_action): Save the actions within the rule.
4616 (packgram): Save them in rule_table.
4617 * src/output.c (actions_output): New.
4618 (output_parser): Use it on `%%actions'.
4619 (output_rule_data): Don't free rule_table.
4620 (output): Do it.
4621 (prepare): Don't save the `action' muscle.
4622 * src/bison.simple: s/%%action/%%actions/.
4623
46242001-12-15 Akim Demaille <akim@epita.fr>
4625
4626 * src/reader.c (copy_action): When --yacc, don't append a `;'
4627 to the user action: let it fail if lacking.
4628 Suggested by Arnold Robbins and Tom Tromey.
4629
46302001-12-14 Akim Demaille <akim@epita.fr>
4631
4632 * src/lex.c (literalchar): Simply return the char you decoded, non
4633 longer mess around with obstacks and int pointers.
4634 Adjust all callers.
4635
46362001-12-14 Akim Demaille <akim@epita.fr>
4637
4638 * src/lex.c (literalchar): Don't escape the special characters,
4639 just decode them, and keep them as char (before, eol was output as
4640 the 2 char string `\n' etc.).
4641 * src/output.c (output_rule_data): Use quotearg to output the
4642 token strings.
4643
46442001-12-13 Paul Eggert <eggert@twinsun.com>
4645
4646 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
4647 Do not infringe on the global user namespace when using C++.
4648 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
4649 All uses of `fprintf' and `stderr' changed.
4650
4651 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
4652
46532001-12-13 Akim Demaille <akim@epita.fr>
4654
4655 The computation of nullable is broken: it doesn't handle empty
4656 RHS's properly.
4657
4658 * tests/torture.at (GNU AWK Grammar): New.
4659 * tests/sets.at (Nullable): New.
4660 * src/nullable.c (set_nullable): Instead of blindly looping over
4661 `ritems', loop over the rules, and then over their rhs's.
4662
4663 Work around Autotest bugs.
4664
4665 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
4666 frame, because Autotest understand lines starting with a `+' as
4667 traces from the shell. Then, they are not processed properly.
4668 Admittedly an Autotest bug, but we don't have time to wait for
4669 Autotest to catch up.
4670 * tests/regression.at (Broken Closure): Adjust to the new table
4671 frames.
4672 Move to...
4673 * tests/sets.at: here.
4674
46752001-12-13 Akim Demaille <akim@epita.fr>
4676
4677 * src/closure.c (closure): Use nrules instead of playing tricks
4678 with BITS_PER_WORD.
4679
46802001-12-13 Akim Demaille <akim@epita.fr>
4681
4682 * src/print.c (print_actions): Output the handling of `$' as the
4683 traces do: shifting the token EOF. Before EOF was treated as a
4684 nonterminal.
4685 * tests/regression.at: Adjust some tests.
4686 * src/print_graph.c (print_core): Complete the set of items via
4687 closure. The next-to-final and final states are still unsatisfying,
4688 but that's to be addressed elsewhere.
4689 No longer output the rule numbers, but do output the state number.
4690 A single loop for the shifts + gotos is enough, but picked a
4691 distinct color for each.
4692 (print_graph): Initialize and finalize closure.
4693
46942001-12-13 Akim Demaille <akim@epita.fr>
4695
4696 * src/reader.c (readgram): Remove dead code, an strip useless
4697 braces.
4698 (get_type): Remove, unused.
4699
47002001-12-12 Akim Demaille <akim@epita.fr>
4701
4702 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
4703 on that of lib/error.c.
4704
47052001-12-12 Akim Demaille <akim@epita.fr>
4706
4707 Some hosts don't like `/' in includes.
4708
4709 * src/system.h: Include libgettext.h without qualifying the path.
4710 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
4711 $(top_srcdir).
4712
47132001-12-11 Marc Autret <autret_m@epita.fr>
4714
4715 * src/output.c (output_parser): Remove useless muscle.
4716
47172001-12-11 Marc Autret <autret_m@epita.fr>
4718
4719 * src/bison.simple: Remove #line just before %%epilogue. It
4720 is now handled in ...
4721 * src/reader.c (read_additionnal_code): Add the output of a
4722 #line for the epilogue.
4723
47242001-12-10 Marc Autret <autret_m@epita.fr>
4725
4726 * src/reader.c (copy_definition): Re-use CPP-outed code which
4727 replace precedent remove.
4728 * src/bison.simple: Remove #line before %%prologue because
4729 %%input-line is wrong at this time.
4730
47312001-12-10 Marc Autret <autret_m@epita.fr>
4732
4733 * src/reader.c (symbols_output): Clean up.
4734 * src/output.c (output_gram, output): Clean up.
4735
47362001-12-10 Akim Demaille <akim@epita.fr>
4737
4738 * src/lalr.c (initialize_lookaheads): New. Extracted from...
4739 * src/LR0.c (set_state_table): here.
4740 * src/lalr.c (lalr): Call it.
4741
47422001-12-10 Akim Demaille <akim@epita.fr>
4743
4744 * src/state.h (shifts): Remove the `number' member: shifts are
4745 attached to state, hence no longer need to be labelled with a
4746 state number.
4747
47482001-12-10 Akim Demaille <akim@epita.fr>
4749
4750 Now that states have a complete set of members, the linked list of
4751 shifts is useless: just fill directly the state's shifts member.
4752
4753 * src/state.h (shifts): Remove the `next' member.
4754 * src/LR0.c (first_state, last_state): Remove.
4755 Adjust the callers.
4756 (augment_automaton): Don't look for the shifts that must be added
4757 a shift on EOF: it is those of the state we looked for! But now,
4758 since shifts are attached, it is no longer needed to looking
4759 merely by its id: its number.
4760
47612001-12-10 Akim Demaille <akim@epita.fr>
4762
4763 * src/LR0.c (augment_automaton): Better variable locality.
4764 Remove an impossible branch: if there is a state corresponding to
4765 the start symbol being shifted, then there is shift for the start
4766 symbol from the initial state.
4767
47682001-12-10 Akim Demaille <akim@epita.fr>
4769
4770 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
4771 only when appropriate: when insert_start_shifting_state' is not
4772 invoked.
4773 * tests/regression.at (Rule Line Numbers): Adjust.
4774
47752001-12-10 Akim Demaille <akim@epita.fr>
4776
4777 * src/LR0.c (augment_automaton): Now that all states have shifts,
4778 merge the two cases addition shifts to the initial state.
4779
47802001-12-10 Akim Demaille <akim@epita.fr>
4781
4782 * src/lalr.c (set_state_table): Move to...
4783 * src/LR0.c: here.
4784 * src/lalr.c (lalr): Don't call it...
4785 * src/LR0.c (generate_states): do it.
4786 * src/LR0.h (first_state): Remove, only the table is used.
4787
47882001-12-10 Akim Demaille <akim@epita.fr>
4789
4790 * src/LR0.h (first_shift, first_reduction): Remove.
4791 * src/lalr.c: Don't use first_shift: find shifts through the
4792 states.
4793
47942001-12-10 Akim Demaille <akim@epita.fr>
4795
4796 * src/LR0.c: Attach shifts to states as soon as they are
4797 computed.
4798 * src/lalr.c (set_state_table): Instead of assigning shifts to
4799 state, just assert that the mapping was properly done.
4800
48012001-12-10 Akim Demaille <akim@epita.fr>
4802
4803 * src/LR0.c (insert_start_shift): Rename as...
4804 (insert_start_shifting_state): this.
4805 (insert_eof_shifting_state, insert_accepting_state): New.
4806 (augment_automaton): Adjust.
4807 Better locality of the variables.
4808 When looking if the start_symbol is shifted from the initial
4809 state, using `while (... symbol != start_symbol ...)' sounds
4810 better than `while (... symbol < start_symbol ...)': If fail
4811 to see how the order between symbols could be relevant!
4812
48132001-12-10 Akim Demaille <akim@epita.fr>
4814
4815 * src/getargs.h: Don't declare `spec_name_prefix' and
4816 `spec_file_prefix', declared by src/files.h.
4817 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
4818 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
4819 * src/output.c (prepare): Adjust.
4820 * src/reader.c (symbols_output): Likewise.
4821 * src/vmsgetargs.c: Vaguely adjust, but who cares?
4822
48232001-12-10 Akim Demaille <akim@epita.fr>
4824
4825 * src/muscle_tab.c (muscle_init): NULL is a better default than
4826 `"0"'.
4827
48282001-12-10 Akim Demaille <akim@epita.fr>
4829
4830 * src/reader.c (reader): Calling symbols_output once is enough.
4831
48322001-12-10 Akim Demaille <akim@epita.fr>
4833
4834 Now that states have a complete set of members, the linked list of
4835 reductions is useless: just fill directly the state's reductions
4836 member.
4837
4838 * src/state.h (struct reductions): Remove member `number' and
4839 `next'.
4840 * src/LR0.c (first_reduction, last_reduction): Remove.
4841 (save_reductions): Don't link the new reductions, store them in
4842 this_state.
4843 * src/lalr.c (set_state_table): No need to attach reductions to
4844 states, it's already done.
4845 * src/output.c (output_actions): No longer free the shifts, then
4846 the reductions, then the states: free all the states and their
4847 members.
4848
48492001-12-10 Akim Demaille <akim@epita.fr>
4850
4851 * src/options.c (OPTN, DRTV, BOTH): New.
4852 (option_table): Use them.
4853
4854 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
4855 the job of system.h.
4856 * src/options.c: Don't include stdio.h and xalloc.h for the same
4857 reasons.
4858
48592001-12-10 Akim Demaille <akim@epita.fr>
4860
4861 * src/output.c (output, prepare): Make sure the values of the
4862 muscles `action' and `prologue' are 0-terminated.
4863
48642001-12-10 Akim Demaille <akim@epita.fr>
4865
4866 Clean up GCC warnings.
4867
4868 * src/reader.c (copy_action): `buf' is not used.
4869 (parse_skel_decl): Be static.
4870 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
4871 * src/options.h (create_long_option_table): Have a real prototype.
4872 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
4873 (hash_delete_at): Return const void *.
4874 Adjust casts to preserve the const.
4875
48762001-12-10 Akim Demaille <akim@epita.fr>
4877
4878 * configure.in: Require 2.52g.
4879 M4 is not needed, but AUTOM4TE is.
4880 * m4/m4.m4: Remove.
4881 * tests/Makefile.am: Adjust.
4882
48832001-12-10 Akim Demaille <akim@epita.fr>
4884
4885 One structure for states is enough, even though theoretically
4886 there are LR(0) states and LALR(1) states.
4887
4888 * src/lalr.h (state_t): Remove.
4889 (state_table): Be state_t **, not state_t *.
4890 * src/state.h (core, CORE_ALLOC): Rename as...
4891 (state_t, STATE_ALLOC): this.
4892 Add the LALR(1) members: shifts, reductions, errs.
4893 * src/LR0.c (state_table): Rename as...
4894 (state_hash): this, to avoid name clashes with the global
4895 `state_table'.
4896 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
4897 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
4898
48992001-12-10 Akim Demaille <akim@epita.fr>
4900
4901 Bison dumps core on bash.y.
4902 Reported by Pascal Bart.
4903
4904 * src/warshall.c (bitmatrix_print): New.
4905 (TC): Use it.
4906 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
4907 j must be the outer loop.
4908 * tests/regression.at (Broken Closure): New.
4909
49102001-12-05 Akim Demaille <akim@epita.fr>
4911
4912 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
4913 its argument.
4914