]> git.saurik.com Git - bison.git/blame - ChangeLog
Version 1.75b.
[bison.git] / ChangeLog
CommitLineData
87f721cc
PE
12002-11-12 Paul Eggert <eggert@twinsun.com>
2
3 Version 1.75b.
4
5 * data/glr.c (yydoAction): Return YYRESULTTAG, not int.
6 (yyglrReduce): Return yyok, not 0.
7 This should avoid the enumerated-type warnings reported
8 by Nelson H.F. Beebe in
9 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001872.html>.
10
11 * lib/bbitset.h (BITSET_INLINE): Remove.
12 * lib/bitset.h [! BITSET_INLINE]: Remove.
13 (bitset_set, bitset_reset, bitset_test): Rename local vars
14 to avoid shadowing warnings by GCC.
15
16 * data/glr.c (inline): Remove #define. It's the user's
17 responsibility to #define it away, just like 'const'.
18 This fixes one of the bugs reported by Nelson H.F. Beebe in
19 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001873.html>.
20
21 * Makefile.maint (po-check): Scan .l and .y files instead of the
22 .c and the .h files that they generate. This fixes the bug
23 reported by Tim Van Holder in:
24 <http://mail.gnu.org/pipermail/bison-patches/2002-November/001352.html>
25 Look for N_ as well as for _. Try to avoid matching #define for
26 N_ and _.
27 * po/POTFILES.in: Remove src/parse-gram.c, src/scan-gram.c,
28 src/system.h. Add src/parse-gram.y, src/scan-gram.l.
29 * src/scan-gram.l: Revamp regular expressions so that " and '
30 do not confuse xgettext.
31
32 * src/struniq.h (struniq_new): Do not declare the return type
33 to be 'const'; this violates the C standard.
34 * src/struniq.c (struniq_new): Likewise.
35
be14ade5
AD
362002-11-12 Albert Chin-A-Young <china@thewrittenword.com>
37
38 * src/Makefile.am (LDADD): Link $(LIBINTL) last to avoid the
39 duplicate definition of optind on Tru64 UNIX 4.0D with the Compaq
40 linker.
41
05291fbc
AD
422002-11-12 Akim Demaille <akim@epita.fr>
43
44 * Makefile.maint: Sync with Autoconf:
45 (local_updates): New.
46
1f5fd52e
AD
472002-11-12 Akim Demaille <akim@epita.fr>
48
49 * po/POTFILES.in (src/lalr.c, src/state.c): Remove
50
283f1e64
AD
512002-11-12 Akim Demaille <akim@epita.fr>
52
53 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Display the
54 locations.
55
886b69d1
AD
562002-11-12 Akim Demaille <akim@epita.fr>
57
58 * data/c.m4 (b4_yysymprint_generate): Pass *yyvaluep to YYPRINT,
59 not yyvalue.
60
3df37415
AD
612002-11-12 Akim Demaille <akim@epita.fr>
62
63 * tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): New.
64 Use it to test the GLR parser.
65
7bd6c77e
AD
662002-11-12 Akim Demaille <akim@epita.fr>
67
68 * tests/regression.at (input.y): s/YYEOF/MYEOF/, as the skeleton
69 defines it.
70 * data/glr.c (yystos): New.
71 (b4_yysymprint_generate, b4_yydestruct_generate): Invoke.
72 (YYDSYMPRINT): New.
73 (yyval): Don't define it, it is handled via M4.
74 (yyrecoverParseError): Free verbosely the discarded symbols.
75 * data/yacc.c (yysymprint): Remove, rather...
76 (b4_yysymprint_generate): invoke.
77 * data/c.m4 (b4_yysymprint_generate): New.
78 Accept pointers as arguments, as opposed to the version from
79 yacc.c.
80 (b4_yydestruct_generate): Likewise.
81 * tests/cations.at (Printers and Destructors): Use Bison directives
82 instead of CPP macros.
83 Don't rely on internal details.
84
b0400cc6
AD
852002-11-12 Akim Demaille <akim@epita.fr>
86
87 * data/c.m4 (b4_yydestruct_generate, b4_symbol_actions): New.
88 * data/yacc.c: Rename yychar1 as yytoken, as in glr.c.
89 Don't work on yychar (i.e., do set it to YYEMPTY, don't match
90 it against YYEMPTY and so forth), work on yytoken (i.e., set
91 it to YYEMPTY etc.).
92 (yydestruct): Replace with a b4_yydestruct_generate invocation.
93 (b4_symbol_actions): Remove.
94 * data/glr.c (YYTRANSLATE): As for yacc.c, if negative, it stands
95 for 0, end-of-input.
96
72f889cc
AD
972002-11-12 Akim Demaille <akim@epita.fr>
98
99 * doc/bison.texinfo (Destructor Decl): New.
100
b1ae9233
AD
1012002-11-12 Akim Demaille <akim@epita.fr>
102
103 * src/tables.c (tables_generate): Use free for pointers that
104 cannot be NULL, not XFREE.
105 (pack_vector): Use assert, not fatal, for bound violations.
106 * src/state.c (state_new): Likewise.
107 * src/reader.c (reader): Likewise.
108 * src/lalr.c (set_goto_map): Likewise.
72f889cc 109 * src/location.h (LOCATION_PRINT): If first_line is 0, just issue
b1ae9233
AD
110 the file name.
111
7ec2d4cd
AD
1122002-11-12 Akim Demaille <akim@epita.fr>
113
114 * src/scan-gram.l, src/reader.h (scanner_last_string_free):
115 Restore.
116 * src/scan-gram.l (last_string): Is global to the file, not to
117 yylex.
118 * src/parse-gram.y (input): Don't append the epilogue here,
119 (epilogue.opt): do it here, and free the scanner's obstack.
120 * src/reader.c (epilogue_set): Rename as...
121 (epilogue_augment): this.
122 * data/c.m4 (b4_epilogue): Defaults to empty.
123
573a6cd3
AD
1242002-11-12 Akim Demaille <akim@epita.fr>
125
126 * src/getargs.c (long_options): Remove duplicates.
127 * src/vmsgetargs.c, src/build.com, src/bison.cld, src/vmshlp.mar:
128 Remove.
129 * doc/bison.rnh: Remove.
130 * doc/bison.texinfo (VMS Invocation): Remove.
131
95612cfa
AD
1322002-11-12 Akim Demaille <akim@epita.fr>
133
134 * src/struniq.h, src/struniq.c (struniq_t): Is const.
135 (STRUNIQ_EQ, struniq_assert, struniq_assert_p): New.
136
137 Use struniq for symbols.
138
139 * src/symtab.h (symbol_t): The tag member is a struniq.
140 (symbol_type_set): Adjust.
141 * src/symtab.c (symbol_new): Takes a struniq.
142 (symbol_free): Don't free the tag member.
143 (hash_compare_symbol_t, hash_symbol_t): Rename as...
144 (hash_compare_symbol, hash_symbol): these.
145 Use the fact that tags as struniqs.
146 (symbol_get): Use struniq_new.
147 * src/symlist.h, src/symlist.c (symbol_list_n_type_name_get):
148 Returns a strniq.
149 * src/reader.h (merger_list, grammar_currentmerge_set): The name
150 and type members are struniqs.
151 * src/reader.c (get_merge_function)
152 (grammar_current_rule_merge_set): Adjust.
153 (TYPE, current_type): Are struniq.
154
155 Use struniq for file names.
156
157 * src/files.h, src/files.c (infile): Split into...
158 (grammar_file, current_file): these.
159 * src/scan-gram.c (YY_USER_INIT, handle_syncline): Adjust.
160 * src/reduce.c (reduce_print): Likewise.
161 * src/getargs.c (getargs): Likewise.
162 * src/complain.h, src/complain.c: Likewise.
163 * src/main.c (main): Call struniqs_new early enough to use it for
164 file names.
165 Don't free the input file name.
166
3e6656f9
AD
1672002-11-12 Akim Demaille <akim@epita.fr>
168
169 * src/symtab.c (symbol_free): Remove dead deactivated code:
170 type_name are properly removed.
171 Don't use XFREE to free items that cannot be NULL.
172 * src/struniq.h, src/struniq.c: New.
173 * src/main.c (main): Initialize/free struniqs.
174 * src/parse-gram.y (%union): Add astruniq member.
175 (yyprint): Adjust.
176 * src/scan-gram.l (<{tag}>): Return a struniq.
177 Free the obstack bit that used to store it.
178 * src/symtab.h (symbol_t): The 'type_name' member is a struniq.
179
7672019c
PE
1802002-11-11 Paul Eggert <eggert@twinsun.com>
181
182 Revamp to fix many (but not all) of the C- and M4-related quoting
183 problems. Among other things, this fixes the Bison bug reported
184 by Jan Hubicka when processing the Bash grammar; see:
185 <http://mail.gnu.org/pipermail/bison-patches/2002-November/001329.html>
186
187 Use new @ escapes consistently. Represent brackets with @{ and @}
188 rather than @<:@ and @:>@, since this works a bit better with dumb
189 editors like vi. Represent @ with @@, since @ is now consistently
190 an escape. Use @oline@ and @ofile@ rather than __oline__ and
191 __ofile__, to avoid unexpected expansions. Similarly, use @output
192 rather than #output.
193
194 * data/c.m4 (b4_copyright): Omit file name from comment, since
195 the file name could contain "*/".
196 (b4_synclines_flag): Don't quote the 2nd argument; it should already
197 be quoted. All uses changed.
198
199 * data/glr.c: Use new @ escapes consistently.
200 (b4_input_suffix, b4_output_parser_suffix, b4_output_parser_name,
201 b4_output_header_suffix, b4_output_header_name, b4_header_guard):
202 Remove, since they couldn't handle arbitrary characters in file
203 names.
204 * data/lalr1.cc: Likewise.
205 * data/yacc.c: Likewise.
206
207 * src/files.c (output_infix): Remove; all uses removed.
208 * src/files.h: Likewise.
209
210 * data/glr.c: Remove use of "#ifdef b4_header_guard", since it
211 mishandled funny characters in file names, and anyway it isn't
212 needed any more.
213 * data/yacc.c: Likewise.
214 * data/lalr1.cc: Use YYSLP_NEEDED instead of b4_header_guard.
215
216 * data/glr.c (YYSTYPE_IS_TRIVIAL): Define when the .h file would.
217 * data/yacc.c: Likewise.
218
219 * src/muscle_tab.c: Include quotearg.h, since we need to quote C
220 strings now.
221 (muscle_init): Quote filename as a C string.
222 * src/muscle_tab.h (MUSCLE_GROW_STRING_PAIR): Remove; unused.
223 (MUSCLE_OBSTACK_SGROW, MUSCLE_INSERT_C_STRING): New macros.
224 * src/output.c (escaped_file_name_output): New function.
225 (prepare_symbols): Quote tokens for M4.
226 (prepare): Don't insert output_infix, output_prefix,
227 output_parser_name, output_header_name; this is now down by scan-skel.
228 Insert skeleton as a C string.
229
230 * src/output.c (user_actions_output, symbol_destructors_output,
231 symbol_printers_output): Quote filenames for C and M4.
232 * src/reader.c (prologue_augment, epilogue_set): Likewise.
233
234 * src/scan-gram.l (<SC_CHARACTER>): Don't worry about any backslash
235 escapes other than \\ and \'; this simplifies the code.
236 (<SC_STRING>): Likewise, for \\ and \".
237 (<SC_COMMENT,SC_LINE_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,
238 SC_PROLOGUE,SC_EPILOGUE>): Escape $ and @, too.
239 Use new escapes @{ and @} for [ and ].
240
241 * src/scan-skel.l (yylineno, yyoutname): Remove static vars, replacing
242 them with auto vars.
243 Switch to new escape scheme, where @ is the escape character uniformly.
244 Abort if a stray escape character is found. Avoid unbounded input
245 buffer when parsing non-escaped text.
246
247 * tests/input.at (Torturing the Scanner): Add tests that @oline@,
248 __oline__, #output, $@, and @{ do not have unintended meanings.
249
acea4f3b
PE
2502002-11-09 Paul Eggert <eggert@twinsun.com>
251
252 Fix the test failure due to GCC warnings described in
253 <http://mail.gnu.org/pipermail/bug-bison/2002-November/001815.html>.
254 * data/glr.c (yyis_pact_ninf, yyis_table_ninf): New macros, which
255 evaluate to 0 if it's impossible for NINF to be in the respective
256 table.
257 (yygetLRActions, yyrecoverParseError): Use them.
258
259 * src/scan-gram.l (unexpected_end_of_file): Fix bug: columns were
260 counted in the token inserted at end of file. Now takes
261 location_t *, not location_t, so that the location can be
262 adjusted. All uses changed.
263
264 * tests/regression.at (Invalid inputs): Adjust wording in
265 diagnostic to match the new behavior.
266
267 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR,
268 AT_DATA_HORIZONTAL_GRAMMAR, AT_DATA_LOOKAHEADS_GRAMMAR,
269 AT_DATA_STACK_TORTURE): Replace `assert (x);' with `if (! (x))
270 abort ();'. This reduces the runtime of the "Many lookaheads"
271 test from 27.6 to 2.7 minutes on a 440 MHz Ultrasparc III running
272 GCC 3.2.
273
20ef1ad5
PE
2742002-11-07 Paul Eggert <eggert@twinsun.com>
275
276 * src/parse-gram.y (CHARACTER): Remove unused token.
277 All uses removed.
278
279 * src/scan-gram.l: Remove stack option. We no longer use the
280 stack, since the stack was never deeper than 1; instead, use the
281 new auto var c_context to record the stacked value.
282
283 Remove nounput option. At an unexpected end of file, we now unput
284 the minimal input necessary to end cleanly; this simplifies the
285 code.
286
287 Avoid unbounded token sizes where this is easy.
288
289 (unexpected_end_of_file): New function.
290 Use it to systematize the error message on unexpected EOF.
291 (last-string): Now auto, not static.
292 (YY_OBS_FREE): Remove unnecessary do while (0) wrapper.
293 (scanner_last_string_free): Remove; not used.
294 (percent_percent_count): Move decl to just before use.
295 (SC_ESCAPED_CHARACTER): Return ID at unexpected end of file,
296 not the (never otherwised-used) CHARACTER.
297
93724f13
AD
2982002-11-07 Akim Demaille <akim@epita.fr>
299
300 Let yyerror always receive the msg as last argument, so that
301 yyerror can be variadic.
302
303 * data/yacc.c (b4_yyerror_args): New.
304 Use it when calling yyerror.
305 * data/glr.c (b4_yyerror_args, b4_lyyerror_args): New.
306 Use it when calling yyerror.
307 * doc/bison.texinfo (Error Reporting): Adjust.
308 * tests/calc.at (_AT_DATA_CALC_Y): Adjust.
309 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Adjust.
310
6e40b4eb
AD
3112002-11-06 Akim Demaille <akim@epita.fr>
312
313 #line should have quoted strings.
314 Ideally, this should be done by m4_quotearg.
315
316 * src/scan-skel.l: Include quotearg.h.
317 Quote __ofile__.
318 * src/output.c (symbol_printers_output)
319 (symbol_destructors_output): Quote the file name.
320
2dfbfc12
AD
3212002-11-06 Akim Demaille <akim@epita.fr>
322
323 * tests/regression.at (Invalid inputs): Adjust to the recent
324 messages.
325
437c2d80
AD
3262002-11-06 Akim Demaille <akim@epita.fr>
327
328 Restore --no-lines.
329 Reported by Jim Kent.
330
331 * data/c.m4 (b4_syncline): New.
332 * data/glr.c, data/yacc.c, data/lalr1.cc: Use it.
333 * src/reader.c (prologue_augment, epilogue_set): Use b4_syncline.
334 * src/output.c (user_actions_output): Likewise.
335 (prepare): Define 'b4_synclines_flag'.
2dfbfc12 336 * src/muscle_tab.c (muscle_init): Don't define b4_linef.
437c2d80 337
900c5db5
AD
3382002-11-06 Akim Demaille <akim@epita.fr>
339
340 * src/main.c (main): Free `infile'.
341 * src/scan-gram.l (handle_syncline): New.
342 Recognize `#line'.
343 * src/output.c (user_actions_output, symbol_destructors_output)
344 (symbol_printers_output): Use the location's file name, not
345 infile.
346 * src/reader.c (prologue_augment, epilogue_set): Likewise.
347
e183b123 3482002-11-05 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
51b4a04c 349
e183b123 350 * src/tables.c (matching_state): Don't allow states to match if
51b4a04c 351 either has GLR conflict entries.
e183b123 352
193eb6b7
PE
3532002-11-05 Paul Eggert <eggert@twinsun.com>
354
e183b123
PE
355 * src/scan-gram.l: Use more accurate diagnostics, e.g.
356 "integer out of range" rather than "invalid value".
357 * tests/input.at (Invalid $n, Invalid @n): Change expected wording
358 accordingly.
359
193eb6b7
PE
360 Scan <% and %> digraphs in C code as POSIX 1003.1-2001 requires.
361 Also, remove one static variable in the scanner.
362
363 * src/scan-gram.l (braces_level): Now auto, not static.
364 Initialize to zero if the compiler is being picky.
365 (INITIAL): Clear braces_level instead of incrementing it.
366 (SC_BRACED_CODE): Treat <% and %> as { and } when inside C code,
367 as POSIX 1003.1-2001 requires.
368 * src/system.h (IF_LINT): New macro, taken from coreutils.
369 * configure.ac: Define "lint" if --enable-gcc-warnings.
370
29c01725
AD
3712002-11-05 Akim Demaille <akim@epita.fr>
372
373 * src/scan-gram.l: When it starts with `%', complain about the
374 whole directive, not just that `invalid character: %'.
375
8aeac3ca
AD
3762002-11-04 Akim Demaille <akim@epita.fr>
377
378 * Makefile.maint: Update from Autoconf.
379 (update, cvs-update, po-update, do-po-update): New.
380
793a58bb
AD
3812002-11-04 Akim Demaille <akim@epita.fr>
382
383 * tests/glr-regr1.at (Badly Collapsed GLR States): Prototype yylex
384 and yyerror.
385 Have yyerror `use' its arguments.
386 * tests/calc.at (AT_CHECK_PUSHDEFS): AT_YYERROR_SEES_LOC_IF
387 returns true when location & yacc & pure & parse-param.
388 (_AT_DATA_CALC_Y): Let yyerror ``use'' its arguments.
389
c4d720cd
AD
3902002-11-04 Akim Demaille <akim@epita.fr>
391
392 * src/location.h (LOCATION_PRINT): Use quotearg slot 3 to avoid
393 clashes.
394 * src/scan-gram.l: Use [\'] instead of ['] to pacify
395 font-lock-mode.
396 Use complain_at.
397 Use quote, not quote_n since LOCATION_PRINT no longer uses the
398 slot 0.
399
613a0dc5
PE
4002002-11-03 Paul Eggert <eggert@twinsun.com>
401
402 * src/reader.c (get_merge_function, grammar_current_rule_check):
403 Use consistent diagnostics for reporting type name clashes.
404 Quote the types with <>, for consistency with Yacc.
405 * tests/input.at (Type Clashes): Adjust to diagnostic changes.
406
2a8d363a
AD
4072002-11-03 Akim Demaille <akim@epita.fr>
408
409 * data/c.m4 (b4_identification, b4_user_args, b4_parse_param):
410 New.
411 * data/yacc.m4 (b4_pure_args, b4_Pure_args): New.
412 (b4_parse_param): Remove.
413 Use b4_identification.
414 Propagate b4_pure_args where needed to pass them to yyerror.
415 * data/glr.m4 (b4_parse_param): Remove.
416 (b4_user_formals, b4_pure_args, b4_pure_formals, b4_lpure_args)
417 (b4_lpure_formals): New.
418 Use b4_identification.
419 (YY_USER_FORMALS, YY_USER_ARGS): Remove, replaced by
420 b4_user_formals and b4_user_args.
421 (yyexpandGLRStack, yyFail, yyaddDeferredAction, yyglrShiftDefer)
422 (yyreportAmbiguity): When using a pure parser, also need
423 the location, and the parse-params.
424 Adjust callers.
425 (yyuserAction, yyglrShift, yyreportParseError, yyrecoverParseError):
426 When using a pure parser, also need the parse-params.
427 Adjust callers.
428 * tests/calc.at: Test pure (%pure-parser) and absolutely pure
429 (%pure-parser + %parse-param) LALR and GLR parsers.
430 (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): New, define AT_PARAM_IF,
431 AT_LOCATION_IF, AT_PURE_IF, AT_GLR_IF, AAT_PURE_AND_LOC_IF,
432 AT_GLR_OR_PARAM_IF, AT_YYERROR_ARG_LOC_IF, AT_YYERROR_SEES_LOC_IF.
433 (_AT_DATA_CALC_Y): Equip for purity of yyerror.
434 (_AT_CHECK_CALC_ERROR): Use AT_YYERROR_SEES_LOC_IF.
435 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Equip for yyerror purity.
436 * doc/bison.texinfo: Untabify the whole file.
437 (Parser Function): Document %parse-param, deprecate YYPARSE_PARAM.
438 (Pure Calling): Document %lex-param, deprecate YYLEX_PARAM.
439 (Error Reporting): Adjust to these new directives.
440 Document %error-verbose, deprecate YYERROR_VERBOSE.
441
9e32add8
AD
4422002-11-03 Akim Demaille <akim@epita.fr>
443
444 * tests/calc.at: Change all the AT_CHECK_CALC_LALR and
445 AT_CHECK_CALC_GLR invocations to use % directives, instead of
446 command line options.
447 * tests/cxx-type.at: Formatting changes.
448
b02d90a5
PE
4492002-11-03 Paul Eggert <eggert@twinsun.com>
450
451 * src/scan-gram.l: Revamp to fix POSIX incompatibilities,
452 to count columns correctly, and to check for invalid inputs.
9e32add8 453
b02d90a5
PE
454 Use mbsnwidth to count columns correctly. Account for tabs, too.
455 Include mbswidth.h.
456 (YY_USER_ACTION): Invoke extend_location rather than LOCATION_COLUMNS.
457 (extend_location): New function.
458 (YY_LINES): Remove.
459
460 Handle CRLF in C code rather than in Lex code.
461 (YY_INPUT): New macro.
462 (no_cr_read): New function.
463
464 Scan UCNs, even though we don't fully handle them yet.
465 (convert_ucn_to_byte): New function.
466
467 Handle backslash-newline correctly in C code.
468 (SC_LINE_COMMENT, SC_YACC_COMMENT): New states.
469 (eols, blanks): Remove. YY_USER_ACTION now counts newlines etc.;
470 all uses changed.
471 (tag, splice): New EREs. Do not allow NUL or newline in tags.
472 Use {splice} wherever C allows backslash-newline.
473 YY_STEP after space, newline, vertical-tab.
474 ("/*"): BEGIN SC_YACC_COMMENT, not yy_push_state (SC_COMMENT).
9e32add8 475
b02d90a5
PE
476 (letter, id): Don't assume ASCII; e.g., spell out a-z.
477
478 ({int}, handle_action_dollar, handle_action_at): Check for integer
479 overflow.
9e32add8 480
b02d90a5
PE
481 (YY_STEP): Omit trailing semicolon, so that it's more like C.
482
483 (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>): Allow \0 and \00
484 as well as \000. Check for UCHAR_MAX, not 255.
485 Allow \x with an arbitrary positive number of digits, as in C.
486 Check for overflow here.
487 Allow \? and UCNs, for compatibility with C.
488
489 (handle_symbol_code_dollar): Use quote_n slot 1 to avoid collision
490 with quote slot used by complain_at.
491
492 * tests/input.at: Add tests for backslash-newline, m4 quotes
493 in symbols, long literals, and funny escapes in strings.
494
495 * configure.ac (jm_PREREQ_MBSWIDTH): Add.
496 * lib/Makefile.am (libbison_a_SOURCES): Add mbswidth.h, mbswidth.c.
497 * lib/mbswidth.h, lib/mbswidth.c: New files, from GNU gettext.
498 * m4/Makefile.am (EXTRA_DIST): Add mbswidth.m4.
499 * m4/mbswidth.m4: New file, from GNU coreutils.
500
501 * doc/bison.texinfo (Grammar Outline): Document // comments.
502 (Symbols): Document that trigraphs have no special meaning in Bison,
503 nor is backslash-newline allowed.
504 (Actions): Document that trigraphs have no special meaning.
505
506 * src/location.h (LOCATION_COLUMNS, LOCATION_LINES): Remove;
507 no longer used.
508
5092002-11-02 Paul Eggert <eggert@twinsun.com>
510
511 * src/reader.c: Don't include quote.h; not needed.
512 (get_merge_function): Reword warning to be consistent with
513 type clash diagnostic in grammar_current_rule_check.
514
515 * lib/quotearg.c (quotearg_buffer_restyled): Fix off-by-two
516 bug in trigraph handling.
517
518 * src/output.c (prepare_symbols): When printing token names,
519 escape "[" as "@<:@" and likewise for "]".
520
521 * src/system.h (errno): Remove declaration, as we are now
522 assuming C89 or better, and C89 guarantees errno.
523
762b212b
PE
5242002-10-30 Paul Eggert <eggert@twinsun.com>
525
526 * lib/bitset_stats.c (bitset_stats_read, bitset_stats_write):
527 Check for close failures.
528 * src/files.h (xfclose): Return void, not int, since it always
529 returned zero.
530 * src/files.c (xfclose): Likewise. Report I/O error if ferror
531 indicates one.
532 * src/output.c (output_skeleton): Use xfclose rather than fclose
533 and ferror. xfclose now checks ferror.
534
535 * data/glr.c (YYLEFTMOST_STATE): Remove.
536 (yyreportTree): Use a stack-based leftmost state. This avoids
537 our continuing battles with bogus warnings about initializers.
538
56100c60
AD
5392002-10-30 Akim Demaille <akim@epita.fr>
540
541 * src/system.h: Don't use #ifdef/#ifndef on HAVE_ values, only
542 #if.
543
51b4a04c
PH
5442002-10-29 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
545
546 * tests/glr-regr1.at: New test for reported regressions.
547 * tests/testsuite.at: Add glr-regr1.at test.
548 * tests/Makefile.am: Add glr-regr1.at test.
e183b123 549
bf1ebda2
PE
5502002-10-24 Paul Eggert <eggert@twinsun.com>
551
5c16c6b1
PE
552 Version 1.75a.
553
bf1ebda2
PE
554 * tests/calc.at (_AT_DATA_CALC_Y): Remove unused strcat declaration.
555 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Include stdlib.h, since
556 we use malloc. Don't assume 'A' through 'Z' are contiguous.
557 Don't assume strdup exists; POSIX says its an XSI extension.
558 Check for buffer overflow on input.
559
b526ee61
AD
5602002-10-24 Akim Demaille <akim@epita.fr>
561
562 * src/output.c (output_skeleton): Don't disable M4sugar comments
563 too soon: it results in comments being expanded.
564 * data/yacc.c, data/glr.c, data/lalr1.cc: Do it right before the
565 first output.
566
f1886bb2
AD
5672002-10-24 Akim Demaille <akim@epita.fr>
568
569 * data/yacc.c (m4_int_type): New.
570 * data/c.m4 (m4_int_type): Don't use yysigned_char, but `signed
571 char' as only yacc.c wants K&R portability.
572 * data/glr.c (yysigned_char): Remove.
573 * data/lalr1.cc: Rename the trailing b4_name as b4_parser_class_name.
574 Reported by Quoc Peyrot.
575
c5576256
PE
5762002-10-23 Paul Eggert <eggert@twinsun.com>
577
578 * src/main.c (main): With --trace=time, report times even if a
579 non-fatal error occurs. Formerly, the times were reported in some
580 such cases but not in others.
581 * src/reader.c (reader): Just return if a complaint has been issued,
582 instead of exiting, so that 'main' can report times.
583
27b0ffea
AD
5842002-10-22 Akim Demaille <akim@epita.fr>
585
586 * src/system.h: Include sys/types.
587 Reported by Bert Deknuydt.
588
223a7883
PE
5892002-10-23 Paul Eggert <eggert@twinsun.com>
590
591 * configure.ac (AC_PROG_LEX): Use instead of AM_PROG_LEX.
592 Suggested by Art Haas.
593
5942002-10-22 Paul Eggert <eggert@twinsun.com>
595
596 * src/complain.c (exit) [! (STDC_HEADERS || _LIBC)]: Remove exit
597 decl; not needed any more.
598 * src/main.c (main): Use return to exit, undoing yesterday's change.
599 The last OS that we could find where this wouldn't work is
600 SunOS 3.5, and that's too old to worry about now.
601
602 * data/glr.c (struct yyltype): Define members even when not
603 doing locations. This is more consistent with yacc.c, and it
604 works around the following bug reports:
605 http://mail.gnu.org/pipermail/bug-bison/2002-October/001764.html
606 http://mail.gnu.org/pipermail/bug-bison/2002-October/001769.html
607 and I hope it also fixes this bug report:
608 http://mail.gnu.org/pipermail/bug-bison/2002-October/001748.html
27b0ffea 609
223a7883
PE
610 * doc/bison.texinfo: Minor spelling and typographical fixes. Use
611 @acronym consistently. Standardize on "Yacc" instead of "YACC",
612 "Algol" instead of "ALGOL". Give a bit more history about BNF.
613
8b76775a
AD
6142002-10-22 Akim Demaille <akim@epita.fr>
615
616 * data/README: New.
617
6db10d14
PE
6182002-10-21 Paul Eggert <eggert@twinsun.com>
619
620 Be consistent about 'bool'; the old code used an enum in one
621 module and an int in another, and this violates the C standard.
622 * m4/stdbool.m4: New file, from coreutils 4.5.3.
623 * configure.ac (AC_HEADER_STDBOOL): Add.
624 * m4/Makefile.am (EXTRA_DIST): Add stdbool.m4.
625 * src/muscle_tab.c (hash_compare_muscles): (a ? FALSE : TRUE) -> (! a)
626 * src/symtab.c (hash_compare_symbol_t): Likewise.
627 * src/system.h (bool, false, true): Use a definition consistent
628 with ../lib/hash.c. All uses changed.
629
630 * src/complain.c (warning_issued): Renamed from warn_message_count,
631 so that we needn't worry about integer overflow (!).
632 Now of type bool. All uses changed.
633 (complaint_issued): Renamed from complain_message_count; likewise.
634
635 * src/main.c (main): Use exit to exit with failure.
27b0ffea 636
6db10d14
PE
637 * src/complain.c (fatal_at, fatal): Use EXIT_FAILURE and EXIT_SUCCESS
638 rather than 1 and 0.
639 * src/main.c (main): Likewise.
640 * src/getargs.c (getargs): Likewise.
641 * src/reader.c (reader): Likewise.
642
643 * src/getarg.c (getargs): Remove duplicate code for
644 "Try `bison --help'".
645
646 * src/files.c (xfopen, xfclose): Use EXIT_FAILURE rather than 2.
647 What was that "2" for?
648
649 * src/complain.h (fatal, fatal_at): Add __attribute__((__noreturn__)).
650 * src/getargs.c (usage): Likewise.
651
652 * src/getargs.c (getargs): When there are too few operands, report
653 the last one. When there are too many, report the first extra
654 one. This is how diffutils does it.
655
92a060fd
PE
6562002-10-20 Paul Eggert <eggert@twinsun.com>
657
658 Remove K&R vestiges.
659 * configure.ac (AC_C_CONST, AM_C_PROTOTYPES): Remove.
660 * src/complain.c (VA_START): Remove. Assume prototypes.
661 (vfprintf) [! (HAVE_VPRINTF || defined vfprintf)]: New macro.
662 (private_strerror, warn_at, warn, complain_at, complain, fatal_at,
663 fatal): Assume prototypes.
664 * src/complain.h: Assume prototypes.
665 * src/system.h (PARAMS): Remove.
666 Include <limits.h> unconditionally, since it's guaranteeed even
667 for a freestanding C89 compiler.
668 (SHRT_MIN, SHRT_MAX): Remove, since C89 guarantees them.
669 * src/vmsgetargs.c (getargs, cli_present, cli_get_value): Prototype.
8b76775a 670
e7cb57c0
AD
6712002-10-20 Akim Demaille <akim@epita.fr>
672
673 * src/muscle_tab.c (muscle_grow): Remove trailing debugging code.
674 * data/glr.c (YY_USER_FORMALS, YY_USER_ARGS): New.
675 (yyuserAction, yydoAction, yyglrReduce, yyresolveValue)
676 (yyresolveStates, yyresolveAction, yyresolveStack)
677 (yyprocessOneStack): Use them.
678 (yy_reduce_print): New.
679 * tests/calc.at (_AT_DATA_CALC_Y): Exercise %parse-param.
680
0245f82d
AD
6812002-10-20 Akim Demaille <akim@epita.fr>
682
683 * data/c.m4 (b4_c_ansi_args): Recognize functions with no
684 arguments and output `void'.
685 (b4_c_function): Rename as...
686 (b4_c_function_def): this.
687 (b4_c_function_decl, b4_c_ansi_function_def)
688 (b4_c_ansi_function_decl): New.
689 Change the interpretation of the arguments: before `int, foo', now
690 `int foo, foo'.
691 * data/yacc.c (yyparse): Prototype and define thanks to these.
692 Adjust b4_c_function_def uses.
693 * data/glr.c (yyparse): Likewise, but ANSI only.
694
39912f52
AD
6952002-10-20 Akim Demaille <akim@epita.fr>
696
697 * src/output.c (prepare): Move the definition of `tokens_number',
698 `nterms_number', `undef_token_number', `user_token_number_max'
699 to...
700 (prepare_tokens): Here.
701 (prepare_tokens): Rename as...
702 (prepare_symbols): this.
703 (prepare): Move the definition of `rules_number' to...
704 (prepare_rules): here.
705 (prepare): Move the definition of `last', `final_state_number',
706 `states_number' to...
707 (prepare_states): here.
708 * data/yacc.c, data/lalr1.cc, data/glr.c: Normalize `>' into `<'.
709
20c1e2ad
AD
7102002-10-20 Akim Demaille <akim@epita.fr>
711
712 * src/tables.h, src/tables.c, src/output.c: Comment changes.
713
21964f43
AD
7142002-10-20 Akim Demaille <akim@epita.fr>
715
716 * data/yacc.c, data/yacc.c (b4_location_if, b4_pure_if): Move to...
717 * data/c.m4: here.
718
66d30cd4
AD
7192002-10-20 Akim Demaille <akim@epita.fr>
720
721 * src/output.c (prepare): Use MUSCLE_INSERT_STRING.
722 * src/muscle_tab.c (muscle_pair_list_grow): Rename `val as
723 `pair'.
724 (muscle_init): Move the `b4_ltype', `b4_maxdepth', `b4_initdepth',
725 `name' to...
726 * data/glr.c, data/lalr1.cc, data/yacc.c (b4_location_type)
727 (b4_stack_depth_init, b4_stack_depth_max, b4_parser_class_name):
728 These.
729
95f2c9fe
PE
7302002-10-19 Paul Eggert <eggert@twinsun.com>
731
732 Do not create a temporary file, as that involves security and
733 cleanup headaches. Instead, use a pair of pipes.
734 Derived from a suggestion by Florian Krohm.
735 * lib/subpipe.c, lib/subpipe.h, m4/subpipe.m4: New files.
736 * lib/mkstemp.c, lib/readpipe.c, lib/tempname.c, m4/mkstemp.m4: Remove.
737 * configure.ac (UTILS_FUNC_MKSTEMP, jm_PREREQ_TEMPNAME): Remove.
738 (BISON_PREREQ_SUBPIPE): Add.
739 * lib/Makefile.am (libbison_a_SOURCES): Remove readpipe.c.
740 Add subpipe.h, subpipe.c.
741 * m4/Makefile.am (EXTRA_DIST): Remove mkstemp.m4. Add subpipe.m4.
742 * po/POTFILES.in: Add lib/subpipe.c.
743 * src/output.c: Include "subpipe.h".
744 (m4_invoke): Remove decl.
745 (scan_skel): New decl.
746 (output_skeleton): Use pipe rather than temporary file for m4 input.
747 Check that m4sugar.m4 is readable, to avoid deadlock.
748 Check for pipe I/O error.
749 * src/scan-skel.l (readpipe): Remove decl.
750 (scan_skel): New function, to be used in place of m4_invoke.
751 Read from stream rather than file.
66d30cd4 752
95f2c9fe
PE
753 * lib/timevar.c (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Do not cast to
754 float, as this generates a warning on Solaris 8 + GCC 3.2 with
755 --enable-gcc-warnings. Instead, divide into 1.0 rather than 1;
756 this generates a more-accurate value anyway.
757
758 * lib/timevar.c (timervar_accumulate): Rename locals to
759 avoid confusion with similarly-named more-global.
760 * src/muscle_tab.c (muscle_pair_list_grow): Likewise.
761
762 * src/output.c (prepare): Use xstrdup to convert char const *
763 to char *, to avoid GCC warning.
764
c19988b7
AD
7652002-10-19 Akim Demaille <akim@epita.fr>
766
767 * tests/calc.at (_AT_DATA_CALC_Y): Define VAL, LOC, LEX_FORMALS,
768 LEX_PRE_FORMALS, LEX_ARGS, LEX_PRE_ARGS, USE_LEX_ARGS.
769 Use them to have `calc.y' ready for %pure-parser.
770 * data/yacc.c (YYLEX): Pass a yylex return type to
771 b4_c_function_call.
772
ae7453f2
AD
7732002-10-19 Akim Demaille <akim@epita.fr>
774
775 Prototype support of %lex-param and %parse-param.
776
777 * src/parse-gram.y: Add the definition of the %lex-param and
778 %parse-param tokens, plus their rules.
779 Drop the `_' version of %glr-parser.
780 Add the "," token.
781 * src/scan-gram.l (INITIAL): Scan them.
782 * src/muscle_tab.c: Comment changes.
783 (muscle_insert, muscle_find): Rename `pair' as `probe'.
784 * src/muscle_tab.h (MUSCLE_INSERT_PREFIX): Remove unused.
785 (muscle_entry_s): The `value' member is no longer const.
786 Adjust all dependencies.
787 * src/muscle_tab.c (muscle_init): Adjust: use
788 MUSCLE_INSERT_STRING.
789 Initialize the obstack earlier.
790 * src/muscle_tab.h, src/muscle_tab.c (muscle_grow)
791 (muscle_pair_list_grow): New.
792 * data/c.m4 (b4_c_function_call, b4_c_args): New.
793 * data/yacc.c (YYLEX): Use b4_c_function_call to honor %lex-param.
794 * tests/calc.at: Use %locations, not --locations.
795 (AT_CHECK_CALC_GLR): Use %glr-parser, not %glr_parser.
796
0e575721
AD
7972002-10-19 Akim Demaille <akim@epita.fr>
798
799 * src/getargs.c (usage): Take status as argument and exit
800 accordingly.
801 Report the traditional `Try ... --help' message when status != 0.
802 (usage, version): Don't take a FILE * as arg, it is pointless.
803 (getargs): When there is an incorrect number of arguments, make it
804 an error, and report it GNUlically thanks to `usage ()'.
805
724ce7f5
PE
8062002-10-18 Paul Eggert <eggert@twinsun.com>
807
3a781eb2
PE
808 * data/glr.c (yyreportParseError): Don't assume that sprintf
809 yields the length of the printed string, as this is not true
810 on SunOS 4.1.4. Reported by Peter Klein.
811
724ce7f5
PE
812 * tests/calc.at (_AT_DATA_CALC_Y): #undef memcmp and realloc.
813 * tests/conflicts.at (%nonassoc and eof): Likewise.
814 Fixes SunOS 4.1.4 test failure reported by Peter Klein.
815
473d0a75
AD
8162002-10-17 Akim Demaille <akim@epita.fr>
817
818 * src/getargs.h (trace_e): Add trace_scan, and trace_parse.
819 * src/getargs.c (trace_types, trace_args): Adjust.
820 * src/reader.c (grammar_current_rule_prec_set)
821 (grammar_current_rule_dprec_set, grammar_current_rule_merge_set):
822 Standardize error messages.
823 And s/@prec/%prec/!
824 (reader): Use trace_flag to enable scanner/parser debugging,
825 instead of an adhoc scheme.
826 * src/scan-gram.l: Remove trailing debugging code.
827
e76d2469
PE
8282002-10-16 Paul Eggert <eggert@twinsun.com>
829
93e2236a
PE
830 * src/muscle_tab.h (MUSCLE_TAB_H_): Was misspelled as
831 MUSCLE_TAB_H.
832
e76d2469
PE
833 * NEWS: Officially drop support for building Bison with K&R C,
834 since it didn't work anyway and it's not worth worrying about.
835 * Makefile.maint (wget_files): Remove ansi2knr.c.
836 (ansi2knr.c-url_prefix): Remove.
837 * lib/.cvsignore: Remove ansi2knr, ansi2knr.*.
838 * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove.
839 * src/Makefile.am (AUTOMAKE_OPTIONS): Remove.
840
5bd1c419
PE
8412002-10-15 Paul Eggert <eggert@twinsun.com>
842
843 Stop using the "enum_" trick for K&R-style function definitions;
844 it confused me, and I was the author! Instead, assume that people
845 who want to use K&R C compilers (when using these modules in GCC,
846 perhaps?) will run ansi2knr.
847
848 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): Remove.
849 All uses of "enum_" changed to "enum ".
850 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
851 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
e76d2469 852
5bd1c419
PE
853 * lib/abitset.c (abitset_and, abitset_and_cmp, abitset_and_or,
854 abitset_and_or_cmp, abitset_andn, abitset_andn_cmp,
855 abitset_andn_or, abitset_andn_or_cmp, abitset_bytes, abitset_copy,
856 abitset_copy1, abitset_disjoint_p, abitset_empty_p,
857 abitset_equal_p, abitset_init, abitset_list, abitset_list_reverse,
858 abitset_not, abitset_ones, abitset_or, abitset_or_and,
859 abitset_or_and_cmp, abitset_or_cmp, abitset_reset, abitset_set,
860 abitset_size, abitset_small_list, abitset_subset_p, abitset_test,
861 abitset_unused_clear, abitset_xor, abitset_xor_cmp, abitset_zero):
862 Use function prototypes; this removes the need for declaring
863 static functions simply to provide their prototypes.
864 * lib/bitset.c (bitset_alloc, bitset_and_or_, bitset_and_or_cmp_,
865 bitset_andn_or_, bitset_andn_or_cmp_, bitset_bytes, bitset_copy_,
866 bitset_count_, bitset_create, bitset_dump, bitset_first,
867 bitset_free, bitset_init, bitset_last, bitset_next,
868 bitset_obstack_alloc, bitset_obstack_free, bitset_only_set_p,
869 bitset_op4_cmp, bitset_or_and_, bitset_or_and_cmp_, bitset_prev,
870 bitset_print, bitset_release_memory, bitset_toggle_,
871 bitset_type_choose, bitset_type_get, bitset_type_name_get,
872 debug_bitset): Likewise.
873 * lib/bitset.h (bitset_set, bitset_reset, bitset_test): Likewise.
874 * lib/bitset_stats.c (bitset_log_histogram_print,
875 bitset_percent_histogram_print, bitset_stats_and,
876 bitset_stats_and_cmp, bitset_stats_and_or,
877 bitset_stats_and_or_cmp, bitset_stats_andn, bitset_stats_andn_cmp,
878 bitset_stats_andn_or, bitset_stats_andn_or_cmp, bitset_stats_copy,
879 bitset_stats_count, bitset_stats_disable, bitset_stats_disjoint_p,
880 bitset_stats_dump, bitset_stats_empty_p, bitset_stats_enable,
881 bitset_stats_equal_p, bitset_stats_free, bitset_stats_init,
882 bitset_stats_list, bitset_stats_list_reverse, bitset_stats_not,
883 bitset_stats_ones, bitset_stats_or, bitset_stats_or_and,
884 bitset_stats_or_and_cmp, bitset_stats_or_cmp, bitset_stats_print,
885 bitset_stats_print_1, bitset_stats_read, bitset_stats_reset,
886 bitset_stats_set, bitset_stats_size, bitset_stats_subset_p,
887 bitset_stats_test, bitset_stats_toggle, bitset_stats_type_get,
888 bitset_stats_write, bitset_stats_xor, bitset_stats_xor_cmp,
889 bitset_stats_zero): Likewise.
890 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
891 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
892 bitsetv_dump, debug_bitsetv): Likewise.
893 * lib/ebitset.c (ebitset_and, ebitset_and_cmp, ebitset_andn,
894 ebitset_andn_cmp, ebitset_bytes, ebitset_copy, ebitset_copy_,
895 ebitset_copy_cmp, ebitset_disjoint_p, ebitset_elt_add,
896 ebitset_elt_alloc, ebitset_elt_calloc, ebitset_elt_find,
897 ebitset_elt_free, ebitset_elt_last, ebitset_elt_remove,
898 ebitset_elt_zero_p, ebitset_elts_grow, ebitset_empty_p,
899 ebitset_equal_p, ebitset_free, ebitset_init, ebitset_list,
900 ebitset_list_reverse, ebitset_not, ebitset_ones, ebitset_op3_cmp,
901 ebitset_or, ebitset_or_cmp, ebitset_release_memory, ebitset_reset,
902 ebitset_set, ebitset_size, ebitset_subset_p, ebitset_test,
903 ebitset_weed, ebitset_xor, ebitset_xor_cmp, ebitset_zero):
904 Likewise.
905 * lib/lbitset.c (debug_lbitset, lbitset_and, lbitset_and_cmp,
906 lbitset_andn, lbitset_andn_cmp, lbitset_bytes, lbitset_copy,
907 lbitset_copy_cmp, lbitset_disjoint_p, lbitset_elt_alloc,
908 lbitset_elt_calloc, lbitset_elt_find, lbitset_elt_free,
909 lbitset_elt_link, lbitset_elt_unlink, lbitset_elt_zero_p,
910 lbitset_empty_p, lbitset_equal_p, lbitset_free, lbitset_init,
911 lbitset_list, lbitset_list_reverse, lbitset_not, lbitset_ones,
912 lbitset_op3_cmp, lbitset_or, lbitset_or_cmp, lbitset_prune,
913 lbitset_release_memory, lbitset_reset, lbitset_set, lbitset_size,
914 lbitset_subset_p, lbitset_test, lbitset_weed, lbitset_xor,
915 lbitset_xor_cmp, lbitset_zero): Likewise.
e76d2469 916
ae26e1f0
AD
9172002-10-14 Akim Demaille <akim@epita.fr>
918
919 Version 1.75.
920
d43baf71
AD
9212002-10-14 Akim Demaille <akim@epita.fr>
922
923 * tests/Makefile.am (maintainer-check-posix): New.
924
7ebc83e3
AD
9252002-10-14 Akim Demaille <akim@epita.fr>
926
927 * data/glr.c [YYDEBUG] (YYLEFTMOST_STATE): Initialize the yyloc
928 member.
929
05846dae
AD
9302002-10-14 Akim Demaille <akim@epita.fr>
931
932 * src/tables.c (table_ninf_remap): base -> tab.
933 Reported by Matt Rosing.
934
1318e37d
PE
9352002-10-14 Paul Eggert <eggert@twinsun.com>
936
447fbb17
PE
937 * tests/action.at, tests/calc.at, tests/conflicts.at,
938 tests/cxx-type.at, tests/headers.at, tests/input.at,
939 tests/regression.at, tests/synclines.at, tests/torture.at:
940 Say "bison -o foo.c foo.y", not "bison foo.y -o foo.c",
941 so that the tests still work even if POSIXLY_CORRECT is set.
942 * doc/bison.texinfo (Rpcalc Compile, Invocation): Likewise.
05846dae 943
1318e37d
PE
944 * data/c.m4 (b4_int_type): Use yysigned_char instead of signed char,
945 for portability to K&R hosts. Fix typo: signed char is guaranteed
946 only to 127, not to 128.
947 * data/glr.c (yysigned_char): New type.
948 * data/yacc.c (yysigned_char): Likewise.
949 * tests/regression.at (Web2c Actions): signed char -> yysigned_char.
950
cc0f0794
PE
9512002-10-13 Paul Eggert <eggert@twinsun.com>
952
5038f418
PE
953 * data/yacc.c (yyparse): Rewrite to avoid "comparison is always
954 true due to limited range of data type" warning from GCC.
955
cc0f0794
PE
956 * data/c.m4 (b4_token_defines): Protect against double-inclusion
957 by wrapping enum yytokentype's definition inside #ifndef
958 YYTOKENTYPE. This undoes a bug I introduced on 2002-10-12.
959
6fed0802
AD
9602002-10-13 Akim Demaille <akim@epita.fr>
961
962 * data/glr.c (yyglrShiftDefer, yyaddDeferredAction, yydoAction):
963 Un yy- yyrhs to avoid the name clash with the global YYRHS.
964
32f0598d
AD
9652002-10-13 Akim Demaille <akim@epita.fr>
966
967 * Makefile.maint: Update from Autoconf 2.54.
968 * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Remove, shipped with 2.54.
969
7ea9a33f
AD
9702002-10-13 Akim Demaille <akim@epita.fr>
971
972 * src/print.c (print_state): Separate the list of solved conflicts
973 from the other items.
974 * tests/conflicts.at (Resolved SR Conflicts): Adjust.
975
ea99527d
AD
9762002-10-13 Akim Demaille <akim@epita.fr>
977
978 Let nondeterministic skeletons be usable with deterministic
979 tables.
980
981 With the patch, GAWK compiled by GCC without -O2 passes its test
982 suite using a GLR parser driven by LALR tables. It fails with -O2
983 because `struct stat' gives two different answers on my machine:
984 88 (definition of an auto var) and later 96 (memset on this var).
985 Hence the stack is badly corrumpted. The headers inclusion is to
986 blame: if I move the awk.h inclusion before GLR's system header
987 inclusion, the two struct stat have the same size.
988
989 * src/tables.c (pack_table): Always create conflict_table.
990 (token_actions): Always create conflict_list.
991 * data/glr.c (YYFLAG): Remove, unused.
992
f377f69f
AD
9932002-10-13 Akim Demaille <akim@epita.fr>
994
995 * configure.ac (AC_GNU_SOURCE): Use it instead of hand written code.
996 (O0FLAGS): New.
997 (VALGRIND, GXX): New.
998 * tests/atlocal.in (CFLAGS): Use O0FLAGS.
999 * tests/bison.in: Run $PREBISON a pre-command.
1000 * tests/Makefile.am (maintainer-check, maintainer-check-valgrind)
1001 (maintainer-check-g++): New.
1002 * Makefile.am (maintainer-check): New.
1003
2a1fe6ed
AD
10042002-10-13 Akim Demaille <akim@epita.fr>
1005
1006 * data/glr.c: Formatting changes.
1007 Tweak some trace messages to match yacc.c's.
1008
f50adbbd
AD
10092002-10-13 Akim Demaille <akim@epita.fr>
1010
1011 GLR parsers sometimes raise parse errors instead of performing the
1012 default reduction.
1013 Reported by Charles-Henry de Boysson.
1014
1015 * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't
1016 check the length of the traces when %glr.
1017 (_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from
1018 GLR's traces.
1019 (AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New.
1020 Test GLR parsers.
1021 * data/glr.c (YYLEFTMOST_STATE): Fix its value.
1022 (yyltype): Remove the yy prefix from the member names.
1023 (yytable): Complete its comment.
1024 (yygetLRActions): Map error action number from YYTABLE from
1025 YYTABLE_NINF to 0.
1026 (yyisErrorAction): No longer compare YYACTION to YYPACT_NINF
1027 (which was a bug: it should have been YYTABEL_NINF, and yet it was
1028 not satisfying as we could compare an YYACTION computed from
1029 YYDEFACT to YYTABLE_NINF although they are unrelated): 0 is the
1030 only value for error actions.
1031 (yyreportParseError): In verbose parse error messages, don't issue
1032 `error' in the list of expected tokens.
1033 * data/yacc.c (yyparse) <yybackup>: Rewrite the decoding of the
1034 next action to perform to match glr.c's decoding.
1035 (yytable): Complete its comment.
1036
bcbad5b9
PE
10372002-10-13 Paul Eggert <eggert@twinsun.com>
1038
1039 Fix problem reported by Henrik Grubbstroem in
1040 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001670.html>:
1041 "nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected,
1042 because the Bison parser reads the second action before reducing
1043 the first one.
1044 * src/scan-gram.l (rule_length): New static var.
1045 Use it to keep track of the rule length in the scanner, since
1046 we can't expect the parser to be in lock-step sync with the scanner.
1047 (handle_action_dollar, handle_action_at): Use this var.
1048 * tests/actions.at (Exotic Dollars): Test for the problem.
05846dae 1049
14904b89
PE
10502002-10-12 Paul Eggert <eggert@twinsun.com>
1051
1fe611e5
PE
1052 * lib/timevar.c [! IN_GCC && HAVE_SYS_TIME_H]: Include <sys/time.h>.
1053 * m4/timevar.m4 (BISON_PREREQ_TIMEVAR): Check for <sys/time.h>.
1054 Include <sys/time.h> when checking for clock_t and struct tms.
1055 Use same include order as source.
1056 This is for the SunOS 4.1.4 porting bug reported by Peter Klein in
1057 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001674.html>.
05846dae 1058
1fe611e5
PE
1059 * lib/timevar.c: Update copyright date and clarify comments.
1060 (get_time) [IN_GCC]: Keep the GCC version for reference.
05846dae 1061
1fe611e5
PE
1062 * lib/timevar.c, lib/timevar.h, lib/timevar.def: Import
1063 GCC version as of today, then merge Bison's changes.
1064 Change "GCC" to "Bison" in copyright notice. timevar.def's
1065 author is Akim, so change that too.
1066
98194095
PE
1067 * src/reader.c (grammar_current_rule_check):
1068 Don't worry about the default action if $$ is untyped.
1069 Prevents bogus warnings reported by Jim Gifford in
1070 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001673.html>.
1071
14904b89
PE
1072 * data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE.
1073 * data/glr.c, data/lalr1.cc, data/yacc.c:
1074 Output token definitions before the first part of user declarations.
1075 Fixes compatibility problem reported by Jim Gifford for kbd in
1076 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001672.html>.
1077
ff6dca18
PE
10782002-10-11 Paul Eggert <eggert@twinsun.com>
1079
1080 * data/yacc.c (yyreport_parse_error): Remove, putting its body into...
1081 (yyparse): here. This undoes some of the 2002-07-25 change.
1082 Compatibility problem reported by Ralf S. Engelschall with
1083 OSSP cfg <http://www.ossp.org/pkg/lib/cfg/>.
1084
eb714592
AD
10852002-10-11 Akim Demaille <akim@epita.fr>
1086
1087 * tests/regression.at Characters Escapes): New.
1088 * src/scan-gram.l (SC_ESCAPED_CHARACTER): Accept \' in strings and
1089 characters.
1090 Reported by Jan Nieuwenhuizen.
1091
b7195100
AD
10922002-10-11 Akim Demaille <akim@epita.fr>
1093
1094 * po/id.po: New.
1095
f28a0f2d
PE
10962002-10-10 Paul Eggert <eggert@twinsun.com>
1097
1098 Portability fixes for bitsets; this also avoids several GCC
1099 warnings.
1100
1101 * lib/abitset.c: Include <stddef.h>, for offsetof.
1102 * lib/lbitset.c: Likewise.
1103
1104 * lib/abitset.c (abitset_bytes): Return a size that is aligned
1105 properly for vectors of objects. Do not assume that adding a
1106 header size to a multiple of a word size yields a value that is
1107 properly aligned for the whole union.
1108 * lib/bitsetv.c (bitsetv_alloc): Likewise.
1109
1110 * lib/bitset_stats.c (bitset_stats_bytes): Adjust to new,
1111 unique names for structures.
1112 * lib/ebitset.c (ebitset_bytes): Likewise.
1113 * lib/lbitset.c (lbitset_bytes): Likewise.
1114
1115 * lib/abitset.c (abitset_ones, abitset_zero, abitset_empty_p,
1116 abitset_copy1, abitset_not, abitset_equal_p, abitset_subset_p,
1117 abitset_disjoint_p, abitset_and, abitset_and_cmp, abitset_andn,
1118 abitset_andn_cmp, abitset_or, abitset_or_cmp, abitset_xor,
1119 abitset_xor_cmp, abitset_and_or, abitset_and_or_cmp,
1120 abitset_andn_or, abitset_andn_or_cmp, abitset_or_and,
1121 abitset_or_and_cmp, abitset_copy): Supply prototype decls,
1122 to improve the type-checking that GCC can do.
1123 * lib/bitset.c (bitset_op4_cmp): Likewise.
1124 * lib/bitset_stats.c (bitset_stats_count,
1125 bitset_stats_empty_p, bitset_stats_ones, bitset_stats_zero,
1126 bitset_stats_copy, bitset_stats_disjoint_p,
1127 bitset_stats_equal_p, bitset_stats_not, bitset_stats_subset_p,
1128 bitset_stats_and, bitset_stats_and_cmp, bitset_stats_andn,
1129 bitset_stats_andn_cmp, bitset_stats_or, bitset_stats_or_cmp,
1130 bitset_stats_xor, bitset_stats_xor_cmp, bitset_stats_and_or,
1131 bitset_stats_and_or_cmp, bitset_stats_andn_or,
1132 bitset_stats_andn_or_cmp, bitset_stats_or_and,
1133 bitset_stats_or_and_cmp): Likewise.
1134 * lib/lbitset.c (lbitset_and, lbitset_and_cmp, lbitset_andn,
1135 lbitset_andn_cmp, lbitset_or, lbitset_or_cmp, lbitset_xor,
1136 lbitset_xor_cmp, lbitset_empty_p, lbitset_ones, lbitset_not,
1137 lbitset_subset_p, lbitset_disjoint_p, debug_lbitset): Likewise.
1138
1139 * lib/abitset.h: Include bitset.h, not bbitset.h.
1140 * lib/ebitset.h: Likewise.
1141 * lib/lbitset.h: Likewise.
1142
1143 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): New types.
1144 All instances of parameters of type enum bitset_opts are now of
1145 type enum_bitset_opts, to conform to the C Standard, and similarly
1146 for enum_bitset_type.
1147 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
1148 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
1149
1150 Do not use "struct bitset_struct" to mean different things in
1151 different modules. Not only is this confusing, it violates
1152 the C Standard, which requires that structure types in different
1153 modules must be compatible if one is to be passed to the other.
1154 * lib/bbitset.h (bitset): Now points to a union, not to a struct.
1155 All instances of "struct bitset_struct *" replaced with "bitset".
1156 * lib/bitset.h (struct bitset_struct): Remove, replacing with....
1157 (union bitset_union, struct abitset_struct, struct ebitset_struct,
1158 struct lbitset_struct, struct bitset_stats_struct): New types.
1159 All uses of struct bitset_struct changed to union bitset_union,
1160 etc.
1161 * lib/abitset.c (struct abitset_struct, abitset,
1162 struct bitset_struct): Remove.
1163 * lib/bitset_stats.c (struct bitset_stats_struct, bitset_stats,
1164 struct bitset_struct): Remove.
1165 * lib/ebitset.c (struct ebitset_struct, ebitset, struct
1166 bitset_struct): Remove.
1167 * lib/lbitset.c (struct lbitset_struct, lbitset, bitset_struct):
1168 Likewise.
1169
1170 Do not call a function of type T using a call that assumes the
1171 function is of a different type U. Standard C requires that a
1172 function must be called with a type that is compatible with its
1173 definition.
1174 * lib/bbitset.h (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
1175 New decls.
1176 * lib/bitset.c (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
1177 New functions.
1178 * lib/ebitset.c (PFV): Remove.
1179 * lib/lbitset.c (PFV): Likewise.
1180 * lib/ebitset.c (ebitset_and, ebitset_andn, ebitset_or,
1181 ebitset_xor, ebitset_copy, ebitset_ones, ebitset_empty_p): New
1182 decls.
1183 (ebitset_and, ebitset_andn, ebitset_or, ebitset_xor): New functions.
1184 (ebitset_vtable): Use them.
1185 * lib/lbitset.c (lbitset_and, lbitset_andn, lbitset_or,
1186 lbitset_xor): New functions.
1187 (lbitset_vtable): Use them.
1188
1189 * lib/bitset.h (bitset_next, bitset_prev, bitset_only_set_p):
1190 Declare.
1191
1192 * lib/bitsetv.c (bitsetv_alloc): Add a cast to (void *) to avoid a
1193 GCC warning.
1194 * lib/lbitset.c (LBITSET_CURRENT1): Likewise.
1195 Use offsetof, for simplicity.
1196
6fbe4984
PE
11972002-10-06 Paul Eggert <eggert@twinsun.com>
1198
1199 * lib/bitset.h (bitset_reset): Do not assume that bitset_word is
1200 the same width as int. This reapplies a hunk of the 2002-08-12 patch
1201 <http://mail.gnu.org/pipermail/bison-patches/2002-August/001111.html>,
1202 which was inadvertently undone by the 2002-09-30 patch.
1203 * lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is
1204 the same width as int.
1205
420f93c8
PE
12062002-10-04 Paul Eggert <eggert@twinsun.com>
1207
1208 Version 1.50.
1209
1210 * configure.ac (AC_INIT), NEWS: Increment version number.
1211
1212 * doc/bison.texinfo: Minor spelling, grammar, and white space
1213 fixes.
1214 (Symbols): Mention that any negative value returned from yylex
1215 signifies end-of-input. Warn about negative chars. Mention
1216 the portable Standard C character set.
1217
1218 The GNU coding standard says CFLAGS and YFLAGS are reserved
1219 for the installer to set.
1220 * lib/Makefile.am (AM_CFLAGS): Renamed from CFLAGS.
1221 * src/Makefile.am (AM_CFLAGS): Likewise.
1222 (AM_YFLAGS): Renamed from YFLAGS.
1223
1224 Fix some MAX and MIN problems.
1225 * src/gram.h (ITEM_NUMBER_MIN): MIN_MAX -> INT_MIN.
1226 * src/lalr.h (GOTO_NUMBER_MAX): INT_MAX -> SHRT_MAX.
1227 * src/symtab.h (SYMBOL_NUMBER_MAX): New macro.
1228 * src/reader.c (reader): Use it.
1229
1230 * tests/regression.at (Braces parsing): Use grep, not fgrep, as
1231 POSIX 1003.1-2001 has removed fgrep.
1232
12332002-10-04 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
1234
1235 * lib/bbitset.h (BITSET_WINDEX_MAX): Redefine so that it cannot be
1236 interpreted as signed.
1237 * lib/ebitset.c (ebitset_list): Fix bug.
1238
ff68026d
PE
12392002-10-01 Paul Eggert <eggert@twinsun.com>
1240
1241 More fixes for 64-bit hosts and large bitsets.
1242
1243 * lib/abitset.c (struct abitset_struct.n_bits, abitset_small_list,
1244 abitset_size, abitset_list, abitset_list_reverse, abitset_list):
1245 Use bitset_bindex, not int or unsigned int or size_t, to count bits.
1246 * lib/bbitset.h (struct bitset_vtable.size, struct bitset_vtable.count,
1247 struct bitset_vtable.list, struct bitset_vtable.list_reverse,
1248 bitset_count_, bitset_next, bitset_prev, bitset_first, bitset_last,
1249 bitset_count_): Likewise.
1250 * lib/bitset.h (bitset_iterator.num, bitset_iterator.i,
1251 bitset_first, bitset_last): Likewise.
1252 * lib/bitset_stats.c (bitset_stats_size, bitset_stats_list,
1253 bitset_stats_list_reverse, bitset_stats_size,
1254 bitset_stats_count, bitset_stats_list, bitset_stat_list_reverse):
1255 Likewise.
1256 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
1257 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
1258 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
1259 bitsetv_reflexive_transitive_closure): Likewise.
1260 * lib/bitsetv.h (bitsetv_alloc, bitsetv_create): Likewise.
1261 * lib/ebitset.c (ebitset_size, ebitset_list, ebitset_list_reverse):
1262 Likewise.
1263 * lib/lbitset.c (lbitset_size, lbitset_list, lbitset_list_merge):
1264 Likewise.
420f93c8 1265
ff68026d
PE
1266 * lib/abitset.c (abitset_ones, abitset_zero, abitset_bytes):
1267 Use size_t, not unsigned int, to count bytes.
1268 * lib/abitset.h (abitset_bytes): Likewise.
1269 * lib/bitset.c (bitset_bytes, bitset_alloc, bitset_obstack_alloc):
1270 Likewise.
1271 * lib/bitset.h (bitset_bytes): Likewise.
1272 * lib/bitset_stats.c (bitset_stats_bytes, bitset_stats_init): Likewise.
1273 * lib/bitset_stats.h (bitset_stats_bytes): Likewise.
1274 * lib/bitsetv.c (bitsetv_alloc): Likewise.
1275 * lib/ebitset.c (ebitset_bytes): Likewise.
1276 * lib/ebitset.h (ebitset_bytes): Likewise.
1277 * lib/lbitset.c (lbitset_bytes): Likewise.
1278 * lib/lbitset.h (lbitset_bytes): Likewise.
420f93c8 1279
ff68026d
PE
1280 * lib/abitset.c (abitset_empty_p, abitset_not, abitset_equal_p,
1281 abitset_subset_p, abitset_disjoint_p, abitset_and,
1282 abitset_and_cmp, abitset_andn, abitset_andn_cmp, abitset_or,
1283 abitset_or_cmp, abitset_xor, abitset_xor_cmp, abitset_and_or,
1284 abitset_and_or_cmp, abitset_andn_or, abitset_andn_or_cmp,
1285 abitset_or_and, abitset_or_and_cmp):
1286 Use bitset_windex instead of unsigned int.
1287 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
1288 * lib/ebitset.c (struct ebitset_struct.size, ebitset_elts_grow,
1289 ebitset_elt_add, ebitset_elt_remove, ebitset_weed,
1290 ebitset_elt_find, ebitset_list_reverse, ebitset_list, ebitset_init):
1291 Likewise.
1292 * lib/lbitset.c (lbitset_ones, lbitset_not): Likewise.
420f93c8 1293
ff68026d
PE
1294 * lib/bitset.c (bitset_print):
1295 Use proper printf formats for widths of integer types.
1296 * lib/bitset_stats.c (bitset_percent_histogram_print,
1297 bitset_log_histogram_print, bitset_stats_print_1): Likewise.
1298 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
1299 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
1300 * lib/lbitset.c (lbitset_bytes): Likewise.
420f93c8 1301
ff68026d
PE
1302 * lib/bbitset.h (BITSET_BINDEX_MAX, BITSET_WINDEX_MAX,
1303 BITSET_SIZE_MAX): New macros.
1304 (BITSET_INDEX_MAX): Remove. It wasn't right, since it assumed that
1305 sizeof (bitset_word) == sizeof (bitset_windex). All uses changed
1306 to BITSET_WINDEX_MAX.
1307
1308 * lib/bitset.c (bitset_next, bitset_prev, bitset_first,
1309 bitset_last): Return BITSET_BINDEX_MAX (not -1) for no value,
1310 since we now return the bitset_bindex type (not int).
1311
1312 * lib/bitsetv.c (bitsetv_alloc): Check for arithmetic overflow
1313 when computing sizes.
1314 * lib/ebitset.c (ebitset_elts_grow): Likewise.
1315
1316 * lib/lbitset.c (lbitset_elt_find): Simplify windex calculation
1317 and avoid cast to unsigned.
1318
6aa452a6
AD
13192002-09-30 Akim Demaille <akim@epita.fr>
1320
1321 * lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
1322 * lib/bitset_stats.c, lib/bitsetv.c, lib/ebitset.c, lib/lbitset.c:
1323 Updates from Michael Hayes.
1324
927f7817
AD
13252002-09-30 Art Haas <ahaas@neosoft.com>
1326
1327 * configure.ac: Update AC_OUTPUT and AM_CONFIG_HEADER
1328 invocations.
1329 * tests/cxx-type.at (declarator): Don't rely on NDEBUG being not
1330 defined.
1331
9738f41e
AD
13322002-09-27 Akim Demaille <akim@epita.fr>
1333
1334 Version 1.49c.
1335
a5c75d7f
AD
13362002-09-27 Akim Demaille <akim@epita.fr>
1337
1338 * configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7.
1339 (Because of AC_LIBSOURCE).
1340
8280e179
AD
13412002-09-27 Akim Demaille <akim@epita.fr>
1342
1343 Playing with Autoscan.
1344
1345 * configure.ac: Remove the old LIBOBJ tweaks.
1346 (AC_REPLACE_FUNCS): Add strrchr and strtol.
1347 * lib/strrchr.c: New.
1348 * lib/strtol.c: New, from the Coreutils 4.5.1.
1349
ae64af35
AD
13502002-09-27 Akim Demaille <akim@epita.fr>
1351
1352 Playing with Autoscan.
1353
1354 * m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New.
1355 * lib/Makefile.am (libbison_a_SOURCES): No longer include
1356 argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd.
1357 * lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the
1358 Coreutils 4.5.1.
1359
d1a1114f
AD
13602002-09-24 Akim Demaille <akim@epita.fr>
1361
1362 * doc/bison.texinfo (Stack Overflow): xref to Recursion.
1363 (Frequently Asked Questions, Parser Stack Overflow): New.
1364
b906441c
AD
13652002-09-13 Akim Demaille <akim@epita.fr>
1366
1367 Playing with autoscan.
1368
1369 * src/reader.c (get_merge_function): Use xstrdup, not strdup.
1370 * src/files.c (skeleton_find): Remove, unused.
1371 * m4/memcmp.m4: New, from the Coreutils 4.5.1.
1372 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP.
1373
bd701811
AD
13742002-09-13 Akim Demaille <akim@epita.fr>
1375
1376 * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3.
1377 * Makefile.am (AUTOMAKE_OPTIONS): Don't.
1378
e0a13e7b
AD
13792002-09-13 Akim Demaille <akim@epita.fr>
1380
1381 * configure.ac: Require 2.54.
1382 s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/.
1383 s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/.
1384 * m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4:
1385 Remove, provided by Autoconf macros.
1386
c97011bf
AD
13872002-09-12 Akim Demaille <akim@epita.fr>
1388
1389 * m4/prereq.m4: Update, from Coreutils 4.5.1.
1390
d862b1be
AD
13912002-09-12 Akim Demaille <akim@epita.fr>
1392
1393 * m4/prereq.m4: Update, from Fileutils 4.1.5.
1394 * configure.ac (jm_PREREQ_TEMPNAME): Invoke it.
1395 Reported by Martin Mokrejs.
1396
3d38c03a
AD
13972002-09-10 Akim Demaille <akim@epita.fr>
1398
1399 * src/parse-gram.y: Associate a human readable string to each
1400 token type.
1401 * tests/regression.at (Invalid inputs): Adjust.
1402
b6347355
AD
14032002-09-10 Gary V. Vaughan <gary@gnu.org>
1404
1405 * tests/Makefile.am ($(srcdir)/package.m4): Bison now ships
1406 with an Autoconf-2.5x style configure.ac.
1407
09ba4ab2
PE
14082002-09-06 Paul Eggert <eggert@twinsun.com>
1409
1410 * doc/bison.texinfo (Conditions): Make explicit that the GPL
1411 exception applies only to yacc.c. This is a modification of a
1412 patch originally suggested by Akim Demaille.
1413
21846f69
AD
14142002-09-06 Akim Demaille <akim@epita.fr>
1415
09ba4ab2
PE
1416 * data/c.m4 (b4_copyright): Move the GPL exception comment from
1417 here to...
1418 * data/yacc.c: here.
1419
21846f69
AD
1420 * data/lalr1.cc (struct yyltype): Don't define it, since we use
1421 LocationType.
1422 (b4_ltype): Default to yy::Location from location.hh.
1423
c0ad8bf3
AD
14242002-09-04 Jim Meyering <jim@meyering.net>
1425
1426 * data/yacc.c: Guard the declaration of yytoknum also with
1427 `#ifdef YYPRINT', so it is declared only when used.
1428
3a93251e
AD
14292002-09-04 Akim Demaille <akim@epita.fr>
1430
1431 * configure.in: Rename as...
1432 * configure.ac: this.
1433 Bump to 1.49c.
1434
427c0dda
AD
14352002-09-04 Akim Demaille <akim@epita.fr>
1436
1437 * src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
1438 * src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
1439 translate maintainer only messages.
1440
6a254321
PE
14412002-08-12 Paul Eggert <eggert@twinsun.com>
1442
645e30d1
PE
1443 Version 1.49b.
1444
6a254321
PE
1445 * Makefile.am (SUBDIRS): Remove intl.
1446 (DISTCLEANFILES): Remove.
1447 * NEWS: Mention that GNU M4 is now required. Clarify what is
1448 meant by "larger grammars". Mention the pt_BR translation.
1449 * configure.in (AC_CHECK_DECLS): Add getenv, getopt.
1450 (AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var.
1451 Bump version from 0.11.2 to 0.11.5.
1452 (BISON_PREREQ_STAGE): Remove.
1453 (AM_GNU_GETTEXT): Use external gettext.
1454 (AC_OUTPUT): Remove intl/Makefile.
1455
1456 * config/depcomp, config/install-sh: Sync with Automake 1.6.3.
1457
1458 * data/glr.c: Include string.h, for strlen.
1459 (yyreportParseError): Use size_t for yysize.
1460 (yy_yypstack): No longer nested inside yypstates, as nested
1461 functions are not portable. Do not assume size_t is the
1462 same width as int.
1463 (yypstates): Do not assume that ptrdiff_t is the same width
1464 as int, and similarly for yyposn and YYINDEX.
1465
1466 * data/yacc.c: Fix comment about `$$ = $1': it can copy garbage.
1467
1468 * lib/Makefile.am (INCLUDES): Do not include from the intl
1469 directory, which has been removed.
1470 * src/Makefile.am (INCLUDES): Likewise.
1471
1472 * lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h.
1473 (bitsets_sources, additional_bitsets_sources, timevars_sources):
1474 New vars.
1475
1476 * lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension.
1477 * tests/Makefile.am (EXTRA_DIST): Likewise.
1478
1479 * lib/abitset.c (abitset_reverse_list, ebitset_reverse_list):
1480 Do not assume that bitset_windex is the same width as unsigned.
1481
1482 * lib/abitset.c (abitset_unused_clear): Do not assume that
1483 bitset_word is the same width as int.
1484 * lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise.
1485 * lib/bitset.h (bitset_set, bitset_reset): Likewise.
1486 * lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise.
1487 * lib/ebitset.c (ebitset_set, ebitset_reset): Likewise.
1488 * lib/lbitset.c (lbitset_set, lbitset_reset): Likewise.
1489
1490 * lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for
1491 portability to one's complement hosts!).
1492 * lib/ebitset.c (ebitset_op1): Likewise.
1493 * lib/lbitset.c (lbitset_op1): Likewise.
1494
1495 * lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar.
1496 * lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
1497 lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c:
1498 Sync with fileutils.
1499 * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
1500 lib/gettext.h: Sync with diffutils.
1501
1502 * lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c,
1503 lib/strspn.c, lib/tempname.c: Use GPL, not LGPL.
1504
1505 * lib/obstack.c, lib/obstack.h: Sync with fileutils, except use
1506 PROTOTYPES to check for prototypes, and "defined __STDC__" to
1507 check for void *.
1508
1509 * lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not
1510 size_t; the old version tried to do this but casted improperly.
1511 (bitset_bindex, bitset_windex): Now size_t, not unsigned long.
1512 (bitset_test): Now returns int, not unsigned long.
1513
1514 * lib/bitset_stats.c: Include "gettext.h".
1515 (_): New macro.
1516 (bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't
1517 name locals "index", as it generates unnecessary warnings on some
1518 hosts that have an "index" function.
1519
1520 * lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print,
1521 bitset_stats_read, bitset_stats_write): Wrap strings in _() if
1522 they need translation.
1523 * src/LR0.c (state_list_append, new_itemsets, get_state,
1524 append_states, generate_states): Likewise.
1525 * src/assoc.c (assoc_to_string): Likewise.
1526 * src/closure.c (print_closure, set_firsts, closure): Likewise.
1527 * src/gram.c (grammar_dump): Likewise.
1528 * src/injections.c (injections_compute): Likewise.
1529 * src/lalr.c (lookaheads_print): Likewise.
1530 * src/relation.c (relation_transpose): Likewise.
1531 * src/scan-gram.l: Likewise.
1532 * src/tables.c (table_grow, pack_vector): Likewise.
1533
1534 * m4/Makefile.am (EXTRA_DIST): Remove codeset.m4,
1535 glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4.
1536 * m4/malloc.m4, m4/realloc.m4: Sync with diffutils.
1537 * m4/mbstate_t.m4: Sync with fileutils.
1538 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T.
1539
1540 * po/LINGUAS: Add pt_BR.
1541 * po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c,
1542 src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c,
1543 lib/timevar.c.
1544 Use src/parse-gram.y instead of src/parse-gram.c, as the gettext
1545 manual recommends.
1546 Similarly, use src/scan-gram.l instead of src/scan-gram.c.
1547
1548 * src/complain.c (strerror_r): Remove decl; not needed.
1549 (strerror): Use same pattern as ../lib/error.c.
1550
1551 * src/files.c, src/files.h (compute_header_macro): Remove; unused.
1552
1553 * src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int.
1554
1555 * src/main.c (main): Cast result of bindtextdomain and textdomain
1556 to void, to avoid a GCC warning when --disable-nls is in effect.
1557
1558 * src/scan-gram.l: Use strings rather than escapes when possible,
1559 to minimize the number of warnings from xgettext.
1560 (handle_action_dollar, handle_action_at): Don't use isdigit,
1561 as it mishandles negative chars and it may not work as expected
1562 outside the C locale.
1563
1564 * src/symtab.c (symbol_get): Don't cast LHS of an assignment;
1565 this is a GCC extension and is not portable to other compilers.
1566
1567 * src/system.h (alloca): Use same pattern as ../lib/error.c.
1568 Do not include <ctype.h>; no longer needed.
1569 Do not include <malloc.h>; no longer needed (and generates
1570 warnings on OpenBSD 3.0).
1571
1572 * tests/cxx-type.at (yylex): Do not pass signed char to isupper;
1573 it's not portable.
1574
1575 * tests/regression.at: Do not use 'cc -c input.c -o input';
1576 Sun C rejects this. Instead, use 'cc -c input.c -o input.o'.
1577
1578 * tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero
1579 exit status as failure, not just exit status 1. Sun C exits
1580 with status 2 sometimes.
1581
1582 * tests/torture.at (AT_INCREASE_DATA_SIZE): New macro.
1583 Use it for the two large tests.
1584
c8f002c7
AD
15852002-08-02 Akim Demaille <akim@epita.fr>
1586
1587 * src/conflicts.c (conflicts_output): Don't output rules never
1588 reduced here, since anyway that computation doesn't work.
1589 * src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
1590 (rule_useless_p, rule_never_reduced_p): New.
1591 (grammar_rules_partial_print): Use a filter instead of a range.
1592 Display the title only if needed.
1593 (grammar_rules_print): Adjust.
1594 (grammar_rules_never_reduced_report): New.
1595 * src/tables.c (action_row): Move the computation of rules never
1596 reduced to...
1597 (token_actions): here.
1598 * src/main.c (main): Make the parser before making the report, so
1599 that rules never reduced are computed.
1600 Call grammar_rules_never_reduced_report.
1601 * src/print.c (print_results): Report rules never reduced.
1602 * tests/conflicts.at, tests/reduce.at: Adjust.
1603
cd08e51e
AD
16042002-08-01 Akim Demaille <akim@epita.fr>
1605
1606 Instead of attaching lookaheads and duplicating the rules being
1607 reduced by a state, attach the lookaheads to the reductions.
1608
1609 * src/state.h (state_t): Remove the `lookaheads',
1610 `lookaheads_rule' member.
1611 (reductions_t): Add a `lookaheads' member.
1612 Use a regular array for the `rules'.
1613 * src/state.c (reductions_new): Initialize the lookaheads member
1614 to 0.
1615 (state_rule_lookaheads_print): Adjust.
1616 * src/state.h, src/state.c (state_reductions_find): New.
1617 * src/conflicts.c (resolve_sr_conflict, set_conflicts)
1618 (count_rr_conflicts): Adjust.
1619 * src/lalr.c (LArule): Remove.
1620 (add_lookback_edge): Adjust.
1621 (state_lookaheads_count): New.
1622 (states_lookaheads_initialize): Merge into...
1623 (initialize_LA): this.
1624 (lalr_free): Adjust.
1625 * src/main.c (main): Don't free nullable and derives too early: it
1626 is used by --verbose.
1627 * src/print.c, src/print_graph.c, src/tables.c: Adjust.
1628
bb0027a9
AD
16292002-08-01 Akim Demaille <akim@epita.fr>
1630
1631 * src/derives.h, src/derives.c (derives): A `rule_t***' instead of
1632 `rule_number_t**'.
1633 (set_derives, free_derives): Rename as...
1634 (derives_compute, derives_free): this.
1635 Adjust all dependencies.
1636 * src/nullable.c (set_nullable, free_nullable): Rename as...
1637 (nullable_compute, nullable_free): these.
1638 (rule_list_t): Store rule_t *, not rule_number_t.
1639 * src/state.c (state_rule_lookaheads_print): Directly compare rule
1640 pointers, instead of their numbers.
1641 * src/main.c (main): Call nullable_free, and derives_free earlier,
1642 as they were lo longer used.
1643
3325ddc4
AD
16442002-08-01 Akim Demaille <akim@epita.fr>
1645
1646 * lib/timevar.c (get_time): Include children time.
1647 * src/lalr.h (LA, LArule): Don't export them: used with the
1648 state_t.
1649 * src/lalr.c (LA, LArule): Static.
1650 * src/lalr.h, src/lalr.c (lalr_free): New.
1651 * src/main.c (main): Call it.
1652 * src/tables.c (pack_vector): Check whether loc is >= to the
1653 table_size, not >.
1654 (pack_tables): Don't free froms, tos, conflict_tos, and pos...
1655 (tables_generate): do it, since that's also it which allocates
1656 them.
1657 Don't free LA and LArule, main does.
1658
c6f1a33c
AD
16592002-07-31 Akim Demaille <akim@epita.fr>
1660
1661 Separate parser tables computation and output.
1662
1663 * src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
1664 (conflict_list, conflict_list_cnt, table, check, table_ninf)
1665 (yydefgoto, yydefact, high): Move to...
1666 * src/tables.h, src/tables.c: here.
1667 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
1668 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
1669 (symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
1670 (froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
1671 (ACTION_MIN, actrow, order, nentries, pos, conflrow)
1672 (conflict_list_free, table_size, lowzero, table_grow, conflict_row)
1673 (action_row, save_row, token_actions, save_column, default_goto)
1674 (goto_actions, sort_actions, matching_state, pack_vector)
1675 (table_ninf_remap, pack_table, prepare_actions): Move to...
1676 * src/tables.c: here.
1677 * src/tables.h, src/tables.c(tables_generate, tables_free): New.
1678 * src/output.c (token_actions, output_base, output_conflicts)
1679 (output_check): Merge into...
1680 (prepare_actions): this.
1681 (actions_output): Rename as...
1682 (user_actions_output): this.
1683 * src/main.c (main): Call tables_generate and tables_free.
1684
1509d42f
AD
16852002-07-31 Akim Demaille <akim@epita.fr>
1686
1687 Steal GCC's --time-report support.
1688
1689 * lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
1690 stolen/adjusted from GCC.
1691 * m4/stage.m4: Remove time related checks.
1692 * m4/timevar.m4: New.
1693 * configure.in: Adjust.
1694 * src/system.h: Adjust to using timevar.h.
1695 * src/getargs.h, src/getargs.c: Support trace_time for
1696 --trace=time.
1697 * src/main.c (stage): Remove.
1698 (main): Replace `stage' invocations with timevar calls.
1699 * src/output.c: Insert pertinent timevar calls.
1700
273a74fa
AD
17012002-07-31 Akim Demaille <akim@epita.fr>
1702
1703 Let --trace have arguments.
1704
1705 * src/getargs.h (enum trace_e): New.
1706 * src/getargs.c (trace_args, trace_types, trace_argmatch): New.
1707 (long_options, short_options): --trace/-T takes an optional
1708 argument.
1709 Change all the uses of trace_flag to reflect the new flags.
1710 * tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.
1711
1712 Strengthen `stage' portability.
1713
1714 * m4/stage.m4 (BISON_PREREQ_STAGE): New.
1715 * configure.in: Use it.
1716 Don't check for malloc.h and sys/times.h.
1717 * src/system.h: Include them when appropriate.
1718 * src/main.c (stage): Compile only when mallinfo, struct mallinfo,
1719 times and struct tms are available.
1720
217598da
AD
17212002-07-30 Akim Demaille <akim@epita.fr>
1722
1723 In verbose parse error message, don't report `error' as an
1724 expected token.
1725 * tests/actions.at (Printers and Destructors): Adjust.
1726 * tests/calc.at (Calculator $1): Adjust.
1727 * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
1728 error message, do not report the parser accepts the error token in
1729 that state.
1730
52489d44
AD
17312002-07-30 Akim Demaille <akim@epita.fr>
1732
1733 Normalize conflict related messages.
1734
1735 * src/complain.h, src/complain.c (warn, complain): New.
1736 * src/conflicts.c (conflicts_print): Use them.
1737 (conflict_report_yacc): New, extracted from...
1738 (conflicts_print): here.
1739 * tests/conflicts.at, tests/existing.at: Adjust.
1740
e8832397
AD
17412002-07-30 Akim Demaille <akim@epita.fr>
1742
1743 Report rules which are never reduced by the parser: those hidden
1744 by conflicts.
1745
1746 * src/LR0.c (save_reductions): Don't make the final state too
1747 different: save its reduction (accept) instead of having a state
1748 without any action (no shift or goto, no reduce).
1749 Note: the final state is now a ``regular'' state, i.e., the
1750 parsers now contain `reduce 0' as default reduction.
1751 Nevertheless, since they decide to `accept' when yystate =
1752 final_state, they still will not reduce rule 0.
1753 * src/print.c (print_actions, print_reduction): Adjust.
1754 * src/output.c (action_row): Track reduced rules.
1755 (token_actions): Report rules never reduced.
1756 * tests/conflicts.at, tests/regression.at: Adjust.
1757
caf23d24
AD
17582002-07-30 Akim Demaille <akim@epita.fr>
1759
1760 `stage' was accidently included in a previous patch.
1761 Initiate its autoconfiscation.
1762
1763 * configure.in: Look for malloc.h and sys/times.h.
1764 * src/main.c (stage): Adjust.
1765 Report only when trace_flag.
1766
640748ee
AD
17672002-07-29 Akim Demaille <akim@epita.fr>
1768
1769 * src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
1770 state_number_t.
1771 (errs_t): symbol_t*, not symbol_number_t.
1772 (reductions_t): rule_t*, not rule_number_t.
1773 (FOR_EACH_SHIFT): New.
1774 * src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
1775 * src/print.c, src/print_graph.c: Adjust.
1776
88bce5a2
AD
17772002-07-29 Akim Demaille <akim@epita.fr>
1778
1779 Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.
1780
1781 * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
1782 (endtoken, accept): these.
1783 * src/reader.c (reader): Set endtoken's default tag to "$end".
1784 Set undeftoken's tag to "$undefined" instead of "$undefined.".
1785 * doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
1786 Adjust.
1787
1bfb97db
AD
17882002-07-29 Akim Demaille <akim@epita.fr>
1789
1790 * src/reduce.c (reduce_grammar): When the language is empty,
1791 complain about the start symbol, not the axiom.
1792 Use its location.
1793 * tests/reduce.at (Empty Language): New.
1794
fc5734fe
AD
17952002-07-26 Akim Demaille <akim@epita.fr>
1796
1797 * src/reader.h, src/reader.c (gram_error): ... can't get
1798 yycontrol without making too strong assumptions on the parser
1799 itself.
1800 * src/output.c (prepare_tokens): Use the real 0th value of
1801 token_translations instead of `0'.
1802 * src/parse-gram.y (yyerror): Don't rely on yycontrol being
1803 visible here.
1804 * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
1805 for the time being: %locations ought to provide it to yyerror.
1806
3650b4b8
AD
18072002-07-25 Akim Demaille <akim@epita.fr>
1808
1809 * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
1810 * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
1811 * tests/regression.at (Web2c Actions): Adjust.
1812
4b3d3a8e
AD
18132002-07-25 Akim Demaille <akim@epita.fr>
1814
1815 Stop storing rules from 1 to nrules + 1.
1816
1817 * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
1818 * src/nullable.c, src/output.c, src/print.c, src/reader.c
1819 * src/reduce.c: Allocate and free from &rules[0], not &rules[1].
1820 Iterate from 0 to nrules.
1821 Use rule_number_as_item_number and item_number_as_rule_number.
1822 Adjust to `derive' now containing possibly 0.
1823 * src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
1824 Handle the `- 1' part in rule numbers from/to item numbers.
1825 * src/conflicts.c (log_resolution): Fix the message which reversed
1826 shift and reduce.
1827 * src/output.c (action_row): Initialize default_rule to -1.
1828 (token_actions): Adjust.
1829 * tests/sets.at (Nullable, Firsts): Fix the previously bogus
1830 expected output.
1831 * tests/conflicts.at (Resolved SR Conflicts): Likewise.
1832
4a2a22f4
AD
18332002-07-25 Akim Demaille <akim@epita.fr>
1834
1835 * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
1836 (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
1837 (b4_c_knr_arg_decl): New.
1838 * data/yacc.c: Use it to define yysymprint, yydestruct, and
1839 yyreport_parse_error.
1840
b8df3223
AD
18412002-07-25 Akim Demaille <akim@epita.fr>
1842
1843 * data/yacc.c (yyreport_parse_error): New, extracted from...
1844 (yyparse): here.
1845 (yydestruct, yysymprint): Move above yyparse.
1846 Be K&R compliant.
1847
a762e609
AD
18482002-07-25 Akim Demaille <akim@epita.fr>
1849
1850 * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
1851 replace...
1852 (b4_sint_type, b4_uint_type): these.
1853 * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
1854 * tests/regression.at (Web2c Actions): Adjust.
1855
12b0043a
AD
18562002-07-25 Akim Demaille <akim@epita.fr>
1857
1858 * src/gram.h (TIEM_NUMBER_MAX): New.
1859 (item_number_of_rule_number, rule_number_of_item_number): Rename
1860 as...
1861 (rule_number_as_item_number, item_number_as_rule_number): these.
1862 Adjust dependencies.
1863 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
1864 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
1865 (symbol_number_to_vector_number): New.
1866 (order): Of vector_number_t* type.
1867 (base_t, BASE_MAX, BASE_MIN): New.
1868 (froms, tos, width, pos, check): Of base_t type.
1869 (action_number_t, ACTION_MIN, ACTION_MAX): New.
1870 (actrow): Of action_number_t type.
1871 (conflrow): Of unsigned int type.
1872 (table_ninf, base_ninf): New.
1873 (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
1874 (muscle_insert_int_table, muscle_insert_base_table)
1875 (muscle_insert_rule_number_table): New.
1876 (prepare_tokens): Output `toknum' as int_table.
1877 (action_row): Returns a rule_number_t.
1878 Use ACTION_MIN, not SHRT_MIN.
1879 (token_actions): yydefact is rule_number_t*.
1880 (table_ninf_remap): New.
1881 (pack_table): Use it for `base' and `table'.
1882 * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
1883 replaced with...
1884 (YYPACT_NINF, YYTABLE_NINF): these.
1885 (yypact, yytable): Compute their types instead of hard-coded
1886 `short'.
1887 * tests/regression.at (Web2c Actions): Adjust.
1888
5dde258a
AD
18892002-07-19 Akim Demaille <akim@epita.fr>
1890
1891 * src/scan-gram.l (id): Can start with an underscore.
1892
a945ec39
AD
18932002-07-16 Akim Demaille <akim@epita.fr>
1894
1895 * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
1896 Adjust all former `associativity' dependencies.
1897 * src/symtab.c (symbol_new): Default associativity is `undef', not
1898 `right'.
1899 (symbol_check_alias_consistence): Adjust.
1900
fae437e8
AD
19012002-07-09 Akim Demaille <akim@epita.fr>
1902
1903 * doc/bison.texinfo: Properly set the ``header'' part.
1904 Use @dircategory ``GNU programming tools'' as per Texinfo's
1905 documentation.
1906 Use @copying.
1907
1a715ef2
AD
19082002-07-09 Akim Demaille <akim@epita.fr>
1909
1910 * lib/quotearg.h: Protect against multiple inclusions.
1911 * src/location.h (location_t): Add a `file' member.
1912 (LOCATION_RESET, LOCATION_PRINT): Adjust.
1913 * src/complain.c (warn_at, complain_at, fatal_at): Drop
1914 `error_one_per_line' support.
1915
a5d50994
AD
19162002-07-09 Akim Demaille <akim@epita.fr>
1917
1918 * src/complain.h, src/complain.c (warn, complain): Remove, unused.
1919 * src/reader.c (lineno): Remove.
1920 Adjust all dependencies.
1921 (get_merge_function): Take a location and use complain_at.
1922 * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
1923 * tests/regression.at (Invalid inputs, Mixing %token styles):
1924 Adjust.
1925
b275314e
AD
19262002-07-09 Akim Demaille <akim@epita.fr>
1927
1928 * src/parse-gram.y (rules_or_grammar_declaration): Add an error
1929 recovery rule, and forbid extensions when --yacc.
1930 (gram_error): Use complain_at.
1931 * src/reader.c (reader): Exit if there were parse errors.
1932
865b9df1
AD
19332002-07-09 Akim Demaille <akim@epita.fr>
1934
1935 * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
1936 (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
1937 Reported by R Blake <blakers@mac.com>.
1938
c76e14da
AD
19392002-07-09 Akim Demaille <akim@epita.fr>
1940
1941 * data/yacc.c: Output the copyright notive in the header.
1942
7db2ed2d
AD
19432002-07-03 Akim Demaille <akim@epita.fr>
1944
1945 * src/output.c (froms, tos): Are state_number_t.
1946 (save_column): sp, sp1, and sp2 are state_number_t.
1947 (prepare): Rename `final' as `final_state_number', `nnts' as
1948 `nterms_number', `nrules' as `rules_number', `nstates' as
1949 `states_number', and `ntokens' as `tokens_number'. Remove `nsym',
1950 unused.
1951 * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
1952 * data/lalr1.cc (nsym_): Remove, unused.
1953
e68e0410
AD
19542002-07-03 Akim Demaille <akim@epita.fr>
1955
1956 * src/lalr.h, src/lalr.c (goto_number_t): New.
1957 * src/lalr.c (goto_list_t): New.
1958 Propagate them.
1959 * src/nullable.c (rule_list_t): New.
1960 Propagate.
1961 * src/types.h: Remove.
1962
e1a4f3a4
AD
19632002-07-03 Akim Demaille <akim@epita.fr>
1964
1965 * src/closure.c (print_fderives): Use rule_rhs_print.
1966 * src/derives.c (print_derives): Use rule_rhs_print.
1967 (rule_list_t): New, replaces `shorts'.
1968 (set_derives): Add comments.
1969 * tests/sets.at (Nullable, Firsts): Adjust.
1970
536545f3
AD
19712002-07-03 Akim Demaille <akim@epita.fr>
1972
1973 * src/output.c (prepare_actions): Free `tally' and `width'.
1974 (prepare_actions): Allocate and free `order'.
1975 * src/symtab.c (symbols_free): Free `symbols'.
1976 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
1977 * src/output.c (m4_invoke): Move to...
1978 * src/scan-skel.l: here.
1979 (<<EOF>>): Close yyout, and free its name.
1980
8b752b00
AD
19812002-07-03 Akim Demaille <akim@epita.fr>
1982
1983 Fix some memory leaks, and fix a bug: state 0 was examined twice.
1984
1985 * src/LR0.c (new_state): Merge into...
1986 (state_list_append): this.
1987 (new_states): Merge into...
1988 (generate_states): here.
1989 (set_states): Don't ensure a proper `errs' state member here, do it...
1990 * src/conflicts.c (conflicts_solve): here.
1991 * src/state.h, src/state.c: Comment changes.
1992 (state_t): Rename member `shifts' as `transitions'.
1993 Adjust all dependencies.
1994 (errs_new): For consistency, also take the values as argument.
1995 (errs_dup): Remove.
1996 (state_errs_set): New.
1997 (state_reductions_set, state_transitions_set): Assert that no
1998 previous value was assigned.
1999 (state_free): New.
2000 (states_free): Use it.
2001 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
2002 temporary storage: use `errs' and `nerrs' as elsewhere.
2003 (set_conflicts): Allocate and free this `errs'.
2004
613f5e1a
AD
20052002-07-02 Akim Demaille <akim@epita.fr>
2006
2007 * lib/libiberty.h: New.
2008 * lib: Update the bitset implementation from upstream.
2009 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
2010 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
2011 * src/main.c: Adjust bitset stats calls.
2012
26e0cadc
PE
20132002-07-01 Paul Eggert <eggert@twinsun.com>
2014
2015 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
2016 char, so that negative chars don't collide with $.
2017
1154cced
AD
20182002-06-30 Akim Demaille <akim@epita.fr>
2019
2020 Have the GLR tests be `warning' checked, and fix the warnings.
2021
2022 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
2023 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
2024 (yyremoveDeletes): `yyi' and `yyj' are size_t.
2025 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
2026 (yyaddDeferredAction): static.
2027 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
2028 (yyreportParseError): yyprefix is const.
2029 yytokenp is used only when verbose.
2030 (yy__GNUC__): Replace with __GNUC__.
2031 (yypdumpstack): yyi is size_t.
2032 (yypreference): Un-yy local variables and arguments, to avoid
2033 clashes with `yyr1'. Anyway, we are not in the user name space.
2034 (yytname_size): be an int, as is compared with ints.
2035 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
2036 Use them.
2037 * tests/cxx-gram.at: Use quotation to protect $1.
2038 Use AT_COMPILE to enable warnings hunts.
2039 Prototype yylex and yyerror.
2040 `Use' argc.
2041 Include `string.h', not `strings.h'.
2042 Produce and prototype stmtMerge only when used.
2043 yylex takes a location.
2044
97650f4e
AD
20452002-06-30 Akim Demaille <akim@epita.fr>
2046
2047 We spend a lot of time in quotearg, in particular when --verbose.
2048
2049 * src/symtab.c (symbol_get): Store a quoted version of the key.
2050 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
2051 Adjust all callers.
2052
d2576365
AD
20532002-06-30 Akim Demaille <akim@epita.fr>
2054
2055 * src/state.h (reductions_t): Rename member `nreds' as num.
2056 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
2057 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
2058
ccaf65bc
AD
20592002-06-30 Akim Demaille <akim@epita.fr>
2060
2061 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
2062 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
2063 (shifts_to): Rename as...
2064 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
2065 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
2066 (TRANSITION_IS_DISABLED, transitions_to): these.
2067
87675353
AD
20682002-06-30 Akim Demaille <akim@epita.fr>
2069
2070 * src/print.c (print_shifts, print_gotos): Merge into...
2071 (print_transitions): this.
2072 (print_transitions, print_errs, print_reductions): Align the
2073 lookaheads columns.
2074 (print_core, print_transitions, print_errs, print_state,
2075 print_grammar): Output empty lines separator before, not after.
2076 (state_default_rule_compute): Rename as...
2077 (state_default_rule): this.
2078 * tests/conflicts.at (Defaulted Conflicted Reduction),
2079 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
2080 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
2081
ce4ccb4b
AD
20822002-06-30 Akim Demaille <akim@epita.fr>
2083
2084 Display items as we display rules.
2085
2086 * src/gram.h, src/gram.c (rule_lhs_print): New.
2087 * src/gram.c (grammar_rules_partial_print): Use it.
2088 * src/print.c (print_core): Likewise.
2089 * tests/conflicts.at (Defaulted Conflicted Reduction),
2090 (Unresolved SR Conflicts): Adjust.
2091 (Unresolved SR Conflicts): Adjust and rename as...
2092 (Resolved SR Conflicts): this, as was meant.
2093 * tests/regression.at (Web2c Report): Adjust.
2094
bc933ef1
AD
20952002-06-30 Akim Demaille <akim@epita.fr>
2096
2097 * src/print.c (state_default_rule_compute): New, extracted from...
2098 (print_reductions): here.
2099 Pessimize, but clarify the code.
2100 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
2101
53d4308d
AD
21022002-06-30 Akim Demaille <akim@epita.fr>
2103
2104 * src/output.c (action_row): Let default_rule be always a rule
2105 number.
2106
574fb2d5
AD
21072002-06-30 Akim Demaille <akim@epita.fr>
2108
2109 * src/closure.c (print_firsts, print_fderives, closure):
2110 Use BITSET_EXECUTE.
2111 * src/lalr.c (lookaheads_print): Likewise.
2112 * src/state.c (state_rule_lookaheads_print): Likewise.
2113 * src/print_graph.c (print_core): Likewise.
2114 * src/print.c (print_reductions): Likewise.
2115 * src/output.c (action_row): Likewise.
2116 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
2117
05811fd7
AD
21182002-06-30 Akim Demaille <akim@epita.fr>
2119
2120 * src/print_graph.c: Use report_flag.
2121
0e4d5753
AD
21222002-06-30 Akim Demaille <akim@epita.fr>
2123
2124 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
2125 to...
2126 * src/relation.h, src/relation.c (traverse, relation_digraph)
2127 (relation_print, relation_transpose): New.
2128
24c7d800
AD
21292002-06-30 Akim Demaille <akim@epita.fr>
2130
2131 * src/state.h, src/state.c (shifts_to): New.
2132 * src/lalr.c (build_relations): Use it.
2133
9222837b
AD
21342002-06-30 Akim Demaille <akim@epita.fr>
2135
2136 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
2137 (item_number_of_rule_number, rule_number_of_item_number): New.
2138 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
2139 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
2140 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
2141 Propagate their use.
2142 Much remains to be done, in particular wrt `shorts' from types.h.
2143
260008e5
AD
21442002-06-30 Akim Demaille <akim@epita.fr>
2145
2146 * src/symtab.c (symbol_new): Initialize the `printer' member.
2147
8a731ca8
AD
21482002-06-30 Akim Demaille <akim@epita.fr>
2149
2150 * src/LR0.c (save_reductions): Remove, replaced by...
2151 * src/state.h, src/state.c (state_reductions_set): New.
2152 (reductions, errs): Rename as...
2153 (reductions_t, errs_t): these.
2154 Adjust all dependencies.
2155
32e1e0a4
AD
21562002-06-30 Akim Demaille <akim@epita.fr>
2157
2158 * src/LR0.c (state_list_t, state_list_append): New.
2159 (first_state, last_state): Now symbol_list_t.
2160 (this_state): Remove.
2161 (new_itemsets, append_states, save_reductions): Take a state_t as
2162 argument.
2163 (set_states, generate_states): Adjust.
2164 (save_shifts): Remove, replaced by...
2165 * src/state.h, src/state.c (state_shifts_set): New.
2166 (shifts): Rename as...
2167 (shifts_t): this.
2168 Adjust all dependencies.
2169 * src/state.h (state_t): Remove the `next' member.
2170
e5fb6710
AD
21712002-06-30 Akim Demaille <akim@epita.fr>
2172
2173 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
2174 escaped in slot 0.
2175
c7ca99d4
AD
21762002-06-30 Akim Demaille <akim@epita.fr>
2177
2178 Use hash.h for the state hash table.
2179
2180 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
2181 (allocate_storage): Use state_hash_new.
2182 (free_storage): Use state_hash_free.
2183 (new_state, get_state): Adjust.
2184 * src/lalr.h, src/lalr.c (states): Move to...
2185 * src/states.h (state_t): Remove the `link' member, no longer
2186 used.
2187 * src/states.h, src/states.c: here.
2188 (state_hash_new, state_hash_free, state_hash_lookup)
2189 (state_hash_insert, states_free): New.
2190 * src/states.c (state_table, state_compare, state_hash): New.
2191 * src/output.c (output_actions): Do not free states now, since we
2192 still need to know the final_state number in `prepare', called
2193 afterwards. Do it...
2194 * src/main.c (main): here: call states_free after `output'.
2195
df0e7316
AD
21962002-06-30 Akim Demaille <akim@epita.fr>
2197
2198 * src/state.h, src/state.c (state_new): New, extracted from...
2199 * src/LR0.c (new_state): here.
2200 * src/state.h (STATE_ALLOC): Move to...
2201 * src/state.c: here.
2202 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
2203 * src/state.h, src/state.c: here.
2204
39f41916
AD
22052002-06-30 Akim Demaille <akim@epita.fr>
2206
2207 * src/reader.c (gensym): Rename as...
2208 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
2209 (getsym): Rename as...
2210 (symbol_get): this.
2211
d57650a5
AD
22122002-06-30 Akim Demaille <akim@epita.fr>
2213
2214 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
2215 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
2216 * src/output.c, src/print.c, src/print_graph.c: Propagate.
2217 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
2218
5a08f1ce
AD
22192002-06-30 Akim Demaille <akim@epita.fr>
2220
2221 Make the test suite pass with warnings checked.
2222
2223 * tests/actions.at (Printers and Destructors): Improve.
2224 Avoid unsigned vs. signed issues.
2225 * tests/calc.at: Don't exercise the scanner here, do it...
2226 * tests/input.at (Torturing the Scanner): here.
2227
720623af
PH
22282002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2229
88e7e941 2230 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
720623af
PH
2231 reorganize first lines parallel to yacc.c.
2232
fb8135fa
AD
22332002-06-28 Akim Demaille <akim@epita.fr>
2234
2235 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
2236 (b4_token_enum, b4_token_defines): New, factored from...
2237 * data/lalr1.cc, data/yacc.c, glr.c: here.
2238
41442480
AD
22392002-06-28 Akim Demaille <akim@epita.fr>
2240
2241 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
2242 unused variables.
2243 * src/output.c (merger_output): static.
2244
e0e5bf84
AD
22452002-06-28 Akim Demaille <akim@epita.fr>
2246
2247 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
2248 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
2249 pacify GCC.
2250 * src/output.c (save_row): Initialize all the variables to pacify GCC.
e0e5bf84 2251
676385e2
PH
22522002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2253
2254 Accumulated changelog for new GLR parsing features.
2255
6a254321 2256 * src/conflicts.c (count_total_conflicts): Change name to
676385e2
PH
2257 conflicts_total_count.
2258 * src/conflicts.h: Ditto.
2259 * src/output.c (token_actions): Use the new name.
2260 (output_conflicts): Change conflp => conflict_list_heads, and
2261 confl => conflict_list for better readability.
2262 * data/glr.c: Use the new names.
2263 * NEWS: Add self to GLR announcement.
e0e5bf84 2264
676385e2
PH
2265 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
2266
2267 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
2268 Akim Demaille.
2269
2270 * data/bison.glr: Change name to glr.c
2271 * data/glr.c: Renamed from bison.glr.
2272 * data/Makefile.am: Add glr.c
e0e5bf84
AD
2273
2274 * src/getargs.c:
2275
676385e2
PH
2276 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
2277 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
e0e5bf84 2278
676385e2
PH
2279 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2280
2281 * data/bison.glr: Be sure to restore the
2282 current #line when returning to the skeleton contents after having
2283 exposed the input file's #line.
2284
2285 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2286
2287 * data/bison.glr: Bring up to date with changes to bison.simple.
2288
2289 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2290
2291 * data/bison.glr: Correct definitions that use b4_prefix.
2292 Various reformatting.
2293 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
2294 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
2295 yytokenp argument; now part of stack.
2296 (yychar): Define to behave as documented.
2297 (yyclearin): Ditto.
e0e5bf84 2298
676385e2
PH
2299 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2300
2301 * src/reader.h: Add declaration for free_merger_functions.
2302
2303 * src/reader.c (merge_functions): New variable.
2304 (get_merge_function): New function.
2305 (free_merger_functions): New function.
2306 (readgram): Check for %prec that is not followed by a symbol.
2307 Handle %dprec and %merge declarations.
2308 (packgram): Initialize dprec and merger fields in rules array.
2309
2310 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
2311 conflict_list_cnt, conflict_list_free): New variables.
2312 (table_grow): Also grow conflict_table.
e0e5bf84 2313 (prepare_rules): Output dprec and merger tables.
676385e2 2314 (conflict_row): New function.
e0e5bf84 2315 (action_row): Output conflict lists for GLR parser. Don't use
676385e2
PH
2316 default reduction in conflicted states for GLR parser so that there
2317 are spaces for the conflict lists.
2318 (save_row): Also save conflict information.
2319 (token_actions): Allocate conflict list.
2320 (merger_output): New function.
2321 (pack_vector): Pack conflict table, too.
2322 (output_conflicts): New function to output yyconflp and yyconfl.
2323 (output_check): Allocate conflict_tos.
2324 (output_actions): Output conflict tables, also.
2325 (output_skeleton): Output b4_mergers definition.
2326 (prepare): Output b4_max_rhs_length definition.
2327 Use 'bison.glr' as default skeleton for GLR parsers.
2328
2329 * src/gram.c (glr_parser): New flag.
2330 (grammar_free): Call free_merger_functions.
2331
2332 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
2333 all pairs of conflicting reductions, rather than just all tokens
2334 causing conflicts. Needed to size conflict tables.
e0e5bf84 2335 (conflicts_output): Modify call to count_rr_conflicts for new
676385e2
PH
2336 interface.
2337 (conflicts_print): Ditto.
2338 (count_total_conflicts): New function.
2339
2340 * src/reader.h (merger_list): New type.
2341 (merge_functions): New variable.
2342
2343 * src/lex.h (tok_dprec, tok_merge): New token types.
2344
2345 * src/gram.h (rule_s): Add dprec and merger fields.
2346 (glr_parser): New flag.
2347
2348 * src/conflicts.h (count_total_conflicts): New function.
2349
2350 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
2351
2352 * doc/bison.texinfo (Generalized LR Parsing): New section.
2353 (GLR Parsers): New section.
2354 (Language and Grammar): Mention GLR parsing.
2355 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
2356 Correct typo ("tge" -> "the").
2357
2358 * data/bison.glr: New skeleton for GLR parsing.
2359
2360 * tests/cxx-gram.at: New tests for GLR parsing.
2361
2362 * tests/testsuite.at: Include cxx-gram.at.
2363
2364 * tests/Makefile.am: Add cxx-gram.at.
e0e5bf84 2365
676385e2
PH
2366 * src/parse-gram.y:
2367
2368 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
2369
2370 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
e0e5bf84 2371
b5480d74 23722002-06-27 Akim Demaille <akim@epita.fr>
e2aaf4c4
AD
2373
2374 * src/options.h, src/options.c: Remove.
2375 * src/getargs.c (short_options, long_options): New.
2376
60491a94
AD
23772002-06-27 Akim Demaille <akim@epita.fr>
2378
2379 * data/bison.simple, data/bison.c++: Rename as...
2380 * data/yacc.c, data/lalr1.cc: these.
2381 * doc/bison.texinfo (Environment Variables): Remove.
2382
9be0c25b
AD
23832002-06-25 Raja R Harinath <harinath@cs.umn.edu>
2384
2385 * src/getargs.c (report_argmatch): Initialize strtok().
2386
1ae72863
AD
23872002-06-20 Akim Demaille <akim@epita.fr>
2388
2389 * data/bison.simple (b4_symbol_actions): New, replaces...
2390 (b4_symbol_destructor, b4_symbol_printer): these.
2391 (yysymprint): Be sure to call YYPRINT only for tokens, and using
2392 user token numbers.
2393
87542d29
AD
23942002-06-20 Akim Demaille <akim@epita.fr>
2395
2396 * data/bison.simple (yydestructor): Rename as...
2397 (yydestruct): this.
2398
1a31ed21
AD
23992002-06-20 Akim Demaille <akim@epita.fr>
2400
2401 * src/symtab.h, src/symtab.c (symbol_type_set)
2402 (symbol_destructor_set, symbol_precedence_set): The location is
2403 the last argument.
2404 Adjust all callers.
2405
e776192e
AD
24062002-06-20 Akim Demaille <akim@epita.fr>
2407
2408 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
2409 internals.
2410 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
2411 Takes a location.
2412 * src/symtab.h, src/symtab.c (symbol_class_set)
2413 (symbol_user_token_number_set): Likewise.
2414 Adjust all callers.
2415 Promote complain_at.
2416 * tests/input.at (Type Clashes): Adjust.
2417
5c1180b3
AD
24182002-06-20 Akim Demaille <akim@epita.fr>
2419
2420 * data/bison.simple (YYLEX): Fix the declaration when
2421 %pure-parser.
2422
e3170060
AD
24232002-06-20 Akim Demaille <akim@epita.fr>
2424
2425 * data/bison.simple (yysymprint): Don't print the token number,
2426 just its name.
2427 * tests/actions.at (Destructors): Rename as...
2428 (Printers and Destructors): this.
2429 Also exercise %printer.
2430
253862fd
AD
24312002-06-20 Akim Demaille <akim@epita.fr>
2432
2433 * data/bison.simple (YYDSYMPRINT): New.
2434 Use it to remove many of the #if YYDEBUG/if (yydebug).
2435
366eea36
AD
24362002-06-20 Akim Demaille <akim@epita.fr>
2437
2438 * src/symtab.h, src/symtab.c (symbol_t): printer and
2439 printer_location are new members.
2440 (symbol_printer_set): New.
2441 * src/parse-gram.y (PERCENT_PRINTER): New token.
2442 Handle its associated rule.
2443 * src/scan-gram.l: Adjust.
2444 (handle_destructor_at, handle_destructor_dollar): Rename as...
2445 (handle_symbol_code_at, handle_symbol_code_dollar): these.
2446 * src/output.c (symbol_printers_output): New.
2447 (output_skeleton): Call it.
2448 * data/bison.simple (yysymprint): New. Cannot be named yyprint
2449 since there are already many grammar files with a user `yyprint'.
2450 Replace the calls to YYPRINT to calls to yysymprint.
2451 * tests/calc.at: Adjust.
2452 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
2453 taking advantage of parser very internal details (stack size!).
2454
4f25ebb0
AD
24552002-06-20 Akim Demaille <akim@epita.fr>
2456
2457 * src/scan-gram.l: Complete the scanner with the missing patterns
2458 to pacify Flex.
2459 Use `quote' and `symbol_tag_get' where appropriate.
2460
93b68a0e
AD
24612002-06-19 Akim Demaille <akim@epita.fr>
2462
2463 * tests/actions.at (Destructors): Augment to test locations.
2464 * data/bison.simple (yydestructor): Pass it the current location
2465 if locations are enabled.
2466 Prototype only when __STDC__ or C++.
2467 Change the argument names to move into the yy name space: there is
2468 user code here.
2469
58612f1d
AD
24702002-06-19 Akim Demaille <akim@epita.fr>
2471
74310291
AD
2472 * data/bison.simple (b4_pure_if): New.
2473 Use it instead of #ifdef YYPURE.
2474
24752002-06-19 Akim Demaille <akim@epita.fr>
2476
2477 * data/bison.simple (b4_location_if): New.
58612f1d
AD
2478 Use it instead of #ifdef YYLSP_NEEDED.
2479
f25bfb75
AD
24802002-06-19 Akim Demaille <akim@epita.fr>
2481
2482 Prepare @$ in %destructor, but currently don't bind it in the
2483 skeleton, as %location use is not cleaned up yet.
2484
2485 * src/scan-gram.l (handle_dollar, handle_destructor_at)
2486 (handle_action_at): New.
2487 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
2488 a braced_code_t and a location as additional arguments.
2489 (handle_destructor_dollar): Instead of requiring `b4_eval', just
2490 unquote one when outputting `b4_dollar_dollar'.
2491 Adjust callers.
2492 * data/bison.simple (b4_eval): Remove.
2493 (b4_symbol_destructor): Adjust.
2494 * tests/input.at (Invalid @n): Adjust.
2495
c732d2c6
AD
24962002-06-19 Zack Weinberg <zack@codesourcery.com>
2497
2498 * doc/bison.texinfo: Document ability to have multiple
2499 prologue sections.
2500
8c165d89
AD
25012002-06-18 Akim Demaille <akim@epita.fr>
2502
2503 * src/files.c (compute_base_names): When computing the output file
2504 names from the input file name, strip the directory part.
2505
ca98bf57
AD
25062002-06-18 Akim Demaille <akim@epita.fr>
2507
2508 * data/bison.simple.new: Comment changes.
2509 Reported by Andreas Schwab.
2510
0bfb02ff
AD
25112002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
2512
2513 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
2514 there are no `label `yyoverflowlab' defined but not used' warnings
2515 when yyoverflow is defined.
2516
24c0aad7
AD
25172002-06-18 Akim Demaille <akim@epita.fr>
2518
2519 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
2520 new member.
2521 (symbol_destructor_set): Adjust.
2522 * src/output.c (symbol_destructors_output): Output the destructor
2523 locations.
2524 Output the symbol name.
2525 * data/bison.simple (b4_symbol_destructor): Adjust.
2526
5719c109
AD
25272002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
2528 and Akim Demaille <akim@epita.fr>
2529
2530 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
2531 what's left on the stack when the error recovery hits EOF.
2532 * tests/actions.at (Destructors): Complete to exercise this case.
2533
9280d3ef
AD
25342002-06-17 Akim Demaille <akim@epita.fr>
2535
2536 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
2537 arguments is really empty, not only equal to `[]'.
2538 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
2539 member.
2540 (symbol_destructor_set): New.
2541 * src/output.c (symbol_destructors_output): New.
2542 * src/reader.h (brace_code_t, current_braced_code): New.
2543 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
2544 (handle_dollar): Rename as...
2545 (handle_action_dollar): this.
2546 (handle_destructor_dollar): New.
2547 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
2548 (grammar_declaration): Use it.
2549 * data/bison.simple (yystos): Is always defined.
2550 (yydestructor): New.
2551 * tests/actions.at (Destructors): New.
2552 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
2553
dafdc66f
AD
25542002-06-17 Akim Demaille <akim@epita.fr>
2555
2556 * src/symlist.h, src/symlist.c (symbol_list_length): New.
2557 * src/scan-gram.l (handle_dollar, handle_at): Compute the
2558 rule_length only when needed.
2559 * src/output.c (actions_output, token_definitions_output): Output
2560 the full M4 block.
2561 * src/symtab.c: Don't access directly to the symbol tag, use
2562 symbol_tag_get.
2563 * src/parse-gram.y: Use symbol_list_free.
2564
56c47203
AD
25652002-06-17 Akim Demaille <akim@epita.fr>
2566
2567 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
2568 (symbol_list_prepend, get_type_name): Move to...
2569 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
2570 (symbol_list_prepend, symbol_list_n_type_name_get): here.
2571 Adjust all callers.
2572 (symbol_list_free): New.
2573 * src/scan-gram.l (handle_dollar): Takes a location.
2574 * tests/input.at (Invalid $n): Adjust.
2575
1e0bab92
AD
25762002-06-17 Akim Demaille <akim@epita.fr>
2577
2578 * src/reader.h, src/reader.c (symbol_list_new): Export it.
2579 (symbol_list_prepend): New.
2580 * src/parse-gram.y (%union): `list' is a new member.
2581 (symbols.1): New, replaces...
2582 (terms_to_prec.1, nterms_to_type.1): these.
2583 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
2584 Take a location as additional argument.
2585 Adjust all callers.
2586
04e60654
AD
25872002-06-15 Akim Demaille <akim@epita.fr>
2588
2589 * src/parse-gram.y: Move %token in the declaration section so that
2590 we don't depend upon CVS Bison.
2591
10e5b8bd
AD
25922002-06-15 Akim Demaille <akim@epita.fr>
2593
2594 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
2595 * src/print.c (print_core): Use it.
2596
9801d40c
AD
25972002-06-15 Akim Demaille <akim@epita.fr>
2598
2599 * src/conflicts.c (log_resolution): Accept the rule involved in
2600 the sr conflicts instead of the lookahead number that points to
2601 that rule.
2602 (flush_reduce): Accept the current lookahead vector as argument,
2603 instead of the index in LA.
2604 (resolve_sr_conflict): Accept the current number of lookahead
2605 bitset to consider for the STATE, instead of the index in LA.
2606 (set_conflicts): Adjust.
2607 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
2608
c0263492
AD
26092002-06-15 Akim Demaille <akim@epita.fr>
2610
2611 * src/state.h (state_t): Replace the `lookaheadsp' member, a
2612 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
2613 Adjust all dependencies.
2614 * src/lalr.c (initialize_lookaheads): Split into...
2615 (states_lookaheads_count, states_lookaheads_initialize): these.
2616 (lalr): Adjust.
2617
9757c359
AD
26182002-06-15 Akim Demaille <akim@epita.fr>
2619
2620 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
2621 out of...
2622 (grammar_rules_print): here.
2623 * src/reduce.c (reduce_output): Use it.
2624 * tests/reduce.at (Useless Rules, Reduced Automaton)
2625 (Underivable Rules): Adjust.
2626
6b98e4b5
AD
26272002-06-15 Akim Demaille <akim@epita.fr>
2628
2629 Copy BYacc's nice way to report the grammar.
2630
2631 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
2632 New.
2633 Don't print the rules' location, it is confusing and useless.
2634 (rule_print): Use grammar_rhs_print.
2635 * src/print.c (print_grammar): Use grammar_rules_print.
2636
6b98e4b5
AD
26372002-06-15 Akim Demaille <akim@epita.fr>
2638
2639 Complete and rationalize `useless thing' warnings.
2640
2641 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
2642 (symbol_tag_print): New.
2643 Use them everywhere in place of accessing directly the tag member.
2644 * src/gram.h, src/gram.c (rule_print): New.
2645 Use it where a rule used to be printed `by hand'.
2646 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
2647 (reduce_grammar_tables): Report the useless rules.
2648 (reduce_print): Useless things are a warning, not an error.
2649 Report it as such.
2650 * tests/reduce.at (Useless Nonterminals, Useless Rules):
2651 (Reduced Automaton, Underivable Rules): Adjust.
2652 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
2653 * tests/conflicts.at (Unresolved SR Conflicts)
2654 (Solved SR Conflicts): Adjust.
2655
ee000ba4
AD
26562002-06-15 Akim Demaille <akim@epita.fr>
2657
2658 Let symbols have a location.
2659
2660 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
2661 (getsym): Adjust.
2662 Adjust all callers.
2663 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
2664 Use location_t, not int.
2665 * src/symtab.c (symbol_check_defined): Take advantage of the
2666 location.
2667 * tests/regression.at (Invalid inputs): Adjust.
2668
8efe435c
AD
26692002-06-15 Akim Demaille <akim@epita.fr>
2670
2671 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
2672 (input): Don't try to initialize yylloc here, do it in the
2673 scanner.
2674 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
2675 * src/gram.h (rule_t): Change line and action_line into location
2676 and action_location, of location_t type.
2677 Adjust all dependencies.
2678 * src/location.h, src/location.c (empty_location): New.
2679 * src/reader.h, src/reader.c (grammar_start_symbol_set)
2680 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
2681 (grammar_current_rule_symbol_append)
2682 (grammar_current_rule_action_append): Expect a location as argument.
2683 * src/reader.c (grammar_midrule_action): Adjust to attach an
2684 action's location as dummy symbol location.
2685 * src/symtab.h, src/symtab.c (startsymbol_location): New.
2686 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
2687 the line numbers.
2688
1921f1d7
AD
26892002-06-14 Akim Demaille <akim@epita.fr>
2690
2691 Grammar declarations may be found in the grammar section.
2692
2693 * src/parse-gram.y (rules_or_grammar_declaration): New.
2694 (declarations): Each declaration may end with a semicolon, not
2695 just...
2696 (grammar_declaration): `"%union"'.
2697 (grammar): Branch to rules_or_grammar_declaration.
2698
4515534c
AD
26992002-06-14 Akim Demaille <akim@epita.fr>
2700
2701 * src/main.c (main): Invoke scanner_free.
2702
f958596b
AD
27032002-06-14 Akim Demaille <akim@epita.fr>
2704
2705 * src/output.c (m4_invoke): Extracted from...
2706 (output_skeleton): here.
2707 Free tempfile.
2708
2c569025
AD
27092002-06-14 Akim Demaille <akim@epita.fr>
2710
2711 * src/parse-gram.y (directives, directive, gram)
2712 (grammar_directives, precedence_directives, precedence_directive):
2713 Rename as...
2714 (declarations, declaration, grammar, grammar_declaration)
2715 (precedence_declaration, precedence_declarator): these.
2716 (symbol_declaration): New.
2717
592e8d4d
AD
27182002-06-14 Akim Demaille <akim@epita.fr>
2719
2720 * src/files.c (action_obstack): Remove, unused.
2721 (output_obstack): Remove it, and all its dependencies, as it is no
2722 longer needed.
2723 * src/reader.c (epilogue_set): Build the epilogue in the
2724 muscle_obstack.
2725 * src/output.h, src/output.c (muscle_obstack): Move to...
2726 * src/muscle_tab.h, src/muscle_tab.h: here.
2727 (muscle_init): Initialize muscle_obstack.
2728 (muscle_free): New.
2729 * src/main.c (main): Call it.
2730
0c15323d
AD
27312002-06-14 Akim Demaille <akim@epita.fr>
2732
2733 * src/location.h: New, extracted from...
2734 * src/reader.h: here.
2735 * src/Makefile.am (noinst_HEADERS): Merge into
2736 (bison_SOURCES): this.
2737 Add location.h.
2738 * src/parse-gram.y: Use location_t instead of Bison's.
2739 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
2740 Use location_t instead of ints.
2741
e96c9728
AD
27422002-06-14 Akim Demaille <akim@epita.fr>
2743
2744 * data/bison.simple, data/bison.c++: Be sure to restore the
2745 current #line when returning to the skeleton contents after having
2746 exposed the input file's #line.
2747
75d1fe16
AD
27482002-06-12 Akim Demaille <akim@epita.fr>
2749
2750 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
2751 eager.
2752 * tests/actions.at (Exotic Dollars): New.
2753
6c35d22c
AD
27542002-06-12 Akim Demaille <akim@epita.fr>
2755
2756 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
2757 ['"/] too eagerly.
2758 * tests/input.at (Torturing the Scanner): New.
2759
1d6412ad
AD
27602002-06-11 Akim Demaille <akim@epita.fr>
2761
2762 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
2763 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
2764 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
2765 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
2766 * src/reader.c (reader): Use it.
2767
4cdb01db
AD
27682002-06-11 Akim Demaille <akim@epita.fr>
2769
2770 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
2771 Adjust all callers.
2772 (scanner_last_string_free): New.
2773
44995b2e
AD
27742002-06-11 Akim Demaille <akim@epita.fr>
2775
2776 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
2777 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
2778 (last_string, YY_OBS_FREE): New.
2779 Use them when returning an ID.
2780
e9955c83
AD
27812002-06-11 Akim Demaille <akim@epita.fr>
2782
2783 Have Bison grammars parsed by a Bison grammar.
2784
2785 * src/reader.c, src/reader.h (prologue_augment): New.
2786 * src/reader.c (copy_definition): Remove.
2787
2788 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
2789 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
2790 (grammar_current_rule_prec_set, grammar_current_rule_check)
2791 (grammar_current_rule_symbol_append)
2792 (grammar_current_rule_action_append): Export.
2793 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
2794 (symbol_list_action_append): Remove.
2795 Hook the routines from reader.
2796 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
2797 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
2798
2799 * src/reader.c (read_declarations): Remove, unused.
2800
2801 * src/parse-gram.y: Handle the epilogue.
2802 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
2803 (grammar_start_symbol_set): this.
2804 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
2805 * src/reader.c (readgram): Remove, unused.
2806 (reader): Adjust to insert eoftoken and axiom where appropriate.
2807
2808 * src/reader.c (copy_dollar): Replace with...
2809 * src/scan-gram.h (handle_dollar): this.
2810 * src/parse-gram.y: Remove `%thong'.
2811
2812 * src/reader.c (copy_at): Replace with...
2813 * src/scan-gram.h (handle_at): this.
2814
2815 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
2816 New.
2817
2818 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
2819 time being.
2820
2821 * src/reader.h, src/reader.c (grammar_rule_end): New.
2822
2823 * src/parse.y (current_type, current_class): New.
2824 Implement `%nterm', `%token' support.
2825 Merge `%term' into `%token'.
2826 (string_as_id): New.
2827 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
2828 type name.
2829
2830 * src/parse-gram.y: Be sure to handle properly the beginning of
2831 rules.
2832
2833 * src/parse-gram.y: Handle %type.
2834 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
2835
2836 * src/parse-gram.y: More directives support.
2837 * src/options.c: No longer handle source directives.
2838
2839 * src/parse-gram.y: Fix %output.
2840
2841 * src/parse-gram.y: Handle %union.
2842 Use the prologue locations.
2843 * src/reader.c (parse_union_decl): Remove.
2844
2845 * src/reader.h, src/reader.c (epilogue_set): New.
2846 * src/parse-gram.y: Use it.
2847
2848 * data/bison.simple, data/bison.c++: b4_stype is now either not
2849 defined, then default to int, or to the contents of %union,
2850 without `union' itself.
2851 Adjust.
2852 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
2853
2854 * src/output.c (actions_output): Don't output braces, as they are
2855 already handled by the scanner.
2856
2857 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
2858 characters to themselves.
2859
2860 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
2861 that the epilogue has a proper #line.
2862
2863 * src/parse-gram.y: Handle precedence/associativity.
2864
2865 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
2866 a terminal.
2867 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
2868 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
2869 at all to define terminals that cannot be emitted.
2870
2871 * src/scan-gram.l: Escape M4 characters.
2872
2873 * src/scan-gram.l: Working properly with escapes in user
2874 strings/characters.
2875
2876 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
2877 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
2878 grammar.
2879 Use more modest sizes, as for the time being the parser does not
2880 release memory, and therefore the process swallows a huge amount
2881 of memory.
2882
2883 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
2884 stricter %token grammar.
2885
2886 * src/symtab.h (associativity): Add `undef_assoc'.
2887 (symbol_precedence_set): Do nothing when passed an undef_assoc.
2888 * src/symtab.c (symbol_check_alias_consistence): Adjust.
2889
2890 * tests/regression.at (Invalid %directive): Remove, as it is now
2891 meaningless.
2892 (Invalid inputs): Adjust to the new error messages.
2893 (Token definitions): The new grammar doesn't allow too many
2894 eccentricities.
2895
2896 * src/lex.h, src/lex.c: Remove.
2897 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
2898 (copy_character, copy_string2, copy_string, copy_identifier)
2899 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
2900 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
2901 (parse_action): Remove.
2902 * po/POTFILES.in: Adjust.
2903
2e047461
AD
29042002-06-11 Akim Demaille <akim@epita.fr>
2905
2906 * src/reader.c (parse_action): Don't store directly into the
2907 rule's action member: return the action as a string.
2908 Don't require `rule_length' as an argument: compute it.
2909 (grammar_current_rule_symbol_append)
2910 (grammar_current_rule_action_append): New, eved out from
2911 (readgram): here.
2912 Remove `action_flag', `rulelength', unused now.
2913
9af3fbce
AD
29142002-06-11 Akim Demaille <akim@epita.fr>
2915
2916 * src/reader.c (grammar_current_rule_prec_set).
2917 (grammar_current_rule_check): New, eved out from...
2918 (readgram): here.
2919 Remove `xaction', `first_rhs': useless.
2920 * tests/input.at (Type clashes): New.
2921 * tests/existing.at (GNU Cim Grammar): Adjust.
2922
1485e106
AD
29232002-06-11 Akim Demaille <akim@epita.fr>
2924
2925 * src/reader.c (grammar_midrule_action): New, Eved out from
2926 (readgram): here.
2927
da4160c3
AD
29282002-06-11 Akim Demaille <akim@epita.fr>
2929
2930 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
2931 New.
2932 (readgram): Use them as replacement of inlined code, crule and
2933 crule1.
2934
f6d0f937
AD
29352002-06-11 Akim Demaille <akim@epita.fr>
2936
2937 * src/reader.c (grammar_end, grammar_symbol_append): New.
2938 (readgram): Use them.
2939 Make the use of `p' as local as possible.
2940
69078d4b
AD
29412002-06-10 Akim Demaille <akim@epita.fr>
2942
2943 GCJ's parser requires the tokens to be defined before the prologue.
2944
2945 * data/bison.simple: Output the token definition before the user's
2946 prologue.
2947 * tests/regression.at (Braces parsing, Duplicate string)
2948 (Mixing %token styles): Check the output from bison.
2949 (Early token definitions): New.
2950
5e424082
AD
29512002-06-10 Akim Demaille <akim@epita.fr>
2952
2953 * src/symtab.c (symbol_user_token_number_set): Don't complain when
2954 assigning twice the same user number to a token, so that we can
2955 use it in...
2956 * src/lex.c (lex): here.
2957 Also use `symbol_class_set' instead of hand written code.
2958 * src/reader.c (parse_assoc_decl): Likewise.
2959
44536b35
AD
29602002-06-10 Akim Demaille <akim@epita.fr>
2961
2962 * src/symtab.c, src/symtab.c (symbol_class_set)
2963 (symbol_user_token_number_set): New.
2964 * src/reader.c (parse_token_decl): Use them.
2965 Use a switch instead of ifs.
2966 Use a single argument.
2967
8b9f2372
AD
29682002-06-10 Akim Demaille <akim@epita.fr>
2969
2970 Remove `%thong' support as it is undocumented, unused, duplicates
2971 `%token's job, and creates useless e-mail traffic with people who
2972 want to know what it is, why it is undocumented, unused, and
2973 duplicates `%token's job.
2974
2975 * src/reader.c (parse_thong_decl): Remove.
2976 * src/options.c (option_table): Remove "thong".
2977 * src/lex.h (tok_thong): Remove.
2978
3ae2b51f
AD
29792002-06-10 Akim Demaille <akim@epita.fr>
2980
2981 * src/symtab.c, src/symtab.c (symbol_type_set)
2982 (symbol_precedence_set): New.
2983 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
2984 (value_components_used): Remove, unused.
2985
2f1afb73
AD
29862002-06-09 Akim Demaille <akim@epita.fr>
2987
2988 Move symbols handling code out of the reader.
2989
2990 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
2991 (axiom): Move to...
2992 * src/symtab.h, src/symtab.c: here.
2993
2994 * src/gram.c (start_symbol): Remove: use startsymbol->number.
2995 * src/reader.c (startval): Rename as...
2996 * src/symtab.h, src/symtab.c (startsymbol): this.
2997 * src/reader.c: Adjust.
2998
2999 * src/reader.c (symbol_check_defined, symbol_make_alias)
3000 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
3001 (token_translations_init)
3002 Move to...
3003 * src/symtab.c: here.
3004 * src/reader.c (packsymbols): Move to...
3005 * src/symtab.h, src/symtab.c (symbols_pack): here.
3006 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
3007 argument.
3008
e9bca3ad
AD
30092002-06-03 Akim Demaille <akim@epita.fr>
3010
3011 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
3012 then statements.
3013
86eff183
AD
30142002-06-03 Akim Demaille <akim@epita.fr>
3015
3016 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
3017 structs with non literals.
3018 * src/scan-skel.l: never-interactive.
3019 * src/conflicts.c (enum conflict_resolution_e): No trailing
3020 comma.
3021 * src/getargs.c (usage): Split long literal strings.
3022 Reported by Hans Aberg.
3023
717be197
AD
30242002-05-28 Akim Demaille <akim@epita.fr>
3025
3026 * data/bison.c++: Use C++ ostreams.
3027 (cdebug_): New member.
3028
670ddffd
AD
30292002-05-28 Akim Demaille <akim@epita.fr>
3030
3031 * src/output.c (output_skeleton): Be sure to allocate enough room
3032 for `/' _and_ for `\0' in full_skeleton.
3033
769b430f
AD
30342002-05-28 Akim Demaille <akim@epita.fr>
3035
3036 * data/bison.c++: Catch up with bison.simple:
3037 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3038 and Paul Eggert <eggert@twinsun.com>: `error' handing.
3039 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
3040 and popping traces.
3041
7067cb36
PH
30422002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3043
3044 * src/output.c (output_skeleton): Put an explicit path in front of
3045 the skeleton file name, rather than relying on the -I directory,
3046 to partially alleviate effects of having a skeleton file lying around
3047 in the current directory.
769b430f 3048
4a713ec2
PH
30492002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3050
769b430f 3051 * src/conflicts.c (log_resolution): Correct typo:
4a713ec2
PH
3052 obstack_printf should be obstack_fgrow1.
3053
b408954b
AD
30542002-05-26 Akim Demaille <akim@epita.fr>
3055
3056 * src/state.h (state_t): `solved_conflicts' is a new member.
3057 * src/LR0.c (new_state): Set it to 0.
3058 * src/conflicts.h, src/conflicts.c (print_conflicts)
3059 (free_conflicts, solve_conflicts): Rename as...
3060 (conflicts_print, conflicts_free, conflicts_solve): these.
3061 Adjust callers.
3062 * src/conflicts.c (enum conflict_resolution_e)
3063 (solved_conflicts_obstack): New, used by...
3064 (log_resolution): this.
3065 Adjust to attach the conflict resolution to each state.
3066 Complete the description with the precedence/associativity
3067 information.
3068 (resolve_sr_conflict): Adjust.
3069 * src/print.c (print_state): Output its solved_conflicts.
3070 * tests/conflicts.at (Unresolved SR Conflicts)
3071 (Solved SR Conflicts): Exercise --report=all.
3072
a49aecd5
AD
30732002-05-26 Akim Demaille <akim@epita.fr>
3074
3075 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
3076 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
3077 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
3078 (token_number_t, item_number_as_token_number)
3079 (token_number_as_item_number, muscle_insert_token_number_table):
3080 Rename as...
3081 (symbol_number_t, item_number_as_symbol_number)
3082 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
3083 these, since it is more appropriate.
3084
5504898e
AD
30852002-05-26 Akim Demaille <akim@epita.fr>
3086
3087 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
3088 `Error:' lines.
3089 * data/bison.simple (yystos) [YYDEBUG]: New.
3090 (yyparse) [YYDEBUG]: Display the symbols which are popped during
3091 error recovery.
3092 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
3093
ec3bc396
AD
30942002-05-25 Akim Demaille <akim@epita.fr>
3095
3096 * doc/bison.texinfo (Debugging): Split into...
3097 (Tracing): this new section, its former contents, and...
3098 (Understanding): this new section.
3099 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
3100 by...
3101 (report_flag): this.
3102 Adjust all dependencies.
3103 (report_args, report_types, report_argmatch): New.
3104 (usage, getargs): Report/support -r, --report.
3105 * src/options.h
3106 (struct option_table_struct): Rename as..,
3107 (struct option_table_s): this.
3108 Rename the `set_flag' member to `flag' to match with getopt_long's
3109 struct.
3110 * src/options.c (option_table): Split verbose into an entry for
3111 %verbose, and another for --verbose.
3112 Support --report/-r, so remove -r from the obsolete --raw.
3113 * src/print.c: Attach full item sets and lookaheads reports to
3114 report_flag instead of trace_flag.
3115 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
3116
78df8250
PE
31172002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3118 and Paul Eggert <eggert@twinsun.com>
769b430f 3119
78df8250
PE
3120 * data/bison.simple (yyparse): Correct error handling to conform to
3121 POSIX and yacc. Specifically, after syntax error is discovered,
3122 do not reduce further before shifting the error token.
3123 Clean up the code a bit by removing the labels yyerrdefault,
3124 yyerrhandle, yyerrpop.
3125 * NEWS: Document the above.
3126
c0c9ea05
PH
31272002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3128
3129 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
3130 type; it isn't always big enough, since it doesn't necessarily
3131 include non-terminals.
769b430f 3132 (yytranslate): Expand definition of yy_token_number_type, so that
c0c9ea05
PH
3133 the latter can be removed.
3134 (yy_token_number_type): Remove, only one use.
3135 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
3136 don't use TokenNumberType as element type.
769b430f 3137
c0c9ea05
PH
3138 * tests/regression.at: Modify expected output to agree with change
3139 to yyr1 and yytranslate.
769b430f 3140
6390a83f
FK
31412002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
3142
3143 * src/reader.c (parse_action): Use copy_character instead of
3144 obstack_1grow.
3145
db7c8e9a
AD
31462002-05-13 Akim Demaille <akim@epita.fr>
3147
3148 * tests/regression.at (Token definitions): Prototype yylex and
3149 yyerror.
3150
fcc61800
PH
31512002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3152
158c687b 3153 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
fcc61800
PH
3154 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
3155 32-bit arithmetic.
3156 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
3157
5683e9b2
AD
31582002-05-07 Akim Demaille <akim@epita.fr>
3159
3160 * tests/synclines.at: Be sure to prototype yylex and yyerror to
3161 avoid GCC warnings.
3162
0c2d3f4c
AD
31632002-05-07 Akim Demaille <akim@epita.fr>
3164
3165 Kill GCC warnings.
3166
3167 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
3168 over the RHS of each rule.
3169 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
3170 * src/state.h (state_t): Member `nitems' is unsigned short.
3171 * src/LR0.c (get_state): Adjust.
3172 * src/reader.c (packgram): Likewise.
3173 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
3174 `Type'.
3175 (muscle_insert_int_table): Remove, unused.
3176 (prepare_rules): Remove `max'.
3177
1565b720
AD
31782002-05-06 Akim Demaille <akim@epita.fr>
3179
3180 * src/closure.c (print_firsts): Display of the symbol tags.
3181 (bitmatrix_print): Move to...
3182 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
3183 here.
3184 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
3185
cfaee611
AD
31862002-05-06 Akim Demaille <akim@epita.fr>
3187
3188 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
3189 hash_do_for_each.
3190
458be8e0
AD
31912002-05-06 Akim Demaille <akim@epita.fr>
3192
3193 * src/LR0.c (new_state, get_state): Instead of using the global
3194 `kernel_size' and `kernel_base', have two new arguments:
3195 `core_size' and `core'.
3196 Adjust callers.
3197
a900a624
AD
31982002-05-06 Akim Demaille <akim@epita.fr>
3199
3200 * src/reader.c (packgram): No longer end `ritem' with a 0
3201 sentinel: it is not used.
3202
d4e7d3a1
AD
32032002-05-05 Akim Demaille <akim@epita.fr>
3204
3205 New experimental feature: display the lookaheads in the report and
3206 graph.
3207
3208 * src/print (print_core): When --trace-flag, display the rules
3209 lookaheads.
3210 * src/print_graph.c (print_core): Likewise.
3211 Swap the arguments.
3212 Adjust caller.
3213
39ceb25b
AD
32142002-05-05 Akim Demaille <akim@epita.fr>
3215
3216 * tests/torture.at (Many lookaheads): New test.
3217
5372019f
AD
32182002-05-05 Akim Demaille <akim@epita.fr>
3219
3220 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
3221 (GENERATE_MUSCLE_INSERT_TABLE): this.
3222 (output_int_table, output_unsigned_int_table, output_short_table)
3223 (output_token_number_table, output_item_number_table): Replace with...
3224 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
3225 (muscle_insert_short_table, muscle_insert_token_number_table)
3226 (muscle_insert_item_number_table): these.
3227 Adjust all callers.
3228 (prepare_tokens): Don't free `translations', since...
3229 * src/reader.h, src/reader.c (grammar_free): do it.
3230 Move to...
3231 * src/gram.h, src/gram.c (grammar_free): here.
3232 * data/bison.simple, data/bison.c++: b4_token_number_max is now
3233 b4_translate_max.
3234
5df5f6d5
AD
32352002-05-05 Akim Demaille <akim@epita.fr>
3236
3237 * src/output.c (output_unsigned_int_table): New.
3238 (prepare_rules): `i' is unsigned.
3239 `prhs', `rline', `r2' are unsigned int.
3240 Rename muscle `rhs_number_max' as `rhs_max'.
3241 Output muscles `prhs_max', `rline_max', and `r2_max'.
3242 Free rline and r1.
3243 * data/bison.simple, data/bison.c++: Adjust to use these muscles
3244 to compute types instead of constant types.
3245 * tests/regression.at (Web2c Actions): Adjust.
3246
b87f8b21
AD
32472002-05-04 Akim Demaille <akim@epita.fr>
3248
3249 * src/symtab.h (SALIAS, SUNDEF): Rename as...
3250 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
3251 Adjust dependencies.
3252 * src/output.c (token_definitions_output): Be sure not to output a
3253 `#define 'a'' when fed with `%token 'a' "a"'.
3254 * tests/regression.at (Token definitions): New.
3255
8bb936e4
PE
32562002-05-03 Paul Eggert <eggert@twinsun.com>
3257
3258 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
3259 for K&R C.
3260
32612002-05-03 gettextize <bug-gnu-gettext@gnu.org>
3262
3263 * Makefile.am (SUBDIRS): Remove intl.
3264 (EXTRA_DIST): Add config/config.rpath.
3265
53c71a12
AD
32662002-05-03 Akim Demaille <akim@epita.fr>
3267
3268 * data/bison.simple (m4_if): Don't output empty enums.
3269 And actually, output valid enum definitions :(.
3270
289dd0cf
AD
32712002-05-03 Akim Demaille <akim@epita.fr>
3272
3273 * configure.bat: Remove, completely obsolete.
3274 * Makefile.am (EXTRA_DIST): Adjust.
3275 Don't distribute config.rpath...
3276 * config/Makefile.am (EXTRA_DIST): Do it.
3277
db85e524
AD
32782002-05-03 Akim Demaille <akim@epita.fr>
3279
3280 * configure.in (GETTEXT_VERSION): New.
3281 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
3282
83ccf991
AD
32832002-05-03 Akim Demaille <akim@epita.fr>
3284
3285 * data/bison.simple (b4_token_enum): New.
3286 (b4_token_defines): Use it to output tokens both as #define and
3287 enums.
3288 Suggested by Paul Eggert.
3289 * src/output.c (token_definitions_output): Don't output spurious
3290 white spaces.
3291
1f418995
AD
32922002-05-03 Akim Demaille <akim@epita.fr>
3293
3294 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
3295
45119f04
RA
32962002-05-02 Robert Anisko <robert@lrde.epita.fr>
3297
3298 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
3299 Update the stack class, give a try to deque as the default container.
3300
b2d52318
AD
33012002-05-02 Akim Demaille <akim@epita.fr>
3302
3303 * data/bison.simple (yyparse): Do not implement @$ = @1.
3304 (YYLLOC_DEFAULT): Adjust to do it.
3305 * doc/bison.texinfo (Location Default Action): Fix.
3306
3a8b4109
AD
33072002-05-02 Akim Demaille <akim@epita.fr>
3308
3309 * src/reader.c (parse_braces): Merge into...
3310 (parse_action): this.
3311
84614e13
AD
33122002-05-02 Akim Demaille <akim@epita.fr>
3313
3314 * configure.in (ALL_LINGUAS): Remove.
3315 * po/LINGUAS, hr.po: New.
3316
fdbcd8e2
AD
33172002-05-02 Akim Demaille <akim@epita.fr>
3318
3319 Remove the so called hairy (semantic) parsers.
3320
3321 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
3322 * src/gram.h, src/gram.c (semantic_parser): Remove.
3323 (rule_t): Remove the guard and guard_line members.
3324 * src/lex.h (token_t): remove tok_guard.
3325 * src/options.c (option_table): Remove %guard and %semantic_parser
3326 support.
3327 * src/output.c, src/output.h (guards_output): Remove.
3328 (prepare): Adjust.
3329 (token_definitions_output): Don't output the `T'
3330 tokens (???).
3331 (output_skeleton): Don't output the guards.
3332 * src/files.c, src/files.c (attrsfile): Remove.
3333 * src/reader.c (symbol_list): Remove the guard and guard_line
3334 members.
3335 Adjust dependencies.
3336 (parse_guard): Remove.
3337 * data/bison.hairy: Remove.
3338 * doc/bison.texinfo (Environment Variables): Remove occurrences of
3339 BISON_HAIRY.
3340
82b6cb3f
AD
33412002-05-02 Akim Demaille <akim@epita.fr>
3342
3343 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
3344 (parse_guard): Rename the formal argument `stack_offset' as
3345 `rule_length', which is more readable.
3346 Adjust callers.
3347 (copy_at, copy_dollar): Instead of outputting the hard coded
3348 values of $$, $n and so forth, output invocation to b4_lhs_value,
3349 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
900c877b
AD
3350 Note: this patch partially drops `semantic-parser' support: it
3351 always does `rule_length - n', where semantic parsers ought to
3352 always use `-n'.
82b6cb3f
AD
3353 * data/bison.simple, data/bison.c++ (b4_lhs_value)
3354 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
3355
6cbfbcc5
AD
33562002-05-02 Akim Demaille <akim@epita.fr>
3357
3358 * configure.in (AC_INIT): Bump to 1.49b.
3359 (AM_INIT_AUTOMAKE): Short invocation.
3360
b8548114
AD
33612002-05-02 Akim Demaille <akim@epita.fr>
3362
3363 Version 1.49a.
3364
c20cd1fa
AD
33652002-05-01 Akim Demaille <akim@epita.fr>
3366
3367 * src/skeleton.h: Remove.
3368
8a9566d4
AD
33692002-05-01 Akim Demaille <akim@epita.fr>
3370
3371 * src/skeleton.h: Fix the #endif.
3372 Reported by Magnus Fromreide.
3373
8c6d399a
PE
33742002-04-26 Paul Eggert <eggert@twinsun.com>
3375
3376 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
3377 Define if we define YYSTYPE and YYLTYPE, respectively.
b756bb75 3378 (YYCOPY): Fix [] quoting problem in the non-GCC case.
8a9566d4 3379
2b7ed18a
RA
33802002-04-25 Robert Anisko <robert@lrde.epita.fr>
3381
3382 * src/scan-skel.l: Postprocess quadrigraphs.
3383
3384 * src/reader.c (copy_character): New function, used to output
3385 single characters while replacing `[' and `]' with quadrigraphs, to
3386 avoid troubles with M4 quotes.
3387 (copy_comment): Output characters with copy_character.
3388 (read_additionnal_code): Likewise.
3389 (copy_string2): Likewise.
3390 (copy_definition): Likewise.
3391
3392 * tests/calc.at: Exercise M4 quoting.
3393
34a89c50
AD
33942002-04-25 Akim Demaille <akim@epita.fr>
3395
3396 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
3397 between `!' and the command.
3398 Reported by Paul Eggert.
3399
0dd1580a
RA
34002002-04-24 Robert Anisko <robert@lrde.epita.fr>
3401
3402 * tests/calc.at: Exercise prologue splitting.
3403
3404 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
3405 `b4_post_prologue' instead of `b4_prologue'.
3406
3407 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
3408 muscles.
3409 (output): Free pre_prologue_obstack and post_prologue_obstack.
3410 * src/files.h, src/files.c (attrs_obstack): Remove.
3411 (pre_prologue_obstack, post_prologue_obstack): New.
3412 * src/reader.c (copy_definition): Add a parameter to specify the
3413 obstack to fill, instead of using attrs_obstack unconditionally.
3414 (read_declarations): Pass pre_prologue_obstack to copy_definition if
3415 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
3416
83c1796f
PE
34172002-04-23 Paul Eggert <eggert@twinsun.com>
3418
3419 * data/bison.simple: Remove unnecessary commentary and white
3420 space differences from 1_29-branch.
3421 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
3422
3423 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
3424 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
3425 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
3426 constructors or destructors.
3427
3428 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
3429
1207eeac
AD
34302002-04-23 Akim Demaille <akim@epita.fr>
3431
3432 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
3433 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
3434 location with columns.
3435 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
3436 All reported by Paul Eggert.
3437
78ab8f67
AD
34382002-04-22 Akim Demaille <akim@epita.fr>
3439
3440 * src/reduce.c (dump_grammar): Move to...
3441 * src/gram.h, src/gram.c (grammar_dump): here.
3442 Be sure to separate long item numbers.
3443 Don't read the members of a rule's prec if its nil.
3444
133c20e2
AD
34452002-04-22 Akim Demaille <akim@epita.fr>
3446
3447 * src/output.c (table_size, table_grow): New.
3448 (MAXTABLE): Remove, replace uses with table_size.
3449 (pack_vector): Instead of dying when the table is too big, grow it.
3450
9515e8a7
AD
34512002-04-22 Akim Demaille <akim@epita.fr>
3452
3453 * data/bison.simple (yyr1): Its type is that of a token number.
3454 * data/bison.c++ (r1_): Likewise.
3455 * tests/regression.at (Web2c Actions): Adjust.
3456
23c5a174
AD
34572002-04-22 Akim Demaille <akim@epita.fr>
3458
3459 * src/reader.c (token_translations_init): 256 is now the default
3460 value for the error token, i.e., it will be assigned another
3461 number if the user assigned 256 to one of her tokens.
3462 (reader): Don't force 256 to error.
3463 * doc/bison.texinfo (Symbols): Adjust.
3464 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
3465 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
3466 etc. instead of 10, 20, 30 (which was used to `jump' over error
3467 (256) and undefined (2)).
3468
5fbb0954
AD
34692002-04-22 Akim Demaille <akim@epita.fr>
3470
3471 Propagate more token_number_t.
3472
3473 * src/gram.h (token_number_as_item_number)
3474 (item_number_as_token_number): New.
3475 * src/output.c (GENERATE_OUTPUT_TABLE): New.
3476 Use it to create output_item_number_table and
3477 output_token_number_table.
3478 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
3479 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
3480 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
3481 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
3482
4f940944
AD
34832002-04-22 Akim Demaille <akim@epita.fr>
3484
3485 * src/output.h, src/output.c (get_lines_number): Remove.
3486
3ded9a63
AD
34872002-04-19 Akim Demaille <akim@epita.fr>
3488
3489 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
3490 as Lex/Flex'.
3491 (Debugging): More details about enabling the debugging features.
3492 (Table of Symbols): Describe $$, $n, @$, and @n.
3493 Suggested by Tim Josling.
3494
e0c471a9
AD
34952002-04-19 Akim Demaille <akim@epita.fr>
3496
3497 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
3498
fecc10cd
AD
34992002-04-10 Akim Demaille <akim@epita.fr>
3500
3501 * src/system.h: Rely on HAVE_LIMITS_H.
3502 Suggested by Paul Eggert.
3503
51dec47b
AD
35042002-04-09 Akim Demaille <akim@epita.fr>
3505
3506 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
3507 full stderr, and strip it according to the bison options, instead
3508 of composing the error message from different bits.
3509 This makes it easier to check for several error messages.
3510 Adjust all the invocations.
3511 Add an invocation exercising the error token.
3512 Add an invocation demonstrating a stupid error message.
3513 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
3514 Adjust the tests.
3515 Error message are for stderr, not stdout.
3516
007a50a4
AD
35172002-04-09 Akim Demaille <akim@epita.fr>
3518
3519 * src/gram.h, src/gram.c (error_token_number): Remove, use
3520 errtoken->number.
3521 * src/reader.c (reader): Don't specify the user token number (2)
3522 for $undefined, as it uselessly prevents using it.
3523 * src/gram.h (token_number_t): Move to...
3524 * src/symtab.h: here.
3525 (state_t.number): Is a token_number_t.
3526 * src/print.c, src/reader.c: Use undeftoken->number instead of
3527 hard coded 2.
3528 (Even though this 2 is not the same as above: the number of the
3529 undeftoken remains being 2, it is its user token number which
3530 might not be 2).
3531 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
3532 `user_token_number_max'.
3533 Output `undef_token_number'.
3534 * data/bison.simple, data/bison.c++: Use them.
3535 Be sure to map invalid yylex return values to
3536 `undef_token_number'. This saves us from gratuitous SEGV.
3537
3538 * tests/conflicts.at (Solved SR Conflicts)
3539 (Unresolved SR Conflicts): Adjust.
3540 * tests/regression.at (Web2c Actions): Adjust.
3541
06446ccf
AD
35422002-04-08 Akim Demaille <akim@epita.fr>
3543
3544 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
3545 Adding #line.
3546 Remove the duplicate `typedefs'.
3547 (RhsNumberType): Fix the declaration and various other typos.
3548 Use __ofile__.
3549 * data/bison.simple: Use __ofile__.
3550 * src/scan-skel.l: Handle __ofile__.
3551
62a3e4f0
AD
35522002-04-08 Akim Demaille <akim@epita.fr>
3553
3554 * src/gram.h (item_number_t): New, the type of item numbers in
3555 RITEM. Note that it must be able to code symbol numbers as
3556 positive number, and the negation of rule numbers as negative
3557 numbers.
3558 Adjust all dependencies (pretty many).
3559 * src/reduce.c (rule): Remove this `short *' pointer: use
3560 item_number_t.
3561 * src/system.h (MINSHORT, MAXSHORT): Remove.
3562 Include `limits.h'.
3563 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
3564 (shortcpy): Remove.
3565 (MAXTABLE): Move to...
3566 * src/output.c (MAXTABLE): here.
3567 (prepare_rules): Use output_int_table to output rhs.
3568 * data/bison.simple, data/bison.c++: Adjust.
3569 * tests/torture.at (Big triangle): Move the limit from 254 to
3570 500.
3571 * tests/regression.at (Web2c Actions): Ajust.
3572
3573 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
3574 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
3575 passes, but produces negative #line number, once fixed, GCC is
3576 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
3577 C), it passes.
3578 * src/state.h (state_h): Code input lines on ints, not shorts.
3579
bb88b0fc
AD
35802002-04-08 Akim Demaille <akim@epita.fr>
3581
3582 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
3583 and then the grammar.
3584
9a636f47
AD
35852002-04-08 Akim Demaille <akim@epita.fr>
3586
3587 * src/system.h: No longer using strndup.
3588
680e8701
AD
35892002-04-07 Akim Demaille <akim@epita.fr>
3590
3591 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
3592 * src/output.c (output_table_data): Return the longest number.
3593 (prepare_tokens): Output `token_number_max').
3594 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
3595 New.
3596 Use them to define yy_token_number_type/TokenNumberType.
3597 Use this type for yytranslate.
3598 * tests/torture.at (Big triangle): Push the limit from 124 to
3599 253.
3600 * tests/regression.at (Web2c Actions): Adjust.
3601
817e9f41
AD
36022002-04-07 Akim Demaille <akim@epita.fr>
3603
3604 * tests/torture.at (Big triangle): New.
3605 (GNU AWK Grammar, GNU Cim Grammar): Move to...
3606 * tests/existing.at: here.
3607
5123689b
AD
36082002-04-07 Akim Demaille <akim@epita.fr>
3609
3610 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
3611 nritems.
3612 Adjust dependencies.
3613
f3849179
AD
36142002-04-07 Akim Demaille <akim@epita.fr>
3615
3616 * src/reader.c: Normalize increments to prefix form.
3617
bd02036a
AD
36182002-04-07 Akim Demaille <akim@epita.fr>
3619
3620 * src/reader.c, symtab.c: Remove debugging code.
3621
db8837cb
AD
36222002-04-07 Akim Demaille <akim@epita.fr>
3623
3624 Rename all the `bucket's as `symbol_t'.
3625
3626 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
3627 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
3628 * src/symtab.c, src/symtab.h (bucket): Rename as...
3629 (symbol_t): this.
3630 (symbol_list_new, bucket_check_defined, bucket_make_alias)
3631 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
3632 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
3633 (buckets_new, buckets_free, buckets_do): Rename as...
3634 (symbol_list_new, symbol_check_defined, symbol_make_alias)
3635 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
3636 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
3637 (symbols_new, symbols_free, symbols_do): these.
3638
72a23c97
AD
36392002-04-07 Akim Demaille <akim@epita.fr>
3640
3641 Use lib/hash for the symbol table.
3642
3643 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
3644 EOF.
3645 * src/lex.c (lex): Set the `number' member of new terminals.
3646 * src/reader.c (bucket_check_defined, bucket_make_alias)
3647 (bucket_check_alias_consistence, bucket_translation): New.
3648 (reader, grammar_free, readgram, token_translations_init)
3649 (packsymbols): Adjust.
3650 (reader): Number the predefined tokens.
3651 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
3652 for predefined tokens.
3653 * src/symtab.h (bucket): Remove all the hash table related
3654 members.
3655 * src/symtab.c (symtab): Replace by...
3656 (bucket_table): this.
3657 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
3658 (buckets_new, buckets_do): New.
3659
280a38c3
AD
36602002-04-07 Akim Demaille <akim@epita.fr>
3661
3662 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
3663 (start_symbol, max_user_token_number, semantic_parser)
3664 (error_token_number): Initialize.
3665 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
3666 Initialize.
3667 (reader): Don't.
3668 (errtoken, eoftoken, undeftoken, axiom): Extern.
3669
03b31c0c
AD
36702002-04-07 Akim Demaille <akim@epita.fr>
3671
3672 * src/gram.h (rule_s): prec and precsym are now pointers
3673 to the bucket giving the priority/associativity.
3674 Member `associativity' removed: useless.
3675 * src/reduce.c, src/conflicts.c: Adjust.
3676
8b3df748
AD
36772002-04-07 Akim Demaille <akim@epita.fr>
3678
3679 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
3680 Properly escape the symbols' TAG when outputting them.
3681
e601aa1d
AD
36822002-04-07 Akim Demaille <akim@epita.fr>
3683
3684 * src/lalr.h (LA): Is a bitsetv, not bitset*.
3685
b0299a2e
AD
36862002-04-07 Akim Demaille <akim@epita.fr>
3687
3688 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
3689 (LArule): this, which is an array to rule_t*.
3690 * src/print.c, src/conflicts.c: Adjust.
3691
d7e1f00c
AD
36922002-04-07 Akim Demaille <akim@epita.fr>
3693
3694 * src/gram.h (rule_t): Rename `number' as `user_number'.
3695 `number' is a new member.
3696 Adjust dependencies.
3697 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
3698
cc9305dd
AD
36992002-04-07 Akim Demaille <akim@epita.fr>
3700
3701 As a result of the previous patch, it is no longer needed
3702 to reorder ritem itself.
3703
3704 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
3705
b0940840
AD
37062002-04-07 Akim Demaille <akim@epita.fr>
3707
3708 Be sure never to walk through RITEMS, but use only data related to
3709 the rules themselves. RITEMS should be banished.
3710
3711 * src/output.c (output_token_translations): Rename as...
3712 (prepare_tokens): this.
3713 In addition to `translate', prepare the muscles `tname' and
3714 `toknum', which were handled by...
3715 (output_rule_data): this.
3716 Remove, and move the remainder of its outputs into...
3717 (prepare_rules): this new routines, which also merges content from
3718 (output_gram): this.
3719 (prepare_rules): Be sure never to walk through RITEMS.
3720 (output_stos): Rename as...
3721 (prepare_stos): this.
3722 (output): Always invoke prepare_states, after all, just don't use it
3723 in the output if you don't need it.
3724
643a5994
AD
37252002-04-07 Akim Demaille <akim@epita.fr>
3726
3727 * src/LR0.c (new_state): Display `nstates' as the name of the
3728 newly created state.
3729 Adjust to initialize first_state and last_state if needed.
3730 Be sure to distinguish the initial from the final state.
3731 (new_states): Create the itemset of the initial state, and use
3732 new_state.
3733 * src/closure.c (closure): Now that the initial state has its
3734 items properly set, there is no need for a special case when
3735 creating `ruleset'.
3736
3737 As a result, now the rule 0, reducing to $axiom, is visible in the
3738 outputs. Adjust the test suite.
3739
3740 * tests/conflicts.at (Solved SR Conflicts)
3741 (Unresolved SR Conflicts): Adjust.
3742 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
3743 * tests/conflicts.at (S/R in initial): New.
3744
b4c4ccc2
AD
37452002-04-07 Akim Demaille <akim@epita.fr>
3746
3747 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
3748 the RHS of the rules.
3749 * src/output.c (output_gram): Likewise.
3750
bba97eb2
AD
37512002-04-07 Akim Demaille <akim@epita.fr>
3752
3753 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
3754 bucket.
3755 Adjust all dependencies.
3756 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
3757 `number' of the buckets too.
3758 * src/gram.h: Include `symtab.h'.
3759 (associativity): Move to...
3760 * src/symtab.h: here.
3761 No longer include `gram.h'.
3762
c3b407f4
AD
37632002-04-07 Akim Demaille <akim@epita.fr>
3764
3765 * src/gram.h, src/gram.c (rules_rhs_length): New.
3766 (ritem_longest_rhs): Use it.
3767 * src/gram.h (rule_t): `number' is a new member.
3768 * src/reader.c (packgram): Set it.
3769 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
3770 the end of `rules', and count them out of `nrules'.
3771 (reduce_output, dump_grammar): Adjust.
3772 * src/print.c (print_grammar): It is no longer needed to check for
3773 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
3774 * tests/reduce.at (Reduced Automaton): New test.
3775
11652ab3
AD
37762002-04-07 Akim Demaille <akim@epita.fr>
3777
3778 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
3779 lacking `+ 1' to nrules, Bison reported as useless a token if it
3780 was used solely to set the precedence of the last rule...
3781
26b23c1a
AD
37822002-04-07 Akim Demaille <akim@epita.fr>
3783
3784 * data/bison.c++, data/bison.simple: Don't output the current file
3785 name in #line, to avoid useless diffs between two identical
3786 outputs under different names.
3787
18bcecb0
AD
37882002-04-07 Akim Demaille <akim@epita.fr>
3789
3790 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
3791 Normalize loops to using `< nrules + 1', not `<= nrules'.
3792
fa770c86
AD
37932002-04-07 Akim Demaille <akim@epita.fr>
3794
3795 * TODO: Update.
3796
d9b739c3
AD
37972002-04-07 Akim Demaille <akim@epita.fr>
3798
3799 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
3800 bucket.value as bucket.number.
3801
99013900
AD
38022002-04-07 Akim Demaille <akim@epita.fr>
3803
3804 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
3805 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
3806 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
3807 RHS, instead of being an index in RITEMS.
3808
e966383b
PE
38092002-04-04 Paul Eggert <eggert@twinsun.com>
3810
3811 * doc/bison.texinfo: Update copyright date.
3812 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
3813 (Symbols): Warn about running Bison in one character set,
3814 but compiling and/or running in an incompatible one.
3815 Warn about character code 256, too.
3816
38172002-04-03 Paul Eggert <eggert@twinsun.com>
3818
3819 * src/bison.data (YYSTACK_ALLOC): Depend on whether
3820 YYERROR_VERBOSE is nonzero, not whether it is defined.
3821
3822 Merge changes from bison-1_29-branch.
c307773e 3823
8d6c48b9
PE
38242002-03-20 Paul Eggert <eggert@twinsun.com>
3825
3826 Merge fixes from Debian bison_1.34-1.diff.
3827
3828 * configure.in (AC_PREREQ): 2.53.
3829
e53c6322
AD
38302002-03-20 Akim Demaille <akim@epita.fr>
3831
3832 * src/conflicts.c (log_resolution): Argument `resolution' is const.
3833
9ffbeca7
PE
38342002-03-19 Paul Eggert <eggert@twinsun.com>
3835
21db0b2a
PE
3836 * src/bison.simple (YYCOPY): New macro.
3837 (YYSTACK_RELOCATE): Use it.
3838 Remove Type arg; no longer needed. All callers changed.
3839 (yymemcpy): Remove; no longer needed.
3840
9ffbeca7
PE
3841 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
3842 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
3843
642cb8f8
AD
38442002-03-19 Akim Demaille <akim@epita.fr>
3845
3846 Test and fix the #line outputs.
3847
3848 * tests/atlocal.at (GCC): New.
3849 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
3850 (Prologue synch line, ,%union synch line, Postprologue synch line)
3851 (Action synch line, Epilogue synch line): New tests.
3852 * src/reader.c (parse_union_decl): Define the muscle stype_line.
3853 * data/bison.simple, data/bison.c++: Use it.
3854
3c31a486
AD
38552002-03-19 Akim Demaille <akim@epita.fr>
3856
3857 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
3858 (Solved SR Conflicts, %expect not enough, %expect right)
3859 (%expect too much): Move to...
3860 * tests/conflicts.at: this new file.
3861
0d8bed56
AD
38622002-03-19 Akim Demaille <akim@epita.fr>
3863
3864 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
3865 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
3866 that we can move to enums for instance.
3867 * src/output.c (token_definitions_output): Output a list of
3868 `token-name, token-number' instead of the #define.
3869 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
3870
9208d17f
AD
38712002-03-14 Akim Demaille <akim@epita.fr>
3872
3873 Use Gettext 0.11.1.
3874
af27eacb
RA
38752002-03-09 Robert Anisko <robert@lrde.epita.fr>
3876
3877 * data/bison.c++: Make the user able to add members to the generated
3878 parser by subclassing.
3879
9101a310
RA
38802002-03-05 Robert Anisko <robert@lrde.epita.fr>
3881
3882 * src/reader.c (read_additionnal_code): `c' should be an integer, not
3883 a character.
3884 Reported by Nicolas Tisserand and Nicolas Burrus.
3885
fff9bf0b
RA
38862002-03-04 Robert Anisko <robert@lrde.epita.fr>
3887
3888 * src/reader.c: Warn about lacking semi-colons, do not complain.
3889
64dba31e
RA
38902002-03-04 Robert Anisko <robert@lrde.epita.fr>
3891
3892 * data/bison.c++: Remove a debug line.
3893
374f5a14
RA
38942002-03-04 Robert Anisko <robert@lrde.epita.fr>
3895
3896 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
3897 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
3898 provide a default implementation.
3899
bfcf1f3a
AD
39002002-03-04 Akim Demaille <akim@epita.fr>
3901
3902 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
3903 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
3904 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
3905 * tests/semantic.at (Parsing Guards): Similarly.
3906 * src/reader.at (readgram): Complain if the last rule is not ended
3907 with a semi-colon.
3908
65ccf9fc
AD
39092002-03-04 Akim Demaille <akim@epita.fr>
3910
3911 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
3912 * src/closure.c: here.
3913 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
3914 RTC.
3915 * src/warshall.h, src/warshall.c: Remove.
3916 * tests/sets.at (Broken Closure): Adjust.
3917
d0039cbc
AD
39182002-03-04 Akim Demaille <akim@epita.fr>
3919
3920 * src/output.c (output_skeleton): tempdir is const.
3921 bytes_read is unused.
3922
345cea78
AD
39232002-03-04 Akim Demaille <akim@epita.fr>
3924
3925 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
3926 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
3927 Update.
3928 From Michael Hayes.
3929
564801f7
AD
39302002-03-04 Akim Demaille <akim@epita.fr>
3931
3932 * src/closure.c (closure): `r' is unused.
3933
e5352bc7
AD
39342002-03-04 Akim Demaille <akim@epita.fr>
3935
3936 * tests/sets.at (Broken Closure): Add the ending `;'.
3937 * src/reader.at (readgram): Complain if a rule is not ended with a
3938 semi-colon.
3939
914feea9
AD
39402002-03-04 Akim Demaille <akim@epita.fr>
3941
3942 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
3943 (count_sr_conflicts): Use bitset_count.
3944 * src/reduce.c (inaccessable_symbols): Ditto.
3945 (bits_size): Remove.
3946 * src/warshall.h, src/warshall.c: Convert to bitsetv.
3947
f0250de6
AD
39482002-03-04 Akim Demaille <akim@epita.fr>
3949
3950 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
3951 * src/reduce.c: Remove the `bitset_zero's following the
3952 `bitset_create's, as now it is performed by the latter.
3953
ef017502
AD
39542002-03-04 Akim Demaille <akim@epita.fr>
3955
3956 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
3957 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
3958 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
3959 latest sources from Michael.
3960
76514394
AD
39612002-03-04 Akim Demaille <akim@epita.fr>
3962
3963 * src/output.c (output): Don't free the grammar.
3964 * src/reader.c (grammar_free): New.
3965 * src/main.c (main): Call it and don't free symtab here.
3966
55024580
AD
39672002-03-04 Akim Demaille <akim@epita.fr>
3968
3969 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
3970 before returning.
3971 Reported by Benoit Perrot.
3972
f9abaa2c
AD
39732002-03-04 Akim Demaille <akim@epita.fr>
3974
3975 Use bitset operations when possible, not loops over bits.
3976
3977 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
3978 bitset_or.
3979 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
3980 * src/reduce.c (useless_nonterminals): Formatting changes.
3981 * src/warshall.c (TC): Use bitset_or.
3982
0e721e75
AD
39832002-03-04 Akim Demaille <akim@epita.fr>
3984
3985 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
3986 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
3987 Ditto.
3988
0fb1ffb1
AD
39892002-03-04 Akim Demaille <akim@epita.fr>
3990
3991 * src/lalr.c (F): Now a bitset*.
3992 Adjust all dependencies.
3993
b86796bf
AD
39942002-03-04 Akim Demaille <akim@epita.fr>
3995
3996 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
3997 Adjust all dependencies.
3998
602bbf31
AD
39992002-03-04 Akim Demaille <akim@epita.fr>
4000
4001 * src/L0.c, src/LR0.h (nstates): Be size_t.
4002 Adjust comparisons (signed vs unsigned).
4003 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
4004 bitset*.
4005 Adjust all dependencies.
4006
d8a0245c
AD
40072002-03-04 Akim Demaille <akim@epita.fr>
4008
4009 * src/closure.c (firsts): Now, also a bitset.
4010 Adjust all dependencies.
4011 (varsetsize): Remove, now unused.
4012 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
4013
34ba9743
AD
40142002-03-04 Akim Demaille <akim@epita.fr>
4015
4016 * src/print.c: Convert to use bitset.h, not hand coded iterations
4017 over ints.
4018
ed86e78c
AD
40192002-03-04 Akim Demaille <akim@epita.fr>
4020
4021 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
4022
dfdb1797
AD
40232002-03-04 Akim Demaille <akim@epita.fr>
4024
4025 * src/closure.c (ruleset): Be a bitset.
4026 (rulesetsize): Remove.
4027
7086e707
AD
40282002-03-04 Akim Demaille <akim@epita.fr>
4029
4030 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
4031 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
4032 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
4033 * src/closure.c (fderives): Be an array of bitsets.
4034
98254360
RA
40352002-02-28 Robert Anisko <robert@lrde.epita.fr>
4036
4037 * data/bison.c++: Merge the two generated headers. Insert a copyright
4038 notice in each output file.
4039
a75c057f
AD
40402002-02-28 Akim Demaille <akim@epita.fr>
4041
4042 * data/bison.c++: Copy the prologue of bison.simple to fetch
4043 useful M4 definitions, such as b4_header_guard.
4044
06b00abc
AD
40452002-02-25 Akim Demaille <akim@epita.fr>
4046
4047 * src/getargs.c (version): Give the name of the authors, and use a
a75c057f
AD
4048 translator friendly scheme for the bgr
4049 copyright notice.
06b00abc 4050
70e7d534
AD
40512002-02-25 Akim Demaille <akim@epita.fr>
4052
4053 * src/output.c (header_output): Remove, now handled completely via
4054 M4.
4055
abe017f6
AD
40562002-02-25 Akim Demaille <akim@epita.fr>
4057
4058 * m4/m4.m4: New, from CVS Autoconf.
4059 * configure.in: Invoke it.
4060 * src/output.c (output_skeleton): Use its result instead of the
4061 hard coded name.
4062
381fb12e
AD
40632002-02-25 Akim Demaille <akim@epita.fr>
4064
4065 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
4066 Fileutils 4.1.5.
4067 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
4068 * src/output.c (output_skeleton): Use mkstemp to create a real
4069 temporary file.
4070 Move the filling of `skeleton' and its muscle to...
4071 (prepare): here.
4072 (output): Move the definition of the prologue muscle to...
4073 (prepare): here.
4074 * src/system.h (DEFAULT_TMPDIR): New.
4075
6f38107f
PE
40762002-02-14 Paul Eggert <eggert@twinsun.com>
4077
4078 Remove the support for C++ namespace cleanliness; it was
4079 causing more problems than it was curing, since it didn't work
4080 properly on some nonstandard C++ compilers. This can wait
4081 for a proper C++ parser.
4082
4083 * NEWS: Document this.
4084 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
4085 of C++, as it's treated like C now.
4086 * src/bison.simple (YYSTD): Remove.
4087 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
4088 Treat C++ just like Standard C instead of trying to support
4089 namespace cleanliness.
4090
80cce3da
AD
40912002-02-14 Akim Demaille <akim@epita.fr>
4092
4093 * tests/regression.at (else): Adjust to Andreas' change.
4094
842e8679
AD
40952002-02-14 Akim Demaille <akim@epita.fr>
4096
4097 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
4098
4bda3f10
AD
40992002-02-13 Andreas Schwab <schwab@suse.de>
4100
4101 * src/output.c (output_rule_data): Don't output NULL, it might
4102 not be defined yet.
4103
4162fa07 41042002-02-11 Robert Anisko <robert@lrde.epita.fr>
b418ecd8 4105
4162fa07
RA
4106 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
4107 (Copyright notice): Update.
b418ecd8 4108
bd16a5dc
AD
41092002-02-11 Akim Demaille <akim@epita.fr>
4110
4111 * tests/regression.at (%nonassoc and eof): Don't include
4112 nonportable headers.
4113
8d69a1a3
RA
41142002-02-08 Robert Anisko <robert@lrde.epita.fr>
4115
4116 * data/bison.c++: Correct error recovery. Make the user able to
4117 initialize the starting location.
4118
9b2d0677
AD
41192002-02-07 Akim Demaille <akim@epita.fr>
4120
4121 * tests/input.at: New.
4122
69e2658b
RA
41232002-02-07 Robert Anisko <robert@lrde.epita.fr>
4124
4125 * data/bison.c++: Replace some direct m4 expansions by constants. Be
9b2d0677 4126 more consistent when naming methods and variables. Put preprocessor
69e2658b
RA
4127 directives around tables only needed for debugging.
4128
4aacc3a7
RA
41292002-02-07 Robert Anisko <robert@lrde.epita.fr>
4130
4131 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
4132 C++ parsers.
4133 (yy::b4_name::parse): Use print_.
4134
762a801e
RA
41352002-02-07 Robert Anisko <robert@lrde.epita.fr>
4136
4137 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
4138
4bb2bc3f
RA
41392002-02-07 Robert Anisko <robert@lrde.epita.fr>
4140
4141 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
4142 C++ parsers.
4143 (yy::b4_name::parse): Build verbose error messages, and use error_.
4144
6b45a3ca
RA
41452002-02-06 Robert Anisko <robert@lrde.epita.fr>
4146
4147 * data/bison.c++: Fix m4 quoting in comments.
4148
50997c6e
RA
41492002-02-06 Robert Anisko <robert@lrde.epita.fr>
4150
4151 * data/bison.c++: Adjust the parser code. Fix some muscles that were
4152 not expanded by m4.
4153
3f3eed27
AD
41542002-02-05 Akim Demaille <akim@epita.fr>
4155
4156 * data/bison.c++: Adjust to the M4 back end.
4157 More is certainly needed.
4158
be2a1a68
AD
41592002-02-05 Akim Demaille <akim@epita.fr>
4160
4161 Give a try to M4 as a back end.
4162
4163 * lib/readpipe.c: New, from wdiff.
4164 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
4165 BISON_HAIRY.
4166 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
4167 specific values. Now it is m4 that performs the lookup.
4168 * src/parse-skel.y: Remove.
4169 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
4170 * src/output.c (actions_output, guards_output)
4171 (token_definitions_output): No longer keeps track of the output
4172 line number, hence remove the second argument.
4173 (guards_output): Check against the guard member of a rule, not the
4174 action member.
4175 Adjust callers.
4176 (output_skeleton): Don't look for the skeleton location, let m4 do
4177 that.
4178 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
4179 file will be used.
4180 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
4181 (prepare): Given that for the time being changesyntax is not
4182 usable in M4, rename the muscles using `-' to `_'.
4183 Define `defines_flag', `output_parser_name' and `output_header_name'.
4184 * src/output.h (actions_output, guards_output)
4185 (token_definitions_output): Adjust prototypes.
4186 * src/scan-skel.l: Instead of scanning the skeletons, it now
4187 processes the output of m4: `__oline__' and `#output'.
4188 * data/bison.simple: Adjust to be used by M4(sugar).
4189 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
4190 to date.
4191 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
4192 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
4193 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
4194 shamelessly stolen from CVS Autoconf.
4195
beda758b
AD
41962002-02-05 Akim Demaille <akim@epita.fr>
4197
4198 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
4199 * configure.in: Check for the declarations of free and malloc.
4200 * src/muscle_tab.c: Adjust.
4201
5ece6d43
AD
42022002-02-05 Akim Demaille <akim@epita.fr>
4203
4204 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
4205 which have no values.
4206
5bb18f9a
AD
42072002-02-05 Akim Demaille <akim@epita.fr>
4208
4209 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
4210 * data/: here.
4211
894dd62e
PE
42122002-01-29 Paul Eggert <eggert@twinsun.com>
4213
4214 * src/bison.simple (YYSIZE_T): Do not define merely because
4215 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
4216 On some platforms, <alloca.h> does not declare YYSTD (size_t).
4217
82841af7
AD
42182002-01-27 Akim Demaille <akim@epita.fr>
4219
4220 Fix `%nonassoc and eof'.
4221
4222 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
4223 which were not properly copied! Replace
4224 memcpy (res->errs, src->errs, src->nerrs);
4225 with
4226 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
4227 !!!
4228 * tests/regression.at (%nonassoc and eof): Adjust to newest
4229 Autotest: `.' is not in the PATH.
4230
318b76e9
AD
42312002-01-27 Akim Demaille <akim@epita.fr>
4232
4233 * tests/sets.at (AT_EXTRACT_SETS): New.
4234 (Nullable): Use it.
4235 (Firsts): New.
4236
30d2f3d5
AD
42372002-01-26 Akim Demaille <akim@epita.fr>
4238
4239 * tests/actions.at, tests/calc.at, tests/headers.at,
4240 * tests/torture.at: Adjust to the newest Autotest which no longer
4241 forces `.' in the PATH.
4242
30f8c395
AD
42432002-01-25 Akim Demaille <akim@epita.fr>
4244
4245 * tests/regression.at (%nonassoc and eof): New.
4246 Suggested by Robert Anisko.
4247
29ae55f1
AD
42482002-01-24 Akim Demaille <akim@epita.fr>
4249
4250 Bison dumps core when trying to complain about broken input files.
4251 Reported by Cris van Pelt.
4252
4253 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
4254 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
4255 into...
4256 (Invalid inputs): Strengthen: exercise parse_percent_token.
4257
2b548aa6
RA
42582002-01-24 Robert Anisko <robert.anisko@epita.fr>
4259
4260 * src/Makefile.am: Add bison.c++.
4261 * src/bison.c++: New skeleton.
4262
bb0146c2
AD
42632002-01-21 Paolo Bonzini <bonzini@gnu.org>
4264
4265 * po/it.po: New.
4266
bec30531
AD
42672002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
4268
4269 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
4270
fc6edc45
MA
42712002-01-20 Marc Autret <marc@gnu.org>
4272
4273 * src/files.c (compute_output_file_names): Fix
4274
5e5d5415
MA
42752002-01-20 Marc Autret <marc@gnu.org>
4276
4277 * tests/output.at: New test.
4278 * src/files.c (compute_base_names): Don't map extensions when
4279 the YACC flag is set, use defaults.
4280 Reported by Evgeny Stambulchik.
4281
44ea3fbd
MA
42822002-01-20 Marc Autret <marc@gnu.org>
4283
bb0146c2 4284 * src/system.h: Need to define __attribute__ away for non-GCC
44ea3fbd
MA
4285 compilers as well (i.e. the vendor C compiler).
4286 Suggested by Albert Chin-A-Young.
4287
338963d1
TVH
42882002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
4289
4290 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
4291 canonical definition.
4292 * src/system.h: Use the canonical definition for PARAMS (avoids
4293 a conflict with the macro from lib/hash.h).
4294
c57b2479
AD
42952002-01-11 Akim Demaille <akim@epita.fr>
4296
4297 * configure.in: Use AC_FUNC_STRNLEN.
d9e9746c 4298 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
c57b2479 4299
b85810ae
AD
43002002-01-09 Akim Demaille <akim@epita.fr>
4301
4302 * src/files.c, src/files.h (output_infix): New.
4303 (tab_extension): Remove.
4304 (compute_base_names): Compute the former, drop the latter.
4305 * src/output.c (prepare): Insert the muscles `output-infix', and
4306 `output-suffix'.
4307 * src/parse-skel.y (string, string.1): New.
4308 (section.header): Use it.
4309 (section.yacc): Remove.
4310 (prefix): Remove too.
4311 * src/scan-skel.l: Adjust.
4312 * src/bison.simple, src/bison.hairy: Adjust.
4313
cae60122
AD
43142002-01-09 Akim Demaille <akim@epita.fr>
4315
4316 * configure.in (WERROR_CFLAGS): Compute it.
4317 * src/Makefile.am (CFLAGS): Pass it.
4318 * tests/atlocal.in (CFLAGS): Idem.
4319 * src/files.c: Fix a few warnings.
4320 (get_extension_index): Remove, unused.
4321
ae404801
AD
43222002-01-08 Akim Demaille <akim@epita.fr>
4323
4324 * src/getargs.c (AS_FILE_NAME): New.
4325 (getargs): Use it to convert DOSish file names.
4326 * src/files.c (base_name): Rename as full_base_name to avoid
4327 clashes with `base_name ()'.
4328 (filename_split): New.
4329 (compute_base_names): N-th rewrite, using filename_split.
4330
22312b71
AD
43312002-01-08 Akim Demaille <akim@epita.fr>
4332
4333 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
4334 New, stolen from the Fileutils 4.1.
4335 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
4336 * configure.in: Check for the presence of memrchr, and of its
4337 prototype.
4338
a67cef01
TVH
43392002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
4340
4341 * lib/hash.h (__P): Added definition for this macro.
4342 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
4343 BUILT_SOURCES, to ensure they are generated first.
4344 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
4345 %error-verbose to allow bootstrapping with bison 1.30x.
4346
2b25d624
AD
43472002-01-06 Akim Demaille <akim@epita.fr>
4348
4349 * src/reader.c (parse_braces): Don't fetch the next char, the
4350 convention is to fetch on entry.
4351 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
4352 'switch' without a following semicolon.
4353 * tests/regression.at (braces parsing): New.
4354
3460813b
AD
43552002-01-06 Akim Demaille <akim@epita.fr>
4356
4357 Bison is dead wrong in its RR conflict reports.
4358
4359 * tests/torture.at (GNU Cim Grammar): New.
4360 * src/conflicts.c (count_rr_conflicts): Fix.
4361
73784c64
AD
43622002-01-06 Akim Demaille <akim@epita.fr>
4363
4364 Creating package.m4 from configure.ac causes too many problems.
4365
4366 * tests/Makefile.am (package.m4): Create it by hand,
4367 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
4368
25d81090
AD
43692002-01-06 Akim Demaille <akim@epita.fr>
4370
4371 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
4372 skeleton.h.
4373
a9b8959e
PE
43742002-01-04 Paul Eggert <eggert@twinsun.com>
4375
4376 * doc/bison.texinfo (Debugging):
4377 Remove YYSTDERR; it's no longer defined or used.
4378 Also, s/cstdio.h/cstdio/.
4379
25d81090
AD
43802002-01-03 Akim Demaille <akim@epita.fr>
4381
4382 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
4383
1109455c
AD
43842002-01-03 Akim Demaille <akim@epita.fr>
4385
4386 * src/parse-skel.y (process_skeleton): Don't bind the parser's
4387 tracing code to --trace, wait for a better --trace option, with
4388 args.
4389
7ea5e977
AD
43902002-01-03 Akim Demaille <akim@epita.fr>
4391
4392 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
4393 The ISO C++ standard is extremely clear about it: stderr is
4394 considered a macro, not a regular symbol (see table 94 `Header
4395 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
4396 Therefore std:: does not apply to it. It still does with fprintf.
4397 Also, s/cstdio.h/cstdio/.
4398
fab5b110
AD
43992002-01-03 Akim Demaille <akim@epita.fr>
4400
4401 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
4402 for non system headers.
4403
aed7fd9b
AD
44042002-01-02 Akim Demaille <akim@epita.fr>
4405
4406 Equip the skeleton chain with location tracking, runtime trace,
4407 pure parser and scanner.
4408
4409 * src/parse-skel.y: Request a pure parser, locations, and prefix
4410 renaming.
4411 (%union): Having several members with the same type does not help
4412 type mismatches, simplify.
4413 (YYPRINT, yyprint): New.
4414 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
4415 (skel_error): this.
4416 Handle locations.
4417 * src/scan-skel.l: Adjust to these changes.
4418 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
4419 (LOCATION_PRINT, skel_control_t): New.
4420
24fad99e
AD
44212001-12-30 Akim Demaille <akim@epita.fr>
4422
4423 * src/parse-skel.y: Get rid of the shift/reduce conflict:
4424 replace `gb' with BLANKS.
4425 * src/scan-skel.l: Adjust.
4426
a4b36db4
AD
44272001-12-30 Akim Demaille <akim@epita.fr>
4428
4429 * src/system.h: We don't need nor want bcopy.
4430 Throw away MS-DOS crap: we don't need getpid.
4431 * configure.in: We don't need strndup. It was even causing
4432 problems: because Flex includes the headers *before* us,
4433 _GNU_SOURCE is not defined by config.h, and therefore strndup was
4434 not visible.
4435 * lib/xstrndup.c: New.
4436 * src/scan-skel.l: Use it.
4437 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
4438 * src/parse-skel.y: Use %directives instead of #defines.
4439
1239777d
AD
44402001-12-30 Akim Demaille <akim@epita.fr>
4441
4442 * src/skeleton.h: New.
4443 * src/output.c (output_parser, output_master_parser): Remove, dead
4444 code.
4445 * src/output.h (get_lines_number, actions_output, guards_output)
4446 (token_definitions_output): Prototype them.
4447 * src/parse-skel.y: Add the license notice.
4448 Include output.h and skeleton.h.
4449 (process_skeleton): Returns void, and takes a single parameter.
4450 * src/scan-skel.l: Add the license notice.
4451 Include skeleton.h.
4452 Don't use %option yylineno: it seems that then Flex imagines
4453 REJECT has been used, and therefore it won't reallocate its
4454 buffers (which makes no other sense to me than a bug). It results
4455 in warnings for `unused: yy_flex_realloc'.
4456
9b3add5b
RA
44572001-12-30 Robert Anisko <robert.anisko@epita.fr>
4458
4459 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
4460 (MUSCLE_INSERT_PREFIX): ...to there.
4461 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
4462 (MUSCLE_INSERT_PREFIX): Move from here...
4463
4464 * src/bison.hairy: Add a section directive. Put braces around muscle
4465 names. This parser skeleton is still broken, but Bison should not
4466 choke on a bad muscle 'syntax'.
4467 * src/bison.simple: Add a section directive. Put braces around muscle
4468 names.
4469
4470 * src/files.h (strsuffix, stringappend): Add declarations.
4471 (tab_extension): Add declaration.
4472 (short_base_name): Add declaration.
4473
4474 * src/files.c (strsuffix, stringappend): No longer static. These
4475 functions are used in the skeleton parser.
4476 (tab_extension): New.
4477 (compute_base_names): Use the computations done in this function
fab5b110 4478 to guess if the generated parsers should have '.tab' in their
9b3add5b
RA
4479 names.
4480 (short_base_name): No longer static.
4481
4482 * src/output.c (output_skeleton): New.
4483 (output): Disable call to output_master_parser, and give a try to
4484 a new skeleton handling system.
4485 (guards_output, actions_output): No longer static.
4486 (token_definitions_output, get_lines_number): No longer static.
4487
4488 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
4489
fab5b110 4490 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
9b3add5b
RA
4491 parse-skel.y.
4492
4493 * src/parse-skel.y: New file.
4494 * src/scan-skel.l: New file.
4495
b5b61c61
AD
44962001-12-29 Akim Demaille <akim@epita.fr>
4497
4498 %name-prefix is broken.
4499
4500 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
4501 Adjust all dependencies.
4502 * tests/headers.at (export YYLTYPE): Strengthen this test: use
4503 %name-prefix.
4504
4505 Renaming yylval but not yylloc is not consistent. Now we do.
4506
4507 * src/bison.simple: Prefix yylloc if used.
4508 * doc/bison.texinfo (Decl Summary): Document that.
4509
8c9a50be
AD
45102001-12-29 Akim Demaille <akim@epita.fr>
4511
4512 * doc/bison.texinfo: Promote `%long-directive' over
4513 `%long_directive'.
4514 Remove all references to fixed-output-files, yacc is enough.
4515
d99361e6
AD
45162001-12-29 Akim Demaille <akim@epita.fr>
4517
4518 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
4519 user prologue. These are defaults.
4520 * tests/actions.at (Mid-rule actions): Make sure the user can
4521 define YYDEBUG and YYERROR_VERBOSE.
4522
b9cecb91
AD
45232001-12-29 Akim Demaille <akim@epita.fr>
4524
4525 * src/output.c (header_output): Don't forget to export YYLTYPE and
4526 yylloc.
4527 * tests/headers.at (export YYLTYPE): New, make sure it does.
4528 * tests/regression.at (%union and --defines, Invalid CPP headers):
4529 Move to...
4530 * tests/headers.at: here.
4531
aea13e97
AD
45322001-12-29 Akim Demaille <akim@epita.fr>
4533
4534 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
4535
931394cb
AD
45362001-12-29 Akim Demaille <akim@epita.fr>
4537
4538 * tests/actions.at (Mid-rule actions): Output on a single line
4539 instead of several.
4540
704a47c4
AD
45412001-12-29 Akim Demaille <akim@epita.fr>
4542
4543 * doc/bison.texinfo: Formatting changes.
4544
091e20bb
AD
45452001-12-29 Akim Demaille <akim@epita.fr>
4546
4547 Don't store the token defs in a muscle, just be ready to output it
4548 on command. Now possible via `symbols'. Fixes a memory leak.
4549
4550 * src/output.c (token_definitions_output): New.
4551 (output_parser, header_output): Use it.
4552 * src/reader.c (symbols_save): Remove.
4553
cce71710
AD
45542001-12-29 Akim Demaille <akim@epita.fr>
4555
4556 * src/bison.simple: Do not provide a default for YYSTYPE and
4557 YYLTYPE before the user's prologue. Otherwise it's hardly... a
4558 default.
4559
82c035a8
AD
45602001-12-29 Akim Demaille <akim@epita.fr>
4561
4562 Mid-rule actions are simply... ignored!
4563
4564 * src/reader.c (readgram): Be sure to attach mid-rule actions to
4565 the empty-rule associated to the dummy symbol, not to the host
4566 rule.
4567 * tests/actions.at (Mid-rule actions): New.
4568
8419d367
AD
45692001-12-29 Akim Demaille <akim@epita.fr>
4570
4571 Memory leak.
4572
4573 * src/reader.c (reader): Free grammar.
4574
375d5806
AD
45752001-12-29 Akim Demaille <akim@epita.fr>
4576
4577 Memory leak.
4578
4579 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
4580 since it allocates it for each state, although only one is needed.
4581 (allocate_storage): Do it here.
4582
f51cb8ff
AD
45832001-12-29 Akim Demaille <akim@epita.fr>
4584
4585 * src/options.h, src/options.c (create_long_option_table): Rename
4586 as...
4587 (long_option_table_new): this, with a clearer prototype.
4588 (percent_table): Remove, unused,
4589 * src/getargs.c (getargs): Adjust.
4590
29e88316
AD
45912001-12-29 Akim Demaille <akim@epita.fr>
4592
4593 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
4594 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
4595 as states.
4596
b9f71f19
AD
45972001-12-29 Akim Demaille <akim@epita.fr>
4598
4599 * src/lalr.c (build_relations): Rename `states' as `states1'.
4600 Sorry, I don't understand exactly what it is, no better name...
4601
1a2b5d37
AD
46022001-12-29 Akim Demaille <akim@epita.fr>
4603
4604 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
4605 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
4606 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
4607 as rules.
4608
1cca533e
AD
46092001-12-29 Akim Demaille <akim@epita.fr>
4610
4611 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
4612 ago.
4613
c03ae966
AD
46142001-12-29 Akim Demaille <akim@epita.fr>
4615
4616 * src/reader.c, src/reader.h (user_toknums): Remove.
4617 Adjust all users to use symbols[i]->user_token_number.
4618
5a670b1e
AD
46192001-12-29 Akim Demaille <akim@epita.fr>
4620
4621 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
4622 Adjust all users to use symbols[i]->prec or ->assoc.
4623
ad949da9
AD
46242001-12-29 Akim Demaille <akim@epita.fr>
4625
4626 * src/reader.c, src/reader.h (tags): Remove.
4627 Adjust all users to use symbols[i]->tag.
4628
0e78e603
AD
46292001-12-29 Akim Demaille <akim@epita.fr>
4630
4631 * src/gram.h, src/gram.c (symbols): New, similar to state_table
4632 and rule_table.
4633 * src/reader.c (packsymbols): Fill this table.
4634 Drop sprec.
4635 * src/conflicts.c (resolve_sr_conflict): Adjust.
4636 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
4637 single table.
4638 Use symbols[i]->tag instead of tags[i].
4639
213e640e
AD
46402001-12-29 Akim Demaille <akim@epita.fr>
4641
4642 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
4643 In addition, put a comment in there, to replace...
4644 * tests/regression.at (%union and C comments): Remove.
4645
e7b8bef1
AD
46462001-12-29 Akim Demaille <akim@epita.fr>
4647
4648 * tests/regression.at (Web2c Actions): Blindly move the actual
4649 output as expected output. The contents *seem* right to me, but I
4650 can't pretend reading perfectly parser tables... Nonetheless, all
4651 the other tests pass correctly, the table look OK, even though the
4652 presence of `$axiom' is to be noted: AFAICS it is useless (but
4653 harmless).
4654
b68e7744
AD
46552001-12-29 Akim Demaille <akim@epita.fr>
4656
4657 * src/reader.c (readgram): Don't add the rule 0 if there were no
4658 rules read. In other words, add it _after_ having performed
4659 grammar sanity checks.
4660 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
4661
78d5bae9
AD
46622001-12-29 Akim Demaille <akim@epita.fr>
4663
4664 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
4665 visible, and some states have now a different number.
4666
ff442794
AD
46672001-12-29 Akim Demaille <akim@epita.fr>
4668
4669 * src/reader.c (readgram): Bind the initial rule's lineno to that
4670 of the first rule.
4671 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
4672 (Solved SR Conflicts): Adjust rule 0's line number.
4673
610ab194
AD
46742001-12-29 Akim Demaille <akim@epita.fr>
4675
4676 Fix the `GAWK Grammar' failure.
4677
4678 * src/LR0.c (final_state): Initialize to -1 so that we do compute
4679 the reductions of the first state which was mistakenly confused
4680 with the final state because precisely final_state was initialized
4681 to 0.
4682 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
4683 now noticed by Bison.
4684 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
4685 have a reduction on $default.
4686
29d29c8f
AD
46872001-12-29 Akim Demaille <akim@epita.fr>
4688
4689 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
4690 rule line numbers.
4691 * src/closure.c (print_closure): Likewise.
4692 * src/derives.c (print_derives): Likewise.
4693 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
4694 now.
4695
7c6b64d0
AD
46962001-12-29 Akim Demaille <akim@epita.fr>
4697
4698 * src/lalr.c (lookaheads_print): New.
4699 (lalr): Call it when --trace-flag.
4700 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
4701 are dumped.
4702
3d4daee3
AD
47032001-12-29 Akim Demaille <akim@epita.fr>
4704
4705 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
4706 when walking through ritem, even via rule->rhs.
4707 * src/reduce.c (dump_grammar, useful_production, reduce_output)
4708 (useful_production, useless_nonterminals): Likewise.
4709 (reduce_grammar_tables): Likewise, plus update nritems.
4710 * src/nullable.c (set_nullable): Likewise.
4711 * src/lalr.c (build_relations): Likewise.
4712 * tests/sets.at (Nullable): Adjust.
4713 Fortunately, now, the $axiom is no longer nullable.
4714
9e7f6bbd
AD
47152001-12-29 Akim Demaille <akim@epita.fr>
4716
4717 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
4718 the 0-sentinel.
4719 * src/gram.c (ritem_longest_rhs): Likewise.
4720 * src/reduce.c (nonterminals_reduce): Likewise.
4721 * src/print_graph.c (print_graph): Likewise.
4722 * src/output.c (output_rule_data): Likewise.
4723 * src/nullable.c (set_nullable): Likewise.
4724
255ef638
AD
47252001-12-29 Akim Demaille <akim@epita.fr>
4726
4727 * src/output.c: Comment changes.
4728
0d8a7363
AD
47292001-12-27 Paul Eggert <eggert@twinsun.com>
4730
4731 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
4732 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
4733 Sparc, as they were causing more porting problems than the
4734 (minor) performance improvement was worth.
4735
4736 Also, catch up with 1.31's YYSTD.
4737
3db472b9
AD
47382001-12-27 Akim Demaille <akim@epita.fr>
4739
4740 * src/output.c (output_gram): Rely on nritems, not the
4741 0-sentinel. See below.
4742 Use -1 as separator, not 0.
4743 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
4744 Rely on -1 as separator in yyrhs, instead of 0.
4745 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
4746 twice `Now at end of input', therefore there are two lines less to
4747 expect.
4748
b365aa05
AD
47492001-12-27 Akim Demaille <akim@epita.fr>
4750
4751 * tests/regression.at (Unresolved SR Conflicts):
4752 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
4753 below.
4754
30171f79
AD
47552001-12-27 Akim Demaille <akim@epita.fr>
4756
4757 * src/LR0.c (new_state): Recognize the final state by the fact it
4758 is reached by eoftoken.
4759 (insert_start_shifting_state, insert_eof_shifting_state)
4760 (insert_accepting_state, augment_automaton): Remove, since now
4761 these states are automatically computed from the initial state.
4762 (generate_states): Adjust.
4763 * src/print.c: When reporting a rule number to the user, substract
4764 1, so that the axiom rule is rule 0, and the first user rule is 1.
4765 * src/reduce.c: Likewise.
4766 * src/print_graph.c (print_core): For the time being, just as for
4767 the report, depend upon --trace-flags to dump the full set of
4768 items.
4769 * src/reader.c (readgram): Once the grammar read, insert the rule
4770 0: `$axiom: START-SYMBOL $'.
4771 * tests/set.at: Adjust: rule 0 is now displayed, and since the
4772 number of the states has changed (the final state is no longer
4773 necessarily the last), catch up.
4774
75142d45
AD
47752001-12-27 Akim Demaille <akim@epita.fr>
4776
4777 Try to make the use of the eoftoken valid. Given that its value
4778 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
4779 is used instead of > 0 where appropriate, (ii), depend upon nritems
4780 instead of the 0-sentinel.
4781
4782 * src/gram.h, src/gram.c (nritems): New.
4783 Expected to be duplication of nitems, but for the time being...
4784 * src/reader.c (packgram): Assert nritems and nitems are equal.
4785 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
4786 * src/closure.c (print_closure, print_fderives): Likewise.
4787 * src/gram.c (ritem_print): Likewise.
4788 * src/print.c (print_core, print_grammar): Likewise.
4789 * src/print_graph.c: Likewise.
4790
b7c49edf
AD
47912001-12-27 Akim Demaille <akim@epita.fr>
4792
4793 * src/main.c (main): If there are complains after grammar
4794 reductions, then output the report anyway if requested, then die.
4795 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
4796 * src/reader.c (eoftoken): New.
4797 (parse_token_decl): If the token being defined has value `0', it
4798 is the eoftoken.
4799 (packsymbols): No longer hack `tags' to insert `$' by hand.
4800 Be sure to preserve the value of the eoftoken.
4801 (reader): Make sure eoftoken is defined.
4802 Initialize nsyms to 0: now eoftoken is created just like the others.
4803 * src/print.c (print_grammar): Don't special case the eof token.
4804 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
4805 lie anyway, albeit pleasant.
4806 * tests/calc.at: Exercise error messages with eoftoken.
4807 Change the grammar so that empty input is invalid.
4808 Adjust expectations.
4809 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
4810
ec2da99f
AD
48112001-12-27 Akim Demaille <akim@epita.fr>
4812
4813 * configure.in: Check the protos of strchr ans strspn.
4814 Replace strchr if needed.
4815 * src/system.h: Provide the protos of strchr, strspn and memchr if
4816 missing.
4817 * lib/strchr.c: New.
4818 * src/reader.c (symbols_save): Use strchr.
4819
8adfa272
AD
48202001-12-27 Akim Demaille <akim@epita.fr>
4821
4822 * src/print.c, src/print_graph.c (escape): New.
4823 Use it to quote the TAGS outputs.
4824 * src/print_graph.c (print_state): Now errors are in red, and
4825 reductions in green.
4826 Prefer high to wide: output the state number on a line of its own.
4827
80dac38c
AD
48282001-12-27 Akim Demaille <akim@epita.fr>
4829
4830 * src/state.h, src/state.c (reductions_new): New.
4831 * src/LR0.c (set_state_table): Let all the states have a
4832 `reductions', even if reduced to 0.
4833 (save_reductions): Adjust.
4834 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
4835 * src/print.c (print_reductions, print_actions): Adjust.
4836 * src/output.c (action_row): Adjust.
4837
2cec70b9
AD
48382001-12-27 Akim Demaille <akim@epita.fr>
4839
4840 * src/state.h, src/state.c (errs_new, errs_dup): New.
4841 * src/LR0.c (set_state_table): Let all the states have an errs,
4842 even if reduced to 0.
4843 * src/print.c (print_errs, print_reductions): Adjust.
4844 * src/output.c (output_actions, action_row): Adjust.
4845 * src/conflicts.c (resolve_sr_conflict): Adjust.
4846
13ca549a
AD
48472001-12-27 Akim Demaille <akim@epita.fr>
4848
4849 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
4850
5092aba5
AD
48512001-12-27 Akim Demaille <akim@epita.fr>
4852
4853 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
4854 * src/print.c: here.
4855 (lookaheadset, shiftset): New, used as additional storage by
4856 print_reductions.
4857 (print_results): Adjust.
4858 (print_shifts, print_gotos, print_errs): New, extracted from...
4859 (print_actions): here.
4860 * src/print_graph.c (print_actions): Remove dead code.
4861
11e2beca
AD
48622001-12-27 Akim Demaille <akim@epita.fr>
4863
4864 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
4865 `$n' and `@n'.
4866
dac3c910
AD
48672001-12-27 Akim Demaille <akim@epita.fr>
4868
4869 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
4870 (build_relations): Adjust.
4871
d0b0fefa
AD
48722001-12-27 Akim Demaille <akim@epita.fr>
4873
4874 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
4875 duplication.
4876
adc8c848
AD
48772001-12-27 Akim Demaille <akim@epita.fr>
4878
4879 * src/reader.c (packgram): Catch nitems overflows.
4880
14d293ac
AD
48812001-12-27 Akim Demaille <akim@epita.fr>
4882
4883 * src/files.c, src/files.h (guard_obstack): Remove.
4884 * src/output.c (output): Adjust.
4885 * src/reader.c (parse_braces): New, factoring...
4886 (copy_action, copy_guard): these two which are renamed as...
4887 (parse_action, parse_guard): these.
4888 As a voluntary consequence, using braces around guards is now
4889 mandatory.
4890
f499b062
AD
48912001-12-27 Akim Demaille <akim@epita.fr>
4892
4893 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
4894 * src/reader.c (symbol_list): `guard' and `guard_line' are new
4895 members.
4896 (symbol_list_new): Adjust.
4897 (copy_action): action_line is the first line, not the last.
4898 (copy_guard): Just as for actions, store the `action' only, not
4899 the switch/case/break flesh.
4900 Don't parse the user action that might follow the guard, let...
4901 (readgram): do it, i.e., now, there can be an action after a
4902 guard.
4903 In other words the guard is just explicitly optional.
4904 (packgram): Adjust.
4905 * src/output.c (guards_output): New.
4906 (output_parser): Call it when needed.
4907 (output): Also free the guard and attrs obstacks.
4908 * src/files.c, src/files.h (obstack_save): Remove.
4909 (output_files): Remove.
4910 As a result, if one needs the former `.act' file, using an
4911 appropriate skeleton which requires actions and guards is now
4912 required.
4913 * src/main.c (main): Adjust.
4914 * tests/semantic.at: New.
4915 * tests/regression.at: Use `input.y' as input file name.
4916 Avoid 8+3 problems by requiring input.c when the test needs the
4917 parser.
4918
d945f5cd
AD
49192001-12-27 Akim Demaille <akim@epita.fr>
4920
4921 * src/reader.c (symbol_list_new): Be sure to initialize all the
4922 fields.
4923
d200e455
AD
49242001-12-27 Akim Demaille <akim@epita.fr>
4925
4926 All the hacks using a final pseudo state are now useless.
4927
4928 * src/LR0.c (set_state_table): state_table holds exactly nstates.
4929 * src/lalr.c (nLA): New.
4930 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
4931 instead of lookaheadsp from the pseudo state (nstate + 1).
4932
f9507c28
AD
49332001-12-27 Akim Demaille <akim@epita.fr>
4934
4935 * src/output.c (action_row, token_actions): Use a state_t instead
4936 of a integer, and nlookaheads instead of the following state's
4937 lookaheadsp.
4938
065fbd27
AD
49392001-12-27 Akim Demaille <akim@epita.fr>
4940
4941 * src/conflicts.c (log_resolution, flush_shift)
4942 (resolve_sr_conflict, set_conflicts, solve_conflicts)
4943 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
4944 (conflicts_print, print_reductions): Use a state_t instead of an
4945 integer when referring to a state.
4946 As much as possible, depend upon nlookaheads, instead of the
4947 `lookaheadsp' member of the following state (since lookaheads of
4948 successive states are successive, the difference between state n + 1
4949 and n served as the number of lookaheads for state n).
4950 * src/lalr.c (add_lookback_edge): Likewise.
4951 * src/print.c (print_core, print_actions, print_state)
4952 (print_results): Likewise.
4953 * src/print_graph.c (print_core, print_actions, print_state)
4954 (print_graph): Likewise.
4955 * src/conflicts.h: Adjust.
4956
1b177bd7
AD
49572001-12-27 Akim Demaille <akim@epita.fr>
4958
4959 * src/bison.hairy: Formatting/comment changes.
4960 ANSIfy.
4961 Remove `register' indications.
4962 Add plenty of `static'.
4963
7742ddeb
AD
49642001-12-27 Akim Demaille <akim@epita.fr>
4965
4966 * src/output.c (prepare): Drop the muscle `ntbase' which
4967 duplicates ntokens.
4968 * src/bison.simple: Formatting/comment changes.
4969 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
4970 is an undocumented synonym.
4971
1fa14068
AD
49722001-12-22 Akim Demaille <akim@epita.fr>
4973
4974 * src/output.c (output_table_data): Change the prototype to use
4975 `int' for array ranges: some invocations do pass an int, not a
4976 short.
4977 Reported by Wayne Green.
4978
b9752825
AD
49792001-12-22 Akim Demaille <akim@epita.fr>
4980
4981 Some actions of web2c.y are improperly triggered.
4982 Reported by Mike Castle.
4983
4984 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
4985 * tests/regression.at (Web2c): Rename as...
4986 (Web2c Report): this.
4987 (Web2c Actions): New.
4988
776209d6
AD
49892001-12-22 Akim Demaille <akim@epita.fr>
4990
4991 Reductions in web2c.y are improperly reported.
4992 Reported by Mike Castle.
4993
4994 * src/conflicts.c (print_reductions): Fix.
4995 * tests/regression.at (Web2c): New.
4996
275fc3ad
AD
49972001-12-18 Akim Demaille <akim@epita.fr>
4998
4999 Some host fail on `assert (!"foo")', which expands to
5000 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
5001 Reported by Nelson Beebee.
5002
5003 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
5004 `#define it_succeeded 0' and `assert (it_succeeded)'.
5005
897668ee
MA
50062001-12-17 Marc Autret <autret_m@epita.fr>
5007
5008 * src/bison.simple: Don't hard code the skeleton line and filename.
5009 * src/output.c (output_parser): Rename 'line' as 'output_line'.
5010 New line counter 'skeleton_line' (skeleton-line muscle).
5011
ab3399e0
PE
50122001-12-17 Paul Eggert <eggert@twinsun.com>
5013
5014 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
5015 YYDEBUG must be defined to a nonzero value.
5016
5017 * src/bison.simple (yytname): Do not assume that the user defines
5018 YYDEBUG to a properly parenthesized expression.
5019
3877f72b
AD
50202001-12-17 Akim Demaille <akim@epita.fr>
5021
5022 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
5023 nlookaheads is a new member.
5024 Adjust all users.
5025 * src/lalr.h (nlookaheads): Remove this orphan declaration.
5026 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
5027 state.
776209d6 5028
331dbc1b
AD
50292001-12-17 Akim Demaille <akim@epita.fr>
5030
5031 * src/files.h, src/files.c (open_files, close_files): Remove.
5032 * src/main.c (main): Don't open/close files, nor invoke lex_free,
5033 let...
5034 * src/reader.c (reader): Do it.
776209d6 5035
be750e4c
AD
50362001-12-17 Akim Demaille <akim@epita.fr>
5037
5038 * src/conflicts.c (print_reductions): Formatting changes.
776209d6 5039
709ae8c6
AD
50402001-12-17 Akim Demaille <akim@epita.fr>
5041
5042 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
5043 (flush_reduce): New.
5044 (resolve_sr_conflict): Adjust.
776209d6 5045
f87685c3
AD
50462001-12-17 Akim Demaille <akim@epita.fr>
5047
5048 * src/output.c (output_obstack): Be static and rename as...
5049 (format_obstack): this, to avoid any confusion with files.c's
5050 output_obstack.
5051 * src/reader.h (muscle_obstack): Move to...
5052 * src/output.h: here, since it's defined in output.c.
5053
837491d8
AD
50542001-12-17 Akim Demaille <akim@epita.fr>
5055
5056 * src/output.c (action_row, save_column, default_goto)
5057 (sort_actions, matching_state, pack_vector): Better variable
5058 locality.
5059
796d61fb
AD
50602001-12-17 Akim Demaille <akim@epita.fr>
5061
5062 * src/output.c: Various formatting changes.
776209d6 5063
64d15509
AD
50642001-12-17 Akim Demaille <akim@epita.fr>
5065
5066 * src/files.c (output_files): Free the output_obstack.
5067 * src/main.c (main): Call print and print_graph conditionally.
5068 * src/print.c (print): Work unconditionally.
5069 * src/print_graph.c (print_graph): Work unconditionally.
5070 * src/conflicts.c (log_resolution): Output only if verbose_flag.
5071
fbc8ecb7
MA
50722001-12-16 Marc Autret <autret_m@epita.fr>
5073
5074 * src/output.c (actions_output): Fix. When we use %no-lines,
5075 there is one less line per action.
5076
f0440388
MA
50772001-12-16 Marc Autret <autret_m@epita.fr>
5078
5079 * src/bison.simple: Remove a useless #line directive.
5080 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
5081 * src/output.c (get_lines_number): New.
776209d6 5082 (output_parser): Adjust, now takes care about the lines of a
f0440388
MA
5083 output muscles.
5084 Fix line numbering.
5085 (actions_output): Computes the number of lines taken by actions.
5086 (output_master_parser): Insert new skeleton which is the name of
5087 the output parser file name.
5088
a79986b8
MA
50892001-12-15 Marc Autret <autret_m@epita.fr>
5090
5091 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
5092
4ec8e00f
MA
50932001-12-15 Marc Autret <autret_m@epita.fr>
5094
5095 * src/output.c (output_gram): Keep track of the hairy one.
5096
1a4648ff
AD
50972001-12-15 Akim Demaille <akim@epita.fr>
5098
5099 Make `make distcheck' work.
5100
5101 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
5102 system.h which uses libgettext.h.
5103
9c2c67e6
AD
51042001-12-15 Akim Demaille <akim@epita.fr>
5105
5106 * src/nullable.c (set_nullable): Useless rules must be skipped,
5107 otherwise, since we range over their symbols, we might look at a
5108 nonterminal which no longer ``exists'', i.e., it is not counted in
5109 `nvars', hence we overflow our arrays.
5110
93ede233
AD
51112001-12-15 Akim Demaille <akim@epita.fr>
5112
5113 The header can also be produced directly, without any obstack!
5114 Yahoo!
5115
5116 * src/files.c, src/files.h (defines_obstack): Remove.
5117 (compute_header_macro): Global.
5118 (defines_obstack_save): Remove.
5119 * src/reader.c (parse_union_decl): No longer output to
5120 defines_obstack: its content can be found in the `stype' muscle
5121 anyway.
5122 (output_token_translations): Merge into...
5123 (symbols_output): this.
5124 Rename as...
5125 (symbols_save): this.
5126 (reader): Adjust.
5127 * src/output.c (header_output): New.
5128 (output): Call it.
5129
2666f928
AD
51302001-12-15 Akim Demaille <akim@epita.fr>
5131
5132 * src/reader.c (parse_union_decl): Instead of handling two obstack
5133 simultaneously, use one to define the `stype' muscle, and use the
5134 value of the latter to fill defines_obstack.
5135 (copy_comment): Remove.
5136 (copy_comment2): Work for a single obstack.
5137 Rename as...
5138 (copy_comment): this.
5139
428046f8
AD
51402001-12-15 Akim Demaille <akim@epita.fr>
5141
5142 * src/lex.c, src/lex.h (xgetc): No longer static.
5143 * src/reader.c (parse_union_decl): Revamp.
5144
ea52d706
AD
51452001-12-15 Akim Demaille <akim@epita.fr>
5146
5147 Still making progress in separating Bison into (i) input, (ii)
5148 process, (iii) output: now we can directly output the parser file
5149 without using table_obstack at all.
5150
5151 * src/files.c, src/files.h (table_obstack): Bye bye.
5152 (parser_file_name): New.
5153 * src/files.c (compute_output_file_names): Compute it.
5154 * src/output.c (actions_output, output_parser)
5155 (output_master_parser): To a file instead of an obstack.
5156
3f96f4dc
AD
51572001-12-15 Akim Demaille <akim@epita.fr>
5158
5159 Attach actions to rules, instead of pre-outputting them to
5160 actions_obstack.
5161
5162 * src/gram.h (rule_t): action and action_line are new members.
5163 * src/reader.c (symbol_list): Likewise.
5164 (copy_action): Save the actions within the rule.
5165 (packgram): Save them in rule_table.
5166 * src/output.c (actions_output): New.
5167 (output_parser): Use it on `%%actions'.
5168 (output_rule_data): Don't free rule_table.
5169 (output): Do it.
5170 (prepare): Don't save the `action' muscle.
5171 * src/bison.simple: s/%%action/%%actions/.
5172
51576fb3
AD
51732001-12-15 Akim Demaille <akim@epita.fr>
5174
5175 * src/reader.c (copy_action): When --yacc, don't append a `;'
5176 to the user action: let it fail if lacking.
dee049eb 5177 Suggested by Arnold Robbins and Tom Tromey.
51576fb3 5178
2648a72d
AD
51792001-12-14 Akim Demaille <akim@epita.fr>
5180
5181 * src/lex.c (literalchar): Simply return the char you decoded, non
5182 longer mess around with obstacks and int pointers.
5183 Adjust all callers.
5184
92790e5b
AD
51852001-12-14 Akim Demaille <akim@epita.fr>
5186
5187 * src/lex.c (literalchar): Don't escape the special characters,
5188 just decode them, and keep them as char (before, eol was output as
5189 the 2 char string `\n' etc.).
5190 * src/output.c (output_rule_data): Use quotearg to output the
5191 token strings.
5192
927c1557
PE
51932001-12-13 Paul Eggert <eggert@twinsun.com>
5194
5195 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
5196 Do not infringe on the global user namespace when using C++.
5197 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
5198 All uses of `fprintf' and `stderr' changed.
5199
5200 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
5201
ed8e1f68
AD
52022001-12-13 Akim Demaille <akim@epita.fr>
5203
5204 The computation of nullable is broken: it doesn't handle empty
5205 RHS's properly.
5206
5207 * tests/torture.at (GNU AWK Grammar): New.
5208 * tests/sets.at (Nullable): New.
5209 * src/nullable.c (set_nullable): Instead of blindly looping over
5210 `ritems', loop over the rules, and then over their rhs's.
5211
5212 Work around Autotest bugs.
5213
5214 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
5215 frame, because Autotest understand lines starting with a `+' as
5216 traces from the shell. Then, they are not processed properly.
5217 Admittedly an Autotest bug, but we don't have time to wait for
5218 Autotest to catch up.
5219 * tests/regression.at (Broken Closure): Adjust to the new table
5220 frames.
5221 Move to...
5222 * tests/sets.at: here.
5223
cb581495
AD
52242001-12-13 Akim Demaille <akim@epita.fr>
5225
5226 * src/closure.c (closure): Use nrules instead of playing tricks
5227 with BITS_PER_WORD.
5228
2e729273
AD
52292001-12-13 Akim Demaille <akim@epita.fr>
5230
5231 * src/print.c (print_actions): Output the handling of `$' as the
5232 traces do: shifting the token EOF. Before EOF was treated as a
5233 nonterminal.
5234 * tests/regression.at: Adjust some tests.
5235 * src/print_graph.c (print_core): Complete the set of items via
5236 closure. The next-to-final and final states are still unsatisfying,
5237 but that's to be addressed elsewhere.
5238 No longer output the rule numbers, but do output the state number.
5239 A single loop for the shifts + gotos is enough, but picked a
5240 distinct color for each.
5241 (print_graph): Initialize and finalize closure.
5242
107f7dfb
AD
52432001-12-13 Akim Demaille <akim@epita.fr>
5244
5245 * src/reader.c (readgram): Remove dead code, an strip useless
5246 braces.
5247 (get_type): Remove, unused.
5248
9b53a24f
AD
52492001-12-12 Akim Demaille <akim@epita.fr>
5250
5251 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
5252 on that of lib/error.c.
5253
dbfb6dcd
AD
52542001-12-12 Akim Demaille <akim@epita.fr>
5255
5256 Some hosts don't like `/' in includes.
5257
5258 * src/system.h: Include libgettext.h without qualifying the path.
5259 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
5260 $(top_srcdir).
5261
c25fb648
MA
52622001-12-11 Marc Autret <autret_m@epita.fr>
5263
5264 * src/output.c (output_parser): Remove useless muscle.
5265
710ddc4f
MA
52662001-12-11 Marc Autret <autret_m@epita.fr>
5267
5268 * src/bison.simple: Remove #line just before %%epilogue. It
5269 is now handled in ...
5270 * src/reader.c (read_additionnal_code): Add the output of a
5271 #line for the epilogue.
5272
e83d80b8
MA
52732001-12-10 Marc Autret <autret_m@epita.fr>
5274
927c1557 5275 * src/reader.c (copy_definition): Re-use CPP-outed code which
e83d80b8
MA
5276 replace precedent remove.
5277 * src/bison.simple: Remove #line before %%prologue because
5278 %%input-line is wrong at this time.
5279
971d5158
MA
52802001-12-10 Marc Autret <autret_m@epita.fr>
5281
5282 * src/reader.c (symbols_output): Clean up.
927c1557 5283 * src/output.c (output_gram, output): Clean up.
971d5158 5284
5edafffd
AD
52852001-12-10 Akim Demaille <akim@epita.fr>
5286
5287 * src/lalr.c (initialize_lookaheads): New. Extracted from...
5288 * src/LR0.c (set_state_table): here.
5289 * src/lalr.c (lalr): Call it.
5290
0279f8e9
AD
52912001-12-10 Akim Demaille <akim@epita.fr>
5292
5293 * src/state.h (shifts): Remove the `number' member: shifts are
5294 attached to state, hence no longer need to be labelled with a
5295 state number.
5296
190c4f5f
AD
52972001-12-10 Akim Demaille <akim@epita.fr>
5298
5299 Now that states have a complete set of members, the linked list of
5300 shifts is useless: just fill directly the state's shifts member.
5301
5302 * src/state.h (shifts): Remove the `next' member.
5303 * src/LR0.c (first_state, last_state): Remove.
5304 Adjust the callers.
5305 (augment_automaton): Don't look for the shifts that must be added
5306 a shift on EOF: it is those of the state we looked for! But now,
5307 since shifts are attached, it is no longer needed to looking
5308 merely by its id: its number.
5309
2a73b93d
AD
53102001-12-10 Akim Demaille <akim@epita.fr>
5311
5312 * src/LR0.c (augment_automaton): Better variable locality.
5313 Remove an impossible branch: if there is a state corresponding to
5314 the start symbol being shifted, then there is shift for the start
5315 symbol from the initial state.
5316
74392f6a
AD
53172001-12-10 Akim Demaille <akim@epita.fr>
5318
5319 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
5320 only when appropriate: when insert_start_shifting_state' is not
5321 invoked.
5322 * tests/regression.at (Rule Line Numbers): Adjust.
5323
37c82725
AD
53242001-12-10 Akim Demaille <akim@epita.fr>
5325
5326 * src/LR0.c (augment_automaton): Now that all states have shifts,
5327 merge the two cases addition shifts to the initial state.
5328
6a164e0c
AD
53292001-12-10 Akim Demaille <akim@epita.fr>
5330
5331 * src/lalr.c (set_state_table): Move to...
5332 * src/LR0.c: here.
5333 * src/lalr.c (lalr): Don't call it...
5334 * src/LR0.c (generate_states): do it.
5335 * src/LR0.h (first_state): Remove, only the table is used.
5336
7215de24
AD
53372001-12-10 Akim Demaille <akim@epita.fr>
5338
5339 * src/LR0.h (first_shift, first_reduction): Remove.
5340 * src/lalr.c: Don't use first_shift: find shifts through the
5341 states.
5342
80e25d4d
AD
53432001-12-10 Akim Demaille <akim@epita.fr>
5344
5345 * src/LR0.c: Attach shifts to states as soon as they are
5346 computed.
5347 * src/lalr.c (set_state_table): Instead of assigning shifts to
5348 state, just assert that the mapping was properly done.
5349
0ab3728b
AD
53502001-12-10 Akim Demaille <akim@epita.fr>
5351
5352 * src/LR0.c (insert_start_shift): Rename as...
5353 (insert_start_shifting_state): this.
5354 (insert_eof_shifting_state, insert_accepting_state): New.
5355 (augment_automaton): Adjust.
5356 Better locality of the variables.
5357 When looking if the start_symbol is shifted from the initial
5358 state, using `while (... symbol != start_symbol ...)' sounds
5359 better than `while (... symbol < start_symbol ...)': If fail
5360 to see how the order between symbols could be relevant!
5361
78af9bbc
AD
53622001-12-10 Akim Demaille <akim@epita.fr>
5363
5364 * src/getargs.h: Don't declare `spec_name_prefix' and
5365 `spec_file_prefix', declared by src/files.h.
5366 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
5367 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
5368 * src/output.c (prepare): Adjust.
5369 * src/reader.c (symbols_output): Likewise.
5370 * src/vmsgetargs.c: Vaguely adjust, but who cares?
5371
bdef2a41
AD
53722001-12-10 Akim Demaille <akim@epita.fr>
5373
5374 * src/muscle_tab.c (muscle_init): NULL is a better default than
5375 `"0"'.
5376
3735969c
AD
53772001-12-10 Akim Demaille <akim@epita.fr>
5378
5379 * src/reader.c (reader): Calling symbols_output once is enough.
5380
49701457
AD
53812001-12-10 Akim Demaille <akim@epita.fr>
5382
5383 Now that states have a complete set of members, the linked list of
5384 reductions is useless: just fill directly the state's reductions
5385 member.
5386
5387 * src/state.h (struct reductions): Remove member `number' and
5388 `next'.
5389 * src/LR0.c (first_reduction, last_reduction): Remove.
5390 (save_reductions): Don't link the new reductions, store them in
5391 this_state.
5392 * src/lalr.c (set_state_table): No need to attach reductions to
5393 states, it's already done.
5394 * src/output.c (output_actions): No longer free the shifts, then
5395 the reductions, then the states: free all the states and their
5396 members.
5397
0edad749
AD
53982001-12-10 Akim Demaille <akim@epita.fr>
5399
5400 * src/options.c (OPTN, DRTV, BOTH): New.
5401 (option_table): Use them.
5402
0edad749
AD
5403 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
5404 the job of system.h.
5405 * src/options.c: Don't include stdio.h and xalloc.h for the same
5406 reasons.
5407
5449dd0f
AD
54082001-12-10 Akim Demaille <akim@epita.fr>
5409
5410 * src/output.c (output, prepare): Make sure the values of the
5411 muscles `action' and `prologue' are 0-terminated.
5412
a870c567
AD
54132001-12-10 Akim Demaille <akim@epita.fr>
5414
5415 Clean up GCC warnings.
5416
5417 * src/reader.c (copy_action): `buf' is not used.
5418 (parse_skel_decl): Be static.
5419 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
5420 * src/options.h (create_long_option_table): Have a real prototype.
5421 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
5422 (hash_delete_at): Return const void *.
5423 Adjust casts to preserve the const.
5424
80df8768
AD
54252001-12-10 Akim Demaille <akim@epita.fr>
5426
5427 * configure.in: Require 2.52g.
5428 M4 is not needed, but AUTOM4TE is.
5429 * m4/m4.m4: Remove.
5430 * tests/Makefile.am: Adjust.
5431
f693ad14
AD
54322001-12-10 Akim Demaille <akim@epita.fr>
5433
5434 One structure for states is enough, even though theoretically
5435 there are LR(0) states and LALR(1) states.
5436
5437 * src/lalr.h (state_t): Remove.
5438 (state_table): Be state_t **, not state_t *.
5439 * src/state.h (core, CORE_ALLOC): Rename as...
5440 (state_t, STATE_ALLOC): this.
5441 Add the LALR(1) members: shifts, reductions, errs.
5442 * src/LR0.c (state_table): Rename as...
5443 (state_hash): this, to avoid name clashes with the global
5444 `state_table'.
5445 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
5446 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
5447
74ffbcb6
AD
54482001-12-10 Akim Demaille <akim@epita.fr>
5449
5450 Bison dumps core on bash.y.
5451 Reported by Pascal Bart.
5452
5453 * src/warshall.c (bitmatrix_print): New.
5454 (TC): Use it.
5455 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
5456 j must be the outer loop.
5457 * tests/regression.at (Broken Closure): New.
5458
07708e19
AD
54592001-12-05 Akim Demaille <akim@epita.fr>
5460
5461 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
5462 its argument.
5463