]> git.saurik.com Git - bison.git/blame_incremental - ChangeLog
(yyreportParseError): Don't assume that sprintf
[bison.git] / ChangeLog
... / ...
CommitLineData
12002-10-18 Paul Eggert <eggert@twinsun.com>
2
3 * tests/calc.at (_AT_DATA_CALC_Y): #undef memcmp and realloc.
4 * tests/conflicts.at (%nonassoc and eof): Likewise.
5 Fixes SunOS 4.1.4 test failure reported by Peter Klein.
6
72002-10-17 Akim Demaille <akim@epita.fr>
8
9 * src/getargs.h (trace_e): Add trace_scan, and trace_parse.
10 * src/getargs.c (trace_types, trace_args): Adjust.
11 * src/reader.c (grammar_current_rule_prec_set)
12 (grammar_current_rule_dprec_set, grammar_current_rule_merge_set):
13 Standardize error messages.
14 And s/@prec/%prec/!
15 (reader): Use trace_flag to enable scanner/parser debugging,
16 instead of an adhoc scheme.
17 * src/scan-gram.l: Remove trailing debugging code.
18
192002-10-16 Paul Eggert <eggert@twinsun.com>
20
21 * src/muscle_tab.h (MUSCLE_TAB_H_): Was misspelled as
22 MUSCLE_TAB_H.
23
24 * NEWS: Officially drop support for building Bison with K&R C,
25 since it didn't work anyway and it's not worth worrying about.
26 * Makefile.maint (wget_files): Remove ansi2knr.c.
27 (ansi2knr.c-url_prefix): Remove.
28 * lib/.cvsignore: Remove ansi2knr, ansi2knr.*.
29 * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove.
30 * src/Makefile.am (AUTOMAKE_OPTIONS): Remove.
31
322002-10-15 Paul Eggert <eggert@twinsun.com>
33
34 Stop using the "enum_" trick for K&R-style function definitions;
35 it confused me, and I was the author! Instead, assume that people
36 who want to use K&R C compilers (when using these modules in GCC,
37 perhaps?) will run ansi2knr.
38
39 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): Remove.
40 All uses of "enum_" changed to "enum ".
41 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
42 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
43
44 * lib/abitset.c (abitset_and, abitset_and_cmp, abitset_and_or,
45 abitset_and_or_cmp, abitset_andn, abitset_andn_cmp,
46 abitset_andn_or, abitset_andn_or_cmp, abitset_bytes, abitset_copy,
47 abitset_copy1, abitset_disjoint_p, abitset_empty_p,
48 abitset_equal_p, abitset_init, abitset_list, abitset_list_reverse,
49 abitset_not, abitset_ones, abitset_or, abitset_or_and,
50 abitset_or_and_cmp, abitset_or_cmp, abitset_reset, abitset_set,
51 abitset_size, abitset_small_list, abitset_subset_p, abitset_test,
52 abitset_unused_clear, abitset_xor, abitset_xor_cmp, abitset_zero):
53 Use function prototypes; this removes the need for declaring
54 static functions simply to provide their prototypes.
55 * lib/bitset.c (bitset_alloc, bitset_and_or_, bitset_and_or_cmp_,
56 bitset_andn_or_, bitset_andn_or_cmp_, bitset_bytes, bitset_copy_,
57 bitset_count_, bitset_create, bitset_dump, bitset_first,
58 bitset_free, bitset_init, bitset_last, bitset_next,
59 bitset_obstack_alloc, bitset_obstack_free, bitset_only_set_p,
60 bitset_op4_cmp, bitset_or_and_, bitset_or_and_cmp_, bitset_prev,
61 bitset_print, bitset_release_memory, bitset_toggle_,
62 bitset_type_choose, bitset_type_get, bitset_type_name_get,
63 debug_bitset): Likewise.
64 * lib/bitset.h (bitset_set, bitset_reset, bitset_test): Likewise.
65 * lib/bitset_stats.c (bitset_log_histogram_print,
66 bitset_percent_histogram_print, bitset_stats_and,
67 bitset_stats_and_cmp, bitset_stats_and_or,
68 bitset_stats_and_or_cmp, bitset_stats_andn, bitset_stats_andn_cmp,
69 bitset_stats_andn_or, bitset_stats_andn_or_cmp, bitset_stats_copy,
70 bitset_stats_count, bitset_stats_disable, bitset_stats_disjoint_p,
71 bitset_stats_dump, bitset_stats_empty_p, bitset_stats_enable,
72 bitset_stats_equal_p, bitset_stats_free, bitset_stats_init,
73 bitset_stats_list, bitset_stats_list_reverse, bitset_stats_not,
74 bitset_stats_ones, bitset_stats_or, bitset_stats_or_and,
75 bitset_stats_or_and_cmp, bitset_stats_or_cmp, bitset_stats_print,
76 bitset_stats_print_1, bitset_stats_read, bitset_stats_reset,
77 bitset_stats_set, bitset_stats_size, bitset_stats_subset_p,
78 bitset_stats_test, bitset_stats_toggle, bitset_stats_type_get,
79 bitset_stats_write, bitset_stats_xor, bitset_stats_xor_cmp,
80 bitset_stats_zero): Likewise.
81 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
82 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
83 bitsetv_dump, debug_bitsetv): Likewise.
84 * lib/ebitset.c (ebitset_and, ebitset_and_cmp, ebitset_andn,
85 ebitset_andn_cmp, ebitset_bytes, ebitset_copy, ebitset_copy_,
86 ebitset_copy_cmp, ebitset_disjoint_p, ebitset_elt_add,
87 ebitset_elt_alloc, ebitset_elt_calloc, ebitset_elt_find,
88 ebitset_elt_free, ebitset_elt_last, ebitset_elt_remove,
89 ebitset_elt_zero_p, ebitset_elts_grow, ebitset_empty_p,
90 ebitset_equal_p, ebitset_free, ebitset_init, ebitset_list,
91 ebitset_list_reverse, ebitset_not, ebitset_ones, ebitset_op3_cmp,
92 ebitset_or, ebitset_or_cmp, ebitset_release_memory, ebitset_reset,
93 ebitset_set, ebitset_size, ebitset_subset_p, ebitset_test,
94 ebitset_weed, ebitset_xor, ebitset_xor_cmp, ebitset_zero):
95 Likewise.
96 * lib/lbitset.c (debug_lbitset, lbitset_and, lbitset_and_cmp,
97 lbitset_andn, lbitset_andn_cmp, lbitset_bytes, lbitset_copy,
98 lbitset_copy_cmp, lbitset_disjoint_p, lbitset_elt_alloc,
99 lbitset_elt_calloc, lbitset_elt_find, lbitset_elt_free,
100 lbitset_elt_link, lbitset_elt_unlink, lbitset_elt_zero_p,
101 lbitset_empty_p, lbitset_equal_p, lbitset_free, lbitset_init,
102 lbitset_list, lbitset_list_reverse, lbitset_not, lbitset_ones,
103 lbitset_op3_cmp, lbitset_or, lbitset_or_cmp, lbitset_prune,
104 lbitset_release_memory, lbitset_reset, lbitset_set, lbitset_size,
105 lbitset_subset_p, lbitset_test, lbitset_weed, lbitset_xor,
106 lbitset_xor_cmp, lbitset_zero): Likewise.
107
1082002-10-14 Akim Demaille <akim@epita.fr>
109
110 Version 1.75.
111
1122002-10-14 Akim Demaille <akim@epita.fr>
113
114 * tests/Makefile.am (maintainer-check-posix): New.
115
1162002-10-14 Akim Demaille <akim@epita.fr>
117
118 * data/glr.c [YYDEBUG] (YYLEFTMOST_STATE): Initialize the yyloc
119 member.
120
1212002-10-14 Akim Demaille <akim@epita.fr>
122
123 * src/tables.c (table_ninf_remap): base -> tab.
124 Reported by Matt Rosing.
125
1262002-10-14 Paul Eggert <eggert@twinsun.com>
127
128 * tests/action.at, tests/calc.at, tests/conflicts.at,
129 tests/cxx-type.at, tests/headers.at, tests/input.at,
130 tests/regression.at, tests/synclines.at, tests/torture.at:
131 Say "bison -o foo.c foo.y", not "bison foo.y -o foo.c",
132 so that the tests still work even if POSIXLY_CORRECT is set.
133 * doc/bison.texinfo (Rpcalc Compile, Invocation): Likewise.
134
135 * data/c.m4 (b4_int_type): Use yysigned_char instead of signed char,
136 for portability to K&R hosts. Fix typo: signed char is guaranteed
137 only to 127, not to 128.
138 * data/glr.c (yysigned_char): New type.
139 * data/yacc.c (yysigned_char): Likewise.
140 * tests/regression.at (Web2c Actions): signed char -> yysigned_char.
141
1422002-10-13 Paul Eggert <eggert@twinsun.com>
143
144 * data/yacc.c (yyparse): Rewrite to avoid "comparison is always
145 true due to limited range of data type" warning from GCC.
146
147 * data/c.m4 (b4_token_defines): Protect against double-inclusion
148 by wrapping enum yytokentype's definition inside #ifndef
149 YYTOKENTYPE. This undoes a bug I introduced on 2002-10-12.
150
1512002-10-13 Akim Demaille <akim@epita.fr>
152
153 * data/glr.c (yyglrShiftDefer, yyaddDeferredAction, yydoAction):
154 Un yy- yyrhs to avoid the name clash with the global YYRHS.
155
1562002-10-13 Akim Demaille <akim@epita.fr>
157
158 * Makefile.maint: Update from Autoconf 2.54.
159 * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Remove, shipped with 2.54.
160
1612002-10-13 Akim Demaille <akim@epita.fr>
162
163 * src/print.c (print_state): Separate the list of solved conflicts
164 from the other items.
165 * tests/conflicts.at (Resolved SR Conflicts): Adjust.
166
1672002-10-13 Akim Demaille <akim@epita.fr>
168
169 Let nondeterministic skeletons be usable with deterministic
170 tables.
171
172 With the patch, GAWK compiled by GCC without -O2 passes its test
173 suite using a GLR parser driven by LALR tables. It fails with -O2
174 because `struct stat' gives two different answers on my machine:
175 88 (definition of an auto var) and later 96 (memset on this var).
176 Hence the stack is badly corrumpted. The headers inclusion is to
177 blame: if I move the awk.h inclusion before GLR's system header
178 inclusion, the two struct stat have the same size.
179
180 * src/tables.c (pack_table): Always create conflict_table.
181 (token_actions): Always create conflict_list.
182 * data/glr.c (YYFLAG): Remove, unused.
183
1842002-10-13 Akim Demaille <akim@epita.fr>
185
186 * configure.ac (AC_GNU_SOURCE): Use it instead of hand written code.
187 (O0FLAGS): New.
188 (VALGRIND, GXX): New.
189 * tests/atlocal.in (CFLAGS): Use O0FLAGS.
190 * tests/bison.in: Run $PREBISON a pre-command.
191 * tests/Makefile.am (maintainer-check, maintainer-check-valgrind)
192 (maintainer-check-g++): New.
193 * Makefile.am (maintainer-check): New.
194
1952002-10-13 Akim Demaille <akim@epita.fr>
196
197 * data/glr.c: Formatting changes.
198 Tweak some trace messages to match yacc.c's.
199
2002002-10-13 Akim Demaille <akim@epita.fr>
201
202 GLR parsers sometimes raise parse errors instead of performing the
203 default reduction.
204 Reported by Charles-Henry de Boysson.
205
206 * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't
207 check the length of the traces when %glr.
208 (_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from
209 GLR's traces.
210 (AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New.
211 Test GLR parsers.
212 * data/glr.c (YYLEFTMOST_STATE): Fix its value.
213 (yyltype): Remove the yy prefix from the member names.
214 (yytable): Complete its comment.
215 (yygetLRActions): Map error action number from YYTABLE from
216 YYTABLE_NINF to 0.
217 (yyisErrorAction): No longer compare YYACTION to YYPACT_NINF
218 (which was a bug: it should have been YYTABEL_NINF, and yet it was
219 not satisfying as we could compare an YYACTION computed from
220 YYDEFACT to YYTABLE_NINF although they are unrelated): 0 is the
221 only value for error actions.
222 (yyreportParseError): In verbose parse error messages, don't issue
223 `error' in the list of expected tokens.
224 * data/yacc.c (yyparse) <yybackup>: Rewrite the decoding of the
225 next action to perform to match glr.c's decoding.
226 (yytable): Complete its comment.
227
2282002-10-13 Paul Eggert <eggert@twinsun.com>
229
230 Fix problem reported by Henrik Grubbstroem in
231 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001670.html>:
232 "nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected,
233 because the Bison parser reads the second action before reducing
234 the first one.
235 * src/scan-gram.l (rule_length): New static var.
236 Use it to keep track of the rule length in the scanner, since
237 we can't expect the parser to be in lock-step sync with the scanner.
238 (handle_action_dollar, handle_action_at): Use this var.
239 * tests/actions.at (Exotic Dollars): Test for the problem.
240
2412002-10-12 Paul Eggert <eggert@twinsun.com>
242
243 * lib/timevar.c [! IN_GCC && HAVE_SYS_TIME_H]: Include <sys/time.h>.
244 * m4/timevar.m4 (BISON_PREREQ_TIMEVAR): Check for <sys/time.h>.
245 Include <sys/time.h> when checking for clock_t and struct tms.
246 Use same include order as source.
247 This is for the SunOS 4.1.4 porting bug reported by Peter Klein in
248 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001674.html>.
249
250 * lib/timevar.c: Update copyright date and clarify comments.
251 (get_time) [IN_GCC]: Keep the GCC version for reference.
252
253 * lib/timevar.c, lib/timevar.h, lib/timevar.def: Import
254 GCC version as of today, then merge Bison's changes.
255 Change "GCC" to "Bison" in copyright notice. timevar.def's
256 author is Akim, so change that too.
257
258 * src/reader.c (grammar_current_rule_check):
259 Don't worry about the default action if $$ is untyped.
260 Prevents bogus warnings reported by Jim Gifford in
261 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001673.html>.
262
263 * data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE.
264 * data/glr.c, data/lalr1.cc, data/yacc.c:
265 Output token definitions before the first part of user declarations.
266 Fixes compatibility problem reported by Jim Gifford for kbd in
267 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001672.html>.
268
2692002-10-11 Paul Eggert <eggert@twinsun.com>
270
271 * data/yacc.c (yyreport_parse_error): Remove, putting its body into...
272 (yyparse): here. This undoes some of the 2002-07-25 change.
273 Compatibility problem reported by Ralf S. Engelschall with
274 OSSP cfg <http://www.ossp.org/pkg/lib/cfg/>.
275
2762002-10-11 Akim Demaille <akim@epita.fr>
277
278 * tests/regression.at Characters Escapes): New.
279 * src/scan-gram.l (SC_ESCAPED_CHARACTER): Accept \' in strings and
280 characters.
281 Reported by Jan Nieuwenhuizen.
282
2832002-10-11 Akim Demaille <akim@epita.fr>
284
285 * po/id.po: New.
286
2872002-10-10 Paul Eggert <eggert@twinsun.com>
288
289 Portability fixes for bitsets; this also avoids several GCC
290 warnings.
291
292 * lib/abitset.c: Include <stddef.h>, for offsetof.
293 * lib/lbitset.c: Likewise.
294
295 * lib/abitset.c (abitset_bytes): Return a size that is aligned
296 properly for vectors of objects. Do not assume that adding a
297 header size to a multiple of a word size yields a value that is
298 properly aligned for the whole union.
299 * lib/bitsetv.c (bitsetv_alloc): Likewise.
300
301 * lib/bitset_stats.c (bitset_stats_bytes): Adjust to new,
302 unique names for structures.
303 * lib/ebitset.c (ebitset_bytes): Likewise.
304 * lib/lbitset.c (lbitset_bytes): Likewise.
305
306 * lib/abitset.c (abitset_ones, abitset_zero, abitset_empty_p,
307 abitset_copy1, abitset_not, abitset_equal_p, abitset_subset_p,
308 abitset_disjoint_p, abitset_and, abitset_and_cmp, abitset_andn,
309 abitset_andn_cmp, abitset_or, abitset_or_cmp, abitset_xor,
310 abitset_xor_cmp, abitset_and_or, abitset_and_or_cmp,
311 abitset_andn_or, abitset_andn_or_cmp, abitset_or_and,
312 abitset_or_and_cmp, abitset_copy): Supply prototype decls,
313 to improve the type-checking that GCC can do.
314 * lib/bitset.c (bitset_op4_cmp): Likewise.
315 * lib/bitset_stats.c (bitset_stats_count,
316 bitset_stats_empty_p, bitset_stats_ones, bitset_stats_zero,
317 bitset_stats_copy, bitset_stats_disjoint_p,
318 bitset_stats_equal_p, bitset_stats_not, bitset_stats_subset_p,
319 bitset_stats_and, bitset_stats_and_cmp, bitset_stats_andn,
320 bitset_stats_andn_cmp, bitset_stats_or, bitset_stats_or_cmp,
321 bitset_stats_xor, bitset_stats_xor_cmp, bitset_stats_and_or,
322 bitset_stats_and_or_cmp, bitset_stats_andn_or,
323 bitset_stats_andn_or_cmp, bitset_stats_or_and,
324 bitset_stats_or_and_cmp): Likewise.
325 * lib/lbitset.c (lbitset_and, lbitset_and_cmp, lbitset_andn,
326 lbitset_andn_cmp, lbitset_or, lbitset_or_cmp, lbitset_xor,
327 lbitset_xor_cmp, lbitset_empty_p, lbitset_ones, lbitset_not,
328 lbitset_subset_p, lbitset_disjoint_p, debug_lbitset): Likewise.
329
330 * lib/abitset.h: Include bitset.h, not bbitset.h.
331 * lib/ebitset.h: Likewise.
332 * lib/lbitset.h: Likewise.
333
334 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): New types.
335 All instances of parameters of type enum bitset_opts are now of
336 type enum_bitset_opts, to conform to the C Standard, and similarly
337 for enum_bitset_type.
338 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
339 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
340
341 Do not use "struct bitset_struct" to mean different things in
342 different modules. Not only is this confusing, it violates
343 the C Standard, which requires that structure types in different
344 modules must be compatible if one is to be passed to the other.
345 * lib/bbitset.h (bitset): Now points to a union, not to a struct.
346 All instances of "struct bitset_struct *" replaced with "bitset".
347 * lib/bitset.h (struct bitset_struct): Remove, replacing with....
348 (union bitset_union, struct abitset_struct, struct ebitset_struct,
349 struct lbitset_struct, struct bitset_stats_struct): New types.
350 All uses of struct bitset_struct changed to union bitset_union,
351 etc.
352 * lib/abitset.c (struct abitset_struct, abitset,
353 struct bitset_struct): Remove.
354 * lib/bitset_stats.c (struct bitset_stats_struct, bitset_stats,
355 struct bitset_struct): Remove.
356 * lib/ebitset.c (struct ebitset_struct, ebitset, struct
357 bitset_struct): Remove.
358 * lib/lbitset.c (struct lbitset_struct, lbitset, bitset_struct):
359 Likewise.
360
361 Do not call a function of type T using a call that assumes the
362 function is of a different type U. Standard C requires that a
363 function must be called with a type that is compatible with its
364 definition.
365 * lib/bbitset.h (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
366 New decls.
367 * lib/bitset.c (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
368 New functions.
369 * lib/ebitset.c (PFV): Remove.
370 * lib/lbitset.c (PFV): Likewise.
371 * lib/ebitset.c (ebitset_and, ebitset_andn, ebitset_or,
372 ebitset_xor, ebitset_copy, ebitset_ones, ebitset_empty_p): New
373 decls.
374 (ebitset_and, ebitset_andn, ebitset_or, ebitset_xor): New functions.
375 (ebitset_vtable): Use them.
376 * lib/lbitset.c (lbitset_and, lbitset_andn, lbitset_or,
377 lbitset_xor): New functions.
378 (lbitset_vtable): Use them.
379
380 * lib/bitset.h (bitset_next, bitset_prev, bitset_only_set_p):
381 Declare.
382
383 * lib/bitsetv.c (bitsetv_alloc): Add a cast to (void *) to avoid a
384 GCC warning.
385 * lib/lbitset.c (LBITSET_CURRENT1): Likewise.
386 Use offsetof, for simplicity.
387
3882002-10-06 Paul Eggert <eggert@twinsun.com>
389
390 * lib/bitset.h (bitset_reset): Do not assume that bitset_word is
391 the same width as int. This reapplies a hunk of the 2002-08-12 patch
392 <http://mail.gnu.org/pipermail/bison-patches/2002-August/001111.html>,
393 which was inadvertently undone by the 2002-09-30 patch.
394 * lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is
395 the same width as int.
396
3972002-10-04 Paul Eggert <eggert@twinsun.com>
398
399 Version 1.50.
400
401 * configure.ac (AC_INIT), NEWS: Increment version number.
402
403 * doc/bison.texinfo: Minor spelling, grammar, and white space
404 fixes.
405 (Symbols): Mention that any negative value returned from yylex
406 signifies end-of-input. Warn about negative chars. Mention
407 the portable Standard C character set.
408
409 The GNU coding standard says CFLAGS and YFLAGS are reserved
410 for the installer to set.
411 * lib/Makefile.am (AM_CFLAGS): Renamed from CFLAGS.
412 * src/Makefile.am (AM_CFLAGS): Likewise.
413 (AM_YFLAGS): Renamed from YFLAGS.
414
415 Fix some MAX and MIN problems.
416 * src/gram.h (ITEM_NUMBER_MIN): MIN_MAX -> INT_MIN.
417 * src/lalr.h (GOTO_NUMBER_MAX): INT_MAX -> SHRT_MAX.
418 * src/symtab.h (SYMBOL_NUMBER_MAX): New macro.
419 * src/reader.c (reader): Use it.
420
421 * tests/regression.at (Braces parsing): Use grep, not fgrep, as
422 POSIX 1003.1-2001 has removed fgrep.
423
4242002-10-04 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
425
426 * lib/bbitset.h (BITSET_WINDEX_MAX): Redefine so that it cannot be
427 interpreted as signed.
428 * lib/ebitset.c (ebitset_list): Fix bug.
429
4302002-10-01 Paul Eggert <eggert@twinsun.com>
431
432 More fixes for 64-bit hosts and large bitsets.
433
434 * lib/abitset.c (struct abitset_struct.n_bits, abitset_small_list,
435 abitset_size, abitset_list, abitset_list_reverse, abitset_list):
436 Use bitset_bindex, not int or unsigned int or size_t, to count bits.
437 * lib/bbitset.h (struct bitset_vtable.size, struct bitset_vtable.count,
438 struct bitset_vtable.list, struct bitset_vtable.list_reverse,
439 bitset_count_, bitset_next, bitset_prev, bitset_first, bitset_last,
440 bitset_count_): Likewise.
441 * lib/bitset.h (bitset_iterator.num, bitset_iterator.i,
442 bitset_first, bitset_last): Likewise.
443 * lib/bitset_stats.c (bitset_stats_size, bitset_stats_list,
444 bitset_stats_list_reverse, bitset_stats_size,
445 bitset_stats_count, bitset_stats_list, bitset_stat_list_reverse):
446 Likewise.
447 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
448 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
449 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
450 bitsetv_reflexive_transitive_closure): Likewise.
451 * lib/bitsetv.h (bitsetv_alloc, bitsetv_create): Likewise.
452 * lib/ebitset.c (ebitset_size, ebitset_list, ebitset_list_reverse):
453 Likewise.
454 * lib/lbitset.c (lbitset_size, lbitset_list, lbitset_list_merge):
455 Likewise.
456
457 * lib/abitset.c (abitset_ones, abitset_zero, abitset_bytes):
458 Use size_t, not unsigned int, to count bytes.
459 * lib/abitset.h (abitset_bytes): Likewise.
460 * lib/bitset.c (bitset_bytes, bitset_alloc, bitset_obstack_alloc):
461 Likewise.
462 * lib/bitset.h (bitset_bytes): Likewise.
463 * lib/bitset_stats.c (bitset_stats_bytes, bitset_stats_init): Likewise.
464 * lib/bitset_stats.h (bitset_stats_bytes): Likewise.
465 * lib/bitsetv.c (bitsetv_alloc): Likewise.
466 * lib/ebitset.c (ebitset_bytes): Likewise.
467 * lib/ebitset.h (ebitset_bytes): Likewise.
468 * lib/lbitset.c (lbitset_bytes): Likewise.
469 * lib/lbitset.h (lbitset_bytes): Likewise.
470
471 * lib/abitset.c (abitset_empty_p, abitset_not, abitset_equal_p,
472 abitset_subset_p, abitset_disjoint_p, abitset_and,
473 abitset_and_cmp, abitset_andn, abitset_andn_cmp, abitset_or,
474 abitset_or_cmp, abitset_xor, abitset_xor_cmp, abitset_and_or,
475 abitset_and_or_cmp, abitset_andn_or, abitset_andn_or_cmp,
476 abitset_or_and, abitset_or_and_cmp):
477 Use bitset_windex instead of unsigned int.
478 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
479 * lib/ebitset.c (struct ebitset_struct.size, ebitset_elts_grow,
480 ebitset_elt_add, ebitset_elt_remove, ebitset_weed,
481 ebitset_elt_find, ebitset_list_reverse, ebitset_list, ebitset_init):
482 Likewise.
483 * lib/lbitset.c (lbitset_ones, lbitset_not): Likewise.
484
485 * lib/bitset.c (bitset_print):
486 Use proper printf formats for widths of integer types.
487 * lib/bitset_stats.c (bitset_percent_histogram_print,
488 bitset_log_histogram_print, bitset_stats_print_1): Likewise.
489 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
490 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
491 * lib/lbitset.c (lbitset_bytes): Likewise.
492
493 * lib/bbitset.h (BITSET_BINDEX_MAX, BITSET_WINDEX_MAX,
494 BITSET_SIZE_MAX): New macros.
495 (BITSET_INDEX_MAX): Remove. It wasn't right, since it assumed that
496 sizeof (bitset_word) == sizeof (bitset_windex). All uses changed
497 to BITSET_WINDEX_MAX.
498
499 * lib/bitset.c (bitset_next, bitset_prev, bitset_first,
500 bitset_last): Return BITSET_BINDEX_MAX (not -1) for no value,
501 since we now return the bitset_bindex type (not int).
502
503 * lib/bitsetv.c (bitsetv_alloc): Check for arithmetic overflow
504 when computing sizes.
505 * lib/ebitset.c (ebitset_elts_grow): Likewise.
506
507 * lib/lbitset.c (lbitset_elt_find): Simplify windex calculation
508 and avoid cast to unsigned.
509
5102002-09-30 Akim Demaille <akim@epita.fr>
511
512 * lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
513 * lib/bitset_stats.c, lib/bitsetv.c, lib/ebitset.c, lib/lbitset.c:
514 Updates from Michael Hayes.
515
5162002-09-30 Art Haas <ahaas@neosoft.com>
517
518 * configure.ac: Update AC_OUTPUT and AM_CONFIG_HEADER
519 invocations.
520 * tests/cxx-type.at (declarator): Don't rely on NDEBUG being not
521 defined.
522
5232002-09-27 Akim Demaille <akim@epita.fr>
524
525 Version 1.49c.
526
5272002-09-27 Akim Demaille <akim@epita.fr>
528
529 * configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7.
530 (Because of AC_LIBSOURCE).
531
5322002-09-27 Akim Demaille <akim@epita.fr>
533
534 Playing with Autoscan.
535
536 * configure.ac: Remove the old LIBOBJ tweaks.
537 (AC_REPLACE_FUNCS): Add strrchr and strtol.
538 * lib/strrchr.c: New.
539 * lib/strtol.c: New, from the Coreutils 4.5.1.
540
5412002-09-27 Akim Demaille <akim@epita.fr>
542
543 Playing with Autoscan.
544
545 * m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New.
546 * lib/Makefile.am (libbison_a_SOURCES): No longer include
547 argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd.
548 * lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the
549 Coreutils 4.5.1.
550
5512002-09-24 Akim Demaille <akim@epita.fr>
552
553 * doc/bison.texinfo (Stack Overflow): xref to Recursion.
554 (Frequently Asked Questions, Parser Stack Overflow): New.
555
5562002-09-13 Akim Demaille <akim@epita.fr>
557
558 Playing with autoscan.
559
560 * src/reader.c (get_merge_function): Use xstrdup, not strdup.
561 * src/files.c (skeleton_find): Remove, unused.
562 * m4/memcmp.m4: New, from the Coreutils 4.5.1.
563 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP.
564
5652002-09-13 Akim Demaille <akim@epita.fr>
566
567 * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3.
568 * Makefile.am (AUTOMAKE_OPTIONS): Don't.
569
5702002-09-13 Akim Demaille <akim@epita.fr>
571
572 * configure.ac: Require 2.54.
573 s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/.
574 s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/.
575 * m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4:
576 Remove, provided by Autoconf macros.
577
5782002-09-12 Akim Demaille <akim@epita.fr>
579
580 * m4/prereq.m4: Update, from Coreutils 4.5.1.
581
5822002-09-12 Akim Demaille <akim@epita.fr>
583
584 * m4/prereq.m4: Update, from Fileutils 4.1.5.
585 * configure.ac (jm_PREREQ_TEMPNAME): Invoke it.
586 Reported by Martin Mokrejs.
587
5882002-09-10 Akim Demaille <akim@epita.fr>
589
590 * src/parse-gram.y: Associate a human readable string to each
591 token type.
592 * tests/regression.at (Invalid inputs): Adjust.
593
5942002-09-10 Gary V. Vaughan <gary@gnu.org>
595
596 * tests/Makefile.am ($(srcdir)/package.m4): Bison now ships
597 with an Autoconf-2.5x style configure.ac.
598
5992002-09-06 Paul Eggert <eggert@twinsun.com>
600
601 * doc/bison.texinfo (Conditions): Make explicit that the GPL
602 exception applies only to yacc.c. This is a modification of a
603 patch originally suggested by Akim Demaille.
604
6052002-09-06 Akim Demaille <akim@epita.fr>
606
607 * data/c.m4 (b4_copyright): Move the GPL exception comment from
608 here to...
609 * data/yacc.c: here.
610
611 * data/lalr1.cc (struct yyltype): Don't define it, since we use
612 LocationType.
613 (b4_ltype): Default to yy::Location from location.hh.
614
6152002-09-04 Jim Meyering <jim@meyering.net>
616
617 * data/yacc.c: Guard the declaration of yytoknum also with
618 `#ifdef YYPRINT', so it is declared only when used.
619
6202002-09-04 Akim Demaille <akim@epita.fr>
621
622 * configure.in: Rename as...
623 * configure.ac: this.
624 Bump to 1.49c.
625
6262002-09-04 Akim Demaille <akim@epita.fr>
627
628 * src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
629 * src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
630 translate maintainer only messages.
631
6322002-08-12 Paul Eggert <eggert@twinsun.com>
633
634 Version 1.49b.
635
636 * Makefile.am (SUBDIRS): Remove intl.
637 (DISTCLEANFILES): Remove.
638 * NEWS: Mention that GNU M4 is now required. Clarify what is
639 meant by "larger grammars". Mention the pt_BR translation.
640 * configure.in (AC_CHECK_DECLS): Add getenv, getopt.
641 (AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var.
642 Bump version from 0.11.2 to 0.11.5.
643 (BISON_PREREQ_STAGE): Remove.
644 (AM_GNU_GETTEXT): Use external gettext.
645 (AC_OUTPUT): Remove intl/Makefile.
646
647 * config/depcomp, config/install-sh: Sync with Automake 1.6.3.
648
649 * data/glr.c: Include string.h, for strlen.
650 (yyreportParseError): Use size_t for yysize.
651 (yy_yypstack): No longer nested inside yypstates, as nested
652 functions are not portable. Do not assume size_t is the
653 same width as int.
654 (yypstates): Do not assume that ptrdiff_t is the same width
655 as int, and similarly for yyposn and YYINDEX.
656
657 * data/yacc.c: Fix comment about `$$ = $1': it can copy garbage.
658
659 * lib/Makefile.am (INCLUDES): Do not include from the intl
660 directory, which has been removed.
661 * src/Makefile.am (INCLUDES): Likewise.
662
663 * lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h.
664 (bitsets_sources, additional_bitsets_sources, timevars_sources):
665 New vars.
666
667 * lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension.
668 * tests/Makefile.am (EXTRA_DIST): Likewise.
669
670 * lib/abitset.c (abitset_reverse_list, ebitset_reverse_list):
671 Do not assume that bitset_windex is the same width as unsigned.
672
673 * lib/abitset.c (abitset_unused_clear): Do not assume that
674 bitset_word is the same width as int.
675 * lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise.
676 * lib/bitset.h (bitset_set, bitset_reset): Likewise.
677 * lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise.
678 * lib/ebitset.c (ebitset_set, ebitset_reset): Likewise.
679 * lib/lbitset.c (lbitset_set, lbitset_reset): Likewise.
680
681 * lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for
682 portability to one's complement hosts!).
683 * lib/ebitset.c (ebitset_op1): Likewise.
684 * lib/lbitset.c (lbitset_op1): Likewise.
685
686 * lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar.
687 * lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
688 lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c:
689 Sync with fileutils.
690 * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
691 lib/gettext.h: Sync with diffutils.
692
693 * lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c,
694 lib/strspn.c, lib/tempname.c: Use GPL, not LGPL.
695
696 * lib/obstack.c, lib/obstack.h: Sync with fileutils, except use
697 PROTOTYPES to check for prototypes, and "defined __STDC__" to
698 check for void *.
699
700 * lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not
701 size_t; the old version tried to do this but casted improperly.
702 (bitset_bindex, bitset_windex): Now size_t, not unsigned long.
703 (bitset_test): Now returns int, not unsigned long.
704
705 * lib/bitset_stats.c: Include "gettext.h".
706 (_): New macro.
707 (bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't
708 name locals "index", as it generates unnecessary warnings on some
709 hosts that have an "index" function.
710
711 * lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print,
712 bitset_stats_read, bitset_stats_write): Wrap strings in _() if
713 they need translation.
714 * src/LR0.c (state_list_append, new_itemsets, get_state,
715 append_states, generate_states): Likewise.
716 * src/assoc.c (assoc_to_string): Likewise.
717 * src/closure.c (print_closure, set_firsts, closure): Likewise.
718 * src/gram.c (grammar_dump): Likewise.
719 * src/injections.c (injections_compute): Likewise.
720 * src/lalr.c (lookaheads_print): Likewise.
721 * src/relation.c (relation_transpose): Likewise.
722 * src/scan-gram.l: Likewise.
723 * src/tables.c (table_grow, pack_vector): Likewise.
724
725 * m4/Makefile.am (EXTRA_DIST): Remove codeset.m4,
726 glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4.
727 * m4/malloc.m4, m4/realloc.m4: Sync with diffutils.
728 * m4/mbstate_t.m4: Sync with fileutils.
729 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T.
730
731 * po/LINGUAS: Add pt_BR.
732 * po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c,
733 src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c,
734 lib/timevar.c.
735 Use src/parse-gram.y instead of src/parse-gram.c, as the gettext
736 manual recommends.
737 Similarly, use src/scan-gram.l instead of src/scan-gram.c.
738
739 * src/complain.c (strerror_r): Remove decl; not needed.
740 (strerror): Use same pattern as ../lib/error.c.
741
742 * src/files.c, src/files.h (compute_header_macro): Remove; unused.
743
744 * src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int.
745
746 * src/main.c (main): Cast result of bindtextdomain and textdomain
747 to void, to avoid a GCC warning when --disable-nls is in effect.
748
749 * src/scan-gram.l: Use strings rather than escapes when possible,
750 to minimize the number of warnings from xgettext.
751 (handle_action_dollar, handle_action_at): Don't use isdigit,
752 as it mishandles negative chars and it may not work as expected
753 outside the C locale.
754
755 * src/symtab.c (symbol_get): Don't cast LHS of an assignment;
756 this is a GCC extension and is not portable to other compilers.
757
758 * src/system.h (alloca): Use same pattern as ../lib/error.c.
759 Do not include <ctype.h>; no longer needed.
760 Do not include <malloc.h>; no longer needed (and generates
761 warnings on OpenBSD 3.0).
762
763 * tests/cxx-type.at (yylex): Do not pass signed char to isupper;
764 it's not portable.
765
766 * tests/regression.at: Do not use 'cc -c input.c -o input';
767 Sun C rejects this. Instead, use 'cc -c input.c -o input.o'.
768
769 * tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero
770 exit status as failure, not just exit status 1. Sun C exits
771 with status 2 sometimes.
772
773 * tests/torture.at (AT_INCREASE_DATA_SIZE): New macro.
774 Use it for the two large tests.
775
7762002-08-02 Akim Demaille <akim@epita.fr>
777
778 * src/conflicts.c (conflicts_output): Don't output rules never
779 reduced here, since anyway that computation doesn't work.
780 * src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
781 (rule_useless_p, rule_never_reduced_p): New.
782 (grammar_rules_partial_print): Use a filter instead of a range.
783 Display the title only if needed.
784 (grammar_rules_print): Adjust.
785 (grammar_rules_never_reduced_report): New.
786 * src/tables.c (action_row): Move the computation of rules never
787 reduced to...
788 (token_actions): here.
789 * src/main.c (main): Make the parser before making the report, so
790 that rules never reduced are computed.
791 Call grammar_rules_never_reduced_report.
792 * src/print.c (print_results): Report rules never reduced.
793 * tests/conflicts.at, tests/reduce.at: Adjust.
794
7952002-08-01 Akim Demaille <akim@epita.fr>
796
797 Instead of attaching lookaheads and duplicating the rules being
798 reduced by a state, attach the lookaheads to the reductions.
799
800 * src/state.h (state_t): Remove the `lookaheads',
801 `lookaheads_rule' member.
802 (reductions_t): Add a `lookaheads' member.
803 Use a regular array for the `rules'.
804 * src/state.c (reductions_new): Initialize the lookaheads member
805 to 0.
806 (state_rule_lookaheads_print): Adjust.
807 * src/state.h, src/state.c (state_reductions_find): New.
808 * src/conflicts.c (resolve_sr_conflict, set_conflicts)
809 (count_rr_conflicts): Adjust.
810 * src/lalr.c (LArule): Remove.
811 (add_lookback_edge): Adjust.
812 (state_lookaheads_count): New.
813 (states_lookaheads_initialize): Merge into...
814 (initialize_LA): this.
815 (lalr_free): Adjust.
816 * src/main.c (main): Don't free nullable and derives too early: it
817 is used by --verbose.
818 * src/print.c, src/print_graph.c, src/tables.c: Adjust.
819
8202002-08-01 Akim Demaille <akim@epita.fr>
821
822 * src/derives.h, src/derives.c (derives): A `rule_t***' instead of
823 `rule_number_t**'.
824 (set_derives, free_derives): Rename as...
825 (derives_compute, derives_free): this.
826 Adjust all dependencies.
827 * src/nullable.c (set_nullable, free_nullable): Rename as...
828 (nullable_compute, nullable_free): these.
829 (rule_list_t): Store rule_t *, not rule_number_t.
830 * src/state.c (state_rule_lookaheads_print): Directly compare rule
831 pointers, instead of their numbers.
832 * src/main.c (main): Call nullable_free, and derives_free earlier,
833 as they were lo longer used.
834
8352002-08-01 Akim Demaille <akim@epita.fr>
836
837 * lib/timevar.c (get_time): Include children time.
838 * src/lalr.h (LA, LArule): Don't export them: used with the
839 state_t.
840 * src/lalr.c (LA, LArule): Static.
841 * src/lalr.h, src/lalr.c (lalr_free): New.
842 * src/main.c (main): Call it.
843 * src/tables.c (pack_vector): Check whether loc is >= to the
844 table_size, not >.
845 (pack_tables): Don't free froms, tos, conflict_tos, and pos...
846 (tables_generate): do it, since that's also it which allocates
847 them.
848 Don't free LA and LArule, main does.
849
8502002-07-31 Akim Demaille <akim@epita.fr>
851
852 Separate parser tables computation and output.
853
854 * src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
855 (conflict_list, conflict_list_cnt, table, check, table_ninf)
856 (yydefgoto, yydefact, high): Move to...
857 * src/tables.h, src/tables.c: here.
858 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
859 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
860 (symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
861 (froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
862 (ACTION_MIN, actrow, order, nentries, pos, conflrow)
863 (conflict_list_free, table_size, lowzero, table_grow, conflict_row)
864 (action_row, save_row, token_actions, save_column, default_goto)
865 (goto_actions, sort_actions, matching_state, pack_vector)
866 (table_ninf_remap, pack_table, prepare_actions): Move to...
867 * src/tables.c: here.
868 * src/tables.h, src/tables.c(tables_generate, tables_free): New.
869 * src/output.c (token_actions, output_base, output_conflicts)
870 (output_check): Merge into...
871 (prepare_actions): this.
872 (actions_output): Rename as...
873 (user_actions_output): this.
874 * src/main.c (main): Call tables_generate and tables_free.
875
8762002-07-31 Akim Demaille <akim@epita.fr>
877
878 Steal GCC's --time-report support.
879
880 * lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
881 stolen/adjusted from GCC.
882 * m4/stage.m4: Remove time related checks.
883 * m4/timevar.m4: New.
884 * configure.in: Adjust.
885 * src/system.h: Adjust to using timevar.h.
886 * src/getargs.h, src/getargs.c: Support trace_time for
887 --trace=time.
888 * src/main.c (stage): Remove.
889 (main): Replace `stage' invocations with timevar calls.
890 * src/output.c: Insert pertinent timevar calls.
891
8922002-07-31 Akim Demaille <akim@epita.fr>
893
894 Let --trace have arguments.
895
896 * src/getargs.h (enum trace_e): New.
897 * src/getargs.c (trace_args, trace_types, trace_argmatch): New.
898 (long_options, short_options): --trace/-T takes an optional
899 argument.
900 Change all the uses of trace_flag to reflect the new flags.
901 * tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.
902
903 Strengthen `stage' portability.
904
905 * m4/stage.m4 (BISON_PREREQ_STAGE): New.
906 * configure.in: Use it.
907 Don't check for malloc.h and sys/times.h.
908 * src/system.h: Include them when appropriate.
909 * src/main.c (stage): Compile only when mallinfo, struct mallinfo,
910 times and struct tms are available.
911
9122002-07-30 Akim Demaille <akim@epita.fr>
913
914 In verbose parse error message, don't report `error' as an
915 expected token.
916 * tests/actions.at (Printers and Destructors): Adjust.
917 * tests/calc.at (Calculator $1): Adjust.
918 * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
919 error message, do not report the parser accepts the error token in
920 that state.
921
9222002-07-30 Akim Demaille <akim@epita.fr>
923
924 Normalize conflict related messages.
925
926 * src/complain.h, src/complain.c (warn, complain): New.
927 * src/conflicts.c (conflicts_print): Use them.
928 (conflict_report_yacc): New, extracted from...
929 (conflicts_print): here.
930 * tests/conflicts.at, tests/existing.at: Adjust.
931
9322002-07-30 Akim Demaille <akim@epita.fr>
933
934 Report rules which are never reduced by the parser: those hidden
935 by conflicts.
936
937 * src/LR0.c (save_reductions): Don't make the final state too
938 different: save its reduction (accept) instead of having a state
939 without any action (no shift or goto, no reduce).
940 Note: the final state is now a ``regular'' state, i.e., the
941 parsers now contain `reduce 0' as default reduction.
942 Nevertheless, since they decide to `accept' when yystate =
943 final_state, they still will not reduce rule 0.
944 * src/print.c (print_actions, print_reduction): Adjust.
945 * src/output.c (action_row): Track reduced rules.
946 (token_actions): Report rules never reduced.
947 * tests/conflicts.at, tests/regression.at: Adjust.
948
9492002-07-30 Akim Demaille <akim@epita.fr>
950
951 `stage' was accidently included in a previous patch.
952 Initiate its autoconfiscation.
953
954 * configure.in: Look for malloc.h and sys/times.h.
955 * src/main.c (stage): Adjust.
956 Report only when trace_flag.
957
9582002-07-29 Akim Demaille <akim@epita.fr>
959
960 * src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
961 state_number_t.
962 (errs_t): symbol_t*, not symbol_number_t.
963 (reductions_t): rule_t*, not rule_number_t.
964 (FOR_EACH_SHIFT): New.
965 * src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
966 * src/print.c, src/print_graph.c: Adjust.
967
9682002-07-29 Akim Demaille <akim@epita.fr>
969
970 Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.
971
972 * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
973 (endtoken, accept): these.
974 * src/reader.c (reader): Set endtoken's default tag to "$end".
975 Set undeftoken's tag to "$undefined" instead of "$undefined.".
976 * doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
977 Adjust.
978
9792002-07-29 Akim Demaille <akim@epita.fr>
980
981 * src/reduce.c (reduce_grammar): When the language is empty,
982 complain about the start symbol, not the axiom.
983 Use its location.
984 * tests/reduce.at (Empty Language): New.
985
9862002-07-26 Akim Demaille <akim@epita.fr>
987
988 * src/reader.h, src/reader.c (gram_error): ... can't get
989 yycontrol without making too strong assumptions on the parser
990 itself.
991 * src/output.c (prepare_tokens): Use the real 0th value of
992 token_translations instead of `0'.
993 * src/parse-gram.y (yyerror): Don't rely on yycontrol being
994 visible here.
995 * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
996 for the time being: %locations ought to provide it to yyerror.
997
9982002-07-25 Akim Demaille <akim@epita.fr>
999
1000 * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
1001 * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
1002 * tests/regression.at (Web2c Actions): Adjust.
1003
10042002-07-25 Akim Demaille <akim@epita.fr>
1005
1006 Stop storing rules from 1 to nrules + 1.
1007
1008 * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
1009 * src/nullable.c, src/output.c, src/print.c, src/reader.c
1010 * src/reduce.c: Allocate and free from &rules[0], not &rules[1].
1011 Iterate from 0 to nrules.
1012 Use rule_number_as_item_number and item_number_as_rule_number.
1013 Adjust to `derive' now containing possibly 0.
1014 * src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
1015 Handle the `- 1' part in rule numbers from/to item numbers.
1016 * src/conflicts.c (log_resolution): Fix the message which reversed
1017 shift and reduce.
1018 * src/output.c (action_row): Initialize default_rule to -1.
1019 (token_actions): Adjust.
1020 * tests/sets.at (Nullable, Firsts): Fix the previously bogus
1021 expected output.
1022 * tests/conflicts.at (Resolved SR Conflicts): Likewise.
1023
10242002-07-25 Akim Demaille <akim@epita.fr>
1025
1026 * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
1027 (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
1028 (b4_c_knr_arg_decl): New.
1029 * data/yacc.c: Use it to define yysymprint, yydestruct, and
1030 yyreport_parse_error.
1031
10322002-07-25 Akim Demaille <akim@epita.fr>
1033
1034 * data/yacc.c (yyreport_parse_error): New, extracted from...
1035 (yyparse): here.
1036 (yydestruct, yysymprint): Move above yyparse.
1037 Be K&R compliant.
1038
10392002-07-25 Akim Demaille <akim@epita.fr>
1040
1041 * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
1042 replace...
1043 (b4_sint_type, b4_uint_type): these.
1044 * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
1045 * tests/regression.at (Web2c Actions): Adjust.
1046
10472002-07-25 Akim Demaille <akim@epita.fr>
1048
1049 * src/gram.h (TIEM_NUMBER_MAX): New.
1050 (item_number_of_rule_number, rule_number_of_item_number): Rename
1051 as...
1052 (rule_number_as_item_number, item_number_as_rule_number): these.
1053 Adjust dependencies.
1054 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
1055 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
1056 (symbol_number_to_vector_number): New.
1057 (order): Of vector_number_t* type.
1058 (base_t, BASE_MAX, BASE_MIN): New.
1059 (froms, tos, width, pos, check): Of base_t type.
1060 (action_number_t, ACTION_MIN, ACTION_MAX): New.
1061 (actrow): Of action_number_t type.
1062 (conflrow): Of unsigned int type.
1063 (table_ninf, base_ninf): New.
1064 (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
1065 (muscle_insert_int_table, muscle_insert_base_table)
1066 (muscle_insert_rule_number_table): New.
1067 (prepare_tokens): Output `toknum' as int_table.
1068 (action_row): Returns a rule_number_t.
1069 Use ACTION_MIN, not SHRT_MIN.
1070 (token_actions): yydefact is rule_number_t*.
1071 (table_ninf_remap): New.
1072 (pack_table): Use it for `base' and `table'.
1073 * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
1074 replaced with...
1075 (YYPACT_NINF, YYTABLE_NINF): these.
1076 (yypact, yytable): Compute their types instead of hard-coded
1077 `short'.
1078 * tests/regression.at (Web2c Actions): Adjust.
1079
10802002-07-19 Akim Demaille <akim@epita.fr>
1081
1082 * src/scan-gram.l (id): Can start with an underscore.
1083
10842002-07-16 Akim Demaille <akim@epita.fr>
1085
1086 * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
1087 Adjust all former `associativity' dependencies.
1088 * src/symtab.c (symbol_new): Default associativity is `undef', not
1089 `right'.
1090 (symbol_check_alias_consistence): Adjust.
1091
10922002-07-09 Akim Demaille <akim@epita.fr>
1093
1094 * doc/bison.texinfo: Properly set the ``header'' part.
1095 Use @dircategory ``GNU programming tools'' as per Texinfo's
1096 documentation.
1097 Use @copying.
1098
10992002-07-09 Akim Demaille <akim@epita.fr>
1100
1101 * lib/quotearg.h: Protect against multiple inclusions.
1102 * src/location.h (location_t): Add a `file' member.
1103 (LOCATION_RESET, LOCATION_PRINT): Adjust.
1104 * src/complain.c (warn_at, complain_at, fatal_at): Drop
1105 `error_one_per_line' support.
1106
11072002-07-09 Akim Demaille <akim@epita.fr>
1108
1109 * src/complain.h, src/complain.c (warn, complain): Remove, unused.
1110 * src/reader.c (lineno): Remove.
1111 Adjust all dependencies.
1112 (get_merge_function): Take a location and use complain_at.
1113 * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
1114 * tests/regression.at (Invalid inputs, Mixing %token styles):
1115 Adjust.
1116
11172002-07-09 Akim Demaille <akim@epita.fr>
1118
1119 * src/parse-gram.y (rules_or_grammar_declaration): Add an error
1120 recovery rule, and forbid extensions when --yacc.
1121 (gram_error): Use complain_at.
1122 * src/reader.c (reader): Exit if there were parse errors.
1123
11242002-07-09 Akim Demaille <akim@epita.fr>
1125
1126 * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
1127 (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
1128 Reported by R Blake <blakers@mac.com>.
1129
11302002-07-09 Akim Demaille <akim@epita.fr>
1131
1132 * data/yacc.c: Output the copyright notive in the header.
1133
11342002-07-03 Akim Demaille <akim@epita.fr>
1135
1136 * src/output.c (froms, tos): Are state_number_t.
1137 (save_column): sp, sp1, and sp2 are state_number_t.
1138 (prepare): Rename `final' as `final_state_number', `nnts' as
1139 `nterms_number', `nrules' as `rules_number', `nstates' as
1140 `states_number', and `ntokens' as `tokens_number'. Remove `nsym',
1141 unused.
1142 * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
1143 * data/lalr1.cc (nsym_): Remove, unused.
1144
11452002-07-03 Akim Demaille <akim@epita.fr>
1146
1147 * src/lalr.h, src/lalr.c (goto_number_t): New.
1148 * src/lalr.c (goto_list_t): New.
1149 Propagate them.
1150 * src/nullable.c (rule_list_t): New.
1151 Propagate.
1152 * src/types.h: Remove.
1153
11542002-07-03 Akim Demaille <akim@epita.fr>
1155
1156 * src/closure.c (print_fderives): Use rule_rhs_print.
1157 * src/derives.c (print_derives): Use rule_rhs_print.
1158 (rule_list_t): New, replaces `shorts'.
1159 (set_derives): Add comments.
1160 * tests/sets.at (Nullable, Firsts): Adjust.
1161
11622002-07-03 Akim Demaille <akim@epita.fr>
1163
1164 * src/output.c (prepare_actions): Free `tally' and `width'.
1165 (prepare_actions): Allocate and free `order'.
1166 * src/symtab.c (symbols_free): Free `symbols'.
1167 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
1168 * src/output.c (m4_invoke): Move to...
1169 * src/scan-skel.l: here.
1170 (<<EOF>>): Close yyout, and free its name.
1171
11722002-07-03 Akim Demaille <akim@epita.fr>
1173
1174 Fix some memory leaks, and fix a bug: state 0 was examined twice.
1175
1176 * src/LR0.c (new_state): Merge into...
1177 (state_list_append): this.
1178 (new_states): Merge into...
1179 (generate_states): here.
1180 (set_states): Don't ensure a proper `errs' state member here, do it...
1181 * src/conflicts.c (conflicts_solve): here.
1182 * src/state.h, src/state.c: Comment changes.
1183 (state_t): Rename member `shifts' as `transitions'.
1184 Adjust all dependencies.
1185 (errs_new): For consistency, also take the values as argument.
1186 (errs_dup): Remove.
1187 (state_errs_set): New.
1188 (state_reductions_set, state_transitions_set): Assert that no
1189 previous value was assigned.
1190 (state_free): New.
1191 (states_free): Use it.
1192 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
1193 temporary storage: use `errs' and `nerrs' as elsewhere.
1194 (set_conflicts): Allocate and free this `errs'.
1195
11962002-07-02 Akim Demaille <akim@epita.fr>
1197
1198 * lib/libiberty.h: New.
1199 * lib: Update the bitset implementation from upstream.
1200 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
1201 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
1202 * src/main.c: Adjust bitset stats calls.
1203
12042002-07-01 Paul Eggert <eggert@twinsun.com>
1205
1206 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
1207 char, so that negative chars don't collide with $.
1208
12092002-06-30 Akim Demaille <akim@epita.fr>
1210
1211 Have the GLR tests be `warning' checked, and fix the warnings.
1212
1213 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
1214 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
1215 (yyremoveDeletes): `yyi' and `yyj' are size_t.
1216 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
1217 (yyaddDeferredAction): static.
1218 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
1219 (yyreportParseError): yyprefix is const.
1220 yytokenp is used only when verbose.
1221 (yy__GNUC__): Replace with __GNUC__.
1222 (yypdumpstack): yyi is size_t.
1223 (yypreference): Un-yy local variables and arguments, to avoid
1224 clashes with `yyr1'. Anyway, we are not in the user name space.
1225 (yytname_size): be an int, as is compared with ints.
1226 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
1227 Use them.
1228 * tests/cxx-gram.at: Use quotation to protect $1.
1229 Use AT_COMPILE to enable warnings hunts.
1230 Prototype yylex and yyerror.
1231 `Use' argc.
1232 Include `string.h', not `strings.h'.
1233 Produce and prototype stmtMerge only when used.
1234 yylex takes a location.
1235
12362002-06-30 Akim Demaille <akim@epita.fr>
1237
1238 We spend a lot of time in quotearg, in particular when --verbose.
1239
1240 * src/symtab.c (symbol_get): Store a quoted version of the key.
1241 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
1242 Adjust all callers.
1243
12442002-06-30 Akim Demaille <akim@epita.fr>
1245
1246 * src/state.h (reductions_t): Rename member `nreds' as num.
1247 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
1248 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
1249
12502002-06-30 Akim Demaille <akim@epita.fr>
1251
1252 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
1253 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
1254 (shifts_to): Rename as...
1255 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
1256 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
1257 (TRANSITION_IS_DISABLED, transitions_to): these.
1258
12592002-06-30 Akim Demaille <akim@epita.fr>
1260
1261 * src/print.c (print_shifts, print_gotos): Merge into...
1262 (print_transitions): this.
1263 (print_transitions, print_errs, print_reductions): Align the
1264 lookaheads columns.
1265 (print_core, print_transitions, print_errs, print_state,
1266 print_grammar): Output empty lines separator before, not after.
1267 (state_default_rule_compute): Rename as...
1268 (state_default_rule): this.
1269 * tests/conflicts.at (Defaulted Conflicted Reduction),
1270 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
1271 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
1272
12732002-06-30 Akim Demaille <akim@epita.fr>
1274
1275 Display items as we display rules.
1276
1277 * src/gram.h, src/gram.c (rule_lhs_print): New.
1278 * src/gram.c (grammar_rules_partial_print): Use it.
1279 * src/print.c (print_core): Likewise.
1280 * tests/conflicts.at (Defaulted Conflicted Reduction),
1281 (Unresolved SR Conflicts): Adjust.
1282 (Unresolved SR Conflicts): Adjust and rename as...
1283 (Resolved SR Conflicts): this, as was meant.
1284 * tests/regression.at (Web2c Report): Adjust.
1285
12862002-06-30 Akim Demaille <akim@epita.fr>
1287
1288 * src/print.c (state_default_rule_compute): New, extracted from...
1289 (print_reductions): here.
1290 Pessimize, but clarify the code.
1291 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
1292
12932002-06-30 Akim Demaille <akim@epita.fr>
1294
1295 * src/output.c (action_row): Let default_rule be always a rule
1296 number.
1297
12982002-06-30 Akim Demaille <akim@epita.fr>
1299
1300 * src/closure.c (print_firsts, print_fderives, closure):
1301 Use BITSET_EXECUTE.
1302 * src/lalr.c (lookaheads_print): Likewise.
1303 * src/state.c (state_rule_lookaheads_print): Likewise.
1304 * src/print_graph.c (print_core): Likewise.
1305 * src/print.c (print_reductions): Likewise.
1306 * src/output.c (action_row): Likewise.
1307 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
1308
13092002-06-30 Akim Demaille <akim@epita.fr>
1310
1311 * src/print_graph.c: Use report_flag.
1312
13132002-06-30 Akim Demaille <akim@epita.fr>
1314
1315 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
1316 to...
1317 * src/relation.h, src/relation.c (traverse, relation_digraph)
1318 (relation_print, relation_transpose): New.
1319
13202002-06-30 Akim Demaille <akim@epita.fr>
1321
1322 * src/state.h, src/state.c (shifts_to): New.
1323 * src/lalr.c (build_relations): Use it.
1324
13252002-06-30 Akim Demaille <akim@epita.fr>
1326
1327 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
1328 (item_number_of_rule_number, rule_number_of_item_number): New.
1329 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
1330 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
1331 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
1332 Propagate their use.
1333 Much remains to be done, in particular wrt `shorts' from types.h.
1334
13352002-06-30 Akim Demaille <akim@epita.fr>
1336
1337 * src/symtab.c (symbol_new): Initialize the `printer' member.
1338
13392002-06-30 Akim Demaille <akim@epita.fr>
1340
1341 * src/LR0.c (save_reductions): Remove, replaced by...
1342 * src/state.h, src/state.c (state_reductions_set): New.
1343 (reductions, errs): Rename as...
1344 (reductions_t, errs_t): these.
1345 Adjust all dependencies.
1346
13472002-06-30 Akim Demaille <akim@epita.fr>
1348
1349 * src/LR0.c (state_list_t, state_list_append): New.
1350 (first_state, last_state): Now symbol_list_t.
1351 (this_state): Remove.
1352 (new_itemsets, append_states, save_reductions): Take a state_t as
1353 argument.
1354 (set_states, generate_states): Adjust.
1355 (save_shifts): Remove, replaced by...
1356 * src/state.h, src/state.c (state_shifts_set): New.
1357 (shifts): Rename as...
1358 (shifts_t): this.
1359 Adjust all dependencies.
1360 * src/state.h (state_t): Remove the `next' member.
1361
13622002-06-30 Akim Demaille <akim@epita.fr>
1363
1364 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
1365 escaped in slot 0.
1366
13672002-06-30 Akim Demaille <akim@epita.fr>
1368
1369 Use hash.h for the state hash table.
1370
1371 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
1372 (allocate_storage): Use state_hash_new.
1373 (free_storage): Use state_hash_free.
1374 (new_state, get_state): Adjust.
1375 * src/lalr.h, src/lalr.c (states): Move to...
1376 * src/states.h (state_t): Remove the `link' member, no longer
1377 used.
1378 * src/states.h, src/states.c: here.
1379 (state_hash_new, state_hash_free, state_hash_lookup)
1380 (state_hash_insert, states_free): New.
1381 * src/states.c (state_table, state_compare, state_hash): New.
1382 * src/output.c (output_actions): Do not free states now, since we
1383 still need to know the final_state number in `prepare', called
1384 afterwards. Do it...
1385 * src/main.c (main): here: call states_free after `output'.
1386
13872002-06-30 Akim Demaille <akim@epita.fr>
1388
1389 * src/state.h, src/state.c (state_new): New, extracted from...
1390 * src/LR0.c (new_state): here.
1391 * src/state.h (STATE_ALLOC): Move to...
1392 * src/state.c: here.
1393 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
1394 * src/state.h, src/state.c: here.
1395
13962002-06-30 Akim Demaille <akim@epita.fr>
1397
1398 * src/reader.c (gensym): Rename as...
1399 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
1400 (getsym): Rename as...
1401 (symbol_get): this.
1402
14032002-06-30 Akim Demaille <akim@epita.fr>
1404
1405 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
1406 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
1407 * src/output.c, src/print.c, src/print_graph.c: Propagate.
1408 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
1409
14102002-06-30 Akim Demaille <akim@epita.fr>
1411
1412 Make the test suite pass with warnings checked.
1413
1414 * tests/actions.at (Printers and Destructors): Improve.
1415 Avoid unsigned vs. signed issues.
1416 * tests/calc.at: Don't exercise the scanner here, do it...
1417 * tests/input.at (Torturing the Scanner): here.
1418
14192002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1420
1421 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
1422 reorganize first lines parallel to yacc.c.
1423
14242002-06-28 Akim Demaille <akim@epita.fr>
1425
1426 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
1427 (b4_token_enum, b4_token_defines): New, factored from...
1428 * data/lalr1.cc, data/yacc.c, glr.c: here.
1429
14302002-06-28 Akim Demaille <akim@epita.fr>
1431
1432 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
1433 unused variables.
1434 * src/output.c (merger_output): static.
1435
14362002-06-28 Akim Demaille <akim@epita.fr>
1437
1438 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
1439 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
1440 pacify GCC.
1441 * src/output.c (save_row): Initialize all the variables to pacify GCC.
1442
14432002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1444
1445 Accumulated changelog for new GLR parsing features.
1446
1447 * src/conflicts.c (count_total_conflicts): Change name to
1448 conflicts_total_count.
1449 * src/conflicts.h: Ditto.
1450 * src/output.c (token_actions): Use the new name.
1451 (output_conflicts): Change conflp => conflict_list_heads, and
1452 confl => conflict_list for better readability.
1453 * data/glr.c: Use the new names.
1454 * NEWS: Add self to GLR announcement.
1455
1456 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
1457
1458 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
1459 Akim Demaille.
1460
1461 * data/bison.glr: Change name to glr.c
1462 * data/glr.c: Renamed from bison.glr.
1463 * data/Makefile.am: Add glr.c
1464
1465 * src/getargs.c:
1466
1467 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
1468 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
1469
1470 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1471
1472 * data/bison.glr: Be sure to restore the
1473 current #line when returning to the skeleton contents after having
1474 exposed the input file's #line.
1475
1476 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1477
1478 * data/bison.glr: Bring up to date with changes to bison.simple.
1479
1480 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1481
1482 * data/bison.glr: Correct definitions that use b4_prefix.
1483 Various reformatting.
1484 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
1485 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
1486 yytokenp argument; now part of stack.
1487 (yychar): Define to behave as documented.
1488 (yyclearin): Ditto.
1489
1490 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1491
1492 * src/reader.h: Add declaration for free_merger_functions.
1493
1494 * src/reader.c (merge_functions): New variable.
1495 (get_merge_function): New function.
1496 (free_merger_functions): New function.
1497 (readgram): Check for %prec that is not followed by a symbol.
1498 Handle %dprec and %merge declarations.
1499 (packgram): Initialize dprec and merger fields in rules array.
1500
1501 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
1502 conflict_list_cnt, conflict_list_free): New variables.
1503 (table_grow): Also grow conflict_table.
1504 (prepare_rules): Output dprec and merger tables.
1505 (conflict_row): New function.
1506 (action_row): Output conflict lists for GLR parser. Don't use
1507 default reduction in conflicted states for GLR parser so that there
1508 are spaces for the conflict lists.
1509 (save_row): Also save conflict information.
1510 (token_actions): Allocate conflict list.
1511 (merger_output): New function.
1512 (pack_vector): Pack conflict table, too.
1513 (output_conflicts): New function to output yyconflp and yyconfl.
1514 (output_check): Allocate conflict_tos.
1515 (output_actions): Output conflict tables, also.
1516 (output_skeleton): Output b4_mergers definition.
1517 (prepare): Output b4_max_rhs_length definition.
1518 Use 'bison.glr' as default skeleton for GLR parsers.
1519
1520 * src/gram.c (glr_parser): New flag.
1521 (grammar_free): Call free_merger_functions.
1522
1523 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
1524 all pairs of conflicting reductions, rather than just all tokens
1525 causing conflicts. Needed to size conflict tables.
1526 (conflicts_output): Modify call to count_rr_conflicts for new
1527 interface.
1528 (conflicts_print): Ditto.
1529 (count_total_conflicts): New function.
1530
1531 * src/reader.h (merger_list): New type.
1532 (merge_functions): New variable.
1533
1534 * src/lex.h (tok_dprec, tok_merge): New token types.
1535
1536 * src/gram.h (rule_s): Add dprec and merger fields.
1537 (glr_parser): New flag.
1538
1539 * src/conflicts.h (count_total_conflicts): New function.
1540
1541 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
1542
1543 * doc/bison.texinfo (Generalized LR Parsing): New section.
1544 (GLR Parsers): New section.
1545 (Language and Grammar): Mention GLR parsing.
1546 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
1547 Correct typo ("tge" -> "the").
1548
1549 * data/bison.glr: New skeleton for GLR parsing.
1550
1551 * tests/cxx-gram.at: New tests for GLR parsing.
1552
1553 * tests/testsuite.at: Include cxx-gram.at.
1554
1555 * tests/Makefile.am: Add cxx-gram.at.
1556
1557 * src/parse-gram.y:
1558
1559 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
1560
1561 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
1562
15632002-06-27 Akim Demaille <akim@epita.fr>
1564
1565 * src/options.h, src/options.c: Remove.
1566 * src/getargs.c (short_options, long_options): New.
1567
15682002-06-27 Akim Demaille <akim@epita.fr>
1569
1570 * data/bison.simple, data/bison.c++: Rename as...
1571 * data/yacc.c, data/lalr1.cc: these.
1572 * doc/bison.texinfo (Environment Variables): Remove.
1573
15742002-06-25 Raja R Harinath <harinath@cs.umn.edu>
1575
1576 * src/getargs.c (report_argmatch): Initialize strtok().
1577
15782002-06-20 Akim Demaille <akim@epita.fr>
1579
1580 * data/bison.simple (b4_symbol_actions): New, replaces...
1581 (b4_symbol_destructor, b4_symbol_printer): these.
1582 (yysymprint): Be sure to call YYPRINT only for tokens, and using
1583 user token numbers.
1584
15852002-06-20 Akim Demaille <akim@epita.fr>
1586
1587 * data/bison.simple (yydestructor): Rename as...
1588 (yydestruct): this.
1589
15902002-06-20 Akim Demaille <akim@epita.fr>
1591
1592 * src/symtab.h, src/symtab.c (symbol_type_set)
1593 (symbol_destructor_set, symbol_precedence_set): The location is
1594 the last argument.
1595 Adjust all callers.
1596
15972002-06-20 Akim Demaille <akim@epita.fr>
1598
1599 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
1600 internals.
1601 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
1602 Takes a location.
1603 * src/symtab.h, src/symtab.c (symbol_class_set)
1604 (symbol_user_token_number_set): Likewise.
1605 Adjust all callers.
1606 Promote complain_at.
1607 * tests/input.at (Type Clashes): Adjust.
1608
16092002-06-20 Akim Demaille <akim@epita.fr>
1610
1611 * data/bison.simple (YYLEX): Fix the declaration when
1612 %pure-parser.
1613
16142002-06-20 Akim Demaille <akim@epita.fr>
1615
1616 * data/bison.simple (yysymprint): Don't print the token number,
1617 just its name.
1618 * tests/actions.at (Destructors): Rename as...
1619 (Printers and Destructors): this.
1620 Also exercise %printer.
1621
16222002-06-20 Akim Demaille <akim@epita.fr>
1623
1624 * data/bison.simple (YYDSYMPRINT): New.
1625 Use it to remove many of the #if YYDEBUG/if (yydebug).
1626
16272002-06-20 Akim Demaille <akim@epita.fr>
1628
1629 * src/symtab.h, src/symtab.c (symbol_t): printer and
1630 printer_location are new members.
1631 (symbol_printer_set): New.
1632 * src/parse-gram.y (PERCENT_PRINTER): New token.
1633 Handle its associated rule.
1634 * src/scan-gram.l: Adjust.
1635 (handle_destructor_at, handle_destructor_dollar): Rename as...
1636 (handle_symbol_code_at, handle_symbol_code_dollar): these.
1637 * src/output.c (symbol_printers_output): New.
1638 (output_skeleton): Call it.
1639 * data/bison.simple (yysymprint): New. Cannot be named yyprint
1640 since there are already many grammar files with a user `yyprint'.
1641 Replace the calls to YYPRINT to calls to yysymprint.
1642 * tests/calc.at: Adjust.
1643 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
1644 taking advantage of parser very internal details (stack size!).
1645
16462002-06-20 Akim Demaille <akim@epita.fr>
1647
1648 * src/scan-gram.l: Complete the scanner with the missing patterns
1649 to pacify Flex.
1650 Use `quote' and `symbol_tag_get' where appropriate.
1651
16522002-06-19 Akim Demaille <akim@epita.fr>
1653
1654 * tests/actions.at (Destructors): Augment to test locations.
1655 * data/bison.simple (yydestructor): Pass it the current location
1656 if locations are enabled.
1657 Prototype only when __STDC__ or C++.
1658 Change the argument names to move into the yy name space: there is
1659 user code here.
1660
16612002-06-19 Akim Demaille <akim@epita.fr>
1662
1663 * data/bison.simple (b4_pure_if): New.
1664 Use it instead of #ifdef YYPURE.
1665
16662002-06-19 Akim Demaille <akim@epita.fr>
1667
1668 * data/bison.simple (b4_location_if): New.
1669 Use it instead of #ifdef YYLSP_NEEDED.
1670
16712002-06-19 Akim Demaille <akim@epita.fr>
1672
1673 Prepare @$ in %destructor, but currently don't bind it in the
1674 skeleton, as %location use is not cleaned up yet.
1675
1676 * src/scan-gram.l (handle_dollar, handle_destructor_at)
1677 (handle_action_at): New.
1678 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
1679 a braced_code_t and a location as additional arguments.
1680 (handle_destructor_dollar): Instead of requiring `b4_eval', just
1681 unquote one when outputting `b4_dollar_dollar'.
1682 Adjust callers.
1683 * data/bison.simple (b4_eval): Remove.
1684 (b4_symbol_destructor): Adjust.
1685 * tests/input.at (Invalid @n): Adjust.
1686
16872002-06-19 Zack Weinberg <zack@codesourcery.com>
1688
1689 * doc/bison.texinfo: Document ability to have multiple
1690 prologue sections.
1691
16922002-06-18 Akim Demaille <akim@epita.fr>
1693
1694 * src/files.c (compute_base_names): When computing the output file
1695 names from the input file name, strip the directory part.
1696
16972002-06-18 Akim Demaille <akim@epita.fr>
1698
1699 * data/bison.simple.new: Comment changes.
1700 Reported by Andreas Schwab.
1701
17022002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
1703
1704 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
1705 there are no `label `yyoverflowlab' defined but not used' warnings
1706 when yyoverflow is defined.
1707
17082002-06-18 Akim Demaille <akim@epita.fr>
1709
1710 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
1711 new member.
1712 (symbol_destructor_set): Adjust.
1713 * src/output.c (symbol_destructors_output): Output the destructor
1714 locations.
1715 Output the symbol name.
1716 * data/bison.simple (b4_symbol_destructor): Adjust.
1717
17182002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
1719 and Akim Demaille <akim@epita.fr>
1720
1721 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
1722 what's left on the stack when the error recovery hits EOF.
1723 * tests/actions.at (Destructors): Complete to exercise this case.
1724
17252002-06-17 Akim Demaille <akim@epita.fr>
1726
1727 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
1728 arguments is really empty, not only equal to `[]'.
1729 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
1730 member.
1731 (symbol_destructor_set): New.
1732 * src/output.c (symbol_destructors_output): New.
1733 * src/reader.h (brace_code_t, current_braced_code): New.
1734 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
1735 (handle_dollar): Rename as...
1736 (handle_action_dollar): this.
1737 (handle_destructor_dollar): New.
1738 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
1739 (grammar_declaration): Use it.
1740 * data/bison.simple (yystos): Is always defined.
1741 (yydestructor): New.
1742 * tests/actions.at (Destructors): New.
1743 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
1744
17452002-06-17 Akim Demaille <akim@epita.fr>
1746
1747 * src/symlist.h, src/symlist.c (symbol_list_length): New.
1748 * src/scan-gram.l (handle_dollar, handle_at): Compute the
1749 rule_length only when needed.
1750 * src/output.c (actions_output, token_definitions_output): Output
1751 the full M4 block.
1752 * src/symtab.c: Don't access directly to the symbol tag, use
1753 symbol_tag_get.
1754 * src/parse-gram.y: Use symbol_list_free.
1755
17562002-06-17 Akim Demaille <akim@epita.fr>
1757
1758 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
1759 (symbol_list_prepend, get_type_name): Move to...
1760 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
1761 (symbol_list_prepend, symbol_list_n_type_name_get): here.
1762 Adjust all callers.
1763 (symbol_list_free): New.
1764 * src/scan-gram.l (handle_dollar): Takes a location.
1765 * tests/input.at (Invalid $n): Adjust.
1766
17672002-06-17 Akim Demaille <akim@epita.fr>
1768
1769 * src/reader.h, src/reader.c (symbol_list_new): Export it.
1770 (symbol_list_prepend): New.
1771 * src/parse-gram.y (%union): `list' is a new member.
1772 (symbols.1): New, replaces...
1773 (terms_to_prec.1, nterms_to_type.1): these.
1774 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
1775 Take a location as additional argument.
1776 Adjust all callers.
1777
17782002-06-15 Akim Demaille <akim@epita.fr>
1779
1780 * src/parse-gram.y: Move %token in the declaration section so that
1781 we don't depend upon CVS Bison.
1782
17832002-06-15 Akim Demaille <akim@epita.fr>
1784
1785 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
1786 * src/print.c (print_core): Use it.
1787
17882002-06-15 Akim Demaille <akim@epita.fr>
1789
1790 * src/conflicts.c (log_resolution): Accept the rule involved in
1791 the sr conflicts instead of the lookahead number that points to
1792 that rule.
1793 (flush_reduce): Accept the current lookahead vector as argument,
1794 instead of the index in LA.
1795 (resolve_sr_conflict): Accept the current number of lookahead
1796 bitset to consider for the STATE, instead of the index in LA.
1797 (set_conflicts): Adjust.
1798 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
1799
18002002-06-15 Akim Demaille <akim@epita.fr>
1801
1802 * src/state.h (state_t): Replace the `lookaheadsp' member, a
1803 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
1804 Adjust all dependencies.
1805 * src/lalr.c (initialize_lookaheads): Split into...
1806 (states_lookaheads_count, states_lookaheads_initialize): these.
1807 (lalr): Adjust.
1808
18092002-06-15 Akim Demaille <akim@epita.fr>
1810
1811 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
1812 out of...
1813 (grammar_rules_print): here.
1814 * src/reduce.c (reduce_output): Use it.
1815 * tests/reduce.at (Useless Rules, Reduced Automaton)
1816 (Underivable Rules): Adjust.
1817
18182002-06-15 Akim Demaille <akim@epita.fr>
1819
1820 Copy BYacc's nice way to report the grammar.
1821
1822 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
1823 New.
1824 Don't print the rules' location, it is confusing and useless.
1825 (rule_print): Use grammar_rhs_print.
1826 * src/print.c (print_grammar): Use grammar_rules_print.
1827
18282002-06-15 Akim Demaille <akim@epita.fr>
1829
1830 Complete and rationalize `useless thing' warnings.
1831
1832 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
1833 (symbol_tag_print): New.
1834 Use them everywhere in place of accessing directly the tag member.
1835 * src/gram.h, src/gram.c (rule_print): New.
1836 Use it where a rule used to be printed `by hand'.
1837 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
1838 (reduce_grammar_tables): Report the useless rules.
1839 (reduce_print): Useless things are a warning, not an error.
1840 Report it as such.
1841 * tests/reduce.at (Useless Nonterminals, Useless Rules):
1842 (Reduced Automaton, Underivable Rules): Adjust.
1843 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
1844 * tests/conflicts.at (Unresolved SR Conflicts)
1845 (Solved SR Conflicts): Adjust.
1846
18472002-06-15 Akim Demaille <akim@epita.fr>
1848
1849 Let symbols have a location.
1850
1851 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
1852 (getsym): Adjust.
1853 Adjust all callers.
1854 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
1855 Use location_t, not int.
1856 * src/symtab.c (symbol_check_defined): Take advantage of the
1857 location.
1858 * tests/regression.at (Invalid inputs): Adjust.
1859
18602002-06-15 Akim Demaille <akim@epita.fr>
1861
1862 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
1863 (input): Don't try to initialize yylloc here, do it in the
1864 scanner.
1865 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
1866 * src/gram.h (rule_t): Change line and action_line into location
1867 and action_location, of location_t type.
1868 Adjust all dependencies.
1869 * src/location.h, src/location.c (empty_location): New.
1870 * src/reader.h, src/reader.c (grammar_start_symbol_set)
1871 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
1872 (grammar_current_rule_symbol_append)
1873 (grammar_current_rule_action_append): Expect a location as argument.
1874 * src/reader.c (grammar_midrule_action): Adjust to attach an
1875 action's location as dummy symbol location.
1876 * src/symtab.h, src/symtab.c (startsymbol_location): New.
1877 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
1878 the line numbers.
1879
18802002-06-14 Akim Demaille <akim@epita.fr>
1881
1882 Grammar declarations may be found in the grammar section.
1883
1884 * src/parse-gram.y (rules_or_grammar_declaration): New.
1885 (declarations): Each declaration may end with a semicolon, not
1886 just...
1887 (grammar_declaration): `"%union"'.
1888 (grammar): Branch to rules_or_grammar_declaration.
1889
18902002-06-14 Akim Demaille <akim@epita.fr>
1891
1892 * src/main.c (main): Invoke scanner_free.
1893
18942002-06-14 Akim Demaille <akim@epita.fr>
1895
1896 * src/output.c (m4_invoke): Extracted from...
1897 (output_skeleton): here.
1898 Free tempfile.
1899
19002002-06-14 Akim Demaille <akim@epita.fr>
1901
1902 * src/parse-gram.y (directives, directive, gram)
1903 (grammar_directives, precedence_directives, precedence_directive):
1904 Rename as...
1905 (declarations, declaration, grammar, grammar_declaration)
1906 (precedence_declaration, precedence_declarator): these.
1907 (symbol_declaration): New.
1908
19092002-06-14 Akim Demaille <akim@epita.fr>
1910
1911 * src/files.c (action_obstack): Remove, unused.
1912 (output_obstack): Remove it, and all its dependencies, as it is no
1913 longer needed.
1914 * src/reader.c (epilogue_set): Build the epilogue in the
1915 muscle_obstack.
1916 * src/output.h, src/output.c (muscle_obstack): Move to...
1917 * src/muscle_tab.h, src/muscle_tab.h: here.
1918 (muscle_init): Initialize muscle_obstack.
1919 (muscle_free): New.
1920 * src/main.c (main): Call it.
1921
19222002-06-14 Akim Demaille <akim@epita.fr>
1923
1924 * src/location.h: New, extracted from...
1925 * src/reader.h: here.
1926 * src/Makefile.am (noinst_HEADERS): Merge into
1927 (bison_SOURCES): this.
1928 Add location.h.
1929 * src/parse-gram.y: Use location_t instead of Bison's.
1930 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
1931 Use location_t instead of ints.
1932
19332002-06-14 Akim Demaille <akim@epita.fr>
1934
1935 * data/bison.simple, data/bison.c++: Be sure to restore the
1936 current #line when returning to the skeleton contents after having
1937 exposed the input file's #line.
1938
19392002-06-12 Akim Demaille <akim@epita.fr>
1940
1941 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
1942 eager.
1943 * tests/actions.at (Exotic Dollars): New.
1944
19452002-06-12 Akim Demaille <akim@epita.fr>
1946
1947 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
1948 ['"/] too eagerly.
1949 * tests/input.at (Torturing the Scanner): New.
1950
19512002-06-11 Akim Demaille <akim@epita.fr>
1952
1953 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
1954 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
1955 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
1956 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
1957 * src/reader.c (reader): Use it.
1958
19592002-06-11 Akim Demaille <akim@epita.fr>
1960
1961 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
1962 Adjust all callers.
1963 (scanner_last_string_free): New.
1964
19652002-06-11 Akim Demaille <akim@epita.fr>
1966
1967 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
1968 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
1969 (last_string, YY_OBS_FREE): New.
1970 Use them when returning an ID.
1971
19722002-06-11 Akim Demaille <akim@epita.fr>
1973
1974 Have Bison grammars parsed by a Bison grammar.
1975
1976 * src/reader.c, src/reader.h (prologue_augment): New.
1977 * src/reader.c (copy_definition): Remove.
1978
1979 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
1980 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
1981 (grammar_current_rule_prec_set, grammar_current_rule_check)
1982 (grammar_current_rule_symbol_append)
1983 (grammar_current_rule_action_append): Export.
1984 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
1985 (symbol_list_action_append): Remove.
1986 Hook the routines from reader.
1987 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
1988 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
1989
1990 * src/reader.c (read_declarations): Remove, unused.
1991
1992 * src/parse-gram.y: Handle the epilogue.
1993 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
1994 (grammar_start_symbol_set): this.
1995 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
1996 * src/reader.c (readgram): Remove, unused.
1997 (reader): Adjust to insert eoftoken and axiom where appropriate.
1998
1999 * src/reader.c (copy_dollar): Replace with...
2000 * src/scan-gram.h (handle_dollar): this.
2001 * src/parse-gram.y: Remove `%thong'.
2002
2003 * src/reader.c (copy_at): Replace with...
2004 * src/scan-gram.h (handle_at): this.
2005
2006 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
2007 New.
2008
2009 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
2010 time being.
2011
2012 * src/reader.h, src/reader.c (grammar_rule_end): New.
2013
2014 * src/parse.y (current_type, current_class): New.
2015 Implement `%nterm', `%token' support.
2016 Merge `%term' into `%token'.
2017 (string_as_id): New.
2018 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
2019 type name.
2020
2021 * src/parse-gram.y: Be sure to handle properly the beginning of
2022 rules.
2023
2024 * src/parse-gram.y: Handle %type.
2025 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
2026
2027 * src/parse-gram.y: More directives support.
2028 * src/options.c: No longer handle source directives.
2029
2030 * src/parse-gram.y: Fix %output.
2031
2032 * src/parse-gram.y: Handle %union.
2033 Use the prologue locations.
2034 * src/reader.c (parse_union_decl): Remove.
2035
2036 * src/reader.h, src/reader.c (epilogue_set): New.
2037 * src/parse-gram.y: Use it.
2038
2039 * data/bison.simple, data/bison.c++: b4_stype is now either not
2040 defined, then default to int, or to the contents of %union,
2041 without `union' itself.
2042 Adjust.
2043 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
2044
2045 * src/output.c (actions_output): Don't output braces, as they are
2046 already handled by the scanner.
2047
2048 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
2049 characters to themselves.
2050
2051 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
2052 that the epilogue has a proper #line.
2053
2054 * src/parse-gram.y: Handle precedence/associativity.
2055
2056 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
2057 a terminal.
2058 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
2059 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
2060 at all to define terminals that cannot be emitted.
2061
2062 * src/scan-gram.l: Escape M4 characters.
2063
2064 * src/scan-gram.l: Working properly with escapes in user
2065 strings/characters.
2066
2067 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
2068 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
2069 grammar.
2070 Use more modest sizes, as for the time being the parser does not
2071 release memory, and therefore the process swallows a huge amount
2072 of memory.
2073
2074 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
2075 stricter %token grammar.
2076
2077 * src/symtab.h (associativity): Add `undef_assoc'.
2078 (symbol_precedence_set): Do nothing when passed an undef_assoc.
2079 * src/symtab.c (symbol_check_alias_consistence): Adjust.
2080
2081 * tests/regression.at (Invalid %directive): Remove, as it is now
2082 meaningless.
2083 (Invalid inputs): Adjust to the new error messages.
2084 (Token definitions): The new grammar doesn't allow too many
2085 eccentricities.
2086
2087 * src/lex.h, src/lex.c: Remove.
2088 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
2089 (copy_character, copy_string2, copy_string, copy_identifier)
2090 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
2091 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
2092 (parse_action): Remove.
2093 * po/POTFILES.in: Adjust.
2094
20952002-06-11 Akim Demaille <akim@epita.fr>
2096
2097 * src/reader.c (parse_action): Don't store directly into the
2098 rule's action member: return the action as a string.
2099 Don't require `rule_length' as an argument: compute it.
2100 (grammar_current_rule_symbol_append)
2101 (grammar_current_rule_action_append): New, eved out from
2102 (readgram): here.
2103 Remove `action_flag', `rulelength', unused now.
2104
21052002-06-11 Akim Demaille <akim@epita.fr>
2106
2107 * src/reader.c (grammar_current_rule_prec_set).
2108 (grammar_current_rule_check): New, eved out from...
2109 (readgram): here.
2110 Remove `xaction', `first_rhs': useless.
2111 * tests/input.at (Type clashes): New.
2112 * tests/existing.at (GNU Cim Grammar): Adjust.
2113
21142002-06-11 Akim Demaille <akim@epita.fr>
2115
2116 * src/reader.c (grammar_midrule_action): New, Eved out from
2117 (readgram): here.
2118
21192002-06-11 Akim Demaille <akim@epita.fr>
2120
2121 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
2122 New.
2123 (readgram): Use them as replacement of inlined code, crule and
2124 crule1.
2125
21262002-06-11 Akim Demaille <akim@epita.fr>
2127
2128 * src/reader.c (grammar_end, grammar_symbol_append): New.
2129 (readgram): Use them.
2130 Make the use of `p' as local as possible.
2131
21322002-06-10 Akim Demaille <akim@epita.fr>
2133
2134 GCJ's parser requires the tokens to be defined before the prologue.
2135
2136 * data/bison.simple: Output the token definition before the user's
2137 prologue.
2138 * tests/regression.at (Braces parsing, Duplicate string)
2139 (Mixing %token styles): Check the output from bison.
2140 (Early token definitions): New.
2141
21422002-06-10 Akim Demaille <akim@epita.fr>
2143
2144 * src/symtab.c (symbol_user_token_number_set): Don't complain when
2145 assigning twice the same user number to a token, so that we can
2146 use it in...
2147 * src/lex.c (lex): here.
2148 Also use `symbol_class_set' instead of hand written code.
2149 * src/reader.c (parse_assoc_decl): Likewise.
2150
21512002-06-10 Akim Demaille <akim@epita.fr>
2152
2153 * src/symtab.c, src/symtab.c (symbol_class_set)
2154 (symbol_user_token_number_set): New.
2155 * src/reader.c (parse_token_decl): Use them.
2156 Use a switch instead of ifs.
2157 Use a single argument.
2158
21592002-06-10 Akim Demaille <akim@epita.fr>
2160
2161 Remove `%thong' support as it is undocumented, unused, duplicates
2162 `%token's job, and creates useless e-mail traffic with people who
2163 want to know what it is, why it is undocumented, unused, and
2164 duplicates `%token's job.
2165
2166 * src/reader.c (parse_thong_decl): Remove.
2167 * src/options.c (option_table): Remove "thong".
2168 * src/lex.h (tok_thong): Remove.
2169
21702002-06-10 Akim Demaille <akim@epita.fr>
2171
2172 * src/symtab.c, src/symtab.c (symbol_type_set)
2173 (symbol_precedence_set): New.
2174 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
2175 (value_components_used): Remove, unused.
2176
21772002-06-09 Akim Demaille <akim@epita.fr>
2178
2179 Move symbols handling code out of the reader.
2180
2181 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
2182 (axiom): Move to...
2183 * src/symtab.h, src/symtab.c: here.
2184
2185 * src/gram.c (start_symbol): Remove: use startsymbol->number.
2186 * src/reader.c (startval): Rename as...
2187 * src/symtab.h, src/symtab.c (startsymbol): this.
2188 * src/reader.c: Adjust.
2189
2190 * src/reader.c (symbol_check_defined, symbol_make_alias)
2191 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
2192 (token_translations_init)
2193 Move to...
2194 * src/symtab.c: here.
2195 * src/reader.c (packsymbols): Move to...
2196 * src/symtab.h, src/symtab.c (symbols_pack): here.
2197 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
2198 argument.
2199
22002002-06-03 Akim Demaille <akim@epita.fr>
2201
2202 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
2203 then statements.
2204
22052002-06-03 Akim Demaille <akim@epita.fr>
2206
2207 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
2208 structs with non literals.
2209 * src/scan-skel.l: never-interactive.
2210 * src/conflicts.c (enum conflict_resolution_e): No trailing
2211 comma.
2212 * src/getargs.c (usage): Split long literal strings.
2213 Reported by Hans Aberg.
2214
22152002-05-28 Akim Demaille <akim@epita.fr>
2216
2217 * data/bison.c++: Use C++ ostreams.
2218 (cdebug_): New member.
2219
22202002-05-28 Akim Demaille <akim@epita.fr>
2221
2222 * src/output.c (output_skeleton): Be sure to allocate enough room
2223 for `/' _and_ for `\0' in full_skeleton.
2224
22252002-05-28 Akim Demaille <akim@epita.fr>
2226
2227 * data/bison.c++: Catch up with bison.simple:
2228 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2229 and Paul Eggert <eggert@twinsun.com>: `error' handing.
2230 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
2231 and popping traces.
2232
22332002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2234
2235 * src/output.c (output_skeleton): Put an explicit path in front of
2236 the skeleton file name, rather than relying on the -I directory,
2237 to partially alleviate effects of having a skeleton file lying around
2238 in the current directory.
2239
22402002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2241
2242 * src/conflicts.c (log_resolution): Correct typo:
2243 obstack_printf should be obstack_fgrow1.
2244
22452002-05-26 Akim Demaille <akim@epita.fr>
2246
2247 * src/state.h (state_t): `solved_conflicts' is a new member.
2248 * src/LR0.c (new_state): Set it to 0.
2249 * src/conflicts.h, src/conflicts.c (print_conflicts)
2250 (free_conflicts, solve_conflicts): Rename as...
2251 (conflicts_print, conflicts_free, conflicts_solve): these.
2252 Adjust callers.
2253 * src/conflicts.c (enum conflict_resolution_e)
2254 (solved_conflicts_obstack): New, used by...
2255 (log_resolution): this.
2256 Adjust to attach the conflict resolution to each state.
2257 Complete the description with the precedence/associativity
2258 information.
2259 (resolve_sr_conflict): Adjust.
2260 * src/print.c (print_state): Output its solved_conflicts.
2261 * tests/conflicts.at (Unresolved SR Conflicts)
2262 (Solved SR Conflicts): Exercise --report=all.
2263
22642002-05-26 Akim Demaille <akim@epita.fr>
2265
2266 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
2267 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
2268 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
2269 (token_number_t, item_number_as_token_number)
2270 (token_number_as_item_number, muscle_insert_token_number_table):
2271 Rename as...
2272 (symbol_number_t, item_number_as_symbol_number)
2273 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
2274 these, since it is more appropriate.
2275
22762002-05-26 Akim Demaille <akim@epita.fr>
2277
2278 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
2279 `Error:' lines.
2280 * data/bison.simple (yystos) [YYDEBUG]: New.
2281 (yyparse) [YYDEBUG]: Display the symbols which are popped during
2282 error recovery.
2283 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
2284
22852002-05-25 Akim Demaille <akim@epita.fr>
2286
2287 * doc/bison.texinfo (Debugging): Split into...
2288 (Tracing): this new section, its former contents, and...
2289 (Understanding): this new section.
2290 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
2291 by...
2292 (report_flag): this.
2293 Adjust all dependencies.
2294 (report_args, report_types, report_argmatch): New.
2295 (usage, getargs): Report/support -r, --report.
2296 * src/options.h
2297 (struct option_table_struct): Rename as..,
2298 (struct option_table_s): this.
2299 Rename the `set_flag' member to `flag' to match with getopt_long's
2300 struct.
2301 * src/options.c (option_table): Split verbose into an entry for
2302 %verbose, and another for --verbose.
2303 Support --report/-r, so remove -r from the obsolete --raw.
2304 * src/print.c: Attach full item sets and lookaheads reports to
2305 report_flag instead of trace_flag.
2306 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
2307
23082002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2309 and Paul Eggert <eggert@twinsun.com>
2310
2311 * data/bison.simple (yyparse): Correct error handling to conform to
2312 POSIX and yacc. Specifically, after syntax error is discovered,
2313 do not reduce further before shifting the error token.
2314 Clean up the code a bit by removing the labels yyerrdefault,
2315 yyerrhandle, yyerrpop.
2316 * NEWS: Document the above.
2317
23182002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2319
2320 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
2321 type; it isn't always big enough, since it doesn't necessarily
2322 include non-terminals.
2323 (yytranslate): Expand definition of yy_token_number_type, so that
2324 the latter can be removed.
2325 (yy_token_number_type): Remove, only one use.
2326 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
2327 don't use TokenNumberType as element type.
2328
2329 * tests/regression.at: Modify expected output to agree with change
2330 to yyr1 and yytranslate.
2331
23322002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
2333
2334 * src/reader.c (parse_action): Use copy_character instead of
2335 obstack_1grow.
2336
23372002-05-13 Akim Demaille <akim@epita.fr>
2338
2339 * tests/regression.at (Token definitions): Prototype yylex and
2340 yyerror.
2341
23422002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2343
2344 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
2345 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
2346 32-bit arithmetic.
2347 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
2348
23492002-05-07 Akim Demaille <akim@epita.fr>
2350
2351 * tests/synclines.at: Be sure to prototype yylex and yyerror to
2352 avoid GCC warnings.
2353
23542002-05-07 Akim Demaille <akim@epita.fr>
2355
2356 Kill GCC warnings.
2357
2358 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
2359 over the RHS of each rule.
2360 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
2361 * src/state.h (state_t): Member `nitems' is unsigned short.
2362 * src/LR0.c (get_state): Adjust.
2363 * src/reader.c (packgram): Likewise.
2364 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
2365 `Type'.
2366 (muscle_insert_int_table): Remove, unused.
2367 (prepare_rules): Remove `max'.
2368
23692002-05-06 Akim Demaille <akim@epita.fr>
2370
2371 * src/closure.c (print_firsts): Display of the symbol tags.
2372 (bitmatrix_print): Move to...
2373 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
2374 here.
2375 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
2376
23772002-05-06 Akim Demaille <akim@epita.fr>
2378
2379 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
2380 hash_do_for_each.
2381
23822002-05-06 Akim Demaille <akim@epita.fr>
2383
2384 * src/LR0.c (new_state, get_state): Instead of using the global
2385 `kernel_size' and `kernel_base', have two new arguments:
2386 `core_size' and `core'.
2387 Adjust callers.
2388
23892002-05-06 Akim Demaille <akim@epita.fr>
2390
2391 * src/reader.c (packgram): No longer end `ritem' with a 0
2392 sentinel: it is not used.
2393
23942002-05-05 Akim Demaille <akim@epita.fr>
2395
2396 New experimental feature: display the lookaheads in the report and
2397 graph.
2398
2399 * src/print (print_core): When --trace-flag, display the rules
2400 lookaheads.
2401 * src/print_graph.c (print_core): Likewise.
2402 Swap the arguments.
2403 Adjust caller.
2404
24052002-05-05 Akim Demaille <akim@epita.fr>
2406
2407 * tests/torture.at (Many lookaheads): New test.
2408
24092002-05-05 Akim Demaille <akim@epita.fr>
2410
2411 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
2412 (GENERATE_MUSCLE_INSERT_TABLE): this.
2413 (output_int_table, output_unsigned_int_table, output_short_table)
2414 (output_token_number_table, output_item_number_table): Replace with...
2415 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
2416 (muscle_insert_short_table, muscle_insert_token_number_table)
2417 (muscle_insert_item_number_table): these.
2418 Adjust all callers.
2419 (prepare_tokens): Don't free `translations', since...
2420 * src/reader.h, src/reader.c (grammar_free): do it.
2421 Move to...
2422 * src/gram.h, src/gram.c (grammar_free): here.
2423 * data/bison.simple, data/bison.c++: b4_token_number_max is now
2424 b4_translate_max.
2425
24262002-05-05 Akim Demaille <akim@epita.fr>
2427
2428 * src/output.c (output_unsigned_int_table): New.
2429 (prepare_rules): `i' is unsigned.
2430 `prhs', `rline', `r2' are unsigned int.
2431 Rename muscle `rhs_number_max' as `rhs_max'.
2432 Output muscles `prhs_max', `rline_max', and `r2_max'.
2433 Free rline and r1.
2434 * data/bison.simple, data/bison.c++: Adjust to use these muscles
2435 to compute types instead of constant types.
2436 * tests/regression.at (Web2c Actions): Adjust.
2437
24382002-05-04 Akim Demaille <akim@epita.fr>
2439
2440 * src/symtab.h (SALIAS, SUNDEF): Rename as...
2441 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
2442 Adjust dependencies.
2443 * src/output.c (token_definitions_output): Be sure not to output a
2444 `#define 'a'' when fed with `%token 'a' "a"'.
2445 * tests/regression.at (Token definitions): New.
2446
24472002-05-03 Paul Eggert <eggert@twinsun.com>
2448
2449 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
2450 for K&R C.
2451
24522002-05-03 gettextize <bug-gnu-gettext@gnu.org>
2453
2454 * Makefile.am (SUBDIRS): Remove intl.
2455 (EXTRA_DIST): Add config/config.rpath.
2456
24572002-05-03 Akim Demaille <akim@epita.fr>
2458
2459 * data/bison.simple (m4_if): Don't output empty enums.
2460 And actually, output valid enum definitions :(.
2461
24622002-05-03 Akim Demaille <akim@epita.fr>
2463
2464 * configure.bat: Remove, completely obsolete.
2465 * Makefile.am (EXTRA_DIST): Adjust.
2466 Don't distribute config.rpath...
2467 * config/Makefile.am (EXTRA_DIST): Do it.
2468
24692002-05-03 Akim Demaille <akim@epita.fr>
2470
2471 * configure.in (GETTEXT_VERSION): New.
2472 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
2473
24742002-05-03 Akim Demaille <akim@epita.fr>
2475
2476 * data/bison.simple (b4_token_enum): New.
2477 (b4_token_defines): Use it to output tokens both as #define and
2478 enums.
2479 Suggested by Paul Eggert.
2480 * src/output.c (token_definitions_output): Don't output spurious
2481 white spaces.
2482
24832002-05-03 Akim Demaille <akim@epita.fr>
2484
2485 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
2486
24872002-05-02 Robert Anisko <robert@lrde.epita.fr>
2488
2489 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
2490 Update the stack class, give a try to deque as the default container.
2491
24922002-05-02 Akim Demaille <akim@epita.fr>
2493
2494 * data/bison.simple (yyparse): Do not implement @$ = @1.
2495 (YYLLOC_DEFAULT): Adjust to do it.
2496 * doc/bison.texinfo (Location Default Action): Fix.
2497
24982002-05-02 Akim Demaille <akim@epita.fr>
2499
2500 * src/reader.c (parse_braces): Merge into...
2501 (parse_action): this.
2502
25032002-05-02 Akim Demaille <akim@epita.fr>
2504
2505 * configure.in (ALL_LINGUAS): Remove.
2506 * po/LINGUAS, hr.po: New.
2507
25082002-05-02 Akim Demaille <akim@epita.fr>
2509
2510 Remove the so called hairy (semantic) parsers.
2511
2512 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
2513 * src/gram.h, src/gram.c (semantic_parser): Remove.
2514 (rule_t): Remove the guard and guard_line members.
2515 * src/lex.h (token_t): remove tok_guard.
2516 * src/options.c (option_table): Remove %guard and %semantic_parser
2517 support.
2518 * src/output.c, src/output.h (guards_output): Remove.
2519 (prepare): Adjust.
2520 (token_definitions_output): Don't output the `T'
2521 tokens (???).
2522 (output_skeleton): Don't output the guards.
2523 * src/files.c, src/files.c (attrsfile): Remove.
2524 * src/reader.c (symbol_list): Remove the guard and guard_line
2525 members.
2526 Adjust dependencies.
2527 (parse_guard): Remove.
2528 * data/bison.hairy: Remove.
2529 * doc/bison.texinfo (Environment Variables): Remove occurrences of
2530 BISON_HAIRY.
2531
25322002-05-02 Akim Demaille <akim@epita.fr>
2533
2534 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
2535 (parse_guard): Rename the formal argument `stack_offset' as
2536 `rule_length', which is more readable.
2537 Adjust callers.
2538 (copy_at, copy_dollar): Instead of outputting the hard coded
2539 values of $$, $n and so forth, output invocation to b4_lhs_value,
2540 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
2541 Note: this patch partially drops `semantic-parser' support: it
2542 always does `rule_length - n', where semantic parsers ought to
2543 always use `-n'.
2544 * data/bison.simple, data/bison.c++ (b4_lhs_value)
2545 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
2546
25472002-05-02 Akim Demaille <akim@epita.fr>
2548
2549 * configure.in (AC_INIT): Bump to 1.49b.
2550 (AM_INIT_AUTOMAKE): Short invocation.
2551
25522002-05-02 Akim Demaille <akim@epita.fr>
2553
2554 Version 1.49a.
2555
25562002-05-01 Akim Demaille <akim@epita.fr>
2557
2558 * src/skeleton.h: Remove.
2559
25602002-05-01 Akim Demaille <akim@epita.fr>
2561
2562 * src/skeleton.h: Fix the #endif.
2563 Reported by Magnus Fromreide.
2564
25652002-04-26 Paul Eggert <eggert@twinsun.com>
2566
2567 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
2568 Define if we define YYSTYPE and YYLTYPE, respectively.
2569 (YYCOPY): Fix [] quoting problem in the non-GCC case.
2570
25712002-04-25 Robert Anisko <robert@lrde.epita.fr>
2572
2573 * src/scan-skel.l: Postprocess quadrigraphs.
2574
2575 * src/reader.c (copy_character): New function, used to output
2576 single characters while replacing `[' and `]' with quadrigraphs, to
2577 avoid troubles with M4 quotes.
2578 (copy_comment): Output characters with copy_character.
2579 (read_additionnal_code): Likewise.
2580 (copy_string2): Likewise.
2581 (copy_definition): Likewise.
2582
2583 * tests/calc.at: Exercise M4 quoting.
2584
25852002-04-25 Akim Demaille <akim@epita.fr>
2586
2587 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
2588 between `!' and the command.
2589 Reported by Paul Eggert.
2590
25912002-04-24 Robert Anisko <robert@lrde.epita.fr>
2592
2593 * tests/calc.at: Exercise prologue splitting.
2594
2595 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
2596 `b4_post_prologue' instead of `b4_prologue'.
2597
2598 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
2599 muscles.
2600 (output): Free pre_prologue_obstack and post_prologue_obstack.
2601 * src/files.h, src/files.c (attrs_obstack): Remove.
2602 (pre_prologue_obstack, post_prologue_obstack): New.
2603 * src/reader.c (copy_definition): Add a parameter to specify the
2604 obstack to fill, instead of using attrs_obstack unconditionally.
2605 (read_declarations): Pass pre_prologue_obstack to copy_definition if
2606 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
2607
26082002-04-23 Paul Eggert <eggert@twinsun.com>
2609
2610 * data/bison.simple: Remove unnecessary commentary and white
2611 space differences from 1_29-branch.
2612 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
2613
2614 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
2615 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
2616 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
2617 constructors or destructors.
2618
2619 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
2620
26212002-04-23 Akim Demaille <akim@epita.fr>
2622
2623 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
2624 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
2625 location with columns.
2626 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
2627 All reported by Paul Eggert.
2628
26292002-04-22 Akim Demaille <akim@epita.fr>
2630
2631 * src/reduce.c (dump_grammar): Move to...
2632 * src/gram.h, src/gram.c (grammar_dump): here.
2633 Be sure to separate long item numbers.
2634 Don't read the members of a rule's prec if its nil.
2635
26362002-04-22 Akim Demaille <akim@epita.fr>
2637
2638 * src/output.c (table_size, table_grow): New.
2639 (MAXTABLE): Remove, replace uses with table_size.
2640 (pack_vector): Instead of dying when the table is too big, grow it.
2641
26422002-04-22 Akim Demaille <akim@epita.fr>
2643
2644 * data/bison.simple (yyr1): Its type is that of a token number.
2645 * data/bison.c++ (r1_): Likewise.
2646 * tests/regression.at (Web2c Actions): Adjust.
2647
26482002-04-22 Akim Demaille <akim@epita.fr>
2649
2650 * src/reader.c (token_translations_init): 256 is now the default
2651 value for the error token, i.e., it will be assigned another
2652 number if the user assigned 256 to one of her tokens.
2653 (reader): Don't force 256 to error.
2654 * doc/bison.texinfo (Symbols): Adjust.
2655 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
2656 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
2657 etc. instead of 10, 20, 30 (which was used to `jump' over error
2658 (256) and undefined (2)).
2659
26602002-04-22 Akim Demaille <akim@epita.fr>
2661
2662 Propagate more token_number_t.
2663
2664 * src/gram.h (token_number_as_item_number)
2665 (item_number_as_token_number): New.
2666 * src/output.c (GENERATE_OUTPUT_TABLE): New.
2667 Use it to create output_item_number_table and
2668 output_token_number_table.
2669 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
2670 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
2671 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
2672 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
2673
26742002-04-22 Akim Demaille <akim@epita.fr>
2675
2676 * src/output.h, src/output.c (get_lines_number): Remove.
2677
26782002-04-19 Akim Demaille <akim@epita.fr>
2679
2680 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
2681 as Lex/Flex'.
2682 (Debugging): More details about enabling the debugging features.
2683 (Table of Symbols): Describe $$, $n, @$, and @n.
2684 Suggested by Tim Josling.
2685
26862002-04-19 Akim Demaille <akim@epita.fr>
2687
2688 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
2689
26902002-04-10 Akim Demaille <akim@epita.fr>
2691
2692 * src/system.h: Rely on HAVE_LIMITS_H.
2693 Suggested by Paul Eggert.
2694
26952002-04-09 Akim Demaille <akim@epita.fr>
2696
2697 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
2698 full stderr, and strip it according to the bison options, instead
2699 of composing the error message from different bits.
2700 This makes it easier to check for several error messages.
2701 Adjust all the invocations.
2702 Add an invocation exercising the error token.
2703 Add an invocation demonstrating a stupid error message.
2704 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
2705 Adjust the tests.
2706 Error message are for stderr, not stdout.
2707
27082002-04-09 Akim Demaille <akim@epita.fr>
2709
2710 * src/gram.h, src/gram.c (error_token_number): Remove, use
2711 errtoken->number.
2712 * src/reader.c (reader): Don't specify the user token number (2)
2713 for $undefined, as it uselessly prevents using it.
2714 * src/gram.h (token_number_t): Move to...
2715 * src/symtab.h: here.
2716 (state_t.number): Is a token_number_t.
2717 * src/print.c, src/reader.c: Use undeftoken->number instead of
2718 hard coded 2.
2719 (Even though this 2 is not the same as above: the number of the
2720 undeftoken remains being 2, it is its user token number which
2721 might not be 2).
2722 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
2723 `user_token_number_max'.
2724 Output `undef_token_number'.
2725 * data/bison.simple, data/bison.c++: Use them.
2726 Be sure to map invalid yylex return values to
2727 `undef_token_number'. This saves us from gratuitous SEGV.
2728
2729 * tests/conflicts.at (Solved SR Conflicts)
2730 (Unresolved SR Conflicts): Adjust.
2731 * tests/regression.at (Web2c Actions): Adjust.
2732
27332002-04-08 Akim Demaille <akim@epita.fr>
2734
2735 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
2736 Adding #line.
2737 Remove the duplicate `typedefs'.
2738 (RhsNumberType): Fix the declaration and various other typos.
2739 Use __ofile__.
2740 * data/bison.simple: Use __ofile__.
2741 * src/scan-skel.l: Handle __ofile__.
2742
27432002-04-08 Akim Demaille <akim@epita.fr>
2744
2745 * src/gram.h (item_number_t): New, the type of item numbers in
2746 RITEM. Note that it must be able to code symbol numbers as
2747 positive number, and the negation of rule numbers as negative
2748 numbers.
2749 Adjust all dependencies (pretty many).
2750 * src/reduce.c (rule): Remove this `short *' pointer: use
2751 item_number_t.
2752 * src/system.h (MINSHORT, MAXSHORT): Remove.
2753 Include `limits.h'.
2754 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
2755 (shortcpy): Remove.
2756 (MAXTABLE): Move to...
2757 * src/output.c (MAXTABLE): here.
2758 (prepare_rules): Use output_int_table to output rhs.
2759 * data/bison.simple, data/bison.c++: Adjust.
2760 * tests/torture.at (Big triangle): Move the limit from 254 to
2761 500.
2762 * tests/regression.at (Web2c Actions): Ajust.
2763
2764 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
2765 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
2766 passes, but produces negative #line number, once fixed, GCC is
2767 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
2768 C), it passes.
2769 * src/state.h (state_h): Code input lines on ints, not shorts.
2770
27712002-04-08 Akim Demaille <akim@epita.fr>
2772
2773 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
2774 and then the grammar.
2775
27762002-04-08 Akim Demaille <akim@epita.fr>
2777
2778 * src/system.h: No longer using strndup.
2779
27802002-04-07 Akim Demaille <akim@epita.fr>
2781
2782 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
2783 * src/output.c (output_table_data): Return the longest number.
2784 (prepare_tokens): Output `token_number_max').
2785 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
2786 New.
2787 Use them to define yy_token_number_type/TokenNumberType.
2788 Use this type for yytranslate.
2789 * tests/torture.at (Big triangle): Push the limit from 124 to
2790 253.
2791 * tests/regression.at (Web2c Actions): Adjust.
2792
27932002-04-07 Akim Demaille <akim@epita.fr>
2794
2795 * tests/torture.at (Big triangle): New.
2796 (GNU AWK Grammar, GNU Cim Grammar): Move to...
2797 * tests/existing.at: here.
2798
27992002-04-07 Akim Demaille <akim@epita.fr>
2800
2801 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
2802 nritems.
2803 Adjust dependencies.
2804
28052002-04-07 Akim Demaille <akim@epita.fr>
2806
2807 * src/reader.c: Normalize increments to prefix form.
2808
28092002-04-07 Akim Demaille <akim@epita.fr>
2810
2811 * src/reader.c, symtab.c: Remove debugging code.
2812
28132002-04-07 Akim Demaille <akim@epita.fr>
2814
2815 Rename all the `bucket's as `symbol_t'.
2816
2817 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
2818 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
2819 * src/symtab.c, src/symtab.h (bucket): Rename as...
2820 (symbol_t): this.
2821 (symbol_list_new, bucket_check_defined, bucket_make_alias)
2822 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
2823 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
2824 (buckets_new, buckets_free, buckets_do): Rename as...
2825 (symbol_list_new, symbol_check_defined, symbol_make_alias)
2826 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
2827 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
2828 (symbols_new, symbols_free, symbols_do): these.
2829
28302002-04-07 Akim Demaille <akim@epita.fr>
2831
2832 Use lib/hash for the symbol table.
2833
2834 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
2835 EOF.
2836 * src/lex.c (lex): Set the `number' member of new terminals.
2837 * src/reader.c (bucket_check_defined, bucket_make_alias)
2838 (bucket_check_alias_consistence, bucket_translation): New.
2839 (reader, grammar_free, readgram, token_translations_init)
2840 (packsymbols): Adjust.
2841 (reader): Number the predefined tokens.
2842 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
2843 for predefined tokens.
2844 * src/symtab.h (bucket): Remove all the hash table related
2845 members.
2846 * src/symtab.c (symtab): Replace by...
2847 (bucket_table): this.
2848 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
2849 (buckets_new, buckets_do): New.
2850
28512002-04-07 Akim Demaille <akim@epita.fr>
2852
2853 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
2854 (start_symbol, max_user_token_number, semantic_parser)
2855 (error_token_number): Initialize.
2856 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
2857 Initialize.
2858 (reader): Don't.
2859 (errtoken, eoftoken, undeftoken, axiom): Extern.
2860
28612002-04-07 Akim Demaille <akim@epita.fr>
2862
2863 * src/gram.h (rule_s): prec and precsym are now pointers
2864 to the bucket giving the priority/associativity.
2865 Member `associativity' removed: useless.
2866 * src/reduce.c, src/conflicts.c: Adjust.
2867
28682002-04-07 Akim Demaille <akim@epita.fr>
2869
2870 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
2871 Properly escape the symbols' TAG when outputting them.
2872
28732002-04-07 Akim Demaille <akim@epita.fr>
2874
2875 * src/lalr.h (LA): Is a bitsetv, not bitset*.
2876
28772002-04-07 Akim Demaille <akim@epita.fr>
2878
2879 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
2880 (LArule): this, which is an array to rule_t*.
2881 * src/print.c, src/conflicts.c: Adjust.
2882
28832002-04-07 Akim Demaille <akim@epita.fr>
2884
2885 * src/gram.h (rule_t): Rename `number' as `user_number'.
2886 `number' is a new member.
2887 Adjust dependencies.
2888 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
2889
28902002-04-07 Akim Demaille <akim@epita.fr>
2891
2892 As a result of the previous patch, it is no longer needed
2893 to reorder ritem itself.
2894
2895 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
2896
28972002-04-07 Akim Demaille <akim@epita.fr>
2898
2899 Be sure never to walk through RITEMS, but use only data related to
2900 the rules themselves. RITEMS should be banished.
2901
2902 * src/output.c (output_token_translations): Rename as...
2903 (prepare_tokens): this.
2904 In addition to `translate', prepare the muscles `tname' and
2905 `toknum', which were handled by...
2906 (output_rule_data): this.
2907 Remove, and move the remainder of its outputs into...
2908 (prepare_rules): this new routines, which also merges content from
2909 (output_gram): this.
2910 (prepare_rules): Be sure never to walk through RITEMS.
2911 (output_stos): Rename as...
2912 (prepare_stos): this.
2913 (output): Always invoke prepare_states, after all, just don't use it
2914 in the output if you don't need it.
2915
29162002-04-07 Akim Demaille <akim@epita.fr>
2917
2918 * src/LR0.c (new_state): Display `nstates' as the name of the
2919 newly created state.
2920 Adjust to initialize first_state and last_state if needed.
2921 Be sure to distinguish the initial from the final state.
2922 (new_states): Create the itemset of the initial state, and use
2923 new_state.
2924 * src/closure.c (closure): Now that the initial state has its
2925 items properly set, there is no need for a special case when
2926 creating `ruleset'.
2927
2928 As a result, now the rule 0, reducing to $axiom, is visible in the
2929 outputs. Adjust the test suite.
2930
2931 * tests/conflicts.at (Solved SR Conflicts)
2932 (Unresolved SR Conflicts): Adjust.
2933 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
2934 * tests/conflicts.at (S/R in initial): New.
2935
29362002-04-07 Akim Demaille <akim@epita.fr>
2937
2938 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
2939 the RHS of the rules.
2940 * src/output.c (output_gram): Likewise.
2941
29422002-04-07 Akim Demaille <akim@epita.fr>
2943
2944 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
2945 bucket.
2946 Adjust all dependencies.
2947 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
2948 `number' of the buckets too.
2949 * src/gram.h: Include `symtab.h'.
2950 (associativity): Move to...
2951 * src/symtab.h: here.
2952 No longer include `gram.h'.
2953
29542002-04-07 Akim Demaille <akim@epita.fr>
2955
2956 * src/gram.h, src/gram.c (rules_rhs_length): New.
2957 (ritem_longest_rhs): Use it.
2958 * src/gram.h (rule_t): `number' is a new member.
2959 * src/reader.c (packgram): Set it.
2960 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
2961 the end of `rules', and count them out of `nrules'.
2962 (reduce_output, dump_grammar): Adjust.
2963 * src/print.c (print_grammar): It is no longer needed to check for
2964 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
2965 * tests/reduce.at (Reduced Automaton): New test.
2966
29672002-04-07 Akim Demaille <akim@epita.fr>
2968
2969 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
2970 lacking `+ 1' to nrules, Bison reported as useless a token if it
2971 was used solely to set the precedence of the last rule...
2972
29732002-04-07 Akim Demaille <akim@epita.fr>
2974
2975 * data/bison.c++, data/bison.simple: Don't output the current file
2976 name in #line, to avoid useless diffs between two identical
2977 outputs under different names.
2978
29792002-04-07 Akim Demaille <akim@epita.fr>
2980
2981 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
2982 Normalize loops to using `< nrules + 1', not `<= nrules'.
2983
29842002-04-07 Akim Demaille <akim@epita.fr>
2985
2986 * TODO: Update.
2987
29882002-04-07 Akim Demaille <akim@epita.fr>
2989
2990 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
2991 bucket.value as bucket.number.
2992
29932002-04-07 Akim Demaille <akim@epita.fr>
2994
2995 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
2996 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
2997 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
2998 RHS, instead of being an index in RITEMS.
2999
30002002-04-04 Paul Eggert <eggert@twinsun.com>
3001
3002 * doc/bison.texinfo: Update copyright date.
3003 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
3004 (Symbols): Warn about running Bison in one character set,
3005 but compiling and/or running in an incompatible one.
3006 Warn about character code 256, too.
3007
30082002-04-03 Paul Eggert <eggert@twinsun.com>
3009
3010 * src/bison.data (YYSTACK_ALLOC): Depend on whether
3011 YYERROR_VERBOSE is nonzero, not whether it is defined.
3012
3013 Merge changes from bison-1_29-branch.
3014
30152002-03-20 Paul Eggert <eggert@twinsun.com>
3016
3017 Merge fixes from Debian bison_1.34-1.diff.
3018
3019 * configure.in (AC_PREREQ): 2.53.
3020
30212002-03-20 Akim Demaille <akim@epita.fr>
3022
3023 * src/conflicts.c (log_resolution): Argument `resolution' is const.
3024
30252002-03-19 Paul Eggert <eggert@twinsun.com>
3026
3027 * src/bison.simple (YYCOPY): New macro.
3028 (YYSTACK_RELOCATE): Use it.
3029 Remove Type arg; no longer needed. All callers changed.
3030 (yymemcpy): Remove; no longer needed.
3031
3032 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
3033 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
3034
30352002-03-19 Akim Demaille <akim@epita.fr>
3036
3037 Test and fix the #line outputs.
3038
3039 * tests/atlocal.at (GCC): New.
3040 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
3041 (Prologue synch line, ,%union synch line, Postprologue synch line)
3042 (Action synch line, Epilogue synch line): New tests.
3043 * src/reader.c (parse_union_decl): Define the muscle stype_line.
3044 * data/bison.simple, data/bison.c++: Use it.
3045
30462002-03-19 Akim Demaille <akim@epita.fr>
3047
3048 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
3049 (Solved SR Conflicts, %expect not enough, %expect right)
3050 (%expect too much): Move to...
3051 * tests/conflicts.at: this new file.
3052
30532002-03-19 Akim Demaille <akim@epita.fr>
3054
3055 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
3056 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
3057 that we can move to enums for instance.
3058 * src/output.c (token_definitions_output): Output a list of
3059 `token-name, token-number' instead of the #define.
3060 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
3061
30622002-03-14 Akim Demaille <akim@epita.fr>
3063
3064 Use Gettext 0.11.1.
3065
30662002-03-09 Robert Anisko <robert@lrde.epita.fr>
3067
3068 * data/bison.c++: Make the user able to add members to the generated
3069 parser by subclassing.
3070
30712002-03-05 Robert Anisko <robert@lrde.epita.fr>
3072
3073 * src/reader.c (read_additionnal_code): `c' should be an integer, not
3074 a character.
3075 Reported by Nicolas Tisserand and Nicolas Burrus.
3076
30772002-03-04 Robert Anisko <robert@lrde.epita.fr>
3078
3079 * src/reader.c: Warn about lacking semi-colons, do not complain.
3080
30812002-03-04 Robert Anisko <robert@lrde.epita.fr>
3082
3083 * data/bison.c++: Remove a debug line.
3084
30852002-03-04 Robert Anisko <robert@lrde.epita.fr>
3086
3087 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
3088 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
3089 provide a default implementation.
3090
30912002-03-04 Akim Demaille <akim@epita.fr>
3092
3093 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
3094 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
3095 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
3096 * tests/semantic.at (Parsing Guards): Similarly.
3097 * src/reader.at (readgram): Complain if the last rule is not ended
3098 with a semi-colon.
3099
31002002-03-04 Akim Demaille <akim@epita.fr>
3101
3102 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
3103 * src/closure.c: here.
3104 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
3105 RTC.
3106 * src/warshall.h, src/warshall.c: Remove.
3107 * tests/sets.at (Broken Closure): Adjust.
3108
31092002-03-04 Akim Demaille <akim@epita.fr>
3110
3111 * src/output.c (output_skeleton): tempdir is const.
3112 bytes_read is unused.
3113
31142002-03-04 Akim Demaille <akim@epita.fr>
3115
3116 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
3117 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
3118 Update.
3119 From Michael Hayes.
3120
31212002-03-04 Akim Demaille <akim@epita.fr>
3122
3123 * src/closure.c (closure): `r' is unused.
3124
31252002-03-04 Akim Demaille <akim@epita.fr>
3126
3127 * tests/sets.at (Broken Closure): Add the ending `;'.
3128 * src/reader.at (readgram): Complain if a rule is not ended with a
3129 semi-colon.
3130
31312002-03-04 Akim Demaille <akim@epita.fr>
3132
3133 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
3134 (count_sr_conflicts): Use bitset_count.
3135 * src/reduce.c (inaccessable_symbols): Ditto.
3136 (bits_size): Remove.
3137 * src/warshall.h, src/warshall.c: Convert to bitsetv.
3138
31392002-03-04 Akim Demaille <akim@epita.fr>
3140
3141 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
3142 * src/reduce.c: Remove the `bitset_zero's following the
3143 `bitset_create's, as now it is performed by the latter.
3144
31452002-03-04 Akim Demaille <akim@epita.fr>
3146
3147 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
3148 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
3149 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
3150 latest sources from Michael.
3151
31522002-03-04 Akim Demaille <akim@epita.fr>
3153
3154 * src/output.c (output): Don't free the grammar.
3155 * src/reader.c (grammar_free): New.
3156 * src/main.c (main): Call it and don't free symtab here.
3157
31582002-03-04 Akim Demaille <akim@epita.fr>
3159
3160 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
3161 before returning.
3162 Reported by Benoit Perrot.
3163
31642002-03-04 Akim Demaille <akim@epita.fr>
3165
3166 Use bitset operations when possible, not loops over bits.
3167
3168 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
3169 bitset_or.
3170 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
3171 * src/reduce.c (useless_nonterminals): Formatting changes.
3172 * src/warshall.c (TC): Use bitset_or.
3173
31742002-03-04 Akim Demaille <akim@epita.fr>
3175
3176 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
3177 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
3178 Ditto.
3179
31802002-03-04 Akim Demaille <akim@epita.fr>
3181
3182 * src/lalr.c (F): Now a bitset*.
3183 Adjust all dependencies.
3184
31852002-03-04 Akim Demaille <akim@epita.fr>
3186
3187 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
3188 Adjust all dependencies.
3189
31902002-03-04 Akim Demaille <akim@epita.fr>
3191
3192 * src/L0.c, src/LR0.h (nstates): Be size_t.
3193 Adjust comparisons (signed vs unsigned).
3194 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
3195 bitset*.
3196 Adjust all dependencies.
3197
31982002-03-04 Akim Demaille <akim@epita.fr>
3199
3200 * src/closure.c (firsts): Now, also a bitset.
3201 Adjust all dependencies.
3202 (varsetsize): Remove, now unused.
3203 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
3204
32052002-03-04 Akim Demaille <akim@epita.fr>
3206
3207 * src/print.c: Convert to use bitset.h, not hand coded iterations
3208 over ints.
3209
32102002-03-04 Akim Demaille <akim@epita.fr>
3211
3212 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
3213
32142002-03-04 Akim Demaille <akim@epita.fr>
3215
3216 * src/closure.c (ruleset): Be a bitset.
3217 (rulesetsize): Remove.
3218
32192002-03-04 Akim Demaille <akim@epita.fr>
3220
3221 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
3222 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
3223 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
3224 * src/closure.c (fderives): Be an array of bitsets.
3225
32262002-02-28 Robert Anisko <robert@lrde.epita.fr>
3227
3228 * data/bison.c++: Merge the two generated headers. Insert a copyright
3229 notice in each output file.
3230
32312002-02-28 Akim Demaille <akim@epita.fr>
3232
3233 * data/bison.c++: Copy the prologue of bison.simple to fetch
3234 useful M4 definitions, such as b4_header_guard.
3235
32362002-02-25 Akim Demaille <akim@epita.fr>
3237
3238 * src/getargs.c (version): Give the name of the authors, and use a
3239 translator friendly scheme for the bgr
3240 copyright notice.
3241
32422002-02-25 Akim Demaille <akim@epita.fr>
3243
3244 * src/output.c (header_output): Remove, now handled completely via
3245 M4.
3246
32472002-02-25 Akim Demaille <akim@epita.fr>
3248
3249 * m4/m4.m4: New, from CVS Autoconf.
3250 * configure.in: Invoke it.
3251 * src/output.c (output_skeleton): Use its result instead of the
3252 hard coded name.
3253
32542002-02-25 Akim Demaille <akim@epita.fr>
3255
3256 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
3257 Fileutils 4.1.5.
3258 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
3259 * src/output.c (output_skeleton): Use mkstemp to create a real
3260 temporary file.
3261 Move the filling of `skeleton' and its muscle to...
3262 (prepare): here.
3263 (output): Move the definition of the prologue muscle to...
3264 (prepare): here.
3265 * src/system.h (DEFAULT_TMPDIR): New.
3266
32672002-02-14 Paul Eggert <eggert@twinsun.com>
3268
3269 Remove the support for C++ namespace cleanliness; it was
3270 causing more problems than it was curing, since it didn't work
3271 properly on some nonstandard C++ compilers. This can wait
3272 for a proper C++ parser.
3273
3274 * NEWS: Document this.
3275 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
3276 of C++, as it's treated like C now.
3277 * src/bison.simple (YYSTD): Remove.
3278 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
3279 Treat C++ just like Standard C instead of trying to support
3280 namespace cleanliness.
3281
32822002-02-14 Akim Demaille <akim@epita.fr>
3283
3284 * tests/regression.at (else): Adjust to Andreas' change.
3285
32862002-02-14 Akim Demaille <akim@epita.fr>
3287
3288 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
3289
32902002-02-13 Andreas Schwab <schwab@suse.de>
3291
3292 * src/output.c (output_rule_data): Don't output NULL, it might
3293 not be defined yet.
3294
32952002-02-11 Robert Anisko <robert@lrde.epita.fr>
3296
3297 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
3298 (Copyright notice): Update.
3299
33002002-02-11 Akim Demaille <akim@epita.fr>
3301
3302 * tests/regression.at (%nonassoc and eof): Don't include
3303 nonportable headers.
3304
33052002-02-08 Robert Anisko <robert@lrde.epita.fr>
3306
3307 * data/bison.c++: Correct error recovery. Make the user able to
3308 initialize the starting location.
3309
33102002-02-07 Akim Demaille <akim@epita.fr>
3311
3312 * tests/input.at: New.
3313
33142002-02-07 Robert Anisko <robert@lrde.epita.fr>
3315
3316 * data/bison.c++: Replace some direct m4 expansions by constants. Be
3317 more consistent when naming methods and variables. Put preprocessor
3318 directives around tables only needed for debugging.
3319
33202002-02-07 Robert Anisko <robert@lrde.epita.fr>
3321
3322 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
3323 C++ parsers.
3324 (yy::b4_name::parse): Use print_.
3325
33262002-02-07 Robert Anisko <robert@lrde.epita.fr>
3327
3328 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
3329
33302002-02-07 Robert Anisko <robert@lrde.epita.fr>
3331
3332 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
3333 C++ parsers.
3334 (yy::b4_name::parse): Build verbose error messages, and use error_.
3335
33362002-02-06 Robert Anisko <robert@lrde.epita.fr>
3337
3338 * data/bison.c++: Fix m4 quoting in comments.
3339
33402002-02-06 Robert Anisko <robert@lrde.epita.fr>
3341
3342 * data/bison.c++: Adjust the parser code. Fix some muscles that were
3343 not expanded by m4.
3344
33452002-02-05 Akim Demaille <akim@epita.fr>
3346
3347 * data/bison.c++: Adjust to the M4 back end.
3348 More is certainly needed.
3349
33502002-02-05 Akim Demaille <akim@epita.fr>
3351
3352 Give a try to M4 as a back end.
3353
3354 * lib/readpipe.c: New, from wdiff.
3355 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
3356 BISON_HAIRY.
3357 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
3358 specific values. Now it is m4 that performs the lookup.
3359 * src/parse-skel.y: Remove.
3360 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
3361 * src/output.c (actions_output, guards_output)
3362 (token_definitions_output): No longer keeps track of the output
3363 line number, hence remove the second argument.
3364 (guards_output): Check against the guard member of a rule, not the
3365 action member.
3366 Adjust callers.
3367 (output_skeleton): Don't look for the skeleton location, let m4 do
3368 that.
3369 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
3370 file will be used.
3371 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
3372 (prepare): Given that for the time being changesyntax is not
3373 usable in M4, rename the muscles using `-' to `_'.
3374 Define `defines_flag', `output_parser_name' and `output_header_name'.
3375 * src/output.h (actions_output, guards_output)
3376 (token_definitions_output): Adjust prototypes.
3377 * src/scan-skel.l: Instead of scanning the skeletons, it now
3378 processes the output of m4: `__oline__' and `#output'.
3379 * data/bison.simple: Adjust to be used by M4(sugar).
3380 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
3381 to date.
3382 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
3383 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
3384 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
3385 shamelessly stolen from CVS Autoconf.
3386
33872002-02-05 Akim Demaille <akim@epita.fr>
3388
3389 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
3390 * configure.in: Check for the declarations of free and malloc.
3391 * src/muscle_tab.c: Adjust.
3392
33932002-02-05 Akim Demaille <akim@epita.fr>
3394
3395 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
3396 which have no values.
3397
33982002-02-05 Akim Demaille <akim@epita.fr>
3399
3400 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
3401 * data/: here.
3402
34032002-01-29 Paul Eggert <eggert@twinsun.com>
3404
3405 * src/bison.simple (YYSIZE_T): Do not define merely because
3406 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
3407 On some platforms, <alloca.h> does not declare YYSTD (size_t).
3408
34092002-01-27 Akim Demaille <akim@epita.fr>
3410
3411 Fix `%nonassoc and eof'.
3412
3413 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
3414 which were not properly copied! Replace
3415 memcpy (res->errs, src->errs, src->nerrs);
3416 with
3417 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
3418 !!!
3419 * tests/regression.at (%nonassoc and eof): Adjust to newest
3420 Autotest: `.' is not in the PATH.
3421
34222002-01-27 Akim Demaille <akim@epita.fr>
3423
3424 * tests/sets.at (AT_EXTRACT_SETS): New.
3425 (Nullable): Use it.
3426 (Firsts): New.
3427
34282002-01-26 Akim Demaille <akim@epita.fr>
3429
3430 * tests/actions.at, tests/calc.at, tests/headers.at,
3431 * tests/torture.at: Adjust to the newest Autotest which no longer
3432 forces `.' in the PATH.
3433
34342002-01-25 Akim Demaille <akim@epita.fr>
3435
3436 * tests/regression.at (%nonassoc and eof): New.
3437 Suggested by Robert Anisko.
3438
34392002-01-24 Akim Demaille <akim@epita.fr>
3440
3441 Bison dumps core when trying to complain about broken input files.
3442 Reported by Cris van Pelt.
3443
3444 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
3445 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
3446 into...
3447 (Invalid inputs): Strengthen: exercise parse_percent_token.
3448
34492002-01-24 Robert Anisko <robert.anisko@epita.fr>
3450
3451 * src/Makefile.am: Add bison.c++.
3452 * src/bison.c++: New skeleton.
3453
34542002-01-21 Paolo Bonzini <bonzini@gnu.org>
3455
3456 * po/it.po: New.
3457
34582002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
3459
3460 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
3461
34622002-01-20 Marc Autret <marc@gnu.org>
3463
3464 * src/files.c (compute_output_file_names): Fix
3465
34662002-01-20 Marc Autret <marc@gnu.org>
3467
3468 * tests/output.at: New test.
3469 * src/files.c (compute_base_names): Don't map extensions when
3470 the YACC flag is set, use defaults.
3471 Reported by Evgeny Stambulchik.
3472
34732002-01-20 Marc Autret <marc@gnu.org>
3474
3475 * src/system.h: Need to define __attribute__ away for non-GCC
3476 compilers as well (i.e. the vendor C compiler).
3477 Suggested by Albert Chin-A-Young.
3478
34792002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
3480
3481 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
3482 canonical definition.
3483 * src/system.h: Use the canonical definition for PARAMS (avoids
3484 a conflict with the macro from lib/hash.h).
3485
34862002-01-11 Akim Demaille <akim@epita.fr>
3487
3488 * configure.in: Use AC_FUNC_STRNLEN.
3489 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
3490
34912002-01-09 Akim Demaille <akim@epita.fr>
3492
3493 * src/files.c, src/files.h (output_infix): New.
3494 (tab_extension): Remove.
3495 (compute_base_names): Compute the former, drop the latter.
3496 * src/output.c (prepare): Insert the muscles `output-infix', and
3497 `output-suffix'.
3498 * src/parse-skel.y (string, string.1): New.
3499 (section.header): Use it.
3500 (section.yacc): Remove.
3501 (prefix): Remove too.
3502 * src/scan-skel.l: Adjust.
3503 * src/bison.simple, src/bison.hairy: Adjust.
3504
35052002-01-09 Akim Demaille <akim@epita.fr>
3506
3507 * configure.in (WERROR_CFLAGS): Compute it.
3508 * src/Makefile.am (CFLAGS): Pass it.
3509 * tests/atlocal.in (CFLAGS): Idem.
3510 * src/files.c: Fix a few warnings.
3511 (get_extension_index): Remove, unused.
3512
35132002-01-08 Akim Demaille <akim@epita.fr>
3514
3515 * src/getargs.c (AS_FILE_NAME): New.
3516 (getargs): Use it to convert DOSish file names.
3517 * src/files.c (base_name): Rename as full_base_name to avoid
3518 clashes with `base_name ()'.
3519 (filename_split): New.
3520 (compute_base_names): N-th rewrite, using filename_split.
3521
35222002-01-08 Akim Demaille <akim@epita.fr>
3523
3524 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
3525 New, stolen from the Fileutils 4.1.
3526 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
3527 * configure.in: Check for the presence of memrchr, and of its
3528 prototype.
3529
35302002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
3531
3532 * lib/hash.h (__P): Added definition for this macro.
3533 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
3534 BUILT_SOURCES, to ensure they are generated first.
3535 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
3536 %error-verbose to allow bootstrapping with bison 1.30x.
3537
35382002-01-06 Akim Demaille <akim@epita.fr>
3539
3540 * src/reader.c (parse_braces): Don't fetch the next char, the
3541 convention is to fetch on entry.
3542 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
3543 'switch' without a following semicolon.
3544 * tests/regression.at (braces parsing): New.
3545
35462002-01-06 Akim Demaille <akim@epita.fr>
3547
3548 Bison is dead wrong in its RR conflict reports.
3549
3550 * tests/torture.at (GNU Cim Grammar): New.
3551 * src/conflicts.c (count_rr_conflicts): Fix.
3552
35532002-01-06 Akim Demaille <akim@epita.fr>
3554
3555 Creating package.m4 from configure.ac causes too many problems.
3556
3557 * tests/Makefile.am (package.m4): Create it by hand,
3558 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
3559
35602002-01-06 Akim Demaille <akim@epita.fr>
3561
3562 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
3563 skeleton.h.
3564
35652002-01-04 Paul Eggert <eggert@twinsun.com>
3566
3567 * doc/bison.texinfo (Debugging):
3568 Remove YYSTDERR; it's no longer defined or used.
3569 Also, s/cstdio.h/cstdio/.
3570
35712002-01-03 Akim Demaille <akim@epita.fr>
3572
3573 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
3574
35752002-01-03 Akim Demaille <akim@epita.fr>
3576
3577 * src/parse-skel.y (process_skeleton): Don't bind the parser's
3578 tracing code to --trace, wait for a better --trace option, with
3579 args.
3580
35812002-01-03 Akim Demaille <akim@epita.fr>
3582
3583 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
3584 The ISO C++ standard is extremely clear about it: stderr is
3585 considered a macro, not a regular symbol (see table 94 `Header
3586 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
3587 Therefore std:: does not apply to it. It still does with fprintf.
3588 Also, s/cstdio.h/cstdio/.
3589
35902002-01-03 Akim Demaille <akim@epita.fr>
3591
3592 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
3593 for non system headers.
3594
35952002-01-02 Akim Demaille <akim@epita.fr>
3596
3597 Equip the skeleton chain with location tracking, runtime trace,
3598 pure parser and scanner.
3599
3600 * src/parse-skel.y: Request a pure parser, locations, and prefix
3601 renaming.
3602 (%union): Having several members with the same type does not help
3603 type mismatches, simplify.
3604 (YYPRINT, yyprint): New.
3605 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
3606 (skel_error): this.
3607 Handle locations.
3608 * src/scan-skel.l: Adjust to these changes.
3609 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
3610 (LOCATION_PRINT, skel_control_t): New.
3611
36122001-12-30 Akim Demaille <akim@epita.fr>
3613
3614 * src/parse-skel.y: Get rid of the shift/reduce conflict:
3615 replace `gb' with BLANKS.
3616 * src/scan-skel.l: Adjust.
3617
36182001-12-30 Akim Demaille <akim@epita.fr>
3619
3620 * src/system.h: We don't need nor want bcopy.
3621 Throw away MS-DOS crap: we don't need getpid.
3622 * configure.in: We don't need strndup. It was even causing
3623 problems: because Flex includes the headers *before* us,
3624 _GNU_SOURCE is not defined by config.h, and therefore strndup was
3625 not visible.
3626 * lib/xstrndup.c: New.
3627 * src/scan-skel.l: Use it.
3628 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
3629 * src/parse-skel.y: Use %directives instead of #defines.
3630
36312001-12-30 Akim Demaille <akim@epita.fr>
3632
3633 * src/skeleton.h: New.
3634 * src/output.c (output_parser, output_master_parser): Remove, dead
3635 code.
3636 * src/output.h (get_lines_number, actions_output, guards_output)
3637 (token_definitions_output): Prototype them.
3638 * src/parse-skel.y: Add the license notice.
3639 Include output.h and skeleton.h.
3640 (process_skeleton): Returns void, and takes a single parameter.
3641 * src/scan-skel.l: Add the license notice.
3642 Include skeleton.h.
3643 Don't use %option yylineno: it seems that then Flex imagines
3644 REJECT has been used, and therefore it won't reallocate its
3645 buffers (which makes no other sense to me than a bug). It results
3646 in warnings for `unused: yy_flex_realloc'.
3647
36482001-12-30 Robert Anisko <robert.anisko@epita.fr>
3649
3650 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
3651 (MUSCLE_INSERT_PREFIX): ...to there.
3652 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
3653 (MUSCLE_INSERT_PREFIX): Move from here...
3654
3655 * src/bison.hairy: Add a section directive. Put braces around muscle
3656 names. This parser skeleton is still broken, but Bison should not
3657 choke on a bad muscle 'syntax'.
3658 * src/bison.simple: Add a section directive. Put braces around muscle
3659 names.
3660
3661 * src/files.h (strsuffix, stringappend): Add declarations.
3662 (tab_extension): Add declaration.
3663 (short_base_name): Add declaration.
3664
3665 * src/files.c (strsuffix, stringappend): No longer static. These
3666 functions are used in the skeleton parser.
3667 (tab_extension): New.
3668 (compute_base_names): Use the computations done in this function
3669 to guess if the generated parsers should have '.tab' in their
3670 names.
3671 (short_base_name): No longer static.
3672
3673 * src/output.c (output_skeleton): New.
3674 (output): Disable call to output_master_parser, and give a try to
3675 a new skeleton handling system.
3676 (guards_output, actions_output): No longer static.
3677 (token_definitions_output, get_lines_number): No longer static.
3678
3679 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
3680
3681 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
3682 parse-skel.y.
3683
3684 * src/parse-skel.y: New file.
3685 * src/scan-skel.l: New file.
3686
36872001-12-29 Akim Demaille <akim@epita.fr>
3688
3689 %name-prefix is broken.
3690
3691 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
3692 Adjust all dependencies.
3693 * tests/headers.at (export YYLTYPE): Strengthen this test: use
3694 %name-prefix.
3695
3696 Renaming yylval but not yylloc is not consistent. Now we do.
3697
3698 * src/bison.simple: Prefix yylloc if used.
3699 * doc/bison.texinfo (Decl Summary): Document that.
3700
37012001-12-29 Akim Demaille <akim@epita.fr>
3702
3703 * doc/bison.texinfo: Promote `%long-directive' over
3704 `%long_directive'.
3705 Remove all references to fixed-output-files, yacc is enough.
3706
37072001-12-29 Akim Demaille <akim@epita.fr>
3708
3709 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
3710 user prologue. These are defaults.
3711 * tests/actions.at (Mid-rule actions): Make sure the user can
3712 define YYDEBUG and YYERROR_VERBOSE.
3713
37142001-12-29 Akim Demaille <akim@epita.fr>
3715
3716 * src/output.c (header_output): Don't forget to export YYLTYPE and
3717 yylloc.
3718 * tests/headers.at (export YYLTYPE): New, make sure it does.
3719 * tests/regression.at (%union and --defines, Invalid CPP headers):
3720 Move to...
3721 * tests/headers.at: here.
3722
37232001-12-29 Akim Demaille <akim@epita.fr>
3724
3725 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
3726
37272001-12-29 Akim Demaille <akim@epita.fr>
3728
3729 * tests/actions.at (Mid-rule actions): Output on a single line
3730 instead of several.
3731
37322001-12-29 Akim Demaille <akim@epita.fr>
3733
3734 * doc/bison.texinfo: Formatting changes.
3735
37362001-12-29 Akim Demaille <akim@epita.fr>
3737
3738 Don't store the token defs in a muscle, just be ready to output it
3739 on command. Now possible via `symbols'. Fixes a memory leak.
3740
3741 * src/output.c (token_definitions_output): New.
3742 (output_parser, header_output): Use it.
3743 * src/reader.c (symbols_save): Remove.
3744
37452001-12-29 Akim Demaille <akim@epita.fr>
3746
3747 * src/bison.simple: Do not provide a default for YYSTYPE and
3748 YYLTYPE before the user's prologue. Otherwise it's hardly... a
3749 default.
3750
37512001-12-29 Akim Demaille <akim@epita.fr>
3752
3753 Mid-rule actions are simply... ignored!
3754
3755 * src/reader.c (readgram): Be sure to attach mid-rule actions to
3756 the empty-rule associated to the dummy symbol, not to the host
3757 rule.
3758 * tests/actions.at (Mid-rule actions): New.
3759
37602001-12-29 Akim Demaille <akim@epita.fr>
3761
3762 Memory leak.
3763
3764 * src/reader.c (reader): Free grammar.
3765
37662001-12-29 Akim Demaille <akim@epita.fr>
3767
3768 Memory leak.
3769
3770 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
3771 since it allocates it for each state, although only one is needed.
3772 (allocate_storage): Do it here.
3773
37742001-12-29 Akim Demaille <akim@epita.fr>
3775
3776 * src/options.h, src/options.c (create_long_option_table): Rename
3777 as...
3778 (long_option_table_new): this, with a clearer prototype.
3779 (percent_table): Remove, unused,
3780 * src/getargs.c (getargs): Adjust.
3781
37822001-12-29 Akim Demaille <akim@epita.fr>
3783
3784 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
3785 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
3786 as states.
3787
37882001-12-29 Akim Demaille <akim@epita.fr>
3789
3790 * src/lalr.c (build_relations): Rename `states' as `states1'.
3791 Sorry, I don't understand exactly what it is, no better name...
3792
37932001-12-29 Akim Demaille <akim@epita.fr>
3794
3795 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
3796 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
3797 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
3798 as rules.
3799
38002001-12-29 Akim Demaille <akim@epita.fr>
3801
3802 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
3803 ago.
3804
38052001-12-29 Akim Demaille <akim@epita.fr>
3806
3807 * src/reader.c, src/reader.h (user_toknums): Remove.
3808 Adjust all users to use symbols[i]->user_token_number.
3809
38102001-12-29 Akim Demaille <akim@epita.fr>
3811
3812 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
3813 Adjust all users to use symbols[i]->prec or ->assoc.
3814
38152001-12-29 Akim Demaille <akim@epita.fr>
3816
3817 * src/reader.c, src/reader.h (tags): Remove.
3818 Adjust all users to use symbols[i]->tag.
3819
38202001-12-29 Akim Demaille <akim@epita.fr>
3821
3822 * src/gram.h, src/gram.c (symbols): New, similar to state_table
3823 and rule_table.
3824 * src/reader.c (packsymbols): Fill this table.
3825 Drop sprec.
3826 * src/conflicts.c (resolve_sr_conflict): Adjust.
3827 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
3828 single table.
3829 Use symbols[i]->tag instead of tags[i].
3830
38312001-12-29 Akim Demaille <akim@epita.fr>
3832
3833 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
3834 In addition, put a comment in there, to replace...
3835 * tests/regression.at (%union and C comments): Remove.
3836
38372001-12-29 Akim Demaille <akim@epita.fr>
3838
3839 * tests/regression.at (Web2c Actions): Blindly move the actual
3840 output as expected output. The contents *seem* right to me, but I
3841 can't pretend reading perfectly parser tables... Nonetheless, all
3842 the other tests pass correctly, the table look OK, even though the
3843 presence of `$axiom' is to be noted: AFAICS it is useless (but
3844 harmless).
3845
38462001-12-29 Akim Demaille <akim@epita.fr>
3847
3848 * src/reader.c (readgram): Don't add the rule 0 if there were no
3849 rules read. In other words, add it _after_ having performed
3850 grammar sanity checks.
3851 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
3852
38532001-12-29 Akim Demaille <akim@epita.fr>
3854
3855 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
3856 visible, and some states have now a different number.
3857
38582001-12-29 Akim Demaille <akim@epita.fr>
3859
3860 * src/reader.c (readgram): Bind the initial rule's lineno to that
3861 of the first rule.
3862 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
3863 (Solved SR Conflicts): Adjust rule 0's line number.
3864
38652001-12-29 Akim Demaille <akim@epita.fr>
3866
3867 Fix the `GAWK Grammar' failure.
3868
3869 * src/LR0.c (final_state): Initialize to -1 so that we do compute
3870 the reductions of the first state which was mistakenly confused
3871 with the final state because precisely final_state was initialized
3872 to 0.
3873 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
3874 now noticed by Bison.
3875 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
3876 have a reduction on $default.
3877
38782001-12-29 Akim Demaille <akim@epita.fr>
3879
3880 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
3881 rule line numbers.
3882 * src/closure.c (print_closure): Likewise.
3883 * src/derives.c (print_derives): Likewise.
3884 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
3885 now.
3886
38872001-12-29 Akim Demaille <akim@epita.fr>
3888
3889 * src/lalr.c (lookaheads_print): New.
3890 (lalr): Call it when --trace-flag.
3891 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
3892 are dumped.
3893
38942001-12-29 Akim Demaille <akim@epita.fr>
3895
3896 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
3897 when walking through ritem, even via rule->rhs.
3898 * src/reduce.c (dump_grammar, useful_production, reduce_output)
3899 (useful_production, useless_nonterminals): Likewise.
3900 (reduce_grammar_tables): Likewise, plus update nritems.
3901 * src/nullable.c (set_nullable): Likewise.
3902 * src/lalr.c (build_relations): Likewise.
3903 * tests/sets.at (Nullable): Adjust.
3904 Fortunately, now, the $axiom is no longer nullable.
3905
39062001-12-29 Akim Demaille <akim@epita.fr>
3907
3908 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
3909 the 0-sentinel.
3910 * src/gram.c (ritem_longest_rhs): Likewise.
3911 * src/reduce.c (nonterminals_reduce): Likewise.
3912 * src/print_graph.c (print_graph): Likewise.
3913 * src/output.c (output_rule_data): Likewise.
3914 * src/nullable.c (set_nullable): Likewise.
3915
39162001-12-29 Akim Demaille <akim@epita.fr>
3917
3918 * src/output.c: Comment changes.
3919
39202001-12-27 Paul Eggert <eggert@twinsun.com>
3921
3922 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
3923 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
3924 Sparc, as they were causing more porting problems than the
3925 (minor) performance improvement was worth.
3926
3927 Also, catch up with 1.31's YYSTD.
3928
39292001-12-27 Akim Demaille <akim@epita.fr>
3930
3931 * src/output.c (output_gram): Rely on nritems, not the
3932 0-sentinel. See below.
3933 Use -1 as separator, not 0.
3934 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
3935 Rely on -1 as separator in yyrhs, instead of 0.
3936 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
3937 twice `Now at end of input', therefore there are two lines less to
3938 expect.
3939
39402001-12-27 Akim Demaille <akim@epita.fr>
3941
3942 * tests/regression.at (Unresolved SR Conflicts):
3943 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
3944 below.
3945
39462001-12-27 Akim Demaille <akim@epita.fr>
3947
3948 * src/LR0.c (new_state): Recognize the final state by the fact it
3949 is reached by eoftoken.
3950 (insert_start_shifting_state, insert_eof_shifting_state)
3951 (insert_accepting_state, augment_automaton): Remove, since now
3952 these states are automatically computed from the initial state.
3953 (generate_states): Adjust.
3954 * src/print.c: When reporting a rule number to the user, substract
3955 1, so that the axiom rule is rule 0, and the first user rule is 1.
3956 * src/reduce.c: Likewise.
3957 * src/print_graph.c (print_core): For the time being, just as for
3958 the report, depend upon --trace-flags to dump the full set of
3959 items.
3960 * src/reader.c (readgram): Once the grammar read, insert the rule
3961 0: `$axiom: START-SYMBOL $'.
3962 * tests/set.at: Adjust: rule 0 is now displayed, and since the
3963 number of the states has changed (the final state is no longer
3964 necessarily the last), catch up.
3965
39662001-12-27 Akim Demaille <akim@epita.fr>
3967
3968 Try to make the use of the eoftoken valid. Given that its value
3969 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
3970 is used instead of > 0 where appropriate, (ii), depend upon nritems
3971 instead of the 0-sentinel.
3972
3973 * src/gram.h, src/gram.c (nritems): New.
3974 Expected to be duplication of nitems, but for the time being...
3975 * src/reader.c (packgram): Assert nritems and nitems are equal.
3976 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
3977 * src/closure.c (print_closure, print_fderives): Likewise.
3978 * src/gram.c (ritem_print): Likewise.
3979 * src/print.c (print_core, print_grammar): Likewise.
3980 * src/print_graph.c: Likewise.
3981
39822001-12-27 Akim Demaille <akim@epita.fr>
3983
3984 * src/main.c (main): If there are complains after grammar
3985 reductions, then output the report anyway if requested, then die.
3986 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
3987 * src/reader.c (eoftoken): New.
3988 (parse_token_decl): If the token being defined has value `0', it
3989 is the eoftoken.
3990 (packsymbols): No longer hack `tags' to insert `$' by hand.
3991 Be sure to preserve the value of the eoftoken.
3992 (reader): Make sure eoftoken is defined.
3993 Initialize nsyms to 0: now eoftoken is created just like the others.
3994 * src/print.c (print_grammar): Don't special case the eof token.
3995 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
3996 lie anyway, albeit pleasant.
3997 * tests/calc.at: Exercise error messages with eoftoken.
3998 Change the grammar so that empty input is invalid.
3999 Adjust expectations.
4000 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
4001
40022001-12-27 Akim Demaille <akim@epita.fr>
4003
4004 * configure.in: Check the protos of strchr ans strspn.
4005 Replace strchr if needed.
4006 * src/system.h: Provide the protos of strchr, strspn and memchr if
4007 missing.
4008 * lib/strchr.c: New.
4009 * src/reader.c (symbols_save): Use strchr.
4010
40112001-12-27 Akim Demaille <akim@epita.fr>
4012
4013 * src/print.c, src/print_graph.c (escape): New.
4014 Use it to quote the TAGS outputs.
4015 * src/print_graph.c (print_state): Now errors are in red, and
4016 reductions in green.
4017 Prefer high to wide: output the state number on a line of its own.
4018
40192001-12-27 Akim Demaille <akim@epita.fr>
4020
4021 * src/state.h, src/state.c (reductions_new): New.
4022 * src/LR0.c (set_state_table): Let all the states have a
4023 `reductions', even if reduced to 0.
4024 (save_reductions): Adjust.
4025 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
4026 * src/print.c (print_reductions, print_actions): Adjust.
4027 * src/output.c (action_row): Adjust.
4028
40292001-12-27 Akim Demaille <akim@epita.fr>
4030
4031 * src/state.h, src/state.c (errs_new, errs_dup): New.
4032 * src/LR0.c (set_state_table): Let all the states have an errs,
4033 even if reduced to 0.
4034 * src/print.c (print_errs, print_reductions): Adjust.
4035 * src/output.c (output_actions, action_row): Adjust.
4036 * src/conflicts.c (resolve_sr_conflict): Adjust.
4037
40382001-12-27 Akim Demaille <akim@epita.fr>
4039
4040 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
4041
40422001-12-27 Akim Demaille <akim@epita.fr>
4043
4044 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
4045 * src/print.c: here.
4046 (lookaheadset, shiftset): New, used as additional storage by
4047 print_reductions.
4048 (print_results): Adjust.
4049 (print_shifts, print_gotos, print_errs): New, extracted from...
4050 (print_actions): here.
4051 * src/print_graph.c (print_actions): Remove dead code.
4052
40532001-12-27 Akim Demaille <akim@epita.fr>
4054
4055 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
4056 `$n' and `@n'.
4057
40582001-12-27 Akim Demaille <akim@epita.fr>
4059
4060 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
4061 (build_relations): Adjust.
4062
40632001-12-27 Akim Demaille <akim@epita.fr>
4064
4065 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
4066 duplication.
4067
40682001-12-27 Akim Demaille <akim@epita.fr>
4069
4070 * src/reader.c (packgram): Catch nitems overflows.
4071
40722001-12-27 Akim Demaille <akim@epita.fr>
4073
4074 * src/files.c, src/files.h (guard_obstack): Remove.
4075 * src/output.c (output): Adjust.
4076 * src/reader.c (parse_braces): New, factoring...
4077 (copy_action, copy_guard): these two which are renamed as...
4078 (parse_action, parse_guard): these.
4079 As a voluntary consequence, using braces around guards is now
4080 mandatory.
4081
40822001-12-27 Akim Demaille <akim@epita.fr>
4083
4084 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
4085 * src/reader.c (symbol_list): `guard' and `guard_line' are new
4086 members.
4087 (symbol_list_new): Adjust.
4088 (copy_action): action_line is the first line, not the last.
4089 (copy_guard): Just as for actions, store the `action' only, not
4090 the switch/case/break flesh.
4091 Don't parse the user action that might follow the guard, let...
4092 (readgram): do it, i.e., now, there can be an action after a
4093 guard.
4094 In other words the guard is just explicitly optional.
4095 (packgram): Adjust.
4096 * src/output.c (guards_output): New.
4097 (output_parser): Call it when needed.
4098 (output): Also free the guard and attrs obstacks.
4099 * src/files.c, src/files.h (obstack_save): Remove.
4100 (output_files): Remove.
4101 As a result, if one needs the former `.act' file, using an
4102 appropriate skeleton which requires actions and guards is now
4103 required.
4104 * src/main.c (main): Adjust.
4105 * tests/semantic.at: New.
4106 * tests/regression.at: Use `input.y' as input file name.
4107 Avoid 8+3 problems by requiring input.c when the test needs the
4108 parser.
4109
41102001-12-27 Akim Demaille <akim@epita.fr>
4111
4112 * src/reader.c (symbol_list_new): Be sure to initialize all the
4113 fields.
4114
41152001-12-27 Akim Demaille <akim@epita.fr>
4116
4117 All the hacks using a final pseudo state are now useless.
4118
4119 * src/LR0.c (set_state_table): state_table holds exactly nstates.
4120 * src/lalr.c (nLA): New.
4121 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
4122 instead of lookaheadsp from the pseudo state (nstate + 1).
4123
41242001-12-27 Akim Demaille <akim@epita.fr>
4125
4126 * src/output.c (action_row, token_actions): Use a state_t instead
4127 of a integer, and nlookaheads instead of the following state's
4128 lookaheadsp.
4129
41302001-12-27 Akim Demaille <akim@epita.fr>
4131
4132 * src/conflicts.c (log_resolution, flush_shift)
4133 (resolve_sr_conflict, set_conflicts, solve_conflicts)
4134 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
4135 (conflicts_print, print_reductions): Use a state_t instead of an
4136 integer when referring to a state.
4137 As much as possible, depend upon nlookaheads, instead of the
4138 `lookaheadsp' member of the following state (since lookaheads of
4139 successive states are successive, the difference between state n + 1
4140 and n served as the number of lookaheads for state n).
4141 * src/lalr.c (add_lookback_edge): Likewise.
4142 * src/print.c (print_core, print_actions, print_state)
4143 (print_results): Likewise.
4144 * src/print_graph.c (print_core, print_actions, print_state)
4145 (print_graph): Likewise.
4146 * src/conflicts.h: Adjust.
4147
41482001-12-27 Akim Demaille <akim@epita.fr>
4149
4150 * src/bison.hairy: Formatting/comment changes.
4151 ANSIfy.
4152 Remove `register' indications.
4153 Add plenty of `static'.
4154
41552001-12-27 Akim Demaille <akim@epita.fr>
4156
4157 * src/output.c (prepare): Drop the muscle `ntbase' which
4158 duplicates ntokens.
4159 * src/bison.simple: Formatting/comment changes.
4160 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
4161 is an undocumented synonym.
4162
41632001-12-22 Akim Demaille <akim@epita.fr>
4164
4165 * src/output.c (output_table_data): Change the prototype to use
4166 `int' for array ranges: some invocations do pass an int, not a
4167 short.
4168 Reported by Wayne Green.
4169
41702001-12-22 Akim Demaille <akim@epita.fr>
4171
4172 Some actions of web2c.y are improperly triggered.
4173 Reported by Mike Castle.
4174
4175 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
4176 * tests/regression.at (Web2c): Rename as...
4177 (Web2c Report): this.
4178 (Web2c Actions): New.
4179
41802001-12-22 Akim Demaille <akim@epita.fr>
4181
4182 Reductions in web2c.y are improperly reported.
4183 Reported by Mike Castle.
4184
4185 * src/conflicts.c (print_reductions): Fix.
4186 * tests/regression.at (Web2c): New.
4187
41882001-12-18 Akim Demaille <akim@epita.fr>
4189
4190 Some host fail on `assert (!"foo")', which expands to
4191 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
4192 Reported by Nelson Beebee.
4193
4194 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
4195 `#define it_succeeded 0' and `assert (it_succeeded)'.
4196
41972001-12-17 Marc Autret <autret_m@epita.fr>
4198
4199 * src/bison.simple: Don't hard code the skeleton line and filename.
4200 * src/output.c (output_parser): Rename 'line' as 'output_line'.
4201 New line counter 'skeleton_line' (skeleton-line muscle).
4202
42032001-12-17 Paul Eggert <eggert@twinsun.com>
4204
4205 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
4206 YYDEBUG must be defined to a nonzero value.
4207
4208 * src/bison.simple (yytname): Do not assume that the user defines
4209 YYDEBUG to a properly parenthesized expression.
4210
42112001-12-17 Akim Demaille <akim@epita.fr>
4212
4213 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
4214 nlookaheads is a new member.
4215 Adjust all users.
4216 * src/lalr.h (nlookaheads): Remove this orphan declaration.
4217 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
4218 state.
4219
42202001-12-17 Akim Demaille <akim@epita.fr>
4221
4222 * src/files.h, src/files.c (open_files, close_files): Remove.
4223 * src/main.c (main): Don't open/close files, nor invoke lex_free,
4224 let...
4225 * src/reader.c (reader): Do it.
4226
42272001-12-17 Akim Demaille <akim@epita.fr>
4228
4229 * src/conflicts.c (print_reductions): Formatting changes.
4230
42312001-12-17 Akim Demaille <akim@epita.fr>
4232
4233 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
4234 (flush_reduce): New.
4235 (resolve_sr_conflict): Adjust.
4236
42372001-12-17 Akim Demaille <akim@epita.fr>
4238
4239 * src/output.c (output_obstack): Be static and rename as...
4240 (format_obstack): this, to avoid any confusion with files.c's
4241 output_obstack.
4242 * src/reader.h (muscle_obstack): Move to...
4243 * src/output.h: here, since it's defined in output.c.
4244
42452001-12-17 Akim Demaille <akim@epita.fr>
4246
4247 * src/output.c (action_row, save_column, default_goto)
4248 (sort_actions, matching_state, pack_vector): Better variable
4249 locality.
4250
42512001-12-17 Akim Demaille <akim@epita.fr>
4252
4253 * src/output.c: Various formatting changes.
4254
42552001-12-17 Akim Demaille <akim@epita.fr>
4256
4257 * src/files.c (output_files): Free the output_obstack.
4258 * src/main.c (main): Call print and print_graph conditionally.
4259 * src/print.c (print): Work unconditionally.
4260 * src/print_graph.c (print_graph): Work unconditionally.
4261 * src/conflicts.c (log_resolution): Output only if verbose_flag.
4262
42632001-12-16 Marc Autret <autret_m@epita.fr>
4264
4265 * src/output.c (actions_output): Fix. When we use %no-lines,
4266 there is one less line per action.
4267
42682001-12-16 Marc Autret <autret_m@epita.fr>
4269
4270 * src/bison.simple: Remove a useless #line directive.
4271 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
4272 * src/output.c (get_lines_number): New.
4273 (output_parser): Adjust, now takes care about the lines of a
4274 output muscles.
4275 Fix line numbering.
4276 (actions_output): Computes the number of lines taken by actions.
4277 (output_master_parser): Insert new skeleton which is the name of
4278 the output parser file name.
4279
42802001-12-15 Marc Autret <autret_m@epita.fr>
4281
4282 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
4283
42842001-12-15 Marc Autret <autret_m@epita.fr>
4285
4286 * src/output.c (output_gram): Keep track of the hairy one.
4287
42882001-12-15 Akim Demaille <akim@epita.fr>
4289
4290 Make `make distcheck' work.
4291
4292 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
4293 system.h which uses libgettext.h.
4294
42952001-12-15 Akim Demaille <akim@epita.fr>
4296
4297 * src/nullable.c (set_nullable): Useless rules must be skipped,
4298 otherwise, since we range over their symbols, we might look at a
4299 nonterminal which no longer ``exists'', i.e., it is not counted in
4300 `nvars', hence we overflow our arrays.
4301
43022001-12-15 Akim Demaille <akim@epita.fr>
4303
4304 The header can also be produced directly, without any obstack!
4305 Yahoo!
4306
4307 * src/files.c, src/files.h (defines_obstack): Remove.
4308 (compute_header_macro): Global.
4309 (defines_obstack_save): Remove.
4310 * src/reader.c (parse_union_decl): No longer output to
4311 defines_obstack: its content can be found in the `stype' muscle
4312 anyway.
4313 (output_token_translations): Merge into...
4314 (symbols_output): this.
4315 Rename as...
4316 (symbols_save): this.
4317 (reader): Adjust.
4318 * src/output.c (header_output): New.
4319 (output): Call it.
4320
43212001-12-15 Akim Demaille <akim@epita.fr>
4322
4323 * src/reader.c (parse_union_decl): Instead of handling two obstack
4324 simultaneously, use one to define the `stype' muscle, and use the
4325 value of the latter to fill defines_obstack.
4326 (copy_comment): Remove.
4327 (copy_comment2): Work for a single obstack.
4328 Rename as...
4329 (copy_comment): this.
4330
43312001-12-15 Akim Demaille <akim@epita.fr>
4332
4333 * src/lex.c, src/lex.h (xgetc): No longer static.
4334 * src/reader.c (parse_union_decl): Revamp.
4335
43362001-12-15 Akim Demaille <akim@epita.fr>
4337
4338 Still making progress in separating Bison into (i) input, (ii)
4339 process, (iii) output: now we can directly output the parser file
4340 without using table_obstack at all.
4341
4342 * src/files.c, src/files.h (table_obstack): Bye bye.
4343 (parser_file_name): New.
4344 * src/files.c (compute_output_file_names): Compute it.
4345 * src/output.c (actions_output, output_parser)
4346 (output_master_parser): To a file instead of an obstack.
4347
43482001-12-15 Akim Demaille <akim@epita.fr>
4349
4350 Attach actions to rules, instead of pre-outputting them to
4351 actions_obstack.
4352
4353 * src/gram.h (rule_t): action and action_line are new members.
4354 * src/reader.c (symbol_list): Likewise.
4355 (copy_action): Save the actions within the rule.
4356 (packgram): Save them in rule_table.
4357 * src/output.c (actions_output): New.
4358 (output_parser): Use it on `%%actions'.
4359 (output_rule_data): Don't free rule_table.
4360 (output): Do it.
4361 (prepare): Don't save the `action' muscle.
4362 * src/bison.simple: s/%%action/%%actions/.
4363
43642001-12-15 Akim Demaille <akim@epita.fr>
4365
4366 * src/reader.c (copy_action): When --yacc, don't append a `;'
4367 to the user action: let it fail if lacking.
4368 Suggested by Arnold Robbins and Tom Tromey.
4369
43702001-12-14 Akim Demaille <akim@epita.fr>
4371
4372 * src/lex.c (literalchar): Simply return the char you decoded, non
4373 longer mess around with obstacks and int pointers.
4374 Adjust all callers.
4375
43762001-12-14 Akim Demaille <akim@epita.fr>
4377
4378 * src/lex.c (literalchar): Don't escape the special characters,
4379 just decode them, and keep them as char (before, eol was output as
4380 the 2 char string `\n' etc.).
4381 * src/output.c (output_rule_data): Use quotearg to output the
4382 token strings.
4383
43842001-12-13 Paul Eggert <eggert@twinsun.com>
4385
4386 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
4387 Do not infringe on the global user namespace when using C++.
4388 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
4389 All uses of `fprintf' and `stderr' changed.
4390
4391 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
4392
43932001-12-13 Akim Demaille <akim@epita.fr>
4394
4395 The computation of nullable is broken: it doesn't handle empty
4396 RHS's properly.
4397
4398 * tests/torture.at (GNU AWK Grammar): New.
4399 * tests/sets.at (Nullable): New.
4400 * src/nullable.c (set_nullable): Instead of blindly looping over
4401 `ritems', loop over the rules, and then over their rhs's.
4402
4403 Work around Autotest bugs.
4404
4405 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
4406 frame, because Autotest understand lines starting with a `+' as
4407 traces from the shell. Then, they are not processed properly.
4408 Admittedly an Autotest bug, but we don't have time to wait for
4409 Autotest to catch up.
4410 * tests/regression.at (Broken Closure): Adjust to the new table
4411 frames.
4412 Move to...
4413 * tests/sets.at: here.
4414
44152001-12-13 Akim Demaille <akim@epita.fr>
4416
4417 * src/closure.c (closure): Use nrules instead of playing tricks
4418 with BITS_PER_WORD.
4419
44202001-12-13 Akim Demaille <akim@epita.fr>
4421
4422 * src/print.c (print_actions): Output the handling of `$' as the
4423 traces do: shifting the token EOF. Before EOF was treated as a
4424 nonterminal.
4425 * tests/regression.at: Adjust some tests.
4426 * src/print_graph.c (print_core): Complete the set of items via
4427 closure. The next-to-final and final states are still unsatisfying,
4428 but that's to be addressed elsewhere.
4429 No longer output the rule numbers, but do output the state number.
4430 A single loop for the shifts + gotos is enough, but picked a
4431 distinct color for each.
4432 (print_graph): Initialize and finalize closure.
4433
44342001-12-13 Akim Demaille <akim@epita.fr>
4435
4436 * src/reader.c (readgram): Remove dead code, an strip useless
4437 braces.
4438 (get_type): Remove, unused.
4439
44402001-12-12 Akim Demaille <akim@epita.fr>
4441
4442 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
4443 on that of lib/error.c.
4444
44452001-12-12 Akim Demaille <akim@epita.fr>
4446
4447 Some hosts don't like `/' in includes.
4448
4449 * src/system.h: Include libgettext.h without qualifying the path.
4450 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
4451 $(top_srcdir).
4452
44532001-12-11 Marc Autret <autret_m@epita.fr>
4454
4455 * src/output.c (output_parser): Remove useless muscle.
4456
44572001-12-11 Marc Autret <autret_m@epita.fr>
4458
4459 * src/bison.simple: Remove #line just before %%epilogue. It
4460 is now handled in ...
4461 * src/reader.c (read_additionnal_code): Add the output of a
4462 #line for the epilogue.
4463
44642001-12-10 Marc Autret <autret_m@epita.fr>
4465
4466 * src/reader.c (copy_definition): Re-use CPP-outed code which
4467 replace precedent remove.
4468 * src/bison.simple: Remove #line before %%prologue because
4469 %%input-line is wrong at this time.
4470
44712001-12-10 Marc Autret <autret_m@epita.fr>
4472
4473 * src/reader.c (symbols_output): Clean up.
4474 * src/output.c (output_gram, output): Clean up.
4475
44762001-12-10 Akim Demaille <akim@epita.fr>
4477
4478 * src/lalr.c (initialize_lookaheads): New. Extracted from...
4479 * src/LR0.c (set_state_table): here.
4480 * src/lalr.c (lalr): Call it.
4481
44822001-12-10 Akim Demaille <akim@epita.fr>
4483
4484 * src/state.h (shifts): Remove the `number' member: shifts are
4485 attached to state, hence no longer need to be labelled with a
4486 state number.
4487
44882001-12-10 Akim Demaille <akim@epita.fr>
4489
4490 Now that states have a complete set of members, the linked list of
4491 shifts is useless: just fill directly the state's shifts member.
4492
4493 * src/state.h (shifts): Remove the `next' member.
4494 * src/LR0.c (first_state, last_state): Remove.
4495 Adjust the callers.
4496 (augment_automaton): Don't look for the shifts that must be added
4497 a shift on EOF: it is those of the state we looked for! But now,
4498 since shifts are attached, it is no longer needed to looking
4499 merely by its id: its number.
4500
45012001-12-10 Akim Demaille <akim@epita.fr>
4502
4503 * src/LR0.c (augment_automaton): Better variable locality.
4504 Remove an impossible branch: if there is a state corresponding to
4505 the start symbol being shifted, then there is shift for the start
4506 symbol from the initial state.
4507
45082001-12-10 Akim Demaille <akim@epita.fr>
4509
4510 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
4511 only when appropriate: when insert_start_shifting_state' is not
4512 invoked.
4513 * tests/regression.at (Rule Line Numbers): Adjust.
4514
45152001-12-10 Akim Demaille <akim@epita.fr>
4516
4517 * src/LR0.c (augment_automaton): Now that all states have shifts,
4518 merge the two cases addition shifts to the initial state.
4519
45202001-12-10 Akim Demaille <akim@epita.fr>
4521
4522 * src/lalr.c (set_state_table): Move to...
4523 * src/LR0.c: here.
4524 * src/lalr.c (lalr): Don't call it...
4525 * src/LR0.c (generate_states): do it.
4526 * src/LR0.h (first_state): Remove, only the table is used.
4527
45282001-12-10 Akim Demaille <akim@epita.fr>
4529
4530 * src/LR0.h (first_shift, first_reduction): Remove.
4531 * src/lalr.c: Don't use first_shift: find shifts through the
4532 states.
4533
45342001-12-10 Akim Demaille <akim@epita.fr>
4535
4536 * src/LR0.c: Attach shifts to states as soon as they are
4537 computed.
4538 * src/lalr.c (set_state_table): Instead of assigning shifts to
4539 state, just assert that the mapping was properly done.
4540
45412001-12-10 Akim Demaille <akim@epita.fr>
4542
4543 * src/LR0.c (insert_start_shift): Rename as...
4544 (insert_start_shifting_state): this.
4545 (insert_eof_shifting_state, insert_accepting_state): New.
4546 (augment_automaton): Adjust.
4547 Better locality of the variables.
4548 When looking if the start_symbol is shifted from the initial
4549 state, using `while (... symbol != start_symbol ...)' sounds
4550 better than `while (... symbol < start_symbol ...)': If fail
4551 to see how the order between symbols could be relevant!
4552
45532001-12-10 Akim Demaille <akim@epita.fr>
4554
4555 * src/getargs.h: Don't declare `spec_name_prefix' and
4556 `spec_file_prefix', declared by src/files.h.
4557 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
4558 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
4559 * src/output.c (prepare): Adjust.
4560 * src/reader.c (symbols_output): Likewise.
4561 * src/vmsgetargs.c: Vaguely adjust, but who cares?
4562
45632001-12-10 Akim Demaille <akim@epita.fr>
4564
4565 * src/muscle_tab.c (muscle_init): NULL is a better default than
4566 `"0"'.
4567
45682001-12-10 Akim Demaille <akim@epita.fr>
4569
4570 * src/reader.c (reader): Calling symbols_output once is enough.
4571
45722001-12-10 Akim Demaille <akim@epita.fr>
4573
4574 Now that states have a complete set of members, the linked list of
4575 reductions is useless: just fill directly the state's reductions
4576 member.
4577
4578 * src/state.h (struct reductions): Remove member `number' and
4579 `next'.
4580 * src/LR0.c (first_reduction, last_reduction): Remove.
4581 (save_reductions): Don't link the new reductions, store them in
4582 this_state.
4583 * src/lalr.c (set_state_table): No need to attach reductions to
4584 states, it's already done.
4585 * src/output.c (output_actions): No longer free the shifts, then
4586 the reductions, then the states: free all the states and their
4587 members.
4588
45892001-12-10 Akim Demaille <akim@epita.fr>
4590
4591 * src/options.c (OPTN, DRTV, BOTH): New.
4592 (option_table): Use them.
4593
4594 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
4595 the job of system.h.
4596 * src/options.c: Don't include stdio.h and xalloc.h for the same
4597 reasons.
4598
45992001-12-10 Akim Demaille <akim@epita.fr>
4600
4601 * src/output.c (output, prepare): Make sure the values of the
4602 muscles `action' and `prologue' are 0-terminated.
4603
46042001-12-10 Akim Demaille <akim@epita.fr>
4605
4606 Clean up GCC warnings.
4607
4608 * src/reader.c (copy_action): `buf' is not used.
4609 (parse_skel_decl): Be static.
4610 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
4611 * src/options.h (create_long_option_table): Have a real prototype.
4612 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
4613 (hash_delete_at): Return const void *.
4614 Adjust casts to preserve the const.
4615
46162001-12-10 Akim Demaille <akim@epita.fr>
4617
4618 * configure.in: Require 2.52g.
4619 M4 is not needed, but AUTOM4TE is.
4620 * m4/m4.m4: Remove.
4621 * tests/Makefile.am: Adjust.
4622
46232001-12-10 Akim Demaille <akim@epita.fr>
4624
4625 One structure for states is enough, even though theoretically
4626 there are LR(0) states and LALR(1) states.
4627
4628 * src/lalr.h (state_t): Remove.
4629 (state_table): Be state_t **, not state_t *.
4630 * src/state.h (core, CORE_ALLOC): Rename as...
4631 (state_t, STATE_ALLOC): this.
4632 Add the LALR(1) members: shifts, reductions, errs.
4633 * src/LR0.c (state_table): Rename as...
4634 (state_hash): this, to avoid name clashes with the global
4635 `state_table'.
4636 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
4637 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
4638
46392001-12-10 Akim Demaille <akim@epita.fr>
4640
4641 Bison dumps core on bash.y.
4642 Reported by Pascal Bart.
4643
4644 * src/warshall.c (bitmatrix_print): New.
4645 (TC): Use it.
4646 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
4647 j must be the outer loop.
4648 * tests/regression.at (Broken Closure): New.
4649
46502001-12-05 Akim Demaille <akim@epita.fr>
4651
4652 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
4653 its argument.
4654