]> git.saurik.com Git - bison.git/blame_incremental - ChangeLog
* tests/action.at, tests/calc.at, tests/conflicts.at,
[bison.git] / ChangeLog
... / ...
CommitLineData
12002-10-14 Paul Eggert <eggert@twinsun.com>
2
3 * tests/action.at, tests/calc.at, tests/conflicts.at,
4 tests/cxx-type.at, tests/headers.at, tests/input.at,
5 tests/regression.at, tests/synclines.at, tests/torture.at:
6 Say "bison -o foo.c foo.y", not "bison foo.y -o foo.c",
7 so that the tests still work even if POSIXLY_CORRECT is set.
8 * doc/bison.texinfo (Rpcalc Compile, Invocation): Likewise.
9
10 * data/c.m4 (b4_int_type): Use yysigned_char instead of signed char,
11 for portability to K&R hosts. Fix typo: signed char is guaranteed
12 only to 127, not to 128.
13 * data/glr.c (yysigned_char): New type.
14 * data/yacc.c (yysigned_char): Likewise.
15 * tests/regression.at (Web2c Actions): signed char -> yysigned_char.
16
172002-10-13 Paul Eggert <eggert@twinsun.com>
18
19 * data/yacc.c (yyparse): Rewrite to avoid "comparison is always
20 true due to limited range of data type" warning from GCC.
21
22 * data/c.m4 (b4_token_defines): Protect against double-inclusion
23 by wrapping enum yytokentype's definition inside #ifndef
24 YYTOKENTYPE. This undoes a bug I introduced on 2002-10-12.
25
262002-10-13 Akim Demaille <akim@epita.fr>
27
28 * data/glr.c (yyglrShiftDefer, yyaddDeferredAction, yydoAction):
29 Un yy- yyrhs to avoid the name clash with the global YYRHS.
30
312002-10-13 Akim Demaille <akim@epita.fr>
32
33 * Makefile.maint: Update from Autoconf 2.54.
34 * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Remove, shipped with 2.54.
35
362002-10-13 Akim Demaille <akim@epita.fr>
37
38 * src/print.c (print_state): Separate the list of solved conflicts
39 from the other items.
40 * tests/conflicts.at (Resolved SR Conflicts): Adjust.
41
422002-10-13 Akim Demaille <akim@epita.fr>
43
44 Let nondeterministic skeletons be usable with deterministic
45 tables.
46
47 With the patch, GAWK compiled by GCC without -O2 passes its test
48 suite using a GLR parser driven by LALR tables. It fails with -O2
49 because `struct stat' gives two different answers on my machine:
50 88 (definition of an auto var) and later 96 (memset on this var).
51 Hence the stack is badly corrumpted. The headers inclusion is to
52 blame: if I move the awk.h inclusion before GLR's system header
53 inclusion, the two struct stat have the same size.
54
55 * src/tables.c (pack_table): Always create conflict_table.
56 (token_actions): Always create conflict_list.
57 * data/glr.c (YYFLAG): Remove, unused.
58
592002-10-13 Akim Demaille <akim@epita.fr>
60
61 * configure.ac (AC_GNU_SOURCE): Use it instead of hand written code.
62 (O0FLAGS): New.
63 (VALGRIND, GXX): New.
64 * tests/atlocal.in (CFLAGS): Use O0FLAGS.
65 * tests/bison.in: Run $PREBISON a pre-command.
66 * tests/Makefile.am (maintainer-check, maintainer-check-valgrind)
67 (maintainer-check-g++): New.
68 * Makefile.am (maintainer-check): New.
69
702002-10-13 Akim Demaille <akim@epita.fr>
71
72 * data/glr.c: Formatting changes.
73 Tweak some trace messages to match yacc.c's.
74
752002-10-13 Akim Demaille <akim@epita.fr>
76
77 GLR parsers sometimes raise parse errors instead of performing the
78 default reduction.
79 Reported by Charles-Henry de Boysson.
80
81 * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't
82 check the length of the traces when %glr.
83 (_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from
84 GLR's traces.
85 (AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New.
86 Test GLR parsers.
87 * data/glr.c (YYLEFTMOST_STATE): Fix its value.
88 (yyltype): Remove the yy prefix from the member names.
89 (yytable): Complete its comment.
90 (yygetLRActions): Map error action number from YYTABLE from
91 YYTABLE_NINF to 0.
92 (yyisErrorAction): No longer compare YYACTION to YYPACT_NINF
93 (which was a bug: it should have been YYTABEL_NINF, and yet it was
94 not satisfying as we could compare an YYACTION computed from
95 YYDEFACT to YYTABLE_NINF although they are unrelated): 0 is the
96 only value for error actions.
97 (yyreportParseError): In verbose parse error messages, don't issue
98 `error' in the list of expected tokens.
99 * data/yacc.c (yyparse) <yybackup>: Rewrite the decoding of the
100 next action to perform to match glr.c's decoding.
101 (yytable): Complete its comment.
102
1032002-10-13 Paul Eggert <eggert@twinsun.com>
104
105 Fix problem reported by Henrik Grubbstroem in
106 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001670.html>:
107 "nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected,
108 because the Bison parser reads the second action before reducing
109 the first one.
110 * src/scan-gram.l (rule_length): New static var.
111 Use it to keep track of the rule length in the scanner, since
112 we can't expect the parser to be in lock-step sync with the scanner.
113 (handle_action_dollar, handle_action_at): Use this var.
114 * tests/actions.at (Exotic Dollars): Test for the problem.
115
1162002-10-12 Paul Eggert <eggert@twinsun.com>
117
118 * lib/timevar.c [! IN_GCC && HAVE_SYS_TIME_H]: Include <sys/time.h>.
119 * m4/timevar.m4 (BISON_PREREQ_TIMEVAR): Check for <sys/time.h>.
120 Include <sys/time.h> when checking for clock_t and struct tms.
121 Use same include order as source.
122 This is for the SunOS 4.1.4 porting bug reported by Peter Klein in
123 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001674.html>.
124
125 * lib/timevar.c: Update copyright date and clarify comments.
126 (get_time) [IN_GCC]: Keep the GCC version for reference.
127
128 * lib/timevar.c, lib/timevar.h, lib/timevar.def: Import
129 GCC version as of today, then merge Bison's changes.
130 Change "GCC" to "Bison" in copyright notice. timevar.def's
131 author is Akim, so change that too.
132
133 * src/reader.c (grammar_current_rule_check):
134 Don't worry about the default action if $$ is untyped.
135 Prevents bogus warnings reported by Jim Gifford in
136 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001673.html>.
137
138 * data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE.
139 * data/glr.c, data/lalr1.cc, data/yacc.c:
140 Output token definitions before the first part of user declarations.
141 Fixes compatibility problem reported by Jim Gifford for kbd in
142 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001672.html>.
143
1442002-10-11 Paul Eggert <eggert@twinsun.com>
145
146 * data/yacc.c (yyreport_parse_error): Remove, putting its body into...
147 (yyparse): here. This undoes some of the 2002-07-25 change.
148 Compatibility problem reported by Ralf S. Engelschall with
149 OSSP cfg <http://www.ossp.org/pkg/lib/cfg/>.
150
1512002-10-11 Akim Demaille <akim@epita.fr>
152
153 * tests/regression.at Characters Escapes): New.
154 * src/scan-gram.l (SC_ESCAPED_CHARACTER): Accept \' in strings and
155 characters.
156 Reported by Jan Nieuwenhuizen.
157
1582002-10-11 Akim Demaille <akim@epita.fr>
159
160 * po/id.po: New.
161
1622002-10-10 Paul Eggert <eggert@twinsun.com>
163
164 Portability fixes for bitsets; this also avoids several GCC
165 warnings.
166
167 * lib/abitset.c: Include <stddef.h>, for offsetof.
168 * lib/lbitset.c: Likewise.
169
170 * lib/abitset.c (abitset_bytes): Return a size that is aligned
171 properly for vectors of objects. Do not assume that adding a
172 header size to a multiple of a word size yields a value that is
173 properly aligned for the whole union.
174 * lib/bitsetv.c (bitsetv_alloc): Likewise.
175
176 * lib/bitset_stats.c (bitset_stats_bytes): Adjust to new,
177 unique names for structures.
178 * lib/ebitset.c (ebitset_bytes): Likewise.
179 * lib/lbitset.c (lbitset_bytes): Likewise.
180
181 * lib/abitset.c (abitset_ones, abitset_zero, abitset_empty_p,
182 abitset_copy1, abitset_not, abitset_equal_p, abitset_subset_p,
183 abitset_disjoint_p, abitset_and, abitset_and_cmp, abitset_andn,
184 abitset_andn_cmp, abitset_or, abitset_or_cmp, abitset_xor,
185 abitset_xor_cmp, abitset_and_or, abitset_and_or_cmp,
186 abitset_andn_or, abitset_andn_or_cmp, abitset_or_and,
187 abitset_or_and_cmp, abitset_copy): Supply prototype decls,
188 to improve the type-checking that GCC can do.
189 * lib/bitset.c (bitset_op4_cmp): Likewise.
190 * lib/bitset_stats.c (bitset_stats_count,
191 bitset_stats_empty_p, bitset_stats_ones, bitset_stats_zero,
192 bitset_stats_copy, bitset_stats_disjoint_p,
193 bitset_stats_equal_p, bitset_stats_not, bitset_stats_subset_p,
194 bitset_stats_and, bitset_stats_and_cmp, bitset_stats_andn,
195 bitset_stats_andn_cmp, bitset_stats_or, bitset_stats_or_cmp,
196 bitset_stats_xor, bitset_stats_xor_cmp, bitset_stats_and_or,
197 bitset_stats_and_or_cmp, bitset_stats_andn_or,
198 bitset_stats_andn_or_cmp, bitset_stats_or_and,
199 bitset_stats_or_and_cmp): Likewise.
200 * lib/lbitset.c (lbitset_and, lbitset_and_cmp, lbitset_andn,
201 lbitset_andn_cmp, lbitset_or, lbitset_or_cmp, lbitset_xor,
202 lbitset_xor_cmp, lbitset_empty_p, lbitset_ones, lbitset_not,
203 lbitset_subset_p, lbitset_disjoint_p, debug_lbitset): Likewise.
204
205 * lib/abitset.h: Include bitset.h, not bbitset.h.
206 * lib/ebitset.h: Likewise.
207 * lib/lbitset.h: Likewise.
208
209 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): New types.
210 All instances of parameters of type enum bitset_opts are now of
211 type enum_bitset_opts, to conform to the C Standard, and similarly
212 for enum_bitset_type.
213 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
214 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
215
216 Do not use "struct bitset_struct" to mean different things in
217 different modules. Not only is this confusing, it violates
218 the C Standard, which requires that structure types in different
219 modules must be compatible if one is to be passed to the other.
220 * lib/bbitset.h (bitset): Now points to a union, not to a struct.
221 All instances of "struct bitset_struct *" replaced with "bitset".
222 * lib/bitset.h (struct bitset_struct): Remove, replacing with....
223 (union bitset_union, struct abitset_struct, struct ebitset_struct,
224 struct lbitset_struct, struct bitset_stats_struct): New types.
225 All uses of struct bitset_struct changed to union bitset_union,
226 etc.
227 * lib/abitset.c (struct abitset_struct, abitset,
228 struct bitset_struct): Remove.
229 * lib/bitset_stats.c (struct bitset_stats_struct, bitset_stats,
230 struct bitset_struct): Remove.
231 * lib/ebitset.c (struct ebitset_struct, ebitset, struct
232 bitset_struct): Remove.
233 * lib/lbitset.c (struct lbitset_struct, lbitset, bitset_struct):
234 Likewise.
235
236 Do not call a function of type T using a call that assumes the
237 function is of a different type U. Standard C requires that a
238 function must be called with a type that is compatible with its
239 definition.
240 * lib/bbitset.h (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
241 New decls.
242 * lib/bitset.c (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
243 New functions.
244 * lib/ebitset.c (PFV): Remove.
245 * lib/lbitset.c (PFV): Likewise.
246 * lib/ebitset.c (ebitset_and, ebitset_andn, ebitset_or,
247 ebitset_xor, ebitset_copy, ebitset_ones, ebitset_empty_p): New
248 decls.
249 (ebitset_and, ebitset_andn, ebitset_or, ebitset_xor): New functions.
250 (ebitset_vtable): Use them.
251 * lib/lbitset.c (lbitset_and, lbitset_andn, lbitset_or,
252 lbitset_xor): New functions.
253 (lbitset_vtable): Use them.
254
255 * lib/bitset.h (bitset_next, bitset_prev, bitset_only_set_p):
256 Declare.
257
258 * lib/bitsetv.c (bitsetv_alloc): Add a cast to (void *) to avoid a
259 GCC warning.
260 * lib/lbitset.c (LBITSET_CURRENT1): Likewise.
261 Use offsetof, for simplicity.
262
2632002-10-06 Paul Eggert <eggert@twinsun.com>
264
265 * lib/bitset.h (bitset_reset): Do not assume that bitset_word is
266 the same width as int. This reapplies a hunk of the 2002-08-12 patch
267 <http://mail.gnu.org/pipermail/bison-patches/2002-August/001111.html>,
268 which was inadvertently undone by the 2002-09-30 patch.
269 * lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is
270 the same width as int.
271
2722002-10-04 Paul Eggert <eggert@twinsun.com>
273
274 Version 1.50.
275
276 * configure.ac (AC_INIT), NEWS: Increment version number.
277
278 * doc/bison.texinfo: Minor spelling, grammar, and white space
279 fixes.
280 (Symbols): Mention that any negative value returned from yylex
281 signifies end-of-input. Warn about negative chars. Mention
282 the portable Standard C character set.
283
284 The GNU coding standard says CFLAGS and YFLAGS are reserved
285 for the installer to set.
286 * lib/Makefile.am (AM_CFLAGS): Renamed from CFLAGS.
287 * src/Makefile.am (AM_CFLAGS): Likewise.
288 (AM_YFLAGS): Renamed from YFLAGS.
289
290 Fix some MAX and MIN problems.
291 * src/gram.h (ITEM_NUMBER_MIN): MIN_MAX -> INT_MIN.
292 * src/lalr.h (GOTO_NUMBER_MAX): INT_MAX -> SHRT_MAX.
293 * src/symtab.h (SYMBOL_NUMBER_MAX): New macro.
294 * src/reader.c (reader): Use it.
295
296 * tests/regression.at (Braces parsing): Use grep, not fgrep, as
297 POSIX 1003.1-2001 has removed fgrep.
298
2992002-10-04 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
300
301 * lib/bbitset.h (BITSET_WINDEX_MAX): Redefine so that it cannot be
302 interpreted as signed.
303 * lib/ebitset.c (ebitset_list): Fix bug.
304
3052002-10-01 Paul Eggert <eggert@twinsun.com>
306
307 More fixes for 64-bit hosts and large bitsets.
308
309 * lib/abitset.c (struct abitset_struct.n_bits, abitset_small_list,
310 abitset_size, abitset_list, abitset_list_reverse, abitset_list):
311 Use bitset_bindex, not int or unsigned int or size_t, to count bits.
312 * lib/bbitset.h (struct bitset_vtable.size, struct bitset_vtable.count,
313 struct bitset_vtable.list, struct bitset_vtable.list_reverse,
314 bitset_count_, bitset_next, bitset_prev, bitset_first, bitset_last,
315 bitset_count_): Likewise.
316 * lib/bitset.h (bitset_iterator.num, bitset_iterator.i,
317 bitset_first, bitset_last): Likewise.
318 * lib/bitset_stats.c (bitset_stats_size, bitset_stats_list,
319 bitset_stats_list_reverse, bitset_stats_size,
320 bitset_stats_count, bitset_stats_list, bitset_stat_list_reverse):
321 Likewise.
322 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
323 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
324 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
325 bitsetv_reflexive_transitive_closure): Likewise.
326 * lib/bitsetv.h (bitsetv_alloc, bitsetv_create): Likewise.
327 * lib/ebitset.c (ebitset_size, ebitset_list, ebitset_list_reverse):
328 Likewise.
329 * lib/lbitset.c (lbitset_size, lbitset_list, lbitset_list_merge):
330 Likewise.
331
332 * lib/abitset.c (abitset_ones, abitset_zero, abitset_bytes):
333 Use size_t, not unsigned int, to count bytes.
334 * lib/abitset.h (abitset_bytes): Likewise.
335 * lib/bitset.c (bitset_bytes, bitset_alloc, bitset_obstack_alloc):
336 Likewise.
337 * lib/bitset.h (bitset_bytes): Likewise.
338 * lib/bitset_stats.c (bitset_stats_bytes, bitset_stats_init): Likewise.
339 * lib/bitset_stats.h (bitset_stats_bytes): Likewise.
340 * lib/bitsetv.c (bitsetv_alloc): Likewise.
341 * lib/ebitset.c (ebitset_bytes): Likewise.
342 * lib/ebitset.h (ebitset_bytes): Likewise.
343 * lib/lbitset.c (lbitset_bytes): Likewise.
344 * lib/lbitset.h (lbitset_bytes): Likewise.
345
346 * lib/abitset.c (abitset_empty_p, abitset_not, abitset_equal_p,
347 abitset_subset_p, abitset_disjoint_p, abitset_and,
348 abitset_and_cmp, abitset_andn, abitset_andn_cmp, abitset_or,
349 abitset_or_cmp, abitset_xor, abitset_xor_cmp, abitset_and_or,
350 abitset_and_or_cmp, abitset_andn_or, abitset_andn_or_cmp,
351 abitset_or_and, abitset_or_and_cmp):
352 Use bitset_windex instead of unsigned int.
353 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
354 * lib/ebitset.c (struct ebitset_struct.size, ebitset_elts_grow,
355 ebitset_elt_add, ebitset_elt_remove, ebitset_weed,
356 ebitset_elt_find, ebitset_list_reverse, ebitset_list, ebitset_init):
357 Likewise.
358 * lib/lbitset.c (lbitset_ones, lbitset_not): Likewise.
359
360 * lib/bitset.c (bitset_print):
361 Use proper printf formats for widths of integer types.
362 * lib/bitset_stats.c (bitset_percent_histogram_print,
363 bitset_log_histogram_print, bitset_stats_print_1): Likewise.
364 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
365 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
366 * lib/lbitset.c (lbitset_bytes): Likewise.
367
368 * lib/bbitset.h (BITSET_BINDEX_MAX, BITSET_WINDEX_MAX,
369 BITSET_SIZE_MAX): New macros.
370 (BITSET_INDEX_MAX): Remove. It wasn't right, since it assumed that
371 sizeof (bitset_word) == sizeof (bitset_windex). All uses changed
372 to BITSET_WINDEX_MAX.
373
374 * lib/bitset.c (bitset_next, bitset_prev, bitset_first,
375 bitset_last): Return BITSET_BINDEX_MAX (not -1) for no value,
376 since we now return the bitset_bindex type (not int).
377
378 * lib/bitsetv.c (bitsetv_alloc): Check for arithmetic overflow
379 when computing sizes.
380 * lib/ebitset.c (ebitset_elts_grow): Likewise.
381
382 * lib/lbitset.c (lbitset_elt_find): Simplify windex calculation
383 and avoid cast to unsigned.
384
3852002-09-30 Akim Demaille <akim@epita.fr>
386
387 * lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
388 * lib/bitset_stats.c, lib/bitsetv.c, lib/ebitset.c, lib/lbitset.c:
389 Updates from Michael Hayes.
390
3912002-09-30 Art Haas <ahaas@neosoft.com>
392
393 * configure.ac: Update AC_OUTPUT and AM_CONFIG_HEADER
394 invocations.
395 * tests/cxx-type.at (declarator): Don't rely on NDEBUG being not
396 defined.
397
3982002-09-27 Akim Demaille <akim@epita.fr>
399
400 Version 1.49c.
401
4022002-09-27 Akim Demaille <akim@epita.fr>
403
404 * configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7.
405 (Because of AC_LIBSOURCE).
406
4072002-09-27 Akim Demaille <akim@epita.fr>
408
409 Playing with Autoscan.
410
411 * configure.ac: Remove the old LIBOBJ tweaks.
412 (AC_REPLACE_FUNCS): Add strrchr and strtol.
413 * lib/strrchr.c: New.
414 * lib/strtol.c: New, from the Coreutils 4.5.1.
415
4162002-09-27 Akim Demaille <akim@epita.fr>
417
418 Playing with Autoscan.
419
420 * m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New.
421 * lib/Makefile.am (libbison_a_SOURCES): No longer include
422 argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd.
423 * lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the
424 Coreutils 4.5.1.
425
4262002-09-24 Akim Demaille <akim@epita.fr>
427
428 * doc/bison.texinfo (Stack Overflow): xref to Recursion.
429 (Frequently Asked Questions, Parser Stack Overflow): New.
430
4312002-09-13 Akim Demaille <akim@epita.fr>
432
433 Playing with autoscan.
434
435 * src/reader.c (get_merge_function): Use xstrdup, not strdup.
436 * src/files.c (skeleton_find): Remove, unused.
437 * m4/memcmp.m4: New, from the Coreutils 4.5.1.
438 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP.
439
4402002-09-13 Akim Demaille <akim@epita.fr>
441
442 * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3.
443 * Makefile.am (AUTOMAKE_OPTIONS): Don't.
444
4452002-09-13 Akim Demaille <akim@epita.fr>
446
447 * configure.ac: Require 2.54.
448 s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/.
449 s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/.
450 * m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4:
451 Remove, provided by Autoconf macros.
452
4532002-09-12 Akim Demaille <akim@epita.fr>
454
455 * m4/prereq.m4: Update, from Coreutils 4.5.1.
456
4572002-09-12 Akim Demaille <akim@epita.fr>
458
459 * m4/prereq.m4: Update, from Fileutils 4.1.5.
460 * configure.ac (jm_PREREQ_TEMPNAME): Invoke it.
461 Reported by Martin Mokrejs.
462
4632002-09-10 Akim Demaille <akim@epita.fr>
464
465 * src/parse-gram.y: Associate a human readable string to each
466 token type.
467 * tests/regression.at (Invalid inputs): Adjust.
468
4692002-09-10 Gary V. Vaughan <gary@gnu.org>
470
471 * tests/Makefile.am ($(srcdir)/package.m4): Bison now ships
472 with an Autoconf-2.5x style configure.ac.
473
4742002-09-06 Paul Eggert <eggert@twinsun.com>
475
476 * doc/bison.texinfo (Conditions): Make explicit that the GPL
477 exception applies only to yacc.c. This is a modification of a
478 patch originally suggested by Akim Demaille.
479
4802002-09-06 Akim Demaille <akim@epita.fr>
481
482 * data/c.m4 (b4_copyright): Move the GPL exception comment from
483 here to...
484 * data/yacc.c: here.
485
486 * data/lalr1.cc (struct yyltype): Don't define it, since we use
487 LocationType.
488 (b4_ltype): Default to yy::Location from location.hh.
489
4902002-09-04 Jim Meyering <jim@meyering.net>
491
492 * data/yacc.c: Guard the declaration of yytoknum also with
493 `#ifdef YYPRINT', so it is declared only when used.
494
4952002-09-04 Akim Demaille <akim@epita.fr>
496
497 * configure.in: Rename as...
498 * configure.ac: this.
499 Bump to 1.49c.
500
5012002-09-04 Akim Demaille <akim@epita.fr>
502
503 * src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
504 * src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
505 translate maintainer only messages.
506
5072002-08-12 Paul Eggert <eggert@twinsun.com>
508
509 Version 1.49b.
510
511 * Makefile.am (SUBDIRS): Remove intl.
512 (DISTCLEANFILES): Remove.
513 * NEWS: Mention that GNU M4 is now required. Clarify what is
514 meant by "larger grammars". Mention the pt_BR translation.
515 * configure.in (AC_CHECK_DECLS): Add getenv, getopt.
516 (AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var.
517 Bump version from 0.11.2 to 0.11.5.
518 (BISON_PREREQ_STAGE): Remove.
519 (AM_GNU_GETTEXT): Use external gettext.
520 (AC_OUTPUT): Remove intl/Makefile.
521
522 * config/depcomp, config/install-sh: Sync with Automake 1.6.3.
523
524 * data/glr.c: Include string.h, for strlen.
525 (yyreportParseError): Use size_t for yysize.
526 (yy_yypstack): No longer nested inside yypstates, as nested
527 functions are not portable. Do not assume size_t is the
528 same width as int.
529 (yypstates): Do not assume that ptrdiff_t is the same width
530 as int, and similarly for yyposn and YYINDEX.
531
532 * data/yacc.c: Fix comment about `$$ = $1': it can copy garbage.
533
534 * lib/Makefile.am (INCLUDES): Do not include from the intl
535 directory, which has been removed.
536 * src/Makefile.am (INCLUDES): Likewise.
537
538 * lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h.
539 (bitsets_sources, additional_bitsets_sources, timevars_sources):
540 New vars.
541
542 * lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension.
543 * tests/Makefile.am (EXTRA_DIST): Likewise.
544
545 * lib/abitset.c (abitset_reverse_list, ebitset_reverse_list):
546 Do not assume that bitset_windex is the same width as unsigned.
547
548 * lib/abitset.c (abitset_unused_clear): Do not assume that
549 bitset_word is the same width as int.
550 * lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise.
551 * lib/bitset.h (bitset_set, bitset_reset): Likewise.
552 * lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise.
553 * lib/ebitset.c (ebitset_set, ebitset_reset): Likewise.
554 * lib/lbitset.c (lbitset_set, lbitset_reset): Likewise.
555
556 * lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for
557 portability to one's complement hosts!).
558 * lib/ebitset.c (ebitset_op1): Likewise.
559 * lib/lbitset.c (lbitset_op1): Likewise.
560
561 * lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar.
562 * lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
563 lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c:
564 Sync with fileutils.
565 * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
566 lib/gettext.h: Sync with diffutils.
567
568 * lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c,
569 lib/strspn.c, lib/tempname.c: Use GPL, not LGPL.
570
571 * lib/obstack.c, lib/obstack.h: Sync with fileutils, except use
572 PROTOTYPES to check for prototypes, and "defined __STDC__" to
573 check for void *.
574
575 * lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not
576 size_t; the old version tried to do this but casted improperly.
577 (bitset_bindex, bitset_windex): Now size_t, not unsigned long.
578 (bitset_test): Now returns int, not unsigned long.
579
580 * lib/bitset_stats.c: Include "gettext.h".
581 (_): New macro.
582 (bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't
583 name locals "index", as it generates unnecessary warnings on some
584 hosts that have an "index" function.
585
586 * lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print,
587 bitset_stats_read, bitset_stats_write): Wrap strings in _() if
588 they need translation.
589 * src/LR0.c (state_list_append, new_itemsets, get_state,
590 append_states, generate_states): Likewise.
591 * src/assoc.c (assoc_to_string): Likewise.
592 * src/closure.c (print_closure, set_firsts, closure): Likewise.
593 * src/gram.c (grammar_dump): Likewise.
594 * src/injections.c (injections_compute): Likewise.
595 * src/lalr.c (lookaheads_print): Likewise.
596 * src/relation.c (relation_transpose): Likewise.
597 * src/scan-gram.l: Likewise.
598 * src/tables.c (table_grow, pack_vector): Likewise.
599
600 * m4/Makefile.am (EXTRA_DIST): Remove codeset.m4,
601 glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4.
602 * m4/malloc.m4, m4/realloc.m4: Sync with diffutils.
603 * m4/mbstate_t.m4: Sync with fileutils.
604 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T.
605
606 * po/LINGUAS: Add pt_BR.
607 * po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c,
608 src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c,
609 lib/timevar.c.
610 Use src/parse-gram.y instead of src/parse-gram.c, as the gettext
611 manual recommends.
612 Similarly, use src/scan-gram.l instead of src/scan-gram.c.
613
614 * src/complain.c (strerror_r): Remove decl; not needed.
615 (strerror): Use same pattern as ../lib/error.c.
616
617 * src/files.c, src/files.h (compute_header_macro): Remove; unused.
618
619 * src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int.
620
621 * src/main.c (main): Cast result of bindtextdomain and textdomain
622 to void, to avoid a GCC warning when --disable-nls is in effect.
623
624 * src/scan-gram.l: Use strings rather than escapes when possible,
625 to minimize the number of warnings from xgettext.
626 (handle_action_dollar, handle_action_at): Don't use isdigit,
627 as it mishandles negative chars and it may not work as expected
628 outside the C locale.
629
630 * src/symtab.c (symbol_get): Don't cast LHS of an assignment;
631 this is a GCC extension and is not portable to other compilers.
632
633 * src/system.h (alloca): Use same pattern as ../lib/error.c.
634 Do not include <ctype.h>; no longer needed.
635 Do not include <malloc.h>; no longer needed (and generates
636 warnings on OpenBSD 3.0).
637
638 * tests/cxx-type.at (yylex): Do not pass signed char to isupper;
639 it's not portable.
640
641 * tests/regression.at: Do not use 'cc -c input.c -o input';
642 Sun C rejects this. Instead, use 'cc -c input.c -o input.o'.
643
644 * tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero
645 exit status as failure, not just exit status 1. Sun C exits
646 with status 2 sometimes.
647
648 * tests/torture.at (AT_INCREASE_DATA_SIZE): New macro.
649 Use it for the two large tests.
650
6512002-08-02 Akim Demaille <akim@epita.fr>
652
653 * src/conflicts.c (conflicts_output): Don't output rules never
654 reduced here, since anyway that computation doesn't work.
655 * src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
656 (rule_useless_p, rule_never_reduced_p): New.
657 (grammar_rules_partial_print): Use a filter instead of a range.
658 Display the title only if needed.
659 (grammar_rules_print): Adjust.
660 (grammar_rules_never_reduced_report): New.
661 * src/tables.c (action_row): Move the computation of rules never
662 reduced to...
663 (token_actions): here.
664 * src/main.c (main): Make the parser before making the report, so
665 that rules never reduced are computed.
666 Call grammar_rules_never_reduced_report.
667 * src/print.c (print_results): Report rules never reduced.
668 * tests/conflicts.at, tests/reduce.at: Adjust.
669
6702002-08-01 Akim Demaille <akim@epita.fr>
671
672 Instead of attaching lookaheads and duplicating the rules being
673 reduced by a state, attach the lookaheads to the reductions.
674
675 * src/state.h (state_t): Remove the `lookaheads',
676 `lookaheads_rule' member.
677 (reductions_t): Add a `lookaheads' member.
678 Use a regular array for the `rules'.
679 * src/state.c (reductions_new): Initialize the lookaheads member
680 to 0.
681 (state_rule_lookaheads_print): Adjust.
682 * src/state.h, src/state.c (state_reductions_find): New.
683 * src/conflicts.c (resolve_sr_conflict, set_conflicts)
684 (count_rr_conflicts): Adjust.
685 * src/lalr.c (LArule): Remove.
686 (add_lookback_edge): Adjust.
687 (state_lookaheads_count): New.
688 (states_lookaheads_initialize): Merge into...
689 (initialize_LA): this.
690 (lalr_free): Adjust.
691 * src/main.c (main): Don't free nullable and derives too early: it
692 is used by --verbose.
693 * src/print.c, src/print_graph.c, src/tables.c: Adjust.
694
6952002-08-01 Akim Demaille <akim@epita.fr>
696
697 * src/derives.h, src/derives.c (derives): A `rule_t***' instead of
698 `rule_number_t**'.
699 (set_derives, free_derives): Rename as...
700 (derives_compute, derives_free): this.
701 Adjust all dependencies.
702 * src/nullable.c (set_nullable, free_nullable): Rename as...
703 (nullable_compute, nullable_free): these.
704 (rule_list_t): Store rule_t *, not rule_number_t.
705 * src/state.c (state_rule_lookaheads_print): Directly compare rule
706 pointers, instead of their numbers.
707 * src/main.c (main): Call nullable_free, and derives_free earlier,
708 as they were lo longer used.
709
7102002-08-01 Akim Demaille <akim@epita.fr>
711
712 * lib/timevar.c (get_time): Include children time.
713 * src/lalr.h (LA, LArule): Don't export them: used with the
714 state_t.
715 * src/lalr.c (LA, LArule): Static.
716 * src/lalr.h, src/lalr.c (lalr_free): New.
717 * src/main.c (main): Call it.
718 * src/tables.c (pack_vector): Check whether loc is >= to the
719 table_size, not >.
720 (pack_tables): Don't free froms, tos, conflict_tos, and pos...
721 (tables_generate): do it, since that's also it which allocates
722 them.
723 Don't free LA and LArule, main does.
724
7252002-07-31 Akim Demaille <akim@epita.fr>
726
727 Separate parser tables computation and output.
728
729 * src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
730 (conflict_list, conflict_list_cnt, table, check, table_ninf)
731 (yydefgoto, yydefact, high): Move to...
732 * src/tables.h, src/tables.c: here.
733 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
734 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
735 (symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
736 (froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
737 (ACTION_MIN, actrow, order, nentries, pos, conflrow)
738 (conflict_list_free, table_size, lowzero, table_grow, conflict_row)
739 (action_row, save_row, token_actions, save_column, default_goto)
740 (goto_actions, sort_actions, matching_state, pack_vector)
741 (table_ninf_remap, pack_table, prepare_actions): Move to...
742 * src/tables.c: here.
743 * src/tables.h, src/tables.c(tables_generate, tables_free): New.
744 * src/output.c (token_actions, output_base, output_conflicts)
745 (output_check): Merge into...
746 (prepare_actions): this.
747 (actions_output): Rename as...
748 (user_actions_output): this.
749 * src/main.c (main): Call tables_generate and tables_free.
750
7512002-07-31 Akim Demaille <akim@epita.fr>
752
753 Steal GCC's --time-report support.
754
755 * lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
756 stolen/adjusted from GCC.
757 * m4/stage.m4: Remove time related checks.
758 * m4/timevar.m4: New.
759 * configure.in: Adjust.
760 * src/system.h: Adjust to using timevar.h.
761 * src/getargs.h, src/getargs.c: Support trace_time for
762 --trace=time.
763 * src/main.c (stage): Remove.
764 (main): Replace `stage' invocations with timevar calls.
765 * src/output.c: Insert pertinent timevar calls.
766
7672002-07-31 Akim Demaille <akim@epita.fr>
768
769 Let --trace have arguments.
770
771 * src/getargs.h (enum trace_e): New.
772 * src/getargs.c (trace_args, trace_types, trace_argmatch): New.
773 (long_options, short_options): --trace/-T takes an optional
774 argument.
775 Change all the uses of trace_flag to reflect the new flags.
776 * tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.
777
778 Strengthen `stage' portability.
779
780 * m4/stage.m4 (BISON_PREREQ_STAGE): New.
781 * configure.in: Use it.
782 Don't check for malloc.h and sys/times.h.
783 * src/system.h: Include them when appropriate.
784 * src/main.c (stage): Compile only when mallinfo, struct mallinfo,
785 times and struct tms are available.
786
7872002-07-30 Akim Demaille <akim@epita.fr>
788
789 In verbose parse error message, don't report `error' as an
790 expected token.
791 * tests/actions.at (Printers and Destructors): Adjust.
792 * tests/calc.at (Calculator $1): Adjust.
793 * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
794 error message, do not report the parser accepts the error token in
795 that state.
796
7972002-07-30 Akim Demaille <akim@epita.fr>
798
799 Normalize conflict related messages.
800
801 * src/complain.h, src/complain.c (warn, complain): New.
802 * src/conflicts.c (conflicts_print): Use them.
803 (conflict_report_yacc): New, extracted from...
804 (conflicts_print): here.
805 * tests/conflicts.at, tests/existing.at: Adjust.
806
8072002-07-30 Akim Demaille <akim@epita.fr>
808
809 Report rules which are never reduced by the parser: those hidden
810 by conflicts.
811
812 * src/LR0.c (save_reductions): Don't make the final state too
813 different: save its reduction (accept) instead of having a state
814 without any action (no shift or goto, no reduce).
815 Note: the final state is now a ``regular'' state, i.e., the
816 parsers now contain `reduce 0' as default reduction.
817 Nevertheless, since they decide to `accept' when yystate =
818 final_state, they still will not reduce rule 0.
819 * src/print.c (print_actions, print_reduction): Adjust.
820 * src/output.c (action_row): Track reduced rules.
821 (token_actions): Report rules never reduced.
822 * tests/conflicts.at, tests/regression.at: Adjust.
823
8242002-07-30 Akim Demaille <akim@epita.fr>
825
826 `stage' was accidently included in a previous patch.
827 Initiate its autoconfiscation.
828
829 * configure.in: Look for malloc.h and sys/times.h.
830 * src/main.c (stage): Adjust.
831 Report only when trace_flag.
832
8332002-07-29 Akim Demaille <akim@epita.fr>
834
835 * src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
836 state_number_t.
837 (errs_t): symbol_t*, not symbol_number_t.
838 (reductions_t): rule_t*, not rule_number_t.
839 (FOR_EACH_SHIFT): New.
840 * src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
841 * src/print.c, src/print_graph.c: Adjust.
842
8432002-07-29 Akim Demaille <akim@epita.fr>
844
845 Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.
846
847 * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
848 (endtoken, accept): these.
849 * src/reader.c (reader): Set endtoken's default tag to "$end".
850 Set undeftoken's tag to "$undefined" instead of "$undefined.".
851 * doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
852 Adjust.
853
8542002-07-29 Akim Demaille <akim@epita.fr>
855
856 * src/reduce.c (reduce_grammar): When the language is empty,
857 complain about the start symbol, not the axiom.
858 Use its location.
859 * tests/reduce.at (Empty Language): New.
860
8612002-07-26 Akim Demaille <akim@epita.fr>
862
863 * src/reader.h, src/reader.c (gram_error): ... can't get
864 yycontrol without making too strong assumptions on the parser
865 itself.
866 * src/output.c (prepare_tokens): Use the real 0th value of
867 token_translations instead of `0'.
868 * src/parse-gram.y (yyerror): Don't rely on yycontrol being
869 visible here.
870 * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
871 for the time being: %locations ought to provide it to yyerror.
872
8732002-07-25 Akim Demaille <akim@epita.fr>
874
875 * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
876 * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
877 * tests/regression.at (Web2c Actions): Adjust.
878
8792002-07-25 Akim Demaille <akim@epita.fr>
880
881 Stop storing rules from 1 to nrules + 1.
882
883 * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
884 * src/nullable.c, src/output.c, src/print.c, src/reader.c
885 * src/reduce.c: Allocate and free from &rules[0], not &rules[1].
886 Iterate from 0 to nrules.
887 Use rule_number_as_item_number and item_number_as_rule_number.
888 Adjust to `derive' now containing possibly 0.
889 * src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
890 Handle the `- 1' part in rule numbers from/to item numbers.
891 * src/conflicts.c (log_resolution): Fix the message which reversed
892 shift and reduce.
893 * src/output.c (action_row): Initialize default_rule to -1.
894 (token_actions): Adjust.
895 * tests/sets.at (Nullable, Firsts): Fix the previously bogus
896 expected output.
897 * tests/conflicts.at (Resolved SR Conflicts): Likewise.
898
8992002-07-25 Akim Demaille <akim@epita.fr>
900
901 * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
902 (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
903 (b4_c_knr_arg_decl): New.
904 * data/yacc.c: Use it to define yysymprint, yydestruct, and
905 yyreport_parse_error.
906
9072002-07-25 Akim Demaille <akim@epita.fr>
908
909 * data/yacc.c (yyreport_parse_error): New, extracted from...
910 (yyparse): here.
911 (yydestruct, yysymprint): Move above yyparse.
912 Be K&R compliant.
913
9142002-07-25 Akim Demaille <akim@epita.fr>
915
916 * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
917 replace...
918 (b4_sint_type, b4_uint_type): these.
919 * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
920 * tests/regression.at (Web2c Actions): Adjust.
921
9222002-07-25 Akim Demaille <akim@epita.fr>
923
924 * src/gram.h (TIEM_NUMBER_MAX): New.
925 (item_number_of_rule_number, rule_number_of_item_number): Rename
926 as...
927 (rule_number_as_item_number, item_number_as_rule_number): these.
928 Adjust dependencies.
929 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
930 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
931 (symbol_number_to_vector_number): New.
932 (order): Of vector_number_t* type.
933 (base_t, BASE_MAX, BASE_MIN): New.
934 (froms, tos, width, pos, check): Of base_t type.
935 (action_number_t, ACTION_MIN, ACTION_MAX): New.
936 (actrow): Of action_number_t type.
937 (conflrow): Of unsigned int type.
938 (table_ninf, base_ninf): New.
939 (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
940 (muscle_insert_int_table, muscle_insert_base_table)
941 (muscle_insert_rule_number_table): New.
942 (prepare_tokens): Output `toknum' as int_table.
943 (action_row): Returns a rule_number_t.
944 Use ACTION_MIN, not SHRT_MIN.
945 (token_actions): yydefact is rule_number_t*.
946 (table_ninf_remap): New.
947 (pack_table): Use it for `base' and `table'.
948 * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
949 replaced with...
950 (YYPACT_NINF, YYTABLE_NINF): these.
951 (yypact, yytable): Compute their types instead of hard-coded
952 `short'.
953 * tests/regression.at (Web2c Actions): Adjust.
954
9552002-07-19 Akim Demaille <akim@epita.fr>
956
957 * src/scan-gram.l (id): Can start with an underscore.
958
9592002-07-16 Akim Demaille <akim@epita.fr>
960
961 * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
962 Adjust all former `associativity' dependencies.
963 * src/symtab.c (symbol_new): Default associativity is `undef', not
964 `right'.
965 (symbol_check_alias_consistence): Adjust.
966
9672002-07-09 Akim Demaille <akim@epita.fr>
968
969 * doc/bison.texinfo: Properly set the ``header'' part.
970 Use @dircategory ``GNU programming tools'' as per Texinfo's
971 documentation.
972 Use @copying.
973
9742002-07-09 Akim Demaille <akim@epita.fr>
975
976 * lib/quotearg.h: Protect against multiple inclusions.
977 * src/location.h (location_t): Add a `file' member.
978 (LOCATION_RESET, LOCATION_PRINT): Adjust.
979 * src/complain.c (warn_at, complain_at, fatal_at): Drop
980 `error_one_per_line' support.
981
9822002-07-09 Akim Demaille <akim@epita.fr>
983
984 * src/complain.h, src/complain.c (warn, complain): Remove, unused.
985 * src/reader.c (lineno): Remove.
986 Adjust all dependencies.
987 (get_merge_function): Take a location and use complain_at.
988 * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
989 * tests/regression.at (Invalid inputs, Mixing %token styles):
990 Adjust.
991
9922002-07-09 Akim Demaille <akim@epita.fr>
993
994 * src/parse-gram.y (rules_or_grammar_declaration): Add an error
995 recovery rule, and forbid extensions when --yacc.
996 (gram_error): Use complain_at.
997 * src/reader.c (reader): Exit if there were parse errors.
998
9992002-07-09 Akim Demaille <akim@epita.fr>
1000
1001 * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
1002 (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
1003 Reported by R Blake <blakers@mac.com>.
1004
10052002-07-09 Akim Demaille <akim@epita.fr>
1006
1007 * data/yacc.c: Output the copyright notive in the header.
1008
10092002-07-03 Akim Demaille <akim@epita.fr>
1010
1011 * src/output.c (froms, tos): Are state_number_t.
1012 (save_column): sp, sp1, and sp2 are state_number_t.
1013 (prepare): Rename `final' as `final_state_number', `nnts' as
1014 `nterms_number', `nrules' as `rules_number', `nstates' as
1015 `states_number', and `ntokens' as `tokens_number'. Remove `nsym',
1016 unused.
1017 * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
1018 * data/lalr1.cc (nsym_): Remove, unused.
1019
10202002-07-03 Akim Demaille <akim@epita.fr>
1021
1022 * src/lalr.h, src/lalr.c (goto_number_t): New.
1023 * src/lalr.c (goto_list_t): New.
1024 Propagate them.
1025 * src/nullable.c (rule_list_t): New.
1026 Propagate.
1027 * src/types.h: Remove.
1028
10292002-07-03 Akim Demaille <akim@epita.fr>
1030
1031 * src/closure.c (print_fderives): Use rule_rhs_print.
1032 * src/derives.c (print_derives): Use rule_rhs_print.
1033 (rule_list_t): New, replaces `shorts'.
1034 (set_derives): Add comments.
1035 * tests/sets.at (Nullable, Firsts): Adjust.
1036
10372002-07-03 Akim Demaille <akim@epita.fr>
1038
1039 * src/output.c (prepare_actions): Free `tally' and `width'.
1040 (prepare_actions): Allocate and free `order'.
1041 * src/symtab.c (symbols_free): Free `symbols'.
1042 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
1043 * src/output.c (m4_invoke): Move to...
1044 * src/scan-skel.l: here.
1045 (<<EOF>>): Close yyout, and free its name.
1046
10472002-07-03 Akim Demaille <akim@epita.fr>
1048
1049 Fix some memory leaks, and fix a bug: state 0 was examined twice.
1050
1051 * src/LR0.c (new_state): Merge into...
1052 (state_list_append): this.
1053 (new_states): Merge into...
1054 (generate_states): here.
1055 (set_states): Don't ensure a proper `errs' state member here, do it...
1056 * src/conflicts.c (conflicts_solve): here.
1057 * src/state.h, src/state.c: Comment changes.
1058 (state_t): Rename member `shifts' as `transitions'.
1059 Adjust all dependencies.
1060 (errs_new): For consistency, also take the values as argument.
1061 (errs_dup): Remove.
1062 (state_errs_set): New.
1063 (state_reductions_set, state_transitions_set): Assert that no
1064 previous value was assigned.
1065 (state_free): New.
1066 (states_free): Use it.
1067 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
1068 temporary storage: use `errs' and `nerrs' as elsewhere.
1069 (set_conflicts): Allocate and free this `errs'.
1070
10712002-07-02 Akim Demaille <akim@epita.fr>
1072
1073 * lib/libiberty.h: New.
1074 * lib: Update the bitset implementation from upstream.
1075 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
1076 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
1077 * src/main.c: Adjust bitset stats calls.
1078
10792002-07-01 Paul Eggert <eggert@twinsun.com>
1080
1081 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
1082 char, so that negative chars don't collide with $.
1083
10842002-06-30 Akim Demaille <akim@epita.fr>
1085
1086 Have the GLR tests be `warning' checked, and fix the warnings.
1087
1088 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
1089 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
1090 (yyremoveDeletes): `yyi' and `yyj' are size_t.
1091 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
1092 (yyaddDeferredAction): static.
1093 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
1094 (yyreportParseError): yyprefix is const.
1095 yytokenp is used only when verbose.
1096 (yy__GNUC__): Replace with __GNUC__.
1097 (yypdumpstack): yyi is size_t.
1098 (yypreference): Un-yy local variables and arguments, to avoid
1099 clashes with `yyr1'. Anyway, we are not in the user name space.
1100 (yytname_size): be an int, as is compared with ints.
1101 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
1102 Use them.
1103 * tests/cxx-gram.at: Use quotation to protect $1.
1104 Use AT_COMPILE to enable warnings hunts.
1105 Prototype yylex and yyerror.
1106 `Use' argc.
1107 Include `string.h', not `strings.h'.
1108 Produce and prototype stmtMerge only when used.
1109 yylex takes a location.
1110
11112002-06-30 Akim Demaille <akim@epita.fr>
1112
1113 We spend a lot of time in quotearg, in particular when --verbose.
1114
1115 * src/symtab.c (symbol_get): Store a quoted version of the key.
1116 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
1117 Adjust all callers.
1118
11192002-06-30 Akim Demaille <akim@epita.fr>
1120
1121 * src/state.h (reductions_t): Rename member `nreds' as num.
1122 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
1123 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
1124
11252002-06-30 Akim Demaille <akim@epita.fr>
1126
1127 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
1128 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
1129 (shifts_to): Rename as...
1130 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
1131 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
1132 (TRANSITION_IS_DISABLED, transitions_to): these.
1133
11342002-06-30 Akim Demaille <akim@epita.fr>
1135
1136 * src/print.c (print_shifts, print_gotos): Merge into...
1137 (print_transitions): this.
1138 (print_transitions, print_errs, print_reductions): Align the
1139 lookaheads columns.
1140 (print_core, print_transitions, print_errs, print_state,
1141 print_grammar): Output empty lines separator before, not after.
1142 (state_default_rule_compute): Rename as...
1143 (state_default_rule): this.
1144 * tests/conflicts.at (Defaulted Conflicted Reduction),
1145 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
1146 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
1147
11482002-06-30 Akim Demaille <akim@epita.fr>
1149
1150 Display items as we display rules.
1151
1152 * src/gram.h, src/gram.c (rule_lhs_print): New.
1153 * src/gram.c (grammar_rules_partial_print): Use it.
1154 * src/print.c (print_core): Likewise.
1155 * tests/conflicts.at (Defaulted Conflicted Reduction),
1156 (Unresolved SR Conflicts): Adjust.
1157 (Unresolved SR Conflicts): Adjust and rename as...
1158 (Resolved SR Conflicts): this, as was meant.
1159 * tests/regression.at (Web2c Report): Adjust.
1160
11612002-06-30 Akim Demaille <akim@epita.fr>
1162
1163 * src/print.c (state_default_rule_compute): New, extracted from...
1164 (print_reductions): here.
1165 Pessimize, but clarify the code.
1166 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
1167
11682002-06-30 Akim Demaille <akim@epita.fr>
1169
1170 * src/output.c (action_row): Let default_rule be always a rule
1171 number.
1172
11732002-06-30 Akim Demaille <akim@epita.fr>
1174
1175 * src/closure.c (print_firsts, print_fderives, closure):
1176 Use BITSET_EXECUTE.
1177 * src/lalr.c (lookaheads_print): Likewise.
1178 * src/state.c (state_rule_lookaheads_print): Likewise.
1179 * src/print_graph.c (print_core): Likewise.
1180 * src/print.c (print_reductions): Likewise.
1181 * src/output.c (action_row): Likewise.
1182 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
1183
11842002-06-30 Akim Demaille <akim@epita.fr>
1185
1186 * src/print_graph.c: Use report_flag.
1187
11882002-06-30 Akim Demaille <akim@epita.fr>
1189
1190 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
1191 to...
1192 * src/relation.h, src/relation.c (traverse, relation_digraph)
1193 (relation_print, relation_transpose): New.
1194
11952002-06-30 Akim Demaille <akim@epita.fr>
1196
1197 * src/state.h, src/state.c (shifts_to): New.
1198 * src/lalr.c (build_relations): Use it.
1199
12002002-06-30 Akim Demaille <akim@epita.fr>
1201
1202 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
1203 (item_number_of_rule_number, rule_number_of_item_number): New.
1204 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
1205 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
1206 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
1207 Propagate their use.
1208 Much remains to be done, in particular wrt `shorts' from types.h.
1209
12102002-06-30 Akim Demaille <akim@epita.fr>
1211
1212 * src/symtab.c (symbol_new): Initialize the `printer' member.
1213
12142002-06-30 Akim Demaille <akim@epita.fr>
1215
1216 * src/LR0.c (save_reductions): Remove, replaced by...
1217 * src/state.h, src/state.c (state_reductions_set): New.
1218 (reductions, errs): Rename as...
1219 (reductions_t, errs_t): these.
1220 Adjust all dependencies.
1221
12222002-06-30 Akim Demaille <akim@epita.fr>
1223
1224 * src/LR0.c (state_list_t, state_list_append): New.
1225 (first_state, last_state): Now symbol_list_t.
1226 (this_state): Remove.
1227 (new_itemsets, append_states, save_reductions): Take a state_t as
1228 argument.
1229 (set_states, generate_states): Adjust.
1230 (save_shifts): Remove, replaced by...
1231 * src/state.h, src/state.c (state_shifts_set): New.
1232 (shifts): Rename as...
1233 (shifts_t): this.
1234 Adjust all dependencies.
1235 * src/state.h (state_t): Remove the `next' member.
1236
12372002-06-30 Akim Demaille <akim@epita.fr>
1238
1239 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
1240 escaped in slot 0.
1241
12422002-06-30 Akim Demaille <akim@epita.fr>
1243
1244 Use hash.h for the state hash table.
1245
1246 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
1247 (allocate_storage): Use state_hash_new.
1248 (free_storage): Use state_hash_free.
1249 (new_state, get_state): Adjust.
1250 * src/lalr.h, src/lalr.c (states): Move to...
1251 * src/states.h (state_t): Remove the `link' member, no longer
1252 used.
1253 * src/states.h, src/states.c: here.
1254 (state_hash_new, state_hash_free, state_hash_lookup)
1255 (state_hash_insert, states_free): New.
1256 * src/states.c (state_table, state_compare, state_hash): New.
1257 * src/output.c (output_actions): Do not free states now, since we
1258 still need to know the final_state number in `prepare', called
1259 afterwards. Do it...
1260 * src/main.c (main): here: call states_free after `output'.
1261
12622002-06-30 Akim Demaille <akim@epita.fr>
1263
1264 * src/state.h, src/state.c (state_new): New, extracted from...
1265 * src/LR0.c (new_state): here.
1266 * src/state.h (STATE_ALLOC): Move to...
1267 * src/state.c: here.
1268 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
1269 * src/state.h, src/state.c: here.
1270
12712002-06-30 Akim Demaille <akim@epita.fr>
1272
1273 * src/reader.c (gensym): Rename as...
1274 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
1275 (getsym): Rename as...
1276 (symbol_get): this.
1277
12782002-06-30 Akim Demaille <akim@epita.fr>
1279
1280 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
1281 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
1282 * src/output.c, src/print.c, src/print_graph.c: Propagate.
1283 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
1284
12852002-06-30 Akim Demaille <akim@epita.fr>
1286
1287 Make the test suite pass with warnings checked.
1288
1289 * tests/actions.at (Printers and Destructors): Improve.
1290 Avoid unsigned vs. signed issues.
1291 * tests/calc.at: Don't exercise the scanner here, do it...
1292 * tests/input.at (Torturing the Scanner): here.
1293
12942002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1295
1296 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
1297 reorganize first lines parallel to yacc.c.
1298
12992002-06-28 Akim Demaille <akim@epita.fr>
1300
1301 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
1302 (b4_token_enum, b4_token_defines): New, factored from...
1303 * data/lalr1.cc, data/yacc.c, glr.c: here.
1304
13052002-06-28 Akim Demaille <akim@epita.fr>
1306
1307 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
1308 unused variables.
1309 * src/output.c (merger_output): static.
1310
13112002-06-28 Akim Demaille <akim@epita.fr>
1312
1313 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
1314 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
1315 pacify GCC.
1316 * src/output.c (save_row): Initialize all the variables to pacify GCC.
1317
13182002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1319
1320 Accumulated changelog for new GLR parsing features.
1321
1322 * src/conflicts.c (count_total_conflicts): Change name to
1323 conflicts_total_count.
1324 * src/conflicts.h: Ditto.
1325 * src/output.c (token_actions): Use the new name.
1326 (output_conflicts): Change conflp => conflict_list_heads, and
1327 confl => conflict_list for better readability.
1328 * data/glr.c: Use the new names.
1329 * NEWS: Add self to GLR announcement.
1330
1331 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
1332
1333 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
1334 Akim Demaille.
1335
1336 * data/bison.glr: Change name to glr.c
1337 * data/glr.c: Renamed from bison.glr.
1338 * data/Makefile.am: Add glr.c
1339
1340 * src/getargs.c:
1341
1342 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
1343 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
1344
1345 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1346
1347 * data/bison.glr: Be sure to restore the
1348 current #line when returning to the skeleton contents after having
1349 exposed the input file's #line.
1350
1351 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1352
1353 * data/bison.glr: Bring up to date with changes to bison.simple.
1354
1355 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1356
1357 * data/bison.glr: Correct definitions that use b4_prefix.
1358 Various reformatting.
1359 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
1360 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
1361 yytokenp argument; now part of stack.
1362 (yychar): Define to behave as documented.
1363 (yyclearin): Ditto.
1364
1365 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1366
1367 * src/reader.h: Add declaration for free_merger_functions.
1368
1369 * src/reader.c (merge_functions): New variable.
1370 (get_merge_function): New function.
1371 (free_merger_functions): New function.
1372 (readgram): Check for %prec that is not followed by a symbol.
1373 Handle %dprec and %merge declarations.
1374 (packgram): Initialize dprec and merger fields in rules array.
1375
1376 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
1377 conflict_list_cnt, conflict_list_free): New variables.
1378 (table_grow): Also grow conflict_table.
1379 (prepare_rules): Output dprec and merger tables.
1380 (conflict_row): New function.
1381 (action_row): Output conflict lists for GLR parser. Don't use
1382 default reduction in conflicted states for GLR parser so that there
1383 are spaces for the conflict lists.
1384 (save_row): Also save conflict information.
1385 (token_actions): Allocate conflict list.
1386 (merger_output): New function.
1387 (pack_vector): Pack conflict table, too.
1388 (output_conflicts): New function to output yyconflp and yyconfl.
1389 (output_check): Allocate conflict_tos.
1390 (output_actions): Output conflict tables, also.
1391 (output_skeleton): Output b4_mergers definition.
1392 (prepare): Output b4_max_rhs_length definition.
1393 Use 'bison.glr' as default skeleton for GLR parsers.
1394
1395 * src/gram.c (glr_parser): New flag.
1396 (grammar_free): Call free_merger_functions.
1397
1398 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
1399 all pairs of conflicting reductions, rather than just all tokens
1400 causing conflicts. Needed to size conflict tables.
1401 (conflicts_output): Modify call to count_rr_conflicts for new
1402 interface.
1403 (conflicts_print): Ditto.
1404 (count_total_conflicts): New function.
1405
1406 * src/reader.h (merger_list): New type.
1407 (merge_functions): New variable.
1408
1409 * src/lex.h (tok_dprec, tok_merge): New token types.
1410
1411 * src/gram.h (rule_s): Add dprec and merger fields.
1412 (glr_parser): New flag.
1413
1414 * src/conflicts.h (count_total_conflicts): New function.
1415
1416 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
1417
1418 * doc/bison.texinfo (Generalized LR Parsing): New section.
1419 (GLR Parsers): New section.
1420 (Language and Grammar): Mention GLR parsing.
1421 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
1422 Correct typo ("tge" -> "the").
1423
1424 * data/bison.glr: New skeleton for GLR parsing.
1425
1426 * tests/cxx-gram.at: New tests for GLR parsing.
1427
1428 * tests/testsuite.at: Include cxx-gram.at.
1429
1430 * tests/Makefile.am: Add cxx-gram.at.
1431
1432 * src/parse-gram.y:
1433
1434 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
1435
1436 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
1437
14382002-06-27 Akim Demaille <akim@epita.fr>
1439
1440 * src/options.h, src/options.c: Remove.
1441 * src/getargs.c (short_options, long_options): New.
1442
14432002-06-27 Akim Demaille <akim@epita.fr>
1444
1445 * data/bison.simple, data/bison.c++: Rename as...
1446 * data/yacc.c, data/lalr1.cc: these.
1447 * doc/bison.texinfo (Environment Variables): Remove.
1448
14492002-06-25 Raja R Harinath <harinath@cs.umn.edu>
1450
1451 * src/getargs.c (report_argmatch): Initialize strtok().
1452
14532002-06-20 Akim Demaille <akim@epita.fr>
1454
1455 * data/bison.simple (b4_symbol_actions): New, replaces...
1456 (b4_symbol_destructor, b4_symbol_printer): these.
1457 (yysymprint): Be sure to call YYPRINT only for tokens, and using
1458 user token numbers.
1459
14602002-06-20 Akim Demaille <akim@epita.fr>
1461
1462 * data/bison.simple (yydestructor): Rename as...
1463 (yydestruct): this.
1464
14652002-06-20 Akim Demaille <akim@epita.fr>
1466
1467 * src/symtab.h, src/symtab.c (symbol_type_set)
1468 (symbol_destructor_set, symbol_precedence_set): The location is
1469 the last argument.
1470 Adjust all callers.
1471
14722002-06-20 Akim Demaille <akim@epita.fr>
1473
1474 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
1475 internals.
1476 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
1477 Takes a location.
1478 * src/symtab.h, src/symtab.c (symbol_class_set)
1479 (symbol_user_token_number_set): Likewise.
1480 Adjust all callers.
1481 Promote complain_at.
1482 * tests/input.at (Type Clashes): Adjust.
1483
14842002-06-20 Akim Demaille <akim@epita.fr>
1485
1486 * data/bison.simple (YYLEX): Fix the declaration when
1487 %pure-parser.
1488
14892002-06-20 Akim Demaille <akim@epita.fr>
1490
1491 * data/bison.simple (yysymprint): Don't print the token number,
1492 just its name.
1493 * tests/actions.at (Destructors): Rename as...
1494 (Printers and Destructors): this.
1495 Also exercise %printer.
1496
14972002-06-20 Akim Demaille <akim@epita.fr>
1498
1499 * data/bison.simple (YYDSYMPRINT): New.
1500 Use it to remove many of the #if YYDEBUG/if (yydebug).
1501
15022002-06-20 Akim Demaille <akim@epita.fr>
1503
1504 * src/symtab.h, src/symtab.c (symbol_t): printer and
1505 printer_location are new members.
1506 (symbol_printer_set): New.
1507 * src/parse-gram.y (PERCENT_PRINTER): New token.
1508 Handle its associated rule.
1509 * src/scan-gram.l: Adjust.
1510 (handle_destructor_at, handle_destructor_dollar): Rename as...
1511 (handle_symbol_code_at, handle_symbol_code_dollar): these.
1512 * src/output.c (symbol_printers_output): New.
1513 (output_skeleton): Call it.
1514 * data/bison.simple (yysymprint): New. Cannot be named yyprint
1515 since there are already many grammar files with a user `yyprint'.
1516 Replace the calls to YYPRINT to calls to yysymprint.
1517 * tests/calc.at: Adjust.
1518 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
1519 taking advantage of parser very internal details (stack size!).
1520
15212002-06-20 Akim Demaille <akim@epita.fr>
1522
1523 * src/scan-gram.l: Complete the scanner with the missing patterns
1524 to pacify Flex.
1525 Use `quote' and `symbol_tag_get' where appropriate.
1526
15272002-06-19 Akim Demaille <akim@epita.fr>
1528
1529 * tests/actions.at (Destructors): Augment to test locations.
1530 * data/bison.simple (yydestructor): Pass it the current location
1531 if locations are enabled.
1532 Prototype only when __STDC__ or C++.
1533 Change the argument names to move into the yy name space: there is
1534 user code here.
1535
15362002-06-19 Akim Demaille <akim@epita.fr>
1537
1538 * data/bison.simple (b4_pure_if): New.
1539 Use it instead of #ifdef YYPURE.
1540
15412002-06-19 Akim Demaille <akim@epita.fr>
1542
1543 * data/bison.simple (b4_location_if): New.
1544 Use it instead of #ifdef YYLSP_NEEDED.
1545
15462002-06-19 Akim Demaille <akim@epita.fr>
1547
1548 Prepare @$ in %destructor, but currently don't bind it in the
1549 skeleton, as %location use is not cleaned up yet.
1550
1551 * src/scan-gram.l (handle_dollar, handle_destructor_at)
1552 (handle_action_at): New.
1553 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
1554 a braced_code_t and a location as additional arguments.
1555 (handle_destructor_dollar): Instead of requiring `b4_eval', just
1556 unquote one when outputting `b4_dollar_dollar'.
1557 Adjust callers.
1558 * data/bison.simple (b4_eval): Remove.
1559 (b4_symbol_destructor): Adjust.
1560 * tests/input.at (Invalid @n): Adjust.
1561
15622002-06-19 Zack Weinberg <zack@codesourcery.com>
1563
1564 * doc/bison.texinfo: Document ability to have multiple
1565 prologue sections.
1566
15672002-06-18 Akim Demaille <akim@epita.fr>
1568
1569 * src/files.c (compute_base_names): When computing the output file
1570 names from the input file name, strip the directory part.
1571
15722002-06-18 Akim Demaille <akim@epita.fr>
1573
1574 * data/bison.simple.new: Comment changes.
1575 Reported by Andreas Schwab.
1576
15772002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
1578
1579 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
1580 there are no `label `yyoverflowlab' defined but not used' warnings
1581 when yyoverflow is defined.
1582
15832002-06-18 Akim Demaille <akim@epita.fr>
1584
1585 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
1586 new member.
1587 (symbol_destructor_set): Adjust.
1588 * src/output.c (symbol_destructors_output): Output the destructor
1589 locations.
1590 Output the symbol name.
1591 * data/bison.simple (b4_symbol_destructor): Adjust.
1592
15932002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
1594 and Akim Demaille <akim@epita.fr>
1595
1596 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
1597 what's left on the stack when the error recovery hits EOF.
1598 * tests/actions.at (Destructors): Complete to exercise this case.
1599
16002002-06-17 Akim Demaille <akim@epita.fr>
1601
1602 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
1603 arguments is really empty, not only equal to `[]'.
1604 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
1605 member.
1606 (symbol_destructor_set): New.
1607 * src/output.c (symbol_destructors_output): New.
1608 * src/reader.h (brace_code_t, current_braced_code): New.
1609 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
1610 (handle_dollar): Rename as...
1611 (handle_action_dollar): this.
1612 (handle_destructor_dollar): New.
1613 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
1614 (grammar_declaration): Use it.
1615 * data/bison.simple (yystos): Is always defined.
1616 (yydestructor): New.
1617 * tests/actions.at (Destructors): New.
1618 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
1619
16202002-06-17 Akim Demaille <akim@epita.fr>
1621
1622 * src/symlist.h, src/symlist.c (symbol_list_length): New.
1623 * src/scan-gram.l (handle_dollar, handle_at): Compute the
1624 rule_length only when needed.
1625 * src/output.c (actions_output, token_definitions_output): Output
1626 the full M4 block.
1627 * src/symtab.c: Don't access directly to the symbol tag, use
1628 symbol_tag_get.
1629 * src/parse-gram.y: Use symbol_list_free.
1630
16312002-06-17 Akim Demaille <akim@epita.fr>
1632
1633 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
1634 (symbol_list_prepend, get_type_name): Move to...
1635 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
1636 (symbol_list_prepend, symbol_list_n_type_name_get): here.
1637 Adjust all callers.
1638 (symbol_list_free): New.
1639 * src/scan-gram.l (handle_dollar): Takes a location.
1640 * tests/input.at (Invalid $n): Adjust.
1641
16422002-06-17 Akim Demaille <akim@epita.fr>
1643
1644 * src/reader.h, src/reader.c (symbol_list_new): Export it.
1645 (symbol_list_prepend): New.
1646 * src/parse-gram.y (%union): `list' is a new member.
1647 (symbols.1): New, replaces...
1648 (terms_to_prec.1, nterms_to_type.1): these.
1649 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
1650 Take a location as additional argument.
1651 Adjust all callers.
1652
16532002-06-15 Akim Demaille <akim@epita.fr>
1654
1655 * src/parse-gram.y: Move %token in the declaration section so that
1656 we don't depend upon CVS Bison.
1657
16582002-06-15 Akim Demaille <akim@epita.fr>
1659
1660 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
1661 * src/print.c (print_core): Use it.
1662
16632002-06-15 Akim Demaille <akim@epita.fr>
1664
1665 * src/conflicts.c (log_resolution): Accept the rule involved in
1666 the sr conflicts instead of the lookahead number that points to
1667 that rule.
1668 (flush_reduce): Accept the current lookahead vector as argument,
1669 instead of the index in LA.
1670 (resolve_sr_conflict): Accept the current number of lookahead
1671 bitset to consider for the STATE, instead of the index in LA.
1672 (set_conflicts): Adjust.
1673 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
1674
16752002-06-15 Akim Demaille <akim@epita.fr>
1676
1677 * src/state.h (state_t): Replace the `lookaheadsp' member, a
1678 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
1679 Adjust all dependencies.
1680 * src/lalr.c (initialize_lookaheads): Split into...
1681 (states_lookaheads_count, states_lookaheads_initialize): these.
1682 (lalr): Adjust.
1683
16842002-06-15 Akim Demaille <akim@epita.fr>
1685
1686 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
1687 out of...
1688 (grammar_rules_print): here.
1689 * src/reduce.c (reduce_output): Use it.
1690 * tests/reduce.at (Useless Rules, Reduced Automaton)
1691 (Underivable Rules): Adjust.
1692
16932002-06-15 Akim Demaille <akim@epita.fr>
1694
1695 Copy BYacc's nice way to report the grammar.
1696
1697 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
1698 New.
1699 Don't print the rules' location, it is confusing and useless.
1700 (rule_print): Use grammar_rhs_print.
1701 * src/print.c (print_grammar): Use grammar_rules_print.
1702
17032002-06-15 Akim Demaille <akim@epita.fr>
1704
1705 Complete and rationalize `useless thing' warnings.
1706
1707 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
1708 (symbol_tag_print): New.
1709 Use them everywhere in place of accessing directly the tag member.
1710 * src/gram.h, src/gram.c (rule_print): New.
1711 Use it where a rule used to be printed `by hand'.
1712 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
1713 (reduce_grammar_tables): Report the useless rules.
1714 (reduce_print): Useless things are a warning, not an error.
1715 Report it as such.
1716 * tests/reduce.at (Useless Nonterminals, Useless Rules):
1717 (Reduced Automaton, Underivable Rules): Adjust.
1718 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
1719 * tests/conflicts.at (Unresolved SR Conflicts)
1720 (Solved SR Conflicts): Adjust.
1721
17222002-06-15 Akim Demaille <akim@epita.fr>
1723
1724 Let symbols have a location.
1725
1726 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
1727 (getsym): Adjust.
1728 Adjust all callers.
1729 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
1730 Use location_t, not int.
1731 * src/symtab.c (symbol_check_defined): Take advantage of the
1732 location.
1733 * tests/regression.at (Invalid inputs): Adjust.
1734
17352002-06-15 Akim Demaille <akim@epita.fr>
1736
1737 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
1738 (input): Don't try to initialize yylloc here, do it in the
1739 scanner.
1740 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
1741 * src/gram.h (rule_t): Change line and action_line into location
1742 and action_location, of location_t type.
1743 Adjust all dependencies.
1744 * src/location.h, src/location.c (empty_location): New.
1745 * src/reader.h, src/reader.c (grammar_start_symbol_set)
1746 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
1747 (grammar_current_rule_symbol_append)
1748 (grammar_current_rule_action_append): Expect a location as argument.
1749 * src/reader.c (grammar_midrule_action): Adjust to attach an
1750 action's location as dummy symbol location.
1751 * src/symtab.h, src/symtab.c (startsymbol_location): New.
1752 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
1753 the line numbers.
1754
17552002-06-14 Akim Demaille <akim@epita.fr>
1756
1757 Grammar declarations may be found in the grammar section.
1758
1759 * src/parse-gram.y (rules_or_grammar_declaration): New.
1760 (declarations): Each declaration may end with a semicolon, not
1761 just...
1762 (grammar_declaration): `"%union"'.
1763 (grammar): Branch to rules_or_grammar_declaration.
1764
17652002-06-14 Akim Demaille <akim@epita.fr>
1766
1767 * src/main.c (main): Invoke scanner_free.
1768
17692002-06-14 Akim Demaille <akim@epita.fr>
1770
1771 * src/output.c (m4_invoke): Extracted from...
1772 (output_skeleton): here.
1773 Free tempfile.
1774
17752002-06-14 Akim Demaille <akim@epita.fr>
1776
1777 * src/parse-gram.y (directives, directive, gram)
1778 (grammar_directives, precedence_directives, precedence_directive):
1779 Rename as...
1780 (declarations, declaration, grammar, grammar_declaration)
1781 (precedence_declaration, precedence_declarator): these.
1782 (symbol_declaration): New.
1783
17842002-06-14 Akim Demaille <akim@epita.fr>
1785
1786 * src/files.c (action_obstack): Remove, unused.
1787 (output_obstack): Remove it, and all its dependencies, as it is no
1788 longer needed.
1789 * src/reader.c (epilogue_set): Build the epilogue in the
1790 muscle_obstack.
1791 * src/output.h, src/output.c (muscle_obstack): Move to...
1792 * src/muscle_tab.h, src/muscle_tab.h: here.
1793 (muscle_init): Initialize muscle_obstack.
1794 (muscle_free): New.
1795 * src/main.c (main): Call it.
1796
17972002-06-14 Akim Demaille <akim@epita.fr>
1798
1799 * src/location.h: New, extracted from...
1800 * src/reader.h: here.
1801 * src/Makefile.am (noinst_HEADERS): Merge into
1802 (bison_SOURCES): this.
1803 Add location.h.
1804 * src/parse-gram.y: Use location_t instead of Bison's.
1805 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
1806 Use location_t instead of ints.
1807
18082002-06-14 Akim Demaille <akim@epita.fr>
1809
1810 * data/bison.simple, data/bison.c++: Be sure to restore the
1811 current #line when returning to the skeleton contents after having
1812 exposed the input file's #line.
1813
18142002-06-12 Akim Demaille <akim@epita.fr>
1815
1816 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
1817 eager.
1818 * tests/actions.at (Exotic Dollars): New.
1819
18202002-06-12 Akim Demaille <akim@epita.fr>
1821
1822 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
1823 ['"/] too eagerly.
1824 * tests/input.at (Torturing the Scanner): New.
1825
18262002-06-11 Akim Demaille <akim@epita.fr>
1827
1828 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
1829 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
1830 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
1831 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
1832 * src/reader.c (reader): Use it.
1833
18342002-06-11 Akim Demaille <akim@epita.fr>
1835
1836 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
1837 Adjust all callers.
1838 (scanner_last_string_free): New.
1839
18402002-06-11 Akim Demaille <akim@epita.fr>
1841
1842 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
1843 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
1844 (last_string, YY_OBS_FREE): New.
1845 Use them when returning an ID.
1846
18472002-06-11 Akim Demaille <akim@epita.fr>
1848
1849 Have Bison grammars parsed by a Bison grammar.
1850
1851 * src/reader.c, src/reader.h (prologue_augment): New.
1852 * src/reader.c (copy_definition): Remove.
1853
1854 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
1855 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
1856 (grammar_current_rule_prec_set, grammar_current_rule_check)
1857 (grammar_current_rule_symbol_append)
1858 (grammar_current_rule_action_append): Export.
1859 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
1860 (symbol_list_action_append): Remove.
1861 Hook the routines from reader.
1862 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
1863 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
1864
1865 * src/reader.c (read_declarations): Remove, unused.
1866
1867 * src/parse-gram.y: Handle the epilogue.
1868 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
1869 (grammar_start_symbol_set): this.
1870 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
1871 * src/reader.c (readgram): Remove, unused.
1872 (reader): Adjust to insert eoftoken and axiom where appropriate.
1873
1874 * src/reader.c (copy_dollar): Replace with...
1875 * src/scan-gram.h (handle_dollar): this.
1876 * src/parse-gram.y: Remove `%thong'.
1877
1878 * src/reader.c (copy_at): Replace with...
1879 * src/scan-gram.h (handle_at): this.
1880
1881 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
1882 New.
1883
1884 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
1885 time being.
1886
1887 * src/reader.h, src/reader.c (grammar_rule_end): New.
1888
1889 * src/parse.y (current_type, current_class): New.
1890 Implement `%nterm', `%token' support.
1891 Merge `%term' into `%token'.
1892 (string_as_id): New.
1893 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
1894 type name.
1895
1896 * src/parse-gram.y: Be sure to handle properly the beginning of
1897 rules.
1898
1899 * src/parse-gram.y: Handle %type.
1900 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
1901
1902 * src/parse-gram.y: More directives support.
1903 * src/options.c: No longer handle source directives.
1904
1905 * src/parse-gram.y: Fix %output.
1906
1907 * src/parse-gram.y: Handle %union.
1908 Use the prologue locations.
1909 * src/reader.c (parse_union_decl): Remove.
1910
1911 * src/reader.h, src/reader.c (epilogue_set): New.
1912 * src/parse-gram.y: Use it.
1913
1914 * data/bison.simple, data/bison.c++: b4_stype is now either not
1915 defined, then default to int, or to the contents of %union,
1916 without `union' itself.
1917 Adjust.
1918 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
1919
1920 * src/output.c (actions_output): Don't output braces, as they are
1921 already handled by the scanner.
1922
1923 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
1924 characters to themselves.
1925
1926 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
1927 that the epilogue has a proper #line.
1928
1929 * src/parse-gram.y: Handle precedence/associativity.
1930
1931 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
1932 a terminal.
1933 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
1934 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
1935 at all to define terminals that cannot be emitted.
1936
1937 * src/scan-gram.l: Escape M4 characters.
1938
1939 * src/scan-gram.l: Working properly with escapes in user
1940 strings/characters.
1941
1942 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
1943 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
1944 grammar.
1945 Use more modest sizes, as for the time being the parser does not
1946 release memory, and therefore the process swallows a huge amount
1947 of memory.
1948
1949 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
1950 stricter %token grammar.
1951
1952 * src/symtab.h (associativity): Add `undef_assoc'.
1953 (symbol_precedence_set): Do nothing when passed an undef_assoc.
1954 * src/symtab.c (symbol_check_alias_consistence): Adjust.
1955
1956 * tests/regression.at (Invalid %directive): Remove, as it is now
1957 meaningless.
1958 (Invalid inputs): Adjust to the new error messages.
1959 (Token definitions): The new grammar doesn't allow too many
1960 eccentricities.
1961
1962 * src/lex.h, src/lex.c: Remove.
1963 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
1964 (copy_character, copy_string2, copy_string, copy_identifier)
1965 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
1966 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
1967 (parse_action): Remove.
1968 * po/POTFILES.in: Adjust.
1969
19702002-06-11 Akim Demaille <akim@epita.fr>
1971
1972 * src/reader.c (parse_action): Don't store directly into the
1973 rule's action member: return the action as a string.
1974 Don't require `rule_length' as an argument: compute it.
1975 (grammar_current_rule_symbol_append)
1976 (grammar_current_rule_action_append): New, eved out from
1977 (readgram): here.
1978 Remove `action_flag', `rulelength', unused now.
1979
19802002-06-11 Akim Demaille <akim@epita.fr>
1981
1982 * src/reader.c (grammar_current_rule_prec_set).
1983 (grammar_current_rule_check): New, eved out from...
1984 (readgram): here.
1985 Remove `xaction', `first_rhs': useless.
1986 * tests/input.at (Type clashes): New.
1987 * tests/existing.at (GNU Cim Grammar): Adjust.
1988
19892002-06-11 Akim Demaille <akim@epita.fr>
1990
1991 * src/reader.c (grammar_midrule_action): New, Eved out from
1992 (readgram): here.
1993
19942002-06-11 Akim Demaille <akim@epita.fr>
1995
1996 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
1997 New.
1998 (readgram): Use them as replacement of inlined code, crule and
1999 crule1.
2000
20012002-06-11 Akim Demaille <akim@epita.fr>
2002
2003 * src/reader.c (grammar_end, grammar_symbol_append): New.
2004 (readgram): Use them.
2005 Make the use of `p' as local as possible.
2006
20072002-06-10 Akim Demaille <akim@epita.fr>
2008
2009 GCJ's parser requires the tokens to be defined before the prologue.
2010
2011 * data/bison.simple: Output the token definition before the user's
2012 prologue.
2013 * tests/regression.at (Braces parsing, Duplicate string)
2014 (Mixing %token styles): Check the output from bison.
2015 (Early token definitions): New.
2016
20172002-06-10 Akim Demaille <akim@epita.fr>
2018
2019 * src/symtab.c (symbol_user_token_number_set): Don't complain when
2020 assigning twice the same user number to a token, so that we can
2021 use it in...
2022 * src/lex.c (lex): here.
2023 Also use `symbol_class_set' instead of hand written code.
2024 * src/reader.c (parse_assoc_decl): Likewise.
2025
20262002-06-10 Akim Demaille <akim@epita.fr>
2027
2028 * src/symtab.c, src/symtab.c (symbol_class_set)
2029 (symbol_user_token_number_set): New.
2030 * src/reader.c (parse_token_decl): Use them.
2031 Use a switch instead of ifs.
2032 Use a single argument.
2033
20342002-06-10 Akim Demaille <akim@epita.fr>
2035
2036 Remove `%thong' support as it is undocumented, unused, duplicates
2037 `%token's job, and creates useless e-mail traffic with people who
2038 want to know what it is, why it is undocumented, unused, and
2039 duplicates `%token's job.
2040
2041 * src/reader.c (parse_thong_decl): Remove.
2042 * src/options.c (option_table): Remove "thong".
2043 * src/lex.h (tok_thong): Remove.
2044
20452002-06-10 Akim Demaille <akim@epita.fr>
2046
2047 * src/symtab.c, src/symtab.c (symbol_type_set)
2048 (symbol_precedence_set): New.
2049 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
2050 (value_components_used): Remove, unused.
2051
20522002-06-09 Akim Demaille <akim@epita.fr>
2053
2054 Move symbols handling code out of the reader.
2055
2056 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
2057 (axiom): Move to...
2058 * src/symtab.h, src/symtab.c: here.
2059
2060 * src/gram.c (start_symbol): Remove: use startsymbol->number.
2061 * src/reader.c (startval): Rename as...
2062 * src/symtab.h, src/symtab.c (startsymbol): this.
2063 * src/reader.c: Adjust.
2064
2065 * src/reader.c (symbol_check_defined, symbol_make_alias)
2066 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
2067 (token_translations_init)
2068 Move to...
2069 * src/symtab.c: here.
2070 * src/reader.c (packsymbols): Move to...
2071 * src/symtab.h, src/symtab.c (symbols_pack): here.
2072 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
2073 argument.
2074
20752002-06-03 Akim Demaille <akim@epita.fr>
2076
2077 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
2078 then statements.
2079
20802002-06-03 Akim Demaille <akim@epita.fr>
2081
2082 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
2083 structs with non literals.
2084 * src/scan-skel.l: never-interactive.
2085 * src/conflicts.c (enum conflict_resolution_e): No trailing
2086 comma.
2087 * src/getargs.c (usage): Split long literal strings.
2088 Reported by Hans Aberg.
2089
20902002-05-28 Akim Demaille <akim@epita.fr>
2091
2092 * data/bison.c++: Use C++ ostreams.
2093 (cdebug_): New member.
2094
20952002-05-28 Akim Demaille <akim@epita.fr>
2096
2097 * src/output.c (output_skeleton): Be sure to allocate enough room
2098 for `/' _and_ for `\0' in full_skeleton.
2099
21002002-05-28 Akim Demaille <akim@epita.fr>
2101
2102 * data/bison.c++: Catch up with bison.simple:
2103 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2104 and Paul Eggert <eggert@twinsun.com>: `error' handing.
2105 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
2106 and popping traces.
2107
21082002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2109
2110 * src/output.c (output_skeleton): Put an explicit path in front of
2111 the skeleton file name, rather than relying on the -I directory,
2112 to partially alleviate effects of having a skeleton file lying around
2113 in the current directory.
2114
21152002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2116
2117 * src/conflicts.c (log_resolution): Correct typo:
2118 obstack_printf should be obstack_fgrow1.
2119
21202002-05-26 Akim Demaille <akim@epita.fr>
2121
2122 * src/state.h (state_t): `solved_conflicts' is a new member.
2123 * src/LR0.c (new_state): Set it to 0.
2124 * src/conflicts.h, src/conflicts.c (print_conflicts)
2125 (free_conflicts, solve_conflicts): Rename as...
2126 (conflicts_print, conflicts_free, conflicts_solve): these.
2127 Adjust callers.
2128 * src/conflicts.c (enum conflict_resolution_e)
2129 (solved_conflicts_obstack): New, used by...
2130 (log_resolution): this.
2131 Adjust to attach the conflict resolution to each state.
2132 Complete the description with the precedence/associativity
2133 information.
2134 (resolve_sr_conflict): Adjust.
2135 * src/print.c (print_state): Output its solved_conflicts.
2136 * tests/conflicts.at (Unresolved SR Conflicts)
2137 (Solved SR Conflicts): Exercise --report=all.
2138
21392002-05-26 Akim Demaille <akim@epita.fr>
2140
2141 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
2142 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
2143 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
2144 (token_number_t, item_number_as_token_number)
2145 (token_number_as_item_number, muscle_insert_token_number_table):
2146 Rename as...
2147 (symbol_number_t, item_number_as_symbol_number)
2148 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
2149 these, since it is more appropriate.
2150
21512002-05-26 Akim Demaille <akim@epita.fr>
2152
2153 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
2154 `Error:' lines.
2155 * data/bison.simple (yystos) [YYDEBUG]: New.
2156 (yyparse) [YYDEBUG]: Display the symbols which are popped during
2157 error recovery.
2158 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
2159
21602002-05-25 Akim Demaille <akim@epita.fr>
2161
2162 * doc/bison.texinfo (Debugging): Split into...
2163 (Tracing): this new section, its former contents, and...
2164 (Understanding): this new section.
2165 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
2166 by...
2167 (report_flag): this.
2168 Adjust all dependencies.
2169 (report_args, report_types, report_argmatch): New.
2170 (usage, getargs): Report/support -r, --report.
2171 * src/options.h
2172 (struct option_table_struct): Rename as..,
2173 (struct option_table_s): this.
2174 Rename the `set_flag' member to `flag' to match with getopt_long's
2175 struct.
2176 * src/options.c (option_table): Split verbose into an entry for
2177 %verbose, and another for --verbose.
2178 Support --report/-r, so remove -r from the obsolete --raw.
2179 * src/print.c: Attach full item sets and lookaheads reports to
2180 report_flag instead of trace_flag.
2181 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
2182
21832002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2184 and Paul Eggert <eggert@twinsun.com>
2185
2186 * data/bison.simple (yyparse): Correct error handling to conform to
2187 POSIX and yacc. Specifically, after syntax error is discovered,
2188 do not reduce further before shifting the error token.
2189 Clean up the code a bit by removing the labels yyerrdefault,
2190 yyerrhandle, yyerrpop.
2191 * NEWS: Document the above.
2192
21932002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2194
2195 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
2196 type; it isn't always big enough, since it doesn't necessarily
2197 include non-terminals.
2198 (yytranslate): Expand definition of yy_token_number_type, so that
2199 the latter can be removed.
2200 (yy_token_number_type): Remove, only one use.
2201 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
2202 don't use TokenNumberType as element type.
2203
2204 * tests/regression.at: Modify expected output to agree with change
2205 to yyr1 and yytranslate.
2206
22072002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
2208
2209 * src/reader.c (parse_action): Use copy_character instead of
2210 obstack_1grow.
2211
22122002-05-13 Akim Demaille <akim@epita.fr>
2213
2214 * tests/regression.at (Token definitions): Prototype yylex and
2215 yyerror.
2216
22172002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2218
2219 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
2220 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
2221 32-bit arithmetic.
2222 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
2223
22242002-05-07 Akim Demaille <akim@epita.fr>
2225
2226 * tests/synclines.at: Be sure to prototype yylex and yyerror to
2227 avoid GCC warnings.
2228
22292002-05-07 Akim Demaille <akim@epita.fr>
2230
2231 Kill GCC warnings.
2232
2233 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
2234 over the RHS of each rule.
2235 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
2236 * src/state.h (state_t): Member `nitems' is unsigned short.
2237 * src/LR0.c (get_state): Adjust.
2238 * src/reader.c (packgram): Likewise.
2239 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
2240 `Type'.
2241 (muscle_insert_int_table): Remove, unused.
2242 (prepare_rules): Remove `max'.
2243
22442002-05-06 Akim Demaille <akim@epita.fr>
2245
2246 * src/closure.c (print_firsts): Display of the symbol tags.
2247 (bitmatrix_print): Move to...
2248 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
2249 here.
2250 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
2251
22522002-05-06 Akim Demaille <akim@epita.fr>
2253
2254 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
2255 hash_do_for_each.
2256
22572002-05-06 Akim Demaille <akim@epita.fr>
2258
2259 * src/LR0.c (new_state, get_state): Instead of using the global
2260 `kernel_size' and `kernel_base', have two new arguments:
2261 `core_size' and `core'.
2262 Adjust callers.
2263
22642002-05-06 Akim Demaille <akim@epita.fr>
2265
2266 * src/reader.c (packgram): No longer end `ritem' with a 0
2267 sentinel: it is not used.
2268
22692002-05-05 Akim Demaille <akim@epita.fr>
2270
2271 New experimental feature: display the lookaheads in the report and
2272 graph.
2273
2274 * src/print (print_core): When --trace-flag, display the rules
2275 lookaheads.
2276 * src/print_graph.c (print_core): Likewise.
2277 Swap the arguments.
2278 Adjust caller.
2279
22802002-05-05 Akim Demaille <akim@epita.fr>
2281
2282 * tests/torture.at (Many lookaheads): New test.
2283
22842002-05-05 Akim Demaille <akim@epita.fr>
2285
2286 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
2287 (GENERATE_MUSCLE_INSERT_TABLE): this.
2288 (output_int_table, output_unsigned_int_table, output_short_table)
2289 (output_token_number_table, output_item_number_table): Replace with...
2290 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
2291 (muscle_insert_short_table, muscle_insert_token_number_table)
2292 (muscle_insert_item_number_table): these.
2293 Adjust all callers.
2294 (prepare_tokens): Don't free `translations', since...
2295 * src/reader.h, src/reader.c (grammar_free): do it.
2296 Move to...
2297 * src/gram.h, src/gram.c (grammar_free): here.
2298 * data/bison.simple, data/bison.c++: b4_token_number_max is now
2299 b4_translate_max.
2300
23012002-05-05 Akim Demaille <akim@epita.fr>
2302
2303 * src/output.c (output_unsigned_int_table): New.
2304 (prepare_rules): `i' is unsigned.
2305 `prhs', `rline', `r2' are unsigned int.
2306 Rename muscle `rhs_number_max' as `rhs_max'.
2307 Output muscles `prhs_max', `rline_max', and `r2_max'.
2308 Free rline and r1.
2309 * data/bison.simple, data/bison.c++: Adjust to use these muscles
2310 to compute types instead of constant types.
2311 * tests/regression.at (Web2c Actions): Adjust.
2312
23132002-05-04 Akim Demaille <akim@epita.fr>
2314
2315 * src/symtab.h (SALIAS, SUNDEF): Rename as...
2316 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
2317 Adjust dependencies.
2318 * src/output.c (token_definitions_output): Be sure not to output a
2319 `#define 'a'' when fed with `%token 'a' "a"'.
2320 * tests/regression.at (Token definitions): New.
2321
23222002-05-03 Paul Eggert <eggert@twinsun.com>
2323
2324 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
2325 for K&R C.
2326
23272002-05-03 gettextize <bug-gnu-gettext@gnu.org>
2328
2329 * Makefile.am (SUBDIRS): Remove intl.
2330 (EXTRA_DIST): Add config/config.rpath.
2331
23322002-05-03 Akim Demaille <akim@epita.fr>
2333
2334 * data/bison.simple (m4_if): Don't output empty enums.
2335 And actually, output valid enum definitions :(.
2336
23372002-05-03 Akim Demaille <akim@epita.fr>
2338
2339 * configure.bat: Remove, completely obsolete.
2340 * Makefile.am (EXTRA_DIST): Adjust.
2341 Don't distribute config.rpath...
2342 * config/Makefile.am (EXTRA_DIST): Do it.
2343
23442002-05-03 Akim Demaille <akim@epita.fr>
2345
2346 * configure.in (GETTEXT_VERSION): New.
2347 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
2348
23492002-05-03 Akim Demaille <akim@epita.fr>
2350
2351 * data/bison.simple (b4_token_enum): New.
2352 (b4_token_defines): Use it to output tokens both as #define and
2353 enums.
2354 Suggested by Paul Eggert.
2355 * src/output.c (token_definitions_output): Don't output spurious
2356 white spaces.
2357
23582002-05-03 Akim Demaille <akim@epita.fr>
2359
2360 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
2361
23622002-05-02 Robert Anisko <robert@lrde.epita.fr>
2363
2364 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
2365 Update the stack class, give a try to deque as the default container.
2366
23672002-05-02 Akim Demaille <akim@epita.fr>
2368
2369 * data/bison.simple (yyparse): Do not implement @$ = @1.
2370 (YYLLOC_DEFAULT): Adjust to do it.
2371 * doc/bison.texinfo (Location Default Action): Fix.
2372
23732002-05-02 Akim Demaille <akim@epita.fr>
2374
2375 * src/reader.c (parse_braces): Merge into...
2376 (parse_action): this.
2377
23782002-05-02 Akim Demaille <akim@epita.fr>
2379
2380 * configure.in (ALL_LINGUAS): Remove.
2381 * po/LINGUAS, hr.po: New.
2382
23832002-05-02 Akim Demaille <akim@epita.fr>
2384
2385 Remove the so called hairy (semantic) parsers.
2386
2387 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
2388 * src/gram.h, src/gram.c (semantic_parser): Remove.
2389 (rule_t): Remove the guard and guard_line members.
2390 * src/lex.h (token_t): remove tok_guard.
2391 * src/options.c (option_table): Remove %guard and %semantic_parser
2392 support.
2393 * src/output.c, src/output.h (guards_output): Remove.
2394 (prepare): Adjust.
2395 (token_definitions_output): Don't output the `T'
2396 tokens (???).
2397 (output_skeleton): Don't output the guards.
2398 * src/files.c, src/files.c (attrsfile): Remove.
2399 * src/reader.c (symbol_list): Remove the guard and guard_line
2400 members.
2401 Adjust dependencies.
2402 (parse_guard): Remove.
2403 * data/bison.hairy: Remove.
2404 * doc/bison.texinfo (Environment Variables): Remove occurrences of
2405 BISON_HAIRY.
2406
24072002-05-02 Akim Demaille <akim@epita.fr>
2408
2409 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
2410 (parse_guard): Rename the formal argument `stack_offset' as
2411 `rule_length', which is more readable.
2412 Adjust callers.
2413 (copy_at, copy_dollar): Instead of outputting the hard coded
2414 values of $$, $n and so forth, output invocation to b4_lhs_value,
2415 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
2416 Note: this patch partially drops `semantic-parser' support: it
2417 always does `rule_length - n', where semantic parsers ought to
2418 always use `-n'.
2419 * data/bison.simple, data/bison.c++ (b4_lhs_value)
2420 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
2421
24222002-05-02 Akim Demaille <akim@epita.fr>
2423
2424 * configure.in (AC_INIT): Bump to 1.49b.
2425 (AM_INIT_AUTOMAKE): Short invocation.
2426
24272002-05-02 Akim Demaille <akim@epita.fr>
2428
2429 Version 1.49a.
2430
24312002-05-01 Akim Demaille <akim@epita.fr>
2432
2433 * src/skeleton.h: Remove.
2434
24352002-05-01 Akim Demaille <akim@epita.fr>
2436
2437 * src/skeleton.h: Fix the #endif.
2438 Reported by Magnus Fromreide.
2439
24402002-04-26 Paul Eggert <eggert@twinsun.com>
2441
2442 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
2443 Define if we define YYSTYPE and YYLTYPE, respectively.
2444 (YYCOPY): Fix [] quoting problem in the non-GCC case.
2445
24462002-04-25 Robert Anisko <robert@lrde.epita.fr>
2447
2448 * src/scan-skel.l: Postprocess quadrigraphs.
2449
2450 * src/reader.c (copy_character): New function, used to output
2451 single characters while replacing `[' and `]' with quadrigraphs, to
2452 avoid troubles with M4 quotes.
2453 (copy_comment): Output characters with copy_character.
2454 (read_additionnal_code): Likewise.
2455 (copy_string2): Likewise.
2456 (copy_definition): Likewise.
2457
2458 * tests/calc.at: Exercise M4 quoting.
2459
24602002-04-25 Akim Demaille <akim@epita.fr>
2461
2462 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
2463 between `!' and the command.
2464 Reported by Paul Eggert.
2465
24662002-04-24 Robert Anisko <robert@lrde.epita.fr>
2467
2468 * tests/calc.at: Exercise prologue splitting.
2469
2470 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
2471 `b4_post_prologue' instead of `b4_prologue'.
2472
2473 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
2474 muscles.
2475 (output): Free pre_prologue_obstack and post_prologue_obstack.
2476 * src/files.h, src/files.c (attrs_obstack): Remove.
2477 (pre_prologue_obstack, post_prologue_obstack): New.
2478 * src/reader.c (copy_definition): Add a parameter to specify the
2479 obstack to fill, instead of using attrs_obstack unconditionally.
2480 (read_declarations): Pass pre_prologue_obstack to copy_definition if
2481 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
2482
24832002-04-23 Paul Eggert <eggert@twinsun.com>
2484
2485 * data/bison.simple: Remove unnecessary commentary and white
2486 space differences from 1_29-branch.
2487 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
2488
2489 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
2490 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
2491 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
2492 constructors or destructors.
2493
2494 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
2495
24962002-04-23 Akim Demaille <akim@epita.fr>
2497
2498 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
2499 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
2500 location with columns.
2501 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
2502 All reported by Paul Eggert.
2503
25042002-04-22 Akim Demaille <akim@epita.fr>
2505
2506 * src/reduce.c (dump_grammar): Move to...
2507 * src/gram.h, src/gram.c (grammar_dump): here.
2508 Be sure to separate long item numbers.
2509 Don't read the members of a rule's prec if its nil.
2510
25112002-04-22 Akim Demaille <akim@epita.fr>
2512
2513 * src/output.c (table_size, table_grow): New.
2514 (MAXTABLE): Remove, replace uses with table_size.
2515 (pack_vector): Instead of dying when the table is too big, grow it.
2516
25172002-04-22 Akim Demaille <akim@epita.fr>
2518
2519 * data/bison.simple (yyr1): Its type is that of a token number.
2520 * data/bison.c++ (r1_): Likewise.
2521 * tests/regression.at (Web2c Actions): Adjust.
2522
25232002-04-22 Akim Demaille <akim@epita.fr>
2524
2525 * src/reader.c (token_translations_init): 256 is now the default
2526 value for the error token, i.e., it will be assigned another
2527 number if the user assigned 256 to one of her tokens.
2528 (reader): Don't force 256 to error.
2529 * doc/bison.texinfo (Symbols): Adjust.
2530 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
2531 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
2532 etc. instead of 10, 20, 30 (which was used to `jump' over error
2533 (256) and undefined (2)).
2534
25352002-04-22 Akim Demaille <akim@epita.fr>
2536
2537 Propagate more token_number_t.
2538
2539 * src/gram.h (token_number_as_item_number)
2540 (item_number_as_token_number): New.
2541 * src/output.c (GENERATE_OUTPUT_TABLE): New.
2542 Use it to create output_item_number_table and
2543 output_token_number_table.
2544 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
2545 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
2546 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
2547 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
2548
25492002-04-22 Akim Demaille <akim@epita.fr>
2550
2551 * src/output.h, src/output.c (get_lines_number): Remove.
2552
25532002-04-19 Akim Demaille <akim@epita.fr>
2554
2555 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
2556 as Lex/Flex'.
2557 (Debugging): More details about enabling the debugging features.
2558 (Table of Symbols): Describe $$, $n, @$, and @n.
2559 Suggested by Tim Josling.
2560
25612002-04-19 Akim Demaille <akim@epita.fr>
2562
2563 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
2564
25652002-04-10 Akim Demaille <akim@epita.fr>
2566
2567 * src/system.h: Rely on HAVE_LIMITS_H.
2568 Suggested by Paul Eggert.
2569
25702002-04-09 Akim Demaille <akim@epita.fr>
2571
2572 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
2573 full stderr, and strip it according to the bison options, instead
2574 of composing the error message from different bits.
2575 This makes it easier to check for several error messages.
2576 Adjust all the invocations.
2577 Add an invocation exercising the error token.
2578 Add an invocation demonstrating a stupid error message.
2579 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
2580 Adjust the tests.
2581 Error message are for stderr, not stdout.
2582
25832002-04-09 Akim Demaille <akim@epita.fr>
2584
2585 * src/gram.h, src/gram.c (error_token_number): Remove, use
2586 errtoken->number.
2587 * src/reader.c (reader): Don't specify the user token number (2)
2588 for $undefined, as it uselessly prevents using it.
2589 * src/gram.h (token_number_t): Move to...
2590 * src/symtab.h: here.
2591 (state_t.number): Is a token_number_t.
2592 * src/print.c, src/reader.c: Use undeftoken->number instead of
2593 hard coded 2.
2594 (Even though this 2 is not the same as above: the number of the
2595 undeftoken remains being 2, it is its user token number which
2596 might not be 2).
2597 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
2598 `user_token_number_max'.
2599 Output `undef_token_number'.
2600 * data/bison.simple, data/bison.c++: Use them.
2601 Be sure to map invalid yylex return values to
2602 `undef_token_number'. This saves us from gratuitous SEGV.
2603
2604 * tests/conflicts.at (Solved SR Conflicts)
2605 (Unresolved SR Conflicts): Adjust.
2606 * tests/regression.at (Web2c Actions): Adjust.
2607
26082002-04-08 Akim Demaille <akim@epita.fr>
2609
2610 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
2611 Adding #line.
2612 Remove the duplicate `typedefs'.
2613 (RhsNumberType): Fix the declaration and various other typos.
2614 Use __ofile__.
2615 * data/bison.simple: Use __ofile__.
2616 * src/scan-skel.l: Handle __ofile__.
2617
26182002-04-08 Akim Demaille <akim@epita.fr>
2619
2620 * src/gram.h (item_number_t): New, the type of item numbers in
2621 RITEM. Note that it must be able to code symbol numbers as
2622 positive number, and the negation of rule numbers as negative
2623 numbers.
2624 Adjust all dependencies (pretty many).
2625 * src/reduce.c (rule): Remove this `short *' pointer: use
2626 item_number_t.
2627 * src/system.h (MINSHORT, MAXSHORT): Remove.
2628 Include `limits.h'.
2629 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
2630 (shortcpy): Remove.
2631 (MAXTABLE): Move to...
2632 * src/output.c (MAXTABLE): here.
2633 (prepare_rules): Use output_int_table to output rhs.
2634 * data/bison.simple, data/bison.c++: Adjust.
2635 * tests/torture.at (Big triangle): Move the limit from 254 to
2636 500.
2637 * tests/regression.at (Web2c Actions): Ajust.
2638
2639 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
2640 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
2641 passes, but produces negative #line number, once fixed, GCC is
2642 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
2643 C), it passes.
2644 * src/state.h (state_h): Code input lines on ints, not shorts.
2645
26462002-04-08 Akim Demaille <akim@epita.fr>
2647
2648 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
2649 and then the grammar.
2650
26512002-04-08 Akim Demaille <akim@epita.fr>
2652
2653 * src/system.h: No longer using strndup.
2654
26552002-04-07 Akim Demaille <akim@epita.fr>
2656
2657 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
2658 * src/output.c (output_table_data): Return the longest number.
2659 (prepare_tokens): Output `token_number_max').
2660 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
2661 New.
2662 Use them to define yy_token_number_type/TokenNumberType.
2663 Use this type for yytranslate.
2664 * tests/torture.at (Big triangle): Push the limit from 124 to
2665 253.
2666 * tests/regression.at (Web2c Actions): Adjust.
2667
26682002-04-07 Akim Demaille <akim@epita.fr>
2669
2670 * tests/torture.at (Big triangle): New.
2671 (GNU AWK Grammar, GNU Cim Grammar): Move to...
2672 * tests/existing.at: here.
2673
26742002-04-07 Akim Demaille <akim@epita.fr>
2675
2676 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
2677 nritems.
2678 Adjust dependencies.
2679
26802002-04-07 Akim Demaille <akim@epita.fr>
2681
2682 * src/reader.c: Normalize increments to prefix form.
2683
26842002-04-07 Akim Demaille <akim@epita.fr>
2685
2686 * src/reader.c, symtab.c: Remove debugging code.
2687
26882002-04-07 Akim Demaille <akim@epita.fr>
2689
2690 Rename all the `bucket's as `symbol_t'.
2691
2692 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
2693 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
2694 * src/symtab.c, src/symtab.h (bucket): Rename as...
2695 (symbol_t): this.
2696 (symbol_list_new, bucket_check_defined, bucket_make_alias)
2697 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
2698 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
2699 (buckets_new, buckets_free, buckets_do): Rename as...
2700 (symbol_list_new, symbol_check_defined, symbol_make_alias)
2701 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
2702 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
2703 (symbols_new, symbols_free, symbols_do): these.
2704
27052002-04-07 Akim Demaille <akim@epita.fr>
2706
2707 Use lib/hash for the symbol table.
2708
2709 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
2710 EOF.
2711 * src/lex.c (lex): Set the `number' member of new terminals.
2712 * src/reader.c (bucket_check_defined, bucket_make_alias)
2713 (bucket_check_alias_consistence, bucket_translation): New.
2714 (reader, grammar_free, readgram, token_translations_init)
2715 (packsymbols): Adjust.
2716 (reader): Number the predefined tokens.
2717 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
2718 for predefined tokens.
2719 * src/symtab.h (bucket): Remove all the hash table related
2720 members.
2721 * src/symtab.c (symtab): Replace by...
2722 (bucket_table): this.
2723 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
2724 (buckets_new, buckets_do): New.
2725
27262002-04-07 Akim Demaille <akim@epita.fr>
2727
2728 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
2729 (start_symbol, max_user_token_number, semantic_parser)
2730 (error_token_number): Initialize.
2731 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
2732 Initialize.
2733 (reader): Don't.
2734 (errtoken, eoftoken, undeftoken, axiom): Extern.
2735
27362002-04-07 Akim Demaille <akim@epita.fr>
2737
2738 * src/gram.h (rule_s): prec and precsym are now pointers
2739 to the bucket giving the priority/associativity.
2740 Member `associativity' removed: useless.
2741 * src/reduce.c, src/conflicts.c: Adjust.
2742
27432002-04-07 Akim Demaille <akim@epita.fr>
2744
2745 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
2746 Properly escape the symbols' TAG when outputting them.
2747
27482002-04-07 Akim Demaille <akim@epita.fr>
2749
2750 * src/lalr.h (LA): Is a bitsetv, not bitset*.
2751
27522002-04-07 Akim Demaille <akim@epita.fr>
2753
2754 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
2755 (LArule): this, which is an array to rule_t*.
2756 * src/print.c, src/conflicts.c: Adjust.
2757
27582002-04-07 Akim Demaille <akim@epita.fr>
2759
2760 * src/gram.h (rule_t): Rename `number' as `user_number'.
2761 `number' is a new member.
2762 Adjust dependencies.
2763 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
2764
27652002-04-07 Akim Demaille <akim@epita.fr>
2766
2767 As a result of the previous patch, it is no longer needed
2768 to reorder ritem itself.
2769
2770 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
2771
27722002-04-07 Akim Demaille <akim@epita.fr>
2773
2774 Be sure never to walk through RITEMS, but use only data related to
2775 the rules themselves. RITEMS should be banished.
2776
2777 * src/output.c (output_token_translations): Rename as...
2778 (prepare_tokens): this.
2779 In addition to `translate', prepare the muscles `tname' and
2780 `toknum', which were handled by...
2781 (output_rule_data): this.
2782 Remove, and move the remainder of its outputs into...
2783 (prepare_rules): this new routines, which also merges content from
2784 (output_gram): this.
2785 (prepare_rules): Be sure never to walk through RITEMS.
2786 (output_stos): Rename as...
2787 (prepare_stos): this.
2788 (output): Always invoke prepare_states, after all, just don't use it
2789 in the output if you don't need it.
2790
27912002-04-07 Akim Demaille <akim@epita.fr>
2792
2793 * src/LR0.c (new_state): Display `nstates' as the name of the
2794 newly created state.
2795 Adjust to initialize first_state and last_state if needed.
2796 Be sure to distinguish the initial from the final state.
2797 (new_states): Create the itemset of the initial state, and use
2798 new_state.
2799 * src/closure.c (closure): Now that the initial state has its
2800 items properly set, there is no need for a special case when
2801 creating `ruleset'.
2802
2803 As a result, now the rule 0, reducing to $axiom, is visible in the
2804 outputs. Adjust the test suite.
2805
2806 * tests/conflicts.at (Solved SR Conflicts)
2807 (Unresolved SR Conflicts): Adjust.
2808 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
2809 * tests/conflicts.at (S/R in initial): New.
2810
28112002-04-07 Akim Demaille <akim@epita.fr>
2812
2813 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
2814 the RHS of the rules.
2815 * src/output.c (output_gram): Likewise.
2816
28172002-04-07 Akim Demaille <akim@epita.fr>
2818
2819 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
2820 bucket.
2821 Adjust all dependencies.
2822 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
2823 `number' of the buckets too.
2824 * src/gram.h: Include `symtab.h'.
2825 (associativity): Move to...
2826 * src/symtab.h: here.
2827 No longer include `gram.h'.
2828
28292002-04-07 Akim Demaille <akim@epita.fr>
2830
2831 * src/gram.h, src/gram.c (rules_rhs_length): New.
2832 (ritem_longest_rhs): Use it.
2833 * src/gram.h (rule_t): `number' is a new member.
2834 * src/reader.c (packgram): Set it.
2835 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
2836 the end of `rules', and count them out of `nrules'.
2837 (reduce_output, dump_grammar): Adjust.
2838 * src/print.c (print_grammar): It is no longer needed to check for
2839 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
2840 * tests/reduce.at (Reduced Automaton): New test.
2841
28422002-04-07 Akim Demaille <akim@epita.fr>
2843
2844 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
2845 lacking `+ 1' to nrules, Bison reported as useless a token if it
2846 was used solely to set the precedence of the last rule...
2847
28482002-04-07 Akim Demaille <akim@epita.fr>
2849
2850 * data/bison.c++, data/bison.simple: Don't output the current file
2851 name in #line, to avoid useless diffs between two identical
2852 outputs under different names.
2853
28542002-04-07 Akim Demaille <akim@epita.fr>
2855
2856 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
2857 Normalize loops to using `< nrules + 1', not `<= nrules'.
2858
28592002-04-07 Akim Demaille <akim@epita.fr>
2860
2861 * TODO: Update.
2862
28632002-04-07 Akim Demaille <akim@epita.fr>
2864
2865 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
2866 bucket.value as bucket.number.
2867
28682002-04-07 Akim Demaille <akim@epita.fr>
2869
2870 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
2871 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
2872 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
2873 RHS, instead of being an index in RITEMS.
2874
28752002-04-04 Paul Eggert <eggert@twinsun.com>
2876
2877 * doc/bison.texinfo: Update copyright date.
2878 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
2879 (Symbols): Warn about running Bison in one character set,
2880 but compiling and/or running in an incompatible one.
2881 Warn about character code 256, too.
2882
28832002-04-03 Paul Eggert <eggert@twinsun.com>
2884
2885 * src/bison.data (YYSTACK_ALLOC): Depend on whether
2886 YYERROR_VERBOSE is nonzero, not whether it is defined.
2887
2888 Merge changes from bison-1_29-branch.
2889
28902002-03-20 Paul Eggert <eggert@twinsun.com>
2891
2892 Merge fixes from Debian bison_1.34-1.diff.
2893
2894 * configure.in (AC_PREREQ): 2.53.
2895
28962002-03-20 Akim Demaille <akim@epita.fr>
2897
2898 * src/conflicts.c (log_resolution): Argument `resolution' is const.
2899
29002002-03-19 Paul Eggert <eggert@twinsun.com>
2901
2902 * src/bison.simple (YYCOPY): New macro.
2903 (YYSTACK_RELOCATE): Use it.
2904 Remove Type arg; no longer needed. All callers changed.
2905 (yymemcpy): Remove; no longer needed.
2906
2907 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
2908 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
2909
29102002-03-19 Akim Demaille <akim@epita.fr>
2911
2912 Test and fix the #line outputs.
2913
2914 * tests/atlocal.at (GCC): New.
2915 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
2916 (Prologue synch line, ,%union synch line, Postprologue synch line)
2917 (Action synch line, Epilogue synch line): New tests.
2918 * src/reader.c (parse_union_decl): Define the muscle stype_line.
2919 * data/bison.simple, data/bison.c++: Use it.
2920
29212002-03-19 Akim Demaille <akim@epita.fr>
2922
2923 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
2924 (Solved SR Conflicts, %expect not enough, %expect right)
2925 (%expect too much): Move to...
2926 * tests/conflicts.at: this new file.
2927
29282002-03-19 Akim Demaille <akim@epita.fr>
2929
2930 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
2931 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
2932 that we can move to enums for instance.
2933 * src/output.c (token_definitions_output): Output a list of
2934 `token-name, token-number' instead of the #define.
2935 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
2936
29372002-03-14 Akim Demaille <akim@epita.fr>
2938
2939 Use Gettext 0.11.1.
2940
29412002-03-09 Robert Anisko <robert@lrde.epita.fr>
2942
2943 * data/bison.c++: Make the user able to add members to the generated
2944 parser by subclassing.
2945
29462002-03-05 Robert Anisko <robert@lrde.epita.fr>
2947
2948 * src/reader.c (read_additionnal_code): `c' should be an integer, not
2949 a character.
2950 Reported by Nicolas Tisserand and Nicolas Burrus.
2951
29522002-03-04 Robert Anisko <robert@lrde.epita.fr>
2953
2954 * src/reader.c: Warn about lacking semi-colons, do not complain.
2955
29562002-03-04 Robert Anisko <robert@lrde.epita.fr>
2957
2958 * data/bison.c++: Remove a debug line.
2959
29602002-03-04 Robert Anisko <robert@lrde.epita.fr>
2961
2962 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
2963 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
2964 provide a default implementation.
2965
29662002-03-04 Akim Demaille <akim@epita.fr>
2967
2968 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
2969 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
2970 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
2971 * tests/semantic.at (Parsing Guards): Similarly.
2972 * src/reader.at (readgram): Complain if the last rule is not ended
2973 with a semi-colon.
2974
29752002-03-04 Akim Demaille <akim@epita.fr>
2976
2977 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
2978 * src/closure.c: here.
2979 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
2980 RTC.
2981 * src/warshall.h, src/warshall.c: Remove.
2982 * tests/sets.at (Broken Closure): Adjust.
2983
29842002-03-04 Akim Demaille <akim@epita.fr>
2985
2986 * src/output.c (output_skeleton): tempdir is const.
2987 bytes_read is unused.
2988
29892002-03-04 Akim Demaille <akim@epita.fr>
2990
2991 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
2992 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
2993 Update.
2994 From Michael Hayes.
2995
29962002-03-04 Akim Demaille <akim@epita.fr>
2997
2998 * src/closure.c (closure): `r' is unused.
2999
30002002-03-04 Akim Demaille <akim@epita.fr>
3001
3002 * tests/sets.at (Broken Closure): Add the ending `;'.
3003 * src/reader.at (readgram): Complain if a rule is not ended with a
3004 semi-colon.
3005
30062002-03-04 Akim Demaille <akim@epita.fr>
3007
3008 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
3009 (count_sr_conflicts): Use bitset_count.
3010 * src/reduce.c (inaccessable_symbols): Ditto.
3011 (bits_size): Remove.
3012 * src/warshall.h, src/warshall.c: Convert to bitsetv.
3013
30142002-03-04 Akim Demaille <akim@epita.fr>
3015
3016 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
3017 * src/reduce.c: Remove the `bitset_zero's following the
3018 `bitset_create's, as now it is performed by the latter.
3019
30202002-03-04 Akim Demaille <akim@epita.fr>
3021
3022 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
3023 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
3024 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
3025 latest sources from Michael.
3026
30272002-03-04 Akim Demaille <akim@epita.fr>
3028
3029 * src/output.c (output): Don't free the grammar.
3030 * src/reader.c (grammar_free): New.
3031 * src/main.c (main): Call it and don't free symtab here.
3032
30332002-03-04 Akim Demaille <akim@epita.fr>
3034
3035 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
3036 before returning.
3037 Reported by Benoit Perrot.
3038
30392002-03-04 Akim Demaille <akim@epita.fr>
3040
3041 Use bitset operations when possible, not loops over bits.
3042
3043 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
3044 bitset_or.
3045 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
3046 * src/reduce.c (useless_nonterminals): Formatting changes.
3047 * src/warshall.c (TC): Use bitset_or.
3048
30492002-03-04 Akim Demaille <akim@epita.fr>
3050
3051 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
3052 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
3053 Ditto.
3054
30552002-03-04 Akim Demaille <akim@epita.fr>
3056
3057 * src/lalr.c (F): Now a bitset*.
3058 Adjust all dependencies.
3059
30602002-03-04 Akim Demaille <akim@epita.fr>
3061
3062 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
3063 Adjust all dependencies.
3064
30652002-03-04 Akim Demaille <akim@epita.fr>
3066
3067 * src/L0.c, src/LR0.h (nstates): Be size_t.
3068 Adjust comparisons (signed vs unsigned).
3069 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
3070 bitset*.
3071 Adjust all dependencies.
3072
30732002-03-04 Akim Demaille <akim@epita.fr>
3074
3075 * src/closure.c (firsts): Now, also a bitset.
3076 Adjust all dependencies.
3077 (varsetsize): Remove, now unused.
3078 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
3079
30802002-03-04 Akim Demaille <akim@epita.fr>
3081
3082 * src/print.c: Convert to use bitset.h, not hand coded iterations
3083 over ints.
3084
30852002-03-04 Akim Demaille <akim@epita.fr>
3086
3087 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
3088
30892002-03-04 Akim Demaille <akim@epita.fr>
3090
3091 * src/closure.c (ruleset): Be a bitset.
3092 (rulesetsize): Remove.
3093
30942002-03-04 Akim Demaille <akim@epita.fr>
3095
3096 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
3097 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
3098 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
3099 * src/closure.c (fderives): Be an array of bitsets.
3100
31012002-02-28 Robert Anisko <robert@lrde.epita.fr>
3102
3103 * data/bison.c++: Merge the two generated headers. Insert a copyright
3104 notice in each output file.
3105
31062002-02-28 Akim Demaille <akim@epita.fr>
3107
3108 * data/bison.c++: Copy the prologue of bison.simple to fetch
3109 useful M4 definitions, such as b4_header_guard.
3110
31112002-02-25 Akim Demaille <akim@epita.fr>
3112
3113 * src/getargs.c (version): Give the name of the authors, and use a
3114 translator friendly scheme for the bgr
3115 copyright notice.
3116
31172002-02-25 Akim Demaille <akim@epita.fr>
3118
3119 * src/output.c (header_output): Remove, now handled completely via
3120 M4.
3121
31222002-02-25 Akim Demaille <akim@epita.fr>
3123
3124 * m4/m4.m4: New, from CVS Autoconf.
3125 * configure.in: Invoke it.
3126 * src/output.c (output_skeleton): Use its result instead of the
3127 hard coded name.
3128
31292002-02-25 Akim Demaille <akim@epita.fr>
3130
3131 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
3132 Fileutils 4.1.5.
3133 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
3134 * src/output.c (output_skeleton): Use mkstemp to create a real
3135 temporary file.
3136 Move the filling of `skeleton' and its muscle to...
3137 (prepare): here.
3138 (output): Move the definition of the prologue muscle to...
3139 (prepare): here.
3140 * src/system.h (DEFAULT_TMPDIR): New.
3141
31422002-02-14 Paul Eggert <eggert@twinsun.com>
3143
3144 Remove the support for C++ namespace cleanliness; it was
3145 causing more problems than it was curing, since it didn't work
3146 properly on some nonstandard C++ compilers. This can wait
3147 for a proper C++ parser.
3148
3149 * NEWS: Document this.
3150 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
3151 of C++, as it's treated like C now.
3152 * src/bison.simple (YYSTD): Remove.
3153 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
3154 Treat C++ just like Standard C instead of trying to support
3155 namespace cleanliness.
3156
31572002-02-14 Akim Demaille <akim@epita.fr>
3158
3159 * tests/regression.at (else): Adjust to Andreas' change.
3160
31612002-02-14 Akim Demaille <akim@epita.fr>
3162
3163 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
3164
31652002-02-13 Andreas Schwab <schwab@suse.de>
3166
3167 * src/output.c (output_rule_data): Don't output NULL, it might
3168 not be defined yet.
3169
31702002-02-11 Robert Anisko <robert@lrde.epita.fr>
3171
3172 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
3173 (Copyright notice): Update.
3174
31752002-02-11 Akim Demaille <akim@epita.fr>
3176
3177 * tests/regression.at (%nonassoc and eof): Don't include
3178 nonportable headers.
3179
31802002-02-08 Robert Anisko <robert@lrde.epita.fr>
3181
3182 * data/bison.c++: Correct error recovery. Make the user able to
3183 initialize the starting location.
3184
31852002-02-07 Akim Demaille <akim@epita.fr>
3186
3187 * tests/input.at: New.
3188
31892002-02-07 Robert Anisko <robert@lrde.epita.fr>
3190
3191 * data/bison.c++: Replace some direct m4 expansions by constants. Be
3192 more consistent when naming methods and variables. Put preprocessor
3193 directives around tables only needed for debugging.
3194
31952002-02-07 Robert Anisko <robert@lrde.epita.fr>
3196
3197 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
3198 C++ parsers.
3199 (yy::b4_name::parse): Use print_.
3200
32012002-02-07 Robert Anisko <robert@lrde.epita.fr>
3202
3203 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
3204
32052002-02-07 Robert Anisko <robert@lrde.epita.fr>
3206
3207 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
3208 C++ parsers.
3209 (yy::b4_name::parse): Build verbose error messages, and use error_.
3210
32112002-02-06 Robert Anisko <robert@lrde.epita.fr>
3212
3213 * data/bison.c++: Fix m4 quoting in comments.
3214
32152002-02-06 Robert Anisko <robert@lrde.epita.fr>
3216
3217 * data/bison.c++: Adjust the parser code. Fix some muscles that were
3218 not expanded by m4.
3219
32202002-02-05 Akim Demaille <akim@epita.fr>
3221
3222 * data/bison.c++: Adjust to the M4 back end.
3223 More is certainly needed.
3224
32252002-02-05 Akim Demaille <akim@epita.fr>
3226
3227 Give a try to M4 as a back end.
3228
3229 * lib/readpipe.c: New, from wdiff.
3230 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
3231 BISON_HAIRY.
3232 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
3233 specific values. Now it is m4 that performs the lookup.
3234 * src/parse-skel.y: Remove.
3235 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
3236 * src/output.c (actions_output, guards_output)
3237 (token_definitions_output): No longer keeps track of the output
3238 line number, hence remove the second argument.
3239 (guards_output): Check against the guard member of a rule, not the
3240 action member.
3241 Adjust callers.
3242 (output_skeleton): Don't look for the skeleton location, let m4 do
3243 that.
3244 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
3245 file will be used.
3246 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
3247 (prepare): Given that for the time being changesyntax is not
3248 usable in M4, rename the muscles using `-' to `_'.
3249 Define `defines_flag', `output_parser_name' and `output_header_name'.
3250 * src/output.h (actions_output, guards_output)
3251 (token_definitions_output): Adjust prototypes.
3252 * src/scan-skel.l: Instead of scanning the skeletons, it now
3253 processes the output of m4: `__oline__' and `#output'.
3254 * data/bison.simple: Adjust to be used by M4(sugar).
3255 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
3256 to date.
3257 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
3258 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
3259 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
3260 shamelessly stolen from CVS Autoconf.
3261
32622002-02-05 Akim Demaille <akim@epita.fr>
3263
3264 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
3265 * configure.in: Check for the declarations of free and malloc.
3266 * src/muscle_tab.c: Adjust.
3267
32682002-02-05 Akim Demaille <akim@epita.fr>
3269
3270 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
3271 which have no values.
3272
32732002-02-05 Akim Demaille <akim@epita.fr>
3274
3275 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
3276 * data/: here.
3277
32782002-01-29 Paul Eggert <eggert@twinsun.com>
3279
3280 * src/bison.simple (YYSIZE_T): Do not define merely because
3281 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
3282 On some platforms, <alloca.h> does not declare YYSTD (size_t).
3283
32842002-01-27 Akim Demaille <akim@epita.fr>
3285
3286 Fix `%nonassoc and eof'.
3287
3288 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
3289 which were not properly copied! Replace
3290 memcpy (res->errs, src->errs, src->nerrs);
3291 with
3292 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
3293 !!!
3294 * tests/regression.at (%nonassoc and eof): Adjust to newest
3295 Autotest: `.' is not in the PATH.
3296
32972002-01-27 Akim Demaille <akim@epita.fr>
3298
3299 * tests/sets.at (AT_EXTRACT_SETS): New.
3300 (Nullable): Use it.
3301 (Firsts): New.
3302
33032002-01-26 Akim Demaille <akim@epita.fr>
3304
3305 * tests/actions.at, tests/calc.at, tests/headers.at,
3306 * tests/torture.at: Adjust to the newest Autotest which no longer
3307 forces `.' in the PATH.
3308
33092002-01-25 Akim Demaille <akim@epita.fr>
3310
3311 * tests/regression.at (%nonassoc and eof): New.
3312 Suggested by Robert Anisko.
3313
33142002-01-24 Akim Demaille <akim@epita.fr>
3315
3316 Bison dumps core when trying to complain about broken input files.
3317 Reported by Cris van Pelt.
3318
3319 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
3320 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
3321 into...
3322 (Invalid inputs): Strengthen: exercise parse_percent_token.
3323
33242002-01-24 Robert Anisko <robert.anisko@epita.fr>
3325
3326 * src/Makefile.am: Add bison.c++.
3327 * src/bison.c++: New skeleton.
3328
33292002-01-21 Paolo Bonzini <bonzini@gnu.org>
3330
3331 * po/it.po: New.
3332
33332002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
3334
3335 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
3336
33372002-01-20 Marc Autret <marc@gnu.org>
3338
3339 * src/files.c (compute_output_file_names): Fix
3340
33412002-01-20 Marc Autret <marc@gnu.org>
3342
3343 * tests/output.at: New test.
3344 * src/files.c (compute_base_names): Don't map extensions when
3345 the YACC flag is set, use defaults.
3346 Reported by Evgeny Stambulchik.
3347
33482002-01-20 Marc Autret <marc@gnu.org>
3349
3350 * src/system.h: Need to define __attribute__ away for non-GCC
3351 compilers as well (i.e. the vendor C compiler).
3352 Suggested by Albert Chin-A-Young.
3353
33542002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
3355
3356 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
3357 canonical definition.
3358 * src/system.h: Use the canonical definition for PARAMS (avoids
3359 a conflict with the macro from lib/hash.h).
3360
33612002-01-11 Akim Demaille <akim@epita.fr>
3362
3363 * configure.in: Use AC_FUNC_STRNLEN.
3364 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
3365
33662002-01-09 Akim Demaille <akim@epita.fr>
3367
3368 * src/files.c, src/files.h (output_infix): New.
3369 (tab_extension): Remove.
3370 (compute_base_names): Compute the former, drop the latter.
3371 * src/output.c (prepare): Insert the muscles `output-infix', and
3372 `output-suffix'.
3373 * src/parse-skel.y (string, string.1): New.
3374 (section.header): Use it.
3375 (section.yacc): Remove.
3376 (prefix): Remove too.
3377 * src/scan-skel.l: Adjust.
3378 * src/bison.simple, src/bison.hairy: Adjust.
3379
33802002-01-09 Akim Demaille <akim@epita.fr>
3381
3382 * configure.in (WERROR_CFLAGS): Compute it.
3383 * src/Makefile.am (CFLAGS): Pass it.
3384 * tests/atlocal.in (CFLAGS): Idem.
3385 * src/files.c: Fix a few warnings.
3386 (get_extension_index): Remove, unused.
3387
33882002-01-08 Akim Demaille <akim@epita.fr>
3389
3390 * src/getargs.c (AS_FILE_NAME): New.
3391 (getargs): Use it to convert DOSish file names.
3392 * src/files.c (base_name): Rename as full_base_name to avoid
3393 clashes with `base_name ()'.
3394 (filename_split): New.
3395 (compute_base_names): N-th rewrite, using filename_split.
3396
33972002-01-08 Akim Demaille <akim@epita.fr>
3398
3399 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
3400 New, stolen from the Fileutils 4.1.
3401 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
3402 * configure.in: Check for the presence of memrchr, and of its
3403 prototype.
3404
34052002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
3406
3407 * lib/hash.h (__P): Added definition for this macro.
3408 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
3409 BUILT_SOURCES, to ensure they are generated first.
3410 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
3411 %error-verbose to allow bootstrapping with bison 1.30x.
3412
34132002-01-06 Akim Demaille <akim@epita.fr>
3414
3415 * src/reader.c (parse_braces): Don't fetch the next char, the
3416 convention is to fetch on entry.
3417 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
3418 'switch' without a following semicolon.
3419 * tests/regression.at (braces parsing): New.
3420
34212002-01-06 Akim Demaille <akim@epita.fr>
3422
3423 Bison is dead wrong in its RR conflict reports.
3424
3425 * tests/torture.at (GNU Cim Grammar): New.
3426 * src/conflicts.c (count_rr_conflicts): Fix.
3427
34282002-01-06 Akim Demaille <akim@epita.fr>
3429
3430 Creating package.m4 from configure.ac causes too many problems.
3431
3432 * tests/Makefile.am (package.m4): Create it by hand,
3433 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
3434
34352002-01-06 Akim Demaille <akim@epita.fr>
3436
3437 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
3438 skeleton.h.
3439
34402002-01-04 Paul Eggert <eggert@twinsun.com>
3441
3442 * doc/bison.texinfo (Debugging):
3443 Remove YYSTDERR; it's no longer defined or used.
3444 Also, s/cstdio.h/cstdio/.
3445
34462002-01-03 Akim Demaille <akim@epita.fr>
3447
3448 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
3449
34502002-01-03 Akim Demaille <akim@epita.fr>
3451
3452 * src/parse-skel.y (process_skeleton): Don't bind the parser's
3453 tracing code to --trace, wait for a better --trace option, with
3454 args.
3455
34562002-01-03 Akim Demaille <akim@epita.fr>
3457
3458 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
3459 The ISO C++ standard is extremely clear about it: stderr is
3460 considered a macro, not a regular symbol (see table 94 `Header
3461 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
3462 Therefore std:: does not apply to it. It still does with fprintf.
3463 Also, s/cstdio.h/cstdio/.
3464
34652002-01-03 Akim Demaille <akim@epita.fr>
3466
3467 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
3468 for non system headers.
3469
34702002-01-02 Akim Demaille <akim@epita.fr>
3471
3472 Equip the skeleton chain with location tracking, runtime trace,
3473 pure parser and scanner.
3474
3475 * src/parse-skel.y: Request a pure parser, locations, and prefix
3476 renaming.
3477 (%union): Having several members with the same type does not help
3478 type mismatches, simplify.
3479 (YYPRINT, yyprint): New.
3480 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
3481 (skel_error): this.
3482 Handle locations.
3483 * src/scan-skel.l: Adjust to these changes.
3484 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
3485 (LOCATION_PRINT, skel_control_t): New.
3486
34872001-12-30 Akim Demaille <akim@epita.fr>
3488
3489 * src/parse-skel.y: Get rid of the shift/reduce conflict:
3490 replace `gb' with BLANKS.
3491 * src/scan-skel.l: Adjust.
3492
34932001-12-30 Akim Demaille <akim@epita.fr>
3494
3495 * src/system.h: We don't need nor want bcopy.
3496 Throw away MS-DOS crap: we don't need getpid.
3497 * configure.in: We don't need strndup. It was even causing
3498 problems: because Flex includes the headers *before* us,
3499 _GNU_SOURCE is not defined by config.h, and therefore strndup was
3500 not visible.
3501 * lib/xstrndup.c: New.
3502 * src/scan-skel.l: Use it.
3503 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
3504 * src/parse-skel.y: Use %directives instead of #defines.
3505
35062001-12-30 Akim Demaille <akim@epita.fr>
3507
3508 * src/skeleton.h: New.
3509 * src/output.c (output_parser, output_master_parser): Remove, dead
3510 code.
3511 * src/output.h (get_lines_number, actions_output, guards_output)
3512 (token_definitions_output): Prototype them.
3513 * src/parse-skel.y: Add the license notice.
3514 Include output.h and skeleton.h.
3515 (process_skeleton): Returns void, and takes a single parameter.
3516 * src/scan-skel.l: Add the license notice.
3517 Include skeleton.h.
3518 Don't use %option yylineno: it seems that then Flex imagines
3519 REJECT has been used, and therefore it won't reallocate its
3520 buffers (which makes no other sense to me than a bug). It results
3521 in warnings for `unused: yy_flex_realloc'.
3522
35232001-12-30 Robert Anisko <robert.anisko@epita.fr>
3524
3525 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
3526 (MUSCLE_INSERT_PREFIX): ...to there.
3527 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
3528 (MUSCLE_INSERT_PREFIX): Move from here...
3529
3530 * src/bison.hairy: Add a section directive. Put braces around muscle
3531 names. This parser skeleton is still broken, but Bison should not
3532 choke on a bad muscle 'syntax'.
3533 * src/bison.simple: Add a section directive. Put braces around muscle
3534 names.
3535
3536 * src/files.h (strsuffix, stringappend): Add declarations.
3537 (tab_extension): Add declaration.
3538 (short_base_name): Add declaration.
3539
3540 * src/files.c (strsuffix, stringappend): No longer static. These
3541 functions are used in the skeleton parser.
3542 (tab_extension): New.
3543 (compute_base_names): Use the computations done in this function
3544 to guess if the generated parsers should have '.tab' in their
3545 names.
3546 (short_base_name): No longer static.
3547
3548 * src/output.c (output_skeleton): New.
3549 (output): Disable call to output_master_parser, and give a try to
3550 a new skeleton handling system.
3551 (guards_output, actions_output): No longer static.
3552 (token_definitions_output, get_lines_number): No longer static.
3553
3554 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
3555
3556 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
3557 parse-skel.y.
3558
3559 * src/parse-skel.y: New file.
3560 * src/scan-skel.l: New file.
3561
35622001-12-29 Akim Demaille <akim@epita.fr>
3563
3564 %name-prefix is broken.
3565
3566 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
3567 Adjust all dependencies.
3568 * tests/headers.at (export YYLTYPE): Strengthen this test: use
3569 %name-prefix.
3570
3571 Renaming yylval but not yylloc is not consistent. Now we do.
3572
3573 * src/bison.simple: Prefix yylloc if used.
3574 * doc/bison.texinfo (Decl Summary): Document that.
3575
35762001-12-29 Akim Demaille <akim@epita.fr>
3577
3578 * doc/bison.texinfo: Promote `%long-directive' over
3579 `%long_directive'.
3580 Remove all references to fixed-output-files, yacc is enough.
3581
35822001-12-29 Akim Demaille <akim@epita.fr>
3583
3584 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
3585 user prologue. These are defaults.
3586 * tests/actions.at (Mid-rule actions): Make sure the user can
3587 define YYDEBUG and YYERROR_VERBOSE.
3588
35892001-12-29 Akim Demaille <akim@epita.fr>
3590
3591 * src/output.c (header_output): Don't forget to export YYLTYPE and
3592 yylloc.
3593 * tests/headers.at (export YYLTYPE): New, make sure it does.
3594 * tests/regression.at (%union and --defines, Invalid CPP headers):
3595 Move to...
3596 * tests/headers.at: here.
3597
35982001-12-29 Akim Demaille <akim@epita.fr>
3599
3600 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
3601
36022001-12-29 Akim Demaille <akim@epita.fr>
3603
3604 * tests/actions.at (Mid-rule actions): Output on a single line
3605 instead of several.
3606
36072001-12-29 Akim Demaille <akim@epita.fr>
3608
3609 * doc/bison.texinfo: Formatting changes.
3610
36112001-12-29 Akim Demaille <akim@epita.fr>
3612
3613 Don't store the token defs in a muscle, just be ready to output it
3614 on command. Now possible via `symbols'. Fixes a memory leak.
3615
3616 * src/output.c (token_definitions_output): New.
3617 (output_parser, header_output): Use it.
3618 * src/reader.c (symbols_save): Remove.
3619
36202001-12-29 Akim Demaille <akim@epita.fr>
3621
3622 * src/bison.simple: Do not provide a default for YYSTYPE and
3623 YYLTYPE before the user's prologue. Otherwise it's hardly... a
3624 default.
3625
36262001-12-29 Akim Demaille <akim@epita.fr>
3627
3628 Mid-rule actions are simply... ignored!
3629
3630 * src/reader.c (readgram): Be sure to attach mid-rule actions to
3631 the empty-rule associated to the dummy symbol, not to the host
3632 rule.
3633 * tests/actions.at (Mid-rule actions): New.
3634
36352001-12-29 Akim Demaille <akim@epita.fr>
3636
3637 Memory leak.
3638
3639 * src/reader.c (reader): Free grammar.
3640
36412001-12-29 Akim Demaille <akim@epita.fr>
3642
3643 Memory leak.
3644
3645 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
3646 since it allocates it for each state, although only one is needed.
3647 (allocate_storage): Do it here.
3648
36492001-12-29 Akim Demaille <akim@epita.fr>
3650
3651 * src/options.h, src/options.c (create_long_option_table): Rename
3652 as...
3653 (long_option_table_new): this, with a clearer prototype.
3654 (percent_table): Remove, unused,
3655 * src/getargs.c (getargs): Adjust.
3656
36572001-12-29 Akim Demaille <akim@epita.fr>
3658
3659 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
3660 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
3661 as states.
3662
36632001-12-29 Akim Demaille <akim@epita.fr>
3664
3665 * src/lalr.c (build_relations): Rename `states' as `states1'.
3666 Sorry, I don't understand exactly what it is, no better name...
3667
36682001-12-29 Akim Demaille <akim@epita.fr>
3669
3670 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
3671 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
3672 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
3673 as rules.
3674
36752001-12-29 Akim Demaille <akim@epita.fr>
3676
3677 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
3678 ago.
3679
36802001-12-29 Akim Demaille <akim@epita.fr>
3681
3682 * src/reader.c, src/reader.h (user_toknums): Remove.
3683 Adjust all users to use symbols[i]->user_token_number.
3684
36852001-12-29 Akim Demaille <akim@epita.fr>
3686
3687 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
3688 Adjust all users to use symbols[i]->prec or ->assoc.
3689
36902001-12-29 Akim Demaille <akim@epita.fr>
3691
3692 * src/reader.c, src/reader.h (tags): Remove.
3693 Adjust all users to use symbols[i]->tag.
3694
36952001-12-29 Akim Demaille <akim@epita.fr>
3696
3697 * src/gram.h, src/gram.c (symbols): New, similar to state_table
3698 and rule_table.
3699 * src/reader.c (packsymbols): Fill this table.
3700 Drop sprec.
3701 * src/conflicts.c (resolve_sr_conflict): Adjust.
3702 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
3703 single table.
3704 Use symbols[i]->tag instead of tags[i].
3705
37062001-12-29 Akim Demaille <akim@epita.fr>
3707
3708 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
3709 In addition, put a comment in there, to replace...
3710 * tests/regression.at (%union and C comments): Remove.
3711
37122001-12-29 Akim Demaille <akim@epita.fr>
3713
3714 * tests/regression.at (Web2c Actions): Blindly move the actual
3715 output as expected output. The contents *seem* right to me, but I
3716 can't pretend reading perfectly parser tables... Nonetheless, all
3717 the other tests pass correctly, the table look OK, even though the
3718 presence of `$axiom' is to be noted: AFAICS it is useless (but
3719 harmless).
3720
37212001-12-29 Akim Demaille <akim@epita.fr>
3722
3723 * src/reader.c (readgram): Don't add the rule 0 if there were no
3724 rules read. In other words, add it _after_ having performed
3725 grammar sanity checks.
3726 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
3727
37282001-12-29 Akim Demaille <akim@epita.fr>
3729
3730 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
3731 visible, and some states have now a different number.
3732
37332001-12-29 Akim Demaille <akim@epita.fr>
3734
3735 * src/reader.c (readgram): Bind the initial rule's lineno to that
3736 of the first rule.
3737 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
3738 (Solved SR Conflicts): Adjust rule 0's line number.
3739
37402001-12-29 Akim Demaille <akim@epita.fr>
3741
3742 Fix the `GAWK Grammar' failure.
3743
3744 * src/LR0.c (final_state): Initialize to -1 so that we do compute
3745 the reductions of the first state which was mistakenly confused
3746 with the final state because precisely final_state was initialized
3747 to 0.
3748 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
3749 now noticed by Bison.
3750 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
3751 have a reduction on $default.
3752
37532001-12-29 Akim Demaille <akim@epita.fr>
3754
3755 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
3756 rule line numbers.
3757 * src/closure.c (print_closure): Likewise.
3758 * src/derives.c (print_derives): Likewise.
3759 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
3760 now.
3761
37622001-12-29 Akim Demaille <akim@epita.fr>
3763
3764 * src/lalr.c (lookaheads_print): New.
3765 (lalr): Call it when --trace-flag.
3766 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
3767 are dumped.
3768
37692001-12-29 Akim Demaille <akim@epita.fr>
3770
3771 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
3772 when walking through ritem, even via rule->rhs.
3773 * src/reduce.c (dump_grammar, useful_production, reduce_output)
3774 (useful_production, useless_nonterminals): Likewise.
3775 (reduce_grammar_tables): Likewise, plus update nritems.
3776 * src/nullable.c (set_nullable): Likewise.
3777 * src/lalr.c (build_relations): Likewise.
3778 * tests/sets.at (Nullable): Adjust.
3779 Fortunately, now, the $axiom is no longer nullable.
3780
37812001-12-29 Akim Demaille <akim@epita.fr>
3782
3783 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
3784 the 0-sentinel.
3785 * src/gram.c (ritem_longest_rhs): Likewise.
3786 * src/reduce.c (nonterminals_reduce): Likewise.
3787 * src/print_graph.c (print_graph): Likewise.
3788 * src/output.c (output_rule_data): Likewise.
3789 * src/nullable.c (set_nullable): Likewise.
3790
37912001-12-29 Akim Demaille <akim@epita.fr>
3792
3793 * src/output.c: Comment changes.
3794
37952001-12-27 Paul Eggert <eggert@twinsun.com>
3796
3797 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
3798 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
3799 Sparc, as they were causing more porting problems than the
3800 (minor) performance improvement was worth.
3801
3802 Also, catch up with 1.31's YYSTD.
3803
38042001-12-27 Akim Demaille <akim@epita.fr>
3805
3806 * src/output.c (output_gram): Rely on nritems, not the
3807 0-sentinel. See below.
3808 Use -1 as separator, not 0.
3809 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
3810 Rely on -1 as separator in yyrhs, instead of 0.
3811 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
3812 twice `Now at end of input', therefore there are two lines less to
3813 expect.
3814
38152001-12-27 Akim Demaille <akim@epita.fr>
3816
3817 * tests/regression.at (Unresolved SR Conflicts):
3818 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
3819 below.
3820
38212001-12-27 Akim Demaille <akim@epita.fr>
3822
3823 * src/LR0.c (new_state): Recognize the final state by the fact it
3824 is reached by eoftoken.
3825 (insert_start_shifting_state, insert_eof_shifting_state)
3826 (insert_accepting_state, augment_automaton): Remove, since now
3827 these states are automatically computed from the initial state.
3828 (generate_states): Adjust.
3829 * src/print.c: When reporting a rule number to the user, substract
3830 1, so that the axiom rule is rule 0, and the first user rule is 1.
3831 * src/reduce.c: Likewise.
3832 * src/print_graph.c (print_core): For the time being, just as for
3833 the report, depend upon --trace-flags to dump the full set of
3834 items.
3835 * src/reader.c (readgram): Once the grammar read, insert the rule
3836 0: `$axiom: START-SYMBOL $'.
3837 * tests/set.at: Adjust: rule 0 is now displayed, and since the
3838 number of the states has changed (the final state is no longer
3839 necessarily the last), catch up.
3840
38412001-12-27 Akim Demaille <akim@epita.fr>
3842
3843 Try to make the use of the eoftoken valid. Given that its value
3844 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
3845 is used instead of > 0 where appropriate, (ii), depend upon nritems
3846 instead of the 0-sentinel.
3847
3848 * src/gram.h, src/gram.c (nritems): New.
3849 Expected to be duplication of nitems, but for the time being...
3850 * src/reader.c (packgram): Assert nritems and nitems are equal.
3851 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
3852 * src/closure.c (print_closure, print_fderives): Likewise.
3853 * src/gram.c (ritem_print): Likewise.
3854 * src/print.c (print_core, print_grammar): Likewise.
3855 * src/print_graph.c: Likewise.
3856
38572001-12-27 Akim Demaille <akim@epita.fr>
3858
3859 * src/main.c (main): If there are complains after grammar
3860 reductions, then output the report anyway if requested, then die.
3861 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
3862 * src/reader.c (eoftoken): New.
3863 (parse_token_decl): If the token being defined has value `0', it
3864 is the eoftoken.
3865 (packsymbols): No longer hack `tags' to insert `$' by hand.
3866 Be sure to preserve the value of the eoftoken.
3867 (reader): Make sure eoftoken is defined.
3868 Initialize nsyms to 0: now eoftoken is created just like the others.
3869 * src/print.c (print_grammar): Don't special case the eof token.
3870 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
3871 lie anyway, albeit pleasant.
3872 * tests/calc.at: Exercise error messages with eoftoken.
3873 Change the grammar so that empty input is invalid.
3874 Adjust expectations.
3875 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
3876
38772001-12-27 Akim Demaille <akim@epita.fr>
3878
3879 * configure.in: Check the protos of strchr ans strspn.
3880 Replace strchr if needed.
3881 * src/system.h: Provide the protos of strchr, strspn and memchr if
3882 missing.
3883 * lib/strchr.c: New.
3884 * src/reader.c (symbols_save): Use strchr.
3885
38862001-12-27 Akim Demaille <akim@epita.fr>
3887
3888 * src/print.c, src/print_graph.c (escape): New.
3889 Use it to quote the TAGS outputs.
3890 * src/print_graph.c (print_state): Now errors are in red, and
3891 reductions in green.
3892 Prefer high to wide: output the state number on a line of its own.
3893
38942001-12-27 Akim Demaille <akim@epita.fr>
3895
3896 * src/state.h, src/state.c (reductions_new): New.
3897 * src/LR0.c (set_state_table): Let all the states have a
3898 `reductions', even if reduced to 0.
3899 (save_reductions): Adjust.
3900 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
3901 * src/print.c (print_reductions, print_actions): Adjust.
3902 * src/output.c (action_row): Adjust.
3903
39042001-12-27 Akim Demaille <akim@epita.fr>
3905
3906 * src/state.h, src/state.c (errs_new, errs_dup): New.
3907 * src/LR0.c (set_state_table): Let all the states have an errs,
3908 even if reduced to 0.
3909 * src/print.c (print_errs, print_reductions): Adjust.
3910 * src/output.c (output_actions, action_row): Adjust.
3911 * src/conflicts.c (resolve_sr_conflict): Adjust.
3912
39132001-12-27 Akim Demaille <akim@epita.fr>
3914
3915 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
3916
39172001-12-27 Akim Demaille <akim@epita.fr>
3918
3919 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
3920 * src/print.c: here.
3921 (lookaheadset, shiftset): New, used as additional storage by
3922 print_reductions.
3923 (print_results): Adjust.
3924 (print_shifts, print_gotos, print_errs): New, extracted from...
3925 (print_actions): here.
3926 * src/print_graph.c (print_actions): Remove dead code.
3927
39282001-12-27 Akim Demaille <akim@epita.fr>
3929
3930 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
3931 `$n' and `@n'.
3932
39332001-12-27 Akim Demaille <akim@epita.fr>
3934
3935 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
3936 (build_relations): Adjust.
3937
39382001-12-27 Akim Demaille <akim@epita.fr>
3939
3940 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
3941 duplication.
3942
39432001-12-27 Akim Demaille <akim@epita.fr>
3944
3945 * src/reader.c (packgram): Catch nitems overflows.
3946
39472001-12-27 Akim Demaille <akim@epita.fr>
3948
3949 * src/files.c, src/files.h (guard_obstack): Remove.
3950 * src/output.c (output): Adjust.
3951 * src/reader.c (parse_braces): New, factoring...
3952 (copy_action, copy_guard): these two which are renamed as...
3953 (parse_action, parse_guard): these.
3954 As a voluntary consequence, using braces around guards is now
3955 mandatory.
3956
39572001-12-27 Akim Demaille <akim@epita.fr>
3958
3959 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
3960 * src/reader.c (symbol_list): `guard' and `guard_line' are new
3961 members.
3962 (symbol_list_new): Adjust.
3963 (copy_action): action_line is the first line, not the last.
3964 (copy_guard): Just as for actions, store the `action' only, not
3965 the switch/case/break flesh.
3966 Don't parse the user action that might follow the guard, let...
3967 (readgram): do it, i.e., now, there can be an action after a
3968 guard.
3969 In other words the guard is just explicitly optional.
3970 (packgram): Adjust.
3971 * src/output.c (guards_output): New.
3972 (output_parser): Call it when needed.
3973 (output): Also free the guard and attrs obstacks.
3974 * src/files.c, src/files.h (obstack_save): Remove.
3975 (output_files): Remove.
3976 As a result, if one needs the former `.act' file, using an
3977 appropriate skeleton which requires actions and guards is now
3978 required.
3979 * src/main.c (main): Adjust.
3980 * tests/semantic.at: New.
3981 * tests/regression.at: Use `input.y' as input file name.
3982 Avoid 8+3 problems by requiring input.c when the test needs the
3983 parser.
3984
39852001-12-27 Akim Demaille <akim@epita.fr>
3986
3987 * src/reader.c (symbol_list_new): Be sure to initialize all the
3988 fields.
3989
39902001-12-27 Akim Demaille <akim@epita.fr>
3991
3992 All the hacks using a final pseudo state are now useless.
3993
3994 * src/LR0.c (set_state_table): state_table holds exactly nstates.
3995 * src/lalr.c (nLA): New.
3996 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
3997 instead of lookaheadsp from the pseudo state (nstate + 1).
3998
39992001-12-27 Akim Demaille <akim@epita.fr>
4000
4001 * src/output.c (action_row, token_actions): Use a state_t instead
4002 of a integer, and nlookaheads instead of the following state's
4003 lookaheadsp.
4004
40052001-12-27 Akim Demaille <akim@epita.fr>
4006
4007 * src/conflicts.c (log_resolution, flush_shift)
4008 (resolve_sr_conflict, set_conflicts, solve_conflicts)
4009 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
4010 (conflicts_print, print_reductions): Use a state_t instead of an
4011 integer when referring to a state.
4012 As much as possible, depend upon nlookaheads, instead of the
4013 `lookaheadsp' member of the following state (since lookaheads of
4014 successive states are successive, the difference between state n + 1
4015 and n served as the number of lookaheads for state n).
4016 * src/lalr.c (add_lookback_edge): Likewise.
4017 * src/print.c (print_core, print_actions, print_state)
4018 (print_results): Likewise.
4019 * src/print_graph.c (print_core, print_actions, print_state)
4020 (print_graph): Likewise.
4021 * src/conflicts.h: Adjust.
4022
40232001-12-27 Akim Demaille <akim@epita.fr>
4024
4025 * src/bison.hairy: Formatting/comment changes.
4026 ANSIfy.
4027 Remove `register' indications.
4028 Add plenty of `static'.
4029
40302001-12-27 Akim Demaille <akim@epita.fr>
4031
4032 * src/output.c (prepare): Drop the muscle `ntbase' which
4033 duplicates ntokens.
4034 * src/bison.simple: Formatting/comment changes.
4035 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
4036 is an undocumented synonym.
4037
40382001-12-22 Akim Demaille <akim@epita.fr>
4039
4040 * src/output.c (output_table_data): Change the prototype to use
4041 `int' for array ranges: some invocations do pass an int, not a
4042 short.
4043 Reported by Wayne Green.
4044
40452001-12-22 Akim Demaille <akim@epita.fr>
4046
4047 Some actions of web2c.y are improperly triggered.
4048 Reported by Mike Castle.
4049
4050 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
4051 * tests/regression.at (Web2c): Rename as...
4052 (Web2c Report): this.
4053 (Web2c Actions): New.
4054
40552001-12-22 Akim Demaille <akim@epita.fr>
4056
4057 Reductions in web2c.y are improperly reported.
4058 Reported by Mike Castle.
4059
4060 * src/conflicts.c (print_reductions): Fix.
4061 * tests/regression.at (Web2c): New.
4062
40632001-12-18 Akim Demaille <akim@epita.fr>
4064
4065 Some host fail on `assert (!"foo")', which expands to
4066 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
4067 Reported by Nelson Beebee.
4068
4069 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
4070 `#define it_succeeded 0' and `assert (it_succeeded)'.
4071
40722001-12-17 Marc Autret <autret_m@epita.fr>
4073
4074 * src/bison.simple: Don't hard code the skeleton line and filename.
4075 * src/output.c (output_parser): Rename 'line' as 'output_line'.
4076 New line counter 'skeleton_line' (skeleton-line muscle).
4077
40782001-12-17 Paul Eggert <eggert@twinsun.com>
4079
4080 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
4081 YYDEBUG must be defined to a nonzero value.
4082
4083 * src/bison.simple (yytname): Do not assume that the user defines
4084 YYDEBUG to a properly parenthesized expression.
4085
40862001-12-17 Akim Demaille <akim@epita.fr>
4087
4088 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
4089 nlookaheads is a new member.
4090 Adjust all users.
4091 * src/lalr.h (nlookaheads): Remove this orphan declaration.
4092 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
4093 state.
4094
40952001-12-17 Akim Demaille <akim@epita.fr>
4096
4097 * src/files.h, src/files.c (open_files, close_files): Remove.
4098 * src/main.c (main): Don't open/close files, nor invoke lex_free,
4099 let...
4100 * src/reader.c (reader): Do it.
4101
41022001-12-17 Akim Demaille <akim@epita.fr>
4103
4104 * src/conflicts.c (print_reductions): Formatting changes.
4105
41062001-12-17 Akim Demaille <akim@epita.fr>
4107
4108 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
4109 (flush_reduce): New.
4110 (resolve_sr_conflict): Adjust.
4111
41122001-12-17 Akim Demaille <akim@epita.fr>
4113
4114 * src/output.c (output_obstack): Be static and rename as...
4115 (format_obstack): this, to avoid any confusion with files.c's
4116 output_obstack.
4117 * src/reader.h (muscle_obstack): Move to...
4118 * src/output.h: here, since it's defined in output.c.
4119
41202001-12-17 Akim Demaille <akim@epita.fr>
4121
4122 * src/output.c (action_row, save_column, default_goto)
4123 (sort_actions, matching_state, pack_vector): Better variable
4124 locality.
4125
41262001-12-17 Akim Demaille <akim@epita.fr>
4127
4128 * src/output.c: Various formatting changes.
4129
41302001-12-17 Akim Demaille <akim@epita.fr>
4131
4132 * src/files.c (output_files): Free the output_obstack.
4133 * src/main.c (main): Call print and print_graph conditionally.
4134 * src/print.c (print): Work unconditionally.
4135 * src/print_graph.c (print_graph): Work unconditionally.
4136 * src/conflicts.c (log_resolution): Output only if verbose_flag.
4137
41382001-12-16 Marc Autret <autret_m@epita.fr>
4139
4140 * src/output.c (actions_output): Fix. When we use %no-lines,
4141 there is one less line per action.
4142
41432001-12-16 Marc Autret <autret_m@epita.fr>
4144
4145 * src/bison.simple: Remove a useless #line directive.
4146 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
4147 * src/output.c (get_lines_number): New.
4148 (output_parser): Adjust, now takes care about the lines of a
4149 output muscles.
4150 Fix line numbering.
4151 (actions_output): Computes the number of lines taken by actions.
4152 (output_master_parser): Insert new skeleton which is the name of
4153 the output parser file name.
4154
41552001-12-15 Marc Autret <autret_m@epita.fr>
4156
4157 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
4158
41592001-12-15 Marc Autret <autret_m@epita.fr>
4160
4161 * src/output.c (output_gram): Keep track of the hairy one.
4162
41632001-12-15 Akim Demaille <akim@epita.fr>
4164
4165 Make `make distcheck' work.
4166
4167 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
4168 system.h which uses libgettext.h.
4169
41702001-12-15 Akim Demaille <akim@epita.fr>
4171
4172 * src/nullable.c (set_nullable): Useless rules must be skipped,
4173 otherwise, since we range over their symbols, we might look at a
4174 nonterminal which no longer ``exists'', i.e., it is not counted in
4175 `nvars', hence we overflow our arrays.
4176
41772001-12-15 Akim Demaille <akim@epita.fr>
4178
4179 The header can also be produced directly, without any obstack!
4180 Yahoo!
4181
4182 * src/files.c, src/files.h (defines_obstack): Remove.
4183 (compute_header_macro): Global.
4184 (defines_obstack_save): Remove.
4185 * src/reader.c (parse_union_decl): No longer output to
4186 defines_obstack: its content can be found in the `stype' muscle
4187 anyway.
4188 (output_token_translations): Merge into...
4189 (symbols_output): this.
4190 Rename as...
4191 (symbols_save): this.
4192 (reader): Adjust.
4193 * src/output.c (header_output): New.
4194 (output): Call it.
4195
41962001-12-15 Akim Demaille <akim@epita.fr>
4197
4198 * src/reader.c (parse_union_decl): Instead of handling two obstack
4199 simultaneously, use one to define the `stype' muscle, and use the
4200 value of the latter to fill defines_obstack.
4201 (copy_comment): Remove.
4202 (copy_comment2): Work for a single obstack.
4203 Rename as...
4204 (copy_comment): this.
4205
42062001-12-15 Akim Demaille <akim@epita.fr>
4207
4208 * src/lex.c, src/lex.h (xgetc): No longer static.
4209 * src/reader.c (parse_union_decl): Revamp.
4210
42112001-12-15 Akim Demaille <akim@epita.fr>
4212
4213 Still making progress in separating Bison into (i) input, (ii)
4214 process, (iii) output: now we can directly output the parser file
4215 without using table_obstack at all.
4216
4217 * src/files.c, src/files.h (table_obstack): Bye bye.
4218 (parser_file_name): New.
4219 * src/files.c (compute_output_file_names): Compute it.
4220 * src/output.c (actions_output, output_parser)
4221 (output_master_parser): To a file instead of an obstack.
4222
42232001-12-15 Akim Demaille <akim@epita.fr>
4224
4225 Attach actions to rules, instead of pre-outputting them to
4226 actions_obstack.
4227
4228 * src/gram.h (rule_t): action and action_line are new members.
4229 * src/reader.c (symbol_list): Likewise.
4230 (copy_action): Save the actions within the rule.
4231 (packgram): Save them in rule_table.
4232 * src/output.c (actions_output): New.
4233 (output_parser): Use it on `%%actions'.
4234 (output_rule_data): Don't free rule_table.
4235 (output): Do it.
4236 (prepare): Don't save the `action' muscle.
4237 * src/bison.simple: s/%%action/%%actions/.
4238
42392001-12-15 Akim Demaille <akim@epita.fr>
4240
4241 * src/reader.c (copy_action): When --yacc, don't append a `;'
4242 to the user action: let it fail if lacking.
4243 Suggested by Arnold Robbins and Tom Tromey.
4244
42452001-12-14 Akim Demaille <akim@epita.fr>
4246
4247 * src/lex.c (literalchar): Simply return the char you decoded, non
4248 longer mess around with obstacks and int pointers.
4249 Adjust all callers.
4250
42512001-12-14 Akim Demaille <akim@epita.fr>
4252
4253 * src/lex.c (literalchar): Don't escape the special characters,
4254 just decode them, and keep them as char (before, eol was output as
4255 the 2 char string `\n' etc.).
4256 * src/output.c (output_rule_data): Use quotearg to output the
4257 token strings.
4258
42592001-12-13 Paul Eggert <eggert@twinsun.com>
4260
4261 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
4262 Do not infringe on the global user namespace when using C++.
4263 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
4264 All uses of `fprintf' and `stderr' changed.
4265
4266 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
4267
42682001-12-13 Akim Demaille <akim@epita.fr>
4269
4270 The computation of nullable is broken: it doesn't handle empty
4271 RHS's properly.
4272
4273 * tests/torture.at (GNU AWK Grammar): New.
4274 * tests/sets.at (Nullable): New.
4275 * src/nullable.c (set_nullable): Instead of blindly looping over
4276 `ritems', loop over the rules, and then over their rhs's.
4277
4278 Work around Autotest bugs.
4279
4280 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
4281 frame, because Autotest understand lines starting with a `+' as
4282 traces from the shell. Then, they are not processed properly.
4283 Admittedly an Autotest bug, but we don't have time to wait for
4284 Autotest to catch up.
4285 * tests/regression.at (Broken Closure): Adjust to the new table
4286 frames.
4287 Move to...
4288 * tests/sets.at: here.
4289
42902001-12-13 Akim Demaille <akim@epita.fr>
4291
4292 * src/closure.c (closure): Use nrules instead of playing tricks
4293 with BITS_PER_WORD.
4294
42952001-12-13 Akim Demaille <akim@epita.fr>
4296
4297 * src/print.c (print_actions): Output the handling of `$' as the
4298 traces do: shifting the token EOF. Before EOF was treated as a
4299 nonterminal.
4300 * tests/regression.at: Adjust some tests.
4301 * src/print_graph.c (print_core): Complete the set of items via
4302 closure. The next-to-final and final states are still unsatisfying,
4303 but that's to be addressed elsewhere.
4304 No longer output the rule numbers, but do output the state number.
4305 A single loop for the shifts + gotos is enough, but picked a
4306 distinct color for each.
4307 (print_graph): Initialize and finalize closure.
4308
43092001-12-13 Akim Demaille <akim@epita.fr>
4310
4311 * src/reader.c (readgram): Remove dead code, an strip useless
4312 braces.
4313 (get_type): Remove, unused.
4314
43152001-12-12 Akim Demaille <akim@epita.fr>
4316
4317 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
4318 on that of lib/error.c.
4319
43202001-12-12 Akim Demaille <akim@epita.fr>
4321
4322 Some hosts don't like `/' in includes.
4323
4324 * src/system.h: Include libgettext.h without qualifying the path.
4325 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
4326 $(top_srcdir).
4327
43282001-12-11 Marc Autret <autret_m@epita.fr>
4329
4330 * src/output.c (output_parser): Remove useless muscle.
4331
43322001-12-11 Marc Autret <autret_m@epita.fr>
4333
4334 * src/bison.simple: Remove #line just before %%epilogue. It
4335 is now handled in ...
4336 * src/reader.c (read_additionnal_code): Add the output of a
4337 #line for the epilogue.
4338
43392001-12-10 Marc Autret <autret_m@epita.fr>
4340
4341 * src/reader.c (copy_definition): Re-use CPP-outed code which
4342 replace precedent remove.
4343 * src/bison.simple: Remove #line before %%prologue because
4344 %%input-line is wrong at this time.
4345
43462001-12-10 Marc Autret <autret_m@epita.fr>
4347
4348 * src/reader.c (symbols_output): Clean up.
4349 * src/output.c (output_gram, output): Clean up.
4350
43512001-12-10 Akim Demaille <akim@epita.fr>
4352
4353 * src/lalr.c (initialize_lookaheads): New. Extracted from...
4354 * src/LR0.c (set_state_table): here.
4355 * src/lalr.c (lalr): Call it.
4356
43572001-12-10 Akim Demaille <akim@epita.fr>
4358
4359 * src/state.h (shifts): Remove the `number' member: shifts are
4360 attached to state, hence no longer need to be labelled with a
4361 state number.
4362
43632001-12-10 Akim Demaille <akim@epita.fr>
4364
4365 Now that states have a complete set of members, the linked list of
4366 shifts is useless: just fill directly the state's shifts member.
4367
4368 * src/state.h (shifts): Remove the `next' member.
4369 * src/LR0.c (first_state, last_state): Remove.
4370 Adjust the callers.
4371 (augment_automaton): Don't look for the shifts that must be added
4372 a shift on EOF: it is those of the state we looked for! But now,
4373 since shifts are attached, it is no longer needed to looking
4374 merely by its id: its number.
4375
43762001-12-10 Akim Demaille <akim@epita.fr>
4377
4378 * src/LR0.c (augment_automaton): Better variable locality.
4379 Remove an impossible branch: if there is a state corresponding to
4380 the start symbol being shifted, then there is shift for the start
4381 symbol from the initial state.
4382
43832001-12-10 Akim Demaille <akim@epita.fr>
4384
4385 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
4386 only when appropriate: when insert_start_shifting_state' is not
4387 invoked.
4388 * tests/regression.at (Rule Line Numbers): Adjust.
4389
43902001-12-10 Akim Demaille <akim@epita.fr>
4391
4392 * src/LR0.c (augment_automaton): Now that all states have shifts,
4393 merge the two cases addition shifts to the initial state.
4394
43952001-12-10 Akim Demaille <akim@epita.fr>
4396
4397 * src/lalr.c (set_state_table): Move to...
4398 * src/LR0.c: here.
4399 * src/lalr.c (lalr): Don't call it...
4400 * src/LR0.c (generate_states): do it.
4401 * src/LR0.h (first_state): Remove, only the table is used.
4402
44032001-12-10 Akim Demaille <akim@epita.fr>
4404
4405 * src/LR0.h (first_shift, first_reduction): Remove.
4406 * src/lalr.c: Don't use first_shift: find shifts through the
4407 states.
4408
44092001-12-10 Akim Demaille <akim@epita.fr>
4410
4411 * src/LR0.c: Attach shifts to states as soon as they are
4412 computed.
4413 * src/lalr.c (set_state_table): Instead of assigning shifts to
4414 state, just assert that the mapping was properly done.
4415
44162001-12-10 Akim Demaille <akim@epita.fr>
4417
4418 * src/LR0.c (insert_start_shift): Rename as...
4419 (insert_start_shifting_state): this.
4420 (insert_eof_shifting_state, insert_accepting_state): New.
4421 (augment_automaton): Adjust.
4422 Better locality of the variables.
4423 When looking if the start_symbol is shifted from the initial
4424 state, using `while (... symbol != start_symbol ...)' sounds
4425 better than `while (... symbol < start_symbol ...)': If fail
4426 to see how the order between symbols could be relevant!
4427
44282001-12-10 Akim Demaille <akim@epita.fr>
4429
4430 * src/getargs.h: Don't declare `spec_name_prefix' and
4431 `spec_file_prefix', declared by src/files.h.
4432 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
4433 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
4434 * src/output.c (prepare): Adjust.
4435 * src/reader.c (symbols_output): Likewise.
4436 * src/vmsgetargs.c: Vaguely adjust, but who cares?
4437
44382001-12-10 Akim Demaille <akim@epita.fr>
4439
4440 * src/muscle_tab.c (muscle_init): NULL is a better default than
4441 `"0"'.
4442
44432001-12-10 Akim Demaille <akim@epita.fr>
4444
4445 * src/reader.c (reader): Calling symbols_output once is enough.
4446
44472001-12-10 Akim Demaille <akim@epita.fr>
4448
4449 Now that states have a complete set of members, the linked list of
4450 reductions is useless: just fill directly the state's reductions
4451 member.
4452
4453 * src/state.h (struct reductions): Remove member `number' and
4454 `next'.
4455 * src/LR0.c (first_reduction, last_reduction): Remove.
4456 (save_reductions): Don't link the new reductions, store them in
4457 this_state.
4458 * src/lalr.c (set_state_table): No need to attach reductions to
4459 states, it's already done.
4460 * src/output.c (output_actions): No longer free the shifts, then
4461 the reductions, then the states: free all the states and their
4462 members.
4463
44642001-12-10 Akim Demaille <akim@epita.fr>
4465
4466 * src/options.c (OPTN, DRTV, BOTH): New.
4467 (option_table): Use them.
4468
4469 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
4470 the job of system.h.
4471 * src/options.c: Don't include stdio.h and xalloc.h for the same
4472 reasons.
4473
44742001-12-10 Akim Demaille <akim@epita.fr>
4475
4476 * src/output.c (output, prepare): Make sure the values of the
4477 muscles `action' and `prologue' are 0-terminated.
4478
44792001-12-10 Akim Demaille <akim@epita.fr>
4480
4481 Clean up GCC warnings.
4482
4483 * src/reader.c (copy_action): `buf' is not used.
4484 (parse_skel_decl): Be static.
4485 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
4486 * src/options.h (create_long_option_table): Have a real prototype.
4487 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
4488 (hash_delete_at): Return const void *.
4489 Adjust casts to preserve the const.
4490
44912001-12-10 Akim Demaille <akim@epita.fr>
4492
4493 * configure.in: Require 2.52g.
4494 M4 is not needed, but AUTOM4TE is.
4495 * m4/m4.m4: Remove.
4496 * tests/Makefile.am: Adjust.
4497
44982001-12-10 Akim Demaille <akim@epita.fr>
4499
4500 One structure for states is enough, even though theoretically
4501 there are LR(0) states and LALR(1) states.
4502
4503 * src/lalr.h (state_t): Remove.
4504 (state_table): Be state_t **, not state_t *.
4505 * src/state.h (core, CORE_ALLOC): Rename as...
4506 (state_t, STATE_ALLOC): this.
4507 Add the LALR(1) members: shifts, reductions, errs.
4508 * src/LR0.c (state_table): Rename as...
4509 (state_hash): this, to avoid name clashes with the global
4510 `state_table'.
4511 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
4512 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
4513
45142001-12-10 Akim Demaille <akim@epita.fr>
4515
4516 Bison dumps core on bash.y.
4517 Reported by Pascal Bart.
4518
4519 * src/warshall.c (bitmatrix_print): New.
4520 (TC): Use it.
4521 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
4522 j must be the outer loop.
4523 * tests/regression.at (Broken Closure): New.
4524
45252001-12-05 Akim Demaille <akim@epita.fr>
4526
4527 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
4528 its argument.
4529