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