]> git.saurik.com Git - bison.git/blame_incremental - ChangeLog
(yygetLRActions): Replace `yyindex' with
[bison.git] / ChangeLog
... / ...
CommitLineData
12002-11-18 Akim Demaille <akim@epita.fr>
2
3 * doc/bison.texinfo (Tracing): `yyprint' shouldn't prepend a
4 space.
5 From Tim Van Holder.
6
72002-11-17 Paul Eggert <eggert@twinsun.com>
8
9 Pacify Sun ONE Studio 7 lint. Also, rename "ParseError"
10 to "SyntaxError" for consistency with my 2002-11-15 change.
11
12 * data/glr.c (YYDPRINTF, YYDSYMPRINT, YYDSYMPRINTF) [!YYDEBUG]: Do
13 not define to {}, since this breaks the common use of `YYDPRINTF
14 ((...));' if a single statement is desired (e.g. before `else').
15 Work around GCC warnings by surrounding corresponding calls with
16 {} if needed.
17 (yyhasResolvedValue): Remove unused function.
18 (yymergeOptionSets, yyresolvStack): Use `continue;' for empty
19 loop body.
20 (yyreportSyntaxError): Renamed from yyreportParseError.
21 (yyrecoverSyntaxError): Renamed from yyrecoverParseError.
22 All uses changed.
23 * tests/calc.at (_AT_DATA_CALC_Y): Make vars static instead of
24 extern when possible. Remove unused initializations.
25
262002-11-16 Akim Demaille <akim@epita.fr>
27
28 Augment the similarity between GLR and LALR traces.
29
30 * data/yacc.c (yy_stack_print, YY_STACK_PRINT, yy_reduce_print)
31 (YY_REDUCE_PRINT): New.
32 (yyparse): Use them.
33 * data/glr.c (yy_reduce_print): Use YYFPRINTF, no need for
34 YYDPRINT here.
35 (yyglrReduce, yyrecoverParseError, yyparse): Don't report the
36 state reached after the reduction/recovery, since...
37 (yyparse, yyprocessOneStack): Report the state we are entering in.
38
392002-11-16 Akim Demaille <akim@epita.fr>
40
41 * src/getargs.h, src/getargs.c (trace_e, trace_args, trace_types):
42 Add support for --trace=skeleton.
43 * src/scan-skel.l: %option debug.
44 Scan strings of non-@ or \n instead of character by character.
45 (scan_skel): Handle trace_skeleton.
46 (QPUTS): New.
47 (@output_parser_name@, @output_header_name@): ``Restore'' their
48 support (used to be M4 macros).
49 * data/yacc.c: Quote larger chunks, a la glr.c.
50 * data/lalr1.cc: Likewise.
51 The header guards are no longer available, so use some other
52 string than `YYLSP_NEEDED'.
53
542002-11-16 Akim Demaille <akim@epita.fr>
55
56 Make the ``Printers and Destructors'' test more verbose, taking
57 `yacc.c''s behavior as (possibly wrong) reference.
58
59 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Use printf
60 instead of fprint on stdout.
61 Set and report the last_line of the symbols.
62 Consistently display values and locations.
63
642002-11-16 Paul Eggert <eggert@twinsun.com>
65
66 * data/yacc.c: Avoid over-quoting of __line__ and __file__.
67
682002-11-15 Paul Eggert <eggert@twinsun.com>
69
70 * tests/actions.at (Actions after errors): New test case.
71
72 * data/glr.c, data/lalr1.cc, data/yacc.cc, doc/bison.texinfo,
73 src/conflicts.c, src/parse-gram.y, src/tables.c, src/tables.h,
74 tests/action.at, tests/calc.at, tests/conflicts.at,
75 tests/cxx-type.at, tests/regression.at:
76 "parse error" -> "syntax error" for POSIX compatibility.
77 "parsing stack overflow..." -> "parser stack overflow" so
78 that code matches Bison documentation.
79
802002-11-15 Akim Demaille <akim@epita.fr>
81
82 * src/parse-gram.y (declaration): Have %parse-param and %lex-param
83 take two BRACED_CODE, not two string_content.
84 Free the scanner's obstack when we are done.
85 (code_content): New.
86 * tests/calc.at: Adjust.
87 * doc/bison.texinfo: Adjust.
88 Also, make sure to include the `,' for these declarations.
89
902002-11-15 Tim Van Holder <tim.van.holder@pandora.be>
91
92 * m4/prereq.m4: Removed the commented jm_PREREQ_HASH
93 definition; avoids potential autoreconf problems.
94
952002-11-15 Akim Demaille <akim@epita.fr>
96
97 Always check the value returned by yyparse.
98
99 * tests/calc.at (_AT_DATA_CALC_Y): Have `main' exit with the value
100 returned by yyparse.
101 (_AT_CHECK_CALC_ERROR): Take the expected exit value as argument.
102 Adjust calls.
103 * tests/glr-regr1.at (glr-regr1.y): Have `main' exit with the value
104 returned by yyparse.
105
1062002-11-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
107
108 * data/glr.c (yyFail): Always set yyerrflag. Corrects regression
109 on input.at test.
110
1112002-11-14 Paul Eggert <eggert@twinsun.com>
112
113 * src/output.c (output_skeleton): Call xfopen instead of
114 duplicating xfopen's body.
115
116 Fix bugs reported by Nelson H. F. Beebe in
117 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001893.html>.
118
119 * tests/headers.at (AT_TEST_CPP_GUARD_H): Don't assume that
120 "$CC -E foo.h" is allowed, as this doesn't work with the Portland
121 Group compiler. Instead, use "$CC -E bar.c". Include the .h
122 file twice in the grammar, as an extra check.
123
124 * tests/input.at (Torturing the Scanner): Surround the
125 backslash-newline tests with "#if 0", to make it less likely that
126 we'll run into compiler bugs. Bring back solitary \ inside
127 comment, but add a closing comment to work around HP C bug. Don't
128 test backslash-newline in C character constant. This should fix
129 the input.at bug reported by Nelson H. F. Beebe in
130 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001893.html>.
131
1322002-11-14 Akim Demaille <akim@epita.fr>
133
134 * tests/synclines.at (AT_SYNCLINES_COMPILE): Ignore the exit
135 status of the compiler.
136 Calling `exit 1' is no longer needed.
137 Reported by Nelson H. F. Beebe.
138
1392002-11-14 Akim Demaille <akim@epita.fr>
140
141 * tests/atlocal.in (CPPFLAGS): We have config.h.
142 * tests/testsuite.at (AT_DATA_GRAMMAR_PROLOGUE, AT_DATA_GRAMMAR):
143 New.
144 * tests/actions.at, tests/calc.at, tests/conflicts.at,
145 * tests/cxx-type.at, tests/glr-regr1.at, tests/headers.at,
146 * tests/regression.at, tests/torture.at: Use them for all the
147 grammars that are to be compiled.
148 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Rename as...
149 * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): this.
150 * doc/bison.texinfo (GLR Parsers): Document `inline'.
151
1522002-11-14 Akim Demaille <akim@epita.fr>
153
154 * doc/bison.texinfo: Various formatting changes (alignments in
155 samples, additional @group/@end group, GCS in samples.
156 Use @deffn instead of simple @table to define the directives,
157 macros, variables etc.
158
1592002-11-13 Paul Eggert <eggert@twinsun.com>
160
161 Fix some bugs reported by Albert Chin-A-Young in
162 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001881.html>.
163
164 * tests/input.at (Torturing the Scanner): Don't invoke "cc a.c b.c
165 -o c"; the HP C compiler chatters during compilation.
166 Instead, invoke "cc -c a.c -o a.o; cc -c b.c -o b.o; cc a.o b.o -o c".
167 * tests/headers.at (export YYLTYPE): Likewise.
168
169 * tests/input.at (Torturing the Scanner): Remove lines containing
170 solitary backslashes, as they tickle a bug in the HP C compiler.
171
172 * tests/glr-regr1.at (Badly Collapsed GLR States): Avoid //
173 comments, since they're not portable. Use GNU coding style.
174
1752002-11-13 Akim Demaille <akim@epita.fr>
176
177 * data/yacc.c: Leave bigger chunks of quoted text.
178 (YYDSYMPRINTF): New.
179 Use it to report symbol activities.
180 * data/glr.c (YYDSYMPRINTF): New.
181 Use it.
182
1832002-11-12 Paul Eggert <eggert@twinsun.com>
184
185 Version 1.75b.
186
187 * data/glr.c (yydoAction): Return YYRESULTTAG, not int.
188 (yyglrReduce): Return yyok, not 0.
189 This should avoid the enumerated-type warnings reported
190 by Nelson H.F. Beebe in
191 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001872.html>.
192
193 * lib/bbitset.h (BITSET_INLINE): Remove.
194 * lib/bitset.h [! BITSET_INLINE]: Remove.
195 (bitset_set, bitset_reset, bitset_test): Rename local vars
196 to avoid shadowing warnings by GCC.
197
198 * data/glr.c (inline): Remove #define. It's the user's
199 responsibility to #define it away, just like 'const'.
200 This fixes one of the bugs reported by Nelson H.F. Beebe in
201 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001873.html>.
202
203 * Makefile.maint (po-check): Scan .l and .y files instead of the
204 .c and the .h files that they generate. This fixes the bug
205 reported by Tim Van Holder in:
206 <http://mail.gnu.org/pipermail/bison-patches/2002-November/001352.html>
207 Look for N_ as well as for _. Try to avoid matching #define for
208 N_ and _.
209 * po/POTFILES.in: Remove src/parse-gram.c, src/scan-gram.c,
210 src/system.h. Add src/parse-gram.y, src/scan-gram.l.
211 * src/scan-gram.l: Revamp regular expressions so that " and '
212 do not confuse xgettext.
213
214 * src/struniq.h (struniq_new): Do not declare the return type
215 to be 'const'; this violates the C standard.
216 * src/struniq.c (struniq_new): Likewise.
217
2182002-11-12 Albert Chin-A-Young <china@thewrittenword.com>
219
220 * src/Makefile.am (LDADD): Link $(LIBINTL) last to avoid the
221 duplicate definition of optind on Tru64 UNIX 4.0D with the Compaq
222 linker.
223
2242002-11-12 Akim Demaille <akim@epita.fr>
225
226 * Makefile.maint: Sync with Autoconf:
227 (local_updates): New.
228
2292002-11-12 Akim Demaille <akim@epita.fr>
230
231 * po/POTFILES.in (src/lalr.c, src/state.c): Remove
232
2332002-11-12 Akim Demaille <akim@epita.fr>
234
235 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Display the
236 locations.
237
2382002-11-12 Akim Demaille <akim@epita.fr>
239
240 * data/c.m4 (b4_yysymprint_generate): Pass *yyvaluep to YYPRINT,
241 not yyvalue.
242
2432002-11-12 Akim Demaille <akim@epita.fr>
244
245 * tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): New.
246 Use it to test the GLR parser.
247
2482002-11-12 Akim Demaille <akim@epita.fr>
249
250 * tests/regression.at (input.y): s/YYEOF/MYEOF/, as the skeleton
251 defines it.
252 * data/glr.c (yystos): New.
253 (b4_yysymprint_generate, b4_yydestruct_generate): Invoke.
254 (YYDSYMPRINT): New.
255 (yyval): Don't define it, it is handled via M4.
256 (yyrecoverParseError): Free verbosely the discarded symbols.
257 * data/yacc.c (yysymprint): Remove, rather...
258 (b4_yysymprint_generate): invoke.
259 * data/c.m4 (b4_yysymprint_generate): New.
260 Accept pointers as arguments, as opposed to the version from
261 yacc.c.
262 (b4_yydestruct_generate): Likewise.
263 * tests/cations.at (Printers and Destructors): Use Bison directives
264 instead of CPP macros.
265 Don't rely on internal details.
266
2672002-11-12 Akim Demaille <akim@epita.fr>
268
269 * data/c.m4 (b4_yydestruct_generate, b4_symbol_actions): New.
270 * data/yacc.c: Rename yychar1 as yytoken, as in glr.c.
271 Don't work on yychar (i.e., do set it to YYEMPTY, don't match
272 it against YYEMPTY and so forth), work on yytoken (i.e., set
273 it to YYEMPTY etc.).
274 (yydestruct): Replace with a b4_yydestruct_generate invocation.
275 (b4_symbol_actions): Remove.
276 * data/glr.c (YYTRANSLATE): As for yacc.c, if negative, it stands
277 for 0, end-of-input.
278
2792002-11-12 Akim Demaille <akim@epita.fr>
280
281 * doc/bison.texinfo (Destructor Decl): New.
282
2832002-11-12 Akim Demaille <akim@epita.fr>
284
285 * src/tables.c (tables_generate): Use free for pointers that
286 cannot be NULL, not XFREE.
287 (pack_vector): Use assert, not fatal, for bound violations.
288 * src/state.c (state_new): Likewise.
289 * src/reader.c (reader): Likewise.
290 * src/lalr.c (set_goto_map): Likewise.
291 * src/location.h (LOCATION_PRINT): If first_line is 0, just issue
292 the file name.
293
2942002-11-12 Akim Demaille <akim@epita.fr>
295
296 * src/scan-gram.l, src/reader.h (scanner_last_string_free):
297 Restore.
298 * src/scan-gram.l (last_string): Is global to the file, not to
299 yylex.
300 * src/parse-gram.y (input): Don't append the epilogue here,
301 (epilogue.opt): do it here, and free the scanner's obstack.
302 * src/reader.c (epilogue_set): Rename as...
303 (epilogue_augment): this.
304 * data/c.m4 (b4_epilogue): Defaults to empty.
305
3062002-11-12 Akim Demaille <akim@epita.fr>
307
308 * src/getargs.c (long_options): Remove duplicates.
309 * src/vmsgetargs.c, src/build.com, src/bison.cld, src/vmshlp.mar:
310 Remove.
311 * doc/bison.rnh: Remove.
312 * doc/bison.texinfo (VMS Invocation): Remove.
313
3142002-11-12 Akim Demaille <akim@epita.fr>
315
316 * src/struniq.h, src/struniq.c (struniq_t): Is const.
317 (STRUNIQ_EQ, struniq_assert, struniq_assert_p): New.
318
319 Use struniq for symbols.
320
321 * src/symtab.h (symbol_t): The tag member is a struniq.
322 (symbol_type_set): Adjust.
323 * src/symtab.c (symbol_new): Takes a struniq.
324 (symbol_free): Don't free the tag member.
325 (hash_compare_symbol_t, hash_symbol_t): Rename as...
326 (hash_compare_symbol, hash_symbol): these.
327 Use the fact that tags as struniqs.
328 (symbol_get): Use struniq_new.
329 * src/symlist.h, src/symlist.c (symbol_list_n_type_name_get):
330 Returns a strniq.
331 * src/reader.h (merger_list, grammar_currentmerge_set): The name
332 and type members are struniqs.
333 * src/reader.c (get_merge_function)
334 (grammar_current_rule_merge_set): Adjust.
335 (TYPE, current_type): Are struniq.
336
337 Use struniq for file names.
338
339 * src/files.h, src/files.c (infile): Split into...
340 (grammar_file, current_file): these.
341 * src/scan-gram.c (YY_USER_INIT, handle_syncline): Adjust.
342 * src/reduce.c (reduce_print): Likewise.
343 * src/getargs.c (getargs): Likewise.
344 * src/complain.h, src/complain.c: Likewise.
345 * src/main.c (main): Call struniqs_new early enough to use it for
346 file names.
347 Don't free the input file name.
348
3492002-11-12 Akim Demaille <akim@epita.fr>
350
351 * src/symtab.c (symbol_free): Remove dead deactivated code:
352 type_name are properly removed.
353 Don't use XFREE to free items that cannot be NULL.
354 * src/struniq.h, src/struniq.c: New.
355 * src/main.c (main): Initialize/free struniqs.
356 * src/parse-gram.y (%union): Add astruniq member.
357 (yyprint): Adjust.
358 * src/scan-gram.l (<{tag}>): Return a struniq.
359 Free the obstack bit that used to store it.
360 * src/symtab.h (symbol_t): The 'type_name' member is a struniq.
361
3622002-11-11 Paul Eggert <eggert@twinsun.com>
363
364 Revamp to fix many (but not all) of the C- and M4-related quoting
365 problems. Among other things, this fixes the Bison bug reported
366 by Jan Hubicka when processing the Bash grammar; see:
367 <http://mail.gnu.org/pipermail/bison-patches/2002-November/001329.html>
368
369 Use new @ escapes consistently. Represent brackets with @{ and @}
370 rather than @<:@ and @:>@, since this works a bit better with dumb
371 editors like vi. Represent @ with @@, since @ is now consistently
372 an escape. Use @oline@ and @ofile@ rather than __oline__ and
373 __ofile__, to avoid unexpected expansions. Similarly, use @output
374 rather than #output.
375
376 * data/c.m4 (b4_copyright): Omit file name from comment, since
377 the file name could contain "*/".
378 (b4_synclines_flag): Don't quote the 2nd argument; it should already
379 be quoted. All uses changed.
380
381 * data/glr.c: Use new @ escapes consistently.
382 (b4_input_suffix, b4_output_parser_suffix, b4_output_parser_name,
383 b4_output_header_suffix, b4_output_header_name, b4_header_guard):
384 Remove, since they couldn't handle arbitrary characters in file
385 names.
386 * data/lalr1.cc: Likewise.
387 * data/yacc.c: Likewise.
388
389 * src/files.c (output_infix): Remove; all uses removed.
390 * src/files.h: Likewise.
391
392 * data/glr.c: Remove use of "#ifdef b4_header_guard", since it
393 mishandled funny characters in file names, and anyway it isn't
394 needed any more.
395 * data/yacc.c: Likewise.
396 * data/lalr1.cc: Use YYSLP_NEEDED instead of b4_header_guard.
397
398 * data/glr.c (YYSTYPE_IS_TRIVIAL): Define when the .h file would.
399 * data/yacc.c: Likewise.
400
401 * src/muscle_tab.c: Include quotearg.h, since we need to quote C
402 strings now.
403 (muscle_init): Quote filename as a C string.
404 * src/muscle_tab.h (MUSCLE_GROW_STRING_PAIR): Remove; unused.
405 (MUSCLE_OBSTACK_SGROW, MUSCLE_INSERT_C_STRING): New macros.
406 * src/output.c (escaped_file_name_output): New function.
407 (prepare_symbols): Quote tokens for M4.
408 (prepare): Don't insert output_infix, output_prefix,
409 output_parser_name, output_header_name; this is now down by scan-skel.
410 Insert skeleton as a C string.
411
412 * src/output.c (user_actions_output, symbol_destructors_output,
413 symbol_printers_output): Quote filenames for C and M4.
414 * src/reader.c (prologue_augment, epilogue_set): Likewise.
415
416 * src/scan-gram.l (<SC_CHARACTER>): Don't worry about any backslash
417 escapes other than \\ and \'; this simplifies the code.
418 (<SC_STRING>): Likewise, for \\ and \".
419 (<SC_COMMENT,SC_LINE_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,
420 SC_PROLOGUE,SC_EPILOGUE>): Escape $ and @, too.
421 Use new escapes @{ and @} for [ and ].
422
423 * src/scan-skel.l (yylineno, yyoutname): Remove static vars, replacing
424 them with auto vars.
425 Switch to new escape scheme, where @ is the escape character uniformly.
426 Abort if a stray escape character is found. Avoid unbounded input
427 buffer when parsing non-escaped text.
428
429 * tests/input.at (Torturing the Scanner): Add tests that @oline@,
430 __oline__, #output, $@, and @{ do not have unintended meanings.
431
4322002-11-09 Paul Eggert <eggert@twinsun.com>
433
434 Fix the test failure due to GCC warnings described in
435 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001815.html>.
436 * data/glr.c (yyis_pact_ninf, yyis_table_ninf): New macros, which
437 evaluate to 0 if it's impossible for NINF to be in the respective
438 table.
439 (yygetLRActions, yyrecoverParseError): Use them.
440
441 * src/scan-gram.l (unexpected_end_of_file): Fix bug: columns were
442 counted in the token inserted at end of file. Now takes
443 location_t *, not location_t, so that the location can be
444 adjusted. All uses changed.
445
446 * tests/regression.at (Invalid inputs): Adjust wording in
447 diagnostic to match the new behavior.
448
449 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR,
450 AT_DATA_HORIZONTAL_GRAMMAR, AT_DATA_LOOKAHEADS_GRAMMAR,
451 AT_DATA_STACK_TORTURE): Replace `assert (x);' with `if (! (x))
452 abort ();'. This reduces the runtime of the "Many lookaheads"
453 test from 27.6 to 2.7 minutes on a 440 MHz Ultrasparc III running
454 GCC 3.2.
455
4562002-11-07 Paul Eggert <eggert@twinsun.com>
457
458 * src/parse-gram.y (CHARACTER): Remove unused token.
459 All uses removed.
460
461 * src/scan-gram.l: Remove stack option. We no longer use the
462 stack, since the stack was never deeper than 1; instead, use the
463 new auto var c_context to record the stacked value.
464
465 Remove nounput option. At an unexpected end of file, we now unput
466 the minimal input necessary to end cleanly; this simplifies the
467 code.
468
469 Avoid unbounded token sizes where this is easy.
470
471 (unexpected_end_of_file): New function.
472 Use it to systematize the error message on unexpected EOF.
473 (last-string): Now auto, not static.
474 (YY_OBS_FREE): Remove unnecessary do while (0) wrapper.
475 (scanner_last_string_free): Remove; not used.
476 (percent_percent_count): Move decl to just before use.
477 (SC_ESCAPED_CHARACTER): Return ID at unexpected end of file,
478 not the (never otherwised-used) CHARACTER.
479
4802002-11-07 Akim Demaille <akim@epita.fr>
481
482 Let yyerror always receive the msg as last argument, so that
483 yyerror can be variadic.
484
485 * data/yacc.c (b4_yyerror_args): New.
486 Use it when calling yyerror.
487 * data/glr.c (b4_yyerror_args, b4_lyyerror_args): New.
488 Use it when calling yyerror.
489 * doc/bison.texinfo (Error Reporting): Adjust.
490 * tests/calc.at (_AT_DATA_CALC_Y): Adjust.
491 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Adjust.
492
4932002-11-06 Akim Demaille <akim@epita.fr>
494
495 #line should have quoted strings.
496 Ideally, this should be done by m4_quotearg.
497
498 * src/scan-skel.l: Include quotearg.h.
499 Quote __ofile__.
500 * src/output.c (symbol_printers_output)
501 (symbol_destructors_output): Quote the file name.
502
5032002-11-06 Akim Demaille <akim@epita.fr>
504
505 * tests/regression.at (Invalid inputs): Adjust to the recent
506 messages.
507
5082002-11-06 Akim Demaille <akim@epita.fr>
509
510 Restore --no-lines.
511 Reported by Jim Kent.
512
513 * data/c.m4 (b4_syncline): New.
514 * data/glr.c, data/yacc.c, data/lalr1.cc: Use it.
515 * src/reader.c (prologue_augment, epilogue_set): Use b4_syncline.
516 * src/output.c (user_actions_output): Likewise.
517 (prepare): Define 'b4_synclines_flag'.
518 * src/muscle_tab.c (muscle_init): Don't define b4_linef.
519
5202002-11-06 Akim Demaille <akim@epita.fr>
521
522 * src/main.c (main): Free `infile'.
523 * src/scan-gram.l (handle_syncline): New.
524 Recognize `#line'.
525 * src/output.c (user_actions_output, symbol_destructors_output)
526 (symbol_printers_output): Use the location's file name, not
527 infile.
528 * src/reader.c (prologue_augment, epilogue_set): Likewise.
529
5302002-11-05 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
531
532 * src/tables.c (matching_state): Don't allow states to match if
533 either has GLR conflict entries.
534
5352002-11-05 Paul Eggert <eggert@twinsun.com>
536
537 * src/scan-gram.l: Use more accurate diagnostics, e.g.
538 "integer out of range" rather than "invalid value".
539 * tests/input.at (Invalid $n, Invalid @n): Change expected wording
540 accordingly.
541
542 Scan <% and %> digraphs in C code as POSIX 1003.1-2001 requires.
543 Also, remove one static variable in the scanner.
544
545 * src/scan-gram.l (braces_level): Now auto, not static.
546 Initialize to zero if the compiler is being picky.
547 (INITIAL): Clear braces_level instead of incrementing it.
548 (SC_BRACED_CODE): Treat <% and %> as { and } when inside C code,
549 as POSIX 1003.1-2001 requires.
550 * src/system.h (IF_LINT): New macro, taken from coreutils.
551 * configure.ac: Define "lint" if --enable-gcc-warnings.
552
5532002-11-05 Akim Demaille <akim@epita.fr>
554
555 * src/scan-gram.l: When it starts with `%', complain about the
556 whole directive, not just that `invalid character: %'.
557
5582002-11-04 Akim Demaille <akim@epita.fr>
559
560 * Makefile.maint: Update from Autoconf.
561 (update, cvs-update, po-update, do-po-update): New.
562
5632002-11-04 Akim Demaille <akim@epita.fr>
564
565 * tests/glr-regr1.at (Badly Collapsed GLR States): Prototype yylex
566 and yyerror.
567 Have yyerror `use' its arguments.
568 * tests/calc.at (AT_CHECK_PUSHDEFS): AT_YYERROR_SEES_LOC_IF
569 returns true when location & yacc & pure & parse-param.
570 (_AT_DATA_CALC_Y): Let yyerror ``use'' its arguments.
571
5722002-11-04 Akim Demaille <akim@epita.fr>
573
574 * src/location.h (LOCATION_PRINT): Use quotearg slot 3 to avoid
575 clashes.
576 * src/scan-gram.l: Use [\'] instead of ['] to pacify
577 font-lock-mode.
578 Use complain_at.
579 Use quote, not quote_n since LOCATION_PRINT no longer uses the
580 slot 0.
581
5822002-11-03 Paul Eggert <eggert@twinsun.com>
583
584 * src/reader.c (get_merge_function, grammar_current_rule_check):
585 Use consistent diagnostics for reporting type name clashes.
586 Quote the types with <>, for consistency with Yacc.
587 * tests/input.at (Type Clashes): Adjust to diagnostic changes.
588
5892002-11-03 Akim Demaille <akim@epita.fr>
590
591 * data/c.m4 (b4_identification, b4_user_args, b4_parse_param):
592 New.
593 * data/yacc.m4 (b4_pure_args, b4_Pure_args): New.
594 (b4_parse_param): Remove.
595 Use b4_identification.
596 Propagate b4_pure_args where needed to pass them to yyerror.
597 * data/glr.m4 (b4_parse_param): Remove.
598 (b4_user_formals, b4_pure_args, b4_pure_formals, b4_lpure_args)
599 (b4_lpure_formals): New.
600 Use b4_identification.
601 (YY_USER_FORMALS, YY_USER_ARGS): Remove, replaced by
602 b4_user_formals and b4_user_args.
603 (yyexpandGLRStack, yyFail, yyaddDeferredAction, yyglrShiftDefer)
604 (yyreportAmbiguity): When using a pure parser, also need
605 the location, and the parse-params.
606 Adjust callers.
607 (yyuserAction, yyglrShift, yyreportParseError, yyrecoverParseError):
608 When using a pure parser, also need the parse-params.
609 Adjust callers.
610 * tests/calc.at: Test pure (%pure-parser) and absolutely pure
611 (%pure-parser + %parse-param) LALR and GLR parsers.
612 (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): New, define AT_PARAM_IF,
613 AT_LOCATION_IF, AT_PURE_IF, AT_GLR_IF, AAT_PURE_AND_LOC_IF,
614 AT_GLR_OR_PARAM_IF, AT_YYERROR_ARG_LOC_IF, AT_YYERROR_SEES_LOC_IF.
615 (_AT_DATA_CALC_Y): Equip for purity of yyerror.
616 (_AT_CHECK_CALC_ERROR): Use AT_YYERROR_SEES_LOC_IF.
617 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Equip for yyerror purity.
618 * doc/bison.texinfo: Untabify the whole file.
619 (Parser Function): Document %parse-param, deprecate YYPARSE_PARAM.
620 (Pure Calling): Document %lex-param, deprecate YYLEX_PARAM.
621 (Error Reporting): Adjust to these new directives.
622 Document %error-verbose, deprecate YYERROR_VERBOSE.
623
6242002-11-03 Akim Demaille <akim@epita.fr>
625
626 * tests/calc.at: Change all the AT_CHECK_CALC_LALR and
627 AT_CHECK_CALC_GLR invocations to use % directives, instead of
628 command line options.
629 * tests/cxx-type.at: Formatting changes.
630
6312002-11-03 Paul Eggert <eggert@twinsun.com>
632
633 * src/scan-gram.l: Revamp to fix POSIX incompatibilities,
634 to count columns correctly, and to check for invalid inputs.
635
636 Use mbsnwidth to count columns correctly. Account for tabs, too.
637 Include mbswidth.h.
638 (YY_USER_ACTION): Invoke extend_location rather than LOCATION_COLUMNS.
639 (extend_location): New function.
640 (YY_LINES): Remove.
641
642 Handle CRLF in C code rather than in Lex code.
643 (YY_INPUT): New macro.
644 (no_cr_read): New function.
645
646 Scan UCNs, even though we don't fully handle them yet.
647 (convert_ucn_to_byte): New function.
648
649 Handle backslash-newline correctly in C code.
650 (SC_LINE_COMMENT, SC_YACC_COMMENT): New states.
651 (eols, blanks): Remove. YY_USER_ACTION now counts newlines etc.;
652 all uses changed.
653 (tag, splice): New EREs. Do not allow NUL or newline in tags.
654 Use {splice} wherever C allows backslash-newline.
655 YY_STEP after space, newline, vertical-tab.
656 ("/*"): BEGIN SC_YACC_COMMENT, not yy_push_state (SC_COMMENT).
657
658 (letter, id): Don't assume ASCII; e.g., spell out a-z.
659
660 ({int}, handle_action_dollar, handle_action_at): Check for integer
661 overflow.
662
663 (YY_STEP): Omit trailing semicolon, so that it's more like C.
664
665 (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>): Allow \0 and \00
666 as well as \000. Check for UCHAR_MAX, not 255.
667 Allow \x with an arbitrary positive number of digits, as in C.
668 Check for overflow here.
669 Allow \? and UCNs, for compatibility with C.
670
671 (handle_symbol_code_dollar): Use quote_n slot 1 to avoid collision
672 with quote slot used by complain_at.
673
674 * tests/input.at: Add tests for backslash-newline, m4 quotes
675 in symbols, long literals, and funny escapes in strings.
676
677 * configure.ac (jm_PREREQ_MBSWIDTH): Add.
678 * lib/Makefile.am (libbison_a_SOURCES): Add mbswidth.h, mbswidth.c.
679 * lib/mbswidth.h, lib/mbswidth.c: New files, from GNU gettext.
680 * m4/Makefile.am (EXTRA_DIST): Add mbswidth.m4.
681 * m4/mbswidth.m4: New file, from GNU coreutils.
682
683 * doc/bison.texinfo (Grammar Outline): Document // comments.
684 (Symbols): Document that trigraphs have no special meaning in Bison,
685 nor is backslash-newline allowed.
686 (Actions): Document that trigraphs have no special meaning.
687
688 * src/location.h (LOCATION_COLUMNS, LOCATION_LINES): Remove;
689 no longer used.
690
6912002-11-02 Paul Eggert <eggert@twinsun.com>
692
693 * src/reader.c: Don't include quote.h; not needed.
694 (get_merge_function): Reword warning to be consistent with
695 type clash diagnostic in grammar_current_rule_check.
696
697 * lib/quotearg.c (quotearg_buffer_restyled): Fix off-by-two
698 bug in trigraph handling.
699
700 * src/output.c (prepare_symbols): When printing token names,
701 escape "[" as "@<:@" and likewise for "]".
702
703 * src/system.h (errno): Remove declaration, as we are now
704 assuming C89 or better, and C89 guarantees errno.
705
7062002-10-30 Paul Eggert <eggert@twinsun.com>
707
708 * lib/bitset_stats.c (bitset_stats_read, bitset_stats_write):
709 Check for close failures.
710 * src/files.h (xfclose): Return void, not int, since it always
711 returned zero.
712 * src/files.c (xfclose): Likewise. Report I/O error if ferror
713 indicates one.
714 * src/output.c (output_skeleton): Use xfclose rather than fclose
715 and ferror. xfclose now checks ferror.
716
717 * data/glr.c (YYLEFTMOST_STATE): Remove.
718 (yyreportTree): Use a stack-based leftmost state. This avoids
719 our continuing battles with bogus warnings about initializers.
720
7212002-10-30 Akim Demaille <akim@epita.fr>
722
723 * src/system.h: Don't use #ifdef/#ifndef on HAVE_ values, only
724 #if.
725
7262002-10-29 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
727
728 * tests/glr-regr1.at: New test for reported regressions.
729 * tests/testsuite.at: Add glr-regr1.at test.
730 * tests/Makefile.am: Add glr-regr1.at test.
731
7322002-10-24 Paul Eggert <eggert@twinsun.com>
733
734 Version 1.75a.
735
736 * tests/calc.at (_AT_DATA_CALC_Y): Remove unused strcat declaration.
737 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Include stdlib.h, since
738 we use malloc. Don't assume 'A' through 'Z' are contiguous.
739 Don't assume strdup exists; POSIX says its an XSI extension.
740 Check for buffer overflow on input.
741
7422002-10-24 Akim Demaille <akim@epita.fr>
743
744 * src/output.c (output_skeleton): Don't disable M4sugar comments
745 too soon: it results in comments being expanded.
746 * data/yacc.c, data/glr.c, data/lalr1.cc: Do it right before the
747 first output.
748
7492002-10-24 Akim Demaille <akim@epita.fr>
750
751 * data/yacc.c (m4_int_type): New.
752 * data/c.m4 (m4_int_type): Don't use yysigned_char, but `signed
753 char' as only yacc.c wants K&R portability.
754 * data/glr.c (yysigned_char): Remove.
755 * data/lalr1.cc: Rename the trailing b4_name as b4_parser_class_name.
756 Reported by Quoc Peyrot.
757
7582002-10-23 Paul Eggert <eggert@twinsun.com>
759
760 * src/main.c (main): With --trace=time, report times even if a
761 non-fatal error occurs. Formerly, the times were reported in some
762 such cases but not in others.
763 * src/reader.c (reader): Just return if a complaint has been issued,
764 instead of exiting, so that 'main' can report times.
765
7662002-10-22 Akim Demaille <akim@epita.fr>
767
768 * src/system.h: Include sys/types.
769 Reported by Bert Deknuydt.
770
7712002-10-23 Paul Eggert <eggert@twinsun.com>
772
773 * configure.ac (AC_PROG_LEX): Use instead of AM_PROG_LEX.
774 Suggested by Art Haas.
775
7762002-10-22 Paul Eggert <eggert@twinsun.com>
777
778 * src/complain.c (exit) [! (STDC_HEADERS || _LIBC)]: Remove exit
779 decl; not needed any more.
780 * src/main.c (main): Use return to exit, undoing yesterday's change.
781 The last OS that we could find where this wouldn't work is
782 SunOS 3.5, and that's too old to worry about now.
783
784 * data/glr.c (struct yyltype): Define members even when not
785 doing locations. This is more consistent with yacc.c, and it
786 works around the following bug reports:
787 http://mail.gnu.org/pipermail/bug-bison/2002-October/001764.html
788 http://mail.gnu.org/pipermail/bug-bison/2002-October/001769.html
789 and I hope it also fixes this bug report:
790 http://mail.gnu.org/pipermail/bug-bison/2002-October/001748.html
791
792 * doc/bison.texinfo: Minor spelling and typographical fixes. Use
793 @acronym consistently. Standardize on "Yacc" instead of "YACC",
794 "Algol" instead of "ALGOL". Give a bit more history about BNF.
795
7962002-10-22 Akim Demaille <akim@epita.fr>
797
798 * data/README: New.
799
8002002-10-21 Paul Eggert <eggert@twinsun.com>
801
802 Be consistent about 'bool'; the old code used an enum in one
803 module and an int in another, and this violates the C standard.
804 * m4/stdbool.m4: New file, from coreutils 4.5.3.
805 * configure.ac (AC_HEADER_STDBOOL): Add.
806 * m4/Makefile.am (EXTRA_DIST): Add stdbool.m4.
807 * src/muscle_tab.c (hash_compare_muscles): (a ? FALSE : TRUE) -> (! a)
808 * src/symtab.c (hash_compare_symbol_t): Likewise.
809 * src/system.h (bool, false, true): Use a definition consistent
810 with ../lib/hash.c. All uses changed.
811
812 * src/complain.c (warning_issued): Renamed from warn_message_count,
813 so that we needn't worry about integer overflow (!).
814 Now of type bool. All uses changed.
815 (complaint_issued): Renamed from complain_message_count; likewise.
816
817 * src/main.c (main): Use exit to exit with failure.
818
819 * src/complain.c (fatal_at, fatal): Use EXIT_FAILURE and EXIT_SUCCESS
820 rather than 1 and 0.
821 * src/main.c (main): Likewise.
822 * src/getargs.c (getargs): Likewise.
823 * src/reader.c (reader): Likewise.
824
825 * src/getarg.c (getargs): Remove duplicate code for
826 "Try `bison --help'".
827
828 * src/files.c (xfopen, xfclose): Use EXIT_FAILURE rather than 2.
829 What was that "2" for?
830
831 * src/complain.h (fatal, fatal_at): Add __attribute__((__noreturn__)).
832 * src/getargs.c (usage): Likewise.
833
834 * src/getargs.c (getargs): When there are too few operands, report
835 the last one. When there are too many, report the first extra
836 one. This is how diffutils does it.
837
8382002-10-20 Paul Eggert <eggert@twinsun.com>
839
840 Remove K&R vestiges.
841 * configure.ac (AC_C_CONST, AM_C_PROTOTYPES): Remove.
842 * src/complain.c (VA_START): Remove. Assume prototypes.
843 (vfprintf) [! (HAVE_VPRINTF || defined vfprintf)]: New macro.
844 (private_strerror, warn_at, warn, complain_at, complain, fatal_at,
845 fatal): Assume prototypes.
846 * src/complain.h: Assume prototypes.
847 * src/system.h (PARAMS): Remove.
848 Include <limits.h> unconditionally, since it's guaranteeed even
849 for a freestanding C89 compiler.
850 (SHRT_MIN, SHRT_MAX): Remove, since C89 guarantees them.
851 * src/vmsgetargs.c (getargs, cli_present, cli_get_value): Prototype.
852
8532002-10-20 Akim Demaille <akim@epita.fr>
854
855 * src/muscle_tab.c (muscle_grow): Remove trailing debugging code.
856 * data/glr.c (YY_USER_FORMALS, YY_USER_ARGS): New.
857 (yyuserAction, yydoAction, yyglrReduce, yyresolveValue)
858 (yyresolveStates, yyresolveAction, yyresolveStack)
859 (yyprocessOneStack): Use them.
860 (yy_reduce_print): New.
861 * tests/calc.at (_AT_DATA_CALC_Y): Exercise %parse-param.
862
8632002-10-20 Akim Demaille <akim@epita.fr>
864
865 * data/c.m4 (b4_c_ansi_args): Recognize functions with no
866 arguments and output `void'.
867 (b4_c_function): Rename as...
868 (b4_c_function_def): this.
869 (b4_c_function_decl, b4_c_ansi_function_def)
870 (b4_c_ansi_function_decl): New.
871 Change the interpretation of the arguments: before `int, foo', now
872 `int foo, foo'.
873 * data/yacc.c (yyparse): Prototype and define thanks to these.
874 Adjust b4_c_function_def uses.
875 * data/glr.c (yyparse): Likewise, but ANSI only.
876
8772002-10-20 Akim Demaille <akim@epita.fr>
878
879 * src/output.c (prepare): Move the definition of `tokens_number',
880 `nterms_number', `undef_token_number', `user_token_number_max'
881 to...
882 (prepare_tokens): Here.
883 (prepare_tokens): Rename as...
884 (prepare_symbols): this.
885 (prepare): Move the definition of `rules_number' to...
886 (prepare_rules): here.
887 (prepare): Move the definition of `last', `final_state_number',
888 `states_number' to...
889 (prepare_states): here.
890 * data/yacc.c, data/lalr1.cc, data/glr.c: Normalize `>' into `<'.
891
8922002-10-20 Akim Demaille <akim@epita.fr>
893
894 * src/tables.h, src/tables.c, src/output.c: Comment changes.
895
8962002-10-20 Akim Demaille <akim@epita.fr>
897
898 * data/yacc.c, data/yacc.c (b4_location_if, b4_pure_if): Move to...
899 * data/c.m4: here.
900
9012002-10-20 Akim Demaille <akim@epita.fr>
902
903 * src/output.c (prepare): Use MUSCLE_INSERT_STRING.
904 * src/muscle_tab.c (muscle_pair_list_grow): Rename `val as
905 `pair'.
906 (muscle_init): Move the `b4_ltype', `b4_maxdepth', `b4_initdepth',
907 `name' to...
908 * data/glr.c, data/lalr1.cc, data/yacc.c (b4_location_type)
909 (b4_stack_depth_init, b4_stack_depth_max, b4_parser_class_name):
910 These.
911
9122002-10-19 Paul Eggert <eggert@twinsun.com>
913
914 Do not create a temporary file, as that involves security and
915 cleanup headaches. Instead, use a pair of pipes.
916 Derived from a suggestion by Florian Krohm.
917 * lib/subpipe.c, lib/subpipe.h, m4/subpipe.m4: New files.
918 * lib/mkstemp.c, lib/readpipe.c, lib/tempname.c, m4/mkstemp.m4: Remove.
919 * configure.ac (UTILS_FUNC_MKSTEMP, jm_PREREQ_TEMPNAME): Remove.
920 (BISON_PREREQ_SUBPIPE): Add.
921 * lib/Makefile.am (libbison_a_SOURCES): Remove readpipe.c.
922 Add subpipe.h, subpipe.c.
923 * m4/Makefile.am (EXTRA_DIST): Remove mkstemp.m4. Add subpipe.m4.
924 * po/POTFILES.in: Add lib/subpipe.c.
925 * src/output.c: Include "subpipe.h".
926 (m4_invoke): Remove decl.
927 (scan_skel): New decl.
928 (output_skeleton): Use pipe rather than temporary file for m4 input.
929 Check that m4sugar.m4 is readable, to avoid deadlock.
930 Check for pipe I/O error.
931 * src/scan-skel.l (readpipe): Remove decl.
932 (scan_skel): New function, to be used in place of m4_invoke.
933 Read from stream rather than file.
934
935 * lib/timevar.c (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Do not cast to
936 float, as this generates a warning on Solaris 8 + GCC 3.2 with
937 --enable-gcc-warnings. Instead, divide into 1.0 rather than 1;
938 this generates a more-accurate value anyway.
939
940 * lib/timevar.c (timervar_accumulate): Rename locals to
941 avoid confusion with similarly-named more-global.
942 * src/muscle_tab.c (muscle_pair_list_grow): Likewise.
943
944 * src/output.c (prepare): Use xstrdup to convert char const *
945 to char *, to avoid GCC warning.
946
9472002-10-19 Akim Demaille <akim@epita.fr>
948
949 * tests/calc.at (_AT_DATA_CALC_Y): Define VAL, LOC, LEX_FORMALS,
950 LEX_PRE_FORMALS, LEX_ARGS, LEX_PRE_ARGS, USE_LEX_ARGS.
951 Use them to have `calc.y' ready for %pure-parser.
952 * data/yacc.c (YYLEX): Pass a yylex return type to
953 b4_c_function_call.
954
9552002-10-19 Akim Demaille <akim@epita.fr>
956
957 Prototype support of %lex-param and %parse-param.
958
959 * src/parse-gram.y: Add the definition of the %lex-param and
960 %parse-param tokens, plus their rules.
961 Drop the `_' version of %glr-parser.
962 Add the "," token.
963 * src/scan-gram.l (INITIAL): Scan them.
964 * src/muscle_tab.c: Comment changes.
965 (muscle_insert, muscle_find): Rename `pair' as `probe'.
966 * src/muscle_tab.h (MUSCLE_INSERT_PREFIX): Remove unused.
967 (muscle_entry_s): The `value' member is no longer const.
968 Adjust all dependencies.
969 * src/muscle_tab.c (muscle_init): Adjust: use
970 MUSCLE_INSERT_STRING.
971 Initialize the obstack earlier.
972 * src/muscle_tab.h, src/muscle_tab.c (muscle_grow)
973 (muscle_pair_list_grow): New.
974 * data/c.m4 (b4_c_function_call, b4_c_args): New.
975 * data/yacc.c (YYLEX): Use b4_c_function_call to honor %lex-param.
976 * tests/calc.at: Use %locations, not --locations.
977 (AT_CHECK_CALC_GLR): Use %glr-parser, not %glr_parser.
978
9792002-10-19 Akim Demaille <akim@epita.fr>
980
981 * src/getargs.c (usage): Take status as argument and exit
982 accordingly.
983 Report the traditional `Try ... --help' message when status != 0.
984 (usage, version): Don't take a FILE * as arg, it is pointless.
985 (getargs): When there is an incorrect number of arguments, make it
986 an error, and report it GNUlically thanks to `usage ()'.
987
9882002-10-18 Paul Eggert <eggert@twinsun.com>
989
990 * data/glr.c (yyreportParseError): Don't assume that sprintf
991 yields the length of the printed string, as this is not true
992 on SunOS 4.1.4. Reported by Peter Klein.
993
994 * tests/calc.at (_AT_DATA_CALC_Y): #undef memcmp and realloc.
995 * tests/conflicts.at (%nonassoc and eof): Likewise.
996 Fixes SunOS 4.1.4 test failure reported by Peter Klein.
997
9982002-10-17 Akim Demaille <akim@epita.fr>
999
1000 * src/getargs.h (trace_e): Add trace_scan, and trace_parse.
1001 * src/getargs.c (trace_types, trace_args): Adjust.
1002 * src/reader.c (grammar_current_rule_prec_set)
1003 (grammar_current_rule_dprec_set, grammar_current_rule_merge_set):
1004 Standardize error messages.
1005 And s/@prec/%prec/!
1006 (reader): Use trace_flag to enable scanner/parser debugging,
1007 instead of an adhoc scheme.
1008 * src/scan-gram.l: Remove trailing debugging code.
1009
10102002-10-16 Paul Eggert <eggert@twinsun.com>
1011
1012 * src/muscle_tab.h (MUSCLE_TAB_H_): Was misspelled as
1013 MUSCLE_TAB_H.
1014
1015 * NEWS: Officially drop support for building Bison with K&R C,
1016 since it didn't work anyway and it's not worth worrying about.
1017 * Makefile.maint (wget_files): Remove ansi2knr.c.
1018 (ansi2knr.c-url_prefix): Remove.
1019 * lib/.cvsignore: Remove ansi2knr, ansi2knr.*.
1020 * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove.
1021 * src/Makefile.am (AUTOMAKE_OPTIONS): Remove.
1022
10232002-10-15 Paul Eggert <eggert@twinsun.com>
1024
1025 Stop using the "enum_" trick for K&R-style function definitions;
1026 it confused me, and I was the author! Instead, assume that people
1027 who want to use K&R C compilers (when using these modules in GCC,
1028 perhaps?) will run ansi2knr.
1029
1030 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): Remove.
1031 All uses of "enum_" changed to "enum ".
1032 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
1033 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
1034
1035 * lib/abitset.c (abitset_and, abitset_and_cmp, abitset_and_or,
1036 abitset_and_or_cmp, abitset_andn, abitset_andn_cmp,
1037 abitset_andn_or, abitset_andn_or_cmp, abitset_bytes, abitset_copy,
1038 abitset_copy1, abitset_disjoint_p, abitset_empty_p,
1039 abitset_equal_p, abitset_init, abitset_list, abitset_list_reverse,
1040 abitset_not, abitset_ones, abitset_or, abitset_or_and,
1041 abitset_or_and_cmp, abitset_or_cmp, abitset_reset, abitset_set,
1042 abitset_size, abitset_small_list, abitset_subset_p, abitset_test,
1043 abitset_unused_clear, abitset_xor, abitset_xor_cmp, abitset_zero):
1044 Use function prototypes; this removes the need for declaring
1045 static functions simply to provide their prototypes.
1046 * lib/bitset.c (bitset_alloc, bitset_and_or_, bitset_and_or_cmp_,
1047 bitset_andn_or_, bitset_andn_or_cmp_, bitset_bytes, bitset_copy_,
1048 bitset_count_, bitset_create, bitset_dump, bitset_first,
1049 bitset_free, bitset_init, bitset_last, bitset_next,
1050 bitset_obstack_alloc, bitset_obstack_free, bitset_only_set_p,
1051 bitset_op4_cmp, bitset_or_and_, bitset_or_and_cmp_, bitset_prev,
1052 bitset_print, bitset_release_memory, bitset_toggle_,
1053 bitset_type_choose, bitset_type_get, bitset_type_name_get,
1054 debug_bitset): Likewise.
1055 * lib/bitset.h (bitset_set, bitset_reset, bitset_test): Likewise.
1056 * lib/bitset_stats.c (bitset_log_histogram_print,
1057 bitset_percent_histogram_print, bitset_stats_and,
1058 bitset_stats_and_cmp, bitset_stats_and_or,
1059 bitset_stats_and_or_cmp, bitset_stats_andn, bitset_stats_andn_cmp,
1060 bitset_stats_andn_or, bitset_stats_andn_or_cmp, bitset_stats_copy,
1061 bitset_stats_count, bitset_stats_disable, bitset_stats_disjoint_p,
1062 bitset_stats_dump, bitset_stats_empty_p, bitset_stats_enable,
1063 bitset_stats_equal_p, bitset_stats_free, bitset_stats_init,
1064 bitset_stats_list, bitset_stats_list_reverse, bitset_stats_not,
1065 bitset_stats_ones, bitset_stats_or, bitset_stats_or_and,
1066 bitset_stats_or_and_cmp, bitset_stats_or_cmp, bitset_stats_print,
1067 bitset_stats_print_1, bitset_stats_read, bitset_stats_reset,
1068 bitset_stats_set, bitset_stats_size, bitset_stats_subset_p,
1069 bitset_stats_test, bitset_stats_toggle, bitset_stats_type_get,
1070 bitset_stats_write, bitset_stats_xor, bitset_stats_xor_cmp,
1071 bitset_stats_zero): Likewise.
1072 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
1073 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
1074 bitsetv_dump, debug_bitsetv): Likewise.
1075 * lib/ebitset.c (ebitset_and, ebitset_and_cmp, ebitset_andn,
1076 ebitset_andn_cmp, ebitset_bytes, ebitset_copy, ebitset_copy_,
1077 ebitset_copy_cmp, ebitset_disjoint_p, ebitset_elt_add,
1078 ebitset_elt_alloc, ebitset_elt_calloc, ebitset_elt_find,
1079 ebitset_elt_free, ebitset_elt_last, ebitset_elt_remove,
1080 ebitset_elt_zero_p, ebitset_elts_grow, ebitset_empty_p,
1081 ebitset_equal_p, ebitset_free, ebitset_init, ebitset_list,
1082 ebitset_list_reverse, ebitset_not, ebitset_ones, ebitset_op3_cmp,
1083 ebitset_or, ebitset_or_cmp, ebitset_release_memory, ebitset_reset,
1084 ebitset_set, ebitset_size, ebitset_subset_p, ebitset_test,
1085 ebitset_weed, ebitset_xor, ebitset_xor_cmp, ebitset_zero):
1086 Likewise.
1087 * lib/lbitset.c (debug_lbitset, lbitset_and, lbitset_and_cmp,
1088 lbitset_andn, lbitset_andn_cmp, lbitset_bytes, lbitset_copy,
1089 lbitset_copy_cmp, lbitset_disjoint_p, lbitset_elt_alloc,
1090 lbitset_elt_calloc, lbitset_elt_find, lbitset_elt_free,
1091 lbitset_elt_link, lbitset_elt_unlink, lbitset_elt_zero_p,
1092 lbitset_empty_p, lbitset_equal_p, lbitset_free, lbitset_init,
1093 lbitset_list, lbitset_list_reverse, lbitset_not, lbitset_ones,
1094 lbitset_op3_cmp, lbitset_or, lbitset_or_cmp, lbitset_prune,
1095 lbitset_release_memory, lbitset_reset, lbitset_set, lbitset_size,
1096 lbitset_subset_p, lbitset_test, lbitset_weed, lbitset_xor,
1097 lbitset_xor_cmp, lbitset_zero): Likewise.
1098
10992002-10-14 Akim Demaille <akim@epita.fr>
1100
1101 Version 1.75.
1102
11032002-10-14 Akim Demaille <akim@epita.fr>
1104
1105 * tests/Makefile.am (maintainer-check-posix): New.
1106
11072002-10-14 Akim Demaille <akim@epita.fr>
1108
1109 * data/glr.c [YYDEBUG] (YYLEFTMOST_STATE): Initialize the yyloc
1110 member.
1111
11122002-10-14 Akim Demaille <akim@epita.fr>
1113
1114 * src/tables.c (table_ninf_remap): base -> tab.
1115 Reported by Matt Rosing.
1116
11172002-10-14 Paul Eggert <eggert@twinsun.com>
1118
1119 * tests/action.at, tests/calc.at, tests/conflicts.at,
1120 tests/cxx-type.at, tests/headers.at, tests/input.at,
1121 tests/regression.at, tests/synclines.at, tests/torture.at:
1122 Say "bison -o foo.c foo.y", not "bison foo.y -o foo.c",
1123 so that the tests still work even if POSIXLY_CORRECT is set.
1124 * doc/bison.texinfo (Rpcalc Compile, Invocation): Likewise.
1125
1126 * data/c.m4 (b4_int_type): Use yysigned_char instead of signed char,
1127 for portability to K&R hosts. Fix typo: signed char is guaranteed
1128 only to 127, not to 128.
1129 * data/glr.c (yysigned_char): New type.
1130 * data/yacc.c (yysigned_char): Likewise.
1131 * tests/regression.at (Web2c Actions): signed char -> yysigned_char.
1132
11332002-10-13 Paul Eggert <eggert@twinsun.com>
1134
1135 * data/yacc.c (yyparse): Rewrite to avoid "comparison is always
1136 true due to limited range of data type" warning from GCC.
1137
1138 * data/c.m4 (b4_token_defines): Protect against double-inclusion
1139 by wrapping enum yytokentype's definition inside #ifndef
1140 YYTOKENTYPE. This undoes a bug I introduced on 2002-10-12.
1141
11422002-10-13 Akim Demaille <akim@epita.fr>
1143
1144 * data/glr.c (yyglrShiftDefer, yyaddDeferredAction, yydoAction):
1145 Un yy- yyrhs to avoid the name clash with the global YYRHS.
1146
11472002-10-13 Akim Demaille <akim@epita.fr>
1148
1149 * Makefile.maint: Update from Autoconf 2.54.
1150 * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Remove, shipped with 2.54.
1151
11522002-10-13 Akim Demaille <akim@epita.fr>
1153
1154 * src/print.c (print_state): Separate the list of solved conflicts
1155 from the other items.
1156 * tests/conflicts.at (Resolved SR Conflicts): Adjust.
1157
11582002-10-13 Akim Demaille <akim@epita.fr>
1159
1160 Let nondeterministic skeletons be usable with deterministic
1161 tables.
1162
1163 With the patch, GAWK compiled by GCC without -O2 passes its test
1164 suite using a GLR parser driven by LALR tables. It fails with -O2
1165 because `struct stat' gives two different answers on my machine:
1166 88 (definition of an auto var) and later 96 (memset on this var).
1167 Hence the stack is badly corrumpted. The headers inclusion is to
1168 blame: if I move the awk.h inclusion before GLR's system header
1169 inclusion, the two struct stat have the same size.
1170
1171 * src/tables.c (pack_table): Always create conflict_table.
1172 (token_actions): Always create conflict_list.
1173 * data/glr.c (YYFLAG): Remove, unused.
1174
11752002-10-13 Akim Demaille <akim@epita.fr>
1176
1177 * configure.ac (AC_GNU_SOURCE): Use it instead of hand written code.
1178 (O0FLAGS): New.
1179 (VALGRIND, GXX): New.
1180 * tests/atlocal.in (CFLAGS): Use O0FLAGS.
1181 * tests/bison.in: Run $PREBISON a pre-command.
1182 * tests/Makefile.am (maintainer-check, maintainer-check-valgrind)
1183 (maintainer-check-g++): New.
1184 * Makefile.am (maintainer-check): New.
1185
11862002-10-13 Akim Demaille <akim@epita.fr>
1187
1188 * data/glr.c: Formatting changes.
1189 Tweak some trace messages to match yacc.c's.
1190
11912002-10-13 Akim Demaille <akim@epita.fr>
1192
1193 GLR parsers sometimes raise parse errors instead of performing the
1194 default reduction.
1195 Reported by Charles-Henry de Boysson.
1196
1197 * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't
1198 check the length of the traces when %glr.
1199 (_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from
1200 GLR's traces.
1201 (AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New.
1202 Test GLR parsers.
1203 * data/glr.c (YYLEFTMOST_STATE): Fix its value.
1204 (yyltype): Remove the yy prefix from the member names.
1205 (yytable): Complete its comment.
1206 (yygetLRActions): Map error action number from YYTABLE from
1207 YYTABLE_NINF to 0.
1208 (yyisErrorAction): No longer compare YYACTION to YYPACT_NINF
1209 (which was a bug: it should have been YYTABEL_NINF, and yet it was
1210 not satisfying as we could compare an YYACTION computed from
1211 YYDEFACT to YYTABLE_NINF although they are unrelated): 0 is the
1212 only value for error actions.
1213 (yyreportParseError): In verbose parse error messages, don't issue
1214 `error' in the list of expected tokens.
1215 * data/yacc.c (yyparse) <yybackup>: Rewrite the decoding of the
1216 next action to perform to match glr.c's decoding.
1217 (yytable): Complete its comment.
1218
12192002-10-13 Paul Eggert <eggert@twinsun.com>
1220
1221 Fix problem reported by Henrik Grubbstroem in
1222 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001670.html>:
1223 "nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected,
1224 because the Bison parser reads the second action before reducing
1225 the first one.
1226 * src/scan-gram.l (rule_length): New static var.
1227 Use it to keep track of the rule length in the scanner, since
1228 we can't expect the parser to be in lock-step sync with the scanner.
1229 (handle_action_dollar, handle_action_at): Use this var.
1230 * tests/actions.at (Exotic Dollars): Test for the problem.
1231
12322002-10-12 Paul Eggert <eggert@twinsun.com>
1233
1234 * lib/timevar.c [! IN_GCC && HAVE_SYS_TIME_H]: Include <sys/time.h>.
1235 * m4/timevar.m4 (BISON_PREREQ_TIMEVAR): Check for <sys/time.h>.
1236 Include <sys/time.h> when checking for clock_t and struct tms.
1237 Use same include order as source.
1238 This is for the SunOS 4.1.4 porting bug reported by Peter Klein in
1239 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001674.html>.
1240
1241 * lib/timevar.c: Update copyright date and clarify comments.
1242 (get_time) [IN_GCC]: Keep the GCC version for reference.
1243
1244 * lib/timevar.c, lib/timevar.h, lib/timevar.def: Import
1245 GCC version as of today, then merge Bison's changes.
1246 Change "GCC" to "Bison" in copyright notice. timevar.def's
1247 author is Akim, so change that too.
1248
1249 * src/reader.c (grammar_current_rule_check):
1250 Don't worry about the default action if $$ is untyped.
1251 Prevents bogus warnings reported by Jim Gifford in
1252 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001673.html>.
1253
1254 * data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE.
1255 * data/glr.c, data/lalr1.cc, data/yacc.c:
1256 Output token definitions before the first part of user declarations.
1257 Fixes compatibility problem reported by Jim Gifford for kbd in
1258 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001672.html>.
1259
12602002-10-11 Paul Eggert <eggert@twinsun.com>
1261
1262 * data/yacc.c (yyreport_parse_error): Remove, putting its body into...
1263 (yyparse): here. This undoes some of the 2002-07-25 change.
1264 Compatibility problem reported by Ralf S. Engelschall with
1265 OSSP cfg <http://www.ossp.org/pkg/lib/cfg/>.
1266
12672002-10-11 Akim Demaille <akim@epita.fr>
1268
1269 * tests/regression.at Characters Escapes): New.
1270 * src/scan-gram.l (SC_ESCAPED_CHARACTER): Accept \' in strings and
1271 characters.
1272 Reported by Jan Nieuwenhuizen.
1273
12742002-10-11 Akim Demaille <akim@epita.fr>
1275
1276 * po/id.po: New.
1277
12782002-10-10 Paul Eggert <eggert@twinsun.com>
1279
1280 Portability fixes for bitsets; this also avoids several GCC
1281 warnings.
1282
1283 * lib/abitset.c: Include <stddef.h>, for offsetof.
1284 * lib/lbitset.c: Likewise.
1285
1286 * lib/abitset.c (abitset_bytes): Return a size that is aligned
1287 properly for vectors of objects. Do not assume that adding a
1288 header size to a multiple of a word size yields a value that is
1289 properly aligned for the whole union.
1290 * lib/bitsetv.c (bitsetv_alloc): Likewise.
1291
1292 * lib/bitset_stats.c (bitset_stats_bytes): Adjust to new,
1293 unique names for structures.
1294 * lib/ebitset.c (ebitset_bytes): Likewise.
1295 * lib/lbitset.c (lbitset_bytes): Likewise.
1296
1297 * lib/abitset.c (abitset_ones, abitset_zero, abitset_empty_p,
1298 abitset_copy1, abitset_not, abitset_equal_p, abitset_subset_p,
1299 abitset_disjoint_p, abitset_and, abitset_and_cmp, abitset_andn,
1300 abitset_andn_cmp, abitset_or, abitset_or_cmp, abitset_xor,
1301 abitset_xor_cmp, abitset_and_or, abitset_and_or_cmp,
1302 abitset_andn_or, abitset_andn_or_cmp, abitset_or_and,
1303 abitset_or_and_cmp, abitset_copy): Supply prototype decls,
1304 to improve the type-checking that GCC can do.
1305 * lib/bitset.c (bitset_op4_cmp): Likewise.
1306 * lib/bitset_stats.c (bitset_stats_count,
1307 bitset_stats_empty_p, bitset_stats_ones, bitset_stats_zero,
1308 bitset_stats_copy, bitset_stats_disjoint_p,
1309 bitset_stats_equal_p, bitset_stats_not, bitset_stats_subset_p,
1310 bitset_stats_and, bitset_stats_and_cmp, bitset_stats_andn,
1311 bitset_stats_andn_cmp, bitset_stats_or, bitset_stats_or_cmp,
1312 bitset_stats_xor, bitset_stats_xor_cmp, bitset_stats_and_or,
1313 bitset_stats_and_or_cmp, bitset_stats_andn_or,
1314 bitset_stats_andn_or_cmp, bitset_stats_or_and,
1315 bitset_stats_or_and_cmp): Likewise.
1316 * lib/lbitset.c (lbitset_and, lbitset_and_cmp, lbitset_andn,
1317 lbitset_andn_cmp, lbitset_or, lbitset_or_cmp, lbitset_xor,
1318 lbitset_xor_cmp, lbitset_empty_p, lbitset_ones, lbitset_not,
1319 lbitset_subset_p, lbitset_disjoint_p, debug_lbitset): Likewise.
1320
1321 * lib/abitset.h: Include bitset.h, not bbitset.h.
1322 * lib/ebitset.h: Likewise.
1323 * lib/lbitset.h: Likewise.
1324
1325 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): New types.
1326 All instances of parameters of type enum bitset_opts are now of
1327 type enum_bitset_opts, to conform to the C Standard, and similarly
1328 for enum_bitset_type.
1329 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
1330 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
1331
1332 Do not use "struct bitset_struct" to mean different things in
1333 different modules. Not only is this confusing, it violates
1334 the C Standard, which requires that structure types in different
1335 modules must be compatible if one is to be passed to the other.
1336 * lib/bbitset.h (bitset): Now points to a union, not to a struct.
1337 All instances of "struct bitset_struct *" replaced with "bitset".
1338 * lib/bitset.h (struct bitset_struct): Remove, replacing with....
1339 (union bitset_union, struct abitset_struct, struct ebitset_struct,
1340 struct lbitset_struct, struct bitset_stats_struct): New types.
1341 All uses of struct bitset_struct changed to union bitset_union,
1342 etc.
1343 * lib/abitset.c (struct abitset_struct, abitset,
1344 struct bitset_struct): Remove.
1345 * lib/bitset_stats.c (struct bitset_stats_struct, bitset_stats,
1346 struct bitset_struct): Remove.
1347 * lib/ebitset.c (struct ebitset_struct, ebitset, struct
1348 bitset_struct): Remove.
1349 * lib/lbitset.c (struct lbitset_struct, lbitset, bitset_struct):
1350 Likewise.
1351
1352 Do not call a function of type T using a call that assumes the
1353 function is of a different type U. Standard C requires that a
1354 function must be called with a type that is compatible with its
1355 definition.
1356 * lib/bbitset.h (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
1357 New decls.
1358 * lib/bitset.c (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
1359 New functions.
1360 * lib/ebitset.c (PFV): Remove.
1361 * lib/lbitset.c (PFV): Likewise.
1362 * lib/ebitset.c (ebitset_and, ebitset_andn, ebitset_or,
1363 ebitset_xor, ebitset_copy, ebitset_ones, ebitset_empty_p): New
1364 decls.
1365 (ebitset_and, ebitset_andn, ebitset_or, ebitset_xor): New functions.
1366 (ebitset_vtable): Use them.
1367 * lib/lbitset.c (lbitset_and, lbitset_andn, lbitset_or,
1368 lbitset_xor): New functions.
1369 (lbitset_vtable): Use them.
1370
1371 * lib/bitset.h (bitset_next, bitset_prev, bitset_only_set_p):
1372 Declare.
1373
1374 * lib/bitsetv.c (bitsetv_alloc): Add a cast to (void *) to avoid a
1375 GCC warning.
1376 * lib/lbitset.c (LBITSET_CURRENT1): Likewise.
1377 Use offsetof, for simplicity.
1378
13792002-10-06 Paul Eggert <eggert@twinsun.com>
1380
1381 * lib/bitset.h (bitset_reset): Do not assume that bitset_word is
1382 the same width as int. This reapplies a hunk of the 2002-08-12 patch
1383 <http://mail.gnu.org/pipermail/bison-patches/2002-August/001111.html>,
1384 which was inadvertently undone by the 2002-09-30 patch.
1385 * lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is
1386 the same width as int.
1387
13882002-10-04 Paul Eggert <eggert@twinsun.com>
1389
1390 Version 1.50.
1391
1392 * configure.ac (AC_INIT), NEWS: Increment version number.
1393
1394 * doc/bison.texinfo: Minor spelling, grammar, and white space
1395 fixes.
1396 (Symbols): Mention that any negative value returned from yylex
1397 signifies end-of-input. Warn about negative chars. Mention
1398 the portable Standard C character set.
1399
1400 The GNU coding standard says CFLAGS and YFLAGS are reserved
1401 for the installer to set.
1402 * lib/Makefile.am (AM_CFLAGS): Renamed from CFLAGS.
1403 * src/Makefile.am (AM_CFLAGS): Likewise.
1404 (AM_YFLAGS): Renamed from YFLAGS.
1405
1406 Fix some MAX and MIN problems.
1407 * src/gram.h (ITEM_NUMBER_MIN): MIN_MAX -> INT_MIN.
1408 * src/lalr.h (GOTO_NUMBER_MAX): INT_MAX -> SHRT_MAX.
1409 * src/symtab.h (SYMBOL_NUMBER_MAX): New macro.
1410 * src/reader.c (reader): Use it.
1411
1412 * tests/regression.at (Braces parsing): Use grep, not fgrep, as
1413 POSIX 1003.1-2001 has removed fgrep.
1414
14152002-10-04 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
1416
1417 * lib/bbitset.h (BITSET_WINDEX_MAX): Redefine so that it cannot be
1418 interpreted as signed.
1419 * lib/ebitset.c (ebitset_list): Fix bug.
1420
14212002-10-01 Paul Eggert <eggert@twinsun.com>
1422
1423 More fixes for 64-bit hosts and large bitsets.
1424
1425 * lib/abitset.c (struct abitset_struct.n_bits, abitset_small_list,
1426 abitset_size, abitset_list, abitset_list_reverse, abitset_list):
1427 Use bitset_bindex, not int or unsigned int or size_t, to count bits.
1428 * lib/bbitset.h (struct bitset_vtable.size, struct bitset_vtable.count,
1429 struct bitset_vtable.list, struct bitset_vtable.list_reverse,
1430 bitset_count_, bitset_next, bitset_prev, bitset_first, bitset_last,
1431 bitset_count_): Likewise.
1432 * lib/bitset.h (bitset_iterator.num, bitset_iterator.i,
1433 bitset_first, bitset_last): Likewise.
1434 * lib/bitset_stats.c (bitset_stats_size, bitset_stats_list,
1435 bitset_stats_list_reverse, bitset_stats_size,
1436 bitset_stats_count, bitset_stats_list, bitset_stat_list_reverse):
1437 Likewise.
1438 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
1439 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
1440 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
1441 bitsetv_reflexive_transitive_closure): Likewise.
1442 * lib/bitsetv.h (bitsetv_alloc, bitsetv_create): Likewise.
1443 * lib/ebitset.c (ebitset_size, ebitset_list, ebitset_list_reverse):
1444 Likewise.
1445 * lib/lbitset.c (lbitset_size, lbitset_list, lbitset_list_merge):
1446 Likewise.
1447
1448 * lib/abitset.c (abitset_ones, abitset_zero, abitset_bytes):
1449 Use size_t, not unsigned int, to count bytes.
1450 * lib/abitset.h (abitset_bytes): Likewise.
1451 * lib/bitset.c (bitset_bytes, bitset_alloc, bitset_obstack_alloc):
1452 Likewise.
1453 * lib/bitset.h (bitset_bytes): Likewise.
1454 * lib/bitset_stats.c (bitset_stats_bytes, bitset_stats_init): Likewise.
1455 * lib/bitset_stats.h (bitset_stats_bytes): Likewise.
1456 * lib/bitsetv.c (bitsetv_alloc): Likewise.
1457 * lib/ebitset.c (ebitset_bytes): Likewise.
1458 * lib/ebitset.h (ebitset_bytes): Likewise.
1459 * lib/lbitset.c (lbitset_bytes): Likewise.
1460 * lib/lbitset.h (lbitset_bytes): Likewise.
1461
1462 * lib/abitset.c (abitset_empty_p, abitset_not, abitset_equal_p,
1463 abitset_subset_p, abitset_disjoint_p, abitset_and,
1464 abitset_and_cmp, abitset_andn, abitset_andn_cmp, abitset_or,
1465 abitset_or_cmp, abitset_xor, abitset_xor_cmp, abitset_and_or,
1466 abitset_and_or_cmp, abitset_andn_or, abitset_andn_or_cmp,
1467 abitset_or_and, abitset_or_and_cmp):
1468 Use bitset_windex instead of unsigned int.
1469 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
1470 * lib/ebitset.c (struct ebitset_struct.size, ebitset_elts_grow,
1471 ebitset_elt_add, ebitset_elt_remove, ebitset_weed,
1472 ebitset_elt_find, ebitset_list_reverse, ebitset_list, ebitset_init):
1473 Likewise.
1474 * lib/lbitset.c (lbitset_ones, lbitset_not): Likewise.
1475
1476 * lib/bitset.c (bitset_print):
1477 Use proper printf formats for widths of integer types.
1478 * lib/bitset_stats.c (bitset_percent_histogram_print,
1479 bitset_log_histogram_print, bitset_stats_print_1): Likewise.
1480 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
1481 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
1482 * lib/lbitset.c (lbitset_bytes): Likewise.
1483
1484 * lib/bbitset.h (BITSET_BINDEX_MAX, BITSET_WINDEX_MAX,
1485 BITSET_SIZE_MAX): New macros.
1486 (BITSET_INDEX_MAX): Remove. It wasn't right, since it assumed that
1487 sizeof (bitset_word) == sizeof (bitset_windex). All uses changed
1488 to BITSET_WINDEX_MAX.
1489
1490 * lib/bitset.c (bitset_next, bitset_prev, bitset_first,
1491 bitset_last): Return BITSET_BINDEX_MAX (not -1) for no value,
1492 since we now return the bitset_bindex type (not int).
1493
1494 * lib/bitsetv.c (bitsetv_alloc): Check for arithmetic overflow
1495 when computing sizes.
1496 * lib/ebitset.c (ebitset_elts_grow): Likewise.
1497
1498 * lib/lbitset.c (lbitset_elt_find): Simplify windex calculation
1499 and avoid cast to unsigned.
1500
15012002-09-30 Akim Demaille <akim@epita.fr>
1502
1503 * lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
1504 * lib/bitset_stats.c, lib/bitsetv.c, lib/ebitset.c, lib/lbitset.c:
1505 Updates from Michael Hayes.
1506
15072002-09-30 Art Haas <ahaas@neosoft.com>
1508
1509 * configure.ac: Update AC_OUTPUT and AM_CONFIG_HEADER
1510 invocations.
1511 * tests/cxx-type.at (declarator): Don't rely on NDEBUG being not
1512 defined.
1513
15142002-09-27 Akim Demaille <akim@epita.fr>
1515
1516 Version 1.49c.
1517
15182002-09-27 Akim Demaille <akim@epita.fr>
1519
1520 * configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7.
1521 (Because of AC_LIBSOURCE).
1522
15232002-09-27 Akim Demaille <akim@epita.fr>
1524
1525 Playing with Autoscan.
1526
1527 * configure.ac: Remove the old LIBOBJ tweaks.
1528 (AC_REPLACE_FUNCS): Add strrchr and strtol.
1529 * lib/strrchr.c: New.
1530 * lib/strtol.c: New, from the Coreutils 4.5.1.
1531
15322002-09-27 Akim Demaille <akim@epita.fr>
1533
1534 Playing with Autoscan.
1535
1536 * m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New.
1537 * lib/Makefile.am (libbison_a_SOURCES): No longer include
1538 argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd.
1539 * lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the
1540 Coreutils 4.5.1.
1541
15422002-09-24 Akim Demaille <akim@epita.fr>
1543
1544 * doc/bison.texinfo (Stack Overflow): xref to Recursion.
1545 (Frequently Asked Questions, Parser Stack Overflow): New.
1546
15472002-09-13 Akim Demaille <akim@epita.fr>
1548
1549 Playing with autoscan.
1550
1551 * src/reader.c (get_merge_function): Use xstrdup, not strdup.
1552 * src/files.c (skeleton_find): Remove, unused.
1553 * m4/memcmp.m4: New, from the Coreutils 4.5.1.
1554 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP.
1555
15562002-09-13 Akim Demaille <akim@epita.fr>
1557
1558 * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3.
1559 * Makefile.am (AUTOMAKE_OPTIONS): Don't.
1560
15612002-09-13 Akim Demaille <akim@epita.fr>
1562
1563 * configure.ac: Require 2.54.
1564 s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/.
1565 s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/.
1566 * m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4:
1567 Remove, provided by Autoconf macros.
1568
15692002-09-12 Akim Demaille <akim@epita.fr>
1570
1571 * m4/prereq.m4: Update, from Coreutils 4.5.1.
1572
15732002-09-12 Akim Demaille <akim@epita.fr>
1574
1575 * m4/prereq.m4: Update, from Fileutils 4.1.5.
1576 * configure.ac (jm_PREREQ_TEMPNAME): Invoke it.
1577 Reported by Martin Mokrejs.
1578
15792002-09-10 Akim Demaille <akim@epita.fr>
1580
1581 * src/parse-gram.y: Associate a human readable string to each
1582 token type.
1583 * tests/regression.at (Invalid inputs): Adjust.
1584
15852002-09-10 Gary V. Vaughan <gary@gnu.org>
1586
1587 * tests/Makefile.am ($(srcdir)/package.m4): Bison now ships
1588 with an Autoconf-2.5x style configure.ac.
1589
15902002-09-06 Paul Eggert <eggert@twinsun.com>
1591
1592 * doc/bison.texinfo (Conditions): Make explicit that the GPL
1593 exception applies only to yacc.c. This is a modification of a
1594 patch originally suggested by Akim Demaille.
1595
15962002-09-06 Akim Demaille <akim@epita.fr>
1597
1598 * data/c.m4 (b4_copyright): Move the GPL exception comment from
1599 here to...
1600 * data/yacc.c: here.
1601
1602 * data/lalr1.cc (struct yyltype): Don't define it, since we use
1603 LocationType.
1604 (b4_ltype): Default to yy::Location from location.hh.
1605
16062002-09-04 Jim Meyering <jim@meyering.net>
1607
1608 * data/yacc.c: Guard the declaration of yytoknum also with
1609 `#ifdef YYPRINT', so it is declared only when used.
1610
16112002-09-04 Akim Demaille <akim@epita.fr>
1612
1613 * configure.in: Rename as...
1614 * configure.ac: this.
1615 Bump to 1.49c.
1616
16172002-09-04 Akim Demaille <akim@epita.fr>
1618
1619 * src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
1620 * src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
1621 translate maintainer only messages.
1622
16232002-08-12 Paul Eggert <eggert@twinsun.com>
1624
1625 Version 1.49b.
1626
1627 * Makefile.am (SUBDIRS): Remove intl.
1628 (DISTCLEANFILES): Remove.
1629 * NEWS: Mention that GNU M4 is now required. Clarify what is
1630 meant by "larger grammars". Mention the pt_BR translation.
1631 * configure.in (AC_CHECK_DECLS): Add getenv, getopt.
1632 (AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var.
1633 Bump version from 0.11.2 to 0.11.5.
1634 (BISON_PREREQ_STAGE): Remove.
1635 (AM_GNU_GETTEXT): Use external gettext.
1636 (AC_OUTPUT): Remove intl/Makefile.
1637
1638 * config/depcomp, config/install-sh: Sync with Automake 1.6.3.
1639
1640 * data/glr.c: Include string.h, for strlen.
1641 (yyreportParseError): Use size_t for yysize.
1642 (yy_yypstack): No longer nested inside yypstates, as nested
1643 functions are not portable. Do not assume size_t is the
1644 same width as int.
1645 (yypstates): Do not assume that ptrdiff_t is the same width
1646 as int, and similarly for yyposn and YYINDEX.
1647
1648 * data/yacc.c: Fix comment about `$$ = $1': it can copy garbage.
1649
1650 * lib/Makefile.am (INCLUDES): Do not include from the intl
1651 directory, which has been removed.
1652 * src/Makefile.am (INCLUDES): Likewise.
1653
1654 * lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h.
1655 (bitsets_sources, additional_bitsets_sources, timevars_sources):
1656 New vars.
1657
1658 * lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension.
1659 * tests/Makefile.am (EXTRA_DIST): Likewise.
1660
1661 * lib/abitset.c (abitset_reverse_list, ebitset_reverse_list):
1662 Do not assume that bitset_windex is the same width as unsigned.
1663
1664 * lib/abitset.c (abitset_unused_clear): Do not assume that
1665 bitset_word is the same width as int.
1666 * lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise.
1667 * lib/bitset.h (bitset_set, bitset_reset): Likewise.
1668 * lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise.
1669 * lib/ebitset.c (ebitset_set, ebitset_reset): Likewise.
1670 * lib/lbitset.c (lbitset_set, lbitset_reset): Likewise.
1671
1672 * lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for
1673 portability to one's complement hosts!).
1674 * lib/ebitset.c (ebitset_op1): Likewise.
1675 * lib/lbitset.c (lbitset_op1): Likewise.
1676
1677 * lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar.
1678 * lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
1679 lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c:
1680 Sync with fileutils.
1681 * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
1682 lib/gettext.h: Sync with diffutils.
1683
1684 * lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c,
1685 lib/strspn.c, lib/tempname.c: Use GPL, not LGPL.
1686
1687 * lib/obstack.c, lib/obstack.h: Sync with fileutils, except use
1688 PROTOTYPES to check for prototypes, and "defined __STDC__" to
1689 check for void *.
1690
1691 * lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not
1692 size_t; the old version tried to do this but casted improperly.
1693 (bitset_bindex, bitset_windex): Now size_t, not unsigned long.
1694 (bitset_test): Now returns int, not unsigned long.
1695
1696 * lib/bitset_stats.c: Include "gettext.h".
1697 (_): New macro.
1698 (bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't
1699 name locals "index", as it generates unnecessary warnings on some
1700 hosts that have an "index" function.
1701
1702 * lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print,
1703 bitset_stats_read, bitset_stats_write): Wrap strings in _() if
1704 they need translation.
1705 * src/LR0.c (state_list_append, new_itemsets, get_state,
1706 append_states, generate_states): Likewise.
1707 * src/assoc.c (assoc_to_string): Likewise.
1708 * src/closure.c (print_closure, set_firsts, closure): Likewise.
1709 * src/gram.c (grammar_dump): Likewise.
1710 * src/injections.c (injections_compute): Likewise.
1711 * src/lalr.c (lookaheads_print): Likewise.
1712 * src/relation.c (relation_transpose): Likewise.
1713 * src/scan-gram.l: Likewise.
1714 * src/tables.c (table_grow, pack_vector): Likewise.
1715
1716 * m4/Makefile.am (EXTRA_DIST): Remove codeset.m4,
1717 glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4.
1718 * m4/malloc.m4, m4/realloc.m4: Sync with diffutils.
1719 * m4/mbstate_t.m4: Sync with fileutils.
1720 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T.
1721
1722 * po/LINGUAS: Add pt_BR.
1723 * po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c,
1724 src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c,
1725 lib/timevar.c.
1726 Use src/parse-gram.y instead of src/parse-gram.c, as the gettext
1727 manual recommends.
1728 Similarly, use src/scan-gram.l instead of src/scan-gram.c.
1729
1730 * src/complain.c (strerror_r): Remove decl; not needed.
1731 (strerror): Use same pattern as ../lib/error.c.
1732
1733 * src/files.c, src/files.h (compute_header_macro): Remove; unused.
1734
1735 * src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int.
1736
1737 * src/main.c (main): Cast result of bindtextdomain and textdomain
1738 to void, to avoid a GCC warning when --disable-nls is in effect.
1739
1740 * src/scan-gram.l: Use strings rather than escapes when possible,
1741 to minimize the number of warnings from xgettext.
1742 (handle_action_dollar, handle_action_at): Don't use isdigit,
1743 as it mishandles negative chars and it may not work as expected
1744 outside the C locale.
1745
1746 * src/symtab.c (symbol_get): Don't cast LHS of an assignment;
1747 this is a GCC extension and is not portable to other compilers.
1748
1749 * src/system.h (alloca): Use same pattern as ../lib/error.c.
1750 Do not include <ctype.h>; no longer needed.
1751 Do not include <malloc.h>; no longer needed (and generates
1752 warnings on OpenBSD 3.0).
1753
1754 * tests/cxx-type.at (yylex): Do not pass signed char to isupper;
1755 it's not portable.
1756
1757 * tests/regression.at: Do not use 'cc -c input.c -o input';
1758 Sun C rejects this. Instead, use 'cc -c input.c -o input.o'.
1759
1760 * tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero
1761 exit status as failure, not just exit status 1. Sun C exits
1762 with status 2 sometimes.
1763
1764 * tests/torture.at (AT_INCREASE_DATA_SIZE): New macro.
1765 Use it for the two large tests.
1766
17672002-08-02 Akim Demaille <akim@epita.fr>
1768
1769 * src/conflicts.c (conflicts_output): Don't output rules never
1770 reduced here, since anyway that computation doesn't work.
1771 * src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
1772 (rule_useless_p, rule_never_reduced_p): New.
1773 (grammar_rules_partial_print): Use a filter instead of a range.
1774 Display the title only if needed.
1775 (grammar_rules_print): Adjust.
1776 (grammar_rules_never_reduced_report): New.
1777 * src/tables.c (action_row): Move the computation of rules never
1778 reduced to...
1779 (token_actions): here.
1780 * src/main.c (main): Make the parser before making the report, so
1781 that rules never reduced are computed.
1782 Call grammar_rules_never_reduced_report.
1783 * src/print.c (print_results): Report rules never reduced.
1784 * tests/conflicts.at, tests/reduce.at: Adjust.
1785
17862002-08-01 Akim Demaille <akim@epita.fr>
1787
1788 Instead of attaching lookaheads and duplicating the rules being
1789 reduced by a state, attach the lookaheads to the reductions.
1790
1791 * src/state.h (state_t): Remove the `lookaheads',
1792 `lookaheads_rule' member.
1793 (reductions_t): Add a `lookaheads' member.
1794 Use a regular array for the `rules'.
1795 * src/state.c (reductions_new): Initialize the lookaheads member
1796 to 0.
1797 (state_rule_lookaheads_print): Adjust.
1798 * src/state.h, src/state.c (state_reductions_find): New.
1799 * src/conflicts.c (resolve_sr_conflict, set_conflicts)
1800 (count_rr_conflicts): Adjust.
1801 * src/lalr.c (LArule): Remove.
1802 (add_lookback_edge): Adjust.
1803 (state_lookaheads_count): New.
1804 (states_lookaheads_initialize): Merge into...
1805 (initialize_LA): this.
1806 (lalr_free): Adjust.
1807 * src/main.c (main): Don't free nullable and derives too early: it
1808 is used by --verbose.
1809 * src/print.c, src/print_graph.c, src/tables.c: Adjust.
1810
18112002-08-01 Akim Demaille <akim@epita.fr>
1812
1813 * src/derives.h, src/derives.c (derives): A `rule_t***' instead of
1814 `rule_number_t**'.
1815 (set_derives, free_derives): Rename as...
1816 (derives_compute, derives_free): this.
1817 Adjust all dependencies.
1818 * src/nullable.c (set_nullable, free_nullable): Rename as...
1819 (nullable_compute, nullable_free): these.
1820 (rule_list_t): Store rule_t *, not rule_number_t.
1821 * src/state.c (state_rule_lookaheads_print): Directly compare rule
1822 pointers, instead of their numbers.
1823 * src/main.c (main): Call nullable_free, and derives_free earlier,
1824 as they were lo longer used.
1825
18262002-08-01 Akim Demaille <akim@epita.fr>
1827
1828 * lib/timevar.c (get_time): Include children time.
1829 * src/lalr.h (LA, LArule): Don't export them: used with the
1830 state_t.
1831 * src/lalr.c (LA, LArule): Static.
1832 * src/lalr.h, src/lalr.c (lalr_free): New.
1833 * src/main.c (main): Call it.
1834 * src/tables.c (pack_vector): Check whether loc is >= to the
1835 table_size, not >.
1836 (pack_tables): Don't free froms, tos, conflict_tos, and pos...
1837 (tables_generate): do it, since that's also it which allocates
1838 them.
1839 Don't free LA and LArule, main does.
1840
18412002-07-31 Akim Demaille <akim@epita.fr>
1842
1843 Separate parser tables computation and output.
1844
1845 * src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
1846 (conflict_list, conflict_list_cnt, table, check, table_ninf)
1847 (yydefgoto, yydefact, high): Move to...
1848 * src/tables.h, src/tables.c: here.
1849 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
1850 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
1851 (symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
1852 (froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
1853 (ACTION_MIN, actrow, order, nentries, pos, conflrow)
1854 (conflict_list_free, table_size, lowzero, table_grow, conflict_row)
1855 (action_row, save_row, token_actions, save_column, default_goto)
1856 (goto_actions, sort_actions, matching_state, pack_vector)
1857 (table_ninf_remap, pack_table, prepare_actions): Move to...
1858 * src/tables.c: here.
1859 * src/tables.h, src/tables.c(tables_generate, tables_free): New.
1860 * src/output.c (token_actions, output_base, output_conflicts)
1861 (output_check): Merge into...
1862 (prepare_actions): this.
1863 (actions_output): Rename as...
1864 (user_actions_output): this.
1865 * src/main.c (main): Call tables_generate and tables_free.
1866
18672002-07-31 Akim Demaille <akim@epita.fr>
1868
1869 Steal GCC's --time-report support.
1870
1871 * lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
1872 stolen/adjusted from GCC.
1873 * m4/stage.m4: Remove time related checks.
1874 * m4/timevar.m4: New.
1875 * configure.in: Adjust.
1876 * src/system.h: Adjust to using timevar.h.
1877 * src/getargs.h, src/getargs.c: Support trace_time for
1878 --trace=time.
1879 * src/main.c (stage): Remove.
1880 (main): Replace `stage' invocations with timevar calls.
1881 * src/output.c: Insert pertinent timevar calls.
1882
18832002-07-31 Akim Demaille <akim@epita.fr>
1884
1885 Let --trace have arguments.
1886
1887 * src/getargs.h (enum trace_e): New.
1888 * src/getargs.c (trace_args, trace_types, trace_argmatch): New.
1889 (long_options, short_options): --trace/-T takes an optional
1890 argument.
1891 Change all the uses of trace_flag to reflect the new flags.
1892 * tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.
1893
1894 Strengthen `stage' portability.
1895
1896 * m4/stage.m4 (BISON_PREREQ_STAGE): New.
1897 * configure.in: Use it.
1898 Don't check for malloc.h and sys/times.h.
1899 * src/system.h: Include them when appropriate.
1900 * src/main.c (stage): Compile only when mallinfo, struct mallinfo,
1901 times and struct tms are available.
1902
19032002-07-30 Akim Demaille <akim@epita.fr>
1904
1905 In verbose parse error message, don't report `error' as an
1906 expected token.
1907 * tests/actions.at (Printers and Destructors): Adjust.
1908 * tests/calc.at (Calculator $1): Adjust.
1909 * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
1910 error message, do not report the parser accepts the error token in
1911 that state.
1912
19132002-07-30 Akim Demaille <akim@epita.fr>
1914
1915 Normalize conflict related messages.
1916
1917 * src/complain.h, src/complain.c (warn, complain): New.
1918 * src/conflicts.c (conflicts_print): Use them.
1919 (conflict_report_yacc): New, extracted from...
1920 (conflicts_print): here.
1921 * tests/conflicts.at, tests/existing.at: Adjust.
1922
19232002-07-30 Akim Demaille <akim@epita.fr>
1924
1925 Report rules which are never reduced by the parser: those hidden
1926 by conflicts.
1927
1928 * src/LR0.c (save_reductions): Don't make the final state too
1929 different: save its reduction (accept) instead of having a state
1930 without any action (no shift or goto, no reduce).
1931 Note: the final state is now a ``regular'' state, i.e., the
1932 parsers now contain `reduce 0' as default reduction.
1933 Nevertheless, since they decide to `accept' when yystate =
1934 final_state, they still will not reduce rule 0.
1935 * src/print.c (print_actions, print_reduction): Adjust.
1936 * src/output.c (action_row): Track reduced rules.
1937 (token_actions): Report rules never reduced.
1938 * tests/conflicts.at, tests/regression.at: Adjust.
1939
19402002-07-30 Akim Demaille <akim@epita.fr>
1941
1942 `stage' was accidently included in a previous patch.
1943 Initiate its autoconfiscation.
1944
1945 * configure.in: Look for malloc.h and sys/times.h.
1946 * src/main.c (stage): Adjust.
1947 Report only when trace_flag.
1948
19492002-07-29 Akim Demaille <akim@epita.fr>
1950
1951 * src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
1952 state_number_t.
1953 (errs_t): symbol_t*, not symbol_number_t.
1954 (reductions_t): rule_t*, not rule_number_t.
1955 (FOR_EACH_SHIFT): New.
1956 * src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
1957 * src/print.c, src/print_graph.c: Adjust.
1958
19592002-07-29 Akim Demaille <akim@epita.fr>
1960
1961 Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.
1962
1963 * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
1964 (endtoken, accept): these.
1965 * src/reader.c (reader): Set endtoken's default tag to "$end".
1966 Set undeftoken's tag to "$undefined" instead of "$undefined.".
1967 * doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
1968 Adjust.
1969
19702002-07-29 Akim Demaille <akim@epita.fr>
1971
1972 * src/reduce.c (reduce_grammar): When the language is empty,
1973 complain about the start symbol, not the axiom.
1974 Use its location.
1975 * tests/reduce.at (Empty Language): New.
1976
19772002-07-26 Akim Demaille <akim@epita.fr>
1978
1979 * src/reader.h, src/reader.c (gram_error): ... can't get
1980 yycontrol without making too strong assumptions on the parser
1981 itself.
1982 * src/output.c (prepare_tokens): Use the real 0th value of
1983 token_translations instead of `0'.
1984 * src/parse-gram.y (yyerror): Don't rely on yycontrol being
1985 visible here.
1986 * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
1987 for the time being: %locations ought to provide it to yyerror.
1988
19892002-07-25 Akim Demaille <akim@epita.fr>
1990
1991 * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
1992 * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
1993 * tests/regression.at (Web2c Actions): Adjust.
1994
19952002-07-25 Akim Demaille <akim@epita.fr>
1996
1997 Stop storing rules from 1 to nrules + 1.
1998
1999 * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
2000 * src/nullable.c, src/output.c, src/print.c, src/reader.c
2001 * src/reduce.c: Allocate and free from &rules[0], not &rules[1].
2002 Iterate from 0 to nrules.
2003 Use rule_number_as_item_number and item_number_as_rule_number.
2004 Adjust to `derive' now containing possibly 0.
2005 * src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
2006 Handle the `- 1' part in rule numbers from/to item numbers.
2007 * src/conflicts.c (log_resolution): Fix the message which reversed
2008 shift and reduce.
2009 * src/output.c (action_row): Initialize default_rule to -1.
2010 (token_actions): Adjust.
2011 * tests/sets.at (Nullable, Firsts): Fix the previously bogus
2012 expected output.
2013 * tests/conflicts.at (Resolved SR Conflicts): Likewise.
2014
20152002-07-25 Akim Demaille <akim@epita.fr>
2016
2017 * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
2018 (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
2019 (b4_c_knr_arg_decl): New.
2020 * data/yacc.c: Use it to define yysymprint, yydestruct, and
2021 yyreport_parse_error.
2022
20232002-07-25 Akim Demaille <akim@epita.fr>
2024
2025 * data/yacc.c (yyreport_parse_error): New, extracted from...
2026 (yyparse): here.
2027 (yydestruct, yysymprint): Move above yyparse.
2028 Be K&R compliant.
2029
20302002-07-25 Akim Demaille <akim@epita.fr>
2031
2032 * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
2033 replace...
2034 (b4_sint_type, b4_uint_type): these.
2035 * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
2036 * tests/regression.at (Web2c Actions): Adjust.
2037
20382002-07-25 Akim Demaille <akim@epita.fr>
2039
2040 * src/gram.h (TIEM_NUMBER_MAX): New.
2041 (item_number_of_rule_number, rule_number_of_item_number): Rename
2042 as...
2043 (rule_number_as_item_number, item_number_as_rule_number): these.
2044 Adjust dependencies.
2045 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
2046 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
2047 (symbol_number_to_vector_number): New.
2048 (order): Of vector_number_t* type.
2049 (base_t, BASE_MAX, BASE_MIN): New.
2050 (froms, tos, width, pos, check): Of base_t type.
2051 (action_number_t, ACTION_MIN, ACTION_MAX): New.
2052 (actrow): Of action_number_t type.
2053 (conflrow): Of unsigned int type.
2054 (table_ninf, base_ninf): New.
2055 (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
2056 (muscle_insert_int_table, muscle_insert_base_table)
2057 (muscle_insert_rule_number_table): New.
2058 (prepare_tokens): Output `toknum' as int_table.
2059 (action_row): Returns a rule_number_t.
2060 Use ACTION_MIN, not SHRT_MIN.
2061 (token_actions): yydefact is rule_number_t*.
2062 (table_ninf_remap): New.
2063 (pack_table): Use it for `base' and `table'.
2064 * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
2065 replaced with...
2066 (YYPACT_NINF, YYTABLE_NINF): these.
2067 (yypact, yytable): Compute their types instead of hard-coded
2068 `short'.
2069 * tests/regression.at (Web2c Actions): Adjust.
2070
20712002-07-19 Akim Demaille <akim@epita.fr>
2072
2073 * src/scan-gram.l (id): Can start with an underscore.
2074
20752002-07-16 Akim Demaille <akim@epita.fr>
2076
2077 * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
2078 Adjust all former `associativity' dependencies.
2079 * src/symtab.c (symbol_new): Default associativity is `undef', not
2080 `right'.
2081 (symbol_check_alias_consistence): Adjust.
2082
20832002-07-09 Akim Demaille <akim@epita.fr>
2084
2085 * doc/bison.texinfo: Properly set the ``header'' part.
2086 Use @dircategory ``GNU programming tools'' as per Texinfo's
2087 documentation.
2088 Use @copying.
2089
20902002-07-09 Akim Demaille <akim@epita.fr>
2091
2092 * lib/quotearg.h: Protect against multiple inclusions.
2093 * src/location.h (location_t): Add a `file' member.
2094 (LOCATION_RESET, LOCATION_PRINT): Adjust.
2095 * src/complain.c (warn_at, complain_at, fatal_at): Drop
2096 `error_one_per_line' support.
2097
20982002-07-09 Akim Demaille <akim@epita.fr>
2099
2100 * src/complain.h, src/complain.c (warn, complain): Remove, unused.
2101 * src/reader.c (lineno): Remove.
2102 Adjust all dependencies.
2103 (get_merge_function): Take a location and use complain_at.
2104 * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
2105 * tests/regression.at (Invalid inputs, Mixing %token styles):
2106 Adjust.
2107
21082002-07-09 Akim Demaille <akim@epita.fr>
2109
2110 * src/parse-gram.y (rules_or_grammar_declaration): Add an error
2111 recovery rule, and forbid extensions when --yacc.
2112 (gram_error): Use complain_at.
2113 * src/reader.c (reader): Exit if there were parse errors.
2114
21152002-07-09 Akim Demaille <akim@epita.fr>
2116
2117 * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
2118 (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
2119 Reported by R Blake <blakers@mac.com>.
2120
21212002-07-09 Akim Demaille <akim@epita.fr>
2122
2123 * data/yacc.c: Output the copyright notive in the header.
2124
21252002-07-03 Akim Demaille <akim@epita.fr>
2126
2127 * src/output.c (froms, tos): Are state_number_t.
2128 (save_column): sp, sp1, and sp2 are state_number_t.
2129 (prepare): Rename `final' as `final_state_number', `nnts' as
2130 `nterms_number', `nrules' as `rules_number', `nstates' as
2131 `states_number', and `ntokens' as `tokens_number'. Remove `nsym',
2132 unused.
2133 * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
2134 * data/lalr1.cc (nsym_): Remove, unused.
2135
21362002-07-03 Akim Demaille <akim@epita.fr>
2137
2138 * src/lalr.h, src/lalr.c (goto_number_t): New.
2139 * src/lalr.c (goto_list_t): New.
2140 Propagate them.
2141 * src/nullable.c (rule_list_t): New.
2142 Propagate.
2143 * src/types.h: Remove.
2144
21452002-07-03 Akim Demaille <akim@epita.fr>
2146
2147 * src/closure.c (print_fderives): Use rule_rhs_print.
2148 * src/derives.c (print_derives): Use rule_rhs_print.
2149 (rule_list_t): New, replaces `shorts'.
2150 (set_derives): Add comments.
2151 * tests/sets.at (Nullable, Firsts): Adjust.
2152
21532002-07-03 Akim Demaille <akim@epita.fr>
2154
2155 * src/output.c (prepare_actions): Free `tally' and `width'.
2156 (prepare_actions): Allocate and free `order'.
2157 * src/symtab.c (symbols_free): Free `symbols'.
2158 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
2159 * src/output.c (m4_invoke): Move to...
2160 * src/scan-skel.l: here.
2161 (<<EOF>>): Close yyout, and free its name.
2162
21632002-07-03 Akim Demaille <akim@epita.fr>
2164
2165 Fix some memory leaks, and fix a bug: state 0 was examined twice.
2166
2167 * src/LR0.c (new_state): Merge into...
2168 (state_list_append): this.
2169 (new_states): Merge into...
2170 (generate_states): here.
2171 (set_states): Don't ensure a proper `errs' state member here, do it...
2172 * src/conflicts.c (conflicts_solve): here.
2173 * src/state.h, src/state.c: Comment changes.
2174 (state_t): Rename member `shifts' as `transitions'.
2175 Adjust all dependencies.
2176 (errs_new): For consistency, also take the values as argument.
2177 (errs_dup): Remove.
2178 (state_errs_set): New.
2179 (state_reductions_set, state_transitions_set): Assert that no
2180 previous value was assigned.
2181 (state_free): New.
2182 (states_free): Use it.
2183 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
2184 temporary storage: use `errs' and `nerrs' as elsewhere.
2185 (set_conflicts): Allocate and free this `errs'.
2186
21872002-07-02 Akim Demaille <akim@epita.fr>
2188
2189 * lib/libiberty.h: New.
2190 * lib: Update the bitset implementation from upstream.
2191 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
2192 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
2193 * src/main.c: Adjust bitset stats calls.
2194
21952002-07-01 Paul Eggert <eggert@twinsun.com>
2196
2197 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
2198 char, so that negative chars don't collide with $.
2199
22002002-06-30 Akim Demaille <akim@epita.fr>
2201
2202 Have the GLR tests be `warning' checked, and fix the warnings.
2203
2204 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
2205 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
2206 (yyremoveDeletes): `yyi' and `yyj' are size_t.
2207 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
2208 (yyaddDeferredAction): static.
2209 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
2210 (yyreportParseError): yyprefix is const.
2211 yytokenp is used only when verbose.
2212 (yy__GNUC__): Replace with __GNUC__.
2213 (yypdumpstack): yyi is size_t.
2214 (yypreference): Un-yy local variables and arguments, to avoid
2215 clashes with `yyr1'. Anyway, we are not in the user name space.
2216 (yytname_size): be an int, as is compared with ints.
2217 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
2218 Use them.
2219 * tests/cxx-gram.at: Use quotation to protect $1.
2220 Use AT_COMPILE to enable warnings hunts.
2221 Prototype yylex and yyerror.
2222 `Use' argc.
2223 Include `string.h', not `strings.h'.
2224 Produce and prototype stmtMerge only when used.
2225 yylex takes a location.
2226
22272002-06-30 Akim Demaille <akim@epita.fr>
2228
2229 We spend a lot of time in quotearg, in particular when --verbose.
2230
2231 * src/symtab.c (symbol_get): Store a quoted version of the key.
2232 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
2233 Adjust all callers.
2234
22352002-06-30 Akim Demaille <akim@epita.fr>
2236
2237 * src/state.h (reductions_t): Rename member `nreds' as num.
2238 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
2239 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
2240
22412002-06-30 Akim Demaille <akim@epita.fr>
2242
2243 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
2244 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
2245 (shifts_to): Rename as...
2246 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
2247 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
2248 (TRANSITION_IS_DISABLED, transitions_to): these.
2249
22502002-06-30 Akim Demaille <akim@epita.fr>
2251
2252 * src/print.c (print_shifts, print_gotos): Merge into...
2253 (print_transitions): this.
2254 (print_transitions, print_errs, print_reductions): Align the
2255 lookaheads columns.
2256 (print_core, print_transitions, print_errs, print_state,
2257 print_grammar): Output empty lines separator before, not after.
2258 (state_default_rule_compute): Rename as...
2259 (state_default_rule): this.
2260 * tests/conflicts.at (Defaulted Conflicted Reduction),
2261 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
2262 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
2263
22642002-06-30 Akim Demaille <akim@epita.fr>
2265
2266 Display items as we display rules.
2267
2268 * src/gram.h, src/gram.c (rule_lhs_print): New.
2269 * src/gram.c (grammar_rules_partial_print): Use it.
2270 * src/print.c (print_core): Likewise.
2271 * tests/conflicts.at (Defaulted Conflicted Reduction),
2272 (Unresolved SR Conflicts): Adjust.
2273 (Unresolved SR Conflicts): Adjust and rename as...
2274 (Resolved SR Conflicts): this, as was meant.
2275 * tests/regression.at (Web2c Report): Adjust.
2276
22772002-06-30 Akim Demaille <akim@epita.fr>
2278
2279 * src/print.c (state_default_rule_compute): New, extracted from...
2280 (print_reductions): here.
2281 Pessimize, but clarify the code.
2282 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
2283
22842002-06-30 Akim Demaille <akim@epita.fr>
2285
2286 * src/output.c (action_row): Let default_rule be always a rule
2287 number.
2288
22892002-06-30 Akim Demaille <akim@epita.fr>
2290
2291 * src/closure.c (print_firsts, print_fderives, closure):
2292 Use BITSET_EXECUTE.
2293 * src/lalr.c (lookaheads_print): Likewise.
2294 * src/state.c (state_rule_lookaheads_print): Likewise.
2295 * src/print_graph.c (print_core): Likewise.
2296 * src/print.c (print_reductions): Likewise.
2297 * src/output.c (action_row): Likewise.
2298 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
2299
23002002-06-30 Akim Demaille <akim@epita.fr>
2301
2302 * src/print_graph.c: Use report_flag.
2303
23042002-06-30 Akim Demaille <akim@epita.fr>
2305
2306 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
2307 to...
2308 * src/relation.h, src/relation.c (traverse, relation_digraph)
2309 (relation_print, relation_transpose): New.
2310
23112002-06-30 Akim Demaille <akim@epita.fr>
2312
2313 * src/state.h, src/state.c (shifts_to): New.
2314 * src/lalr.c (build_relations): Use it.
2315
23162002-06-30 Akim Demaille <akim@epita.fr>
2317
2318 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
2319 (item_number_of_rule_number, rule_number_of_item_number): New.
2320 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
2321 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
2322 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
2323 Propagate their use.
2324 Much remains to be done, in particular wrt `shorts' from types.h.
2325
23262002-06-30 Akim Demaille <akim@epita.fr>
2327
2328 * src/symtab.c (symbol_new): Initialize the `printer' member.
2329
23302002-06-30 Akim Demaille <akim@epita.fr>
2331
2332 * src/LR0.c (save_reductions): Remove, replaced by...
2333 * src/state.h, src/state.c (state_reductions_set): New.
2334 (reductions, errs): Rename as...
2335 (reductions_t, errs_t): these.
2336 Adjust all dependencies.
2337
23382002-06-30 Akim Demaille <akim@epita.fr>
2339
2340 * src/LR0.c (state_list_t, state_list_append): New.
2341 (first_state, last_state): Now symbol_list_t.
2342 (this_state): Remove.
2343 (new_itemsets, append_states, save_reductions): Take a state_t as
2344 argument.
2345 (set_states, generate_states): Adjust.
2346 (save_shifts): Remove, replaced by...
2347 * src/state.h, src/state.c (state_shifts_set): New.
2348 (shifts): Rename as...
2349 (shifts_t): this.
2350 Adjust all dependencies.
2351 * src/state.h (state_t): Remove the `next' member.
2352
23532002-06-30 Akim Demaille <akim@epita.fr>
2354
2355 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
2356 escaped in slot 0.
2357
23582002-06-30 Akim Demaille <akim@epita.fr>
2359
2360 Use hash.h for the state hash table.
2361
2362 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
2363 (allocate_storage): Use state_hash_new.
2364 (free_storage): Use state_hash_free.
2365 (new_state, get_state): Adjust.
2366 * src/lalr.h, src/lalr.c (states): Move to...
2367 * src/states.h (state_t): Remove the `link' member, no longer
2368 used.
2369 * src/states.h, src/states.c: here.
2370 (state_hash_new, state_hash_free, state_hash_lookup)
2371 (state_hash_insert, states_free): New.
2372 * src/states.c (state_table, state_compare, state_hash): New.
2373 * src/output.c (output_actions): Do not free states now, since we
2374 still need to know the final_state number in `prepare', called
2375 afterwards. Do it...
2376 * src/main.c (main): here: call states_free after `output'.
2377
23782002-06-30 Akim Demaille <akim@epita.fr>
2379
2380 * src/state.h, src/state.c (state_new): New, extracted from...
2381 * src/LR0.c (new_state): here.
2382 * src/state.h (STATE_ALLOC): Move to...
2383 * src/state.c: here.
2384 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
2385 * src/state.h, src/state.c: here.
2386
23872002-06-30 Akim Demaille <akim@epita.fr>
2388
2389 * src/reader.c (gensym): Rename as...
2390 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
2391 (getsym): Rename as...
2392 (symbol_get): this.
2393
23942002-06-30 Akim Demaille <akim@epita.fr>
2395
2396 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
2397 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
2398 * src/output.c, src/print.c, src/print_graph.c: Propagate.
2399 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
2400
24012002-06-30 Akim Demaille <akim@epita.fr>
2402
2403 Make the test suite pass with warnings checked.
2404
2405 * tests/actions.at (Printers and Destructors): Improve.
2406 Avoid unsigned vs. signed issues.
2407 * tests/calc.at: Don't exercise the scanner here, do it...
2408 * tests/input.at (Torturing the Scanner): here.
2409
24102002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2411
2412 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
2413 reorganize first lines parallel to yacc.c.
2414
24152002-06-28 Akim Demaille <akim@epita.fr>
2416
2417 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
2418 (b4_token_enum, b4_token_defines): New, factored from...
2419 * data/lalr1.cc, data/yacc.c, glr.c: here.
2420
24212002-06-28 Akim Demaille <akim@epita.fr>
2422
2423 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
2424 unused variables.
2425 * src/output.c (merger_output): static.
2426
24272002-06-28 Akim Demaille <akim@epita.fr>
2428
2429 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
2430 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
2431 pacify GCC.
2432 * src/output.c (save_row): Initialize all the variables to pacify GCC.
2433
24342002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2435
2436 Accumulated changelog for new GLR parsing features.
2437
2438 * src/conflicts.c (count_total_conflicts): Change name to
2439 conflicts_total_count.
2440 * src/conflicts.h: Ditto.
2441 * src/output.c (token_actions): Use the new name.
2442 (output_conflicts): Change conflp => conflict_list_heads, and
2443 confl => conflict_list for better readability.
2444 * data/glr.c: Use the new names.
2445 * NEWS: Add self to GLR announcement.
2446
2447 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
2448
2449 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
2450 Akim Demaille.
2451
2452 * data/bison.glr: Change name to glr.c
2453 * data/glr.c: Renamed from bison.glr.
2454 * data/Makefile.am: Add glr.c
2455
2456 * src/getargs.c:
2457
2458 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
2459 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
2460
2461 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2462
2463 * data/bison.glr: Be sure to restore the
2464 current #line when returning to the skeleton contents after having
2465 exposed the input file's #line.
2466
2467 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2468
2469 * data/bison.glr: Bring up to date with changes to bison.simple.
2470
2471 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2472
2473 * data/bison.glr: Correct definitions that use b4_prefix.
2474 Various reformatting.
2475 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
2476 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
2477 yytokenp argument; now part of stack.
2478 (yychar): Define to behave as documented.
2479 (yyclearin): Ditto.
2480
2481 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2482
2483 * src/reader.h: Add declaration for free_merger_functions.
2484
2485 * src/reader.c (merge_functions): New variable.
2486 (get_merge_function): New function.
2487 (free_merger_functions): New function.
2488 (readgram): Check for %prec that is not followed by a symbol.
2489 Handle %dprec and %merge declarations.
2490 (packgram): Initialize dprec and merger fields in rules array.
2491
2492 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
2493 conflict_list_cnt, conflict_list_free): New variables.
2494 (table_grow): Also grow conflict_table.
2495 (prepare_rules): Output dprec and merger tables.
2496 (conflict_row): New function.
2497 (action_row): Output conflict lists for GLR parser. Don't use
2498 default reduction in conflicted states for GLR parser so that there
2499 are spaces for the conflict lists.
2500 (save_row): Also save conflict information.
2501 (token_actions): Allocate conflict list.
2502 (merger_output): New function.
2503 (pack_vector): Pack conflict table, too.
2504 (output_conflicts): New function to output yyconflp and yyconfl.
2505 (output_check): Allocate conflict_tos.
2506 (output_actions): Output conflict tables, also.
2507 (output_skeleton): Output b4_mergers definition.
2508 (prepare): Output b4_max_rhs_length definition.
2509 Use 'bison.glr' as default skeleton for GLR parsers.
2510
2511 * src/gram.c (glr_parser): New flag.
2512 (grammar_free): Call free_merger_functions.
2513
2514 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
2515 all pairs of conflicting reductions, rather than just all tokens
2516 causing conflicts. Needed to size conflict tables.
2517 (conflicts_output): Modify call to count_rr_conflicts for new
2518 interface.
2519 (conflicts_print): Ditto.
2520 (count_total_conflicts): New function.
2521
2522 * src/reader.h (merger_list): New type.
2523 (merge_functions): New variable.
2524
2525 * src/lex.h (tok_dprec, tok_merge): New token types.
2526
2527 * src/gram.h (rule_s): Add dprec and merger fields.
2528 (glr_parser): New flag.
2529
2530 * src/conflicts.h (count_total_conflicts): New function.
2531
2532 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
2533
2534 * doc/bison.texinfo (Generalized LR Parsing): New section.
2535 (GLR Parsers): New section.
2536 (Language and Grammar): Mention GLR parsing.
2537 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
2538 Correct typo ("tge" -> "the").
2539
2540 * data/bison.glr: New skeleton for GLR parsing.
2541
2542 * tests/cxx-gram.at: New tests for GLR parsing.
2543
2544 * tests/testsuite.at: Include cxx-gram.at.
2545
2546 * tests/Makefile.am: Add cxx-gram.at.
2547
2548 * src/parse-gram.y:
2549
2550 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
2551
2552 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
2553
25542002-06-27 Akim Demaille <akim@epita.fr>
2555
2556 * src/options.h, src/options.c: Remove.
2557 * src/getargs.c (short_options, long_options): New.
2558
25592002-06-27 Akim Demaille <akim@epita.fr>
2560
2561 * data/bison.simple, data/bison.c++: Rename as...
2562 * data/yacc.c, data/lalr1.cc: these.
2563 * doc/bison.texinfo (Environment Variables): Remove.
2564
25652002-06-25 Raja R Harinath <harinath@cs.umn.edu>
2566
2567 * src/getargs.c (report_argmatch): Initialize strtok().
2568
25692002-06-20 Akim Demaille <akim@epita.fr>
2570
2571 * data/bison.simple (b4_symbol_actions): New, replaces...
2572 (b4_symbol_destructor, b4_symbol_printer): these.
2573 (yysymprint): Be sure to call YYPRINT only for tokens, and using
2574 user token numbers.
2575
25762002-06-20 Akim Demaille <akim@epita.fr>
2577
2578 * data/bison.simple (yydestructor): Rename as...
2579 (yydestruct): this.
2580
25812002-06-20 Akim Demaille <akim@epita.fr>
2582
2583 * src/symtab.h, src/symtab.c (symbol_type_set)
2584 (symbol_destructor_set, symbol_precedence_set): The location is
2585 the last argument.
2586 Adjust all callers.
2587
25882002-06-20 Akim Demaille <akim@epita.fr>
2589
2590 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
2591 internals.
2592 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
2593 Takes a location.
2594 * src/symtab.h, src/symtab.c (symbol_class_set)
2595 (symbol_user_token_number_set): Likewise.
2596 Adjust all callers.
2597 Promote complain_at.
2598 * tests/input.at (Type Clashes): Adjust.
2599
26002002-06-20 Akim Demaille <akim@epita.fr>
2601
2602 * data/bison.simple (YYLEX): Fix the declaration when
2603 %pure-parser.
2604
26052002-06-20 Akim Demaille <akim@epita.fr>
2606
2607 * data/bison.simple (yysymprint): Don't print the token number,
2608 just its name.
2609 * tests/actions.at (Destructors): Rename as...
2610 (Printers and Destructors): this.
2611 Also exercise %printer.
2612
26132002-06-20 Akim Demaille <akim@epita.fr>
2614
2615 * data/bison.simple (YYDSYMPRINT): New.
2616 Use it to remove many of the #if YYDEBUG/if (yydebug).
2617
26182002-06-20 Akim Demaille <akim@epita.fr>
2619
2620 * src/symtab.h, src/symtab.c (symbol_t): printer and
2621 printer_location are new members.
2622 (symbol_printer_set): New.
2623 * src/parse-gram.y (PERCENT_PRINTER): New token.
2624 Handle its associated rule.
2625 * src/scan-gram.l: Adjust.
2626 (handle_destructor_at, handle_destructor_dollar): Rename as...
2627 (handle_symbol_code_at, handle_symbol_code_dollar): these.
2628 * src/output.c (symbol_printers_output): New.
2629 (output_skeleton): Call it.
2630 * data/bison.simple (yysymprint): New. Cannot be named yyprint
2631 since there are already many grammar files with a user `yyprint'.
2632 Replace the calls to YYPRINT to calls to yysymprint.
2633 * tests/calc.at: Adjust.
2634 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
2635 taking advantage of parser very internal details (stack size!).
2636
26372002-06-20 Akim Demaille <akim@epita.fr>
2638
2639 * src/scan-gram.l: Complete the scanner with the missing patterns
2640 to pacify Flex.
2641 Use `quote' and `symbol_tag_get' where appropriate.
2642
26432002-06-19 Akim Demaille <akim@epita.fr>
2644
2645 * tests/actions.at (Destructors): Augment to test locations.
2646 * data/bison.simple (yydestructor): Pass it the current location
2647 if locations are enabled.
2648 Prototype only when __STDC__ or C++.
2649 Change the argument names to move into the yy name space: there is
2650 user code here.
2651
26522002-06-19 Akim Demaille <akim@epita.fr>
2653
2654 * data/bison.simple (b4_pure_if): New.
2655 Use it instead of #ifdef YYPURE.
2656
26572002-06-19 Akim Demaille <akim@epita.fr>
2658
2659 * data/bison.simple (b4_location_if): New.
2660 Use it instead of #ifdef YYLSP_NEEDED.
2661
26622002-06-19 Akim Demaille <akim@epita.fr>
2663
2664 Prepare @$ in %destructor, but currently don't bind it in the
2665 skeleton, as %location use is not cleaned up yet.
2666
2667 * src/scan-gram.l (handle_dollar, handle_destructor_at)
2668 (handle_action_at): New.
2669 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
2670 a braced_code_t and a location as additional arguments.
2671 (handle_destructor_dollar): Instead of requiring `b4_eval', just
2672 unquote one when outputting `b4_dollar_dollar'.
2673 Adjust callers.
2674 * data/bison.simple (b4_eval): Remove.
2675 (b4_symbol_destructor): Adjust.
2676 * tests/input.at (Invalid @n): Adjust.
2677
26782002-06-19 Zack Weinberg <zack@codesourcery.com>
2679
2680 * doc/bison.texinfo: Document ability to have multiple
2681 prologue sections.
2682
26832002-06-18 Akim Demaille <akim@epita.fr>
2684
2685 * src/files.c (compute_base_names): When computing the output file
2686 names from the input file name, strip the directory part.
2687
26882002-06-18 Akim Demaille <akim@epita.fr>
2689
2690 * data/bison.simple.new: Comment changes.
2691 Reported by Andreas Schwab.
2692
26932002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
2694
2695 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
2696 there are no `label `yyoverflowlab' defined but not used' warnings
2697 when yyoverflow is defined.
2698
26992002-06-18 Akim Demaille <akim@epita.fr>
2700
2701 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
2702 new member.
2703 (symbol_destructor_set): Adjust.
2704 * src/output.c (symbol_destructors_output): Output the destructor
2705 locations.
2706 Output the symbol name.
2707 * data/bison.simple (b4_symbol_destructor): Adjust.
2708
27092002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
2710 and Akim Demaille <akim@epita.fr>
2711
2712 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
2713 what's left on the stack when the error recovery hits EOF.
2714 * tests/actions.at (Destructors): Complete to exercise this case.
2715
27162002-06-17 Akim Demaille <akim@epita.fr>
2717
2718 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
2719 arguments is really empty, not only equal to `[]'.
2720 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
2721 member.
2722 (symbol_destructor_set): New.
2723 * src/output.c (symbol_destructors_output): New.
2724 * src/reader.h (brace_code_t, current_braced_code): New.
2725 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
2726 (handle_dollar): Rename as...
2727 (handle_action_dollar): this.
2728 (handle_destructor_dollar): New.
2729 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
2730 (grammar_declaration): Use it.
2731 * data/bison.simple (yystos): Is always defined.
2732 (yydestructor): New.
2733 * tests/actions.at (Destructors): New.
2734 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
2735
27362002-06-17 Akim Demaille <akim@epita.fr>
2737
2738 * src/symlist.h, src/symlist.c (symbol_list_length): New.
2739 * src/scan-gram.l (handle_dollar, handle_at): Compute the
2740 rule_length only when needed.
2741 * src/output.c (actions_output, token_definitions_output): Output
2742 the full M4 block.
2743 * src/symtab.c: Don't access directly to the symbol tag, use
2744 symbol_tag_get.
2745 * src/parse-gram.y: Use symbol_list_free.
2746
27472002-06-17 Akim Demaille <akim@epita.fr>
2748
2749 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
2750 (symbol_list_prepend, get_type_name): Move to...
2751 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
2752 (symbol_list_prepend, symbol_list_n_type_name_get): here.
2753 Adjust all callers.
2754 (symbol_list_free): New.
2755 * src/scan-gram.l (handle_dollar): Takes a location.
2756 * tests/input.at (Invalid $n): Adjust.
2757
27582002-06-17 Akim Demaille <akim@epita.fr>
2759
2760 * src/reader.h, src/reader.c (symbol_list_new): Export it.
2761 (symbol_list_prepend): New.
2762 * src/parse-gram.y (%union): `list' is a new member.
2763 (symbols.1): New, replaces...
2764 (terms_to_prec.1, nterms_to_type.1): these.
2765 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
2766 Take a location as additional argument.
2767 Adjust all callers.
2768
27692002-06-15 Akim Demaille <akim@epita.fr>
2770
2771 * src/parse-gram.y: Move %token in the declaration section so that
2772 we don't depend upon CVS Bison.
2773
27742002-06-15 Akim Demaille <akim@epita.fr>
2775
2776 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
2777 * src/print.c (print_core): Use it.
2778
27792002-06-15 Akim Demaille <akim@epita.fr>
2780
2781 * src/conflicts.c (log_resolution): Accept the rule involved in
2782 the sr conflicts instead of the lookahead number that points to
2783 that rule.
2784 (flush_reduce): Accept the current lookahead vector as argument,
2785 instead of the index in LA.
2786 (resolve_sr_conflict): Accept the current number of lookahead
2787 bitset to consider for the STATE, instead of the index in LA.
2788 (set_conflicts): Adjust.
2789 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
2790
27912002-06-15 Akim Demaille <akim@epita.fr>
2792
2793 * src/state.h (state_t): Replace the `lookaheadsp' member, a
2794 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
2795 Adjust all dependencies.
2796 * src/lalr.c (initialize_lookaheads): Split into...
2797 (states_lookaheads_count, states_lookaheads_initialize): these.
2798 (lalr): Adjust.
2799
28002002-06-15 Akim Demaille <akim@epita.fr>
2801
2802 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
2803 out of...
2804 (grammar_rules_print): here.
2805 * src/reduce.c (reduce_output): Use it.
2806 * tests/reduce.at (Useless Rules, Reduced Automaton)
2807 (Underivable Rules): Adjust.
2808
28092002-06-15 Akim Demaille <akim@epita.fr>
2810
2811 Copy BYacc's nice way to report the grammar.
2812
2813 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
2814 New.
2815 Don't print the rules' location, it is confusing and useless.
2816 (rule_print): Use grammar_rhs_print.
2817 * src/print.c (print_grammar): Use grammar_rules_print.
2818
28192002-06-15 Akim Demaille <akim@epita.fr>
2820
2821 Complete and rationalize `useless thing' warnings.
2822
2823 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
2824 (symbol_tag_print): New.
2825 Use them everywhere in place of accessing directly the tag member.
2826 * src/gram.h, src/gram.c (rule_print): New.
2827 Use it where a rule used to be printed `by hand'.
2828 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
2829 (reduce_grammar_tables): Report the useless rules.
2830 (reduce_print): Useless things are a warning, not an error.
2831 Report it as such.
2832 * tests/reduce.at (Useless Nonterminals, Useless Rules):
2833 (Reduced Automaton, Underivable Rules): Adjust.
2834 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
2835 * tests/conflicts.at (Unresolved SR Conflicts)
2836 (Solved SR Conflicts): Adjust.
2837
28382002-06-15 Akim Demaille <akim@epita.fr>
2839
2840 Let symbols have a location.
2841
2842 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
2843 (getsym): Adjust.
2844 Adjust all callers.
2845 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
2846 Use location_t, not int.
2847 * src/symtab.c (symbol_check_defined): Take advantage of the
2848 location.
2849 * tests/regression.at (Invalid inputs): Adjust.
2850
28512002-06-15 Akim Demaille <akim@epita.fr>
2852
2853 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
2854 (input): Don't try to initialize yylloc here, do it in the
2855 scanner.
2856 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
2857 * src/gram.h (rule_t): Change line and action_line into location
2858 and action_location, of location_t type.
2859 Adjust all dependencies.
2860 * src/location.h, src/location.c (empty_location): New.
2861 * src/reader.h, src/reader.c (grammar_start_symbol_set)
2862 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
2863 (grammar_current_rule_symbol_append)
2864 (grammar_current_rule_action_append): Expect a location as argument.
2865 * src/reader.c (grammar_midrule_action): Adjust to attach an
2866 action's location as dummy symbol location.
2867 * src/symtab.h, src/symtab.c (startsymbol_location): New.
2868 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
2869 the line numbers.
2870
28712002-06-14 Akim Demaille <akim@epita.fr>
2872
2873 Grammar declarations may be found in the grammar section.
2874
2875 * src/parse-gram.y (rules_or_grammar_declaration): New.
2876 (declarations): Each declaration may end with a semicolon, not
2877 just...
2878 (grammar_declaration): `"%union"'.
2879 (grammar): Branch to rules_or_grammar_declaration.
2880
28812002-06-14 Akim Demaille <akim@epita.fr>
2882
2883 * src/main.c (main): Invoke scanner_free.
2884
28852002-06-14 Akim Demaille <akim@epita.fr>
2886
2887 * src/output.c (m4_invoke): Extracted from...
2888 (output_skeleton): here.
2889 Free tempfile.
2890
28912002-06-14 Akim Demaille <akim@epita.fr>
2892
2893 * src/parse-gram.y (directives, directive, gram)
2894 (grammar_directives, precedence_directives, precedence_directive):
2895 Rename as...
2896 (declarations, declaration, grammar, grammar_declaration)
2897 (precedence_declaration, precedence_declarator): these.
2898 (symbol_declaration): New.
2899
29002002-06-14 Akim Demaille <akim@epita.fr>
2901
2902 * src/files.c (action_obstack): Remove, unused.
2903 (output_obstack): Remove it, and all its dependencies, as it is no
2904 longer needed.
2905 * src/reader.c (epilogue_set): Build the epilogue in the
2906 muscle_obstack.
2907 * src/output.h, src/output.c (muscle_obstack): Move to...
2908 * src/muscle_tab.h, src/muscle_tab.h: here.
2909 (muscle_init): Initialize muscle_obstack.
2910 (muscle_free): New.
2911 * src/main.c (main): Call it.
2912
29132002-06-14 Akim Demaille <akim@epita.fr>
2914
2915 * src/location.h: New, extracted from...
2916 * src/reader.h: here.
2917 * src/Makefile.am (noinst_HEADERS): Merge into
2918 (bison_SOURCES): this.
2919 Add location.h.
2920 * src/parse-gram.y: Use location_t instead of Bison's.
2921 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
2922 Use location_t instead of ints.
2923
29242002-06-14 Akim Demaille <akim@epita.fr>
2925
2926 * data/bison.simple, data/bison.c++: Be sure to restore the
2927 current #line when returning to the skeleton contents after having
2928 exposed the input file's #line.
2929
29302002-06-12 Akim Demaille <akim@epita.fr>
2931
2932 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
2933 eager.
2934 * tests/actions.at (Exotic Dollars): New.
2935
29362002-06-12 Akim Demaille <akim@epita.fr>
2937
2938 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
2939 ['"/] too eagerly.
2940 * tests/input.at (Torturing the Scanner): New.
2941
29422002-06-11 Akim Demaille <akim@epita.fr>
2943
2944 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
2945 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
2946 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
2947 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
2948 * src/reader.c (reader): Use it.
2949
29502002-06-11 Akim Demaille <akim@epita.fr>
2951
2952 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
2953 Adjust all callers.
2954 (scanner_last_string_free): New.
2955
29562002-06-11 Akim Demaille <akim@epita.fr>
2957
2958 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
2959 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
2960 (last_string, YY_OBS_FREE): New.
2961 Use them when returning an ID.
2962
29632002-06-11 Akim Demaille <akim@epita.fr>
2964
2965 Have Bison grammars parsed by a Bison grammar.
2966
2967 * src/reader.c, src/reader.h (prologue_augment): New.
2968 * src/reader.c (copy_definition): Remove.
2969
2970 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
2971 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
2972 (grammar_current_rule_prec_set, grammar_current_rule_check)
2973 (grammar_current_rule_symbol_append)
2974 (grammar_current_rule_action_append): Export.
2975 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
2976 (symbol_list_action_append): Remove.
2977 Hook the routines from reader.
2978 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
2979 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
2980
2981 * src/reader.c (read_declarations): Remove, unused.
2982
2983 * src/parse-gram.y: Handle the epilogue.
2984 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
2985 (grammar_start_symbol_set): this.
2986 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
2987 * src/reader.c (readgram): Remove, unused.
2988 (reader): Adjust to insert eoftoken and axiom where appropriate.
2989
2990 * src/reader.c (copy_dollar): Replace with...
2991 * src/scan-gram.h (handle_dollar): this.
2992 * src/parse-gram.y: Remove `%thong'.
2993
2994 * src/reader.c (copy_at): Replace with...
2995 * src/scan-gram.h (handle_at): this.
2996
2997 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
2998 New.
2999
3000 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
3001 time being.
3002
3003 * src/reader.h, src/reader.c (grammar_rule_end): New.
3004
3005 * src/parse.y (current_type, current_class): New.
3006 Implement `%nterm', `%token' support.
3007 Merge `%term' into `%token'.
3008 (string_as_id): New.
3009 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
3010 type name.
3011
3012 * src/parse-gram.y: Be sure to handle properly the beginning of
3013 rules.
3014
3015 * src/parse-gram.y: Handle %type.
3016 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
3017
3018 * src/parse-gram.y: More directives support.
3019 * src/options.c: No longer handle source directives.
3020
3021 * src/parse-gram.y: Fix %output.
3022
3023 * src/parse-gram.y: Handle %union.
3024 Use the prologue locations.
3025 * src/reader.c (parse_union_decl): Remove.
3026
3027 * src/reader.h, src/reader.c (epilogue_set): New.
3028 * src/parse-gram.y: Use it.
3029
3030 * data/bison.simple, data/bison.c++: b4_stype is now either not
3031 defined, then default to int, or to the contents of %union,
3032 without `union' itself.
3033 Adjust.
3034 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
3035
3036 * src/output.c (actions_output): Don't output braces, as they are
3037 already handled by the scanner.
3038
3039 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
3040 characters to themselves.
3041
3042 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
3043 that the epilogue has a proper #line.
3044
3045 * src/parse-gram.y: Handle precedence/associativity.
3046
3047 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
3048 a terminal.
3049 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
3050 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
3051 at all to define terminals that cannot be emitted.
3052
3053 * src/scan-gram.l: Escape M4 characters.
3054
3055 * src/scan-gram.l: Working properly with escapes in user
3056 strings/characters.
3057
3058 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
3059 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
3060 grammar.
3061 Use more modest sizes, as for the time being the parser does not
3062 release memory, and therefore the process swallows a huge amount
3063 of memory.
3064
3065 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
3066 stricter %token grammar.
3067
3068 * src/symtab.h (associativity): Add `undef_assoc'.
3069 (symbol_precedence_set): Do nothing when passed an undef_assoc.
3070 * src/symtab.c (symbol_check_alias_consistence): Adjust.
3071
3072 * tests/regression.at (Invalid %directive): Remove, as it is now
3073 meaningless.
3074 (Invalid inputs): Adjust to the new error messages.
3075 (Token definitions): The new grammar doesn't allow too many
3076 eccentricities.
3077
3078 * src/lex.h, src/lex.c: Remove.
3079 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
3080 (copy_character, copy_string2, copy_string, copy_identifier)
3081 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
3082 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
3083 (parse_action): Remove.
3084 * po/POTFILES.in: Adjust.
3085
30862002-06-11 Akim Demaille <akim@epita.fr>
3087
3088 * src/reader.c (parse_action): Don't store directly into the
3089 rule's action member: return the action as a string.
3090 Don't require `rule_length' as an argument: compute it.
3091 (grammar_current_rule_symbol_append)
3092 (grammar_current_rule_action_append): New, eved out from
3093 (readgram): here.
3094 Remove `action_flag', `rulelength', unused now.
3095
30962002-06-11 Akim Demaille <akim@epita.fr>
3097
3098 * src/reader.c (grammar_current_rule_prec_set).
3099 (grammar_current_rule_check): New, eved out from...
3100 (readgram): here.
3101 Remove `xaction', `first_rhs': useless.
3102 * tests/input.at (Type clashes): New.
3103 * tests/existing.at (GNU Cim Grammar): Adjust.
3104
31052002-06-11 Akim Demaille <akim@epita.fr>
3106
3107 * src/reader.c (grammar_midrule_action): New, Eved out from
3108 (readgram): here.
3109
31102002-06-11 Akim Demaille <akim@epita.fr>
3111
3112 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
3113 New.
3114 (readgram): Use them as replacement of inlined code, crule and
3115 crule1.
3116
31172002-06-11 Akim Demaille <akim@epita.fr>
3118
3119 * src/reader.c (grammar_end, grammar_symbol_append): New.
3120 (readgram): Use them.
3121 Make the use of `p' as local as possible.
3122
31232002-06-10 Akim Demaille <akim@epita.fr>
3124
3125 GCJ's parser requires the tokens to be defined before the prologue.
3126
3127 * data/bison.simple: Output the token definition before the user's
3128 prologue.
3129 * tests/regression.at (Braces parsing, Duplicate string)
3130 (Mixing %token styles): Check the output from bison.
3131 (Early token definitions): New.
3132
31332002-06-10 Akim Demaille <akim@epita.fr>
3134
3135 * src/symtab.c (symbol_user_token_number_set): Don't complain when
3136 assigning twice the same user number to a token, so that we can
3137 use it in...
3138 * src/lex.c (lex): here.
3139 Also use `symbol_class_set' instead of hand written code.
3140 * src/reader.c (parse_assoc_decl): Likewise.
3141
31422002-06-10 Akim Demaille <akim@epita.fr>
3143
3144 * src/symtab.c, src/symtab.c (symbol_class_set)
3145 (symbol_user_token_number_set): New.
3146 * src/reader.c (parse_token_decl): Use them.
3147 Use a switch instead of ifs.
3148 Use a single argument.
3149
31502002-06-10 Akim Demaille <akim@epita.fr>
3151
3152 Remove `%thong' support as it is undocumented, unused, duplicates
3153 `%token's job, and creates useless e-mail traffic with people who
3154 want to know what it is, why it is undocumented, unused, and
3155 duplicates `%token's job.
3156
3157 * src/reader.c (parse_thong_decl): Remove.
3158 * src/options.c (option_table): Remove "thong".
3159 * src/lex.h (tok_thong): Remove.
3160
31612002-06-10 Akim Demaille <akim@epita.fr>
3162
3163 * src/symtab.c, src/symtab.c (symbol_type_set)
3164 (symbol_precedence_set): New.
3165 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
3166 (value_components_used): Remove, unused.
3167
31682002-06-09 Akim Demaille <akim@epita.fr>
3169
3170 Move symbols handling code out of the reader.
3171
3172 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
3173 (axiom): Move to...
3174 * src/symtab.h, src/symtab.c: here.
3175
3176 * src/gram.c (start_symbol): Remove: use startsymbol->number.
3177 * src/reader.c (startval): Rename as...
3178 * src/symtab.h, src/symtab.c (startsymbol): this.
3179 * src/reader.c: Adjust.
3180
3181 * src/reader.c (symbol_check_defined, symbol_make_alias)
3182 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
3183 (token_translations_init)
3184 Move to...
3185 * src/symtab.c: here.
3186 * src/reader.c (packsymbols): Move to...
3187 * src/symtab.h, src/symtab.c (symbols_pack): here.
3188 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
3189 argument.
3190
31912002-06-03 Akim Demaille <akim@epita.fr>
3192
3193 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
3194 then statements.
3195
31962002-06-03 Akim Demaille <akim@epita.fr>
3197
3198 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
3199 structs with non literals.
3200 * src/scan-skel.l: never-interactive.
3201 * src/conflicts.c (enum conflict_resolution_e): No trailing
3202 comma.
3203 * src/getargs.c (usage): Split long literal strings.
3204 Reported by Hans Aberg.
3205
32062002-05-28 Akim Demaille <akim@epita.fr>
3207
3208 * data/bison.c++: Use C++ ostreams.
3209 (cdebug_): New member.
3210
32112002-05-28 Akim Demaille <akim@epita.fr>
3212
3213 * src/output.c (output_skeleton): Be sure to allocate enough room
3214 for `/' _and_ for `\0' in full_skeleton.
3215
32162002-05-28 Akim Demaille <akim@epita.fr>
3217
3218 * data/bison.c++: Catch up with bison.simple:
3219 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3220 and Paul Eggert <eggert@twinsun.com>: `error' handing.
3221 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
3222 and popping traces.
3223
32242002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3225
3226 * src/output.c (output_skeleton): Put an explicit path in front of
3227 the skeleton file name, rather than relying on the -I directory,
3228 to partially alleviate effects of having a skeleton file lying around
3229 in the current directory.
3230
32312002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3232
3233 * src/conflicts.c (log_resolution): Correct typo:
3234 obstack_printf should be obstack_fgrow1.
3235
32362002-05-26 Akim Demaille <akim@epita.fr>
3237
3238 * src/state.h (state_t): `solved_conflicts' is a new member.
3239 * src/LR0.c (new_state): Set it to 0.
3240 * src/conflicts.h, src/conflicts.c (print_conflicts)
3241 (free_conflicts, solve_conflicts): Rename as...
3242 (conflicts_print, conflicts_free, conflicts_solve): these.
3243 Adjust callers.
3244 * src/conflicts.c (enum conflict_resolution_e)
3245 (solved_conflicts_obstack): New, used by...
3246 (log_resolution): this.
3247 Adjust to attach the conflict resolution to each state.
3248 Complete the description with the precedence/associativity
3249 information.
3250 (resolve_sr_conflict): Adjust.
3251 * src/print.c (print_state): Output its solved_conflicts.
3252 * tests/conflicts.at (Unresolved SR Conflicts)
3253 (Solved SR Conflicts): Exercise --report=all.
3254
32552002-05-26 Akim Demaille <akim@epita.fr>
3256
3257 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
3258 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
3259 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
3260 (token_number_t, item_number_as_token_number)
3261 (token_number_as_item_number, muscle_insert_token_number_table):
3262 Rename as...
3263 (symbol_number_t, item_number_as_symbol_number)
3264 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
3265 these, since it is more appropriate.
3266
32672002-05-26 Akim Demaille <akim@epita.fr>
3268
3269 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
3270 `Error:' lines.
3271 * data/bison.simple (yystos) [YYDEBUG]: New.
3272 (yyparse) [YYDEBUG]: Display the symbols which are popped during
3273 error recovery.
3274 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
3275
32762002-05-25 Akim Demaille <akim@epita.fr>
3277
3278 * doc/bison.texinfo (Debugging): Split into...
3279 (Tracing): this new section, its former contents, and...
3280 (Understanding): this new section.
3281 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
3282 by...
3283 (report_flag): this.
3284 Adjust all dependencies.
3285 (report_args, report_types, report_argmatch): New.
3286 (usage, getargs): Report/support -r, --report.
3287 * src/options.h
3288 (struct option_table_struct): Rename as..,
3289 (struct option_table_s): this.
3290 Rename the `set_flag' member to `flag' to match with getopt_long's
3291 struct.
3292 * src/options.c (option_table): Split verbose into an entry for
3293 %verbose, and another for --verbose.
3294 Support --report/-r, so remove -r from the obsolete --raw.
3295 * src/print.c: Attach full item sets and lookaheads reports to
3296 report_flag instead of trace_flag.
3297 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
3298
32992002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3300 and Paul Eggert <eggert@twinsun.com>
3301
3302 * data/bison.simple (yyparse): Correct error handling to conform to
3303 POSIX and yacc. Specifically, after syntax error is discovered,
3304 do not reduce further before shifting the error token.
3305 Clean up the code a bit by removing the labels yyerrdefault,
3306 yyerrhandle, yyerrpop.
3307 * NEWS: Document the above.
3308
33092002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3310
3311 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
3312 type; it isn't always big enough, since it doesn't necessarily
3313 include non-terminals.
3314 (yytranslate): Expand definition of yy_token_number_type, so that
3315 the latter can be removed.
3316 (yy_token_number_type): Remove, only one use.
3317 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
3318 don't use TokenNumberType as element type.
3319
3320 * tests/regression.at: Modify expected output to agree with change
3321 to yyr1 and yytranslate.
3322
33232002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
3324
3325 * src/reader.c (parse_action): Use copy_character instead of
3326 obstack_1grow.
3327
33282002-05-13 Akim Demaille <akim@epita.fr>
3329
3330 * tests/regression.at (Token definitions): Prototype yylex and
3331 yyerror.
3332
33332002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3334
3335 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
3336 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
3337 32-bit arithmetic.
3338 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
3339
33402002-05-07 Akim Demaille <akim@epita.fr>
3341
3342 * tests/synclines.at: Be sure to prototype yylex and yyerror to
3343 avoid GCC warnings.
3344
33452002-05-07 Akim Demaille <akim@epita.fr>
3346
3347 Kill GCC warnings.
3348
3349 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
3350 over the RHS of each rule.
3351 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
3352 * src/state.h (state_t): Member `nitems' is unsigned short.
3353 * src/LR0.c (get_state): Adjust.
3354 * src/reader.c (packgram): Likewise.
3355 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
3356 `Type'.
3357 (muscle_insert_int_table): Remove, unused.
3358 (prepare_rules): Remove `max'.
3359
33602002-05-06 Akim Demaille <akim@epita.fr>
3361
3362 * src/closure.c (print_firsts): Display of the symbol tags.
3363 (bitmatrix_print): Move to...
3364 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
3365 here.
3366 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
3367
33682002-05-06 Akim Demaille <akim@epita.fr>
3369
3370 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
3371 hash_do_for_each.
3372
33732002-05-06 Akim Demaille <akim@epita.fr>
3374
3375 * src/LR0.c (new_state, get_state): Instead of using the global
3376 `kernel_size' and `kernel_base', have two new arguments:
3377 `core_size' and `core'.
3378 Adjust callers.
3379
33802002-05-06 Akim Demaille <akim@epita.fr>
3381
3382 * src/reader.c (packgram): No longer end `ritem' with a 0
3383 sentinel: it is not used.
3384
33852002-05-05 Akim Demaille <akim@epita.fr>
3386
3387 New experimental feature: display the lookaheads in the report and
3388 graph.
3389
3390 * src/print (print_core): When --trace-flag, display the rules
3391 lookaheads.
3392 * src/print_graph.c (print_core): Likewise.
3393 Swap the arguments.
3394 Adjust caller.
3395
33962002-05-05 Akim Demaille <akim@epita.fr>
3397
3398 * tests/torture.at (Many lookaheads): New test.
3399
34002002-05-05 Akim Demaille <akim@epita.fr>
3401
3402 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
3403 (GENERATE_MUSCLE_INSERT_TABLE): this.
3404 (output_int_table, output_unsigned_int_table, output_short_table)
3405 (output_token_number_table, output_item_number_table): Replace with...
3406 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
3407 (muscle_insert_short_table, muscle_insert_token_number_table)
3408 (muscle_insert_item_number_table): these.
3409 Adjust all callers.
3410 (prepare_tokens): Don't free `translations', since...
3411 * src/reader.h, src/reader.c (grammar_free): do it.
3412 Move to...
3413 * src/gram.h, src/gram.c (grammar_free): here.
3414 * data/bison.simple, data/bison.c++: b4_token_number_max is now
3415 b4_translate_max.
3416
34172002-05-05 Akim Demaille <akim@epita.fr>
3418
3419 * src/output.c (output_unsigned_int_table): New.
3420 (prepare_rules): `i' is unsigned.
3421 `prhs', `rline', `r2' are unsigned int.
3422 Rename muscle `rhs_number_max' as `rhs_max'.
3423 Output muscles `prhs_max', `rline_max', and `r2_max'.
3424 Free rline and r1.
3425 * data/bison.simple, data/bison.c++: Adjust to use these muscles
3426 to compute types instead of constant types.
3427 * tests/regression.at (Web2c Actions): Adjust.
3428
34292002-05-04 Akim Demaille <akim@epita.fr>
3430
3431 * src/symtab.h (SALIAS, SUNDEF): Rename as...
3432 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
3433 Adjust dependencies.
3434 * src/output.c (token_definitions_output): Be sure not to output a
3435 `#define 'a'' when fed with `%token 'a' "a"'.
3436 * tests/regression.at (Token definitions): New.
3437
34382002-05-03 Paul Eggert <eggert@twinsun.com>
3439
3440 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
3441 for K&R C.
3442
34432002-05-03 gettextize <bug-gnu-gettext@gnu.org>
3444
3445 * Makefile.am (SUBDIRS): Remove intl.
3446 (EXTRA_DIST): Add config/config.rpath.
3447
34482002-05-03 Akim Demaille <akim@epita.fr>
3449
3450 * data/bison.simple (m4_if): Don't output empty enums.
3451 And actually, output valid enum definitions :(.
3452
34532002-05-03 Akim Demaille <akim@epita.fr>
3454
3455 * configure.bat: Remove, completely obsolete.
3456 * Makefile.am (EXTRA_DIST): Adjust.
3457 Don't distribute config.rpath...
3458 * config/Makefile.am (EXTRA_DIST): Do it.
3459
34602002-05-03 Akim Demaille <akim@epita.fr>
3461
3462 * configure.in (GETTEXT_VERSION): New.
3463 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
3464
34652002-05-03 Akim Demaille <akim@epita.fr>
3466
3467 * data/bison.simple (b4_token_enum): New.
3468 (b4_token_defines): Use it to output tokens both as #define and
3469 enums.
3470 Suggested by Paul Eggert.
3471 * src/output.c (token_definitions_output): Don't output spurious
3472 white spaces.
3473
34742002-05-03 Akim Demaille <akim@epita.fr>
3475
3476 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
3477
34782002-05-02 Robert Anisko <robert@lrde.epita.fr>
3479
3480 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
3481 Update the stack class, give a try to deque as the default container.
3482
34832002-05-02 Akim Demaille <akim@epita.fr>
3484
3485 * data/bison.simple (yyparse): Do not implement @$ = @1.
3486 (YYLLOC_DEFAULT): Adjust to do it.
3487 * doc/bison.texinfo (Location Default Action): Fix.
3488
34892002-05-02 Akim Demaille <akim@epita.fr>
3490
3491 * src/reader.c (parse_braces): Merge into...
3492 (parse_action): this.
3493
34942002-05-02 Akim Demaille <akim@epita.fr>
3495
3496 * configure.in (ALL_LINGUAS): Remove.
3497 * po/LINGUAS, hr.po: New.
3498
34992002-05-02 Akim Demaille <akim@epita.fr>
3500
3501 Remove the so called hairy (semantic) parsers.
3502
3503 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
3504 * src/gram.h, src/gram.c (semantic_parser): Remove.
3505 (rule_t): Remove the guard and guard_line members.
3506 * src/lex.h (token_t): remove tok_guard.
3507 * src/options.c (option_table): Remove %guard and %semantic_parser
3508 support.
3509 * src/output.c, src/output.h (guards_output): Remove.
3510 (prepare): Adjust.
3511 (token_definitions_output): Don't output the `T'
3512 tokens (???).
3513 (output_skeleton): Don't output the guards.
3514 * src/files.c, src/files.c (attrsfile): Remove.
3515 * src/reader.c (symbol_list): Remove the guard and guard_line
3516 members.
3517 Adjust dependencies.
3518 (parse_guard): Remove.
3519 * data/bison.hairy: Remove.
3520 * doc/bison.texinfo (Environment Variables): Remove occurrences of
3521 BISON_HAIRY.
3522
35232002-05-02 Akim Demaille <akim@epita.fr>
3524
3525 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
3526 (parse_guard): Rename the formal argument `stack_offset' as
3527 `rule_length', which is more readable.
3528 Adjust callers.
3529 (copy_at, copy_dollar): Instead of outputting the hard coded
3530 values of $$, $n and so forth, output invocation to b4_lhs_value,
3531 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
3532 Note: this patch partially drops `semantic-parser' support: it
3533 always does `rule_length - n', where semantic parsers ought to
3534 always use `-n'.
3535 * data/bison.simple, data/bison.c++ (b4_lhs_value)
3536 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
3537
35382002-05-02 Akim Demaille <akim@epita.fr>
3539
3540 * configure.in (AC_INIT): Bump to 1.49b.
3541 (AM_INIT_AUTOMAKE): Short invocation.
3542
35432002-05-02 Akim Demaille <akim@epita.fr>
3544
3545 Version 1.49a.
3546
35472002-05-01 Akim Demaille <akim@epita.fr>
3548
3549 * src/skeleton.h: Remove.
3550
35512002-05-01 Akim Demaille <akim@epita.fr>
3552
3553 * src/skeleton.h: Fix the #endif.
3554 Reported by Magnus Fromreide.
3555
35562002-04-26 Paul Eggert <eggert@twinsun.com>
3557
3558 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
3559 Define if we define YYSTYPE and YYLTYPE, respectively.
3560 (YYCOPY): Fix [] quoting problem in the non-GCC case.
3561
35622002-04-25 Robert Anisko <robert@lrde.epita.fr>
3563
3564 * src/scan-skel.l: Postprocess quadrigraphs.
3565
3566 * src/reader.c (copy_character): New function, used to output
3567 single characters while replacing `[' and `]' with quadrigraphs, to
3568 avoid troubles with M4 quotes.
3569 (copy_comment): Output characters with copy_character.
3570 (read_additionnal_code): Likewise.
3571 (copy_string2): Likewise.
3572 (copy_definition): Likewise.
3573
3574 * tests/calc.at: Exercise M4 quoting.
3575
35762002-04-25 Akim Demaille <akim@epita.fr>
3577
3578 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
3579 between `!' and the command.
3580 Reported by Paul Eggert.
3581
35822002-04-24 Robert Anisko <robert@lrde.epita.fr>
3583
3584 * tests/calc.at: Exercise prologue splitting.
3585
3586 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
3587 `b4_post_prologue' instead of `b4_prologue'.
3588
3589 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
3590 muscles.
3591 (output): Free pre_prologue_obstack and post_prologue_obstack.
3592 * src/files.h, src/files.c (attrs_obstack): Remove.
3593 (pre_prologue_obstack, post_prologue_obstack): New.
3594 * src/reader.c (copy_definition): Add a parameter to specify the
3595 obstack to fill, instead of using attrs_obstack unconditionally.
3596 (read_declarations): Pass pre_prologue_obstack to copy_definition if
3597 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
3598
35992002-04-23 Paul Eggert <eggert@twinsun.com>
3600
3601 * data/bison.simple: Remove unnecessary commentary and white
3602 space differences from 1_29-branch.
3603 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
3604
3605 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
3606 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
3607 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
3608 constructors or destructors.
3609
3610 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
3611
36122002-04-23 Akim Demaille <akim@epita.fr>
3613
3614 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
3615 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
3616 location with columns.
3617 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
3618 All reported by Paul Eggert.
3619
36202002-04-22 Akim Demaille <akim@epita.fr>
3621
3622 * src/reduce.c (dump_grammar): Move to...
3623 * src/gram.h, src/gram.c (grammar_dump): here.
3624 Be sure to separate long item numbers.
3625 Don't read the members of a rule's prec if its nil.
3626
36272002-04-22 Akim Demaille <akim@epita.fr>
3628
3629 * src/output.c (table_size, table_grow): New.
3630 (MAXTABLE): Remove, replace uses with table_size.
3631 (pack_vector): Instead of dying when the table is too big, grow it.
3632
36332002-04-22 Akim Demaille <akim@epita.fr>
3634
3635 * data/bison.simple (yyr1): Its type is that of a token number.
3636 * data/bison.c++ (r1_): Likewise.
3637 * tests/regression.at (Web2c Actions): Adjust.
3638
36392002-04-22 Akim Demaille <akim@epita.fr>
3640
3641 * src/reader.c (token_translations_init): 256 is now the default
3642 value for the error token, i.e., it will be assigned another
3643 number if the user assigned 256 to one of her tokens.
3644 (reader): Don't force 256 to error.
3645 * doc/bison.texinfo (Symbols): Adjust.
3646 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
3647 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
3648 etc. instead of 10, 20, 30 (which was used to `jump' over error
3649 (256) and undefined (2)).
3650
36512002-04-22 Akim Demaille <akim@epita.fr>
3652
3653 Propagate more token_number_t.
3654
3655 * src/gram.h (token_number_as_item_number)
3656 (item_number_as_token_number): New.
3657 * src/output.c (GENERATE_OUTPUT_TABLE): New.
3658 Use it to create output_item_number_table and
3659 output_token_number_table.
3660 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
3661 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
3662 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
3663 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
3664
36652002-04-22 Akim Demaille <akim@epita.fr>
3666
3667 * src/output.h, src/output.c (get_lines_number): Remove.
3668
36692002-04-19 Akim Demaille <akim@epita.fr>
3670
3671 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
3672 as Lex/Flex'.
3673 (Debugging): More details about enabling the debugging features.
3674 (Table of Symbols): Describe $$, $n, @$, and @n.
3675 Suggested by Tim Josling.
3676
36772002-04-19 Akim Demaille <akim@epita.fr>
3678
3679 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
3680
36812002-04-10 Akim Demaille <akim@epita.fr>
3682
3683 * src/system.h: Rely on HAVE_LIMITS_H.
3684 Suggested by Paul Eggert.
3685
36862002-04-09 Akim Demaille <akim@epita.fr>
3687
3688 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
3689 full stderr, and strip it according to the bison options, instead
3690 of composing the error message from different bits.
3691 This makes it easier to check for several error messages.
3692 Adjust all the invocations.
3693 Add an invocation exercising the error token.
3694 Add an invocation demonstrating a stupid error message.
3695 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
3696 Adjust the tests.
3697 Error message are for stderr, not stdout.
3698
36992002-04-09 Akim Demaille <akim@epita.fr>
3700
3701 * src/gram.h, src/gram.c (error_token_number): Remove, use
3702 errtoken->number.
3703 * src/reader.c (reader): Don't specify the user token number (2)
3704 for $undefined, as it uselessly prevents using it.
3705 * src/gram.h (token_number_t): Move to...
3706 * src/symtab.h: here.
3707 (state_t.number): Is a token_number_t.
3708 * src/print.c, src/reader.c: Use undeftoken->number instead of
3709 hard coded 2.
3710 (Even though this 2 is not the same as above: the number of the
3711 undeftoken remains being 2, it is its user token number which
3712 might not be 2).
3713 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
3714 `user_token_number_max'.
3715 Output `undef_token_number'.
3716 * data/bison.simple, data/bison.c++: Use them.
3717 Be sure to map invalid yylex return values to
3718 `undef_token_number'. This saves us from gratuitous SEGV.
3719
3720 * tests/conflicts.at (Solved SR Conflicts)
3721 (Unresolved SR Conflicts): Adjust.
3722 * tests/regression.at (Web2c Actions): Adjust.
3723
37242002-04-08 Akim Demaille <akim@epita.fr>
3725
3726 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
3727 Adding #line.
3728 Remove the duplicate `typedefs'.
3729 (RhsNumberType): Fix the declaration and various other typos.
3730 Use __ofile__.
3731 * data/bison.simple: Use __ofile__.
3732 * src/scan-skel.l: Handle __ofile__.
3733
37342002-04-08 Akim Demaille <akim@epita.fr>
3735
3736 * src/gram.h (item_number_t): New, the type of item numbers in
3737 RITEM. Note that it must be able to code symbol numbers as
3738 positive number, and the negation of rule numbers as negative
3739 numbers.
3740 Adjust all dependencies (pretty many).
3741 * src/reduce.c (rule): Remove this `short *' pointer: use
3742 item_number_t.
3743 * src/system.h (MINSHORT, MAXSHORT): Remove.
3744 Include `limits.h'.
3745 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
3746 (shortcpy): Remove.
3747 (MAXTABLE): Move to...
3748 * src/output.c (MAXTABLE): here.
3749 (prepare_rules): Use output_int_table to output rhs.
3750 * data/bison.simple, data/bison.c++: Adjust.
3751 * tests/torture.at (Big triangle): Move the limit from 254 to
3752 500.
3753 * tests/regression.at (Web2c Actions): Ajust.
3754
3755 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
3756 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
3757 passes, but produces negative #line number, once fixed, GCC is
3758 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
3759 C), it passes.
3760 * src/state.h (state_h): Code input lines on ints, not shorts.
3761
37622002-04-08 Akim Demaille <akim@epita.fr>
3763
3764 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
3765 and then the grammar.
3766
37672002-04-08 Akim Demaille <akim@epita.fr>
3768
3769 * src/system.h: No longer using strndup.
3770
37712002-04-07 Akim Demaille <akim@epita.fr>
3772
3773 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
3774 * src/output.c (output_table_data): Return the longest number.
3775 (prepare_tokens): Output `token_number_max').
3776 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
3777 New.
3778 Use them to define yy_token_number_type/TokenNumberType.
3779 Use this type for yytranslate.
3780 * tests/torture.at (Big triangle): Push the limit from 124 to
3781 253.
3782 * tests/regression.at (Web2c Actions): Adjust.
3783
37842002-04-07 Akim Demaille <akim@epita.fr>
3785
3786 * tests/torture.at (Big triangle): New.
3787 (GNU AWK Grammar, GNU Cim Grammar): Move to...
3788 * tests/existing.at: here.
3789
37902002-04-07 Akim Demaille <akim@epita.fr>
3791
3792 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
3793 nritems.
3794 Adjust dependencies.
3795
37962002-04-07 Akim Demaille <akim@epita.fr>
3797
3798 * src/reader.c: Normalize increments to prefix form.
3799
38002002-04-07 Akim Demaille <akim@epita.fr>
3801
3802 * src/reader.c, symtab.c: Remove debugging code.
3803
38042002-04-07 Akim Demaille <akim@epita.fr>
3805
3806 Rename all the `bucket's as `symbol_t'.
3807
3808 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
3809 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
3810 * src/symtab.c, src/symtab.h (bucket): Rename as...
3811 (symbol_t): this.
3812 (symbol_list_new, bucket_check_defined, bucket_make_alias)
3813 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
3814 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
3815 (buckets_new, buckets_free, buckets_do): Rename as...
3816 (symbol_list_new, symbol_check_defined, symbol_make_alias)
3817 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
3818 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
3819 (symbols_new, symbols_free, symbols_do): these.
3820
38212002-04-07 Akim Demaille <akim@epita.fr>
3822
3823 Use lib/hash for the symbol table.
3824
3825 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
3826 EOF.
3827 * src/lex.c (lex): Set the `number' member of new terminals.
3828 * src/reader.c (bucket_check_defined, bucket_make_alias)
3829 (bucket_check_alias_consistence, bucket_translation): New.
3830 (reader, grammar_free, readgram, token_translations_init)
3831 (packsymbols): Adjust.
3832 (reader): Number the predefined tokens.
3833 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
3834 for predefined tokens.
3835 * src/symtab.h (bucket): Remove all the hash table related
3836 members.
3837 * src/symtab.c (symtab): Replace by...
3838 (bucket_table): this.
3839 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
3840 (buckets_new, buckets_do): New.
3841
38422002-04-07 Akim Demaille <akim@epita.fr>
3843
3844 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
3845 (start_symbol, max_user_token_number, semantic_parser)
3846 (error_token_number): Initialize.
3847 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
3848 Initialize.
3849 (reader): Don't.
3850 (errtoken, eoftoken, undeftoken, axiom): Extern.
3851
38522002-04-07 Akim Demaille <akim@epita.fr>
3853
3854 * src/gram.h (rule_s): prec and precsym are now pointers
3855 to the bucket giving the priority/associativity.
3856 Member `associativity' removed: useless.
3857 * src/reduce.c, src/conflicts.c: Adjust.
3858
38592002-04-07 Akim Demaille <akim@epita.fr>
3860
3861 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
3862 Properly escape the symbols' TAG when outputting them.
3863
38642002-04-07 Akim Demaille <akim@epita.fr>
3865
3866 * src/lalr.h (LA): Is a bitsetv, not bitset*.
3867
38682002-04-07 Akim Demaille <akim@epita.fr>
3869
3870 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
3871 (LArule): this, which is an array to rule_t*.
3872 * src/print.c, src/conflicts.c: Adjust.
3873
38742002-04-07 Akim Demaille <akim@epita.fr>
3875
3876 * src/gram.h (rule_t): Rename `number' as `user_number'.
3877 `number' is a new member.
3878 Adjust dependencies.
3879 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
3880
38812002-04-07 Akim Demaille <akim@epita.fr>
3882
3883 As a result of the previous patch, it is no longer needed
3884 to reorder ritem itself.
3885
3886 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
3887
38882002-04-07 Akim Demaille <akim@epita.fr>
3889
3890 Be sure never to walk through RITEMS, but use only data related to
3891 the rules themselves. RITEMS should be banished.
3892
3893 * src/output.c (output_token_translations): Rename as...
3894 (prepare_tokens): this.
3895 In addition to `translate', prepare the muscles `tname' and
3896 `toknum', which were handled by...
3897 (output_rule_data): this.
3898 Remove, and move the remainder of its outputs into...
3899 (prepare_rules): this new routines, which also merges content from
3900 (output_gram): this.
3901 (prepare_rules): Be sure never to walk through RITEMS.
3902 (output_stos): Rename as...
3903 (prepare_stos): this.
3904 (output): Always invoke prepare_states, after all, just don't use it
3905 in the output if you don't need it.
3906
39072002-04-07 Akim Demaille <akim@epita.fr>
3908
3909 * src/LR0.c (new_state): Display `nstates' as the name of the
3910 newly created state.
3911 Adjust to initialize first_state and last_state if needed.
3912 Be sure to distinguish the initial from the final state.
3913 (new_states): Create the itemset of the initial state, and use
3914 new_state.
3915 * src/closure.c (closure): Now that the initial state has its
3916 items properly set, there is no need for a special case when
3917 creating `ruleset'.
3918
3919 As a result, now the rule 0, reducing to $axiom, is visible in the
3920 outputs. Adjust the test suite.
3921
3922 * tests/conflicts.at (Solved SR Conflicts)
3923 (Unresolved SR Conflicts): Adjust.
3924 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
3925 * tests/conflicts.at (S/R in initial): New.
3926
39272002-04-07 Akim Demaille <akim@epita.fr>
3928
3929 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
3930 the RHS of the rules.
3931 * src/output.c (output_gram): Likewise.
3932
39332002-04-07 Akim Demaille <akim@epita.fr>
3934
3935 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
3936 bucket.
3937 Adjust all dependencies.
3938 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
3939 `number' of the buckets too.
3940 * src/gram.h: Include `symtab.h'.
3941 (associativity): Move to...
3942 * src/symtab.h: here.
3943 No longer include `gram.h'.
3944
39452002-04-07 Akim Demaille <akim@epita.fr>
3946
3947 * src/gram.h, src/gram.c (rules_rhs_length): New.
3948 (ritem_longest_rhs): Use it.
3949 * src/gram.h (rule_t): `number' is a new member.
3950 * src/reader.c (packgram): Set it.
3951 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
3952 the end of `rules', and count them out of `nrules'.
3953 (reduce_output, dump_grammar): Adjust.
3954 * src/print.c (print_grammar): It is no longer needed to check for
3955 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
3956 * tests/reduce.at (Reduced Automaton): New test.
3957
39582002-04-07 Akim Demaille <akim@epita.fr>
3959
3960 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
3961 lacking `+ 1' to nrules, Bison reported as useless a token if it
3962 was used solely to set the precedence of the last rule...
3963
39642002-04-07 Akim Demaille <akim@epita.fr>
3965
3966 * data/bison.c++, data/bison.simple: Don't output the current file
3967 name in #line, to avoid useless diffs between two identical
3968 outputs under different names.
3969
39702002-04-07 Akim Demaille <akim@epita.fr>
3971
3972 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
3973 Normalize loops to using `< nrules + 1', not `<= nrules'.
3974
39752002-04-07 Akim Demaille <akim@epita.fr>
3976
3977 * TODO: Update.
3978
39792002-04-07 Akim Demaille <akim@epita.fr>
3980
3981 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
3982 bucket.value as bucket.number.
3983
39842002-04-07 Akim Demaille <akim@epita.fr>
3985
3986 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
3987 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
3988 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
3989 RHS, instead of being an index in RITEMS.
3990
39912002-04-04 Paul Eggert <eggert@twinsun.com>
3992
3993 * doc/bison.texinfo: Update copyright date.
3994 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
3995 (Symbols): Warn about running Bison in one character set,
3996 but compiling and/or running in an incompatible one.
3997 Warn about character code 256, too.
3998
39992002-04-03 Paul Eggert <eggert@twinsun.com>
4000
4001 * src/bison.data (YYSTACK_ALLOC): Depend on whether
4002 YYERROR_VERBOSE is nonzero, not whether it is defined.
4003
4004 Merge changes from bison-1_29-branch.
4005
40062002-03-20 Paul Eggert <eggert@twinsun.com>
4007
4008 Merge fixes from Debian bison_1.34-1.diff.
4009
4010 * configure.in (AC_PREREQ): 2.53.
4011
40122002-03-20 Akim Demaille <akim@epita.fr>
4013
4014 * src/conflicts.c (log_resolution): Argument `resolution' is const.
4015
40162002-03-19 Paul Eggert <eggert@twinsun.com>
4017
4018 * src/bison.simple (YYCOPY): New macro.
4019 (YYSTACK_RELOCATE): Use it.
4020 Remove Type arg; no longer needed. All callers changed.
4021 (yymemcpy): Remove; no longer needed.
4022
4023 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
4024 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
4025
40262002-03-19 Akim Demaille <akim@epita.fr>
4027
4028 Test and fix the #line outputs.
4029
4030 * tests/atlocal.at (GCC): New.
4031 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
4032 (Prologue synch line, ,%union synch line, Postprologue synch line)
4033 (Action synch line, Epilogue synch line): New tests.
4034 * src/reader.c (parse_union_decl): Define the muscle stype_line.
4035 * data/bison.simple, data/bison.c++: Use it.
4036
40372002-03-19 Akim Demaille <akim@epita.fr>
4038
4039 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
4040 (Solved SR Conflicts, %expect not enough, %expect right)
4041 (%expect too much): Move to...
4042 * tests/conflicts.at: this new file.
4043
40442002-03-19 Akim Demaille <akim@epita.fr>
4045
4046 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
4047 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
4048 that we can move to enums for instance.
4049 * src/output.c (token_definitions_output): Output a list of
4050 `token-name, token-number' instead of the #define.
4051 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
4052
40532002-03-14 Akim Demaille <akim@epita.fr>
4054
4055 Use Gettext 0.11.1.
4056
40572002-03-09 Robert Anisko <robert@lrde.epita.fr>
4058
4059 * data/bison.c++: Make the user able to add members to the generated
4060 parser by subclassing.
4061
40622002-03-05 Robert Anisko <robert@lrde.epita.fr>
4063
4064 * src/reader.c (read_additionnal_code): `c' should be an integer, not
4065 a character.
4066 Reported by Nicolas Tisserand and Nicolas Burrus.
4067
40682002-03-04 Robert Anisko <robert@lrde.epita.fr>
4069
4070 * src/reader.c: Warn about lacking semi-colons, do not complain.
4071
40722002-03-04 Robert Anisko <robert@lrde.epita.fr>
4073
4074 * data/bison.c++: Remove a debug line.
4075
40762002-03-04 Robert Anisko <robert@lrde.epita.fr>
4077
4078 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
4079 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
4080 provide a default implementation.
4081
40822002-03-04 Akim Demaille <akim@epita.fr>
4083
4084 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
4085 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
4086 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
4087 * tests/semantic.at (Parsing Guards): Similarly.
4088 * src/reader.at (readgram): Complain if the last rule is not ended
4089 with a semi-colon.
4090
40912002-03-04 Akim Demaille <akim@epita.fr>
4092
4093 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
4094 * src/closure.c: here.
4095 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
4096 RTC.
4097 * src/warshall.h, src/warshall.c: Remove.
4098 * tests/sets.at (Broken Closure): Adjust.
4099
41002002-03-04 Akim Demaille <akim@epita.fr>
4101
4102 * src/output.c (output_skeleton): tempdir is const.
4103 bytes_read is unused.
4104
41052002-03-04 Akim Demaille <akim@epita.fr>
4106
4107 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
4108 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
4109 Update.
4110 From Michael Hayes.
4111
41122002-03-04 Akim Demaille <akim@epita.fr>
4113
4114 * src/closure.c (closure): `r' is unused.
4115
41162002-03-04 Akim Demaille <akim@epita.fr>
4117
4118 * tests/sets.at (Broken Closure): Add the ending `;'.
4119 * src/reader.at (readgram): Complain if a rule is not ended with a
4120 semi-colon.
4121
41222002-03-04 Akim Demaille <akim@epita.fr>
4123
4124 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
4125 (count_sr_conflicts): Use bitset_count.
4126 * src/reduce.c (inaccessable_symbols): Ditto.
4127 (bits_size): Remove.
4128 * src/warshall.h, src/warshall.c: Convert to bitsetv.
4129
41302002-03-04 Akim Demaille <akim@epita.fr>
4131
4132 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
4133 * src/reduce.c: Remove the `bitset_zero's following the
4134 `bitset_create's, as now it is performed by the latter.
4135
41362002-03-04 Akim Demaille <akim@epita.fr>
4137
4138 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
4139 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
4140 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
4141 latest sources from Michael.
4142
41432002-03-04 Akim Demaille <akim@epita.fr>
4144
4145 * src/output.c (output): Don't free the grammar.
4146 * src/reader.c (grammar_free): New.
4147 * src/main.c (main): Call it and don't free symtab here.
4148
41492002-03-04 Akim Demaille <akim@epita.fr>
4150
4151 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
4152 before returning.
4153 Reported by Benoit Perrot.
4154
41552002-03-04 Akim Demaille <akim@epita.fr>
4156
4157 Use bitset operations when possible, not loops over bits.
4158
4159 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
4160 bitset_or.
4161 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
4162 * src/reduce.c (useless_nonterminals): Formatting changes.
4163 * src/warshall.c (TC): Use bitset_or.
4164
41652002-03-04 Akim Demaille <akim@epita.fr>
4166
4167 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
4168 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
4169 Ditto.
4170
41712002-03-04 Akim Demaille <akim@epita.fr>
4172
4173 * src/lalr.c (F): Now a bitset*.
4174 Adjust all dependencies.
4175
41762002-03-04 Akim Demaille <akim@epita.fr>
4177
4178 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
4179 Adjust all dependencies.
4180
41812002-03-04 Akim Demaille <akim@epita.fr>
4182
4183 * src/L0.c, src/LR0.h (nstates): Be size_t.
4184 Adjust comparisons (signed vs unsigned).
4185 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
4186 bitset*.
4187 Adjust all dependencies.
4188
41892002-03-04 Akim Demaille <akim@epita.fr>
4190
4191 * src/closure.c (firsts): Now, also a bitset.
4192 Adjust all dependencies.
4193 (varsetsize): Remove, now unused.
4194 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
4195
41962002-03-04 Akim Demaille <akim@epita.fr>
4197
4198 * src/print.c: Convert to use bitset.h, not hand coded iterations
4199 over ints.
4200
42012002-03-04 Akim Demaille <akim@epita.fr>
4202
4203 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
4204
42052002-03-04 Akim Demaille <akim@epita.fr>
4206
4207 * src/closure.c (ruleset): Be a bitset.
4208 (rulesetsize): Remove.
4209
42102002-03-04 Akim Demaille <akim@epita.fr>
4211
4212 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
4213 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
4214 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
4215 * src/closure.c (fderives): Be an array of bitsets.
4216
42172002-02-28 Robert Anisko <robert@lrde.epita.fr>
4218
4219 * data/bison.c++: Merge the two generated headers. Insert a copyright
4220 notice in each output file.
4221
42222002-02-28 Akim Demaille <akim@epita.fr>
4223
4224 * data/bison.c++: Copy the prologue of bison.simple to fetch
4225 useful M4 definitions, such as b4_header_guard.
4226
42272002-02-25 Akim Demaille <akim@epita.fr>
4228
4229 * src/getargs.c (version): Give the name of the authors, and use a
4230 translator friendly scheme for the bgr
4231 copyright notice.
4232
42332002-02-25 Akim Demaille <akim@epita.fr>
4234
4235 * src/output.c (header_output): Remove, now handled completely via
4236 M4.
4237
42382002-02-25 Akim Demaille <akim@epita.fr>
4239
4240 * m4/m4.m4: New, from CVS Autoconf.
4241 * configure.in: Invoke it.
4242 * src/output.c (output_skeleton): Use its result instead of the
4243 hard coded name.
4244
42452002-02-25 Akim Demaille <akim@epita.fr>
4246
4247 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
4248 Fileutils 4.1.5.
4249 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
4250 * src/output.c (output_skeleton): Use mkstemp to create a real
4251 temporary file.
4252 Move the filling of `skeleton' and its muscle to...
4253 (prepare): here.
4254 (output): Move the definition of the prologue muscle to...
4255 (prepare): here.
4256 * src/system.h (DEFAULT_TMPDIR): New.
4257
42582002-02-14 Paul Eggert <eggert@twinsun.com>
4259
4260 Remove the support for C++ namespace cleanliness; it was
4261 causing more problems than it was curing, since it didn't work
4262 properly on some nonstandard C++ compilers. This can wait
4263 for a proper C++ parser.
4264
4265 * NEWS: Document this.
4266 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
4267 of C++, as it's treated like C now.
4268 * src/bison.simple (YYSTD): Remove.
4269 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
4270 Treat C++ just like Standard C instead of trying to support
4271 namespace cleanliness.
4272
42732002-02-14 Akim Demaille <akim@epita.fr>
4274
4275 * tests/regression.at (else): Adjust to Andreas' change.
4276
42772002-02-14 Akim Demaille <akim@epita.fr>
4278
4279 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
4280
42812002-02-13 Andreas Schwab <schwab@suse.de>
4282
4283 * src/output.c (output_rule_data): Don't output NULL, it might
4284 not be defined yet.
4285
42862002-02-11 Robert Anisko <robert@lrde.epita.fr>
4287
4288 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
4289 (Copyright notice): Update.
4290
42912002-02-11 Akim Demaille <akim@epita.fr>
4292
4293 * tests/regression.at (%nonassoc and eof): Don't include
4294 nonportable headers.
4295
42962002-02-08 Robert Anisko <robert@lrde.epita.fr>
4297
4298 * data/bison.c++: Correct error recovery. Make the user able to
4299 initialize the starting location.
4300
43012002-02-07 Akim Demaille <akim@epita.fr>
4302
4303 * tests/input.at: New.
4304
43052002-02-07 Robert Anisko <robert@lrde.epita.fr>
4306
4307 * data/bison.c++: Replace some direct m4 expansions by constants. Be
4308 more consistent when naming methods and variables. Put preprocessor
4309 directives around tables only needed for debugging.
4310
43112002-02-07 Robert Anisko <robert@lrde.epita.fr>
4312
4313 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
4314 C++ parsers.
4315 (yy::b4_name::parse): Use print_.
4316
43172002-02-07 Robert Anisko <robert@lrde.epita.fr>
4318
4319 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
4320
43212002-02-07 Robert Anisko <robert@lrde.epita.fr>
4322
4323 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
4324 C++ parsers.
4325 (yy::b4_name::parse): Build verbose error messages, and use error_.
4326
43272002-02-06 Robert Anisko <robert@lrde.epita.fr>
4328
4329 * data/bison.c++: Fix m4 quoting in comments.
4330
43312002-02-06 Robert Anisko <robert@lrde.epita.fr>
4332
4333 * data/bison.c++: Adjust the parser code. Fix some muscles that were
4334 not expanded by m4.
4335
43362002-02-05 Akim Demaille <akim@epita.fr>
4337
4338 * data/bison.c++: Adjust to the M4 back end.
4339 More is certainly needed.
4340
43412002-02-05 Akim Demaille <akim@epita.fr>
4342
4343 Give a try to M4 as a back end.
4344
4345 * lib/readpipe.c: New, from wdiff.
4346 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
4347 BISON_HAIRY.
4348 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
4349 specific values. Now it is m4 that performs the lookup.
4350 * src/parse-skel.y: Remove.
4351 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
4352 * src/output.c (actions_output, guards_output)
4353 (token_definitions_output): No longer keeps track of the output
4354 line number, hence remove the second argument.
4355 (guards_output): Check against the guard member of a rule, not the
4356 action member.
4357 Adjust callers.
4358 (output_skeleton): Don't look for the skeleton location, let m4 do
4359 that.
4360 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
4361 file will be used.
4362 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
4363 (prepare): Given that for the time being changesyntax is not
4364 usable in M4, rename the muscles using `-' to `_'.
4365 Define `defines_flag', `output_parser_name' and `output_header_name'.
4366 * src/output.h (actions_output, guards_output)
4367 (token_definitions_output): Adjust prototypes.
4368 * src/scan-skel.l: Instead of scanning the skeletons, it now
4369 processes the output of m4: `__oline__' and `#output'.
4370 * data/bison.simple: Adjust to be used by M4(sugar).
4371 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
4372 to date.
4373 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
4374 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
4375 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
4376 shamelessly stolen from CVS Autoconf.
4377
43782002-02-05 Akim Demaille <akim@epita.fr>
4379
4380 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
4381 * configure.in: Check for the declarations of free and malloc.
4382 * src/muscle_tab.c: Adjust.
4383
43842002-02-05 Akim Demaille <akim@epita.fr>
4385
4386 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
4387 which have no values.
4388
43892002-02-05 Akim Demaille <akim@epita.fr>
4390
4391 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
4392 * data/: here.
4393
43942002-01-29 Paul Eggert <eggert@twinsun.com>
4395
4396 * src/bison.simple (YYSIZE_T): Do not define merely because
4397 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
4398 On some platforms, <alloca.h> does not declare YYSTD (size_t).
4399
44002002-01-27 Akim Demaille <akim@epita.fr>
4401
4402 Fix `%nonassoc and eof'.
4403
4404 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
4405 which were not properly copied! Replace
4406 memcpy (res->errs, src->errs, src->nerrs);
4407 with
4408 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
4409 !!!
4410 * tests/regression.at (%nonassoc and eof): Adjust to newest
4411 Autotest: `.' is not in the PATH.
4412
44132002-01-27 Akim Demaille <akim@epita.fr>
4414
4415 * tests/sets.at (AT_EXTRACT_SETS): New.
4416 (Nullable): Use it.
4417 (Firsts): New.
4418
44192002-01-26 Akim Demaille <akim@epita.fr>
4420
4421 * tests/actions.at, tests/calc.at, tests/headers.at,
4422 * tests/torture.at: Adjust to the newest Autotest which no longer
4423 forces `.' in the PATH.
4424
44252002-01-25 Akim Demaille <akim@epita.fr>
4426
4427 * tests/regression.at (%nonassoc and eof): New.
4428 Suggested by Robert Anisko.
4429
44302002-01-24 Akim Demaille <akim@epita.fr>
4431
4432 Bison dumps core when trying to complain about broken input files.
4433 Reported by Cris van Pelt.
4434
4435 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
4436 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
4437 into...
4438 (Invalid inputs): Strengthen: exercise parse_percent_token.
4439
44402002-01-24 Robert Anisko <robert.anisko@epita.fr>
4441
4442 * src/Makefile.am: Add bison.c++.
4443 * src/bison.c++: New skeleton.
4444
44452002-01-21 Paolo Bonzini <bonzini@gnu.org>
4446
4447 * po/it.po: New.
4448
44492002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
4450
4451 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
4452
44532002-01-20 Marc Autret <marc@gnu.org>
4454
4455 * src/files.c (compute_output_file_names): Fix
4456
44572002-01-20 Marc Autret <marc@gnu.org>
4458
4459 * tests/output.at: New test.
4460 * src/files.c (compute_base_names): Don't map extensions when
4461 the YACC flag is set, use defaults.
4462 Reported by Evgeny Stambulchik.
4463
44642002-01-20 Marc Autret <marc@gnu.org>
4465
4466 * src/system.h: Need to define __attribute__ away for non-GCC
4467 compilers as well (i.e. the vendor C compiler).
4468 Suggested by Albert Chin-A-Young.
4469
44702002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
4471
4472 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
4473 canonical definition.
4474 * src/system.h: Use the canonical definition for PARAMS (avoids
4475 a conflict with the macro from lib/hash.h).
4476
44772002-01-11 Akim Demaille <akim@epita.fr>
4478
4479 * configure.in: Use AC_FUNC_STRNLEN.
4480 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
4481
44822002-01-09 Akim Demaille <akim@epita.fr>
4483
4484 * src/files.c, src/files.h (output_infix): New.
4485 (tab_extension): Remove.
4486 (compute_base_names): Compute the former, drop the latter.
4487 * src/output.c (prepare): Insert the muscles `output-infix', and
4488 `output-suffix'.
4489 * src/parse-skel.y (string, string.1): New.
4490 (section.header): Use it.
4491 (section.yacc): Remove.
4492 (prefix): Remove too.
4493 * src/scan-skel.l: Adjust.
4494 * src/bison.simple, src/bison.hairy: Adjust.
4495
44962002-01-09 Akim Demaille <akim@epita.fr>
4497
4498 * configure.in (WERROR_CFLAGS): Compute it.
4499 * src/Makefile.am (CFLAGS): Pass it.
4500 * tests/atlocal.in (CFLAGS): Idem.
4501 * src/files.c: Fix a few warnings.
4502 (get_extension_index): Remove, unused.
4503
45042002-01-08 Akim Demaille <akim@epita.fr>
4505
4506 * src/getargs.c (AS_FILE_NAME): New.
4507 (getargs): Use it to convert DOSish file names.
4508 * src/files.c (base_name): Rename as full_base_name to avoid
4509 clashes with `base_name ()'.
4510 (filename_split): New.
4511 (compute_base_names): N-th rewrite, using filename_split.
4512
45132002-01-08 Akim Demaille <akim@epita.fr>
4514
4515 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
4516 New, stolen from the Fileutils 4.1.
4517 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
4518 * configure.in: Check for the presence of memrchr, and of its
4519 prototype.
4520
45212002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
4522
4523 * lib/hash.h (__P): Added definition for this macro.
4524 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
4525 BUILT_SOURCES, to ensure they are generated first.
4526 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
4527 %error-verbose to allow bootstrapping with bison 1.30x.
4528
45292002-01-06 Akim Demaille <akim@epita.fr>
4530
4531 * src/reader.c (parse_braces): Don't fetch the next char, the
4532 convention is to fetch on entry.
4533 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
4534 'switch' without a following semicolon.
4535 * tests/regression.at (braces parsing): New.
4536
45372002-01-06 Akim Demaille <akim@epita.fr>
4538
4539 Bison is dead wrong in its RR conflict reports.
4540
4541 * tests/torture.at (GNU Cim Grammar): New.
4542 * src/conflicts.c (count_rr_conflicts): Fix.
4543
45442002-01-06 Akim Demaille <akim@epita.fr>
4545
4546 Creating package.m4 from configure.ac causes too many problems.
4547
4548 * tests/Makefile.am (package.m4): Create it by hand,
4549 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
4550
45512002-01-06 Akim Demaille <akim@epita.fr>
4552
4553 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
4554 skeleton.h.
4555
45562002-01-04 Paul Eggert <eggert@twinsun.com>
4557
4558 * doc/bison.texinfo (Debugging):
4559 Remove YYSTDERR; it's no longer defined or used.
4560 Also, s/cstdio.h/cstdio/.
4561
45622002-01-03 Akim Demaille <akim@epita.fr>
4563
4564 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
4565
45662002-01-03 Akim Demaille <akim@epita.fr>
4567
4568 * src/parse-skel.y (process_skeleton): Don't bind the parser's
4569 tracing code to --trace, wait for a better --trace option, with
4570 args.
4571
45722002-01-03 Akim Demaille <akim@epita.fr>
4573
4574 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
4575 The ISO C++ standard is extremely clear about it: stderr is
4576 considered a macro, not a regular symbol (see table 94 `Header
4577 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
4578 Therefore std:: does not apply to it. It still does with fprintf.
4579 Also, s/cstdio.h/cstdio/.
4580
45812002-01-03 Akim Demaille <akim@epita.fr>
4582
4583 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
4584 for non system headers.
4585
45862002-01-02 Akim Demaille <akim@epita.fr>
4587
4588 Equip the skeleton chain with location tracking, runtime trace,
4589 pure parser and scanner.
4590
4591 * src/parse-skel.y: Request a pure parser, locations, and prefix
4592 renaming.
4593 (%union): Having several members with the same type does not help
4594 type mismatches, simplify.
4595 (YYPRINT, yyprint): New.
4596 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
4597 (skel_error): this.
4598 Handle locations.
4599 * src/scan-skel.l: Adjust to these changes.
4600 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
4601 (LOCATION_PRINT, skel_control_t): New.
4602
46032001-12-30 Akim Demaille <akim@epita.fr>
4604
4605 * src/parse-skel.y: Get rid of the shift/reduce conflict:
4606 replace `gb' with BLANKS.
4607 * src/scan-skel.l: Adjust.
4608
46092001-12-30 Akim Demaille <akim@epita.fr>
4610
4611 * src/system.h: We don't need nor want bcopy.
4612 Throw away MS-DOS crap: we don't need getpid.
4613 * configure.in: We don't need strndup. It was even causing
4614 problems: because Flex includes the headers *before* us,
4615 _GNU_SOURCE is not defined by config.h, and therefore strndup was
4616 not visible.
4617 * lib/xstrndup.c: New.
4618 * src/scan-skel.l: Use it.
4619 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
4620 * src/parse-skel.y: Use %directives instead of #defines.
4621
46222001-12-30 Akim Demaille <akim@epita.fr>
4623
4624 * src/skeleton.h: New.
4625 * src/output.c (output_parser, output_master_parser): Remove, dead
4626 code.
4627 * src/output.h (get_lines_number, actions_output, guards_output)
4628 (token_definitions_output): Prototype them.
4629 * src/parse-skel.y: Add the license notice.
4630 Include output.h and skeleton.h.
4631 (process_skeleton): Returns void, and takes a single parameter.
4632 * src/scan-skel.l: Add the license notice.
4633 Include skeleton.h.
4634 Don't use %option yylineno: it seems that then Flex imagines
4635 REJECT has been used, and therefore it won't reallocate its
4636 buffers (which makes no other sense to me than a bug). It results
4637 in warnings for `unused: yy_flex_realloc'.
4638
46392001-12-30 Robert Anisko <robert.anisko@epita.fr>
4640
4641 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
4642 (MUSCLE_INSERT_PREFIX): ...to there.
4643 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
4644 (MUSCLE_INSERT_PREFIX): Move from here...
4645
4646 * src/bison.hairy: Add a section directive. Put braces around muscle
4647 names. This parser skeleton is still broken, but Bison should not
4648 choke on a bad muscle 'syntax'.
4649 * src/bison.simple: Add a section directive. Put braces around muscle
4650 names.
4651
4652 * src/files.h (strsuffix, stringappend): Add declarations.
4653 (tab_extension): Add declaration.
4654 (short_base_name): Add declaration.
4655
4656 * src/files.c (strsuffix, stringappend): No longer static. These
4657 functions are used in the skeleton parser.
4658 (tab_extension): New.
4659 (compute_base_names): Use the computations done in this function
4660 to guess if the generated parsers should have '.tab' in their
4661 names.
4662 (short_base_name): No longer static.
4663
4664 * src/output.c (output_skeleton): New.
4665 (output): Disable call to output_master_parser, and give a try to
4666 a new skeleton handling system.
4667 (guards_output, actions_output): No longer static.
4668 (token_definitions_output, get_lines_number): No longer static.
4669
4670 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
4671
4672 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
4673 parse-skel.y.
4674
4675 * src/parse-skel.y: New file.
4676 * src/scan-skel.l: New file.
4677
46782001-12-29 Akim Demaille <akim@epita.fr>
4679
4680 %name-prefix is broken.
4681
4682 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
4683 Adjust all dependencies.
4684 * tests/headers.at (export YYLTYPE): Strengthen this test: use
4685 %name-prefix.
4686
4687 Renaming yylval but not yylloc is not consistent. Now we do.
4688
4689 * src/bison.simple: Prefix yylloc if used.
4690 * doc/bison.texinfo (Decl Summary): Document that.
4691
46922001-12-29 Akim Demaille <akim@epita.fr>
4693
4694 * doc/bison.texinfo: Promote `%long-directive' over
4695 `%long_directive'.
4696 Remove all references to fixed-output-files, yacc is enough.
4697
46982001-12-29 Akim Demaille <akim@epita.fr>
4699
4700 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
4701 user prologue. These are defaults.
4702 * tests/actions.at (Mid-rule actions): Make sure the user can
4703 define YYDEBUG and YYERROR_VERBOSE.
4704
47052001-12-29 Akim Demaille <akim@epita.fr>
4706
4707 * src/output.c (header_output): Don't forget to export YYLTYPE and
4708 yylloc.
4709 * tests/headers.at (export YYLTYPE): New, make sure it does.
4710 * tests/regression.at (%union and --defines, Invalid CPP headers):
4711 Move to...
4712 * tests/headers.at: here.
4713
47142001-12-29 Akim Demaille <akim@epita.fr>
4715
4716 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
4717
47182001-12-29 Akim Demaille <akim@epita.fr>
4719
4720 * tests/actions.at (Mid-rule actions): Output on a single line
4721 instead of several.
4722
47232001-12-29 Akim Demaille <akim@epita.fr>
4724
4725 * doc/bison.texinfo: Formatting changes.
4726
47272001-12-29 Akim Demaille <akim@epita.fr>
4728
4729 Don't store the token defs in a muscle, just be ready to output it
4730 on command. Now possible via `symbols'. Fixes a memory leak.
4731
4732 * src/output.c (token_definitions_output): New.
4733 (output_parser, header_output): Use it.
4734 * src/reader.c (symbols_save): Remove.
4735
47362001-12-29 Akim Demaille <akim@epita.fr>
4737
4738 * src/bison.simple: Do not provide a default for YYSTYPE and
4739 YYLTYPE before the user's prologue. Otherwise it's hardly... a
4740 default.
4741
47422001-12-29 Akim Demaille <akim@epita.fr>
4743
4744 Mid-rule actions are simply... ignored!
4745
4746 * src/reader.c (readgram): Be sure to attach mid-rule actions to
4747 the empty-rule associated to the dummy symbol, not to the host
4748 rule.
4749 * tests/actions.at (Mid-rule actions): New.
4750
47512001-12-29 Akim Demaille <akim@epita.fr>
4752
4753 Memory leak.
4754
4755 * src/reader.c (reader): Free grammar.
4756
47572001-12-29 Akim Demaille <akim@epita.fr>
4758
4759 Memory leak.
4760
4761 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
4762 since it allocates it for each state, although only one is needed.
4763 (allocate_storage): Do it here.
4764
47652001-12-29 Akim Demaille <akim@epita.fr>
4766
4767 * src/options.h, src/options.c (create_long_option_table): Rename
4768 as...
4769 (long_option_table_new): this, with a clearer prototype.
4770 (percent_table): Remove, unused,
4771 * src/getargs.c (getargs): Adjust.
4772
47732001-12-29 Akim Demaille <akim@epita.fr>
4774
4775 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
4776 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
4777 as states.
4778
47792001-12-29 Akim Demaille <akim@epita.fr>
4780
4781 * src/lalr.c (build_relations): Rename `states' as `states1'.
4782 Sorry, I don't understand exactly what it is, no better name...
4783
47842001-12-29 Akim Demaille <akim@epita.fr>
4785
4786 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
4787 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
4788 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
4789 as rules.
4790
47912001-12-29 Akim Demaille <akim@epita.fr>
4792
4793 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
4794 ago.
4795
47962001-12-29 Akim Demaille <akim@epita.fr>
4797
4798 * src/reader.c, src/reader.h (user_toknums): Remove.
4799 Adjust all users to use symbols[i]->user_token_number.
4800
48012001-12-29 Akim Demaille <akim@epita.fr>
4802
4803 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
4804 Adjust all users to use symbols[i]->prec or ->assoc.
4805
48062001-12-29 Akim Demaille <akim@epita.fr>
4807
4808 * src/reader.c, src/reader.h (tags): Remove.
4809 Adjust all users to use symbols[i]->tag.
4810
48112001-12-29 Akim Demaille <akim@epita.fr>
4812
4813 * src/gram.h, src/gram.c (symbols): New, similar to state_table
4814 and rule_table.
4815 * src/reader.c (packsymbols): Fill this table.
4816 Drop sprec.
4817 * src/conflicts.c (resolve_sr_conflict): Adjust.
4818 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
4819 single table.
4820 Use symbols[i]->tag instead of tags[i].
4821
48222001-12-29 Akim Demaille <akim@epita.fr>
4823
4824 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
4825 In addition, put a comment in there, to replace...
4826 * tests/regression.at (%union and C comments): Remove.
4827
48282001-12-29 Akim Demaille <akim@epita.fr>
4829
4830 * tests/regression.at (Web2c Actions): Blindly move the actual
4831 output as expected output. The contents *seem* right to me, but I
4832 can't pretend reading perfectly parser tables... Nonetheless, all
4833 the other tests pass correctly, the table look OK, even though the
4834 presence of `$axiom' is to be noted: AFAICS it is useless (but
4835 harmless).
4836
48372001-12-29 Akim Demaille <akim@epita.fr>
4838
4839 * src/reader.c (readgram): Don't add the rule 0 if there were no
4840 rules read. In other words, add it _after_ having performed
4841 grammar sanity checks.
4842 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
4843
48442001-12-29 Akim Demaille <akim@epita.fr>
4845
4846 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
4847 visible, and some states have now a different number.
4848
48492001-12-29 Akim Demaille <akim@epita.fr>
4850
4851 * src/reader.c (readgram): Bind the initial rule's lineno to that
4852 of the first rule.
4853 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
4854 (Solved SR Conflicts): Adjust rule 0's line number.
4855
48562001-12-29 Akim Demaille <akim@epita.fr>
4857
4858 Fix the `GAWK Grammar' failure.
4859
4860 * src/LR0.c (final_state): Initialize to -1 so that we do compute
4861 the reductions of the first state which was mistakenly confused
4862 with the final state because precisely final_state was initialized
4863 to 0.
4864 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
4865 now noticed by Bison.
4866 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
4867 have a reduction on $default.
4868
48692001-12-29 Akim Demaille <akim@epita.fr>
4870
4871 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
4872 rule line numbers.
4873 * src/closure.c (print_closure): Likewise.
4874 * src/derives.c (print_derives): Likewise.
4875 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
4876 now.
4877
48782001-12-29 Akim Demaille <akim@epita.fr>
4879
4880 * src/lalr.c (lookaheads_print): New.
4881 (lalr): Call it when --trace-flag.
4882 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
4883 are dumped.
4884
48852001-12-29 Akim Demaille <akim@epita.fr>
4886
4887 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
4888 when walking through ritem, even via rule->rhs.
4889 * src/reduce.c (dump_grammar, useful_production, reduce_output)
4890 (useful_production, useless_nonterminals): Likewise.
4891 (reduce_grammar_tables): Likewise, plus update nritems.
4892 * src/nullable.c (set_nullable): Likewise.
4893 * src/lalr.c (build_relations): Likewise.
4894 * tests/sets.at (Nullable): Adjust.
4895 Fortunately, now, the $axiom is no longer nullable.
4896
48972001-12-29 Akim Demaille <akim@epita.fr>
4898
4899 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
4900 the 0-sentinel.
4901 * src/gram.c (ritem_longest_rhs): Likewise.
4902 * src/reduce.c (nonterminals_reduce): Likewise.
4903 * src/print_graph.c (print_graph): Likewise.
4904 * src/output.c (output_rule_data): Likewise.
4905 * src/nullable.c (set_nullable): Likewise.
4906
49072001-12-29 Akim Demaille <akim@epita.fr>
4908
4909 * src/output.c: Comment changes.
4910
49112001-12-27 Paul Eggert <eggert@twinsun.com>
4912
4913 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
4914 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
4915 Sparc, as they were causing more porting problems than the
4916 (minor) performance improvement was worth.
4917
4918 Also, catch up with 1.31's YYSTD.
4919
49202001-12-27 Akim Demaille <akim@epita.fr>
4921
4922 * src/output.c (output_gram): Rely on nritems, not the
4923 0-sentinel. See below.
4924 Use -1 as separator, not 0.
4925 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
4926 Rely on -1 as separator in yyrhs, instead of 0.
4927 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
4928 twice `Now at end of input', therefore there are two lines less to
4929 expect.
4930
49312001-12-27 Akim Demaille <akim@epita.fr>
4932
4933 * tests/regression.at (Unresolved SR Conflicts):
4934 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
4935 below.
4936
49372001-12-27 Akim Demaille <akim@epita.fr>
4938
4939 * src/LR0.c (new_state): Recognize the final state by the fact it
4940 is reached by eoftoken.
4941 (insert_start_shifting_state, insert_eof_shifting_state)
4942 (insert_accepting_state, augment_automaton): Remove, since now
4943 these states are automatically computed from the initial state.
4944 (generate_states): Adjust.
4945 * src/print.c: When reporting a rule number to the user, substract
4946 1, so that the axiom rule is rule 0, and the first user rule is 1.
4947 * src/reduce.c: Likewise.
4948 * src/print_graph.c (print_core): For the time being, just as for
4949 the report, depend upon --trace-flags to dump the full set of
4950 items.
4951 * src/reader.c (readgram): Once the grammar read, insert the rule
4952 0: `$axiom: START-SYMBOL $'.
4953 * tests/set.at: Adjust: rule 0 is now displayed, and since the
4954 number of the states has changed (the final state is no longer
4955 necessarily the last), catch up.
4956
49572001-12-27 Akim Demaille <akim@epita.fr>
4958
4959 Try to make the use of the eoftoken valid. Given that its value
4960 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
4961 is used instead of > 0 where appropriate, (ii), depend upon nritems
4962 instead of the 0-sentinel.
4963
4964 * src/gram.h, src/gram.c (nritems): New.
4965 Expected to be duplication of nitems, but for the time being...
4966 * src/reader.c (packgram): Assert nritems and nitems are equal.
4967 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
4968 * src/closure.c (print_closure, print_fderives): Likewise.
4969 * src/gram.c (ritem_print): Likewise.
4970 * src/print.c (print_core, print_grammar): Likewise.
4971 * src/print_graph.c: Likewise.
4972
49732001-12-27 Akim Demaille <akim@epita.fr>
4974
4975 * src/main.c (main): If there are complains after grammar
4976 reductions, then output the report anyway if requested, then die.
4977 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
4978 * src/reader.c (eoftoken): New.
4979 (parse_token_decl): If the token being defined has value `0', it
4980 is the eoftoken.
4981 (packsymbols): No longer hack `tags' to insert `$' by hand.
4982 Be sure to preserve the value of the eoftoken.
4983 (reader): Make sure eoftoken is defined.
4984 Initialize nsyms to 0: now eoftoken is created just like the others.
4985 * src/print.c (print_grammar): Don't special case the eof token.
4986 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
4987 lie anyway, albeit pleasant.
4988 * tests/calc.at: Exercise error messages with eoftoken.
4989 Change the grammar so that empty input is invalid.
4990 Adjust expectations.
4991 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
4992
49932001-12-27 Akim Demaille <akim@epita.fr>
4994
4995 * configure.in: Check the protos of strchr ans strspn.
4996 Replace strchr if needed.
4997 * src/system.h: Provide the protos of strchr, strspn and memchr if
4998 missing.
4999 * lib/strchr.c: New.
5000 * src/reader.c (symbols_save): Use strchr.
5001
50022001-12-27 Akim Demaille <akim@epita.fr>
5003
5004 * src/print.c, src/print_graph.c (escape): New.
5005 Use it to quote the TAGS outputs.
5006 * src/print_graph.c (print_state): Now errors are in red, and
5007 reductions in green.
5008 Prefer high to wide: output the state number on a line of its own.
5009
50102001-12-27 Akim Demaille <akim@epita.fr>
5011
5012 * src/state.h, src/state.c (reductions_new): New.
5013 * src/LR0.c (set_state_table): Let all the states have a
5014 `reductions', even if reduced to 0.
5015 (save_reductions): Adjust.
5016 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
5017 * src/print.c (print_reductions, print_actions): Adjust.
5018 * src/output.c (action_row): Adjust.
5019
50202001-12-27 Akim Demaille <akim@epita.fr>
5021
5022 * src/state.h, src/state.c (errs_new, errs_dup): New.
5023 * src/LR0.c (set_state_table): Let all the states have an errs,
5024 even if reduced to 0.
5025 * src/print.c (print_errs, print_reductions): Adjust.
5026 * src/output.c (output_actions, action_row): Adjust.
5027 * src/conflicts.c (resolve_sr_conflict): Adjust.
5028
50292001-12-27 Akim Demaille <akim@epita.fr>
5030
5031 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
5032
50332001-12-27 Akim Demaille <akim@epita.fr>
5034
5035 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
5036 * src/print.c: here.
5037 (lookaheadset, shiftset): New, used as additional storage by
5038 print_reductions.
5039 (print_results): Adjust.
5040 (print_shifts, print_gotos, print_errs): New, extracted from...
5041 (print_actions): here.
5042 * src/print_graph.c (print_actions): Remove dead code.
5043
50442001-12-27 Akim Demaille <akim@epita.fr>
5045
5046 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
5047 `$n' and `@n'.
5048
50492001-12-27 Akim Demaille <akim@epita.fr>
5050
5051 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
5052 (build_relations): Adjust.
5053
50542001-12-27 Akim Demaille <akim@epita.fr>
5055
5056 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
5057 duplication.
5058
50592001-12-27 Akim Demaille <akim@epita.fr>
5060
5061 * src/reader.c (packgram): Catch nitems overflows.
5062
50632001-12-27 Akim Demaille <akim@epita.fr>
5064
5065 * src/files.c, src/files.h (guard_obstack): Remove.
5066 * src/output.c (output): Adjust.
5067 * src/reader.c (parse_braces): New, factoring...
5068 (copy_action, copy_guard): these two which are renamed as...
5069 (parse_action, parse_guard): these.
5070 As a voluntary consequence, using braces around guards is now
5071 mandatory.
5072
50732001-12-27 Akim Demaille <akim@epita.fr>
5074
5075 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
5076 * src/reader.c (symbol_list): `guard' and `guard_line' are new
5077 members.
5078 (symbol_list_new): Adjust.
5079 (copy_action): action_line is the first line, not the last.
5080 (copy_guard): Just as for actions, store the `action' only, not
5081 the switch/case/break flesh.
5082 Don't parse the user action that might follow the guard, let...
5083 (readgram): do it, i.e., now, there can be an action after a
5084 guard.
5085 In other words the guard is just explicitly optional.
5086 (packgram): Adjust.
5087 * src/output.c (guards_output): New.
5088 (output_parser): Call it when needed.
5089 (output): Also free the guard and attrs obstacks.
5090 * src/files.c, src/files.h (obstack_save): Remove.
5091 (output_files): Remove.
5092 As a result, if one needs the former `.act' file, using an
5093 appropriate skeleton which requires actions and guards is now
5094 required.
5095 * src/main.c (main): Adjust.
5096 * tests/semantic.at: New.
5097 * tests/regression.at: Use `input.y' as input file name.
5098 Avoid 8+3 problems by requiring input.c when the test needs the
5099 parser.
5100
51012001-12-27 Akim Demaille <akim@epita.fr>
5102
5103 * src/reader.c (symbol_list_new): Be sure to initialize all the
5104 fields.
5105
51062001-12-27 Akim Demaille <akim@epita.fr>
5107
5108 All the hacks using a final pseudo state are now useless.
5109
5110 * src/LR0.c (set_state_table): state_table holds exactly nstates.
5111 * src/lalr.c (nLA): New.
5112 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
5113 instead of lookaheadsp from the pseudo state (nstate + 1).
5114
51152001-12-27 Akim Demaille <akim@epita.fr>
5116
5117 * src/output.c (action_row, token_actions): Use a state_t instead
5118 of a integer, and nlookaheads instead of the following state's
5119 lookaheadsp.
5120
51212001-12-27 Akim Demaille <akim@epita.fr>
5122
5123 * src/conflicts.c (log_resolution, flush_shift)
5124 (resolve_sr_conflict, set_conflicts, solve_conflicts)
5125 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
5126 (conflicts_print, print_reductions): Use a state_t instead of an
5127 integer when referring to a state.
5128 As much as possible, depend upon nlookaheads, instead of the
5129 `lookaheadsp' member of the following state (since lookaheads of
5130 successive states are successive, the difference between state n + 1
5131 and n served as the number of lookaheads for state n).
5132 * src/lalr.c (add_lookback_edge): Likewise.
5133 * src/print.c (print_core, print_actions, print_state)
5134 (print_results): Likewise.
5135 * src/print_graph.c (print_core, print_actions, print_state)
5136 (print_graph): Likewise.
5137 * src/conflicts.h: Adjust.
5138
51392001-12-27 Akim Demaille <akim@epita.fr>
5140
5141 * src/bison.hairy: Formatting/comment changes.
5142 ANSIfy.
5143 Remove `register' indications.
5144 Add plenty of `static'.
5145
51462001-12-27 Akim Demaille <akim@epita.fr>
5147
5148 * src/output.c (prepare): Drop the muscle `ntbase' which
5149 duplicates ntokens.
5150 * src/bison.simple: Formatting/comment changes.
5151 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
5152 is an undocumented synonym.
5153
51542001-12-22 Akim Demaille <akim@epita.fr>
5155
5156 * src/output.c (output_table_data): Change the prototype to use
5157 `int' for array ranges: some invocations do pass an int, not a
5158 short.
5159 Reported by Wayne Green.
5160
51612001-12-22 Akim Demaille <akim@epita.fr>
5162
5163 Some actions of web2c.y are improperly triggered.
5164 Reported by Mike Castle.
5165
5166 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
5167 * tests/regression.at (Web2c): Rename as...
5168 (Web2c Report): this.
5169 (Web2c Actions): New.
5170
51712001-12-22 Akim Demaille <akim@epita.fr>
5172
5173 Reductions in web2c.y are improperly reported.
5174 Reported by Mike Castle.
5175
5176 * src/conflicts.c (print_reductions): Fix.
5177 * tests/regression.at (Web2c): New.
5178
51792001-12-18 Akim Demaille <akim@epita.fr>
5180
5181 Some host fail on `assert (!"foo")', which expands to
5182 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
5183 Reported by Nelson Beebee.
5184
5185 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
5186 `#define it_succeeded 0' and `assert (it_succeeded)'.
5187
51882001-12-17 Marc Autret <autret_m@epita.fr>
5189
5190 * src/bison.simple: Don't hard code the skeleton line and filename.
5191 * src/output.c (output_parser): Rename 'line' as 'output_line'.
5192 New line counter 'skeleton_line' (skeleton-line muscle).
5193
51942001-12-17 Paul Eggert <eggert@twinsun.com>
5195
5196 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
5197 YYDEBUG must be defined to a nonzero value.
5198
5199 * src/bison.simple (yytname): Do not assume that the user defines
5200 YYDEBUG to a properly parenthesized expression.
5201
52022001-12-17 Akim Demaille <akim@epita.fr>
5203
5204 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
5205 nlookaheads is a new member.
5206 Adjust all users.
5207 * src/lalr.h (nlookaheads): Remove this orphan declaration.
5208 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
5209 state.
5210
52112001-12-17 Akim Demaille <akim@epita.fr>
5212
5213 * src/files.h, src/files.c (open_files, close_files): Remove.
5214 * src/main.c (main): Don't open/close files, nor invoke lex_free,
5215 let...
5216 * src/reader.c (reader): Do it.
5217
52182001-12-17 Akim Demaille <akim@epita.fr>
5219
5220 * src/conflicts.c (print_reductions): Formatting changes.
5221
52222001-12-17 Akim Demaille <akim@epita.fr>
5223
5224 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
5225 (flush_reduce): New.
5226 (resolve_sr_conflict): Adjust.
5227
52282001-12-17 Akim Demaille <akim@epita.fr>
5229
5230 * src/output.c (output_obstack): Be static and rename as...
5231 (format_obstack): this, to avoid any confusion with files.c's
5232 output_obstack.
5233 * src/reader.h (muscle_obstack): Move to...
5234 * src/output.h: here, since it's defined in output.c.
5235
52362001-12-17 Akim Demaille <akim@epita.fr>
5237
5238 * src/output.c (action_row, save_column, default_goto)
5239 (sort_actions, matching_state, pack_vector): Better variable
5240 locality.
5241
52422001-12-17 Akim Demaille <akim@epita.fr>
5243
5244 * src/output.c: Various formatting changes.
5245
52462001-12-17 Akim Demaille <akim@epita.fr>
5247
5248 * src/files.c (output_files): Free the output_obstack.
5249 * src/main.c (main): Call print and print_graph conditionally.
5250 * src/print.c (print): Work unconditionally.
5251 * src/print_graph.c (print_graph): Work unconditionally.
5252 * src/conflicts.c (log_resolution): Output only if verbose_flag.
5253
52542001-12-16 Marc Autret <autret_m@epita.fr>
5255
5256 * src/output.c (actions_output): Fix. When we use %no-lines,
5257 there is one less line per action.
5258
52592001-12-16 Marc Autret <autret_m@epita.fr>
5260
5261 * src/bison.simple: Remove a useless #line directive.
5262 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
5263 * src/output.c (get_lines_number): New.
5264 (output_parser): Adjust, now takes care about the lines of a
5265 output muscles.
5266 Fix line numbering.
5267 (actions_output): Computes the number of lines taken by actions.
5268 (output_master_parser): Insert new skeleton which is the name of
5269 the output parser file name.
5270
52712001-12-15 Marc Autret <autret_m@epita.fr>
5272
5273 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
5274
52752001-12-15 Marc Autret <autret_m@epita.fr>
5276
5277 * src/output.c (output_gram): Keep track of the hairy one.
5278
52792001-12-15 Akim Demaille <akim@epita.fr>
5280
5281 Make `make distcheck' work.
5282
5283 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
5284 system.h which uses libgettext.h.
5285
52862001-12-15 Akim Demaille <akim@epita.fr>
5287
5288 * src/nullable.c (set_nullable): Useless rules must be skipped,
5289 otherwise, since we range over their symbols, we might look at a
5290 nonterminal which no longer ``exists'', i.e., it is not counted in
5291 `nvars', hence we overflow our arrays.
5292
52932001-12-15 Akim Demaille <akim@epita.fr>
5294
5295 The header can also be produced directly, without any obstack!
5296 Yahoo!
5297
5298 * src/files.c, src/files.h (defines_obstack): Remove.
5299 (compute_header_macro): Global.
5300 (defines_obstack_save): Remove.
5301 * src/reader.c (parse_union_decl): No longer output to
5302 defines_obstack: its content can be found in the `stype' muscle
5303 anyway.
5304 (output_token_translations): Merge into...
5305 (symbols_output): this.
5306 Rename as...
5307 (symbols_save): this.
5308 (reader): Adjust.
5309 * src/output.c (header_output): New.
5310 (output): Call it.
5311
53122001-12-15 Akim Demaille <akim@epita.fr>
5313
5314 * src/reader.c (parse_union_decl): Instead of handling two obstack
5315 simultaneously, use one to define the `stype' muscle, and use the
5316 value of the latter to fill defines_obstack.
5317 (copy_comment): Remove.
5318 (copy_comment2): Work for a single obstack.
5319 Rename as...
5320 (copy_comment): this.
5321
53222001-12-15 Akim Demaille <akim@epita.fr>
5323
5324 * src/lex.c, src/lex.h (xgetc): No longer static.
5325 * src/reader.c (parse_union_decl): Revamp.
5326
53272001-12-15 Akim Demaille <akim@epita.fr>
5328
5329 Still making progress in separating Bison into (i) input, (ii)
5330 process, (iii) output: now we can directly output the parser file
5331 without using table_obstack at all.
5332
5333 * src/files.c, src/files.h (table_obstack): Bye bye.
5334 (parser_file_name): New.
5335 * src/files.c (compute_output_file_names): Compute it.
5336 * src/output.c (actions_output, output_parser)
5337 (output_master_parser): To a file instead of an obstack.
5338
53392001-12-15 Akim Demaille <akim@epita.fr>
5340
5341 Attach actions to rules, instead of pre-outputting them to
5342 actions_obstack.
5343
5344 * src/gram.h (rule_t): action and action_line are new members.
5345 * src/reader.c (symbol_list): Likewise.
5346 (copy_action): Save the actions within the rule.
5347 (packgram): Save them in rule_table.
5348 * src/output.c (actions_output): New.
5349 (output_parser): Use it on `%%actions'.
5350 (output_rule_data): Don't free rule_table.
5351 (output): Do it.
5352 (prepare): Don't save the `action' muscle.
5353 * src/bison.simple: s/%%action/%%actions/.
5354
53552001-12-15 Akim Demaille <akim@epita.fr>
5356
5357 * src/reader.c (copy_action): When --yacc, don't append a `;'
5358 to the user action: let it fail if lacking.
5359 Suggested by Arnold Robbins and Tom Tromey.
5360
53612001-12-14 Akim Demaille <akim@epita.fr>
5362
5363 * src/lex.c (literalchar): Simply return the char you decoded, non
5364 longer mess around with obstacks and int pointers.
5365 Adjust all callers.
5366
53672001-12-14 Akim Demaille <akim@epita.fr>
5368
5369 * src/lex.c (literalchar): Don't escape the special characters,
5370 just decode them, and keep them as char (before, eol was output as
5371 the 2 char string `\n' etc.).
5372 * src/output.c (output_rule_data): Use quotearg to output the
5373 token strings.
5374
53752001-12-13 Paul Eggert <eggert@twinsun.com>
5376
5377 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
5378 Do not infringe on the global user namespace when using C++.
5379 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
5380 All uses of `fprintf' and `stderr' changed.
5381
5382 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
5383
53842001-12-13 Akim Demaille <akim@epita.fr>
5385
5386 The computation of nullable is broken: it doesn't handle empty
5387 RHS's properly.
5388
5389 * tests/torture.at (GNU AWK Grammar): New.
5390 * tests/sets.at (Nullable): New.
5391 * src/nullable.c (set_nullable): Instead of blindly looping over
5392 `ritems', loop over the rules, and then over their rhs's.
5393
5394 Work around Autotest bugs.
5395
5396 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
5397 frame, because Autotest understand lines starting with a `+' as
5398 traces from the shell. Then, they are not processed properly.
5399 Admittedly an Autotest bug, but we don't have time to wait for
5400 Autotest to catch up.
5401 * tests/regression.at (Broken Closure): Adjust to the new table
5402 frames.
5403 Move to...
5404 * tests/sets.at: here.
5405
54062001-12-13 Akim Demaille <akim@epita.fr>
5407
5408 * src/closure.c (closure): Use nrules instead of playing tricks
5409 with BITS_PER_WORD.
5410
54112001-12-13 Akim Demaille <akim@epita.fr>
5412
5413 * src/print.c (print_actions): Output the handling of `$' as the
5414 traces do: shifting the token EOF. Before EOF was treated as a
5415 nonterminal.
5416 * tests/regression.at: Adjust some tests.
5417 * src/print_graph.c (print_core): Complete the set of items via
5418 closure. The next-to-final and final states are still unsatisfying,
5419 but that's to be addressed elsewhere.
5420 No longer output the rule numbers, but do output the state number.
5421 A single loop for the shifts + gotos is enough, but picked a
5422 distinct color for each.
5423 (print_graph): Initialize and finalize closure.
5424
54252001-12-13 Akim Demaille <akim@epita.fr>
5426
5427 * src/reader.c (readgram): Remove dead code, an strip useless
5428 braces.
5429 (get_type): Remove, unused.
5430
54312001-12-12 Akim Demaille <akim@epita.fr>
5432
5433 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
5434 on that of lib/error.c.
5435
54362001-12-12 Akim Demaille <akim@epita.fr>
5437
5438 Some hosts don't like `/' in includes.
5439
5440 * src/system.h: Include libgettext.h without qualifying the path.
5441 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
5442 $(top_srcdir).
5443
54442001-12-11 Marc Autret <autret_m@epita.fr>
5445
5446 * src/output.c (output_parser): Remove useless muscle.
5447
54482001-12-11 Marc Autret <autret_m@epita.fr>
5449
5450 * src/bison.simple: Remove #line just before %%epilogue. It
5451 is now handled in ...
5452 * src/reader.c (read_additionnal_code): Add the output of a
5453 #line for the epilogue.
5454
54552001-12-10 Marc Autret <autret_m@epita.fr>
5456
5457 * src/reader.c (copy_definition): Re-use CPP-outed code which
5458 replace precedent remove.
5459 * src/bison.simple: Remove #line before %%prologue because
5460 %%input-line is wrong at this time.
5461
54622001-12-10 Marc Autret <autret_m@epita.fr>
5463
5464 * src/reader.c (symbols_output): Clean up.
5465 * src/output.c (output_gram, output): Clean up.
5466
54672001-12-10 Akim Demaille <akim@epita.fr>
5468
5469 * src/lalr.c (initialize_lookaheads): New. Extracted from...
5470 * src/LR0.c (set_state_table): here.
5471 * src/lalr.c (lalr): Call it.
5472
54732001-12-10 Akim Demaille <akim@epita.fr>
5474
5475 * src/state.h (shifts): Remove the `number' member: shifts are
5476 attached to state, hence no longer need to be labelled with a
5477 state number.
5478
54792001-12-10 Akim Demaille <akim@epita.fr>
5480
5481 Now that states have a complete set of members, the linked list of
5482 shifts is useless: just fill directly the state's shifts member.
5483
5484 * src/state.h (shifts): Remove the `next' member.
5485 * src/LR0.c (first_state, last_state): Remove.
5486 Adjust the callers.
5487 (augment_automaton): Don't look for the shifts that must be added
5488 a shift on EOF: it is those of the state we looked for! But now,
5489 since shifts are attached, it is no longer needed to looking
5490 merely by its id: its number.
5491
54922001-12-10 Akim Demaille <akim@epita.fr>
5493
5494 * src/LR0.c (augment_automaton): Better variable locality.
5495 Remove an impossible branch: if there is a state corresponding to
5496 the start symbol being shifted, then there is shift for the start
5497 symbol from the initial state.
5498
54992001-12-10 Akim Demaille <akim@epita.fr>
5500
5501 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
5502 only when appropriate: when insert_start_shifting_state' is not
5503 invoked.
5504 * tests/regression.at (Rule Line Numbers): Adjust.
5505
55062001-12-10 Akim Demaille <akim@epita.fr>
5507
5508 * src/LR0.c (augment_automaton): Now that all states have shifts,
5509 merge the two cases addition shifts to the initial state.
5510
55112001-12-10 Akim Demaille <akim@epita.fr>
5512
5513 * src/lalr.c (set_state_table): Move to...
5514 * src/LR0.c: here.
5515 * src/lalr.c (lalr): Don't call it...
5516 * src/LR0.c (generate_states): do it.
5517 * src/LR0.h (first_state): Remove, only the table is used.
5518
55192001-12-10 Akim Demaille <akim@epita.fr>
5520
5521 * src/LR0.h (first_shift, first_reduction): Remove.
5522 * src/lalr.c: Don't use first_shift: find shifts through the
5523 states.
5524
55252001-12-10 Akim Demaille <akim@epita.fr>
5526
5527 * src/LR0.c: Attach shifts to states as soon as they are
5528 computed.
5529 * src/lalr.c (set_state_table): Instead of assigning shifts to
5530 state, just assert that the mapping was properly done.
5531
55322001-12-10 Akim Demaille <akim@epita.fr>
5533
5534 * src/LR0.c (insert_start_shift): Rename as...
5535 (insert_start_shifting_state): this.
5536 (insert_eof_shifting_state, insert_accepting_state): New.
5537 (augment_automaton): Adjust.
5538 Better locality of the variables.
5539 When looking if the start_symbol is shifted from the initial
5540 state, using `while (... symbol != start_symbol ...)' sounds
5541 better than `while (... symbol < start_symbol ...)': If fail
5542 to see how the order between symbols could be relevant!
5543
55442001-12-10 Akim Demaille <akim@epita.fr>
5545
5546 * src/getargs.h: Don't declare `spec_name_prefix' and
5547 `spec_file_prefix', declared by src/files.h.
5548 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
5549 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
5550 * src/output.c (prepare): Adjust.
5551 * src/reader.c (symbols_output): Likewise.
5552 * src/vmsgetargs.c: Vaguely adjust, but who cares?
5553
55542001-12-10 Akim Demaille <akim@epita.fr>
5555
5556 * src/muscle_tab.c (muscle_init): NULL is a better default than
5557 `"0"'.
5558
55592001-12-10 Akim Demaille <akim@epita.fr>
5560
5561 * src/reader.c (reader): Calling symbols_output once is enough.
5562
55632001-12-10 Akim Demaille <akim@epita.fr>
5564
5565 Now that states have a complete set of members, the linked list of
5566 reductions is useless: just fill directly the state's reductions
5567 member.
5568
5569 * src/state.h (struct reductions): Remove member `number' and
5570 `next'.
5571 * src/LR0.c (first_reduction, last_reduction): Remove.
5572 (save_reductions): Don't link the new reductions, store them in
5573 this_state.
5574 * src/lalr.c (set_state_table): No need to attach reductions to
5575 states, it's already done.
5576 * src/output.c (output_actions): No longer free the shifts, then
5577 the reductions, then the states: free all the states and their
5578 members.
5579
55802001-12-10 Akim Demaille <akim@epita.fr>
5581
5582 * src/options.c (OPTN, DRTV, BOTH): New.
5583 (option_table): Use them.
5584
5585 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
5586 the job of system.h.
5587 * src/options.c: Don't include stdio.h and xalloc.h for the same
5588 reasons.
5589
55902001-12-10 Akim Demaille <akim@epita.fr>
5591
5592 * src/output.c (output, prepare): Make sure the values of the
5593 muscles `action' and `prologue' are 0-terminated.
5594
55952001-12-10 Akim Demaille <akim@epita.fr>
5596
5597 Clean up GCC warnings.
5598
5599 * src/reader.c (copy_action): `buf' is not used.
5600 (parse_skel_decl): Be static.
5601 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
5602 * src/options.h (create_long_option_table): Have a real prototype.
5603 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
5604 (hash_delete_at): Return const void *.
5605 Adjust casts to preserve the const.
5606
56072001-12-10 Akim Demaille <akim@epita.fr>
5608
5609 * configure.in: Require 2.52g.
5610 M4 is not needed, but AUTOM4TE is.
5611 * m4/m4.m4: Remove.
5612 * tests/Makefile.am: Adjust.
5613
56142001-12-10 Akim Demaille <akim@epita.fr>
5615
5616 One structure for states is enough, even though theoretically
5617 there are LR(0) states and LALR(1) states.
5618
5619 * src/lalr.h (state_t): Remove.
5620 (state_table): Be state_t **, not state_t *.
5621 * src/state.h (core, CORE_ALLOC): Rename as...
5622 (state_t, STATE_ALLOC): this.
5623 Add the LALR(1) members: shifts, reductions, errs.
5624 * src/LR0.c (state_table): Rename as...
5625 (state_hash): this, to avoid name clashes with the global
5626 `state_table'.
5627 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
5628 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
5629
56302001-12-10 Akim Demaille <akim@epita.fr>
5631
5632 Bison dumps core on bash.y.
5633 Reported by Pascal Bart.
5634
5635 * src/warshall.c (bitmatrix_print): New.
5636 (TC): Use it.
5637 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
5638 j must be the outer loop.
5639 * tests/regression.at (Broken Closure): New.
5640
56412001-12-05 Akim Demaille <akim@epita.fr>
5642
5643 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
5644 its argument.
5645