]> git.saurik.com Git - bison.git/blame - ChangeLog
* src/parse-gram.y (CHARACTER): Remove unused token.
[bison.git] / ChangeLog
CommitLineData
20ef1ad5
PE
12002-11-07 Paul Eggert <eggert@twinsun.com>
2
3 * src/parse-gram.y (CHARACTER): Remove unused token.
4 All uses removed.
5
6 * src/scan-gram.l: Remove stack option. We no longer use the
7 stack, since the stack was never deeper than 1; instead, use the
8 new auto var c_context to record the stacked value.
9
10 Remove nounput option. At an unexpected end of file, we now unput
11 the minimal input necessary to end cleanly; this simplifies the
12 code.
13
14 Avoid unbounded token sizes where this is easy.
15
16 (unexpected_end_of_file): New function.
17 Use it to systematize the error message on unexpected EOF.
18 (last-string): Now auto, not static.
19 (YY_OBS_FREE): Remove unnecessary do while (0) wrapper.
20 (scanner_last_string_free): Remove; not used.
21 (percent_percent_count): Move decl to just before use.
22 (SC_ESCAPED_CHARACTER): Return ID at unexpected end of file,
23 not the (never otherwised-used) CHARACTER.
24
93724f13
AD
252002-11-07 Akim Demaille <akim@epita.fr>
26
27 Let yyerror always receive the msg as last argument, so that
28 yyerror can be variadic.
29
30 * data/yacc.c (b4_yyerror_args): New.
31 Use it when calling yyerror.
32 * data/glr.c (b4_yyerror_args, b4_lyyerror_args): New.
33 Use it when calling yyerror.
34 * doc/bison.texinfo (Error Reporting): Adjust.
35 * tests/calc.at (_AT_DATA_CALC_Y): Adjust.
36 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Adjust.
37
6e40b4eb
AD
382002-11-06 Akim Demaille <akim@epita.fr>
39
40 #line should have quoted strings.
41 Ideally, this should be done by m4_quotearg.
42
43 * src/scan-skel.l: Include quotearg.h.
44 Quote __ofile__.
45 * src/output.c (symbol_printers_output)
46 (symbol_destructors_output): Quote the file name.
47
2dfbfc12
AD
482002-11-06 Akim Demaille <akim@epita.fr>
49
50 * tests/regression.at (Invalid inputs): Adjust to the recent
51 messages.
52
437c2d80
AD
532002-11-06 Akim Demaille <akim@epita.fr>
54
55 Restore --no-lines.
56 Reported by Jim Kent.
57
58 * data/c.m4 (b4_syncline): New.
59 * data/glr.c, data/yacc.c, data/lalr1.cc: Use it.
60 * src/reader.c (prologue_augment, epilogue_set): Use b4_syncline.
61 * src/output.c (user_actions_output): Likewise.
62 (prepare): Define 'b4_synclines_flag'.
2dfbfc12 63 * src/muscle_tab.c (muscle_init): Don't define b4_linef.
437c2d80 64
900c5db5
AD
652002-11-06 Akim Demaille <akim@epita.fr>
66
67 * src/main.c (main): Free `infile'.
68 * src/scan-gram.l (handle_syncline): New.
69 Recognize `#line'.
70 * src/output.c (user_actions_output, symbol_destructors_output)
71 (symbol_printers_output): Use the location's file name, not
72 infile.
73 * src/reader.c (prologue_augment, epilogue_set): Likewise.
74
e183b123 752002-11-05 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
51b4a04c 76
e183b123 77 * src/tables.c (matching_state): Don't allow states to match if
51b4a04c 78 either has GLR conflict entries.
e183b123 79
193eb6b7
PE
802002-11-05 Paul Eggert <eggert@twinsun.com>
81
e183b123
PE
82 * src/scan-gram.l: Use more accurate diagnostics, e.g.
83 "integer out of range" rather than "invalid value".
84 * tests/input.at (Invalid $n, Invalid @n): Change expected wording
85 accordingly.
86
193eb6b7
PE
87 Scan <% and %> digraphs in C code as POSIX 1003.1-2001 requires.
88 Also, remove one static variable in the scanner.
89
90 * src/scan-gram.l (braces_level): Now auto, not static.
91 Initialize to zero if the compiler is being picky.
92 (INITIAL): Clear braces_level instead of incrementing it.
93 (SC_BRACED_CODE): Treat <% and %> as { and } when inside C code,
94 as POSIX 1003.1-2001 requires.
95 * src/system.h (IF_LINT): New macro, taken from coreutils.
96 * configure.ac: Define "lint" if --enable-gcc-warnings.
97
29c01725
AD
982002-11-05 Akim Demaille <akim@epita.fr>
99
100 * src/scan-gram.l: When it starts with `%', complain about the
101 whole directive, not just that `invalid character: %'.
102
8aeac3ca
AD
1032002-11-04 Akim Demaille <akim@epita.fr>
104
105 * Makefile.maint: Update from Autoconf.
106 (update, cvs-update, po-update, do-po-update): New.
107
793a58bb
AD
1082002-11-04 Akim Demaille <akim@epita.fr>
109
110 * tests/glr-regr1.at (Badly Collapsed GLR States): Prototype yylex
111 and yyerror.
112 Have yyerror `use' its arguments.
113 * tests/calc.at (AT_CHECK_PUSHDEFS): AT_YYERROR_SEES_LOC_IF
114 returns true when location & yacc & pure & parse-param.
115 (_AT_DATA_CALC_Y): Let yyerror ``use'' its arguments.
116
c4d720cd
AD
1172002-11-04 Akim Demaille <akim@epita.fr>
118
119 * src/location.h (LOCATION_PRINT): Use quotearg slot 3 to avoid
120 clashes.
121 * src/scan-gram.l: Use [\'] instead of ['] to pacify
122 font-lock-mode.
123 Use complain_at.
124 Use quote, not quote_n since LOCATION_PRINT no longer uses the
125 slot 0.
126
613a0dc5
PE
1272002-11-03 Paul Eggert <eggert@twinsun.com>
128
129 * src/reader.c (get_merge_function, grammar_current_rule_check):
130 Use consistent diagnostics for reporting type name clashes.
131 Quote the types with <>, for consistency with Yacc.
132 * tests/input.at (Type Clashes): Adjust to diagnostic changes.
133
2a8d363a
AD
1342002-11-03 Akim Demaille <akim@epita.fr>
135
136 * data/c.m4 (b4_identification, b4_user_args, b4_parse_param):
137 New.
138 * data/yacc.m4 (b4_pure_args, b4_Pure_args): New.
139 (b4_parse_param): Remove.
140 Use b4_identification.
141 Propagate b4_pure_args where needed to pass them to yyerror.
142 * data/glr.m4 (b4_parse_param): Remove.
143 (b4_user_formals, b4_pure_args, b4_pure_formals, b4_lpure_args)
144 (b4_lpure_formals): New.
145 Use b4_identification.
146 (YY_USER_FORMALS, YY_USER_ARGS): Remove, replaced by
147 b4_user_formals and b4_user_args.
148 (yyexpandGLRStack, yyFail, yyaddDeferredAction, yyglrShiftDefer)
149 (yyreportAmbiguity): When using a pure parser, also need
150 the location, and the parse-params.
151 Adjust callers.
152 (yyuserAction, yyglrShift, yyreportParseError, yyrecoverParseError):
153 When using a pure parser, also need the parse-params.
154 Adjust callers.
155 * tests/calc.at: Test pure (%pure-parser) and absolutely pure
156 (%pure-parser + %parse-param) LALR and GLR parsers.
157 (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): New, define AT_PARAM_IF,
158 AT_LOCATION_IF, AT_PURE_IF, AT_GLR_IF, AAT_PURE_AND_LOC_IF,
159 AT_GLR_OR_PARAM_IF, AT_YYERROR_ARG_LOC_IF, AT_YYERROR_SEES_LOC_IF.
160 (_AT_DATA_CALC_Y): Equip for purity of yyerror.
161 (_AT_CHECK_CALC_ERROR): Use AT_YYERROR_SEES_LOC_IF.
162 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Equip for yyerror purity.
163 * doc/bison.texinfo: Untabify the whole file.
164 (Parser Function): Document %parse-param, deprecate YYPARSE_PARAM.
165 (Pure Calling): Document %lex-param, deprecate YYLEX_PARAM.
166 (Error Reporting): Adjust to these new directives.
167 Document %error-verbose, deprecate YYERROR_VERBOSE.
168
9e32add8
AD
1692002-11-03 Akim Demaille <akim@epita.fr>
170
171 * tests/calc.at: Change all the AT_CHECK_CALC_LALR and
172 AT_CHECK_CALC_GLR invocations to use % directives, instead of
173 command line options.
174 * tests/cxx-type.at: Formatting changes.
175
b02d90a5
PE
1762002-11-03 Paul Eggert <eggert@twinsun.com>
177
178 * src/scan-gram.l: Revamp to fix POSIX incompatibilities,
179 to count columns correctly, and to check for invalid inputs.
9e32add8 180
b02d90a5
PE
181 Use mbsnwidth to count columns correctly. Account for tabs, too.
182 Include mbswidth.h.
183 (YY_USER_ACTION): Invoke extend_location rather than LOCATION_COLUMNS.
184 (extend_location): New function.
185 (YY_LINES): Remove.
186
187 Handle CRLF in C code rather than in Lex code.
188 (YY_INPUT): New macro.
189 (no_cr_read): New function.
190
191 Scan UCNs, even though we don't fully handle them yet.
192 (convert_ucn_to_byte): New function.
193
194 Handle backslash-newline correctly in C code.
195 (SC_LINE_COMMENT, SC_YACC_COMMENT): New states.
196 (eols, blanks): Remove. YY_USER_ACTION now counts newlines etc.;
197 all uses changed.
198 (tag, splice): New EREs. Do not allow NUL or newline in tags.
199 Use {splice} wherever C allows backslash-newline.
200 YY_STEP after space, newline, vertical-tab.
201 ("/*"): BEGIN SC_YACC_COMMENT, not yy_push_state (SC_COMMENT).
9e32add8 202
b02d90a5
PE
203 (letter, id): Don't assume ASCII; e.g., spell out a-z.
204
205 ({int}, handle_action_dollar, handle_action_at): Check for integer
206 overflow.
9e32add8 207
b02d90a5
PE
208 (YY_STEP): Omit trailing semicolon, so that it's more like C.
209
210 (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>): Allow \0 and \00
211 as well as \000. Check for UCHAR_MAX, not 255.
212 Allow \x with an arbitrary positive number of digits, as in C.
213 Check for overflow here.
214 Allow \? and UCNs, for compatibility with C.
215
216 (handle_symbol_code_dollar): Use quote_n slot 1 to avoid collision
217 with quote slot used by complain_at.
218
219 * tests/input.at: Add tests for backslash-newline, m4 quotes
220 in symbols, long literals, and funny escapes in strings.
221
222 * configure.ac (jm_PREREQ_MBSWIDTH): Add.
223 * lib/Makefile.am (libbison_a_SOURCES): Add mbswidth.h, mbswidth.c.
224 * lib/mbswidth.h, lib/mbswidth.c: New files, from GNU gettext.
225 * m4/Makefile.am (EXTRA_DIST): Add mbswidth.m4.
226 * m4/mbswidth.m4: New file, from GNU coreutils.
227
228 * doc/bison.texinfo (Grammar Outline): Document // comments.
229 (Symbols): Document that trigraphs have no special meaning in Bison,
230 nor is backslash-newline allowed.
231 (Actions): Document that trigraphs have no special meaning.
232
233 * src/location.h (LOCATION_COLUMNS, LOCATION_LINES): Remove;
234 no longer used.
235
2362002-11-02 Paul Eggert <eggert@twinsun.com>
237
238 * src/reader.c: Don't include quote.h; not needed.
239 (get_merge_function): Reword warning to be consistent with
240 type clash diagnostic in grammar_current_rule_check.
241
242 * lib/quotearg.c (quotearg_buffer_restyled): Fix off-by-two
243 bug in trigraph handling.
244
245 * src/output.c (prepare_symbols): When printing token names,
246 escape "[" as "@<:@" and likewise for "]".
247
248 * src/system.h (errno): Remove declaration, as we are now
249 assuming C89 or better, and C89 guarantees errno.
250
762b212b
PE
2512002-10-30 Paul Eggert <eggert@twinsun.com>
252
253 * lib/bitset_stats.c (bitset_stats_read, bitset_stats_write):
254 Check for close failures.
255 * src/files.h (xfclose): Return void, not int, since it always
256 returned zero.
257 * src/files.c (xfclose): Likewise. Report I/O error if ferror
258 indicates one.
259 * src/output.c (output_skeleton): Use xfclose rather than fclose
260 and ferror. xfclose now checks ferror.
261
262 * data/glr.c (YYLEFTMOST_STATE): Remove.
263 (yyreportTree): Use a stack-based leftmost state. This avoids
264 our continuing battles with bogus warnings about initializers.
265
56100c60
AD
2662002-10-30 Akim Demaille <akim@epita.fr>
267
268 * src/system.h: Don't use #ifdef/#ifndef on HAVE_ values, only
269 #if.
270
51b4a04c
PH
2712002-10-29 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
272
273 * tests/glr-regr1.at: New test for reported regressions.
274 * tests/testsuite.at: Add glr-regr1.at test.
275 * tests/Makefile.am: Add glr-regr1.at test.
e183b123 276
bf1ebda2
PE
2772002-10-24 Paul Eggert <eggert@twinsun.com>
278
5c16c6b1
PE
279 Version 1.75a.
280
bf1ebda2
PE
281 * tests/calc.at (_AT_DATA_CALC_Y): Remove unused strcat declaration.
282 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Include stdlib.h, since
283 we use malloc. Don't assume 'A' through 'Z' are contiguous.
284 Don't assume strdup exists; POSIX says its an XSI extension.
285 Check for buffer overflow on input.
286
b526ee61
AD
2872002-10-24 Akim Demaille <akim@epita.fr>
288
289 * src/output.c (output_skeleton): Don't disable M4sugar comments
290 too soon: it results in comments being expanded.
291 * data/yacc.c, data/glr.c, data/lalr1.cc: Do it right before the
292 first output.
293
f1886bb2
AD
2942002-10-24 Akim Demaille <akim@epita.fr>
295
296 * data/yacc.c (m4_int_type): New.
297 * data/c.m4 (m4_int_type): Don't use yysigned_char, but `signed
298 char' as only yacc.c wants K&R portability.
299 * data/glr.c (yysigned_char): Remove.
300 * data/lalr1.cc: Rename the trailing b4_name as b4_parser_class_name.
301 Reported by Quoc Peyrot.
302
c5576256
PE
3032002-10-23 Paul Eggert <eggert@twinsun.com>
304
305 * src/main.c (main): With --trace=time, report times even if a
306 non-fatal error occurs. Formerly, the times were reported in some
307 such cases but not in others.
308 * src/reader.c (reader): Just return if a complaint has been issued,
309 instead of exiting, so that 'main' can report times.
310
27b0ffea
AD
3112002-10-22 Akim Demaille <akim@epita.fr>
312
313 * src/system.h: Include sys/types.
314 Reported by Bert Deknuydt.
315
223a7883
PE
3162002-10-23 Paul Eggert <eggert@twinsun.com>
317
318 * configure.ac (AC_PROG_LEX): Use instead of AM_PROG_LEX.
319 Suggested by Art Haas.
320
3212002-10-22 Paul Eggert <eggert@twinsun.com>
322
323 * src/complain.c (exit) [! (STDC_HEADERS || _LIBC)]: Remove exit
324 decl; not needed any more.
325 * src/main.c (main): Use return to exit, undoing yesterday's change.
326 The last OS that we could find where this wouldn't work is
327 SunOS 3.5, and that's too old to worry about now.
328
329 * data/glr.c (struct yyltype): Define members even when not
330 doing locations. This is more consistent with yacc.c, and it
331 works around the following bug reports:
332 http://mail.gnu.org/pipermail/bug-bison/2002-October/001764.html
333 http://mail.gnu.org/pipermail/bug-bison/2002-October/001769.html
334 and I hope it also fixes this bug report:
335 http://mail.gnu.org/pipermail/bug-bison/2002-October/001748.html
27b0ffea 336
223a7883
PE
337 * doc/bison.texinfo: Minor spelling and typographical fixes. Use
338 @acronym consistently. Standardize on "Yacc" instead of "YACC",
339 "Algol" instead of "ALGOL". Give a bit more history about BNF.
340
8b76775a
AD
3412002-10-22 Akim Demaille <akim@epita.fr>
342
343 * data/README: New.
344
6db10d14
PE
3452002-10-21 Paul Eggert <eggert@twinsun.com>
346
347 Be consistent about 'bool'; the old code used an enum in one
348 module and an int in another, and this violates the C standard.
349 * m4/stdbool.m4: New file, from coreutils 4.5.3.
350 * configure.ac (AC_HEADER_STDBOOL): Add.
351 * m4/Makefile.am (EXTRA_DIST): Add stdbool.m4.
352 * src/muscle_tab.c (hash_compare_muscles): (a ? FALSE : TRUE) -> (! a)
353 * src/symtab.c (hash_compare_symbol_t): Likewise.
354 * src/system.h (bool, false, true): Use a definition consistent
355 with ../lib/hash.c. All uses changed.
356
357 * src/complain.c (warning_issued): Renamed from warn_message_count,
358 so that we needn't worry about integer overflow (!).
359 Now of type bool. All uses changed.
360 (complaint_issued): Renamed from complain_message_count; likewise.
361
362 * src/main.c (main): Use exit to exit with failure.
27b0ffea 363
6db10d14
PE
364 * src/complain.c (fatal_at, fatal): Use EXIT_FAILURE and EXIT_SUCCESS
365 rather than 1 and 0.
366 * src/main.c (main): Likewise.
367 * src/getargs.c (getargs): Likewise.
368 * src/reader.c (reader): Likewise.
369
370 * src/getarg.c (getargs): Remove duplicate code for
371 "Try `bison --help'".
372
373 * src/files.c (xfopen, xfclose): Use EXIT_FAILURE rather than 2.
374 What was that "2" for?
375
376 * src/complain.h (fatal, fatal_at): Add __attribute__((__noreturn__)).
377 * src/getargs.c (usage): Likewise.
378
379 * src/getargs.c (getargs): When there are too few operands, report
380 the last one. When there are too many, report the first extra
381 one. This is how diffutils does it.
382
92a060fd
PE
3832002-10-20 Paul Eggert <eggert@twinsun.com>
384
385 Remove K&R vestiges.
386 * configure.ac (AC_C_CONST, AM_C_PROTOTYPES): Remove.
387 * src/complain.c (VA_START): Remove. Assume prototypes.
388 (vfprintf) [! (HAVE_VPRINTF || defined vfprintf)]: New macro.
389 (private_strerror, warn_at, warn, complain_at, complain, fatal_at,
390 fatal): Assume prototypes.
391 * src/complain.h: Assume prototypes.
392 * src/system.h (PARAMS): Remove.
393 Include <limits.h> unconditionally, since it's guaranteeed even
394 for a freestanding C89 compiler.
395 (SHRT_MIN, SHRT_MAX): Remove, since C89 guarantees them.
396 * src/vmsgetargs.c (getargs, cli_present, cli_get_value): Prototype.
8b76775a 397
e7cb57c0
AD
3982002-10-20 Akim Demaille <akim@epita.fr>
399
400 * src/muscle_tab.c (muscle_grow): Remove trailing debugging code.
401 * data/glr.c (YY_USER_FORMALS, YY_USER_ARGS): New.
402 (yyuserAction, yydoAction, yyglrReduce, yyresolveValue)
403 (yyresolveStates, yyresolveAction, yyresolveStack)
404 (yyprocessOneStack): Use them.
405 (yy_reduce_print): New.
406 * tests/calc.at (_AT_DATA_CALC_Y): Exercise %parse-param.
407
0245f82d
AD
4082002-10-20 Akim Demaille <akim@epita.fr>
409
410 * data/c.m4 (b4_c_ansi_args): Recognize functions with no
411 arguments and output `void'.
412 (b4_c_function): Rename as...
413 (b4_c_function_def): this.
414 (b4_c_function_decl, b4_c_ansi_function_def)
415 (b4_c_ansi_function_decl): New.
416 Change the interpretation of the arguments: before `int, foo', now
417 `int foo, foo'.
418 * data/yacc.c (yyparse): Prototype and define thanks to these.
419 Adjust b4_c_function_def uses.
420 * data/glr.c (yyparse): Likewise, but ANSI only.
421
39912f52
AD
4222002-10-20 Akim Demaille <akim@epita.fr>
423
424 * src/output.c (prepare): Move the definition of `tokens_number',
425 `nterms_number', `undef_token_number', `user_token_number_max'
426 to...
427 (prepare_tokens): Here.
428 (prepare_tokens): Rename as...
429 (prepare_symbols): this.
430 (prepare): Move the definition of `rules_number' to...
431 (prepare_rules): here.
432 (prepare): Move the definition of `last', `final_state_number',
433 `states_number' to...
434 (prepare_states): here.
435 * data/yacc.c, data/lalr1.cc, data/glr.c: Normalize `>' into `<'.
436
20c1e2ad
AD
4372002-10-20 Akim Demaille <akim@epita.fr>
438
439 * src/tables.h, src/tables.c, src/output.c: Comment changes.
440
21964f43
AD
4412002-10-20 Akim Demaille <akim@epita.fr>
442
443 * data/yacc.c, data/yacc.c (b4_location_if, b4_pure_if): Move to...
444 * data/c.m4: here.
445
66d30cd4
AD
4462002-10-20 Akim Demaille <akim@epita.fr>
447
448 * src/output.c (prepare): Use MUSCLE_INSERT_STRING.
449 * src/muscle_tab.c (muscle_pair_list_grow): Rename `val as
450 `pair'.
451 (muscle_init): Move the `b4_ltype', `b4_maxdepth', `b4_initdepth',
452 `name' to...
453 * data/glr.c, data/lalr1.cc, data/yacc.c (b4_location_type)
454 (b4_stack_depth_init, b4_stack_depth_max, b4_parser_class_name):
455 These.
456
95f2c9fe
PE
4572002-10-19 Paul Eggert <eggert@twinsun.com>
458
459 Do not create a temporary file, as that involves security and
460 cleanup headaches. Instead, use a pair of pipes.
461 Derived from a suggestion by Florian Krohm.
462 * lib/subpipe.c, lib/subpipe.h, m4/subpipe.m4: New files.
463 * lib/mkstemp.c, lib/readpipe.c, lib/tempname.c, m4/mkstemp.m4: Remove.
464 * configure.ac (UTILS_FUNC_MKSTEMP, jm_PREREQ_TEMPNAME): Remove.
465 (BISON_PREREQ_SUBPIPE): Add.
466 * lib/Makefile.am (libbison_a_SOURCES): Remove readpipe.c.
467 Add subpipe.h, subpipe.c.
468 * m4/Makefile.am (EXTRA_DIST): Remove mkstemp.m4. Add subpipe.m4.
469 * po/POTFILES.in: Add lib/subpipe.c.
470 * src/output.c: Include "subpipe.h".
471 (m4_invoke): Remove decl.
472 (scan_skel): New decl.
473 (output_skeleton): Use pipe rather than temporary file for m4 input.
474 Check that m4sugar.m4 is readable, to avoid deadlock.
475 Check for pipe I/O error.
476 * src/scan-skel.l (readpipe): Remove decl.
477 (scan_skel): New function, to be used in place of m4_invoke.
478 Read from stream rather than file.
66d30cd4 479
95f2c9fe
PE
480 * lib/timevar.c (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Do not cast to
481 float, as this generates a warning on Solaris 8 + GCC 3.2 with
482 --enable-gcc-warnings. Instead, divide into 1.0 rather than 1;
483 this generates a more-accurate value anyway.
484
485 * lib/timevar.c (timervar_accumulate): Rename locals to
486 avoid confusion with similarly-named more-global.
487 * src/muscle_tab.c (muscle_pair_list_grow): Likewise.
488
489 * src/output.c (prepare): Use xstrdup to convert char const *
490 to char *, to avoid GCC warning.
491
c19988b7
AD
4922002-10-19 Akim Demaille <akim@epita.fr>
493
494 * tests/calc.at (_AT_DATA_CALC_Y): Define VAL, LOC, LEX_FORMALS,
495 LEX_PRE_FORMALS, LEX_ARGS, LEX_PRE_ARGS, USE_LEX_ARGS.
496 Use them to have `calc.y' ready for %pure-parser.
497 * data/yacc.c (YYLEX): Pass a yylex return type to
498 b4_c_function_call.
499
ae7453f2
AD
5002002-10-19 Akim Demaille <akim@epita.fr>
501
502 Prototype support of %lex-param and %parse-param.
503
504 * src/parse-gram.y: Add the definition of the %lex-param and
505 %parse-param tokens, plus their rules.
506 Drop the `_' version of %glr-parser.
507 Add the "," token.
508 * src/scan-gram.l (INITIAL): Scan them.
509 * src/muscle_tab.c: Comment changes.
510 (muscle_insert, muscle_find): Rename `pair' as `probe'.
511 * src/muscle_tab.h (MUSCLE_INSERT_PREFIX): Remove unused.
512 (muscle_entry_s): The `value' member is no longer const.
513 Adjust all dependencies.
514 * src/muscle_tab.c (muscle_init): Adjust: use
515 MUSCLE_INSERT_STRING.
516 Initialize the obstack earlier.
517 * src/muscle_tab.h, src/muscle_tab.c (muscle_grow)
518 (muscle_pair_list_grow): New.
519 * data/c.m4 (b4_c_function_call, b4_c_args): New.
520 * data/yacc.c (YYLEX): Use b4_c_function_call to honor %lex-param.
521 * tests/calc.at: Use %locations, not --locations.
522 (AT_CHECK_CALC_GLR): Use %glr-parser, not %glr_parser.
523
0e575721
AD
5242002-10-19 Akim Demaille <akim@epita.fr>
525
526 * src/getargs.c (usage): Take status as argument and exit
527 accordingly.
528 Report the traditional `Try ... --help' message when status != 0.
529 (usage, version): Don't take a FILE * as arg, it is pointless.
530 (getargs): When there is an incorrect number of arguments, make it
531 an error, and report it GNUlically thanks to `usage ()'.
532
724ce7f5
PE
5332002-10-18 Paul Eggert <eggert@twinsun.com>
534
3a781eb2
PE
535 * data/glr.c (yyreportParseError): Don't assume that sprintf
536 yields the length of the printed string, as this is not true
537 on SunOS 4.1.4. Reported by Peter Klein.
538
724ce7f5
PE
539 * tests/calc.at (_AT_DATA_CALC_Y): #undef memcmp and realloc.
540 * tests/conflicts.at (%nonassoc and eof): Likewise.
541 Fixes SunOS 4.1.4 test failure reported by Peter Klein.
542
473d0a75
AD
5432002-10-17 Akim Demaille <akim@epita.fr>
544
545 * src/getargs.h (trace_e): Add trace_scan, and trace_parse.
546 * src/getargs.c (trace_types, trace_args): Adjust.
547 * src/reader.c (grammar_current_rule_prec_set)
548 (grammar_current_rule_dprec_set, grammar_current_rule_merge_set):
549 Standardize error messages.
550 And s/@prec/%prec/!
551 (reader): Use trace_flag to enable scanner/parser debugging,
552 instead of an adhoc scheme.
553 * src/scan-gram.l: Remove trailing debugging code.
554
e76d2469
PE
5552002-10-16 Paul Eggert <eggert@twinsun.com>
556
93e2236a
PE
557 * src/muscle_tab.h (MUSCLE_TAB_H_): Was misspelled as
558 MUSCLE_TAB_H.
559
e76d2469
PE
560 * NEWS: Officially drop support for building Bison with K&R C,
561 since it didn't work anyway and it's not worth worrying about.
562 * Makefile.maint (wget_files): Remove ansi2knr.c.
563 (ansi2knr.c-url_prefix): Remove.
564 * lib/.cvsignore: Remove ansi2knr, ansi2knr.*.
565 * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove.
566 * src/Makefile.am (AUTOMAKE_OPTIONS): Remove.
567
5bd1c419
PE
5682002-10-15 Paul Eggert <eggert@twinsun.com>
569
570 Stop using the "enum_" trick for K&R-style function definitions;
571 it confused me, and I was the author! Instead, assume that people
572 who want to use K&R C compilers (when using these modules in GCC,
573 perhaps?) will run ansi2knr.
574
575 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): Remove.
576 All uses of "enum_" changed to "enum ".
577 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
578 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
e76d2469 579
5bd1c419
PE
580 * lib/abitset.c (abitset_and, abitset_and_cmp, abitset_and_or,
581 abitset_and_or_cmp, abitset_andn, abitset_andn_cmp,
582 abitset_andn_or, abitset_andn_or_cmp, abitset_bytes, abitset_copy,
583 abitset_copy1, abitset_disjoint_p, abitset_empty_p,
584 abitset_equal_p, abitset_init, abitset_list, abitset_list_reverse,
585 abitset_not, abitset_ones, abitset_or, abitset_or_and,
586 abitset_or_and_cmp, abitset_or_cmp, abitset_reset, abitset_set,
587 abitset_size, abitset_small_list, abitset_subset_p, abitset_test,
588 abitset_unused_clear, abitset_xor, abitset_xor_cmp, abitset_zero):
589 Use function prototypes; this removes the need for declaring
590 static functions simply to provide their prototypes.
591 * lib/bitset.c (bitset_alloc, bitset_and_or_, bitset_and_or_cmp_,
592 bitset_andn_or_, bitset_andn_or_cmp_, bitset_bytes, bitset_copy_,
593 bitset_count_, bitset_create, bitset_dump, bitset_first,
594 bitset_free, bitset_init, bitset_last, bitset_next,
595 bitset_obstack_alloc, bitset_obstack_free, bitset_only_set_p,
596 bitset_op4_cmp, bitset_or_and_, bitset_or_and_cmp_, bitset_prev,
597 bitset_print, bitset_release_memory, bitset_toggle_,
598 bitset_type_choose, bitset_type_get, bitset_type_name_get,
599 debug_bitset): Likewise.
600 * lib/bitset.h (bitset_set, bitset_reset, bitset_test): Likewise.
601 * lib/bitset_stats.c (bitset_log_histogram_print,
602 bitset_percent_histogram_print, bitset_stats_and,
603 bitset_stats_and_cmp, bitset_stats_and_or,
604 bitset_stats_and_or_cmp, bitset_stats_andn, bitset_stats_andn_cmp,
605 bitset_stats_andn_or, bitset_stats_andn_or_cmp, bitset_stats_copy,
606 bitset_stats_count, bitset_stats_disable, bitset_stats_disjoint_p,
607 bitset_stats_dump, bitset_stats_empty_p, bitset_stats_enable,
608 bitset_stats_equal_p, bitset_stats_free, bitset_stats_init,
609 bitset_stats_list, bitset_stats_list_reverse, bitset_stats_not,
610 bitset_stats_ones, bitset_stats_or, bitset_stats_or_and,
611 bitset_stats_or_and_cmp, bitset_stats_or_cmp, bitset_stats_print,
612 bitset_stats_print_1, bitset_stats_read, bitset_stats_reset,
613 bitset_stats_set, bitset_stats_size, bitset_stats_subset_p,
614 bitset_stats_test, bitset_stats_toggle, bitset_stats_type_get,
615 bitset_stats_write, bitset_stats_xor, bitset_stats_xor_cmp,
616 bitset_stats_zero): Likewise.
617 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
618 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
619 bitsetv_dump, debug_bitsetv): Likewise.
620 * lib/ebitset.c (ebitset_and, ebitset_and_cmp, ebitset_andn,
621 ebitset_andn_cmp, ebitset_bytes, ebitset_copy, ebitset_copy_,
622 ebitset_copy_cmp, ebitset_disjoint_p, ebitset_elt_add,
623 ebitset_elt_alloc, ebitset_elt_calloc, ebitset_elt_find,
624 ebitset_elt_free, ebitset_elt_last, ebitset_elt_remove,
625 ebitset_elt_zero_p, ebitset_elts_grow, ebitset_empty_p,
626 ebitset_equal_p, ebitset_free, ebitset_init, ebitset_list,
627 ebitset_list_reverse, ebitset_not, ebitset_ones, ebitset_op3_cmp,
628 ebitset_or, ebitset_or_cmp, ebitset_release_memory, ebitset_reset,
629 ebitset_set, ebitset_size, ebitset_subset_p, ebitset_test,
630 ebitset_weed, ebitset_xor, ebitset_xor_cmp, ebitset_zero):
631 Likewise.
632 * lib/lbitset.c (debug_lbitset, lbitset_and, lbitset_and_cmp,
633 lbitset_andn, lbitset_andn_cmp, lbitset_bytes, lbitset_copy,
634 lbitset_copy_cmp, lbitset_disjoint_p, lbitset_elt_alloc,
635 lbitset_elt_calloc, lbitset_elt_find, lbitset_elt_free,
636 lbitset_elt_link, lbitset_elt_unlink, lbitset_elt_zero_p,
637 lbitset_empty_p, lbitset_equal_p, lbitset_free, lbitset_init,
638 lbitset_list, lbitset_list_reverse, lbitset_not, lbitset_ones,
639 lbitset_op3_cmp, lbitset_or, lbitset_or_cmp, lbitset_prune,
640 lbitset_release_memory, lbitset_reset, lbitset_set, lbitset_size,
641 lbitset_subset_p, lbitset_test, lbitset_weed, lbitset_xor,
642 lbitset_xor_cmp, lbitset_zero): Likewise.
e76d2469 643
ae26e1f0
AD
6442002-10-14 Akim Demaille <akim@epita.fr>
645
646 Version 1.75.
647
d43baf71
AD
6482002-10-14 Akim Demaille <akim@epita.fr>
649
650 * tests/Makefile.am (maintainer-check-posix): New.
651
7ebc83e3
AD
6522002-10-14 Akim Demaille <akim@epita.fr>
653
654 * data/glr.c [YYDEBUG] (YYLEFTMOST_STATE): Initialize the yyloc
655 member.
656
05846dae
AD
6572002-10-14 Akim Demaille <akim@epita.fr>
658
659 * src/tables.c (table_ninf_remap): base -> tab.
660 Reported by Matt Rosing.
661
1318e37d
PE
6622002-10-14 Paul Eggert <eggert@twinsun.com>
663
447fbb17
PE
664 * tests/action.at, tests/calc.at, tests/conflicts.at,
665 tests/cxx-type.at, tests/headers.at, tests/input.at,
666 tests/regression.at, tests/synclines.at, tests/torture.at:
667 Say "bison -o foo.c foo.y", not "bison foo.y -o foo.c",
668 so that the tests still work even if POSIXLY_CORRECT is set.
669 * doc/bison.texinfo (Rpcalc Compile, Invocation): Likewise.
05846dae 670
1318e37d
PE
671 * data/c.m4 (b4_int_type): Use yysigned_char instead of signed char,
672 for portability to K&R hosts. Fix typo: signed char is guaranteed
673 only to 127, not to 128.
674 * data/glr.c (yysigned_char): New type.
675 * data/yacc.c (yysigned_char): Likewise.
676 * tests/regression.at (Web2c Actions): signed char -> yysigned_char.
677
cc0f0794
PE
6782002-10-13 Paul Eggert <eggert@twinsun.com>
679
5038f418
PE
680 * data/yacc.c (yyparse): Rewrite to avoid "comparison is always
681 true due to limited range of data type" warning from GCC.
682
cc0f0794
PE
683 * data/c.m4 (b4_token_defines): Protect against double-inclusion
684 by wrapping enum yytokentype's definition inside #ifndef
685 YYTOKENTYPE. This undoes a bug I introduced on 2002-10-12.
686
6fed0802
AD
6872002-10-13 Akim Demaille <akim@epita.fr>
688
689 * data/glr.c (yyglrShiftDefer, yyaddDeferredAction, yydoAction):
690 Un yy- yyrhs to avoid the name clash with the global YYRHS.
691
32f0598d
AD
6922002-10-13 Akim Demaille <akim@epita.fr>
693
694 * Makefile.maint: Update from Autoconf 2.54.
695 * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Remove, shipped with 2.54.
696
7ea9a33f
AD
6972002-10-13 Akim Demaille <akim@epita.fr>
698
699 * src/print.c (print_state): Separate the list of solved conflicts
700 from the other items.
701 * tests/conflicts.at (Resolved SR Conflicts): Adjust.
702
ea99527d
AD
7032002-10-13 Akim Demaille <akim@epita.fr>
704
705 Let nondeterministic skeletons be usable with deterministic
706 tables.
707
708 With the patch, GAWK compiled by GCC without -O2 passes its test
709 suite using a GLR parser driven by LALR tables. It fails with -O2
710 because `struct stat' gives two different answers on my machine:
711 88 (definition of an auto var) and later 96 (memset on this var).
712 Hence the stack is badly corrumpted. The headers inclusion is to
713 blame: if I move the awk.h inclusion before GLR's system header
714 inclusion, the two struct stat have the same size.
715
716 * src/tables.c (pack_table): Always create conflict_table.
717 (token_actions): Always create conflict_list.
718 * data/glr.c (YYFLAG): Remove, unused.
719
f377f69f
AD
7202002-10-13 Akim Demaille <akim@epita.fr>
721
722 * configure.ac (AC_GNU_SOURCE): Use it instead of hand written code.
723 (O0FLAGS): New.
724 (VALGRIND, GXX): New.
725 * tests/atlocal.in (CFLAGS): Use O0FLAGS.
726 * tests/bison.in: Run $PREBISON a pre-command.
727 * tests/Makefile.am (maintainer-check, maintainer-check-valgrind)
728 (maintainer-check-g++): New.
729 * Makefile.am (maintainer-check): New.
730
2a1fe6ed
AD
7312002-10-13 Akim Demaille <akim@epita.fr>
732
733 * data/glr.c: Formatting changes.
734 Tweak some trace messages to match yacc.c's.
735
f50adbbd
AD
7362002-10-13 Akim Demaille <akim@epita.fr>
737
738 GLR parsers sometimes raise parse errors instead of performing the
739 default reduction.
740 Reported by Charles-Henry de Boysson.
741
742 * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't
743 check the length of the traces when %glr.
744 (_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from
745 GLR's traces.
746 (AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New.
747 Test GLR parsers.
748 * data/glr.c (YYLEFTMOST_STATE): Fix its value.
749 (yyltype): Remove the yy prefix from the member names.
750 (yytable): Complete its comment.
751 (yygetLRActions): Map error action number from YYTABLE from
752 YYTABLE_NINF to 0.
753 (yyisErrorAction): No longer compare YYACTION to YYPACT_NINF
754 (which was a bug: it should have been YYTABEL_NINF, and yet it was
755 not satisfying as we could compare an YYACTION computed from
756 YYDEFACT to YYTABLE_NINF although they are unrelated): 0 is the
757 only value for error actions.
758 (yyreportParseError): In verbose parse error messages, don't issue
759 `error' in the list of expected tokens.
760 * data/yacc.c (yyparse) <yybackup>: Rewrite the decoding of the
761 next action to perform to match glr.c's decoding.
762 (yytable): Complete its comment.
763
bcbad5b9
PE
7642002-10-13 Paul Eggert <eggert@twinsun.com>
765
766 Fix problem reported by Henrik Grubbstroem in
767 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001670.html>:
768 "nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected,
769 because the Bison parser reads the second action before reducing
770 the first one.
771 * src/scan-gram.l (rule_length): New static var.
772 Use it to keep track of the rule length in the scanner, since
773 we can't expect the parser to be in lock-step sync with the scanner.
774 (handle_action_dollar, handle_action_at): Use this var.
775 * tests/actions.at (Exotic Dollars): Test for the problem.
05846dae 776
14904b89
PE
7772002-10-12 Paul Eggert <eggert@twinsun.com>
778
1fe611e5
PE
779 * lib/timevar.c [! IN_GCC && HAVE_SYS_TIME_H]: Include <sys/time.h>.
780 * m4/timevar.m4 (BISON_PREREQ_TIMEVAR): Check for <sys/time.h>.
781 Include <sys/time.h> when checking for clock_t and struct tms.
782 Use same include order as source.
783 This is for the SunOS 4.1.4 porting bug reported by Peter Klein in
784 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001674.html>.
05846dae 785
1fe611e5
PE
786 * lib/timevar.c: Update copyright date and clarify comments.
787 (get_time) [IN_GCC]: Keep the GCC version for reference.
05846dae 788
1fe611e5
PE
789 * lib/timevar.c, lib/timevar.h, lib/timevar.def: Import
790 GCC version as of today, then merge Bison's changes.
791 Change "GCC" to "Bison" in copyright notice. timevar.def's
792 author is Akim, so change that too.
793
98194095
PE
794 * src/reader.c (grammar_current_rule_check):
795 Don't worry about the default action if $$ is untyped.
796 Prevents bogus warnings reported by Jim Gifford in
797 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001673.html>.
798
14904b89
PE
799 * data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE.
800 * data/glr.c, data/lalr1.cc, data/yacc.c:
801 Output token definitions before the first part of user declarations.
802 Fixes compatibility problem reported by Jim Gifford for kbd in
803 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001672.html>.
804
ff6dca18
PE
8052002-10-11 Paul Eggert <eggert@twinsun.com>
806
807 * data/yacc.c (yyreport_parse_error): Remove, putting its body into...
808 (yyparse): here. This undoes some of the 2002-07-25 change.
809 Compatibility problem reported by Ralf S. Engelschall with
810 OSSP cfg <http://www.ossp.org/pkg/lib/cfg/>.
811
eb714592
AD
8122002-10-11 Akim Demaille <akim@epita.fr>
813
814 * tests/regression.at Characters Escapes): New.
815 * src/scan-gram.l (SC_ESCAPED_CHARACTER): Accept \' in strings and
816 characters.
817 Reported by Jan Nieuwenhuizen.
818
b7195100
AD
8192002-10-11 Akim Demaille <akim@epita.fr>
820
821 * po/id.po: New.
822
f28a0f2d
PE
8232002-10-10 Paul Eggert <eggert@twinsun.com>
824
825 Portability fixes for bitsets; this also avoids several GCC
826 warnings.
827
828 * lib/abitset.c: Include <stddef.h>, for offsetof.
829 * lib/lbitset.c: Likewise.
830
831 * lib/abitset.c (abitset_bytes): Return a size that is aligned
832 properly for vectors of objects. Do not assume that adding a
833 header size to a multiple of a word size yields a value that is
834 properly aligned for the whole union.
835 * lib/bitsetv.c (bitsetv_alloc): Likewise.
836
837 * lib/bitset_stats.c (bitset_stats_bytes): Adjust to new,
838 unique names for structures.
839 * lib/ebitset.c (ebitset_bytes): Likewise.
840 * lib/lbitset.c (lbitset_bytes): Likewise.
841
842 * lib/abitset.c (abitset_ones, abitset_zero, abitset_empty_p,
843 abitset_copy1, abitset_not, abitset_equal_p, abitset_subset_p,
844 abitset_disjoint_p, abitset_and, abitset_and_cmp, abitset_andn,
845 abitset_andn_cmp, abitset_or, abitset_or_cmp, abitset_xor,
846 abitset_xor_cmp, abitset_and_or, abitset_and_or_cmp,
847 abitset_andn_or, abitset_andn_or_cmp, abitset_or_and,
848 abitset_or_and_cmp, abitset_copy): Supply prototype decls,
849 to improve the type-checking that GCC can do.
850 * lib/bitset.c (bitset_op4_cmp): Likewise.
851 * lib/bitset_stats.c (bitset_stats_count,
852 bitset_stats_empty_p, bitset_stats_ones, bitset_stats_zero,
853 bitset_stats_copy, bitset_stats_disjoint_p,
854 bitset_stats_equal_p, bitset_stats_not, bitset_stats_subset_p,
855 bitset_stats_and, bitset_stats_and_cmp, bitset_stats_andn,
856 bitset_stats_andn_cmp, bitset_stats_or, bitset_stats_or_cmp,
857 bitset_stats_xor, bitset_stats_xor_cmp, bitset_stats_and_or,
858 bitset_stats_and_or_cmp, bitset_stats_andn_or,
859 bitset_stats_andn_or_cmp, bitset_stats_or_and,
860 bitset_stats_or_and_cmp): Likewise.
861 * lib/lbitset.c (lbitset_and, lbitset_and_cmp, lbitset_andn,
862 lbitset_andn_cmp, lbitset_or, lbitset_or_cmp, lbitset_xor,
863 lbitset_xor_cmp, lbitset_empty_p, lbitset_ones, lbitset_not,
864 lbitset_subset_p, lbitset_disjoint_p, debug_lbitset): Likewise.
865
866 * lib/abitset.h: Include bitset.h, not bbitset.h.
867 * lib/ebitset.h: Likewise.
868 * lib/lbitset.h: Likewise.
869
870 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): New types.
871 All instances of parameters of type enum bitset_opts are now of
872 type enum_bitset_opts, to conform to the C Standard, and similarly
873 for enum_bitset_type.
874 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
875 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
876
877 Do not use "struct bitset_struct" to mean different things in
878 different modules. Not only is this confusing, it violates
879 the C Standard, which requires that structure types in different
880 modules must be compatible if one is to be passed to the other.
881 * lib/bbitset.h (bitset): Now points to a union, not to a struct.
882 All instances of "struct bitset_struct *" replaced with "bitset".
883 * lib/bitset.h (struct bitset_struct): Remove, replacing with....
884 (union bitset_union, struct abitset_struct, struct ebitset_struct,
885 struct lbitset_struct, struct bitset_stats_struct): New types.
886 All uses of struct bitset_struct changed to union bitset_union,
887 etc.
888 * lib/abitset.c (struct abitset_struct, abitset,
889 struct bitset_struct): Remove.
890 * lib/bitset_stats.c (struct bitset_stats_struct, bitset_stats,
891 struct bitset_struct): Remove.
892 * lib/ebitset.c (struct ebitset_struct, ebitset, struct
893 bitset_struct): Remove.
894 * lib/lbitset.c (struct lbitset_struct, lbitset, bitset_struct):
895 Likewise.
896
897 Do not call a function of type T using a call that assumes the
898 function is of a different type U. Standard C requires that a
899 function must be called with a type that is compatible with its
900 definition.
901 * lib/bbitset.h (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
902 New decls.
903 * lib/bitset.c (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
904 New functions.
905 * lib/ebitset.c (PFV): Remove.
906 * lib/lbitset.c (PFV): Likewise.
907 * lib/ebitset.c (ebitset_and, ebitset_andn, ebitset_or,
908 ebitset_xor, ebitset_copy, ebitset_ones, ebitset_empty_p): New
909 decls.
910 (ebitset_and, ebitset_andn, ebitset_or, ebitset_xor): New functions.
911 (ebitset_vtable): Use them.
912 * lib/lbitset.c (lbitset_and, lbitset_andn, lbitset_or,
913 lbitset_xor): New functions.
914 (lbitset_vtable): Use them.
915
916 * lib/bitset.h (bitset_next, bitset_prev, bitset_only_set_p):
917 Declare.
918
919 * lib/bitsetv.c (bitsetv_alloc): Add a cast to (void *) to avoid a
920 GCC warning.
921 * lib/lbitset.c (LBITSET_CURRENT1): Likewise.
922 Use offsetof, for simplicity.
923
6fbe4984
PE
9242002-10-06 Paul Eggert <eggert@twinsun.com>
925
926 * lib/bitset.h (bitset_reset): Do not assume that bitset_word is
927 the same width as int. This reapplies a hunk of the 2002-08-12 patch
928 <http://mail.gnu.org/pipermail/bison-patches/2002-August/001111.html>,
929 which was inadvertently undone by the 2002-09-30 patch.
930 * lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is
931 the same width as int.
932
420f93c8
PE
9332002-10-04 Paul Eggert <eggert@twinsun.com>
934
935 Version 1.50.
936
937 * configure.ac (AC_INIT), NEWS: Increment version number.
938
939 * doc/bison.texinfo: Minor spelling, grammar, and white space
940 fixes.
941 (Symbols): Mention that any negative value returned from yylex
942 signifies end-of-input. Warn about negative chars. Mention
943 the portable Standard C character set.
944
945 The GNU coding standard says CFLAGS and YFLAGS are reserved
946 for the installer to set.
947 * lib/Makefile.am (AM_CFLAGS): Renamed from CFLAGS.
948 * src/Makefile.am (AM_CFLAGS): Likewise.
949 (AM_YFLAGS): Renamed from YFLAGS.
950
951 Fix some MAX and MIN problems.
952 * src/gram.h (ITEM_NUMBER_MIN): MIN_MAX -> INT_MIN.
953 * src/lalr.h (GOTO_NUMBER_MAX): INT_MAX -> SHRT_MAX.
954 * src/symtab.h (SYMBOL_NUMBER_MAX): New macro.
955 * src/reader.c (reader): Use it.
956
957 * tests/regression.at (Braces parsing): Use grep, not fgrep, as
958 POSIX 1003.1-2001 has removed fgrep.
959
9602002-10-04 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
961
962 * lib/bbitset.h (BITSET_WINDEX_MAX): Redefine so that it cannot be
963 interpreted as signed.
964 * lib/ebitset.c (ebitset_list): Fix bug.
965
ff68026d
PE
9662002-10-01 Paul Eggert <eggert@twinsun.com>
967
968 More fixes for 64-bit hosts and large bitsets.
969
970 * lib/abitset.c (struct abitset_struct.n_bits, abitset_small_list,
971 abitset_size, abitset_list, abitset_list_reverse, abitset_list):
972 Use bitset_bindex, not int or unsigned int or size_t, to count bits.
973 * lib/bbitset.h (struct bitset_vtable.size, struct bitset_vtable.count,
974 struct bitset_vtable.list, struct bitset_vtable.list_reverse,
975 bitset_count_, bitset_next, bitset_prev, bitset_first, bitset_last,
976 bitset_count_): Likewise.
977 * lib/bitset.h (bitset_iterator.num, bitset_iterator.i,
978 bitset_first, bitset_last): Likewise.
979 * lib/bitset_stats.c (bitset_stats_size, bitset_stats_list,
980 bitset_stats_list_reverse, bitset_stats_size,
981 bitset_stats_count, bitset_stats_list, bitset_stat_list_reverse):
982 Likewise.
983 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
984 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
985 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
986 bitsetv_reflexive_transitive_closure): Likewise.
987 * lib/bitsetv.h (bitsetv_alloc, bitsetv_create): Likewise.
988 * lib/ebitset.c (ebitset_size, ebitset_list, ebitset_list_reverse):
989 Likewise.
990 * lib/lbitset.c (lbitset_size, lbitset_list, lbitset_list_merge):
991 Likewise.
420f93c8 992
ff68026d
PE
993 * lib/abitset.c (abitset_ones, abitset_zero, abitset_bytes):
994 Use size_t, not unsigned int, to count bytes.
995 * lib/abitset.h (abitset_bytes): Likewise.
996 * lib/bitset.c (bitset_bytes, bitset_alloc, bitset_obstack_alloc):
997 Likewise.
998 * lib/bitset.h (bitset_bytes): Likewise.
999 * lib/bitset_stats.c (bitset_stats_bytes, bitset_stats_init): Likewise.
1000 * lib/bitset_stats.h (bitset_stats_bytes): Likewise.
1001 * lib/bitsetv.c (bitsetv_alloc): Likewise.
1002 * lib/ebitset.c (ebitset_bytes): Likewise.
1003 * lib/ebitset.h (ebitset_bytes): Likewise.
1004 * lib/lbitset.c (lbitset_bytes): Likewise.
1005 * lib/lbitset.h (lbitset_bytes): Likewise.
420f93c8 1006
ff68026d
PE
1007 * lib/abitset.c (abitset_empty_p, abitset_not, abitset_equal_p,
1008 abitset_subset_p, abitset_disjoint_p, abitset_and,
1009 abitset_and_cmp, abitset_andn, abitset_andn_cmp, abitset_or,
1010 abitset_or_cmp, abitset_xor, abitset_xor_cmp, abitset_and_or,
1011 abitset_and_or_cmp, abitset_andn_or, abitset_andn_or_cmp,
1012 abitset_or_and, abitset_or_and_cmp):
1013 Use bitset_windex instead of unsigned int.
1014 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
1015 * lib/ebitset.c (struct ebitset_struct.size, ebitset_elts_grow,
1016 ebitset_elt_add, ebitset_elt_remove, ebitset_weed,
1017 ebitset_elt_find, ebitset_list_reverse, ebitset_list, ebitset_init):
1018 Likewise.
1019 * lib/lbitset.c (lbitset_ones, lbitset_not): Likewise.
420f93c8 1020
ff68026d
PE
1021 * lib/bitset.c (bitset_print):
1022 Use proper printf formats for widths of integer types.
1023 * lib/bitset_stats.c (bitset_percent_histogram_print,
1024 bitset_log_histogram_print, bitset_stats_print_1): Likewise.
1025 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
1026 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
1027 * lib/lbitset.c (lbitset_bytes): Likewise.
420f93c8 1028
ff68026d
PE
1029 * lib/bbitset.h (BITSET_BINDEX_MAX, BITSET_WINDEX_MAX,
1030 BITSET_SIZE_MAX): New macros.
1031 (BITSET_INDEX_MAX): Remove. It wasn't right, since it assumed that
1032 sizeof (bitset_word) == sizeof (bitset_windex). All uses changed
1033 to BITSET_WINDEX_MAX.
1034
1035 * lib/bitset.c (bitset_next, bitset_prev, bitset_first,
1036 bitset_last): Return BITSET_BINDEX_MAX (not -1) for no value,
1037 since we now return the bitset_bindex type (not int).
1038
1039 * lib/bitsetv.c (bitsetv_alloc): Check for arithmetic overflow
1040 when computing sizes.
1041 * lib/ebitset.c (ebitset_elts_grow): Likewise.
1042
1043 * lib/lbitset.c (lbitset_elt_find): Simplify windex calculation
1044 and avoid cast to unsigned.
1045
6aa452a6
AD
10462002-09-30 Akim Demaille <akim@epita.fr>
1047
1048 * lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
1049 * lib/bitset_stats.c, lib/bitsetv.c, lib/ebitset.c, lib/lbitset.c:
1050 Updates from Michael Hayes.
1051
927f7817
AD
10522002-09-30 Art Haas <ahaas@neosoft.com>
1053
1054 * configure.ac: Update AC_OUTPUT and AM_CONFIG_HEADER
1055 invocations.
1056 * tests/cxx-type.at (declarator): Don't rely on NDEBUG being not
1057 defined.
1058
9738f41e
AD
10592002-09-27 Akim Demaille <akim@epita.fr>
1060
1061 Version 1.49c.
1062
a5c75d7f
AD
10632002-09-27 Akim Demaille <akim@epita.fr>
1064
1065 * configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7.
1066 (Because of AC_LIBSOURCE).
1067
8280e179
AD
10682002-09-27 Akim Demaille <akim@epita.fr>
1069
1070 Playing with Autoscan.
1071
1072 * configure.ac: Remove the old LIBOBJ tweaks.
1073 (AC_REPLACE_FUNCS): Add strrchr and strtol.
1074 * lib/strrchr.c: New.
1075 * lib/strtol.c: New, from the Coreutils 4.5.1.
1076
ae64af35
AD
10772002-09-27 Akim Demaille <akim@epita.fr>
1078
1079 Playing with Autoscan.
1080
1081 * m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New.
1082 * lib/Makefile.am (libbison_a_SOURCES): No longer include
1083 argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd.
1084 * lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the
1085 Coreutils 4.5.1.
1086
d1a1114f
AD
10872002-09-24 Akim Demaille <akim@epita.fr>
1088
1089 * doc/bison.texinfo (Stack Overflow): xref to Recursion.
1090 (Frequently Asked Questions, Parser Stack Overflow): New.
1091
b906441c
AD
10922002-09-13 Akim Demaille <akim@epita.fr>
1093
1094 Playing with autoscan.
1095
1096 * src/reader.c (get_merge_function): Use xstrdup, not strdup.
1097 * src/files.c (skeleton_find): Remove, unused.
1098 * m4/memcmp.m4: New, from the Coreutils 4.5.1.
1099 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP.
1100
bd701811
AD
11012002-09-13 Akim Demaille <akim@epita.fr>
1102
1103 * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3.
1104 * Makefile.am (AUTOMAKE_OPTIONS): Don't.
1105
e0a13e7b
AD
11062002-09-13 Akim Demaille <akim@epita.fr>
1107
1108 * configure.ac: Require 2.54.
1109 s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/.
1110 s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/.
1111 * m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4:
1112 Remove, provided by Autoconf macros.
1113
c97011bf
AD
11142002-09-12 Akim Demaille <akim@epita.fr>
1115
1116 * m4/prereq.m4: Update, from Coreutils 4.5.1.
1117
d862b1be
AD
11182002-09-12 Akim Demaille <akim@epita.fr>
1119
1120 * m4/prereq.m4: Update, from Fileutils 4.1.5.
1121 * configure.ac (jm_PREREQ_TEMPNAME): Invoke it.
1122 Reported by Martin Mokrejs.
1123
3d38c03a
AD
11242002-09-10 Akim Demaille <akim@epita.fr>
1125
1126 * src/parse-gram.y: Associate a human readable string to each
1127 token type.
1128 * tests/regression.at (Invalid inputs): Adjust.
1129
b6347355
AD
11302002-09-10 Gary V. Vaughan <gary@gnu.org>
1131
1132 * tests/Makefile.am ($(srcdir)/package.m4): Bison now ships
1133 with an Autoconf-2.5x style configure.ac.
1134
09ba4ab2
PE
11352002-09-06 Paul Eggert <eggert@twinsun.com>
1136
1137 * doc/bison.texinfo (Conditions): Make explicit that the GPL
1138 exception applies only to yacc.c. This is a modification of a
1139 patch originally suggested by Akim Demaille.
1140
21846f69
AD
11412002-09-06 Akim Demaille <akim@epita.fr>
1142
09ba4ab2
PE
1143 * data/c.m4 (b4_copyright): Move the GPL exception comment from
1144 here to...
1145 * data/yacc.c: here.
1146
21846f69
AD
1147 * data/lalr1.cc (struct yyltype): Don't define it, since we use
1148 LocationType.
1149 (b4_ltype): Default to yy::Location from location.hh.
1150
c0ad8bf3
AD
11512002-09-04 Jim Meyering <jim@meyering.net>
1152
1153 * data/yacc.c: Guard the declaration of yytoknum also with
1154 `#ifdef YYPRINT', so it is declared only when used.
1155
3a93251e
AD
11562002-09-04 Akim Demaille <akim@epita.fr>
1157
1158 * configure.in: Rename as...
1159 * configure.ac: this.
1160 Bump to 1.49c.
1161
427c0dda
AD
11622002-09-04 Akim Demaille <akim@epita.fr>
1163
1164 * src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
1165 * src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
1166 translate maintainer only messages.
1167
6a254321
PE
11682002-08-12 Paul Eggert <eggert@twinsun.com>
1169
645e30d1
PE
1170 Version 1.49b.
1171
6a254321
PE
1172 * Makefile.am (SUBDIRS): Remove intl.
1173 (DISTCLEANFILES): Remove.
1174 * NEWS: Mention that GNU M4 is now required. Clarify what is
1175 meant by "larger grammars". Mention the pt_BR translation.
1176 * configure.in (AC_CHECK_DECLS): Add getenv, getopt.
1177 (AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var.
1178 Bump version from 0.11.2 to 0.11.5.
1179 (BISON_PREREQ_STAGE): Remove.
1180 (AM_GNU_GETTEXT): Use external gettext.
1181 (AC_OUTPUT): Remove intl/Makefile.
1182
1183 * config/depcomp, config/install-sh: Sync with Automake 1.6.3.
1184
1185 * data/glr.c: Include string.h, for strlen.
1186 (yyreportParseError): Use size_t for yysize.
1187 (yy_yypstack): No longer nested inside yypstates, as nested
1188 functions are not portable. Do not assume size_t is the
1189 same width as int.
1190 (yypstates): Do not assume that ptrdiff_t is the same width
1191 as int, and similarly for yyposn and YYINDEX.
1192
1193 * data/yacc.c: Fix comment about `$$ = $1': it can copy garbage.
1194
1195 * lib/Makefile.am (INCLUDES): Do not include from the intl
1196 directory, which has been removed.
1197 * src/Makefile.am (INCLUDES): Likewise.
1198
1199 * lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h.
1200 (bitsets_sources, additional_bitsets_sources, timevars_sources):
1201 New vars.
1202
1203 * lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension.
1204 * tests/Makefile.am (EXTRA_DIST): Likewise.
1205
1206 * lib/abitset.c (abitset_reverse_list, ebitset_reverse_list):
1207 Do not assume that bitset_windex is the same width as unsigned.
1208
1209 * lib/abitset.c (abitset_unused_clear): Do not assume that
1210 bitset_word is the same width as int.
1211 * lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise.
1212 * lib/bitset.h (bitset_set, bitset_reset): Likewise.
1213 * lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise.
1214 * lib/ebitset.c (ebitset_set, ebitset_reset): Likewise.
1215 * lib/lbitset.c (lbitset_set, lbitset_reset): Likewise.
1216
1217 * lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for
1218 portability to one's complement hosts!).
1219 * lib/ebitset.c (ebitset_op1): Likewise.
1220 * lib/lbitset.c (lbitset_op1): Likewise.
1221
1222 * lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar.
1223 * lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
1224 lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c:
1225 Sync with fileutils.
1226 * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
1227 lib/gettext.h: Sync with diffutils.
1228
1229 * lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c,
1230 lib/strspn.c, lib/tempname.c: Use GPL, not LGPL.
1231
1232 * lib/obstack.c, lib/obstack.h: Sync with fileutils, except use
1233 PROTOTYPES to check for prototypes, and "defined __STDC__" to
1234 check for void *.
1235
1236 * lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not
1237 size_t; the old version tried to do this but casted improperly.
1238 (bitset_bindex, bitset_windex): Now size_t, not unsigned long.
1239 (bitset_test): Now returns int, not unsigned long.
1240
1241 * lib/bitset_stats.c: Include "gettext.h".
1242 (_): New macro.
1243 (bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't
1244 name locals "index", as it generates unnecessary warnings on some
1245 hosts that have an "index" function.
1246
1247 * lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print,
1248 bitset_stats_read, bitset_stats_write): Wrap strings in _() if
1249 they need translation.
1250 * src/LR0.c (state_list_append, new_itemsets, get_state,
1251 append_states, generate_states): Likewise.
1252 * src/assoc.c (assoc_to_string): Likewise.
1253 * src/closure.c (print_closure, set_firsts, closure): Likewise.
1254 * src/gram.c (grammar_dump): Likewise.
1255 * src/injections.c (injections_compute): Likewise.
1256 * src/lalr.c (lookaheads_print): Likewise.
1257 * src/relation.c (relation_transpose): Likewise.
1258 * src/scan-gram.l: Likewise.
1259 * src/tables.c (table_grow, pack_vector): Likewise.
1260
1261 * m4/Makefile.am (EXTRA_DIST): Remove codeset.m4,
1262 glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4.
1263 * m4/malloc.m4, m4/realloc.m4: Sync with diffutils.
1264 * m4/mbstate_t.m4: Sync with fileutils.
1265 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T.
1266
1267 * po/LINGUAS: Add pt_BR.
1268 * po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c,
1269 src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c,
1270 lib/timevar.c.
1271 Use src/parse-gram.y instead of src/parse-gram.c, as the gettext
1272 manual recommends.
1273 Similarly, use src/scan-gram.l instead of src/scan-gram.c.
1274
1275 * src/complain.c (strerror_r): Remove decl; not needed.
1276 (strerror): Use same pattern as ../lib/error.c.
1277
1278 * src/files.c, src/files.h (compute_header_macro): Remove; unused.
1279
1280 * src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int.
1281
1282 * src/main.c (main): Cast result of bindtextdomain and textdomain
1283 to void, to avoid a GCC warning when --disable-nls is in effect.
1284
1285 * src/scan-gram.l: Use strings rather than escapes when possible,
1286 to minimize the number of warnings from xgettext.
1287 (handle_action_dollar, handle_action_at): Don't use isdigit,
1288 as it mishandles negative chars and it may not work as expected
1289 outside the C locale.
1290
1291 * src/symtab.c (symbol_get): Don't cast LHS of an assignment;
1292 this is a GCC extension and is not portable to other compilers.
1293
1294 * src/system.h (alloca): Use same pattern as ../lib/error.c.
1295 Do not include <ctype.h>; no longer needed.
1296 Do not include <malloc.h>; no longer needed (and generates
1297 warnings on OpenBSD 3.0).
1298
1299 * tests/cxx-type.at (yylex): Do not pass signed char to isupper;
1300 it's not portable.
1301
1302 * tests/regression.at: Do not use 'cc -c input.c -o input';
1303 Sun C rejects this. Instead, use 'cc -c input.c -o input.o'.
1304
1305 * tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero
1306 exit status as failure, not just exit status 1. Sun C exits
1307 with status 2 sometimes.
1308
1309 * tests/torture.at (AT_INCREASE_DATA_SIZE): New macro.
1310 Use it for the two large tests.
1311
c8f002c7
AD
13122002-08-02 Akim Demaille <akim@epita.fr>
1313
1314 * src/conflicts.c (conflicts_output): Don't output rules never
1315 reduced here, since anyway that computation doesn't work.
1316 * src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
1317 (rule_useless_p, rule_never_reduced_p): New.
1318 (grammar_rules_partial_print): Use a filter instead of a range.
1319 Display the title only if needed.
1320 (grammar_rules_print): Adjust.
1321 (grammar_rules_never_reduced_report): New.
1322 * src/tables.c (action_row): Move the computation of rules never
1323 reduced to...
1324 (token_actions): here.
1325 * src/main.c (main): Make the parser before making the report, so
1326 that rules never reduced are computed.
1327 Call grammar_rules_never_reduced_report.
1328 * src/print.c (print_results): Report rules never reduced.
1329 * tests/conflicts.at, tests/reduce.at: Adjust.
1330
cd08e51e
AD
13312002-08-01 Akim Demaille <akim@epita.fr>
1332
1333 Instead of attaching lookaheads and duplicating the rules being
1334 reduced by a state, attach the lookaheads to the reductions.
1335
1336 * src/state.h (state_t): Remove the `lookaheads',
1337 `lookaheads_rule' member.
1338 (reductions_t): Add a `lookaheads' member.
1339 Use a regular array for the `rules'.
1340 * src/state.c (reductions_new): Initialize the lookaheads member
1341 to 0.
1342 (state_rule_lookaheads_print): Adjust.
1343 * src/state.h, src/state.c (state_reductions_find): New.
1344 * src/conflicts.c (resolve_sr_conflict, set_conflicts)
1345 (count_rr_conflicts): Adjust.
1346 * src/lalr.c (LArule): Remove.
1347 (add_lookback_edge): Adjust.
1348 (state_lookaheads_count): New.
1349 (states_lookaheads_initialize): Merge into...
1350 (initialize_LA): this.
1351 (lalr_free): Adjust.
1352 * src/main.c (main): Don't free nullable and derives too early: it
1353 is used by --verbose.
1354 * src/print.c, src/print_graph.c, src/tables.c: Adjust.
1355
bb0027a9
AD
13562002-08-01 Akim Demaille <akim@epita.fr>
1357
1358 * src/derives.h, src/derives.c (derives): A `rule_t***' instead of
1359 `rule_number_t**'.
1360 (set_derives, free_derives): Rename as...
1361 (derives_compute, derives_free): this.
1362 Adjust all dependencies.
1363 * src/nullable.c (set_nullable, free_nullable): Rename as...
1364 (nullable_compute, nullable_free): these.
1365 (rule_list_t): Store rule_t *, not rule_number_t.
1366 * src/state.c (state_rule_lookaheads_print): Directly compare rule
1367 pointers, instead of their numbers.
1368 * src/main.c (main): Call nullable_free, and derives_free earlier,
1369 as they were lo longer used.
1370
3325ddc4
AD
13712002-08-01 Akim Demaille <akim@epita.fr>
1372
1373 * lib/timevar.c (get_time): Include children time.
1374 * src/lalr.h (LA, LArule): Don't export them: used with the
1375 state_t.
1376 * src/lalr.c (LA, LArule): Static.
1377 * src/lalr.h, src/lalr.c (lalr_free): New.
1378 * src/main.c (main): Call it.
1379 * src/tables.c (pack_vector): Check whether loc is >= to the
1380 table_size, not >.
1381 (pack_tables): Don't free froms, tos, conflict_tos, and pos...
1382 (tables_generate): do it, since that's also it which allocates
1383 them.
1384 Don't free LA and LArule, main does.
1385
c6f1a33c
AD
13862002-07-31 Akim Demaille <akim@epita.fr>
1387
1388 Separate parser tables computation and output.
1389
1390 * src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
1391 (conflict_list, conflict_list_cnt, table, check, table_ninf)
1392 (yydefgoto, yydefact, high): Move to...
1393 * src/tables.h, src/tables.c: here.
1394 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
1395 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
1396 (symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
1397 (froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
1398 (ACTION_MIN, actrow, order, nentries, pos, conflrow)
1399 (conflict_list_free, table_size, lowzero, table_grow, conflict_row)
1400 (action_row, save_row, token_actions, save_column, default_goto)
1401 (goto_actions, sort_actions, matching_state, pack_vector)
1402 (table_ninf_remap, pack_table, prepare_actions): Move to...
1403 * src/tables.c: here.
1404 * src/tables.h, src/tables.c(tables_generate, tables_free): New.
1405 * src/output.c (token_actions, output_base, output_conflicts)
1406 (output_check): Merge into...
1407 (prepare_actions): this.
1408 (actions_output): Rename as...
1409 (user_actions_output): this.
1410 * src/main.c (main): Call tables_generate and tables_free.
1411
1509d42f
AD
14122002-07-31 Akim Demaille <akim@epita.fr>
1413
1414 Steal GCC's --time-report support.
1415
1416 * lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
1417 stolen/adjusted from GCC.
1418 * m4/stage.m4: Remove time related checks.
1419 * m4/timevar.m4: New.
1420 * configure.in: Adjust.
1421 * src/system.h: Adjust to using timevar.h.
1422 * src/getargs.h, src/getargs.c: Support trace_time for
1423 --trace=time.
1424 * src/main.c (stage): Remove.
1425 (main): Replace `stage' invocations with timevar calls.
1426 * src/output.c: Insert pertinent timevar calls.
1427
273a74fa
AD
14282002-07-31 Akim Demaille <akim@epita.fr>
1429
1430 Let --trace have arguments.
1431
1432 * src/getargs.h (enum trace_e): New.
1433 * src/getargs.c (trace_args, trace_types, trace_argmatch): New.
1434 (long_options, short_options): --trace/-T takes an optional
1435 argument.
1436 Change all the uses of trace_flag to reflect the new flags.
1437 * tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.
1438
1439 Strengthen `stage' portability.
1440
1441 * m4/stage.m4 (BISON_PREREQ_STAGE): New.
1442 * configure.in: Use it.
1443 Don't check for malloc.h and sys/times.h.
1444 * src/system.h: Include them when appropriate.
1445 * src/main.c (stage): Compile only when mallinfo, struct mallinfo,
1446 times and struct tms are available.
1447
217598da
AD
14482002-07-30 Akim Demaille <akim@epita.fr>
1449
1450 In verbose parse error message, don't report `error' as an
1451 expected token.
1452 * tests/actions.at (Printers and Destructors): Adjust.
1453 * tests/calc.at (Calculator $1): Adjust.
1454 * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
1455 error message, do not report the parser accepts the error token in
1456 that state.
1457
52489d44
AD
14582002-07-30 Akim Demaille <akim@epita.fr>
1459
1460 Normalize conflict related messages.
1461
1462 * src/complain.h, src/complain.c (warn, complain): New.
1463 * src/conflicts.c (conflicts_print): Use them.
1464 (conflict_report_yacc): New, extracted from...
1465 (conflicts_print): here.
1466 * tests/conflicts.at, tests/existing.at: Adjust.
1467
e8832397
AD
14682002-07-30 Akim Demaille <akim@epita.fr>
1469
1470 Report rules which are never reduced by the parser: those hidden
1471 by conflicts.
1472
1473 * src/LR0.c (save_reductions): Don't make the final state too
1474 different: save its reduction (accept) instead of having a state
1475 without any action (no shift or goto, no reduce).
1476 Note: the final state is now a ``regular'' state, i.e., the
1477 parsers now contain `reduce 0' as default reduction.
1478 Nevertheless, since they decide to `accept' when yystate =
1479 final_state, they still will not reduce rule 0.
1480 * src/print.c (print_actions, print_reduction): Adjust.
1481 * src/output.c (action_row): Track reduced rules.
1482 (token_actions): Report rules never reduced.
1483 * tests/conflicts.at, tests/regression.at: Adjust.
1484
caf23d24
AD
14852002-07-30 Akim Demaille <akim@epita.fr>
1486
1487 `stage' was accidently included in a previous patch.
1488 Initiate its autoconfiscation.
1489
1490 * configure.in: Look for malloc.h and sys/times.h.
1491 * src/main.c (stage): Adjust.
1492 Report only when trace_flag.
1493
640748ee
AD
14942002-07-29 Akim Demaille <akim@epita.fr>
1495
1496 * src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
1497 state_number_t.
1498 (errs_t): symbol_t*, not symbol_number_t.
1499 (reductions_t): rule_t*, not rule_number_t.
1500 (FOR_EACH_SHIFT): New.
1501 * src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
1502 * src/print.c, src/print_graph.c: Adjust.
1503
88bce5a2
AD
15042002-07-29 Akim Demaille <akim@epita.fr>
1505
1506 Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.
1507
1508 * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
1509 (endtoken, accept): these.
1510 * src/reader.c (reader): Set endtoken's default tag to "$end".
1511 Set undeftoken's tag to "$undefined" instead of "$undefined.".
1512 * doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
1513 Adjust.
1514
1bfb97db
AD
15152002-07-29 Akim Demaille <akim@epita.fr>
1516
1517 * src/reduce.c (reduce_grammar): When the language is empty,
1518 complain about the start symbol, not the axiom.
1519 Use its location.
1520 * tests/reduce.at (Empty Language): New.
1521
fc5734fe
AD
15222002-07-26 Akim Demaille <akim@epita.fr>
1523
1524 * src/reader.h, src/reader.c (gram_error): ... can't get
1525 yycontrol without making too strong assumptions on the parser
1526 itself.
1527 * src/output.c (prepare_tokens): Use the real 0th value of
1528 token_translations instead of `0'.
1529 * src/parse-gram.y (yyerror): Don't rely on yycontrol being
1530 visible here.
1531 * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
1532 for the time being: %locations ought to provide it to yyerror.
1533
3650b4b8
AD
15342002-07-25 Akim Demaille <akim@epita.fr>
1535
1536 * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
1537 * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
1538 * tests/regression.at (Web2c Actions): Adjust.
1539
4b3d3a8e
AD
15402002-07-25 Akim Demaille <akim@epita.fr>
1541
1542 Stop storing rules from 1 to nrules + 1.
1543
1544 * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
1545 * src/nullable.c, src/output.c, src/print.c, src/reader.c
1546 * src/reduce.c: Allocate and free from &rules[0], not &rules[1].
1547 Iterate from 0 to nrules.
1548 Use rule_number_as_item_number and item_number_as_rule_number.
1549 Adjust to `derive' now containing possibly 0.
1550 * src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
1551 Handle the `- 1' part in rule numbers from/to item numbers.
1552 * src/conflicts.c (log_resolution): Fix the message which reversed
1553 shift and reduce.
1554 * src/output.c (action_row): Initialize default_rule to -1.
1555 (token_actions): Adjust.
1556 * tests/sets.at (Nullable, Firsts): Fix the previously bogus
1557 expected output.
1558 * tests/conflicts.at (Resolved SR Conflicts): Likewise.
1559
4a2a22f4
AD
15602002-07-25 Akim Demaille <akim@epita.fr>
1561
1562 * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
1563 (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
1564 (b4_c_knr_arg_decl): New.
1565 * data/yacc.c: Use it to define yysymprint, yydestruct, and
1566 yyreport_parse_error.
1567
b8df3223
AD
15682002-07-25 Akim Demaille <akim@epita.fr>
1569
1570 * data/yacc.c (yyreport_parse_error): New, extracted from...
1571 (yyparse): here.
1572 (yydestruct, yysymprint): Move above yyparse.
1573 Be K&R compliant.
1574
a762e609
AD
15752002-07-25 Akim Demaille <akim@epita.fr>
1576
1577 * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
1578 replace...
1579 (b4_sint_type, b4_uint_type): these.
1580 * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
1581 * tests/regression.at (Web2c Actions): Adjust.
1582
12b0043a
AD
15832002-07-25 Akim Demaille <akim@epita.fr>
1584
1585 * src/gram.h (TIEM_NUMBER_MAX): New.
1586 (item_number_of_rule_number, rule_number_of_item_number): Rename
1587 as...
1588 (rule_number_as_item_number, item_number_as_rule_number): these.
1589 Adjust dependencies.
1590 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
1591 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
1592 (symbol_number_to_vector_number): New.
1593 (order): Of vector_number_t* type.
1594 (base_t, BASE_MAX, BASE_MIN): New.
1595 (froms, tos, width, pos, check): Of base_t type.
1596 (action_number_t, ACTION_MIN, ACTION_MAX): New.
1597 (actrow): Of action_number_t type.
1598 (conflrow): Of unsigned int type.
1599 (table_ninf, base_ninf): New.
1600 (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
1601 (muscle_insert_int_table, muscle_insert_base_table)
1602 (muscle_insert_rule_number_table): New.
1603 (prepare_tokens): Output `toknum' as int_table.
1604 (action_row): Returns a rule_number_t.
1605 Use ACTION_MIN, not SHRT_MIN.
1606 (token_actions): yydefact is rule_number_t*.
1607 (table_ninf_remap): New.
1608 (pack_table): Use it for `base' and `table'.
1609 * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
1610 replaced with...
1611 (YYPACT_NINF, YYTABLE_NINF): these.
1612 (yypact, yytable): Compute their types instead of hard-coded
1613 `short'.
1614 * tests/regression.at (Web2c Actions): Adjust.
1615
5dde258a
AD
16162002-07-19 Akim Demaille <akim@epita.fr>
1617
1618 * src/scan-gram.l (id): Can start with an underscore.
1619
a945ec39
AD
16202002-07-16 Akim Demaille <akim@epita.fr>
1621
1622 * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
1623 Adjust all former `associativity' dependencies.
1624 * src/symtab.c (symbol_new): Default associativity is `undef', not
1625 `right'.
1626 (symbol_check_alias_consistence): Adjust.
1627
fae437e8
AD
16282002-07-09 Akim Demaille <akim@epita.fr>
1629
1630 * doc/bison.texinfo: Properly set the ``header'' part.
1631 Use @dircategory ``GNU programming tools'' as per Texinfo's
1632 documentation.
1633 Use @copying.
1634
1a715ef2
AD
16352002-07-09 Akim Demaille <akim@epita.fr>
1636
1637 * lib/quotearg.h: Protect against multiple inclusions.
1638 * src/location.h (location_t): Add a `file' member.
1639 (LOCATION_RESET, LOCATION_PRINT): Adjust.
1640 * src/complain.c (warn_at, complain_at, fatal_at): Drop
1641 `error_one_per_line' support.
1642
a5d50994
AD
16432002-07-09 Akim Demaille <akim@epita.fr>
1644
1645 * src/complain.h, src/complain.c (warn, complain): Remove, unused.
1646 * src/reader.c (lineno): Remove.
1647 Adjust all dependencies.
1648 (get_merge_function): Take a location and use complain_at.
1649 * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
1650 * tests/regression.at (Invalid inputs, Mixing %token styles):
1651 Adjust.
1652
b275314e
AD
16532002-07-09 Akim Demaille <akim@epita.fr>
1654
1655 * src/parse-gram.y (rules_or_grammar_declaration): Add an error
1656 recovery rule, and forbid extensions when --yacc.
1657 (gram_error): Use complain_at.
1658 * src/reader.c (reader): Exit if there were parse errors.
1659
865b9df1
AD
16602002-07-09 Akim Demaille <akim@epita.fr>
1661
1662 * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
1663 (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
1664 Reported by R Blake <blakers@mac.com>.
1665
c76e14da
AD
16662002-07-09 Akim Demaille <akim@epita.fr>
1667
1668 * data/yacc.c: Output the copyright notive in the header.
1669
7db2ed2d
AD
16702002-07-03 Akim Demaille <akim@epita.fr>
1671
1672 * src/output.c (froms, tos): Are state_number_t.
1673 (save_column): sp, sp1, and sp2 are state_number_t.
1674 (prepare): Rename `final' as `final_state_number', `nnts' as
1675 `nterms_number', `nrules' as `rules_number', `nstates' as
1676 `states_number', and `ntokens' as `tokens_number'. Remove `nsym',
1677 unused.
1678 * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
1679 * data/lalr1.cc (nsym_): Remove, unused.
1680
e68e0410
AD
16812002-07-03 Akim Demaille <akim@epita.fr>
1682
1683 * src/lalr.h, src/lalr.c (goto_number_t): New.
1684 * src/lalr.c (goto_list_t): New.
1685 Propagate them.
1686 * src/nullable.c (rule_list_t): New.
1687 Propagate.
1688 * src/types.h: Remove.
1689
e1a4f3a4
AD
16902002-07-03 Akim Demaille <akim@epita.fr>
1691
1692 * src/closure.c (print_fderives): Use rule_rhs_print.
1693 * src/derives.c (print_derives): Use rule_rhs_print.
1694 (rule_list_t): New, replaces `shorts'.
1695 (set_derives): Add comments.
1696 * tests/sets.at (Nullable, Firsts): Adjust.
1697
536545f3
AD
16982002-07-03 Akim Demaille <akim@epita.fr>
1699
1700 * src/output.c (prepare_actions): Free `tally' and `width'.
1701 (prepare_actions): Allocate and free `order'.
1702 * src/symtab.c (symbols_free): Free `symbols'.
1703 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
1704 * src/output.c (m4_invoke): Move to...
1705 * src/scan-skel.l: here.
1706 (<<EOF>>): Close yyout, and free its name.
1707
8b752b00
AD
17082002-07-03 Akim Demaille <akim@epita.fr>
1709
1710 Fix some memory leaks, and fix a bug: state 0 was examined twice.
1711
1712 * src/LR0.c (new_state): Merge into...
1713 (state_list_append): this.
1714 (new_states): Merge into...
1715 (generate_states): here.
1716 (set_states): Don't ensure a proper `errs' state member here, do it...
1717 * src/conflicts.c (conflicts_solve): here.
1718 * src/state.h, src/state.c: Comment changes.
1719 (state_t): Rename member `shifts' as `transitions'.
1720 Adjust all dependencies.
1721 (errs_new): For consistency, also take the values as argument.
1722 (errs_dup): Remove.
1723 (state_errs_set): New.
1724 (state_reductions_set, state_transitions_set): Assert that no
1725 previous value was assigned.
1726 (state_free): New.
1727 (states_free): Use it.
1728 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
1729 temporary storage: use `errs' and `nerrs' as elsewhere.
1730 (set_conflicts): Allocate and free this `errs'.
1731
613f5e1a
AD
17322002-07-02 Akim Demaille <akim@epita.fr>
1733
1734 * lib/libiberty.h: New.
1735 * lib: Update the bitset implementation from upstream.
1736 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
1737 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
1738 * src/main.c: Adjust bitset stats calls.
1739
26e0cadc
PE
17402002-07-01 Paul Eggert <eggert@twinsun.com>
1741
1742 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
1743 char, so that negative chars don't collide with $.
1744
1154cced
AD
17452002-06-30 Akim Demaille <akim@epita.fr>
1746
1747 Have the GLR tests be `warning' checked, and fix the warnings.
1748
1749 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
1750 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
1751 (yyremoveDeletes): `yyi' and `yyj' are size_t.
1752 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
1753 (yyaddDeferredAction): static.
1754 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
1755 (yyreportParseError): yyprefix is const.
1756 yytokenp is used only when verbose.
1757 (yy__GNUC__): Replace with __GNUC__.
1758 (yypdumpstack): yyi is size_t.
1759 (yypreference): Un-yy local variables and arguments, to avoid
1760 clashes with `yyr1'. Anyway, we are not in the user name space.
1761 (yytname_size): be an int, as is compared with ints.
1762 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
1763 Use them.
1764 * tests/cxx-gram.at: Use quotation to protect $1.
1765 Use AT_COMPILE to enable warnings hunts.
1766 Prototype yylex and yyerror.
1767 `Use' argc.
1768 Include `string.h', not `strings.h'.
1769 Produce and prototype stmtMerge only when used.
1770 yylex takes a location.
1771
97650f4e
AD
17722002-06-30 Akim Demaille <akim@epita.fr>
1773
1774 We spend a lot of time in quotearg, in particular when --verbose.
1775
1776 * src/symtab.c (symbol_get): Store a quoted version of the key.
1777 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
1778 Adjust all callers.
1779
d2576365
AD
17802002-06-30 Akim Demaille <akim@epita.fr>
1781
1782 * src/state.h (reductions_t): Rename member `nreds' as num.
1783 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
1784 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
1785
ccaf65bc
AD
17862002-06-30 Akim Demaille <akim@epita.fr>
1787
1788 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
1789 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
1790 (shifts_to): Rename as...
1791 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
1792 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
1793 (TRANSITION_IS_DISABLED, transitions_to): these.
1794
87675353
AD
17952002-06-30 Akim Demaille <akim@epita.fr>
1796
1797 * src/print.c (print_shifts, print_gotos): Merge into...
1798 (print_transitions): this.
1799 (print_transitions, print_errs, print_reductions): Align the
1800 lookaheads columns.
1801 (print_core, print_transitions, print_errs, print_state,
1802 print_grammar): Output empty lines separator before, not after.
1803 (state_default_rule_compute): Rename as...
1804 (state_default_rule): this.
1805 * tests/conflicts.at (Defaulted Conflicted Reduction),
1806 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
1807 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
1808
ce4ccb4b
AD
18092002-06-30 Akim Demaille <akim@epita.fr>
1810
1811 Display items as we display rules.
1812
1813 * src/gram.h, src/gram.c (rule_lhs_print): New.
1814 * src/gram.c (grammar_rules_partial_print): Use it.
1815 * src/print.c (print_core): Likewise.
1816 * tests/conflicts.at (Defaulted Conflicted Reduction),
1817 (Unresolved SR Conflicts): Adjust.
1818 (Unresolved SR Conflicts): Adjust and rename as...
1819 (Resolved SR Conflicts): this, as was meant.
1820 * tests/regression.at (Web2c Report): Adjust.
1821
bc933ef1
AD
18222002-06-30 Akim Demaille <akim@epita.fr>
1823
1824 * src/print.c (state_default_rule_compute): New, extracted from...
1825 (print_reductions): here.
1826 Pessimize, but clarify the code.
1827 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
1828
53d4308d
AD
18292002-06-30 Akim Demaille <akim@epita.fr>
1830
1831 * src/output.c (action_row): Let default_rule be always a rule
1832 number.
1833
574fb2d5
AD
18342002-06-30 Akim Demaille <akim@epita.fr>
1835
1836 * src/closure.c (print_firsts, print_fderives, closure):
1837 Use BITSET_EXECUTE.
1838 * src/lalr.c (lookaheads_print): Likewise.
1839 * src/state.c (state_rule_lookaheads_print): Likewise.
1840 * src/print_graph.c (print_core): Likewise.
1841 * src/print.c (print_reductions): Likewise.
1842 * src/output.c (action_row): Likewise.
1843 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
1844
05811fd7
AD
18452002-06-30 Akim Demaille <akim@epita.fr>
1846
1847 * src/print_graph.c: Use report_flag.
1848
0e4d5753
AD
18492002-06-30 Akim Demaille <akim@epita.fr>
1850
1851 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
1852 to...
1853 * src/relation.h, src/relation.c (traverse, relation_digraph)
1854 (relation_print, relation_transpose): New.
1855
24c7d800
AD
18562002-06-30 Akim Demaille <akim@epita.fr>
1857
1858 * src/state.h, src/state.c (shifts_to): New.
1859 * src/lalr.c (build_relations): Use it.
1860
9222837b
AD
18612002-06-30 Akim Demaille <akim@epita.fr>
1862
1863 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
1864 (item_number_of_rule_number, rule_number_of_item_number): New.
1865 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
1866 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
1867 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
1868 Propagate their use.
1869 Much remains to be done, in particular wrt `shorts' from types.h.
1870
260008e5
AD
18712002-06-30 Akim Demaille <akim@epita.fr>
1872
1873 * src/symtab.c (symbol_new): Initialize the `printer' member.
1874
8a731ca8
AD
18752002-06-30 Akim Demaille <akim@epita.fr>
1876
1877 * src/LR0.c (save_reductions): Remove, replaced by...
1878 * src/state.h, src/state.c (state_reductions_set): New.
1879 (reductions, errs): Rename as...
1880 (reductions_t, errs_t): these.
1881 Adjust all dependencies.
1882
32e1e0a4
AD
18832002-06-30 Akim Demaille <akim@epita.fr>
1884
1885 * src/LR0.c (state_list_t, state_list_append): New.
1886 (first_state, last_state): Now symbol_list_t.
1887 (this_state): Remove.
1888 (new_itemsets, append_states, save_reductions): Take a state_t as
1889 argument.
1890 (set_states, generate_states): Adjust.
1891 (save_shifts): Remove, replaced by...
1892 * src/state.h, src/state.c (state_shifts_set): New.
1893 (shifts): Rename as...
1894 (shifts_t): this.
1895 Adjust all dependencies.
1896 * src/state.h (state_t): Remove the `next' member.
1897
e5fb6710
AD
18982002-06-30 Akim Demaille <akim@epita.fr>
1899
1900 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
1901 escaped in slot 0.
1902
c7ca99d4
AD
19032002-06-30 Akim Demaille <akim@epita.fr>
1904
1905 Use hash.h for the state hash table.
1906
1907 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
1908 (allocate_storage): Use state_hash_new.
1909 (free_storage): Use state_hash_free.
1910 (new_state, get_state): Adjust.
1911 * src/lalr.h, src/lalr.c (states): Move to...
1912 * src/states.h (state_t): Remove the `link' member, no longer
1913 used.
1914 * src/states.h, src/states.c: here.
1915 (state_hash_new, state_hash_free, state_hash_lookup)
1916 (state_hash_insert, states_free): New.
1917 * src/states.c (state_table, state_compare, state_hash): New.
1918 * src/output.c (output_actions): Do not free states now, since we
1919 still need to know the final_state number in `prepare', called
1920 afterwards. Do it...
1921 * src/main.c (main): here: call states_free after `output'.
1922
df0e7316
AD
19232002-06-30 Akim Demaille <akim@epita.fr>
1924
1925 * src/state.h, src/state.c (state_new): New, extracted from...
1926 * src/LR0.c (new_state): here.
1927 * src/state.h (STATE_ALLOC): Move to...
1928 * src/state.c: here.
1929 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
1930 * src/state.h, src/state.c: here.
1931
39f41916
AD
19322002-06-30 Akim Demaille <akim@epita.fr>
1933
1934 * src/reader.c (gensym): Rename as...
1935 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
1936 (getsym): Rename as...
1937 (symbol_get): this.
1938
d57650a5
AD
19392002-06-30 Akim Demaille <akim@epita.fr>
1940
1941 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
1942 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
1943 * src/output.c, src/print.c, src/print_graph.c: Propagate.
1944 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
1945
5a08f1ce
AD
19462002-06-30 Akim Demaille <akim@epita.fr>
1947
1948 Make the test suite pass with warnings checked.
1949
1950 * tests/actions.at (Printers and Destructors): Improve.
1951 Avoid unsigned vs. signed issues.
1952 * tests/calc.at: Don't exercise the scanner here, do it...
1953 * tests/input.at (Torturing the Scanner): here.
1954
720623af
PH
19552002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1956
88e7e941 1957 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
720623af
PH
1958 reorganize first lines parallel to yacc.c.
1959
fb8135fa
AD
19602002-06-28 Akim Demaille <akim@epita.fr>
1961
1962 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
1963 (b4_token_enum, b4_token_defines): New, factored from...
1964 * data/lalr1.cc, data/yacc.c, glr.c: here.
1965
41442480
AD
19662002-06-28 Akim Demaille <akim@epita.fr>
1967
1968 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
1969 unused variables.
1970 * src/output.c (merger_output): static.
1971
e0e5bf84
AD
19722002-06-28 Akim Demaille <akim@epita.fr>
1973
1974 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
1975 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
1976 pacify GCC.
1977 * src/output.c (save_row): Initialize all the variables to pacify GCC.
e0e5bf84 1978
676385e2
PH
19792002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1980
1981 Accumulated changelog for new GLR parsing features.
1982
6a254321 1983 * src/conflicts.c (count_total_conflicts): Change name to
676385e2
PH
1984 conflicts_total_count.
1985 * src/conflicts.h: Ditto.
1986 * src/output.c (token_actions): Use the new name.
1987 (output_conflicts): Change conflp => conflict_list_heads, and
1988 confl => conflict_list for better readability.
1989 * data/glr.c: Use the new names.
1990 * NEWS: Add self to GLR announcement.
e0e5bf84 1991
676385e2
PH
1992 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
1993
1994 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
1995 Akim Demaille.
1996
1997 * data/bison.glr: Change name to glr.c
1998 * data/glr.c: Renamed from bison.glr.
1999 * data/Makefile.am: Add glr.c
e0e5bf84
AD
2000
2001 * src/getargs.c:
2002
676385e2
PH
2003 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
2004 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
e0e5bf84 2005
676385e2
PH
2006 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2007
2008 * data/bison.glr: Be sure to restore the
2009 current #line when returning to the skeleton contents after having
2010 exposed the input file's #line.
2011
2012 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2013
2014 * data/bison.glr: Bring up to date with changes to bison.simple.
2015
2016 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2017
2018 * data/bison.glr: Correct definitions that use b4_prefix.
2019 Various reformatting.
2020 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
2021 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
2022 yytokenp argument; now part of stack.
2023 (yychar): Define to behave as documented.
2024 (yyclearin): Ditto.
e0e5bf84 2025
676385e2
PH
2026 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2027
2028 * src/reader.h: Add declaration for free_merger_functions.
2029
2030 * src/reader.c (merge_functions): New variable.
2031 (get_merge_function): New function.
2032 (free_merger_functions): New function.
2033 (readgram): Check for %prec that is not followed by a symbol.
2034 Handle %dprec and %merge declarations.
2035 (packgram): Initialize dprec and merger fields in rules array.
2036
2037 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
2038 conflict_list_cnt, conflict_list_free): New variables.
2039 (table_grow): Also grow conflict_table.
e0e5bf84 2040 (prepare_rules): Output dprec and merger tables.
676385e2 2041 (conflict_row): New function.
e0e5bf84 2042 (action_row): Output conflict lists for GLR parser. Don't use
676385e2
PH
2043 default reduction in conflicted states for GLR parser so that there
2044 are spaces for the conflict lists.
2045 (save_row): Also save conflict information.
2046 (token_actions): Allocate conflict list.
2047 (merger_output): New function.
2048 (pack_vector): Pack conflict table, too.
2049 (output_conflicts): New function to output yyconflp and yyconfl.
2050 (output_check): Allocate conflict_tos.
2051 (output_actions): Output conflict tables, also.
2052 (output_skeleton): Output b4_mergers definition.
2053 (prepare): Output b4_max_rhs_length definition.
2054 Use 'bison.glr' as default skeleton for GLR parsers.
2055
2056 * src/gram.c (glr_parser): New flag.
2057 (grammar_free): Call free_merger_functions.
2058
2059 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
2060 all pairs of conflicting reductions, rather than just all tokens
2061 causing conflicts. Needed to size conflict tables.
e0e5bf84 2062 (conflicts_output): Modify call to count_rr_conflicts for new
676385e2
PH
2063 interface.
2064 (conflicts_print): Ditto.
2065 (count_total_conflicts): New function.
2066
2067 * src/reader.h (merger_list): New type.
2068 (merge_functions): New variable.
2069
2070 * src/lex.h (tok_dprec, tok_merge): New token types.
2071
2072 * src/gram.h (rule_s): Add dprec and merger fields.
2073 (glr_parser): New flag.
2074
2075 * src/conflicts.h (count_total_conflicts): New function.
2076
2077 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
2078
2079 * doc/bison.texinfo (Generalized LR Parsing): New section.
2080 (GLR Parsers): New section.
2081 (Language and Grammar): Mention GLR parsing.
2082 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
2083 Correct typo ("tge" -> "the").
2084
2085 * data/bison.glr: New skeleton for GLR parsing.
2086
2087 * tests/cxx-gram.at: New tests for GLR parsing.
2088
2089 * tests/testsuite.at: Include cxx-gram.at.
2090
2091 * tests/Makefile.am: Add cxx-gram.at.
e0e5bf84 2092
676385e2
PH
2093 * src/parse-gram.y:
2094
2095 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
2096
2097 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
e0e5bf84 2098
b5480d74 20992002-06-27 Akim Demaille <akim@epita.fr>
e2aaf4c4
AD
2100
2101 * src/options.h, src/options.c: Remove.
2102 * src/getargs.c (short_options, long_options): New.
2103
60491a94
AD
21042002-06-27 Akim Demaille <akim@epita.fr>
2105
2106 * data/bison.simple, data/bison.c++: Rename as...
2107 * data/yacc.c, data/lalr1.cc: these.
2108 * doc/bison.texinfo (Environment Variables): Remove.
2109
9be0c25b
AD
21102002-06-25 Raja R Harinath <harinath@cs.umn.edu>
2111
2112 * src/getargs.c (report_argmatch): Initialize strtok().
2113
1ae72863
AD
21142002-06-20 Akim Demaille <akim@epita.fr>
2115
2116 * data/bison.simple (b4_symbol_actions): New, replaces...
2117 (b4_symbol_destructor, b4_symbol_printer): these.
2118 (yysymprint): Be sure to call YYPRINT only for tokens, and using
2119 user token numbers.
2120
87542d29
AD
21212002-06-20 Akim Demaille <akim@epita.fr>
2122
2123 * data/bison.simple (yydestructor): Rename as...
2124 (yydestruct): this.
2125
1a31ed21
AD
21262002-06-20 Akim Demaille <akim@epita.fr>
2127
2128 * src/symtab.h, src/symtab.c (symbol_type_set)
2129 (symbol_destructor_set, symbol_precedence_set): The location is
2130 the last argument.
2131 Adjust all callers.
2132
e776192e
AD
21332002-06-20 Akim Demaille <akim@epita.fr>
2134
2135 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
2136 internals.
2137 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
2138 Takes a location.
2139 * src/symtab.h, src/symtab.c (symbol_class_set)
2140 (symbol_user_token_number_set): Likewise.
2141 Adjust all callers.
2142 Promote complain_at.
2143 * tests/input.at (Type Clashes): Adjust.
2144
5c1180b3
AD
21452002-06-20 Akim Demaille <akim@epita.fr>
2146
2147 * data/bison.simple (YYLEX): Fix the declaration when
2148 %pure-parser.
2149
e3170060
AD
21502002-06-20 Akim Demaille <akim@epita.fr>
2151
2152 * data/bison.simple (yysymprint): Don't print the token number,
2153 just its name.
2154 * tests/actions.at (Destructors): Rename as...
2155 (Printers and Destructors): this.
2156 Also exercise %printer.
2157
253862fd
AD
21582002-06-20 Akim Demaille <akim@epita.fr>
2159
2160 * data/bison.simple (YYDSYMPRINT): New.
2161 Use it to remove many of the #if YYDEBUG/if (yydebug).
2162
366eea36
AD
21632002-06-20 Akim Demaille <akim@epita.fr>
2164
2165 * src/symtab.h, src/symtab.c (symbol_t): printer and
2166 printer_location are new members.
2167 (symbol_printer_set): New.
2168 * src/parse-gram.y (PERCENT_PRINTER): New token.
2169 Handle its associated rule.
2170 * src/scan-gram.l: Adjust.
2171 (handle_destructor_at, handle_destructor_dollar): Rename as...
2172 (handle_symbol_code_at, handle_symbol_code_dollar): these.
2173 * src/output.c (symbol_printers_output): New.
2174 (output_skeleton): Call it.
2175 * data/bison.simple (yysymprint): New. Cannot be named yyprint
2176 since there are already many grammar files with a user `yyprint'.
2177 Replace the calls to YYPRINT to calls to yysymprint.
2178 * tests/calc.at: Adjust.
2179 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
2180 taking advantage of parser very internal details (stack size!).
2181
4f25ebb0
AD
21822002-06-20 Akim Demaille <akim@epita.fr>
2183
2184 * src/scan-gram.l: Complete the scanner with the missing patterns
2185 to pacify Flex.
2186 Use `quote' and `symbol_tag_get' where appropriate.
2187
93b68a0e
AD
21882002-06-19 Akim Demaille <akim@epita.fr>
2189
2190 * tests/actions.at (Destructors): Augment to test locations.
2191 * data/bison.simple (yydestructor): Pass it the current location
2192 if locations are enabled.
2193 Prototype only when __STDC__ or C++.
2194 Change the argument names to move into the yy name space: there is
2195 user code here.
2196
58612f1d
AD
21972002-06-19 Akim Demaille <akim@epita.fr>
2198
74310291
AD
2199 * data/bison.simple (b4_pure_if): New.
2200 Use it instead of #ifdef YYPURE.
2201
22022002-06-19 Akim Demaille <akim@epita.fr>
2203
2204 * data/bison.simple (b4_location_if): New.
58612f1d
AD
2205 Use it instead of #ifdef YYLSP_NEEDED.
2206
f25bfb75
AD
22072002-06-19 Akim Demaille <akim@epita.fr>
2208
2209 Prepare @$ in %destructor, but currently don't bind it in the
2210 skeleton, as %location use is not cleaned up yet.
2211
2212 * src/scan-gram.l (handle_dollar, handle_destructor_at)
2213 (handle_action_at): New.
2214 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
2215 a braced_code_t and a location as additional arguments.
2216 (handle_destructor_dollar): Instead of requiring `b4_eval', just
2217 unquote one when outputting `b4_dollar_dollar'.
2218 Adjust callers.
2219 * data/bison.simple (b4_eval): Remove.
2220 (b4_symbol_destructor): Adjust.
2221 * tests/input.at (Invalid @n): Adjust.
2222
c732d2c6
AD
22232002-06-19 Zack Weinberg <zack@codesourcery.com>
2224
2225 * doc/bison.texinfo: Document ability to have multiple
2226 prologue sections.
2227
8c165d89
AD
22282002-06-18 Akim Demaille <akim@epita.fr>
2229
2230 * src/files.c (compute_base_names): When computing the output file
2231 names from the input file name, strip the directory part.
2232
ca98bf57
AD
22332002-06-18 Akim Demaille <akim@epita.fr>
2234
2235 * data/bison.simple.new: Comment changes.
2236 Reported by Andreas Schwab.
2237
0bfb02ff
AD
22382002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
2239
2240 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
2241 there are no `label `yyoverflowlab' defined but not used' warnings
2242 when yyoverflow is defined.
2243
24c0aad7
AD
22442002-06-18 Akim Demaille <akim@epita.fr>
2245
2246 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
2247 new member.
2248 (symbol_destructor_set): Adjust.
2249 * src/output.c (symbol_destructors_output): Output the destructor
2250 locations.
2251 Output the symbol name.
2252 * data/bison.simple (b4_symbol_destructor): Adjust.
2253
5719c109
AD
22542002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
2255 and Akim Demaille <akim@epita.fr>
2256
2257 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
2258 what's left on the stack when the error recovery hits EOF.
2259 * tests/actions.at (Destructors): Complete to exercise this case.
2260
9280d3ef
AD
22612002-06-17 Akim Demaille <akim@epita.fr>
2262
2263 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
2264 arguments is really empty, not only equal to `[]'.
2265 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
2266 member.
2267 (symbol_destructor_set): New.
2268 * src/output.c (symbol_destructors_output): New.
2269 * src/reader.h (brace_code_t, current_braced_code): New.
2270 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
2271 (handle_dollar): Rename as...
2272 (handle_action_dollar): this.
2273 (handle_destructor_dollar): New.
2274 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
2275 (grammar_declaration): Use it.
2276 * data/bison.simple (yystos): Is always defined.
2277 (yydestructor): New.
2278 * tests/actions.at (Destructors): New.
2279 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
2280
dafdc66f
AD
22812002-06-17 Akim Demaille <akim@epita.fr>
2282
2283 * src/symlist.h, src/symlist.c (symbol_list_length): New.
2284 * src/scan-gram.l (handle_dollar, handle_at): Compute the
2285 rule_length only when needed.
2286 * src/output.c (actions_output, token_definitions_output): Output
2287 the full M4 block.
2288 * src/symtab.c: Don't access directly to the symbol tag, use
2289 symbol_tag_get.
2290 * src/parse-gram.y: Use symbol_list_free.
2291
56c47203
AD
22922002-06-17 Akim Demaille <akim@epita.fr>
2293
2294 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
2295 (symbol_list_prepend, get_type_name): Move to...
2296 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
2297 (symbol_list_prepend, symbol_list_n_type_name_get): here.
2298 Adjust all callers.
2299 (symbol_list_free): New.
2300 * src/scan-gram.l (handle_dollar): Takes a location.
2301 * tests/input.at (Invalid $n): Adjust.
2302
1e0bab92
AD
23032002-06-17 Akim Demaille <akim@epita.fr>
2304
2305 * src/reader.h, src/reader.c (symbol_list_new): Export it.
2306 (symbol_list_prepend): New.
2307 * src/parse-gram.y (%union): `list' is a new member.
2308 (symbols.1): New, replaces...
2309 (terms_to_prec.1, nterms_to_type.1): these.
2310 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
2311 Take a location as additional argument.
2312 Adjust all callers.
2313
04e60654
AD
23142002-06-15 Akim Demaille <akim@epita.fr>
2315
2316 * src/parse-gram.y: Move %token in the declaration section so that
2317 we don't depend upon CVS Bison.
2318
10e5b8bd
AD
23192002-06-15 Akim Demaille <akim@epita.fr>
2320
2321 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
2322 * src/print.c (print_core): Use it.
2323
9801d40c
AD
23242002-06-15 Akim Demaille <akim@epita.fr>
2325
2326 * src/conflicts.c (log_resolution): Accept the rule involved in
2327 the sr conflicts instead of the lookahead number that points to
2328 that rule.
2329 (flush_reduce): Accept the current lookahead vector as argument,
2330 instead of the index in LA.
2331 (resolve_sr_conflict): Accept the current number of lookahead
2332 bitset to consider for the STATE, instead of the index in LA.
2333 (set_conflicts): Adjust.
2334 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
2335
c0263492
AD
23362002-06-15 Akim Demaille <akim@epita.fr>
2337
2338 * src/state.h (state_t): Replace the `lookaheadsp' member, a
2339 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
2340 Adjust all dependencies.
2341 * src/lalr.c (initialize_lookaheads): Split into...
2342 (states_lookaheads_count, states_lookaheads_initialize): these.
2343 (lalr): Adjust.
2344
9757c359
AD
23452002-06-15 Akim Demaille <akim@epita.fr>
2346
2347 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
2348 out of...
2349 (grammar_rules_print): here.
2350 * src/reduce.c (reduce_output): Use it.
2351 * tests/reduce.at (Useless Rules, Reduced Automaton)
2352 (Underivable Rules): Adjust.
2353
6b98e4b5
AD
23542002-06-15 Akim Demaille <akim@epita.fr>
2355
2356 Copy BYacc's nice way to report the grammar.
2357
2358 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
2359 New.
2360 Don't print the rules' location, it is confusing and useless.
2361 (rule_print): Use grammar_rhs_print.
2362 * src/print.c (print_grammar): Use grammar_rules_print.
2363
6b98e4b5
AD
23642002-06-15 Akim Demaille <akim@epita.fr>
2365
2366 Complete and rationalize `useless thing' warnings.
2367
2368 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
2369 (symbol_tag_print): New.
2370 Use them everywhere in place of accessing directly the tag member.
2371 * src/gram.h, src/gram.c (rule_print): New.
2372 Use it where a rule used to be printed `by hand'.
2373 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
2374 (reduce_grammar_tables): Report the useless rules.
2375 (reduce_print): Useless things are a warning, not an error.
2376 Report it as such.
2377 * tests/reduce.at (Useless Nonterminals, Useless Rules):
2378 (Reduced Automaton, Underivable Rules): Adjust.
2379 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
2380 * tests/conflicts.at (Unresolved SR Conflicts)
2381 (Solved SR Conflicts): Adjust.
2382
ee000ba4
AD
23832002-06-15 Akim Demaille <akim@epita.fr>
2384
2385 Let symbols have a location.
2386
2387 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
2388 (getsym): Adjust.
2389 Adjust all callers.
2390 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
2391 Use location_t, not int.
2392 * src/symtab.c (symbol_check_defined): Take advantage of the
2393 location.
2394 * tests/regression.at (Invalid inputs): Adjust.
2395
8efe435c
AD
23962002-06-15 Akim Demaille <akim@epita.fr>
2397
2398 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
2399 (input): Don't try to initialize yylloc here, do it in the
2400 scanner.
2401 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
2402 * src/gram.h (rule_t): Change line and action_line into location
2403 and action_location, of location_t type.
2404 Adjust all dependencies.
2405 * src/location.h, src/location.c (empty_location): New.
2406 * src/reader.h, src/reader.c (grammar_start_symbol_set)
2407 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
2408 (grammar_current_rule_symbol_append)
2409 (grammar_current_rule_action_append): Expect a location as argument.
2410 * src/reader.c (grammar_midrule_action): Adjust to attach an
2411 action's location as dummy symbol location.
2412 * src/symtab.h, src/symtab.c (startsymbol_location): New.
2413 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
2414 the line numbers.
2415
1921f1d7
AD
24162002-06-14 Akim Demaille <akim@epita.fr>
2417
2418 Grammar declarations may be found in the grammar section.
2419
2420 * src/parse-gram.y (rules_or_grammar_declaration): New.
2421 (declarations): Each declaration may end with a semicolon, not
2422 just...
2423 (grammar_declaration): `"%union"'.
2424 (grammar): Branch to rules_or_grammar_declaration.
2425
4515534c
AD
24262002-06-14 Akim Demaille <akim@epita.fr>
2427
2428 * src/main.c (main): Invoke scanner_free.
2429
f958596b
AD
24302002-06-14 Akim Demaille <akim@epita.fr>
2431
2432 * src/output.c (m4_invoke): Extracted from...
2433 (output_skeleton): here.
2434 Free tempfile.
2435
2c569025
AD
24362002-06-14 Akim Demaille <akim@epita.fr>
2437
2438 * src/parse-gram.y (directives, directive, gram)
2439 (grammar_directives, precedence_directives, precedence_directive):
2440 Rename as...
2441 (declarations, declaration, grammar, grammar_declaration)
2442 (precedence_declaration, precedence_declarator): these.
2443 (symbol_declaration): New.
2444
592e8d4d
AD
24452002-06-14 Akim Demaille <akim@epita.fr>
2446
2447 * src/files.c (action_obstack): Remove, unused.
2448 (output_obstack): Remove it, and all its dependencies, as it is no
2449 longer needed.
2450 * src/reader.c (epilogue_set): Build the epilogue in the
2451 muscle_obstack.
2452 * src/output.h, src/output.c (muscle_obstack): Move to...
2453 * src/muscle_tab.h, src/muscle_tab.h: here.
2454 (muscle_init): Initialize muscle_obstack.
2455 (muscle_free): New.
2456 * src/main.c (main): Call it.
2457
0c15323d
AD
24582002-06-14 Akim Demaille <akim@epita.fr>
2459
2460 * src/location.h: New, extracted from...
2461 * src/reader.h: here.
2462 * src/Makefile.am (noinst_HEADERS): Merge into
2463 (bison_SOURCES): this.
2464 Add location.h.
2465 * src/parse-gram.y: Use location_t instead of Bison's.
2466 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
2467 Use location_t instead of ints.
2468
e96c9728
AD
24692002-06-14 Akim Demaille <akim@epita.fr>
2470
2471 * data/bison.simple, data/bison.c++: Be sure to restore the
2472 current #line when returning to the skeleton contents after having
2473 exposed the input file's #line.
2474
75d1fe16
AD
24752002-06-12 Akim Demaille <akim@epita.fr>
2476
2477 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
2478 eager.
2479 * tests/actions.at (Exotic Dollars): New.
2480
6c35d22c
AD
24812002-06-12 Akim Demaille <akim@epita.fr>
2482
2483 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
2484 ['"/] too eagerly.
2485 * tests/input.at (Torturing the Scanner): New.
2486
1d6412ad
AD
24872002-06-11 Akim Demaille <akim@epita.fr>
2488
2489 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
2490 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
2491 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
2492 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
2493 * src/reader.c (reader): Use it.
2494
4cdb01db
AD
24952002-06-11 Akim Demaille <akim@epita.fr>
2496
2497 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
2498 Adjust all callers.
2499 (scanner_last_string_free): New.
2500
44995b2e
AD
25012002-06-11 Akim Demaille <akim@epita.fr>
2502
2503 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
2504 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
2505 (last_string, YY_OBS_FREE): New.
2506 Use them when returning an ID.
2507
e9955c83
AD
25082002-06-11 Akim Demaille <akim@epita.fr>
2509
2510 Have Bison grammars parsed by a Bison grammar.
2511
2512 * src/reader.c, src/reader.h (prologue_augment): New.
2513 * src/reader.c (copy_definition): Remove.
2514
2515 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
2516 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
2517 (grammar_current_rule_prec_set, grammar_current_rule_check)
2518 (grammar_current_rule_symbol_append)
2519 (grammar_current_rule_action_append): Export.
2520 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
2521 (symbol_list_action_append): Remove.
2522 Hook the routines from reader.
2523 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
2524 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
2525
2526 * src/reader.c (read_declarations): Remove, unused.
2527
2528 * src/parse-gram.y: Handle the epilogue.
2529 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
2530 (grammar_start_symbol_set): this.
2531 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
2532 * src/reader.c (readgram): Remove, unused.
2533 (reader): Adjust to insert eoftoken and axiom where appropriate.
2534
2535 * src/reader.c (copy_dollar): Replace with...
2536 * src/scan-gram.h (handle_dollar): this.
2537 * src/parse-gram.y: Remove `%thong'.
2538
2539 * src/reader.c (copy_at): Replace with...
2540 * src/scan-gram.h (handle_at): this.
2541
2542 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
2543 New.
2544
2545 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
2546 time being.
2547
2548 * src/reader.h, src/reader.c (grammar_rule_end): New.
2549
2550 * src/parse.y (current_type, current_class): New.
2551 Implement `%nterm', `%token' support.
2552 Merge `%term' into `%token'.
2553 (string_as_id): New.
2554 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
2555 type name.
2556
2557 * src/parse-gram.y: Be sure to handle properly the beginning of
2558 rules.
2559
2560 * src/parse-gram.y: Handle %type.
2561 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
2562
2563 * src/parse-gram.y: More directives support.
2564 * src/options.c: No longer handle source directives.
2565
2566 * src/parse-gram.y: Fix %output.
2567
2568 * src/parse-gram.y: Handle %union.
2569 Use the prologue locations.
2570 * src/reader.c (parse_union_decl): Remove.
2571
2572 * src/reader.h, src/reader.c (epilogue_set): New.
2573 * src/parse-gram.y: Use it.
2574
2575 * data/bison.simple, data/bison.c++: b4_stype is now either not
2576 defined, then default to int, or to the contents of %union,
2577 without `union' itself.
2578 Adjust.
2579 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
2580
2581 * src/output.c (actions_output): Don't output braces, as they are
2582 already handled by the scanner.
2583
2584 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
2585 characters to themselves.
2586
2587 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
2588 that the epilogue has a proper #line.
2589
2590 * src/parse-gram.y: Handle precedence/associativity.
2591
2592 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
2593 a terminal.
2594 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
2595 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
2596 at all to define terminals that cannot be emitted.
2597
2598 * src/scan-gram.l: Escape M4 characters.
2599
2600 * src/scan-gram.l: Working properly with escapes in user
2601 strings/characters.
2602
2603 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
2604 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
2605 grammar.
2606 Use more modest sizes, as for the time being the parser does not
2607 release memory, and therefore the process swallows a huge amount
2608 of memory.
2609
2610 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
2611 stricter %token grammar.
2612
2613 * src/symtab.h (associativity): Add `undef_assoc'.
2614 (symbol_precedence_set): Do nothing when passed an undef_assoc.
2615 * src/symtab.c (symbol_check_alias_consistence): Adjust.
2616
2617 * tests/regression.at (Invalid %directive): Remove, as it is now
2618 meaningless.
2619 (Invalid inputs): Adjust to the new error messages.
2620 (Token definitions): The new grammar doesn't allow too many
2621 eccentricities.
2622
2623 * src/lex.h, src/lex.c: Remove.
2624 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
2625 (copy_character, copy_string2, copy_string, copy_identifier)
2626 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
2627 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
2628 (parse_action): Remove.
2629 * po/POTFILES.in: Adjust.
2630
2e047461
AD
26312002-06-11 Akim Demaille <akim@epita.fr>
2632
2633 * src/reader.c (parse_action): Don't store directly into the
2634 rule's action member: return the action as a string.
2635 Don't require `rule_length' as an argument: compute it.
2636 (grammar_current_rule_symbol_append)
2637 (grammar_current_rule_action_append): New, eved out from
2638 (readgram): here.
2639 Remove `action_flag', `rulelength', unused now.
2640
9af3fbce
AD
26412002-06-11 Akim Demaille <akim@epita.fr>
2642
2643 * src/reader.c (grammar_current_rule_prec_set).
2644 (grammar_current_rule_check): New, eved out from...
2645 (readgram): here.
2646 Remove `xaction', `first_rhs': useless.
2647 * tests/input.at (Type clashes): New.
2648 * tests/existing.at (GNU Cim Grammar): Adjust.
2649
1485e106
AD
26502002-06-11 Akim Demaille <akim@epita.fr>
2651
2652 * src/reader.c (grammar_midrule_action): New, Eved out from
2653 (readgram): here.
2654
da4160c3
AD
26552002-06-11 Akim Demaille <akim@epita.fr>
2656
2657 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
2658 New.
2659 (readgram): Use them as replacement of inlined code, crule and
2660 crule1.
2661
f6d0f937
AD
26622002-06-11 Akim Demaille <akim@epita.fr>
2663
2664 * src/reader.c (grammar_end, grammar_symbol_append): New.
2665 (readgram): Use them.
2666 Make the use of `p' as local as possible.
2667
69078d4b
AD
26682002-06-10 Akim Demaille <akim@epita.fr>
2669
2670 GCJ's parser requires the tokens to be defined before the prologue.
2671
2672 * data/bison.simple: Output the token definition before the user's
2673 prologue.
2674 * tests/regression.at (Braces parsing, Duplicate string)
2675 (Mixing %token styles): Check the output from bison.
2676 (Early token definitions): New.
2677
5e424082
AD
26782002-06-10 Akim Demaille <akim@epita.fr>
2679
2680 * src/symtab.c (symbol_user_token_number_set): Don't complain when
2681 assigning twice the same user number to a token, so that we can
2682 use it in...
2683 * src/lex.c (lex): here.
2684 Also use `symbol_class_set' instead of hand written code.
2685 * src/reader.c (parse_assoc_decl): Likewise.
2686
44536b35
AD
26872002-06-10 Akim Demaille <akim@epita.fr>
2688
2689 * src/symtab.c, src/symtab.c (symbol_class_set)
2690 (symbol_user_token_number_set): New.
2691 * src/reader.c (parse_token_decl): Use them.
2692 Use a switch instead of ifs.
2693 Use a single argument.
2694
8b9f2372
AD
26952002-06-10 Akim Demaille <akim@epita.fr>
2696
2697 Remove `%thong' support as it is undocumented, unused, duplicates
2698 `%token's job, and creates useless e-mail traffic with people who
2699 want to know what it is, why it is undocumented, unused, and
2700 duplicates `%token's job.
2701
2702 * src/reader.c (parse_thong_decl): Remove.
2703 * src/options.c (option_table): Remove "thong".
2704 * src/lex.h (tok_thong): Remove.
2705
3ae2b51f
AD
27062002-06-10 Akim Demaille <akim@epita.fr>
2707
2708 * src/symtab.c, src/symtab.c (symbol_type_set)
2709 (symbol_precedence_set): New.
2710 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
2711 (value_components_used): Remove, unused.
2712
2f1afb73
AD
27132002-06-09 Akim Demaille <akim@epita.fr>
2714
2715 Move symbols handling code out of the reader.
2716
2717 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
2718 (axiom): Move to...
2719 * src/symtab.h, src/symtab.c: here.
2720
2721 * src/gram.c (start_symbol): Remove: use startsymbol->number.
2722 * src/reader.c (startval): Rename as...
2723 * src/symtab.h, src/symtab.c (startsymbol): this.
2724 * src/reader.c: Adjust.
2725
2726 * src/reader.c (symbol_check_defined, symbol_make_alias)
2727 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
2728 (token_translations_init)
2729 Move to...
2730 * src/symtab.c: here.
2731 * src/reader.c (packsymbols): Move to...
2732 * src/symtab.h, src/symtab.c (symbols_pack): here.
2733 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
2734 argument.
2735
e9bca3ad
AD
27362002-06-03 Akim Demaille <akim@epita.fr>
2737
2738 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
2739 then statements.
2740
86eff183
AD
27412002-06-03 Akim Demaille <akim@epita.fr>
2742
2743 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
2744 structs with non literals.
2745 * src/scan-skel.l: never-interactive.
2746 * src/conflicts.c (enum conflict_resolution_e): No trailing
2747 comma.
2748 * src/getargs.c (usage): Split long literal strings.
2749 Reported by Hans Aberg.
2750
717be197
AD
27512002-05-28 Akim Demaille <akim@epita.fr>
2752
2753 * data/bison.c++: Use C++ ostreams.
2754 (cdebug_): New member.
2755
670ddffd
AD
27562002-05-28 Akim Demaille <akim@epita.fr>
2757
2758 * src/output.c (output_skeleton): Be sure to allocate enough room
2759 for `/' _and_ for `\0' in full_skeleton.
2760
769b430f
AD
27612002-05-28 Akim Demaille <akim@epita.fr>
2762
2763 * data/bison.c++: Catch up with bison.simple:
2764 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2765 and Paul Eggert <eggert@twinsun.com>: `error' handing.
2766 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
2767 and popping traces.
2768
7067cb36
PH
27692002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2770
2771 * src/output.c (output_skeleton): Put an explicit path in front of
2772 the skeleton file name, rather than relying on the -I directory,
2773 to partially alleviate effects of having a skeleton file lying around
2774 in the current directory.
769b430f 2775
4a713ec2
PH
27762002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2777
769b430f 2778 * src/conflicts.c (log_resolution): Correct typo:
4a713ec2
PH
2779 obstack_printf should be obstack_fgrow1.
2780
b408954b
AD
27812002-05-26 Akim Demaille <akim@epita.fr>
2782
2783 * src/state.h (state_t): `solved_conflicts' is a new member.
2784 * src/LR0.c (new_state): Set it to 0.
2785 * src/conflicts.h, src/conflicts.c (print_conflicts)
2786 (free_conflicts, solve_conflicts): Rename as...
2787 (conflicts_print, conflicts_free, conflicts_solve): these.
2788 Adjust callers.
2789 * src/conflicts.c (enum conflict_resolution_e)
2790 (solved_conflicts_obstack): New, used by...
2791 (log_resolution): this.
2792 Adjust to attach the conflict resolution to each state.
2793 Complete the description with the precedence/associativity
2794 information.
2795 (resolve_sr_conflict): Adjust.
2796 * src/print.c (print_state): Output its solved_conflicts.
2797 * tests/conflicts.at (Unresolved SR Conflicts)
2798 (Solved SR Conflicts): Exercise --report=all.
2799
a49aecd5
AD
28002002-05-26 Akim Demaille <akim@epita.fr>
2801
2802 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
2803 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
2804 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
2805 (token_number_t, item_number_as_token_number)
2806 (token_number_as_item_number, muscle_insert_token_number_table):
2807 Rename as...
2808 (symbol_number_t, item_number_as_symbol_number)
2809 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
2810 these, since it is more appropriate.
2811
5504898e
AD
28122002-05-26 Akim Demaille <akim@epita.fr>
2813
2814 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
2815 `Error:' lines.
2816 * data/bison.simple (yystos) [YYDEBUG]: New.
2817 (yyparse) [YYDEBUG]: Display the symbols which are popped during
2818 error recovery.
2819 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
2820
ec3bc396
AD
28212002-05-25 Akim Demaille <akim@epita.fr>
2822
2823 * doc/bison.texinfo (Debugging): Split into...
2824 (Tracing): this new section, its former contents, and...
2825 (Understanding): this new section.
2826 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
2827 by...
2828 (report_flag): this.
2829 Adjust all dependencies.
2830 (report_args, report_types, report_argmatch): New.
2831 (usage, getargs): Report/support -r, --report.
2832 * src/options.h
2833 (struct option_table_struct): Rename as..,
2834 (struct option_table_s): this.
2835 Rename the `set_flag' member to `flag' to match with getopt_long's
2836 struct.
2837 * src/options.c (option_table): Split verbose into an entry for
2838 %verbose, and another for --verbose.
2839 Support --report/-r, so remove -r from the obsolete --raw.
2840 * src/print.c: Attach full item sets and lookaheads reports to
2841 report_flag instead of trace_flag.
2842 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
2843
78df8250
PE
28442002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2845 and Paul Eggert <eggert@twinsun.com>
769b430f 2846
78df8250
PE
2847 * data/bison.simple (yyparse): Correct error handling to conform to
2848 POSIX and yacc. Specifically, after syntax error is discovered,
2849 do not reduce further before shifting the error token.
2850 Clean up the code a bit by removing the labels yyerrdefault,
2851 yyerrhandle, yyerrpop.
2852 * NEWS: Document the above.
2853
c0c9ea05
PH
28542002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2855
2856 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
2857 type; it isn't always big enough, since it doesn't necessarily
2858 include non-terminals.
769b430f 2859 (yytranslate): Expand definition of yy_token_number_type, so that
c0c9ea05
PH
2860 the latter can be removed.
2861 (yy_token_number_type): Remove, only one use.
2862 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
2863 don't use TokenNumberType as element type.
769b430f 2864
c0c9ea05
PH
2865 * tests/regression.at: Modify expected output to agree with change
2866 to yyr1 and yytranslate.
769b430f 2867
6390a83f
FK
28682002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
2869
2870 * src/reader.c (parse_action): Use copy_character instead of
2871 obstack_1grow.
2872
db7c8e9a
AD
28732002-05-13 Akim Demaille <akim@epita.fr>
2874
2875 * tests/regression.at (Token definitions): Prototype yylex and
2876 yyerror.
2877
fcc61800
PH
28782002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2879
158c687b 2880 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
fcc61800
PH
2881 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
2882 32-bit arithmetic.
2883 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
2884
5683e9b2
AD
28852002-05-07 Akim Demaille <akim@epita.fr>
2886
2887 * tests/synclines.at: Be sure to prototype yylex and yyerror to
2888 avoid GCC warnings.
2889
0c2d3f4c
AD
28902002-05-07 Akim Demaille <akim@epita.fr>
2891
2892 Kill GCC warnings.
2893
2894 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
2895 over the RHS of each rule.
2896 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
2897 * src/state.h (state_t): Member `nitems' is unsigned short.
2898 * src/LR0.c (get_state): Adjust.
2899 * src/reader.c (packgram): Likewise.
2900 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
2901 `Type'.
2902 (muscle_insert_int_table): Remove, unused.
2903 (prepare_rules): Remove `max'.
2904
1565b720
AD
29052002-05-06 Akim Demaille <akim@epita.fr>
2906
2907 * src/closure.c (print_firsts): Display of the symbol tags.
2908 (bitmatrix_print): Move to...
2909 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
2910 here.
2911 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
2912
cfaee611
AD
29132002-05-06 Akim Demaille <akim@epita.fr>
2914
2915 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
2916 hash_do_for_each.
2917
458be8e0
AD
29182002-05-06 Akim Demaille <akim@epita.fr>
2919
2920 * src/LR0.c (new_state, get_state): Instead of using the global
2921 `kernel_size' and `kernel_base', have two new arguments:
2922 `core_size' and `core'.
2923 Adjust callers.
2924
a900a624
AD
29252002-05-06 Akim Demaille <akim@epita.fr>
2926
2927 * src/reader.c (packgram): No longer end `ritem' with a 0
2928 sentinel: it is not used.
2929
d4e7d3a1
AD
29302002-05-05 Akim Demaille <akim@epita.fr>
2931
2932 New experimental feature: display the lookaheads in the report and
2933 graph.
2934
2935 * src/print (print_core): When --trace-flag, display the rules
2936 lookaheads.
2937 * src/print_graph.c (print_core): Likewise.
2938 Swap the arguments.
2939 Adjust caller.
2940
39ceb25b
AD
29412002-05-05 Akim Demaille <akim@epita.fr>
2942
2943 * tests/torture.at (Many lookaheads): New test.
2944
5372019f
AD
29452002-05-05 Akim Demaille <akim@epita.fr>
2946
2947 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
2948 (GENERATE_MUSCLE_INSERT_TABLE): this.
2949 (output_int_table, output_unsigned_int_table, output_short_table)
2950 (output_token_number_table, output_item_number_table): Replace with...
2951 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
2952 (muscle_insert_short_table, muscle_insert_token_number_table)
2953 (muscle_insert_item_number_table): these.
2954 Adjust all callers.
2955 (prepare_tokens): Don't free `translations', since...
2956 * src/reader.h, src/reader.c (grammar_free): do it.
2957 Move to...
2958 * src/gram.h, src/gram.c (grammar_free): here.
2959 * data/bison.simple, data/bison.c++: b4_token_number_max is now
2960 b4_translate_max.
2961
5df5f6d5
AD
29622002-05-05 Akim Demaille <akim@epita.fr>
2963
2964 * src/output.c (output_unsigned_int_table): New.
2965 (prepare_rules): `i' is unsigned.
2966 `prhs', `rline', `r2' are unsigned int.
2967 Rename muscle `rhs_number_max' as `rhs_max'.
2968 Output muscles `prhs_max', `rline_max', and `r2_max'.
2969 Free rline and r1.
2970 * data/bison.simple, data/bison.c++: Adjust to use these muscles
2971 to compute types instead of constant types.
2972 * tests/regression.at (Web2c Actions): Adjust.
2973
b87f8b21
AD
29742002-05-04 Akim Demaille <akim@epita.fr>
2975
2976 * src/symtab.h (SALIAS, SUNDEF): Rename as...
2977 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
2978 Adjust dependencies.
2979 * src/output.c (token_definitions_output): Be sure not to output a
2980 `#define 'a'' when fed with `%token 'a' "a"'.
2981 * tests/regression.at (Token definitions): New.
2982
8bb936e4
PE
29832002-05-03 Paul Eggert <eggert@twinsun.com>
2984
2985 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
2986 for K&R C.
2987
29882002-05-03 gettextize <bug-gnu-gettext@gnu.org>
2989
2990 * Makefile.am (SUBDIRS): Remove intl.
2991 (EXTRA_DIST): Add config/config.rpath.
2992
53c71a12
AD
29932002-05-03 Akim Demaille <akim@epita.fr>
2994
2995 * data/bison.simple (m4_if): Don't output empty enums.
2996 And actually, output valid enum definitions :(.
2997
289dd0cf
AD
29982002-05-03 Akim Demaille <akim@epita.fr>
2999
3000 * configure.bat: Remove, completely obsolete.
3001 * Makefile.am (EXTRA_DIST): Adjust.
3002 Don't distribute config.rpath...
3003 * config/Makefile.am (EXTRA_DIST): Do it.
3004
db85e524
AD
30052002-05-03 Akim Demaille <akim@epita.fr>
3006
3007 * configure.in (GETTEXT_VERSION): New.
3008 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
3009
83ccf991
AD
30102002-05-03 Akim Demaille <akim@epita.fr>
3011
3012 * data/bison.simple (b4_token_enum): New.
3013 (b4_token_defines): Use it to output tokens both as #define and
3014 enums.
3015 Suggested by Paul Eggert.
3016 * src/output.c (token_definitions_output): Don't output spurious
3017 white spaces.
3018
1f418995
AD
30192002-05-03 Akim Demaille <akim@epita.fr>
3020
3021 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
3022
45119f04
RA
30232002-05-02 Robert Anisko <robert@lrde.epita.fr>
3024
3025 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
3026 Update the stack class, give a try to deque as the default container.
3027
b2d52318
AD
30282002-05-02 Akim Demaille <akim@epita.fr>
3029
3030 * data/bison.simple (yyparse): Do not implement @$ = @1.
3031 (YYLLOC_DEFAULT): Adjust to do it.
3032 * doc/bison.texinfo (Location Default Action): Fix.
3033
3a8b4109
AD
30342002-05-02 Akim Demaille <akim@epita.fr>
3035
3036 * src/reader.c (parse_braces): Merge into...
3037 (parse_action): this.
3038
84614e13
AD
30392002-05-02 Akim Demaille <akim@epita.fr>
3040
3041 * configure.in (ALL_LINGUAS): Remove.
3042 * po/LINGUAS, hr.po: New.
3043
fdbcd8e2
AD
30442002-05-02 Akim Demaille <akim@epita.fr>
3045
3046 Remove the so called hairy (semantic) parsers.
3047
3048 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
3049 * src/gram.h, src/gram.c (semantic_parser): Remove.
3050 (rule_t): Remove the guard and guard_line members.
3051 * src/lex.h (token_t): remove tok_guard.
3052 * src/options.c (option_table): Remove %guard and %semantic_parser
3053 support.
3054 * src/output.c, src/output.h (guards_output): Remove.
3055 (prepare): Adjust.
3056 (token_definitions_output): Don't output the `T'
3057 tokens (???).
3058 (output_skeleton): Don't output the guards.
3059 * src/files.c, src/files.c (attrsfile): Remove.
3060 * src/reader.c (symbol_list): Remove the guard and guard_line
3061 members.
3062 Adjust dependencies.
3063 (parse_guard): Remove.
3064 * data/bison.hairy: Remove.
3065 * doc/bison.texinfo (Environment Variables): Remove occurrences of
3066 BISON_HAIRY.
3067
82b6cb3f
AD
30682002-05-02 Akim Demaille <akim@epita.fr>
3069
3070 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
3071 (parse_guard): Rename the formal argument `stack_offset' as
3072 `rule_length', which is more readable.
3073 Adjust callers.
3074 (copy_at, copy_dollar): Instead of outputting the hard coded
3075 values of $$, $n and so forth, output invocation to b4_lhs_value,
3076 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
900c877b
AD
3077 Note: this patch partially drops `semantic-parser' support: it
3078 always does `rule_length - n', where semantic parsers ought to
3079 always use `-n'.
82b6cb3f
AD
3080 * data/bison.simple, data/bison.c++ (b4_lhs_value)
3081 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
3082
6cbfbcc5
AD
30832002-05-02 Akim Demaille <akim@epita.fr>
3084
3085 * configure.in (AC_INIT): Bump to 1.49b.
3086 (AM_INIT_AUTOMAKE): Short invocation.
3087
b8548114
AD
30882002-05-02 Akim Demaille <akim@epita.fr>
3089
3090 Version 1.49a.
3091
c20cd1fa
AD
30922002-05-01 Akim Demaille <akim@epita.fr>
3093
3094 * src/skeleton.h: Remove.
3095
8a9566d4
AD
30962002-05-01 Akim Demaille <akim@epita.fr>
3097
3098 * src/skeleton.h: Fix the #endif.
3099 Reported by Magnus Fromreide.
3100
8c6d399a
PE
31012002-04-26 Paul Eggert <eggert@twinsun.com>
3102
3103 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
3104 Define if we define YYSTYPE and YYLTYPE, respectively.
b756bb75 3105 (YYCOPY): Fix [] quoting problem in the non-GCC case.
8a9566d4 3106
2b7ed18a
RA
31072002-04-25 Robert Anisko <robert@lrde.epita.fr>
3108
3109 * src/scan-skel.l: Postprocess quadrigraphs.
3110
3111 * src/reader.c (copy_character): New function, used to output
3112 single characters while replacing `[' and `]' with quadrigraphs, to
3113 avoid troubles with M4 quotes.
3114 (copy_comment): Output characters with copy_character.
3115 (read_additionnal_code): Likewise.
3116 (copy_string2): Likewise.
3117 (copy_definition): Likewise.
3118
3119 * tests/calc.at: Exercise M4 quoting.
3120
34a89c50
AD
31212002-04-25 Akim Demaille <akim@epita.fr>
3122
3123 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
3124 between `!' and the command.
3125 Reported by Paul Eggert.
3126
0dd1580a
RA
31272002-04-24 Robert Anisko <robert@lrde.epita.fr>
3128
3129 * tests/calc.at: Exercise prologue splitting.
3130
3131 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
3132 `b4_post_prologue' instead of `b4_prologue'.
3133
3134 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
3135 muscles.
3136 (output): Free pre_prologue_obstack and post_prologue_obstack.
3137 * src/files.h, src/files.c (attrs_obstack): Remove.
3138 (pre_prologue_obstack, post_prologue_obstack): New.
3139 * src/reader.c (copy_definition): Add a parameter to specify the
3140 obstack to fill, instead of using attrs_obstack unconditionally.
3141 (read_declarations): Pass pre_prologue_obstack to copy_definition if
3142 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
3143
83c1796f
PE
31442002-04-23 Paul Eggert <eggert@twinsun.com>
3145
3146 * data/bison.simple: Remove unnecessary commentary and white
3147 space differences from 1_29-branch.
3148 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
3149
3150 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
3151 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
3152 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
3153 constructors or destructors.
3154
3155 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
3156
1207eeac
AD
31572002-04-23 Akim Demaille <akim@epita.fr>
3158
3159 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
3160 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
3161 location with columns.
3162 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
3163 All reported by Paul Eggert.
3164
78ab8f67
AD
31652002-04-22 Akim Demaille <akim@epita.fr>
3166
3167 * src/reduce.c (dump_grammar): Move to...
3168 * src/gram.h, src/gram.c (grammar_dump): here.
3169 Be sure to separate long item numbers.
3170 Don't read the members of a rule's prec if its nil.
3171
133c20e2
AD
31722002-04-22 Akim Demaille <akim@epita.fr>
3173
3174 * src/output.c (table_size, table_grow): New.
3175 (MAXTABLE): Remove, replace uses with table_size.
3176 (pack_vector): Instead of dying when the table is too big, grow it.
3177
9515e8a7
AD
31782002-04-22 Akim Demaille <akim@epita.fr>
3179
3180 * data/bison.simple (yyr1): Its type is that of a token number.
3181 * data/bison.c++ (r1_): Likewise.
3182 * tests/regression.at (Web2c Actions): Adjust.
3183
23c5a174
AD
31842002-04-22 Akim Demaille <akim@epita.fr>
3185
3186 * src/reader.c (token_translations_init): 256 is now the default
3187 value for the error token, i.e., it will be assigned another
3188 number if the user assigned 256 to one of her tokens.
3189 (reader): Don't force 256 to error.
3190 * doc/bison.texinfo (Symbols): Adjust.
3191 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
3192 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
3193 etc. instead of 10, 20, 30 (which was used to `jump' over error
3194 (256) and undefined (2)).
3195
5fbb0954
AD
31962002-04-22 Akim Demaille <akim@epita.fr>
3197
3198 Propagate more token_number_t.
3199
3200 * src/gram.h (token_number_as_item_number)
3201 (item_number_as_token_number): New.
3202 * src/output.c (GENERATE_OUTPUT_TABLE): New.
3203 Use it to create output_item_number_table and
3204 output_token_number_table.
3205 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
3206 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
3207 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
3208 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
3209
4f940944
AD
32102002-04-22 Akim Demaille <akim@epita.fr>
3211
3212 * src/output.h, src/output.c (get_lines_number): Remove.
3213
3ded9a63
AD
32142002-04-19 Akim Demaille <akim@epita.fr>
3215
3216 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
3217 as Lex/Flex'.
3218 (Debugging): More details about enabling the debugging features.
3219 (Table of Symbols): Describe $$, $n, @$, and @n.
3220 Suggested by Tim Josling.
3221
e0c471a9
AD
32222002-04-19 Akim Demaille <akim@epita.fr>
3223
3224 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
3225
fecc10cd
AD
32262002-04-10 Akim Demaille <akim@epita.fr>
3227
3228 * src/system.h: Rely on HAVE_LIMITS_H.
3229 Suggested by Paul Eggert.
3230
51dec47b
AD
32312002-04-09 Akim Demaille <akim@epita.fr>
3232
3233 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
3234 full stderr, and strip it according to the bison options, instead
3235 of composing the error message from different bits.
3236 This makes it easier to check for several error messages.
3237 Adjust all the invocations.
3238 Add an invocation exercising the error token.
3239 Add an invocation demonstrating a stupid error message.
3240 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
3241 Adjust the tests.
3242 Error message are for stderr, not stdout.
3243
007a50a4
AD
32442002-04-09 Akim Demaille <akim@epita.fr>
3245
3246 * src/gram.h, src/gram.c (error_token_number): Remove, use
3247 errtoken->number.
3248 * src/reader.c (reader): Don't specify the user token number (2)
3249 for $undefined, as it uselessly prevents using it.
3250 * src/gram.h (token_number_t): Move to...
3251 * src/symtab.h: here.
3252 (state_t.number): Is a token_number_t.
3253 * src/print.c, src/reader.c: Use undeftoken->number instead of
3254 hard coded 2.
3255 (Even though this 2 is not the same as above: the number of the
3256 undeftoken remains being 2, it is its user token number which
3257 might not be 2).
3258 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
3259 `user_token_number_max'.
3260 Output `undef_token_number'.
3261 * data/bison.simple, data/bison.c++: Use them.
3262 Be sure to map invalid yylex return values to
3263 `undef_token_number'. This saves us from gratuitous SEGV.
3264
3265 * tests/conflicts.at (Solved SR Conflicts)
3266 (Unresolved SR Conflicts): Adjust.
3267 * tests/regression.at (Web2c Actions): Adjust.
3268
06446ccf
AD
32692002-04-08 Akim Demaille <akim@epita.fr>
3270
3271 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
3272 Adding #line.
3273 Remove the duplicate `typedefs'.
3274 (RhsNumberType): Fix the declaration and various other typos.
3275 Use __ofile__.
3276 * data/bison.simple: Use __ofile__.
3277 * src/scan-skel.l: Handle __ofile__.
3278
62a3e4f0
AD
32792002-04-08 Akim Demaille <akim@epita.fr>
3280
3281 * src/gram.h (item_number_t): New, the type of item numbers in
3282 RITEM. Note that it must be able to code symbol numbers as
3283 positive number, and the negation of rule numbers as negative
3284 numbers.
3285 Adjust all dependencies (pretty many).
3286 * src/reduce.c (rule): Remove this `short *' pointer: use
3287 item_number_t.
3288 * src/system.h (MINSHORT, MAXSHORT): Remove.
3289 Include `limits.h'.
3290 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
3291 (shortcpy): Remove.
3292 (MAXTABLE): Move to...
3293 * src/output.c (MAXTABLE): here.
3294 (prepare_rules): Use output_int_table to output rhs.
3295 * data/bison.simple, data/bison.c++: Adjust.
3296 * tests/torture.at (Big triangle): Move the limit from 254 to
3297 500.
3298 * tests/regression.at (Web2c Actions): Ajust.
3299
3300 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
3301 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
3302 passes, but produces negative #line number, once fixed, GCC is
3303 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
3304 C), it passes.
3305 * src/state.h (state_h): Code input lines on ints, not shorts.
3306
bb88b0fc
AD
33072002-04-08 Akim Demaille <akim@epita.fr>
3308
3309 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
3310 and then the grammar.
3311
9a636f47
AD
33122002-04-08 Akim Demaille <akim@epita.fr>
3313
3314 * src/system.h: No longer using strndup.
3315
680e8701
AD
33162002-04-07 Akim Demaille <akim@epita.fr>
3317
3318 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
3319 * src/output.c (output_table_data): Return the longest number.
3320 (prepare_tokens): Output `token_number_max').
3321 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
3322 New.
3323 Use them to define yy_token_number_type/TokenNumberType.
3324 Use this type for yytranslate.
3325 * tests/torture.at (Big triangle): Push the limit from 124 to
3326 253.
3327 * tests/regression.at (Web2c Actions): Adjust.
3328
817e9f41
AD
33292002-04-07 Akim Demaille <akim@epita.fr>
3330
3331 * tests/torture.at (Big triangle): New.
3332 (GNU AWK Grammar, GNU Cim Grammar): Move to...
3333 * tests/existing.at: here.
3334
5123689b
AD
33352002-04-07 Akim Demaille <akim@epita.fr>
3336
3337 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
3338 nritems.
3339 Adjust dependencies.
3340
f3849179
AD
33412002-04-07 Akim Demaille <akim@epita.fr>
3342
3343 * src/reader.c: Normalize increments to prefix form.
3344
bd02036a
AD
33452002-04-07 Akim Demaille <akim@epita.fr>
3346
3347 * src/reader.c, symtab.c: Remove debugging code.
3348
db8837cb
AD
33492002-04-07 Akim Demaille <akim@epita.fr>
3350
3351 Rename all the `bucket's as `symbol_t'.
3352
3353 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
3354 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
3355 * src/symtab.c, src/symtab.h (bucket): Rename as...
3356 (symbol_t): this.
3357 (symbol_list_new, bucket_check_defined, bucket_make_alias)
3358 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
3359 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
3360 (buckets_new, buckets_free, buckets_do): Rename as...
3361 (symbol_list_new, symbol_check_defined, symbol_make_alias)
3362 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
3363 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
3364 (symbols_new, symbols_free, symbols_do): these.
3365
72a23c97
AD
33662002-04-07 Akim Demaille <akim@epita.fr>
3367
3368 Use lib/hash for the symbol table.
3369
3370 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
3371 EOF.
3372 * src/lex.c (lex): Set the `number' member of new terminals.
3373 * src/reader.c (bucket_check_defined, bucket_make_alias)
3374 (bucket_check_alias_consistence, bucket_translation): New.
3375 (reader, grammar_free, readgram, token_translations_init)
3376 (packsymbols): Adjust.
3377 (reader): Number the predefined tokens.
3378 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
3379 for predefined tokens.
3380 * src/symtab.h (bucket): Remove all the hash table related
3381 members.
3382 * src/symtab.c (symtab): Replace by...
3383 (bucket_table): this.
3384 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
3385 (buckets_new, buckets_do): New.
3386
280a38c3
AD
33872002-04-07 Akim Demaille <akim@epita.fr>
3388
3389 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
3390 (start_symbol, max_user_token_number, semantic_parser)
3391 (error_token_number): Initialize.
3392 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
3393 Initialize.
3394 (reader): Don't.
3395 (errtoken, eoftoken, undeftoken, axiom): Extern.
3396
03b31c0c
AD
33972002-04-07 Akim Demaille <akim@epita.fr>
3398
3399 * src/gram.h (rule_s): prec and precsym are now pointers
3400 to the bucket giving the priority/associativity.
3401 Member `associativity' removed: useless.
3402 * src/reduce.c, src/conflicts.c: Adjust.
3403
8b3df748
AD
34042002-04-07 Akim Demaille <akim@epita.fr>
3405
3406 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
3407 Properly escape the symbols' TAG when outputting them.
3408
e601aa1d
AD
34092002-04-07 Akim Demaille <akim@epita.fr>
3410
3411 * src/lalr.h (LA): Is a bitsetv, not bitset*.
3412
b0299a2e
AD
34132002-04-07 Akim Demaille <akim@epita.fr>
3414
3415 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
3416 (LArule): this, which is an array to rule_t*.
3417 * src/print.c, src/conflicts.c: Adjust.
3418
d7e1f00c
AD
34192002-04-07 Akim Demaille <akim@epita.fr>
3420
3421 * src/gram.h (rule_t): Rename `number' as `user_number'.
3422 `number' is a new member.
3423 Adjust dependencies.
3424 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
3425
cc9305dd
AD
34262002-04-07 Akim Demaille <akim@epita.fr>
3427
3428 As a result of the previous patch, it is no longer needed
3429 to reorder ritem itself.
3430
3431 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
3432
b0940840
AD
34332002-04-07 Akim Demaille <akim@epita.fr>
3434
3435 Be sure never to walk through RITEMS, but use only data related to
3436 the rules themselves. RITEMS should be banished.
3437
3438 * src/output.c (output_token_translations): Rename as...
3439 (prepare_tokens): this.
3440 In addition to `translate', prepare the muscles `tname' and
3441 `toknum', which were handled by...
3442 (output_rule_data): this.
3443 Remove, and move the remainder of its outputs into...
3444 (prepare_rules): this new routines, which also merges content from
3445 (output_gram): this.
3446 (prepare_rules): Be sure never to walk through RITEMS.
3447 (output_stos): Rename as...
3448 (prepare_stos): this.
3449 (output): Always invoke prepare_states, after all, just don't use it
3450 in the output if you don't need it.
3451
643a5994
AD
34522002-04-07 Akim Demaille <akim@epita.fr>
3453
3454 * src/LR0.c (new_state): Display `nstates' as the name of the
3455 newly created state.
3456 Adjust to initialize first_state and last_state if needed.
3457 Be sure to distinguish the initial from the final state.
3458 (new_states): Create the itemset of the initial state, and use
3459 new_state.
3460 * src/closure.c (closure): Now that the initial state has its
3461 items properly set, there is no need for a special case when
3462 creating `ruleset'.
3463
3464 As a result, now the rule 0, reducing to $axiom, is visible in the
3465 outputs. Adjust the test suite.
3466
3467 * tests/conflicts.at (Solved SR Conflicts)
3468 (Unresolved SR Conflicts): Adjust.
3469 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
3470 * tests/conflicts.at (S/R in initial): New.
3471
b4c4ccc2
AD
34722002-04-07 Akim Demaille <akim@epita.fr>
3473
3474 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
3475 the RHS of the rules.
3476 * src/output.c (output_gram): Likewise.
3477
bba97eb2
AD
34782002-04-07 Akim Demaille <akim@epita.fr>
3479
3480 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
3481 bucket.
3482 Adjust all dependencies.
3483 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
3484 `number' of the buckets too.
3485 * src/gram.h: Include `symtab.h'.
3486 (associativity): Move to...
3487 * src/symtab.h: here.
3488 No longer include `gram.h'.
3489
c3b407f4
AD
34902002-04-07 Akim Demaille <akim@epita.fr>
3491
3492 * src/gram.h, src/gram.c (rules_rhs_length): New.
3493 (ritem_longest_rhs): Use it.
3494 * src/gram.h (rule_t): `number' is a new member.
3495 * src/reader.c (packgram): Set it.
3496 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
3497 the end of `rules', and count them out of `nrules'.
3498 (reduce_output, dump_grammar): Adjust.
3499 * src/print.c (print_grammar): It is no longer needed to check for
3500 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
3501 * tests/reduce.at (Reduced Automaton): New test.
3502
11652ab3
AD
35032002-04-07 Akim Demaille <akim@epita.fr>
3504
3505 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
3506 lacking `+ 1' to nrules, Bison reported as useless a token if it
3507 was used solely to set the precedence of the last rule...
3508
26b23c1a
AD
35092002-04-07 Akim Demaille <akim@epita.fr>
3510
3511 * data/bison.c++, data/bison.simple: Don't output the current file
3512 name in #line, to avoid useless diffs between two identical
3513 outputs under different names.
3514
18bcecb0
AD
35152002-04-07 Akim Demaille <akim@epita.fr>
3516
3517 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
3518 Normalize loops to using `< nrules + 1', not `<= nrules'.
3519
fa770c86
AD
35202002-04-07 Akim Demaille <akim@epita.fr>
3521
3522 * TODO: Update.
3523
d9b739c3
AD
35242002-04-07 Akim Demaille <akim@epita.fr>
3525
3526 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
3527 bucket.value as bucket.number.
3528
99013900
AD
35292002-04-07 Akim Demaille <akim@epita.fr>
3530
3531 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
3532 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
3533 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
3534 RHS, instead of being an index in RITEMS.
3535
e966383b
PE
35362002-04-04 Paul Eggert <eggert@twinsun.com>
3537
3538 * doc/bison.texinfo: Update copyright date.
3539 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
3540 (Symbols): Warn about running Bison in one character set,
3541 but compiling and/or running in an incompatible one.
3542 Warn about character code 256, too.
3543
35442002-04-03 Paul Eggert <eggert@twinsun.com>
3545
3546 * src/bison.data (YYSTACK_ALLOC): Depend on whether
3547 YYERROR_VERBOSE is nonzero, not whether it is defined.
3548
3549 Merge changes from bison-1_29-branch.
c307773e 3550
8d6c48b9
PE
35512002-03-20 Paul Eggert <eggert@twinsun.com>
3552
3553 Merge fixes from Debian bison_1.34-1.diff.
3554
3555 * configure.in (AC_PREREQ): 2.53.
3556
e53c6322
AD
35572002-03-20 Akim Demaille <akim@epita.fr>
3558
3559 * src/conflicts.c (log_resolution): Argument `resolution' is const.
3560
9ffbeca7
PE
35612002-03-19 Paul Eggert <eggert@twinsun.com>
3562
21db0b2a
PE
3563 * src/bison.simple (YYCOPY): New macro.
3564 (YYSTACK_RELOCATE): Use it.
3565 Remove Type arg; no longer needed. All callers changed.
3566 (yymemcpy): Remove; no longer needed.
3567
9ffbeca7
PE
3568 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
3569 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
3570
642cb8f8
AD
35712002-03-19 Akim Demaille <akim@epita.fr>
3572
3573 Test and fix the #line outputs.
3574
3575 * tests/atlocal.at (GCC): New.
3576 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
3577 (Prologue synch line, ,%union synch line, Postprologue synch line)
3578 (Action synch line, Epilogue synch line): New tests.
3579 * src/reader.c (parse_union_decl): Define the muscle stype_line.
3580 * data/bison.simple, data/bison.c++: Use it.
3581
3c31a486
AD
35822002-03-19 Akim Demaille <akim@epita.fr>
3583
3584 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
3585 (Solved SR Conflicts, %expect not enough, %expect right)
3586 (%expect too much): Move to...
3587 * tests/conflicts.at: this new file.
3588
0d8bed56
AD
35892002-03-19 Akim Demaille <akim@epita.fr>
3590
3591 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
3592 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
3593 that we can move to enums for instance.
3594 * src/output.c (token_definitions_output): Output a list of
3595 `token-name, token-number' instead of the #define.
3596 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
3597
9208d17f
AD
35982002-03-14 Akim Demaille <akim@epita.fr>
3599
3600 Use Gettext 0.11.1.
3601
af27eacb
RA
36022002-03-09 Robert Anisko <robert@lrde.epita.fr>
3603
3604 * data/bison.c++: Make the user able to add members to the generated
3605 parser by subclassing.
3606
9101a310
RA
36072002-03-05 Robert Anisko <robert@lrde.epita.fr>
3608
3609 * src/reader.c (read_additionnal_code): `c' should be an integer, not
3610 a character.
3611 Reported by Nicolas Tisserand and Nicolas Burrus.
3612
fff9bf0b
RA
36132002-03-04 Robert Anisko <robert@lrde.epita.fr>
3614
3615 * src/reader.c: Warn about lacking semi-colons, do not complain.
3616
64dba31e
RA
36172002-03-04 Robert Anisko <robert@lrde.epita.fr>
3618
3619 * data/bison.c++: Remove a debug line.
3620
374f5a14
RA
36212002-03-04 Robert Anisko <robert@lrde.epita.fr>
3622
3623 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
3624 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
3625 provide a default implementation.
3626
bfcf1f3a
AD
36272002-03-04 Akim Demaille <akim@epita.fr>
3628
3629 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
3630 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
3631 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
3632 * tests/semantic.at (Parsing Guards): Similarly.
3633 * src/reader.at (readgram): Complain if the last rule is not ended
3634 with a semi-colon.
3635
65ccf9fc
AD
36362002-03-04 Akim Demaille <akim@epita.fr>
3637
3638 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
3639 * src/closure.c: here.
3640 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
3641 RTC.
3642 * src/warshall.h, src/warshall.c: Remove.
3643 * tests/sets.at (Broken Closure): Adjust.
3644
d0039cbc
AD
36452002-03-04 Akim Demaille <akim@epita.fr>
3646
3647 * src/output.c (output_skeleton): tempdir is const.
3648 bytes_read is unused.
3649
345cea78
AD
36502002-03-04 Akim Demaille <akim@epita.fr>
3651
3652 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
3653 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
3654 Update.
3655 From Michael Hayes.
3656
564801f7
AD
36572002-03-04 Akim Demaille <akim@epita.fr>
3658
3659 * src/closure.c (closure): `r' is unused.
3660
e5352bc7
AD
36612002-03-04 Akim Demaille <akim@epita.fr>
3662
3663 * tests/sets.at (Broken Closure): Add the ending `;'.
3664 * src/reader.at (readgram): Complain if a rule is not ended with a
3665 semi-colon.
3666
914feea9
AD
36672002-03-04 Akim Demaille <akim@epita.fr>
3668
3669 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
3670 (count_sr_conflicts): Use bitset_count.
3671 * src/reduce.c (inaccessable_symbols): Ditto.
3672 (bits_size): Remove.
3673 * src/warshall.h, src/warshall.c: Convert to bitsetv.
3674
f0250de6
AD
36752002-03-04 Akim Demaille <akim@epita.fr>
3676
3677 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
3678 * src/reduce.c: Remove the `bitset_zero's following the
3679 `bitset_create's, as now it is performed by the latter.
3680
ef017502
AD
36812002-03-04 Akim Demaille <akim@epita.fr>
3682
3683 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
3684 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
3685 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
3686 latest sources from Michael.
3687
76514394
AD
36882002-03-04 Akim Demaille <akim@epita.fr>
3689
3690 * src/output.c (output): Don't free the grammar.
3691 * src/reader.c (grammar_free): New.
3692 * src/main.c (main): Call it and don't free symtab here.
3693
55024580
AD
36942002-03-04 Akim Demaille <akim@epita.fr>
3695
3696 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
3697 before returning.
3698 Reported by Benoit Perrot.
3699
f9abaa2c
AD
37002002-03-04 Akim Demaille <akim@epita.fr>
3701
3702 Use bitset operations when possible, not loops over bits.
3703
3704 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
3705 bitset_or.
3706 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
3707 * src/reduce.c (useless_nonterminals): Formatting changes.
3708 * src/warshall.c (TC): Use bitset_or.
3709
0e721e75
AD
37102002-03-04 Akim Demaille <akim@epita.fr>
3711
3712 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
3713 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
3714 Ditto.
3715
0fb1ffb1
AD
37162002-03-04 Akim Demaille <akim@epita.fr>
3717
3718 * src/lalr.c (F): Now a bitset*.
3719 Adjust all dependencies.
3720
b86796bf
AD
37212002-03-04 Akim Demaille <akim@epita.fr>
3722
3723 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
3724 Adjust all dependencies.
3725
602bbf31
AD
37262002-03-04 Akim Demaille <akim@epita.fr>
3727
3728 * src/L0.c, src/LR0.h (nstates): Be size_t.
3729 Adjust comparisons (signed vs unsigned).
3730 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
3731 bitset*.
3732 Adjust all dependencies.
3733
d8a0245c
AD
37342002-03-04 Akim Demaille <akim@epita.fr>
3735
3736 * src/closure.c (firsts): Now, also a bitset.
3737 Adjust all dependencies.
3738 (varsetsize): Remove, now unused.
3739 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
3740
34ba9743
AD
37412002-03-04 Akim Demaille <akim@epita.fr>
3742
3743 * src/print.c: Convert to use bitset.h, not hand coded iterations
3744 over ints.
3745
ed86e78c
AD
37462002-03-04 Akim Demaille <akim@epita.fr>
3747
3748 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
3749
dfdb1797
AD
37502002-03-04 Akim Demaille <akim@epita.fr>
3751
3752 * src/closure.c (ruleset): Be a bitset.
3753 (rulesetsize): Remove.
3754
7086e707
AD
37552002-03-04 Akim Demaille <akim@epita.fr>
3756
3757 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
3758 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
3759 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
3760 * src/closure.c (fderives): Be an array of bitsets.
3761
98254360
RA
37622002-02-28 Robert Anisko <robert@lrde.epita.fr>
3763
3764 * data/bison.c++: Merge the two generated headers. Insert a copyright
3765 notice in each output file.
3766
a75c057f
AD
37672002-02-28 Akim Demaille <akim@epita.fr>
3768
3769 * data/bison.c++: Copy the prologue of bison.simple to fetch
3770 useful M4 definitions, such as b4_header_guard.
3771
06b00abc
AD
37722002-02-25 Akim Demaille <akim@epita.fr>
3773
3774 * src/getargs.c (version): Give the name of the authors, and use a
a75c057f
AD
3775 translator friendly scheme for the bgr
3776 copyright notice.
06b00abc 3777
70e7d534
AD
37782002-02-25 Akim Demaille <akim@epita.fr>
3779
3780 * src/output.c (header_output): Remove, now handled completely via
3781 M4.
3782
abe017f6
AD
37832002-02-25 Akim Demaille <akim@epita.fr>
3784
3785 * m4/m4.m4: New, from CVS Autoconf.
3786 * configure.in: Invoke it.
3787 * src/output.c (output_skeleton): Use its result instead of the
3788 hard coded name.
3789
381fb12e
AD
37902002-02-25 Akim Demaille <akim@epita.fr>
3791
3792 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
3793 Fileutils 4.1.5.
3794 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
3795 * src/output.c (output_skeleton): Use mkstemp to create a real
3796 temporary file.
3797 Move the filling of `skeleton' and its muscle to...
3798 (prepare): here.
3799 (output): Move the definition of the prologue muscle to...
3800 (prepare): here.
3801 * src/system.h (DEFAULT_TMPDIR): New.
3802
6f38107f
PE
38032002-02-14 Paul Eggert <eggert@twinsun.com>
3804
3805 Remove the support for C++ namespace cleanliness; it was
3806 causing more problems than it was curing, since it didn't work
3807 properly on some nonstandard C++ compilers. This can wait
3808 for a proper C++ parser.
3809
3810 * NEWS: Document this.
3811 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
3812 of C++, as it's treated like C now.
3813 * src/bison.simple (YYSTD): Remove.
3814 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
3815 Treat C++ just like Standard C instead of trying to support
3816 namespace cleanliness.
3817
80cce3da
AD
38182002-02-14 Akim Demaille <akim@epita.fr>
3819
3820 * tests/regression.at (else): Adjust to Andreas' change.
3821
842e8679
AD
38222002-02-14 Akim Demaille <akim@epita.fr>
3823
3824 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
3825
4bda3f10
AD
38262002-02-13 Andreas Schwab <schwab@suse.de>
3827
3828 * src/output.c (output_rule_data): Don't output NULL, it might
3829 not be defined yet.
3830
4162fa07 38312002-02-11 Robert Anisko <robert@lrde.epita.fr>
b418ecd8 3832
4162fa07
RA
3833 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
3834 (Copyright notice): Update.
b418ecd8 3835
bd16a5dc
AD
38362002-02-11 Akim Demaille <akim@epita.fr>
3837
3838 * tests/regression.at (%nonassoc and eof): Don't include
3839 nonportable headers.
3840
8d69a1a3
RA
38412002-02-08 Robert Anisko <robert@lrde.epita.fr>
3842
3843 * data/bison.c++: Correct error recovery. Make the user able to
3844 initialize the starting location.
3845
9b2d0677
AD
38462002-02-07 Akim Demaille <akim@epita.fr>
3847
3848 * tests/input.at: New.
3849
69e2658b
RA
38502002-02-07 Robert Anisko <robert@lrde.epita.fr>
3851
3852 * data/bison.c++: Replace some direct m4 expansions by constants. Be
9b2d0677 3853 more consistent when naming methods and variables. Put preprocessor
69e2658b
RA
3854 directives around tables only needed for debugging.
3855
4aacc3a7
RA
38562002-02-07 Robert Anisko <robert@lrde.epita.fr>
3857
3858 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
3859 C++ parsers.
3860 (yy::b4_name::parse): Use print_.
3861
762a801e
RA
38622002-02-07 Robert Anisko <robert@lrde.epita.fr>
3863
3864 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
3865
4bb2bc3f
RA
38662002-02-07 Robert Anisko <robert@lrde.epita.fr>
3867
3868 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
3869 C++ parsers.
3870 (yy::b4_name::parse): Build verbose error messages, and use error_.
3871
6b45a3ca
RA
38722002-02-06 Robert Anisko <robert@lrde.epita.fr>
3873
3874 * data/bison.c++: Fix m4 quoting in comments.
3875
50997c6e
RA
38762002-02-06 Robert Anisko <robert@lrde.epita.fr>
3877
3878 * data/bison.c++: Adjust the parser code. Fix some muscles that were
3879 not expanded by m4.
3880
3f3eed27
AD
38812002-02-05 Akim Demaille <akim@epita.fr>
3882
3883 * data/bison.c++: Adjust to the M4 back end.
3884 More is certainly needed.
3885
be2a1a68
AD
38862002-02-05 Akim Demaille <akim@epita.fr>
3887
3888 Give a try to M4 as a back end.
3889
3890 * lib/readpipe.c: New, from wdiff.
3891 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
3892 BISON_HAIRY.
3893 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
3894 specific values. Now it is m4 that performs the lookup.
3895 * src/parse-skel.y: Remove.
3896 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
3897 * src/output.c (actions_output, guards_output)
3898 (token_definitions_output): No longer keeps track of the output
3899 line number, hence remove the second argument.
3900 (guards_output): Check against the guard member of a rule, not the
3901 action member.
3902 Adjust callers.
3903 (output_skeleton): Don't look for the skeleton location, let m4 do
3904 that.
3905 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
3906 file will be used.
3907 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
3908 (prepare): Given that for the time being changesyntax is not
3909 usable in M4, rename the muscles using `-' to `_'.
3910 Define `defines_flag', `output_parser_name' and `output_header_name'.
3911 * src/output.h (actions_output, guards_output)
3912 (token_definitions_output): Adjust prototypes.
3913 * src/scan-skel.l: Instead of scanning the skeletons, it now
3914 processes the output of m4: `__oline__' and `#output'.
3915 * data/bison.simple: Adjust to be used by M4(sugar).
3916 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
3917 to date.
3918 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
3919 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
3920 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
3921 shamelessly stolen from CVS Autoconf.
3922
beda758b
AD
39232002-02-05 Akim Demaille <akim@epita.fr>
3924
3925 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
3926 * configure.in: Check for the declarations of free and malloc.
3927 * src/muscle_tab.c: Adjust.
3928
5ece6d43
AD
39292002-02-05 Akim Demaille <akim@epita.fr>
3930
3931 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
3932 which have no values.
3933
5bb18f9a
AD
39342002-02-05 Akim Demaille <akim@epita.fr>
3935
3936 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
3937 * data/: here.
3938
894dd62e
PE
39392002-01-29 Paul Eggert <eggert@twinsun.com>
3940
3941 * src/bison.simple (YYSIZE_T): Do not define merely because
3942 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
3943 On some platforms, <alloca.h> does not declare YYSTD (size_t).
3944
82841af7
AD
39452002-01-27 Akim Demaille <akim@epita.fr>
3946
3947 Fix `%nonassoc and eof'.
3948
3949 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
3950 which were not properly copied! Replace
3951 memcpy (res->errs, src->errs, src->nerrs);
3952 with
3953 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
3954 !!!
3955 * tests/regression.at (%nonassoc and eof): Adjust to newest
3956 Autotest: `.' is not in the PATH.
3957
318b76e9
AD
39582002-01-27 Akim Demaille <akim@epita.fr>
3959
3960 * tests/sets.at (AT_EXTRACT_SETS): New.
3961 (Nullable): Use it.
3962 (Firsts): New.
3963
30d2f3d5
AD
39642002-01-26 Akim Demaille <akim@epita.fr>
3965
3966 * tests/actions.at, tests/calc.at, tests/headers.at,
3967 * tests/torture.at: Adjust to the newest Autotest which no longer
3968 forces `.' in the PATH.
3969
30f8c395
AD
39702002-01-25 Akim Demaille <akim@epita.fr>
3971
3972 * tests/regression.at (%nonassoc and eof): New.
3973 Suggested by Robert Anisko.
3974
29ae55f1
AD
39752002-01-24 Akim Demaille <akim@epita.fr>
3976
3977 Bison dumps core when trying to complain about broken input files.
3978 Reported by Cris van Pelt.
3979
3980 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
3981 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
3982 into...
3983 (Invalid inputs): Strengthen: exercise parse_percent_token.
3984
2b548aa6
RA
39852002-01-24 Robert Anisko <robert.anisko@epita.fr>
3986
3987 * src/Makefile.am: Add bison.c++.
3988 * src/bison.c++: New skeleton.
3989
bb0146c2
AD
39902002-01-21 Paolo Bonzini <bonzini@gnu.org>
3991
3992 * po/it.po: New.
3993
bec30531
AD
39942002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
3995
3996 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
3997
fc6edc45
MA
39982002-01-20 Marc Autret <marc@gnu.org>
3999
4000 * src/files.c (compute_output_file_names): Fix
4001
5e5d5415
MA
40022002-01-20 Marc Autret <marc@gnu.org>
4003
4004 * tests/output.at: New test.
4005 * src/files.c (compute_base_names): Don't map extensions when
4006 the YACC flag is set, use defaults.
4007 Reported by Evgeny Stambulchik.
4008
44ea3fbd
MA
40092002-01-20 Marc Autret <marc@gnu.org>
4010
bb0146c2 4011 * src/system.h: Need to define __attribute__ away for non-GCC
44ea3fbd
MA
4012 compilers as well (i.e. the vendor C compiler).
4013 Suggested by Albert Chin-A-Young.
4014
338963d1
TVH
40152002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
4016
4017 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
4018 canonical definition.
4019 * src/system.h: Use the canonical definition for PARAMS (avoids
4020 a conflict with the macro from lib/hash.h).
4021
c57b2479
AD
40222002-01-11 Akim Demaille <akim@epita.fr>
4023
4024 * configure.in: Use AC_FUNC_STRNLEN.
d9e9746c 4025 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
c57b2479 4026
b85810ae
AD
40272002-01-09 Akim Demaille <akim@epita.fr>
4028
4029 * src/files.c, src/files.h (output_infix): New.
4030 (tab_extension): Remove.
4031 (compute_base_names): Compute the former, drop the latter.
4032 * src/output.c (prepare): Insert the muscles `output-infix', and
4033 `output-suffix'.
4034 * src/parse-skel.y (string, string.1): New.
4035 (section.header): Use it.
4036 (section.yacc): Remove.
4037 (prefix): Remove too.
4038 * src/scan-skel.l: Adjust.
4039 * src/bison.simple, src/bison.hairy: Adjust.
4040
cae60122
AD
40412002-01-09 Akim Demaille <akim@epita.fr>
4042
4043 * configure.in (WERROR_CFLAGS): Compute it.
4044 * src/Makefile.am (CFLAGS): Pass it.
4045 * tests/atlocal.in (CFLAGS): Idem.
4046 * src/files.c: Fix a few warnings.
4047 (get_extension_index): Remove, unused.
4048
ae404801
AD
40492002-01-08 Akim Demaille <akim@epita.fr>
4050
4051 * src/getargs.c (AS_FILE_NAME): New.
4052 (getargs): Use it to convert DOSish file names.
4053 * src/files.c (base_name): Rename as full_base_name to avoid
4054 clashes with `base_name ()'.
4055 (filename_split): New.
4056 (compute_base_names): N-th rewrite, using filename_split.
4057
22312b71
AD
40582002-01-08 Akim Demaille <akim@epita.fr>
4059
4060 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
4061 New, stolen from the Fileutils 4.1.
4062 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
4063 * configure.in: Check for the presence of memrchr, and of its
4064 prototype.
4065
a67cef01
TVH
40662002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
4067
4068 * lib/hash.h (__P): Added definition for this macro.
4069 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
4070 BUILT_SOURCES, to ensure they are generated first.
4071 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
4072 %error-verbose to allow bootstrapping with bison 1.30x.
4073
2b25d624
AD
40742002-01-06 Akim Demaille <akim@epita.fr>
4075
4076 * src/reader.c (parse_braces): Don't fetch the next char, the
4077 convention is to fetch on entry.
4078 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
4079 'switch' without a following semicolon.
4080 * tests/regression.at (braces parsing): New.
4081
3460813b
AD
40822002-01-06 Akim Demaille <akim@epita.fr>
4083
4084 Bison is dead wrong in its RR conflict reports.
4085
4086 * tests/torture.at (GNU Cim Grammar): New.
4087 * src/conflicts.c (count_rr_conflicts): Fix.
4088
73784c64
AD
40892002-01-06 Akim Demaille <akim@epita.fr>
4090
4091 Creating package.m4 from configure.ac causes too many problems.
4092
4093 * tests/Makefile.am (package.m4): Create it by hand,
4094 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
4095
25d81090
AD
40962002-01-06 Akim Demaille <akim@epita.fr>
4097
4098 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
4099 skeleton.h.
4100
a9b8959e
PE
41012002-01-04 Paul Eggert <eggert@twinsun.com>
4102
4103 * doc/bison.texinfo (Debugging):
4104 Remove YYSTDERR; it's no longer defined or used.
4105 Also, s/cstdio.h/cstdio/.
4106
25d81090
AD
41072002-01-03 Akim Demaille <akim@epita.fr>
4108
4109 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
4110
1109455c
AD
41112002-01-03 Akim Demaille <akim@epita.fr>
4112
4113 * src/parse-skel.y (process_skeleton): Don't bind the parser's
4114 tracing code to --trace, wait for a better --trace option, with
4115 args.
4116
7ea5e977
AD
41172002-01-03 Akim Demaille <akim@epita.fr>
4118
4119 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
4120 The ISO C++ standard is extremely clear about it: stderr is
4121 considered a macro, not a regular symbol (see table 94 `Header
4122 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
4123 Therefore std:: does not apply to it. It still does with fprintf.
4124 Also, s/cstdio.h/cstdio/.
4125
fab5b110
AD
41262002-01-03 Akim Demaille <akim@epita.fr>
4127
4128 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
4129 for non system headers.
4130
aed7fd9b
AD
41312002-01-02 Akim Demaille <akim@epita.fr>
4132
4133 Equip the skeleton chain with location tracking, runtime trace,
4134 pure parser and scanner.
4135
4136 * src/parse-skel.y: Request a pure parser, locations, and prefix
4137 renaming.
4138 (%union): Having several members with the same type does not help
4139 type mismatches, simplify.
4140 (YYPRINT, yyprint): New.
4141 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
4142 (skel_error): this.
4143 Handle locations.
4144 * src/scan-skel.l: Adjust to these changes.
4145 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
4146 (LOCATION_PRINT, skel_control_t): New.
4147
24fad99e
AD
41482001-12-30 Akim Demaille <akim@epita.fr>
4149
4150 * src/parse-skel.y: Get rid of the shift/reduce conflict:
4151 replace `gb' with BLANKS.
4152 * src/scan-skel.l: Adjust.
4153
a4b36db4
AD
41542001-12-30 Akim Demaille <akim@epita.fr>
4155
4156 * src/system.h: We don't need nor want bcopy.
4157 Throw away MS-DOS crap: we don't need getpid.
4158 * configure.in: We don't need strndup. It was even causing
4159 problems: because Flex includes the headers *before* us,
4160 _GNU_SOURCE is not defined by config.h, and therefore strndup was
4161 not visible.
4162 * lib/xstrndup.c: New.
4163 * src/scan-skel.l: Use it.
4164 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
4165 * src/parse-skel.y: Use %directives instead of #defines.
4166
1239777d
AD
41672001-12-30 Akim Demaille <akim@epita.fr>
4168
4169 * src/skeleton.h: New.
4170 * src/output.c (output_parser, output_master_parser): Remove, dead
4171 code.
4172 * src/output.h (get_lines_number, actions_output, guards_output)
4173 (token_definitions_output): Prototype them.
4174 * src/parse-skel.y: Add the license notice.
4175 Include output.h and skeleton.h.
4176 (process_skeleton): Returns void, and takes a single parameter.
4177 * src/scan-skel.l: Add the license notice.
4178 Include skeleton.h.
4179 Don't use %option yylineno: it seems that then Flex imagines
4180 REJECT has been used, and therefore it won't reallocate its
4181 buffers (which makes no other sense to me than a bug). It results
4182 in warnings for `unused: yy_flex_realloc'.
4183
9b3add5b
RA
41842001-12-30 Robert Anisko <robert.anisko@epita.fr>
4185
4186 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
4187 (MUSCLE_INSERT_PREFIX): ...to there.
4188 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
4189 (MUSCLE_INSERT_PREFIX): Move from here...
4190
4191 * src/bison.hairy: Add a section directive. Put braces around muscle
4192 names. This parser skeleton is still broken, but Bison should not
4193 choke on a bad muscle 'syntax'.
4194 * src/bison.simple: Add a section directive. Put braces around muscle
4195 names.
4196
4197 * src/files.h (strsuffix, stringappend): Add declarations.
4198 (tab_extension): Add declaration.
4199 (short_base_name): Add declaration.
4200
4201 * src/files.c (strsuffix, stringappend): No longer static. These
4202 functions are used in the skeleton parser.
4203 (tab_extension): New.
4204 (compute_base_names): Use the computations done in this function
fab5b110 4205 to guess if the generated parsers should have '.tab' in their
9b3add5b
RA
4206 names.
4207 (short_base_name): No longer static.
4208
4209 * src/output.c (output_skeleton): New.
4210 (output): Disable call to output_master_parser, and give a try to
4211 a new skeleton handling system.
4212 (guards_output, actions_output): No longer static.
4213 (token_definitions_output, get_lines_number): No longer static.
4214
4215 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
4216
fab5b110 4217 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
9b3add5b
RA
4218 parse-skel.y.
4219
4220 * src/parse-skel.y: New file.
4221 * src/scan-skel.l: New file.
4222
b5b61c61
AD
42232001-12-29 Akim Demaille <akim@epita.fr>
4224
4225 %name-prefix is broken.
4226
4227 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
4228 Adjust all dependencies.
4229 * tests/headers.at (export YYLTYPE): Strengthen this test: use
4230 %name-prefix.
4231
4232 Renaming yylval but not yylloc is not consistent. Now we do.
4233
4234 * src/bison.simple: Prefix yylloc if used.
4235 * doc/bison.texinfo (Decl Summary): Document that.
4236
8c9a50be
AD
42372001-12-29 Akim Demaille <akim@epita.fr>
4238
4239 * doc/bison.texinfo: Promote `%long-directive' over
4240 `%long_directive'.
4241 Remove all references to fixed-output-files, yacc is enough.
4242
d99361e6
AD
42432001-12-29 Akim Demaille <akim@epita.fr>
4244
4245 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
4246 user prologue. These are defaults.
4247 * tests/actions.at (Mid-rule actions): Make sure the user can
4248 define YYDEBUG and YYERROR_VERBOSE.
4249
b9cecb91
AD
42502001-12-29 Akim Demaille <akim@epita.fr>
4251
4252 * src/output.c (header_output): Don't forget to export YYLTYPE and
4253 yylloc.
4254 * tests/headers.at (export YYLTYPE): New, make sure it does.
4255 * tests/regression.at (%union and --defines, Invalid CPP headers):
4256 Move to...
4257 * tests/headers.at: here.
4258
aea13e97
AD
42592001-12-29 Akim Demaille <akim@epita.fr>
4260
4261 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
4262
931394cb
AD
42632001-12-29 Akim Demaille <akim@epita.fr>
4264
4265 * tests/actions.at (Mid-rule actions): Output on a single line
4266 instead of several.
4267
704a47c4
AD
42682001-12-29 Akim Demaille <akim@epita.fr>
4269
4270 * doc/bison.texinfo: Formatting changes.
4271
091e20bb
AD
42722001-12-29 Akim Demaille <akim@epita.fr>
4273
4274 Don't store the token defs in a muscle, just be ready to output it
4275 on command. Now possible via `symbols'. Fixes a memory leak.
4276
4277 * src/output.c (token_definitions_output): New.
4278 (output_parser, header_output): Use it.
4279 * src/reader.c (symbols_save): Remove.
4280
cce71710
AD
42812001-12-29 Akim Demaille <akim@epita.fr>
4282
4283 * src/bison.simple: Do not provide a default for YYSTYPE and
4284 YYLTYPE before the user's prologue. Otherwise it's hardly... a
4285 default.
4286
82c035a8
AD
42872001-12-29 Akim Demaille <akim@epita.fr>
4288
4289 Mid-rule actions are simply... ignored!
4290
4291 * src/reader.c (readgram): Be sure to attach mid-rule actions to
4292 the empty-rule associated to the dummy symbol, not to the host
4293 rule.
4294 * tests/actions.at (Mid-rule actions): New.
4295
8419d367
AD
42962001-12-29 Akim Demaille <akim@epita.fr>
4297
4298 Memory leak.
4299
4300 * src/reader.c (reader): Free grammar.
4301
375d5806
AD
43022001-12-29 Akim Demaille <akim@epita.fr>
4303
4304 Memory leak.
4305
4306 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
4307 since it allocates it for each state, although only one is needed.
4308 (allocate_storage): Do it here.
4309
f51cb8ff
AD
43102001-12-29 Akim Demaille <akim@epita.fr>
4311
4312 * src/options.h, src/options.c (create_long_option_table): Rename
4313 as...
4314 (long_option_table_new): this, with a clearer prototype.
4315 (percent_table): Remove, unused,
4316 * src/getargs.c (getargs): Adjust.
4317
29e88316
AD
43182001-12-29 Akim Demaille <akim@epita.fr>
4319
4320 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
4321 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
4322 as states.
4323
b9f71f19
AD
43242001-12-29 Akim Demaille <akim@epita.fr>
4325
4326 * src/lalr.c (build_relations): Rename `states' as `states1'.
4327 Sorry, I don't understand exactly what it is, no better name...
4328
1a2b5d37
AD
43292001-12-29 Akim Demaille <akim@epita.fr>
4330
4331 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
4332 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
4333 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
4334 as rules.
4335
1cca533e
AD
43362001-12-29 Akim Demaille <akim@epita.fr>
4337
4338 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
4339 ago.
4340
c03ae966
AD
43412001-12-29 Akim Demaille <akim@epita.fr>
4342
4343 * src/reader.c, src/reader.h (user_toknums): Remove.
4344 Adjust all users to use symbols[i]->user_token_number.
4345
5a670b1e
AD
43462001-12-29 Akim Demaille <akim@epita.fr>
4347
4348 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
4349 Adjust all users to use symbols[i]->prec or ->assoc.
4350
ad949da9
AD
43512001-12-29 Akim Demaille <akim@epita.fr>
4352
4353 * src/reader.c, src/reader.h (tags): Remove.
4354 Adjust all users to use symbols[i]->tag.
4355
0e78e603
AD
43562001-12-29 Akim Demaille <akim@epita.fr>
4357
4358 * src/gram.h, src/gram.c (symbols): New, similar to state_table
4359 and rule_table.
4360 * src/reader.c (packsymbols): Fill this table.
4361 Drop sprec.
4362 * src/conflicts.c (resolve_sr_conflict): Adjust.
4363 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
4364 single table.
4365 Use symbols[i]->tag instead of tags[i].
4366
213e640e
AD
43672001-12-29 Akim Demaille <akim@epita.fr>
4368
4369 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
4370 In addition, put a comment in there, to replace...
4371 * tests/regression.at (%union and C comments): Remove.
4372
e7b8bef1
AD
43732001-12-29 Akim Demaille <akim@epita.fr>
4374
4375 * tests/regression.at (Web2c Actions): Blindly move the actual
4376 output as expected output. The contents *seem* right to me, but I
4377 can't pretend reading perfectly parser tables... Nonetheless, all
4378 the other tests pass correctly, the table look OK, even though the
4379 presence of `$axiom' is to be noted: AFAICS it is useless (but
4380 harmless).
4381
b68e7744
AD
43822001-12-29 Akim Demaille <akim@epita.fr>
4383
4384 * src/reader.c (readgram): Don't add the rule 0 if there were no
4385 rules read. In other words, add it _after_ having performed
4386 grammar sanity checks.
4387 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
4388
78d5bae9
AD
43892001-12-29 Akim Demaille <akim@epita.fr>
4390
4391 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
4392 visible, and some states have now a different number.
4393
ff442794
AD
43942001-12-29 Akim Demaille <akim@epita.fr>
4395
4396 * src/reader.c (readgram): Bind the initial rule's lineno to that
4397 of the first rule.
4398 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
4399 (Solved SR Conflicts): Adjust rule 0's line number.
4400
610ab194
AD
44012001-12-29 Akim Demaille <akim@epita.fr>
4402
4403 Fix the `GAWK Grammar' failure.
4404
4405 * src/LR0.c (final_state): Initialize to -1 so that we do compute
4406 the reductions of the first state which was mistakenly confused
4407 with the final state because precisely final_state was initialized
4408 to 0.
4409 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
4410 now noticed by Bison.
4411 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
4412 have a reduction on $default.
4413
29d29c8f
AD
44142001-12-29 Akim Demaille <akim@epita.fr>
4415
4416 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
4417 rule line numbers.
4418 * src/closure.c (print_closure): Likewise.
4419 * src/derives.c (print_derives): Likewise.
4420 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
4421 now.
4422
7c6b64d0
AD
44232001-12-29 Akim Demaille <akim@epita.fr>
4424
4425 * src/lalr.c (lookaheads_print): New.
4426 (lalr): Call it when --trace-flag.
4427 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
4428 are dumped.
4429
3d4daee3
AD
44302001-12-29 Akim Demaille <akim@epita.fr>
4431
4432 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
4433 when walking through ritem, even via rule->rhs.
4434 * src/reduce.c (dump_grammar, useful_production, reduce_output)
4435 (useful_production, useless_nonterminals): Likewise.
4436 (reduce_grammar_tables): Likewise, plus update nritems.
4437 * src/nullable.c (set_nullable): Likewise.
4438 * src/lalr.c (build_relations): Likewise.
4439 * tests/sets.at (Nullable): Adjust.
4440 Fortunately, now, the $axiom is no longer nullable.
4441
9e7f6bbd
AD
44422001-12-29 Akim Demaille <akim@epita.fr>
4443
4444 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
4445 the 0-sentinel.
4446 * src/gram.c (ritem_longest_rhs): Likewise.
4447 * src/reduce.c (nonterminals_reduce): Likewise.
4448 * src/print_graph.c (print_graph): Likewise.
4449 * src/output.c (output_rule_data): Likewise.
4450 * src/nullable.c (set_nullable): Likewise.
4451
255ef638
AD
44522001-12-29 Akim Demaille <akim@epita.fr>
4453
4454 * src/output.c: Comment changes.
4455
0d8a7363
AD
44562001-12-27 Paul Eggert <eggert@twinsun.com>
4457
4458 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
4459 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
4460 Sparc, as they were causing more porting problems than the
4461 (minor) performance improvement was worth.
4462
4463 Also, catch up with 1.31's YYSTD.
4464
3db472b9
AD
44652001-12-27 Akim Demaille <akim@epita.fr>
4466
4467 * src/output.c (output_gram): Rely on nritems, not the
4468 0-sentinel. See below.
4469 Use -1 as separator, not 0.
4470 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
4471 Rely on -1 as separator in yyrhs, instead of 0.
4472 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
4473 twice `Now at end of input', therefore there are two lines less to
4474 expect.
4475
b365aa05
AD
44762001-12-27 Akim Demaille <akim@epita.fr>
4477
4478 * tests/regression.at (Unresolved SR Conflicts):
4479 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
4480 below.
4481
30171f79
AD
44822001-12-27 Akim Demaille <akim@epita.fr>
4483
4484 * src/LR0.c (new_state): Recognize the final state by the fact it
4485 is reached by eoftoken.
4486 (insert_start_shifting_state, insert_eof_shifting_state)
4487 (insert_accepting_state, augment_automaton): Remove, since now
4488 these states are automatically computed from the initial state.
4489 (generate_states): Adjust.
4490 * src/print.c: When reporting a rule number to the user, substract
4491 1, so that the axiom rule is rule 0, and the first user rule is 1.
4492 * src/reduce.c: Likewise.
4493 * src/print_graph.c (print_core): For the time being, just as for
4494 the report, depend upon --trace-flags to dump the full set of
4495 items.
4496 * src/reader.c (readgram): Once the grammar read, insert the rule
4497 0: `$axiom: START-SYMBOL $'.
4498 * tests/set.at: Adjust: rule 0 is now displayed, and since the
4499 number of the states has changed (the final state is no longer
4500 necessarily the last), catch up.
4501
75142d45
AD
45022001-12-27 Akim Demaille <akim@epita.fr>
4503
4504 Try to make the use of the eoftoken valid. Given that its value
4505 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
4506 is used instead of > 0 where appropriate, (ii), depend upon nritems
4507 instead of the 0-sentinel.
4508
4509 * src/gram.h, src/gram.c (nritems): New.
4510 Expected to be duplication of nitems, but for the time being...
4511 * src/reader.c (packgram): Assert nritems and nitems are equal.
4512 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
4513 * src/closure.c (print_closure, print_fderives): Likewise.
4514 * src/gram.c (ritem_print): Likewise.
4515 * src/print.c (print_core, print_grammar): Likewise.
4516 * src/print_graph.c: Likewise.
4517
b7c49edf
AD
45182001-12-27 Akim Demaille <akim@epita.fr>
4519
4520 * src/main.c (main): If there are complains after grammar
4521 reductions, then output the report anyway if requested, then die.
4522 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
4523 * src/reader.c (eoftoken): New.
4524 (parse_token_decl): If the token being defined has value `0', it
4525 is the eoftoken.
4526 (packsymbols): No longer hack `tags' to insert `$' by hand.
4527 Be sure to preserve the value of the eoftoken.
4528 (reader): Make sure eoftoken is defined.
4529 Initialize nsyms to 0: now eoftoken is created just like the others.
4530 * src/print.c (print_grammar): Don't special case the eof token.
4531 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
4532 lie anyway, albeit pleasant.
4533 * tests/calc.at: Exercise error messages with eoftoken.
4534 Change the grammar so that empty input is invalid.
4535 Adjust expectations.
4536 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
4537
ec2da99f
AD
45382001-12-27 Akim Demaille <akim@epita.fr>
4539
4540 * configure.in: Check the protos of strchr ans strspn.
4541 Replace strchr if needed.
4542 * src/system.h: Provide the protos of strchr, strspn and memchr if
4543 missing.
4544 * lib/strchr.c: New.
4545 * src/reader.c (symbols_save): Use strchr.
4546
8adfa272
AD
45472001-12-27 Akim Demaille <akim@epita.fr>
4548
4549 * src/print.c, src/print_graph.c (escape): New.
4550 Use it to quote the TAGS outputs.
4551 * src/print_graph.c (print_state): Now errors are in red, and
4552 reductions in green.
4553 Prefer high to wide: output the state number on a line of its own.
4554
80dac38c
AD
45552001-12-27 Akim Demaille <akim@epita.fr>
4556
4557 * src/state.h, src/state.c (reductions_new): New.
4558 * src/LR0.c (set_state_table): Let all the states have a
4559 `reductions', even if reduced to 0.
4560 (save_reductions): Adjust.
4561 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
4562 * src/print.c (print_reductions, print_actions): Adjust.
4563 * src/output.c (action_row): Adjust.
4564
2cec70b9
AD
45652001-12-27 Akim Demaille <akim@epita.fr>
4566
4567 * src/state.h, src/state.c (errs_new, errs_dup): New.
4568 * src/LR0.c (set_state_table): Let all the states have an errs,
4569 even if reduced to 0.
4570 * src/print.c (print_errs, print_reductions): Adjust.
4571 * src/output.c (output_actions, action_row): Adjust.
4572 * src/conflicts.c (resolve_sr_conflict): Adjust.
4573
13ca549a
AD
45742001-12-27 Akim Demaille <akim@epita.fr>
4575
4576 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
4577
5092aba5
AD
45782001-12-27 Akim Demaille <akim@epita.fr>
4579
4580 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
4581 * src/print.c: here.
4582 (lookaheadset, shiftset): New, used as additional storage by
4583 print_reductions.
4584 (print_results): Adjust.
4585 (print_shifts, print_gotos, print_errs): New, extracted from...
4586 (print_actions): here.
4587 * src/print_graph.c (print_actions): Remove dead code.
4588
11e2beca
AD
45892001-12-27 Akim Demaille <akim@epita.fr>
4590
4591 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
4592 `$n' and `@n'.
4593
dac3c910
AD
45942001-12-27 Akim Demaille <akim@epita.fr>
4595
4596 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
4597 (build_relations): Adjust.
4598
d0b0fefa
AD
45992001-12-27 Akim Demaille <akim@epita.fr>
4600
4601 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
4602 duplication.
4603
adc8c848
AD
46042001-12-27 Akim Demaille <akim@epita.fr>
4605
4606 * src/reader.c (packgram): Catch nitems overflows.
4607
14d293ac
AD
46082001-12-27 Akim Demaille <akim@epita.fr>
4609
4610 * src/files.c, src/files.h (guard_obstack): Remove.
4611 * src/output.c (output): Adjust.
4612 * src/reader.c (parse_braces): New, factoring...
4613 (copy_action, copy_guard): these two which are renamed as...
4614 (parse_action, parse_guard): these.
4615 As a voluntary consequence, using braces around guards is now
4616 mandatory.
4617
f499b062
AD
46182001-12-27 Akim Demaille <akim@epita.fr>
4619
4620 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
4621 * src/reader.c (symbol_list): `guard' and `guard_line' are new
4622 members.
4623 (symbol_list_new): Adjust.
4624 (copy_action): action_line is the first line, not the last.
4625 (copy_guard): Just as for actions, store the `action' only, not
4626 the switch/case/break flesh.
4627 Don't parse the user action that might follow the guard, let...
4628 (readgram): do it, i.e., now, there can be an action after a
4629 guard.
4630 In other words the guard is just explicitly optional.
4631 (packgram): Adjust.
4632 * src/output.c (guards_output): New.
4633 (output_parser): Call it when needed.
4634 (output): Also free the guard and attrs obstacks.
4635 * src/files.c, src/files.h (obstack_save): Remove.
4636 (output_files): Remove.
4637 As a result, if one needs the former `.act' file, using an
4638 appropriate skeleton which requires actions and guards is now
4639 required.
4640 * src/main.c (main): Adjust.
4641 * tests/semantic.at: New.
4642 * tests/regression.at: Use `input.y' as input file name.
4643 Avoid 8+3 problems by requiring input.c when the test needs the
4644 parser.
4645
d945f5cd
AD
46462001-12-27 Akim Demaille <akim@epita.fr>
4647
4648 * src/reader.c (symbol_list_new): Be sure to initialize all the
4649 fields.
4650
d200e455
AD
46512001-12-27 Akim Demaille <akim@epita.fr>
4652
4653 All the hacks using a final pseudo state are now useless.
4654
4655 * src/LR0.c (set_state_table): state_table holds exactly nstates.
4656 * src/lalr.c (nLA): New.
4657 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
4658 instead of lookaheadsp from the pseudo state (nstate + 1).
4659
f9507c28
AD
46602001-12-27 Akim Demaille <akim@epita.fr>
4661
4662 * src/output.c (action_row, token_actions): Use a state_t instead
4663 of a integer, and nlookaheads instead of the following state's
4664 lookaheadsp.
4665
065fbd27
AD
46662001-12-27 Akim Demaille <akim@epita.fr>
4667
4668 * src/conflicts.c (log_resolution, flush_shift)
4669 (resolve_sr_conflict, set_conflicts, solve_conflicts)
4670 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
4671 (conflicts_print, print_reductions): Use a state_t instead of an
4672 integer when referring to a state.
4673 As much as possible, depend upon nlookaheads, instead of the
4674 `lookaheadsp' member of the following state (since lookaheads of
4675 successive states are successive, the difference between state n + 1
4676 and n served as the number of lookaheads for state n).
4677 * src/lalr.c (add_lookback_edge): Likewise.
4678 * src/print.c (print_core, print_actions, print_state)
4679 (print_results): Likewise.
4680 * src/print_graph.c (print_core, print_actions, print_state)
4681 (print_graph): Likewise.
4682 * src/conflicts.h: Adjust.
4683
1b177bd7
AD
46842001-12-27 Akim Demaille <akim@epita.fr>
4685
4686 * src/bison.hairy: Formatting/comment changes.
4687 ANSIfy.
4688 Remove `register' indications.
4689 Add plenty of `static'.
4690
7742ddeb
AD
46912001-12-27 Akim Demaille <akim@epita.fr>
4692
4693 * src/output.c (prepare): Drop the muscle `ntbase' which
4694 duplicates ntokens.
4695 * src/bison.simple: Formatting/comment changes.
4696 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
4697 is an undocumented synonym.
4698
1fa14068
AD
46992001-12-22 Akim Demaille <akim@epita.fr>
4700
4701 * src/output.c (output_table_data): Change the prototype to use
4702 `int' for array ranges: some invocations do pass an int, not a
4703 short.
4704 Reported by Wayne Green.
4705
b9752825
AD
47062001-12-22 Akim Demaille <akim@epita.fr>
4707
4708 Some actions of web2c.y are improperly triggered.
4709 Reported by Mike Castle.
4710
4711 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
4712 * tests/regression.at (Web2c): Rename as...
4713 (Web2c Report): this.
4714 (Web2c Actions): New.
4715
776209d6
AD
47162001-12-22 Akim Demaille <akim@epita.fr>
4717
4718 Reductions in web2c.y are improperly reported.
4719 Reported by Mike Castle.
4720
4721 * src/conflicts.c (print_reductions): Fix.
4722 * tests/regression.at (Web2c): New.
4723
275fc3ad
AD
47242001-12-18 Akim Demaille <akim@epita.fr>
4725
4726 Some host fail on `assert (!"foo")', which expands to
4727 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
4728 Reported by Nelson Beebee.
4729
4730 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
4731 `#define it_succeeded 0' and `assert (it_succeeded)'.
4732
897668ee
MA
47332001-12-17 Marc Autret <autret_m@epita.fr>
4734
4735 * src/bison.simple: Don't hard code the skeleton line and filename.
4736 * src/output.c (output_parser): Rename 'line' as 'output_line'.
4737 New line counter 'skeleton_line' (skeleton-line muscle).
4738
ab3399e0
PE
47392001-12-17 Paul Eggert <eggert@twinsun.com>
4740
4741 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
4742 YYDEBUG must be defined to a nonzero value.
4743
4744 * src/bison.simple (yytname): Do not assume that the user defines
4745 YYDEBUG to a properly parenthesized expression.
4746
3877f72b
AD
47472001-12-17 Akim Demaille <akim@epita.fr>
4748
4749 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
4750 nlookaheads is a new member.
4751 Adjust all users.
4752 * src/lalr.h (nlookaheads): Remove this orphan declaration.
4753 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
4754 state.
776209d6 4755
331dbc1b
AD
47562001-12-17 Akim Demaille <akim@epita.fr>
4757
4758 * src/files.h, src/files.c (open_files, close_files): Remove.
4759 * src/main.c (main): Don't open/close files, nor invoke lex_free,
4760 let...
4761 * src/reader.c (reader): Do it.
776209d6 4762
be750e4c
AD
47632001-12-17 Akim Demaille <akim@epita.fr>
4764
4765 * src/conflicts.c (print_reductions): Formatting changes.
776209d6 4766
709ae8c6
AD
47672001-12-17 Akim Demaille <akim@epita.fr>
4768
4769 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
4770 (flush_reduce): New.
4771 (resolve_sr_conflict): Adjust.
776209d6 4772
f87685c3
AD
47732001-12-17 Akim Demaille <akim@epita.fr>
4774
4775 * src/output.c (output_obstack): Be static and rename as...
4776 (format_obstack): this, to avoid any confusion with files.c's
4777 output_obstack.
4778 * src/reader.h (muscle_obstack): Move to...
4779 * src/output.h: here, since it's defined in output.c.
4780
837491d8
AD
47812001-12-17 Akim Demaille <akim@epita.fr>
4782
4783 * src/output.c (action_row, save_column, default_goto)
4784 (sort_actions, matching_state, pack_vector): Better variable
4785 locality.
4786
796d61fb
AD
47872001-12-17 Akim Demaille <akim@epita.fr>
4788
4789 * src/output.c: Various formatting changes.
776209d6 4790
64d15509
AD
47912001-12-17 Akim Demaille <akim@epita.fr>
4792
4793 * src/files.c (output_files): Free the output_obstack.
4794 * src/main.c (main): Call print and print_graph conditionally.
4795 * src/print.c (print): Work unconditionally.
4796 * src/print_graph.c (print_graph): Work unconditionally.
4797 * src/conflicts.c (log_resolution): Output only if verbose_flag.
4798
fbc8ecb7
MA
47992001-12-16 Marc Autret <autret_m@epita.fr>
4800
4801 * src/output.c (actions_output): Fix. When we use %no-lines,
4802 there is one less line per action.
4803
f0440388
MA
48042001-12-16 Marc Autret <autret_m@epita.fr>
4805
4806 * src/bison.simple: Remove a useless #line directive.
4807 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
4808 * src/output.c (get_lines_number): New.
776209d6 4809 (output_parser): Adjust, now takes care about the lines of a
f0440388
MA
4810 output muscles.
4811 Fix line numbering.
4812 (actions_output): Computes the number of lines taken by actions.
4813 (output_master_parser): Insert new skeleton which is the name of
4814 the output parser file name.
4815
a79986b8
MA
48162001-12-15 Marc Autret <autret_m@epita.fr>
4817
4818 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
4819
4ec8e00f
MA
48202001-12-15 Marc Autret <autret_m@epita.fr>
4821
4822 * src/output.c (output_gram): Keep track of the hairy one.
4823
1a4648ff
AD
48242001-12-15 Akim Demaille <akim@epita.fr>
4825
4826 Make `make distcheck' work.
4827
4828 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
4829 system.h which uses libgettext.h.
4830
9c2c67e6
AD
48312001-12-15 Akim Demaille <akim@epita.fr>
4832
4833 * src/nullable.c (set_nullable): Useless rules must be skipped,
4834 otherwise, since we range over their symbols, we might look at a
4835 nonterminal which no longer ``exists'', i.e., it is not counted in
4836 `nvars', hence we overflow our arrays.
4837
93ede233
AD
48382001-12-15 Akim Demaille <akim@epita.fr>
4839
4840 The header can also be produced directly, without any obstack!
4841 Yahoo!
4842
4843 * src/files.c, src/files.h (defines_obstack): Remove.
4844 (compute_header_macro): Global.
4845 (defines_obstack_save): Remove.
4846 * src/reader.c (parse_union_decl): No longer output to
4847 defines_obstack: its content can be found in the `stype' muscle
4848 anyway.
4849 (output_token_translations): Merge into...
4850 (symbols_output): this.
4851 Rename as...
4852 (symbols_save): this.
4853 (reader): Adjust.
4854 * src/output.c (header_output): New.
4855 (output): Call it.
4856
2666f928
AD
48572001-12-15 Akim Demaille <akim@epita.fr>
4858
4859 * src/reader.c (parse_union_decl): Instead of handling two obstack
4860 simultaneously, use one to define the `stype' muscle, and use the
4861 value of the latter to fill defines_obstack.
4862 (copy_comment): Remove.
4863 (copy_comment2): Work for a single obstack.
4864 Rename as...
4865 (copy_comment): this.
4866
428046f8
AD
48672001-12-15 Akim Demaille <akim@epita.fr>
4868
4869 * src/lex.c, src/lex.h (xgetc): No longer static.
4870 * src/reader.c (parse_union_decl): Revamp.
4871
ea52d706
AD
48722001-12-15 Akim Demaille <akim@epita.fr>
4873
4874 Still making progress in separating Bison into (i) input, (ii)
4875 process, (iii) output: now we can directly output the parser file
4876 without using table_obstack at all.
4877
4878 * src/files.c, src/files.h (table_obstack): Bye bye.
4879 (parser_file_name): New.
4880 * src/files.c (compute_output_file_names): Compute it.
4881 * src/output.c (actions_output, output_parser)
4882 (output_master_parser): To a file instead of an obstack.
4883
3f96f4dc
AD
48842001-12-15 Akim Demaille <akim@epita.fr>
4885
4886 Attach actions to rules, instead of pre-outputting them to
4887 actions_obstack.
4888
4889 * src/gram.h (rule_t): action and action_line are new members.
4890 * src/reader.c (symbol_list): Likewise.
4891 (copy_action): Save the actions within the rule.
4892 (packgram): Save them in rule_table.
4893 * src/output.c (actions_output): New.
4894 (output_parser): Use it on `%%actions'.
4895 (output_rule_data): Don't free rule_table.
4896 (output): Do it.
4897 (prepare): Don't save the `action' muscle.
4898 * src/bison.simple: s/%%action/%%actions/.
4899
51576fb3
AD
49002001-12-15 Akim Demaille <akim@epita.fr>
4901
4902 * src/reader.c (copy_action): When --yacc, don't append a `;'
4903 to the user action: let it fail if lacking.
dee049eb 4904 Suggested by Arnold Robbins and Tom Tromey.
51576fb3 4905
2648a72d
AD
49062001-12-14 Akim Demaille <akim@epita.fr>
4907
4908 * src/lex.c (literalchar): Simply return the char you decoded, non
4909 longer mess around with obstacks and int pointers.
4910 Adjust all callers.
4911
92790e5b
AD
49122001-12-14 Akim Demaille <akim@epita.fr>
4913
4914 * src/lex.c (literalchar): Don't escape the special characters,
4915 just decode them, and keep them as char (before, eol was output as
4916 the 2 char string `\n' etc.).
4917 * src/output.c (output_rule_data): Use quotearg to output the
4918 token strings.
4919
927c1557
PE
49202001-12-13 Paul Eggert <eggert@twinsun.com>
4921
4922 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
4923 Do not infringe on the global user namespace when using C++.
4924 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
4925 All uses of `fprintf' and `stderr' changed.
4926
4927 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
4928
ed8e1f68
AD
49292001-12-13 Akim Demaille <akim@epita.fr>
4930
4931 The computation of nullable is broken: it doesn't handle empty
4932 RHS's properly.
4933
4934 * tests/torture.at (GNU AWK Grammar): New.
4935 * tests/sets.at (Nullable): New.
4936 * src/nullable.c (set_nullable): Instead of blindly looping over
4937 `ritems', loop over the rules, and then over their rhs's.
4938
4939 Work around Autotest bugs.
4940
4941 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
4942 frame, because Autotest understand lines starting with a `+' as
4943 traces from the shell. Then, they are not processed properly.
4944 Admittedly an Autotest bug, but we don't have time to wait for
4945 Autotest to catch up.
4946 * tests/regression.at (Broken Closure): Adjust to the new table
4947 frames.
4948 Move to...
4949 * tests/sets.at: here.
4950
cb581495
AD
49512001-12-13 Akim Demaille <akim@epita.fr>
4952
4953 * src/closure.c (closure): Use nrules instead of playing tricks
4954 with BITS_PER_WORD.
4955
2e729273
AD
49562001-12-13 Akim Demaille <akim@epita.fr>
4957
4958 * src/print.c (print_actions): Output the handling of `$' as the
4959 traces do: shifting the token EOF. Before EOF was treated as a
4960 nonterminal.
4961 * tests/regression.at: Adjust some tests.
4962 * src/print_graph.c (print_core): Complete the set of items via
4963 closure. The next-to-final and final states are still unsatisfying,
4964 but that's to be addressed elsewhere.
4965 No longer output the rule numbers, but do output the state number.
4966 A single loop for the shifts + gotos is enough, but picked a
4967 distinct color for each.
4968 (print_graph): Initialize and finalize closure.
4969
107f7dfb
AD
49702001-12-13 Akim Demaille <akim@epita.fr>
4971
4972 * src/reader.c (readgram): Remove dead code, an strip useless
4973 braces.
4974 (get_type): Remove, unused.
4975
9b53a24f
AD
49762001-12-12 Akim Demaille <akim@epita.fr>
4977
4978 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
4979 on that of lib/error.c.
4980
dbfb6dcd
AD
49812001-12-12 Akim Demaille <akim@epita.fr>
4982
4983 Some hosts don't like `/' in includes.
4984
4985 * src/system.h: Include libgettext.h without qualifying the path.
4986 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
4987 $(top_srcdir).
4988
c25fb648
MA
49892001-12-11 Marc Autret <autret_m@epita.fr>
4990
4991 * src/output.c (output_parser): Remove useless muscle.
4992
710ddc4f
MA
49932001-12-11 Marc Autret <autret_m@epita.fr>
4994
4995 * src/bison.simple: Remove #line just before %%epilogue. It
4996 is now handled in ...
4997 * src/reader.c (read_additionnal_code): Add the output of a
4998 #line for the epilogue.
4999
e83d80b8
MA
50002001-12-10 Marc Autret <autret_m@epita.fr>
5001
927c1557 5002 * src/reader.c (copy_definition): Re-use CPP-outed code which
e83d80b8
MA
5003 replace precedent remove.
5004 * src/bison.simple: Remove #line before %%prologue because
5005 %%input-line is wrong at this time.
5006
971d5158
MA
50072001-12-10 Marc Autret <autret_m@epita.fr>
5008
5009 * src/reader.c (symbols_output): Clean up.
927c1557 5010 * src/output.c (output_gram, output): Clean up.
971d5158 5011
5edafffd
AD
50122001-12-10 Akim Demaille <akim@epita.fr>
5013
5014 * src/lalr.c (initialize_lookaheads): New. Extracted from...
5015 * src/LR0.c (set_state_table): here.
5016 * src/lalr.c (lalr): Call it.
5017
0279f8e9
AD
50182001-12-10 Akim Demaille <akim@epita.fr>
5019
5020 * src/state.h (shifts): Remove the `number' member: shifts are
5021 attached to state, hence no longer need to be labelled with a
5022 state number.
5023
190c4f5f
AD
50242001-12-10 Akim Demaille <akim@epita.fr>
5025
5026 Now that states have a complete set of members, the linked list of
5027 shifts is useless: just fill directly the state's shifts member.
5028
5029 * src/state.h (shifts): Remove the `next' member.
5030 * src/LR0.c (first_state, last_state): Remove.
5031 Adjust the callers.
5032 (augment_automaton): Don't look for the shifts that must be added
5033 a shift on EOF: it is those of the state we looked for! But now,
5034 since shifts are attached, it is no longer needed to looking
5035 merely by its id: its number.
5036
2a73b93d
AD
50372001-12-10 Akim Demaille <akim@epita.fr>
5038
5039 * src/LR0.c (augment_automaton): Better variable locality.
5040 Remove an impossible branch: if there is a state corresponding to
5041 the start symbol being shifted, then there is shift for the start
5042 symbol from the initial state.
5043
74392f6a
AD
50442001-12-10 Akim Demaille <akim@epita.fr>
5045
5046 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
5047 only when appropriate: when insert_start_shifting_state' is not
5048 invoked.
5049 * tests/regression.at (Rule Line Numbers): Adjust.
5050
37c82725
AD
50512001-12-10 Akim Demaille <akim@epita.fr>
5052
5053 * src/LR0.c (augment_automaton): Now that all states have shifts,
5054 merge the two cases addition shifts to the initial state.
5055
6a164e0c
AD
50562001-12-10 Akim Demaille <akim@epita.fr>
5057
5058 * src/lalr.c (set_state_table): Move to...
5059 * src/LR0.c: here.
5060 * src/lalr.c (lalr): Don't call it...
5061 * src/LR0.c (generate_states): do it.
5062 * src/LR0.h (first_state): Remove, only the table is used.
5063
7215de24
AD
50642001-12-10 Akim Demaille <akim@epita.fr>
5065
5066 * src/LR0.h (first_shift, first_reduction): Remove.
5067 * src/lalr.c: Don't use first_shift: find shifts through the
5068 states.
5069
80e25d4d
AD
50702001-12-10 Akim Demaille <akim@epita.fr>
5071
5072 * src/LR0.c: Attach shifts to states as soon as they are
5073 computed.
5074 * src/lalr.c (set_state_table): Instead of assigning shifts to
5075 state, just assert that the mapping was properly done.
5076
0ab3728b
AD
50772001-12-10 Akim Demaille <akim@epita.fr>
5078
5079 * src/LR0.c (insert_start_shift): Rename as...
5080 (insert_start_shifting_state): this.
5081 (insert_eof_shifting_state, insert_accepting_state): New.
5082 (augment_automaton): Adjust.
5083 Better locality of the variables.
5084 When looking if the start_symbol is shifted from the initial
5085 state, using `while (... symbol != start_symbol ...)' sounds
5086 better than `while (... symbol < start_symbol ...)': If fail
5087 to see how the order between symbols could be relevant!
5088
78af9bbc
AD
50892001-12-10 Akim Demaille <akim@epita.fr>
5090
5091 * src/getargs.h: Don't declare `spec_name_prefix' and
5092 `spec_file_prefix', declared by src/files.h.
5093 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
5094 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
5095 * src/output.c (prepare): Adjust.
5096 * src/reader.c (symbols_output): Likewise.
5097 * src/vmsgetargs.c: Vaguely adjust, but who cares?
5098
bdef2a41
AD
50992001-12-10 Akim Demaille <akim@epita.fr>
5100
5101 * src/muscle_tab.c (muscle_init): NULL is a better default than
5102 `"0"'.
5103
3735969c
AD
51042001-12-10 Akim Demaille <akim@epita.fr>
5105
5106 * src/reader.c (reader): Calling symbols_output once is enough.
5107
49701457
AD
51082001-12-10 Akim Demaille <akim@epita.fr>
5109
5110 Now that states have a complete set of members, the linked list of
5111 reductions is useless: just fill directly the state's reductions
5112 member.
5113
5114 * src/state.h (struct reductions): Remove member `number' and
5115 `next'.
5116 * src/LR0.c (first_reduction, last_reduction): Remove.
5117 (save_reductions): Don't link the new reductions, store them in
5118 this_state.
5119 * src/lalr.c (set_state_table): No need to attach reductions to
5120 states, it's already done.
5121 * src/output.c (output_actions): No longer free the shifts, then
5122 the reductions, then the states: free all the states and their
5123 members.
5124
0edad749
AD
51252001-12-10 Akim Demaille <akim@epita.fr>
5126
5127 * src/options.c (OPTN, DRTV, BOTH): New.
5128 (option_table): Use them.
5129
0edad749
AD
5130 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
5131 the job of system.h.
5132 * src/options.c: Don't include stdio.h and xalloc.h for the same
5133 reasons.
5134
5449dd0f
AD
51352001-12-10 Akim Demaille <akim@epita.fr>
5136
5137 * src/output.c (output, prepare): Make sure the values of the
5138 muscles `action' and `prologue' are 0-terminated.
5139
a870c567
AD
51402001-12-10 Akim Demaille <akim@epita.fr>
5141
5142 Clean up GCC warnings.
5143
5144 * src/reader.c (copy_action): `buf' is not used.
5145 (parse_skel_decl): Be static.
5146 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
5147 * src/options.h (create_long_option_table): Have a real prototype.
5148 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
5149 (hash_delete_at): Return const void *.
5150 Adjust casts to preserve the const.
5151
80df8768
AD
51522001-12-10 Akim Demaille <akim@epita.fr>
5153
5154 * configure.in: Require 2.52g.
5155 M4 is not needed, but AUTOM4TE is.
5156 * m4/m4.m4: Remove.
5157 * tests/Makefile.am: Adjust.
5158
f693ad14
AD
51592001-12-10 Akim Demaille <akim@epita.fr>
5160
5161 One structure for states is enough, even though theoretically
5162 there are LR(0) states and LALR(1) states.
5163
5164 * src/lalr.h (state_t): Remove.
5165 (state_table): Be state_t **, not state_t *.
5166 * src/state.h (core, CORE_ALLOC): Rename as...
5167 (state_t, STATE_ALLOC): this.
5168 Add the LALR(1) members: shifts, reductions, errs.
5169 * src/LR0.c (state_table): Rename as...
5170 (state_hash): this, to avoid name clashes with the global
5171 `state_table'.
5172 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
5173 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
5174
74ffbcb6
AD
51752001-12-10 Akim Demaille <akim@epita.fr>
5176
5177 Bison dumps core on bash.y.
5178 Reported by Pascal Bart.
5179
5180 * src/warshall.c (bitmatrix_print): New.
5181 (TC): Use it.
5182 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
5183 j must be the outer loop.
5184 * tests/regression.at (Broken Closure): New.
5185
07708e19
AD
51862001-12-05 Akim Demaille <akim@epita.fr>
5187
5188 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
5189 its argument.
5190