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