]> git.saurik.com Git - bison.git/blame - ChangeLog
Modifications to fix GLR bug reported by S. Eken.
[bison.git] / ChangeLog
CommitLineData
6029a57f
PH
12003-01-29 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2
3 * tests/cxx-type.at: Correct apparent typo in Bison input: $$ instead
4 of $1.
5
6 Changes in response to error report by S. Eken: GLR mode does not
7 handle negative $ indices or $ indices in embedded rules correctly.
8 See <http://mail.gnu.org/archive/html/bug-bison/2003-01/msg00076.html>.
9
10 * data/glr.c (b4_rhs_value): Change to use YYFILL macro.
11 (b4_rhs_location): Ditto.
12 (yyfill): New function to copy from stack tree into array
13 incrementally.
14 (yyuserAction): Modify to allow incremental move of semantic values
15 to rhs array when in GLR mode.
16 Define YYFILL to use in user-defined actions to fill semantic array
17 as needed.
18 Remove dummy use of yystack, as there is now a guaranteed use.
19 (yydoAction): Modify to allow incremental move of semantic values
20 to rhs array when in GLR mode.
21 (yyresolveAction): Ditto.
22 (yyglrShiftDefer): Update comment.
23 (yyresolveStates): Use X == NULL for pointers, not !X.
24 (yyglrReduce): Ditto.
25 (yydoAction): Ditto
26
27 * tests/glr-regr1.at: Rename to ...
28 * tests/glr-regression.at: Add new regression test for the problems
29 described above (adapted from S. Eken).
30 Update copyright notice.
31 * tests/testsuite.at: Rename glr-regr1.at to glr-regression.at.
32 * tests/Makefile.am: Ditto.
33
6cee6297
PE
342003-01-28 Paul Eggert <eggert@twinsun.com>
35
36 * data/lalr1.cc: Do not use @output_header_name@ unless
37 b4_defines_flag is set. This fixes two bugs reported by
38 Tim Van Holder in
39 <http://mail.gnu.org/archive/html/bug-bison/2003-01/msg00071.html>
40 and <http://mail.gnu.org/archive/html/bug-bison/2003-01/msg00073.html>.
41
b2a836b5
PE
422003-01-21 Paul Eggert <eggert@twinsun.com>
43
44 * data/yacc.c (YYERROR): Move code from yyerrlab1 to here, so that
45 we don't need to worry about yyerrlab1 being reported as an
46 "unused label" by non-GCC C compilers. The downside is that if
47 locations are used then a couple of statements are duplicated each
48 time YYERROR is invoked, but the upside is that the warnings
49 should vanish.
50 (yyerrlab1): Move code to YERROR.
51 (yyerrlab2): Remove. Change uses back to yyerrlab1.
52 This reverts some of the 2002-12-27 change.
53
4196b931
PE
542003-01-17 Paul Eggert <eggert@twinsun.com>
55
56 * src/output.c (symbol_printers_output): Fix typo that led
57 to core dump. Problem reported by Antonio Rus in
58 <http://mail.gnu.org/archive/html/bug-bison/2003-01/msg00058.html>.
59
3ae831b4
AD
602003-01-13 Akim Demaille <akim@epita.fr>,
61 Quoc Peyrot <chojin@lrde.epita.fr>,
62 Robert Anisko <anisko_r@lrde.epita.fr>
63
64 * data/lalr1.cc (parse::yyerrlab1): When popping the stack, stop
65 when the stacks contain one element, as the loop would otherwise
66 free the last state, and then use the top state (the one we just
67 popped). This means that the initial elements will not be freed
68 explicitly, as is the case in yacc.c; it is not a problem, as
69 these elements have fake values.
70
e3aa65c5
PE
712003-01-11 Paul Eggert <eggert@twinsun.com>
72
73 * NEWS: %expect-violations are now just warnings, reverting
74 to Bison 1.30 and 1.75 behavior. This fixes the GCC 3.2
75 bootstrapping problem reported by Matthias Klose; see
76 <http://mail.gnu.org/archive/html/bug-bison/2003-01/msg00053.html>.
77 * src/conflicts.c (conflicts_print): Likewise.
78 * tests/conflicts.at (%expect not enough, %expect too much,
79 %expect with reduce conflicts): Likewise.
80 * doc/bison.texinfo (Expect Decl): Document this. Also mention
81 that the warning is enabled if the number of conflicts changes
82 (not necessarily increases).
83
84 * src/getargs.c (version): Update copyright year.
85
f0057011
AD
862003-01-09 Akim Demaille <akim@epita.fr>
87
88 * src/Makefile.am, lib/Makefile.am: Use $(VAR) instead of @VAR@.
89
1ee6d2a0
PE
902003-01-08 Paul Eggert <eggert@twinsun.com>
91
92 * Makefile.maint (WGETFLAGS):
93 New macro, containing "-C off" to disable proxy caches.
94 All uses of $(WGET) changed to $(WGET) $(WGETFLAGS).
95 (rel-check): Use $(WGET) instead of wget.
96
d4fd77c4
PE
972003-01-06 Paul Eggert <eggert@twinsun.com>
98
99 * doc/bison.texinfo (Generalized LR Parsing): Add a reference to
100 the GLR paper of Scott, Johnstone and Hussain.
101
464c6927
PE
1022003-01-04 Paul Eggert <eggert@twinsun.com>
103
d600ee67
PE
104 * configure.ac (AC_ARG_ENABLE): Add --disable-yacc.
105 (YACC_SCRIPT, YACC_LIBRARY): New vars to AC_SUBST.
106 * lib/Makefile.am (lib_LIBRARIES): liby.a -> @YACC_LIBRARY@.
107 (EXTRA_LIBRARIES): New var, for liby.a.
108 * src/Makefile.am (bin_SCRIPTS): yacc -> @YACC_SCRIPT@.
109 (EXTRA_SCRIPTS): New var, for yacc.
110
464c6927
PE
111 * data/yacc.c (yyerrlab1): Omit attribute if __cplusplus is defined,
112 since GNU C++ (as of 3.2.1) does not allow attributes on labels.
113 Problem reported by Nelson H. F. Beebe.
114
1152003-01-03 Paul Eggert <eggert@twinsun.com>
116
117 * lib/obstack.h (__INT_TO_PTR) [__STDC__]: Cast result to
118 (void *) to avoid diagnostic with native c89 on SGI IRIX 6.5
119 when compiling Bison 1.875's `bitset bset = obstack_alloc
120 (bobstack, bytes);'. Problem reported by Nelson H. F. Beebe.
121
122 * src/scan-skel.l (QPUTS): Omit redundant `;' from macro definition.
123 ([^@\n]): Renamed from [^@\n]+ so that the token buffer does not
124 grow to a huge size with typical invocation.
d600ee67 125
464c6927
PE
126 * lib/hash.c (_Bool, bool, false, true, __bool_true_false_are_defined):
127 Use the pattern recommended by Autoconf 2.57, except also protect
128 against double-definition.
129 * src/system.h: Likewise.
130 Portability issues reported by Nelson H. F. Beebe.
d600ee67 131
464c6927
PE
132 * data/glr.c (yybool): Renamed from bool, to avoid collisions in C.
133 All uses changed. Provide a definition in both C and C++.
134 (yytrue, yyfalse): Define even if defined (__cplusplus).
135
136 * lib/bitset_stats.c (bitset_stats_list): Remove unused var.
137 Reported by Nelson H. F. Beebe.
d600ee67 138
464c6927
PE
139 * src/scan-skel.l ("@oline@"): Output lineno+1, not lineno.
140
0f42c7d5
PE
1412003-01-02 Paul Eggert <eggert@twinsun.com>
142
143 * data/yacc.c (yyerrlab1): Append `;' after attribute, to
144 pacify the buggy "smart preprocessor" in MacOS 10.2.3.
145 Bug reported by Nelson H. F. Beebe.
146
dc546b0f
PE
1472003-01-01 Paul Eggert <eggert@twinsun.com>
148
149 * Version 1.875.
150
2c09b6a7
PE
1512002-12-30 Paul Eggert <eggert@twinsun.com>
152
153 * src/scan-gram.l (<INITIAL,SC_AFTER_IDENTIFIER,SC_PRE_CODE>","):
154 Moved here from...
155 (<INITIAL>","): Here. This causes stray "," to be treated
156 more uniformly.
157
dc546b0f 158 * src/scan-gram.l (<SC_BRACED_CODE>"}"): Output ";" before the
2c09b6a7
PE
159 last brace in braced code when not in Yacc mode, for compatibility
160 with Bison 1.35. This resurrects the 2001-12-15 patch to
161 src/reader.c.
162
163 * src/reader.h (YYDECL): Use YYSTYPE, not its deprecated alias
164 yystype. This follows up the 2002-12-24 YYSTYPE bug fix.
165
535c0f63
PE
1662002-12-28 Paul Eggert <eggert@twinsun.com>
167
168 * src/symtab.c (symbol_make_alias): Set type of SYMVAL to be
169 that of SYM's type. This fixes Debian bug 168069, reported by
170 Thomas Olsson.
d600ee67 171
963fcc17
PE
1722002-12-28 Paul Eggert <eggert@twinsun.com>
173
174 Version 1.75f.
175
176 Switch back to the Yacc style of conflict reports, undoing some
177 of the 2002-07-30 change.
178 * doc/bison.texinfo (Understanding): Use Yacc style for
179 conflict reports. Also, use new way of locating rules.
180 * src/conflicts.c (conflict_report):
181 Renamed from conflict_report_yacc, removing the old
182 'conflict_report'. Translate the entire conflict report at once,
183 so that we don't assume that "," has the same interpretation in
184 all languages.
185 (conflicts_output): Use Yacc-style conflict report for each state,
186 instead of our more-complicated style.
187 (conflicts_print): Use Yacc-style conflict report, except print
188 the input file name when not emulating Yacc.
189 * tests/conflicts.at (Unresolved SR Conflicts, Defaulted
190 Conflicted Reduction, %expect not enough, %expect too much,
191 %expect with reduce conflicts): Switch to Yacc-style conflict reports.
192 * tests/existing.at (GNU Cim Grammar): Likewise.
193 * tests/glr-regr1.at (Badly Collapsed GLR States): Likewise.
194
195 * src/complain.c (warn_at, warn, complain_at, complain, fatal_at,
196 fatal): Don't invoke fflush; it's not needed and it might even be
197 harmful for stdout, as stdout might not be open.
198 * src/reduce.c (reduce_print): Likewise.
199
b1efe548
PE
2002002-12-27 Paul Eggert <eggert@twinsun.com>
201
202 Fix a bug where error locations were not being recorded correctly.
203 This problem was originally reported by Paul Hilfinger in
e3aa65c5 204 <http://mail.gnu.org/archive/html/bug-bison/2002-11/msg00086.html>.
b1efe548
PE
205
206 * data/yacc.c (yyparse): New local var yylerrsp, to record the
207 top of the location stack's error locations.
208 (yyerrlab): Set it. When discarding a token, push its location
209 onto yylerrsp so that we don't lose track of the error's end.
210 (yyerrlab1): Now is only the target of YYERROR, so that we can
211 properly record the location of the action that failed. For GCC
212 2.93 and later, insert an __attribute__ ((__unused__)) to avoid
213 GCC warning about yyerrlab1 being unused if YYERROR is unused.
214 (yyerrlab2): New label, which yyerrlab now falls through to.
215 Compute the error's location by applying YYLLOC_DEFAULT to
216 the locations of all the symbols that went into the error.
217 * doc/bison.texinfo (Location Default Action): Mention that
218 YYLLOC_DEFAULT is also invoked for syntax errors.
219 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR):
220 Error locations include the locations of all the tokens that were
221 discarded, not just the last token.
d600ee67 222
983c5c2c
PE
2232002-12-26 Paul Eggert <eggert@twinsun.com>
224
b1efe548
PE
225 * src/files.c: Include quote.h.
226 (compute_output_file_names): Warn if we detect conflicting
227 outputs to the same file. This should catch the misunderstanding
228 exemplified by Debian Bug 165349, reported by Bruce Stephens..
229
230 * src/conflicts.c (conflicts_print): If the user specifies
231 "%expect N", report an error if there are any reduce/reduce
232 conflicts. This is what the manual says should happen.
233 This fixes Debian bug 130890, reported by Anthony DeRobertis.
234 * tests/conflicts.at (%expect with reduce conflicts): New test.
235
983c5c2c
PE
236 Don't use m4_include on relative file names, as it doesn't work as
237 desired if there happens to be a file with that name under ".".
d600ee67 238
983c5c2c
PE
239 * m4sugar/version.m4: Remove; it was included but it wasn't used.
240 * data/Makefile.am (dist_m4sugar_DATA): Remove m4sugar/version.m4.
241 * data/m4sugar/m4sugar.m4: Don't include m4sugar/version.m4.
242 * data/glr.c, data/lalr1.cc, data/yacc.c: Don't include c.m4.
243 * src/output.c (output_skeleton): Use full path names when
244 specifying a file to include; don't rely on include path, as
245 it's unreliable when the working file contains a file with
246 that name.
d600ee67 247
983c5c2c
PE
2482002-12-25 Paul Eggert <eggert@twinsun.com>
249
250 Remove obsolete references to bison.simple and bison.hairy.
251 Problem mentioned by Aubin Mahe in
e3aa65c5 252 <http://mail.gnu.org/archive/html/help-bison/2002-12/msg00010.html>.
983c5c2c
PE
253 * data/glr.c: Comment fix.
254 * doc/bison.1: Remove references. Also, mention "yacc".
255
256 * src/getargs.c (getargs) [MSDOS]: Don't assume optarg != NULL
257 with -g option.
258
259 * src/parse-gram.y (declaration): Use enum "report_states" rather
260 than its numeric value 1.
261
262 * src/scan-skel.l ("@output ".*\n): Close any old yyout before
263 opening a new one. This fixes Debian bug 165349, reported by
264 Bruce Stephens.
265
23f2d9dc
PE
2662002-12-24 Paul Eggert <eggert@twinsun.com>
267
268 Version 1.75e.
269
270 * Makefile.maint (cvs-update): Don't assume that the shell
271 supports $(...), as Solaris sh doesn't.
272
273 * src/parse-gram.y (lloc_default): Remove test for empty
274 nonterminals at the end, since it didn't change the result.
275
2762002-12-24 Paul Eggert <eggert@twinsun.com>
33167b8b
PE
277
278 If the user does not define YYSTYPE as a macro, Bison now declares it
279 using typedef instead of defining it as a macro. POSIX requires this.
280 For consistency, YYLTYPE is also declared instead of defined.
281
282 %union directives can now have a tag before the `{', e.g., the
283 directive `%union foo {...}' now generates the C code
284 `typedef union foo { ... } YYSTYPE;'; this is for Yacc compatibility.
285 The default union tag is `YYSTYPE', for compatibility with Solaris 9
286 Yacc. For consistency, YYLTYPE's struct tag is now `YYLTYPE'
287 instead of `yyltype'.
288
289 `yystype' and `yyltype' are now obsolescent macros instead of being
290 typedefs or tags; they are no longer documented and will be
291 withdrawn in a future release.
292
293 * data/glr.c (b4_location_type): Remove.
294 (YYSTYPE): Renamed from yystype.
295 (YYSTYPE_IS_DECLARED): New macro, used to prevent double-typedef.
296 (struct YYLTYPE): Renamed from struct yyltype.
297 (YYLTYPE): Renamed from yyltype.
298 (yyltype, yystype): New (and obsolescent) macros,
299 for backward compatibility.
300 * data/yacc.c: Likewise.
301
302 * data/yacc.c (YYSTYPE): Declare as union YYSTYPE if the user
303 does not specify a union tag. This is for compatibility with
304 Solaris 9 yacc.
305
306 * src/parse-gram.y (add_param): 2nd arg is now char * not char
307 const *, since it is now modified by stripping surrounding { }.
308 (current_braced_code): Remove.
309 (PERCENT_DESTRUCTOR, PERCENT_PRINTER, PERCENT_UNION,
310 PERCENT_LEX_PARAM, PERCENT_PARSE_PARAM): Change names to include
311 trailing " {...}". Now of type <chars>.
312 (grammar_declaration): Adjust to bundled tokens.
313 (code_content): Remove; stripping is now done by add_param.
314 (print_token_value): Print contents of bundled tokens.
315 (token_name): New function.
316
317 * src/reader.h (braced_code, current_braced_code): Remove.
318 (token_name): New decl.
319
320 * src/scan-gram.l (handle_dollar, handle_at): Now takes int
321 token_type, not braced_code code_kind. All uses changed.
322 (SC_PRE_CODE): New state, for scanning after a keyword that
323 has (or usually has) an immediately-following braced code.
324 (token_type): New local var, to keep track of which token type
325 to return when scanning braced code.
326 (<INITIAL>"%destructor", <INITIAL>"%lex-param",
dc546b0f 327 <INITIAL>"%parse-param", <INITIAL>"%printer",
33167b8b
PE
328 <INITIAL>"%union"): Set token type and BEGIN SC_PRE_CODE
329 instead of returning a token type immediately.
330 (<INITIAL>"{"): Set token type.
331 (<SC_BRACED_CODE>"}"): Use it.
332 (handle_action_dollar, handle_action_at): Now returns bool
333 indicating success. Fail if ! current_rule; this prevents a core dump.
334 (handle_symbol_code_dollar, handle_symbol_code_at):
335 Remove; merge body into caller.
336 (handle_dollar, handle_at): Complain in invalid contexts.
337
338 * NEWS, doc/bison.texinfo: Document the above.
339 * NEWS: Fix years and program names in copyright notice.
340
879ca4f8
PE
3412002-12-17 Paul Eggert <eggert@twinsun.com>
342
343 * NEWS, doc/bison.texinfo (Parser Function, Pure Calling, Error
344 Reporting, Table of Symbols): Omit mentions of %lex-param and
345 %parse-param from the documentation for now.
346
1c5fe69d
PE
3472002-12-15 Paul Eggert <eggert@twinsun.com>
348
349 Undo most of the 2002-11-12 yychar -> yytoken patch, as it broke
350 GCC 3.2.1 (which depends on yychar == YYEMPTY when there is no
351 lookahead symbol, and which sets yychar in parser actions) and it
7ea9026a
PE
352 disagreed with the Bison documentation. Bug
353 reported by Andrew Walrond.
d600ee67 354
1c5fe69d
PE
355 * data/yacc.c (YYTRANSLATE): Don't check for negative argument,
356 as the caller now does that.
357 (yyclearin, YYBACKUP, yyparse): Use yychar, not yytoken.
358 (YYEMPTY): Parenthesize right hand side, since others use it.
359 (yyparse): Don't assume that our generated code is the only code
360 that sets yychar.
361
d1de5372
PE
3622002-12-13 Paul Eggert <eggert@twinsun.com>
363
364 Version 1.75d.
365
366 POSIX requires a "yacc" command.
367 * src/Makefile.am (bin_SCRIPTS): New macro, for yacc.
368 (MOSTLYCLEANFILES): Add yacc.
369 (yacc): New rule.
1c5fe69d 370 * doc/bison.texinfo (Invocation, Bison Options): Mention yacc
d1de5372
PE
371 as an alias for bison y.
372
373 * po/LINGUAS: Add da.
d600ee67 374
d1de5372
PE
375 * src/getargs.c (__GNU_LIBRARY__) [lint]: Define to work around
376 problem with latest <getopt.h>.
377 (HACK_FOR___GNU_LIBRARY___PROTOTYPE): New macro.
378
379 * doc/fdl.texi: Upgrade to 1.2.
380 * lib/alloca.c, lib/error.c, lib/getopt.c, lib/getopt.h
381 lib/getopt1.c, lib/gettext.h, lib/memrchr.c, lib/obstack.c,
382 lib/obstack.h, lib/strnlen.c, lib/unlocked-io.h: Sync with
383 gnulib.
384 * config/install-sh: Sync with autotools.
385
386 Fix a bad interaction with flex 2.5.23 reported by Bruce Lilly in
e3aa65c5 387 <http://mail.gnu.org/archive/html/bug-bison/2002-11/msg00114.html>.
d1de5372
PE
388 * data/yacc.c (YYLTYPE, struct yyltype): Do not define unless
389 locations are requested.
390 (union yyalloc): Do not depend on YYLTYPE_IS_TRIVIAL unless
391 locations are requested.
392
d0f3fe23
PE
3932002-12-12 Paul Eggert <eggert@twinsun.com>
394
395 Remove unportable casts and storage allocation tricks.
396 While we're at it, remove almost all casts, since they
397 usually aren't needed and are a sign of trouble.
398
399 * configure.ac (AC_CHECK_TYPES): Check for uintptr_t.
400
401 * src/derives.c (derives_compute): Do not subtract NTOKENS from
402 the pointer DSET returned by malloc; this isn't portable.
403 Instead, always use DSET[i - NTOKENS] rather than DSET[i].
404 Similarly for DERIVES.
405 * src/lalr.c (set_goto_map): Likewise, for GOTO_MAP and TEMP_MAP.
406 * src/nullable.c (nullable_compute): Likewise, for RSETS and NULLABLE.
407 * src/reduce.c (reduce_grammar_tables): Likewise, for nontermmap
408
409 * src/derives.c (derives_compute): Do not bother invoking
410 int_of_rule_number, since rule numbers are integers.
411
412 * src/files.c (concat2, tr, compute_base_name): Use xmalloc (N)
413 rather than XMALLOC (char, N).
414
415 * src/files.c (filename_split): Rewrite to avoid cast.
416
417 * src/gram.h (symbol_number_as_item_number,
418 item_number_as_symbol_number, rule_number_as_item_number,
419 item_number_as_rule_number):
420 Now inline functions rather than macros, to avoid casts.
421 * src/state.h (state_number_as_int): Likewise.
422 * src/tables.c (state_number_to_vector_number,
423 symbol_number_to_vector_number): Likewise.
424
425 * src/gram.h (int_of_rule_number): Remove; no longer used.
426
427 * src/lalr.c (add_lookback_edge): Use malloc rather than calloc,
428 since the resulting storage is always stored into.
429
430 * src/main.c (alloca) [C_ALLOCA]: Add decl here, the only place
431 where it's needed.
432
433 * src/muscle_tab.c (muscle_m4_output):
434 Now inline. Return bool, not int.
435 * src/state.c (state_compare): Likewise.
436 * src/symtab.c (symbol_check_defined,
437 symbol_check_alias_consistency, symbol_pack, symbol_translation,
438 hash_compare_symbol, hash_symbol):
439 Likewise.
440 * src/uniqstr.c (uniqstr_print): Likewise.
441 * src/muscle_tab.c (muscle_m4_output_processor):
442 New function, to avoid casts.
443 * src/state.c (state_comparator, stage_hasher): Likewise.
444 * src/symtab.c (symbol_check_defined_processor,
445 symbol_check_alias_consistency_processor, symbol_pack_processor,
446 symbol_translation_processor, hash_symbol_comparator,
447 hash_symbol_hasher): Likewise.
448 * src/uniqstr.c (uniqstr_print_processor): Likewise.
449 * src/muscle_tab.c (muscles_m4_output):
450 Use new functions instead of casting old functions unportably.
451 * src/state.c (state_hash_new): Likewise.
452 * src/symtab.c (symbols_new, symbols_do, symbols_check_defined,
453 symbols_token_translations_init):
454 Likewise.
455 * src/uniqstr.c (uniqstrs_new, hash_initialize, uniqstrs_do): Likewise.
456
457 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): Use long local
458 var instead of casting to long, to avoid casts.
459 (prepare_states): Use MALLOC rather than alloca, so that we don't
460 have to worry about alloca.
461 * src/state.c (state_hash_lookup): Likewise.
462
463 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>"'"): Use unsigned char
464 local var instead of casting to unsigned char, to avoid casts.
465
466 * src/state.c (TRANSITIONS_ALLOC, ERRS_ALLOC, REDUCTIONS_ALLOC,
467 STATE_ALLOC): Remove.
468 (transitions_new, errs_new, reductions_new, state_new): Use malloc
469 rather than calloc, and use offsetof to avoid allocating slightly
470 too much storage.
471 (state_new): Initialize all members.
472
473 * src/state.c (state_hash): Use unsigned accumulator, not signed.
474
475 * src/symtab.c (symbol_free): Remove; unused.
476 (symbol_get): Remove cast in lhs of assignment.
477 (symbols_do): Now static. Accept generic arguments, not
478 hashing-related ones.
479
480 * src/symtab.h: (NUMBER_UNDEFINED): Remove unnecessary cast.
481 (symbol_processor): Remove.
482 (symbols_do): Remove decl; now static.
483
484 * src/system.h (alloca): Remove; decl no longer needed.
485 (<stddef.h>): Include, for offsetof.
486 (<inttypes.>, <stdint.h>): Include if available.
487 (uintptr_t): New type, if system lacks it.
488 (CALLOC, MALLOC, REALLOC): New macros.
489 All uses of XCALLOC, XMALLOC, and XREALLOC changed to use these
490 new macros.
491
492 * src/tables.c (table_size): Now int, to pacify GCC.
493 (table_grow, table_ninf_remap): Use signed table size.
494 (save_row): Don't bother initializing locals when not needed.
495 (default_goto, goto_actions, pack_vector): Remove unnecessary casts.
496 * src/uniqstr.c (hash_compare_uniqstr): Likewise.
497
498 * src/vcg.h: Correct misspellings.
499
500 * src/vcg_defaults.h (G_CMAX): Now INT_MAX.
501
502
503 * src/getargs.c (getargs): Don't assume EOF == -1.
504
26b4a969
PE
5052002-12-09 Paul Eggert <eggert@twinsun.com>
506
507 Change identifier spellings to avoid collisions with names
508 that are reserved by POSIX.
509
510 Don't use names ending in _t, since POSIX reserves them.
511 For consistency, remove _e and _s endings -- they're weren't
512 needed to remove ambiguity. All uses changed.
513 * src/uniqstr.h (uniqstr): Renamed from uniqstr_t, which in
514 turn was just renamed from struniq_t.
515 * src/uniqstr.c (uniqstr_processor): Renamed from struniq_processor,
516 which in turn was just renamed from struniq_processor_t.
517 (hash_compare_uniqstr): Renamed from hash_compare_struniq, which
518 in turn was renamed from hash_compare_struniq_t.
519 * src/LR0.c (struct state_list): Renamed from struct state_list_s.
520 (state_list): Renamed from state_list_t.
521 * src/assoc.h (assoc): Renamed from assoc_t.
522 * src/conflicts.c (enum conflict_resolution): Renamed from
523 enum conflict_resolution_e.
524 * src/derives.c (struct rule_list): Renamed from struct rule_list_s.
525 (rule_list): Renamed from rule_list_t.
526 * src/getargs.h (enum trace): Renamed from enum trace_e.
527 (enum report): Renamed from enum report_e.
528 * src/gram.h (item_number): Renamed from item_number_t.
529 (rule_number): Renamed from rule_number_t.
530 (struct rule_s): Remove the "rule_s" part; not used.
531 (rule): Renamed from rule_t.
532 (rule_filter): Renamed from rule_filter_t.
533 * src/lalr.c (struct goto_list): Renamed from struct goto_list_s.
534 (goto_list): Renamed from goto_list_t.
535 * src/lalr.h (goto_number): Renamed from goto_number_t.
536 * src/location.h (location): Renamed from location_t.
537 * src/muscle_tab.c (muscle_entry): Renamed from muscle_entry_t,
538 and moved here from:
539 * src/muscle_tab.h (muscle_entry_t): here.
540 * src/nullable.c (struct rule_list): Renamed from struct rule_list_s.
541 (rule_list): Renamed from rule_list_t.
542 * src/print_graph.c (static_graph): Renamed from graph.
543 * src/reader.h (braced_code): Renamed from braced_code_t.
544 Remove brace_code_e tag.
545 * src/relation.h (relation_node): Renamed from relation_node_t.
546 (relation_nodes): Renamed from relation_nodes_t.
547 (relation): Renamed from relation_t.
548 * src/state.h (state_number): Renamed from state_number_t.
549 (struct state): Renamed from struct state_s.
550 (state): Renamed from state_t.
551 (transitions): Renamed from transitions_t. Unused (and
552 misspelled) transtion_s tag removed.
553 (errs): Renamed from errs_t. Unused errs_s tag removed.
554 (reductions): Renamed from reductions_t. Unused tag
555 reductions_s removed.
556 * src/symlist.h (symbol_list): Renamed from symbol_list_t.
557 (struct symbol_list): Renamed from struct symbol_list_s.
558 * src/symtab.h (symbol_number): Renamed from symbol_number_t.
559 (struct symbol): Renamed from struct symbol_s.
560 (symbol): Renamed from symbol_t.
561 * src/tables.c (vector_number): Renamed from vector_number_t.
562 (action_number): Renamed from action_t.
563 * src/tables.h (base_number): Renamed from base_t.
564 * src/vcg.h (enum color): Renamed from enum color_e.
565 (enum textmode): Renamed from enum textmode_e.
566 (enum shape): Renamed from enum shape_e.
567 (struct colorentry): Renamed from struct colorentry_s.
568 (struct classname): Renamed from struct classname_s.
569 (struct infoname): Renamed from struct infoname_s.
570 (enum layoutalgorithm): Renamed from enum layoutalgorithm_e.
571 (enum decision): Renamed from enum decision_e.
572 (enum orientation): Renamed from enum orientation_e.
573 (enum alignment): Renamed from enum alignment_e.
574 (enum arrow_mode): Renamed from enum arrow_mode_e.
575 (enum crossing_type): Renamed from enum crossing_type_e.
576 (enum view): Renamed from enum view_e.
577 (struct node): Renamed from struct node_s.
578 (node): Renamed from node_t.
579 (enum linestyle): Renamed from enum linestyle_e.
580 (enum arrowstyle): Renamed from enum arrowstyle_e.
581 (struct edge): Renamed from struct edge.
582 (edge): Renamed from edge_t.
583 (struct graph): Renamed from struct graph_s.
584 (graph): Renamed from graph_t.
585 * tests/calc.at (_AT_DATA_CALC_Y, Simple LALR Calculator):
586 Rename value_t -> value.
587 * tests/input.at (Torturing the Scanner): Rename value_t -> value,
588 value_t_as_yystype -> value_as_yystype.
589
590 Don't include <errno.h> in the mainstream code, since it
591 reserves E[A-Z0-9]* and we want to use symbols like 'EQUALS'.
592 * lib/get-errno.c, lib/get-errno.h: New files.
593 * lib/Makefile.am (libbison_a_SOURCES): Add get-errno.h,
594 get-errno.c.
595 * src/files.c (xfopen, xfclose): Use get_errno instead of errno.
596 * src/output.c (output_skeleton): Likewise.
597 * src/scan-gram.l (<INITIAL>{int}): Use set_errno and get_errno
598 instead of errno.
599 (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>\\x[0-9abcdefABCDEF]+):
600 Likewise.
601 (handle_action_dollar, handle_action_at): Likewise.
602 * src/system.h: Do not include <errno.h>.
603 (TAB_EXT): Renamed from EXT_TAB.
604 (OUTPUT_EXT): Renamed from EXT_OUTPUT.
605
606 Avoid str[a-z]*, since <string.h> reserves that name space.
607 Change all instances of "struniq" in names to "uniqstr", and
608 likewise for "STRUNIQ" and "UNIQSTR".
609 * src/uniqstr.c: Renamed from src/struniq.c.
610 * src/uniqstr.h: Renamed from src/struniq.h.
611 * src/Makefile.am (bison_SOURCES): Adjust to these renamings.
612 * src/files.c (strsuffix): Remove; unused.
613 (concat2): Renamed from stringappend. Now static.
614 * src/files.h (strsuffix, stringappend): Remove; unused.
615 * src/parse-gram.y (<chars>): Renamed from <string>.
616 (<uniqstr>): Renamed from <struniq>.
617 * src/scan-gram.l (obstack_for_string): Renamed from string_obstack.
618 * src/vcg.h (struct node_s.expand): Renamed from struct node_s.stretch.
619 (struct graph_s.expand): Renamed from struct graph_s.stretch.
620 * src/vcg_defaults.h (G_EXPAND): Renamed from G_STRETCH.
621 (G_LONG_STRAIGHT_PHASE): Renamed from G_STRAIGHT_PHASE.
622 (N_EXPAND): Renamed from N_STRETCH.
623
624 Avoid *_MAX and *_MIN, since <limits.h> reserves that name space.
625 * data/yacc.c (YYSTACK_GAP_MAXIMUM): Renamed from YYSTACK_GAP_MAX.
626 * src/gram.h (ITEM_NUMBER_MAX, ITEM_NUMBER_MIN, RULE_NUMBER_MAX):
627 Remove; unused.
628 * src/lalr.h (GOTO_NUMBER_MAXIMUM): Renamed from GOTO_NUMBER_MAX.
629 * src/state.h (STATE_NUMBER_MAXIMUM): Renamed from STATE_NUMBER_MAX.
630 * src/symtab.h (SYMBOL_NUMBER_MAXIMUM): Renamed from SYMBOL_NUMBER_MAX.
631 * src/tables.c (VECTOR_NUMBER_MAX, VECTOR_NUMBER_MIN): Remove; unused.
632 (BASE_MAXIMUM): Renamed from BASE_MAX.
633 (BASE_MINIMUM): Renamed from BASE_MIN.
634 (ACTION_MAX): Remove; unused.
635 (ACTION_NUMBER_MINIMUM): Renamed from ACTION_MIN.
636 Unnecessary casts removed from above defines.
637
638
639 Fix misspelling in names.
640 * src/vcg.h (enum_alignment_e): Renamed from enum_alignement_e.
641 * src/vcg_defaults.h (G_NODE_ALIGNMENT): Renamed from
642 G_NODE_ALIGNEMENT.
643
644
645 * lib/timevar.c (timevar_report): Renamed from time_report,
646 for consistency with other names.
647 * lib/timevar.h (timevar_report): New decl.
648 * src/system.h (time_report): Remove; decl is now in lib/timevar.h.
649
650
651 Sort include-file uses.
652
653 Reorder all include files under src to be in the order "system.h".
654 then the ../lib include files in angle brackets (alphabetized),
655 then the . include files in double-quotes (alphabetized). Fix
656 dependency breakages encountered in this process, as follows:
657 * src/closure.h, src/derives.h, src/state.h: Include "gram.h".
658 * src/complain.c: Don't include stdlib.h, string.h _LIBC stuff.
659 * src/state.h: Include "symtab.h".
660
996b1c7e
PE
6612002-12-08 Paul Eggert <eggert@twinsun.com>
662
663 * data/glr.c, data/lalr1.cc, data/yacc.c: Do not use __file__,
664 since this causes problems when __file__ contains character
665 sequences like "@" that are treated specially by src/scan-skel.l.
666 Instead, just use the file's basename. This fixes the bug
667 reported by Martin Mokrejs in
e3aa65c5 668 <http://mail.gnu.org/archive/html/bug-bison/2002-12/msg00007.html>.
996b1c7e 669
e19c4e5d
PE
6702002-12-06 Paul Eggert <eggert@twinsun.com>
671
672 Add support for rules that do not have trailing semicolons, as
673 POSIX requires. Improve the quality of locations in Bison
674 diagnostics.
26b4a969 675
e19c4e5d
PE
676 * src/location.c: Include <quotearg.h>.
677 (empty_location): Now const.
678 (location_print): New function. Follow the recommendation of the
679 GNU Coding Standards for locations that span file boundaries.
680 * src/location.h: Do not include <quotearg.h>; no longer needed.
681 (boundary): New type.
682 (location_t): Use it. This allows locations to span file boundaries.
683 All member uses changed: file -> start.file or end.file (as needed),
684 first_line -> start.line, first_column -> start.column,
685 last_line -> end.line, last_column -> end.column.
686 (equal_boundaries): New function.
687 (LOCATION_RESET, LOCATION_STEP): Remove.
688 (LOCATION_PRINT): Remove. All callers changed to use location_print.
689 (empty_location): Now const.
690 (location_print): New decl.
691 * src/parse-gram.y (lloc_default): New function, which handles
692 empty locations more accurately.
693 (YYLLOC_DEFAULT): Use it.
694 (%token COLON): Remove.
695 (%token ID_COLON): New token.
26b4a969 696 (rules): Use it.
e19c4e5d
PE
697 (declarations, rules): Remove trailing semicolon.
698 (declaration, rules_or_grammar_declaration):
699 Allow empty (";") declaration.
700 (symbol_def): Remove empty actions; no longer needed.
701 (rules_or_grammar_declaration): Remove trailing semicolon.
702 (semi_colon.opt): Remove.
703 * src/reader.h: Include location.h.
704 (scanner_cursor): New decl.
705 * src/reduce.c (nonterminals_reduce): Use warn_at rather than
706 rolling our own.
707 * src/scan-gram.l (YY_USER_INIT): Initialize scanner_cursor instead
708 of *loc.
709 (STEP): Remove. No longer needed, now that adjust_location does
710 the work. All uses removed.
711 (scanner_cursor): New var.
712 (adjust_location): Renamed from extend_location. It now sets
713 *loc and adjusts the scanner cursor. All uses changed.
714 Don't bother testing for CR.
715 (handle_syncline): Remove location arg; now updates scanner cursor.
716 All callers changed.
717 (unexpected_end_of_file): Now accepts start boundary of token or
718 comment, not location. All callers changed. Update scanner cursor,
719 not the location.
720 (SC_AFTER_IDENTIFIER): New state.
721 (context_state): Renamed from c_context. All uses changed.
722 (id_loc, code_start, token_start): New local vars.
723 (<INITIAL,SC_AFTER_IDENTIFIER>): New initial context. Move all
724 processing of Yacc white space and equivalents here.
725 (<INITIAL>{id}): Save id_loc. Begin state SC_AFTER_IDENTIFIER
726 instead of returning ID immediately, since we need to search for
727 a subsequent colon.
728 (<INITIAL>"'", "\""): Save token_start.
729 (<INITIAL>"%{", "{", "%%"): Save code_start.
730 (<SC_AFTER_IDENTIFIER>): New state, looking for a colon.
731 (<SC_YACC_COMMENT>, <SC_COMMENT>, <SC_LINE_COMMENT>):
732 BEGIN context_state at end, not INITIAL.
733 (<SC_ESCAPED_STRING>"\"", <SC_ESCAPED_CHARACTER>"'",
734 <SC_BRACED_CODE>"}", <SC_PROLOGUE>"%}", <SC_EPILOGUE><<EOF>>):
735 Return correct token start.
736 (<SC_BRACED_CODE,SC_PROLOGUE,SC_EPILOGUE>): Save start boundary when
737 the start of a character, string or multiline comment is found.
738 * tests/conflicts.at (S/R in initial, Defaulted Conflicted
739 Reduction): Adjust reported locations to match the more-precise
740 results now expected.
741 * tests/input.at (Invalid $n, Invalid @n, Type Clashes): Likewise.
742 * tests/reduce.at (Useless Rules, Reduced Automaton,
743 Underivable Rules): Likewise.
744 * tests/regression.at (Invalid inputs): No longer `expecting ";"
745 or "|"' now that so many other tokens are allowed by the new grammar.
746
747 * src/complain.h (current_file): Remove duplicate decl;
748 current_file is now owned by files.h.
749 * src/complain.c, src/scan-gram.l: Include files.h.
750
7512002-12-06 Paul Eggert <eggert@twinsun.com>
26b4a969 752
e19c4e5d
PE
753 * data/glr.c (yy_reduce_print): Don't assume that yyrline[yyrule]
754 promotes to int; it might be unsigned int.
755 * data/yacc.c (yy_reduce_print): Likewise.
756
757 * doc/bison.texinfo (Table of Symbols): YYERROR_VERBOSE should
758 be #defined in the prologue, not in the Bison declarations.
759 This fixes Debian Bug 102878, reported by Shaul Karl.
26b4a969 760
b64755e3
PE
7612002-12-02 Paul Eggert <eggert@twinsun.com>
762
763 * configure.ac (AC_REPLACE_FUNCS): Add strtoul.
764 * lib/strtoul.c: New file, from gnulib.
765 This fixes a porting bug reported by Peter Klein in
e3aa65c5 766 <http://mail.gnu.org/archive/html/bug-bison/2002-12/msg00000.html>.
b64755e3 767
6e746484
PE
7682002-11-30 Paul Eggert <eggert@twinsun.com>
769
b64755e3
PE
770 * src/scan-gram.l (no_cr_read, extend_location): Move to epilogue,
771 and put only a forward declaration in the prologue. This is for
772 consistency with the other scanner helper functions.
773
6ba55592
PE
774 Type clashes now generate warnings, not errors, since it
775 appears that POSIX may allow some grammars with type clashes.
776 * src/reader.c (grammar_current_rule_check): Warn about
777 type clashes instead of complaining.
778 * tests/input.at (Type Clashes): Expect warnings, not complaints.
779
6e746484
PE
780 Add Yacc library, since POSIX requires it.
781 * doc/bison.texinfo (Yacc Library): New node. Regenerate top menu.
782 * lib/Makefile.am (lib_LIBRARIES, liby_a_SOURCES): New macros.
783 * lib/main.c, lib/yyerror.c: New files.
784
785 gram_error can be static; it need not be extern.
786 * src/reader.h (gram_error): Remove decl.
787 * src/parse-gram.y (gram_error): Now static. Add static decl.
788 (print_token_value): Omit parameter names from forward decl,
789 for consistency.
790
88510f9c
PE
7912002-11-29 Paul Eggert <eggert@twinsun.com>
792
6e746484
PE
793 * doc/bison.texinfo: Emphasize that yylex and yyerror must
794 be declared before being used. E.g., one should typically
795 declare them in the prologue. Use GNU coding style in examples.
796 Put "const" consistently after the type it modifies. Mention
797 that C99 supports "inline". Mention that yyerror traditionally
798 returns "int".
799
88510f9c
PE
800 %parse-param and %lex-param now take just one argument, the
801 declaration; the argument name is deduced from the declaration.
802
803 * doc/bison.texinfo (Parser Function, Pure Calling, Error
804 Reporting, Table of Symbols): Document this.
805 * src/parse-gram.y (add_param): New function.
806 (COMMA): Remove.
807 (declaration): Implement new rule for %parse-param and %lex-param.
808 * src/scan-gram.l: "," now elicits a warning, rather than being
809 a token; this is more compatible with byacc.
810 * tests/calc.at (Simple LALR Calculator): Adopt new convention.
811
bb92250c
PE
8122002-11-27 Paul Eggert <eggert@twinsun.com>
813
814 Rename identifiers to avoid real and potential collisions.
815
816 * data/c.m4 (b4_yysymprint_generate): yyout -> yyoutput,
817 to avoid collision with lex macro described by Bruce Lilly in
e3aa65c5 818 <http://mail.gnu.org/archive/html/bug-bison/2002-11/msg00114.html>.
bb92250c
PE
819 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise.
820 * doc/bison.texinfo (Prologue, Tracing): yyprint -> print_token_value.
821 * src/parse-gram.y (print_token_value): Renamed from yyprint.
822 All uses changed.
823 (YYPARSE_PARAM, YYLEX_PARAM, yycontrol): Remove. All uses changed.
824 The name "yycontrol" violates the name space rules, and this stuff
825 wasn't being used anyway.
826 (input): Remove action; this stuff wasn't being used.
827 (gram_error): Rename local variable yylloc -> loc.
828 * src/reader.h (struct gram_control_s, gram_control_t): Remove.
829 (YY_DECL): Don't use "yy" at start of local variables.
830 All uses changed, e.g., yylloc -> loc.
831 * src/scan-gram.l (STEP): Renamed from YY_STEP. All uses changed.
832 (STRING_GROW): Renamed from YY_OBS_GROW. All uses changed.
833 (STRING_FINISH): Renamed from YY_OBS_FINISH. All uses changed.
834 (STRING_FREE): Renamed from YY_OBS_FREE. All uses changed.
835
836 * src/parse-gram.y (gram_error): loc is now const *.
837 * src/reader.h (gram_error): Likewise.
838
3af4feb2
PE
8392002-11-24 Paul Eggert <eggert@twinsun.com>
840
841 Version 1.75c.
842
843 * tests/actions.at (Actions after errors): Use an output format
844 more similar to that of the Printers and Destructors test.
845 Test the position of the ';' token too.
846 (Printers and Destructors): Likewise.
847 (Printers and Destructors: %glr-parser): Remove for now, to avoid
848 unnecessarily alarming people when the test fails.
849
850 * data/yacc.c (yyerrlab1): Move this label down, so that the
851 parser does not discard the lookahead token if the user code
852 invokes YYERROR. This change is required for POSIX conformance.
853
854 * lib/error.c: Sync with gnulib.
855
8562002-11-22 Paul Eggert <eggert@twinsun.com>
857
858 * lib/quotearg.c, lib/quotearg.h: Sync with gnulib.
859 * lib/mbswidth.c, lib/mbswidth.h: Likewise.
860 * lib/xmalloc.c: Likewise.
26b4a969 861
58004308
PE
8622002-11-20 Paul Eggert <eggert@twinsun.com>
863
864 * lib/argmatch.c, lib/argmatch.h: Sync with gnulib.
865
8662002-11-20 Paul Eggert <eggert@twinsun.com>
26b4a969 867
58004308
PE
868 Avoid use of <assert.h>, as the GNU Coding Standards hint that one
869 should use `if (! x) abort ();' rather than `assert (x);', and
870 anyway it's one less thing to worry about configuring.
871
872 * data/glr.c, lib/hash.c, src/system.h: Do not include <assert.h>.
873 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise,
874 and replace all instances of assert with abort.
875 * tests/calc.at (_AT_DATA_CALC_Y): Likewise.
876 * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Likewise.
877
878 * data/glr.c (yydoAction, yyglrReduce, yysplitStack, yyresolveStates,
879 yyresolveAction, yyprocessOneStack): Use abort rather than assert.
880 * lib/hash.c (hash_lookup, hash_get_first, hash_get_next,
881 hash_find_entry, hash_rehash, hash_insert): Likewise.
882 * src/conflicts.c (resolve_sr_conflict): Likewise.
883 * src/lalr.c (set_goto_map, map_goto): Likewise.
884 * src/nullable.c (nullable_compute): Likewise.
885 * src/output.c (prepare_rules, token_definitions_output): Likewise.
886 * src/reader.c (packgram, reader): Likewise.
887 * src/state.c (state_new, state_free, state_transitions_set,
888 state_reduction_find): Likewise.
889 * src/symtab.c (symbol_user_token_number_set, symbol_make_alias,
890 symbol_pack): Likewise.
891 * src/tables.c (conflict_row, pack_vector): Likewise.
892 * src/vcg.c (get_color_str, get_textmode_str, get_shape_str,
893 get_layoutalgorithm_str, get_decision_str, get_orientation_str,
894 get_node_alignement_str, get_arrow_mode_str, get_crossing_type_str,
895 get_view_str, get_linestyle_str, get_arrowstyle_str): Likewise.
896
897 * lib/argmatch.h (ARRAY_CARDINALITY): Do not bother to #undef.
898 (ARGMATCH_CONSTRAINT): New macro.
899 (ARGMATCH_ASSERT): Use it.
900
901 * src/system.h (verify): New macro.
902 * src/getargs.c (trace_argmatch, report_argmatch): Use verify
903 rather than assert.
904 * src/tables.c (tables_generate): Likewise.
905
906 * src/struniq.c (struniq_assert): Now returns void, and aborts
907 if the assertion is false.
908 (struniq_assert_p): Remove.
909 * src/struniq.h: Likewise.
910
76ae8198
PE
9112002-11-18 Paul Eggert <eggert@twinsun.com>
912
913 * data/glr.c (yygetLRActions): Replace `yyindex' with
914 `yytable[yyindex]' to fix typo introduced in my 2002-11-09 patch.
915 This fixes the regression with Sun ONE Studio 7 cc that I reported in
e3aa65c5 916 <http://mail.gnu.org/archive/html/bug-bison/2002-11/msg00077.html>.
76ae8198 917
d3c4e709
AD
9182002-11-18 Akim Demaille <akim@epita.fr>
919
920 * doc/bison.texinfo (Tracing): `yyprint' shouldn't prepend a
921 space.
922 From Tim Van Holder.
923
8d8a7238
PE
9242002-11-17 Paul Eggert <eggert@twinsun.com>
925
926 Pacify Sun ONE Studio 7 lint. Also, rename "ParseError"
927 to "SyntaxError" for consistency with my 2002-11-15 change.
928
929 * data/glr.c (YYDPRINTF, YYDSYMPRINT, YYDSYMPRINTF) [!YYDEBUG]: Do
930 not define to {}, since this breaks the common use of `YYDPRINTF
931 ((...));' if a single statement is desired (e.g. before `else').
932 Work around GCC warnings by surrounding corresponding calls with
933 {} if needed.
934 (yyhasResolvedValue): Remove unused function.
935 (yymergeOptionSets, yyresolvStack): Use `continue;' for empty
936 loop body.
937 (yyreportSyntaxError): Renamed from yyreportParseError.
938 (yyrecoverSyntaxError): Renamed from yyrecoverParseError.
939 All uses changed.
940 * tests/calc.at (_AT_DATA_CALC_Y): Make vars static instead of
941 extern when possible. Remove unused initializations.
942
b0937b22
AD
9432002-11-16 Akim Demaille <akim@epita.fr>
944
945 Augment the similarity between GLR and LALR traces.
946
947 * data/yacc.c (yy_stack_print, YY_STACK_PRINT, yy_reduce_print)
948 (YY_REDUCE_PRINT): New.
949 (yyparse): Use them.
950 * data/glr.c (yy_reduce_print): Use YYFPRINTF, no need for
951 YYDPRINT here.
952 (yyglrReduce, yyrecoverParseError, yyparse): Don't report the
953 state reached after the reduction/recovery, since...
954 (yyparse, yyprocessOneStack): Report the state we are entering in.
955
c5e3e510
AD
9562002-11-16 Akim Demaille <akim@epita.fr>
957
958 * src/getargs.h, src/getargs.c (trace_e, trace_args, trace_types):
959 Add support for --trace=skeleton.
960 * src/scan-skel.l: %option debug.
961 Scan strings of non-@ or \n instead of character by character.
962 (scan_skel): Handle trace_skeleton.
963 (QPUTS): New.
964 (@output_parser_name@, @output_header_name@): ``Restore'' their
965 support (used to be M4 macros).
966 * data/yacc.c: Quote larger chunks, a la glr.c.
967 * data/lalr1.cc: Likewise.
968 The header guards are no longer available, so use some other
969 string than `YYLSP_NEEDED'.
970
4c6cc1db
AD
9712002-11-16 Akim Demaille <akim@epita.fr>
972
973 Make the ``Printers and Destructors'' test more verbose, taking
974 `yacc.c''s behavior as (possibly wrong) reference.
975
976 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Use printf
977 instead of fprint on stdout.
978 Set and report the last_line of the symbols.
979 Consistently display values and locations.
980
6d9e8019
PE
9812002-11-16 Paul Eggert <eggert@twinsun.com>
982
983 * data/yacc.c: Avoid over-quoting of __line__ and __file__.
984
6e649e65
PE
9852002-11-15 Paul Eggert <eggert@twinsun.com>
986
b25d88f6
PE
987 * tests/actions.at (Actions after errors): New test case.
988
6e649e65
PE
989 * data/glr.c, data/lalr1.cc, data/yacc.cc, doc/bison.texinfo,
990 src/conflicts.c, src/parse-gram.y, src/tables.c, src/tables.h,
991 tests/action.at, tests/calc.at, tests/conflicts.at,
992 tests/cxx-type.at, tests/regression.at:
993 "parse error" -> "syntax error" for POSIX compatibility.
994 "parsing stack overflow..." -> "parser stack overflow" so
995 that code matches Bison documentation.
996
0f39aab9
AD
9972002-11-15 Akim Demaille <akim@epita.fr>
998
999 * src/parse-gram.y (declaration): Have %parse-param and %lex-param
1000 take two BRACED_CODE, not two string_content.
1001 Free the scanner's obstack when we are done.
1002 (code_content): New.
1003 * tests/calc.at: Adjust.
1004 * doc/bison.texinfo: Adjust.
1005 Also, make sure to include the `,' for these declarations.
1006
761c1926
AD
10072002-11-15 Tim Van Holder <tim.van.holder@pandora.be>
1008
1009 * m4/prereq.m4: Removed the commented jm_PREREQ_HASH
1010 definition; avoids potential autoreconf problems.
1011
b0f98b10
AD
10122002-11-15 Akim Demaille <akim@epita.fr>
1013
1014 Always check the value returned by yyparse.
1015
1016 * tests/calc.at (_AT_DATA_CALC_Y): Have `main' exit with the value
1017 returned by yyparse.
1018 (_AT_CHECK_CALC_ERROR): Take the expected exit value as argument.
1019 Adjust calls.
1020 * tests/glr-regr1.at (glr-regr1.y): Have `main' exit with the value
1021 returned by yyparse.
1022
970785f1
PH
10232002-11-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1024
1025 * data/glr.c (yyFail): Always set yyerrflag. Corrects regression
1026 on input.at test.
1027
8fcc7db1
PE
10282002-11-14 Paul Eggert <eggert@twinsun.com>
1029
7ec1b48e
PE
1030 * src/output.c (output_skeleton): Call xfopen instead of
1031 duplicating xfopen's body.
1032
cfff7583 1033 Fix bugs reported by Nelson H. F. Beebe in
e3aa65c5 1034 <http://mail.gnu.org/archive/html/bug-bison/2002-11/msg00078.html>.
cfff7583 1035
8fcc7db1
PE
1036 * tests/headers.at (AT_TEST_CPP_GUARD_H): Don't assume that
1037 "$CC -E foo.h" is allowed, as this doesn't work with the Portland
1038 Group compiler. Instead, use "$CC -E bar.c". Include the .h
1039 file twice in the grammar, as an extra check.
1040
1041 * tests/input.at (Torturing the Scanner): Surround the
1042 backslash-newline tests with "#if 0", to make it less likely that
1043 we'll run into compiler bugs. Bring back solitary \ inside
1044 comment, but add a closing comment to work around HP C bug. Don't
e3aa65c5 1045 test backslash-newline in C character constant.
8fcc7db1 1046
4e8d992c
AD
10472002-11-14 Akim Demaille <akim@epita.fr>
1048
1049 * tests/synclines.at (AT_SYNCLINES_COMPILE): Ignore the exit
1050 status of the compiler.
f32b346d 1051 Calling `exit 1' is no longer needed.
4e8d992c
AD
1052 Reported by Nelson H. F. Beebe.
1053
9501dc6e
AD
10542002-11-14 Akim Demaille <akim@epita.fr>
1055
1056 * tests/atlocal.in (CPPFLAGS): We have config.h.
1057 * tests/testsuite.at (AT_DATA_GRAMMAR_PROLOGUE, AT_DATA_GRAMMAR):
1058 New.
1059 * tests/actions.at, tests/calc.at, tests/conflicts.at,
1060 * tests/cxx-type.at, tests/glr-regr1.at, tests/headers.at,
1061 * tests/regression.at, tests/torture.at: Use them for all the
1062 grammars that are to be compiled.
1063 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Rename as...
1064 * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): this.
1065 * doc/bison.texinfo (GLR Parsers): Document `inline'.
1066
18b519c0
AD
10672002-11-14 Akim Demaille <akim@epita.fr>
1068
1069 * doc/bison.texinfo: Various formatting changes (alignments in
1070 samples, additional @group/@end group, GCS in samples.
1071 Use @deffn instead of simple @table to define the directives,
1072 macros, variables etc.
1073
9a86cdb9
PE
10742002-11-13 Paul Eggert <eggert@twinsun.com>
1075
daa33def 1076 Fix some bugs reported by Albert Chin-A-Young in
e3aa65c5 1077 <http://mail.gnu.org/archive/html/bug-bison/2002-11/msg00066.html>.
18b519c0 1078
daa33def 1079 * tests/input.at (Torturing the Scanner): Don't invoke "cc a.c b.c
8fcc7db1 1080 -o c"; the HP C compiler chatters during compilation.
daa33def
PE
1081 Instead, invoke "cc -c a.c -o a.o; cc -c b.c -o b.o; cc a.o b.o -o c".
1082 * tests/headers.at (export YYLTYPE): Likewise.
1083
1084 * tests/input.at (Torturing the Scanner): Remove lines containing
8fcc7db1 1085 solitary backslashes, as they tickle a bug in the HP C compiler.
daa33def 1086
9a86cdb9
PE
1087 * tests/glr-regr1.at (Badly Collapsed GLR States): Avoid //
1088 comments, since they're not portable. Use GNU coding style.
1089
9c1e26bd
AD
10902002-11-13 Akim Demaille <akim@epita.fr>
1091
1092 * data/yacc.c: Leave bigger chunks of quoted text.
1093 (YYDSYMPRINTF): New.
1094 Use it to report symbol activities.
1095 * data/glr.c (YYDSYMPRINTF): New.
1096 Use it.
1097
87f721cc
PE
10982002-11-12 Paul Eggert <eggert@twinsun.com>
1099
1100 Version 1.75b.
1101
1102 * data/glr.c (yydoAction): Return YYRESULTTAG, not int.
1103 (yyglrReduce): Return yyok, not 0.
1104 This should avoid the enumerated-type warnings reported
464c6927 1105 by Nelson H. F. Beebe in
e3aa65c5 1106 <http://mail.gnu.org/archive/html/bug-bison/2002-11/msg00057.html>.
87f721cc
PE
1107
1108 * lib/bbitset.h (BITSET_INLINE): Remove.
1109 * lib/bitset.h [! BITSET_INLINE]: Remove.
1110 (bitset_set, bitset_reset, bitset_test): Rename local vars
1111 to avoid shadowing warnings by GCC.
1112
1113 * data/glr.c (inline): Remove #define. It's the user's
1114 responsibility to #define it away, just like 'const'.
464c6927 1115 This fixes one of the bugs reported by Nelson H. F. Beebe in
e3aa65c5 1116 <http://mail.gnu.org/archive/html/bug-bison/2002-11/msg00058.html>.
18b519c0 1117
87f721cc
PE
1118 * Makefile.maint (po-check): Scan .l and .y files instead of the
1119 .c and the .h files that they generate. This fixes the bug
1120 reported by Tim Van Holder in:
e3aa65c5 1121 <http://mail.gnu.org/archive/html/bison-patches/2002-11/msg00062.html>
87f721cc
PE
1122 Look for N_ as well as for _. Try to avoid matching #define for
1123 N_ and _.
1124 * po/POTFILES.in: Remove src/parse-gram.c, src/scan-gram.c,
1125 src/system.h. Add src/parse-gram.y, src/scan-gram.l.
1126 * src/scan-gram.l: Revamp regular expressions so that " and '
1127 do not confuse xgettext.
1128
1129 * src/struniq.h (struniq_new): Do not declare the return type
1130 to be 'const'; this violates the C standard.
1131 * src/struniq.c (struniq_new): Likewise.
1132
be14ade5
AD
11332002-11-12 Albert Chin-A-Young <china@thewrittenword.com>
1134
1135 * src/Makefile.am (LDADD): Link $(LIBINTL) last to avoid the
1136 duplicate definition of optind on Tru64 UNIX 4.0D with the Compaq
1137 linker.
1138
05291fbc
AD
11392002-11-12 Akim Demaille <akim@epita.fr>
1140
1141 * Makefile.maint: Sync with Autoconf:
1142 (local_updates): New.
1143
1f5fd52e
AD
11442002-11-12 Akim Demaille <akim@epita.fr>
1145
1146 * po/POTFILES.in (src/lalr.c, src/state.c): Remove
1147
283f1e64
AD
11482002-11-12 Akim Demaille <akim@epita.fr>
1149
1150 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Display the
1151 locations.
1152
886b69d1
AD
11532002-11-12 Akim Demaille <akim@epita.fr>
1154
1155 * data/c.m4 (b4_yysymprint_generate): Pass *yyvaluep to YYPRINT,
1156 not yyvalue.
1157
3df37415
AD
11582002-11-12 Akim Demaille <akim@epita.fr>
1159
1160 * tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): New.
1161 Use it to test the GLR parser.
1162
7bd6c77e
AD
11632002-11-12 Akim Demaille <akim@epita.fr>
1164
1165 * tests/regression.at (input.y): s/YYEOF/MYEOF/, as the skeleton
1166 defines it.
1167 * data/glr.c (yystos): New.
1168 (b4_yysymprint_generate, b4_yydestruct_generate): Invoke.
1169 (YYDSYMPRINT): New.
1170 (yyval): Don't define it, it is handled via M4.
1171 (yyrecoverParseError): Free verbosely the discarded symbols.
1172 * data/yacc.c (yysymprint): Remove, rather...
1173 (b4_yysymprint_generate): invoke.
1174 * data/c.m4 (b4_yysymprint_generate): New.
1175 Accept pointers as arguments, as opposed to the version from
1176 yacc.c.
1177 (b4_yydestruct_generate): Likewise.
1178 * tests/cations.at (Printers and Destructors): Use Bison directives
1179 instead of CPP macros.
1180 Don't rely on internal details.
1181
b0400cc6
AD
11822002-11-12 Akim Demaille <akim@epita.fr>
1183
1184 * data/c.m4 (b4_yydestruct_generate, b4_symbol_actions): New.
1185 * data/yacc.c: Rename yychar1 as yytoken, as in glr.c.
1186 Don't work on yychar (i.e., do set it to YYEMPTY, don't match
1187 it against YYEMPTY and so forth), work on yytoken (i.e., set
1188 it to YYEMPTY etc.).
1189 (yydestruct): Replace with a b4_yydestruct_generate invocation.
1190 (b4_symbol_actions): Remove.
1191 * data/glr.c (YYTRANSLATE): As for yacc.c, if negative, it stands
1192 for 0, end-of-input.
1193
72f889cc
AD
11942002-11-12 Akim Demaille <akim@epita.fr>
1195
1196 * doc/bison.texinfo (Destructor Decl): New.
1197
b1ae9233
AD
11982002-11-12 Akim Demaille <akim@epita.fr>
1199
1200 * src/tables.c (tables_generate): Use free for pointers that
1201 cannot be NULL, not XFREE.
1202 (pack_vector): Use assert, not fatal, for bound violations.
1203 * src/state.c (state_new): Likewise.
1204 * src/reader.c (reader): Likewise.
1205 * src/lalr.c (set_goto_map): Likewise.
72f889cc 1206 * src/location.h (LOCATION_PRINT): If first_line is 0, just issue
b1ae9233
AD
1207 the file name.
1208
7ec2d4cd
AD
12092002-11-12 Akim Demaille <akim@epita.fr>
1210
1211 * src/scan-gram.l, src/reader.h (scanner_last_string_free):
1212 Restore.
1213 * src/scan-gram.l (last_string): Is global to the file, not to
1214 yylex.
1215 * src/parse-gram.y (input): Don't append the epilogue here,
1216 (epilogue.opt): do it here, and free the scanner's obstack.
1217 * src/reader.c (epilogue_set): Rename as...
1218 (epilogue_augment): this.
1219 * data/c.m4 (b4_epilogue): Defaults to empty.
1220
573a6cd3
AD
12212002-11-12 Akim Demaille <akim@epita.fr>
1222
1223 * src/getargs.c (long_options): Remove duplicates.
1224 * src/vmsgetargs.c, src/build.com, src/bison.cld, src/vmshlp.mar:
1225 Remove.
1226 * doc/bison.rnh: Remove.
1227 * doc/bison.texinfo (VMS Invocation): Remove.
1228
95612cfa
AD
12292002-11-12 Akim Demaille <akim@epita.fr>
1230
1231 * src/struniq.h, src/struniq.c (struniq_t): Is const.
1232 (STRUNIQ_EQ, struniq_assert, struniq_assert_p): New.
1233
1234 Use struniq for symbols.
1235
1236 * src/symtab.h (symbol_t): The tag member is a struniq.
1237 (symbol_type_set): Adjust.
1238 * src/symtab.c (symbol_new): Takes a struniq.
1239 (symbol_free): Don't free the tag member.
1240 (hash_compare_symbol_t, hash_symbol_t): Rename as...
1241 (hash_compare_symbol, hash_symbol): these.
1242 Use the fact that tags as struniqs.
1243 (symbol_get): Use struniq_new.
1244 * src/symlist.h, src/symlist.c (symbol_list_n_type_name_get):
1245 Returns a strniq.
1246 * src/reader.h (merger_list, grammar_currentmerge_set): The name
1247 and type members are struniqs.
1248 * src/reader.c (get_merge_function)
1249 (grammar_current_rule_merge_set): Adjust.
1250 (TYPE, current_type): Are struniq.
1251
1252 Use struniq for file names.
1253
1254 * src/files.h, src/files.c (infile): Split into...
1255 (grammar_file, current_file): these.
1256 * src/scan-gram.c (YY_USER_INIT, handle_syncline): Adjust.
1257 * src/reduce.c (reduce_print): Likewise.
1258 * src/getargs.c (getargs): Likewise.
1259 * src/complain.h, src/complain.c: Likewise.
1260 * src/main.c (main): Call struniqs_new early enough to use it for
1261 file names.
1262 Don't free the input file name.
1263
3e6656f9
AD
12642002-11-12 Akim Demaille <akim@epita.fr>
1265
1266 * src/symtab.c (symbol_free): Remove dead deactivated code:
1267 type_name are properly removed.
1268 Don't use XFREE to free items that cannot be NULL.
1269 * src/struniq.h, src/struniq.c: New.
1270 * src/main.c (main): Initialize/free struniqs.
1271 * src/parse-gram.y (%union): Add astruniq member.
1272 (yyprint): Adjust.
1273 * src/scan-gram.l (<{tag}>): Return a struniq.
1274 Free the obstack bit that used to store it.
1275 * src/symtab.h (symbol_t): The 'type_name' member is a struniq.
1276
7672019c
PE
12772002-11-11 Paul Eggert <eggert@twinsun.com>
1278
1279 Revamp to fix many (but not all) of the C- and M4-related quoting
1280 problems. Among other things, this fixes the Bison bug reported
1281 by Jan Hubicka when processing the Bash grammar; see:
e3aa65c5 1282 <http://mail.gnu.org/archive/html/bison-patches/2002-11/msg00039.html>
7672019c
PE
1283
1284 Use new @ escapes consistently. Represent brackets with @{ and @}
1285 rather than @<:@ and @:>@, since this works a bit better with dumb
1286 editors like vi. Represent @ with @@, since @ is now consistently
1287 an escape. Use @oline@ and @ofile@ rather than __oline__ and
1288 __ofile__, to avoid unexpected expansions. Similarly, use @output
1289 rather than #output.
1290
1291 * data/c.m4 (b4_copyright): Omit file name from comment, since
1292 the file name could contain "*/".
1293 (b4_synclines_flag): Don't quote the 2nd argument; it should already
1294 be quoted. All uses changed.
1295
1296 * data/glr.c: Use new @ escapes consistently.
1297 (b4_input_suffix, b4_output_parser_suffix, b4_output_parser_name,
1298 b4_output_header_suffix, b4_output_header_name, b4_header_guard):
1299 Remove, since they couldn't handle arbitrary characters in file
1300 names.
1301 * data/lalr1.cc: Likewise.
1302 * data/yacc.c: Likewise.
1303
1304 * src/files.c (output_infix): Remove; all uses removed.
1305 * src/files.h: Likewise.
1306
1307 * data/glr.c: Remove use of "#ifdef b4_header_guard", since it
1308 mishandled funny characters in file names, and anyway it isn't
1309 needed any more.
1310 * data/yacc.c: Likewise.
1311 * data/lalr1.cc: Use YYSLP_NEEDED instead of b4_header_guard.
1312
1313 * data/glr.c (YYSTYPE_IS_TRIVIAL): Define when the .h file would.
1314 * data/yacc.c: Likewise.
1315
1316 * src/muscle_tab.c: Include quotearg.h, since we need to quote C
1317 strings now.
1318 (muscle_init): Quote filename as a C string.
1319 * src/muscle_tab.h (MUSCLE_GROW_STRING_PAIR): Remove; unused.
1320 (MUSCLE_OBSTACK_SGROW, MUSCLE_INSERT_C_STRING): New macros.
1321 * src/output.c (escaped_file_name_output): New function.
1322 (prepare_symbols): Quote tokens for M4.
1323 (prepare): Don't insert output_infix, output_prefix,
1324 output_parser_name, output_header_name; this is now down by scan-skel.
1325 Insert skeleton as a C string.
1326
1327 * src/output.c (user_actions_output, symbol_destructors_output,
1328 symbol_printers_output): Quote filenames for C and M4.
1329 * src/reader.c (prologue_augment, epilogue_set): Likewise.
1330
1331 * src/scan-gram.l (<SC_CHARACTER>): Don't worry about any backslash
1332 escapes other than \\ and \'; this simplifies the code.
1333 (<SC_STRING>): Likewise, for \\ and \".
1334 (<SC_COMMENT,SC_LINE_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,
1335 SC_PROLOGUE,SC_EPILOGUE>): Escape $ and @, too.
1336 Use new escapes @{ and @} for [ and ].
1337
1338 * src/scan-skel.l (yylineno, yyoutname): Remove static vars, replacing
1339 them with auto vars.
1340 Switch to new escape scheme, where @ is the escape character uniformly.
1341 Abort if a stray escape character is found. Avoid unbounded input
1342 buffer when parsing non-escaped text.
1343
1344 * tests/input.at (Torturing the Scanner): Add tests that @oline@,
1345 __oline__, #output, $@, and @{ do not have unintended meanings.
1346
acea4f3b
PE
13472002-11-09 Paul Eggert <eggert@twinsun.com>
1348
1349 Fix the test failure due to GCC warnings described in
e3aa65c5 1350 <http://mail.gnu.org/archive/html/bug-bison/2002-11/msg00000.html>.
acea4f3b
PE
1351 * data/glr.c (yyis_pact_ninf, yyis_table_ninf): New macros, which
1352 evaluate to 0 if it's impossible for NINF to be in the respective
1353 table.
1354 (yygetLRActions, yyrecoverParseError): Use them.
1355
1356 * src/scan-gram.l (unexpected_end_of_file): Fix bug: columns were
1357 counted in the token inserted at end of file. Now takes
1358 location_t *, not location_t, so that the location can be
1359 adjusted. All uses changed.
1360
1361 * tests/regression.at (Invalid inputs): Adjust wording in
1362 diagnostic to match the new behavior.
1363
1364 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR,
1365 AT_DATA_HORIZONTAL_GRAMMAR, AT_DATA_LOOKAHEADS_GRAMMAR,
1366 AT_DATA_STACK_TORTURE): Replace `assert (x);' with `if (! (x))
1367 abort ();'. This reduces the runtime of the "Many lookaheads"
1368 test from 27.6 to 2.7 minutes on a 440 MHz Ultrasparc III running
1369 GCC 3.2.
1370
20ef1ad5
PE
13712002-11-07 Paul Eggert <eggert@twinsun.com>
1372
1373 * src/parse-gram.y (CHARACTER): Remove unused token.
1374 All uses removed.
1375
1376 * src/scan-gram.l: Remove stack option. We no longer use the
1377 stack, since the stack was never deeper than 1; instead, use the
1378 new auto var c_context to record the stacked value.
1379
1380 Remove nounput option. At an unexpected end of file, we now unput
1381 the minimal input necessary to end cleanly; this simplifies the
1382 code.
1383
1384 Avoid unbounded token sizes where this is easy.
1385
1386 (unexpected_end_of_file): New function.
1387 Use it to systematize the error message on unexpected EOF.
1388 (last-string): Now auto, not static.
1389 (YY_OBS_FREE): Remove unnecessary do while (0) wrapper.
1390 (scanner_last_string_free): Remove; not used.
1391 (percent_percent_count): Move decl to just before use.
1392 (SC_ESCAPED_CHARACTER): Return ID at unexpected end of file,
1393 not the (never otherwised-used) CHARACTER.
1394
93724f13
AD
13952002-11-07 Akim Demaille <akim@epita.fr>
1396
1397 Let yyerror always receive the msg as last argument, so that
1398 yyerror can be variadic.
1399
1400 * data/yacc.c (b4_yyerror_args): New.
1401 Use it when calling yyerror.
1402 * data/glr.c (b4_yyerror_args, b4_lyyerror_args): New.
1403 Use it when calling yyerror.
1404 * doc/bison.texinfo (Error Reporting): Adjust.
1405 * tests/calc.at (_AT_DATA_CALC_Y): Adjust.
1406 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Adjust.
1407
6e40b4eb
AD
14082002-11-06 Akim Demaille <akim@epita.fr>
1409
1410 #line should have quoted strings.
1411 Ideally, this should be done by m4_quotearg.
1412
1413 * src/scan-skel.l: Include quotearg.h.
1414 Quote __ofile__.
1415 * src/output.c (symbol_printers_output)
1416 (symbol_destructors_output): Quote the file name.
1417
2dfbfc12
AD
14182002-11-06 Akim Demaille <akim@epita.fr>
1419
1420 * tests/regression.at (Invalid inputs): Adjust to the recent
1421 messages.
1422
437c2d80
AD
14232002-11-06 Akim Demaille <akim@epita.fr>
1424
1425 Restore --no-lines.
1426 Reported by Jim Kent.
1427
1428 * data/c.m4 (b4_syncline): New.
1429 * data/glr.c, data/yacc.c, data/lalr1.cc: Use it.
1430 * src/reader.c (prologue_augment, epilogue_set): Use b4_syncline.
1431 * src/output.c (user_actions_output): Likewise.
1432 (prepare): Define 'b4_synclines_flag'.
2dfbfc12 1433 * src/muscle_tab.c (muscle_init): Don't define b4_linef.
437c2d80 1434
900c5db5
AD
14352002-11-06 Akim Demaille <akim@epita.fr>
1436
1437 * src/main.c (main): Free `infile'.
1438 * src/scan-gram.l (handle_syncline): New.
1439 Recognize `#line'.
1440 * src/output.c (user_actions_output, symbol_destructors_output)
1441 (symbol_printers_output): Use the location's file name, not
1442 infile.
1443 * src/reader.c (prologue_augment, epilogue_set): Likewise.
1444
e183b123 14452002-11-05 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
51b4a04c 1446
e183b123 1447 * src/tables.c (matching_state): Don't allow states to match if
51b4a04c 1448 either has GLR conflict entries.
e183b123 1449
193eb6b7
PE
14502002-11-05 Paul Eggert <eggert@twinsun.com>
1451
e183b123
PE
1452 * src/scan-gram.l: Use more accurate diagnostics, e.g.
1453 "integer out of range" rather than "invalid value".
1454 * tests/input.at (Invalid $n, Invalid @n): Change expected wording
1455 accordingly.
1456
193eb6b7
PE
1457 Scan <% and %> digraphs in C code as POSIX 1003.1-2001 requires.
1458 Also, remove one static variable in the scanner.
1459
1460 * src/scan-gram.l (braces_level): Now auto, not static.
1461 Initialize to zero if the compiler is being picky.
1462 (INITIAL): Clear braces_level instead of incrementing it.
1463 (SC_BRACED_CODE): Treat <% and %> as { and } when inside C code,
1464 as POSIX 1003.1-2001 requires.
1465 * src/system.h (IF_LINT): New macro, taken from coreutils.
1466 * configure.ac: Define "lint" if --enable-gcc-warnings.
1467
29c01725
AD
14682002-11-05 Akim Demaille <akim@epita.fr>
1469
1470 * src/scan-gram.l: When it starts with `%', complain about the
1471 whole directive, not just that `invalid character: %'.
1472
8aeac3ca
AD
14732002-11-04 Akim Demaille <akim@epita.fr>
1474
1475 * Makefile.maint: Update from Autoconf.
1476 (update, cvs-update, po-update, do-po-update): New.
1477
793a58bb
AD
14782002-11-04 Akim Demaille <akim@epita.fr>
1479
1480 * tests/glr-regr1.at (Badly Collapsed GLR States): Prototype yylex
1481 and yyerror.
1482 Have yyerror `use' its arguments.
1483 * tests/calc.at (AT_CHECK_PUSHDEFS): AT_YYERROR_SEES_LOC_IF
1484 returns true when location & yacc & pure & parse-param.
1485 (_AT_DATA_CALC_Y): Let yyerror ``use'' its arguments.
1486
c4d720cd
AD
14872002-11-04 Akim Demaille <akim@epita.fr>
1488
1489 * src/location.h (LOCATION_PRINT): Use quotearg slot 3 to avoid
1490 clashes.
1491 * src/scan-gram.l: Use [\'] instead of ['] to pacify
1492 font-lock-mode.
1493 Use complain_at.
1494 Use quote, not quote_n since LOCATION_PRINT no longer uses the
1495 slot 0.
1496
613a0dc5
PE
14972002-11-03 Paul Eggert <eggert@twinsun.com>
1498
1499 * src/reader.c (get_merge_function, grammar_current_rule_check):
1500 Use consistent diagnostics for reporting type name clashes.
1501 Quote the types with <>, for consistency with Yacc.
1502 * tests/input.at (Type Clashes): Adjust to diagnostic changes.
1503
2a8d363a
AD
15042002-11-03 Akim Demaille <akim@epita.fr>
1505
1506 * data/c.m4 (b4_identification, b4_user_args, b4_parse_param):
1507 New.
1508 * data/yacc.m4 (b4_pure_args, b4_Pure_args): New.
1509 (b4_parse_param): Remove.
1510 Use b4_identification.
1511 Propagate b4_pure_args where needed to pass them to yyerror.
1512 * data/glr.m4 (b4_parse_param): Remove.
1513 (b4_user_formals, b4_pure_args, b4_pure_formals, b4_lpure_args)
1514 (b4_lpure_formals): New.
1515 Use b4_identification.
1516 (YY_USER_FORMALS, YY_USER_ARGS): Remove, replaced by
1517 b4_user_formals and b4_user_args.
1518 (yyexpandGLRStack, yyFail, yyaddDeferredAction, yyglrShiftDefer)
1519 (yyreportAmbiguity): When using a pure parser, also need
1520 the location, and the parse-params.
1521 Adjust callers.
1522 (yyuserAction, yyglrShift, yyreportParseError, yyrecoverParseError):
1523 When using a pure parser, also need the parse-params.
1524 Adjust callers.
1525 * tests/calc.at: Test pure (%pure-parser) and absolutely pure
1526 (%pure-parser + %parse-param) LALR and GLR parsers.
1527 (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): New, define AT_PARAM_IF,
1528 AT_LOCATION_IF, AT_PURE_IF, AT_GLR_IF, AAT_PURE_AND_LOC_IF,
1529 AT_GLR_OR_PARAM_IF, AT_YYERROR_ARG_LOC_IF, AT_YYERROR_SEES_LOC_IF.
1530 (_AT_DATA_CALC_Y): Equip for purity of yyerror.
1531 (_AT_CHECK_CALC_ERROR): Use AT_YYERROR_SEES_LOC_IF.
1532 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Equip for yyerror purity.
1533 * doc/bison.texinfo: Untabify the whole file.
1534 (Parser Function): Document %parse-param, deprecate YYPARSE_PARAM.
1535 (Pure Calling): Document %lex-param, deprecate YYLEX_PARAM.
1536 (Error Reporting): Adjust to these new directives.
1537 Document %error-verbose, deprecate YYERROR_VERBOSE.
1538
9e32add8
AD
15392002-11-03 Akim Demaille <akim@epita.fr>
1540
1541 * tests/calc.at: Change all the AT_CHECK_CALC_LALR and
1542 AT_CHECK_CALC_GLR invocations to use % directives, instead of
1543 command line options.
1544 * tests/cxx-type.at: Formatting changes.
1545
b02d90a5
PE
15462002-11-03 Paul Eggert <eggert@twinsun.com>
1547
1548 * src/scan-gram.l: Revamp to fix POSIX incompatibilities,
1549 to count columns correctly, and to check for invalid inputs.
9e32add8 1550
b02d90a5
PE
1551 Use mbsnwidth to count columns correctly. Account for tabs, too.
1552 Include mbswidth.h.
1553 (YY_USER_ACTION): Invoke extend_location rather than LOCATION_COLUMNS.
1554 (extend_location): New function.
1555 (YY_LINES): Remove.
1556
1557 Handle CRLF in C code rather than in Lex code.
1558 (YY_INPUT): New macro.
1559 (no_cr_read): New function.
1560
1561 Scan UCNs, even though we don't fully handle them yet.
1562 (convert_ucn_to_byte): New function.
1563
1564 Handle backslash-newline correctly in C code.
1565 (SC_LINE_COMMENT, SC_YACC_COMMENT): New states.
1566 (eols, blanks): Remove. YY_USER_ACTION now counts newlines etc.;
1567 all uses changed.
1568 (tag, splice): New EREs. Do not allow NUL or newline in tags.
1569 Use {splice} wherever C allows backslash-newline.
1570 YY_STEP after space, newline, vertical-tab.
1571 ("/*"): BEGIN SC_YACC_COMMENT, not yy_push_state (SC_COMMENT).
9e32add8 1572
b02d90a5
PE
1573 (letter, id): Don't assume ASCII; e.g., spell out a-z.
1574
1575 ({int}, handle_action_dollar, handle_action_at): Check for integer
1576 overflow.
9e32add8 1577
b02d90a5
PE
1578 (YY_STEP): Omit trailing semicolon, so that it's more like C.
1579
1580 (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>): Allow \0 and \00
1581 as well as \000. Check for UCHAR_MAX, not 255.
1582 Allow \x with an arbitrary positive number of digits, as in C.
1583 Check for overflow here.
1584 Allow \? and UCNs, for compatibility with C.
1585
1586 (handle_symbol_code_dollar): Use quote_n slot 1 to avoid collision
1587 with quote slot used by complain_at.
1588
1589 * tests/input.at: Add tests for backslash-newline, m4 quotes
1590 in symbols, long literals, and funny escapes in strings.
1591
1592 * configure.ac (jm_PREREQ_MBSWIDTH): Add.
1593 * lib/Makefile.am (libbison_a_SOURCES): Add mbswidth.h, mbswidth.c.
1594 * lib/mbswidth.h, lib/mbswidth.c: New files, from GNU gettext.
1595 * m4/Makefile.am (EXTRA_DIST): Add mbswidth.m4.
1596 * m4/mbswidth.m4: New file, from GNU coreutils.
1597
1598 * doc/bison.texinfo (Grammar Outline): Document // comments.
1599 (Symbols): Document that trigraphs have no special meaning in Bison,
1600 nor is backslash-newline allowed.
1601 (Actions): Document that trigraphs have no special meaning.
1602
1603 * src/location.h (LOCATION_COLUMNS, LOCATION_LINES): Remove;
1604 no longer used.
1605
16062002-11-02 Paul Eggert <eggert@twinsun.com>
1607
1608 * src/reader.c: Don't include quote.h; not needed.
1609 (get_merge_function): Reword warning to be consistent with
1610 type clash diagnostic in grammar_current_rule_check.
1611
1612 * lib/quotearg.c (quotearg_buffer_restyled): Fix off-by-two
1613 bug in trigraph handling.
1614
1615 * src/output.c (prepare_symbols): When printing token names,
1616 escape "[" as "@<:@" and likewise for "]".
1617
1618 * src/system.h (errno): Remove declaration, as we are now
1619 assuming C89 or better, and C89 guarantees errno.
1620
762b212b
PE
16212002-10-30 Paul Eggert <eggert@twinsun.com>
1622
1623 * lib/bitset_stats.c (bitset_stats_read, bitset_stats_write):
1624 Check for close failures.
1625 * src/files.h (xfclose): Return void, not int, since it always
1626 returned zero.
1627 * src/files.c (xfclose): Likewise. Report I/O error if ferror
1628 indicates one.
1629 * src/output.c (output_skeleton): Use xfclose rather than fclose
1630 and ferror. xfclose now checks ferror.
1631
1632 * data/glr.c (YYLEFTMOST_STATE): Remove.
1633 (yyreportTree): Use a stack-based leftmost state. This avoids
1634 our continuing battles with bogus warnings about initializers.
1635
56100c60
AD
16362002-10-30 Akim Demaille <akim@epita.fr>
1637
1638 * src/system.h: Don't use #ifdef/#ifndef on HAVE_ values, only
1639 #if.
1640
51b4a04c
PH
16412002-10-29 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1642
1643 * tests/glr-regr1.at: New test for reported regressions.
1644 * tests/testsuite.at: Add glr-regr1.at test.
1645 * tests/Makefile.am: Add glr-regr1.at test.
e183b123 1646
bf1ebda2
PE
16472002-10-24 Paul Eggert <eggert@twinsun.com>
1648
5c16c6b1
PE
1649 Version 1.75a.
1650
bf1ebda2
PE
1651 * tests/calc.at (_AT_DATA_CALC_Y): Remove unused strcat declaration.
1652 * tests/cxx-type.at (_AT_TEST_GLR_CALC): Include stdlib.h, since
1653 we use malloc. Don't assume 'A' through 'Z' are contiguous.
1654 Don't assume strdup exists; POSIX says its an XSI extension.
1655 Check for buffer overflow on input.
1656
b526ee61
AD
16572002-10-24 Akim Demaille <akim@epita.fr>
1658
1659 * src/output.c (output_skeleton): Don't disable M4sugar comments
1660 too soon: it results in comments being expanded.
1661 * data/yacc.c, data/glr.c, data/lalr1.cc: Do it right before the
1662 first output.
1663
f1886bb2
AD
16642002-10-24 Akim Demaille <akim@epita.fr>
1665
1666 * data/yacc.c (m4_int_type): New.
1667 * data/c.m4 (m4_int_type): Don't use yysigned_char, but `signed
1668 char' as only yacc.c wants K&R portability.
1669 * data/glr.c (yysigned_char): Remove.
1670 * data/lalr1.cc: Rename the trailing b4_name as b4_parser_class_name.
1671 Reported by Quoc Peyrot.
1672
c5576256
PE
16732002-10-23 Paul Eggert <eggert@twinsun.com>
1674
1675 * src/main.c (main): With --trace=time, report times even if a
1676 non-fatal error occurs. Formerly, the times were reported in some
1677 such cases but not in others.
1678 * src/reader.c (reader): Just return if a complaint has been issued,
1679 instead of exiting, so that 'main' can report times.
1680
27b0ffea
AD
16812002-10-22 Akim Demaille <akim@epita.fr>
1682
1683 * src/system.h: Include sys/types.
1684 Reported by Bert Deknuydt.
1685
223a7883
PE
16862002-10-23 Paul Eggert <eggert@twinsun.com>
1687
1688 * configure.ac (AC_PROG_LEX): Use instead of AM_PROG_LEX.
1689 Suggested by Art Haas.
1690
16912002-10-22 Paul Eggert <eggert@twinsun.com>
1692
1693 * src/complain.c (exit) [! (STDC_HEADERS || _LIBC)]: Remove exit
1694 decl; not needed any more.
1695 * src/main.c (main): Use return to exit, undoing yesterday's change.
1696 The last OS that we could find where this wouldn't work is
1697 SunOS 3.5, and that's too old to worry about now.
1698
1699 * data/glr.c (struct yyltype): Define members even when not
1700 doing locations. This is more consistent with yacc.c, and it
1701 works around the following bug reports:
e3aa65c5
PE
1702 http://mail.gnu.org/archive/html/bug-bison/2002-10/msg00106.html
1703 http://mail.gnu.org/archive/html/bug-bison/2002-10/msg00111.html
27b0ffea 1704
223a7883
PE
1705 * doc/bison.texinfo: Minor spelling and typographical fixes. Use
1706 @acronym consistently. Standardize on "Yacc" instead of "YACC",
1707 "Algol" instead of "ALGOL". Give a bit more history about BNF.
1708
8b76775a
AD
17092002-10-22 Akim Demaille <akim@epita.fr>
1710
1711 * data/README: New.
1712
6db10d14
PE
17132002-10-21 Paul Eggert <eggert@twinsun.com>
1714
1715 Be consistent about 'bool'; the old code used an enum in one
1716 module and an int in another, and this violates the C standard.
1717 * m4/stdbool.m4: New file, from coreutils 4.5.3.
1718 * configure.ac (AC_HEADER_STDBOOL): Add.
1719 * m4/Makefile.am (EXTRA_DIST): Add stdbool.m4.
1720 * src/muscle_tab.c (hash_compare_muscles): (a ? FALSE : TRUE) -> (! a)
1721 * src/symtab.c (hash_compare_symbol_t): Likewise.
1722 * src/system.h (bool, false, true): Use a definition consistent
1723 with ../lib/hash.c. All uses changed.
1724
1725 * src/complain.c (warning_issued): Renamed from warn_message_count,
1726 so that we needn't worry about integer overflow (!).
1727 Now of type bool. All uses changed.
1728 (complaint_issued): Renamed from complain_message_count; likewise.
1729
1730 * src/main.c (main): Use exit to exit with failure.
27b0ffea 1731
6db10d14
PE
1732 * src/complain.c (fatal_at, fatal): Use EXIT_FAILURE and EXIT_SUCCESS
1733 rather than 1 and 0.
1734 * src/main.c (main): Likewise.
1735 * src/getargs.c (getargs): Likewise.
1736 * src/reader.c (reader): Likewise.
1737
1738 * src/getarg.c (getargs): Remove duplicate code for
1739 "Try `bison --help'".
1740
1741 * src/files.c (xfopen, xfclose): Use EXIT_FAILURE rather than 2.
1742 What was that "2" for?
1743
1744 * src/complain.h (fatal, fatal_at): Add __attribute__((__noreturn__)).
1745 * src/getargs.c (usage): Likewise.
1746
1747 * src/getargs.c (getargs): When there are too few operands, report
1748 the last one. When there are too many, report the first extra
1749 one. This is how diffutils does it.
1750
92a060fd
PE
17512002-10-20 Paul Eggert <eggert@twinsun.com>
1752
1753 Remove K&R vestiges.
1754 * configure.ac (AC_C_CONST, AM_C_PROTOTYPES): Remove.
1755 * src/complain.c (VA_START): Remove. Assume prototypes.
1756 (vfprintf) [! (HAVE_VPRINTF || defined vfprintf)]: New macro.
1757 (private_strerror, warn_at, warn, complain_at, complain, fatal_at,
1758 fatal): Assume prototypes.
1759 * src/complain.h: Assume prototypes.
1760 * src/system.h (PARAMS): Remove.
1761 Include <limits.h> unconditionally, since it's guaranteeed even
1762 for a freestanding C89 compiler.
1763 (SHRT_MIN, SHRT_MAX): Remove, since C89 guarantees them.
1764 * src/vmsgetargs.c (getargs, cli_present, cli_get_value): Prototype.
8b76775a 1765
e7cb57c0
AD
17662002-10-20 Akim Demaille <akim@epita.fr>
1767
1768 * src/muscle_tab.c (muscle_grow): Remove trailing debugging code.
1769 * data/glr.c (YY_USER_FORMALS, YY_USER_ARGS): New.
1770 (yyuserAction, yydoAction, yyglrReduce, yyresolveValue)
1771 (yyresolveStates, yyresolveAction, yyresolveStack)
1772 (yyprocessOneStack): Use them.
1773 (yy_reduce_print): New.
1774 * tests/calc.at (_AT_DATA_CALC_Y): Exercise %parse-param.
1775
0245f82d
AD
17762002-10-20 Akim Demaille <akim@epita.fr>
1777
1778 * data/c.m4 (b4_c_ansi_args): Recognize functions with no
1779 arguments and output `void'.
1780 (b4_c_function): Rename as...
1781 (b4_c_function_def): this.
1782 (b4_c_function_decl, b4_c_ansi_function_def)
1783 (b4_c_ansi_function_decl): New.
1784 Change the interpretation of the arguments: before `int, foo', now
1785 `int foo, foo'.
1786 * data/yacc.c (yyparse): Prototype and define thanks to these.
1787 Adjust b4_c_function_def uses.
1788 * data/glr.c (yyparse): Likewise, but ANSI only.
1789
39912f52
AD
17902002-10-20 Akim Demaille <akim@epita.fr>
1791
1792 * src/output.c (prepare): Move the definition of `tokens_number',
1793 `nterms_number', `undef_token_number', `user_token_number_max'
1794 to...
1795 (prepare_tokens): Here.
1796 (prepare_tokens): Rename as...
1797 (prepare_symbols): this.
1798 (prepare): Move the definition of `rules_number' to...
1799 (prepare_rules): here.
1800 (prepare): Move the definition of `last', `final_state_number',
1801 `states_number' to...
1802 (prepare_states): here.
1803 * data/yacc.c, data/lalr1.cc, data/glr.c: Normalize `>' into `<'.
1804
20c1e2ad
AD
18052002-10-20 Akim Demaille <akim@epita.fr>
1806
1807 * src/tables.h, src/tables.c, src/output.c: Comment changes.
1808
21964f43
AD
18092002-10-20 Akim Demaille <akim@epita.fr>
1810
1811 * data/yacc.c, data/yacc.c (b4_location_if, b4_pure_if): Move to...
1812 * data/c.m4: here.
1813
66d30cd4
AD
18142002-10-20 Akim Demaille <akim@epita.fr>
1815
1816 * src/output.c (prepare): Use MUSCLE_INSERT_STRING.
1817 * src/muscle_tab.c (muscle_pair_list_grow): Rename `val as
1818 `pair'.
1819 (muscle_init): Move the `b4_ltype', `b4_maxdepth', `b4_initdepth',
1820 `name' to...
1821 * data/glr.c, data/lalr1.cc, data/yacc.c (b4_location_type)
1822 (b4_stack_depth_init, b4_stack_depth_max, b4_parser_class_name):
1823 These.
1824
95f2c9fe
PE
18252002-10-19 Paul Eggert <eggert@twinsun.com>
1826
1827 Do not create a temporary file, as that involves security and
1828 cleanup headaches. Instead, use a pair of pipes.
1829 Derived from a suggestion by Florian Krohm.
1830 * lib/subpipe.c, lib/subpipe.h, m4/subpipe.m4: New files.
1831 * lib/mkstemp.c, lib/readpipe.c, lib/tempname.c, m4/mkstemp.m4: Remove.
1832 * configure.ac (UTILS_FUNC_MKSTEMP, jm_PREREQ_TEMPNAME): Remove.
1833 (BISON_PREREQ_SUBPIPE): Add.
1834 * lib/Makefile.am (libbison_a_SOURCES): Remove readpipe.c.
1835 Add subpipe.h, subpipe.c.
1836 * m4/Makefile.am (EXTRA_DIST): Remove mkstemp.m4. Add subpipe.m4.
1837 * po/POTFILES.in: Add lib/subpipe.c.
1838 * src/output.c: Include "subpipe.h".
1839 (m4_invoke): Remove decl.
1840 (scan_skel): New decl.
1841 (output_skeleton): Use pipe rather than temporary file for m4 input.
1842 Check that m4sugar.m4 is readable, to avoid deadlock.
1843 Check for pipe I/O error.
1844 * src/scan-skel.l (readpipe): Remove decl.
1845 (scan_skel): New function, to be used in place of m4_invoke.
1846 Read from stream rather than file.
66d30cd4 1847
95f2c9fe
PE
1848 * lib/timevar.c (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Do not cast to
1849 float, as this generates a warning on Solaris 8 + GCC 3.2 with
1850 --enable-gcc-warnings. Instead, divide into 1.0 rather than 1;
1851 this generates a more-accurate value anyway.
1852
1853 * lib/timevar.c (timervar_accumulate): Rename locals to
1854 avoid confusion with similarly-named more-global.
1855 * src/muscle_tab.c (muscle_pair_list_grow): Likewise.
1856
1857 * src/output.c (prepare): Use xstrdup to convert char const *
1858 to char *, to avoid GCC warning.
1859
c19988b7
AD
18602002-10-19 Akim Demaille <akim@epita.fr>
1861
1862 * tests/calc.at (_AT_DATA_CALC_Y): Define VAL, LOC, LEX_FORMALS,
1863 LEX_PRE_FORMALS, LEX_ARGS, LEX_PRE_ARGS, USE_LEX_ARGS.
1864 Use them to have `calc.y' ready for %pure-parser.
1865 * data/yacc.c (YYLEX): Pass a yylex return type to
1866 b4_c_function_call.
1867
ae7453f2
AD
18682002-10-19 Akim Demaille <akim@epita.fr>
1869
1870 Prototype support of %lex-param and %parse-param.
1871
1872 * src/parse-gram.y: Add the definition of the %lex-param and
1873 %parse-param tokens, plus their rules.
1874 Drop the `_' version of %glr-parser.
1875 Add the "," token.
1876 * src/scan-gram.l (INITIAL): Scan them.
1877 * src/muscle_tab.c: Comment changes.
1878 (muscle_insert, muscle_find): Rename `pair' as `probe'.
1879 * src/muscle_tab.h (MUSCLE_INSERT_PREFIX): Remove unused.
1880 (muscle_entry_s): The `value' member is no longer const.
1881 Adjust all dependencies.
1882 * src/muscle_tab.c (muscle_init): Adjust: use
1883 MUSCLE_INSERT_STRING.
1884 Initialize the obstack earlier.
1885 * src/muscle_tab.h, src/muscle_tab.c (muscle_grow)
1886 (muscle_pair_list_grow): New.
1887 * data/c.m4 (b4_c_function_call, b4_c_args): New.
1888 * data/yacc.c (YYLEX): Use b4_c_function_call to honor %lex-param.
1889 * tests/calc.at: Use %locations, not --locations.
1890 (AT_CHECK_CALC_GLR): Use %glr-parser, not %glr_parser.
1891
0e575721
AD
18922002-10-19 Akim Demaille <akim@epita.fr>
1893
1894 * src/getargs.c (usage): Take status as argument and exit
1895 accordingly.
1896 Report the traditional `Try ... --help' message when status != 0.
1897 (usage, version): Don't take a FILE * as arg, it is pointless.
1898 (getargs): When there is an incorrect number of arguments, make it
1899 an error, and report it GNUlically thanks to `usage ()'.
1900
724ce7f5
PE
19012002-10-18 Paul Eggert <eggert@twinsun.com>
1902
3a781eb2
PE
1903 * data/glr.c (yyreportParseError): Don't assume that sprintf
1904 yields the length of the printed string, as this is not true
1905 on SunOS 4.1.4. Reported by Peter Klein.
1906
724ce7f5
PE
1907 * tests/calc.at (_AT_DATA_CALC_Y): #undef memcmp and realloc.
1908 * tests/conflicts.at (%nonassoc and eof): Likewise.
1909 Fixes SunOS 4.1.4 test failure reported by Peter Klein.
1910
473d0a75
AD
19112002-10-17 Akim Demaille <akim@epita.fr>
1912
1913 * src/getargs.h (trace_e): Add trace_scan, and trace_parse.
1914 * src/getargs.c (trace_types, trace_args): Adjust.
1915 * src/reader.c (grammar_current_rule_prec_set)
1916 (grammar_current_rule_dprec_set, grammar_current_rule_merge_set):
1917 Standardize error messages.
1918 And s/@prec/%prec/!
1919 (reader): Use trace_flag to enable scanner/parser debugging,
1920 instead of an adhoc scheme.
1921 * src/scan-gram.l: Remove trailing debugging code.
1922
e76d2469
PE
19232002-10-16 Paul Eggert <eggert@twinsun.com>
1924
93e2236a
PE
1925 * src/muscle_tab.h (MUSCLE_TAB_H_): Was misspelled as
1926 MUSCLE_TAB_H.
1927
e76d2469
PE
1928 * NEWS: Officially drop support for building Bison with K&R C,
1929 since it didn't work anyway and it's not worth worrying about.
1930 * Makefile.maint (wget_files): Remove ansi2knr.c.
1931 (ansi2knr.c-url_prefix): Remove.
1932 * lib/.cvsignore: Remove ansi2knr, ansi2knr.*.
1933 * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove.
1934 * src/Makefile.am (AUTOMAKE_OPTIONS): Remove.
1935
5bd1c419
PE
19362002-10-15 Paul Eggert <eggert@twinsun.com>
1937
1938 Stop using the "enum_" trick for K&R-style function definitions;
1939 it confused me, and I was the author! Instead, assume that people
1940 who want to use K&R C compilers (when using these modules in GCC,
1941 perhaps?) will run ansi2knr.
1942
1943 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): Remove.
1944 All uses of "enum_" changed to "enum ".
1945 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
1946 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
e76d2469 1947
5bd1c419
PE
1948 * lib/abitset.c (abitset_and, abitset_and_cmp, abitset_and_or,
1949 abitset_and_or_cmp, abitset_andn, abitset_andn_cmp,
1950 abitset_andn_or, abitset_andn_or_cmp, abitset_bytes, abitset_copy,
1951 abitset_copy1, abitset_disjoint_p, abitset_empty_p,
1952 abitset_equal_p, abitset_init, abitset_list, abitset_list_reverse,
1953 abitset_not, abitset_ones, abitset_or, abitset_or_and,
1954 abitset_or_and_cmp, abitset_or_cmp, abitset_reset, abitset_set,
1955 abitset_size, abitset_small_list, abitset_subset_p, abitset_test,
1956 abitset_unused_clear, abitset_xor, abitset_xor_cmp, abitset_zero):
1957 Use function prototypes; this removes the need for declaring
1958 static functions simply to provide their prototypes.
1959 * lib/bitset.c (bitset_alloc, bitset_and_or_, bitset_and_or_cmp_,
1960 bitset_andn_or_, bitset_andn_or_cmp_, bitset_bytes, bitset_copy_,
1961 bitset_count_, bitset_create, bitset_dump, bitset_first,
1962 bitset_free, bitset_init, bitset_last, bitset_next,
1963 bitset_obstack_alloc, bitset_obstack_free, bitset_only_set_p,
1964 bitset_op4_cmp, bitset_or_and_, bitset_or_and_cmp_, bitset_prev,
1965 bitset_print, bitset_release_memory, bitset_toggle_,
1966 bitset_type_choose, bitset_type_get, bitset_type_name_get,
1967 debug_bitset): Likewise.
1968 * lib/bitset.h (bitset_set, bitset_reset, bitset_test): Likewise.
1969 * lib/bitset_stats.c (bitset_log_histogram_print,
1970 bitset_percent_histogram_print, bitset_stats_and,
1971 bitset_stats_and_cmp, bitset_stats_and_or,
1972 bitset_stats_and_or_cmp, bitset_stats_andn, bitset_stats_andn_cmp,
1973 bitset_stats_andn_or, bitset_stats_andn_or_cmp, bitset_stats_copy,
1974 bitset_stats_count, bitset_stats_disable, bitset_stats_disjoint_p,
1975 bitset_stats_dump, bitset_stats_empty_p, bitset_stats_enable,
1976 bitset_stats_equal_p, bitset_stats_free, bitset_stats_init,
1977 bitset_stats_list, bitset_stats_list_reverse, bitset_stats_not,
1978 bitset_stats_ones, bitset_stats_or, bitset_stats_or_and,
1979 bitset_stats_or_and_cmp, bitset_stats_or_cmp, bitset_stats_print,
1980 bitset_stats_print_1, bitset_stats_read, bitset_stats_reset,
1981 bitset_stats_set, bitset_stats_size, bitset_stats_subset_p,
1982 bitset_stats_test, bitset_stats_toggle, bitset_stats_type_get,
1983 bitset_stats_write, bitset_stats_xor, bitset_stats_xor_cmp,
1984 bitset_stats_zero): Likewise.
1985 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
1986 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
1987 bitsetv_dump, debug_bitsetv): Likewise.
1988 * lib/ebitset.c (ebitset_and, ebitset_and_cmp, ebitset_andn,
1989 ebitset_andn_cmp, ebitset_bytes, ebitset_copy, ebitset_copy_,
1990 ebitset_copy_cmp, ebitset_disjoint_p, ebitset_elt_add,
1991 ebitset_elt_alloc, ebitset_elt_calloc, ebitset_elt_find,
1992 ebitset_elt_free, ebitset_elt_last, ebitset_elt_remove,
1993 ebitset_elt_zero_p, ebitset_elts_grow, ebitset_empty_p,
1994 ebitset_equal_p, ebitset_free, ebitset_init, ebitset_list,
1995 ebitset_list_reverse, ebitset_not, ebitset_ones, ebitset_op3_cmp,
1996 ebitset_or, ebitset_or_cmp, ebitset_release_memory, ebitset_reset,
1997 ebitset_set, ebitset_size, ebitset_subset_p, ebitset_test,
1998 ebitset_weed, ebitset_xor, ebitset_xor_cmp, ebitset_zero):
1999 Likewise.
2000 * lib/lbitset.c (debug_lbitset, lbitset_and, lbitset_and_cmp,
2001 lbitset_andn, lbitset_andn_cmp, lbitset_bytes, lbitset_copy,
2002 lbitset_copy_cmp, lbitset_disjoint_p, lbitset_elt_alloc,
2003 lbitset_elt_calloc, lbitset_elt_find, lbitset_elt_free,
2004 lbitset_elt_link, lbitset_elt_unlink, lbitset_elt_zero_p,
2005 lbitset_empty_p, lbitset_equal_p, lbitset_free, lbitset_init,
2006 lbitset_list, lbitset_list_reverse, lbitset_not, lbitset_ones,
2007 lbitset_op3_cmp, lbitset_or, lbitset_or_cmp, lbitset_prune,
2008 lbitset_release_memory, lbitset_reset, lbitset_set, lbitset_size,
2009 lbitset_subset_p, lbitset_test, lbitset_weed, lbitset_xor,
2010 lbitset_xor_cmp, lbitset_zero): Likewise.
e76d2469 2011
ae26e1f0
AD
20122002-10-14 Akim Demaille <akim@epita.fr>
2013
2014 Version 1.75.
2015
d43baf71
AD
20162002-10-14 Akim Demaille <akim@epita.fr>
2017
2018 * tests/Makefile.am (maintainer-check-posix): New.
2019
7ebc83e3
AD
20202002-10-14 Akim Demaille <akim@epita.fr>
2021
2022 * data/glr.c [YYDEBUG] (YYLEFTMOST_STATE): Initialize the yyloc
2023 member.
2024
05846dae
AD
20252002-10-14 Akim Demaille <akim@epita.fr>
2026
2027 * src/tables.c (table_ninf_remap): base -> tab.
2028 Reported by Matt Rosing.
2029
1318e37d
PE
20302002-10-14 Paul Eggert <eggert@twinsun.com>
2031
447fbb17
PE
2032 * tests/action.at, tests/calc.at, tests/conflicts.at,
2033 tests/cxx-type.at, tests/headers.at, tests/input.at,
2034 tests/regression.at, tests/synclines.at, tests/torture.at:
2035 Say "bison -o foo.c foo.y", not "bison foo.y -o foo.c",
2036 so that the tests still work even if POSIXLY_CORRECT is set.
2037 * doc/bison.texinfo (Rpcalc Compile, Invocation): Likewise.
05846dae 2038
1318e37d
PE
2039 * data/c.m4 (b4_int_type): Use yysigned_char instead of signed char,
2040 for portability to K&R hosts. Fix typo: signed char is guaranteed
2041 only to 127, not to 128.
2042 * data/glr.c (yysigned_char): New type.
2043 * data/yacc.c (yysigned_char): Likewise.
2044 * tests/regression.at (Web2c Actions): signed char -> yysigned_char.
2045
cc0f0794
PE
20462002-10-13 Paul Eggert <eggert@twinsun.com>
2047
5038f418
PE
2048 * data/yacc.c (yyparse): Rewrite to avoid "comparison is always
2049 true due to limited range of data type" warning from GCC.
2050
cc0f0794
PE
2051 * data/c.m4 (b4_token_defines): Protect against double-inclusion
2052 by wrapping enum yytokentype's definition inside #ifndef
2053 YYTOKENTYPE. This undoes a bug I introduced on 2002-10-12.
2054
6fed0802
AD
20552002-10-13 Akim Demaille <akim@epita.fr>
2056
2057 * data/glr.c (yyglrShiftDefer, yyaddDeferredAction, yydoAction):
2058 Un yy- yyrhs to avoid the name clash with the global YYRHS.
2059
32f0598d
AD
20602002-10-13 Akim Demaille <akim@epita.fr>
2061
2062 * Makefile.maint: Update from Autoconf 2.54.
2063 * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Remove, shipped with 2.54.
2064
7ea9a33f
AD
20652002-10-13 Akim Demaille <akim@epita.fr>
2066
2067 * src/print.c (print_state): Separate the list of solved conflicts
2068 from the other items.
2069 * tests/conflicts.at (Resolved SR Conflicts): Adjust.
2070
ea99527d
AD
20712002-10-13 Akim Demaille <akim@epita.fr>
2072
2073 Let nondeterministic skeletons be usable with deterministic
2074 tables.
2075
2076 With the patch, GAWK compiled by GCC without -O2 passes its test
2077 suite using a GLR parser driven by LALR tables. It fails with -O2
2078 because `struct stat' gives two different answers on my machine:
2079 88 (definition of an auto var) and later 96 (memset on this var).
2080 Hence the stack is badly corrumpted. The headers inclusion is to
2081 blame: if I move the awk.h inclusion before GLR's system header
2082 inclusion, the two struct stat have the same size.
2083
2084 * src/tables.c (pack_table): Always create conflict_table.
2085 (token_actions): Always create conflict_list.
2086 * data/glr.c (YYFLAG): Remove, unused.
2087
f377f69f
AD
20882002-10-13 Akim Demaille <akim@epita.fr>
2089
2090 * configure.ac (AC_GNU_SOURCE): Use it instead of hand written code.
2091 (O0FLAGS): New.
2092 (VALGRIND, GXX): New.
2093 * tests/atlocal.in (CFLAGS): Use O0FLAGS.
2094 * tests/bison.in: Run $PREBISON a pre-command.
2095 * tests/Makefile.am (maintainer-check, maintainer-check-valgrind)
2096 (maintainer-check-g++): New.
2097 * Makefile.am (maintainer-check): New.
2098
2a1fe6ed
AD
20992002-10-13 Akim Demaille <akim@epita.fr>
2100
2101 * data/glr.c: Formatting changes.
2102 Tweak some trace messages to match yacc.c's.
2103
f50adbbd
AD
21042002-10-13 Akim Demaille <akim@epita.fr>
2105
2106 GLR parsers sometimes raise parse errors instead of performing the
2107 default reduction.
2108 Reported by Charles-Henry de Boysson.
2109
2110 * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't
2111 check the length of the traces when %glr.
2112 (_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from
2113 GLR's traces.
2114 (AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New.
2115 Test GLR parsers.
2116 * data/glr.c (YYLEFTMOST_STATE): Fix its value.
2117 (yyltype): Remove the yy prefix from the member names.
2118 (yytable): Complete its comment.
2119 (yygetLRActions): Map error action number from YYTABLE from
2120 YYTABLE_NINF to 0.
2121 (yyisErrorAction): No longer compare YYACTION to YYPACT_NINF
2122 (which was a bug: it should have been YYTABEL_NINF, and yet it was
2123 not satisfying as we could compare an YYACTION computed from
2124 YYDEFACT to YYTABLE_NINF although they are unrelated): 0 is the
2125 only value for error actions.
2126 (yyreportParseError): In verbose parse error messages, don't issue
2127 `error' in the list of expected tokens.
2128 * data/yacc.c (yyparse) <yybackup>: Rewrite the decoding of the
2129 next action to perform to match glr.c's decoding.
2130 (yytable): Complete its comment.
2131
bcbad5b9
PE
21322002-10-13 Paul Eggert <eggert@twinsun.com>
2133
2134 Fix problem reported by Henrik Grubbstroem in
e3aa65c5 2135 <http://mail.gnu.org/archive/html/bug-bison/2002-10/msg00098.html>:
bcbad5b9
PE
2136 "nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected,
2137 because the Bison parser reads the second action before reducing
2138 the first one.
2139 * src/scan-gram.l (rule_length): New static var.
2140 Use it to keep track of the rule length in the scanner, since
2141 we can't expect the parser to be in lock-step sync with the scanner.
2142 (handle_action_dollar, handle_action_at): Use this var.
2143 * tests/actions.at (Exotic Dollars): Test for the problem.
05846dae 2144
14904b89
PE
21452002-10-12 Paul Eggert <eggert@twinsun.com>
2146
1fe611e5
PE
2147 * lib/timevar.c [! IN_GCC && HAVE_SYS_TIME_H]: Include <sys/time.h>.
2148 * m4/timevar.m4 (BISON_PREREQ_TIMEVAR): Check for <sys/time.h>.
2149 Include <sys/time.h> when checking for clock_t and struct tms.
2150 Use same include order as source.
2151 This is for the SunOS 4.1.4 porting bug reported by Peter Klein in
e3aa65c5 2152 <http://mail.gnu.org/archive/html/bug-bison/2002-10/msg00016.html>.
05846dae 2153
1fe611e5
PE
2154 * lib/timevar.c: Update copyright date and clarify comments.
2155 (get_time) [IN_GCC]: Keep the GCC version for reference.
05846dae 2156
1fe611e5
PE
2157 * lib/timevar.c, lib/timevar.h, lib/timevar.def: Import
2158 GCC version as of today, then merge Bison's changes.
2159 Change "GCC" to "Bison" in copyright notice. timevar.def's
2160 author is Akim, so change that too.
2161
98194095
PE
2162 * src/reader.c (grammar_current_rule_check):
2163 Don't worry about the default action if $$ is untyped.
2164 Prevents bogus warnings reported by Jim Gifford in
e3aa65c5 2165 <http://mail.gnu.org/archive/html/bug-bison/2002-10/msg00015.html>.
98194095 2166
14904b89
PE
2167 * data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE.
2168 * data/glr.c, data/lalr1.cc, data/yacc.c:
2169 Output token definitions before the first part of user declarations.
2170 Fixes compatibility problem reported by Jim Gifford for kbd in
e3aa65c5 2171 <http://mail.gnu.org/archive/html/bug-bison/2002-10/msg00014.html>.
14904b89 2172
ff6dca18
PE
21732002-10-11 Paul Eggert <eggert@twinsun.com>
2174
2175 * data/yacc.c (yyreport_parse_error): Remove, putting its body into...
2176 (yyparse): here. This undoes some of the 2002-07-25 change.
2177 Compatibility problem reported by Ralf S. Engelschall with
2178 OSSP cfg <http://www.ossp.org/pkg/lib/cfg/>.
2179
eb714592
AD
21802002-10-11 Akim Demaille <akim@epita.fr>
2181
2182 * tests/regression.at Characters Escapes): New.
2183 * src/scan-gram.l (SC_ESCAPED_CHARACTER): Accept \' in strings and
2184 characters.
2185 Reported by Jan Nieuwenhuizen.
2186
b7195100
AD
21872002-10-11 Akim Demaille <akim@epita.fr>
2188
2189 * po/id.po: New.
2190
f28a0f2d
PE
21912002-10-10 Paul Eggert <eggert@twinsun.com>
2192
2193 Portability fixes for bitsets; this also avoids several GCC
2194 warnings.
2195
2196 * lib/abitset.c: Include <stddef.h>, for offsetof.
2197 * lib/lbitset.c: Likewise.
2198
2199 * lib/abitset.c (abitset_bytes): Return a size that is aligned
2200 properly for vectors of objects. Do not assume that adding a
2201 header size to a multiple of a word size yields a value that is
2202 properly aligned for the whole union.
2203 * lib/bitsetv.c (bitsetv_alloc): Likewise.
2204
2205 * lib/bitset_stats.c (bitset_stats_bytes): Adjust to new,
2206 unique names for structures.
2207 * lib/ebitset.c (ebitset_bytes): Likewise.
2208 * lib/lbitset.c (lbitset_bytes): Likewise.
2209
2210 * lib/abitset.c (abitset_ones, abitset_zero, abitset_empty_p,
2211 abitset_copy1, abitset_not, abitset_equal_p, abitset_subset_p,
2212 abitset_disjoint_p, abitset_and, abitset_and_cmp, abitset_andn,
2213 abitset_andn_cmp, abitset_or, abitset_or_cmp, abitset_xor,
2214 abitset_xor_cmp, abitset_and_or, abitset_and_or_cmp,
2215 abitset_andn_or, abitset_andn_or_cmp, abitset_or_and,
2216 abitset_or_and_cmp, abitset_copy): Supply prototype decls,
2217 to improve the type-checking that GCC can do.
2218 * lib/bitset.c (bitset_op4_cmp): Likewise.
2219 * lib/bitset_stats.c (bitset_stats_count,
2220 bitset_stats_empty_p, bitset_stats_ones, bitset_stats_zero,
2221 bitset_stats_copy, bitset_stats_disjoint_p,
2222 bitset_stats_equal_p, bitset_stats_not, bitset_stats_subset_p,
2223 bitset_stats_and, bitset_stats_and_cmp, bitset_stats_andn,
2224 bitset_stats_andn_cmp, bitset_stats_or, bitset_stats_or_cmp,
2225 bitset_stats_xor, bitset_stats_xor_cmp, bitset_stats_and_or,
2226 bitset_stats_and_or_cmp, bitset_stats_andn_or,
2227 bitset_stats_andn_or_cmp, bitset_stats_or_and,
2228 bitset_stats_or_and_cmp): Likewise.
2229 * lib/lbitset.c (lbitset_and, lbitset_and_cmp, lbitset_andn,
2230 lbitset_andn_cmp, lbitset_or, lbitset_or_cmp, lbitset_xor,
2231 lbitset_xor_cmp, lbitset_empty_p, lbitset_ones, lbitset_not,
2232 lbitset_subset_p, lbitset_disjoint_p, debug_lbitset): Likewise.
2233
2234 * lib/abitset.h: Include bitset.h, not bbitset.h.
2235 * lib/ebitset.h: Likewise.
2236 * lib/lbitset.h: Likewise.
2237
2238 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): New types.
2239 All instances of parameters of type enum bitset_opts are now of
2240 type enum_bitset_opts, to conform to the C Standard, and similarly
2241 for enum_bitset_type.
2242 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
2243 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
2244
2245 Do not use "struct bitset_struct" to mean different things in
2246 different modules. Not only is this confusing, it violates
2247 the C Standard, which requires that structure types in different
2248 modules must be compatible if one is to be passed to the other.
2249 * lib/bbitset.h (bitset): Now points to a union, not to a struct.
2250 All instances of "struct bitset_struct *" replaced with "bitset".
2251 * lib/bitset.h (struct bitset_struct): Remove, replacing with....
2252 (union bitset_union, struct abitset_struct, struct ebitset_struct,
2253 struct lbitset_struct, struct bitset_stats_struct): New types.
2254 All uses of struct bitset_struct changed to union bitset_union,
2255 etc.
2256 * lib/abitset.c (struct abitset_struct, abitset,
2257 struct bitset_struct): Remove.
2258 * lib/bitset_stats.c (struct bitset_stats_struct, bitset_stats,
2259 struct bitset_struct): Remove.
2260 * lib/ebitset.c (struct ebitset_struct, ebitset, struct
2261 bitset_struct): Remove.
2262 * lib/lbitset.c (struct lbitset_struct, lbitset, bitset_struct):
2263 Likewise.
2264
2265 Do not call a function of type T using a call that assumes the
2266 function is of a different type U. Standard C requires that a
2267 function must be called with a type that is compatible with its
2268 definition.
2269 * lib/bbitset.h (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
2270 New decls.
2271 * lib/bitset.c (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
2272 New functions.
2273 * lib/ebitset.c (PFV): Remove.
2274 * lib/lbitset.c (PFV): Likewise.
2275 * lib/ebitset.c (ebitset_and, ebitset_andn, ebitset_or,
2276 ebitset_xor, ebitset_copy, ebitset_ones, ebitset_empty_p): New
2277 decls.
2278 (ebitset_and, ebitset_andn, ebitset_or, ebitset_xor): New functions.
2279 (ebitset_vtable): Use them.
2280 * lib/lbitset.c (lbitset_and, lbitset_andn, lbitset_or,
2281 lbitset_xor): New functions.
2282 (lbitset_vtable): Use them.
2283
2284 * lib/bitset.h (bitset_next, bitset_prev, bitset_only_set_p):
2285 Declare.
2286
2287 * lib/bitsetv.c (bitsetv_alloc): Add a cast to (void *) to avoid a
2288 GCC warning.
2289 * lib/lbitset.c (LBITSET_CURRENT1): Likewise.
2290 Use offsetof, for simplicity.
2291
6fbe4984
PE
22922002-10-06 Paul Eggert <eggert@twinsun.com>
2293
2294 * lib/bitset.h (bitset_reset): Do not assume that bitset_word is
2295 the same width as int. This reapplies a hunk of the 2002-08-12 patch
e3aa65c5 2296 <http://mail.gnu.org/archive/html/bison-patches/2002-08/msg00007.html>,
6fbe4984
PE
2297 which was inadvertently undone by the 2002-09-30 patch.
2298 * lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is
2299 the same width as int.
2300
420f93c8
PE
23012002-10-04 Paul Eggert <eggert@twinsun.com>
2302
2303 Version 1.50.
2304
2305 * configure.ac (AC_INIT), NEWS: Increment version number.
2306
2307 * doc/bison.texinfo: Minor spelling, grammar, and white space
2308 fixes.
2309 (Symbols): Mention that any negative value returned from yylex
2310 signifies end-of-input. Warn about negative chars. Mention
2311 the portable Standard C character set.
2312
2313 The GNU coding standard says CFLAGS and YFLAGS are reserved
2314 for the installer to set.
2315 * lib/Makefile.am (AM_CFLAGS): Renamed from CFLAGS.
2316 * src/Makefile.am (AM_CFLAGS): Likewise.
2317 (AM_YFLAGS): Renamed from YFLAGS.
2318
2319 Fix some MAX and MIN problems.
2320 * src/gram.h (ITEM_NUMBER_MIN): MIN_MAX -> INT_MIN.
2321 * src/lalr.h (GOTO_NUMBER_MAX): INT_MAX -> SHRT_MAX.
2322 * src/symtab.h (SYMBOL_NUMBER_MAX): New macro.
2323 * src/reader.c (reader): Use it.
2324
2325 * tests/regression.at (Braces parsing): Use grep, not fgrep, as
2326 POSIX 1003.1-2001 has removed fgrep.
2327
23282002-10-04 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
2329
2330 * lib/bbitset.h (BITSET_WINDEX_MAX): Redefine so that it cannot be
2331 interpreted as signed.
2332 * lib/ebitset.c (ebitset_list): Fix bug.
2333
ff68026d
PE
23342002-10-01 Paul Eggert <eggert@twinsun.com>
2335
2336 More fixes for 64-bit hosts and large bitsets.
2337
2338 * lib/abitset.c (struct abitset_struct.n_bits, abitset_small_list,
2339 abitset_size, abitset_list, abitset_list_reverse, abitset_list):
2340 Use bitset_bindex, not int or unsigned int or size_t, to count bits.
2341 * lib/bbitset.h (struct bitset_vtable.size, struct bitset_vtable.count,
2342 struct bitset_vtable.list, struct bitset_vtable.list_reverse,
2343 bitset_count_, bitset_next, bitset_prev, bitset_first, bitset_last,
2344 bitset_count_): Likewise.
2345 * lib/bitset.h (bitset_iterator.num, bitset_iterator.i,
2346 bitset_first, bitset_last): Likewise.
2347 * lib/bitset_stats.c (bitset_stats_size, bitset_stats_list,
2348 bitset_stats_list_reverse, bitset_stats_size,
2349 bitset_stats_count, bitset_stats_list, bitset_stat_list_reverse):
2350 Likewise.
2351 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
2352 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
2353 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
2354 bitsetv_reflexive_transitive_closure): Likewise.
2355 * lib/bitsetv.h (bitsetv_alloc, bitsetv_create): Likewise.
2356 * lib/ebitset.c (ebitset_size, ebitset_list, ebitset_list_reverse):
2357 Likewise.
2358 * lib/lbitset.c (lbitset_size, lbitset_list, lbitset_list_merge):
2359 Likewise.
420f93c8 2360
ff68026d
PE
2361 * lib/abitset.c (abitset_ones, abitset_zero, abitset_bytes):
2362 Use size_t, not unsigned int, to count bytes.
2363 * lib/abitset.h (abitset_bytes): Likewise.
2364 * lib/bitset.c (bitset_bytes, bitset_alloc, bitset_obstack_alloc):
2365 Likewise.
2366 * lib/bitset.h (bitset_bytes): Likewise.
2367 * lib/bitset_stats.c (bitset_stats_bytes, bitset_stats_init): Likewise.
2368 * lib/bitset_stats.h (bitset_stats_bytes): Likewise.
2369 * lib/bitsetv.c (bitsetv_alloc): Likewise.
2370 * lib/ebitset.c (ebitset_bytes): Likewise.
2371 * lib/ebitset.h (ebitset_bytes): Likewise.
2372 * lib/lbitset.c (lbitset_bytes): Likewise.
2373 * lib/lbitset.h (lbitset_bytes): Likewise.
420f93c8 2374
ff68026d
PE
2375 * lib/abitset.c (abitset_empty_p, abitset_not, abitset_equal_p,
2376 abitset_subset_p, abitset_disjoint_p, abitset_and,
2377 abitset_and_cmp, abitset_andn, abitset_andn_cmp, abitset_or,
2378 abitset_or_cmp, abitset_xor, abitset_xor_cmp, abitset_and_or,
2379 abitset_and_or_cmp, abitset_andn_or, abitset_andn_or_cmp,
2380 abitset_or_and, abitset_or_and_cmp):
2381 Use bitset_windex instead of unsigned int.
2382 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
2383 * lib/ebitset.c (struct ebitset_struct.size, ebitset_elts_grow,
2384 ebitset_elt_add, ebitset_elt_remove, ebitset_weed,
2385 ebitset_elt_find, ebitset_list_reverse, ebitset_list, ebitset_init):
2386 Likewise.
2387 * lib/lbitset.c (lbitset_ones, lbitset_not): Likewise.
420f93c8 2388
ff68026d
PE
2389 * lib/bitset.c (bitset_print):
2390 Use proper printf formats for widths of integer types.
2391 * lib/bitset_stats.c (bitset_percent_histogram_print,
2392 bitset_log_histogram_print, bitset_stats_print_1): Likewise.
2393 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
2394 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
2395 * lib/lbitset.c (lbitset_bytes): Likewise.
420f93c8 2396
ff68026d
PE
2397 * lib/bbitset.h (BITSET_BINDEX_MAX, BITSET_WINDEX_MAX,
2398 BITSET_SIZE_MAX): New macros.
2399 (BITSET_INDEX_MAX): Remove. It wasn't right, since it assumed that
2400 sizeof (bitset_word) == sizeof (bitset_windex). All uses changed
2401 to BITSET_WINDEX_MAX.
2402
2403 * lib/bitset.c (bitset_next, bitset_prev, bitset_first,
2404 bitset_last): Return BITSET_BINDEX_MAX (not -1) for no value,
2405 since we now return the bitset_bindex type (not int).
2406
2407 * lib/bitsetv.c (bitsetv_alloc): Check for arithmetic overflow
2408 when computing sizes.
2409 * lib/ebitset.c (ebitset_elts_grow): Likewise.
2410
2411 * lib/lbitset.c (lbitset_elt_find): Simplify windex calculation
2412 and avoid cast to unsigned.
2413
6aa452a6
AD
24142002-09-30 Akim Demaille <akim@epita.fr>
2415
2416 * lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
2417 * lib/bitset_stats.c, lib/bitsetv.c, lib/ebitset.c, lib/lbitset.c:
2418 Updates from Michael Hayes.
2419
927f7817
AD
24202002-09-30 Art Haas <ahaas@neosoft.com>
2421
2422 * configure.ac: Update AC_OUTPUT and AM_CONFIG_HEADER
2423 invocations.
2424 * tests/cxx-type.at (declarator): Don't rely on NDEBUG being not
2425 defined.
2426
9738f41e
AD
24272002-09-27 Akim Demaille <akim@epita.fr>
2428
2429 Version 1.49c.
2430
a5c75d7f
AD
24312002-09-27 Akim Demaille <akim@epita.fr>
2432
2433 * configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7.
2434 (Because of AC_LIBSOURCE).
2435
8280e179
AD
24362002-09-27 Akim Demaille <akim@epita.fr>
2437
2438 Playing with Autoscan.
2439
2440 * configure.ac: Remove the old LIBOBJ tweaks.
2441 (AC_REPLACE_FUNCS): Add strrchr and strtol.
2442 * lib/strrchr.c: New.
2443 * lib/strtol.c: New, from the Coreutils 4.5.1.
2444
ae64af35
AD
24452002-09-27 Akim Demaille <akim@epita.fr>
2446
2447 Playing with Autoscan.
2448
2449 * m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New.
2450 * lib/Makefile.am (libbison_a_SOURCES): No longer include
2451 argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd.
2452 * lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the
2453 Coreutils 4.5.1.
2454
d1a1114f
AD
24552002-09-24 Akim Demaille <akim@epita.fr>
2456
2457 * doc/bison.texinfo (Stack Overflow): xref to Recursion.
2458 (Frequently Asked Questions, Parser Stack Overflow): New.
2459
b906441c
AD
24602002-09-13 Akim Demaille <akim@epita.fr>
2461
2462 Playing with autoscan.
2463
2464 * src/reader.c (get_merge_function): Use xstrdup, not strdup.
2465 * src/files.c (skeleton_find): Remove, unused.
2466 * m4/memcmp.m4: New, from the Coreutils 4.5.1.
2467 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP.
2468
bd701811
AD
24692002-09-13 Akim Demaille <akim@epita.fr>
2470
2471 * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3.
2472 * Makefile.am (AUTOMAKE_OPTIONS): Don't.
2473
e0a13e7b
AD
24742002-09-13 Akim Demaille <akim@epita.fr>
2475
2476 * configure.ac: Require 2.54.
2477 s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/.
2478 s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/.
2479 * m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4:
2480 Remove, provided by Autoconf macros.
2481
c97011bf
AD
24822002-09-12 Akim Demaille <akim@epita.fr>
2483
2484 * m4/prereq.m4: Update, from Coreutils 4.5.1.
2485
d862b1be
AD
24862002-09-12 Akim Demaille <akim@epita.fr>
2487
2488 * m4/prereq.m4: Update, from Fileutils 4.1.5.
2489 * configure.ac (jm_PREREQ_TEMPNAME): Invoke it.
2490 Reported by Martin Mokrejs.
2491
3d38c03a
AD
24922002-09-10 Akim Demaille <akim@epita.fr>
2493
2494 * src/parse-gram.y: Associate a human readable string to each
2495 token type.
2496 * tests/regression.at (Invalid inputs): Adjust.
2497
b6347355
AD
24982002-09-10 Gary V. Vaughan <gary@gnu.org>
2499
2500 * tests/Makefile.am ($(srcdir)/package.m4): Bison now ships
2501 with an Autoconf-2.5x style configure.ac.
2502
09ba4ab2
PE
25032002-09-06 Paul Eggert <eggert@twinsun.com>
2504
2505 * doc/bison.texinfo (Conditions): Make explicit that the GPL
2506 exception applies only to yacc.c. This is a modification of a
2507 patch originally suggested by Akim Demaille.
2508
21846f69
AD
25092002-09-06 Akim Demaille <akim@epita.fr>
2510
09ba4ab2
PE
2511 * data/c.m4 (b4_copyright): Move the GPL exception comment from
2512 here to...
2513 * data/yacc.c: here.
2514
21846f69
AD
2515 * data/lalr1.cc (struct yyltype): Don't define it, since we use
2516 LocationType.
2517 (b4_ltype): Default to yy::Location from location.hh.
2518
c0ad8bf3
AD
25192002-09-04 Jim Meyering <jim@meyering.net>
2520
2521 * data/yacc.c: Guard the declaration of yytoknum also with
2522 `#ifdef YYPRINT', so it is declared only when used.
2523
3a93251e
AD
25242002-09-04 Akim Demaille <akim@epita.fr>
2525
2526 * configure.in: Rename as...
2527 * configure.ac: this.
2528 Bump to 1.49c.
2529
427c0dda
AD
25302002-09-04 Akim Demaille <akim@epita.fr>
2531
2532 * src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
2533 * src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
2534 translate maintainer only messages.
2535
6a254321
PE
25362002-08-12 Paul Eggert <eggert@twinsun.com>
2537
645e30d1
PE
2538 Version 1.49b.
2539
6a254321
PE
2540 * Makefile.am (SUBDIRS): Remove intl.
2541 (DISTCLEANFILES): Remove.
2542 * NEWS: Mention that GNU M4 is now required. Clarify what is
2543 meant by "larger grammars". Mention the pt_BR translation.
2544 * configure.in (AC_CHECK_DECLS): Add getenv, getopt.
2545 (AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var.
2546 Bump version from 0.11.2 to 0.11.5.
2547 (BISON_PREREQ_STAGE): Remove.
2548 (AM_GNU_GETTEXT): Use external gettext.
2549 (AC_OUTPUT): Remove intl/Makefile.
2550
2551 * config/depcomp, config/install-sh: Sync with Automake 1.6.3.
2552
2553 * data/glr.c: Include string.h, for strlen.
2554 (yyreportParseError): Use size_t for yysize.
2555 (yy_yypstack): No longer nested inside yypstates, as nested
2556 functions are not portable. Do not assume size_t is the
2557 same width as int.
2558 (yypstates): Do not assume that ptrdiff_t is the same width
2559 as int, and similarly for yyposn and YYINDEX.
2560
2561 * data/yacc.c: Fix comment about `$$ = $1': it can copy garbage.
2562
2563 * lib/Makefile.am (INCLUDES): Do not include from the intl
2564 directory, which has been removed.
2565 * src/Makefile.am (INCLUDES): Likewise.
2566
2567 * lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h.
2568 (bitsets_sources, additional_bitsets_sources, timevars_sources):
2569 New vars.
2570
2571 * lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension.
2572 * tests/Makefile.am (EXTRA_DIST): Likewise.
2573
2574 * lib/abitset.c (abitset_reverse_list, ebitset_reverse_list):
2575 Do not assume that bitset_windex is the same width as unsigned.
2576
2577 * lib/abitset.c (abitset_unused_clear): Do not assume that
2578 bitset_word is the same width as int.
2579 * lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise.
2580 * lib/bitset.h (bitset_set, bitset_reset): Likewise.
2581 * lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise.
2582 * lib/ebitset.c (ebitset_set, ebitset_reset): Likewise.
2583 * lib/lbitset.c (lbitset_set, lbitset_reset): Likewise.
2584
2585 * lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for
2586 portability to one's complement hosts!).
2587 * lib/ebitset.c (ebitset_op1): Likewise.
2588 * lib/lbitset.c (lbitset_op1): Likewise.
2589
2590 * lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar.
2591 * lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
2592 lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c:
2593 Sync with fileutils.
2594 * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
2595 lib/gettext.h: Sync with diffutils.
2596
2597 * lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c,
2598 lib/strspn.c, lib/tempname.c: Use GPL, not LGPL.
2599
2600 * lib/obstack.c, lib/obstack.h: Sync with fileutils, except use
2601 PROTOTYPES to check for prototypes, and "defined __STDC__" to
2602 check for void *.
2603
2604 * lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not
2605 size_t; the old version tried to do this but casted improperly.
2606 (bitset_bindex, bitset_windex): Now size_t, not unsigned long.
2607 (bitset_test): Now returns int, not unsigned long.
2608
2609 * lib/bitset_stats.c: Include "gettext.h".
2610 (_): New macro.
2611 (bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't
2612 name locals "index", as it generates unnecessary warnings on some
2613 hosts that have an "index" function.
2614
2615 * lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print,
2616 bitset_stats_read, bitset_stats_write): Wrap strings in _() if
2617 they need translation.
2618 * src/LR0.c (state_list_append, new_itemsets, get_state,
2619 append_states, generate_states): Likewise.
2620 * src/assoc.c (assoc_to_string): Likewise.
2621 * src/closure.c (print_closure, set_firsts, closure): Likewise.
2622 * src/gram.c (grammar_dump): Likewise.
2623 * src/injections.c (injections_compute): Likewise.
2624 * src/lalr.c (lookaheads_print): Likewise.
2625 * src/relation.c (relation_transpose): Likewise.
2626 * src/scan-gram.l: Likewise.
2627 * src/tables.c (table_grow, pack_vector): Likewise.
2628
2629 * m4/Makefile.am (EXTRA_DIST): Remove codeset.m4,
2630 glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4.
2631 * m4/malloc.m4, m4/realloc.m4: Sync with diffutils.
2632 * m4/mbstate_t.m4: Sync with fileutils.
2633 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T.
2634
2635 * po/LINGUAS: Add pt_BR.
2636 * po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c,
2637 src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c,
2638 lib/timevar.c.
2639 Use src/parse-gram.y instead of src/parse-gram.c, as the gettext
2640 manual recommends.
2641 Similarly, use src/scan-gram.l instead of src/scan-gram.c.
2642
2643 * src/complain.c (strerror_r): Remove decl; not needed.
2644 (strerror): Use same pattern as ../lib/error.c.
2645
2646 * src/files.c, src/files.h (compute_header_macro): Remove; unused.
2647
2648 * src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int.
2649
2650 * src/main.c (main): Cast result of bindtextdomain and textdomain
2651 to void, to avoid a GCC warning when --disable-nls is in effect.
2652
2653 * src/scan-gram.l: Use strings rather than escapes when possible,
2654 to minimize the number of warnings from xgettext.
2655 (handle_action_dollar, handle_action_at): Don't use isdigit,
2656 as it mishandles negative chars and it may not work as expected
2657 outside the C locale.
2658
2659 * src/symtab.c (symbol_get): Don't cast LHS of an assignment;
2660 this is a GCC extension and is not portable to other compilers.
2661
2662 * src/system.h (alloca): Use same pattern as ../lib/error.c.
2663 Do not include <ctype.h>; no longer needed.
2664 Do not include <malloc.h>; no longer needed (and generates
2665 warnings on OpenBSD 3.0).
2666
2667 * tests/cxx-type.at (yylex): Do not pass signed char to isupper;
2668 it's not portable.
2669
2670 * tests/regression.at: Do not use 'cc -c input.c -o input';
2671 Sun C rejects this. Instead, use 'cc -c input.c -o input.o'.
2672
2673 * tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero
2674 exit status as failure, not just exit status 1. Sun C exits
2675 with status 2 sometimes.
2676
2677 * tests/torture.at (AT_INCREASE_DATA_SIZE): New macro.
2678 Use it for the two large tests.
2679
c8f002c7
AD
26802002-08-02 Akim Demaille <akim@epita.fr>
2681
2682 * src/conflicts.c (conflicts_output): Don't output rules never
2683 reduced here, since anyway that computation doesn't work.
2684 * src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
2685 (rule_useless_p, rule_never_reduced_p): New.
2686 (grammar_rules_partial_print): Use a filter instead of a range.
2687 Display the title only if needed.
2688 (grammar_rules_print): Adjust.
2689 (grammar_rules_never_reduced_report): New.
2690 * src/tables.c (action_row): Move the computation of rules never
2691 reduced to...
2692 (token_actions): here.
2693 * src/main.c (main): Make the parser before making the report, so
2694 that rules never reduced are computed.
2695 Call grammar_rules_never_reduced_report.
2696 * src/print.c (print_results): Report rules never reduced.
2697 * tests/conflicts.at, tests/reduce.at: Adjust.
2698
cd08e51e
AD
26992002-08-01 Akim Demaille <akim@epita.fr>
2700
2701 Instead of attaching lookaheads and duplicating the rules being
2702 reduced by a state, attach the lookaheads to the reductions.
2703
2704 * src/state.h (state_t): Remove the `lookaheads',
2705 `lookaheads_rule' member.
2706 (reductions_t): Add a `lookaheads' member.
2707 Use a regular array for the `rules'.
2708 * src/state.c (reductions_new): Initialize the lookaheads member
2709 to 0.
2710 (state_rule_lookaheads_print): Adjust.
2711 * src/state.h, src/state.c (state_reductions_find): New.
2712 * src/conflicts.c (resolve_sr_conflict, set_conflicts)
2713 (count_rr_conflicts): Adjust.
2714 * src/lalr.c (LArule): Remove.
2715 (add_lookback_edge): Adjust.
2716 (state_lookaheads_count): New.
2717 (states_lookaheads_initialize): Merge into...
2718 (initialize_LA): this.
2719 (lalr_free): Adjust.
2720 * src/main.c (main): Don't free nullable and derives too early: it
2721 is used by --verbose.
2722 * src/print.c, src/print_graph.c, src/tables.c: Adjust.
2723
bb0027a9
AD
27242002-08-01 Akim Demaille <akim@epita.fr>
2725
2726 * src/derives.h, src/derives.c (derives): A `rule_t***' instead of
2727 `rule_number_t**'.
2728 (set_derives, free_derives): Rename as...
2729 (derives_compute, derives_free): this.
2730 Adjust all dependencies.
2731 * src/nullable.c (set_nullable, free_nullable): Rename as...
2732 (nullable_compute, nullable_free): these.
2733 (rule_list_t): Store rule_t *, not rule_number_t.
2734 * src/state.c (state_rule_lookaheads_print): Directly compare rule
2735 pointers, instead of their numbers.
2736 * src/main.c (main): Call nullable_free, and derives_free earlier,
2737 as they were lo longer used.
2738
3325ddc4
AD
27392002-08-01 Akim Demaille <akim@epita.fr>
2740
2741 * lib/timevar.c (get_time): Include children time.
2742 * src/lalr.h (LA, LArule): Don't export them: used with the
2743 state_t.
2744 * src/lalr.c (LA, LArule): Static.
2745 * src/lalr.h, src/lalr.c (lalr_free): New.
2746 * src/main.c (main): Call it.
2747 * src/tables.c (pack_vector): Check whether loc is >= to the
2748 table_size, not >.
2749 (pack_tables): Don't free froms, tos, conflict_tos, and pos...
2750 (tables_generate): do it, since that's also it which allocates
2751 them.
2752 Don't free LA and LArule, main does.
2753
c6f1a33c
AD
27542002-07-31 Akim Demaille <akim@epita.fr>
2755
2756 Separate parser tables computation and output.
2757
2758 * src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
2759 (conflict_list, conflict_list_cnt, table, check, table_ninf)
2760 (yydefgoto, yydefact, high): Move to...
2761 * src/tables.h, src/tables.c: here.
2762 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
2763 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
2764 (symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
2765 (froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
2766 (ACTION_MIN, actrow, order, nentries, pos, conflrow)
2767 (conflict_list_free, table_size, lowzero, table_grow, conflict_row)
2768 (action_row, save_row, token_actions, save_column, default_goto)
2769 (goto_actions, sort_actions, matching_state, pack_vector)
2770 (table_ninf_remap, pack_table, prepare_actions): Move to...
2771 * src/tables.c: here.
2772 * src/tables.h, src/tables.c(tables_generate, tables_free): New.
2773 * src/output.c (token_actions, output_base, output_conflicts)
2774 (output_check): Merge into...
2775 (prepare_actions): this.
2776 (actions_output): Rename as...
2777 (user_actions_output): this.
2778 * src/main.c (main): Call tables_generate and tables_free.
2779
1509d42f
AD
27802002-07-31 Akim Demaille <akim@epita.fr>
2781
2782 Steal GCC's --time-report support.
2783
2784 * lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
2785 stolen/adjusted from GCC.
2786 * m4/stage.m4: Remove time related checks.
2787 * m4/timevar.m4: New.
2788 * configure.in: Adjust.
2789 * src/system.h: Adjust to using timevar.h.
2790 * src/getargs.h, src/getargs.c: Support trace_time for
2791 --trace=time.
2792 * src/main.c (stage): Remove.
2793 (main): Replace `stage' invocations with timevar calls.
2794 * src/output.c: Insert pertinent timevar calls.
2795
273a74fa
AD
27962002-07-31 Akim Demaille <akim@epita.fr>
2797
2798 Let --trace have arguments.
2799
2800 * src/getargs.h (enum trace_e): New.
2801 * src/getargs.c (trace_args, trace_types, trace_argmatch): New.
2802 (long_options, short_options): --trace/-T takes an optional
2803 argument.
2804 Change all the uses of trace_flag to reflect the new flags.
2805 * tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.
2806
2807 Strengthen `stage' portability.
2808
2809 * m4/stage.m4 (BISON_PREREQ_STAGE): New.
2810 * configure.in: Use it.
2811 Don't check for malloc.h and sys/times.h.
2812 * src/system.h: Include them when appropriate.
2813 * src/main.c (stage): Compile only when mallinfo, struct mallinfo,
2814 times and struct tms are available.
2815
217598da
AD
28162002-07-30 Akim Demaille <akim@epita.fr>
2817
2818 In verbose parse error message, don't report `error' as an
2819 expected token.
2820 * tests/actions.at (Printers and Destructors): Adjust.
2821 * tests/calc.at (Calculator $1): Adjust.
2822 * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
2823 error message, do not report the parser accepts the error token in
2824 that state.
2825
52489d44
AD
28262002-07-30 Akim Demaille <akim@epita.fr>
2827
2828 Normalize conflict related messages.
2829
2830 * src/complain.h, src/complain.c (warn, complain): New.
2831 * src/conflicts.c (conflicts_print): Use them.
2832 (conflict_report_yacc): New, extracted from...
2833 (conflicts_print): here.
2834 * tests/conflicts.at, tests/existing.at: Adjust.
2835
e8832397
AD
28362002-07-30 Akim Demaille <akim@epita.fr>
2837
2838 Report rules which are never reduced by the parser: those hidden
2839 by conflicts.
2840
2841 * src/LR0.c (save_reductions): Don't make the final state too
2842 different: save its reduction (accept) instead of having a state
2843 without any action (no shift or goto, no reduce).
2844 Note: the final state is now a ``regular'' state, i.e., the
2845 parsers now contain `reduce 0' as default reduction.
2846 Nevertheless, since they decide to `accept' when yystate =
2847 final_state, they still will not reduce rule 0.
2848 * src/print.c (print_actions, print_reduction): Adjust.
2849 * src/output.c (action_row): Track reduced rules.
2850 (token_actions): Report rules never reduced.
2851 * tests/conflicts.at, tests/regression.at: Adjust.
2852
caf23d24
AD
28532002-07-30 Akim Demaille <akim@epita.fr>
2854
2855 `stage' was accidently included in a previous patch.
2856 Initiate its autoconfiscation.
2857
2858 * configure.in: Look for malloc.h and sys/times.h.
2859 * src/main.c (stage): Adjust.
2860 Report only when trace_flag.
2861
640748ee
AD
28622002-07-29 Akim Demaille <akim@epita.fr>
2863
2864 * src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
2865 state_number_t.
2866 (errs_t): symbol_t*, not symbol_number_t.
2867 (reductions_t): rule_t*, not rule_number_t.
2868 (FOR_EACH_SHIFT): New.
2869 * src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
2870 * src/print.c, src/print_graph.c: Adjust.
2871
88bce5a2
AD
28722002-07-29 Akim Demaille <akim@epita.fr>
2873
2874 Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.
2875
2876 * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
2877 (endtoken, accept): these.
2878 * src/reader.c (reader): Set endtoken's default tag to "$end".
2879 Set undeftoken's tag to "$undefined" instead of "$undefined.".
2880 * doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
2881 Adjust.
2882
1bfb97db
AD
28832002-07-29 Akim Demaille <akim@epita.fr>
2884
2885 * src/reduce.c (reduce_grammar): When the language is empty,
2886 complain about the start symbol, not the axiom.
2887 Use its location.
2888 * tests/reduce.at (Empty Language): New.
2889
fc5734fe
AD
28902002-07-26 Akim Demaille <akim@epita.fr>
2891
2892 * src/reader.h, src/reader.c (gram_error): ... can't get
2893 yycontrol without making too strong assumptions on the parser
2894 itself.
2895 * src/output.c (prepare_tokens): Use the real 0th value of
2896 token_translations instead of `0'.
2897 * src/parse-gram.y (yyerror): Don't rely on yycontrol being
2898 visible here.
2899 * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
2900 for the time being: %locations ought to provide it to yyerror.
2901
3650b4b8
AD
29022002-07-25 Akim Demaille <akim@epita.fr>
2903
2904 * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
2905 * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
2906 * tests/regression.at (Web2c Actions): Adjust.
2907
4b3d3a8e
AD
29082002-07-25 Akim Demaille <akim@epita.fr>
2909
2910 Stop storing rules from 1 to nrules + 1.
2911
2912 * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
2913 * src/nullable.c, src/output.c, src/print.c, src/reader.c
2914 * src/reduce.c: Allocate and free from &rules[0], not &rules[1].
2915 Iterate from 0 to nrules.
2916 Use rule_number_as_item_number and item_number_as_rule_number.
2917 Adjust to `derive' now containing possibly 0.
2918 * src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
2919 Handle the `- 1' part in rule numbers from/to item numbers.
2920 * src/conflicts.c (log_resolution): Fix the message which reversed
2921 shift and reduce.
2922 * src/output.c (action_row): Initialize default_rule to -1.
2923 (token_actions): Adjust.
2924 * tests/sets.at (Nullable, Firsts): Fix the previously bogus
2925 expected output.
2926 * tests/conflicts.at (Resolved SR Conflicts): Likewise.
2927
4a2a22f4
AD
29282002-07-25 Akim Demaille <akim@epita.fr>
2929
2930 * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
2931 (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
2932 (b4_c_knr_arg_decl): New.
2933 * data/yacc.c: Use it to define yysymprint, yydestruct, and
2934 yyreport_parse_error.
2935
b8df3223
AD
29362002-07-25 Akim Demaille <akim@epita.fr>
2937
2938 * data/yacc.c (yyreport_parse_error): New, extracted from...
2939 (yyparse): here.
2940 (yydestruct, yysymprint): Move above yyparse.
2941 Be K&R compliant.
2942
a762e609
AD
29432002-07-25 Akim Demaille <akim@epita.fr>
2944
2945 * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
2946 replace...
2947 (b4_sint_type, b4_uint_type): these.
2948 * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
2949 * tests/regression.at (Web2c Actions): Adjust.
2950
12b0043a
AD
29512002-07-25 Akim Demaille <akim@epita.fr>
2952
2953 * src/gram.h (TIEM_NUMBER_MAX): New.
2954 (item_number_of_rule_number, rule_number_of_item_number): Rename
2955 as...
2956 (rule_number_as_item_number, item_number_as_rule_number): these.
2957 Adjust dependencies.
2958 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
2959 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
2960 (symbol_number_to_vector_number): New.
2961 (order): Of vector_number_t* type.
2962 (base_t, BASE_MAX, BASE_MIN): New.
2963 (froms, tos, width, pos, check): Of base_t type.
2964 (action_number_t, ACTION_MIN, ACTION_MAX): New.
2965 (actrow): Of action_number_t type.
2966 (conflrow): Of unsigned int type.
2967 (table_ninf, base_ninf): New.
2968 (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
2969 (muscle_insert_int_table, muscle_insert_base_table)
2970 (muscle_insert_rule_number_table): New.
2971 (prepare_tokens): Output `toknum' as int_table.
2972 (action_row): Returns a rule_number_t.
2973 Use ACTION_MIN, not SHRT_MIN.
2974 (token_actions): yydefact is rule_number_t*.
2975 (table_ninf_remap): New.
2976 (pack_table): Use it for `base' and `table'.
2977 * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
2978 replaced with...
2979 (YYPACT_NINF, YYTABLE_NINF): these.
2980 (yypact, yytable): Compute their types instead of hard-coded
2981 `short'.
2982 * tests/regression.at (Web2c Actions): Adjust.
2983
5dde258a
AD
29842002-07-19 Akim Demaille <akim@epita.fr>
2985
2986 * src/scan-gram.l (id): Can start with an underscore.
2987
a945ec39
AD
29882002-07-16 Akim Demaille <akim@epita.fr>
2989
2990 * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
2991 Adjust all former `associativity' dependencies.
2992 * src/symtab.c (symbol_new): Default associativity is `undef', not
2993 `right'.
2994 (symbol_check_alias_consistence): Adjust.
2995
fae437e8
AD
29962002-07-09 Akim Demaille <akim@epita.fr>
2997
2998 * doc/bison.texinfo: Properly set the ``header'' part.
2999 Use @dircategory ``GNU programming tools'' as per Texinfo's
3000 documentation.
3001 Use @copying.
3002
1a715ef2
AD
30032002-07-09 Akim Demaille <akim@epita.fr>
3004
3005 * lib/quotearg.h: Protect against multiple inclusions.
3006 * src/location.h (location_t): Add a `file' member.
3007 (LOCATION_RESET, LOCATION_PRINT): Adjust.
3008 * src/complain.c (warn_at, complain_at, fatal_at): Drop
3009 `error_one_per_line' support.
3010
a5d50994
AD
30112002-07-09 Akim Demaille <akim@epita.fr>
3012
3013 * src/complain.h, src/complain.c (warn, complain): Remove, unused.
3014 * src/reader.c (lineno): Remove.
3015 Adjust all dependencies.
3016 (get_merge_function): Take a location and use complain_at.
3017 * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
3018 * tests/regression.at (Invalid inputs, Mixing %token styles):
3019 Adjust.
3020
b275314e
AD
30212002-07-09 Akim Demaille <akim@epita.fr>
3022
3023 * src/parse-gram.y (rules_or_grammar_declaration): Add an error
3024 recovery rule, and forbid extensions when --yacc.
3025 (gram_error): Use complain_at.
3026 * src/reader.c (reader): Exit if there were parse errors.
3027
865b9df1
AD
30282002-07-09 Akim Demaille <akim@epita.fr>
3029
3030 * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
3031 (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
3032 Reported by R Blake <blakers@mac.com>.
3033
c76e14da
AD
30342002-07-09 Akim Demaille <akim@epita.fr>
3035
3036 * data/yacc.c: Output the copyright notive in the header.
3037
7db2ed2d
AD
30382002-07-03 Akim Demaille <akim@epita.fr>
3039
3040 * src/output.c (froms, tos): Are state_number_t.
3041 (save_column): sp, sp1, and sp2 are state_number_t.
3042 (prepare): Rename `final' as `final_state_number', `nnts' as
3043 `nterms_number', `nrules' as `rules_number', `nstates' as
3044 `states_number', and `ntokens' as `tokens_number'. Remove `nsym',
3045 unused.
3046 * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
3047 * data/lalr1.cc (nsym_): Remove, unused.
3048
e68e0410
AD
30492002-07-03 Akim Demaille <akim@epita.fr>
3050
3051 * src/lalr.h, src/lalr.c (goto_number_t): New.
3052 * src/lalr.c (goto_list_t): New.
3053 Propagate them.
3054 * src/nullable.c (rule_list_t): New.
3055 Propagate.
3056 * src/types.h: Remove.
3057
e1a4f3a4
AD
30582002-07-03 Akim Demaille <akim@epita.fr>
3059
3060 * src/closure.c (print_fderives): Use rule_rhs_print.
3061 * src/derives.c (print_derives): Use rule_rhs_print.
3062 (rule_list_t): New, replaces `shorts'.
3063 (set_derives): Add comments.
3064 * tests/sets.at (Nullable, Firsts): Adjust.
3065
536545f3
AD
30662002-07-03 Akim Demaille <akim@epita.fr>
3067
3068 * src/output.c (prepare_actions): Free `tally' and `width'.
3069 (prepare_actions): Allocate and free `order'.
3070 * src/symtab.c (symbols_free): Free `symbols'.
3071 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
3072 * src/output.c (m4_invoke): Move to...
3073 * src/scan-skel.l: here.
3074 (<<EOF>>): Close yyout, and free its name.
3075
8b752b00
AD
30762002-07-03 Akim Demaille <akim@epita.fr>
3077
3078 Fix some memory leaks, and fix a bug: state 0 was examined twice.
3079
3080 * src/LR0.c (new_state): Merge into...
3081 (state_list_append): this.
3082 (new_states): Merge into...
3083 (generate_states): here.
3084 (set_states): Don't ensure a proper `errs' state member here, do it...
3085 * src/conflicts.c (conflicts_solve): here.
3086 * src/state.h, src/state.c: Comment changes.
3087 (state_t): Rename member `shifts' as `transitions'.
3088 Adjust all dependencies.
3089 (errs_new): For consistency, also take the values as argument.
3090 (errs_dup): Remove.
3091 (state_errs_set): New.
3092 (state_reductions_set, state_transitions_set): Assert that no
3093 previous value was assigned.
3094 (state_free): New.
3095 (states_free): Use it.
3096 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
3097 temporary storage: use `errs' and `nerrs' as elsewhere.
3098 (set_conflicts): Allocate and free this `errs'.
3099
613f5e1a
AD
31002002-07-02 Akim Demaille <akim@epita.fr>
3101
3102 * lib/libiberty.h: New.
3103 * lib: Update the bitset implementation from upstream.
3104 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
3105 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
3106 * src/main.c: Adjust bitset stats calls.
3107
26e0cadc
PE
31082002-07-01 Paul Eggert <eggert@twinsun.com>
3109
3110 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
3111 char, so that negative chars don't collide with $.
3112
1154cced
AD
31132002-06-30 Akim Demaille <akim@epita.fr>
3114
3115 Have the GLR tests be `warning' checked, and fix the warnings.
3116
3117 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
3118 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
3119 (yyremoveDeletes): `yyi' and `yyj' are size_t.
3120 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
3121 (yyaddDeferredAction): static.
3122 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
3123 (yyreportParseError): yyprefix is const.
3124 yytokenp is used only when verbose.
3125 (yy__GNUC__): Replace with __GNUC__.
3126 (yypdumpstack): yyi is size_t.
3127 (yypreference): Un-yy local variables and arguments, to avoid
3128 clashes with `yyr1'. Anyway, we are not in the user name space.
3129 (yytname_size): be an int, as is compared with ints.
3130 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
3131 Use them.
3132 * tests/cxx-gram.at: Use quotation to protect $1.
3133 Use AT_COMPILE to enable warnings hunts.
3134 Prototype yylex and yyerror.
3135 `Use' argc.
3136 Include `string.h', not `strings.h'.
3137 Produce and prototype stmtMerge only when used.
3138 yylex takes a location.
3139
97650f4e
AD
31402002-06-30 Akim Demaille <akim@epita.fr>
3141
3142 We spend a lot of time in quotearg, in particular when --verbose.
3143
3144 * src/symtab.c (symbol_get): Store a quoted version of the key.
3145 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
3146 Adjust all callers.
3147
d2576365
AD
31482002-06-30 Akim Demaille <akim@epita.fr>
3149
3150 * src/state.h (reductions_t): Rename member `nreds' as num.
3151 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
3152 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
3153
ccaf65bc
AD
31542002-06-30 Akim Demaille <akim@epita.fr>
3155
3156 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
3157 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
3158 (shifts_to): Rename as...
3159 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
3160 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
3161 (TRANSITION_IS_DISABLED, transitions_to): these.
3162
87675353
AD
31632002-06-30 Akim Demaille <akim@epita.fr>
3164
3165 * src/print.c (print_shifts, print_gotos): Merge into...
3166 (print_transitions): this.
3167 (print_transitions, print_errs, print_reductions): Align the
3168 lookaheads columns.
3169 (print_core, print_transitions, print_errs, print_state,
3170 print_grammar): Output empty lines separator before, not after.
3171 (state_default_rule_compute): Rename as...
3172 (state_default_rule): this.
3173 * tests/conflicts.at (Defaulted Conflicted Reduction),
3174 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
3175 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
3176
ce4ccb4b
AD
31772002-06-30 Akim Demaille <akim@epita.fr>
3178
3179 Display items as we display rules.
3180
3181 * src/gram.h, src/gram.c (rule_lhs_print): New.
3182 * src/gram.c (grammar_rules_partial_print): Use it.
3183 * src/print.c (print_core): Likewise.
3184 * tests/conflicts.at (Defaulted Conflicted Reduction),
3185 (Unresolved SR Conflicts): Adjust.
3186 (Unresolved SR Conflicts): Adjust and rename as...
3187 (Resolved SR Conflicts): this, as was meant.
3188 * tests/regression.at (Web2c Report): Adjust.
3189
bc933ef1
AD
31902002-06-30 Akim Demaille <akim@epita.fr>
3191
3192 * src/print.c (state_default_rule_compute): New, extracted from...
3193 (print_reductions): here.
3194 Pessimize, but clarify the code.
3195 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
3196
53d4308d
AD
31972002-06-30 Akim Demaille <akim@epita.fr>
3198
3199 * src/output.c (action_row): Let default_rule be always a rule
3200 number.
3201
574fb2d5
AD
32022002-06-30 Akim Demaille <akim@epita.fr>
3203
3204 * src/closure.c (print_firsts, print_fderives, closure):
3205 Use BITSET_EXECUTE.
3206 * src/lalr.c (lookaheads_print): Likewise.
3207 * src/state.c (state_rule_lookaheads_print): Likewise.
3208 * src/print_graph.c (print_core): Likewise.
3209 * src/print.c (print_reductions): Likewise.
3210 * src/output.c (action_row): Likewise.
3211 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
3212
05811fd7
AD
32132002-06-30 Akim Demaille <akim@epita.fr>
3214
3215 * src/print_graph.c: Use report_flag.
3216
0e4d5753
AD
32172002-06-30 Akim Demaille <akim@epita.fr>
3218
3219 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
3220 to...
3221 * src/relation.h, src/relation.c (traverse, relation_digraph)
3222 (relation_print, relation_transpose): New.
3223
24c7d800
AD
32242002-06-30 Akim Demaille <akim@epita.fr>
3225
3226 * src/state.h, src/state.c (shifts_to): New.
3227 * src/lalr.c (build_relations): Use it.
3228
9222837b
AD
32292002-06-30 Akim Demaille <akim@epita.fr>
3230
3231 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
3232 (item_number_of_rule_number, rule_number_of_item_number): New.
3233 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
3234 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
3235 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
3236 Propagate their use.
3237 Much remains to be done, in particular wrt `shorts' from types.h.
3238
260008e5
AD
32392002-06-30 Akim Demaille <akim@epita.fr>
3240
3241 * src/symtab.c (symbol_new): Initialize the `printer' member.
3242
8a731ca8
AD
32432002-06-30 Akim Demaille <akim@epita.fr>
3244
3245 * src/LR0.c (save_reductions): Remove, replaced by...
3246 * src/state.h, src/state.c (state_reductions_set): New.
3247 (reductions, errs): Rename as...
3248 (reductions_t, errs_t): these.
3249 Adjust all dependencies.
3250
32e1e0a4
AD
32512002-06-30 Akim Demaille <akim@epita.fr>
3252
3253 * src/LR0.c (state_list_t, state_list_append): New.
3254 (first_state, last_state): Now symbol_list_t.
3255 (this_state): Remove.
3256 (new_itemsets, append_states, save_reductions): Take a state_t as
3257 argument.
3258 (set_states, generate_states): Adjust.
3259 (save_shifts): Remove, replaced by...
3260 * src/state.h, src/state.c (state_shifts_set): New.
3261 (shifts): Rename as...
3262 (shifts_t): this.
3263 Adjust all dependencies.
3264 * src/state.h (state_t): Remove the `next' member.
3265
e5fb6710
AD
32662002-06-30 Akim Demaille <akim@epita.fr>
3267
3268 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
3269 escaped in slot 0.
3270
c7ca99d4
AD
32712002-06-30 Akim Demaille <akim@epita.fr>
3272
3273 Use hash.h for the state hash table.
3274
3275 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
3276 (allocate_storage): Use state_hash_new.
3277 (free_storage): Use state_hash_free.
3278 (new_state, get_state): Adjust.
3279 * src/lalr.h, src/lalr.c (states): Move to...
3280 * src/states.h (state_t): Remove the `link' member, no longer
3281 used.
3282 * src/states.h, src/states.c: here.
3283 (state_hash_new, state_hash_free, state_hash_lookup)
3284 (state_hash_insert, states_free): New.
3285 * src/states.c (state_table, state_compare, state_hash): New.
3286 * src/output.c (output_actions): Do not free states now, since we
3287 still need to know the final_state number in `prepare', called
3288 afterwards. Do it...
3289 * src/main.c (main): here: call states_free after `output'.
3290
df0e7316
AD
32912002-06-30 Akim Demaille <akim@epita.fr>
3292
3293 * src/state.h, src/state.c (state_new): New, extracted from...
3294 * src/LR0.c (new_state): here.
3295 * src/state.h (STATE_ALLOC): Move to...
3296 * src/state.c: here.
3297 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
3298 * src/state.h, src/state.c: here.
3299
39f41916
AD
33002002-06-30 Akim Demaille <akim@epita.fr>
3301
3302 * src/reader.c (gensym): Rename as...
3303 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
3304 (getsym): Rename as...
3305 (symbol_get): this.
3306
d57650a5
AD
33072002-06-30 Akim Demaille <akim@epita.fr>
3308
3309 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
3310 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
3311 * src/output.c, src/print.c, src/print_graph.c: Propagate.
3312 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
3313
5a08f1ce
AD
33142002-06-30 Akim Demaille <akim@epita.fr>
3315
3316 Make the test suite pass with warnings checked.
3317
3318 * tests/actions.at (Printers and Destructors): Improve.
3319 Avoid unsigned vs. signed issues.
3320 * tests/calc.at: Don't exercise the scanner here, do it...
3321 * tests/input.at (Torturing the Scanner): here.
3322
720623af
PH
33232002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3324
88e7e941 3325 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
720623af
PH
3326 reorganize first lines parallel to yacc.c.
3327
fb8135fa
AD
33282002-06-28 Akim Demaille <akim@epita.fr>
3329
3330 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
3331 (b4_token_enum, b4_token_defines): New, factored from...
3332 * data/lalr1.cc, data/yacc.c, glr.c: here.
3333
41442480
AD
33342002-06-28 Akim Demaille <akim@epita.fr>
3335
3336 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
3337 unused variables.
3338 * src/output.c (merger_output): static.
3339
e0e5bf84
AD
33402002-06-28 Akim Demaille <akim@epita.fr>
3341
3342 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
3343 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
3344 pacify GCC.
3345 * src/output.c (save_row): Initialize all the variables to pacify GCC.
e0e5bf84 3346
676385e2
PH
33472002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3348
3349 Accumulated changelog for new GLR parsing features.
3350
6a254321 3351 * src/conflicts.c (count_total_conflicts): Change name to
676385e2
PH
3352 conflicts_total_count.
3353 * src/conflicts.h: Ditto.
3354 * src/output.c (token_actions): Use the new name.
3355 (output_conflicts): Change conflp => conflict_list_heads, and
3356 confl => conflict_list for better readability.
3357 * data/glr.c: Use the new names.
3358 * NEWS: Add self to GLR announcement.
e0e5bf84 3359
676385e2
PH
3360 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
3361
3362 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
3363 Akim Demaille.
3364
3365 * data/bison.glr: Change name to glr.c
3366 * data/glr.c: Renamed from bison.glr.
3367 * data/Makefile.am: Add glr.c
e0e5bf84
AD
3368
3369 * src/getargs.c:
3370
676385e2
PH
3371 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
3372 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
e0e5bf84 3373
676385e2
PH
3374 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3375
3376 * data/bison.glr: Be sure to restore the
3377 current #line when returning to the skeleton contents after having
3378 exposed the input file's #line.
3379
3380 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3381
3382 * data/bison.glr: Bring up to date with changes to bison.simple.
3383
3384 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3385
3386 * data/bison.glr: Correct definitions that use b4_prefix.
3387 Various reformatting.
3388 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
3389 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
3390 yytokenp argument; now part of stack.
3391 (yychar): Define to behave as documented.
3392 (yyclearin): Ditto.
e0e5bf84 3393
676385e2
PH
3394 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
3395
3396 * src/reader.h: Add declaration for free_merger_functions.
3397
3398 * src/reader.c (merge_functions): New variable.
3399 (get_merge_function): New function.
3400 (free_merger_functions): New function.
3401 (readgram): Check for %prec that is not followed by a symbol.
3402 Handle %dprec and %merge declarations.
3403 (packgram): Initialize dprec and merger fields in rules array.
3404
3405 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
3406 conflict_list_cnt, conflict_list_free): New variables.
3407 (table_grow): Also grow conflict_table.
e0e5bf84 3408 (prepare_rules): Output dprec and merger tables.
676385e2 3409 (conflict_row): New function.
e0e5bf84 3410 (action_row): Output conflict lists for GLR parser. Don't use
676385e2
PH
3411 default reduction in conflicted states for GLR parser so that there
3412 are spaces for the conflict lists.
3413 (save_row): Also save conflict information.
3414 (token_actions): Allocate conflict list.
3415 (merger_output): New function.
3416 (pack_vector): Pack conflict table, too.
3417 (output_conflicts): New function to output yyconflp and yyconfl.
3418 (output_check): Allocate conflict_tos.
3419 (output_actions): Output conflict tables, also.
3420 (output_skeleton): Output b4_mergers definition.
3421 (prepare): Output b4_max_rhs_length definition.
3422 Use 'bison.glr' as default skeleton for GLR parsers.
3423
3424 * src/gram.c (glr_parser): New flag.
3425 (grammar_free): Call free_merger_functions.
3426
3427 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
3428 all pairs of conflicting reductions, rather than just all tokens
3429 causing conflicts. Needed to size conflict tables.
e0e5bf84 3430 (conflicts_output): Modify call to count_rr_conflicts for new
676385e2
PH
3431 interface.
3432 (conflicts_print): Ditto.
3433 (count_total_conflicts): New function.
3434
3435 * src/reader.h (merger_list): New type.
3436 (merge_functions): New variable.
3437
3438 * src/lex.h (tok_dprec, tok_merge): New token types.
3439
3440 * src/gram.h (rule_s): Add dprec and merger fields.
3441 (glr_parser): New flag.
3442
3443 * src/conflicts.h (count_total_conflicts): New function.
3444
3445 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
3446
3447 * doc/bison.texinfo (Generalized LR Parsing): New section.
3448 (GLR Parsers): New section.
3449 (Language and Grammar): Mention GLR parsing.
3450 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
3451 Correct typo ("tge" -> "the").
3452
3453 * data/bison.glr: New skeleton for GLR parsing.
3454
3455 * tests/cxx-gram.at: New tests for GLR parsing.
3456
3457 * tests/testsuite.at: Include cxx-gram.at.
3458
3459 * tests/Makefile.am: Add cxx-gram.at.
e0e5bf84 3460
676385e2
PH
3461 * src/parse-gram.y:
3462
3463 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
3464
3465 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
e0e5bf84 3466
b5480d74 34672002-06-27 Akim Demaille <akim@epita.fr>
e2aaf4c4
AD
3468
3469 * src/options.h, src/options.c: Remove.
3470 * src/getargs.c (short_options, long_options): New.
3471
60491a94
AD
34722002-06-27 Akim Demaille <akim@epita.fr>
3473
3474 * data/bison.simple, data/bison.c++: Rename as...
3475 * data/yacc.c, data/lalr1.cc: these.
3476 * doc/bison.texinfo (Environment Variables): Remove.
3477
9be0c25b
AD
34782002-06-25 Raja R Harinath <harinath@cs.umn.edu>
3479
3480 * src/getargs.c (report_argmatch): Initialize strtok().
3481
1ae72863
AD
34822002-06-20 Akim Demaille <akim@epita.fr>
3483
3484 * data/bison.simple (b4_symbol_actions): New, replaces...
3485 (b4_symbol_destructor, b4_symbol_printer): these.
3486 (yysymprint): Be sure to call YYPRINT only for tokens, and using
3487 user token numbers.
3488
87542d29
AD
34892002-06-20 Akim Demaille <akim@epita.fr>
3490
3491 * data/bison.simple (yydestructor): Rename as...
3492 (yydestruct): this.
3493
1a31ed21
AD
34942002-06-20 Akim Demaille <akim@epita.fr>
3495
3496 * src/symtab.h, src/symtab.c (symbol_type_set)
3497 (symbol_destructor_set, symbol_precedence_set): The location is
3498 the last argument.
3499 Adjust all callers.
3500
e776192e
AD
35012002-06-20 Akim Demaille <akim@epita.fr>
3502
3503 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
3504 internals.
3505 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
3506 Takes a location.
3507 * src/symtab.h, src/symtab.c (symbol_class_set)
3508 (symbol_user_token_number_set): Likewise.
3509 Adjust all callers.
3510 Promote complain_at.
3511 * tests/input.at (Type Clashes): Adjust.
3512
5c1180b3
AD
35132002-06-20 Akim Demaille <akim@epita.fr>
3514
3515 * data/bison.simple (YYLEX): Fix the declaration when
3516 %pure-parser.
3517
e3170060
AD
35182002-06-20 Akim Demaille <akim@epita.fr>
3519
3520 * data/bison.simple (yysymprint): Don't print the token number,
3521 just its name.
3522 * tests/actions.at (Destructors): Rename as...
3523 (Printers and Destructors): this.
3524 Also exercise %printer.
3525
253862fd
AD
35262002-06-20 Akim Demaille <akim@epita.fr>
3527
3528 * data/bison.simple (YYDSYMPRINT): New.
3529 Use it to remove many of the #if YYDEBUG/if (yydebug).
3530
366eea36
AD
35312002-06-20 Akim Demaille <akim@epita.fr>
3532
3533 * src/symtab.h, src/symtab.c (symbol_t): printer and
3534 printer_location are new members.
3535 (symbol_printer_set): New.
3536 * src/parse-gram.y (PERCENT_PRINTER): New token.
3537 Handle its associated rule.
3538 * src/scan-gram.l: Adjust.
3539 (handle_destructor_at, handle_destructor_dollar): Rename as...
3540 (handle_symbol_code_at, handle_symbol_code_dollar): these.
3541 * src/output.c (symbol_printers_output): New.
3542 (output_skeleton): Call it.
3543 * data/bison.simple (yysymprint): New. Cannot be named yyprint
3544 since there are already many grammar files with a user `yyprint'.
3545 Replace the calls to YYPRINT to calls to yysymprint.
3546 * tests/calc.at: Adjust.
3547 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
3548 taking advantage of parser very internal details (stack size!).
3549
4f25ebb0
AD
35502002-06-20 Akim Demaille <akim@epita.fr>
3551
3552 * src/scan-gram.l: Complete the scanner with the missing patterns
3553 to pacify Flex.
3554 Use `quote' and `symbol_tag_get' where appropriate.
3555
93b68a0e
AD
35562002-06-19 Akim Demaille <akim@epita.fr>
3557
3558 * tests/actions.at (Destructors): Augment to test locations.
3559 * data/bison.simple (yydestructor): Pass it the current location
3560 if locations are enabled.
3561 Prototype only when __STDC__ or C++.
3562 Change the argument names to move into the yy name space: there is
3563 user code here.
3564
58612f1d
AD
35652002-06-19 Akim Demaille <akim@epita.fr>
3566
74310291
AD
3567 * data/bison.simple (b4_pure_if): New.
3568 Use it instead of #ifdef YYPURE.
3569
35702002-06-19 Akim Demaille <akim@epita.fr>
3571
3572 * data/bison.simple (b4_location_if): New.
58612f1d
AD
3573 Use it instead of #ifdef YYLSP_NEEDED.
3574
f25bfb75
AD
35752002-06-19 Akim Demaille <akim@epita.fr>
3576
3577 Prepare @$ in %destructor, but currently don't bind it in the
3578 skeleton, as %location use is not cleaned up yet.
3579
3580 * src/scan-gram.l (handle_dollar, handle_destructor_at)
3581 (handle_action_at): New.
3582 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
3583 a braced_code_t and a location as additional arguments.
3584 (handle_destructor_dollar): Instead of requiring `b4_eval', just
3585 unquote one when outputting `b4_dollar_dollar'.
3586 Adjust callers.
3587 * data/bison.simple (b4_eval): Remove.
3588 (b4_symbol_destructor): Adjust.
3589 * tests/input.at (Invalid @n): Adjust.
3590
c732d2c6
AD
35912002-06-19 Zack Weinberg <zack@codesourcery.com>
3592
3593 * doc/bison.texinfo: Document ability to have multiple
3594 prologue sections.
3595
8c165d89
AD
35962002-06-18 Akim Demaille <akim@epita.fr>
3597
3598 * src/files.c (compute_base_names): When computing the output file
3599 names from the input file name, strip the directory part.
3600
ca98bf57
AD
36012002-06-18 Akim Demaille <akim@epita.fr>
3602
3603 * data/bison.simple.new: Comment changes.
3604 Reported by Andreas Schwab.
3605
0bfb02ff
AD
36062002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
3607
3608 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
3609 there are no `label `yyoverflowlab' defined but not used' warnings
3610 when yyoverflow is defined.
3611
24c0aad7
AD
36122002-06-18 Akim Demaille <akim@epita.fr>
3613
3614 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
3615 new member.
3616 (symbol_destructor_set): Adjust.
3617 * src/output.c (symbol_destructors_output): Output the destructor
3618 locations.
3619 Output the symbol name.
3620 * data/bison.simple (b4_symbol_destructor): Adjust.
3621
5719c109
AD
36222002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
3623 and Akim Demaille <akim@epita.fr>
3624
3625 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
3626 what's left on the stack when the error recovery hits EOF.
3627 * tests/actions.at (Destructors): Complete to exercise this case.
3628
9280d3ef
AD
36292002-06-17 Akim Demaille <akim@epita.fr>
3630
3631 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
3632 arguments is really empty, not only equal to `[]'.
3633 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
3634 member.
3635 (symbol_destructor_set): New.
3636 * src/output.c (symbol_destructors_output): New.
3637 * src/reader.h (brace_code_t, current_braced_code): New.
3638 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
3639 (handle_dollar): Rename as...
3640 (handle_action_dollar): this.
3641 (handle_destructor_dollar): New.
3642 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
3643 (grammar_declaration): Use it.
3644 * data/bison.simple (yystos): Is always defined.
3645 (yydestructor): New.
3646 * tests/actions.at (Destructors): New.
3647 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
3648
dafdc66f
AD
36492002-06-17 Akim Demaille <akim@epita.fr>
3650
3651 * src/symlist.h, src/symlist.c (symbol_list_length): New.
3652 * src/scan-gram.l (handle_dollar, handle_at): Compute the
3653 rule_length only when needed.
3654 * src/output.c (actions_output, token_definitions_output): Output
3655 the full M4 block.
3656 * src/symtab.c: Don't access directly to the symbol tag, use
3657 symbol_tag_get.
3658 * src/parse-gram.y: Use symbol_list_free.
3659
56c47203
AD
36602002-06-17 Akim Demaille <akim@epita.fr>
3661
3662 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
3663 (symbol_list_prepend, get_type_name): Move to...
3664 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
3665 (symbol_list_prepend, symbol_list_n_type_name_get): here.
3666 Adjust all callers.
3667 (symbol_list_free): New.
3668 * src/scan-gram.l (handle_dollar): Takes a location.
3669 * tests/input.at (Invalid $n): Adjust.
3670
1e0bab92
AD
36712002-06-17 Akim Demaille <akim@epita.fr>
3672
3673 * src/reader.h, src/reader.c (symbol_list_new): Export it.
3674 (symbol_list_prepend): New.
3675 * src/parse-gram.y (%union): `list' is a new member.
3676 (symbols.1): New, replaces...
3677 (terms_to_prec.1, nterms_to_type.1): these.
3678 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
3679 Take a location as additional argument.
3680 Adjust all callers.
3681
04e60654
AD
36822002-06-15 Akim Demaille <akim@epita.fr>
3683
3684 * src/parse-gram.y: Move %token in the declaration section so that
3685 we don't depend upon CVS Bison.
3686
10e5b8bd
AD
36872002-06-15 Akim Demaille <akim@epita.fr>
3688
3689 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
3690 * src/print.c (print_core): Use it.
3691
9801d40c
AD
36922002-06-15 Akim Demaille <akim@epita.fr>
3693
3694 * src/conflicts.c (log_resolution): Accept the rule involved in
3695 the sr conflicts instead of the lookahead number that points to
3696 that rule.
3697 (flush_reduce): Accept the current lookahead vector as argument,
3698 instead of the index in LA.
3699 (resolve_sr_conflict): Accept the current number of lookahead
3700 bitset to consider for the STATE, instead of the index in LA.
3701 (set_conflicts): Adjust.
3702 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
3703
c0263492
AD
37042002-06-15 Akim Demaille <akim@epita.fr>
3705
3706 * src/state.h (state_t): Replace the `lookaheadsp' member, a
3707 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
3708 Adjust all dependencies.
3709 * src/lalr.c (initialize_lookaheads): Split into...
3710 (states_lookaheads_count, states_lookaheads_initialize): these.
3711 (lalr): Adjust.
3712
9757c359
AD
37132002-06-15 Akim Demaille <akim@epita.fr>
3714
3715 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
3716 out of...
3717 (grammar_rules_print): here.
3718 * src/reduce.c (reduce_output): Use it.
3719 * tests/reduce.at (Useless Rules, Reduced Automaton)
3720 (Underivable Rules): Adjust.
3721
6b98e4b5
AD
37222002-06-15 Akim Demaille <akim@epita.fr>
3723
3724 Copy BYacc's nice way to report the grammar.
3725
3726 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
3727 New.
3728 Don't print the rules' location, it is confusing and useless.
3729 (rule_print): Use grammar_rhs_print.
3730 * src/print.c (print_grammar): Use grammar_rules_print.
3731
6b98e4b5
AD
37322002-06-15 Akim Demaille <akim@epita.fr>
3733
3734 Complete and rationalize `useless thing' warnings.
3735
3736 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
3737 (symbol_tag_print): New.
3738 Use them everywhere in place of accessing directly the tag member.
3739 * src/gram.h, src/gram.c (rule_print): New.
3740 Use it where a rule used to be printed `by hand'.
3741 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
3742 (reduce_grammar_tables): Report the useless rules.
3743 (reduce_print): Useless things are a warning, not an error.
3744 Report it as such.
3745 * tests/reduce.at (Useless Nonterminals, Useless Rules):
3746 (Reduced Automaton, Underivable Rules): Adjust.
3747 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
3748 * tests/conflicts.at (Unresolved SR Conflicts)
3749 (Solved SR Conflicts): Adjust.
3750
ee000ba4
AD
37512002-06-15 Akim Demaille <akim@epita.fr>
3752
3753 Let symbols have a location.
3754
3755 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
3756 (getsym): Adjust.
3757 Adjust all callers.
3758 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
3759 Use location_t, not int.
3760 * src/symtab.c (symbol_check_defined): Take advantage of the
3761 location.
3762 * tests/regression.at (Invalid inputs): Adjust.
3763
8efe435c
AD
37642002-06-15 Akim Demaille <akim@epita.fr>
3765
3766 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
3767 (input): Don't try to initialize yylloc here, do it in the
3768 scanner.
3769 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
3770 * src/gram.h (rule_t): Change line and action_line into location
3771 and action_location, of location_t type.
3772 Adjust all dependencies.
3773 * src/location.h, src/location.c (empty_location): New.
3774 * src/reader.h, src/reader.c (grammar_start_symbol_set)
3775 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
3776 (grammar_current_rule_symbol_append)
3777 (grammar_current_rule_action_append): Expect a location as argument.
3778 * src/reader.c (grammar_midrule_action): Adjust to attach an
3779 action's location as dummy symbol location.
3780 * src/symtab.h, src/symtab.c (startsymbol_location): New.
3781 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
3782 the line numbers.
3783
1921f1d7
AD
37842002-06-14 Akim Demaille <akim@epita.fr>
3785
3786 Grammar declarations may be found in the grammar section.
3787
3788 * src/parse-gram.y (rules_or_grammar_declaration): New.
3789 (declarations): Each declaration may end with a semicolon, not
3790 just...
3791 (grammar_declaration): `"%union"'.
3792 (grammar): Branch to rules_or_grammar_declaration.
3793
4515534c
AD
37942002-06-14 Akim Demaille <akim@epita.fr>
3795
3796 * src/main.c (main): Invoke scanner_free.
3797
f958596b
AD
37982002-06-14 Akim Demaille <akim@epita.fr>
3799
3800 * src/output.c (m4_invoke): Extracted from...
3801 (output_skeleton): here.
3802 Free tempfile.
3803
2c569025
AD
38042002-06-14 Akim Demaille <akim@epita.fr>
3805
3806 * src/parse-gram.y (directives, directive, gram)
3807 (grammar_directives, precedence_directives, precedence_directive):
3808 Rename as...
3809 (declarations, declaration, grammar, grammar_declaration)
3810 (precedence_declaration, precedence_declarator): these.
3811 (symbol_declaration): New.
3812
592e8d4d
AD
38132002-06-14 Akim Demaille <akim@epita.fr>
3814
3815 * src/files.c (action_obstack): Remove, unused.
3816 (output_obstack): Remove it, and all its dependencies, as it is no
3817 longer needed.
3818 * src/reader.c (epilogue_set): Build the epilogue in the
3819 muscle_obstack.
3820 * src/output.h, src/output.c (muscle_obstack): Move to...
3821 * src/muscle_tab.h, src/muscle_tab.h: here.
3822 (muscle_init): Initialize muscle_obstack.
3823 (muscle_free): New.
3824 * src/main.c (main): Call it.
3825
0c15323d
AD
38262002-06-14 Akim Demaille <akim@epita.fr>
3827
3828 * src/location.h: New, extracted from...
3829 * src/reader.h: here.
3830 * src/Makefile.am (noinst_HEADERS): Merge into
3831 (bison_SOURCES): this.
3832 Add location.h.
3833 * src/parse-gram.y: Use location_t instead of Bison's.
3834 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
3835 Use location_t instead of ints.
3836
e96c9728
AD
38372002-06-14 Akim Demaille <akim@epita.fr>
3838
3839 * data/bison.simple, data/bison.c++: Be sure to restore the
3840 current #line when returning to the skeleton contents after having
3841 exposed the input file's #line.
3842
75d1fe16
AD
38432002-06-12 Akim Demaille <akim@epita.fr>
3844
3845 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
3846 eager.
3847 * tests/actions.at (Exotic Dollars): New.
3848
6c35d22c
AD
38492002-06-12 Akim Demaille <akim@epita.fr>
3850
3851 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
3852 ['"/] too eagerly.
3853 * tests/input.at (Torturing the Scanner): New.
3854
1d6412ad
AD
38552002-06-11 Akim Demaille <akim@epita.fr>
3856
3857 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
3858 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
3859 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
3860 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
3861 * src/reader.c (reader): Use it.
3862
4cdb01db
AD
38632002-06-11 Akim Demaille <akim@epita.fr>
3864
3865 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
3866 Adjust all callers.
3867 (scanner_last_string_free): New.
3868
44995b2e
AD
38692002-06-11 Akim Demaille <akim@epita.fr>
3870
3871 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
3872 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
3873 (last_string, YY_OBS_FREE): New.
3874 Use them when returning an ID.
3875
e9955c83
AD
38762002-06-11 Akim Demaille <akim@epita.fr>
3877
3878 Have Bison grammars parsed by a Bison grammar.
3879
3880 * src/reader.c, src/reader.h (prologue_augment): New.
3881 * src/reader.c (copy_definition): Remove.
3882
3883 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
3884 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
3885 (grammar_current_rule_prec_set, grammar_current_rule_check)
3886 (grammar_current_rule_symbol_append)
3887 (grammar_current_rule_action_append): Export.
3888 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
3889 (symbol_list_action_append): Remove.
3890 Hook the routines from reader.
3891 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
3892 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
3893
3894 * src/reader.c (read_declarations): Remove, unused.
3895
3896 * src/parse-gram.y: Handle the epilogue.
3897 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
3898 (grammar_start_symbol_set): this.
3899 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
3900 * src/reader.c (readgram): Remove, unused.
3901 (reader): Adjust to insert eoftoken and axiom where appropriate.
3902
3903 * src/reader.c (copy_dollar): Replace with...
3904 * src/scan-gram.h (handle_dollar): this.
3905 * src/parse-gram.y: Remove `%thong'.
3906
3907 * src/reader.c (copy_at): Replace with...
3908 * src/scan-gram.h (handle_at): this.
3909
3910 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
3911 New.
3912
3913 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
3914 time being.
3915
3916 * src/reader.h, src/reader.c (grammar_rule_end): New.
3917
3918 * src/parse.y (current_type, current_class): New.
3919 Implement `%nterm', `%token' support.
3920 Merge `%term' into `%token'.
3921 (string_as_id): New.
3922 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
3923 type name.
3924
3925 * src/parse-gram.y: Be sure to handle properly the beginning of
3926 rules.
3927
3928 * src/parse-gram.y: Handle %type.
3929 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
3930
3931 * src/parse-gram.y: More directives support.
3932 * src/options.c: No longer handle source directives.
3933
3934 * src/parse-gram.y: Fix %output.
3935
3936 * src/parse-gram.y: Handle %union.
3937 Use the prologue locations.
3938 * src/reader.c (parse_union_decl): Remove.
3939
3940 * src/reader.h, src/reader.c (epilogue_set): New.
3941 * src/parse-gram.y: Use it.
3942
3943 * data/bison.simple, data/bison.c++: b4_stype is now either not
3944 defined, then default to int, or to the contents of %union,
3945 without `union' itself.
3946 Adjust.
3947 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
3948
3949 * src/output.c (actions_output): Don't output braces, as they are
3950 already handled by the scanner.
3951
3952 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
3953 characters to themselves.
3954
3955 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
3956 that the epilogue has a proper #line.
3957
3958 * src/parse-gram.y: Handle precedence/associativity.
3959
3960 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
3961 a terminal.
3962 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
3963 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
3964 at all to define terminals that cannot be emitted.
3965
3966 * src/scan-gram.l: Escape M4 characters.
3967
3968 * src/scan-gram.l: Working properly with escapes in user
3969 strings/characters.
3970
3971 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
3972 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
3973 grammar.
3974 Use more modest sizes, as for the time being the parser does not
3975 release memory, and therefore the process swallows a huge amount
3976 of memory.
3977
3978 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
3979 stricter %token grammar.
3980
3981 * src/symtab.h (associativity): Add `undef_assoc'.
3982 (symbol_precedence_set): Do nothing when passed an undef_assoc.
3983 * src/symtab.c (symbol_check_alias_consistence): Adjust.
3984
3985 * tests/regression.at (Invalid %directive): Remove, as it is now
3986 meaningless.
3987 (Invalid inputs): Adjust to the new error messages.
3988 (Token definitions): The new grammar doesn't allow too many
3989 eccentricities.
3990
3991 * src/lex.h, src/lex.c: Remove.
3992 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
3993 (copy_character, copy_string2, copy_string, copy_identifier)
3994 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
3995 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
3996 (parse_action): Remove.
3997 * po/POTFILES.in: Adjust.
3998
2e047461
AD
39992002-06-11 Akim Demaille <akim@epita.fr>
4000
4001 * src/reader.c (parse_action): Don't store directly into the
4002 rule's action member: return the action as a string.
4003 Don't require `rule_length' as an argument: compute it.
4004 (grammar_current_rule_symbol_append)
4005 (grammar_current_rule_action_append): New, eved out from
4006 (readgram): here.
4007 Remove `action_flag', `rulelength', unused now.
4008
9af3fbce
AD
40092002-06-11 Akim Demaille <akim@epita.fr>
4010
4011 * src/reader.c (grammar_current_rule_prec_set).
4012 (grammar_current_rule_check): New, eved out from...
4013 (readgram): here.
4014 Remove `xaction', `first_rhs': useless.
4015 * tests/input.at (Type clashes): New.
4016 * tests/existing.at (GNU Cim Grammar): Adjust.
4017
1485e106
AD
40182002-06-11 Akim Demaille <akim@epita.fr>
4019
4020 * src/reader.c (grammar_midrule_action): New, Eved out from
4021 (readgram): here.
4022
da4160c3
AD
40232002-06-11 Akim Demaille <akim@epita.fr>
4024
4025 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
4026 New.
4027 (readgram): Use them as replacement of inlined code, crule and
4028 crule1.
4029
f6d0f937
AD
40302002-06-11 Akim Demaille <akim@epita.fr>
4031
4032 * src/reader.c (grammar_end, grammar_symbol_append): New.
4033 (readgram): Use them.
4034 Make the use of `p' as local as possible.
4035
69078d4b
AD
40362002-06-10 Akim Demaille <akim@epita.fr>
4037
4038 GCJ's parser requires the tokens to be defined before the prologue.
4039
4040 * data/bison.simple: Output the token definition before the user's
4041 prologue.
4042 * tests/regression.at (Braces parsing, Duplicate string)
4043 (Mixing %token styles): Check the output from bison.
4044 (Early token definitions): New.
4045
5e424082
AD
40462002-06-10 Akim Demaille <akim@epita.fr>
4047
4048 * src/symtab.c (symbol_user_token_number_set): Don't complain when
4049 assigning twice the same user number to a token, so that we can
4050 use it in...
4051 * src/lex.c (lex): here.
4052 Also use `symbol_class_set' instead of hand written code.
4053 * src/reader.c (parse_assoc_decl): Likewise.
4054
44536b35
AD
40552002-06-10 Akim Demaille <akim@epita.fr>
4056
4057 * src/symtab.c, src/symtab.c (symbol_class_set)
4058 (symbol_user_token_number_set): New.
4059 * src/reader.c (parse_token_decl): Use them.
4060 Use a switch instead of ifs.
4061 Use a single argument.
4062
8b9f2372
AD
40632002-06-10 Akim Demaille <akim@epita.fr>
4064
4065 Remove `%thong' support as it is undocumented, unused, duplicates
4066 `%token's job, and creates useless e-mail traffic with people who
4067 want to know what it is, why it is undocumented, unused, and
4068 duplicates `%token's job.
4069
4070 * src/reader.c (parse_thong_decl): Remove.
4071 * src/options.c (option_table): Remove "thong".
4072 * src/lex.h (tok_thong): Remove.
4073
3ae2b51f
AD
40742002-06-10 Akim Demaille <akim@epita.fr>
4075
4076 * src/symtab.c, src/symtab.c (symbol_type_set)
4077 (symbol_precedence_set): New.
4078 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
4079 (value_components_used): Remove, unused.
4080
2f1afb73
AD
40812002-06-09 Akim Demaille <akim@epita.fr>
4082
4083 Move symbols handling code out of the reader.
4084
4085 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
4086 (axiom): Move to...
4087 * src/symtab.h, src/symtab.c: here.
4088
4089 * src/gram.c (start_symbol): Remove: use startsymbol->number.
4090 * src/reader.c (startval): Rename as...
4091 * src/symtab.h, src/symtab.c (startsymbol): this.
4092 * src/reader.c: Adjust.
4093
4094 * src/reader.c (symbol_check_defined, symbol_make_alias)
4095 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
4096 (token_translations_init)
4097 Move to...
4098 * src/symtab.c: here.
4099 * src/reader.c (packsymbols): Move to...
4100 * src/symtab.h, src/symtab.c (symbols_pack): here.
4101 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
4102 argument.
4103
e9bca3ad
AD
41042002-06-03 Akim Demaille <akim@epita.fr>
4105
4106 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
4107 then statements.
4108
86eff183
AD
41092002-06-03 Akim Demaille <akim@epita.fr>
4110
4111 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
4112 structs with non literals.
4113 * src/scan-skel.l: never-interactive.
4114 * src/conflicts.c (enum conflict_resolution_e): No trailing
4115 comma.
4116 * src/getargs.c (usage): Split long literal strings.
4117 Reported by Hans Aberg.
4118
717be197
AD
41192002-05-28 Akim Demaille <akim@epita.fr>
4120
4121 * data/bison.c++: Use C++ ostreams.
4122 (cdebug_): New member.
4123
670ddffd
AD
41242002-05-28 Akim Demaille <akim@epita.fr>
4125
4126 * src/output.c (output_skeleton): Be sure to allocate enough room
4127 for `/' _and_ for `\0' in full_skeleton.
4128
769b430f
AD
41292002-05-28 Akim Demaille <akim@epita.fr>
4130
4131 * data/bison.c++: Catch up with bison.simple:
4132 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
4133 and Paul Eggert <eggert@twinsun.com>: `error' handing.
4134 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
4135 and popping traces.
4136
7067cb36
PH
41372002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
4138
4139 * src/output.c (output_skeleton): Put an explicit path in front of
4140 the skeleton file name, rather than relying on the -I directory,
4141 to partially alleviate effects of having a skeleton file lying around
4142 in the current directory.
769b430f 4143
4a713ec2
PH
41442002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
4145
769b430f 4146 * src/conflicts.c (log_resolution): Correct typo:
4a713ec2
PH
4147 obstack_printf should be obstack_fgrow1.
4148
b408954b
AD
41492002-05-26 Akim Demaille <akim@epita.fr>
4150
4151 * src/state.h (state_t): `solved_conflicts' is a new member.
4152 * src/LR0.c (new_state): Set it to 0.
4153 * src/conflicts.h, src/conflicts.c (print_conflicts)
4154 (free_conflicts, solve_conflicts): Rename as...
4155 (conflicts_print, conflicts_free, conflicts_solve): these.
4156 Adjust callers.
4157 * src/conflicts.c (enum conflict_resolution_e)
4158 (solved_conflicts_obstack): New, used by...
4159 (log_resolution): this.
4160 Adjust to attach the conflict resolution to each state.
4161 Complete the description with the precedence/associativity
4162 information.
4163 (resolve_sr_conflict): Adjust.
4164 * src/print.c (print_state): Output its solved_conflicts.
4165 * tests/conflicts.at (Unresolved SR Conflicts)
4166 (Solved SR Conflicts): Exercise --report=all.
4167
a49aecd5
AD
41682002-05-26 Akim Demaille <akim@epita.fr>
4169
4170 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
4171 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
4172 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
4173 (token_number_t, item_number_as_token_number)
4174 (token_number_as_item_number, muscle_insert_token_number_table):
4175 Rename as...
4176 (symbol_number_t, item_number_as_symbol_number)
4177 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
4178 these, since it is more appropriate.
4179
5504898e
AD
41802002-05-26 Akim Demaille <akim@epita.fr>
4181
4182 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
4183 `Error:' lines.
4184 * data/bison.simple (yystos) [YYDEBUG]: New.
4185 (yyparse) [YYDEBUG]: Display the symbols which are popped during
4186 error recovery.
4187 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
4188
ec3bc396
AD
41892002-05-25 Akim Demaille <akim@epita.fr>
4190
4191 * doc/bison.texinfo (Debugging): Split into...
4192 (Tracing): this new section, its former contents, and...
4193 (Understanding): this new section.
4194 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
4195 by...
4196 (report_flag): this.
4197 Adjust all dependencies.
4198 (report_args, report_types, report_argmatch): New.
4199 (usage, getargs): Report/support -r, --report.
4200 * src/options.h
4201 (struct option_table_struct): Rename as..,
4202 (struct option_table_s): this.
4203 Rename the `set_flag' member to `flag' to match with getopt_long's
4204 struct.
4205 * src/options.c (option_table): Split verbose into an entry for
4206 %verbose, and another for --verbose.
4207 Support --report/-r, so remove -r from the obsolete --raw.
4208 * src/print.c: Attach full item sets and lookaheads reports to
4209 report_flag instead of trace_flag.
4210 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
4211
78df8250
PE
42122002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
4213 and Paul Eggert <eggert@twinsun.com>
769b430f 4214
78df8250
PE
4215 * data/bison.simple (yyparse): Correct error handling to conform to
4216 POSIX and yacc. Specifically, after syntax error is discovered,
4217 do not reduce further before shifting the error token.
4218 Clean up the code a bit by removing the labels yyerrdefault,
4219 yyerrhandle, yyerrpop.
4220 * NEWS: Document the above.
4221
c0c9ea05
PH
42222002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
4223
4224 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
4225 type; it isn't always big enough, since it doesn't necessarily
4226 include non-terminals.
769b430f 4227 (yytranslate): Expand definition of yy_token_number_type, so that
c0c9ea05
PH
4228 the latter can be removed.
4229 (yy_token_number_type): Remove, only one use.
4230 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
4231 don't use TokenNumberType as element type.
769b430f 4232
c0c9ea05
PH
4233 * tests/regression.at: Modify expected output to agree with change
4234 to yyr1 and yytranslate.
769b430f 4235
6390a83f
FK
42362002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
4237
4238 * src/reader.c (parse_action): Use copy_character instead of
4239 obstack_1grow.
4240
db7c8e9a
AD
42412002-05-13 Akim Demaille <akim@epita.fr>
4242
4243 * tests/regression.at (Token definitions): Prototype yylex and
4244 yyerror.
4245
fcc61800
PH
42462002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
4247
158c687b 4248 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
fcc61800
PH
4249 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
4250 32-bit arithmetic.
4251 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
4252
5683e9b2
AD
42532002-05-07 Akim Demaille <akim@epita.fr>
4254
4255 * tests/synclines.at: Be sure to prototype yylex and yyerror to
4256 avoid GCC warnings.
4257
0c2d3f4c
AD
42582002-05-07 Akim Demaille <akim@epita.fr>
4259
4260 Kill GCC warnings.
4261
4262 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
4263 over the RHS of each rule.
4264 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
4265 * src/state.h (state_t): Member `nitems' is unsigned short.
4266 * src/LR0.c (get_state): Adjust.
4267 * src/reader.c (packgram): Likewise.
4268 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
4269 `Type'.
4270 (muscle_insert_int_table): Remove, unused.
4271 (prepare_rules): Remove `max'.
4272
1565b720
AD
42732002-05-06 Akim Demaille <akim@epita.fr>
4274
4275 * src/closure.c (print_firsts): Display of the symbol tags.
4276 (bitmatrix_print): Move to...
4277 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
4278 here.
4279 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
4280
cfaee611
AD
42812002-05-06 Akim Demaille <akim@epita.fr>
4282
4283 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
4284 hash_do_for_each.
4285
458be8e0
AD
42862002-05-06 Akim Demaille <akim@epita.fr>
4287
4288 * src/LR0.c (new_state, get_state): Instead of using the global
4289 `kernel_size' and `kernel_base', have two new arguments:
4290 `core_size' and `core'.
4291 Adjust callers.
4292
a900a624
AD
42932002-05-06 Akim Demaille <akim@epita.fr>
4294
4295 * src/reader.c (packgram): No longer end `ritem' with a 0
4296 sentinel: it is not used.
4297
d4e7d3a1
AD
42982002-05-05 Akim Demaille <akim@epita.fr>
4299
4300 New experimental feature: display the lookaheads in the report and
4301 graph.
4302
4303 * src/print (print_core): When --trace-flag, display the rules
4304 lookaheads.
4305 * src/print_graph.c (print_core): Likewise.
4306 Swap the arguments.
4307 Adjust caller.
4308
39ceb25b
AD
43092002-05-05 Akim Demaille <akim@epita.fr>
4310
4311 * tests/torture.at (Many lookaheads): New test.
4312
5372019f
AD
43132002-05-05 Akim Demaille <akim@epita.fr>
4314
4315 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
4316 (GENERATE_MUSCLE_INSERT_TABLE): this.
4317 (output_int_table, output_unsigned_int_table, output_short_table)
4318 (output_token_number_table, output_item_number_table): Replace with...
4319 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
4320 (muscle_insert_short_table, muscle_insert_token_number_table)
4321 (muscle_insert_item_number_table): these.
4322 Adjust all callers.
4323 (prepare_tokens): Don't free `translations', since...
4324 * src/reader.h, src/reader.c (grammar_free): do it.
4325 Move to...
4326 * src/gram.h, src/gram.c (grammar_free): here.
4327 * data/bison.simple, data/bison.c++: b4_token_number_max is now
4328 b4_translate_max.
4329
5df5f6d5
AD
43302002-05-05 Akim Demaille <akim@epita.fr>
4331
4332 * src/output.c (output_unsigned_int_table): New.
4333 (prepare_rules): `i' is unsigned.
4334 `prhs', `rline', `r2' are unsigned int.
4335 Rename muscle `rhs_number_max' as `rhs_max'.
4336 Output muscles `prhs_max', `rline_max', and `r2_max'.
4337 Free rline and r1.
4338 * data/bison.simple, data/bison.c++: Adjust to use these muscles
4339 to compute types instead of constant types.
4340 * tests/regression.at (Web2c Actions): Adjust.
4341
b87f8b21
AD
43422002-05-04 Akim Demaille <akim@epita.fr>
4343
4344 * src/symtab.h (SALIAS, SUNDEF): Rename as...
4345 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
4346 Adjust dependencies.
4347 * src/output.c (token_definitions_output): Be sure not to output a
4348 `#define 'a'' when fed with `%token 'a' "a"'.
4349 * tests/regression.at (Token definitions): New.
4350
8bb936e4
PE
43512002-05-03 Paul Eggert <eggert@twinsun.com>
4352
4353 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
4354 for K&R C.
4355
43562002-05-03 gettextize <bug-gnu-gettext@gnu.org>
4357
4358 * Makefile.am (SUBDIRS): Remove intl.
4359 (EXTRA_DIST): Add config/config.rpath.
4360
53c71a12
AD
43612002-05-03 Akim Demaille <akim@epita.fr>
4362
4363 * data/bison.simple (m4_if): Don't output empty enums.
4364 And actually, output valid enum definitions :(.
4365
289dd0cf
AD
43662002-05-03 Akim Demaille <akim@epita.fr>
4367
4368 * configure.bat: Remove, completely obsolete.
4369 * Makefile.am (EXTRA_DIST): Adjust.
4370 Don't distribute config.rpath...
4371 * config/Makefile.am (EXTRA_DIST): Do it.
4372
db85e524
AD
43732002-05-03 Akim Demaille <akim@epita.fr>
4374
4375 * configure.in (GETTEXT_VERSION): New.
4376 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
4377
83ccf991
AD
43782002-05-03 Akim Demaille <akim@epita.fr>
4379
4380 * data/bison.simple (b4_token_enum): New.
4381 (b4_token_defines): Use it to output tokens both as #define and
4382 enums.
4383 Suggested by Paul Eggert.
4384 * src/output.c (token_definitions_output): Don't output spurious
4385 white spaces.
4386
1f418995
AD
43872002-05-03 Akim Demaille <akim@epita.fr>
4388
4389 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
4390
45119f04
RA
43912002-05-02 Robert Anisko <robert@lrde.epita.fr>
4392
4393 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
4394 Update the stack class, give a try to deque as the default container.
4395
b2d52318
AD
43962002-05-02 Akim Demaille <akim@epita.fr>
4397
4398 * data/bison.simple (yyparse): Do not implement @$ = @1.
4399 (YYLLOC_DEFAULT): Adjust to do it.
4400 * doc/bison.texinfo (Location Default Action): Fix.
4401
3a8b4109
AD
44022002-05-02 Akim Demaille <akim@epita.fr>
4403
4404 * src/reader.c (parse_braces): Merge into...
4405 (parse_action): this.
4406
84614e13
AD
44072002-05-02 Akim Demaille <akim@epita.fr>
4408
4409 * configure.in (ALL_LINGUAS): Remove.
4410 * po/LINGUAS, hr.po: New.
4411
fdbcd8e2
AD
44122002-05-02 Akim Demaille <akim@epita.fr>
4413
4414 Remove the so called hairy (semantic) parsers.
4415
4416 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
4417 * src/gram.h, src/gram.c (semantic_parser): Remove.
4418 (rule_t): Remove the guard and guard_line members.
4419 * src/lex.h (token_t): remove tok_guard.
4420 * src/options.c (option_table): Remove %guard and %semantic_parser
4421 support.
4422 * src/output.c, src/output.h (guards_output): Remove.
4423 (prepare): Adjust.
4424 (token_definitions_output): Don't output the `T'
4425 tokens (???).
4426 (output_skeleton): Don't output the guards.
4427 * src/files.c, src/files.c (attrsfile): Remove.
4428 * src/reader.c (symbol_list): Remove the guard and guard_line
4429 members.
4430 Adjust dependencies.
4431 (parse_guard): Remove.
4432 * data/bison.hairy: Remove.
4433 * doc/bison.texinfo (Environment Variables): Remove occurrences of
4434 BISON_HAIRY.
4435
82b6cb3f
AD
44362002-05-02 Akim Demaille <akim@epita.fr>
4437
4438 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
4439 (parse_guard): Rename the formal argument `stack_offset' as
4440 `rule_length', which is more readable.
4441 Adjust callers.
4442 (copy_at, copy_dollar): Instead of outputting the hard coded
4443 values of $$, $n and so forth, output invocation to b4_lhs_value,
4444 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
900c877b
AD
4445 Note: this patch partially drops `semantic-parser' support: it
4446 always does `rule_length - n', where semantic parsers ought to
4447 always use `-n'.
82b6cb3f
AD
4448 * data/bison.simple, data/bison.c++ (b4_lhs_value)
4449 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
4450
6cbfbcc5
AD
44512002-05-02 Akim Demaille <akim@epita.fr>
4452
4453 * configure.in (AC_INIT): Bump to 1.49b.
4454 (AM_INIT_AUTOMAKE): Short invocation.
4455
b8548114
AD
44562002-05-02 Akim Demaille <akim@epita.fr>
4457
4458 Version 1.49a.
4459
c20cd1fa
AD
44602002-05-01 Akim Demaille <akim@epita.fr>
4461
4462 * src/skeleton.h: Remove.
4463
8a9566d4
AD
44642002-05-01 Akim Demaille <akim@epita.fr>
4465
4466 * src/skeleton.h: Fix the #endif.
4467 Reported by Magnus Fromreide.
4468
8c6d399a
PE
44692002-04-26 Paul Eggert <eggert@twinsun.com>
4470
4471 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
4472 Define if we define YYSTYPE and YYLTYPE, respectively.
b756bb75 4473 (YYCOPY): Fix [] quoting problem in the non-GCC case.
8a9566d4 4474
2b7ed18a
RA
44752002-04-25 Robert Anisko <robert@lrde.epita.fr>
4476
4477 * src/scan-skel.l: Postprocess quadrigraphs.
4478
4479 * src/reader.c (copy_character): New function, used to output
4480 single characters while replacing `[' and `]' with quadrigraphs, to
4481 avoid troubles with M4 quotes.
4482 (copy_comment): Output characters with copy_character.
4483 (read_additionnal_code): Likewise.
4484 (copy_string2): Likewise.
4485 (copy_definition): Likewise.
4486
4487 * tests/calc.at: Exercise M4 quoting.
4488
34a89c50
AD
44892002-04-25 Akim Demaille <akim@epita.fr>
4490
4491 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
4492 between `!' and the command.
4493 Reported by Paul Eggert.
4494
0dd1580a
RA
44952002-04-24 Robert Anisko <robert@lrde.epita.fr>
4496
4497 * tests/calc.at: Exercise prologue splitting.
4498
4499 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
4500 `b4_post_prologue' instead of `b4_prologue'.
4501
4502 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
4503 muscles.
4504 (output): Free pre_prologue_obstack and post_prologue_obstack.
4505 * src/files.h, src/files.c (attrs_obstack): Remove.
4506 (pre_prologue_obstack, post_prologue_obstack): New.
4507 * src/reader.c (copy_definition): Add a parameter to specify the
4508 obstack to fill, instead of using attrs_obstack unconditionally.
4509 (read_declarations): Pass pre_prologue_obstack to copy_definition if
4510 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
4511
83c1796f
PE
45122002-04-23 Paul Eggert <eggert@twinsun.com>
4513
4514 * data/bison.simple: Remove unnecessary commentary and white
4515 space differences from 1_29-branch.
4516 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
4517
4518 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
4519 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
4520 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
4521 constructors or destructors.
4522
4523 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
4524
1207eeac
AD
45252002-04-23 Akim Demaille <akim@epita.fr>
4526
4527 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
4528 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
4529 location with columns.
4530 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
4531 All reported by Paul Eggert.
4532
78ab8f67
AD
45332002-04-22 Akim Demaille <akim@epita.fr>
4534
4535 * src/reduce.c (dump_grammar): Move to...
4536 * src/gram.h, src/gram.c (grammar_dump): here.
4537 Be sure to separate long item numbers.
4538 Don't read the members of a rule's prec if its nil.
4539
133c20e2
AD
45402002-04-22 Akim Demaille <akim@epita.fr>
4541
4542 * src/output.c (table_size, table_grow): New.
4543 (MAXTABLE): Remove, replace uses with table_size.
4544 (pack_vector): Instead of dying when the table is too big, grow it.
4545
9515e8a7
AD
45462002-04-22 Akim Demaille <akim@epita.fr>
4547
4548 * data/bison.simple (yyr1): Its type is that of a token number.
4549 * data/bison.c++ (r1_): Likewise.
4550 * tests/regression.at (Web2c Actions): Adjust.
4551
23c5a174
AD
45522002-04-22 Akim Demaille <akim@epita.fr>
4553
4554 * src/reader.c (token_translations_init): 256 is now the default
4555 value for the error token, i.e., it will be assigned another
4556 number if the user assigned 256 to one of her tokens.
4557 (reader): Don't force 256 to error.
4558 * doc/bison.texinfo (Symbols): Adjust.
4559 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
4560 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
4561 etc. instead of 10, 20, 30 (which was used to `jump' over error
4562 (256) and undefined (2)).
4563
5fbb0954
AD
45642002-04-22 Akim Demaille <akim@epita.fr>
4565
4566 Propagate more token_number_t.
4567
4568 * src/gram.h (token_number_as_item_number)
4569 (item_number_as_token_number): New.
4570 * src/output.c (GENERATE_OUTPUT_TABLE): New.
4571 Use it to create output_item_number_table and
4572 output_token_number_table.
4573 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
4574 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
4575 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
4576 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
4577
4f940944
AD
45782002-04-22 Akim Demaille <akim@epita.fr>
4579
4580 * src/output.h, src/output.c (get_lines_number): Remove.
4581
3ded9a63
AD
45822002-04-19 Akim Demaille <akim@epita.fr>
4583
4584 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
4585 as Lex/Flex'.
4586 (Debugging): More details about enabling the debugging features.
4587 (Table of Symbols): Describe $$, $n, @$, and @n.
4588 Suggested by Tim Josling.
4589
e0c471a9
AD
45902002-04-19 Akim Demaille <akim@epita.fr>
4591
4592 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
4593
fecc10cd
AD
45942002-04-10 Akim Demaille <akim@epita.fr>
4595
4596 * src/system.h: Rely on HAVE_LIMITS_H.
4597 Suggested by Paul Eggert.
4598
51dec47b
AD
45992002-04-09 Akim Demaille <akim@epita.fr>
4600
4601 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
4602 full stderr, and strip it according to the bison options, instead
4603 of composing the error message from different bits.
4604 This makes it easier to check for several error messages.
4605 Adjust all the invocations.
4606 Add an invocation exercising the error token.
4607 Add an invocation demonstrating a stupid error message.
4608 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
4609 Adjust the tests.
4610 Error message are for stderr, not stdout.
4611
007a50a4
AD
46122002-04-09 Akim Demaille <akim@epita.fr>
4613
4614 * src/gram.h, src/gram.c (error_token_number): Remove, use
4615 errtoken->number.
4616 * src/reader.c (reader): Don't specify the user token number (2)
4617 for $undefined, as it uselessly prevents using it.
4618 * src/gram.h (token_number_t): Move to...
4619 * src/symtab.h: here.
4620 (state_t.number): Is a token_number_t.
4621 * src/print.c, src/reader.c: Use undeftoken->number instead of
4622 hard coded 2.
4623 (Even though this 2 is not the same as above: the number of the
4624 undeftoken remains being 2, it is its user token number which
4625 might not be 2).
4626 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
4627 `user_token_number_max'.
4628 Output `undef_token_number'.
4629 * data/bison.simple, data/bison.c++: Use them.
4630 Be sure to map invalid yylex return values to
4631 `undef_token_number'. This saves us from gratuitous SEGV.
4632
4633 * tests/conflicts.at (Solved SR Conflicts)
4634 (Unresolved SR Conflicts): Adjust.
4635 * tests/regression.at (Web2c Actions): Adjust.
4636
06446ccf
AD
46372002-04-08 Akim Demaille <akim@epita.fr>
4638
4639 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
4640 Adding #line.
4641 Remove the duplicate `typedefs'.
4642 (RhsNumberType): Fix the declaration and various other typos.
4643 Use __ofile__.
4644 * data/bison.simple: Use __ofile__.
4645 * src/scan-skel.l: Handle __ofile__.
4646
62a3e4f0
AD
46472002-04-08 Akim Demaille <akim@epita.fr>
4648
4649 * src/gram.h (item_number_t): New, the type of item numbers in
4650 RITEM. Note that it must be able to code symbol numbers as
4651 positive number, and the negation of rule numbers as negative
4652 numbers.
4653 Adjust all dependencies (pretty many).
4654 * src/reduce.c (rule): Remove this `short *' pointer: use
4655 item_number_t.
4656 * src/system.h (MINSHORT, MAXSHORT): Remove.
4657 Include `limits.h'.
4658 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
4659 (shortcpy): Remove.
4660 (MAXTABLE): Move to...
4661 * src/output.c (MAXTABLE): here.
4662 (prepare_rules): Use output_int_table to output rhs.
4663 * data/bison.simple, data/bison.c++: Adjust.
4664 * tests/torture.at (Big triangle): Move the limit from 254 to
4665 500.
4666 * tests/regression.at (Web2c Actions): Ajust.
4667
4668 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
4669 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
4670 passes, but produces negative #line number, once fixed, GCC is
4671 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
4672 C), it passes.
4673 * src/state.h (state_h): Code input lines on ints, not shorts.
4674
bb88b0fc
AD
46752002-04-08 Akim Demaille <akim@epita.fr>
4676
4677 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
4678 and then the grammar.
4679
9a636f47
AD
46802002-04-08 Akim Demaille <akim@epita.fr>
4681
4682 * src/system.h: No longer using strndup.
4683
680e8701
AD
46842002-04-07 Akim Demaille <akim@epita.fr>
4685
4686 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
4687 * src/output.c (output_table_data): Return the longest number.
4688 (prepare_tokens): Output `token_number_max').
4689 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
4690 New.
4691 Use them to define yy_token_number_type/TokenNumberType.
4692 Use this type for yytranslate.
4693 * tests/torture.at (Big triangle): Push the limit from 124 to
4694 253.
4695 * tests/regression.at (Web2c Actions): Adjust.
4696
817e9f41
AD
46972002-04-07 Akim Demaille <akim@epita.fr>
4698
4699 * tests/torture.at (Big triangle): New.
4700 (GNU AWK Grammar, GNU Cim Grammar): Move to...
4701 * tests/existing.at: here.
4702
5123689b
AD
47032002-04-07 Akim Demaille <akim@epita.fr>
4704
4705 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
4706 nritems.
4707 Adjust dependencies.
4708
f3849179
AD
47092002-04-07 Akim Demaille <akim@epita.fr>
4710
4711 * src/reader.c: Normalize increments to prefix form.
4712
bd02036a
AD
47132002-04-07 Akim Demaille <akim@epita.fr>
4714
4715 * src/reader.c, symtab.c: Remove debugging code.
4716
db8837cb
AD
47172002-04-07 Akim Demaille <akim@epita.fr>
4718
4719 Rename all the `bucket's as `symbol_t'.
4720
4721 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
4722 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
4723 * src/symtab.c, src/symtab.h (bucket): Rename as...
4724 (symbol_t): this.
4725 (symbol_list_new, bucket_check_defined, bucket_make_alias)
4726 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
4727 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
4728 (buckets_new, buckets_free, buckets_do): Rename as...
4729 (symbol_list_new, symbol_check_defined, symbol_make_alias)
4730 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
4731 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
4732 (symbols_new, symbols_free, symbols_do): these.
4733
72a23c97
AD
47342002-04-07 Akim Demaille <akim@epita.fr>
4735
4736 Use lib/hash for the symbol table.
4737
4738 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
4739 EOF.
4740 * src/lex.c (lex): Set the `number' member of new terminals.
4741 * src/reader.c (bucket_check_defined, bucket_make_alias)
4742 (bucket_check_alias_consistence, bucket_translation): New.
4743 (reader, grammar_free, readgram, token_translations_init)
4744 (packsymbols): Adjust.
4745 (reader): Number the predefined tokens.
4746 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
4747 for predefined tokens.
4748 * src/symtab.h (bucket): Remove all the hash table related
4749 members.
4750 * src/symtab.c (symtab): Replace by...
4751 (bucket_table): this.
4752 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
4753 (buckets_new, buckets_do): New.
4754
280a38c3
AD
47552002-04-07 Akim Demaille <akim@epita.fr>
4756
4757 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
4758 (start_symbol, max_user_token_number, semantic_parser)
4759 (error_token_number): Initialize.
4760 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
4761 Initialize.
4762 (reader): Don't.
4763 (errtoken, eoftoken, undeftoken, axiom): Extern.
4764
03b31c0c
AD
47652002-04-07 Akim Demaille <akim@epita.fr>
4766
4767 * src/gram.h (rule_s): prec and precsym are now pointers
4768 to the bucket giving the priority/associativity.
4769 Member `associativity' removed: useless.
4770 * src/reduce.c, src/conflicts.c: Adjust.
4771
8b3df748
AD
47722002-04-07 Akim Demaille <akim@epita.fr>
4773
4774 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
4775 Properly escape the symbols' TAG when outputting them.
4776
e601aa1d
AD
47772002-04-07 Akim Demaille <akim@epita.fr>
4778
4779 * src/lalr.h (LA): Is a bitsetv, not bitset*.
4780
b0299a2e
AD
47812002-04-07 Akim Demaille <akim@epita.fr>
4782
4783 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
4784 (LArule): this, which is an array to rule_t*.
4785 * src/print.c, src/conflicts.c: Adjust.
4786
d7e1f00c
AD
47872002-04-07 Akim Demaille <akim@epita.fr>
4788
4789 * src/gram.h (rule_t): Rename `number' as `user_number'.
4790 `number' is a new member.
4791 Adjust dependencies.
4792 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
4793
cc9305dd
AD
47942002-04-07 Akim Demaille <akim@epita.fr>
4795
4796 As a result of the previous patch, it is no longer needed
4797 to reorder ritem itself.
4798
4799 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
4800
b0940840
AD
48012002-04-07 Akim Demaille <akim@epita.fr>
4802
4803 Be sure never to walk through RITEMS, but use only data related to
4804 the rules themselves. RITEMS should be banished.
4805
4806 * src/output.c (output_token_translations): Rename as...
4807 (prepare_tokens): this.
4808 In addition to `translate', prepare the muscles `tname' and
4809 `toknum', which were handled by...
4810 (output_rule_data): this.
4811 Remove, and move the remainder of its outputs into...
4812 (prepare_rules): this new routines, which also merges content from
4813 (output_gram): this.
4814 (prepare_rules): Be sure never to walk through RITEMS.
4815 (output_stos): Rename as...
4816 (prepare_stos): this.
4817 (output): Always invoke prepare_states, after all, just don't use it
4818 in the output if you don't need it.
4819
643a5994
AD
48202002-04-07 Akim Demaille <akim@epita.fr>
4821
4822 * src/LR0.c (new_state): Display `nstates' as the name of the
4823 newly created state.
4824 Adjust to initialize first_state and last_state if needed.
4825 Be sure to distinguish the initial from the final state.
4826 (new_states): Create the itemset of the initial state, and use
4827 new_state.
4828 * src/closure.c (closure): Now that the initial state has its
4829 items properly set, there is no need for a special case when
4830 creating `ruleset'.
4831
4832 As a result, now the rule 0, reducing to $axiom, is visible in the
4833 outputs. Adjust the test suite.
4834
4835 * tests/conflicts.at (Solved SR Conflicts)
4836 (Unresolved SR Conflicts): Adjust.
4837 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
4838 * tests/conflicts.at (S/R in initial): New.
4839
b4c4ccc2
AD
48402002-04-07 Akim Demaille <akim@epita.fr>
4841
4842 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
4843 the RHS of the rules.
4844 * src/output.c (output_gram): Likewise.
4845
bba97eb2
AD
48462002-04-07 Akim Demaille <akim@epita.fr>
4847
4848 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
4849 bucket.
4850 Adjust all dependencies.
4851 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
4852 `number' of the buckets too.
4853 * src/gram.h: Include `symtab.h'.
4854 (associativity): Move to...
4855 * src/symtab.h: here.
4856 No longer include `gram.h'.
4857
c3b407f4
AD
48582002-04-07 Akim Demaille <akim@epita.fr>
4859
4860 * src/gram.h, src/gram.c (rules_rhs_length): New.
4861 (ritem_longest_rhs): Use it.
4862 * src/gram.h (rule_t): `number' is a new member.
4863 * src/reader.c (packgram): Set it.
4864 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
4865 the end of `rules', and count them out of `nrules'.
4866 (reduce_output, dump_grammar): Adjust.
4867 * src/print.c (print_grammar): It is no longer needed to check for
4868 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
4869 * tests/reduce.at (Reduced Automaton): New test.
4870
11652ab3
AD
48712002-04-07 Akim Demaille <akim@epita.fr>
4872
4873 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
4874 lacking `+ 1' to nrules, Bison reported as useless a token if it
4875 was used solely to set the precedence of the last rule...
4876
26b23c1a
AD
48772002-04-07 Akim Demaille <akim@epita.fr>
4878
4879 * data/bison.c++, data/bison.simple: Don't output the current file
4880 name in #line, to avoid useless diffs between two identical
4881 outputs under different names.
4882
18bcecb0
AD
48832002-04-07 Akim Demaille <akim@epita.fr>
4884
4885 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
4886 Normalize loops to using `< nrules + 1', not `<= nrules'.
4887
fa770c86
AD
48882002-04-07 Akim Demaille <akim@epita.fr>
4889
4890 * TODO: Update.
4891
d9b739c3
AD
48922002-04-07 Akim Demaille <akim@epita.fr>
4893
4894 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
4895 bucket.value as bucket.number.
4896
99013900
AD
48972002-04-07 Akim Demaille <akim@epita.fr>
4898
4899 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
4900 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
4901 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
4902 RHS, instead of being an index in RITEMS.
4903
e966383b
PE
49042002-04-04 Paul Eggert <eggert@twinsun.com>
4905
4906 * doc/bison.texinfo: Update copyright date.
4907 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
4908 (Symbols): Warn about running Bison in one character set,
4909 but compiling and/or running in an incompatible one.
4910 Warn about character code 256, too.
4911
49122002-04-03 Paul Eggert <eggert@twinsun.com>
4913
4914 * src/bison.data (YYSTACK_ALLOC): Depend on whether
4915 YYERROR_VERBOSE is nonzero, not whether it is defined.
4916
4917 Merge changes from bison-1_29-branch.
c307773e 4918
8d6c48b9
PE
49192002-03-20 Paul Eggert <eggert@twinsun.com>
4920
4921 Merge fixes from Debian bison_1.34-1.diff.
4922
4923 * configure.in (AC_PREREQ): 2.53.
4924
e53c6322
AD
49252002-03-20 Akim Demaille <akim@epita.fr>
4926
4927 * src/conflicts.c (log_resolution): Argument `resolution' is const.
4928
9ffbeca7
PE
49292002-03-19 Paul Eggert <eggert@twinsun.com>
4930
21db0b2a
PE
4931 * src/bison.simple (YYCOPY): New macro.
4932 (YYSTACK_RELOCATE): Use it.
4933 Remove Type arg; no longer needed. All callers changed.
4934 (yymemcpy): Remove; no longer needed.
4935
9ffbeca7
PE
4936 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
4937 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
4938
642cb8f8
AD
49392002-03-19 Akim Demaille <akim@epita.fr>
4940
4941 Test and fix the #line outputs.
4942
4943 * tests/atlocal.at (GCC): New.
4944 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
4945 (Prologue synch line, ,%union synch line, Postprologue synch line)
4946 (Action synch line, Epilogue synch line): New tests.
4947 * src/reader.c (parse_union_decl): Define the muscle stype_line.
4948 * data/bison.simple, data/bison.c++: Use it.
4949
3c31a486
AD
49502002-03-19 Akim Demaille <akim@epita.fr>
4951
4952 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
4953 (Solved SR Conflicts, %expect not enough, %expect right)
4954 (%expect too much): Move to...
4955 * tests/conflicts.at: this new file.
4956
0d8bed56
AD
49572002-03-19 Akim Demaille <akim@epita.fr>
4958
4959 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
4960 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
4961 that we can move to enums for instance.
4962 * src/output.c (token_definitions_output): Output a list of
4963 `token-name, token-number' instead of the #define.
4964 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
4965
9208d17f
AD
49662002-03-14 Akim Demaille <akim@epita.fr>
4967
4968 Use Gettext 0.11.1.
4969
af27eacb
RA
49702002-03-09 Robert Anisko <robert@lrde.epita.fr>
4971
4972 * data/bison.c++: Make the user able to add members to the generated
4973 parser by subclassing.
4974
9101a310
RA
49752002-03-05 Robert Anisko <robert@lrde.epita.fr>
4976
4977 * src/reader.c (read_additionnal_code): `c' should be an integer, not
4978 a character.
4979 Reported by Nicolas Tisserand and Nicolas Burrus.
4980
fff9bf0b
RA
49812002-03-04 Robert Anisko <robert@lrde.epita.fr>
4982
4983 * src/reader.c: Warn about lacking semi-colons, do not complain.
4984
64dba31e
RA
49852002-03-04 Robert Anisko <robert@lrde.epita.fr>
4986
4987 * data/bison.c++: Remove a debug line.
4988
374f5a14
RA
49892002-03-04 Robert Anisko <robert@lrde.epita.fr>
4990
4991 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
4992 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
4993 provide a default implementation.
4994
bfcf1f3a
AD
49952002-03-04 Akim Demaille <akim@epita.fr>
4996
4997 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
4998 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
4999 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
5000 * tests/semantic.at (Parsing Guards): Similarly.
5001 * src/reader.at (readgram): Complain if the last rule is not ended
5002 with a semi-colon.
5003
65ccf9fc
AD
50042002-03-04 Akim Demaille <akim@epita.fr>
5005
5006 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
5007 * src/closure.c: here.
5008 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
5009 RTC.
5010 * src/warshall.h, src/warshall.c: Remove.
5011 * tests/sets.at (Broken Closure): Adjust.
5012
d0039cbc
AD
50132002-03-04 Akim Demaille <akim@epita.fr>
5014
5015 * src/output.c (output_skeleton): tempdir is const.
5016 bytes_read is unused.
5017
345cea78
AD
50182002-03-04 Akim Demaille <akim@epita.fr>
5019
5020 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
5021 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
5022 Update.
5023 From Michael Hayes.
5024
564801f7
AD
50252002-03-04 Akim Demaille <akim@epita.fr>
5026
5027 * src/closure.c (closure): `r' is unused.
5028
e5352bc7
AD
50292002-03-04 Akim Demaille <akim@epita.fr>
5030
5031 * tests/sets.at (Broken Closure): Add the ending `;'.
5032 * src/reader.at (readgram): Complain if a rule is not ended with a
5033 semi-colon.
5034
914feea9
AD
50352002-03-04 Akim Demaille <akim@epita.fr>
5036
5037 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
5038 (count_sr_conflicts): Use bitset_count.
5039 * src/reduce.c (inaccessable_symbols): Ditto.
5040 (bits_size): Remove.
5041 * src/warshall.h, src/warshall.c: Convert to bitsetv.
5042
f0250de6
AD
50432002-03-04 Akim Demaille <akim@epita.fr>
5044
5045 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
5046 * src/reduce.c: Remove the `bitset_zero's following the
5047 `bitset_create's, as now it is performed by the latter.
5048
ef017502
AD
50492002-03-04 Akim Demaille <akim@epita.fr>
5050
5051 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
5052 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
5053 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
5054 latest sources from Michael.
5055
76514394
AD
50562002-03-04 Akim Demaille <akim@epita.fr>
5057
5058 * src/output.c (output): Don't free the grammar.
5059 * src/reader.c (grammar_free): New.
5060 * src/main.c (main): Call it and don't free symtab here.
5061
55024580
AD
50622002-03-04 Akim Demaille <akim@epita.fr>
5063
5064 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
5065 before returning.
5066 Reported by Benoit Perrot.
5067
f9abaa2c
AD
50682002-03-04 Akim Demaille <akim@epita.fr>
5069
5070 Use bitset operations when possible, not loops over bits.
5071
5072 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
5073 bitset_or.
5074 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
5075 * src/reduce.c (useless_nonterminals): Formatting changes.
5076 * src/warshall.c (TC): Use bitset_or.
5077
0e721e75
AD
50782002-03-04 Akim Demaille <akim@epita.fr>
5079
5080 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
5081 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
5082 Ditto.
5083
0fb1ffb1
AD
50842002-03-04 Akim Demaille <akim@epita.fr>
5085
5086 * src/lalr.c (F): Now a bitset*.
5087 Adjust all dependencies.
5088
b86796bf
AD
50892002-03-04 Akim Demaille <akim@epita.fr>
5090
5091 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
5092 Adjust all dependencies.
5093
602bbf31
AD
50942002-03-04 Akim Demaille <akim@epita.fr>
5095
5096 * src/L0.c, src/LR0.h (nstates): Be size_t.
5097 Adjust comparisons (signed vs unsigned).
5098 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
5099 bitset*.
5100 Adjust all dependencies.
5101
d8a0245c
AD
51022002-03-04 Akim Demaille <akim@epita.fr>
5103
5104 * src/closure.c (firsts): Now, also a bitset.
5105 Adjust all dependencies.
5106 (varsetsize): Remove, now unused.
5107 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
5108
34ba9743
AD
51092002-03-04 Akim Demaille <akim@epita.fr>
5110
5111 * src/print.c: Convert to use bitset.h, not hand coded iterations
5112 over ints.
5113
ed86e78c
AD
51142002-03-04 Akim Demaille <akim@epita.fr>
5115
5116 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
5117
dfdb1797
AD
51182002-03-04 Akim Demaille <akim@epita.fr>
5119
5120 * src/closure.c (ruleset): Be a bitset.
5121 (rulesetsize): Remove.
5122
7086e707
AD
51232002-03-04 Akim Demaille <akim@epita.fr>
5124
5125 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
5126 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
5127 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
5128 * src/closure.c (fderives): Be an array of bitsets.
5129
98254360
RA
51302002-02-28 Robert Anisko <robert@lrde.epita.fr>
5131
5132 * data/bison.c++: Merge the two generated headers. Insert a copyright
5133 notice in each output file.
5134
a75c057f
AD
51352002-02-28 Akim Demaille <akim@epita.fr>
5136
5137 * data/bison.c++: Copy the prologue of bison.simple to fetch
5138 useful M4 definitions, such as b4_header_guard.
5139
06b00abc
AD
51402002-02-25 Akim Demaille <akim@epita.fr>
5141
5142 * src/getargs.c (version): Give the name of the authors, and use a
a75c057f
AD
5143 translator friendly scheme for the bgr
5144 copyright notice.
06b00abc 5145
70e7d534
AD
51462002-02-25 Akim Demaille <akim@epita.fr>
5147
5148 * src/output.c (header_output): Remove, now handled completely via
5149 M4.
5150
abe017f6
AD
51512002-02-25 Akim Demaille <akim@epita.fr>
5152
5153 * m4/m4.m4: New, from CVS Autoconf.
5154 * configure.in: Invoke it.
5155 * src/output.c (output_skeleton): Use its result instead of the
5156 hard coded name.
5157
381fb12e
AD
51582002-02-25 Akim Demaille <akim@epita.fr>
5159
5160 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
5161 Fileutils 4.1.5.
5162 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
5163 * src/output.c (output_skeleton): Use mkstemp to create a real
5164 temporary file.
5165 Move the filling of `skeleton' and its muscle to...
5166 (prepare): here.
5167 (output): Move the definition of the prologue muscle to...
5168 (prepare): here.
5169 * src/system.h (DEFAULT_TMPDIR): New.
5170
6f38107f
PE
51712002-02-14 Paul Eggert <eggert@twinsun.com>
5172
5173 Remove the support for C++ namespace cleanliness; it was
5174 causing more problems than it was curing, since it didn't work
5175 properly on some nonstandard C++ compilers. This can wait
5176 for a proper C++ parser.
5177
5178 * NEWS: Document this.
5179 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
5180 of C++, as it's treated like C now.
5181 * src/bison.simple (YYSTD): Remove.
5182 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
5183 Treat C++ just like Standard C instead of trying to support
5184 namespace cleanliness.
5185
80cce3da
AD
51862002-02-14 Akim Demaille <akim@epita.fr>
5187
5188 * tests/regression.at (else): Adjust to Andreas' change.
5189
842e8679
AD
51902002-02-14 Akim Demaille <akim@epita.fr>
5191
5192 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
5193
4bda3f10
AD
51942002-02-13 Andreas Schwab <schwab@suse.de>
5195
5196 * src/output.c (output_rule_data): Don't output NULL, it might
5197 not be defined yet.
5198
4162fa07 51992002-02-11 Robert Anisko <robert@lrde.epita.fr>
b418ecd8 5200
4162fa07
RA
5201 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
5202 (Copyright notice): Update.
b418ecd8 5203
bd16a5dc
AD
52042002-02-11 Akim Demaille <akim@epita.fr>
5205
5206 * tests/regression.at (%nonassoc and eof): Don't include
5207 nonportable headers.
5208
8d69a1a3
RA
52092002-02-08 Robert Anisko <robert@lrde.epita.fr>
5210
5211 * data/bison.c++: Correct error recovery. Make the user able to
5212 initialize the starting location.
5213
9b2d0677
AD
52142002-02-07 Akim Demaille <akim@epita.fr>
5215
5216 * tests/input.at: New.
5217
69e2658b
RA
52182002-02-07 Robert Anisko <robert@lrde.epita.fr>
5219
5220 * data/bison.c++: Replace some direct m4 expansions by constants. Be
9b2d0677 5221 more consistent when naming methods and variables. Put preprocessor
69e2658b
RA
5222 directives around tables only needed for debugging.
5223
4aacc3a7
RA
52242002-02-07 Robert Anisko <robert@lrde.epita.fr>
5225
5226 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
5227 C++ parsers.
5228 (yy::b4_name::parse): Use print_.
5229
762a801e
RA
52302002-02-07 Robert Anisko <robert@lrde.epita.fr>
5231
5232 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
5233
4bb2bc3f
RA
52342002-02-07 Robert Anisko <robert@lrde.epita.fr>
5235
5236 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
5237 C++ parsers.
5238 (yy::b4_name::parse): Build verbose error messages, and use error_.
5239
6b45a3ca
RA
52402002-02-06 Robert Anisko <robert@lrde.epita.fr>
5241
5242 * data/bison.c++: Fix m4 quoting in comments.
5243
50997c6e
RA
52442002-02-06 Robert Anisko <robert@lrde.epita.fr>
5245
5246 * data/bison.c++: Adjust the parser code. Fix some muscles that were
5247 not expanded by m4.
5248
3f3eed27
AD
52492002-02-05 Akim Demaille <akim@epita.fr>
5250
5251 * data/bison.c++: Adjust to the M4 back end.
5252 More is certainly needed.
5253
be2a1a68
AD
52542002-02-05 Akim Demaille <akim@epita.fr>
5255
5256 Give a try to M4 as a back end.
5257
5258 * lib/readpipe.c: New, from wdiff.
5259 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
5260 BISON_HAIRY.
5261 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
5262 specific values. Now it is m4 that performs the lookup.
5263 * src/parse-skel.y: Remove.
5264 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
5265 * src/output.c (actions_output, guards_output)
5266 (token_definitions_output): No longer keeps track of the output
5267 line number, hence remove the second argument.
5268 (guards_output): Check against the guard member of a rule, not the
5269 action member.
5270 Adjust callers.
5271 (output_skeleton): Don't look for the skeleton location, let m4 do
5272 that.
5273 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
5274 file will be used.
5275 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
5276 (prepare): Given that for the time being changesyntax is not
5277 usable in M4, rename the muscles using `-' to `_'.
5278 Define `defines_flag', `output_parser_name' and `output_header_name'.
5279 * src/output.h (actions_output, guards_output)
5280 (token_definitions_output): Adjust prototypes.
5281 * src/scan-skel.l: Instead of scanning the skeletons, it now
5282 processes the output of m4: `__oline__' and `#output'.
5283 * data/bison.simple: Adjust to be used by M4(sugar).
5284 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
5285 to date.
5286 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
5287 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
5288 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
5289 shamelessly stolen from CVS Autoconf.
5290
beda758b
AD
52912002-02-05 Akim Demaille <akim@epita.fr>
5292
5293 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
5294 * configure.in: Check for the declarations of free and malloc.
5295 * src/muscle_tab.c: Adjust.
5296
5ece6d43
AD
52972002-02-05 Akim Demaille <akim@epita.fr>
5298
5299 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
5300 which have no values.
5301
5bb18f9a
AD
53022002-02-05 Akim Demaille <akim@epita.fr>
5303
5304 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
5305 * data/: here.
5306
894dd62e
PE
53072002-01-29 Paul Eggert <eggert@twinsun.com>
5308
5309 * src/bison.simple (YYSIZE_T): Do not define merely because
5310 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
5311 On some platforms, <alloca.h> does not declare YYSTD (size_t).
5312
82841af7
AD
53132002-01-27 Akim Demaille <akim@epita.fr>
5314
5315 Fix `%nonassoc and eof'.
5316
5317 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
5318 which were not properly copied! Replace
5319 memcpy (res->errs, src->errs, src->nerrs);
5320 with
5321 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
5322 !!!
5323 * tests/regression.at (%nonassoc and eof): Adjust to newest
5324 Autotest: `.' is not in the PATH.
5325
318b76e9
AD
53262002-01-27 Akim Demaille <akim@epita.fr>
5327
5328 * tests/sets.at (AT_EXTRACT_SETS): New.
5329 (Nullable): Use it.
5330 (Firsts): New.
5331
30d2f3d5
AD
53322002-01-26 Akim Demaille <akim@epita.fr>
5333
5334 * tests/actions.at, tests/calc.at, tests/headers.at,
5335 * tests/torture.at: Adjust to the newest Autotest which no longer
5336 forces `.' in the PATH.
5337
30f8c395
AD
53382002-01-25 Akim Demaille <akim@epita.fr>
5339
5340 * tests/regression.at (%nonassoc and eof): New.
5341 Suggested by Robert Anisko.
5342
29ae55f1
AD
53432002-01-24 Akim Demaille <akim@epita.fr>
5344
5345 Bison dumps core when trying to complain about broken input files.
5346 Reported by Cris van Pelt.
5347
5348 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
5349 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
5350 into...
5351 (Invalid inputs): Strengthen: exercise parse_percent_token.
5352
2b548aa6
RA
53532002-01-24 Robert Anisko <robert.anisko@epita.fr>
5354
5355 * src/Makefile.am: Add bison.c++.
5356 * src/bison.c++: New skeleton.
5357
bb0146c2
AD
53582002-01-21 Paolo Bonzini <bonzini@gnu.org>
5359
5360 * po/it.po: New.
5361
bec30531
AD
53622002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
5363
5364 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
5365
fc6edc45
MA
53662002-01-20 Marc Autret <marc@gnu.org>
5367
5368 * src/files.c (compute_output_file_names): Fix
5369
5e5d5415
MA
53702002-01-20 Marc Autret <marc@gnu.org>
5371
5372 * tests/output.at: New test.
5373 * src/files.c (compute_base_names): Don't map extensions when
5374 the YACC flag is set, use defaults.
5375 Reported by Evgeny Stambulchik.
5376
44ea3fbd
MA
53772002-01-20 Marc Autret <marc@gnu.org>
5378
bb0146c2 5379 * src/system.h: Need to define __attribute__ away for non-GCC
44ea3fbd
MA
5380 compilers as well (i.e. the vendor C compiler).
5381 Suggested by Albert Chin-A-Young.
5382
338963d1
TVH
53832002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
5384
5385 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
5386 canonical definition.
5387 * src/system.h: Use the canonical definition for PARAMS (avoids
5388 a conflict with the macro from lib/hash.h).
5389
c57b2479
AD
53902002-01-11 Akim Demaille <akim@epita.fr>
5391
5392 * configure.in: Use AC_FUNC_STRNLEN.
d9e9746c 5393 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
c57b2479 5394
b85810ae
AD
53952002-01-09 Akim Demaille <akim@epita.fr>
5396
5397 * src/files.c, src/files.h (output_infix): New.
5398 (tab_extension): Remove.
5399 (compute_base_names): Compute the former, drop the latter.
5400 * src/output.c (prepare): Insert the muscles `output-infix', and
5401 `output-suffix'.
5402 * src/parse-skel.y (string, string.1): New.
5403 (section.header): Use it.
5404 (section.yacc): Remove.
5405 (prefix): Remove too.
5406 * src/scan-skel.l: Adjust.
5407 * src/bison.simple, src/bison.hairy: Adjust.
5408
cae60122
AD
54092002-01-09 Akim Demaille <akim@epita.fr>
5410
5411 * configure.in (WERROR_CFLAGS): Compute it.
5412 * src/Makefile.am (CFLAGS): Pass it.
5413 * tests/atlocal.in (CFLAGS): Idem.
5414 * src/files.c: Fix a few warnings.
5415 (get_extension_index): Remove, unused.
5416
ae404801
AD
54172002-01-08 Akim Demaille <akim@epita.fr>
5418
5419 * src/getargs.c (AS_FILE_NAME): New.
5420 (getargs): Use it to convert DOSish file names.
5421 * src/files.c (base_name): Rename as full_base_name to avoid
5422 clashes with `base_name ()'.
5423 (filename_split): New.
5424 (compute_base_names): N-th rewrite, using filename_split.
5425
22312b71
AD
54262002-01-08 Akim Demaille <akim@epita.fr>
5427
5428 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
5429 New, stolen from the Fileutils 4.1.
5430 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
5431 * configure.in: Check for the presence of memrchr, and of its
5432 prototype.
5433
a67cef01
TVH
54342002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
5435
5436 * lib/hash.h (__P): Added definition for this macro.
5437 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
5438 BUILT_SOURCES, to ensure they are generated first.
5439 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
5440 %error-verbose to allow bootstrapping with bison 1.30x.
5441
2b25d624
AD
54422002-01-06 Akim Demaille <akim@epita.fr>
5443
5444 * src/reader.c (parse_braces): Don't fetch the next char, the
5445 convention is to fetch on entry.
5446 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
5447 'switch' without a following semicolon.
5448 * tests/regression.at (braces parsing): New.
5449
3460813b
AD
54502002-01-06 Akim Demaille <akim@epita.fr>
5451
5452 Bison is dead wrong in its RR conflict reports.
5453
5454 * tests/torture.at (GNU Cim Grammar): New.
5455 * src/conflicts.c (count_rr_conflicts): Fix.
5456
73784c64
AD
54572002-01-06 Akim Demaille <akim@epita.fr>
5458
5459 Creating package.m4 from configure.ac causes too many problems.
5460
5461 * tests/Makefile.am (package.m4): Create it by hand,
5462 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
5463
25d81090
AD
54642002-01-06 Akim Demaille <akim@epita.fr>
5465
5466 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
5467 skeleton.h.
5468
a9b8959e
PE
54692002-01-04 Paul Eggert <eggert@twinsun.com>
5470
5471 * doc/bison.texinfo (Debugging):
5472 Remove YYSTDERR; it's no longer defined or used.
5473 Also, s/cstdio.h/cstdio/.
5474
25d81090
AD
54752002-01-03 Akim Demaille <akim@epita.fr>
5476
5477 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
5478
1109455c
AD
54792002-01-03 Akim Demaille <akim@epita.fr>
5480
5481 * src/parse-skel.y (process_skeleton): Don't bind the parser's
5482 tracing code to --trace, wait for a better --trace option, with
5483 args.
5484
7ea5e977
AD
54852002-01-03 Akim Demaille <akim@epita.fr>
5486
5487 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
5488 The ISO C++ standard is extremely clear about it: stderr is
5489 considered a macro, not a regular symbol (see table 94 `Header
5490 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
5491 Therefore std:: does not apply to it. It still does with fprintf.
5492 Also, s/cstdio.h/cstdio/.
5493
fab5b110
AD
54942002-01-03 Akim Demaille <akim@epita.fr>
5495
5496 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
5497 for non system headers.
5498
aed7fd9b
AD
54992002-01-02 Akim Demaille <akim@epita.fr>
5500
5501 Equip the skeleton chain with location tracking, runtime trace,
5502 pure parser and scanner.
5503
5504 * src/parse-skel.y: Request a pure parser, locations, and prefix
5505 renaming.
5506 (%union): Having several members with the same type does not help
5507 type mismatches, simplify.
5508 (YYPRINT, yyprint): New.
5509 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
5510 (skel_error): this.
5511 Handle locations.
5512 * src/scan-skel.l: Adjust to these changes.
5513 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
5514 (LOCATION_PRINT, skel_control_t): New.
5515
24fad99e
AD
55162001-12-30 Akim Demaille <akim@epita.fr>
5517
5518 * src/parse-skel.y: Get rid of the shift/reduce conflict:
5519 replace `gb' with BLANKS.
5520 * src/scan-skel.l: Adjust.
5521
a4b36db4
AD
55222001-12-30 Akim Demaille <akim@epita.fr>
5523
5524 * src/system.h: We don't need nor want bcopy.
5525 Throw away MS-DOS crap: we don't need getpid.
5526 * configure.in: We don't need strndup. It was even causing
5527 problems: because Flex includes the headers *before* us,
5528 _GNU_SOURCE is not defined by config.h, and therefore strndup was
5529 not visible.
5530 * lib/xstrndup.c: New.
5531 * src/scan-skel.l: Use it.
5532 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
5533 * src/parse-skel.y: Use %directives instead of #defines.
5534
1239777d
AD
55352001-12-30 Akim Demaille <akim@epita.fr>
5536
5537 * src/skeleton.h: New.
5538 * src/output.c (output_parser, output_master_parser): Remove, dead
5539 code.
5540 * src/output.h (get_lines_number, actions_output, guards_output)
5541 (token_definitions_output): Prototype them.
5542 * src/parse-skel.y: Add the license notice.
5543 Include output.h and skeleton.h.
5544 (process_skeleton): Returns void, and takes a single parameter.
5545 * src/scan-skel.l: Add the license notice.
5546 Include skeleton.h.
5547 Don't use %option yylineno: it seems that then Flex imagines
5548 REJECT has been used, and therefore it won't reallocate its
5549 buffers (which makes no other sense to me than a bug). It results
5550 in warnings for `unused: yy_flex_realloc'.
5551
9b3add5b
RA
55522001-12-30 Robert Anisko <robert.anisko@epita.fr>
5553
5554 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
5555 (MUSCLE_INSERT_PREFIX): ...to there.
5556 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
5557 (MUSCLE_INSERT_PREFIX): Move from here...
5558
5559 * src/bison.hairy: Add a section directive. Put braces around muscle
5560 names. This parser skeleton is still broken, but Bison should not
5561 choke on a bad muscle 'syntax'.
5562 * src/bison.simple: Add a section directive. Put braces around muscle
5563 names.
5564
5565 * src/files.h (strsuffix, stringappend): Add declarations.
5566 (tab_extension): Add declaration.
5567 (short_base_name): Add declaration.
5568
5569 * src/files.c (strsuffix, stringappend): No longer static. These
5570 functions are used in the skeleton parser.
5571 (tab_extension): New.
5572 (compute_base_names): Use the computations done in this function
fab5b110 5573 to guess if the generated parsers should have '.tab' in their
9b3add5b
RA
5574 names.
5575 (short_base_name): No longer static.
5576
5577 * src/output.c (output_skeleton): New.
5578 (output): Disable call to output_master_parser, and give a try to
5579 a new skeleton handling system.
5580 (guards_output, actions_output): No longer static.
5581 (token_definitions_output, get_lines_number): No longer static.
5582
5583 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
5584
fab5b110 5585 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
9b3add5b
RA
5586 parse-skel.y.
5587
5588 * src/parse-skel.y: New file.
5589 * src/scan-skel.l: New file.
5590
b5b61c61
AD
55912001-12-29 Akim Demaille <akim@epita.fr>
5592
5593 %name-prefix is broken.
5594
5595 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
5596 Adjust all dependencies.
5597 * tests/headers.at (export YYLTYPE): Strengthen this test: use
5598 %name-prefix.
5599
5600 Renaming yylval but not yylloc is not consistent. Now we do.
5601
5602 * src/bison.simple: Prefix yylloc if used.
5603 * doc/bison.texinfo (Decl Summary): Document that.
5604
8c9a50be
AD
56052001-12-29 Akim Demaille <akim@epita.fr>
5606
5607 * doc/bison.texinfo: Promote `%long-directive' over
5608 `%long_directive'.
5609 Remove all references to fixed-output-files, yacc is enough.
5610
d99361e6
AD
56112001-12-29 Akim Demaille <akim@epita.fr>
5612
5613 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
5614 user prologue. These are defaults.
5615 * tests/actions.at (Mid-rule actions): Make sure the user can
5616 define YYDEBUG and YYERROR_VERBOSE.
5617
b9cecb91
AD
56182001-12-29 Akim Demaille <akim@epita.fr>
5619
5620 * src/output.c (header_output): Don't forget to export YYLTYPE and
5621 yylloc.
5622 * tests/headers.at (export YYLTYPE): New, make sure it does.
5623 * tests/regression.at (%union and --defines, Invalid CPP headers):
5624 Move to...
5625 * tests/headers.at: here.
5626
aea13e97
AD
56272001-12-29 Akim Demaille <akim@epita.fr>
5628
5629 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
5630
931394cb
AD
56312001-12-29 Akim Demaille <akim@epita.fr>
5632
5633 * tests/actions.at (Mid-rule actions): Output on a single line
5634 instead of several.
5635
704a47c4
AD
56362001-12-29 Akim Demaille <akim@epita.fr>
5637
5638 * doc/bison.texinfo: Formatting changes.
5639
091e20bb
AD
56402001-12-29 Akim Demaille <akim@epita.fr>
5641
5642 Don't store the token defs in a muscle, just be ready to output it
5643 on command. Now possible via `symbols'. Fixes a memory leak.
5644
5645 * src/output.c (token_definitions_output): New.
5646 (output_parser, header_output): Use it.
5647 * src/reader.c (symbols_save): Remove.
5648
cce71710
AD
56492001-12-29 Akim Demaille <akim@epita.fr>
5650
5651 * src/bison.simple: Do not provide a default for YYSTYPE and
5652 YYLTYPE before the user's prologue. Otherwise it's hardly... a
5653 default.
5654
82c035a8
AD
56552001-12-29 Akim Demaille <akim@epita.fr>
5656
5657 Mid-rule actions are simply... ignored!
5658
5659 * src/reader.c (readgram): Be sure to attach mid-rule actions to
5660 the empty-rule associated to the dummy symbol, not to the host
5661 rule.
5662 * tests/actions.at (Mid-rule actions): New.
5663
8419d367
AD
56642001-12-29 Akim Demaille <akim@epita.fr>
5665
5666 Memory leak.
5667
5668 * src/reader.c (reader): Free grammar.
5669
375d5806
AD
56702001-12-29 Akim Demaille <akim@epita.fr>
5671
5672 Memory leak.
5673
5674 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
5675 since it allocates it for each state, although only one is needed.
5676 (allocate_storage): Do it here.
5677
f51cb8ff
AD
56782001-12-29 Akim Demaille <akim@epita.fr>
5679
5680 * src/options.h, src/options.c (create_long_option_table): Rename
5681 as...
5682 (long_option_table_new): this, with a clearer prototype.
5683 (percent_table): Remove, unused,
5684 * src/getargs.c (getargs): Adjust.
5685
29e88316
AD
56862001-12-29 Akim Demaille <akim@epita.fr>
5687
5688 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
5689 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
5690 as states.
5691
b9f71f19
AD
56922001-12-29 Akim Demaille <akim@epita.fr>
5693
5694 * src/lalr.c (build_relations): Rename `states' as `states1'.
5695 Sorry, I don't understand exactly what it is, no better name...
5696
1a2b5d37
AD
56972001-12-29 Akim Demaille <akim@epita.fr>
5698
5699 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
5700 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
5701 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
5702 as rules.
5703
1cca533e
AD
57042001-12-29 Akim Demaille <akim@epita.fr>
5705
5706 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
5707 ago.
5708
c03ae966
AD
57092001-12-29 Akim Demaille <akim@epita.fr>
5710
5711 * src/reader.c, src/reader.h (user_toknums): Remove.
5712 Adjust all users to use symbols[i]->user_token_number.
5713
5a670b1e
AD
57142001-12-29 Akim Demaille <akim@epita.fr>
5715
5716 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
5717 Adjust all users to use symbols[i]->prec or ->assoc.
5718
ad949da9
AD
57192001-12-29 Akim Demaille <akim@epita.fr>
5720
5721 * src/reader.c, src/reader.h (tags): Remove.
5722 Adjust all users to use symbols[i]->tag.
5723
0e78e603
AD
57242001-12-29 Akim Demaille <akim@epita.fr>
5725
5726 * src/gram.h, src/gram.c (symbols): New, similar to state_table
5727 and rule_table.
5728 * src/reader.c (packsymbols): Fill this table.
5729 Drop sprec.
5730 * src/conflicts.c (resolve_sr_conflict): Adjust.
5731 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
5732 single table.
5733 Use symbols[i]->tag instead of tags[i].
5734
213e640e
AD
57352001-12-29 Akim Demaille <akim@epita.fr>
5736
5737 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
5738 In addition, put a comment in there, to replace...
5739 * tests/regression.at (%union and C comments): Remove.
5740
e7b8bef1
AD
57412001-12-29 Akim Demaille <akim@epita.fr>
5742
5743 * tests/regression.at (Web2c Actions): Blindly move the actual
5744 output as expected output. The contents *seem* right to me, but I
5745 can't pretend reading perfectly parser tables... Nonetheless, all
5746 the other tests pass correctly, the table look OK, even though the
5747 presence of `$axiom' is to be noted: AFAICS it is useless (but
5748 harmless).
5749
b68e7744
AD
57502001-12-29 Akim Demaille <akim@epita.fr>
5751
5752 * src/reader.c (readgram): Don't add the rule 0 if there were no
5753 rules read. In other words, add it _after_ having performed
5754 grammar sanity checks.
5755 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
5756
78d5bae9
AD
57572001-12-29 Akim Demaille <akim@epita.fr>
5758
5759 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
5760 visible, and some states have now a different number.
5761
ff442794
AD
57622001-12-29 Akim Demaille <akim@epita.fr>
5763
5764 * src/reader.c (readgram): Bind the initial rule's lineno to that
5765 of the first rule.
5766 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
5767 (Solved SR Conflicts): Adjust rule 0's line number.
5768
610ab194
AD
57692001-12-29 Akim Demaille <akim@epita.fr>
5770
5771 Fix the `GAWK Grammar' failure.
5772
5773 * src/LR0.c (final_state): Initialize to -1 so that we do compute
5774 the reductions of the first state which was mistakenly confused
5775 with the final state because precisely final_state was initialized
5776 to 0.
5777 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
5778 now noticed by Bison.
5779 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
5780 have a reduction on $default.
5781
29d29c8f
AD
57822001-12-29 Akim Demaille <akim@epita.fr>
5783
5784 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
5785 rule line numbers.
5786 * src/closure.c (print_closure): Likewise.
5787 * src/derives.c (print_derives): Likewise.
5788 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
5789 now.
5790
7c6b64d0
AD
57912001-12-29 Akim Demaille <akim@epita.fr>
5792
5793 * src/lalr.c (lookaheads_print): New.
5794 (lalr): Call it when --trace-flag.
5795 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
5796 are dumped.
5797
3d4daee3
AD
57982001-12-29 Akim Demaille <akim@epita.fr>
5799
5800 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
5801 when walking through ritem, even via rule->rhs.
5802 * src/reduce.c (dump_grammar, useful_production, reduce_output)
5803 (useful_production, useless_nonterminals): Likewise.
5804 (reduce_grammar_tables): Likewise, plus update nritems.
5805 * src/nullable.c (set_nullable): Likewise.
5806 * src/lalr.c (build_relations): Likewise.
5807 * tests/sets.at (Nullable): Adjust.
5808 Fortunately, now, the $axiom is no longer nullable.
5809
9e7f6bbd
AD
58102001-12-29 Akim Demaille <akim@epita.fr>
5811
5812 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
5813 the 0-sentinel.
5814 * src/gram.c (ritem_longest_rhs): Likewise.
5815 * src/reduce.c (nonterminals_reduce): Likewise.
5816 * src/print_graph.c (print_graph): Likewise.
5817 * src/output.c (output_rule_data): Likewise.
5818 * src/nullable.c (set_nullable): Likewise.
5819
255ef638
AD
58202001-12-29 Akim Demaille <akim@epita.fr>
5821
5822 * src/output.c: Comment changes.
5823
0d8a7363
AD
58242001-12-27 Paul Eggert <eggert@twinsun.com>
5825
5826 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
5827 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
5828 Sparc, as they were causing more porting problems than the
5829 (minor) performance improvement was worth.
5830
5831 Also, catch up with 1.31's YYSTD.
5832
3db472b9
AD
58332001-12-27 Akim Demaille <akim@epita.fr>
5834
5835 * src/output.c (output_gram): Rely on nritems, not the
5836 0-sentinel. See below.
5837 Use -1 as separator, not 0.
5838 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
5839 Rely on -1 as separator in yyrhs, instead of 0.
5840 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
5841 twice `Now at end of input', therefore there are two lines less to
5842 expect.
5843
b365aa05
AD
58442001-12-27 Akim Demaille <akim@epita.fr>
5845
5846 * tests/regression.at (Unresolved SR Conflicts):
5847 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
5848 below.
5849
30171f79
AD
58502001-12-27 Akim Demaille <akim@epita.fr>
5851
5852 * src/LR0.c (new_state): Recognize the final state by the fact it
5853 is reached by eoftoken.
5854 (insert_start_shifting_state, insert_eof_shifting_state)
5855 (insert_accepting_state, augment_automaton): Remove, since now
5856 these states are automatically computed from the initial state.
5857 (generate_states): Adjust.
5858 * src/print.c: When reporting a rule number to the user, substract
5859 1, so that the axiom rule is rule 0, and the first user rule is 1.
5860 * src/reduce.c: Likewise.
5861 * src/print_graph.c (print_core): For the time being, just as for
5862 the report, depend upon --trace-flags to dump the full set of
5863 items.
5864 * src/reader.c (readgram): Once the grammar read, insert the rule
5865 0: `$axiom: START-SYMBOL $'.
5866 * tests/set.at: Adjust: rule 0 is now displayed, and since the
5867 number of the states has changed (the final state is no longer
5868 necessarily the last), catch up.
5869
75142d45
AD
58702001-12-27 Akim Demaille <akim@epita.fr>
5871
5872 Try to make the use of the eoftoken valid. Given that its value
5873 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
5874 is used instead of > 0 where appropriate, (ii), depend upon nritems
5875 instead of the 0-sentinel.
5876
5877 * src/gram.h, src/gram.c (nritems): New.
5878 Expected to be duplication of nitems, but for the time being...
5879 * src/reader.c (packgram): Assert nritems and nitems are equal.
5880 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
5881 * src/closure.c (print_closure, print_fderives): Likewise.
5882 * src/gram.c (ritem_print): Likewise.
5883 * src/print.c (print_core, print_grammar): Likewise.
5884 * src/print_graph.c: Likewise.
5885
b7c49edf
AD
58862001-12-27 Akim Demaille <akim@epita.fr>
5887
5888 * src/main.c (main): If there are complains after grammar
5889 reductions, then output the report anyway if requested, then die.
5890 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
5891 * src/reader.c (eoftoken): New.
5892 (parse_token_decl): If the token being defined has value `0', it
5893 is the eoftoken.
5894 (packsymbols): No longer hack `tags' to insert `$' by hand.
5895 Be sure to preserve the value of the eoftoken.
5896 (reader): Make sure eoftoken is defined.
5897 Initialize nsyms to 0: now eoftoken is created just like the others.
5898 * src/print.c (print_grammar): Don't special case the eof token.
5899 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
5900 lie anyway, albeit pleasant.
5901 * tests/calc.at: Exercise error messages with eoftoken.
5902 Change the grammar so that empty input is invalid.
5903 Adjust expectations.
5904 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
5905
ec2da99f
AD
59062001-12-27 Akim Demaille <akim@epita.fr>
5907
5908 * configure.in: Check the protos of strchr ans strspn.
5909 Replace strchr if needed.
5910 * src/system.h: Provide the protos of strchr, strspn and memchr if
5911 missing.
5912 * lib/strchr.c: New.
5913 * src/reader.c (symbols_save): Use strchr.
5914
8adfa272
AD
59152001-12-27 Akim Demaille <akim@epita.fr>
5916
5917 * src/print.c, src/print_graph.c (escape): New.
5918 Use it to quote the TAGS outputs.
5919 * src/print_graph.c (print_state): Now errors are in red, and
5920 reductions in green.
5921 Prefer high to wide: output the state number on a line of its own.
5922
80dac38c
AD
59232001-12-27 Akim Demaille <akim@epita.fr>
5924
5925 * src/state.h, src/state.c (reductions_new): New.
5926 * src/LR0.c (set_state_table): Let all the states have a
5927 `reductions', even if reduced to 0.
5928 (save_reductions): Adjust.
5929 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
5930 * src/print.c (print_reductions, print_actions): Adjust.
5931 * src/output.c (action_row): Adjust.
5932
2cec70b9
AD
59332001-12-27 Akim Demaille <akim@epita.fr>
5934
5935 * src/state.h, src/state.c (errs_new, errs_dup): New.
5936 * src/LR0.c (set_state_table): Let all the states have an errs,
5937 even if reduced to 0.
5938 * src/print.c (print_errs, print_reductions): Adjust.
5939 * src/output.c (output_actions, action_row): Adjust.
5940 * src/conflicts.c (resolve_sr_conflict): Adjust.
5941
13ca549a
AD
59422001-12-27 Akim Demaille <akim@epita.fr>
5943
5944 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
5945
5092aba5
AD
59462001-12-27 Akim Demaille <akim@epita.fr>
5947
5948 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
5949 * src/print.c: here.
5950 (lookaheadset, shiftset): New, used as additional storage by
5951 print_reductions.
5952 (print_results): Adjust.
5953 (print_shifts, print_gotos, print_errs): New, extracted from...
5954 (print_actions): here.
5955 * src/print_graph.c (print_actions): Remove dead code.
5956
11e2beca
AD
59572001-12-27 Akim Demaille <akim@epita.fr>
5958
5959 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
5960 `$n' and `@n'.
5961
dac3c910
AD
59622001-12-27 Akim Demaille <akim@epita.fr>
5963
5964 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
5965 (build_relations): Adjust.
5966
d0b0fefa
AD
59672001-12-27 Akim Demaille <akim@epita.fr>
5968
5969 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
5970 duplication.
5971
adc8c848
AD
59722001-12-27 Akim Demaille <akim@epita.fr>
5973
5974 * src/reader.c (packgram): Catch nitems overflows.
5975
14d293ac
AD
59762001-12-27 Akim Demaille <akim@epita.fr>
5977
5978 * src/files.c, src/files.h (guard_obstack): Remove.
5979 * src/output.c (output): Adjust.
5980 * src/reader.c (parse_braces): New, factoring...
5981 (copy_action, copy_guard): these two which are renamed as...
5982 (parse_action, parse_guard): these.
5983 As a voluntary consequence, using braces around guards is now
5984 mandatory.
5985
f499b062
AD
59862001-12-27 Akim Demaille <akim@epita.fr>
5987
5988 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
5989 * src/reader.c (symbol_list): `guard' and `guard_line' are new
5990 members.
5991 (symbol_list_new): Adjust.
5992 (copy_action): action_line is the first line, not the last.
5993 (copy_guard): Just as for actions, store the `action' only, not
5994 the switch/case/break flesh.
5995 Don't parse the user action that might follow the guard, let...
5996 (readgram): do it, i.e., now, there can be an action after a
5997 guard.
5998 In other words the guard is just explicitly optional.
5999 (packgram): Adjust.
6000 * src/output.c (guards_output): New.
6001 (output_parser): Call it when needed.
6002 (output): Also free the guard and attrs obstacks.
6003 * src/files.c, src/files.h (obstack_save): Remove.
6004 (output_files): Remove.
6005 As a result, if one needs the former `.act' file, using an
6006 appropriate skeleton which requires actions and guards is now
6007 required.
6008 * src/main.c (main): Adjust.
6009 * tests/semantic.at: New.
6010 * tests/regression.at: Use `input.y' as input file name.
6011 Avoid 8+3 problems by requiring input.c when the test needs the
6012 parser.
6013
d945f5cd
AD
60142001-12-27 Akim Demaille <akim@epita.fr>
6015
6016 * src/reader.c (symbol_list_new): Be sure to initialize all the
6017 fields.
6018
d200e455
AD
60192001-12-27 Akim Demaille <akim@epita.fr>
6020
6021 All the hacks using a final pseudo state are now useless.
6022
6023 * src/LR0.c (set_state_table): state_table holds exactly nstates.
6024 * src/lalr.c (nLA): New.
6025 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
6026 instead of lookaheadsp from the pseudo state (nstate + 1).
6027
f9507c28
AD
60282001-12-27 Akim Demaille <akim@epita.fr>
6029
6030 * src/output.c (action_row, token_actions): Use a state_t instead
6031 of a integer, and nlookaheads instead of the following state's
6032 lookaheadsp.
6033
065fbd27
AD
60342001-12-27 Akim Demaille <akim@epita.fr>
6035
6036 * src/conflicts.c (log_resolution, flush_shift)
6037 (resolve_sr_conflict, set_conflicts, solve_conflicts)
6038 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
6039 (conflicts_print, print_reductions): Use a state_t instead of an
6040 integer when referring to a state.
6041 As much as possible, depend upon nlookaheads, instead of the
6042 `lookaheadsp' member of the following state (since lookaheads of
6043 successive states are successive, the difference between state n + 1
6044 and n served as the number of lookaheads for state n).
6045 * src/lalr.c (add_lookback_edge): Likewise.
6046 * src/print.c (print_core, print_actions, print_state)
6047 (print_results): Likewise.
6048 * src/print_graph.c (print_core, print_actions, print_state)
6049 (print_graph): Likewise.
6050 * src/conflicts.h: Adjust.
6051
1b177bd7
AD
60522001-12-27 Akim Demaille <akim@epita.fr>
6053
6054 * src/bison.hairy: Formatting/comment changes.
6055 ANSIfy.
6056 Remove `register' indications.
6057 Add plenty of `static'.
6058
7742ddeb
AD
60592001-12-27 Akim Demaille <akim@epita.fr>
6060
6061 * src/output.c (prepare): Drop the muscle `ntbase' which
6062 duplicates ntokens.
6063 * src/bison.simple: Formatting/comment changes.
6064 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
6065 is an undocumented synonym.
6066
1fa14068
AD
60672001-12-22 Akim Demaille <akim@epita.fr>
6068
6069 * src/output.c (output_table_data): Change the prototype to use
6070 `int' for array ranges: some invocations do pass an int, not a
6071 short.
6072 Reported by Wayne Green.
6073
b9752825
AD
60742001-12-22 Akim Demaille <akim@epita.fr>
6075
6076 Some actions of web2c.y are improperly triggered.
6077 Reported by Mike Castle.
6078
6079 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
6080 * tests/regression.at (Web2c): Rename as...
6081 (Web2c Report): this.
6082 (Web2c Actions): New.
6083
776209d6
AD
60842001-12-22 Akim Demaille <akim@epita.fr>
6085
6086 Reductions in web2c.y are improperly reported.
6087 Reported by Mike Castle.
6088
6089 * src/conflicts.c (print_reductions): Fix.
6090 * tests/regression.at (Web2c): New.
6091
275fc3ad
AD
60922001-12-18 Akim Demaille <akim@epita.fr>
6093
6094 Some host fail on `assert (!"foo")', which expands to
6095 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
6096 Reported by Nelson Beebee.
6097
6098 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
6099 `#define it_succeeded 0' and `assert (it_succeeded)'.
6100
897668ee
MA
61012001-12-17 Marc Autret <autret_m@epita.fr>
6102
6103 * src/bison.simple: Don't hard code the skeleton line and filename.
6104 * src/output.c (output_parser): Rename 'line' as 'output_line'.
6105 New line counter 'skeleton_line' (skeleton-line muscle).
6106
ab3399e0
PE
61072001-12-17 Paul Eggert <eggert@twinsun.com>
6108
6109 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
6110 YYDEBUG must be defined to a nonzero value.
6111
6112 * src/bison.simple (yytname): Do not assume that the user defines
6113 YYDEBUG to a properly parenthesized expression.
6114
3877f72b
AD
61152001-12-17 Akim Demaille <akim@epita.fr>
6116
6117 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
6118 nlookaheads is a new member.
6119 Adjust all users.
6120 * src/lalr.h (nlookaheads): Remove this orphan declaration.
6121 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
6122 state.
776209d6 6123
331dbc1b
AD
61242001-12-17 Akim Demaille <akim@epita.fr>
6125
6126 * src/files.h, src/files.c (open_files, close_files): Remove.
6127 * src/main.c (main): Don't open/close files, nor invoke lex_free,
6128 let...
6129 * src/reader.c (reader): Do it.
776209d6 6130
be750e4c
AD
61312001-12-17 Akim Demaille <akim@epita.fr>
6132
6133 * src/conflicts.c (print_reductions): Formatting changes.
776209d6 6134
709ae8c6
AD
61352001-12-17 Akim Demaille <akim@epita.fr>
6136
6137 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
6138 (flush_reduce): New.
6139 (resolve_sr_conflict): Adjust.
776209d6 6140
f87685c3
AD
61412001-12-17 Akim Demaille <akim@epita.fr>
6142
6143 * src/output.c (output_obstack): Be static and rename as...
6144 (format_obstack): this, to avoid any confusion with files.c's
6145 output_obstack.
6146 * src/reader.h (muscle_obstack): Move to...
6147 * src/output.h: here, since it's defined in output.c.
6148
837491d8
AD
61492001-12-17 Akim Demaille <akim@epita.fr>
6150
6151 * src/output.c (action_row, save_column, default_goto)
6152 (sort_actions, matching_state, pack_vector): Better variable
6153 locality.
6154
796d61fb
AD
61552001-12-17 Akim Demaille <akim@epita.fr>
6156
6157 * src/output.c: Various formatting changes.
776209d6 6158
64d15509
AD
61592001-12-17 Akim Demaille <akim@epita.fr>
6160
6161 * src/files.c (output_files): Free the output_obstack.
6162 * src/main.c (main): Call print and print_graph conditionally.
6163 * src/print.c (print): Work unconditionally.
6164 * src/print_graph.c (print_graph): Work unconditionally.
6165 * src/conflicts.c (log_resolution): Output only if verbose_flag.
6166
fbc8ecb7
MA
61672001-12-16 Marc Autret <autret_m@epita.fr>
6168
6169 * src/output.c (actions_output): Fix. When we use %no-lines,
6170 there is one less line per action.
6171
f0440388
MA
61722001-12-16 Marc Autret <autret_m@epita.fr>
6173
6174 * src/bison.simple: Remove a useless #line directive.
6175 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
6176 * src/output.c (get_lines_number): New.
776209d6 6177 (output_parser): Adjust, now takes care about the lines of a
f0440388
MA
6178 output muscles.
6179 Fix line numbering.
6180 (actions_output): Computes the number of lines taken by actions.
6181 (output_master_parser): Insert new skeleton which is the name of
6182 the output parser file name.
6183
a79986b8
MA
61842001-12-15 Marc Autret <autret_m@epita.fr>
6185
6186 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
6187
4ec8e00f
MA
61882001-12-15 Marc Autret <autret_m@epita.fr>
6189
6190 * src/output.c (output_gram): Keep track of the hairy one.
6191
1a4648ff
AD
61922001-12-15 Akim Demaille <akim@epita.fr>
6193
6194 Make `make distcheck' work.
6195
6196 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
6197 system.h which uses libgettext.h.
6198
9c2c67e6
AD
61992001-12-15 Akim Demaille <akim@epita.fr>
6200
6201 * src/nullable.c (set_nullable): Useless rules must be skipped,
6202 otherwise, since we range over their symbols, we might look at a
6203 nonterminal which no longer ``exists'', i.e., it is not counted in
6204 `nvars', hence we overflow our arrays.
6205
93ede233
AD
62062001-12-15 Akim Demaille <akim@epita.fr>
6207
6208 The header can also be produced directly, without any obstack!
6209 Yahoo!
6210
6211 * src/files.c, src/files.h (defines_obstack): Remove.
6212 (compute_header_macro): Global.
6213 (defines_obstack_save): Remove.
6214 * src/reader.c (parse_union_decl): No longer output to
6215 defines_obstack: its content can be found in the `stype' muscle
6216 anyway.
6217 (output_token_translations): Merge into...
6218 (symbols_output): this.
6219 Rename as...
6220 (symbols_save): this.
6221 (reader): Adjust.
6222 * src/output.c (header_output): New.
6223 (output): Call it.
6224
2666f928
AD
62252001-12-15 Akim Demaille <akim@epita.fr>
6226
6227 * src/reader.c (parse_union_decl): Instead of handling two obstack
6228 simultaneously, use one to define the `stype' muscle, and use the
6229 value of the latter to fill defines_obstack.
6230 (copy_comment): Remove.
6231 (copy_comment2): Work for a single obstack.
6232 Rename as...
6233 (copy_comment): this.
6234
428046f8
AD
62352001-12-15 Akim Demaille <akim@epita.fr>
6236
6237 * src/lex.c, src/lex.h (xgetc): No longer static.
6238 * src/reader.c (parse_union_decl): Revamp.
6239
ea52d706
AD
62402001-12-15 Akim Demaille <akim@epita.fr>
6241
6242 Still making progress in separating Bison into (i) input, (ii)
6243 process, (iii) output: now we can directly output the parser file
6244 without using table_obstack at all.
6245
6246 * src/files.c, src/files.h (table_obstack): Bye bye.
6247 (parser_file_name): New.
6248 * src/files.c (compute_output_file_names): Compute it.
6249 * src/output.c (actions_output, output_parser)
6250 (output_master_parser): To a file instead of an obstack.
6251
3f96f4dc
AD
62522001-12-15 Akim Demaille <akim@epita.fr>
6253
6254 Attach actions to rules, instead of pre-outputting them to
6255 actions_obstack.
6256
6257 * src/gram.h (rule_t): action and action_line are new members.
6258 * src/reader.c (symbol_list): Likewise.
6259 (copy_action): Save the actions within the rule.
6260 (packgram): Save them in rule_table.
6261 * src/output.c (actions_output): New.
6262 (output_parser): Use it on `%%actions'.
6263 (output_rule_data): Don't free rule_table.
6264 (output): Do it.
6265 (prepare): Don't save the `action' muscle.
6266 * src/bison.simple: s/%%action/%%actions/.
6267
51576fb3
AD
62682001-12-15 Akim Demaille <akim@epita.fr>
6269
6270 * src/reader.c (copy_action): When --yacc, don't append a `;'
6271 to the user action: let it fail if lacking.
dee049eb 6272 Suggested by Arnold Robbins and Tom Tromey.
51576fb3 6273
2648a72d
AD
62742001-12-14 Akim Demaille <akim@epita.fr>
6275
6276 * src/lex.c (literalchar): Simply return the char you decoded, non
6277 longer mess around with obstacks and int pointers.
6278 Adjust all callers.
6279
92790e5b
AD
62802001-12-14 Akim Demaille <akim@epita.fr>
6281
6282 * src/lex.c (literalchar): Don't escape the special characters,
6283 just decode them, and keep them as char (before, eol was output as
6284 the 2 char string `\n' etc.).
6285 * src/output.c (output_rule_data): Use quotearg to output the
6286 token strings.
6287
927c1557
PE
62882001-12-13 Paul Eggert <eggert@twinsun.com>
6289
6290 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
6291 Do not infringe on the global user namespace when using C++.
6292 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
6293 All uses of `fprintf' and `stderr' changed.
6294
6295 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
6296
ed8e1f68
AD
62972001-12-13 Akim Demaille <akim@epita.fr>
6298
6299 The computation of nullable is broken: it doesn't handle empty
6300 RHS's properly.
6301
6302 * tests/torture.at (GNU AWK Grammar): New.
6303 * tests/sets.at (Nullable): New.
6304 * src/nullable.c (set_nullable): Instead of blindly looping over
6305 `ritems', loop over the rules, and then over their rhs's.
6306
6307 Work around Autotest bugs.
6308
6309 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
6310 frame, because Autotest understand lines starting with a `+' as
6311 traces from the shell. Then, they are not processed properly.
6312 Admittedly an Autotest bug, but we don't have time to wait for
6313 Autotest to catch up.
6314 * tests/regression.at (Broken Closure): Adjust to the new table
6315 frames.
6316 Move to...
6317 * tests/sets.at: here.
6318
cb581495
AD
63192001-12-13 Akim Demaille <akim@epita.fr>
6320
6321 * src/closure.c (closure): Use nrules instead of playing tricks
6322 with BITS_PER_WORD.
6323
2e729273
AD
63242001-12-13 Akim Demaille <akim@epita.fr>
6325
6326 * src/print.c (print_actions): Output the handling of `$' as the
6327 traces do: shifting the token EOF. Before EOF was treated as a
6328 nonterminal.
6329 * tests/regression.at: Adjust some tests.
6330 * src/print_graph.c (print_core): Complete the set of items via
6331 closure. The next-to-final and final states are still unsatisfying,
6332 but that's to be addressed elsewhere.
6333 No longer output the rule numbers, but do output the state number.
6334 A single loop for the shifts + gotos is enough, but picked a
6335 distinct color for each.
6336 (print_graph): Initialize and finalize closure.
6337
107f7dfb
AD
63382001-12-13 Akim Demaille <akim@epita.fr>
6339
6340 * src/reader.c (readgram): Remove dead code, an strip useless
6341 braces.
6342 (get_type): Remove, unused.
6343
9b53a24f
AD
63442001-12-12 Akim Demaille <akim@epita.fr>
6345
6346 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
6347 on that of lib/error.c.
6348
dbfb6dcd
AD
63492001-12-12 Akim Demaille <akim@epita.fr>
6350
6351 Some hosts don't like `/' in includes.
6352
6353 * src/system.h: Include libgettext.h without qualifying the path.
6354 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
6355 $(top_srcdir).
6356
c25fb648
MA
63572001-12-11 Marc Autret <autret_m@epita.fr>
6358
6359 * src/output.c (output_parser): Remove useless muscle.
6360
710ddc4f
MA
63612001-12-11 Marc Autret <autret_m@epita.fr>
6362
6363 * src/bison.simple: Remove #line just before %%epilogue. It
6364 is now handled in ...
6365 * src/reader.c (read_additionnal_code): Add the output of a
6366 #line for the epilogue.
6367
e83d80b8
MA
63682001-12-10 Marc Autret <autret_m@epita.fr>
6369
927c1557 6370 * src/reader.c (copy_definition): Re-use CPP-outed code which
e83d80b8
MA
6371 replace precedent remove.
6372 * src/bison.simple: Remove #line before %%prologue because
6373 %%input-line is wrong at this time.
6374
971d5158
MA
63752001-12-10 Marc Autret <autret_m@epita.fr>
6376
6377 * src/reader.c (symbols_output): Clean up.
927c1557 6378 * src/output.c (output_gram, output): Clean up.
971d5158 6379
5edafffd
AD
63802001-12-10 Akim Demaille <akim@epita.fr>
6381
6382 * src/lalr.c (initialize_lookaheads): New. Extracted from...
6383 * src/LR0.c (set_state_table): here.
6384 * src/lalr.c (lalr): Call it.
6385
0279f8e9
AD
63862001-12-10 Akim Demaille <akim@epita.fr>
6387
6388 * src/state.h (shifts): Remove the `number' member: shifts are
6389 attached to state, hence no longer need to be labelled with a
6390 state number.
6391
190c4f5f
AD
63922001-12-10 Akim Demaille <akim@epita.fr>
6393
6394 Now that states have a complete set of members, the linked list of
6395 shifts is useless: just fill directly the state's shifts member.
6396
6397 * src/state.h (shifts): Remove the `next' member.
6398 * src/LR0.c (first_state, last_state): Remove.
6399 Adjust the callers.
6400 (augment_automaton): Don't look for the shifts that must be added
6401 a shift on EOF: it is those of the state we looked for! But now,
6402 since shifts are attached, it is no longer needed to looking
6403 merely by its id: its number.
6404
2a73b93d
AD
64052001-12-10 Akim Demaille <akim@epita.fr>
6406
6407 * src/LR0.c (augment_automaton): Better variable locality.
6408 Remove an impossible branch: if there is a state corresponding to
6409 the start symbol being shifted, then there is shift for the start
6410 symbol from the initial state.
6411
74392f6a
AD
64122001-12-10 Akim Demaille <akim@epita.fr>
6413
6414 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
6415 only when appropriate: when insert_start_shifting_state' is not
6416 invoked.
6417 * tests/regression.at (Rule Line Numbers): Adjust.
6418
37c82725
AD
64192001-12-10 Akim Demaille <akim@epita.fr>
6420
6421 * src/LR0.c (augment_automaton): Now that all states have shifts,
6422 merge the two cases addition shifts to the initial state.
6423
6a164e0c
AD
64242001-12-10 Akim Demaille <akim@epita.fr>
6425
6426 * src/lalr.c (set_state_table): Move to...
6427 * src/LR0.c: here.
6428 * src/lalr.c (lalr): Don't call it...
6429 * src/LR0.c (generate_states): do it.
6430 * src/LR0.h (first_state): Remove, only the table is used.
6431
7215de24
AD
64322001-12-10 Akim Demaille <akim@epita.fr>
6433
6434 * src/LR0.h (first_shift, first_reduction): Remove.
6435 * src/lalr.c: Don't use first_shift: find shifts through the
6436 states.
6437
80e25d4d
AD
64382001-12-10 Akim Demaille <akim@epita.fr>
6439
6440 * src/LR0.c: Attach shifts to states as soon as they are
6441 computed.
6442 * src/lalr.c (set_state_table): Instead of assigning shifts to
6443 state, just assert that the mapping was properly done.
6444
0ab3728b
AD
64452001-12-10 Akim Demaille <akim@epita.fr>
6446
6447 * src/LR0.c (insert_start_shift): Rename as...
6448 (insert_start_shifting_state): this.
6449 (insert_eof_shifting_state, insert_accepting_state): New.
6450 (augment_automaton): Adjust.
6451 Better locality of the variables.
6452 When looking if the start_symbol is shifted from the initial
6453 state, using `while (... symbol != start_symbol ...)' sounds
6454 better than `while (... symbol < start_symbol ...)': If fail
6455 to see how the order between symbols could be relevant!
6456
78af9bbc
AD
64572001-12-10 Akim Demaille <akim@epita.fr>
6458
6459 * src/getargs.h: Don't declare `spec_name_prefix' and
6460 `spec_file_prefix', declared by src/files.h.
6461 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
6462 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
6463 * src/output.c (prepare): Adjust.
6464 * src/reader.c (symbols_output): Likewise.
6465 * src/vmsgetargs.c: Vaguely adjust, but who cares?
6466
bdef2a41
AD
64672001-12-10 Akim Demaille <akim@epita.fr>
6468
6469 * src/muscle_tab.c (muscle_init): NULL is a better default than
6470 `"0"'.
6471
3735969c
AD
64722001-12-10 Akim Demaille <akim@epita.fr>
6473
6474 * src/reader.c (reader): Calling symbols_output once is enough.
6475
49701457
AD
64762001-12-10 Akim Demaille <akim@epita.fr>
6477
6478 Now that states have a complete set of members, the linked list of
6479 reductions is useless: just fill directly the state's reductions
6480 member.
6481
6482 * src/state.h (struct reductions): Remove member `number' and
6483 `next'.
6484 * src/LR0.c (first_reduction, last_reduction): Remove.
6485 (save_reductions): Don't link the new reductions, store them in
6486 this_state.
6487 * src/lalr.c (set_state_table): No need to attach reductions to
6488 states, it's already done.
6489 * src/output.c (output_actions): No longer free the shifts, then
6490 the reductions, then the states: free all the states and their
6491 members.
6492
0edad749
AD
64932001-12-10 Akim Demaille <akim@epita.fr>
6494
6495 * src/options.c (OPTN, DRTV, BOTH): New.
6496 (option_table): Use them.
6497
0edad749
AD
6498 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
6499 the job of system.h.
6500 * src/options.c: Don't include stdio.h and xalloc.h for the same
6501 reasons.
6502
5449dd0f
AD
65032001-12-10 Akim Demaille <akim@epita.fr>
6504
6505 * src/output.c (output, prepare): Make sure the values of the
6506 muscles `action' and `prologue' are 0-terminated.
6507
a870c567
AD
65082001-12-10 Akim Demaille <akim@epita.fr>
6509
6510 Clean up GCC warnings.
6511
6512 * src/reader.c (copy_action): `buf' is not used.
6513 (parse_skel_decl): Be static.
6514 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
6515 * src/options.h (create_long_option_table): Have a real prototype.
6516 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
6517 (hash_delete_at): Return const void *.
6518 Adjust casts to preserve the const.
6519
80df8768
AD
65202001-12-10 Akim Demaille <akim@epita.fr>
6521
6522 * configure.in: Require 2.52g.
6523 M4 is not needed, but AUTOM4TE is.
6524 * m4/m4.m4: Remove.
6525 * tests/Makefile.am: Adjust.
6526
f693ad14
AD
65272001-12-10 Akim Demaille <akim@epita.fr>
6528
6529 One structure for states is enough, even though theoretically
6530 there are LR(0) states and LALR(1) states.
6531
6532 * src/lalr.h (state_t): Remove.
6533 (state_table): Be state_t **, not state_t *.
6534 * src/state.h (core, CORE_ALLOC): Rename as...
6535 (state_t, STATE_ALLOC): this.
6536 Add the LALR(1) members: shifts, reductions, errs.
6537 * src/LR0.c (state_table): Rename as...
6538 (state_hash): this, to avoid name clashes with the global
6539 `state_table'.
6540 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
6541 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
6542
74ffbcb6
AD
65432001-12-10 Akim Demaille <akim@epita.fr>
6544
6545 Bison dumps core on bash.y.
6546 Reported by Pascal Bart.
6547
6548 * src/warshall.c (bitmatrix_print): New.
6549 (TC): Use it.
6550 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
6551 j must be the outer loop.
6552 * tests/regression.at (Broken Closure): New.
6553
07708e19
AD
65542001-12-05 Akim Demaille <akim@epita.fr>
6555
6556 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
6557 its argument.
6558