]> git.saurik.com Git - bison.git/blame - ChangeLog
Rename identifiers to avoid real and potential collisions.
[bison.git] / ChangeLog
CommitLineData
bb92250c
PE
12002-11-27 Paul Eggert <eggert@twinsun.com>
2
3 Rename identifiers to avoid real and potential collisions.
4
5 * data/c.m4 (b4_yysymprint_generate): yyout -> yyoutput,
6 to avoid collision with lex macro described by Bruce Lilly in
7 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001929.html>.
8 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise.
9 * doc/bison.texinfo (Prologue, Tracing): yyprint -> print_token_value.
10 * src/parse-gram.y (print_token_value): Renamed from yyprint.
11 All uses changed.
12 (YYPARSE_PARAM, YYLEX_PARAM, yycontrol): Remove. All uses changed.
13 The name "yycontrol" violates the name space rules, and this stuff
14 wasn't being used anyway.
15 (input): Remove action; this stuff wasn't being used.
16 (gram_error): Rename local variable yylloc -> loc.
17 * src/reader.h (struct gram_control_s, gram_control_t): Remove.
18 (YY_DECL): Don't use "yy" at start of local variables.
19 All uses changed, e.g., yylloc -> loc.
20 * src/scan-gram.l (STEP): Renamed from YY_STEP. All uses changed.
21 (STRING_GROW): Renamed from YY_OBS_GROW. All uses changed.
22 (STRING_FINISH): Renamed from YY_OBS_FINISH. All uses changed.
23 (STRING_FREE): Renamed from YY_OBS_FREE. All uses changed.
24
25 * src/parse-gram.y (gram_error): loc is now const *.
26 * src/reader.h (gram_error): Likewise.
27
3af4feb2
PE
282002-11-24 Paul Eggert <eggert@twinsun.com>
29
30 Version 1.75c.
31
32 * tests/actions.at (Actions after errors): Use an output format
33 more similar to that of the Printers and Destructors test.
34 Test the position of the ';' token too.
35 (Printers and Destructors): Likewise.
36 (Printers and Destructors: %glr-parser): Remove for now, to avoid
37 unnecessarily alarming people when the test fails.
38
39 * data/yacc.c (yyerrlab1): Move this label down, so that the
40 parser does not discard the lookahead token if the user code
41 invokes YYERROR. This change is required for POSIX conformance.
42
43 * lib/error.c: Sync with gnulib.
44
452002-11-22 Paul Eggert <eggert@twinsun.com>
46
47 * lib/quotearg.c, lib/quotearg.h: Sync with gnulib.
48 * lib/mbswidth.c, lib/mbswidth.h: Likewise.
49 * lib/xmalloc.c: Likewise.
50
58004308
PE
512002-11-20 Paul Eggert <eggert@twinsun.com>
52
53 * lib/argmatch.c, lib/argmatch.h: Sync with gnulib.
54
552002-11-20 Paul Eggert <eggert@twinsun.com>
56
57 Avoid use of <assert.h>, as the GNU Coding Standards hint that one
58 should use `if (! x) abort ();' rather than `assert (x);', and
59 anyway it's one less thing to worry about configuring.
60
61 * data/glr.c, lib/hash.c, src/system.h: Do not include <assert.h>.
62 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise,
63 and replace all instances of assert with abort.
64 * tests/calc.at (_AT_DATA_CALC_Y): Likewise.
65 * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Likewise.
66
67 * data/glr.c (yydoAction, yyglrReduce, yysplitStack, yyresolveStates,
68 yyresolveAction, yyprocessOneStack): Use abort rather than assert.
69 * lib/hash.c (hash_lookup, hash_get_first, hash_get_next,
70 hash_find_entry, hash_rehash, hash_insert): Likewise.
71 * src/conflicts.c (resolve_sr_conflict): Likewise.
72 * src/lalr.c (set_goto_map, map_goto): Likewise.
73 * src/nullable.c (nullable_compute): Likewise.
74 * src/output.c (prepare_rules, token_definitions_output): Likewise.
75 * src/reader.c (packgram, reader): Likewise.
76 * src/state.c (state_new, state_free, state_transitions_set,
77 state_reduction_find): Likewise.
78 * src/symtab.c (symbol_user_token_number_set, symbol_make_alias,
79 symbol_pack): Likewise.
80 * src/tables.c (conflict_row, pack_vector): Likewise.
81 * src/vcg.c (get_color_str, get_textmode_str, get_shape_str,
82 get_layoutalgorithm_str, get_decision_str, get_orientation_str,
83 get_node_alignement_str, get_arrow_mode_str, get_crossing_type_str,
84 get_view_str, get_linestyle_str, get_arrowstyle_str): Likewise.
85
86 * lib/argmatch.h (ARRAY_CARDINALITY): Do not bother to #undef.
87 (ARGMATCH_CONSTRAINT): New macro.
88 (ARGMATCH_ASSERT): Use it.
89
90 * src/system.h (verify): New macro.
91 * src/getargs.c (trace_argmatch, report_argmatch): Use verify
92 rather than assert.
93 * src/tables.c (tables_generate): Likewise.
94
95 * src/struniq.c (struniq_assert): Now returns void, and aborts
96 if the assertion is false.
97 (struniq_assert_p): Remove.
98 * src/struniq.h: Likewise.
99
76ae8198
PE
1002002-11-18 Paul Eggert <eggert@twinsun.com>
101
102 * data/glr.c (yygetLRActions): Replace `yyindex' with
103 `yytable[yyindex]' to fix typo introduced in my 2002-11-09 patch.
104 This fixes the regression with Sun ONE Studio 7 cc that I reported in
105 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001892.html>.
106
d3c4e709
AD
1072002-11-18 Akim Demaille <akim@epita.fr>
108
109 * doc/bison.texinfo (Tracing): `yyprint' shouldn't prepend a
110 space.
111 From Tim Van Holder.
112
8d8a7238
PE
1132002-11-17 Paul Eggert <eggert@twinsun.com>
114
115 Pacify Sun ONE Studio 7 lint. Also, rename "ParseError"
116 to "SyntaxError" for consistency with my 2002-11-15 change.
117
118 * data/glr.c (YYDPRINTF, YYDSYMPRINT, YYDSYMPRINTF) [!YYDEBUG]: Do
119 not define to {}, since this breaks the common use of `YYDPRINTF
120 ((...));' if a single statement is desired (e.g. before `else').
121 Work around GCC warnings by surrounding corresponding calls with
122 {} if needed.
123 (yyhasResolvedValue): Remove unused function.
124 (yymergeOptionSets, yyresolvStack): Use `continue;' for empty
125 loop body.
126 (yyreportSyntaxError): Renamed from yyreportParseError.
127 (yyrecoverSyntaxError): Renamed from yyrecoverParseError.
128 All uses changed.
129 * tests/calc.at (_AT_DATA_CALC_Y): Make vars static instead of
130 extern when possible. Remove unused initializations.
131
b0937b22
AD
1322002-11-16 Akim Demaille <akim@epita.fr>
133
134 Augment the similarity between GLR and LALR traces.
135
136 * data/yacc.c (yy_stack_print, YY_STACK_PRINT, yy_reduce_print)
137 (YY_REDUCE_PRINT): New.
138 (yyparse): Use them.
139 * data/glr.c (yy_reduce_print): Use YYFPRINTF, no need for
140 YYDPRINT here.
141 (yyglrReduce, yyrecoverParseError, yyparse): Don't report the
142 state reached after the reduction/recovery, since...
143 (yyparse, yyprocessOneStack): Report the state we are entering in.
144
c5e3e510
AD
1452002-11-16 Akim Demaille <akim@epita.fr>
146
147 * src/getargs.h, src/getargs.c (trace_e, trace_args, trace_types):
148 Add support for --trace=skeleton.
149 * src/scan-skel.l: %option debug.
150 Scan strings of non-@ or \n instead of character by character.
151 (scan_skel): Handle trace_skeleton.
152 (QPUTS): New.
153 (@output_parser_name@, @output_header_name@): ``Restore'' their
154 support (used to be M4 macros).
155 * data/yacc.c: Quote larger chunks, a la glr.c.
156 * data/lalr1.cc: Likewise.
157 The header guards are no longer available, so use some other
158 string than `YYLSP_NEEDED'.
159
4c6cc1db
AD
1602002-11-16 Akim Demaille <akim@epita.fr>
161
162 Make the ``Printers and Destructors'' test more verbose, taking
163 `yacc.c''s behavior as (possibly wrong) reference.
164
165 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Use printf
166 instead of fprint on stdout.
167 Set and report the last_line of the symbols.
168 Consistently display values and locations.
169
6d9e8019
PE
1702002-11-16 Paul Eggert <eggert@twinsun.com>
171
172 * data/yacc.c: Avoid over-quoting of __line__ and __file__.
173
6e649e65
PE
1742002-11-15 Paul Eggert <eggert@twinsun.com>
175
b25d88f6
PE
176 * tests/actions.at (Actions after errors): New test case.
177
6e649e65
PE
178 * data/glr.c, data/lalr1.cc, data/yacc.cc, doc/bison.texinfo,
179 src/conflicts.c, src/parse-gram.y, src/tables.c, src/tables.h,
180 tests/action.at, tests/calc.at, tests/conflicts.at,
181 tests/cxx-type.at, tests/regression.at:
182 "parse error" -> "syntax error" for POSIX compatibility.
183 "parsing stack overflow..." -> "parser stack overflow" so
184 that code matches Bison documentation.
185
0f39aab9
AD
1862002-11-15 Akim Demaille <akim@epita.fr>
187
188 * src/parse-gram.y (declaration): Have %parse-param and %lex-param
189 take two BRACED_CODE, not two string_content.
190 Free the scanner's obstack when we are done.
191 (code_content): New.
192 * tests/calc.at: Adjust.
193 * doc/bison.texinfo: Adjust.
194 Also, make sure to include the `,' for these declarations.
195
761c1926
AD
1962002-11-15 Tim Van Holder <tim.van.holder@pandora.be>
197
198 * m4/prereq.m4: Removed the commented jm_PREREQ_HASH
199 definition; avoids potential autoreconf problems.
200
b0f98b10
AD
2012002-11-15 Akim Demaille <akim@epita.fr>
202
203 Always check the value returned by yyparse.
204
205 * tests/calc.at (_AT_DATA_CALC_Y): Have `main' exit with the value
206 returned by yyparse.
207 (_AT_CHECK_CALC_ERROR): Take the expected exit value as argument.
208 Adjust calls.
209 * tests/glr-regr1.at (glr-regr1.y): Have `main' exit with the value
210 returned by yyparse.
211
970785f1
PH
2122002-11-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
213
214 * data/glr.c (yyFail): Always set yyerrflag. Corrects regression
215 on input.at test.
216
8fcc7db1
PE
2172002-11-14 Paul Eggert <eggert@twinsun.com>
218
7ec1b48e
PE
219 * src/output.c (output_skeleton): Call xfopen instead of
220 duplicating xfopen's body.
221
cfff7583
PE
222 Fix bugs reported by Nelson H. F. Beebe in
223 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001893.html>.
224
8fcc7db1
PE
225 * tests/headers.at (AT_TEST_CPP_GUARD_H): Don't assume that
226 "$CC -E foo.h" is allowed, as this doesn't work with the Portland
227 Group compiler. Instead, use "$CC -E bar.c". Include the .h
228 file twice in the grammar, as an extra check.
229
230 * tests/input.at (Torturing the Scanner): Surround the
231 backslash-newline tests with "#if 0", to make it less likely that
232 we'll run into compiler bugs. Bring back solitary \ inside
233 comment, but add a closing comment to work around HP C bug. Don't
234 test backslash-newline in C character constant. This should fix
235 the input.at bug reported by Nelson H. F. Beebe in
236 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001893.html>.
237
4e8d992c
AD
2382002-11-14 Akim Demaille <akim@epita.fr>
239
240 * tests/synclines.at (AT_SYNCLINES_COMPILE): Ignore the exit
241 status of the compiler.
f32b346d 242 Calling `exit 1' is no longer needed.
4e8d992c
AD
243 Reported by Nelson H. F. Beebe.
244
9501dc6e
AD
2452002-11-14 Akim Demaille <akim@epita.fr>
246
247 * tests/atlocal.in (CPPFLAGS): We have config.h.
248 * tests/testsuite.at (AT_DATA_GRAMMAR_PROLOGUE, AT_DATA_GRAMMAR):
249 New.
250 * tests/actions.at, tests/calc.at, tests/conflicts.at,
251 * tests/cxx-type.at, tests/glr-regr1.at, tests/headers.at,
252 * tests/regression.at, tests/torture.at: Use them for all the
253 grammars that are to be compiled.
254 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Rename as...
255 * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): this.
256 * doc/bison.texinfo (GLR Parsers): Document `inline'.
257
18b519c0
AD
2582002-11-14 Akim Demaille <akim@epita.fr>
259
260 * doc/bison.texinfo: Various formatting changes (alignments in
261 samples, additional @group/@end group, GCS in samples.
262 Use @deffn instead of simple @table to define the directives,
263 macros, variables etc.
264
9a86cdb9
PE
2652002-11-13 Paul Eggert <eggert@twinsun.com>
266
daa33def
PE
267 Fix some bugs reported by Albert Chin-A-Young in
268 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001881.html>.
18b519c0 269
daa33def 270 * tests/input.at (Torturing the Scanner): Don't invoke "cc a.c b.c
8fcc7db1 271 -o c"; the HP C compiler chatters during compilation.
daa33def
PE
272 Instead, invoke "cc -c a.c -o a.o; cc -c b.c -o b.o; cc a.o b.o -o c".
273 * tests/headers.at (export YYLTYPE): Likewise.
274
275 * tests/input.at (Torturing the Scanner): Remove lines containing
8fcc7db1 276 solitary backslashes, as they tickle a bug in the HP C compiler.
daa33def 277
9a86cdb9
PE
278 * tests/glr-regr1.at (Badly Collapsed GLR States): Avoid //
279 comments, since they're not portable. Use GNU coding style.
280
9c1e26bd
AD
2812002-11-13 Akim Demaille <akim@epita.fr>
282
283 * data/yacc.c: Leave bigger chunks of quoted text.
284 (YYDSYMPRINTF): New.
285 Use it to report symbol activities.
286 * data/glr.c (YYDSYMPRINTF): New.
287 Use it.
288
87f721cc
PE
2892002-11-12 Paul Eggert <eggert@twinsun.com>
290
291 Version 1.75b.
292
293 * data/glr.c (yydoAction): Return YYRESULTTAG, not int.
294 (yyglrReduce): Return yyok, not 0.
295 This should avoid the enumerated-type warnings reported
296 by Nelson H.F. Beebe in
297 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001872.html>.
298
299 * lib/bbitset.h (BITSET_INLINE): Remove.
300 * lib/bitset.h [! BITSET_INLINE]: Remove.
301 (bitset_set, bitset_reset, bitset_test): Rename local vars
302 to avoid shadowing warnings by GCC.
303
304 * data/glr.c (inline): Remove #define. It's the user's
305 responsibility to #define it away, just like 'const'.
306 This fixes one of the bugs reported by Nelson H.F. Beebe in
307 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001873.html>.
18b519c0 308
87f721cc
PE
309 * Makefile.maint (po-check): Scan .l and .y files instead of the
310 .c and the .h files that they generate. This fixes the bug
311 reported by Tim Van Holder in:
312 <http://mail.gnu.org/pipermail/bison-patches/2002-November/001352.html>
313 Look for N_ as well as for _. Try to avoid matching #define for
314 N_ and _.
315 * po/POTFILES.in: Remove src/parse-gram.c, src/scan-gram.c,
316 src/system.h. Add src/parse-gram.y, src/scan-gram.l.
317 * src/scan-gram.l: Revamp regular expressions so that " and '
318 do not confuse xgettext.
319
320 * src/struniq.h (struniq_new): Do not declare the return type
321 to be 'const'; this violates the C standard.
322 * src/struniq.c (struniq_new): Likewise.
323
be14ade5
AD
3242002-11-12 Albert Chin-A-Young <china@thewrittenword.com>
325
326 * src/Makefile.am (LDADD): Link $(LIBINTL) last to avoid the
327 duplicate definition of optind on Tru64 UNIX 4.0D with the Compaq
328 linker.
329
05291fbc
AD
3302002-11-12 Akim Demaille <akim@epita.fr>
331
332 * Makefile.maint: Sync with Autoconf:
333 (local_updates): New.
334
1f5fd52e
AD
3352002-11-12 Akim Demaille <akim@epita.fr>
336
337 * po/POTFILES.in (src/lalr.c, src/state.c): Remove
338
283f1e64
AD
3392002-11-12 Akim Demaille <akim@epita.fr>
340
341 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Display the
342 locations.
343
886b69d1
AD
3442002-11-12 Akim Demaille <akim@epita.fr>
345
346 * data/c.m4 (b4_yysymprint_generate): Pass *yyvaluep to YYPRINT,
347 not yyvalue.
348
3df37415
AD
3492002-11-12 Akim Demaille <akim@epita.fr>
350
351 * tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): New.
352 Use it to test the GLR parser.
353
7bd6c77e
AD
3542002-11-12 Akim Demaille <akim@epita.fr>
355
356 * tests/regression.at (input.y): s/YYEOF/MYEOF/, as the skeleton
357 defines it.
358 * data/glr.c (yystos): New.
359 (b4_yysymprint_generate, b4_yydestruct_generate): Invoke.
360 (YYDSYMPRINT): New.
361 (yyval): Don't define it, it is handled via M4.
362 (yyrecoverParseError): Free verbosely the discarded symbols.
363 * data/yacc.c (yysymprint): Remove, rather...
364 (b4_yysymprint_generate): invoke.
365 * data/c.m4 (b4_yysymprint_generate): New.
366 Accept pointers as arguments, as opposed to the version from
367 yacc.c.
368 (b4_yydestruct_generate): Likewise.
369 * tests/cations.at (Printers and Destructors): Use Bison directives
370 instead of CPP macros.
371 Don't rely on internal details.
372
b0400cc6
AD
3732002-11-12 Akim Demaille <akim@epita.fr>
374
375 * data/c.m4 (b4_yydestruct_generate, b4_symbol_actions): New.
376 * data/yacc.c: Rename yychar1 as yytoken, as in glr.c.
377 Don't work on yychar (i.e., do set it to YYEMPTY, don't match
378 it against YYEMPTY and so forth), work on yytoken (i.e., set
379 it to YYEMPTY etc.).
380 (yydestruct): Replace with a b4_yydestruct_generate invocation.
381 (b4_symbol_actions): Remove.
382 * data/glr.c (YYTRANSLATE): As for yacc.c, if negative, it stands
383 for 0, end-of-input.
384
72f889cc
AD
3852002-11-12 Akim Demaille <akim@epita.fr>
386
387 * doc/bison.texinfo (Destructor Decl): New.
388
b1ae9233
AD
3892002-11-12 Akim Demaille <akim@epita.fr>
390
391 * src/tables.c (tables_generate): Use free for pointers that
392 cannot be NULL, not XFREE.
393 (pack_vector): Use assert, not fatal, for bound violations.
394 * src/state.c (state_new): Likewise.
395 * src/reader.c (reader): Likewise.
396 * src/lalr.c (set_goto_map): Likewise.
72f889cc 397 * src/location.h (LOCATION_PRINT): If first_line is 0, just issue
b1ae9233
AD
398 the file name.
399
7ec2d4cd
AD
4002002-11-12 Akim Demaille <akim@epita.fr>
401
402 * src/scan-gram.l, src/reader.h (scanner_last_string_free):
403 Restore.
404 * src/scan-gram.l (last_string): Is global to the file, not to
405 yylex.
406 * src/parse-gram.y (input): Don't append the epilogue here,
407 (epilogue.opt): do it here, and free the scanner's obstack.
408 * src/reader.c (epilogue_set): Rename as...
409 (epilogue_augment): this.
410 * data/c.m4 (b4_epilogue): Defaults to empty.
411
573a6cd3
AD
4122002-11-12 Akim Demaille <akim@epita.fr>
413
414 * src/getargs.c (long_options): Remove duplicates.
415 * src/vmsgetargs.c, src/build.com, src/bison.cld, src/vmshlp.mar:
416 Remove.
417 * doc/bison.rnh: Remove.
418 * doc/bison.texinfo (VMS Invocation): Remove.
419
95612cfa
AD
4202002-11-12 Akim Demaille <akim@epita.fr>
421
422 * src/struniq.h, src/struniq.c (struniq_t): Is const.
423 (STRUNIQ_EQ, struniq_assert, struniq_assert_p): New.
424
425 Use struniq for symbols.
426
427 * src/symtab.h (symbol_t): The tag member is a struniq.
428 (symbol_type_set): Adjust.
429 * src/symtab.c (symbol_new): Takes a struniq.
430 (symbol_free): Don't free the tag member.
431 (hash_compare_symbol_t, hash_symbol_t): Rename as...
432 (hash_compare_symbol, hash_symbol): these.
433 Use the fact that tags as struniqs.
434 (symbol_get): Use struniq_new.
435 * src/symlist.h, src/symlist.c (symbol_list_n_type_name_get):
436 Returns a strniq.
437 * src/reader.h (merger_list, grammar_currentmerge_set): The name
438 and type members are struniqs.
439 * src/reader.c (get_merge_function)
440 (grammar_current_rule_merge_set): Adjust.
441 (TYPE, current_type): Are struniq.
442
443 Use struniq for file names.
444
445 * src/files.h, src/files.c (infile): Split into...
446 (grammar_file, current_file): these.
447 * src/scan-gram.c (YY_USER_INIT, handle_syncline): Adjust.
448 * src/reduce.c (reduce_print): Likewise.
449 * src/getargs.c (getargs): Likewise.
450 * src/complain.h, src/complain.c: Likewise.
451 * src/main.c (main): Call struniqs_new early enough to use it for
452 file names.
453 Don't free the input file name.
454
3e6656f9
AD
4552002-11-12 Akim Demaille <akim@epita.fr>
456
457 * src/symtab.c (symbol_free): Remove dead deactivated code:
458 type_name are properly removed.
459 Don't use XFREE to free items that cannot be NULL.
460 * src/struniq.h, src/struniq.c: New.
461 * src/main.c (main): Initialize/free struniqs.
462 * src/parse-gram.y (%union): Add astruniq member.
463 (yyprint): Adjust.
464 * src/scan-gram.l (<{tag}>): Return a struniq.
465 Free the obstack bit that used to store it.
466 * src/symtab.h (symbol_t): The 'type_name' member is a struniq.
467
7672019c
PE
4682002-11-11 Paul Eggert <eggert@twinsun.com>
469
470 Revamp to fix many (but not all) of the C- and M4-related quoting
471 problems. Among other things, this fixes the Bison bug reported
472 by Jan Hubicka when processing the Bash grammar; see:
473 <http://mail.gnu.org/pipermail/bison-patches/2002-November/001329.html>
474
475 Use new @ escapes consistently. Represent brackets with @{ and @}
476 rather than @<:@ and @:>@, since this works a bit better with dumb
477 editors like vi. Represent @ with @@, since @ is now consistently
478 an escape. Use @oline@ and @ofile@ rather than __oline__ and
479 __ofile__, to avoid unexpected expansions. Similarly, use @output
480 rather than #output.
481
482 * data/c.m4 (b4_copyright): Omit file name from comment, since
483 the file name could contain "*/".
484 (b4_synclines_flag): Don't quote the 2nd argument; it should already
485 be quoted. All uses changed.
486
487 * data/glr.c: Use new @ escapes consistently.
488 (b4_input_suffix, b4_output_parser_suffix, b4_output_parser_name,
489 b4_output_header_suffix, b4_output_header_name, b4_header_guard):
490 Remove, since they couldn't handle arbitrary characters in file
491 names.
492 * data/lalr1.cc: Likewise.
493 * data/yacc.c: Likewise.
494
495 * src/files.c (output_infix): Remove; all uses removed.
496 * src/files.h: Likewise.
497
498 * data/glr.c: Remove use of "#ifdef b4_header_guard", since it
499 mishandled funny characters in file names, and anyway it isn't
500 needed any more.
501 * data/yacc.c: Likewise.
502 * data/lalr1.cc: Use YYSLP_NEEDED instead of b4_header_guard.
503
504 * data/glr.c (YYSTYPE_IS_TRIVIAL): Define when the .h file would.
505 * data/yacc.c: Likewise.
506
507 * src/muscle_tab.c: Include quotearg.h, since we need to quote C
508 strings now.
509 (muscle_init): Quote filename as a C string.
510 * src/muscle_tab.h (MUSCLE_GROW_STRING_PAIR): Remove; unused.
511 (MUSCLE_OBSTACK_SGROW, MUSCLE_INSERT_C_STRING): New macros.
512 * src/output.c (escaped_file_name_output): New function.
513 (prepare_symbols): Quote tokens for M4.
514 (prepare): Don't insert output_infix, output_prefix,
515 output_parser_name, output_header_name; this is now down by scan-skel.
516 Insert skeleton as a C string.
517
518 * src/output.c (user_actions_output, symbol_destructors_output,
519 symbol_printers_output): Quote filenames for C and M4.
520 * src/reader.c (prologue_augment, epilogue_set): Likewise.
521
522 * src/scan-gram.l (<SC_CHARACTER>): Don't worry about any backslash
523 escapes other than \\ and \'; this simplifies the code.
524 (<SC_STRING>): Likewise, for \\ and \".
525 (<SC_COMMENT,SC_LINE_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,
526 SC_PROLOGUE,SC_EPILOGUE>): Escape $ and @, too.
527 Use new escapes @{ and @} for [ and ].
528
529 * src/scan-skel.l (yylineno, yyoutname): Remove static vars, replacing
530 them with auto vars.
531 Switch to new escape scheme, where @ is the escape character uniformly.
532 Abort if a stray escape character is found. Avoid unbounded input
533 buffer when parsing non-escaped text.
534
535 * tests/input.at (Torturing the Scanner): Add tests that @oline@,
536 __oline__, #output, $@, and @{ do not have unintended meanings.
537
acea4f3b
PE
5382002-11-09 Paul Eggert <eggert@twinsun.com>
539
540 Fix the test failure due to GCC warnings described in
541 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001815.html>.
542 * data/glr.c (yyis_pact_ninf, yyis_table_ninf): New macros, which
543 evaluate to 0 if it's impossible for NINF to be in the respective
544 table.
545 (yygetLRActions, yyrecoverParseError): Use them.
546
547 * src/scan-gram.l (unexpected_end_of_file): Fix bug: columns were
548 counted in the token inserted at end of file. Now takes
549 location_t *, not location_t, so that the location can be
550 adjusted. All uses changed.
551
552 * tests/regression.at (Invalid inputs): Adjust wording in
553 diagnostic to match the new behavior.
554
555 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR,
556 AT_DATA_HORIZONTAL_GRAMMAR, AT_DATA_LOOKAHEADS_GRAMMAR,
557 AT_DATA_STACK_TORTURE): Replace `assert (x);' with `if (! (x))
558 abort ();'. This reduces the runtime of the "Many lookaheads"
559 test from 27.6 to 2.7 minutes on a 440 MHz Ultrasparc III running
560 GCC 3.2.
561
20ef1ad5
PE
5622002-11-07 Paul Eggert <eggert@twinsun.com>
563
564 * src/parse-gram.y (CHARACTER): Remove unused token.
565 All uses removed.
566
567 * src/scan-gram.l: Remove stack option. We no longer use the
568 stack, since the stack was never deeper than 1; instead, use the
569 new auto var c_context to record the stacked value.
570
571 Remove nounput option. At an unexpected end of file, we now unput
572 the minimal input necessary to end cleanly; this simplifies the
573 code.
574
575 Avoid unbounded token sizes where this is easy.
576
577 (unexpected_end_of_file): New function.
578 Use it to systematize the error message on unexpected EOF.
579 (last-string): Now auto, not static.
580 (YY_OBS_FREE): Remove unnecessary do while (0) wrapper.
581 (scanner_last_string_free): Remove; not used.
582 (percent_percent_count): Move decl to just before use.
583 (SC_ESCAPED_CHARACTER): Return ID at unexpected end of file,
584 not the (never otherwised-used) CHARACTER.
585
93724f13
AD
5862002-11-07 Akim Demaille <akim@epita.fr>
587
588 Let yyerror always receive the msg as last argument, so that
589 yyerror can be variadic.
590
591 * data/yacc.c (b4_yyerror_args): New.
592 Use it when calling yyerror.
593 * data/glr.c (b4_yyerror_args, b4_lyyerror_args): New.
594 Use it when calling yyerror.
595 * doc/bison.texinfo (Error Reporting): Adjust.
596 * tests/calc.at (_AT_DATA_CALC_Y): Adjust.
597 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Adjust.
598
6e40b4eb
AD
5992002-11-06 Akim Demaille <akim@epita.fr>
600
601 #line should have quoted strings.
602 Ideally, this should be done by m4_quotearg.
603
604 * src/scan-skel.l: Include quotearg.h.
605 Quote __ofile__.
606 * src/output.c (symbol_printers_output)
607 (symbol_destructors_output): Quote the file name.
608
2dfbfc12
AD
6092002-11-06 Akim Demaille <akim@epita.fr>
610
611 * tests/regression.at (Invalid inputs): Adjust to the recent
612 messages.
613
437c2d80
AD
6142002-11-06 Akim Demaille <akim@epita.fr>
615
616 Restore --no-lines.
617 Reported by Jim Kent.
618
619 * data/c.m4 (b4_syncline): New.
620 * data/glr.c, data/yacc.c, data/lalr1.cc: Use it.
621 * src/reader.c (prologue_augment, epilogue_set): Use b4_syncline.
622 * src/output.c (user_actions_output): Likewise.
623 (prepare): Define 'b4_synclines_flag'.
2dfbfc12 624 * src/muscle_tab.c (muscle_init): Don't define b4_linef.
437c2d80 625
900c5db5
AD
6262002-11-06 Akim Demaille <akim@epita.fr>
627
628 * src/main.c (main): Free `infile'.
629 * src/scan-gram.l (handle_syncline): New.
630 Recognize `#line'.
631 * src/output.c (user_actions_output, symbol_destructors_output)
632 (symbol_printers_output): Use the location's file name, not
633 infile.
634 * src/reader.c (prologue_augment, epilogue_set): Likewise.
635
e183b123 6362002-11-05 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
51b4a04c 637
e183b123 638 * src/tables.c (matching_state): Don't allow states to match if
51b4a04c 639 either has GLR conflict entries.
e183b123 640
193eb6b7
PE
6412002-11-05 Paul Eggert <eggert@twinsun.com>
642
e183b123
PE
643 * src/scan-gram.l: Use more accurate diagnostics, e.g.
644 "integer out of range" rather than "invalid value".
645 * tests/input.at (Invalid $n, Invalid @n): Change expected wording
646 accordingly.
647
193eb6b7
PE
648 Scan <% and %> digraphs in C code as POSIX 1003.1-2001 requires.
649 Also, remove one static variable in the scanner.
650
651 * src/scan-gram.l (braces_level): Now auto, not static.
652 Initialize to zero if the compiler is being picky.
653 (INITIAL): Clear braces_level instead of incrementing it.
654 (SC_BRACED_CODE): Treat <% and %> as { and } when inside C code,
655 as POSIX 1003.1-2001 requires.
656 * src/system.h (IF_LINT): New macro, taken from coreutils.
657 * configure.ac: Define "lint" if --enable-gcc-warnings.
658
29c01725
AD
6592002-11-05 Akim Demaille <akim@epita.fr>
660
661 * src/scan-gram.l: When it starts with `%', complain about the
662 whole directive, not just that `invalid character: %'.
663
8aeac3ca
AD
6642002-11-04 Akim Demaille <akim@epita.fr>
665
666 * Makefile.maint: Update from Autoconf.
667 (update, cvs-update, po-update, do-po-update): New.
668
793a58bb
AD
6692002-11-04 Akim Demaille <akim@epita.fr>
670
671 * tests/glr-regr1.at (Badly Collapsed GLR States): Prototype yylex
672 and yyerror.
673 Have yyerror `use' its arguments.
674 * tests/calc.at (AT_CHECK_PUSHDEFS): AT_YYERROR_SEES_LOC_IF
675 returns true when location & yacc & pure & parse-param.
676 (_AT_DATA_CALC_Y): Let yyerror ``use'' its arguments.
677
c4d720cd
AD
6782002-11-04 Akim Demaille <akim@epita.fr>
679
680 * src/location.h (LOCATION_PRINT): Use quotearg slot 3 to avoid
681 clashes.
682 * src/scan-gram.l: Use [\'] instead of ['] to pacify
683 font-lock-mode.
684 Use complain_at.
685 Use quote, not quote_n since LOCATION_PRINT no longer uses the
686 slot 0.
687
613a0dc5
PE
6882002-11-03 Paul Eggert <eggert@twinsun.com>
689
690 * src/reader.c (get_merge_function, grammar_current_rule_check):
691 Use consistent diagnostics for reporting type name clashes.
692 Quote the types with <>, for consistency with Yacc.
693 * tests/input.at (Type Clashes): Adjust to diagnostic changes.
694
2a8d363a
AD
6952002-11-03 Akim Demaille <akim@epita.fr>
696
697 * data/c.m4 (b4_identification, b4_user_args, b4_parse_param):
698 New.
699 * data/yacc.m4 (b4_pure_args, b4_Pure_args): New.
700 (b4_parse_param): Remove.
701 Use b4_identification.
702 Propagate b4_pure_args where needed to pass them to yyerror.
703 * data/glr.m4 (b4_parse_param): Remove.
704 (b4_user_formals, b4_pure_args, b4_pure_formals, b4_lpure_args)
705 (b4_lpure_formals): New.
706 Use b4_identification.
707 (YY_USER_FORMALS, YY_USER_ARGS): Remove, replaced by
708 b4_user_formals and b4_user_args.
709 (yyexpandGLRStack, yyFail, yyaddDeferredAction, yyglrShiftDefer)
710 (yyreportAmbiguity): When using a pure parser, also need
711 the location, and the parse-params.
712 Adjust callers.
713 (yyuserAction, yyglrShift, yyreportParseError, yyrecoverParseError):
714 When using a pure parser, also need the parse-params.
715 Adjust callers.
716 * tests/calc.at: Test pure (%pure-parser) and absolutely pure
717 (%pure-parser + %parse-param) LALR and GLR parsers.
718 (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): New, define AT_PARAM_IF,
719 AT_LOCATION_IF, AT_PURE_IF, AT_GLR_IF, AAT_PURE_AND_LOC_IF,
720 AT_GLR_OR_PARAM_IF, AT_YYERROR_ARG_LOC_IF, AT_YYERROR_SEES_LOC_IF.
721 (_AT_DATA_CALC_Y): Equip for purity of yyerror.
722 (_AT_CHECK_CALC_ERROR): Use AT_YYERROR_SEES_LOC_IF.
723 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Equip for yyerror purity.
724 * doc/bison.texinfo: Untabify the whole file.
725 (Parser Function): Document %parse-param, deprecate YYPARSE_PARAM.
726 (Pure Calling): Document %lex-param, deprecate YYLEX_PARAM.
727 (Error Reporting): Adjust to these new directives.
728 Document %error-verbose, deprecate YYERROR_VERBOSE.
729
9e32add8
AD
7302002-11-03 Akim Demaille <akim@epita.fr>
731
732 * tests/calc.at: Change all the AT_CHECK_CALC_LALR and
733 AT_CHECK_CALC_GLR invocations to use % directives, instead of
734 command line options.
735 * tests/cxx-type.at: Formatting changes.
736
b02d90a5
PE
7372002-11-03 Paul Eggert <eggert@twinsun.com>
738
739 * src/scan-gram.l: Revamp to fix POSIX incompatibilities,
740 to count columns correctly, and to check for invalid inputs.
9e32add8 741
b02d90a5
PE
742 Use mbsnwidth to count columns correctly. Account for tabs, too.
743 Include mbswidth.h.
744 (YY_USER_ACTION): Invoke extend_location rather than LOCATION_COLUMNS.
745 (extend_location): New function.
746 (YY_LINES): Remove.
747
748 Handle CRLF in C code rather than in Lex code.
749 (YY_INPUT): New macro.
750 (no_cr_read): New function.
751
752 Scan UCNs, even though we don't fully handle them yet.
753 (convert_ucn_to_byte): New function.
754
755 Handle backslash-newline correctly in C code.
756 (SC_LINE_COMMENT, SC_YACC_COMMENT): New states.
757 (eols, blanks): Remove. YY_USER_ACTION now counts newlines etc.;
758 all uses changed.
759 (tag, splice): New EREs. Do not allow NUL or newline in tags.
760 Use {splice} wherever C allows backslash-newline.
761 YY_STEP after space, newline, vertical-tab.
762 ("/*"): BEGIN SC_YACC_COMMENT, not yy_push_state (SC_COMMENT).
9e32add8 763
b02d90a5
PE
764 (letter, id): Don't assume ASCII; e.g., spell out a-z.
765
766 ({int}, handle_action_dollar, handle_action_at): Check for integer
767 overflow.
9e32add8 768
b02d90a5
PE
769 (YY_STEP): Omit trailing semicolon, so that it's more like C.
770
771 (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>): Allow \0 and \00
772 as well as \000. Check for UCHAR_MAX, not 255.
773 Allow \x with an arbitrary positive number of digits, as in C.
774 Check for overflow here.
775 Allow \? and UCNs, for compatibility with C.
776
777 (handle_symbol_code_dollar): Use quote_n slot 1 to avoid collision
778 with quote slot used by complain_at.
779
780 * tests/input.at: Add tests for backslash-newline, m4 quotes
781 in symbols, long literals, and funny escapes in strings.
782
783 * configure.ac (jm_PREREQ_MBSWIDTH): Add.
784 * lib/Makefile.am (libbison_a_SOURCES): Add mbswidth.h, mbswidth.c.
785 * lib/mbswidth.h, lib/mbswidth.c: New files, from GNU gettext.
786 * m4/Makefile.am (EXTRA_DIST): Add mbswidth.m4.
787 * m4/mbswidth.m4: New file, from GNU coreutils.
788
789 * doc/bison.texinfo (Grammar Outline): Document // comments.
790 (Symbols): Document that trigraphs have no special meaning in Bison,
791 nor is backslash-newline allowed.
792 (Actions): Document that trigraphs have no special meaning.
793
794 * src/location.h (LOCATION_COLUMNS, LOCATION_LINES): Remove;
795 no longer used.
796
7972002-11-02 Paul Eggert <eggert@twinsun.com>
798
799 * src/reader.c: Don't include quote.h; not needed.
800 (get_merge_function): Reword warning to be consistent with
801 type clash diagnostic in grammar_current_rule_check.
802
803 * lib/quotearg.c (quotearg_buffer_restyled): Fix off-by-two
804 bug in trigraph handling.
805
806 * src/output.c (prepare_symbols): When printing token names,
807 escape "[" as "@<:@" and likewise for "]".
808
809 * src/system.h (errno): Remove declaration, as we are now
810 assuming C89 or better, and C89 guarantees errno.
811
762b212b
PE
8122002-10-30 Paul Eggert <eggert@twinsun.com>
813
814 * lib/bitset_stats.c (bitset_stats_read, bitset_stats_write):
815 Check for close failures.
816 * src/files.h (xfclose): Return void, not int, since it always
817 returned zero.
818 * src/files.c (xfclose): Likewise. Report I/O error if ferror
819 indicates one.
820 * src/output.c (output_skeleton): Use xfclose rather than fclose
821 and ferror. xfclose now checks ferror.
822
823 * data/glr.c (YYLEFTMOST_STATE): Remove.
824 (yyreportTree): Use a stack-based leftmost state. This avoids
825 our continuing battles with bogus warnings about initializers.
826
56100c60
AD
8272002-10-30 Akim Demaille <akim@epita.fr>
828
829 * src/system.h: Don't use #ifdef/#ifndef on HAVE_ values, only
830 #if.
831
51b4a04c
PH
8322002-10-29 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
833
834 * tests/glr-regr1.at: New test for reported regressions.
835 * tests/testsuite.at: Add glr-regr1.at test.
836 * tests/Makefile.am: Add glr-regr1.at test.
e183b123 837
bf1ebda2
PE
8382002-10-24 Paul Eggert <eggert@twinsun.com>
839
5c16c6b1
PE
840 Version 1.75a.
841
bf1ebda2
PE
842 * tests/calc.at (_AT_DATA_CALC_Y): Remove unused strcat declaration.
843 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Include stdlib.h, since
844 we use malloc. Don't assume 'A' through 'Z' are contiguous.
845 Don't assume strdup exists; POSIX says its an XSI extension.
846 Check for buffer overflow on input.
847
b526ee61
AD
8482002-10-24 Akim Demaille <akim@epita.fr>
849
850 * src/output.c (output_skeleton): Don't disable M4sugar comments
851 too soon: it results in comments being expanded.
852 * data/yacc.c, data/glr.c, data/lalr1.cc: Do it right before the
853 first output.
854
f1886bb2
AD
8552002-10-24 Akim Demaille <akim@epita.fr>
856
857 * data/yacc.c (m4_int_type): New.
858 * data/c.m4 (m4_int_type): Don't use yysigned_char, but `signed
859 char' as only yacc.c wants K&R portability.
860 * data/glr.c (yysigned_char): Remove.
861 * data/lalr1.cc: Rename the trailing b4_name as b4_parser_class_name.
862 Reported by Quoc Peyrot.
863
c5576256
PE
8642002-10-23 Paul Eggert <eggert@twinsun.com>
865
866 * src/main.c (main): With --trace=time, report times even if a
867 non-fatal error occurs. Formerly, the times were reported in some
868 such cases but not in others.
869 * src/reader.c (reader): Just return if a complaint has been issued,
870 instead of exiting, so that 'main' can report times.
871
27b0ffea
AD
8722002-10-22 Akim Demaille <akim@epita.fr>
873
874 * src/system.h: Include sys/types.
875 Reported by Bert Deknuydt.
876
223a7883
PE
8772002-10-23 Paul Eggert <eggert@twinsun.com>
878
879 * configure.ac (AC_PROG_LEX): Use instead of AM_PROG_LEX.
880 Suggested by Art Haas.
881
8822002-10-22 Paul Eggert <eggert@twinsun.com>
883
884 * src/complain.c (exit) [! (STDC_HEADERS || _LIBC)]: Remove exit
885 decl; not needed any more.
886 * src/main.c (main): Use return to exit, undoing yesterday's change.
887 The last OS that we could find where this wouldn't work is
888 SunOS 3.5, and that's too old to worry about now.
889
890 * data/glr.c (struct yyltype): Define members even when not
891 doing locations. This is more consistent with yacc.c, and it
892 works around the following bug reports:
893 http://mail.gnu.org/pipermail/bug-bison/2002-October/001764.html
894 http://mail.gnu.org/pipermail/bug-bison/2002-October/001769.html
895 and I hope it also fixes this bug report:
896 http://mail.gnu.org/pipermail/bug-bison/2002-October/001748.html
27b0ffea 897
223a7883
PE
898 * doc/bison.texinfo: Minor spelling and typographical fixes. Use
899 @acronym consistently. Standardize on "Yacc" instead of "YACC",
900 "Algol" instead of "ALGOL". Give a bit more history about BNF.
901
8b76775a
AD
9022002-10-22 Akim Demaille <akim@epita.fr>
903
904 * data/README: New.
905
6db10d14
PE
9062002-10-21 Paul Eggert <eggert@twinsun.com>
907
908 Be consistent about 'bool'; the old code used an enum in one
909 module and an int in another, and this violates the C standard.
910 * m4/stdbool.m4: New file, from coreutils 4.5.3.
911 * configure.ac (AC_HEADER_STDBOOL): Add.
912 * m4/Makefile.am (EXTRA_DIST): Add stdbool.m4.
913 * src/muscle_tab.c (hash_compare_muscles): (a ? FALSE : TRUE) -> (! a)
914 * src/symtab.c (hash_compare_symbol_t): Likewise.
915 * src/system.h (bool, false, true): Use a definition consistent
916 with ../lib/hash.c. All uses changed.
917
918 * src/complain.c (warning_issued): Renamed from warn_message_count,
919 so that we needn't worry about integer overflow (!).
920 Now of type bool. All uses changed.
921 (complaint_issued): Renamed from complain_message_count; likewise.
922
923 * src/main.c (main): Use exit to exit with failure.
27b0ffea 924
6db10d14
PE
925 * src/complain.c (fatal_at, fatal): Use EXIT_FAILURE and EXIT_SUCCESS
926 rather than 1 and 0.
927 * src/main.c (main): Likewise.
928 * src/getargs.c (getargs): Likewise.
929 * src/reader.c (reader): Likewise.
930
931 * src/getarg.c (getargs): Remove duplicate code for
932 "Try `bison --help'".
933
934 * src/files.c (xfopen, xfclose): Use EXIT_FAILURE rather than 2.
935 What was that "2" for?
936
937 * src/complain.h (fatal, fatal_at): Add __attribute__((__noreturn__)).
938 * src/getargs.c (usage): Likewise.
939
940 * src/getargs.c (getargs): When there are too few operands, report
941 the last one. When there are too many, report the first extra
942 one. This is how diffutils does it.
943
92a060fd
PE
9442002-10-20 Paul Eggert <eggert@twinsun.com>
945
946 Remove K&R vestiges.
947 * configure.ac (AC_C_CONST, AM_C_PROTOTYPES): Remove.
948 * src/complain.c (VA_START): Remove. Assume prototypes.
949 (vfprintf) [! (HAVE_VPRINTF || defined vfprintf)]: New macro.
950 (private_strerror, warn_at, warn, complain_at, complain, fatal_at,
951 fatal): Assume prototypes.
952 * src/complain.h: Assume prototypes.
953 * src/system.h (PARAMS): Remove.
954 Include <limits.h> unconditionally, since it's guaranteeed even
955 for a freestanding C89 compiler.
956 (SHRT_MIN, SHRT_MAX): Remove, since C89 guarantees them.
957 * src/vmsgetargs.c (getargs, cli_present, cli_get_value): Prototype.
8b76775a 958
e7cb57c0
AD
9592002-10-20 Akim Demaille <akim@epita.fr>
960
961 * src/muscle_tab.c (muscle_grow): Remove trailing debugging code.
962 * data/glr.c (YY_USER_FORMALS, YY_USER_ARGS): New.
963 (yyuserAction, yydoAction, yyglrReduce, yyresolveValue)
964 (yyresolveStates, yyresolveAction, yyresolveStack)
965 (yyprocessOneStack): Use them.
966 (yy_reduce_print): New.
967 * tests/calc.at (_AT_DATA_CALC_Y): Exercise %parse-param.
968
0245f82d
AD
9692002-10-20 Akim Demaille <akim@epita.fr>
970
971 * data/c.m4 (b4_c_ansi_args): Recognize functions with no
972 arguments and output `void'.
973 (b4_c_function): Rename as...
974 (b4_c_function_def): this.
975 (b4_c_function_decl, b4_c_ansi_function_def)
976 (b4_c_ansi_function_decl): New.
977 Change the interpretation of the arguments: before `int, foo', now
978 `int foo, foo'.
979 * data/yacc.c (yyparse): Prototype and define thanks to these.
980 Adjust b4_c_function_def uses.
981 * data/glr.c (yyparse): Likewise, but ANSI only.
982
39912f52
AD
9832002-10-20 Akim Demaille <akim@epita.fr>
984
985 * src/output.c (prepare): Move the definition of `tokens_number',
986 `nterms_number', `undef_token_number', `user_token_number_max'
987 to...
988 (prepare_tokens): Here.
989 (prepare_tokens): Rename as...
990 (prepare_symbols): this.
991 (prepare): Move the definition of `rules_number' to...
992 (prepare_rules): here.
993 (prepare): Move the definition of `last', `final_state_number',
994 `states_number' to...
995 (prepare_states): here.
996 * data/yacc.c, data/lalr1.cc, data/glr.c: Normalize `>' into `<'.
997
20c1e2ad
AD
9982002-10-20 Akim Demaille <akim@epita.fr>
999
1000 * src/tables.h, src/tables.c, src/output.c: Comment changes.
1001
21964f43
AD
10022002-10-20 Akim Demaille <akim@epita.fr>
1003
1004 * data/yacc.c, data/yacc.c (b4_location_if, b4_pure_if): Move to...
1005 * data/c.m4: here.
1006
66d30cd4
AD
10072002-10-20 Akim Demaille <akim@epita.fr>
1008
1009 * src/output.c (prepare): Use MUSCLE_INSERT_STRING.
1010 * src/muscle_tab.c (muscle_pair_list_grow): Rename `val as
1011 `pair'.
1012 (muscle_init): Move the `b4_ltype', `b4_maxdepth', `b4_initdepth',
1013 `name' to...
1014 * data/glr.c, data/lalr1.cc, data/yacc.c (b4_location_type)
1015 (b4_stack_depth_init, b4_stack_depth_max, b4_parser_class_name):
1016 These.
1017
95f2c9fe
PE
10182002-10-19 Paul Eggert <eggert@twinsun.com>
1019
1020 Do not create a temporary file, as that involves security and
1021 cleanup headaches. Instead, use a pair of pipes.
1022 Derived from a suggestion by Florian Krohm.
1023 * lib/subpipe.c, lib/subpipe.h, m4/subpipe.m4: New files.
1024 * lib/mkstemp.c, lib/readpipe.c, lib/tempname.c, m4/mkstemp.m4: Remove.
1025 * configure.ac (UTILS_FUNC_MKSTEMP, jm_PREREQ_TEMPNAME): Remove.
1026 (BISON_PREREQ_SUBPIPE): Add.
1027 * lib/Makefile.am (libbison_a_SOURCES): Remove readpipe.c.
1028 Add subpipe.h, subpipe.c.
1029 * m4/Makefile.am (EXTRA_DIST): Remove mkstemp.m4. Add subpipe.m4.
1030 * po/POTFILES.in: Add lib/subpipe.c.
1031 * src/output.c: Include "subpipe.h".
1032 (m4_invoke): Remove decl.
1033 (scan_skel): New decl.
1034 (output_skeleton): Use pipe rather than temporary file for m4 input.
1035 Check that m4sugar.m4 is readable, to avoid deadlock.
1036 Check for pipe I/O error.
1037 * src/scan-skel.l (readpipe): Remove decl.
1038 (scan_skel): New function, to be used in place of m4_invoke.
1039 Read from stream rather than file.
66d30cd4 1040
95f2c9fe
PE
1041 * lib/timevar.c (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Do not cast to
1042 float, as this generates a warning on Solaris 8 + GCC 3.2 with
1043 --enable-gcc-warnings. Instead, divide into 1.0 rather than 1;
1044 this generates a more-accurate value anyway.
1045
1046 * lib/timevar.c (timervar_accumulate): Rename locals to
1047 avoid confusion with similarly-named more-global.
1048 * src/muscle_tab.c (muscle_pair_list_grow): Likewise.
1049
1050 * src/output.c (prepare): Use xstrdup to convert char const *
1051 to char *, to avoid GCC warning.
1052
c19988b7
AD
10532002-10-19 Akim Demaille <akim@epita.fr>
1054
1055 * tests/calc.at (_AT_DATA_CALC_Y): Define VAL, LOC, LEX_FORMALS,
1056 LEX_PRE_FORMALS, LEX_ARGS, LEX_PRE_ARGS, USE_LEX_ARGS.
1057 Use them to have `calc.y' ready for %pure-parser.
1058 * data/yacc.c (YYLEX): Pass a yylex return type to
1059 b4_c_function_call.
1060
ae7453f2
AD
10612002-10-19 Akim Demaille <akim@epita.fr>
1062
1063 Prototype support of %lex-param and %parse-param.
1064
1065 * src/parse-gram.y: Add the definition of the %lex-param and
1066 %parse-param tokens, plus their rules.
1067 Drop the `_' version of %glr-parser.
1068 Add the "," token.
1069 * src/scan-gram.l (INITIAL): Scan them.
1070 * src/muscle_tab.c: Comment changes.
1071 (muscle_insert, muscle_find): Rename `pair' as `probe'.
1072 * src/muscle_tab.h (MUSCLE_INSERT_PREFIX): Remove unused.
1073 (muscle_entry_s): The `value' member is no longer const.
1074 Adjust all dependencies.
1075 * src/muscle_tab.c (muscle_init): Adjust: use
1076 MUSCLE_INSERT_STRING.
1077 Initialize the obstack earlier.
1078 * src/muscle_tab.h, src/muscle_tab.c (muscle_grow)
1079 (muscle_pair_list_grow): New.
1080 * data/c.m4 (b4_c_function_call, b4_c_args): New.
1081 * data/yacc.c (YYLEX): Use b4_c_function_call to honor %lex-param.
1082 * tests/calc.at: Use %locations, not --locations.
1083 (AT_CHECK_CALC_GLR): Use %glr-parser, not %glr_parser.
1084
0e575721
AD
10852002-10-19 Akim Demaille <akim@epita.fr>
1086
1087 * src/getargs.c (usage): Take status as argument and exit
1088 accordingly.
1089 Report the traditional `Try ... --help' message when status != 0.
1090 (usage, version): Don't take a FILE * as arg, it is pointless.
1091 (getargs): When there is an incorrect number of arguments, make it
1092 an error, and report it GNUlically thanks to `usage ()'.
1093
724ce7f5
PE
10942002-10-18 Paul Eggert <eggert@twinsun.com>
1095
3a781eb2
PE
1096 * data/glr.c (yyreportParseError): Don't assume that sprintf
1097 yields the length of the printed string, as this is not true
1098 on SunOS 4.1.4. Reported by Peter Klein.
1099
724ce7f5
PE
1100 * tests/calc.at (_AT_DATA_CALC_Y): #undef memcmp and realloc.
1101 * tests/conflicts.at (%nonassoc and eof): Likewise.
1102 Fixes SunOS 4.1.4 test failure reported by Peter Klein.
1103
473d0a75
AD
11042002-10-17 Akim Demaille <akim@epita.fr>
1105
1106 * src/getargs.h (trace_e): Add trace_scan, and trace_parse.
1107 * src/getargs.c (trace_types, trace_args): Adjust.
1108 * src/reader.c (grammar_current_rule_prec_set)
1109 (grammar_current_rule_dprec_set, grammar_current_rule_merge_set):
1110 Standardize error messages.
1111 And s/@prec/%prec/!
1112 (reader): Use trace_flag to enable scanner/parser debugging,
1113 instead of an adhoc scheme.
1114 * src/scan-gram.l: Remove trailing debugging code.
1115
e76d2469
PE
11162002-10-16 Paul Eggert <eggert@twinsun.com>
1117
93e2236a
PE
1118 * src/muscle_tab.h (MUSCLE_TAB_H_): Was misspelled as
1119 MUSCLE_TAB_H.
1120
e76d2469
PE
1121 * NEWS: Officially drop support for building Bison with K&R C,
1122 since it didn't work anyway and it's not worth worrying about.
1123 * Makefile.maint (wget_files): Remove ansi2knr.c.
1124 (ansi2knr.c-url_prefix): Remove.
1125 * lib/.cvsignore: Remove ansi2knr, ansi2knr.*.
1126 * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove.
1127 * src/Makefile.am (AUTOMAKE_OPTIONS): Remove.
1128
5bd1c419
PE
11292002-10-15 Paul Eggert <eggert@twinsun.com>
1130
1131 Stop using the "enum_" trick for K&R-style function definitions;
1132 it confused me, and I was the author! Instead, assume that people
1133 who want to use K&R C compilers (when using these modules in GCC,
1134 perhaps?) will run ansi2knr.
1135
1136 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): Remove.
1137 All uses of "enum_" changed to "enum ".
1138 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
1139 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
e76d2469 1140
5bd1c419
PE
1141 * lib/abitset.c (abitset_and, abitset_and_cmp, abitset_and_or,
1142 abitset_and_or_cmp, abitset_andn, abitset_andn_cmp,
1143 abitset_andn_or, abitset_andn_or_cmp, abitset_bytes, abitset_copy,
1144 abitset_copy1, abitset_disjoint_p, abitset_empty_p,
1145 abitset_equal_p, abitset_init, abitset_list, abitset_list_reverse,
1146 abitset_not, abitset_ones, abitset_or, abitset_or_and,
1147 abitset_or_and_cmp, abitset_or_cmp, abitset_reset, abitset_set,
1148 abitset_size, abitset_small_list, abitset_subset_p, abitset_test,
1149 abitset_unused_clear, abitset_xor, abitset_xor_cmp, abitset_zero):
1150 Use function prototypes; this removes the need for declaring
1151 static functions simply to provide their prototypes.
1152 * lib/bitset.c (bitset_alloc, bitset_and_or_, bitset_and_or_cmp_,
1153 bitset_andn_or_, bitset_andn_or_cmp_, bitset_bytes, bitset_copy_,
1154 bitset_count_, bitset_create, bitset_dump, bitset_first,
1155 bitset_free, bitset_init, bitset_last, bitset_next,
1156 bitset_obstack_alloc, bitset_obstack_free, bitset_only_set_p,
1157 bitset_op4_cmp, bitset_or_and_, bitset_or_and_cmp_, bitset_prev,
1158 bitset_print, bitset_release_memory, bitset_toggle_,
1159 bitset_type_choose, bitset_type_get, bitset_type_name_get,
1160 debug_bitset): Likewise.
1161 * lib/bitset.h (bitset_set, bitset_reset, bitset_test): Likewise.
1162 * lib/bitset_stats.c (bitset_log_histogram_print,
1163 bitset_percent_histogram_print, bitset_stats_and,
1164 bitset_stats_and_cmp, bitset_stats_and_or,
1165 bitset_stats_and_or_cmp, bitset_stats_andn, bitset_stats_andn_cmp,
1166 bitset_stats_andn_or, bitset_stats_andn_or_cmp, bitset_stats_copy,
1167 bitset_stats_count, bitset_stats_disable, bitset_stats_disjoint_p,
1168 bitset_stats_dump, bitset_stats_empty_p, bitset_stats_enable,
1169 bitset_stats_equal_p, bitset_stats_free, bitset_stats_init,
1170 bitset_stats_list, bitset_stats_list_reverse, bitset_stats_not,
1171 bitset_stats_ones, bitset_stats_or, bitset_stats_or_and,
1172 bitset_stats_or_and_cmp, bitset_stats_or_cmp, bitset_stats_print,
1173 bitset_stats_print_1, bitset_stats_read, bitset_stats_reset,
1174 bitset_stats_set, bitset_stats_size, bitset_stats_subset_p,
1175 bitset_stats_test, bitset_stats_toggle, bitset_stats_type_get,
1176 bitset_stats_write, bitset_stats_xor, bitset_stats_xor_cmp,
1177 bitset_stats_zero): Likewise.
1178 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
1179 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
1180 bitsetv_dump, debug_bitsetv): Likewise.
1181 * lib/ebitset.c (ebitset_and, ebitset_and_cmp, ebitset_andn,
1182 ebitset_andn_cmp, ebitset_bytes, ebitset_copy, ebitset_copy_,
1183 ebitset_copy_cmp, ebitset_disjoint_p, ebitset_elt_add,
1184 ebitset_elt_alloc, ebitset_elt_calloc, ebitset_elt_find,
1185 ebitset_elt_free, ebitset_elt_last, ebitset_elt_remove,
1186 ebitset_elt_zero_p, ebitset_elts_grow, ebitset_empty_p,
1187 ebitset_equal_p, ebitset_free, ebitset_init, ebitset_list,
1188 ebitset_list_reverse, ebitset_not, ebitset_ones, ebitset_op3_cmp,
1189 ebitset_or, ebitset_or_cmp, ebitset_release_memory, ebitset_reset,
1190 ebitset_set, ebitset_size, ebitset_subset_p, ebitset_test,
1191 ebitset_weed, ebitset_xor, ebitset_xor_cmp, ebitset_zero):
1192 Likewise.
1193 * lib/lbitset.c (debug_lbitset, lbitset_and, lbitset_and_cmp,
1194 lbitset_andn, lbitset_andn_cmp, lbitset_bytes, lbitset_copy,
1195 lbitset_copy_cmp, lbitset_disjoint_p, lbitset_elt_alloc,
1196 lbitset_elt_calloc, lbitset_elt_find, lbitset_elt_free,
1197 lbitset_elt_link, lbitset_elt_unlink, lbitset_elt_zero_p,
1198 lbitset_empty_p, lbitset_equal_p, lbitset_free, lbitset_init,
1199 lbitset_list, lbitset_list_reverse, lbitset_not, lbitset_ones,
1200 lbitset_op3_cmp, lbitset_or, lbitset_or_cmp, lbitset_prune,
1201 lbitset_release_memory, lbitset_reset, lbitset_set, lbitset_size,
1202 lbitset_subset_p, lbitset_test, lbitset_weed, lbitset_xor,
1203 lbitset_xor_cmp, lbitset_zero): Likewise.
e76d2469 1204
ae26e1f0
AD
12052002-10-14 Akim Demaille <akim@epita.fr>
1206
1207 Version 1.75.
1208
d43baf71
AD
12092002-10-14 Akim Demaille <akim@epita.fr>
1210
1211 * tests/Makefile.am (maintainer-check-posix): New.
1212
7ebc83e3
AD
12132002-10-14 Akim Demaille <akim@epita.fr>
1214
1215 * data/glr.c [YYDEBUG] (YYLEFTMOST_STATE): Initialize the yyloc
1216 member.
1217
05846dae
AD
12182002-10-14 Akim Demaille <akim@epita.fr>
1219
1220 * src/tables.c (table_ninf_remap): base -> tab.
1221 Reported by Matt Rosing.
1222
1318e37d
PE
12232002-10-14 Paul Eggert <eggert@twinsun.com>
1224
447fbb17
PE
1225 * tests/action.at, tests/calc.at, tests/conflicts.at,
1226 tests/cxx-type.at, tests/headers.at, tests/input.at,
1227 tests/regression.at, tests/synclines.at, tests/torture.at:
1228 Say "bison -o foo.c foo.y", not "bison foo.y -o foo.c",
1229 so that the tests still work even if POSIXLY_CORRECT is set.
1230 * doc/bison.texinfo (Rpcalc Compile, Invocation): Likewise.
05846dae 1231
1318e37d
PE
1232 * data/c.m4 (b4_int_type): Use yysigned_char instead of signed char,
1233 for portability to K&R hosts. Fix typo: signed char is guaranteed
1234 only to 127, not to 128.
1235 * data/glr.c (yysigned_char): New type.
1236 * data/yacc.c (yysigned_char): Likewise.
1237 * tests/regression.at (Web2c Actions): signed char -> yysigned_char.
1238
cc0f0794
PE
12392002-10-13 Paul Eggert <eggert@twinsun.com>
1240
5038f418
PE
1241 * data/yacc.c (yyparse): Rewrite to avoid "comparison is always
1242 true due to limited range of data type" warning from GCC.
1243
cc0f0794
PE
1244 * data/c.m4 (b4_token_defines): Protect against double-inclusion
1245 by wrapping enum yytokentype's definition inside #ifndef
1246 YYTOKENTYPE. This undoes a bug I introduced on 2002-10-12.
1247
6fed0802
AD
12482002-10-13 Akim Demaille <akim@epita.fr>
1249
1250 * data/glr.c (yyglrShiftDefer, yyaddDeferredAction, yydoAction):
1251 Un yy- yyrhs to avoid the name clash with the global YYRHS.
1252
32f0598d
AD
12532002-10-13 Akim Demaille <akim@epita.fr>
1254
1255 * Makefile.maint: Update from Autoconf 2.54.
1256 * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Remove, shipped with 2.54.
1257
7ea9a33f
AD
12582002-10-13 Akim Demaille <akim@epita.fr>
1259
1260 * src/print.c (print_state): Separate the list of solved conflicts
1261 from the other items.
1262 * tests/conflicts.at (Resolved SR Conflicts): Adjust.
1263
ea99527d
AD
12642002-10-13 Akim Demaille <akim@epita.fr>
1265
1266 Let nondeterministic skeletons be usable with deterministic
1267 tables.
1268
1269 With the patch, GAWK compiled by GCC without -O2 passes its test
1270 suite using a GLR parser driven by LALR tables. It fails with -O2
1271 because `struct stat' gives two different answers on my machine:
1272 88 (definition of an auto var) and later 96 (memset on this var).
1273 Hence the stack is badly corrumpted. The headers inclusion is to
1274 blame: if I move the awk.h inclusion before GLR's system header
1275 inclusion, the two struct stat have the same size.
1276
1277 * src/tables.c (pack_table): Always create conflict_table.
1278 (token_actions): Always create conflict_list.
1279 * data/glr.c (YYFLAG): Remove, unused.
1280
f377f69f
AD
12812002-10-13 Akim Demaille <akim@epita.fr>
1282
1283 * configure.ac (AC_GNU_SOURCE): Use it instead of hand written code.
1284 (O0FLAGS): New.
1285 (VALGRIND, GXX): New.
1286 * tests/atlocal.in (CFLAGS): Use O0FLAGS.
1287 * tests/bison.in: Run $PREBISON a pre-command.
1288 * tests/Makefile.am (maintainer-check, maintainer-check-valgrind)
1289 (maintainer-check-g++): New.
1290 * Makefile.am (maintainer-check): New.
1291
2a1fe6ed
AD
12922002-10-13 Akim Demaille <akim@epita.fr>
1293
1294 * data/glr.c: Formatting changes.
1295 Tweak some trace messages to match yacc.c's.
1296
f50adbbd
AD
12972002-10-13 Akim Demaille <akim@epita.fr>
1298
1299 GLR parsers sometimes raise parse errors instead of performing the
1300 default reduction.
1301 Reported by Charles-Henry de Boysson.
1302
1303 * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't
1304 check the length of the traces when %glr.
1305 (_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from
1306 GLR's traces.
1307 (AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New.
1308 Test GLR parsers.
1309 * data/glr.c (YYLEFTMOST_STATE): Fix its value.
1310 (yyltype): Remove the yy prefix from the member names.
1311 (yytable): Complete its comment.
1312 (yygetLRActions): Map error action number from YYTABLE from
1313 YYTABLE_NINF to 0.
1314 (yyisErrorAction): No longer compare YYACTION to YYPACT_NINF
1315 (which was a bug: it should have been YYTABEL_NINF, and yet it was
1316 not satisfying as we could compare an YYACTION computed from
1317 YYDEFACT to YYTABLE_NINF although they are unrelated): 0 is the
1318 only value for error actions.
1319 (yyreportParseError): In verbose parse error messages, don't issue
1320 `error' in the list of expected tokens.
1321 * data/yacc.c (yyparse) <yybackup>: Rewrite the decoding of the
1322 next action to perform to match glr.c's decoding.
1323 (yytable): Complete its comment.
1324
bcbad5b9
PE
13252002-10-13 Paul Eggert <eggert@twinsun.com>
1326
1327 Fix problem reported by Henrik Grubbstroem in
1328 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001670.html>:
1329 "nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected,
1330 because the Bison parser reads the second action before reducing
1331 the first one.
1332 * src/scan-gram.l (rule_length): New static var.
1333 Use it to keep track of the rule length in the scanner, since
1334 we can't expect the parser to be in lock-step sync with the scanner.
1335 (handle_action_dollar, handle_action_at): Use this var.
1336 * tests/actions.at (Exotic Dollars): Test for the problem.
05846dae 1337
14904b89
PE
13382002-10-12 Paul Eggert <eggert@twinsun.com>
1339
1fe611e5
PE
1340 * lib/timevar.c [! IN_GCC && HAVE_SYS_TIME_H]: Include <sys/time.h>.
1341 * m4/timevar.m4 (BISON_PREREQ_TIMEVAR): Check for <sys/time.h>.
1342 Include <sys/time.h> when checking for clock_t and struct tms.
1343 Use same include order as source.
1344 This is for the SunOS 4.1.4 porting bug reported by Peter Klein in
1345 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001674.html>.
05846dae 1346
1fe611e5
PE
1347 * lib/timevar.c: Update copyright date and clarify comments.
1348 (get_time) [IN_GCC]: Keep the GCC version for reference.
05846dae 1349
1fe611e5
PE
1350 * lib/timevar.c, lib/timevar.h, lib/timevar.def: Import
1351 GCC version as of today, then merge Bison's changes.
1352 Change "GCC" to "Bison" in copyright notice. timevar.def's
1353 author is Akim, so change that too.
1354
98194095
PE
1355 * src/reader.c (grammar_current_rule_check):
1356 Don't worry about the default action if $$ is untyped.
1357 Prevents bogus warnings reported by Jim Gifford in
1358 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001673.html>.
1359
14904b89
PE
1360 * data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE.
1361 * data/glr.c, data/lalr1.cc, data/yacc.c:
1362 Output token definitions before the first part of user declarations.
1363 Fixes compatibility problem reported by Jim Gifford for kbd in
1364 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001672.html>.
1365
ff6dca18
PE
13662002-10-11 Paul Eggert <eggert@twinsun.com>
1367
1368 * data/yacc.c (yyreport_parse_error): Remove, putting its body into...
1369 (yyparse): here. This undoes some of the 2002-07-25 change.
1370 Compatibility problem reported by Ralf S. Engelschall with
1371 OSSP cfg <http://www.ossp.org/pkg/lib/cfg/>.
1372
eb714592
AD
13732002-10-11 Akim Demaille <akim@epita.fr>
1374
1375 * tests/regression.at Characters Escapes): New.
1376 * src/scan-gram.l (SC_ESCAPED_CHARACTER): Accept \' in strings and
1377 characters.
1378 Reported by Jan Nieuwenhuizen.
1379
b7195100
AD
13802002-10-11 Akim Demaille <akim@epita.fr>
1381
1382 * po/id.po: New.
1383
f28a0f2d
PE
13842002-10-10 Paul Eggert <eggert@twinsun.com>
1385
1386 Portability fixes for bitsets; this also avoids several GCC
1387 warnings.
1388
1389 * lib/abitset.c: Include <stddef.h>, for offsetof.
1390 * lib/lbitset.c: Likewise.
1391
1392 * lib/abitset.c (abitset_bytes): Return a size that is aligned
1393 properly for vectors of objects. Do not assume that adding a
1394 header size to a multiple of a word size yields a value that is
1395 properly aligned for the whole union.
1396 * lib/bitsetv.c (bitsetv_alloc): Likewise.
1397
1398 * lib/bitset_stats.c (bitset_stats_bytes): Adjust to new,
1399 unique names for structures.
1400 * lib/ebitset.c (ebitset_bytes): Likewise.
1401 * lib/lbitset.c (lbitset_bytes): Likewise.
1402
1403 * lib/abitset.c (abitset_ones, abitset_zero, abitset_empty_p,
1404 abitset_copy1, abitset_not, abitset_equal_p, abitset_subset_p,
1405 abitset_disjoint_p, abitset_and, abitset_and_cmp, abitset_andn,
1406 abitset_andn_cmp, abitset_or, abitset_or_cmp, abitset_xor,
1407 abitset_xor_cmp, abitset_and_or, abitset_and_or_cmp,
1408 abitset_andn_or, abitset_andn_or_cmp, abitset_or_and,
1409 abitset_or_and_cmp, abitset_copy): Supply prototype decls,
1410 to improve the type-checking that GCC can do.
1411 * lib/bitset.c (bitset_op4_cmp): Likewise.
1412 * lib/bitset_stats.c (bitset_stats_count,
1413 bitset_stats_empty_p, bitset_stats_ones, bitset_stats_zero,
1414 bitset_stats_copy, bitset_stats_disjoint_p,
1415 bitset_stats_equal_p, bitset_stats_not, bitset_stats_subset_p,
1416 bitset_stats_and, bitset_stats_and_cmp, bitset_stats_andn,
1417 bitset_stats_andn_cmp, bitset_stats_or, bitset_stats_or_cmp,
1418 bitset_stats_xor, bitset_stats_xor_cmp, bitset_stats_and_or,
1419 bitset_stats_and_or_cmp, bitset_stats_andn_or,
1420 bitset_stats_andn_or_cmp, bitset_stats_or_and,
1421 bitset_stats_or_and_cmp): Likewise.
1422 * lib/lbitset.c (lbitset_and, lbitset_and_cmp, lbitset_andn,
1423 lbitset_andn_cmp, lbitset_or, lbitset_or_cmp, lbitset_xor,
1424 lbitset_xor_cmp, lbitset_empty_p, lbitset_ones, lbitset_not,
1425 lbitset_subset_p, lbitset_disjoint_p, debug_lbitset): Likewise.
1426
1427 * lib/abitset.h: Include bitset.h, not bbitset.h.
1428 * lib/ebitset.h: Likewise.
1429 * lib/lbitset.h: Likewise.
1430
1431 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): New types.
1432 All instances of parameters of type enum bitset_opts are now of
1433 type enum_bitset_opts, to conform to the C Standard, and similarly
1434 for enum_bitset_type.
1435 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
1436 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
1437
1438 Do not use "struct bitset_struct" to mean different things in
1439 different modules. Not only is this confusing, it violates
1440 the C Standard, which requires that structure types in different
1441 modules must be compatible if one is to be passed to the other.
1442 * lib/bbitset.h (bitset): Now points to a union, not to a struct.
1443 All instances of "struct bitset_struct *" replaced with "bitset".
1444 * lib/bitset.h (struct bitset_struct): Remove, replacing with....
1445 (union bitset_union, struct abitset_struct, struct ebitset_struct,
1446 struct lbitset_struct, struct bitset_stats_struct): New types.
1447 All uses of struct bitset_struct changed to union bitset_union,
1448 etc.
1449 * lib/abitset.c (struct abitset_struct, abitset,
1450 struct bitset_struct): Remove.
1451 * lib/bitset_stats.c (struct bitset_stats_struct, bitset_stats,
1452 struct bitset_struct): Remove.
1453 * lib/ebitset.c (struct ebitset_struct, ebitset, struct
1454 bitset_struct): Remove.
1455 * lib/lbitset.c (struct lbitset_struct, lbitset, bitset_struct):
1456 Likewise.
1457
1458 Do not call a function of type T using a call that assumes the
1459 function is of a different type U. Standard C requires that a
1460 function must be called with a type that is compatible with its
1461 definition.
1462 * lib/bbitset.h (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
1463 New decls.
1464 * lib/bitset.c (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
1465 New functions.
1466 * lib/ebitset.c (PFV): Remove.
1467 * lib/lbitset.c (PFV): Likewise.
1468 * lib/ebitset.c (ebitset_and, ebitset_andn, ebitset_or,
1469 ebitset_xor, ebitset_copy, ebitset_ones, ebitset_empty_p): New
1470 decls.
1471 (ebitset_and, ebitset_andn, ebitset_or, ebitset_xor): New functions.
1472 (ebitset_vtable): Use them.
1473 * lib/lbitset.c (lbitset_and, lbitset_andn, lbitset_or,
1474 lbitset_xor): New functions.
1475 (lbitset_vtable): Use them.
1476
1477 * lib/bitset.h (bitset_next, bitset_prev, bitset_only_set_p):
1478 Declare.
1479
1480 * lib/bitsetv.c (bitsetv_alloc): Add a cast to (void *) to avoid a
1481 GCC warning.
1482 * lib/lbitset.c (LBITSET_CURRENT1): Likewise.
1483 Use offsetof, for simplicity.
1484
6fbe4984
PE
14852002-10-06 Paul Eggert <eggert@twinsun.com>
1486
1487 * lib/bitset.h (bitset_reset): Do not assume that bitset_word is
1488 the same width as int. This reapplies a hunk of the 2002-08-12 patch
1489 <http://mail.gnu.org/pipermail/bison-patches/2002-August/001111.html>,
1490 which was inadvertently undone by the 2002-09-30 patch.
1491 * lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is
1492 the same width as int.
1493
420f93c8
PE
14942002-10-04 Paul Eggert <eggert@twinsun.com>
1495
1496 Version 1.50.
1497
1498 * configure.ac (AC_INIT), NEWS: Increment version number.
1499
1500 * doc/bison.texinfo: Minor spelling, grammar, and white space
1501 fixes.
1502 (Symbols): Mention that any negative value returned from yylex
1503 signifies end-of-input. Warn about negative chars. Mention
1504 the portable Standard C character set.
1505
1506 The GNU coding standard says CFLAGS and YFLAGS are reserved
1507 for the installer to set.
1508 * lib/Makefile.am (AM_CFLAGS): Renamed from CFLAGS.
1509 * src/Makefile.am (AM_CFLAGS): Likewise.
1510 (AM_YFLAGS): Renamed from YFLAGS.
1511
1512 Fix some MAX and MIN problems.
1513 * src/gram.h (ITEM_NUMBER_MIN): MIN_MAX -> INT_MIN.
1514 * src/lalr.h (GOTO_NUMBER_MAX): INT_MAX -> SHRT_MAX.
1515 * src/symtab.h (SYMBOL_NUMBER_MAX): New macro.
1516 * src/reader.c (reader): Use it.
1517
1518 * tests/regression.at (Braces parsing): Use grep, not fgrep, as
1519 POSIX 1003.1-2001 has removed fgrep.
1520
15212002-10-04 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
1522
1523 * lib/bbitset.h (BITSET_WINDEX_MAX): Redefine so that it cannot be
1524 interpreted as signed.
1525 * lib/ebitset.c (ebitset_list): Fix bug.
1526
ff68026d
PE
15272002-10-01 Paul Eggert <eggert@twinsun.com>
1528
1529 More fixes for 64-bit hosts and large bitsets.
1530
1531 * lib/abitset.c (struct abitset_struct.n_bits, abitset_small_list,
1532 abitset_size, abitset_list, abitset_list_reverse, abitset_list):
1533 Use bitset_bindex, not int or unsigned int or size_t, to count bits.
1534 * lib/bbitset.h (struct bitset_vtable.size, struct bitset_vtable.count,
1535 struct bitset_vtable.list, struct bitset_vtable.list_reverse,
1536 bitset_count_, bitset_next, bitset_prev, bitset_first, bitset_last,
1537 bitset_count_): Likewise.
1538 * lib/bitset.h (bitset_iterator.num, bitset_iterator.i,
1539 bitset_first, bitset_last): Likewise.
1540 * lib/bitset_stats.c (bitset_stats_size, bitset_stats_list,
1541 bitset_stats_list_reverse, bitset_stats_size,
1542 bitset_stats_count, bitset_stats_list, bitset_stat_list_reverse):
1543 Likewise.
1544 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
1545 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
1546 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
1547 bitsetv_reflexive_transitive_closure): Likewise.
1548 * lib/bitsetv.h (bitsetv_alloc, bitsetv_create): Likewise.
1549 * lib/ebitset.c (ebitset_size, ebitset_list, ebitset_list_reverse):
1550 Likewise.
1551 * lib/lbitset.c (lbitset_size, lbitset_list, lbitset_list_merge):
1552 Likewise.
420f93c8 1553
ff68026d
PE
1554 * lib/abitset.c (abitset_ones, abitset_zero, abitset_bytes):
1555 Use size_t, not unsigned int, to count bytes.
1556 * lib/abitset.h (abitset_bytes): Likewise.
1557 * lib/bitset.c (bitset_bytes, bitset_alloc, bitset_obstack_alloc):
1558 Likewise.
1559 * lib/bitset.h (bitset_bytes): Likewise.
1560 * lib/bitset_stats.c (bitset_stats_bytes, bitset_stats_init): Likewise.
1561 * lib/bitset_stats.h (bitset_stats_bytes): Likewise.
1562 * lib/bitsetv.c (bitsetv_alloc): Likewise.
1563 * lib/ebitset.c (ebitset_bytes): Likewise.
1564 * lib/ebitset.h (ebitset_bytes): Likewise.
1565 * lib/lbitset.c (lbitset_bytes): Likewise.
1566 * lib/lbitset.h (lbitset_bytes): Likewise.
420f93c8 1567
ff68026d
PE
1568 * lib/abitset.c (abitset_empty_p, abitset_not, abitset_equal_p,
1569 abitset_subset_p, abitset_disjoint_p, abitset_and,
1570 abitset_and_cmp, abitset_andn, abitset_andn_cmp, abitset_or,
1571 abitset_or_cmp, abitset_xor, abitset_xor_cmp, abitset_and_or,
1572 abitset_and_or_cmp, abitset_andn_or, abitset_andn_or_cmp,
1573 abitset_or_and, abitset_or_and_cmp):
1574 Use bitset_windex instead of unsigned int.
1575 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
1576 * lib/ebitset.c (struct ebitset_struct.size, ebitset_elts_grow,
1577 ebitset_elt_add, ebitset_elt_remove, ebitset_weed,
1578 ebitset_elt_find, ebitset_list_reverse, ebitset_list, ebitset_init):
1579 Likewise.
1580 * lib/lbitset.c (lbitset_ones, lbitset_not): Likewise.
420f93c8 1581
ff68026d
PE
1582 * lib/bitset.c (bitset_print):
1583 Use proper printf formats for widths of integer types.
1584 * lib/bitset_stats.c (bitset_percent_histogram_print,
1585 bitset_log_histogram_print, bitset_stats_print_1): Likewise.
1586 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
1587 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
1588 * lib/lbitset.c (lbitset_bytes): Likewise.
420f93c8 1589
ff68026d
PE
1590 * lib/bbitset.h (BITSET_BINDEX_MAX, BITSET_WINDEX_MAX,
1591 BITSET_SIZE_MAX): New macros.
1592 (BITSET_INDEX_MAX): Remove. It wasn't right, since it assumed that
1593 sizeof (bitset_word) == sizeof (bitset_windex). All uses changed
1594 to BITSET_WINDEX_MAX.
1595
1596 * lib/bitset.c (bitset_next, bitset_prev, bitset_first,
1597 bitset_last): Return BITSET_BINDEX_MAX (not -1) for no value,
1598 since we now return the bitset_bindex type (not int).
1599
1600 * lib/bitsetv.c (bitsetv_alloc): Check for arithmetic overflow
1601 when computing sizes.
1602 * lib/ebitset.c (ebitset_elts_grow): Likewise.
1603
1604 * lib/lbitset.c (lbitset_elt_find): Simplify windex calculation
1605 and avoid cast to unsigned.
1606
6aa452a6
AD
16072002-09-30 Akim Demaille <akim@epita.fr>
1608
1609 * lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
1610 * lib/bitset_stats.c, lib/bitsetv.c, lib/ebitset.c, lib/lbitset.c:
1611 Updates from Michael Hayes.
1612
927f7817
AD
16132002-09-30 Art Haas <ahaas@neosoft.com>
1614
1615 * configure.ac: Update AC_OUTPUT and AM_CONFIG_HEADER
1616 invocations.
1617 * tests/cxx-type.at (declarator): Don't rely on NDEBUG being not
1618 defined.
1619
9738f41e
AD
16202002-09-27 Akim Demaille <akim@epita.fr>
1621
1622 Version 1.49c.
1623
a5c75d7f
AD
16242002-09-27 Akim Demaille <akim@epita.fr>
1625
1626 * configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7.
1627 (Because of AC_LIBSOURCE).
1628
8280e179
AD
16292002-09-27 Akim Demaille <akim@epita.fr>
1630
1631 Playing with Autoscan.
1632
1633 * configure.ac: Remove the old LIBOBJ tweaks.
1634 (AC_REPLACE_FUNCS): Add strrchr and strtol.
1635 * lib/strrchr.c: New.
1636 * lib/strtol.c: New, from the Coreutils 4.5.1.
1637
ae64af35
AD
16382002-09-27 Akim Demaille <akim@epita.fr>
1639
1640 Playing with Autoscan.
1641
1642 * m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New.
1643 * lib/Makefile.am (libbison_a_SOURCES): No longer include
1644 argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd.
1645 * lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the
1646 Coreutils 4.5.1.
1647
d1a1114f
AD
16482002-09-24 Akim Demaille <akim@epita.fr>
1649
1650 * doc/bison.texinfo (Stack Overflow): xref to Recursion.
1651 (Frequently Asked Questions, Parser Stack Overflow): New.
1652
b906441c
AD
16532002-09-13 Akim Demaille <akim@epita.fr>
1654
1655 Playing with autoscan.
1656
1657 * src/reader.c (get_merge_function): Use xstrdup, not strdup.
1658 * src/files.c (skeleton_find): Remove, unused.
1659 * m4/memcmp.m4: New, from the Coreutils 4.5.1.
1660 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP.
1661
bd701811
AD
16622002-09-13 Akim Demaille <akim@epita.fr>
1663
1664 * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3.
1665 * Makefile.am (AUTOMAKE_OPTIONS): Don't.
1666
e0a13e7b
AD
16672002-09-13 Akim Demaille <akim@epita.fr>
1668
1669 * configure.ac: Require 2.54.
1670 s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/.
1671 s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/.
1672 * m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4:
1673 Remove, provided by Autoconf macros.
1674
c97011bf
AD
16752002-09-12 Akim Demaille <akim@epita.fr>
1676
1677 * m4/prereq.m4: Update, from Coreutils 4.5.1.
1678
d862b1be
AD
16792002-09-12 Akim Demaille <akim@epita.fr>
1680
1681 * m4/prereq.m4: Update, from Fileutils 4.1.5.
1682 * configure.ac (jm_PREREQ_TEMPNAME): Invoke it.
1683 Reported by Martin Mokrejs.
1684
3d38c03a
AD
16852002-09-10 Akim Demaille <akim@epita.fr>
1686
1687 * src/parse-gram.y: Associate a human readable string to each
1688 token type.
1689 * tests/regression.at (Invalid inputs): Adjust.
1690
b6347355
AD
16912002-09-10 Gary V. Vaughan <gary@gnu.org>
1692
1693 * tests/Makefile.am ($(srcdir)/package.m4): Bison now ships
1694 with an Autoconf-2.5x style configure.ac.
1695
09ba4ab2
PE
16962002-09-06 Paul Eggert <eggert@twinsun.com>
1697
1698 * doc/bison.texinfo (Conditions): Make explicit that the GPL
1699 exception applies only to yacc.c. This is a modification of a
1700 patch originally suggested by Akim Demaille.
1701
21846f69
AD
17022002-09-06 Akim Demaille <akim@epita.fr>
1703
09ba4ab2
PE
1704 * data/c.m4 (b4_copyright): Move the GPL exception comment from
1705 here to...
1706 * data/yacc.c: here.
1707
21846f69
AD
1708 * data/lalr1.cc (struct yyltype): Don't define it, since we use
1709 LocationType.
1710 (b4_ltype): Default to yy::Location from location.hh.
1711
c0ad8bf3
AD
17122002-09-04 Jim Meyering <jim@meyering.net>
1713
1714 * data/yacc.c: Guard the declaration of yytoknum also with
1715 `#ifdef YYPRINT', so it is declared only when used.
1716
3a93251e
AD
17172002-09-04 Akim Demaille <akim@epita.fr>
1718
1719 * configure.in: Rename as...
1720 * configure.ac: this.
1721 Bump to 1.49c.
1722
427c0dda
AD
17232002-09-04 Akim Demaille <akim@epita.fr>
1724
1725 * src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
1726 * src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
1727 translate maintainer only messages.
1728
6a254321
PE
17292002-08-12 Paul Eggert <eggert@twinsun.com>
1730
645e30d1
PE
1731 Version 1.49b.
1732
6a254321
PE
1733 * Makefile.am (SUBDIRS): Remove intl.
1734 (DISTCLEANFILES): Remove.
1735 * NEWS: Mention that GNU M4 is now required. Clarify what is
1736 meant by "larger grammars". Mention the pt_BR translation.
1737 * configure.in (AC_CHECK_DECLS): Add getenv, getopt.
1738 (AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var.
1739 Bump version from 0.11.2 to 0.11.5.
1740 (BISON_PREREQ_STAGE): Remove.
1741 (AM_GNU_GETTEXT): Use external gettext.
1742 (AC_OUTPUT): Remove intl/Makefile.
1743
1744 * config/depcomp, config/install-sh: Sync with Automake 1.6.3.
1745
1746 * data/glr.c: Include string.h, for strlen.
1747 (yyreportParseError): Use size_t for yysize.
1748 (yy_yypstack): No longer nested inside yypstates, as nested
1749 functions are not portable. Do not assume size_t is the
1750 same width as int.
1751 (yypstates): Do not assume that ptrdiff_t is the same width
1752 as int, and similarly for yyposn and YYINDEX.
1753
1754 * data/yacc.c: Fix comment about `$$ = $1': it can copy garbage.
1755
1756 * lib/Makefile.am (INCLUDES): Do not include from the intl
1757 directory, which has been removed.
1758 * src/Makefile.am (INCLUDES): Likewise.
1759
1760 * lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h.
1761 (bitsets_sources, additional_bitsets_sources, timevars_sources):
1762 New vars.
1763
1764 * lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension.
1765 * tests/Makefile.am (EXTRA_DIST): Likewise.
1766
1767 * lib/abitset.c (abitset_reverse_list, ebitset_reverse_list):
1768 Do not assume that bitset_windex is the same width as unsigned.
1769
1770 * lib/abitset.c (abitset_unused_clear): Do not assume that
1771 bitset_word is the same width as int.
1772 * lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise.
1773 * lib/bitset.h (bitset_set, bitset_reset): Likewise.
1774 * lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise.
1775 * lib/ebitset.c (ebitset_set, ebitset_reset): Likewise.
1776 * lib/lbitset.c (lbitset_set, lbitset_reset): Likewise.
1777
1778 * lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for
1779 portability to one's complement hosts!).
1780 * lib/ebitset.c (ebitset_op1): Likewise.
1781 * lib/lbitset.c (lbitset_op1): Likewise.
1782
1783 * lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar.
1784 * lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
1785 lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c:
1786 Sync with fileutils.
1787 * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
1788 lib/gettext.h: Sync with diffutils.
1789
1790 * lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c,
1791 lib/strspn.c, lib/tempname.c: Use GPL, not LGPL.
1792
1793 * lib/obstack.c, lib/obstack.h: Sync with fileutils, except use
1794 PROTOTYPES to check for prototypes, and "defined __STDC__" to
1795 check for void *.
1796
1797 * lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not
1798 size_t; the old version tried to do this but casted improperly.
1799 (bitset_bindex, bitset_windex): Now size_t, not unsigned long.
1800 (bitset_test): Now returns int, not unsigned long.
1801
1802 * lib/bitset_stats.c: Include "gettext.h".
1803 (_): New macro.
1804 (bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't
1805 name locals "index", as it generates unnecessary warnings on some
1806 hosts that have an "index" function.
1807
1808 * lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print,
1809 bitset_stats_read, bitset_stats_write): Wrap strings in _() if
1810 they need translation.
1811 * src/LR0.c (state_list_append, new_itemsets, get_state,
1812 append_states, generate_states): Likewise.
1813 * src/assoc.c (assoc_to_string): Likewise.
1814 * src/closure.c (print_closure, set_firsts, closure): Likewise.
1815 * src/gram.c (grammar_dump): Likewise.
1816 * src/injections.c (injections_compute): Likewise.
1817 * src/lalr.c (lookaheads_print): Likewise.
1818 * src/relation.c (relation_transpose): Likewise.
1819 * src/scan-gram.l: Likewise.
1820 * src/tables.c (table_grow, pack_vector): Likewise.
1821
1822 * m4/Makefile.am (EXTRA_DIST): Remove codeset.m4,
1823 glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4.
1824 * m4/malloc.m4, m4/realloc.m4: Sync with diffutils.
1825 * m4/mbstate_t.m4: Sync with fileutils.
1826 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T.
1827
1828 * po/LINGUAS: Add pt_BR.
1829 * po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c,
1830 src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c,
1831 lib/timevar.c.
1832 Use src/parse-gram.y instead of src/parse-gram.c, as the gettext
1833 manual recommends.
1834 Similarly, use src/scan-gram.l instead of src/scan-gram.c.
1835
1836 * src/complain.c (strerror_r): Remove decl; not needed.
1837 (strerror): Use same pattern as ../lib/error.c.
1838
1839 * src/files.c, src/files.h (compute_header_macro): Remove; unused.
1840
1841 * src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int.
1842
1843 * src/main.c (main): Cast result of bindtextdomain and textdomain
1844 to void, to avoid a GCC warning when --disable-nls is in effect.
1845
1846 * src/scan-gram.l: Use strings rather than escapes when possible,
1847 to minimize the number of warnings from xgettext.
1848 (handle_action_dollar, handle_action_at): Don't use isdigit,
1849 as it mishandles negative chars and it may not work as expected
1850 outside the C locale.
1851
1852 * src/symtab.c (symbol_get): Don't cast LHS of an assignment;
1853 this is a GCC extension and is not portable to other compilers.
1854
1855 * src/system.h (alloca): Use same pattern as ../lib/error.c.
1856 Do not include <ctype.h>; no longer needed.
1857 Do not include <malloc.h>; no longer needed (and generates
1858 warnings on OpenBSD 3.0).
1859
1860 * tests/cxx-type.at (yylex): Do not pass signed char to isupper;
1861 it's not portable.
1862
1863 * tests/regression.at: Do not use 'cc -c input.c -o input';
1864 Sun C rejects this. Instead, use 'cc -c input.c -o input.o'.
1865
1866 * tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero
1867 exit status as failure, not just exit status 1. Sun C exits
1868 with status 2 sometimes.
1869
1870 * tests/torture.at (AT_INCREASE_DATA_SIZE): New macro.
1871 Use it for the two large tests.
1872
c8f002c7
AD
18732002-08-02 Akim Demaille <akim@epita.fr>
1874
1875 * src/conflicts.c (conflicts_output): Don't output rules never
1876 reduced here, since anyway that computation doesn't work.
1877 * src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
1878 (rule_useless_p, rule_never_reduced_p): New.
1879 (grammar_rules_partial_print): Use a filter instead of a range.
1880 Display the title only if needed.
1881 (grammar_rules_print): Adjust.
1882 (grammar_rules_never_reduced_report): New.
1883 * src/tables.c (action_row): Move the computation of rules never
1884 reduced to...
1885 (token_actions): here.
1886 * src/main.c (main): Make the parser before making the report, so
1887 that rules never reduced are computed.
1888 Call grammar_rules_never_reduced_report.
1889 * src/print.c (print_results): Report rules never reduced.
1890 * tests/conflicts.at, tests/reduce.at: Adjust.
1891
cd08e51e
AD
18922002-08-01 Akim Demaille <akim@epita.fr>
1893
1894 Instead of attaching lookaheads and duplicating the rules being
1895 reduced by a state, attach the lookaheads to the reductions.
1896
1897 * src/state.h (state_t): Remove the `lookaheads',
1898 `lookaheads_rule' member.
1899 (reductions_t): Add a `lookaheads' member.
1900 Use a regular array for the `rules'.
1901 * src/state.c (reductions_new): Initialize the lookaheads member
1902 to 0.
1903 (state_rule_lookaheads_print): Adjust.
1904 * src/state.h, src/state.c (state_reductions_find): New.
1905 * src/conflicts.c (resolve_sr_conflict, set_conflicts)
1906 (count_rr_conflicts): Adjust.
1907 * src/lalr.c (LArule): Remove.
1908 (add_lookback_edge): Adjust.
1909 (state_lookaheads_count): New.
1910 (states_lookaheads_initialize): Merge into...
1911 (initialize_LA): this.
1912 (lalr_free): Adjust.
1913 * src/main.c (main): Don't free nullable and derives too early: it
1914 is used by --verbose.
1915 * src/print.c, src/print_graph.c, src/tables.c: Adjust.
1916
bb0027a9
AD
19172002-08-01 Akim Demaille <akim@epita.fr>
1918
1919 * src/derives.h, src/derives.c (derives): A `rule_t***' instead of
1920 `rule_number_t**'.
1921 (set_derives, free_derives): Rename as...
1922 (derives_compute, derives_free): this.
1923 Adjust all dependencies.
1924 * src/nullable.c (set_nullable, free_nullable): Rename as...
1925 (nullable_compute, nullable_free): these.
1926 (rule_list_t): Store rule_t *, not rule_number_t.
1927 * src/state.c (state_rule_lookaheads_print): Directly compare rule
1928 pointers, instead of their numbers.
1929 * src/main.c (main): Call nullable_free, and derives_free earlier,
1930 as they were lo longer used.
1931
3325ddc4
AD
19322002-08-01 Akim Demaille <akim@epita.fr>
1933
1934 * lib/timevar.c (get_time): Include children time.
1935 * src/lalr.h (LA, LArule): Don't export them: used with the
1936 state_t.
1937 * src/lalr.c (LA, LArule): Static.
1938 * src/lalr.h, src/lalr.c (lalr_free): New.
1939 * src/main.c (main): Call it.
1940 * src/tables.c (pack_vector): Check whether loc is >= to the
1941 table_size, not >.
1942 (pack_tables): Don't free froms, tos, conflict_tos, and pos...
1943 (tables_generate): do it, since that's also it which allocates
1944 them.
1945 Don't free LA and LArule, main does.
1946
c6f1a33c
AD
19472002-07-31 Akim Demaille <akim@epita.fr>
1948
1949 Separate parser tables computation and output.
1950
1951 * src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
1952 (conflict_list, conflict_list_cnt, table, check, table_ninf)
1953 (yydefgoto, yydefact, high): Move to...
1954 * src/tables.h, src/tables.c: here.
1955 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
1956 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
1957 (symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
1958 (froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
1959 (ACTION_MIN, actrow, order, nentries, pos, conflrow)
1960 (conflict_list_free, table_size, lowzero, table_grow, conflict_row)
1961 (action_row, save_row, token_actions, save_column, default_goto)
1962 (goto_actions, sort_actions, matching_state, pack_vector)
1963 (table_ninf_remap, pack_table, prepare_actions): Move to...
1964 * src/tables.c: here.
1965 * src/tables.h, src/tables.c(tables_generate, tables_free): New.
1966 * src/output.c (token_actions, output_base, output_conflicts)
1967 (output_check): Merge into...
1968 (prepare_actions): this.
1969 (actions_output): Rename as...
1970 (user_actions_output): this.
1971 * src/main.c (main): Call tables_generate and tables_free.
1972
1509d42f
AD
19732002-07-31 Akim Demaille <akim@epita.fr>
1974
1975 Steal GCC's --time-report support.
1976
1977 * lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
1978 stolen/adjusted from GCC.
1979 * m4/stage.m4: Remove time related checks.
1980 * m4/timevar.m4: New.
1981 * configure.in: Adjust.
1982 * src/system.h: Adjust to using timevar.h.
1983 * src/getargs.h, src/getargs.c: Support trace_time for
1984 --trace=time.
1985 * src/main.c (stage): Remove.
1986 (main): Replace `stage' invocations with timevar calls.
1987 * src/output.c: Insert pertinent timevar calls.
1988
273a74fa
AD
19892002-07-31 Akim Demaille <akim@epita.fr>
1990
1991 Let --trace have arguments.
1992
1993 * src/getargs.h (enum trace_e): New.
1994 * src/getargs.c (trace_args, trace_types, trace_argmatch): New.
1995 (long_options, short_options): --trace/-T takes an optional
1996 argument.
1997 Change all the uses of trace_flag to reflect the new flags.
1998 * tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.
1999
2000 Strengthen `stage' portability.
2001
2002 * m4/stage.m4 (BISON_PREREQ_STAGE): New.
2003 * configure.in: Use it.
2004 Don't check for malloc.h and sys/times.h.
2005 * src/system.h: Include them when appropriate.
2006 * src/main.c (stage): Compile only when mallinfo, struct mallinfo,
2007 times and struct tms are available.
2008
217598da
AD
20092002-07-30 Akim Demaille <akim@epita.fr>
2010
2011 In verbose parse error message, don't report `error' as an
2012 expected token.
2013 * tests/actions.at (Printers and Destructors): Adjust.
2014 * tests/calc.at (Calculator $1): Adjust.
2015 * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
2016 error message, do not report the parser accepts the error token in
2017 that state.
2018
52489d44
AD
20192002-07-30 Akim Demaille <akim@epita.fr>
2020
2021 Normalize conflict related messages.
2022
2023 * src/complain.h, src/complain.c (warn, complain): New.
2024 * src/conflicts.c (conflicts_print): Use them.
2025 (conflict_report_yacc): New, extracted from...
2026 (conflicts_print): here.
2027 * tests/conflicts.at, tests/existing.at: Adjust.
2028
e8832397
AD
20292002-07-30 Akim Demaille <akim@epita.fr>
2030
2031 Report rules which are never reduced by the parser: those hidden
2032 by conflicts.
2033
2034 * src/LR0.c (save_reductions): Don't make the final state too
2035 different: save its reduction (accept) instead of having a state
2036 without any action (no shift or goto, no reduce).
2037 Note: the final state is now a ``regular'' state, i.e., the
2038 parsers now contain `reduce 0' as default reduction.
2039 Nevertheless, since they decide to `accept' when yystate =
2040 final_state, they still will not reduce rule 0.
2041 * src/print.c (print_actions, print_reduction): Adjust.
2042 * src/output.c (action_row): Track reduced rules.
2043 (token_actions): Report rules never reduced.
2044 * tests/conflicts.at, tests/regression.at: Adjust.
2045
caf23d24
AD
20462002-07-30 Akim Demaille <akim@epita.fr>
2047
2048 `stage' was accidently included in a previous patch.
2049 Initiate its autoconfiscation.
2050
2051 * configure.in: Look for malloc.h and sys/times.h.
2052 * src/main.c (stage): Adjust.
2053 Report only when trace_flag.
2054
640748ee
AD
20552002-07-29 Akim Demaille <akim@epita.fr>
2056
2057 * src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
2058 state_number_t.
2059 (errs_t): symbol_t*, not symbol_number_t.
2060 (reductions_t): rule_t*, not rule_number_t.
2061 (FOR_EACH_SHIFT): New.
2062 * src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
2063 * src/print.c, src/print_graph.c: Adjust.
2064
88bce5a2
AD
20652002-07-29 Akim Demaille <akim@epita.fr>
2066
2067 Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.
2068
2069 * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
2070 (endtoken, accept): these.
2071 * src/reader.c (reader): Set endtoken's default tag to "$end".
2072 Set undeftoken's tag to "$undefined" instead of "$undefined.".
2073 * doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
2074 Adjust.
2075
1bfb97db
AD
20762002-07-29 Akim Demaille <akim@epita.fr>
2077
2078 * src/reduce.c (reduce_grammar): When the language is empty,
2079 complain about the start symbol, not the axiom.
2080 Use its location.
2081 * tests/reduce.at (Empty Language): New.
2082
fc5734fe
AD
20832002-07-26 Akim Demaille <akim@epita.fr>
2084
2085 * src/reader.h, src/reader.c (gram_error): ... can't get
2086 yycontrol without making too strong assumptions on the parser
2087 itself.
2088 * src/output.c (prepare_tokens): Use the real 0th value of
2089 token_translations instead of `0'.
2090 * src/parse-gram.y (yyerror): Don't rely on yycontrol being
2091 visible here.
2092 * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
2093 for the time being: %locations ought to provide it to yyerror.
2094
3650b4b8
AD
20952002-07-25 Akim Demaille <akim@epita.fr>
2096
2097 * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
2098 * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
2099 * tests/regression.at (Web2c Actions): Adjust.
2100
4b3d3a8e
AD
21012002-07-25 Akim Demaille <akim@epita.fr>
2102
2103 Stop storing rules from 1 to nrules + 1.
2104
2105 * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
2106 * src/nullable.c, src/output.c, src/print.c, src/reader.c
2107 * src/reduce.c: Allocate and free from &rules[0], not &rules[1].
2108 Iterate from 0 to nrules.
2109 Use rule_number_as_item_number and item_number_as_rule_number.
2110 Adjust to `derive' now containing possibly 0.
2111 * src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
2112 Handle the `- 1' part in rule numbers from/to item numbers.
2113 * src/conflicts.c (log_resolution): Fix the message which reversed
2114 shift and reduce.
2115 * src/output.c (action_row): Initialize default_rule to -1.
2116 (token_actions): Adjust.
2117 * tests/sets.at (Nullable, Firsts): Fix the previously bogus
2118 expected output.
2119 * tests/conflicts.at (Resolved SR Conflicts): Likewise.
2120
4a2a22f4
AD
21212002-07-25 Akim Demaille <akim@epita.fr>
2122
2123 * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
2124 (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
2125 (b4_c_knr_arg_decl): New.
2126 * data/yacc.c: Use it to define yysymprint, yydestruct, and
2127 yyreport_parse_error.
2128
b8df3223
AD
21292002-07-25 Akim Demaille <akim@epita.fr>
2130
2131 * data/yacc.c (yyreport_parse_error): New, extracted from...
2132 (yyparse): here.
2133 (yydestruct, yysymprint): Move above yyparse.
2134 Be K&R compliant.
2135
a762e609
AD
21362002-07-25 Akim Demaille <akim@epita.fr>
2137
2138 * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
2139 replace...
2140 (b4_sint_type, b4_uint_type): these.
2141 * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
2142 * tests/regression.at (Web2c Actions): Adjust.
2143
12b0043a
AD
21442002-07-25 Akim Demaille <akim@epita.fr>
2145
2146 * src/gram.h (TIEM_NUMBER_MAX): New.
2147 (item_number_of_rule_number, rule_number_of_item_number): Rename
2148 as...
2149 (rule_number_as_item_number, item_number_as_rule_number): these.
2150 Adjust dependencies.
2151 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
2152 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
2153 (symbol_number_to_vector_number): New.
2154 (order): Of vector_number_t* type.
2155 (base_t, BASE_MAX, BASE_MIN): New.
2156 (froms, tos, width, pos, check): Of base_t type.
2157 (action_number_t, ACTION_MIN, ACTION_MAX): New.
2158 (actrow): Of action_number_t type.
2159 (conflrow): Of unsigned int type.
2160 (table_ninf, base_ninf): New.
2161 (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
2162 (muscle_insert_int_table, muscle_insert_base_table)
2163 (muscle_insert_rule_number_table): New.
2164 (prepare_tokens): Output `toknum' as int_table.
2165 (action_row): Returns a rule_number_t.
2166 Use ACTION_MIN, not SHRT_MIN.
2167 (token_actions): yydefact is rule_number_t*.
2168 (table_ninf_remap): New.
2169 (pack_table): Use it for `base' and `table'.
2170 * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
2171 replaced with...
2172 (YYPACT_NINF, YYTABLE_NINF): these.
2173 (yypact, yytable): Compute their types instead of hard-coded
2174 `short'.
2175 * tests/regression.at (Web2c Actions): Adjust.
2176
5dde258a
AD
21772002-07-19 Akim Demaille <akim@epita.fr>
2178
2179 * src/scan-gram.l (id): Can start with an underscore.
2180
a945ec39
AD
21812002-07-16 Akim Demaille <akim@epita.fr>
2182
2183 * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
2184 Adjust all former `associativity' dependencies.
2185 * src/symtab.c (symbol_new): Default associativity is `undef', not
2186 `right'.
2187 (symbol_check_alias_consistence): Adjust.
2188
fae437e8
AD
21892002-07-09 Akim Demaille <akim@epita.fr>
2190
2191 * doc/bison.texinfo: Properly set the ``header'' part.
2192 Use @dircategory ``GNU programming tools'' as per Texinfo's
2193 documentation.
2194 Use @copying.
2195
1a715ef2
AD
21962002-07-09 Akim Demaille <akim@epita.fr>
2197
2198 * lib/quotearg.h: Protect against multiple inclusions.
2199 * src/location.h (location_t): Add a `file' member.
2200 (LOCATION_RESET, LOCATION_PRINT): Adjust.
2201 * src/complain.c (warn_at, complain_at, fatal_at): Drop
2202 `error_one_per_line' support.
2203
a5d50994
AD
22042002-07-09 Akim Demaille <akim@epita.fr>
2205
2206 * src/complain.h, src/complain.c (warn, complain): Remove, unused.
2207 * src/reader.c (lineno): Remove.
2208 Adjust all dependencies.
2209 (get_merge_function): Take a location and use complain_at.
2210 * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
2211 * tests/regression.at (Invalid inputs, Mixing %token styles):
2212 Adjust.
2213
b275314e
AD
22142002-07-09 Akim Demaille <akim@epita.fr>
2215
2216 * src/parse-gram.y (rules_or_grammar_declaration): Add an error
2217 recovery rule, and forbid extensions when --yacc.
2218 (gram_error): Use complain_at.
2219 * src/reader.c (reader): Exit if there were parse errors.
2220
865b9df1
AD
22212002-07-09 Akim Demaille <akim@epita.fr>
2222
2223 * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
2224 (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
2225 Reported by R Blake <blakers@mac.com>.
2226
c76e14da
AD
22272002-07-09 Akim Demaille <akim@epita.fr>
2228
2229 * data/yacc.c: Output the copyright notive in the header.
2230
7db2ed2d
AD
22312002-07-03 Akim Demaille <akim@epita.fr>
2232
2233 * src/output.c (froms, tos): Are state_number_t.
2234 (save_column): sp, sp1, and sp2 are state_number_t.
2235 (prepare): Rename `final' as `final_state_number', `nnts' as
2236 `nterms_number', `nrules' as `rules_number', `nstates' as
2237 `states_number', and `ntokens' as `tokens_number'. Remove `nsym',
2238 unused.
2239 * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
2240 * data/lalr1.cc (nsym_): Remove, unused.
2241
e68e0410
AD
22422002-07-03 Akim Demaille <akim@epita.fr>
2243
2244 * src/lalr.h, src/lalr.c (goto_number_t): New.
2245 * src/lalr.c (goto_list_t): New.
2246 Propagate them.
2247 * src/nullable.c (rule_list_t): New.
2248 Propagate.
2249 * src/types.h: Remove.
2250
e1a4f3a4
AD
22512002-07-03 Akim Demaille <akim@epita.fr>
2252
2253 * src/closure.c (print_fderives): Use rule_rhs_print.
2254 * src/derives.c (print_derives): Use rule_rhs_print.
2255 (rule_list_t): New, replaces `shorts'.
2256 (set_derives): Add comments.
2257 * tests/sets.at (Nullable, Firsts): Adjust.
2258
536545f3
AD
22592002-07-03 Akim Demaille <akim@epita.fr>
2260
2261 * src/output.c (prepare_actions): Free `tally' and `width'.
2262 (prepare_actions): Allocate and free `order'.
2263 * src/symtab.c (symbols_free): Free `symbols'.
2264 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
2265 * src/output.c (m4_invoke): Move to...
2266 * src/scan-skel.l: here.
2267 (<<EOF>>): Close yyout, and free its name.
2268
8b752b00
AD
22692002-07-03 Akim Demaille <akim@epita.fr>
2270
2271 Fix some memory leaks, and fix a bug: state 0 was examined twice.
2272
2273 * src/LR0.c (new_state): Merge into...
2274 (state_list_append): this.
2275 (new_states): Merge into...
2276 (generate_states): here.
2277 (set_states): Don't ensure a proper `errs' state member here, do it...
2278 * src/conflicts.c (conflicts_solve): here.
2279 * src/state.h, src/state.c: Comment changes.
2280 (state_t): Rename member `shifts' as `transitions'.
2281 Adjust all dependencies.
2282 (errs_new): For consistency, also take the values as argument.
2283 (errs_dup): Remove.
2284 (state_errs_set): New.
2285 (state_reductions_set, state_transitions_set): Assert that no
2286 previous value was assigned.
2287 (state_free): New.
2288 (states_free): Use it.
2289 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
2290 temporary storage: use `errs' and `nerrs' as elsewhere.
2291 (set_conflicts): Allocate and free this `errs'.
2292
613f5e1a
AD
22932002-07-02 Akim Demaille <akim@epita.fr>
2294
2295 * lib/libiberty.h: New.
2296 * lib: Update the bitset implementation from upstream.
2297 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
2298 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
2299 * src/main.c: Adjust bitset stats calls.
2300
26e0cadc
PE
23012002-07-01 Paul Eggert <eggert@twinsun.com>
2302
2303 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
2304 char, so that negative chars don't collide with $.
2305
1154cced
AD
23062002-06-30 Akim Demaille <akim@epita.fr>
2307
2308 Have the GLR tests be `warning' checked, and fix the warnings.
2309
2310 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
2311 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
2312 (yyremoveDeletes): `yyi' and `yyj' are size_t.
2313 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
2314 (yyaddDeferredAction): static.
2315 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
2316 (yyreportParseError): yyprefix is const.
2317 yytokenp is used only when verbose.
2318 (yy__GNUC__): Replace with __GNUC__.
2319 (yypdumpstack): yyi is size_t.
2320 (yypreference): Un-yy local variables and arguments, to avoid
2321 clashes with `yyr1'. Anyway, we are not in the user name space.
2322 (yytname_size): be an int, as is compared with ints.
2323 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
2324 Use them.
2325 * tests/cxx-gram.at: Use quotation to protect $1.
2326 Use AT_COMPILE to enable warnings hunts.
2327 Prototype yylex and yyerror.
2328 `Use' argc.
2329 Include `string.h', not `strings.h'.
2330 Produce and prototype stmtMerge only when used.
2331 yylex takes a location.
2332
97650f4e
AD
23332002-06-30 Akim Demaille <akim@epita.fr>
2334
2335 We spend a lot of time in quotearg, in particular when --verbose.
2336
2337 * src/symtab.c (symbol_get): Store a quoted version of the key.
2338 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
2339 Adjust all callers.
2340
d2576365
AD
23412002-06-30 Akim Demaille <akim@epita.fr>
2342
2343 * src/state.h (reductions_t): Rename member `nreds' as num.
2344 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
2345 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
2346
ccaf65bc
AD
23472002-06-30 Akim Demaille <akim@epita.fr>
2348
2349 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
2350 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
2351 (shifts_to): Rename as...
2352 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
2353 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
2354 (TRANSITION_IS_DISABLED, transitions_to): these.
2355
87675353
AD
23562002-06-30 Akim Demaille <akim@epita.fr>
2357
2358 * src/print.c (print_shifts, print_gotos): Merge into...
2359 (print_transitions): this.
2360 (print_transitions, print_errs, print_reductions): Align the
2361 lookaheads columns.
2362 (print_core, print_transitions, print_errs, print_state,
2363 print_grammar): Output empty lines separator before, not after.
2364 (state_default_rule_compute): Rename as...
2365 (state_default_rule): this.
2366 * tests/conflicts.at (Defaulted Conflicted Reduction),
2367 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
2368 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
2369
ce4ccb4b
AD
23702002-06-30 Akim Demaille <akim@epita.fr>
2371
2372 Display items as we display rules.
2373
2374 * src/gram.h, src/gram.c (rule_lhs_print): New.
2375 * src/gram.c (grammar_rules_partial_print): Use it.
2376 * src/print.c (print_core): Likewise.
2377 * tests/conflicts.at (Defaulted Conflicted Reduction),
2378 (Unresolved SR Conflicts): Adjust.
2379 (Unresolved SR Conflicts): Adjust and rename as...
2380 (Resolved SR Conflicts): this, as was meant.
2381 * tests/regression.at (Web2c Report): Adjust.
2382
bc933ef1
AD
23832002-06-30 Akim Demaille <akim@epita.fr>
2384
2385 * src/print.c (state_default_rule_compute): New, extracted from...
2386 (print_reductions): here.
2387 Pessimize, but clarify the code.
2388 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
2389
53d4308d
AD
23902002-06-30 Akim Demaille <akim@epita.fr>
2391
2392 * src/output.c (action_row): Let default_rule be always a rule
2393 number.
2394
574fb2d5
AD
23952002-06-30 Akim Demaille <akim@epita.fr>
2396
2397 * src/closure.c (print_firsts, print_fderives, closure):
2398 Use BITSET_EXECUTE.
2399 * src/lalr.c (lookaheads_print): Likewise.
2400 * src/state.c (state_rule_lookaheads_print): Likewise.
2401 * src/print_graph.c (print_core): Likewise.
2402 * src/print.c (print_reductions): Likewise.
2403 * src/output.c (action_row): Likewise.
2404 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
2405
05811fd7
AD
24062002-06-30 Akim Demaille <akim@epita.fr>
2407
2408 * src/print_graph.c: Use report_flag.
2409
0e4d5753
AD
24102002-06-30 Akim Demaille <akim@epita.fr>
2411
2412 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
2413 to...
2414 * src/relation.h, src/relation.c (traverse, relation_digraph)
2415 (relation_print, relation_transpose): New.
2416
24c7d800
AD
24172002-06-30 Akim Demaille <akim@epita.fr>
2418
2419 * src/state.h, src/state.c (shifts_to): New.
2420 * src/lalr.c (build_relations): Use it.
2421
9222837b
AD
24222002-06-30 Akim Demaille <akim@epita.fr>
2423
2424 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
2425 (item_number_of_rule_number, rule_number_of_item_number): New.
2426 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
2427 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
2428 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
2429 Propagate their use.
2430 Much remains to be done, in particular wrt `shorts' from types.h.
2431
260008e5
AD
24322002-06-30 Akim Demaille <akim@epita.fr>
2433
2434 * src/symtab.c (symbol_new): Initialize the `printer' member.
2435
8a731ca8
AD
24362002-06-30 Akim Demaille <akim@epita.fr>
2437
2438 * src/LR0.c (save_reductions): Remove, replaced by...
2439 * src/state.h, src/state.c (state_reductions_set): New.
2440 (reductions, errs): Rename as...
2441 (reductions_t, errs_t): these.
2442 Adjust all dependencies.
2443
32e1e0a4
AD
24442002-06-30 Akim Demaille <akim@epita.fr>
2445
2446 * src/LR0.c (state_list_t, state_list_append): New.
2447 (first_state, last_state): Now symbol_list_t.
2448 (this_state): Remove.
2449 (new_itemsets, append_states, save_reductions): Take a state_t as
2450 argument.
2451 (set_states, generate_states): Adjust.
2452 (save_shifts): Remove, replaced by...
2453 * src/state.h, src/state.c (state_shifts_set): New.
2454 (shifts): Rename as...
2455 (shifts_t): this.
2456 Adjust all dependencies.
2457 * src/state.h (state_t): Remove the `next' member.
2458
e5fb6710
AD
24592002-06-30 Akim Demaille <akim@epita.fr>
2460
2461 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
2462 escaped in slot 0.
2463
c7ca99d4
AD
24642002-06-30 Akim Demaille <akim@epita.fr>
2465
2466 Use hash.h for the state hash table.
2467
2468 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
2469 (allocate_storage): Use state_hash_new.
2470 (free_storage): Use state_hash_free.
2471 (new_state, get_state): Adjust.
2472 * src/lalr.h, src/lalr.c (states): Move to...
2473 * src/states.h (state_t): Remove the `link' member, no longer
2474 used.
2475 * src/states.h, src/states.c: here.
2476 (state_hash_new, state_hash_free, state_hash_lookup)
2477 (state_hash_insert, states_free): New.
2478 * src/states.c (state_table, state_compare, state_hash): New.
2479 * src/output.c (output_actions): Do not free states now, since we
2480 still need to know the final_state number in `prepare', called
2481 afterwards. Do it...
2482 * src/main.c (main): here: call states_free after `output'.
2483
df0e7316
AD
24842002-06-30 Akim Demaille <akim@epita.fr>
2485
2486 * src/state.h, src/state.c (state_new): New, extracted from...
2487 * src/LR0.c (new_state): here.
2488 * src/state.h (STATE_ALLOC): Move to...
2489 * src/state.c: here.
2490 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
2491 * src/state.h, src/state.c: here.
2492
39f41916
AD
24932002-06-30 Akim Demaille <akim@epita.fr>
2494
2495 * src/reader.c (gensym): Rename as...
2496 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
2497 (getsym): Rename as...
2498 (symbol_get): this.
2499
d57650a5
AD
25002002-06-30 Akim Demaille <akim@epita.fr>
2501
2502 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
2503 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
2504 * src/output.c, src/print.c, src/print_graph.c: Propagate.
2505 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
2506
5a08f1ce
AD
25072002-06-30 Akim Demaille <akim@epita.fr>
2508
2509 Make the test suite pass with warnings checked.
2510
2511 * tests/actions.at (Printers and Destructors): Improve.
2512 Avoid unsigned vs. signed issues.
2513 * tests/calc.at: Don't exercise the scanner here, do it...
2514 * tests/input.at (Torturing the Scanner): here.
2515
720623af
PH
25162002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2517
88e7e941 2518 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
720623af
PH
2519 reorganize first lines parallel to yacc.c.
2520
fb8135fa
AD
25212002-06-28 Akim Demaille <akim@epita.fr>
2522
2523 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
2524 (b4_token_enum, b4_token_defines): New, factored from...
2525 * data/lalr1.cc, data/yacc.c, glr.c: here.
2526
41442480
AD
25272002-06-28 Akim Demaille <akim@epita.fr>
2528
2529 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
2530 unused variables.
2531 * src/output.c (merger_output): static.
2532
e0e5bf84
AD
25332002-06-28 Akim Demaille <akim@epita.fr>
2534
2535 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
2536 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
2537 pacify GCC.
2538 * src/output.c (save_row): Initialize all the variables to pacify GCC.
e0e5bf84 2539
676385e2
PH
25402002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2541
2542 Accumulated changelog for new GLR parsing features.
2543
6a254321 2544 * src/conflicts.c (count_total_conflicts): Change name to
676385e2
PH
2545 conflicts_total_count.
2546 * src/conflicts.h: Ditto.
2547 * src/output.c (token_actions): Use the new name.
2548 (output_conflicts): Change conflp => conflict_list_heads, and
2549 confl => conflict_list for better readability.
2550 * data/glr.c: Use the new names.
2551 * NEWS: Add self to GLR announcement.
e0e5bf84 2552
676385e2
PH
2553 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
2554
2555 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
2556 Akim Demaille.
2557
2558 * data/bison.glr: Change name to glr.c
2559 * data/glr.c: Renamed from bison.glr.
2560 * data/Makefile.am: Add glr.c
e0e5bf84
AD
2561
2562 * src/getargs.c:
2563
676385e2
PH
2564 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
2565 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
e0e5bf84 2566
676385e2
PH
2567 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2568
2569 * data/bison.glr: Be sure to restore the
2570 current #line when returning to the skeleton contents after having
2571 exposed the input file's #line.
2572
2573 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2574
2575 * data/bison.glr: Bring up to date with changes to bison.simple.
2576
2577 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2578
2579 * data/bison.glr: Correct definitions that use b4_prefix.
2580 Various reformatting.
2581 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
2582 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
2583 yytokenp argument; now part of stack.
2584 (yychar): Define to behave as documented.
2585 (yyclearin): Ditto.
e0e5bf84 2586
676385e2
PH
2587 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2588
2589 * src/reader.h: Add declaration for free_merger_functions.
2590
2591 * src/reader.c (merge_functions): New variable.
2592 (get_merge_function): New function.
2593 (free_merger_functions): New function.
2594 (readgram): Check for %prec that is not followed by a symbol.
2595 Handle %dprec and %merge declarations.
2596 (packgram): Initialize dprec and merger fields in rules array.
2597
2598 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
2599 conflict_list_cnt, conflict_list_free): New variables.
2600 (table_grow): Also grow conflict_table.
e0e5bf84 2601 (prepare_rules): Output dprec and merger tables.
676385e2 2602 (conflict_row): New function.
e0e5bf84 2603 (action_row): Output conflict lists for GLR parser. Don't use
676385e2
PH
2604 default reduction in conflicted states for GLR parser so that there
2605 are spaces for the conflict lists.
2606 (save_row): Also save conflict information.
2607 (token_actions): Allocate conflict list.
2608 (merger_output): New function.
2609 (pack_vector): Pack conflict table, too.
2610 (output_conflicts): New function to output yyconflp and yyconfl.
2611 (output_check): Allocate conflict_tos.
2612 (output_actions): Output conflict tables, also.
2613 (output_skeleton): Output b4_mergers definition.
2614 (prepare): Output b4_max_rhs_length definition.
2615 Use 'bison.glr' as default skeleton for GLR parsers.
2616
2617 * src/gram.c (glr_parser): New flag.
2618 (grammar_free): Call free_merger_functions.
2619
2620 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
2621 all pairs of conflicting reductions, rather than just all tokens
2622 causing conflicts. Needed to size conflict tables.
e0e5bf84 2623 (conflicts_output): Modify call to count_rr_conflicts for new
676385e2
PH
2624 interface.
2625 (conflicts_print): Ditto.
2626 (count_total_conflicts): New function.
2627
2628 * src/reader.h (merger_list): New type.
2629 (merge_functions): New variable.
2630
2631 * src/lex.h (tok_dprec, tok_merge): New token types.
2632
2633 * src/gram.h (rule_s): Add dprec and merger fields.
2634 (glr_parser): New flag.
2635
2636 * src/conflicts.h (count_total_conflicts): New function.
2637
2638 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
2639
2640 * doc/bison.texinfo (Generalized LR Parsing): New section.
2641 (GLR Parsers): New section.
2642 (Language and Grammar): Mention GLR parsing.
2643 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
2644 Correct typo ("tge" -> "the").
2645
2646 * data/bison.glr: New skeleton for GLR parsing.
2647
2648 * tests/cxx-gram.at: New tests for GLR parsing.
2649
2650 * tests/testsuite.at: Include cxx-gram.at.
2651
2652 * tests/Makefile.am: Add cxx-gram.at.
e0e5bf84 2653
676385e2
PH
2654 * src/parse-gram.y:
2655
2656 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
2657
2658 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
e0e5bf84 2659
b5480d74 26602002-06-27 Akim Demaille <akim@epita.fr>
e2aaf4c4
AD
2661
2662 * src/options.h, src/options.c: Remove.
2663 * src/getargs.c (short_options, long_options): New.
2664
60491a94
AD
26652002-06-27 Akim Demaille <akim@epita.fr>
2666
2667 * data/bison.simple, data/bison.c++: Rename as...
2668 * data/yacc.c, data/lalr1.cc: these.
2669 * doc/bison.texinfo (Environment Variables): Remove.
2670
9be0c25b
AD
26712002-06-25 Raja R Harinath <harinath@cs.umn.edu>
2672
2673 * src/getargs.c (report_argmatch): Initialize strtok().
2674
1ae72863
AD
26752002-06-20 Akim Demaille <akim@epita.fr>
2676
2677 * data/bison.simple (b4_symbol_actions): New, replaces...
2678 (b4_symbol_destructor, b4_symbol_printer): these.
2679 (yysymprint): Be sure to call YYPRINT only for tokens, and using
2680 user token numbers.
2681
87542d29
AD
26822002-06-20 Akim Demaille <akim@epita.fr>
2683
2684 * data/bison.simple (yydestructor): Rename as...
2685 (yydestruct): this.
2686
1a31ed21
AD
26872002-06-20 Akim Demaille <akim@epita.fr>
2688
2689 * src/symtab.h, src/symtab.c (symbol_type_set)
2690 (symbol_destructor_set, symbol_precedence_set): The location is
2691 the last argument.
2692 Adjust all callers.
2693
e776192e
AD
26942002-06-20 Akim Demaille <akim@epita.fr>
2695
2696 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
2697 internals.
2698 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
2699 Takes a location.
2700 * src/symtab.h, src/symtab.c (symbol_class_set)
2701 (symbol_user_token_number_set): Likewise.
2702 Adjust all callers.
2703 Promote complain_at.
2704 * tests/input.at (Type Clashes): Adjust.
2705
5c1180b3
AD
27062002-06-20 Akim Demaille <akim@epita.fr>
2707
2708 * data/bison.simple (YYLEX): Fix the declaration when
2709 %pure-parser.
2710
e3170060
AD
27112002-06-20 Akim Demaille <akim@epita.fr>
2712
2713 * data/bison.simple (yysymprint): Don't print the token number,
2714 just its name.
2715 * tests/actions.at (Destructors): Rename as...
2716 (Printers and Destructors): this.
2717 Also exercise %printer.
2718
253862fd
AD
27192002-06-20 Akim Demaille <akim@epita.fr>
2720
2721 * data/bison.simple (YYDSYMPRINT): New.
2722 Use it to remove many of the #if YYDEBUG/if (yydebug).
2723
366eea36
AD
27242002-06-20 Akim Demaille <akim@epita.fr>
2725
2726 * src/symtab.h, src/symtab.c (symbol_t): printer and
2727 printer_location are new members.
2728 (symbol_printer_set): New.
2729 * src/parse-gram.y (PERCENT_PRINTER): New token.
2730 Handle its associated rule.
2731 * src/scan-gram.l: Adjust.
2732 (handle_destructor_at, handle_destructor_dollar): Rename as...
2733 (handle_symbol_code_at, handle_symbol_code_dollar): these.
2734 * src/output.c (symbol_printers_output): New.
2735 (output_skeleton): Call it.
2736 * data/bison.simple (yysymprint): New. Cannot be named yyprint
2737 since there are already many grammar files with a user `yyprint'.
2738 Replace the calls to YYPRINT to calls to yysymprint.
2739 * tests/calc.at: Adjust.
2740 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
2741 taking advantage of parser very internal details (stack size!).
2742
4f25ebb0
AD
27432002-06-20 Akim Demaille <akim@epita.fr>
2744
2745 * src/scan-gram.l: Complete the scanner with the missing patterns
2746 to pacify Flex.
2747 Use `quote' and `symbol_tag_get' where appropriate.
2748
93b68a0e
AD
27492002-06-19 Akim Demaille <akim@epita.fr>
2750
2751 * tests/actions.at (Destructors): Augment to test locations.
2752 * data/bison.simple (yydestructor): Pass it the current location
2753 if locations are enabled.
2754 Prototype only when __STDC__ or C++.
2755 Change the argument names to move into the yy name space: there is
2756 user code here.
2757
58612f1d
AD
27582002-06-19 Akim Demaille <akim@epita.fr>
2759
74310291
AD
2760 * data/bison.simple (b4_pure_if): New.
2761 Use it instead of #ifdef YYPURE.
2762
27632002-06-19 Akim Demaille <akim@epita.fr>
2764
2765 * data/bison.simple (b4_location_if): New.
58612f1d
AD
2766 Use it instead of #ifdef YYLSP_NEEDED.
2767
f25bfb75
AD
27682002-06-19 Akim Demaille <akim@epita.fr>
2769
2770 Prepare @$ in %destructor, but currently don't bind it in the
2771 skeleton, as %location use is not cleaned up yet.
2772
2773 * src/scan-gram.l (handle_dollar, handle_destructor_at)
2774 (handle_action_at): New.
2775 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
2776 a braced_code_t and a location as additional arguments.
2777 (handle_destructor_dollar): Instead of requiring `b4_eval', just
2778 unquote one when outputting `b4_dollar_dollar'.
2779 Adjust callers.
2780 * data/bison.simple (b4_eval): Remove.
2781 (b4_symbol_destructor): Adjust.
2782 * tests/input.at (Invalid @n): Adjust.
2783
c732d2c6
AD
27842002-06-19 Zack Weinberg <zack@codesourcery.com>
2785
2786 * doc/bison.texinfo: Document ability to have multiple
2787 prologue sections.
2788
8c165d89
AD
27892002-06-18 Akim Demaille <akim@epita.fr>
2790
2791 * src/files.c (compute_base_names): When computing the output file
2792 names from the input file name, strip the directory part.
2793
ca98bf57
AD
27942002-06-18 Akim Demaille <akim@epita.fr>
2795
2796 * data/bison.simple.new: Comment changes.
2797 Reported by Andreas Schwab.
2798
0bfb02ff
AD
27992002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
2800
2801 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
2802 there are no `label `yyoverflowlab' defined but not used' warnings
2803 when yyoverflow is defined.
2804
24c0aad7
AD
28052002-06-18 Akim Demaille <akim@epita.fr>
2806
2807 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
2808 new member.
2809 (symbol_destructor_set): Adjust.
2810 * src/output.c (symbol_destructors_output): Output the destructor
2811 locations.
2812 Output the symbol name.
2813 * data/bison.simple (b4_symbol_destructor): Adjust.
2814
5719c109
AD
28152002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
2816 and Akim Demaille <akim@epita.fr>
2817
2818 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
2819 what's left on the stack when the error recovery hits EOF.
2820 * tests/actions.at (Destructors): Complete to exercise this case.
2821
9280d3ef
AD
28222002-06-17 Akim Demaille <akim@epita.fr>
2823
2824 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
2825 arguments is really empty, not only equal to `[]'.
2826 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
2827 member.
2828 (symbol_destructor_set): New.
2829 * src/output.c (symbol_destructors_output): New.
2830 * src/reader.h (brace_code_t, current_braced_code): New.
2831 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
2832 (handle_dollar): Rename as...
2833 (handle_action_dollar): this.
2834 (handle_destructor_dollar): New.
2835 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
2836 (grammar_declaration): Use it.
2837 * data/bison.simple (yystos): Is always defined.
2838 (yydestructor): New.
2839 * tests/actions.at (Destructors): New.
2840 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
2841
dafdc66f
AD
28422002-06-17 Akim Demaille <akim@epita.fr>
2843
2844 * src/symlist.h, src/symlist.c (symbol_list_length): New.
2845 * src/scan-gram.l (handle_dollar, handle_at): Compute the
2846 rule_length only when needed.
2847 * src/output.c (actions_output, token_definitions_output): Output
2848 the full M4 block.
2849 * src/symtab.c: Don't access directly to the symbol tag, use
2850 symbol_tag_get.
2851 * src/parse-gram.y: Use symbol_list_free.
2852
56c47203
AD
28532002-06-17 Akim Demaille <akim@epita.fr>
2854
2855 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
2856 (symbol_list_prepend, get_type_name): Move to...
2857 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
2858 (symbol_list_prepend, symbol_list_n_type_name_get): here.
2859 Adjust all callers.
2860 (symbol_list_free): New.
2861 * src/scan-gram.l (handle_dollar): Takes a location.
2862 * tests/input.at (Invalid $n): Adjust.
2863
1e0bab92
AD
28642002-06-17 Akim Demaille <akim@epita.fr>
2865
2866 * src/reader.h, src/reader.c (symbol_list_new): Export it.
2867 (symbol_list_prepend): New.
2868 * src/parse-gram.y (%union): `list' is a new member.
2869 (symbols.1): New, replaces...
2870 (terms_to_prec.1, nterms_to_type.1): these.
2871 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
2872 Take a location as additional argument.
2873 Adjust all callers.
2874
04e60654
AD
28752002-06-15 Akim Demaille <akim@epita.fr>
2876
2877 * src/parse-gram.y: Move %token in the declaration section so that
2878 we don't depend upon CVS Bison.
2879
10e5b8bd
AD
28802002-06-15 Akim Demaille <akim@epita.fr>
2881
2882 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
2883 * src/print.c (print_core): Use it.
2884
9801d40c
AD
28852002-06-15 Akim Demaille <akim@epita.fr>
2886
2887 * src/conflicts.c (log_resolution): Accept the rule involved in
2888 the sr conflicts instead of the lookahead number that points to
2889 that rule.
2890 (flush_reduce): Accept the current lookahead vector as argument,
2891 instead of the index in LA.
2892 (resolve_sr_conflict): Accept the current number of lookahead
2893 bitset to consider for the STATE, instead of the index in LA.
2894 (set_conflicts): Adjust.
2895 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
2896
c0263492
AD
28972002-06-15 Akim Demaille <akim@epita.fr>
2898
2899 * src/state.h (state_t): Replace the `lookaheadsp' member, a
2900 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
2901 Adjust all dependencies.
2902 * src/lalr.c (initialize_lookaheads): Split into...
2903 (states_lookaheads_count, states_lookaheads_initialize): these.
2904 (lalr): Adjust.
2905
9757c359
AD
29062002-06-15 Akim Demaille <akim@epita.fr>
2907
2908 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
2909 out of...
2910 (grammar_rules_print): here.
2911 * src/reduce.c (reduce_output): Use it.
2912 * tests/reduce.at (Useless Rules, Reduced Automaton)
2913 (Underivable Rules): Adjust.
2914
6b98e4b5
AD
29152002-06-15 Akim Demaille <akim@epita.fr>
2916
2917 Copy BYacc's nice way to report the grammar.
2918
2919 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
2920 New.
2921 Don't print the rules' location, it is confusing and useless.
2922 (rule_print): Use grammar_rhs_print.
2923 * src/print.c (print_grammar): Use grammar_rules_print.
2924
6b98e4b5
AD
29252002-06-15 Akim Demaille <akim@epita.fr>
2926
2927 Complete and rationalize `useless thing' warnings.
2928
2929 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
2930 (symbol_tag_print): New.
2931 Use them everywhere in place of accessing directly the tag member.
2932 * src/gram.h, src/gram.c (rule_print): New.
2933 Use it where a rule used to be printed `by hand'.
2934 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
2935 (reduce_grammar_tables): Report the useless rules.
2936 (reduce_print): Useless things are a warning, not an error.
2937 Report it as such.
2938 * tests/reduce.at (Useless Nonterminals, Useless Rules):
2939 (Reduced Automaton, Underivable Rules): Adjust.
2940 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
2941 * tests/conflicts.at (Unresolved SR Conflicts)
2942 (Solved SR Conflicts): Adjust.
2943
ee000ba4
AD
29442002-06-15 Akim Demaille <akim@epita.fr>
2945
2946 Let symbols have a location.
2947
2948 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
2949 (getsym): Adjust.
2950 Adjust all callers.
2951 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
2952 Use location_t, not int.
2953 * src/symtab.c (symbol_check_defined): Take advantage of the
2954 location.
2955 * tests/regression.at (Invalid inputs): Adjust.
2956
8efe435c
AD
29572002-06-15 Akim Demaille <akim@epita.fr>
2958
2959 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
2960 (input): Don't try to initialize yylloc here, do it in the
2961 scanner.
2962 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
2963 * src/gram.h (rule_t): Change line and action_line into location
2964 and action_location, of location_t type.
2965 Adjust all dependencies.
2966 * src/location.h, src/location.c (empty_location): New.
2967 * src/reader.h, src/reader.c (grammar_start_symbol_set)
2968 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
2969 (grammar_current_rule_symbol_append)
2970 (grammar_current_rule_action_append): Expect a location as argument.
2971 * src/reader.c (grammar_midrule_action): Adjust to attach an
2972 action's location as dummy symbol location.
2973 * src/symtab.h, src/symtab.c (startsymbol_location): New.
2974 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
2975 the line numbers.
2976
1921f1d7
AD
29772002-06-14 Akim Demaille <akim@epita.fr>
2978
2979 Grammar declarations may be found in the grammar section.
2980
2981 * src/parse-gram.y (rules_or_grammar_declaration): New.
2982 (declarations): Each declaration may end with a semicolon, not
2983 just...
2984 (grammar_declaration): `"%union"'.
2985 (grammar): Branch to rules_or_grammar_declaration.
2986
4515534c
AD
29872002-06-14 Akim Demaille <akim@epita.fr>
2988
2989 * src/main.c (main): Invoke scanner_free.
2990
f958596b
AD
29912002-06-14 Akim Demaille <akim@epita.fr>
2992
2993 * src/output.c (m4_invoke): Extracted from...
2994 (output_skeleton): here.
2995 Free tempfile.
2996
2c569025
AD
29972002-06-14 Akim Demaille <akim@epita.fr>
2998
2999 * src/parse-gram.y (directives, directive, gram)
3000 (grammar_directives, precedence_directives, precedence_directive):
3001 Rename as...
3002 (declarations, declaration, grammar, grammar_declaration)
3003 (precedence_declaration, precedence_declarator): these.
3004 (symbol_declaration): New.
3005
592e8d4d
AD
30062002-06-14 Akim Demaille <akim@epita.fr>
3007
3008 * src/files.c (action_obstack): Remove, unused.
3009 (output_obstack): Remove it, and all its dependencies, as it is no
3010 longer needed.
3011 * src/reader.c (epilogue_set): Build the epilogue in the
3012 muscle_obstack.
3013 * src/output.h, src/output.c (muscle_obstack): Move to...
3014 * src/muscle_tab.h, src/muscle_tab.h: here.
3015 (muscle_init): Initialize muscle_obstack.
3016 (muscle_free): New.
3017 * src/main.c (main): Call it.
3018
0c15323d
AD
30192002-06-14 Akim Demaille <akim@epita.fr>
3020
3021 * src/location.h: New, extracted from...
3022 * src/reader.h: here.
3023 * src/Makefile.am (noinst_HEADERS): Merge into
3024 (bison_SOURCES): this.
3025 Add location.h.
3026 * src/parse-gram.y: Use location_t instead of Bison's.
3027 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
3028 Use location_t instead of ints.
3029
e96c9728
AD
30302002-06-14 Akim Demaille <akim@epita.fr>
3031
3032 * data/bison.simple, data/bison.c++: Be sure to restore the
3033 current #line when returning to the skeleton contents after having
3034 exposed the input file's #line.
3035
75d1fe16
AD
30362002-06-12 Akim Demaille <akim@epita.fr>
3037
3038 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
3039 eager.
3040 * tests/actions.at (Exotic Dollars): New.
3041
6c35d22c
AD
30422002-06-12 Akim Demaille <akim@epita.fr>
3043
3044 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
3045 ['"/] too eagerly.
3046 * tests/input.at (Torturing the Scanner): New.
3047
1d6412ad
AD
30482002-06-11 Akim Demaille <akim@epita.fr>
3049
3050 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
3051 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
3052 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
3053 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
3054 * src/reader.c (reader): Use it.
3055
4cdb01db
AD
30562002-06-11 Akim Demaille <akim@epita.fr>
3057
3058 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
3059 Adjust all callers.
3060 (scanner_last_string_free): New.
3061
44995b2e
AD
30622002-06-11 Akim Demaille <akim@epita.fr>
3063
3064 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
3065 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
3066 (last_string, YY_OBS_FREE): New.
3067 Use them when returning an ID.
3068
e9955c83
AD
30692002-06-11 Akim Demaille <akim@epita.fr>
3070
3071 Have Bison grammars parsed by a Bison grammar.
3072
3073 * src/reader.c, src/reader.h (prologue_augment): New.
3074 * src/reader.c (copy_definition): Remove.
3075
3076 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
3077 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
3078 (grammar_current_rule_prec_set, grammar_current_rule_check)
3079 (grammar_current_rule_symbol_append)
3080 (grammar_current_rule_action_append): Export.
3081 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
3082 (symbol_list_action_append): Remove.
3083 Hook the routines from reader.
3084 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
3085 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
3086
3087 * src/reader.c (read_declarations): Remove, unused.
3088
3089 * src/parse-gram.y: Handle the epilogue.
3090 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
3091 (grammar_start_symbol_set): this.
3092 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
3093 * src/reader.c (readgram): Remove, unused.
3094 (reader): Adjust to insert eoftoken and axiom where appropriate.
3095
3096 * src/reader.c (copy_dollar): Replace with...
3097 * src/scan-gram.h (handle_dollar): this.
3098 * src/parse-gram.y: Remove `%thong'.
3099
3100 * src/reader.c (copy_at): Replace with...
3101 * src/scan-gram.h (handle_at): this.
3102
3103 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
3104 New.
3105
3106 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
3107 time being.
3108
3109 * src/reader.h, src/reader.c (grammar_rule_end): New.
3110
3111 * src/parse.y (current_type, current_class): New.
3112 Implement `%nterm', `%token' support.
3113 Merge `%term' into `%token'.
3114 (string_as_id): New.
3115 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
3116 type name.
3117
3118 * src/parse-gram.y: Be sure to handle properly the beginning of
3119 rules.
3120
3121 * src/parse-gram.y: Handle %type.
3122 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
3123
3124 * src/parse-gram.y: More directives support.
3125 * src/options.c: No longer handle source directives.
3126
3127 * src/parse-gram.y: Fix %output.
3128
3129 * src/parse-gram.y: Handle %union.
3130 Use the prologue locations.
3131 * src/reader.c (parse_union_decl): Remove.
3132
3133 * src/reader.h, src/reader.c (epilogue_set): New.
3134 * src/parse-gram.y: Use it.
3135
3136 * data/bison.simple, data/bison.c++: b4_stype is now either not
3137 defined, then default to int, or to the contents of %union,
3138 without `union' itself.
3139 Adjust.
3140 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
3141
3142 * src/output.c (actions_output): Don't output braces, as they are
3143 already handled by the scanner.
3144
3145 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
3146 characters to themselves.
3147
3148 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
3149 that the epilogue has a proper #line.
3150
3151 * src/parse-gram.y: Handle precedence/associativity.
3152
3153 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
3154 a terminal.
3155 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
3156 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
3157 at all to define terminals that cannot be emitted.
3158
3159 * src/scan-gram.l: Escape M4 characters.
3160
3161 * src/scan-gram.l: Working properly with escapes in user
3162 strings/characters.
3163
3164 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
3165 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
3166 grammar.
3167 Use more modest sizes, as for the time being the parser does not
3168 release memory, and therefore the process swallows a huge amount
3169 of memory.
3170
3171 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
3172 stricter %token grammar.
3173
3174 * src/symtab.h (associativity): Add `undef_assoc'.
3175 (symbol_precedence_set): Do nothing when passed an undef_assoc.
3176 * src/symtab.c (symbol_check_alias_consistence): Adjust.
3177
3178 * tests/regression.at (Invalid %directive): Remove, as it is now
3179 meaningless.
3180 (Invalid inputs): Adjust to the new error messages.
3181 (Token definitions): The new grammar doesn't allow too many
3182 eccentricities.
3183
3184 * src/lex.h, src/lex.c: Remove.
3185 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
3186 (copy_character, copy_string2, copy_string, copy_identifier)
3187 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
3188 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
3189 (parse_action): Remove.
3190 * po/POTFILES.in: Adjust.
3191
2e047461
AD
31922002-06-11 Akim Demaille <akim@epita.fr>
3193
3194 * src/reader.c (parse_action): Don't store directly into the
3195 rule's action member: return the action as a string.
3196 Don't require `rule_length' as an argument: compute it.
3197 (grammar_current_rule_symbol_append)
3198 (grammar_current_rule_action_append): New, eved out from
3199 (readgram): here.
3200 Remove `action_flag', `rulelength', unused now.
3201
9af3fbce
AD
32022002-06-11 Akim Demaille <akim@epita.fr>
3203
3204 * src/reader.c (grammar_current_rule_prec_set).
3205 (grammar_current_rule_check): New, eved out from...
3206 (readgram): here.
3207 Remove `xaction', `first_rhs': useless.
3208 * tests/input.at (Type clashes): New.
3209 * tests/existing.at (GNU Cim Grammar): Adjust.
3210
1485e106
AD
32112002-06-11 Akim Demaille <akim@epita.fr>
3212
3213 * src/reader.c (grammar_midrule_action): New, Eved out from
3214 (readgram): here.
3215
da4160c3
AD
32162002-06-11 Akim Demaille <akim@epita.fr>
3217
3218 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
3219 New.
3220 (readgram): Use them as replacement of inlined code, crule and
3221 crule1.
3222
f6d0f937
AD
32232002-06-11 Akim Demaille <akim@epita.fr>
3224
3225 * src/reader.c (grammar_end, grammar_symbol_append): New.
3226 (readgram): Use them.
3227 Make the use of `p' as local as possible.
3228
69078d4b
AD
32292002-06-10 Akim Demaille <akim@epita.fr>
3230
3231 GCJ's parser requires the tokens to be defined before the prologue.
3232
3233 * data/bison.simple: Output the token definition before the user's
3234 prologue.
3235 * tests/regression.at (Braces parsing, Duplicate string)
3236 (Mixing %token styles): Check the output from bison.
3237 (Early token definitions): New.
3238
5e424082
AD
32392002-06-10 Akim Demaille <akim@epita.fr>
3240
3241 * src/symtab.c (symbol_user_token_number_set): Don't complain when
3242 assigning twice the same user number to a token, so that we can
3243 use it in...
3244 * src/lex.c (lex): here.
3245 Also use `symbol_class_set' instead of hand written code.
3246 * src/reader.c (parse_assoc_decl): Likewise.
3247
44536b35
AD
32482002-06-10 Akim Demaille <akim@epita.fr>
3249
3250 * src/symtab.c, src/symtab.c (symbol_class_set)
3251 (symbol_user_token_number_set): New.
3252 * src/reader.c (parse_token_decl): Use them.
3253 Use a switch instead of ifs.
3254 Use a single argument.
3255
8b9f2372
AD
32562002-06-10 Akim Demaille <akim@epita.fr>
3257
3258 Remove `%thong' support as it is undocumented, unused, duplicates
3259 `%token's job, and creates useless e-mail traffic with people who
3260 want to know what it is, why it is undocumented, unused, and
3261 duplicates `%token's job.
3262
3263 * src/reader.c (parse_thong_decl): Remove.
3264 * src/options.c (option_table): Remove "thong".
3265 * src/lex.h (tok_thong): Remove.
3266
3ae2b51f
AD
32672002-06-10 Akim Demaille <akim@epita.fr>
3268
3269 * src/symtab.c, src/symtab.c (symbol_type_set)
3270 (symbol_precedence_set): New.
3271 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
3272 (value_components_used): Remove, unused.
3273
2f1afb73
AD
32742002-06-09 Akim Demaille <akim@epita.fr>
3275
3276 Move symbols handling code out of the reader.
3277
3278 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
3279 (axiom): Move to...
3280 * src/symtab.h, src/symtab.c: here.
3281
3282 * src/gram.c (start_symbol): Remove: use startsymbol->number.
3283 * src/reader.c (startval): Rename as...
3284 * src/symtab.h, src/symtab.c (startsymbol): this.
3285 * src/reader.c: Adjust.
3286
3287 * src/reader.c (symbol_check_defined, symbol_make_alias)
3288 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
3289 (token_translations_init)
3290 Move to...
3291 * src/symtab.c: here.
3292 * src/reader.c (packsymbols): Move to...
3293 * src/symtab.h, src/symtab.c (symbols_pack): here.
3294 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
3295 argument.
3296
e9bca3ad
AD
32972002-06-03 Akim Demaille <akim@epita.fr>
3298
3299 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
3300 then statements.
3301
86eff183
AD
33022002-06-03 Akim Demaille <akim@epita.fr>
3303
3304 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
3305 structs with non literals.
3306 * src/scan-skel.l: never-interactive.
3307 * src/conflicts.c (enum conflict_resolution_e): No trailing
3308 comma.
3309 * src/getargs.c (usage): Split long literal strings.
3310 Reported by Hans Aberg.
3311
717be197
AD
33122002-05-28 Akim Demaille <akim@epita.fr>
3313
3314 * data/bison.c++: Use C++ ostreams.
3315 (cdebug_): New member.
3316
670ddffd
AD
33172002-05-28 Akim Demaille <akim@epita.fr>
3318
3319 * src/output.c (output_skeleton): Be sure to allocate enough room
3320 for `/' _and_ for `\0' in full_skeleton.
3321
769b430f
AD
33222002-05-28 Akim Demaille <akim@epita.fr>
3323
3324 * data/bison.c++: Catch up with bison.simple:
3325 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3326 and Paul Eggert <eggert@twinsun.com>: `error' handing.
3327 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
3328 and popping traces.
3329
7067cb36
PH
33302002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3331
3332 * src/output.c (output_skeleton): Put an explicit path in front of
3333 the skeleton file name, rather than relying on the -I directory,
3334 to partially alleviate effects of having a skeleton file lying around
3335 in the current directory.
769b430f 3336
4a713ec2
PH
33372002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3338
769b430f 3339 * src/conflicts.c (log_resolution): Correct typo:
4a713ec2
PH
3340 obstack_printf should be obstack_fgrow1.
3341
b408954b
AD
33422002-05-26 Akim Demaille <akim@epita.fr>
3343
3344 * src/state.h (state_t): `solved_conflicts' is a new member.
3345 * src/LR0.c (new_state): Set it to 0.
3346 * src/conflicts.h, src/conflicts.c (print_conflicts)
3347 (free_conflicts, solve_conflicts): Rename as...
3348 (conflicts_print, conflicts_free, conflicts_solve): these.
3349 Adjust callers.
3350 * src/conflicts.c (enum conflict_resolution_e)
3351 (solved_conflicts_obstack): New, used by...
3352 (log_resolution): this.
3353 Adjust to attach the conflict resolution to each state.
3354 Complete the description with the precedence/associativity
3355 information.
3356 (resolve_sr_conflict): Adjust.
3357 * src/print.c (print_state): Output its solved_conflicts.
3358 * tests/conflicts.at (Unresolved SR Conflicts)
3359 (Solved SR Conflicts): Exercise --report=all.
3360
a49aecd5
AD
33612002-05-26 Akim Demaille <akim@epita.fr>
3362
3363 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
3364 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
3365 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
3366 (token_number_t, item_number_as_token_number)
3367 (token_number_as_item_number, muscle_insert_token_number_table):
3368 Rename as...
3369 (symbol_number_t, item_number_as_symbol_number)
3370 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
3371 these, since it is more appropriate.
3372
5504898e
AD
33732002-05-26 Akim Demaille <akim@epita.fr>
3374
3375 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
3376 `Error:' lines.
3377 * data/bison.simple (yystos) [YYDEBUG]: New.
3378 (yyparse) [YYDEBUG]: Display the symbols which are popped during
3379 error recovery.
3380 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
3381
ec3bc396
AD
33822002-05-25 Akim Demaille <akim@epita.fr>
3383
3384 * doc/bison.texinfo (Debugging): Split into...
3385 (Tracing): this new section, its former contents, and...
3386 (Understanding): this new section.
3387 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
3388 by...
3389 (report_flag): this.
3390 Adjust all dependencies.
3391 (report_args, report_types, report_argmatch): New.
3392 (usage, getargs): Report/support -r, --report.
3393 * src/options.h
3394 (struct option_table_struct): Rename as..,
3395 (struct option_table_s): this.
3396 Rename the `set_flag' member to `flag' to match with getopt_long's
3397 struct.
3398 * src/options.c (option_table): Split verbose into an entry for
3399 %verbose, and another for --verbose.
3400 Support --report/-r, so remove -r from the obsolete --raw.
3401 * src/print.c: Attach full item sets and lookaheads reports to
3402 report_flag instead of trace_flag.
3403 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
3404
78df8250
PE
34052002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3406 and Paul Eggert <eggert@twinsun.com>
769b430f 3407
78df8250
PE
3408 * data/bison.simple (yyparse): Correct error handling to conform to
3409 POSIX and yacc. Specifically, after syntax error is discovered,
3410 do not reduce further before shifting the error token.
3411 Clean up the code a bit by removing the labels yyerrdefault,
3412 yyerrhandle, yyerrpop.
3413 * NEWS: Document the above.
3414
c0c9ea05
PH
34152002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3416
3417 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
3418 type; it isn't always big enough, since it doesn't necessarily
3419 include non-terminals.
769b430f 3420 (yytranslate): Expand definition of yy_token_number_type, so that
c0c9ea05
PH
3421 the latter can be removed.
3422 (yy_token_number_type): Remove, only one use.
3423 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
3424 don't use TokenNumberType as element type.
769b430f 3425
c0c9ea05
PH
3426 * tests/regression.at: Modify expected output to agree with change
3427 to yyr1 and yytranslate.
769b430f 3428
6390a83f
FK
34292002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
3430
3431 * src/reader.c (parse_action): Use copy_character instead of
3432 obstack_1grow.
3433
db7c8e9a
AD
34342002-05-13 Akim Demaille <akim@epita.fr>
3435
3436 * tests/regression.at (Token definitions): Prototype yylex and
3437 yyerror.
3438
fcc61800
PH
34392002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3440
158c687b 3441 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
fcc61800
PH
3442 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
3443 32-bit arithmetic.
3444 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
3445
5683e9b2
AD
34462002-05-07 Akim Demaille <akim@epita.fr>
3447
3448 * tests/synclines.at: Be sure to prototype yylex and yyerror to
3449 avoid GCC warnings.
3450
0c2d3f4c
AD
34512002-05-07 Akim Demaille <akim@epita.fr>
3452
3453 Kill GCC warnings.
3454
3455 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
3456 over the RHS of each rule.
3457 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
3458 * src/state.h (state_t): Member `nitems' is unsigned short.
3459 * src/LR0.c (get_state): Adjust.
3460 * src/reader.c (packgram): Likewise.
3461 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
3462 `Type'.
3463 (muscle_insert_int_table): Remove, unused.
3464 (prepare_rules): Remove `max'.
3465
1565b720
AD
34662002-05-06 Akim Demaille <akim@epita.fr>
3467
3468 * src/closure.c (print_firsts): Display of the symbol tags.
3469 (bitmatrix_print): Move to...
3470 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
3471 here.
3472 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
3473
cfaee611
AD
34742002-05-06 Akim Demaille <akim@epita.fr>
3475
3476 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
3477 hash_do_for_each.
3478
458be8e0
AD
34792002-05-06 Akim Demaille <akim@epita.fr>
3480
3481 * src/LR0.c (new_state, get_state): Instead of using the global
3482 `kernel_size' and `kernel_base', have two new arguments:
3483 `core_size' and `core'.
3484 Adjust callers.
3485
a900a624
AD
34862002-05-06 Akim Demaille <akim@epita.fr>
3487
3488 * src/reader.c (packgram): No longer end `ritem' with a 0
3489 sentinel: it is not used.
3490
d4e7d3a1
AD
34912002-05-05 Akim Demaille <akim@epita.fr>
3492
3493 New experimental feature: display the lookaheads in the report and
3494 graph.
3495
3496 * src/print (print_core): When --trace-flag, display the rules
3497 lookaheads.
3498 * src/print_graph.c (print_core): Likewise.
3499 Swap the arguments.
3500 Adjust caller.
3501
39ceb25b
AD
35022002-05-05 Akim Demaille <akim@epita.fr>
3503
3504 * tests/torture.at (Many lookaheads): New test.
3505
5372019f
AD
35062002-05-05 Akim Demaille <akim@epita.fr>
3507
3508 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
3509 (GENERATE_MUSCLE_INSERT_TABLE): this.
3510 (output_int_table, output_unsigned_int_table, output_short_table)
3511 (output_token_number_table, output_item_number_table): Replace with...
3512 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
3513 (muscle_insert_short_table, muscle_insert_token_number_table)
3514 (muscle_insert_item_number_table): these.
3515 Adjust all callers.
3516 (prepare_tokens): Don't free `translations', since...
3517 * src/reader.h, src/reader.c (grammar_free): do it.
3518 Move to...
3519 * src/gram.h, src/gram.c (grammar_free): here.
3520 * data/bison.simple, data/bison.c++: b4_token_number_max is now
3521 b4_translate_max.
3522
5df5f6d5
AD
35232002-05-05 Akim Demaille <akim@epita.fr>
3524
3525 * src/output.c (output_unsigned_int_table): New.
3526 (prepare_rules): `i' is unsigned.
3527 `prhs', `rline', `r2' are unsigned int.
3528 Rename muscle `rhs_number_max' as `rhs_max'.
3529 Output muscles `prhs_max', `rline_max', and `r2_max'.
3530 Free rline and r1.
3531 * data/bison.simple, data/bison.c++: Adjust to use these muscles
3532 to compute types instead of constant types.
3533 * tests/regression.at (Web2c Actions): Adjust.
3534
b87f8b21
AD
35352002-05-04 Akim Demaille <akim@epita.fr>
3536
3537 * src/symtab.h (SALIAS, SUNDEF): Rename as...
3538 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
3539 Adjust dependencies.
3540 * src/output.c (token_definitions_output): Be sure not to output a
3541 `#define 'a'' when fed with `%token 'a' "a"'.
3542 * tests/regression.at (Token definitions): New.
3543
8bb936e4
PE
35442002-05-03 Paul Eggert <eggert@twinsun.com>
3545
3546 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
3547 for K&R C.
3548
35492002-05-03 gettextize <bug-gnu-gettext@gnu.org>
3550
3551 * Makefile.am (SUBDIRS): Remove intl.
3552 (EXTRA_DIST): Add config/config.rpath.
3553
53c71a12
AD
35542002-05-03 Akim Demaille <akim@epita.fr>
3555
3556 * data/bison.simple (m4_if): Don't output empty enums.
3557 And actually, output valid enum definitions :(.
3558
289dd0cf
AD
35592002-05-03 Akim Demaille <akim@epita.fr>
3560
3561 * configure.bat: Remove, completely obsolete.
3562 * Makefile.am (EXTRA_DIST): Adjust.
3563 Don't distribute config.rpath...
3564 * config/Makefile.am (EXTRA_DIST): Do it.
3565
db85e524
AD
35662002-05-03 Akim Demaille <akim@epita.fr>
3567
3568 * configure.in (GETTEXT_VERSION): New.
3569 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
3570
83ccf991
AD
35712002-05-03 Akim Demaille <akim@epita.fr>
3572
3573 * data/bison.simple (b4_token_enum): New.
3574 (b4_token_defines): Use it to output tokens both as #define and
3575 enums.
3576 Suggested by Paul Eggert.
3577 * src/output.c (token_definitions_output): Don't output spurious
3578 white spaces.
3579
1f418995
AD
35802002-05-03 Akim Demaille <akim@epita.fr>
3581
3582 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
3583
45119f04
RA
35842002-05-02 Robert Anisko <robert@lrde.epita.fr>
3585
3586 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
3587 Update the stack class, give a try to deque as the default container.
3588
b2d52318
AD
35892002-05-02 Akim Demaille <akim@epita.fr>
3590
3591 * data/bison.simple (yyparse): Do not implement @$ = @1.
3592 (YYLLOC_DEFAULT): Adjust to do it.
3593 * doc/bison.texinfo (Location Default Action): Fix.
3594
3a8b4109
AD
35952002-05-02 Akim Demaille <akim@epita.fr>
3596
3597 * src/reader.c (parse_braces): Merge into...
3598 (parse_action): this.
3599
84614e13
AD
36002002-05-02 Akim Demaille <akim@epita.fr>
3601
3602 * configure.in (ALL_LINGUAS): Remove.
3603 * po/LINGUAS, hr.po: New.
3604
fdbcd8e2
AD
36052002-05-02 Akim Demaille <akim@epita.fr>
3606
3607 Remove the so called hairy (semantic) parsers.
3608
3609 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
3610 * src/gram.h, src/gram.c (semantic_parser): Remove.
3611 (rule_t): Remove the guard and guard_line members.
3612 * src/lex.h (token_t): remove tok_guard.
3613 * src/options.c (option_table): Remove %guard and %semantic_parser
3614 support.
3615 * src/output.c, src/output.h (guards_output): Remove.
3616 (prepare): Adjust.
3617 (token_definitions_output): Don't output the `T'
3618 tokens (???).
3619 (output_skeleton): Don't output the guards.
3620 * src/files.c, src/files.c (attrsfile): Remove.
3621 * src/reader.c (symbol_list): Remove the guard and guard_line
3622 members.
3623 Adjust dependencies.
3624 (parse_guard): Remove.
3625 * data/bison.hairy: Remove.
3626 * doc/bison.texinfo (Environment Variables): Remove occurrences of
3627 BISON_HAIRY.
3628
82b6cb3f
AD
36292002-05-02 Akim Demaille <akim@epita.fr>
3630
3631 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
3632 (parse_guard): Rename the formal argument `stack_offset' as
3633 `rule_length', which is more readable.
3634 Adjust callers.
3635 (copy_at, copy_dollar): Instead of outputting the hard coded
3636 values of $$, $n and so forth, output invocation to b4_lhs_value,
3637 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
900c877b
AD
3638 Note: this patch partially drops `semantic-parser' support: it
3639 always does `rule_length - n', where semantic parsers ought to
3640 always use `-n'.
82b6cb3f
AD
3641 * data/bison.simple, data/bison.c++ (b4_lhs_value)
3642 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
3643
6cbfbcc5
AD
36442002-05-02 Akim Demaille <akim@epita.fr>
3645
3646 * configure.in (AC_INIT): Bump to 1.49b.
3647 (AM_INIT_AUTOMAKE): Short invocation.
3648
b8548114
AD
36492002-05-02 Akim Demaille <akim@epita.fr>
3650
3651 Version 1.49a.
3652
c20cd1fa
AD
36532002-05-01 Akim Demaille <akim@epita.fr>
3654
3655 * src/skeleton.h: Remove.
3656
8a9566d4
AD
36572002-05-01 Akim Demaille <akim@epita.fr>
3658
3659 * src/skeleton.h: Fix the #endif.
3660 Reported by Magnus Fromreide.
3661
8c6d399a
PE
36622002-04-26 Paul Eggert <eggert@twinsun.com>
3663
3664 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
3665 Define if we define YYSTYPE and YYLTYPE, respectively.
b756bb75 3666 (YYCOPY): Fix [] quoting problem in the non-GCC case.
8a9566d4 3667
2b7ed18a
RA
36682002-04-25 Robert Anisko <robert@lrde.epita.fr>
3669
3670 * src/scan-skel.l: Postprocess quadrigraphs.
3671
3672 * src/reader.c (copy_character): New function, used to output
3673 single characters while replacing `[' and `]' with quadrigraphs, to
3674 avoid troubles with M4 quotes.
3675 (copy_comment): Output characters with copy_character.
3676 (read_additionnal_code): Likewise.
3677 (copy_string2): Likewise.
3678 (copy_definition): Likewise.
3679
3680 * tests/calc.at: Exercise M4 quoting.
3681
34a89c50
AD
36822002-04-25 Akim Demaille <akim@epita.fr>
3683
3684 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
3685 between `!' and the command.
3686 Reported by Paul Eggert.
3687
0dd1580a
RA
36882002-04-24 Robert Anisko <robert@lrde.epita.fr>
3689
3690 * tests/calc.at: Exercise prologue splitting.
3691
3692 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
3693 `b4_post_prologue' instead of `b4_prologue'.
3694
3695 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
3696 muscles.
3697 (output): Free pre_prologue_obstack and post_prologue_obstack.
3698 * src/files.h, src/files.c (attrs_obstack): Remove.
3699 (pre_prologue_obstack, post_prologue_obstack): New.
3700 * src/reader.c (copy_definition): Add a parameter to specify the
3701 obstack to fill, instead of using attrs_obstack unconditionally.
3702 (read_declarations): Pass pre_prologue_obstack to copy_definition if
3703 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
3704
83c1796f
PE
37052002-04-23 Paul Eggert <eggert@twinsun.com>
3706
3707 * data/bison.simple: Remove unnecessary commentary and white
3708 space differences from 1_29-branch.
3709 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
3710
3711 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
3712 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
3713 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
3714 constructors or destructors.
3715
3716 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
3717
1207eeac
AD
37182002-04-23 Akim Demaille <akim@epita.fr>
3719
3720 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
3721 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
3722 location with columns.
3723 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
3724 All reported by Paul Eggert.
3725
78ab8f67
AD
37262002-04-22 Akim Demaille <akim@epita.fr>
3727
3728 * src/reduce.c (dump_grammar): Move to...
3729 * src/gram.h, src/gram.c (grammar_dump): here.
3730 Be sure to separate long item numbers.
3731 Don't read the members of a rule's prec if its nil.
3732
133c20e2
AD
37332002-04-22 Akim Demaille <akim@epita.fr>
3734
3735 * src/output.c (table_size, table_grow): New.
3736 (MAXTABLE): Remove, replace uses with table_size.
3737 (pack_vector): Instead of dying when the table is too big, grow it.
3738
9515e8a7
AD
37392002-04-22 Akim Demaille <akim@epita.fr>
3740
3741 * data/bison.simple (yyr1): Its type is that of a token number.
3742 * data/bison.c++ (r1_): Likewise.
3743 * tests/regression.at (Web2c Actions): Adjust.
3744
23c5a174
AD
37452002-04-22 Akim Demaille <akim@epita.fr>
3746
3747 * src/reader.c (token_translations_init): 256 is now the default
3748 value for the error token, i.e., it will be assigned another
3749 number if the user assigned 256 to one of her tokens.
3750 (reader): Don't force 256 to error.
3751 * doc/bison.texinfo (Symbols): Adjust.
3752 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
3753 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
3754 etc. instead of 10, 20, 30 (which was used to `jump' over error
3755 (256) and undefined (2)).
3756
5fbb0954
AD
37572002-04-22 Akim Demaille <akim@epita.fr>
3758
3759 Propagate more token_number_t.
3760
3761 * src/gram.h (token_number_as_item_number)
3762 (item_number_as_token_number): New.
3763 * src/output.c (GENERATE_OUTPUT_TABLE): New.
3764 Use it to create output_item_number_table and
3765 output_token_number_table.
3766 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
3767 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
3768 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
3769 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
3770
4f940944
AD
37712002-04-22 Akim Demaille <akim@epita.fr>
3772
3773 * src/output.h, src/output.c (get_lines_number): Remove.
3774
3ded9a63
AD
37752002-04-19 Akim Demaille <akim@epita.fr>
3776
3777 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
3778 as Lex/Flex'.
3779 (Debugging): More details about enabling the debugging features.
3780 (Table of Symbols): Describe $$, $n, @$, and @n.
3781 Suggested by Tim Josling.
3782
e0c471a9
AD
37832002-04-19 Akim Demaille <akim@epita.fr>
3784
3785 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
3786
fecc10cd
AD
37872002-04-10 Akim Demaille <akim@epita.fr>
3788
3789 * src/system.h: Rely on HAVE_LIMITS_H.
3790 Suggested by Paul Eggert.
3791
51dec47b
AD
37922002-04-09 Akim Demaille <akim@epita.fr>
3793
3794 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
3795 full stderr, and strip it according to the bison options, instead
3796 of composing the error message from different bits.
3797 This makes it easier to check for several error messages.
3798 Adjust all the invocations.
3799 Add an invocation exercising the error token.
3800 Add an invocation demonstrating a stupid error message.
3801 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
3802 Adjust the tests.
3803 Error message are for stderr, not stdout.
3804
007a50a4
AD
38052002-04-09 Akim Demaille <akim@epita.fr>
3806
3807 * src/gram.h, src/gram.c (error_token_number): Remove, use
3808 errtoken->number.
3809 * src/reader.c (reader): Don't specify the user token number (2)
3810 for $undefined, as it uselessly prevents using it.
3811 * src/gram.h (token_number_t): Move to...
3812 * src/symtab.h: here.
3813 (state_t.number): Is a token_number_t.
3814 * src/print.c, src/reader.c: Use undeftoken->number instead of
3815 hard coded 2.
3816 (Even though this 2 is not the same as above: the number of the
3817 undeftoken remains being 2, it is its user token number which
3818 might not be 2).
3819 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
3820 `user_token_number_max'.
3821 Output `undef_token_number'.
3822 * data/bison.simple, data/bison.c++: Use them.
3823 Be sure to map invalid yylex return values to
3824 `undef_token_number'. This saves us from gratuitous SEGV.
3825
3826 * tests/conflicts.at (Solved SR Conflicts)
3827 (Unresolved SR Conflicts): Adjust.
3828 * tests/regression.at (Web2c Actions): Adjust.
3829
06446ccf
AD
38302002-04-08 Akim Demaille <akim@epita.fr>
3831
3832 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
3833 Adding #line.
3834 Remove the duplicate `typedefs'.
3835 (RhsNumberType): Fix the declaration and various other typos.
3836 Use __ofile__.
3837 * data/bison.simple: Use __ofile__.
3838 * src/scan-skel.l: Handle __ofile__.
3839
62a3e4f0
AD
38402002-04-08 Akim Demaille <akim@epita.fr>
3841
3842 * src/gram.h (item_number_t): New, the type of item numbers in
3843 RITEM. Note that it must be able to code symbol numbers as
3844 positive number, and the negation of rule numbers as negative
3845 numbers.
3846 Adjust all dependencies (pretty many).
3847 * src/reduce.c (rule): Remove this `short *' pointer: use
3848 item_number_t.
3849 * src/system.h (MINSHORT, MAXSHORT): Remove.
3850 Include `limits.h'.
3851 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
3852 (shortcpy): Remove.
3853 (MAXTABLE): Move to...
3854 * src/output.c (MAXTABLE): here.
3855 (prepare_rules): Use output_int_table to output rhs.
3856 * data/bison.simple, data/bison.c++: Adjust.
3857 * tests/torture.at (Big triangle): Move the limit from 254 to
3858 500.
3859 * tests/regression.at (Web2c Actions): Ajust.
3860
3861 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
3862 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
3863 passes, but produces negative #line number, once fixed, GCC is
3864 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
3865 C), it passes.
3866 * src/state.h (state_h): Code input lines on ints, not shorts.
3867
bb88b0fc
AD
38682002-04-08 Akim Demaille <akim@epita.fr>
3869
3870 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
3871 and then the grammar.
3872
9a636f47
AD
38732002-04-08 Akim Demaille <akim@epita.fr>
3874
3875 * src/system.h: No longer using strndup.
3876
680e8701
AD
38772002-04-07 Akim Demaille <akim@epita.fr>
3878
3879 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
3880 * src/output.c (output_table_data): Return the longest number.
3881 (prepare_tokens): Output `token_number_max').
3882 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
3883 New.
3884 Use them to define yy_token_number_type/TokenNumberType.
3885 Use this type for yytranslate.
3886 * tests/torture.at (Big triangle): Push the limit from 124 to
3887 253.
3888 * tests/regression.at (Web2c Actions): Adjust.
3889
817e9f41
AD
38902002-04-07 Akim Demaille <akim@epita.fr>
3891
3892 * tests/torture.at (Big triangle): New.
3893 (GNU AWK Grammar, GNU Cim Grammar): Move to...
3894 * tests/existing.at: here.
3895
5123689b
AD
38962002-04-07 Akim Demaille <akim@epita.fr>
3897
3898 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
3899 nritems.
3900 Adjust dependencies.
3901
f3849179
AD
39022002-04-07 Akim Demaille <akim@epita.fr>
3903
3904 * src/reader.c: Normalize increments to prefix form.
3905
bd02036a
AD
39062002-04-07 Akim Demaille <akim@epita.fr>
3907
3908 * src/reader.c, symtab.c: Remove debugging code.
3909
db8837cb
AD
39102002-04-07 Akim Demaille <akim@epita.fr>
3911
3912 Rename all the `bucket's as `symbol_t'.
3913
3914 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
3915 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
3916 * src/symtab.c, src/symtab.h (bucket): Rename as...
3917 (symbol_t): this.
3918 (symbol_list_new, bucket_check_defined, bucket_make_alias)
3919 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
3920 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
3921 (buckets_new, buckets_free, buckets_do): Rename as...
3922 (symbol_list_new, symbol_check_defined, symbol_make_alias)
3923 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
3924 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
3925 (symbols_new, symbols_free, symbols_do): these.
3926
72a23c97
AD
39272002-04-07 Akim Demaille <akim@epita.fr>
3928
3929 Use lib/hash for the symbol table.
3930
3931 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
3932 EOF.
3933 * src/lex.c (lex): Set the `number' member of new terminals.
3934 * src/reader.c (bucket_check_defined, bucket_make_alias)
3935 (bucket_check_alias_consistence, bucket_translation): New.
3936 (reader, grammar_free, readgram, token_translations_init)
3937 (packsymbols): Adjust.
3938 (reader): Number the predefined tokens.
3939 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
3940 for predefined tokens.
3941 * src/symtab.h (bucket): Remove all the hash table related
3942 members.
3943 * src/symtab.c (symtab): Replace by...
3944 (bucket_table): this.
3945 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
3946 (buckets_new, buckets_do): New.
3947
280a38c3
AD
39482002-04-07 Akim Demaille <akim@epita.fr>
3949
3950 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
3951 (start_symbol, max_user_token_number, semantic_parser)
3952 (error_token_number): Initialize.
3953 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
3954 Initialize.
3955 (reader): Don't.
3956 (errtoken, eoftoken, undeftoken, axiom): Extern.
3957
03b31c0c
AD
39582002-04-07 Akim Demaille <akim@epita.fr>
3959
3960 * src/gram.h (rule_s): prec and precsym are now pointers
3961 to the bucket giving the priority/associativity.
3962 Member `associativity' removed: useless.
3963 * src/reduce.c, src/conflicts.c: Adjust.
3964
8b3df748
AD
39652002-04-07 Akim Demaille <akim@epita.fr>
3966
3967 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
3968 Properly escape the symbols' TAG when outputting them.
3969
e601aa1d
AD
39702002-04-07 Akim Demaille <akim@epita.fr>
3971
3972 * src/lalr.h (LA): Is a bitsetv, not bitset*.
3973
b0299a2e
AD
39742002-04-07 Akim Demaille <akim@epita.fr>
3975
3976 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
3977 (LArule): this, which is an array to rule_t*.
3978 * src/print.c, src/conflicts.c: Adjust.
3979
d7e1f00c
AD
39802002-04-07 Akim Demaille <akim@epita.fr>
3981
3982 * src/gram.h (rule_t): Rename `number' as `user_number'.
3983 `number' is a new member.
3984 Adjust dependencies.
3985 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
3986
cc9305dd
AD
39872002-04-07 Akim Demaille <akim@epita.fr>
3988
3989 As a result of the previous patch, it is no longer needed
3990 to reorder ritem itself.
3991
3992 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
3993
b0940840
AD
39942002-04-07 Akim Demaille <akim@epita.fr>
3995
3996 Be sure never to walk through RITEMS, but use only data related to
3997 the rules themselves. RITEMS should be banished.
3998
3999 * src/output.c (output_token_translations): Rename as...
4000 (prepare_tokens): this.
4001 In addition to `translate', prepare the muscles `tname' and
4002 `toknum', which were handled by...
4003 (output_rule_data): this.
4004 Remove, and move the remainder of its outputs into...
4005 (prepare_rules): this new routines, which also merges content from
4006 (output_gram): this.
4007 (prepare_rules): Be sure never to walk through RITEMS.
4008 (output_stos): Rename as...
4009 (prepare_stos): this.
4010 (output): Always invoke prepare_states, after all, just don't use it
4011 in the output if you don't need it.
4012
643a5994
AD
40132002-04-07 Akim Demaille <akim@epita.fr>
4014
4015 * src/LR0.c (new_state): Display `nstates' as the name of the
4016 newly created state.
4017 Adjust to initialize first_state and last_state if needed.
4018 Be sure to distinguish the initial from the final state.
4019 (new_states): Create the itemset of the initial state, and use
4020 new_state.
4021 * src/closure.c (closure): Now that the initial state has its
4022 items properly set, there is no need for a special case when
4023 creating `ruleset'.
4024
4025 As a result, now the rule 0, reducing to $axiom, is visible in the
4026 outputs. Adjust the test suite.
4027
4028 * tests/conflicts.at (Solved SR Conflicts)
4029 (Unresolved SR Conflicts): Adjust.
4030 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
4031 * tests/conflicts.at (S/R in initial): New.
4032
b4c4ccc2
AD
40332002-04-07 Akim Demaille <akim@epita.fr>
4034
4035 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
4036 the RHS of the rules.
4037 * src/output.c (output_gram): Likewise.
4038
bba97eb2
AD
40392002-04-07 Akim Demaille <akim@epita.fr>
4040
4041 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
4042 bucket.
4043 Adjust all dependencies.
4044 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
4045 `number' of the buckets too.
4046 * src/gram.h: Include `symtab.h'.
4047 (associativity): Move to...
4048 * src/symtab.h: here.
4049 No longer include `gram.h'.
4050
c3b407f4
AD
40512002-04-07 Akim Demaille <akim@epita.fr>
4052
4053 * src/gram.h, src/gram.c (rules_rhs_length): New.
4054 (ritem_longest_rhs): Use it.
4055 * src/gram.h (rule_t): `number' is a new member.
4056 * src/reader.c (packgram): Set it.
4057 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
4058 the end of `rules', and count them out of `nrules'.
4059 (reduce_output, dump_grammar): Adjust.
4060 * src/print.c (print_grammar): It is no longer needed to check for
4061 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
4062 * tests/reduce.at (Reduced Automaton): New test.
4063
11652ab3
AD
40642002-04-07 Akim Demaille <akim@epita.fr>
4065
4066 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
4067 lacking `+ 1' to nrules, Bison reported as useless a token if it
4068 was used solely to set the precedence of the last rule...
4069
26b23c1a
AD
40702002-04-07 Akim Demaille <akim@epita.fr>
4071
4072 * data/bison.c++, data/bison.simple: Don't output the current file
4073 name in #line, to avoid useless diffs between two identical
4074 outputs under different names.
4075
18bcecb0
AD
40762002-04-07 Akim Demaille <akim@epita.fr>
4077
4078 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
4079 Normalize loops to using `< nrules + 1', not `<= nrules'.
4080
fa770c86
AD
40812002-04-07 Akim Demaille <akim@epita.fr>
4082
4083 * TODO: Update.
4084
d9b739c3
AD
40852002-04-07 Akim Demaille <akim@epita.fr>
4086
4087 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
4088 bucket.value as bucket.number.
4089
99013900
AD
40902002-04-07 Akim Demaille <akim@epita.fr>
4091
4092 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
4093 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
4094 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
4095 RHS, instead of being an index in RITEMS.
4096
e966383b
PE
40972002-04-04 Paul Eggert <eggert@twinsun.com>
4098
4099 * doc/bison.texinfo: Update copyright date.
4100 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
4101 (Symbols): Warn about running Bison in one character set,
4102 but compiling and/or running in an incompatible one.
4103 Warn about character code 256, too.
4104
41052002-04-03 Paul Eggert <eggert@twinsun.com>
4106
4107 * src/bison.data (YYSTACK_ALLOC): Depend on whether
4108 YYERROR_VERBOSE is nonzero, not whether it is defined.
4109
4110 Merge changes from bison-1_29-branch.
c307773e 4111
8d6c48b9
PE
41122002-03-20 Paul Eggert <eggert@twinsun.com>
4113
4114 Merge fixes from Debian bison_1.34-1.diff.
4115
4116 * configure.in (AC_PREREQ): 2.53.
4117
e53c6322
AD
41182002-03-20 Akim Demaille <akim@epita.fr>
4119
4120 * src/conflicts.c (log_resolution): Argument `resolution' is const.
4121
9ffbeca7
PE
41222002-03-19 Paul Eggert <eggert@twinsun.com>
4123
21db0b2a
PE
4124 * src/bison.simple (YYCOPY): New macro.
4125 (YYSTACK_RELOCATE): Use it.
4126 Remove Type arg; no longer needed. All callers changed.
4127 (yymemcpy): Remove; no longer needed.
4128
9ffbeca7
PE
4129 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
4130 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
4131
642cb8f8
AD
41322002-03-19 Akim Demaille <akim@epita.fr>
4133
4134 Test and fix the #line outputs.
4135
4136 * tests/atlocal.at (GCC): New.
4137 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
4138 (Prologue synch line, ,%union synch line, Postprologue synch line)
4139 (Action synch line, Epilogue synch line): New tests.
4140 * src/reader.c (parse_union_decl): Define the muscle stype_line.
4141 * data/bison.simple, data/bison.c++: Use it.
4142
3c31a486
AD
41432002-03-19 Akim Demaille <akim@epita.fr>
4144
4145 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
4146 (Solved SR Conflicts, %expect not enough, %expect right)
4147 (%expect too much): Move to...
4148 * tests/conflicts.at: this new file.
4149
0d8bed56
AD
41502002-03-19 Akim Demaille <akim@epita.fr>
4151
4152 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
4153 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
4154 that we can move to enums for instance.
4155 * src/output.c (token_definitions_output): Output a list of
4156 `token-name, token-number' instead of the #define.
4157 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
4158
9208d17f
AD
41592002-03-14 Akim Demaille <akim@epita.fr>
4160
4161 Use Gettext 0.11.1.
4162
af27eacb
RA
41632002-03-09 Robert Anisko <robert@lrde.epita.fr>
4164
4165 * data/bison.c++: Make the user able to add members to the generated
4166 parser by subclassing.
4167
9101a310
RA
41682002-03-05 Robert Anisko <robert@lrde.epita.fr>
4169
4170 * src/reader.c (read_additionnal_code): `c' should be an integer, not
4171 a character.
4172 Reported by Nicolas Tisserand and Nicolas Burrus.
4173
fff9bf0b
RA
41742002-03-04 Robert Anisko <robert@lrde.epita.fr>
4175
4176 * src/reader.c: Warn about lacking semi-colons, do not complain.
4177
64dba31e
RA
41782002-03-04 Robert Anisko <robert@lrde.epita.fr>
4179
4180 * data/bison.c++: Remove a debug line.
4181
374f5a14
RA
41822002-03-04 Robert Anisko <robert@lrde.epita.fr>
4183
4184 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
4185 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
4186 provide a default implementation.
4187
bfcf1f3a
AD
41882002-03-04 Akim Demaille <akim@epita.fr>
4189
4190 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
4191 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
4192 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
4193 * tests/semantic.at (Parsing Guards): Similarly.
4194 * src/reader.at (readgram): Complain if the last rule is not ended
4195 with a semi-colon.
4196
65ccf9fc
AD
41972002-03-04 Akim Demaille <akim@epita.fr>
4198
4199 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
4200 * src/closure.c: here.
4201 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
4202 RTC.
4203 * src/warshall.h, src/warshall.c: Remove.
4204 * tests/sets.at (Broken Closure): Adjust.
4205
d0039cbc
AD
42062002-03-04 Akim Demaille <akim@epita.fr>
4207
4208 * src/output.c (output_skeleton): tempdir is const.
4209 bytes_read is unused.
4210
345cea78
AD
42112002-03-04 Akim Demaille <akim@epita.fr>
4212
4213 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
4214 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
4215 Update.
4216 From Michael Hayes.
4217
564801f7
AD
42182002-03-04 Akim Demaille <akim@epita.fr>
4219
4220 * src/closure.c (closure): `r' is unused.
4221
e5352bc7
AD
42222002-03-04 Akim Demaille <akim@epita.fr>
4223
4224 * tests/sets.at (Broken Closure): Add the ending `;'.
4225 * src/reader.at (readgram): Complain if a rule is not ended with a
4226 semi-colon.
4227
914feea9
AD
42282002-03-04 Akim Demaille <akim@epita.fr>
4229
4230 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
4231 (count_sr_conflicts): Use bitset_count.
4232 * src/reduce.c (inaccessable_symbols): Ditto.
4233 (bits_size): Remove.
4234 * src/warshall.h, src/warshall.c: Convert to bitsetv.
4235
f0250de6
AD
42362002-03-04 Akim Demaille <akim@epita.fr>
4237
4238 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
4239 * src/reduce.c: Remove the `bitset_zero's following the
4240 `bitset_create's, as now it is performed by the latter.
4241
ef017502
AD
42422002-03-04 Akim Demaille <akim@epita.fr>
4243
4244 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
4245 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
4246 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
4247 latest sources from Michael.
4248
76514394
AD
42492002-03-04 Akim Demaille <akim@epita.fr>
4250
4251 * src/output.c (output): Don't free the grammar.
4252 * src/reader.c (grammar_free): New.
4253 * src/main.c (main): Call it and don't free symtab here.
4254
55024580
AD
42552002-03-04 Akim Demaille <akim@epita.fr>
4256
4257 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
4258 before returning.
4259 Reported by Benoit Perrot.
4260
f9abaa2c
AD
42612002-03-04 Akim Demaille <akim@epita.fr>
4262
4263 Use bitset operations when possible, not loops over bits.
4264
4265 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
4266 bitset_or.
4267 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
4268 * src/reduce.c (useless_nonterminals): Formatting changes.
4269 * src/warshall.c (TC): Use bitset_or.
4270
0e721e75
AD
42712002-03-04 Akim Demaille <akim@epita.fr>
4272
4273 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
4274 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
4275 Ditto.
4276
0fb1ffb1
AD
42772002-03-04 Akim Demaille <akim@epita.fr>
4278
4279 * src/lalr.c (F): Now a bitset*.
4280 Adjust all dependencies.
4281
b86796bf
AD
42822002-03-04 Akim Demaille <akim@epita.fr>
4283
4284 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
4285 Adjust all dependencies.
4286
602bbf31
AD
42872002-03-04 Akim Demaille <akim@epita.fr>
4288
4289 * src/L0.c, src/LR0.h (nstates): Be size_t.
4290 Adjust comparisons (signed vs unsigned).
4291 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
4292 bitset*.
4293 Adjust all dependencies.
4294
d8a0245c
AD
42952002-03-04 Akim Demaille <akim@epita.fr>
4296
4297 * src/closure.c (firsts): Now, also a bitset.
4298 Adjust all dependencies.
4299 (varsetsize): Remove, now unused.
4300 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
4301
34ba9743
AD
43022002-03-04 Akim Demaille <akim@epita.fr>
4303
4304 * src/print.c: Convert to use bitset.h, not hand coded iterations
4305 over ints.
4306
ed86e78c
AD
43072002-03-04 Akim Demaille <akim@epita.fr>
4308
4309 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
4310
dfdb1797
AD
43112002-03-04 Akim Demaille <akim@epita.fr>
4312
4313 * src/closure.c (ruleset): Be a bitset.
4314 (rulesetsize): Remove.
4315
7086e707
AD
43162002-03-04 Akim Demaille <akim@epita.fr>
4317
4318 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
4319 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
4320 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
4321 * src/closure.c (fderives): Be an array of bitsets.
4322
98254360
RA
43232002-02-28 Robert Anisko <robert@lrde.epita.fr>
4324
4325 * data/bison.c++: Merge the two generated headers. Insert a copyright
4326 notice in each output file.
4327
a75c057f
AD
43282002-02-28 Akim Demaille <akim@epita.fr>
4329
4330 * data/bison.c++: Copy the prologue of bison.simple to fetch
4331 useful M4 definitions, such as b4_header_guard.
4332
06b00abc
AD
43332002-02-25 Akim Demaille <akim@epita.fr>
4334
4335 * src/getargs.c (version): Give the name of the authors, and use a
a75c057f
AD
4336 translator friendly scheme for the bgr
4337 copyright notice.
06b00abc 4338
70e7d534
AD
43392002-02-25 Akim Demaille <akim@epita.fr>
4340
4341 * src/output.c (header_output): Remove, now handled completely via
4342 M4.
4343
abe017f6
AD
43442002-02-25 Akim Demaille <akim@epita.fr>
4345
4346 * m4/m4.m4: New, from CVS Autoconf.
4347 * configure.in: Invoke it.
4348 * src/output.c (output_skeleton): Use its result instead of the
4349 hard coded name.
4350
381fb12e
AD
43512002-02-25 Akim Demaille <akim@epita.fr>
4352
4353 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
4354 Fileutils 4.1.5.
4355 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
4356 * src/output.c (output_skeleton): Use mkstemp to create a real
4357 temporary file.
4358 Move the filling of `skeleton' and its muscle to...
4359 (prepare): here.
4360 (output): Move the definition of the prologue muscle to...
4361 (prepare): here.
4362 * src/system.h (DEFAULT_TMPDIR): New.
4363
6f38107f
PE
43642002-02-14 Paul Eggert <eggert@twinsun.com>
4365
4366 Remove the support for C++ namespace cleanliness; it was
4367 causing more problems than it was curing, since it didn't work
4368 properly on some nonstandard C++ compilers. This can wait
4369 for a proper C++ parser.
4370
4371 * NEWS: Document this.
4372 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
4373 of C++, as it's treated like C now.
4374 * src/bison.simple (YYSTD): Remove.
4375 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
4376 Treat C++ just like Standard C instead of trying to support
4377 namespace cleanliness.
4378
80cce3da
AD
43792002-02-14 Akim Demaille <akim@epita.fr>
4380
4381 * tests/regression.at (else): Adjust to Andreas' change.
4382
842e8679
AD
43832002-02-14 Akim Demaille <akim@epita.fr>
4384
4385 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
4386
4bda3f10
AD
43872002-02-13 Andreas Schwab <schwab@suse.de>
4388
4389 * src/output.c (output_rule_data): Don't output NULL, it might
4390 not be defined yet.
4391
4162fa07 43922002-02-11 Robert Anisko <robert@lrde.epita.fr>
b418ecd8 4393
4162fa07
RA
4394 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
4395 (Copyright notice): Update.
b418ecd8 4396
bd16a5dc
AD
43972002-02-11 Akim Demaille <akim@epita.fr>
4398
4399 * tests/regression.at (%nonassoc and eof): Don't include
4400 nonportable headers.
4401
8d69a1a3
RA
44022002-02-08 Robert Anisko <robert@lrde.epita.fr>
4403
4404 * data/bison.c++: Correct error recovery. Make the user able to
4405 initialize the starting location.
4406
9b2d0677
AD
44072002-02-07 Akim Demaille <akim@epita.fr>
4408
4409 * tests/input.at: New.
4410
69e2658b
RA
44112002-02-07 Robert Anisko <robert@lrde.epita.fr>
4412
4413 * data/bison.c++: Replace some direct m4 expansions by constants. Be
9b2d0677 4414 more consistent when naming methods and variables. Put preprocessor
69e2658b
RA
4415 directives around tables only needed for debugging.
4416
4aacc3a7
RA
44172002-02-07 Robert Anisko <robert@lrde.epita.fr>
4418
4419 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
4420 C++ parsers.
4421 (yy::b4_name::parse): Use print_.
4422
762a801e
RA
44232002-02-07 Robert Anisko <robert@lrde.epita.fr>
4424
4425 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
4426
4bb2bc3f
RA
44272002-02-07 Robert Anisko <robert@lrde.epita.fr>
4428
4429 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
4430 C++ parsers.
4431 (yy::b4_name::parse): Build verbose error messages, and use error_.
4432
6b45a3ca
RA
44332002-02-06 Robert Anisko <robert@lrde.epita.fr>
4434
4435 * data/bison.c++: Fix m4 quoting in comments.
4436
50997c6e
RA
44372002-02-06 Robert Anisko <robert@lrde.epita.fr>
4438
4439 * data/bison.c++: Adjust the parser code. Fix some muscles that were
4440 not expanded by m4.
4441
3f3eed27
AD
44422002-02-05 Akim Demaille <akim@epita.fr>
4443
4444 * data/bison.c++: Adjust to the M4 back end.
4445 More is certainly needed.
4446
be2a1a68
AD
44472002-02-05 Akim Demaille <akim@epita.fr>
4448
4449 Give a try to M4 as a back end.
4450
4451 * lib/readpipe.c: New, from wdiff.
4452 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
4453 BISON_HAIRY.
4454 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
4455 specific values. Now it is m4 that performs the lookup.
4456 * src/parse-skel.y: Remove.
4457 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
4458 * src/output.c (actions_output, guards_output)
4459 (token_definitions_output): No longer keeps track of the output
4460 line number, hence remove the second argument.
4461 (guards_output): Check against the guard member of a rule, not the
4462 action member.
4463 Adjust callers.
4464 (output_skeleton): Don't look for the skeleton location, let m4 do
4465 that.
4466 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
4467 file will be used.
4468 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
4469 (prepare): Given that for the time being changesyntax is not
4470 usable in M4, rename the muscles using `-' to `_'.
4471 Define `defines_flag', `output_parser_name' and `output_header_name'.
4472 * src/output.h (actions_output, guards_output)
4473 (token_definitions_output): Adjust prototypes.
4474 * src/scan-skel.l: Instead of scanning the skeletons, it now
4475 processes the output of m4: `__oline__' and `#output'.
4476 * data/bison.simple: Adjust to be used by M4(sugar).
4477 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
4478 to date.
4479 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
4480 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
4481 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
4482 shamelessly stolen from CVS Autoconf.
4483
beda758b
AD
44842002-02-05 Akim Demaille <akim@epita.fr>
4485
4486 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
4487 * configure.in: Check for the declarations of free and malloc.
4488 * src/muscle_tab.c: Adjust.
4489
5ece6d43
AD
44902002-02-05 Akim Demaille <akim@epita.fr>
4491
4492 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
4493 which have no values.
4494
5bb18f9a
AD
44952002-02-05 Akim Demaille <akim@epita.fr>
4496
4497 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
4498 * data/: here.
4499
894dd62e
PE
45002002-01-29 Paul Eggert <eggert@twinsun.com>
4501
4502 * src/bison.simple (YYSIZE_T): Do not define merely because
4503 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
4504 On some platforms, <alloca.h> does not declare YYSTD (size_t).
4505
82841af7
AD
45062002-01-27 Akim Demaille <akim@epita.fr>
4507
4508 Fix `%nonassoc and eof'.
4509
4510 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
4511 which were not properly copied! Replace
4512 memcpy (res->errs, src->errs, src->nerrs);
4513 with
4514 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
4515 !!!
4516 * tests/regression.at (%nonassoc and eof): Adjust to newest
4517 Autotest: `.' is not in the PATH.
4518
318b76e9
AD
45192002-01-27 Akim Demaille <akim@epita.fr>
4520
4521 * tests/sets.at (AT_EXTRACT_SETS): New.
4522 (Nullable): Use it.
4523 (Firsts): New.
4524
30d2f3d5
AD
45252002-01-26 Akim Demaille <akim@epita.fr>
4526
4527 * tests/actions.at, tests/calc.at, tests/headers.at,
4528 * tests/torture.at: Adjust to the newest Autotest which no longer
4529 forces `.' in the PATH.
4530
30f8c395
AD
45312002-01-25 Akim Demaille <akim@epita.fr>
4532
4533 * tests/regression.at (%nonassoc and eof): New.
4534 Suggested by Robert Anisko.
4535
29ae55f1
AD
45362002-01-24 Akim Demaille <akim@epita.fr>
4537
4538 Bison dumps core when trying to complain about broken input files.
4539 Reported by Cris van Pelt.
4540
4541 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
4542 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
4543 into...
4544 (Invalid inputs): Strengthen: exercise parse_percent_token.
4545
2b548aa6
RA
45462002-01-24 Robert Anisko <robert.anisko@epita.fr>
4547
4548 * src/Makefile.am: Add bison.c++.
4549 * src/bison.c++: New skeleton.
4550
bb0146c2
AD
45512002-01-21 Paolo Bonzini <bonzini@gnu.org>
4552
4553 * po/it.po: New.
4554
bec30531
AD
45552002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
4556
4557 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
4558
fc6edc45
MA
45592002-01-20 Marc Autret <marc@gnu.org>
4560
4561 * src/files.c (compute_output_file_names): Fix
4562
5e5d5415
MA
45632002-01-20 Marc Autret <marc@gnu.org>
4564
4565 * tests/output.at: New test.
4566 * src/files.c (compute_base_names): Don't map extensions when
4567 the YACC flag is set, use defaults.
4568 Reported by Evgeny Stambulchik.
4569
44ea3fbd
MA
45702002-01-20 Marc Autret <marc@gnu.org>
4571
bb0146c2 4572 * src/system.h: Need to define __attribute__ away for non-GCC
44ea3fbd
MA
4573 compilers as well (i.e. the vendor C compiler).
4574 Suggested by Albert Chin-A-Young.
4575
338963d1
TVH
45762002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
4577
4578 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
4579 canonical definition.
4580 * src/system.h: Use the canonical definition for PARAMS (avoids
4581 a conflict with the macro from lib/hash.h).
4582
c57b2479
AD
45832002-01-11 Akim Demaille <akim@epita.fr>
4584
4585 * configure.in: Use AC_FUNC_STRNLEN.
d9e9746c 4586 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
c57b2479 4587
b85810ae
AD
45882002-01-09 Akim Demaille <akim@epita.fr>
4589
4590 * src/files.c, src/files.h (output_infix): New.
4591 (tab_extension): Remove.
4592 (compute_base_names): Compute the former, drop the latter.
4593 * src/output.c (prepare): Insert the muscles `output-infix', and
4594 `output-suffix'.
4595 * src/parse-skel.y (string, string.1): New.
4596 (section.header): Use it.
4597 (section.yacc): Remove.
4598 (prefix): Remove too.
4599 * src/scan-skel.l: Adjust.
4600 * src/bison.simple, src/bison.hairy: Adjust.
4601
cae60122
AD
46022002-01-09 Akim Demaille <akim@epita.fr>
4603
4604 * configure.in (WERROR_CFLAGS): Compute it.
4605 * src/Makefile.am (CFLAGS): Pass it.
4606 * tests/atlocal.in (CFLAGS): Idem.
4607 * src/files.c: Fix a few warnings.
4608 (get_extension_index): Remove, unused.
4609
ae404801
AD
46102002-01-08 Akim Demaille <akim@epita.fr>
4611
4612 * src/getargs.c (AS_FILE_NAME): New.
4613 (getargs): Use it to convert DOSish file names.
4614 * src/files.c (base_name): Rename as full_base_name to avoid
4615 clashes with `base_name ()'.
4616 (filename_split): New.
4617 (compute_base_names): N-th rewrite, using filename_split.
4618
22312b71
AD
46192002-01-08 Akim Demaille <akim@epita.fr>
4620
4621 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
4622 New, stolen from the Fileutils 4.1.
4623 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
4624 * configure.in: Check for the presence of memrchr, and of its
4625 prototype.
4626
a67cef01
TVH
46272002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
4628
4629 * lib/hash.h (__P): Added definition for this macro.
4630 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
4631 BUILT_SOURCES, to ensure they are generated first.
4632 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
4633 %error-verbose to allow bootstrapping with bison 1.30x.
4634
2b25d624
AD
46352002-01-06 Akim Demaille <akim@epita.fr>
4636
4637 * src/reader.c (parse_braces): Don't fetch the next char, the
4638 convention is to fetch on entry.
4639 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
4640 'switch' without a following semicolon.
4641 * tests/regression.at (braces parsing): New.
4642
3460813b
AD
46432002-01-06 Akim Demaille <akim@epita.fr>
4644
4645 Bison is dead wrong in its RR conflict reports.
4646
4647 * tests/torture.at (GNU Cim Grammar): New.
4648 * src/conflicts.c (count_rr_conflicts): Fix.
4649
73784c64
AD
46502002-01-06 Akim Demaille <akim@epita.fr>
4651
4652 Creating package.m4 from configure.ac causes too many problems.
4653
4654 * tests/Makefile.am (package.m4): Create it by hand,
4655 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
4656
25d81090
AD
46572002-01-06 Akim Demaille <akim@epita.fr>
4658
4659 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
4660 skeleton.h.
4661
a9b8959e
PE
46622002-01-04 Paul Eggert <eggert@twinsun.com>
4663
4664 * doc/bison.texinfo (Debugging):
4665 Remove YYSTDERR; it's no longer defined or used.
4666 Also, s/cstdio.h/cstdio/.
4667
25d81090
AD
46682002-01-03 Akim Demaille <akim@epita.fr>
4669
4670 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
4671
1109455c
AD
46722002-01-03 Akim Demaille <akim@epita.fr>
4673
4674 * src/parse-skel.y (process_skeleton): Don't bind the parser's
4675 tracing code to --trace, wait for a better --trace option, with
4676 args.
4677
7ea5e977
AD
46782002-01-03 Akim Demaille <akim@epita.fr>
4679
4680 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
4681 The ISO C++ standard is extremely clear about it: stderr is
4682 considered a macro, not a regular symbol (see table 94 `Header
4683 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
4684 Therefore std:: does not apply to it. It still does with fprintf.
4685 Also, s/cstdio.h/cstdio/.
4686
fab5b110
AD
46872002-01-03 Akim Demaille <akim@epita.fr>
4688
4689 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
4690 for non system headers.
4691
aed7fd9b
AD
46922002-01-02 Akim Demaille <akim@epita.fr>
4693
4694 Equip the skeleton chain with location tracking, runtime trace,
4695 pure parser and scanner.
4696
4697 * src/parse-skel.y: Request a pure parser, locations, and prefix
4698 renaming.
4699 (%union): Having several members with the same type does not help
4700 type mismatches, simplify.
4701 (YYPRINT, yyprint): New.
4702 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
4703 (skel_error): this.
4704 Handle locations.
4705 * src/scan-skel.l: Adjust to these changes.
4706 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
4707 (LOCATION_PRINT, skel_control_t): New.
4708
24fad99e
AD
47092001-12-30 Akim Demaille <akim@epita.fr>
4710
4711 * src/parse-skel.y: Get rid of the shift/reduce conflict:
4712 replace `gb' with BLANKS.
4713 * src/scan-skel.l: Adjust.
4714
a4b36db4
AD
47152001-12-30 Akim Demaille <akim@epita.fr>
4716
4717 * src/system.h: We don't need nor want bcopy.
4718 Throw away MS-DOS crap: we don't need getpid.
4719 * configure.in: We don't need strndup. It was even causing
4720 problems: because Flex includes the headers *before* us,
4721 _GNU_SOURCE is not defined by config.h, and therefore strndup was
4722 not visible.
4723 * lib/xstrndup.c: New.
4724 * src/scan-skel.l: Use it.
4725 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
4726 * src/parse-skel.y: Use %directives instead of #defines.
4727
1239777d
AD
47282001-12-30 Akim Demaille <akim@epita.fr>
4729
4730 * src/skeleton.h: New.
4731 * src/output.c (output_parser, output_master_parser): Remove, dead
4732 code.
4733 * src/output.h (get_lines_number, actions_output, guards_output)
4734 (token_definitions_output): Prototype them.
4735 * src/parse-skel.y: Add the license notice.
4736 Include output.h and skeleton.h.
4737 (process_skeleton): Returns void, and takes a single parameter.
4738 * src/scan-skel.l: Add the license notice.
4739 Include skeleton.h.
4740 Don't use %option yylineno: it seems that then Flex imagines
4741 REJECT has been used, and therefore it won't reallocate its
4742 buffers (which makes no other sense to me than a bug). It results
4743 in warnings for `unused: yy_flex_realloc'.
4744
9b3add5b
RA
47452001-12-30 Robert Anisko <robert.anisko@epita.fr>
4746
4747 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
4748 (MUSCLE_INSERT_PREFIX): ...to there.
4749 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
4750 (MUSCLE_INSERT_PREFIX): Move from here...
4751
4752 * src/bison.hairy: Add a section directive. Put braces around muscle
4753 names. This parser skeleton is still broken, but Bison should not
4754 choke on a bad muscle 'syntax'.
4755 * src/bison.simple: Add a section directive. Put braces around muscle
4756 names.
4757
4758 * src/files.h (strsuffix, stringappend): Add declarations.
4759 (tab_extension): Add declaration.
4760 (short_base_name): Add declaration.
4761
4762 * src/files.c (strsuffix, stringappend): No longer static. These
4763 functions are used in the skeleton parser.
4764 (tab_extension): New.
4765 (compute_base_names): Use the computations done in this function
fab5b110 4766 to guess if the generated parsers should have '.tab' in their
9b3add5b
RA
4767 names.
4768 (short_base_name): No longer static.
4769
4770 * src/output.c (output_skeleton): New.
4771 (output): Disable call to output_master_parser, and give a try to
4772 a new skeleton handling system.
4773 (guards_output, actions_output): No longer static.
4774 (token_definitions_output, get_lines_number): No longer static.
4775
4776 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
4777
fab5b110 4778 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
9b3add5b
RA
4779 parse-skel.y.
4780
4781 * src/parse-skel.y: New file.
4782 * src/scan-skel.l: New file.
4783
b5b61c61
AD
47842001-12-29 Akim Demaille <akim@epita.fr>
4785
4786 %name-prefix is broken.
4787
4788 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
4789 Adjust all dependencies.
4790 * tests/headers.at (export YYLTYPE): Strengthen this test: use
4791 %name-prefix.
4792
4793 Renaming yylval but not yylloc is not consistent. Now we do.
4794
4795 * src/bison.simple: Prefix yylloc if used.
4796 * doc/bison.texinfo (Decl Summary): Document that.
4797
8c9a50be
AD
47982001-12-29 Akim Demaille <akim@epita.fr>
4799
4800 * doc/bison.texinfo: Promote `%long-directive' over
4801 `%long_directive'.
4802 Remove all references to fixed-output-files, yacc is enough.
4803
d99361e6
AD
48042001-12-29 Akim Demaille <akim@epita.fr>
4805
4806 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
4807 user prologue. These are defaults.
4808 * tests/actions.at (Mid-rule actions): Make sure the user can
4809 define YYDEBUG and YYERROR_VERBOSE.
4810
b9cecb91
AD
48112001-12-29 Akim Demaille <akim@epita.fr>
4812
4813 * src/output.c (header_output): Don't forget to export YYLTYPE and
4814 yylloc.
4815 * tests/headers.at (export YYLTYPE): New, make sure it does.
4816 * tests/regression.at (%union and --defines, Invalid CPP headers):
4817 Move to...
4818 * tests/headers.at: here.
4819
aea13e97
AD
48202001-12-29 Akim Demaille <akim@epita.fr>
4821
4822 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
4823
931394cb
AD
48242001-12-29 Akim Demaille <akim@epita.fr>
4825
4826 * tests/actions.at (Mid-rule actions): Output on a single line
4827 instead of several.
4828
704a47c4
AD
48292001-12-29 Akim Demaille <akim@epita.fr>
4830
4831 * doc/bison.texinfo: Formatting changes.
4832
091e20bb
AD
48332001-12-29 Akim Demaille <akim@epita.fr>
4834
4835 Don't store the token defs in a muscle, just be ready to output it
4836 on command. Now possible via `symbols'. Fixes a memory leak.
4837
4838 * src/output.c (token_definitions_output): New.
4839 (output_parser, header_output): Use it.
4840 * src/reader.c (symbols_save): Remove.
4841
cce71710
AD
48422001-12-29 Akim Demaille <akim@epita.fr>
4843
4844 * src/bison.simple: Do not provide a default for YYSTYPE and
4845 YYLTYPE before the user's prologue. Otherwise it's hardly... a
4846 default.
4847
82c035a8
AD
48482001-12-29 Akim Demaille <akim@epita.fr>
4849
4850 Mid-rule actions are simply... ignored!
4851
4852 * src/reader.c (readgram): Be sure to attach mid-rule actions to
4853 the empty-rule associated to the dummy symbol, not to the host
4854 rule.
4855 * tests/actions.at (Mid-rule actions): New.
4856
8419d367
AD
48572001-12-29 Akim Demaille <akim@epita.fr>
4858
4859 Memory leak.
4860
4861 * src/reader.c (reader): Free grammar.
4862
375d5806
AD
48632001-12-29 Akim Demaille <akim@epita.fr>
4864
4865 Memory leak.
4866
4867 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
4868 since it allocates it for each state, although only one is needed.
4869 (allocate_storage): Do it here.
4870
f51cb8ff
AD
48712001-12-29 Akim Demaille <akim@epita.fr>
4872
4873 * src/options.h, src/options.c (create_long_option_table): Rename
4874 as...
4875 (long_option_table_new): this, with a clearer prototype.
4876 (percent_table): Remove, unused,
4877 * src/getargs.c (getargs): Adjust.
4878
29e88316
AD
48792001-12-29 Akim Demaille <akim@epita.fr>
4880
4881 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
4882 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
4883 as states.
4884
b9f71f19
AD
48852001-12-29 Akim Demaille <akim@epita.fr>
4886
4887 * src/lalr.c (build_relations): Rename `states' as `states1'.
4888 Sorry, I don't understand exactly what it is, no better name...
4889
1a2b5d37
AD
48902001-12-29 Akim Demaille <akim@epita.fr>
4891
4892 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
4893 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
4894 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
4895 as rules.
4896
1cca533e
AD
48972001-12-29 Akim Demaille <akim@epita.fr>
4898
4899 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
4900 ago.
4901
c03ae966
AD
49022001-12-29 Akim Demaille <akim@epita.fr>
4903
4904 * src/reader.c, src/reader.h (user_toknums): Remove.
4905 Adjust all users to use symbols[i]->user_token_number.
4906
5a670b1e
AD
49072001-12-29 Akim Demaille <akim@epita.fr>
4908
4909 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
4910 Adjust all users to use symbols[i]->prec or ->assoc.
4911
ad949da9
AD
49122001-12-29 Akim Demaille <akim@epita.fr>
4913
4914 * src/reader.c, src/reader.h (tags): Remove.
4915 Adjust all users to use symbols[i]->tag.
4916
0e78e603
AD
49172001-12-29 Akim Demaille <akim@epita.fr>
4918
4919 * src/gram.h, src/gram.c (symbols): New, similar to state_table
4920 and rule_table.
4921 * src/reader.c (packsymbols): Fill this table.
4922 Drop sprec.
4923 * src/conflicts.c (resolve_sr_conflict): Adjust.
4924 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
4925 single table.
4926 Use symbols[i]->tag instead of tags[i].
4927
213e640e
AD
49282001-12-29 Akim Demaille <akim@epita.fr>
4929
4930 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
4931 In addition, put a comment in there, to replace...
4932 * tests/regression.at (%union and C comments): Remove.
4933
e7b8bef1
AD
49342001-12-29 Akim Demaille <akim@epita.fr>
4935
4936 * tests/regression.at (Web2c Actions): Blindly move the actual
4937 output as expected output. The contents *seem* right to me, but I
4938 can't pretend reading perfectly parser tables... Nonetheless, all
4939 the other tests pass correctly, the table look OK, even though the
4940 presence of `$axiom' is to be noted: AFAICS it is useless (but
4941 harmless).
4942
b68e7744
AD
49432001-12-29 Akim Demaille <akim@epita.fr>
4944
4945 * src/reader.c (readgram): Don't add the rule 0 if there were no
4946 rules read. In other words, add it _after_ having performed
4947 grammar sanity checks.
4948 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
4949
78d5bae9
AD
49502001-12-29 Akim Demaille <akim@epita.fr>
4951
4952 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
4953 visible, and some states have now a different number.
4954
ff442794
AD
49552001-12-29 Akim Demaille <akim@epita.fr>
4956
4957 * src/reader.c (readgram): Bind the initial rule's lineno to that
4958 of the first rule.
4959 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
4960 (Solved SR Conflicts): Adjust rule 0's line number.
4961
610ab194
AD
49622001-12-29 Akim Demaille <akim@epita.fr>
4963
4964 Fix the `GAWK Grammar' failure.
4965
4966 * src/LR0.c (final_state): Initialize to -1 so that we do compute
4967 the reductions of the first state which was mistakenly confused
4968 with the final state because precisely final_state was initialized
4969 to 0.
4970 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
4971 now noticed by Bison.
4972 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
4973 have a reduction on $default.
4974
29d29c8f
AD
49752001-12-29 Akim Demaille <akim@epita.fr>
4976
4977 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
4978 rule line numbers.
4979 * src/closure.c (print_closure): Likewise.
4980 * src/derives.c (print_derives): Likewise.
4981 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
4982 now.
4983
7c6b64d0
AD
49842001-12-29 Akim Demaille <akim@epita.fr>
4985
4986 * src/lalr.c (lookaheads_print): New.
4987 (lalr): Call it when --trace-flag.
4988 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
4989 are dumped.
4990
3d4daee3
AD
49912001-12-29 Akim Demaille <akim@epita.fr>
4992
4993 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
4994 when walking through ritem, even via rule->rhs.
4995 * src/reduce.c (dump_grammar, useful_production, reduce_output)
4996 (useful_production, useless_nonterminals): Likewise.
4997 (reduce_grammar_tables): Likewise, plus update nritems.
4998 * src/nullable.c (set_nullable): Likewise.
4999 * src/lalr.c (build_relations): Likewise.
5000 * tests/sets.at (Nullable): Adjust.
5001 Fortunately, now, the $axiom is no longer nullable.
5002
9e7f6bbd
AD
50032001-12-29 Akim Demaille <akim@epita.fr>
5004
5005 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
5006 the 0-sentinel.
5007 * src/gram.c (ritem_longest_rhs): Likewise.
5008 * src/reduce.c (nonterminals_reduce): Likewise.
5009 * src/print_graph.c (print_graph): Likewise.
5010 * src/output.c (output_rule_data): Likewise.
5011 * src/nullable.c (set_nullable): Likewise.
5012
255ef638
AD
50132001-12-29 Akim Demaille <akim@epita.fr>
5014
5015 * src/output.c: Comment changes.
5016
0d8a7363
AD
50172001-12-27 Paul Eggert <eggert@twinsun.com>
5018
5019 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
5020 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
5021 Sparc, as they were causing more porting problems than the
5022 (minor) performance improvement was worth.
5023
5024 Also, catch up with 1.31's YYSTD.
5025
3db472b9
AD
50262001-12-27 Akim Demaille <akim@epita.fr>
5027
5028 * src/output.c (output_gram): Rely on nritems, not the
5029 0-sentinel. See below.
5030 Use -1 as separator, not 0.
5031 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
5032 Rely on -1 as separator in yyrhs, instead of 0.
5033 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
5034 twice `Now at end of input', therefore there are two lines less to
5035 expect.
5036
b365aa05
AD
50372001-12-27 Akim Demaille <akim@epita.fr>
5038
5039 * tests/regression.at (Unresolved SR Conflicts):
5040 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
5041 below.
5042
30171f79
AD
50432001-12-27 Akim Demaille <akim@epita.fr>
5044
5045 * src/LR0.c (new_state): Recognize the final state by the fact it
5046 is reached by eoftoken.
5047 (insert_start_shifting_state, insert_eof_shifting_state)
5048 (insert_accepting_state, augment_automaton): Remove, since now
5049 these states are automatically computed from the initial state.
5050 (generate_states): Adjust.
5051 * src/print.c: When reporting a rule number to the user, substract
5052 1, so that the axiom rule is rule 0, and the first user rule is 1.
5053 * src/reduce.c: Likewise.
5054 * src/print_graph.c (print_core): For the time being, just as for
5055 the report, depend upon --trace-flags to dump the full set of
5056 items.
5057 * src/reader.c (readgram): Once the grammar read, insert the rule
5058 0: `$axiom: START-SYMBOL $'.
5059 * tests/set.at: Adjust: rule 0 is now displayed, and since the
5060 number of the states has changed (the final state is no longer
5061 necessarily the last), catch up.
5062
75142d45
AD
50632001-12-27 Akim Demaille <akim@epita.fr>
5064
5065 Try to make the use of the eoftoken valid. Given that its value
5066 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
5067 is used instead of > 0 where appropriate, (ii), depend upon nritems
5068 instead of the 0-sentinel.
5069
5070 * src/gram.h, src/gram.c (nritems): New.
5071 Expected to be duplication of nitems, but for the time being...
5072 * src/reader.c (packgram): Assert nritems and nitems are equal.
5073 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
5074 * src/closure.c (print_closure, print_fderives): Likewise.
5075 * src/gram.c (ritem_print): Likewise.
5076 * src/print.c (print_core, print_grammar): Likewise.
5077 * src/print_graph.c: Likewise.
5078
b7c49edf
AD
50792001-12-27 Akim Demaille <akim@epita.fr>
5080
5081 * src/main.c (main): If there are complains after grammar
5082 reductions, then output the report anyway if requested, then die.
5083 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
5084 * src/reader.c (eoftoken): New.
5085 (parse_token_decl): If the token being defined has value `0', it
5086 is the eoftoken.
5087 (packsymbols): No longer hack `tags' to insert `$' by hand.
5088 Be sure to preserve the value of the eoftoken.
5089 (reader): Make sure eoftoken is defined.
5090 Initialize nsyms to 0: now eoftoken is created just like the others.
5091 * src/print.c (print_grammar): Don't special case the eof token.
5092 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
5093 lie anyway, albeit pleasant.
5094 * tests/calc.at: Exercise error messages with eoftoken.
5095 Change the grammar so that empty input is invalid.
5096 Adjust expectations.
5097 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
5098
ec2da99f
AD
50992001-12-27 Akim Demaille <akim@epita.fr>
5100
5101 * configure.in: Check the protos of strchr ans strspn.
5102 Replace strchr if needed.
5103 * src/system.h: Provide the protos of strchr, strspn and memchr if
5104 missing.
5105 * lib/strchr.c: New.
5106 * src/reader.c (symbols_save): Use strchr.
5107
8adfa272
AD
51082001-12-27 Akim Demaille <akim@epita.fr>
5109
5110 * src/print.c, src/print_graph.c (escape): New.
5111 Use it to quote the TAGS outputs.
5112 * src/print_graph.c (print_state): Now errors are in red, and
5113 reductions in green.
5114 Prefer high to wide: output the state number on a line of its own.
5115
80dac38c
AD
51162001-12-27 Akim Demaille <akim@epita.fr>
5117
5118 * src/state.h, src/state.c (reductions_new): New.
5119 * src/LR0.c (set_state_table): Let all the states have a
5120 `reductions', even if reduced to 0.
5121 (save_reductions): Adjust.
5122 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
5123 * src/print.c (print_reductions, print_actions): Adjust.
5124 * src/output.c (action_row): Adjust.
5125
2cec70b9
AD
51262001-12-27 Akim Demaille <akim@epita.fr>
5127
5128 * src/state.h, src/state.c (errs_new, errs_dup): New.
5129 * src/LR0.c (set_state_table): Let all the states have an errs,
5130 even if reduced to 0.
5131 * src/print.c (print_errs, print_reductions): Adjust.
5132 * src/output.c (output_actions, action_row): Adjust.
5133 * src/conflicts.c (resolve_sr_conflict): Adjust.
5134
13ca549a
AD
51352001-12-27 Akim Demaille <akim@epita.fr>
5136
5137 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
5138
5092aba5
AD
51392001-12-27 Akim Demaille <akim@epita.fr>
5140
5141 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
5142 * src/print.c: here.
5143 (lookaheadset, shiftset): New, used as additional storage by
5144 print_reductions.
5145 (print_results): Adjust.
5146 (print_shifts, print_gotos, print_errs): New, extracted from...
5147 (print_actions): here.
5148 * src/print_graph.c (print_actions): Remove dead code.
5149
11e2beca
AD
51502001-12-27 Akim Demaille <akim@epita.fr>
5151
5152 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
5153 `$n' and `@n'.
5154
dac3c910
AD
51552001-12-27 Akim Demaille <akim@epita.fr>
5156
5157 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
5158 (build_relations): Adjust.
5159
d0b0fefa
AD
51602001-12-27 Akim Demaille <akim@epita.fr>
5161
5162 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
5163 duplication.
5164
adc8c848
AD
51652001-12-27 Akim Demaille <akim@epita.fr>
5166
5167 * src/reader.c (packgram): Catch nitems overflows.
5168
14d293ac
AD
51692001-12-27 Akim Demaille <akim@epita.fr>
5170
5171 * src/files.c, src/files.h (guard_obstack): Remove.
5172 * src/output.c (output): Adjust.
5173 * src/reader.c (parse_braces): New, factoring...
5174 (copy_action, copy_guard): these two which are renamed as...
5175 (parse_action, parse_guard): these.
5176 As a voluntary consequence, using braces around guards is now
5177 mandatory.
5178
f499b062
AD
51792001-12-27 Akim Demaille <akim@epita.fr>
5180
5181 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
5182 * src/reader.c (symbol_list): `guard' and `guard_line' are new
5183 members.
5184 (symbol_list_new): Adjust.
5185 (copy_action): action_line is the first line, not the last.
5186 (copy_guard): Just as for actions, store the `action' only, not
5187 the switch/case/break flesh.
5188 Don't parse the user action that might follow the guard, let...
5189 (readgram): do it, i.e., now, there can be an action after a
5190 guard.
5191 In other words the guard is just explicitly optional.
5192 (packgram): Adjust.
5193 * src/output.c (guards_output): New.
5194 (output_parser): Call it when needed.
5195 (output): Also free the guard and attrs obstacks.
5196 * src/files.c, src/files.h (obstack_save): Remove.
5197 (output_files): Remove.
5198 As a result, if one needs the former `.act' file, using an
5199 appropriate skeleton which requires actions and guards is now
5200 required.
5201 * src/main.c (main): Adjust.
5202 * tests/semantic.at: New.
5203 * tests/regression.at: Use `input.y' as input file name.
5204 Avoid 8+3 problems by requiring input.c when the test needs the
5205 parser.
5206
d945f5cd
AD
52072001-12-27 Akim Demaille <akim@epita.fr>
5208
5209 * src/reader.c (symbol_list_new): Be sure to initialize all the
5210 fields.
5211
d200e455
AD
52122001-12-27 Akim Demaille <akim@epita.fr>
5213
5214 All the hacks using a final pseudo state are now useless.
5215
5216 * src/LR0.c (set_state_table): state_table holds exactly nstates.
5217 * src/lalr.c (nLA): New.
5218 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
5219 instead of lookaheadsp from the pseudo state (nstate + 1).
5220
f9507c28
AD
52212001-12-27 Akim Demaille <akim@epita.fr>
5222
5223 * src/output.c (action_row, token_actions): Use a state_t instead
5224 of a integer, and nlookaheads instead of the following state's
5225 lookaheadsp.
5226
065fbd27
AD
52272001-12-27 Akim Demaille <akim@epita.fr>
5228
5229 * src/conflicts.c (log_resolution, flush_shift)
5230 (resolve_sr_conflict, set_conflicts, solve_conflicts)
5231 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
5232 (conflicts_print, print_reductions): Use a state_t instead of an
5233 integer when referring to a state.
5234 As much as possible, depend upon nlookaheads, instead of the
5235 `lookaheadsp' member of the following state (since lookaheads of
5236 successive states are successive, the difference between state n + 1
5237 and n served as the number of lookaheads for state n).
5238 * src/lalr.c (add_lookback_edge): Likewise.
5239 * src/print.c (print_core, print_actions, print_state)
5240 (print_results): Likewise.
5241 * src/print_graph.c (print_core, print_actions, print_state)
5242 (print_graph): Likewise.
5243 * src/conflicts.h: Adjust.
5244
1b177bd7
AD
52452001-12-27 Akim Demaille <akim@epita.fr>
5246
5247 * src/bison.hairy: Formatting/comment changes.
5248 ANSIfy.
5249 Remove `register' indications.
5250 Add plenty of `static'.
5251
7742ddeb
AD
52522001-12-27 Akim Demaille <akim@epita.fr>
5253
5254 * src/output.c (prepare): Drop the muscle `ntbase' which
5255 duplicates ntokens.
5256 * src/bison.simple: Formatting/comment changes.
5257 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
5258 is an undocumented synonym.
5259
1fa14068
AD
52602001-12-22 Akim Demaille <akim@epita.fr>
5261
5262 * src/output.c (output_table_data): Change the prototype to use
5263 `int' for array ranges: some invocations do pass an int, not a
5264 short.
5265 Reported by Wayne Green.
5266
b9752825
AD
52672001-12-22 Akim Demaille <akim@epita.fr>
5268
5269 Some actions of web2c.y are improperly triggered.
5270 Reported by Mike Castle.
5271
5272 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
5273 * tests/regression.at (Web2c): Rename as...
5274 (Web2c Report): this.
5275 (Web2c Actions): New.
5276
776209d6
AD
52772001-12-22 Akim Demaille <akim@epita.fr>
5278
5279 Reductions in web2c.y are improperly reported.
5280 Reported by Mike Castle.
5281
5282 * src/conflicts.c (print_reductions): Fix.
5283 * tests/regression.at (Web2c): New.
5284
275fc3ad
AD
52852001-12-18 Akim Demaille <akim@epita.fr>
5286
5287 Some host fail on `assert (!"foo")', which expands to
5288 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
5289 Reported by Nelson Beebee.
5290
5291 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
5292 `#define it_succeeded 0' and `assert (it_succeeded)'.
5293
897668ee
MA
52942001-12-17 Marc Autret <autret_m@epita.fr>
5295
5296 * src/bison.simple: Don't hard code the skeleton line and filename.
5297 * src/output.c (output_parser): Rename 'line' as 'output_line'.
5298 New line counter 'skeleton_line' (skeleton-line muscle).
5299
ab3399e0
PE
53002001-12-17 Paul Eggert <eggert@twinsun.com>
5301
5302 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
5303 YYDEBUG must be defined to a nonzero value.
5304
5305 * src/bison.simple (yytname): Do not assume that the user defines
5306 YYDEBUG to a properly parenthesized expression.
5307
3877f72b
AD
53082001-12-17 Akim Demaille <akim@epita.fr>
5309
5310 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
5311 nlookaheads is a new member.
5312 Adjust all users.
5313 * src/lalr.h (nlookaheads): Remove this orphan declaration.
5314 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
5315 state.
776209d6 5316
331dbc1b
AD
53172001-12-17 Akim Demaille <akim@epita.fr>
5318
5319 * src/files.h, src/files.c (open_files, close_files): Remove.
5320 * src/main.c (main): Don't open/close files, nor invoke lex_free,
5321 let...
5322 * src/reader.c (reader): Do it.
776209d6 5323
be750e4c
AD
53242001-12-17 Akim Demaille <akim@epita.fr>
5325
5326 * src/conflicts.c (print_reductions): Formatting changes.
776209d6 5327
709ae8c6
AD
53282001-12-17 Akim Demaille <akim@epita.fr>
5329
5330 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
5331 (flush_reduce): New.
5332 (resolve_sr_conflict): Adjust.
776209d6 5333
f87685c3
AD
53342001-12-17 Akim Demaille <akim@epita.fr>
5335
5336 * src/output.c (output_obstack): Be static and rename as...
5337 (format_obstack): this, to avoid any confusion with files.c's
5338 output_obstack.
5339 * src/reader.h (muscle_obstack): Move to...
5340 * src/output.h: here, since it's defined in output.c.
5341
837491d8
AD
53422001-12-17 Akim Demaille <akim@epita.fr>
5343
5344 * src/output.c (action_row, save_column, default_goto)
5345 (sort_actions, matching_state, pack_vector): Better variable
5346 locality.
5347
796d61fb
AD
53482001-12-17 Akim Demaille <akim@epita.fr>
5349
5350 * src/output.c: Various formatting changes.
776209d6 5351
64d15509
AD
53522001-12-17 Akim Demaille <akim@epita.fr>
5353
5354 * src/files.c (output_files): Free the output_obstack.
5355 * src/main.c (main): Call print and print_graph conditionally.
5356 * src/print.c (print): Work unconditionally.
5357 * src/print_graph.c (print_graph): Work unconditionally.
5358 * src/conflicts.c (log_resolution): Output only if verbose_flag.
5359
fbc8ecb7
MA
53602001-12-16 Marc Autret <autret_m@epita.fr>
5361
5362 * src/output.c (actions_output): Fix. When we use %no-lines,
5363 there is one less line per action.
5364
f0440388
MA
53652001-12-16 Marc Autret <autret_m@epita.fr>
5366
5367 * src/bison.simple: Remove a useless #line directive.
5368 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
5369 * src/output.c (get_lines_number): New.
776209d6 5370 (output_parser): Adjust, now takes care about the lines of a
f0440388
MA
5371 output muscles.
5372 Fix line numbering.
5373 (actions_output): Computes the number of lines taken by actions.
5374 (output_master_parser): Insert new skeleton which is the name of
5375 the output parser file name.
5376
a79986b8
MA
53772001-12-15 Marc Autret <autret_m@epita.fr>
5378
5379 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
5380
4ec8e00f
MA
53812001-12-15 Marc Autret <autret_m@epita.fr>
5382
5383 * src/output.c (output_gram): Keep track of the hairy one.
5384
1a4648ff
AD
53852001-12-15 Akim Demaille <akim@epita.fr>
5386
5387 Make `make distcheck' work.
5388
5389 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
5390 system.h which uses libgettext.h.
5391
9c2c67e6
AD
53922001-12-15 Akim Demaille <akim@epita.fr>
5393
5394 * src/nullable.c (set_nullable): Useless rules must be skipped,
5395 otherwise, since we range over their symbols, we might look at a
5396 nonterminal which no longer ``exists'', i.e., it is not counted in
5397 `nvars', hence we overflow our arrays.
5398
93ede233
AD
53992001-12-15 Akim Demaille <akim@epita.fr>
5400
5401 The header can also be produced directly, without any obstack!
5402 Yahoo!
5403
5404 * src/files.c, src/files.h (defines_obstack): Remove.
5405 (compute_header_macro): Global.
5406 (defines_obstack_save): Remove.
5407 * src/reader.c (parse_union_decl): No longer output to
5408 defines_obstack: its content can be found in the `stype' muscle
5409 anyway.
5410 (output_token_translations): Merge into...
5411 (symbols_output): this.
5412 Rename as...
5413 (symbols_save): this.
5414 (reader): Adjust.
5415 * src/output.c (header_output): New.
5416 (output): Call it.
5417
2666f928
AD
54182001-12-15 Akim Demaille <akim@epita.fr>
5419
5420 * src/reader.c (parse_union_decl): Instead of handling two obstack
5421 simultaneously, use one to define the `stype' muscle, and use the
5422 value of the latter to fill defines_obstack.
5423 (copy_comment): Remove.
5424 (copy_comment2): Work for a single obstack.
5425 Rename as...
5426 (copy_comment): this.
5427
428046f8
AD
54282001-12-15 Akim Demaille <akim@epita.fr>
5429
5430 * src/lex.c, src/lex.h (xgetc): No longer static.
5431 * src/reader.c (parse_union_decl): Revamp.
5432
ea52d706
AD
54332001-12-15 Akim Demaille <akim@epita.fr>
5434
5435 Still making progress in separating Bison into (i) input, (ii)
5436 process, (iii) output: now we can directly output the parser file
5437 without using table_obstack at all.
5438
5439 * src/files.c, src/files.h (table_obstack): Bye bye.
5440 (parser_file_name): New.
5441 * src/files.c (compute_output_file_names): Compute it.
5442 * src/output.c (actions_output, output_parser)
5443 (output_master_parser): To a file instead of an obstack.
5444
3f96f4dc
AD
54452001-12-15 Akim Demaille <akim@epita.fr>
5446
5447 Attach actions to rules, instead of pre-outputting them to
5448 actions_obstack.
5449
5450 * src/gram.h (rule_t): action and action_line are new members.
5451 * src/reader.c (symbol_list): Likewise.
5452 (copy_action): Save the actions within the rule.
5453 (packgram): Save them in rule_table.
5454 * src/output.c (actions_output): New.
5455 (output_parser): Use it on `%%actions'.
5456 (output_rule_data): Don't free rule_table.
5457 (output): Do it.
5458 (prepare): Don't save the `action' muscle.
5459 * src/bison.simple: s/%%action/%%actions/.
5460
51576fb3
AD
54612001-12-15 Akim Demaille <akim@epita.fr>
5462
5463 * src/reader.c (copy_action): When --yacc, don't append a `;'
5464 to the user action: let it fail if lacking.
dee049eb 5465 Suggested by Arnold Robbins and Tom Tromey.
51576fb3 5466
2648a72d
AD
54672001-12-14 Akim Demaille <akim@epita.fr>
5468
5469 * src/lex.c (literalchar): Simply return the char you decoded, non
5470 longer mess around with obstacks and int pointers.
5471 Adjust all callers.
5472
92790e5b
AD
54732001-12-14 Akim Demaille <akim@epita.fr>
5474
5475 * src/lex.c (literalchar): Don't escape the special characters,
5476 just decode them, and keep them as char (before, eol was output as
5477 the 2 char string `\n' etc.).
5478 * src/output.c (output_rule_data): Use quotearg to output the
5479 token strings.
5480
927c1557
PE
54812001-12-13 Paul Eggert <eggert@twinsun.com>
5482
5483 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
5484 Do not infringe on the global user namespace when using C++.
5485 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
5486 All uses of `fprintf' and `stderr' changed.
5487
5488 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
5489
ed8e1f68
AD
54902001-12-13 Akim Demaille <akim@epita.fr>
5491
5492 The computation of nullable is broken: it doesn't handle empty
5493 RHS's properly.
5494
5495 * tests/torture.at (GNU AWK Grammar): New.
5496 * tests/sets.at (Nullable): New.
5497 * src/nullable.c (set_nullable): Instead of blindly looping over
5498 `ritems', loop over the rules, and then over their rhs's.
5499
5500 Work around Autotest bugs.
5501
5502 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
5503 frame, because Autotest understand lines starting with a `+' as
5504 traces from the shell. Then, they are not processed properly.
5505 Admittedly an Autotest bug, but we don't have time to wait for
5506 Autotest to catch up.
5507 * tests/regression.at (Broken Closure): Adjust to the new table
5508 frames.
5509 Move to...
5510 * tests/sets.at: here.
5511
cb581495
AD
55122001-12-13 Akim Demaille <akim@epita.fr>
5513
5514 * src/closure.c (closure): Use nrules instead of playing tricks
5515 with BITS_PER_WORD.
5516
2e729273
AD
55172001-12-13 Akim Demaille <akim@epita.fr>
5518
5519 * src/print.c (print_actions): Output the handling of `$' as the
5520 traces do: shifting the token EOF. Before EOF was treated as a
5521 nonterminal.
5522 * tests/regression.at: Adjust some tests.
5523 * src/print_graph.c (print_core): Complete the set of items via
5524 closure. The next-to-final and final states are still unsatisfying,
5525 but that's to be addressed elsewhere.
5526 No longer output the rule numbers, but do output the state number.
5527 A single loop for the shifts + gotos is enough, but picked a
5528 distinct color for each.
5529 (print_graph): Initialize and finalize closure.
5530
107f7dfb
AD
55312001-12-13 Akim Demaille <akim@epita.fr>
5532
5533 * src/reader.c (readgram): Remove dead code, an strip useless
5534 braces.
5535 (get_type): Remove, unused.
5536
9b53a24f
AD
55372001-12-12 Akim Demaille <akim@epita.fr>
5538
5539 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
5540 on that of lib/error.c.
5541
dbfb6dcd
AD
55422001-12-12 Akim Demaille <akim@epita.fr>
5543
5544 Some hosts don't like `/' in includes.
5545
5546 * src/system.h: Include libgettext.h without qualifying the path.
5547 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
5548 $(top_srcdir).
5549
c25fb648
MA
55502001-12-11 Marc Autret <autret_m@epita.fr>
5551
5552 * src/output.c (output_parser): Remove useless muscle.
5553
710ddc4f
MA
55542001-12-11 Marc Autret <autret_m@epita.fr>
5555
5556 * src/bison.simple: Remove #line just before %%epilogue. It
5557 is now handled in ...
5558 * src/reader.c (read_additionnal_code): Add the output of a
5559 #line for the epilogue.
5560
e83d80b8
MA
55612001-12-10 Marc Autret <autret_m@epita.fr>
5562
927c1557 5563 * src/reader.c (copy_definition): Re-use CPP-outed code which
e83d80b8
MA
5564 replace precedent remove.
5565 * src/bison.simple: Remove #line before %%prologue because
5566 %%input-line is wrong at this time.
5567
971d5158
MA
55682001-12-10 Marc Autret <autret_m@epita.fr>
5569
5570 * src/reader.c (symbols_output): Clean up.
927c1557 5571 * src/output.c (output_gram, output): Clean up.
971d5158 5572
5edafffd
AD
55732001-12-10 Akim Demaille <akim@epita.fr>
5574
5575 * src/lalr.c (initialize_lookaheads): New. Extracted from...
5576 * src/LR0.c (set_state_table): here.
5577 * src/lalr.c (lalr): Call it.
5578
0279f8e9
AD
55792001-12-10 Akim Demaille <akim@epita.fr>
5580
5581 * src/state.h (shifts): Remove the `number' member: shifts are
5582 attached to state, hence no longer need to be labelled with a
5583 state number.
5584
190c4f5f
AD
55852001-12-10 Akim Demaille <akim@epita.fr>
5586
5587 Now that states have a complete set of members, the linked list of
5588 shifts is useless: just fill directly the state's shifts member.
5589
5590 * src/state.h (shifts): Remove the `next' member.
5591 * src/LR0.c (first_state, last_state): Remove.
5592 Adjust the callers.
5593 (augment_automaton): Don't look for the shifts that must be added
5594 a shift on EOF: it is those of the state we looked for! But now,
5595 since shifts are attached, it is no longer needed to looking
5596 merely by its id: its number.
5597
2a73b93d
AD
55982001-12-10 Akim Demaille <akim@epita.fr>
5599
5600 * src/LR0.c (augment_automaton): Better variable locality.
5601 Remove an impossible branch: if there is a state corresponding to
5602 the start symbol being shifted, then there is shift for the start
5603 symbol from the initial state.
5604
74392f6a
AD
56052001-12-10 Akim Demaille <akim@epita.fr>
5606
5607 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
5608 only when appropriate: when insert_start_shifting_state' is not
5609 invoked.
5610 * tests/regression.at (Rule Line Numbers): Adjust.
5611
37c82725
AD
56122001-12-10 Akim Demaille <akim@epita.fr>
5613
5614 * src/LR0.c (augment_automaton): Now that all states have shifts,
5615 merge the two cases addition shifts to the initial state.
5616
6a164e0c
AD
56172001-12-10 Akim Demaille <akim@epita.fr>
5618
5619 * src/lalr.c (set_state_table): Move to...
5620 * src/LR0.c: here.
5621 * src/lalr.c (lalr): Don't call it...
5622 * src/LR0.c (generate_states): do it.
5623 * src/LR0.h (first_state): Remove, only the table is used.
5624
7215de24
AD
56252001-12-10 Akim Demaille <akim@epita.fr>
5626
5627 * src/LR0.h (first_shift, first_reduction): Remove.
5628 * src/lalr.c: Don't use first_shift: find shifts through the
5629 states.
5630
80e25d4d
AD
56312001-12-10 Akim Demaille <akim@epita.fr>
5632
5633 * src/LR0.c: Attach shifts to states as soon as they are
5634 computed.
5635 * src/lalr.c (set_state_table): Instead of assigning shifts to
5636 state, just assert that the mapping was properly done.
5637
0ab3728b
AD
56382001-12-10 Akim Demaille <akim@epita.fr>
5639
5640 * src/LR0.c (insert_start_shift): Rename as...
5641 (insert_start_shifting_state): this.
5642 (insert_eof_shifting_state, insert_accepting_state): New.
5643 (augment_automaton): Adjust.
5644 Better locality of the variables.
5645 When looking if the start_symbol is shifted from the initial
5646 state, using `while (... symbol != start_symbol ...)' sounds
5647 better than `while (... symbol < start_symbol ...)': If fail
5648 to see how the order between symbols could be relevant!
5649
78af9bbc
AD
56502001-12-10 Akim Demaille <akim@epita.fr>
5651
5652 * src/getargs.h: Don't declare `spec_name_prefix' and
5653 `spec_file_prefix', declared by src/files.h.
5654 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
5655 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
5656 * src/output.c (prepare): Adjust.
5657 * src/reader.c (symbols_output): Likewise.
5658 * src/vmsgetargs.c: Vaguely adjust, but who cares?
5659
bdef2a41
AD
56602001-12-10 Akim Demaille <akim@epita.fr>
5661
5662 * src/muscle_tab.c (muscle_init): NULL is a better default than
5663 `"0"'.
5664
3735969c
AD
56652001-12-10 Akim Demaille <akim@epita.fr>
5666
5667 * src/reader.c (reader): Calling symbols_output once is enough.
5668
49701457
AD
56692001-12-10 Akim Demaille <akim@epita.fr>
5670
5671 Now that states have a complete set of members, the linked list of
5672 reductions is useless: just fill directly the state's reductions
5673 member.
5674
5675 * src/state.h (struct reductions): Remove member `number' and
5676 `next'.
5677 * src/LR0.c (first_reduction, last_reduction): Remove.
5678 (save_reductions): Don't link the new reductions, store them in
5679 this_state.
5680 * src/lalr.c (set_state_table): No need to attach reductions to
5681 states, it's already done.
5682 * src/output.c (output_actions): No longer free the shifts, then
5683 the reductions, then the states: free all the states and their
5684 members.
5685
0edad749
AD
56862001-12-10 Akim Demaille <akim@epita.fr>
5687
5688 * src/options.c (OPTN, DRTV, BOTH): New.
5689 (option_table): Use them.
5690
0edad749
AD
5691 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
5692 the job of system.h.
5693 * src/options.c: Don't include stdio.h and xalloc.h for the same
5694 reasons.
5695
5449dd0f
AD
56962001-12-10 Akim Demaille <akim@epita.fr>
5697
5698 * src/output.c (output, prepare): Make sure the values of the
5699 muscles `action' and `prologue' are 0-terminated.
5700
a870c567
AD
57012001-12-10 Akim Demaille <akim@epita.fr>
5702
5703 Clean up GCC warnings.
5704
5705 * src/reader.c (copy_action): `buf' is not used.
5706 (parse_skel_decl): Be static.
5707 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
5708 * src/options.h (create_long_option_table): Have a real prototype.
5709 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
5710 (hash_delete_at): Return const void *.
5711 Adjust casts to preserve the const.
5712
80df8768
AD
57132001-12-10 Akim Demaille <akim@epita.fr>
5714
5715 * configure.in: Require 2.52g.
5716 M4 is not needed, but AUTOM4TE is.
5717 * m4/m4.m4: Remove.
5718 * tests/Makefile.am: Adjust.
5719
f693ad14
AD
57202001-12-10 Akim Demaille <akim@epita.fr>
5721
5722 One structure for states is enough, even though theoretically
5723 there are LR(0) states and LALR(1) states.
5724
5725 * src/lalr.h (state_t): Remove.
5726 (state_table): Be state_t **, not state_t *.
5727 * src/state.h (core, CORE_ALLOC): Rename as...
5728 (state_t, STATE_ALLOC): this.
5729 Add the LALR(1) members: shifts, reductions, errs.
5730 * src/LR0.c (state_table): Rename as...
5731 (state_hash): this, to avoid name clashes with the global
5732 `state_table'.
5733 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
5734 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
5735
74ffbcb6
AD
57362001-12-10 Akim Demaille <akim@epita.fr>
5737
5738 Bison dumps core on bash.y.
5739 Reported by Pascal Bart.
5740
5741 * src/warshall.c (bitmatrix_print): New.
5742 (TC): Use it.
5743 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
5744 j must be the outer loop.
5745 * tests/regression.at (Broken Closure): New.
5746
07708e19
AD
57472001-12-05 Akim Demaille <akim@epita.fr>
5748
5749 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
5750 its argument.
5751