]> git.saurik.com Git - bison.git/blame - ChangeLog
(yyparse): Rewrite to avoid "comparison is always true due to limited
[bison.git] / ChangeLog
CommitLineData
cc0f0794
PE
12002-10-13 Paul Eggert <eggert@twinsun.com>
2
3 * data/c.m4 (b4_token_defines): Protect against double-inclusion
4 by wrapping enum yytokentype's definition inside #ifndef
5 YYTOKENTYPE. This undoes a bug I introduced on 2002-10-12.
6
6fed0802
AD
72002-10-13 Akim Demaille <akim@epita.fr>
8
9 * data/glr.c (yyglrShiftDefer, yyaddDeferredAction, yydoAction):
10 Un yy- yyrhs to avoid the name clash with the global YYRHS.
11
32f0598d
AD
122002-10-13 Akim Demaille <akim@epita.fr>
13
14 * Makefile.maint: Update from Autoconf 2.54.
15 * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Remove, shipped with 2.54.
16
7ea9a33f
AD
172002-10-13 Akim Demaille <akim@epita.fr>
18
19 * src/print.c (print_state): Separate the list of solved conflicts
20 from the other items.
21 * tests/conflicts.at (Resolved SR Conflicts): Adjust.
22
ea99527d
AD
232002-10-13 Akim Demaille <akim@epita.fr>
24
25 Let nondeterministic skeletons be usable with deterministic
26 tables.
27
28 With the patch, GAWK compiled by GCC without -O2 passes its test
29 suite using a GLR parser driven by LALR tables. It fails with -O2
30 because `struct stat' gives two different answers on my machine:
31 88 (definition of an auto var) and later 96 (memset on this var).
32 Hence the stack is badly corrumpted. The headers inclusion is to
33 blame: if I move the awk.h inclusion before GLR's system header
34 inclusion, the two struct stat have the same size.
35
36 * src/tables.c (pack_table): Always create conflict_table.
37 (token_actions): Always create conflict_list.
38 * data/glr.c (YYFLAG): Remove, unused.
39
f377f69f
AD
402002-10-13 Akim Demaille <akim@epita.fr>
41
42 * configure.ac (AC_GNU_SOURCE): Use it instead of hand written code.
43 (O0FLAGS): New.
44 (VALGRIND, GXX): New.
45 * tests/atlocal.in (CFLAGS): Use O0FLAGS.
46 * tests/bison.in: Run $PREBISON a pre-command.
47 * tests/Makefile.am (maintainer-check, maintainer-check-valgrind)
48 (maintainer-check-g++): New.
49 * Makefile.am (maintainer-check): New.
50
2a1fe6ed
AD
512002-10-13 Akim Demaille <akim@epita.fr>
52
53 * data/glr.c: Formatting changes.
54 Tweak some trace messages to match yacc.c's.
55
f50adbbd
AD
562002-10-13 Akim Demaille <akim@epita.fr>
57
58 GLR parsers sometimes raise parse errors instead of performing the
59 default reduction.
60 Reported by Charles-Henry de Boysson.
61
62 * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't
63 check the length of the traces when %glr.
64 (_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from
65 GLR's traces.
66 (AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New.
67 Test GLR parsers.
68 * data/glr.c (YYLEFTMOST_STATE): Fix its value.
69 (yyltype): Remove the yy prefix from the member names.
70 (yytable): Complete its comment.
71 (yygetLRActions): Map error action number from YYTABLE from
72 YYTABLE_NINF to 0.
73 (yyisErrorAction): No longer compare YYACTION to YYPACT_NINF
74 (which was a bug: it should have been YYTABEL_NINF, and yet it was
75 not satisfying as we could compare an YYACTION computed from
76 YYDEFACT to YYTABLE_NINF although they are unrelated): 0 is the
77 only value for error actions.
78 (yyreportParseError): In verbose parse error messages, don't issue
79 `error' in the list of expected tokens.
80 * data/yacc.c (yyparse) <yybackup>: Rewrite the decoding of the
81 next action to perform to match glr.c's decoding.
82 (yytable): Complete its comment.
83
bcbad5b9
PE
842002-10-13 Paul Eggert <eggert@twinsun.com>
85
86 Fix problem reported by Henrik Grubbstroem in
87 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001670.html>:
88 "nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected,
89 because the Bison parser reads the second action before reducing
90 the first one.
91 * src/scan-gram.l (rule_length): New static var.
92 Use it to keep track of the rule length in the scanner, since
93 we can't expect the parser to be in lock-step sync with the scanner.
94 (handle_action_dollar, handle_action_at): Use this var.
95 * tests/actions.at (Exotic Dollars): Test for the problem.
96
14904b89
PE
972002-10-12 Paul Eggert <eggert@twinsun.com>
98
1fe611e5
PE
99 * lib/timevar.c [! IN_GCC && HAVE_SYS_TIME_H]: Include <sys/time.h>.
100 * m4/timevar.m4 (BISON_PREREQ_TIMEVAR): Check for <sys/time.h>.
101 Include <sys/time.h> when checking for clock_t and struct tms.
102 Use same include order as source.
103 This is for the SunOS 4.1.4 porting bug reported by Peter Klein in
104 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001674.html>.
105
106 * lib/timevar.c: Update copyright date and clarify comments.
107 (get_time) [IN_GCC]: Keep the GCC version for reference.
108
109 * lib/timevar.c, lib/timevar.h, lib/timevar.def: Import
110 GCC version as of today, then merge Bison's changes.
111 Change "GCC" to "Bison" in copyright notice. timevar.def's
112 author is Akim, so change that too.
113
98194095
PE
114 * src/reader.c (grammar_current_rule_check):
115 Don't worry about the default action if $$ is untyped.
116 Prevents bogus warnings reported by Jim Gifford in
117 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001673.html>.
118
14904b89
PE
119 * data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE.
120 * data/glr.c, data/lalr1.cc, data/yacc.c:
121 Output token definitions before the first part of user declarations.
122 Fixes compatibility problem reported by Jim Gifford for kbd in
123 <http://mail.gnu.org/pipermail/bug-bison/2002-October/001672.html>.
124
ff6dca18
PE
1252002-10-11 Paul Eggert <eggert@twinsun.com>
126
127 * data/yacc.c (yyreport_parse_error): Remove, putting its body into...
128 (yyparse): here. This undoes some of the 2002-07-25 change.
129 Compatibility problem reported by Ralf S. Engelschall with
130 OSSP cfg <http://www.ossp.org/pkg/lib/cfg/>.
131
eb714592
AD
1322002-10-11 Akim Demaille <akim@epita.fr>
133
134 * tests/regression.at Characters Escapes): New.
135 * src/scan-gram.l (SC_ESCAPED_CHARACTER): Accept \' in strings and
136 characters.
137 Reported by Jan Nieuwenhuizen.
138
b7195100
AD
1392002-10-11 Akim Demaille <akim@epita.fr>
140
141 * po/id.po: New.
142
f28a0f2d
PE
1432002-10-10 Paul Eggert <eggert@twinsun.com>
144
145 Portability fixes for bitsets; this also avoids several GCC
146 warnings.
147
148 * lib/abitset.c: Include <stddef.h>, for offsetof.
149 * lib/lbitset.c: Likewise.
150
151 * lib/abitset.c (abitset_bytes): Return a size that is aligned
152 properly for vectors of objects. Do not assume that adding a
153 header size to a multiple of a word size yields a value that is
154 properly aligned for the whole union.
155 * lib/bitsetv.c (bitsetv_alloc): Likewise.
156
157 * lib/bitset_stats.c (bitset_stats_bytes): Adjust to new,
158 unique names for structures.
159 * lib/ebitset.c (ebitset_bytes): Likewise.
160 * lib/lbitset.c (lbitset_bytes): Likewise.
161
162 * lib/abitset.c (abitset_ones, abitset_zero, abitset_empty_p,
163 abitset_copy1, abitset_not, abitset_equal_p, abitset_subset_p,
164 abitset_disjoint_p, abitset_and, abitset_and_cmp, abitset_andn,
165 abitset_andn_cmp, abitset_or, abitset_or_cmp, abitset_xor,
166 abitset_xor_cmp, abitset_and_or, abitset_and_or_cmp,
167 abitset_andn_or, abitset_andn_or_cmp, abitset_or_and,
168 abitset_or_and_cmp, abitset_copy): Supply prototype decls,
169 to improve the type-checking that GCC can do.
170 * lib/bitset.c (bitset_op4_cmp): Likewise.
171 * lib/bitset_stats.c (bitset_stats_count,
172 bitset_stats_empty_p, bitset_stats_ones, bitset_stats_zero,
173 bitset_stats_copy, bitset_stats_disjoint_p,
174 bitset_stats_equal_p, bitset_stats_not, bitset_stats_subset_p,
175 bitset_stats_and, bitset_stats_and_cmp, bitset_stats_andn,
176 bitset_stats_andn_cmp, bitset_stats_or, bitset_stats_or_cmp,
177 bitset_stats_xor, bitset_stats_xor_cmp, bitset_stats_and_or,
178 bitset_stats_and_or_cmp, bitset_stats_andn_or,
179 bitset_stats_andn_or_cmp, bitset_stats_or_and,
180 bitset_stats_or_and_cmp): Likewise.
181 * lib/lbitset.c (lbitset_and, lbitset_and_cmp, lbitset_andn,
182 lbitset_andn_cmp, lbitset_or, lbitset_or_cmp, lbitset_xor,
183 lbitset_xor_cmp, lbitset_empty_p, lbitset_ones, lbitset_not,
184 lbitset_subset_p, lbitset_disjoint_p, debug_lbitset): Likewise.
185
186 * lib/abitset.h: Include bitset.h, not bbitset.h.
187 * lib/ebitset.h: Likewise.
188 * lib/lbitset.h: Likewise.
189
190 * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): New types.
191 All instances of parameters of type enum bitset_opts are now of
192 type enum_bitset_opts, to conform to the C Standard, and similarly
193 for enum_bitset_type.
194 * lib/ebitset.c (enum_ebitset_find_mode): Likewise.
195 * lib/lbitset.c (enum_lbitset_find_mode): Likewise.
196
197 Do not use "struct bitset_struct" to mean different things in
198 different modules. Not only is this confusing, it violates
199 the C Standard, which requires that structure types in different
200 modules must be compatible if one is to be passed to the other.
201 * lib/bbitset.h (bitset): Now points to a union, not to a struct.
202 All instances of "struct bitset_struct *" replaced with "bitset".
203 * lib/bitset.h (struct bitset_struct): Remove, replacing with....
204 (union bitset_union, struct abitset_struct, struct ebitset_struct,
205 struct lbitset_struct, struct bitset_stats_struct): New types.
206 All uses of struct bitset_struct changed to union bitset_union,
207 etc.
208 * lib/abitset.c (struct abitset_struct, abitset,
209 struct bitset_struct): Remove.
210 * lib/bitset_stats.c (struct bitset_stats_struct, bitset_stats,
211 struct bitset_struct): Remove.
212 * lib/ebitset.c (struct ebitset_struct, ebitset, struct
213 bitset_struct): Remove.
214 * lib/lbitset.c (struct lbitset_struct, lbitset, bitset_struct):
215 Likewise.
216
217 Do not call a function of type T using a call that assumes the
218 function is of a different type U. Standard C requires that a
219 function must be called with a type that is compatible with its
220 definition.
221 * lib/bbitset.h (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
222 New decls.
223 * lib/bitset.c (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
224 New functions.
225 * lib/ebitset.c (PFV): Remove.
226 * lib/lbitset.c (PFV): Likewise.
227 * lib/ebitset.c (ebitset_and, ebitset_andn, ebitset_or,
228 ebitset_xor, ebitset_copy, ebitset_ones, ebitset_empty_p): New
229 decls.
230 (ebitset_and, ebitset_andn, ebitset_or, ebitset_xor): New functions.
231 (ebitset_vtable): Use them.
232 * lib/lbitset.c (lbitset_and, lbitset_andn, lbitset_or,
233 lbitset_xor): New functions.
234 (lbitset_vtable): Use them.
235
236 * lib/bitset.h (bitset_next, bitset_prev, bitset_only_set_p):
237 Declare.
238
239 * lib/bitsetv.c (bitsetv_alloc): Add a cast to (void *) to avoid a
240 GCC warning.
241 * lib/lbitset.c (LBITSET_CURRENT1): Likewise.
242 Use offsetof, for simplicity.
243
6fbe4984
PE
2442002-10-06 Paul Eggert <eggert@twinsun.com>
245
246 * lib/bitset.h (bitset_reset): Do not assume that bitset_word is
247 the same width as int. This reapplies a hunk of the 2002-08-12 patch
248 <http://mail.gnu.org/pipermail/bison-patches/2002-August/001111.html>,
249 which was inadvertently undone by the 2002-09-30 patch.
250 * lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is
251 the same width as int.
252
420f93c8
PE
2532002-10-04 Paul Eggert <eggert@twinsun.com>
254
255 Version 1.50.
256
257 * configure.ac (AC_INIT), NEWS: Increment version number.
258
259 * doc/bison.texinfo: Minor spelling, grammar, and white space
260 fixes.
261 (Symbols): Mention that any negative value returned from yylex
262 signifies end-of-input. Warn about negative chars. Mention
263 the portable Standard C character set.
264
265 The GNU coding standard says CFLAGS and YFLAGS are reserved
266 for the installer to set.
267 * lib/Makefile.am (AM_CFLAGS): Renamed from CFLAGS.
268 * src/Makefile.am (AM_CFLAGS): Likewise.
269 (AM_YFLAGS): Renamed from YFLAGS.
270
271 Fix some MAX and MIN problems.
272 * src/gram.h (ITEM_NUMBER_MIN): MIN_MAX -> INT_MIN.
273 * src/lalr.h (GOTO_NUMBER_MAX): INT_MAX -> SHRT_MAX.
274 * src/symtab.h (SYMBOL_NUMBER_MAX): New macro.
275 * src/reader.c (reader): Use it.
276
277 * tests/regression.at (Braces parsing): Use grep, not fgrep, as
278 POSIX 1003.1-2001 has removed fgrep.
279
2802002-10-04 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
281
282 * lib/bbitset.h (BITSET_WINDEX_MAX): Redefine so that it cannot be
283 interpreted as signed.
284 * lib/ebitset.c (ebitset_list): Fix bug.
285
ff68026d
PE
2862002-10-01 Paul Eggert <eggert@twinsun.com>
287
288 More fixes for 64-bit hosts and large bitsets.
289
290 * lib/abitset.c (struct abitset_struct.n_bits, abitset_small_list,
291 abitset_size, abitset_list, abitset_list_reverse, abitset_list):
292 Use bitset_bindex, not int or unsigned int or size_t, to count bits.
293 * lib/bbitset.h (struct bitset_vtable.size, struct bitset_vtable.count,
294 struct bitset_vtable.list, struct bitset_vtable.list_reverse,
295 bitset_count_, bitset_next, bitset_prev, bitset_first, bitset_last,
296 bitset_count_): Likewise.
297 * lib/bitset.h (bitset_iterator.num, bitset_iterator.i,
298 bitset_first, bitset_last): Likewise.
299 * lib/bitset_stats.c (bitset_stats_size, bitset_stats_list,
300 bitset_stats_list_reverse, bitset_stats_size,
301 bitset_stats_count, bitset_stats_list, bitset_stat_list_reverse):
302 Likewise.
303 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
304 * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
305 bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
306 bitsetv_reflexive_transitive_closure): Likewise.
307 * lib/bitsetv.h (bitsetv_alloc, bitsetv_create): Likewise.
308 * lib/ebitset.c (ebitset_size, ebitset_list, ebitset_list_reverse):
309 Likewise.
310 * lib/lbitset.c (lbitset_size, lbitset_list, lbitset_list_merge):
311 Likewise.
420f93c8 312
ff68026d
PE
313 * lib/abitset.c (abitset_ones, abitset_zero, abitset_bytes):
314 Use size_t, not unsigned int, to count bytes.
315 * lib/abitset.h (abitset_bytes): Likewise.
316 * lib/bitset.c (bitset_bytes, bitset_alloc, bitset_obstack_alloc):
317 Likewise.
318 * lib/bitset.h (bitset_bytes): Likewise.
319 * lib/bitset_stats.c (bitset_stats_bytes, bitset_stats_init): Likewise.
320 * lib/bitset_stats.h (bitset_stats_bytes): Likewise.
321 * lib/bitsetv.c (bitsetv_alloc): Likewise.
322 * lib/ebitset.c (ebitset_bytes): Likewise.
323 * lib/ebitset.h (ebitset_bytes): Likewise.
324 * lib/lbitset.c (lbitset_bytes): Likewise.
325 * lib/lbitset.h (lbitset_bytes): Likewise.
420f93c8 326
ff68026d
PE
327 * lib/abitset.c (abitset_empty_p, abitset_not, abitset_equal_p,
328 abitset_subset_p, abitset_disjoint_p, abitset_and,
329 abitset_and_cmp, abitset_andn, abitset_andn_cmp, abitset_or,
330 abitset_or_cmp, abitset_xor, abitset_xor_cmp, abitset_and_or,
331 abitset_and_or_cmp, abitset_andn_or, abitset_andn_or_cmp,
332 abitset_or_and, abitset_or_and_cmp):
333 Use bitset_windex instead of unsigned int.
334 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
335 * lib/ebitset.c (struct ebitset_struct.size, ebitset_elts_grow,
336 ebitset_elt_add, ebitset_elt_remove, ebitset_weed,
337 ebitset_elt_find, ebitset_list_reverse, ebitset_list, ebitset_init):
338 Likewise.
339 * lib/lbitset.c (lbitset_ones, lbitset_not): Likewise.
420f93c8 340
ff68026d
PE
341 * lib/bitset.c (bitset_print):
342 Use proper printf formats for widths of integer types.
343 * lib/bitset_stats.c (bitset_percent_histogram_print,
344 bitset_log_histogram_print, bitset_stats_print_1): Likewise.
345 * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
346 * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
347 * lib/lbitset.c (lbitset_bytes): Likewise.
420f93c8 348
ff68026d
PE
349 * lib/bbitset.h (BITSET_BINDEX_MAX, BITSET_WINDEX_MAX,
350 BITSET_SIZE_MAX): New macros.
351 (BITSET_INDEX_MAX): Remove. It wasn't right, since it assumed that
352 sizeof (bitset_word) == sizeof (bitset_windex). All uses changed
353 to BITSET_WINDEX_MAX.
354
355 * lib/bitset.c (bitset_next, bitset_prev, bitset_first,
356 bitset_last): Return BITSET_BINDEX_MAX (not -1) for no value,
357 since we now return the bitset_bindex type (not int).
358
359 * lib/bitsetv.c (bitsetv_alloc): Check for arithmetic overflow
360 when computing sizes.
361 * lib/ebitset.c (ebitset_elts_grow): Likewise.
362
363 * lib/lbitset.c (lbitset_elt_find): Simplify windex calculation
364 and avoid cast to unsigned.
365
6aa452a6
AD
3662002-09-30 Akim Demaille <akim@epita.fr>
367
368 * lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
369 * lib/bitset_stats.c, lib/bitsetv.c, lib/ebitset.c, lib/lbitset.c:
370 Updates from Michael Hayes.
371
927f7817
AD
3722002-09-30 Art Haas <ahaas@neosoft.com>
373
374 * configure.ac: Update AC_OUTPUT and AM_CONFIG_HEADER
375 invocations.
376 * tests/cxx-type.at (declarator): Don't rely on NDEBUG being not
377 defined.
378
9738f41e
AD
3792002-09-27 Akim Demaille <akim@epita.fr>
380
381 Version 1.49c.
382
a5c75d7f
AD
3832002-09-27 Akim Demaille <akim@epita.fr>
384
385 * configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7.
386 (Because of AC_LIBSOURCE).
387
8280e179
AD
3882002-09-27 Akim Demaille <akim@epita.fr>
389
390 Playing with Autoscan.
391
392 * configure.ac: Remove the old LIBOBJ tweaks.
393 (AC_REPLACE_FUNCS): Add strrchr and strtol.
394 * lib/strrchr.c: New.
395 * lib/strtol.c: New, from the Coreutils 4.5.1.
396
ae64af35
AD
3972002-09-27 Akim Demaille <akim@epita.fr>
398
399 Playing with Autoscan.
400
401 * m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New.
402 * lib/Makefile.am (libbison_a_SOURCES): No longer include
403 argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd.
404 * lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the
405 Coreutils 4.5.1.
406
d1a1114f
AD
4072002-09-24 Akim Demaille <akim@epita.fr>
408
409 * doc/bison.texinfo (Stack Overflow): xref to Recursion.
410 (Frequently Asked Questions, Parser Stack Overflow): New.
411
b906441c
AD
4122002-09-13 Akim Demaille <akim@epita.fr>
413
414 Playing with autoscan.
415
416 * src/reader.c (get_merge_function): Use xstrdup, not strdup.
417 * src/files.c (skeleton_find): Remove, unused.
418 * m4/memcmp.m4: New, from the Coreutils 4.5.1.
419 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP.
420
bd701811
AD
4212002-09-13 Akim Demaille <akim@epita.fr>
422
423 * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3.
424 * Makefile.am (AUTOMAKE_OPTIONS): Don't.
425
e0a13e7b
AD
4262002-09-13 Akim Demaille <akim@epita.fr>
427
428 * configure.ac: Require 2.54.
429 s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/.
430 s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/.
431 * m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4:
432 Remove, provided by Autoconf macros.
433
c97011bf
AD
4342002-09-12 Akim Demaille <akim@epita.fr>
435
436 * m4/prereq.m4: Update, from Coreutils 4.5.1.
437
d862b1be
AD
4382002-09-12 Akim Demaille <akim@epita.fr>
439
440 * m4/prereq.m4: Update, from Fileutils 4.1.5.
441 * configure.ac (jm_PREREQ_TEMPNAME): Invoke it.
442 Reported by Martin Mokrejs.
443
3d38c03a
AD
4442002-09-10 Akim Demaille <akim@epita.fr>
445
446 * src/parse-gram.y: Associate a human readable string to each
447 token type.
448 * tests/regression.at (Invalid inputs): Adjust.
449
b6347355
AD
4502002-09-10 Gary V. Vaughan <gary@gnu.org>
451
452 * tests/Makefile.am ($(srcdir)/package.m4): Bison now ships
453 with an Autoconf-2.5x style configure.ac.
454
09ba4ab2
PE
4552002-09-06 Paul Eggert <eggert@twinsun.com>
456
457 * doc/bison.texinfo (Conditions): Make explicit that the GPL
458 exception applies only to yacc.c. This is a modification of a
459 patch originally suggested by Akim Demaille.
460
21846f69
AD
4612002-09-06 Akim Demaille <akim@epita.fr>
462
09ba4ab2
PE
463 * data/c.m4 (b4_copyright): Move the GPL exception comment from
464 here to...
465 * data/yacc.c: here.
466
21846f69
AD
467 * data/lalr1.cc (struct yyltype): Don't define it, since we use
468 LocationType.
469 (b4_ltype): Default to yy::Location from location.hh.
470
c0ad8bf3
AD
4712002-09-04 Jim Meyering <jim@meyering.net>
472
473 * data/yacc.c: Guard the declaration of yytoknum also with
474 `#ifdef YYPRINT', so it is declared only when used.
475
3a93251e
AD
4762002-09-04 Akim Demaille <akim@epita.fr>
477
478 * configure.in: Rename as...
479 * configure.ac: this.
480 Bump to 1.49c.
481
427c0dda
AD
4822002-09-04 Akim Demaille <akim@epita.fr>
483
484 * src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
485 * src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
486 translate maintainer only messages.
487
6a254321
PE
4882002-08-12 Paul Eggert <eggert@twinsun.com>
489
645e30d1
PE
490 Version 1.49b.
491
6a254321
PE
492 * Makefile.am (SUBDIRS): Remove intl.
493 (DISTCLEANFILES): Remove.
494 * NEWS: Mention that GNU M4 is now required. Clarify what is
495 meant by "larger grammars". Mention the pt_BR translation.
496 * configure.in (AC_CHECK_DECLS): Add getenv, getopt.
497 (AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var.
498 Bump version from 0.11.2 to 0.11.5.
499 (BISON_PREREQ_STAGE): Remove.
500 (AM_GNU_GETTEXT): Use external gettext.
501 (AC_OUTPUT): Remove intl/Makefile.
502
503 * config/depcomp, config/install-sh: Sync with Automake 1.6.3.
504
505 * data/glr.c: Include string.h, for strlen.
506 (yyreportParseError): Use size_t for yysize.
507 (yy_yypstack): No longer nested inside yypstates, as nested
508 functions are not portable. Do not assume size_t is the
509 same width as int.
510 (yypstates): Do not assume that ptrdiff_t is the same width
511 as int, and similarly for yyposn and YYINDEX.
512
513 * data/yacc.c: Fix comment about `$$ = $1': it can copy garbage.
514
515 * lib/Makefile.am (INCLUDES): Do not include from the intl
516 directory, which has been removed.
517 * src/Makefile.am (INCLUDES): Likewise.
518
519 * lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h.
520 (bitsets_sources, additional_bitsets_sources, timevars_sources):
521 New vars.
522
523 * lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension.
524 * tests/Makefile.am (EXTRA_DIST): Likewise.
525
526 * lib/abitset.c (abitset_reverse_list, ebitset_reverse_list):
527 Do not assume that bitset_windex is the same width as unsigned.
528
529 * lib/abitset.c (abitset_unused_clear): Do not assume that
530 bitset_word is the same width as int.
531 * lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise.
532 * lib/bitset.h (bitset_set, bitset_reset): Likewise.
533 * lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise.
534 * lib/ebitset.c (ebitset_set, ebitset_reset): Likewise.
535 * lib/lbitset.c (lbitset_set, lbitset_reset): Likewise.
536
537 * lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for
538 portability to one's complement hosts!).
539 * lib/ebitset.c (ebitset_op1): Likewise.
540 * lib/lbitset.c (lbitset_op1): Likewise.
541
542 * lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar.
543 * lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
544 lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c:
545 Sync with fileutils.
546 * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
547 lib/gettext.h: Sync with diffutils.
548
549 * lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c,
550 lib/strspn.c, lib/tempname.c: Use GPL, not LGPL.
551
552 * lib/obstack.c, lib/obstack.h: Sync with fileutils, except use
553 PROTOTYPES to check for prototypes, and "defined __STDC__" to
554 check for void *.
555
556 * lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not
557 size_t; the old version tried to do this but casted improperly.
558 (bitset_bindex, bitset_windex): Now size_t, not unsigned long.
559 (bitset_test): Now returns int, not unsigned long.
560
561 * lib/bitset_stats.c: Include "gettext.h".
562 (_): New macro.
563 (bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't
564 name locals "index", as it generates unnecessary warnings on some
565 hosts that have an "index" function.
566
567 * lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print,
568 bitset_stats_read, bitset_stats_write): Wrap strings in _() if
569 they need translation.
570 * src/LR0.c (state_list_append, new_itemsets, get_state,
571 append_states, generate_states): Likewise.
572 * src/assoc.c (assoc_to_string): Likewise.
573 * src/closure.c (print_closure, set_firsts, closure): Likewise.
574 * src/gram.c (grammar_dump): Likewise.
575 * src/injections.c (injections_compute): Likewise.
576 * src/lalr.c (lookaheads_print): Likewise.
577 * src/relation.c (relation_transpose): Likewise.
578 * src/scan-gram.l: Likewise.
579 * src/tables.c (table_grow, pack_vector): Likewise.
580
581 * m4/Makefile.am (EXTRA_DIST): Remove codeset.m4,
582 glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4.
583 * m4/malloc.m4, m4/realloc.m4: Sync with diffutils.
584 * m4/mbstate_t.m4: Sync with fileutils.
585 * m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T.
586
587 * po/LINGUAS: Add pt_BR.
588 * po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c,
589 src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c,
590 lib/timevar.c.
591 Use src/parse-gram.y instead of src/parse-gram.c, as the gettext
592 manual recommends.
593 Similarly, use src/scan-gram.l instead of src/scan-gram.c.
594
595 * src/complain.c (strerror_r): Remove decl; not needed.
596 (strerror): Use same pattern as ../lib/error.c.
597
598 * src/files.c, src/files.h (compute_header_macro): Remove; unused.
599
600 * src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int.
601
602 * src/main.c (main): Cast result of bindtextdomain and textdomain
603 to void, to avoid a GCC warning when --disable-nls is in effect.
604
605 * src/scan-gram.l: Use strings rather than escapes when possible,
606 to minimize the number of warnings from xgettext.
607 (handle_action_dollar, handle_action_at): Don't use isdigit,
608 as it mishandles negative chars and it may not work as expected
609 outside the C locale.
610
611 * src/symtab.c (symbol_get): Don't cast LHS of an assignment;
612 this is a GCC extension and is not portable to other compilers.
613
614 * src/system.h (alloca): Use same pattern as ../lib/error.c.
615 Do not include <ctype.h>; no longer needed.
616 Do not include <malloc.h>; no longer needed (and generates
617 warnings on OpenBSD 3.0).
618
619 * tests/cxx-type.at (yylex): Do not pass signed char to isupper;
620 it's not portable.
621
622 * tests/regression.at: Do not use 'cc -c input.c -o input';
623 Sun C rejects this. Instead, use 'cc -c input.c -o input.o'.
624
625 * tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero
626 exit status as failure, not just exit status 1. Sun C exits
627 with status 2 sometimes.
628
629 * tests/torture.at (AT_INCREASE_DATA_SIZE): New macro.
630 Use it for the two large tests.
631
c8f002c7
AD
6322002-08-02 Akim Demaille <akim@epita.fr>
633
634 * src/conflicts.c (conflicts_output): Don't output rules never
635 reduced here, since anyway that computation doesn't work.
636 * src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
637 (rule_useless_p, rule_never_reduced_p): New.
638 (grammar_rules_partial_print): Use a filter instead of a range.
639 Display the title only if needed.
640 (grammar_rules_print): Adjust.
641 (grammar_rules_never_reduced_report): New.
642 * src/tables.c (action_row): Move the computation of rules never
643 reduced to...
644 (token_actions): here.
645 * src/main.c (main): Make the parser before making the report, so
646 that rules never reduced are computed.
647 Call grammar_rules_never_reduced_report.
648 * src/print.c (print_results): Report rules never reduced.
649 * tests/conflicts.at, tests/reduce.at: Adjust.
650
cd08e51e
AD
6512002-08-01 Akim Demaille <akim@epita.fr>
652
653 Instead of attaching lookaheads and duplicating the rules being
654 reduced by a state, attach the lookaheads to the reductions.
655
656 * src/state.h (state_t): Remove the `lookaheads',
657 `lookaheads_rule' member.
658 (reductions_t): Add a `lookaheads' member.
659 Use a regular array for the `rules'.
660 * src/state.c (reductions_new): Initialize the lookaheads member
661 to 0.
662 (state_rule_lookaheads_print): Adjust.
663 * src/state.h, src/state.c (state_reductions_find): New.
664 * src/conflicts.c (resolve_sr_conflict, set_conflicts)
665 (count_rr_conflicts): Adjust.
666 * src/lalr.c (LArule): Remove.
667 (add_lookback_edge): Adjust.
668 (state_lookaheads_count): New.
669 (states_lookaheads_initialize): Merge into...
670 (initialize_LA): this.
671 (lalr_free): Adjust.
672 * src/main.c (main): Don't free nullable and derives too early: it
673 is used by --verbose.
674 * src/print.c, src/print_graph.c, src/tables.c: Adjust.
675
bb0027a9
AD
6762002-08-01 Akim Demaille <akim@epita.fr>
677
678 * src/derives.h, src/derives.c (derives): A `rule_t***' instead of
679 `rule_number_t**'.
680 (set_derives, free_derives): Rename as...
681 (derives_compute, derives_free): this.
682 Adjust all dependencies.
683 * src/nullable.c (set_nullable, free_nullable): Rename as...
684 (nullable_compute, nullable_free): these.
685 (rule_list_t): Store rule_t *, not rule_number_t.
686 * src/state.c (state_rule_lookaheads_print): Directly compare rule
687 pointers, instead of their numbers.
688 * src/main.c (main): Call nullable_free, and derives_free earlier,
689 as they were lo longer used.
690
3325ddc4
AD
6912002-08-01 Akim Demaille <akim@epita.fr>
692
693 * lib/timevar.c (get_time): Include children time.
694 * src/lalr.h (LA, LArule): Don't export them: used with the
695 state_t.
696 * src/lalr.c (LA, LArule): Static.
697 * src/lalr.h, src/lalr.c (lalr_free): New.
698 * src/main.c (main): Call it.
699 * src/tables.c (pack_vector): Check whether loc is >= to the
700 table_size, not >.
701 (pack_tables): Don't free froms, tos, conflict_tos, and pos...
702 (tables_generate): do it, since that's also it which allocates
703 them.
704 Don't free LA and LArule, main does.
705
c6f1a33c
AD
7062002-07-31 Akim Demaille <akim@epita.fr>
707
708 Separate parser tables computation and output.
709
710 * src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
711 (conflict_list, conflict_list_cnt, table, check, table_ninf)
712 (yydefgoto, yydefact, high): Move to...
713 * src/tables.h, src/tables.c: here.
714 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
715 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
716 (symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
717 (froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
718 (ACTION_MIN, actrow, order, nentries, pos, conflrow)
719 (conflict_list_free, table_size, lowzero, table_grow, conflict_row)
720 (action_row, save_row, token_actions, save_column, default_goto)
721 (goto_actions, sort_actions, matching_state, pack_vector)
722 (table_ninf_remap, pack_table, prepare_actions): Move to...
723 * src/tables.c: here.
724 * src/tables.h, src/tables.c(tables_generate, tables_free): New.
725 * src/output.c (token_actions, output_base, output_conflicts)
726 (output_check): Merge into...
727 (prepare_actions): this.
728 (actions_output): Rename as...
729 (user_actions_output): this.
730 * src/main.c (main): Call tables_generate and tables_free.
731
1509d42f
AD
7322002-07-31 Akim Demaille <akim@epita.fr>
733
734 Steal GCC's --time-report support.
735
736 * lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
737 stolen/adjusted from GCC.
738 * m4/stage.m4: Remove time related checks.
739 * m4/timevar.m4: New.
740 * configure.in: Adjust.
741 * src/system.h: Adjust to using timevar.h.
742 * src/getargs.h, src/getargs.c: Support trace_time for
743 --trace=time.
744 * src/main.c (stage): Remove.
745 (main): Replace `stage' invocations with timevar calls.
746 * src/output.c: Insert pertinent timevar calls.
747
273a74fa
AD
7482002-07-31 Akim Demaille <akim@epita.fr>
749
750 Let --trace have arguments.
751
752 * src/getargs.h (enum trace_e): New.
753 * src/getargs.c (trace_args, trace_types, trace_argmatch): New.
754 (long_options, short_options): --trace/-T takes an optional
755 argument.
756 Change all the uses of trace_flag to reflect the new flags.
757 * tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.
758
759 Strengthen `stage' portability.
760
761 * m4/stage.m4 (BISON_PREREQ_STAGE): New.
762 * configure.in: Use it.
763 Don't check for malloc.h and sys/times.h.
764 * src/system.h: Include them when appropriate.
765 * src/main.c (stage): Compile only when mallinfo, struct mallinfo,
766 times and struct tms are available.
767
217598da
AD
7682002-07-30 Akim Demaille <akim@epita.fr>
769
770 In verbose parse error message, don't report `error' as an
771 expected token.
772 * tests/actions.at (Printers and Destructors): Adjust.
773 * tests/calc.at (Calculator $1): Adjust.
774 * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
775 error message, do not report the parser accepts the error token in
776 that state.
777
52489d44
AD
7782002-07-30 Akim Demaille <akim@epita.fr>
779
780 Normalize conflict related messages.
781
782 * src/complain.h, src/complain.c (warn, complain): New.
783 * src/conflicts.c (conflicts_print): Use them.
784 (conflict_report_yacc): New, extracted from...
785 (conflicts_print): here.
786 * tests/conflicts.at, tests/existing.at: Adjust.
787
e8832397
AD
7882002-07-30 Akim Demaille <akim@epita.fr>
789
790 Report rules which are never reduced by the parser: those hidden
791 by conflicts.
792
793 * src/LR0.c (save_reductions): Don't make the final state too
794 different: save its reduction (accept) instead of having a state
795 without any action (no shift or goto, no reduce).
796 Note: the final state is now a ``regular'' state, i.e., the
797 parsers now contain `reduce 0' as default reduction.
798 Nevertheless, since they decide to `accept' when yystate =
799 final_state, they still will not reduce rule 0.
800 * src/print.c (print_actions, print_reduction): Adjust.
801 * src/output.c (action_row): Track reduced rules.
802 (token_actions): Report rules never reduced.
803 * tests/conflicts.at, tests/regression.at: Adjust.
804
caf23d24
AD
8052002-07-30 Akim Demaille <akim@epita.fr>
806
807 `stage' was accidently included in a previous patch.
808 Initiate its autoconfiscation.
809
810 * configure.in: Look for malloc.h and sys/times.h.
811 * src/main.c (stage): Adjust.
812 Report only when trace_flag.
813
640748ee
AD
8142002-07-29 Akim Demaille <akim@epita.fr>
815
816 * src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
817 state_number_t.
818 (errs_t): symbol_t*, not symbol_number_t.
819 (reductions_t): rule_t*, not rule_number_t.
820 (FOR_EACH_SHIFT): New.
821 * src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
822 * src/print.c, src/print_graph.c: Adjust.
823
88bce5a2
AD
8242002-07-29 Akim Demaille <akim@epita.fr>
825
826 Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.
827
828 * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
829 (endtoken, accept): these.
830 * src/reader.c (reader): Set endtoken's default tag to "$end".
831 Set undeftoken's tag to "$undefined" instead of "$undefined.".
832 * doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
833 Adjust.
834
1bfb97db
AD
8352002-07-29 Akim Demaille <akim@epita.fr>
836
837 * src/reduce.c (reduce_grammar): When the language is empty,
838 complain about the start symbol, not the axiom.
839 Use its location.
840 * tests/reduce.at (Empty Language): New.
841
fc5734fe
AD
8422002-07-26 Akim Demaille <akim@epita.fr>
843
844 * src/reader.h, src/reader.c (gram_error): ... can't get
845 yycontrol without making too strong assumptions on the parser
846 itself.
847 * src/output.c (prepare_tokens): Use the real 0th value of
848 token_translations instead of `0'.
849 * src/parse-gram.y (yyerror): Don't rely on yycontrol being
850 visible here.
851 * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
852 for the time being: %locations ought to provide it to yyerror.
853
3650b4b8
AD
8542002-07-25 Akim Demaille <akim@epita.fr>
855
856 * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
857 * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
858 * tests/regression.at (Web2c Actions): Adjust.
859
4b3d3a8e
AD
8602002-07-25 Akim Demaille <akim@epita.fr>
861
862 Stop storing rules from 1 to nrules + 1.
863
864 * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
865 * src/nullable.c, src/output.c, src/print.c, src/reader.c
866 * src/reduce.c: Allocate and free from &rules[0], not &rules[1].
867 Iterate from 0 to nrules.
868 Use rule_number_as_item_number and item_number_as_rule_number.
869 Adjust to `derive' now containing possibly 0.
870 * src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
871 Handle the `- 1' part in rule numbers from/to item numbers.
872 * src/conflicts.c (log_resolution): Fix the message which reversed
873 shift and reduce.
874 * src/output.c (action_row): Initialize default_rule to -1.
875 (token_actions): Adjust.
876 * tests/sets.at (Nullable, Firsts): Fix the previously bogus
877 expected output.
878 * tests/conflicts.at (Resolved SR Conflicts): Likewise.
879
4a2a22f4
AD
8802002-07-25 Akim Demaille <akim@epita.fr>
881
882 * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
883 (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
884 (b4_c_knr_arg_decl): New.
885 * data/yacc.c: Use it to define yysymprint, yydestruct, and
886 yyreport_parse_error.
887
b8df3223
AD
8882002-07-25 Akim Demaille <akim@epita.fr>
889
890 * data/yacc.c (yyreport_parse_error): New, extracted from...
891 (yyparse): here.
892 (yydestruct, yysymprint): Move above yyparse.
893 Be K&R compliant.
894
a762e609
AD
8952002-07-25 Akim Demaille <akim@epita.fr>
896
897 * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
898 replace...
899 (b4_sint_type, b4_uint_type): these.
900 * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
901 * tests/regression.at (Web2c Actions): Adjust.
902
12b0043a
AD
9032002-07-25 Akim Demaille <akim@epita.fr>
904
905 * src/gram.h (TIEM_NUMBER_MAX): New.
906 (item_number_of_rule_number, rule_number_of_item_number): Rename
907 as...
908 (rule_number_as_item_number, item_number_as_rule_number): these.
909 Adjust dependencies.
910 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
911 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
912 (symbol_number_to_vector_number): New.
913 (order): Of vector_number_t* type.
914 (base_t, BASE_MAX, BASE_MIN): New.
915 (froms, tos, width, pos, check): Of base_t type.
916 (action_number_t, ACTION_MIN, ACTION_MAX): New.
917 (actrow): Of action_number_t type.
918 (conflrow): Of unsigned int type.
919 (table_ninf, base_ninf): New.
920 (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
921 (muscle_insert_int_table, muscle_insert_base_table)
922 (muscle_insert_rule_number_table): New.
923 (prepare_tokens): Output `toknum' as int_table.
924 (action_row): Returns a rule_number_t.
925 Use ACTION_MIN, not SHRT_MIN.
926 (token_actions): yydefact is rule_number_t*.
927 (table_ninf_remap): New.
928 (pack_table): Use it for `base' and `table'.
929 * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
930 replaced with...
931 (YYPACT_NINF, YYTABLE_NINF): these.
932 (yypact, yytable): Compute their types instead of hard-coded
933 `short'.
934 * tests/regression.at (Web2c Actions): Adjust.
935
5dde258a
AD
9362002-07-19 Akim Demaille <akim@epita.fr>
937
938 * src/scan-gram.l (id): Can start with an underscore.
939
a945ec39
AD
9402002-07-16 Akim Demaille <akim@epita.fr>
941
942 * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
943 Adjust all former `associativity' dependencies.
944 * src/symtab.c (symbol_new): Default associativity is `undef', not
945 `right'.
946 (symbol_check_alias_consistence): Adjust.
947
fae437e8
AD
9482002-07-09 Akim Demaille <akim@epita.fr>
949
950 * doc/bison.texinfo: Properly set the ``header'' part.
951 Use @dircategory ``GNU programming tools'' as per Texinfo's
952 documentation.
953 Use @copying.
954
1a715ef2
AD
9552002-07-09 Akim Demaille <akim@epita.fr>
956
957 * lib/quotearg.h: Protect against multiple inclusions.
958 * src/location.h (location_t): Add a `file' member.
959 (LOCATION_RESET, LOCATION_PRINT): Adjust.
960 * src/complain.c (warn_at, complain_at, fatal_at): Drop
961 `error_one_per_line' support.
962
a5d50994
AD
9632002-07-09 Akim Demaille <akim@epita.fr>
964
965 * src/complain.h, src/complain.c (warn, complain): Remove, unused.
966 * src/reader.c (lineno): Remove.
967 Adjust all dependencies.
968 (get_merge_function): Take a location and use complain_at.
969 * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
970 * tests/regression.at (Invalid inputs, Mixing %token styles):
971 Adjust.
972
b275314e
AD
9732002-07-09 Akim Demaille <akim@epita.fr>
974
975 * src/parse-gram.y (rules_or_grammar_declaration): Add an error
976 recovery rule, and forbid extensions when --yacc.
977 (gram_error): Use complain_at.
978 * src/reader.c (reader): Exit if there were parse errors.
979
865b9df1
AD
9802002-07-09 Akim Demaille <akim@epita.fr>
981
982 * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
983 (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
984 Reported by R Blake <blakers@mac.com>.
985
c76e14da
AD
9862002-07-09 Akim Demaille <akim@epita.fr>
987
988 * data/yacc.c: Output the copyright notive in the header.
989
7db2ed2d
AD
9902002-07-03 Akim Demaille <akim@epita.fr>
991
992 * src/output.c (froms, tos): Are state_number_t.
993 (save_column): sp, sp1, and sp2 are state_number_t.
994 (prepare): Rename `final' as `final_state_number', `nnts' as
995 `nterms_number', `nrules' as `rules_number', `nstates' as
996 `states_number', and `ntokens' as `tokens_number'. Remove `nsym',
997 unused.
998 * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
999 * data/lalr1.cc (nsym_): Remove, unused.
1000
e68e0410
AD
10012002-07-03 Akim Demaille <akim@epita.fr>
1002
1003 * src/lalr.h, src/lalr.c (goto_number_t): New.
1004 * src/lalr.c (goto_list_t): New.
1005 Propagate them.
1006 * src/nullable.c (rule_list_t): New.
1007 Propagate.
1008 * src/types.h: Remove.
1009
e1a4f3a4
AD
10102002-07-03 Akim Demaille <akim@epita.fr>
1011
1012 * src/closure.c (print_fderives): Use rule_rhs_print.
1013 * src/derives.c (print_derives): Use rule_rhs_print.
1014 (rule_list_t): New, replaces `shorts'.
1015 (set_derives): Add comments.
1016 * tests/sets.at (Nullable, Firsts): Adjust.
1017
536545f3
AD
10182002-07-03 Akim Demaille <akim@epita.fr>
1019
1020 * src/output.c (prepare_actions): Free `tally' and `width'.
1021 (prepare_actions): Allocate and free `order'.
1022 * src/symtab.c (symbols_free): Free `symbols'.
1023 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
1024 * src/output.c (m4_invoke): Move to...
1025 * src/scan-skel.l: here.
1026 (<<EOF>>): Close yyout, and free its name.
1027
8b752b00
AD
10282002-07-03 Akim Demaille <akim@epita.fr>
1029
1030 Fix some memory leaks, and fix a bug: state 0 was examined twice.
1031
1032 * src/LR0.c (new_state): Merge into...
1033 (state_list_append): this.
1034 (new_states): Merge into...
1035 (generate_states): here.
1036 (set_states): Don't ensure a proper `errs' state member here, do it...
1037 * src/conflicts.c (conflicts_solve): here.
1038 * src/state.h, src/state.c: Comment changes.
1039 (state_t): Rename member `shifts' as `transitions'.
1040 Adjust all dependencies.
1041 (errs_new): For consistency, also take the values as argument.
1042 (errs_dup): Remove.
1043 (state_errs_set): New.
1044 (state_reductions_set, state_transitions_set): Assert that no
1045 previous value was assigned.
1046 (state_free): New.
1047 (states_free): Use it.
1048 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
1049 temporary storage: use `errs' and `nerrs' as elsewhere.
1050 (set_conflicts): Allocate and free this `errs'.
1051
613f5e1a
AD
10522002-07-02 Akim Demaille <akim@epita.fr>
1053
1054 * lib/libiberty.h: New.
1055 * lib: Update the bitset implementation from upstream.
1056 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
1057 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
1058 * src/main.c: Adjust bitset stats calls.
1059
26e0cadc
PE
10602002-07-01 Paul Eggert <eggert@twinsun.com>
1061
1062 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
1063 char, so that negative chars don't collide with $.
1064
1154cced
AD
10652002-06-30 Akim Demaille <akim@epita.fr>
1066
1067 Have the GLR tests be `warning' checked, and fix the warnings.
1068
1069 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
1070 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
1071 (yyremoveDeletes): `yyi' and `yyj' are size_t.
1072 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
1073 (yyaddDeferredAction): static.
1074 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
1075 (yyreportParseError): yyprefix is const.
1076 yytokenp is used only when verbose.
1077 (yy__GNUC__): Replace with __GNUC__.
1078 (yypdumpstack): yyi is size_t.
1079 (yypreference): Un-yy local variables and arguments, to avoid
1080 clashes with `yyr1'. Anyway, we are not in the user name space.
1081 (yytname_size): be an int, as is compared with ints.
1082 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
1083 Use them.
1084 * tests/cxx-gram.at: Use quotation to protect $1.
1085 Use AT_COMPILE to enable warnings hunts.
1086 Prototype yylex and yyerror.
1087 `Use' argc.
1088 Include `string.h', not `strings.h'.
1089 Produce and prototype stmtMerge only when used.
1090 yylex takes a location.
1091
97650f4e
AD
10922002-06-30 Akim Demaille <akim@epita.fr>
1093
1094 We spend a lot of time in quotearg, in particular when --verbose.
1095
1096 * src/symtab.c (symbol_get): Store a quoted version of the key.
1097 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
1098 Adjust all callers.
1099
d2576365
AD
11002002-06-30 Akim Demaille <akim@epita.fr>
1101
1102 * src/state.h (reductions_t): Rename member `nreds' as num.
1103 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
1104 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
1105
ccaf65bc
AD
11062002-06-30 Akim Demaille <akim@epita.fr>
1107
1108 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
1109 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
1110 (shifts_to): Rename as...
1111 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
1112 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
1113 (TRANSITION_IS_DISABLED, transitions_to): these.
1114
87675353
AD
11152002-06-30 Akim Demaille <akim@epita.fr>
1116
1117 * src/print.c (print_shifts, print_gotos): Merge into...
1118 (print_transitions): this.
1119 (print_transitions, print_errs, print_reductions): Align the
1120 lookaheads columns.
1121 (print_core, print_transitions, print_errs, print_state,
1122 print_grammar): Output empty lines separator before, not after.
1123 (state_default_rule_compute): Rename as...
1124 (state_default_rule): this.
1125 * tests/conflicts.at (Defaulted Conflicted Reduction),
1126 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
1127 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
1128
ce4ccb4b
AD
11292002-06-30 Akim Demaille <akim@epita.fr>
1130
1131 Display items as we display rules.
1132
1133 * src/gram.h, src/gram.c (rule_lhs_print): New.
1134 * src/gram.c (grammar_rules_partial_print): Use it.
1135 * src/print.c (print_core): Likewise.
1136 * tests/conflicts.at (Defaulted Conflicted Reduction),
1137 (Unresolved SR Conflicts): Adjust.
1138 (Unresolved SR Conflicts): Adjust and rename as...
1139 (Resolved SR Conflicts): this, as was meant.
1140 * tests/regression.at (Web2c Report): Adjust.
1141
bc933ef1
AD
11422002-06-30 Akim Demaille <akim@epita.fr>
1143
1144 * src/print.c (state_default_rule_compute): New, extracted from...
1145 (print_reductions): here.
1146 Pessimize, but clarify the code.
1147 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
1148
53d4308d
AD
11492002-06-30 Akim Demaille <akim@epita.fr>
1150
1151 * src/output.c (action_row): Let default_rule be always a rule
1152 number.
1153
574fb2d5
AD
11542002-06-30 Akim Demaille <akim@epita.fr>
1155
1156 * src/closure.c (print_firsts, print_fderives, closure):
1157 Use BITSET_EXECUTE.
1158 * src/lalr.c (lookaheads_print): Likewise.
1159 * src/state.c (state_rule_lookaheads_print): Likewise.
1160 * src/print_graph.c (print_core): Likewise.
1161 * src/print.c (print_reductions): Likewise.
1162 * src/output.c (action_row): Likewise.
1163 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
1164
05811fd7
AD
11652002-06-30 Akim Demaille <akim@epita.fr>
1166
1167 * src/print_graph.c: Use report_flag.
1168
0e4d5753
AD
11692002-06-30 Akim Demaille <akim@epita.fr>
1170
1171 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
1172 to...
1173 * src/relation.h, src/relation.c (traverse, relation_digraph)
1174 (relation_print, relation_transpose): New.
1175
24c7d800
AD
11762002-06-30 Akim Demaille <akim@epita.fr>
1177
1178 * src/state.h, src/state.c (shifts_to): New.
1179 * src/lalr.c (build_relations): Use it.
1180
9222837b
AD
11812002-06-30 Akim Demaille <akim@epita.fr>
1182
1183 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
1184 (item_number_of_rule_number, rule_number_of_item_number): New.
1185 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
1186 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
1187 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
1188 Propagate their use.
1189 Much remains to be done, in particular wrt `shorts' from types.h.
1190
260008e5
AD
11912002-06-30 Akim Demaille <akim@epita.fr>
1192
1193 * src/symtab.c (symbol_new): Initialize the `printer' member.
1194
8a731ca8
AD
11952002-06-30 Akim Demaille <akim@epita.fr>
1196
1197 * src/LR0.c (save_reductions): Remove, replaced by...
1198 * src/state.h, src/state.c (state_reductions_set): New.
1199 (reductions, errs): Rename as...
1200 (reductions_t, errs_t): these.
1201 Adjust all dependencies.
1202
32e1e0a4
AD
12032002-06-30 Akim Demaille <akim@epita.fr>
1204
1205 * src/LR0.c (state_list_t, state_list_append): New.
1206 (first_state, last_state): Now symbol_list_t.
1207 (this_state): Remove.
1208 (new_itemsets, append_states, save_reductions): Take a state_t as
1209 argument.
1210 (set_states, generate_states): Adjust.
1211 (save_shifts): Remove, replaced by...
1212 * src/state.h, src/state.c (state_shifts_set): New.
1213 (shifts): Rename as...
1214 (shifts_t): this.
1215 Adjust all dependencies.
1216 * src/state.h (state_t): Remove the `next' member.
1217
e5fb6710
AD
12182002-06-30 Akim Demaille <akim@epita.fr>
1219
1220 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
1221 escaped in slot 0.
1222
c7ca99d4
AD
12232002-06-30 Akim Demaille <akim@epita.fr>
1224
1225 Use hash.h for the state hash table.
1226
1227 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
1228 (allocate_storage): Use state_hash_new.
1229 (free_storage): Use state_hash_free.
1230 (new_state, get_state): Adjust.
1231 * src/lalr.h, src/lalr.c (states): Move to...
1232 * src/states.h (state_t): Remove the `link' member, no longer
1233 used.
1234 * src/states.h, src/states.c: here.
1235 (state_hash_new, state_hash_free, state_hash_lookup)
1236 (state_hash_insert, states_free): New.
1237 * src/states.c (state_table, state_compare, state_hash): New.
1238 * src/output.c (output_actions): Do not free states now, since we
1239 still need to know the final_state number in `prepare', called
1240 afterwards. Do it...
1241 * src/main.c (main): here: call states_free after `output'.
1242
df0e7316
AD
12432002-06-30 Akim Demaille <akim@epita.fr>
1244
1245 * src/state.h, src/state.c (state_new): New, extracted from...
1246 * src/LR0.c (new_state): here.
1247 * src/state.h (STATE_ALLOC): Move to...
1248 * src/state.c: here.
1249 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
1250 * src/state.h, src/state.c: here.
1251
39f41916
AD
12522002-06-30 Akim Demaille <akim@epita.fr>
1253
1254 * src/reader.c (gensym): Rename as...
1255 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
1256 (getsym): Rename as...
1257 (symbol_get): this.
1258
d57650a5
AD
12592002-06-30 Akim Demaille <akim@epita.fr>
1260
1261 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
1262 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
1263 * src/output.c, src/print.c, src/print_graph.c: Propagate.
1264 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
1265
5a08f1ce
AD
12662002-06-30 Akim Demaille <akim@epita.fr>
1267
1268 Make the test suite pass with warnings checked.
1269
1270 * tests/actions.at (Printers and Destructors): Improve.
1271 Avoid unsigned vs. signed issues.
1272 * tests/calc.at: Don't exercise the scanner here, do it...
1273 * tests/input.at (Torturing the Scanner): here.
1274
720623af
PH
12752002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1276
88e7e941 1277 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
720623af
PH
1278 reorganize first lines parallel to yacc.c.
1279
fb8135fa
AD
12802002-06-28 Akim Demaille <akim@epita.fr>
1281
1282 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
1283 (b4_token_enum, b4_token_defines): New, factored from...
1284 * data/lalr1.cc, data/yacc.c, glr.c: here.
1285
41442480
AD
12862002-06-28 Akim Demaille <akim@epita.fr>
1287
1288 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
1289 unused variables.
1290 * src/output.c (merger_output): static.
1291
e0e5bf84
AD
12922002-06-28 Akim Demaille <akim@epita.fr>
1293
1294 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
1295 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
1296 pacify GCC.
1297 * src/output.c (save_row): Initialize all the variables to pacify GCC.
e0e5bf84 1298
676385e2
PH
12992002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1300
1301 Accumulated changelog for new GLR parsing features.
1302
6a254321 1303 * src/conflicts.c (count_total_conflicts): Change name to
676385e2
PH
1304 conflicts_total_count.
1305 * src/conflicts.h: Ditto.
1306 * src/output.c (token_actions): Use the new name.
1307 (output_conflicts): Change conflp => conflict_list_heads, and
1308 confl => conflict_list for better readability.
1309 * data/glr.c: Use the new names.
1310 * NEWS: Add self to GLR announcement.
e0e5bf84 1311
676385e2
PH
1312 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
1313
1314 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
1315 Akim Demaille.
1316
1317 * data/bison.glr: Change name to glr.c
1318 * data/glr.c: Renamed from bison.glr.
1319 * data/Makefile.am: Add glr.c
e0e5bf84
AD
1320
1321 * src/getargs.c:
1322
676385e2
PH
1323 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
1324 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
e0e5bf84 1325
676385e2
PH
1326 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1327
1328 * data/bison.glr: Be sure to restore the
1329 current #line when returning to the skeleton contents after having
1330 exposed the input file's #line.
1331
1332 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1333
1334 * data/bison.glr: Bring up to date with changes to bison.simple.
1335
1336 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1337
1338 * data/bison.glr: Correct definitions that use b4_prefix.
1339 Various reformatting.
1340 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
1341 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
1342 yytokenp argument; now part of stack.
1343 (yychar): Define to behave as documented.
1344 (yyclearin): Ditto.
e0e5bf84 1345
676385e2
PH
1346 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1347
1348 * src/reader.h: Add declaration for free_merger_functions.
1349
1350 * src/reader.c (merge_functions): New variable.
1351 (get_merge_function): New function.
1352 (free_merger_functions): New function.
1353 (readgram): Check for %prec that is not followed by a symbol.
1354 Handle %dprec and %merge declarations.
1355 (packgram): Initialize dprec and merger fields in rules array.
1356
1357 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
1358 conflict_list_cnt, conflict_list_free): New variables.
1359 (table_grow): Also grow conflict_table.
e0e5bf84 1360 (prepare_rules): Output dprec and merger tables.
676385e2 1361 (conflict_row): New function.
e0e5bf84 1362 (action_row): Output conflict lists for GLR parser. Don't use
676385e2
PH
1363 default reduction in conflicted states for GLR parser so that there
1364 are spaces for the conflict lists.
1365 (save_row): Also save conflict information.
1366 (token_actions): Allocate conflict list.
1367 (merger_output): New function.
1368 (pack_vector): Pack conflict table, too.
1369 (output_conflicts): New function to output yyconflp and yyconfl.
1370 (output_check): Allocate conflict_tos.
1371 (output_actions): Output conflict tables, also.
1372 (output_skeleton): Output b4_mergers definition.
1373 (prepare): Output b4_max_rhs_length definition.
1374 Use 'bison.glr' as default skeleton for GLR parsers.
1375
1376 * src/gram.c (glr_parser): New flag.
1377 (grammar_free): Call free_merger_functions.
1378
1379 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
1380 all pairs of conflicting reductions, rather than just all tokens
1381 causing conflicts. Needed to size conflict tables.
e0e5bf84 1382 (conflicts_output): Modify call to count_rr_conflicts for new
676385e2
PH
1383 interface.
1384 (conflicts_print): Ditto.
1385 (count_total_conflicts): New function.
1386
1387 * src/reader.h (merger_list): New type.
1388 (merge_functions): New variable.
1389
1390 * src/lex.h (tok_dprec, tok_merge): New token types.
1391
1392 * src/gram.h (rule_s): Add dprec and merger fields.
1393 (glr_parser): New flag.
1394
1395 * src/conflicts.h (count_total_conflicts): New function.
1396
1397 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
1398
1399 * doc/bison.texinfo (Generalized LR Parsing): New section.
1400 (GLR Parsers): New section.
1401 (Language and Grammar): Mention GLR parsing.
1402 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
1403 Correct typo ("tge" -> "the").
1404
1405 * data/bison.glr: New skeleton for GLR parsing.
1406
1407 * tests/cxx-gram.at: New tests for GLR parsing.
1408
1409 * tests/testsuite.at: Include cxx-gram.at.
1410
1411 * tests/Makefile.am: Add cxx-gram.at.
e0e5bf84 1412
676385e2
PH
1413 * src/parse-gram.y:
1414
1415 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
1416
1417 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
e0e5bf84 1418
b5480d74 14192002-06-27 Akim Demaille <akim@epita.fr>
e2aaf4c4
AD
1420
1421 * src/options.h, src/options.c: Remove.
1422 * src/getargs.c (short_options, long_options): New.
1423
60491a94
AD
14242002-06-27 Akim Demaille <akim@epita.fr>
1425
1426 * data/bison.simple, data/bison.c++: Rename as...
1427 * data/yacc.c, data/lalr1.cc: these.
1428 * doc/bison.texinfo (Environment Variables): Remove.
1429
9be0c25b
AD
14302002-06-25 Raja R Harinath <harinath@cs.umn.edu>
1431
1432 * src/getargs.c (report_argmatch): Initialize strtok().
1433
1ae72863
AD
14342002-06-20 Akim Demaille <akim@epita.fr>
1435
1436 * data/bison.simple (b4_symbol_actions): New, replaces...
1437 (b4_symbol_destructor, b4_symbol_printer): these.
1438 (yysymprint): Be sure to call YYPRINT only for tokens, and using
1439 user token numbers.
1440
87542d29
AD
14412002-06-20 Akim Demaille <akim@epita.fr>
1442
1443 * data/bison.simple (yydestructor): Rename as...
1444 (yydestruct): this.
1445
1a31ed21
AD
14462002-06-20 Akim Demaille <akim@epita.fr>
1447
1448 * src/symtab.h, src/symtab.c (symbol_type_set)
1449 (symbol_destructor_set, symbol_precedence_set): The location is
1450 the last argument.
1451 Adjust all callers.
1452
e776192e
AD
14532002-06-20 Akim Demaille <akim@epita.fr>
1454
1455 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
1456 internals.
1457 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
1458 Takes a location.
1459 * src/symtab.h, src/symtab.c (symbol_class_set)
1460 (symbol_user_token_number_set): Likewise.
1461 Adjust all callers.
1462 Promote complain_at.
1463 * tests/input.at (Type Clashes): Adjust.
1464
5c1180b3
AD
14652002-06-20 Akim Demaille <akim@epita.fr>
1466
1467 * data/bison.simple (YYLEX): Fix the declaration when
1468 %pure-parser.
1469
e3170060
AD
14702002-06-20 Akim Demaille <akim@epita.fr>
1471
1472 * data/bison.simple (yysymprint): Don't print the token number,
1473 just its name.
1474 * tests/actions.at (Destructors): Rename as...
1475 (Printers and Destructors): this.
1476 Also exercise %printer.
1477
253862fd
AD
14782002-06-20 Akim Demaille <akim@epita.fr>
1479
1480 * data/bison.simple (YYDSYMPRINT): New.
1481 Use it to remove many of the #if YYDEBUG/if (yydebug).
1482
366eea36
AD
14832002-06-20 Akim Demaille <akim@epita.fr>
1484
1485 * src/symtab.h, src/symtab.c (symbol_t): printer and
1486 printer_location are new members.
1487 (symbol_printer_set): New.
1488 * src/parse-gram.y (PERCENT_PRINTER): New token.
1489 Handle its associated rule.
1490 * src/scan-gram.l: Adjust.
1491 (handle_destructor_at, handle_destructor_dollar): Rename as...
1492 (handle_symbol_code_at, handle_symbol_code_dollar): these.
1493 * src/output.c (symbol_printers_output): New.
1494 (output_skeleton): Call it.
1495 * data/bison.simple (yysymprint): New. Cannot be named yyprint
1496 since there are already many grammar files with a user `yyprint'.
1497 Replace the calls to YYPRINT to calls to yysymprint.
1498 * tests/calc.at: Adjust.
1499 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
1500 taking advantage of parser very internal details (stack size!).
1501
4f25ebb0
AD
15022002-06-20 Akim Demaille <akim@epita.fr>
1503
1504 * src/scan-gram.l: Complete the scanner with the missing patterns
1505 to pacify Flex.
1506 Use `quote' and `symbol_tag_get' where appropriate.
1507
93b68a0e
AD
15082002-06-19 Akim Demaille <akim@epita.fr>
1509
1510 * tests/actions.at (Destructors): Augment to test locations.
1511 * data/bison.simple (yydestructor): Pass it the current location
1512 if locations are enabled.
1513 Prototype only when __STDC__ or C++.
1514 Change the argument names to move into the yy name space: there is
1515 user code here.
1516
58612f1d
AD
15172002-06-19 Akim Demaille <akim@epita.fr>
1518
74310291
AD
1519 * data/bison.simple (b4_pure_if): New.
1520 Use it instead of #ifdef YYPURE.
1521
15222002-06-19 Akim Demaille <akim@epita.fr>
1523
1524 * data/bison.simple (b4_location_if): New.
58612f1d
AD
1525 Use it instead of #ifdef YYLSP_NEEDED.
1526
f25bfb75
AD
15272002-06-19 Akim Demaille <akim@epita.fr>
1528
1529 Prepare @$ in %destructor, but currently don't bind it in the
1530 skeleton, as %location use is not cleaned up yet.
1531
1532 * src/scan-gram.l (handle_dollar, handle_destructor_at)
1533 (handle_action_at): New.
1534 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
1535 a braced_code_t and a location as additional arguments.
1536 (handle_destructor_dollar): Instead of requiring `b4_eval', just
1537 unquote one when outputting `b4_dollar_dollar'.
1538 Adjust callers.
1539 * data/bison.simple (b4_eval): Remove.
1540 (b4_symbol_destructor): Adjust.
1541 * tests/input.at (Invalid @n): Adjust.
1542
c732d2c6
AD
15432002-06-19 Zack Weinberg <zack@codesourcery.com>
1544
1545 * doc/bison.texinfo: Document ability to have multiple
1546 prologue sections.
1547
8c165d89
AD
15482002-06-18 Akim Demaille <akim@epita.fr>
1549
1550 * src/files.c (compute_base_names): When computing the output file
1551 names from the input file name, strip the directory part.
1552
ca98bf57
AD
15532002-06-18 Akim Demaille <akim@epita.fr>
1554
1555 * data/bison.simple.new: Comment changes.
1556 Reported by Andreas Schwab.
1557
0bfb02ff
AD
15582002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
1559
1560 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
1561 there are no `label `yyoverflowlab' defined but not used' warnings
1562 when yyoverflow is defined.
1563
24c0aad7
AD
15642002-06-18 Akim Demaille <akim@epita.fr>
1565
1566 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
1567 new member.
1568 (symbol_destructor_set): Adjust.
1569 * src/output.c (symbol_destructors_output): Output the destructor
1570 locations.
1571 Output the symbol name.
1572 * data/bison.simple (b4_symbol_destructor): Adjust.
1573
5719c109
AD
15742002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
1575 and Akim Demaille <akim@epita.fr>
1576
1577 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
1578 what's left on the stack when the error recovery hits EOF.
1579 * tests/actions.at (Destructors): Complete to exercise this case.
1580
9280d3ef
AD
15812002-06-17 Akim Demaille <akim@epita.fr>
1582
1583 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
1584 arguments is really empty, not only equal to `[]'.
1585 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
1586 member.
1587 (symbol_destructor_set): New.
1588 * src/output.c (symbol_destructors_output): New.
1589 * src/reader.h (brace_code_t, current_braced_code): New.
1590 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
1591 (handle_dollar): Rename as...
1592 (handle_action_dollar): this.
1593 (handle_destructor_dollar): New.
1594 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
1595 (grammar_declaration): Use it.
1596 * data/bison.simple (yystos): Is always defined.
1597 (yydestructor): New.
1598 * tests/actions.at (Destructors): New.
1599 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
1600
dafdc66f
AD
16012002-06-17 Akim Demaille <akim@epita.fr>
1602
1603 * src/symlist.h, src/symlist.c (symbol_list_length): New.
1604 * src/scan-gram.l (handle_dollar, handle_at): Compute the
1605 rule_length only when needed.
1606 * src/output.c (actions_output, token_definitions_output): Output
1607 the full M4 block.
1608 * src/symtab.c: Don't access directly to the symbol tag, use
1609 symbol_tag_get.
1610 * src/parse-gram.y: Use symbol_list_free.
1611
56c47203
AD
16122002-06-17 Akim Demaille <akim@epita.fr>
1613
1614 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
1615 (symbol_list_prepend, get_type_name): Move to...
1616 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
1617 (symbol_list_prepend, symbol_list_n_type_name_get): here.
1618 Adjust all callers.
1619 (symbol_list_free): New.
1620 * src/scan-gram.l (handle_dollar): Takes a location.
1621 * tests/input.at (Invalid $n): Adjust.
1622
1e0bab92
AD
16232002-06-17 Akim Demaille <akim@epita.fr>
1624
1625 * src/reader.h, src/reader.c (symbol_list_new): Export it.
1626 (symbol_list_prepend): New.
1627 * src/parse-gram.y (%union): `list' is a new member.
1628 (symbols.1): New, replaces...
1629 (terms_to_prec.1, nterms_to_type.1): these.
1630 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
1631 Take a location as additional argument.
1632 Adjust all callers.
1633
04e60654
AD
16342002-06-15 Akim Demaille <akim@epita.fr>
1635
1636 * src/parse-gram.y: Move %token in the declaration section so that
1637 we don't depend upon CVS Bison.
1638
10e5b8bd
AD
16392002-06-15 Akim Demaille <akim@epita.fr>
1640
1641 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
1642 * src/print.c (print_core): Use it.
1643
9801d40c
AD
16442002-06-15 Akim Demaille <akim@epita.fr>
1645
1646 * src/conflicts.c (log_resolution): Accept the rule involved in
1647 the sr conflicts instead of the lookahead number that points to
1648 that rule.
1649 (flush_reduce): Accept the current lookahead vector as argument,
1650 instead of the index in LA.
1651 (resolve_sr_conflict): Accept the current number of lookahead
1652 bitset to consider for the STATE, instead of the index in LA.
1653 (set_conflicts): Adjust.
1654 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
1655
c0263492
AD
16562002-06-15 Akim Demaille <akim@epita.fr>
1657
1658 * src/state.h (state_t): Replace the `lookaheadsp' member, a
1659 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
1660 Adjust all dependencies.
1661 * src/lalr.c (initialize_lookaheads): Split into...
1662 (states_lookaheads_count, states_lookaheads_initialize): these.
1663 (lalr): Adjust.
1664
9757c359
AD
16652002-06-15 Akim Demaille <akim@epita.fr>
1666
1667 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
1668 out of...
1669 (grammar_rules_print): here.
1670 * src/reduce.c (reduce_output): Use it.
1671 * tests/reduce.at (Useless Rules, Reduced Automaton)
1672 (Underivable Rules): Adjust.
1673
6b98e4b5
AD
16742002-06-15 Akim Demaille <akim@epita.fr>
1675
1676 Copy BYacc's nice way to report the grammar.
1677
1678 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
1679 New.
1680 Don't print the rules' location, it is confusing and useless.
1681 (rule_print): Use grammar_rhs_print.
1682 * src/print.c (print_grammar): Use grammar_rules_print.
1683
6b98e4b5
AD
16842002-06-15 Akim Demaille <akim@epita.fr>
1685
1686 Complete and rationalize `useless thing' warnings.
1687
1688 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
1689 (symbol_tag_print): New.
1690 Use them everywhere in place of accessing directly the tag member.
1691 * src/gram.h, src/gram.c (rule_print): New.
1692 Use it where a rule used to be printed `by hand'.
1693 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
1694 (reduce_grammar_tables): Report the useless rules.
1695 (reduce_print): Useless things are a warning, not an error.
1696 Report it as such.
1697 * tests/reduce.at (Useless Nonterminals, Useless Rules):
1698 (Reduced Automaton, Underivable Rules): Adjust.
1699 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
1700 * tests/conflicts.at (Unresolved SR Conflicts)
1701 (Solved SR Conflicts): Adjust.
1702
ee000ba4
AD
17032002-06-15 Akim Demaille <akim@epita.fr>
1704
1705 Let symbols have a location.
1706
1707 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
1708 (getsym): Adjust.
1709 Adjust all callers.
1710 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
1711 Use location_t, not int.
1712 * src/symtab.c (symbol_check_defined): Take advantage of the
1713 location.
1714 * tests/regression.at (Invalid inputs): Adjust.
1715
8efe435c
AD
17162002-06-15 Akim Demaille <akim@epita.fr>
1717
1718 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
1719 (input): Don't try to initialize yylloc here, do it in the
1720 scanner.
1721 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
1722 * src/gram.h (rule_t): Change line and action_line into location
1723 and action_location, of location_t type.
1724 Adjust all dependencies.
1725 * src/location.h, src/location.c (empty_location): New.
1726 * src/reader.h, src/reader.c (grammar_start_symbol_set)
1727 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
1728 (grammar_current_rule_symbol_append)
1729 (grammar_current_rule_action_append): Expect a location as argument.
1730 * src/reader.c (grammar_midrule_action): Adjust to attach an
1731 action's location as dummy symbol location.
1732 * src/symtab.h, src/symtab.c (startsymbol_location): New.
1733 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
1734 the line numbers.
1735
1921f1d7
AD
17362002-06-14 Akim Demaille <akim@epita.fr>
1737
1738 Grammar declarations may be found in the grammar section.
1739
1740 * src/parse-gram.y (rules_or_grammar_declaration): New.
1741 (declarations): Each declaration may end with a semicolon, not
1742 just...
1743 (grammar_declaration): `"%union"'.
1744 (grammar): Branch to rules_or_grammar_declaration.
1745
4515534c
AD
17462002-06-14 Akim Demaille <akim@epita.fr>
1747
1748 * src/main.c (main): Invoke scanner_free.
1749
f958596b
AD
17502002-06-14 Akim Demaille <akim@epita.fr>
1751
1752 * src/output.c (m4_invoke): Extracted from...
1753 (output_skeleton): here.
1754 Free tempfile.
1755
2c569025
AD
17562002-06-14 Akim Demaille <akim@epita.fr>
1757
1758 * src/parse-gram.y (directives, directive, gram)
1759 (grammar_directives, precedence_directives, precedence_directive):
1760 Rename as...
1761 (declarations, declaration, grammar, grammar_declaration)
1762 (precedence_declaration, precedence_declarator): these.
1763 (symbol_declaration): New.
1764
592e8d4d
AD
17652002-06-14 Akim Demaille <akim@epita.fr>
1766
1767 * src/files.c (action_obstack): Remove, unused.
1768 (output_obstack): Remove it, and all its dependencies, as it is no
1769 longer needed.
1770 * src/reader.c (epilogue_set): Build the epilogue in the
1771 muscle_obstack.
1772 * src/output.h, src/output.c (muscle_obstack): Move to...
1773 * src/muscle_tab.h, src/muscle_tab.h: here.
1774 (muscle_init): Initialize muscle_obstack.
1775 (muscle_free): New.
1776 * src/main.c (main): Call it.
1777
0c15323d
AD
17782002-06-14 Akim Demaille <akim@epita.fr>
1779
1780 * src/location.h: New, extracted from...
1781 * src/reader.h: here.
1782 * src/Makefile.am (noinst_HEADERS): Merge into
1783 (bison_SOURCES): this.
1784 Add location.h.
1785 * src/parse-gram.y: Use location_t instead of Bison's.
1786 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
1787 Use location_t instead of ints.
1788
e96c9728
AD
17892002-06-14 Akim Demaille <akim@epita.fr>
1790
1791 * data/bison.simple, data/bison.c++: Be sure to restore the
1792 current #line when returning to the skeleton contents after having
1793 exposed the input file's #line.
1794
75d1fe16
AD
17952002-06-12 Akim Demaille <akim@epita.fr>
1796
1797 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
1798 eager.
1799 * tests/actions.at (Exotic Dollars): New.
1800
6c35d22c
AD
18012002-06-12 Akim Demaille <akim@epita.fr>
1802
1803 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
1804 ['"/] too eagerly.
1805 * tests/input.at (Torturing the Scanner): New.
1806
1d6412ad
AD
18072002-06-11 Akim Demaille <akim@epita.fr>
1808
1809 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
1810 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
1811 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
1812 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
1813 * src/reader.c (reader): Use it.
1814
4cdb01db
AD
18152002-06-11 Akim Demaille <akim@epita.fr>
1816
1817 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
1818 Adjust all callers.
1819 (scanner_last_string_free): New.
1820
44995b2e
AD
18212002-06-11 Akim Demaille <akim@epita.fr>
1822
1823 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
1824 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
1825 (last_string, YY_OBS_FREE): New.
1826 Use them when returning an ID.
1827
e9955c83
AD
18282002-06-11 Akim Demaille <akim@epita.fr>
1829
1830 Have Bison grammars parsed by a Bison grammar.
1831
1832 * src/reader.c, src/reader.h (prologue_augment): New.
1833 * src/reader.c (copy_definition): Remove.
1834
1835 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
1836 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
1837 (grammar_current_rule_prec_set, grammar_current_rule_check)
1838 (grammar_current_rule_symbol_append)
1839 (grammar_current_rule_action_append): Export.
1840 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
1841 (symbol_list_action_append): Remove.
1842 Hook the routines from reader.
1843 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
1844 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
1845
1846 * src/reader.c (read_declarations): Remove, unused.
1847
1848 * src/parse-gram.y: Handle the epilogue.
1849 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
1850 (grammar_start_symbol_set): this.
1851 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
1852 * src/reader.c (readgram): Remove, unused.
1853 (reader): Adjust to insert eoftoken and axiom where appropriate.
1854
1855 * src/reader.c (copy_dollar): Replace with...
1856 * src/scan-gram.h (handle_dollar): this.
1857 * src/parse-gram.y: Remove `%thong'.
1858
1859 * src/reader.c (copy_at): Replace with...
1860 * src/scan-gram.h (handle_at): this.
1861
1862 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
1863 New.
1864
1865 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
1866 time being.
1867
1868 * src/reader.h, src/reader.c (grammar_rule_end): New.
1869
1870 * src/parse.y (current_type, current_class): New.
1871 Implement `%nterm', `%token' support.
1872 Merge `%term' into `%token'.
1873 (string_as_id): New.
1874 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
1875 type name.
1876
1877 * src/parse-gram.y: Be sure to handle properly the beginning of
1878 rules.
1879
1880 * src/parse-gram.y: Handle %type.
1881 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
1882
1883 * src/parse-gram.y: More directives support.
1884 * src/options.c: No longer handle source directives.
1885
1886 * src/parse-gram.y: Fix %output.
1887
1888 * src/parse-gram.y: Handle %union.
1889 Use the prologue locations.
1890 * src/reader.c (parse_union_decl): Remove.
1891
1892 * src/reader.h, src/reader.c (epilogue_set): New.
1893 * src/parse-gram.y: Use it.
1894
1895 * data/bison.simple, data/bison.c++: b4_stype is now either not
1896 defined, then default to int, or to the contents of %union,
1897 without `union' itself.
1898 Adjust.
1899 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
1900
1901 * src/output.c (actions_output): Don't output braces, as they are
1902 already handled by the scanner.
1903
1904 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
1905 characters to themselves.
1906
1907 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
1908 that the epilogue has a proper #line.
1909
1910 * src/parse-gram.y: Handle precedence/associativity.
1911
1912 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
1913 a terminal.
1914 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
1915 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
1916 at all to define terminals that cannot be emitted.
1917
1918 * src/scan-gram.l: Escape M4 characters.
1919
1920 * src/scan-gram.l: Working properly with escapes in user
1921 strings/characters.
1922
1923 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
1924 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
1925 grammar.
1926 Use more modest sizes, as for the time being the parser does not
1927 release memory, and therefore the process swallows a huge amount
1928 of memory.
1929
1930 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
1931 stricter %token grammar.
1932
1933 * src/symtab.h (associativity): Add `undef_assoc'.
1934 (symbol_precedence_set): Do nothing when passed an undef_assoc.
1935 * src/symtab.c (symbol_check_alias_consistence): Adjust.
1936
1937 * tests/regression.at (Invalid %directive): Remove, as it is now
1938 meaningless.
1939 (Invalid inputs): Adjust to the new error messages.
1940 (Token definitions): The new grammar doesn't allow too many
1941 eccentricities.
1942
1943 * src/lex.h, src/lex.c: Remove.
1944 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
1945 (copy_character, copy_string2, copy_string, copy_identifier)
1946 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
1947 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
1948 (parse_action): Remove.
1949 * po/POTFILES.in: Adjust.
1950
2e047461
AD
19512002-06-11 Akim Demaille <akim@epita.fr>
1952
1953 * src/reader.c (parse_action): Don't store directly into the
1954 rule's action member: return the action as a string.
1955 Don't require `rule_length' as an argument: compute it.
1956 (grammar_current_rule_symbol_append)
1957 (grammar_current_rule_action_append): New, eved out from
1958 (readgram): here.
1959 Remove `action_flag', `rulelength', unused now.
1960
9af3fbce
AD
19612002-06-11 Akim Demaille <akim@epita.fr>
1962
1963 * src/reader.c (grammar_current_rule_prec_set).
1964 (grammar_current_rule_check): New, eved out from...
1965 (readgram): here.
1966 Remove `xaction', `first_rhs': useless.
1967 * tests/input.at (Type clashes): New.
1968 * tests/existing.at (GNU Cim Grammar): Adjust.
1969
1485e106
AD
19702002-06-11 Akim Demaille <akim@epita.fr>
1971
1972 * src/reader.c (grammar_midrule_action): New, Eved out from
1973 (readgram): here.
1974
da4160c3
AD
19752002-06-11 Akim Demaille <akim@epita.fr>
1976
1977 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
1978 New.
1979 (readgram): Use them as replacement of inlined code, crule and
1980 crule1.
1981
f6d0f937
AD
19822002-06-11 Akim Demaille <akim@epita.fr>
1983
1984 * src/reader.c (grammar_end, grammar_symbol_append): New.
1985 (readgram): Use them.
1986 Make the use of `p' as local as possible.
1987
69078d4b
AD
19882002-06-10 Akim Demaille <akim@epita.fr>
1989
1990 GCJ's parser requires the tokens to be defined before the prologue.
1991
1992 * data/bison.simple: Output the token definition before the user's
1993 prologue.
1994 * tests/regression.at (Braces parsing, Duplicate string)
1995 (Mixing %token styles): Check the output from bison.
1996 (Early token definitions): New.
1997
5e424082
AD
19982002-06-10 Akim Demaille <akim@epita.fr>
1999
2000 * src/symtab.c (symbol_user_token_number_set): Don't complain when
2001 assigning twice the same user number to a token, so that we can
2002 use it in...
2003 * src/lex.c (lex): here.
2004 Also use `symbol_class_set' instead of hand written code.
2005 * src/reader.c (parse_assoc_decl): Likewise.
2006
44536b35
AD
20072002-06-10 Akim Demaille <akim@epita.fr>
2008
2009 * src/symtab.c, src/symtab.c (symbol_class_set)
2010 (symbol_user_token_number_set): New.
2011 * src/reader.c (parse_token_decl): Use them.
2012 Use a switch instead of ifs.
2013 Use a single argument.
2014
8b9f2372
AD
20152002-06-10 Akim Demaille <akim@epita.fr>
2016
2017 Remove `%thong' support as it is undocumented, unused, duplicates
2018 `%token's job, and creates useless e-mail traffic with people who
2019 want to know what it is, why it is undocumented, unused, and
2020 duplicates `%token's job.
2021
2022 * src/reader.c (parse_thong_decl): Remove.
2023 * src/options.c (option_table): Remove "thong".
2024 * src/lex.h (tok_thong): Remove.
2025
3ae2b51f
AD
20262002-06-10 Akim Demaille <akim@epita.fr>
2027
2028 * src/symtab.c, src/symtab.c (symbol_type_set)
2029 (symbol_precedence_set): New.
2030 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
2031 (value_components_used): Remove, unused.
2032
2f1afb73
AD
20332002-06-09 Akim Demaille <akim@epita.fr>
2034
2035 Move symbols handling code out of the reader.
2036
2037 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
2038 (axiom): Move to...
2039 * src/symtab.h, src/symtab.c: here.
2040
2041 * src/gram.c (start_symbol): Remove: use startsymbol->number.
2042 * src/reader.c (startval): Rename as...
2043 * src/symtab.h, src/symtab.c (startsymbol): this.
2044 * src/reader.c: Adjust.
2045
2046 * src/reader.c (symbol_check_defined, symbol_make_alias)
2047 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
2048 (token_translations_init)
2049 Move to...
2050 * src/symtab.c: here.
2051 * src/reader.c (packsymbols): Move to...
2052 * src/symtab.h, src/symtab.c (symbols_pack): here.
2053 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
2054 argument.
2055
e9bca3ad
AD
20562002-06-03 Akim Demaille <akim@epita.fr>
2057
2058 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
2059 then statements.
2060
86eff183
AD
20612002-06-03 Akim Demaille <akim@epita.fr>
2062
2063 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
2064 structs with non literals.
2065 * src/scan-skel.l: never-interactive.
2066 * src/conflicts.c (enum conflict_resolution_e): No trailing
2067 comma.
2068 * src/getargs.c (usage): Split long literal strings.
2069 Reported by Hans Aberg.
2070
717be197
AD
20712002-05-28 Akim Demaille <akim@epita.fr>
2072
2073 * data/bison.c++: Use C++ ostreams.
2074 (cdebug_): New member.
2075
670ddffd
AD
20762002-05-28 Akim Demaille <akim@epita.fr>
2077
2078 * src/output.c (output_skeleton): Be sure to allocate enough room
2079 for `/' _and_ for `\0' in full_skeleton.
2080
769b430f
AD
20812002-05-28 Akim Demaille <akim@epita.fr>
2082
2083 * data/bison.c++: Catch up with bison.simple:
2084 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2085 and Paul Eggert <eggert@twinsun.com>: `error' handing.
2086 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
2087 and popping traces.
2088
7067cb36
PH
20892002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2090
2091 * src/output.c (output_skeleton): Put an explicit path in front of
2092 the skeleton file name, rather than relying on the -I directory,
2093 to partially alleviate effects of having a skeleton file lying around
2094 in the current directory.
769b430f 2095
4a713ec2
PH
20962002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2097
769b430f 2098 * src/conflicts.c (log_resolution): Correct typo:
4a713ec2
PH
2099 obstack_printf should be obstack_fgrow1.
2100
b408954b
AD
21012002-05-26 Akim Demaille <akim@epita.fr>
2102
2103 * src/state.h (state_t): `solved_conflicts' is a new member.
2104 * src/LR0.c (new_state): Set it to 0.
2105 * src/conflicts.h, src/conflicts.c (print_conflicts)
2106 (free_conflicts, solve_conflicts): Rename as...
2107 (conflicts_print, conflicts_free, conflicts_solve): these.
2108 Adjust callers.
2109 * src/conflicts.c (enum conflict_resolution_e)
2110 (solved_conflicts_obstack): New, used by...
2111 (log_resolution): this.
2112 Adjust to attach the conflict resolution to each state.
2113 Complete the description with the precedence/associativity
2114 information.
2115 (resolve_sr_conflict): Adjust.
2116 * src/print.c (print_state): Output its solved_conflicts.
2117 * tests/conflicts.at (Unresolved SR Conflicts)
2118 (Solved SR Conflicts): Exercise --report=all.
2119
a49aecd5
AD
21202002-05-26 Akim Demaille <akim@epita.fr>
2121
2122 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
2123 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
2124 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
2125 (token_number_t, item_number_as_token_number)
2126 (token_number_as_item_number, muscle_insert_token_number_table):
2127 Rename as...
2128 (symbol_number_t, item_number_as_symbol_number)
2129 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
2130 these, since it is more appropriate.
2131
5504898e
AD
21322002-05-26 Akim Demaille <akim@epita.fr>
2133
2134 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
2135 `Error:' lines.
2136 * data/bison.simple (yystos) [YYDEBUG]: New.
2137 (yyparse) [YYDEBUG]: Display the symbols which are popped during
2138 error recovery.
2139 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
2140
ec3bc396
AD
21412002-05-25 Akim Demaille <akim@epita.fr>
2142
2143 * doc/bison.texinfo (Debugging): Split into...
2144 (Tracing): this new section, its former contents, and...
2145 (Understanding): this new section.
2146 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
2147 by...
2148 (report_flag): this.
2149 Adjust all dependencies.
2150 (report_args, report_types, report_argmatch): New.
2151 (usage, getargs): Report/support -r, --report.
2152 * src/options.h
2153 (struct option_table_struct): Rename as..,
2154 (struct option_table_s): this.
2155 Rename the `set_flag' member to `flag' to match with getopt_long's
2156 struct.
2157 * src/options.c (option_table): Split verbose into an entry for
2158 %verbose, and another for --verbose.
2159 Support --report/-r, so remove -r from the obsolete --raw.
2160 * src/print.c: Attach full item sets and lookaheads reports to
2161 report_flag instead of trace_flag.
2162 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
2163
78df8250
PE
21642002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2165 and Paul Eggert <eggert@twinsun.com>
769b430f 2166
78df8250
PE
2167 * data/bison.simple (yyparse): Correct error handling to conform to
2168 POSIX and yacc. Specifically, after syntax error is discovered,
2169 do not reduce further before shifting the error token.
2170 Clean up the code a bit by removing the labels yyerrdefault,
2171 yyerrhandle, yyerrpop.
2172 * NEWS: Document the above.
2173
c0c9ea05
PH
21742002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2175
2176 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
2177 type; it isn't always big enough, since it doesn't necessarily
2178 include non-terminals.
769b430f 2179 (yytranslate): Expand definition of yy_token_number_type, so that
c0c9ea05
PH
2180 the latter can be removed.
2181 (yy_token_number_type): Remove, only one use.
2182 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
2183 don't use TokenNumberType as element type.
769b430f 2184
c0c9ea05
PH
2185 * tests/regression.at: Modify expected output to agree with change
2186 to yyr1 and yytranslate.
769b430f 2187
6390a83f
FK
21882002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
2189
2190 * src/reader.c (parse_action): Use copy_character instead of
2191 obstack_1grow.
2192
db7c8e9a
AD
21932002-05-13 Akim Demaille <akim@epita.fr>
2194
2195 * tests/regression.at (Token definitions): Prototype yylex and
2196 yyerror.
2197
fcc61800
PH
21982002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
2199
158c687b 2200 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
fcc61800
PH
2201 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
2202 32-bit arithmetic.
2203 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
2204
5683e9b2
AD
22052002-05-07 Akim Demaille <akim@epita.fr>
2206
2207 * tests/synclines.at: Be sure to prototype yylex and yyerror to
2208 avoid GCC warnings.
2209
0c2d3f4c
AD
22102002-05-07 Akim Demaille <akim@epita.fr>
2211
2212 Kill GCC warnings.
2213
2214 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
2215 over the RHS of each rule.
2216 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
2217 * src/state.h (state_t): Member `nitems' is unsigned short.
2218 * src/LR0.c (get_state): Adjust.
2219 * src/reader.c (packgram): Likewise.
2220 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
2221 `Type'.
2222 (muscle_insert_int_table): Remove, unused.
2223 (prepare_rules): Remove `max'.
2224
1565b720
AD
22252002-05-06 Akim Demaille <akim@epita.fr>
2226
2227 * src/closure.c (print_firsts): Display of the symbol tags.
2228 (bitmatrix_print): Move to...
2229 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
2230 here.
2231 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
2232
cfaee611
AD
22332002-05-06 Akim Demaille <akim@epita.fr>
2234
2235 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
2236 hash_do_for_each.
2237
458be8e0
AD
22382002-05-06 Akim Demaille <akim@epita.fr>
2239
2240 * src/LR0.c (new_state, get_state): Instead of using the global
2241 `kernel_size' and `kernel_base', have two new arguments:
2242 `core_size' and `core'.
2243 Adjust callers.
2244
a900a624
AD
22452002-05-06 Akim Demaille <akim@epita.fr>
2246
2247 * src/reader.c (packgram): No longer end `ritem' with a 0
2248 sentinel: it is not used.
2249
d4e7d3a1
AD
22502002-05-05 Akim Demaille <akim@epita.fr>
2251
2252 New experimental feature: display the lookaheads in the report and
2253 graph.
2254
2255 * src/print (print_core): When --trace-flag, display the rules
2256 lookaheads.
2257 * src/print_graph.c (print_core): Likewise.
2258 Swap the arguments.
2259 Adjust caller.
2260
39ceb25b
AD
22612002-05-05 Akim Demaille <akim@epita.fr>
2262
2263 * tests/torture.at (Many lookaheads): New test.
2264
5372019f
AD
22652002-05-05 Akim Demaille <akim@epita.fr>
2266
2267 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
2268 (GENERATE_MUSCLE_INSERT_TABLE): this.
2269 (output_int_table, output_unsigned_int_table, output_short_table)
2270 (output_token_number_table, output_item_number_table): Replace with...
2271 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
2272 (muscle_insert_short_table, muscle_insert_token_number_table)
2273 (muscle_insert_item_number_table): these.
2274 Adjust all callers.
2275 (prepare_tokens): Don't free `translations', since...
2276 * src/reader.h, src/reader.c (grammar_free): do it.
2277 Move to...
2278 * src/gram.h, src/gram.c (grammar_free): here.
2279 * data/bison.simple, data/bison.c++: b4_token_number_max is now
2280 b4_translate_max.
2281
5df5f6d5
AD
22822002-05-05 Akim Demaille <akim@epita.fr>
2283
2284 * src/output.c (output_unsigned_int_table): New.
2285 (prepare_rules): `i' is unsigned.
2286 `prhs', `rline', `r2' are unsigned int.
2287 Rename muscle `rhs_number_max' as `rhs_max'.
2288 Output muscles `prhs_max', `rline_max', and `r2_max'.
2289 Free rline and r1.
2290 * data/bison.simple, data/bison.c++: Adjust to use these muscles
2291 to compute types instead of constant types.
2292 * tests/regression.at (Web2c Actions): Adjust.
2293
b87f8b21
AD
22942002-05-04 Akim Demaille <akim@epita.fr>
2295
2296 * src/symtab.h (SALIAS, SUNDEF): Rename as...
2297 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
2298 Adjust dependencies.
2299 * src/output.c (token_definitions_output): Be sure not to output a
2300 `#define 'a'' when fed with `%token 'a' "a"'.
2301 * tests/regression.at (Token definitions): New.
2302
8bb936e4
PE
23032002-05-03 Paul Eggert <eggert@twinsun.com>
2304
2305 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
2306 for K&R C.
2307
23082002-05-03 gettextize <bug-gnu-gettext@gnu.org>
2309
2310 * Makefile.am (SUBDIRS): Remove intl.
2311 (EXTRA_DIST): Add config/config.rpath.
2312
53c71a12
AD
23132002-05-03 Akim Demaille <akim@epita.fr>
2314
2315 * data/bison.simple (m4_if): Don't output empty enums.
2316 And actually, output valid enum definitions :(.
2317
289dd0cf
AD
23182002-05-03 Akim Demaille <akim@epita.fr>
2319
2320 * configure.bat: Remove, completely obsolete.
2321 * Makefile.am (EXTRA_DIST): Adjust.
2322 Don't distribute config.rpath...
2323 * config/Makefile.am (EXTRA_DIST): Do it.
2324
db85e524
AD
23252002-05-03 Akim Demaille <akim@epita.fr>
2326
2327 * configure.in (GETTEXT_VERSION): New.
2328 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
2329
83ccf991
AD
23302002-05-03 Akim Demaille <akim@epita.fr>
2331
2332 * data/bison.simple (b4_token_enum): New.
2333 (b4_token_defines): Use it to output tokens both as #define and
2334 enums.
2335 Suggested by Paul Eggert.
2336 * src/output.c (token_definitions_output): Don't output spurious
2337 white spaces.
2338
1f418995
AD
23392002-05-03 Akim Demaille <akim@epita.fr>
2340
2341 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
2342
45119f04
RA
23432002-05-02 Robert Anisko <robert@lrde.epita.fr>
2344
2345 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
2346 Update the stack class, give a try to deque as the default container.
2347
b2d52318
AD
23482002-05-02 Akim Demaille <akim@epita.fr>
2349
2350 * data/bison.simple (yyparse): Do not implement @$ = @1.
2351 (YYLLOC_DEFAULT): Adjust to do it.
2352 * doc/bison.texinfo (Location Default Action): Fix.
2353
3a8b4109
AD
23542002-05-02 Akim Demaille <akim@epita.fr>
2355
2356 * src/reader.c (parse_braces): Merge into...
2357 (parse_action): this.
2358
84614e13
AD
23592002-05-02 Akim Demaille <akim@epita.fr>
2360
2361 * configure.in (ALL_LINGUAS): Remove.
2362 * po/LINGUAS, hr.po: New.
2363
fdbcd8e2
AD
23642002-05-02 Akim Demaille <akim@epita.fr>
2365
2366 Remove the so called hairy (semantic) parsers.
2367
2368 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
2369 * src/gram.h, src/gram.c (semantic_parser): Remove.
2370 (rule_t): Remove the guard and guard_line members.
2371 * src/lex.h (token_t): remove tok_guard.
2372 * src/options.c (option_table): Remove %guard and %semantic_parser
2373 support.
2374 * src/output.c, src/output.h (guards_output): Remove.
2375 (prepare): Adjust.
2376 (token_definitions_output): Don't output the `T'
2377 tokens (???).
2378 (output_skeleton): Don't output the guards.
2379 * src/files.c, src/files.c (attrsfile): Remove.
2380 * src/reader.c (symbol_list): Remove the guard and guard_line
2381 members.
2382 Adjust dependencies.
2383 (parse_guard): Remove.
2384 * data/bison.hairy: Remove.
2385 * doc/bison.texinfo (Environment Variables): Remove occurrences of
2386 BISON_HAIRY.
2387
82b6cb3f
AD
23882002-05-02 Akim Demaille <akim@epita.fr>
2389
2390 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
2391 (parse_guard): Rename the formal argument `stack_offset' as
2392 `rule_length', which is more readable.
2393 Adjust callers.
2394 (copy_at, copy_dollar): Instead of outputting the hard coded
2395 values of $$, $n and so forth, output invocation to b4_lhs_value,
2396 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
900c877b
AD
2397 Note: this patch partially drops `semantic-parser' support: it
2398 always does `rule_length - n', where semantic parsers ought to
2399 always use `-n'.
82b6cb3f
AD
2400 * data/bison.simple, data/bison.c++ (b4_lhs_value)
2401 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
2402
6cbfbcc5
AD
24032002-05-02 Akim Demaille <akim@epita.fr>
2404
2405 * configure.in (AC_INIT): Bump to 1.49b.
2406 (AM_INIT_AUTOMAKE): Short invocation.
2407
b8548114
AD
24082002-05-02 Akim Demaille <akim@epita.fr>
2409
2410 Version 1.49a.
2411
c20cd1fa
AD
24122002-05-01 Akim Demaille <akim@epita.fr>
2413
2414 * src/skeleton.h: Remove.
2415
8a9566d4
AD
24162002-05-01 Akim Demaille <akim@epita.fr>
2417
2418 * src/skeleton.h: Fix the #endif.
2419 Reported by Magnus Fromreide.
2420
8c6d399a
PE
24212002-04-26 Paul Eggert <eggert@twinsun.com>
2422
2423 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
2424 Define if we define YYSTYPE and YYLTYPE, respectively.
b756bb75 2425 (YYCOPY): Fix [] quoting problem in the non-GCC case.
8a9566d4 2426
2b7ed18a
RA
24272002-04-25 Robert Anisko <robert@lrde.epita.fr>
2428
2429 * src/scan-skel.l: Postprocess quadrigraphs.
2430
2431 * src/reader.c (copy_character): New function, used to output
2432 single characters while replacing `[' and `]' with quadrigraphs, to
2433 avoid troubles with M4 quotes.
2434 (copy_comment): Output characters with copy_character.
2435 (read_additionnal_code): Likewise.
2436 (copy_string2): Likewise.
2437 (copy_definition): Likewise.
2438
2439 * tests/calc.at: Exercise M4 quoting.
2440
34a89c50
AD
24412002-04-25 Akim Demaille <akim@epita.fr>
2442
2443 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
2444 between `!' and the command.
2445 Reported by Paul Eggert.
2446
0dd1580a
RA
24472002-04-24 Robert Anisko <robert@lrde.epita.fr>
2448
2449 * tests/calc.at: Exercise prologue splitting.
2450
2451 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
2452 `b4_post_prologue' instead of `b4_prologue'.
2453
2454 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
2455 muscles.
2456 (output): Free pre_prologue_obstack and post_prologue_obstack.
2457 * src/files.h, src/files.c (attrs_obstack): Remove.
2458 (pre_prologue_obstack, post_prologue_obstack): New.
2459 * src/reader.c (copy_definition): Add a parameter to specify the
2460 obstack to fill, instead of using attrs_obstack unconditionally.
2461 (read_declarations): Pass pre_prologue_obstack to copy_definition if
2462 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
2463
83c1796f
PE
24642002-04-23 Paul Eggert <eggert@twinsun.com>
2465
2466 * data/bison.simple: Remove unnecessary commentary and white
2467 space differences from 1_29-branch.
2468 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
2469
2470 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
2471 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
2472 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
2473 constructors or destructors.
2474
2475 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
2476
1207eeac
AD
24772002-04-23 Akim Demaille <akim@epita.fr>
2478
2479 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
2480 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
2481 location with columns.
2482 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
2483 All reported by Paul Eggert.
2484
78ab8f67
AD
24852002-04-22 Akim Demaille <akim@epita.fr>
2486
2487 * src/reduce.c (dump_grammar): Move to...
2488 * src/gram.h, src/gram.c (grammar_dump): here.
2489 Be sure to separate long item numbers.
2490 Don't read the members of a rule's prec if its nil.
2491
133c20e2
AD
24922002-04-22 Akim Demaille <akim@epita.fr>
2493
2494 * src/output.c (table_size, table_grow): New.
2495 (MAXTABLE): Remove, replace uses with table_size.
2496 (pack_vector): Instead of dying when the table is too big, grow it.
2497
9515e8a7
AD
24982002-04-22 Akim Demaille <akim@epita.fr>
2499
2500 * data/bison.simple (yyr1): Its type is that of a token number.
2501 * data/bison.c++ (r1_): Likewise.
2502 * tests/regression.at (Web2c Actions): Adjust.
2503
23c5a174
AD
25042002-04-22 Akim Demaille <akim@epita.fr>
2505
2506 * src/reader.c (token_translations_init): 256 is now the default
2507 value for the error token, i.e., it will be assigned another
2508 number if the user assigned 256 to one of her tokens.
2509 (reader): Don't force 256 to error.
2510 * doc/bison.texinfo (Symbols): Adjust.
2511 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
2512 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
2513 etc. instead of 10, 20, 30 (which was used to `jump' over error
2514 (256) and undefined (2)).
2515
5fbb0954
AD
25162002-04-22 Akim Demaille <akim@epita.fr>
2517
2518 Propagate more token_number_t.
2519
2520 * src/gram.h (token_number_as_item_number)
2521 (item_number_as_token_number): New.
2522 * src/output.c (GENERATE_OUTPUT_TABLE): New.
2523 Use it to create output_item_number_table and
2524 output_token_number_table.
2525 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
2526 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
2527 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
2528 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
2529
4f940944
AD
25302002-04-22 Akim Demaille <akim@epita.fr>
2531
2532 * src/output.h, src/output.c (get_lines_number): Remove.
2533
3ded9a63
AD
25342002-04-19 Akim Demaille <akim@epita.fr>
2535
2536 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
2537 as Lex/Flex'.
2538 (Debugging): More details about enabling the debugging features.
2539 (Table of Symbols): Describe $$, $n, @$, and @n.
2540 Suggested by Tim Josling.
2541
e0c471a9
AD
25422002-04-19 Akim Demaille <akim@epita.fr>
2543
2544 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
2545
fecc10cd
AD
25462002-04-10 Akim Demaille <akim@epita.fr>
2547
2548 * src/system.h: Rely on HAVE_LIMITS_H.
2549 Suggested by Paul Eggert.
2550
51dec47b
AD
25512002-04-09 Akim Demaille <akim@epita.fr>
2552
2553 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
2554 full stderr, and strip it according to the bison options, instead
2555 of composing the error message from different bits.
2556 This makes it easier to check for several error messages.
2557 Adjust all the invocations.
2558 Add an invocation exercising the error token.
2559 Add an invocation demonstrating a stupid error message.
2560 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
2561 Adjust the tests.
2562 Error message are for stderr, not stdout.
2563
007a50a4
AD
25642002-04-09 Akim Demaille <akim@epita.fr>
2565
2566 * src/gram.h, src/gram.c (error_token_number): Remove, use
2567 errtoken->number.
2568 * src/reader.c (reader): Don't specify the user token number (2)
2569 for $undefined, as it uselessly prevents using it.
2570 * src/gram.h (token_number_t): Move to...
2571 * src/symtab.h: here.
2572 (state_t.number): Is a token_number_t.
2573 * src/print.c, src/reader.c: Use undeftoken->number instead of
2574 hard coded 2.
2575 (Even though this 2 is not the same as above: the number of the
2576 undeftoken remains being 2, it is its user token number which
2577 might not be 2).
2578 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
2579 `user_token_number_max'.
2580 Output `undef_token_number'.
2581 * data/bison.simple, data/bison.c++: Use them.
2582 Be sure to map invalid yylex return values to
2583 `undef_token_number'. This saves us from gratuitous SEGV.
2584
2585 * tests/conflicts.at (Solved SR Conflicts)
2586 (Unresolved SR Conflicts): Adjust.
2587 * tests/regression.at (Web2c Actions): Adjust.
2588
06446ccf
AD
25892002-04-08 Akim Demaille <akim@epita.fr>
2590
2591 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
2592 Adding #line.
2593 Remove the duplicate `typedefs'.
2594 (RhsNumberType): Fix the declaration and various other typos.
2595 Use __ofile__.
2596 * data/bison.simple: Use __ofile__.
2597 * src/scan-skel.l: Handle __ofile__.
2598
62a3e4f0
AD
25992002-04-08 Akim Demaille <akim@epita.fr>
2600
2601 * src/gram.h (item_number_t): New, the type of item numbers in
2602 RITEM. Note that it must be able to code symbol numbers as
2603 positive number, and the negation of rule numbers as negative
2604 numbers.
2605 Adjust all dependencies (pretty many).
2606 * src/reduce.c (rule): Remove this `short *' pointer: use
2607 item_number_t.
2608 * src/system.h (MINSHORT, MAXSHORT): Remove.
2609 Include `limits.h'.
2610 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
2611 (shortcpy): Remove.
2612 (MAXTABLE): Move to...
2613 * src/output.c (MAXTABLE): here.
2614 (prepare_rules): Use output_int_table to output rhs.
2615 * data/bison.simple, data/bison.c++: Adjust.
2616 * tests/torture.at (Big triangle): Move the limit from 254 to
2617 500.
2618 * tests/regression.at (Web2c Actions): Ajust.
2619
2620 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
2621 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
2622 passes, but produces negative #line number, once fixed, GCC is
2623 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
2624 C), it passes.
2625 * src/state.h (state_h): Code input lines on ints, not shorts.
2626
bb88b0fc
AD
26272002-04-08 Akim Demaille <akim@epita.fr>
2628
2629 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
2630 and then the grammar.
2631
9a636f47
AD
26322002-04-08 Akim Demaille <akim@epita.fr>
2633
2634 * src/system.h: No longer using strndup.
2635
680e8701
AD
26362002-04-07 Akim Demaille <akim@epita.fr>
2637
2638 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
2639 * src/output.c (output_table_data): Return the longest number.
2640 (prepare_tokens): Output `token_number_max').
2641 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
2642 New.
2643 Use them to define yy_token_number_type/TokenNumberType.
2644 Use this type for yytranslate.
2645 * tests/torture.at (Big triangle): Push the limit from 124 to
2646 253.
2647 * tests/regression.at (Web2c Actions): Adjust.
2648
817e9f41
AD
26492002-04-07 Akim Demaille <akim@epita.fr>
2650
2651 * tests/torture.at (Big triangle): New.
2652 (GNU AWK Grammar, GNU Cim Grammar): Move to...
2653 * tests/existing.at: here.
2654
5123689b
AD
26552002-04-07 Akim Demaille <akim@epita.fr>
2656
2657 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
2658 nritems.
2659 Adjust dependencies.
2660
f3849179
AD
26612002-04-07 Akim Demaille <akim@epita.fr>
2662
2663 * src/reader.c: Normalize increments to prefix form.
2664
bd02036a
AD
26652002-04-07 Akim Demaille <akim@epita.fr>
2666
2667 * src/reader.c, symtab.c: Remove debugging code.
2668
db8837cb
AD
26692002-04-07 Akim Demaille <akim@epita.fr>
2670
2671 Rename all the `bucket's as `symbol_t'.
2672
2673 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
2674 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
2675 * src/symtab.c, src/symtab.h (bucket): Rename as...
2676 (symbol_t): this.
2677 (symbol_list_new, bucket_check_defined, bucket_make_alias)
2678 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
2679 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
2680 (buckets_new, buckets_free, buckets_do): Rename as...
2681 (symbol_list_new, symbol_check_defined, symbol_make_alias)
2682 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
2683 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
2684 (symbols_new, symbols_free, symbols_do): these.
2685
72a23c97
AD
26862002-04-07 Akim Demaille <akim@epita.fr>
2687
2688 Use lib/hash for the symbol table.
2689
2690 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
2691 EOF.
2692 * src/lex.c (lex): Set the `number' member of new terminals.
2693 * src/reader.c (bucket_check_defined, bucket_make_alias)
2694 (bucket_check_alias_consistence, bucket_translation): New.
2695 (reader, grammar_free, readgram, token_translations_init)
2696 (packsymbols): Adjust.
2697 (reader): Number the predefined tokens.
2698 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
2699 for predefined tokens.
2700 * src/symtab.h (bucket): Remove all the hash table related
2701 members.
2702 * src/symtab.c (symtab): Replace by...
2703 (bucket_table): this.
2704 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
2705 (buckets_new, buckets_do): New.
2706
280a38c3
AD
27072002-04-07 Akim Demaille <akim@epita.fr>
2708
2709 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
2710 (start_symbol, max_user_token_number, semantic_parser)
2711 (error_token_number): Initialize.
2712 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
2713 Initialize.
2714 (reader): Don't.
2715 (errtoken, eoftoken, undeftoken, axiom): Extern.
2716
03b31c0c
AD
27172002-04-07 Akim Demaille <akim@epita.fr>
2718
2719 * src/gram.h (rule_s): prec and precsym are now pointers
2720 to the bucket giving the priority/associativity.
2721 Member `associativity' removed: useless.
2722 * src/reduce.c, src/conflicts.c: Adjust.
2723
8b3df748
AD
27242002-04-07 Akim Demaille <akim@epita.fr>
2725
2726 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
2727 Properly escape the symbols' TAG when outputting them.
2728
e601aa1d
AD
27292002-04-07 Akim Demaille <akim@epita.fr>
2730
2731 * src/lalr.h (LA): Is a bitsetv, not bitset*.
2732
b0299a2e
AD
27332002-04-07 Akim Demaille <akim@epita.fr>
2734
2735 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
2736 (LArule): this, which is an array to rule_t*.
2737 * src/print.c, src/conflicts.c: Adjust.
2738
d7e1f00c
AD
27392002-04-07 Akim Demaille <akim@epita.fr>
2740
2741 * src/gram.h (rule_t): Rename `number' as `user_number'.
2742 `number' is a new member.
2743 Adjust dependencies.
2744 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
2745
cc9305dd
AD
27462002-04-07 Akim Demaille <akim@epita.fr>
2747
2748 As a result of the previous patch, it is no longer needed
2749 to reorder ritem itself.
2750
2751 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
2752
b0940840
AD
27532002-04-07 Akim Demaille <akim@epita.fr>
2754
2755 Be sure never to walk through RITEMS, but use only data related to
2756 the rules themselves. RITEMS should be banished.
2757
2758 * src/output.c (output_token_translations): Rename as...
2759 (prepare_tokens): this.
2760 In addition to `translate', prepare the muscles `tname' and
2761 `toknum', which were handled by...
2762 (output_rule_data): this.
2763 Remove, and move the remainder of its outputs into...
2764 (prepare_rules): this new routines, which also merges content from
2765 (output_gram): this.
2766 (prepare_rules): Be sure never to walk through RITEMS.
2767 (output_stos): Rename as...
2768 (prepare_stos): this.
2769 (output): Always invoke prepare_states, after all, just don't use it
2770 in the output if you don't need it.
2771
643a5994
AD
27722002-04-07 Akim Demaille <akim@epita.fr>
2773
2774 * src/LR0.c (new_state): Display `nstates' as the name of the
2775 newly created state.
2776 Adjust to initialize first_state and last_state if needed.
2777 Be sure to distinguish the initial from the final state.
2778 (new_states): Create the itemset of the initial state, and use
2779 new_state.
2780 * src/closure.c (closure): Now that the initial state has its
2781 items properly set, there is no need for a special case when
2782 creating `ruleset'.
2783
2784 As a result, now the rule 0, reducing to $axiom, is visible in the
2785 outputs. Adjust the test suite.
2786
2787 * tests/conflicts.at (Solved SR Conflicts)
2788 (Unresolved SR Conflicts): Adjust.
2789 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
2790 * tests/conflicts.at (S/R in initial): New.
2791
b4c4ccc2
AD
27922002-04-07 Akim Demaille <akim@epita.fr>
2793
2794 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
2795 the RHS of the rules.
2796 * src/output.c (output_gram): Likewise.
2797
bba97eb2
AD
27982002-04-07 Akim Demaille <akim@epita.fr>
2799
2800 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
2801 bucket.
2802 Adjust all dependencies.
2803 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
2804 `number' of the buckets too.
2805 * src/gram.h: Include `symtab.h'.
2806 (associativity): Move to...
2807 * src/symtab.h: here.
2808 No longer include `gram.h'.
2809
c3b407f4
AD
28102002-04-07 Akim Demaille <akim@epita.fr>
2811
2812 * src/gram.h, src/gram.c (rules_rhs_length): New.
2813 (ritem_longest_rhs): Use it.
2814 * src/gram.h (rule_t): `number' is a new member.
2815 * src/reader.c (packgram): Set it.
2816 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
2817 the end of `rules', and count them out of `nrules'.
2818 (reduce_output, dump_grammar): Adjust.
2819 * src/print.c (print_grammar): It is no longer needed to check for
2820 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
2821 * tests/reduce.at (Reduced Automaton): New test.
2822
11652ab3
AD
28232002-04-07 Akim Demaille <akim@epita.fr>
2824
2825 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
2826 lacking `+ 1' to nrules, Bison reported as useless a token if it
2827 was used solely to set the precedence of the last rule...
2828
26b23c1a
AD
28292002-04-07 Akim Demaille <akim@epita.fr>
2830
2831 * data/bison.c++, data/bison.simple: Don't output the current file
2832 name in #line, to avoid useless diffs between two identical
2833 outputs under different names.
2834
18bcecb0
AD
28352002-04-07 Akim Demaille <akim@epita.fr>
2836
2837 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
2838 Normalize loops to using `< nrules + 1', not `<= nrules'.
2839
fa770c86
AD
28402002-04-07 Akim Demaille <akim@epita.fr>
2841
2842 * TODO: Update.
2843
d9b739c3
AD
28442002-04-07 Akim Demaille <akim@epita.fr>
2845
2846 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
2847 bucket.value as bucket.number.
2848
99013900
AD
28492002-04-07 Akim Demaille <akim@epita.fr>
2850
2851 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
2852 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
2853 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
2854 RHS, instead of being an index in RITEMS.
2855
e966383b
PE
28562002-04-04 Paul Eggert <eggert@twinsun.com>
2857
2858 * doc/bison.texinfo: Update copyright date.
2859 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
2860 (Symbols): Warn about running Bison in one character set,
2861 but compiling and/or running in an incompatible one.
2862 Warn about character code 256, too.
2863
28642002-04-03 Paul Eggert <eggert@twinsun.com>
2865
2866 * src/bison.data (YYSTACK_ALLOC): Depend on whether
2867 YYERROR_VERBOSE is nonzero, not whether it is defined.
2868
2869 Merge changes from bison-1_29-branch.
c307773e 2870
8d6c48b9
PE
28712002-03-20 Paul Eggert <eggert@twinsun.com>
2872
2873 Merge fixes from Debian bison_1.34-1.diff.
2874
2875 * configure.in (AC_PREREQ): 2.53.
2876
e53c6322
AD
28772002-03-20 Akim Demaille <akim@epita.fr>
2878
2879 * src/conflicts.c (log_resolution): Argument `resolution' is const.
2880
9ffbeca7
PE
28812002-03-19 Paul Eggert <eggert@twinsun.com>
2882
21db0b2a
PE
2883 * src/bison.simple (YYCOPY): New macro.
2884 (YYSTACK_RELOCATE): Use it.
2885 Remove Type arg; no longer needed. All callers changed.
2886 (yymemcpy): Remove; no longer needed.
2887
9ffbeca7
PE
2888 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
2889 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
2890
642cb8f8
AD
28912002-03-19 Akim Demaille <akim@epita.fr>
2892
2893 Test and fix the #line outputs.
2894
2895 * tests/atlocal.at (GCC): New.
2896 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
2897 (Prologue synch line, ,%union synch line, Postprologue synch line)
2898 (Action synch line, Epilogue synch line): New tests.
2899 * src/reader.c (parse_union_decl): Define the muscle stype_line.
2900 * data/bison.simple, data/bison.c++: Use it.
2901
3c31a486
AD
29022002-03-19 Akim Demaille <akim@epita.fr>
2903
2904 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
2905 (Solved SR Conflicts, %expect not enough, %expect right)
2906 (%expect too much): Move to...
2907 * tests/conflicts.at: this new file.
2908
0d8bed56
AD
29092002-03-19 Akim Demaille <akim@epita.fr>
2910
2911 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
2912 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
2913 that we can move to enums for instance.
2914 * src/output.c (token_definitions_output): Output a list of
2915 `token-name, token-number' instead of the #define.
2916 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
2917
9208d17f
AD
29182002-03-14 Akim Demaille <akim@epita.fr>
2919
2920 Use Gettext 0.11.1.
2921
af27eacb
RA
29222002-03-09 Robert Anisko <robert@lrde.epita.fr>
2923
2924 * data/bison.c++: Make the user able to add members to the generated
2925 parser by subclassing.
2926
9101a310
RA
29272002-03-05 Robert Anisko <robert@lrde.epita.fr>
2928
2929 * src/reader.c (read_additionnal_code): `c' should be an integer, not
2930 a character.
2931 Reported by Nicolas Tisserand and Nicolas Burrus.
2932
fff9bf0b
RA
29332002-03-04 Robert Anisko <robert@lrde.epita.fr>
2934
2935 * src/reader.c: Warn about lacking semi-colons, do not complain.
2936
64dba31e
RA
29372002-03-04 Robert Anisko <robert@lrde.epita.fr>
2938
2939 * data/bison.c++: Remove a debug line.
2940
374f5a14
RA
29412002-03-04 Robert Anisko <robert@lrde.epita.fr>
2942
2943 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
2944 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
2945 provide a default implementation.
2946
bfcf1f3a
AD
29472002-03-04 Akim Demaille <akim@epita.fr>
2948
2949 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
2950 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
2951 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
2952 * tests/semantic.at (Parsing Guards): Similarly.
2953 * src/reader.at (readgram): Complain if the last rule is not ended
2954 with a semi-colon.
2955
65ccf9fc
AD
29562002-03-04 Akim Demaille <akim@epita.fr>
2957
2958 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
2959 * src/closure.c: here.
2960 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
2961 RTC.
2962 * src/warshall.h, src/warshall.c: Remove.
2963 * tests/sets.at (Broken Closure): Adjust.
2964
d0039cbc
AD
29652002-03-04 Akim Demaille <akim@epita.fr>
2966
2967 * src/output.c (output_skeleton): tempdir is const.
2968 bytes_read is unused.
2969
345cea78
AD
29702002-03-04 Akim Demaille <akim@epita.fr>
2971
2972 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
2973 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
2974 Update.
2975 From Michael Hayes.
2976
564801f7
AD
29772002-03-04 Akim Demaille <akim@epita.fr>
2978
2979 * src/closure.c (closure): `r' is unused.
2980
e5352bc7
AD
29812002-03-04 Akim Demaille <akim@epita.fr>
2982
2983 * tests/sets.at (Broken Closure): Add the ending `;'.
2984 * src/reader.at (readgram): Complain if a rule is not ended with a
2985 semi-colon.
2986
914feea9
AD
29872002-03-04 Akim Demaille <akim@epita.fr>
2988
2989 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
2990 (count_sr_conflicts): Use bitset_count.
2991 * src/reduce.c (inaccessable_symbols): Ditto.
2992 (bits_size): Remove.
2993 * src/warshall.h, src/warshall.c: Convert to bitsetv.
2994
f0250de6
AD
29952002-03-04 Akim Demaille <akim@epita.fr>
2996
2997 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
2998 * src/reduce.c: Remove the `bitset_zero's following the
2999 `bitset_create's, as now it is performed by the latter.
3000
ef017502
AD
30012002-03-04 Akim Demaille <akim@epita.fr>
3002
3003 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
3004 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
3005 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
3006 latest sources from Michael.
3007
76514394
AD
30082002-03-04 Akim Demaille <akim@epita.fr>
3009
3010 * src/output.c (output): Don't free the grammar.
3011 * src/reader.c (grammar_free): New.
3012 * src/main.c (main): Call it and don't free symtab here.
3013
55024580
AD
30142002-03-04 Akim Demaille <akim@epita.fr>
3015
3016 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
3017 before returning.
3018 Reported by Benoit Perrot.
3019
f9abaa2c
AD
30202002-03-04 Akim Demaille <akim@epita.fr>
3021
3022 Use bitset operations when possible, not loops over bits.
3023
3024 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
3025 bitset_or.
3026 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
3027 * src/reduce.c (useless_nonterminals): Formatting changes.
3028 * src/warshall.c (TC): Use bitset_or.
3029
0e721e75
AD
30302002-03-04 Akim Demaille <akim@epita.fr>
3031
3032 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
3033 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
3034 Ditto.
3035
0fb1ffb1
AD
30362002-03-04 Akim Demaille <akim@epita.fr>
3037
3038 * src/lalr.c (F): Now a bitset*.
3039 Adjust all dependencies.
3040
b86796bf
AD
30412002-03-04 Akim Demaille <akim@epita.fr>
3042
3043 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
3044 Adjust all dependencies.
3045
602bbf31
AD
30462002-03-04 Akim Demaille <akim@epita.fr>
3047
3048 * src/L0.c, src/LR0.h (nstates): Be size_t.
3049 Adjust comparisons (signed vs unsigned).
3050 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
3051 bitset*.
3052 Adjust all dependencies.
3053
d8a0245c
AD
30542002-03-04 Akim Demaille <akim@epita.fr>
3055
3056 * src/closure.c (firsts): Now, also a bitset.
3057 Adjust all dependencies.
3058 (varsetsize): Remove, now unused.
3059 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
3060
34ba9743
AD
30612002-03-04 Akim Demaille <akim@epita.fr>
3062
3063 * src/print.c: Convert to use bitset.h, not hand coded iterations
3064 over ints.
3065
ed86e78c
AD
30662002-03-04 Akim Demaille <akim@epita.fr>
3067
3068 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
3069
dfdb1797
AD
30702002-03-04 Akim Demaille <akim@epita.fr>
3071
3072 * src/closure.c (ruleset): Be a bitset.
3073 (rulesetsize): Remove.
3074
7086e707
AD
30752002-03-04 Akim Demaille <akim@epita.fr>
3076
3077 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
3078 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
3079 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
3080 * src/closure.c (fderives): Be an array of bitsets.
3081
98254360
RA
30822002-02-28 Robert Anisko <robert@lrde.epita.fr>
3083
3084 * data/bison.c++: Merge the two generated headers. Insert a copyright
3085 notice in each output file.
3086
a75c057f
AD
30872002-02-28 Akim Demaille <akim@epita.fr>
3088
3089 * data/bison.c++: Copy the prologue of bison.simple to fetch
3090 useful M4 definitions, such as b4_header_guard.
3091
06b00abc
AD
30922002-02-25 Akim Demaille <akim@epita.fr>
3093
3094 * src/getargs.c (version): Give the name of the authors, and use a
a75c057f
AD
3095 translator friendly scheme for the bgr
3096 copyright notice.
06b00abc 3097
70e7d534
AD
30982002-02-25 Akim Demaille <akim@epita.fr>
3099
3100 * src/output.c (header_output): Remove, now handled completely via
3101 M4.
3102
abe017f6
AD
31032002-02-25 Akim Demaille <akim@epita.fr>
3104
3105 * m4/m4.m4: New, from CVS Autoconf.
3106 * configure.in: Invoke it.
3107 * src/output.c (output_skeleton): Use its result instead of the
3108 hard coded name.
3109
381fb12e
AD
31102002-02-25 Akim Demaille <akim@epita.fr>
3111
3112 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
3113 Fileutils 4.1.5.
3114 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
3115 * src/output.c (output_skeleton): Use mkstemp to create a real
3116 temporary file.
3117 Move the filling of `skeleton' and its muscle to...
3118 (prepare): here.
3119 (output): Move the definition of the prologue muscle to...
3120 (prepare): here.
3121 * src/system.h (DEFAULT_TMPDIR): New.
3122
6f38107f
PE
31232002-02-14 Paul Eggert <eggert@twinsun.com>
3124
3125 Remove the support for C++ namespace cleanliness; it was
3126 causing more problems than it was curing, since it didn't work
3127 properly on some nonstandard C++ compilers. This can wait
3128 for a proper C++ parser.
3129
3130 * NEWS: Document this.
3131 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
3132 of C++, as it's treated like C now.
3133 * src/bison.simple (YYSTD): Remove.
3134 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
3135 Treat C++ just like Standard C instead of trying to support
3136 namespace cleanliness.
3137
80cce3da
AD
31382002-02-14 Akim Demaille <akim@epita.fr>
3139
3140 * tests/regression.at (else): Adjust to Andreas' change.
3141
842e8679
AD
31422002-02-14 Akim Demaille <akim@epita.fr>
3143
3144 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
3145
4bda3f10
AD
31462002-02-13 Andreas Schwab <schwab@suse.de>
3147
3148 * src/output.c (output_rule_data): Don't output NULL, it might
3149 not be defined yet.
3150
4162fa07 31512002-02-11 Robert Anisko <robert@lrde.epita.fr>
b418ecd8 3152
4162fa07
RA
3153 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
3154 (Copyright notice): Update.
b418ecd8 3155
bd16a5dc
AD
31562002-02-11 Akim Demaille <akim@epita.fr>
3157
3158 * tests/regression.at (%nonassoc and eof): Don't include
3159 nonportable headers.
3160
8d69a1a3
RA
31612002-02-08 Robert Anisko <robert@lrde.epita.fr>
3162
3163 * data/bison.c++: Correct error recovery. Make the user able to
3164 initialize the starting location.
3165
9b2d0677
AD
31662002-02-07 Akim Demaille <akim@epita.fr>
3167
3168 * tests/input.at: New.
3169
69e2658b
RA
31702002-02-07 Robert Anisko <robert@lrde.epita.fr>
3171
3172 * data/bison.c++: Replace some direct m4 expansions by constants. Be
9b2d0677 3173 more consistent when naming methods and variables. Put preprocessor
69e2658b
RA
3174 directives around tables only needed for debugging.
3175
4aacc3a7
RA
31762002-02-07 Robert Anisko <robert@lrde.epita.fr>
3177
3178 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
3179 C++ parsers.
3180 (yy::b4_name::parse): Use print_.
3181
762a801e
RA
31822002-02-07 Robert Anisko <robert@lrde.epita.fr>
3183
3184 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
3185
4bb2bc3f
RA
31862002-02-07 Robert Anisko <robert@lrde.epita.fr>
3187
3188 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
3189 C++ parsers.
3190 (yy::b4_name::parse): Build verbose error messages, and use error_.
3191
6b45a3ca
RA
31922002-02-06 Robert Anisko <robert@lrde.epita.fr>
3193
3194 * data/bison.c++: Fix m4 quoting in comments.
3195
50997c6e
RA
31962002-02-06 Robert Anisko <robert@lrde.epita.fr>
3197
3198 * data/bison.c++: Adjust the parser code. Fix some muscles that were
3199 not expanded by m4.
3200
3f3eed27
AD
32012002-02-05 Akim Demaille <akim@epita.fr>
3202
3203 * data/bison.c++: Adjust to the M4 back end.
3204 More is certainly needed.
3205
be2a1a68
AD
32062002-02-05 Akim Demaille <akim@epita.fr>
3207
3208 Give a try to M4 as a back end.
3209
3210 * lib/readpipe.c: New, from wdiff.
3211 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
3212 BISON_HAIRY.
3213 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
3214 specific values. Now it is m4 that performs the lookup.
3215 * src/parse-skel.y: Remove.
3216 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
3217 * src/output.c (actions_output, guards_output)
3218 (token_definitions_output): No longer keeps track of the output
3219 line number, hence remove the second argument.
3220 (guards_output): Check against the guard member of a rule, not the
3221 action member.
3222 Adjust callers.
3223 (output_skeleton): Don't look for the skeleton location, let m4 do
3224 that.
3225 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
3226 file will be used.
3227 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
3228 (prepare): Given that for the time being changesyntax is not
3229 usable in M4, rename the muscles using `-' to `_'.
3230 Define `defines_flag', `output_parser_name' and `output_header_name'.
3231 * src/output.h (actions_output, guards_output)
3232 (token_definitions_output): Adjust prototypes.
3233 * src/scan-skel.l: Instead of scanning the skeletons, it now
3234 processes the output of m4: `__oline__' and `#output'.
3235 * data/bison.simple: Adjust to be used by M4(sugar).
3236 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
3237 to date.
3238 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
3239 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
3240 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
3241 shamelessly stolen from CVS Autoconf.
3242
beda758b
AD
32432002-02-05 Akim Demaille <akim@epita.fr>
3244
3245 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
3246 * configure.in: Check for the declarations of free and malloc.
3247 * src/muscle_tab.c: Adjust.
3248
5ece6d43
AD
32492002-02-05 Akim Demaille <akim@epita.fr>
3250
3251 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
3252 which have no values.
3253
5bb18f9a
AD
32542002-02-05 Akim Demaille <akim@epita.fr>
3255
3256 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
3257 * data/: here.
3258
894dd62e
PE
32592002-01-29 Paul Eggert <eggert@twinsun.com>
3260
3261 * src/bison.simple (YYSIZE_T): Do not define merely because
3262 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
3263 On some platforms, <alloca.h> does not declare YYSTD (size_t).
3264
82841af7
AD
32652002-01-27 Akim Demaille <akim@epita.fr>
3266
3267 Fix `%nonassoc and eof'.
3268
3269 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
3270 which were not properly copied! Replace
3271 memcpy (res->errs, src->errs, src->nerrs);
3272 with
3273 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
3274 !!!
3275 * tests/regression.at (%nonassoc and eof): Adjust to newest
3276 Autotest: `.' is not in the PATH.
3277
318b76e9
AD
32782002-01-27 Akim Demaille <akim@epita.fr>
3279
3280 * tests/sets.at (AT_EXTRACT_SETS): New.
3281 (Nullable): Use it.
3282 (Firsts): New.
3283
30d2f3d5
AD
32842002-01-26 Akim Demaille <akim@epita.fr>
3285
3286 * tests/actions.at, tests/calc.at, tests/headers.at,
3287 * tests/torture.at: Adjust to the newest Autotest which no longer
3288 forces `.' in the PATH.
3289
30f8c395
AD
32902002-01-25 Akim Demaille <akim@epita.fr>
3291
3292 * tests/regression.at (%nonassoc and eof): New.
3293 Suggested by Robert Anisko.
3294
29ae55f1
AD
32952002-01-24 Akim Demaille <akim@epita.fr>
3296
3297 Bison dumps core when trying to complain about broken input files.
3298 Reported by Cris van Pelt.
3299
3300 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
3301 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
3302 into...
3303 (Invalid inputs): Strengthen: exercise parse_percent_token.
3304
2b548aa6
RA
33052002-01-24 Robert Anisko <robert.anisko@epita.fr>
3306
3307 * src/Makefile.am: Add bison.c++.
3308 * src/bison.c++: New skeleton.
3309
bb0146c2
AD
33102002-01-21 Paolo Bonzini <bonzini@gnu.org>
3311
3312 * po/it.po: New.
3313
bec30531
AD
33142002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
3315
3316 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
3317
fc6edc45
MA
33182002-01-20 Marc Autret <marc@gnu.org>
3319
3320 * src/files.c (compute_output_file_names): Fix
3321
5e5d5415
MA
33222002-01-20 Marc Autret <marc@gnu.org>
3323
3324 * tests/output.at: New test.
3325 * src/files.c (compute_base_names): Don't map extensions when
3326 the YACC flag is set, use defaults.
3327 Reported by Evgeny Stambulchik.
3328
44ea3fbd
MA
33292002-01-20 Marc Autret <marc@gnu.org>
3330
bb0146c2 3331 * src/system.h: Need to define __attribute__ away for non-GCC
44ea3fbd
MA
3332 compilers as well (i.e. the vendor C compiler).
3333 Suggested by Albert Chin-A-Young.
3334
338963d1
TVH
33352002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
3336
3337 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
3338 canonical definition.
3339 * src/system.h: Use the canonical definition for PARAMS (avoids
3340 a conflict with the macro from lib/hash.h).
3341
c57b2479
AD
33422002-01-11 Akim Demaille <akim@epita.fr>
3343
3344 * configure.in: Use AC_FUNC_STRNLEN.
d9e9746c 3345 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
c57b2479 3346
b85810ae
AD
33472002-01-09 Akim Demaille <akim@epita.fr>
3348
3349 * src/files.c, src/files.h (output_infix): New.
3350 (tab_extension): Remove.
3351 (compute_base_names): Compute the former, drop the latter.
3352 * src/output.c (prepare): Insert the muscles `output-infix', and
3353 `output-suffix'.
3354 * src/parse-skel.y (string, string.1): New.
3355 (section.header): Use it.
3356 (section.yacc): Remove.
3357 (prefix): Remove too.
3358 * src/scan-skel.l: Adjust.
3359 * src/bison.simple, src/bison.hairy: Adjust.
3360
cae60122
AD
33612002-01-09 Akim Demaille <akim@epita.fr>
3362
3363 * configure.in (WERROR_CFLAGS): Compute it.
3364 * src/Makefile.am (CFLAGS): Pass it.
3365 * tests/atlocal.in (CFLAGS): Idem.
3366 * src/files.c: Fix a few warnings.
3367 (get_extension_index): Remove, unused.
3368
ae404801
AD
33692002-01-08 Akim Demaille <akim@epita.fr>
3370
3371 * src/getargs.c (AS_FILE_NAME): New.
3372 (getargs): Use it to convert DOSish file names.
3373 * src/files.c (base_name): Rename as full_base_name to avoid
3374 clashes with `base_name ()'.
3375 (filename_split): New.
3376 (compute_base_names): N-th rewrite, using filename_split.
3377
22312b71
AD
33782002-01-08 Akim Demaille <akim@epita.fr>
3379
3380 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
3381 New, stolen from the Fileutils 4.1.
3382 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
3383 * configure.in: Check for the presence of memrchr, and of its
3384 prototype.
3385
a67cef01
TVH
33862002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
3387
3388 * lib/hash.h (__P): Added definition for this macro.
3389 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
3390 BUILT_SOURCES, to ensure they are generated first.
3391 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
3392 %error-verbose to allow bootstrapping with bison 1.30x.
3393
2b25d624
AD
33942002-01-06 Akim Demaille <akim@epita.fr>
3395
3396 * src/reader.c (parse_braces): Don't fetch the next char, the
3397 convention is to fetch on entry.
3398 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
3399 'switch' without a following semicolon.
3400 * tests/regression.at (braces parsing): New.
3401
3460813b
AD
34022002-01-06 Akim Demaille <akim@epita.fr>
3403
3404 Bison is dead wrong in its RR conflict reports.
3405
3406 * tests/torture.at (GNU Cim Grammar): New.
3407 * src/conflicts.c (count_rr_conflicts): Fix.
3408
73784c64
AD
34092002-01-06 Akim Demaille <akim@epita.fr>
3410
3411 Creating package.m4 from configure.ac causes too many problems.
3412
3413 * tests/Makefile.am (package.m4): Create it by hand,
3414 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
3415
25d81090
AD
34162002-01-06 Akim Demaille <akim@epita.fr>
3417
3418 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
3419 skeleton.h.
3420
a9b8959e
PE
34212002-01-04 Paul Eggert <eggert@twinsun.com>
3422
3423 * doc/bison.texinfo (Debugging):
3424 Remove YYSTDERR; it's no longer defined or used.
3425 Also, s/cstdio.h/cstdio/.
3426
25d81090
AD
34272002-01-03 Akim Demaille <akim@epita.fr>
3428
3429 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
3430
1109455c
AD
34312002-01-03 Akim Demaille <akim@epita.fr>
3432
3433 * src/parse-skel.y (process_skeleton): Don't bind the parser's
3434 tracing code to --trace, wait for a better --trace option, with
3435 args.
3436
7ea5e977
AD
34372002-01-03 Akim Demaille <akim@epita.fr>
3438
3439 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
3440 The ISO C++ standard is extremely clear about it: stderr is
3441 considered a macro, not a regular symbol (see table 94 `Header
3442 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
3443 Therefore std:: does not apply to it. It still does with fprintf.
3444 Also, s/cstdio.h/cstdio/.
3445
fab5b110
AD
34462002-01-03 Akim Demaille <akim@epita.fr>
3447
3448 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
3449 for non system headers.
3450
aed7fd9b
AD
34512002-01-02 Akim Demaille <akim@epita.fr>
3452
3453 Equip the skeleton chain with location tracking, runtime trace,
3454 pure parser and scanner.
3455
3456 * src/parse-skel.y: Request a pure parser, locations, and prefix
3457 renaming.
3458 (%union): Having several members with the same type does not help
3459 type mismatches, simplify.
3460 (YYPRINT, yyprint): New.
3461 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
3462 (skel_error): this.
3463 Handle locations.
3464 * src/scan-skel.l: Adjust to these changes.
3465 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
3466 (LOCATION_PRINT, skel_control_t): New.
3467
24fad99e
AD
34682001-12-30 Akim Demaille <akim@epita.fr>
3469
3470 * src/parse-skel.y: Get rid of the shift/reduce conflict:
3471 replace `gb' with BLANKS.
3472 * src/scan-skel.l: Adjust.
3473
a4b36db4
AD
34742001-12-30 Akim Demaille <akim@epita.fr>
3475
3476 * src/system.h: We don't need nor want bcopy.
3477 Throw away MS-DOS crap: we don't need getpid.
3478 * configure.in: We don't need strndup. It was even causing
3479 problems: because Flex includes the headers *before* us,
3480 _GNU_SOURCE is not defined by config.h, and therefore strndup was
3481 not visible.
3482 * lib/xstrndup.c: New.
3483 * src/scan-skel.l: Use it.
3484 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
3485 * src/parse-skel.y: Use %directives instead of #defines.
3486
1239777d
AD
34872001-12-30 Akim Demaille <akim@epita.fr>
3488
3489 * src/skeleton.h: New.
3490 * src/output.c (output_parser, output_master_parser): Remove, dead
3491 code.
3492 * src/output.h (get_lines_number, actions_output, guards_output)
3493 (token_definitions_output): Prototype them.
3494 * src/parse-skel.y: Add the license notice.
3495 Include output.h and skeleton.h.
3496 (process_skeleton): Returns void, and takes a single parameter.
3497 * src/scan-skel.l: Add the license notice.
3498 Include skeleton.h.
3499 Don't use %option yylineno: it seems that then Flex imagines
3500 REJECT has been used, and therefore it won't reallocate its
3501 buffers (which makes no other sense to me than a bug). It results
3502 in warnings for `unused: yy_flex_realloc'.
3503
9b3add5b
RA
35042001-12-30 Robert Anisko <robert.anisko@epita.fr>
3505
3506 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
3507 (MUSCLE_INSERT_PREFIX): ...to there.
3508 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
3509 (MUSCLE_INSERT_PREFIX): Move from here...
3510
3511 * src/bison.hairy: Add a section directive. Put braces around muscle
3512 names. This parser skeleton is still broken, but Bison should not
3513 choke on a bad muscle 'syntax'.
3514 * src/bison.simple: Add a section directive. Put braces around muscle
3515 names.
3516
3517 * src/files.h (strsuffix, stringappend): Add declarations.
3518 (tab_extension): Add declaration.
3519 (short_base_name): Add declaration.
3520
3521 * src/files.c (strsuffix, stringappend): No longer static. These
3522 functions are used in the skeleton parser.
3523 (tab_extension): New.
3524 (compute_base_names): Use the computations done in this function
fab5b110 3525 to guess if the generated parsers should have '.tab' in their
9b3add5b
RA
3526 names.
3527 (short_base_name): No longer static.
3528
3529 * src/output.c (output_skeleton): New.
3530 (output): Disable call to output_master_parser, and give a try to
3531 a new skeleton handling system.
3532 (guards_output, actions_output): No longer static.
3533 (token_definitions_output, get_lines_number): No longer static.
3534
3535 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
3536
fab5b110 3537 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
9b3add5b
RA
3538 parse-skel.y.
3539
3540 * src/parse-skel.y: New file.
3541 * src/scan-skel.l: New file.
3542
b5b61c61
AD
35432001-12-29 Akim Demaille <akim@epita.fr>
3544
3545 %name-prefix is broken.
3546
3547 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
3548 Adjust all dependencies.
3549 * tests/headers.at (export YYLTYPE): Strengthen this test: use
3550 %name-prefix.
3551
3552 Renaming yylval but not yylloc is not consistent. Now we do.
3553
3554 * src/bison.simple: Prefix yylloc if used.
3555 * doc/bison.texinfo (Decl Summary): Document that.
3556
8c9a50be
AD
35572001-12-29 Akim Demaille <akim@epita.fr>
3558
3559 * doc/bison.texinfo: Promote `%long-directive' over
3560 `%long_directive'.
3561 Remove all references to fixed-output-files, yacc is enough.
3562
d99361e6
AD
35632001-12-29 Akim Demaille <akim@epita.fr>
3564
3565 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
3566 user prologue. These are defaults.
3567 * tests/actions.at (Mid-rule actions): Make sure the user can
3568 define YYDEBUG and YYERROR_VERBOSE.
3569
b9cecb91
AD
35702001-12-29 Akim Demaille <akim@epita.fr>
3571
3572 * src/output.c (header_output): Don't forget to export YYLTYPE and
3573 yylloc.
3574 * tests/headers.at (export YYLTYPE): New, make sure it does.
3575 * tests/regression.at (%union and --defines, Invalid CPP headers):
3576 Move to...
3577 * tests/headers.at: here.
3578
aea13e97
AD
35792001-12-29 Akim Demaille <akim@epita.fr>
3580
3581 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
3582
931394cb
AD
35832001-12-29 Akim Demaille <akim@epita.fr>
3584
3585 * tests/actions.at (Mid-rule actions): Output on a single line
3586 instead of several.
3587
704a47c4
AD
35882001-12-29 Akim Demaille <akim@epita.fr>
3589
3590 * doc/bison.texinfo: Formatting changes.
3591
091e20bb
AD
35922001-12-29 Akim Demaille <akim@epita.fr>
3593
3594 Don't store the token defs in a muscle, just be ready to output it
3595 on command. Now possible via `symbols'. Fixes a memory leak.
3596
3597 * src/output.c (token_definitions_output): New.
3598 (output_parser, header_output): Use it.
3599 * src/reader.c (symbols_save): Remove.
3600
cce71710
AD
36012001-12-29 Akim Demaille <akim@epita.fr>
3602
3603 * src/bison.simple: Do not provide a default for YYSTYPE and
3604 YYLTYPE before the user's prologue. Otherwise it's hardly... a
3605 default.
3606
82c035a8
AD
36072001-12-29 Akim Demaille <akim@epita.fr>
3608
3609 Mid-rule actions are simply... ignored!
3610
3611 * src/reader.c (readgram): Be sure to attach mid-rule actions to
3612 the empty-rule associated to the dummy symbol, not to the host
3613 rule.
3614 * tests/actions.at (Mid-rule actions): New.
3615
8419d367
AD
36162001-12-29 Akim Demaille <akim@epita.fr>
3617
3618 Memory leak.
3619
3620 * src/reader.c (reader): Free grammar.
3621
375d5806
AD
36222001-12-29 Akim Demaille <akim@epita.fr>
3623
3624 Memory leak.
3625
3626 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
3627 since it allocates it for each state, although only one is needed.
3628 (allocate_storage): Do it here.
3629
f51cb8ff
AD
36302001-12-29 Akim Demaille <akim@epita.fr>
3631
3632 * src/options.h, src/options.c (create_long_option_table): Rename
3633 as...
3634 (long_option_table_new): this, with a clearer prototype.
3635 (percent_table): Remove, unused,
3636 * src/getargs.c (getargs): Adjust.
3637
29e88316
AD
36382001-12-29 Akim Demaille <akim@epita.fr>
3639
3640 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
3641 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
3642 as states.
3643
b9f71f19
AD
36442001-12-29 Akim Demaille <akim@epita.fr>
3645
3646 * src/lalr.c (build_relations): Rename `states' as `states1'.
3647 Sorry, I don't understand exactly what it is, no better name...
3648
1a2b5d37
AD
36492001-12-29 Akim Demaille <akim@epita.fr>
3650
3651 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
3652 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
3653 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
3654 as rules.
3655
1cca533e
AD
36562001-12-29 Akim Demaille <akim@epita.fr>
3657
3658 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
3659 ago.
3660
c03ae966
AD
36612001-12-29 Akim Demaille <akim@epita.fr>
3662
3663 * src/reader.c, src/reader.h (user_toknums): Remove.
3664 Adjust all users to use symbols[i]->user_token_number.
3665
5a670b1e
AD
36662001-12-29 Akim Demaille <akim@epita.fr>
3667
3668 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
3669 Adjust all users to use symbols[i]->prec or ->assoc.
3670
ad949da9
AD
36712001-12-29 Akim Demaille <akim@epita.fr>
3672
3673 * src/reader.c, src/reader.h (tags): Remove.
3674 Adjust all users to use symbols[i]->tag.
3675
0e78e603
AD
36762001-12-29 Akim Demaille <akim@epita.fr>
3677
3678 * src/gram.h, src/gram.c (symbols): New, similar to state_table
3679 and rule_table.
3680 * src/reader.c (packsymbols): Fill this table.
3681 Drop sprec.
3682 * src/conflicts.c (resolve_sr_conflict): Adjust.
3683 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
3684 single table.
3685 Use symbols[i]->tag instead of tags[i].
3686
213e640e
AD
36872001-12-29 Akim Demaille <akim@epita.fr>
3688
3689 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
3690 In addition, put a comment in there, to replace...
3691 * tests/regression.at (%union and C comments): Remove.
3692
e7b8bef1
AD
36932001-12-29 Akim Demaille <akim@epita.fr>
3694
3695 * tests/regression.at (Web2c Actions): Blindly move the actual
3696 output as expected output. The contents *seem* right to me, but I
3697 can't pretend reading perfectly parser tables... Nonetheless, all
3698 the other tests pass correctly, the table look OK, even though the
3699 presence of `$axiom' is to be noted: AFAICS it is useless (but
3700 harmless).
3701
b68e7744
AD
37022001-12-29 Akim Demaille <akim@epita.fr>
3703
3704 * src/reader.c (readgram): Don't add the rule 0 if there were no
3705 rules read. In other words, add it _after_ having performed
3706 grammar sanity checks.
3707 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
3708
78d5bae9
AD
37092001-12-29 Akim Demaille <akim@epita.fr>
3710
3711 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
3712 visible, and some states have now a different number.
3713
ff442794
AD
37142001-12-29 Akim Demaille <akim@epita.fr>
3715
3716 * src/reader.c (readgram): Bind the initial rule's lineno to that
3717 of the first rule.
3718 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
3719 (Solved SR Conflicts): Adjust rule 0's line number.
3720
610ab194
AD
37212001-12-29 Akim Demaille <akim@epita.fr>
3722
3723 Fix the `GAWK Grammar' failure.
3724
3725 * src/LR0.c (final_state): Initialize to -1 so that we do compute
3726 the reductions of the first state which was mistakenly confused
3727 with the final state because precisely final_state was initialized
3728 to 0.
3729 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
3730 now noticed by Bison.
3731 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
3732 have a reduction on $default.
3733
29d29c8f
AD
37342001-12-29 Akim Demaille <akim@epita.fr>
3735
3736 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
3737 rule line numbers.
3738 * src/closure.c (print_closure): Likewise.
3739 * src/derives.c (print_derives): Likewise.
3740 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
3741 now.
3742
7c6b64d0
AD
37432001-12-29 Akim Demaille <akim@epita.fr>
3744
3745 * src/lalr.c (lookaheads_print): New.
3746 (lalr): Call it when --trace-flag.
3747 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
3748 are dumped.
3749
3d4daee3
AD
37502001-12-29 Akim Demaille <akim@epita.fr>
3751
3752 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
3753 when walking through ritem, even via rule->rhs.
3754 * src/reduce.c (dump_grammar, useful_production, reduce_output)
3755 (useful_production, useless_nonterminals): Likewise.
3756 (reduce_grammar_tables): Likewise, plus update nritems.
3757 * src/nullable.c (set_nullable): Likewise.
3758 * src/lalr.c (build_relations): Likewise.
3759 * tests/sets.at (Nullable): Adjust.
3760 Fortunately, now, the $axiom is no longer nullable.
3761
9e7f6bbd
AD
37622001-12-29 Akim Demaille <akim@epita.fr>
3763
3764 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
3765 the 0-sentinel.
3766 * src/gram.c (ritem_longest_rhs): Likewise.
3767 * src/reduce.c (nonterminals_reduce): Likewise.
3768 * src/print_graph.c (print_graph): Likewise.
3769 * src/output.c (output_rule_data): Likewise.
3770 * src/nullable.c (set_nullable): Likewise.
3771
255ef638
AD
37722001-12-29 Akim Demaille <akim@epita.fr>
3773
3774 * src/output.c: Comment changes.
3775
0d8a7363
AD
37762001-12-27 Paul Eggert <eggert@twinsun.com>
3777
3778 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
3779 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
3780 Sparc, as they were causing more porting problems than the
3781 (minor) performance improvement was worth.
3782
3783 Also, catch up with 1.31's YYSTD.
3784
3db472b9
AD
37852001-12-27 Akim Demaille <akim@epita.fr>
3786
3787 * src/output.c (output_gram): Rely on nritems, not the
3788 0-sentinel. See below.
3789 Use -1 as separator, not 0.
3790 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
3791 Rely on -1 as separator in yyrhs, instead of 0.
3792 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
3793 twice `Now at end of input', therefore there are two lines less to
3794 expect.
3795
b365aa05
AD
37962001-12-27 Akim Demaille <akim@epita.fr>
3797
3798 * tests/regression.at (Unresolved SR Conflicts):
3799 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
3800 below.
3801
30171f79
AD
38022001-12-27 Akim Demaille <akim@epita.fr>
3803
3804 * src/LR0.c (new_state): Recognize the final state by the fact it
3805 is reached by eoftoken.
3806 (insert_start_shifting_state, insert_eof_shifting_state)
3807 (insert_accepting_state, augment_automaton): Remove, since now
3808 these states are automatically computed from the initial state.
3809 (generate_states): Adjust.
3810 * src/print.c: When reporting a rule number to the user, substract
3811 1, so that the axiom rule is rule 0, and the first user rule is 1.
3812 * src/reduce.c: Likewise.
3813 * src/print_graph.c (print_core): For the time being, just as for
3814 the report, depend upon --trace-flags to dump the full set of
3815 items.
3816 * src/reader.c (readgram): Once the grammar read, insert the rule
3817 0: `$axiom: START-SYMBOL $'.
3818 * tests/set.at: Adjust: rule 0 is now displayed, and since the
3819 number of the states has changed (the final state is no longer
3820 necessarily the last), catch up.
3821
75142d45
AD
38222001-12-27 Akim Demaille <akim@epita.fr>
3823
3824 Try to make the use of the eoftoken valid. Given that its value
3825 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
3826 is used instead of > 0 where appropriate, (ii), depend upon nritems
3827 instead of the 0-sentinel.
3828
3829 * src/gram.h, src/gram.c (nritems): New.
3830 Expected to be duplication of nitems, but for the time being...
3831 * src/reader.c (packgram): Assert nritems and nitems are equal.
3832 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
3833 * src/closure.c (print_closure, print_fderives): Likewise.
3834 * src/gram.c (ritem_print): Likewise.
3835 * src/print.c (print_core, print_grammar): Likewise.
3836 * src/print_graph.c: Likewise.
3837
b7c49edf
AD
38382001-12-27 Akim Demaille <akim@epita.fr>
3839
3840 * src/main.c (main): If there are complains after grammar
3841 reductions, then output the report anyway if requested, then die.
3842 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
3843 * src/reader.c (eoftoken): New.
3844 (parse_token_decl): If the token being defined has value `0', it
3845 is the eoftoken.
3846 (packsymbols): No longer hack `tags' to insert `$' by hand.
3847 Be sure to preserve the value of the eoftoken.
3848 (reader): Make sure eoftoken is defined.
3849 Initialize nsyms to 0: now eoftoken is created just like the others.
3850 * src/print.c (print_grammar): Don't special case the eof token.
3851 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
3852 lie anyway, albeit pleasant.
3853 * tests/calc.at: Exercise error messages with eoftoken.
3854 Change the grammar so that empty input is invalid.
3855 Adjust expectations.
3856 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
3857
ec2da99f
AD
38582001-12-27 Akim Demaille <akim@epita.fr>
3859
3860 * configure.in: Check the protos of strchr ans strspn.
3861 Replace strchr if needed.
3862 * src/system.h: Provide the protos of strchr, strspn and memchr if
3863 missing.
3864 * lib/strchr.c: New.
3865 * src/reader.c (symbols_save): Use strchr.
3866
8adfa272
AD
38672001-12-27 Akim Demaille <akim@epita.fr>
3868
3869 * src/print.c, src/print_graph.c (escape): New.
3870 Use it to quote the TAGS outputs.
3871 * src/print_graph.c (print_state): Now errors are in red, and
3872 reductions in green.
3873 Prefer high to wide: output the state number on a line of its own.
3874
80dac38c
AD
38752001-12-27 Akim Demaille <akim@epita.fr>
3876
3877 * src/state.h, src/state.c (reductions_new): New.
3878 * src/LR0.c (set_state_table): Let all the states have a
3879 `reductions', even if reduced to 0.
3880 (save_reductions): Adjust.
3881 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
3882 * src/print.c (print_reductions, print_actions): Adjust.
3883 * src/output.c (action_row): Adjust.
3884
2cec70b9
AD
38852001-12-27 Akim Demaille <akim@epita.fr>
3886
3887 * src/state.h, src/state.c (errs_new, errs_dup): New.
3888 * src/LR0.c (set_state_table): Let all the states have an errs,
3889 even if reduced to 0.
3890 * src/print.c (print_errs, print_reductions): Adjust.
3891 * src/output.c (output_actions, action_row): Adjust.
3892 * src/conflicts.c (resolve_sr_conflict): Adjust.
3893
13ca549a
AD
38942001-12-27 Akim Demaille <akim@epita.fr>
3895
3896 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
3897
5092aba5
AD
38982001-12-27 Akim Demaille <akim@epita.fr>
3899
3900 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
3901 * src/print.c: here.
3902 (lookaheadset, shiftset): New, used as additional storage by
3903 print_reductions.
3904 (print_results): Adjust.
3905 (print_shifts, print_gotos, print_errs): New, extracted from...
3906 (print_actions): here.
3907 * src/print_graph.c (print_actions): Remove dead code.
3908
11e2beca
AD
39092001-12-27 Akim Demaille <akim@epita.fr>
3910
3911 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
3912 `$n' and `@n'.
3913
dac3c910
AD
39142001-12-27 Akim Demaille <akim@epita.fr>
3915
3916 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
3917 (build_relations): Adjust.
3918
d0b0fefa
AD
39192001-12-27 Akim Demaille <akim@epita.fr>
3920
3921 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
3922 duplication.
3923
adc8c848
AD
39242001-12-27 Akim Demaille <akim@epita.fr>
3925
3926 * src/reader.c (packgram): Catch nitems overflows.
3927
14d293ac
AD
39282001-12-27 Akim Demaille <akim@epita.fr>
3929
3930 * src/files.c, src/files.h (guard_obstack): Remove.
3931 * src/output.c (output): Adjust.
3932 * src/reader.c (parse_braces): New, factoring...
3933 (copy_action, copy_guard): these two which are renamed as...
3934 (parse_action, parse_guard): these.
3935 As a voluntary consequence, using braces around guards is now
3936 mandatory.
3937
f499b062
AD
39382001-12-27 Akim Demaille <akim@epita.fr>
3939
3940 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
3941 * src/reader.c (symbol_list): `guard' and `guard_line' are new
3942 members.
3943 (symbol_list_new): Adjust.
3944 (copy_action): action_line is the first line, not the last.
3945 (copy_guard): Just as for actions, store the `action' only, not
3946 the switch/case/break flesh.
3947 Don't parse the user action that might follow the guard, let...
3948 (readgram): do it, i.e., now, there can be an action after a
3949 guard.
3950 In other words the guard is just explicitly optional.
3951 (packgram): Adjust.
3952 * src/output.c (guards_output): New.
3953 (output_parser): Call it when needed.
3954 (output): Also free the guard and attrs obstacks.
3955 * src/files.c, src/files.h (obstack_save): Remove.
3956 (output_files): Remove.
3957 As a result, if one needs the former `.act' file, using an
3958 appropriate skeleton which requires actions and guards is now
3959 required.
3960 * src/main.c (main): Adjust.
3961 * tests/semantic.at: New.
3962 * tests/regression.at: Use `input.y' as input file name.
3963 Avoid 8+3 problems by requiring input.c when the test needs the
3964 parser.
3965
d945f5cd
AD
39662001-12-27 Akim Demaille <akim@epita.fr>
3967
3968 * src/reader.c (symbol_list_new): Be sure to initialize all the
3969 fields.
3970
d200e455
AD
39712001-12-27 Akim Demaille <akim@epita.fr>
3972
3973 All the hacks using a final pseudo state are now useless.
3974
3975 * src/LR0.c (set_state_table): state_table holds exactly nstates.
3976 * src/lalr.c (nLA): New.
3977 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
3978 instead of lookaheadsp from the pseudo state (nstate + 1).
3979
f9507c28
AD
39802001-12-27 Akim Demaille <akim@epita.fr>
3981
3982 * src/output.c (action_row, token_actions): Use a state_t instead
3983 of a integer, and nlookaheads instead of the following state's
3984 lookaheadsp.
3985
065fbd27
AD
39862001-12-27 Akim Demaille <akim@epita.fr>
3987
3988 * src/conflicts.c (log_resolution, flush_shift)
3989 (resolve_sr_conflict, set_conflicts, solve_conflicts)
3990 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
3991 (conflicts_print, print_reductions): Use a state_t instead of an
3992 integer when referring to a state.
3993 As much as possible, depend upon nlookaheads, instead of the
3994 `lookaheadsp' member of the following state (since lookaheads of
3995 successive states are successive, the difference between state n + 1
3996 and n served as the number of lookaheads for state n).
3997 * src/lalr.c (add_lookback_edge): Likewise.
3998 * src/print.c (print_core, print_actions, print_state)
3999 (print_results): Likewise.
4000 * src/print_graph.c (print_core, print_actions, print_state)
4001 (print_graph): Likewise.
4002 * src/conflicts.h: Adjust.
4003
1b177bd7
AD
40042001-12-27 Akim Demaille <akim@epita.fr>
4005
4006 * src/bison.hairy: Formatting/comment changes.
4007 ANSIfy.
4008 Remove `register' indications.
4009 Add plenty of `static'.
4010
7742ddeb
AD
40112001-12-27 Akim Demaille <akim@epita.fr>
4012
4013 * src/output.c (prepare): Drop the muscle `ntbase' which
4014 duplicates ntokens.
4015 * src/bison.simple: Formatting/comment changes.
4016 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
4017 is an undocumented synonym.
4018
1fa14068
AD
40192001-12-22 Akim Demaille <akim@epita.fr>
4020
4021 * src/output.c (output_table_data): Change the prototype to use
4022 `int' for array ranges: some invocations do pass an int, not a
4023 short.
4024 Reported by Wayne Green.
4025
b9752825
AD
40262001-12-22 Akim Demaille <akim@epita.fr>
4027
4028 Some actions of web2c.y are improperly triggered.
4029 Reported by Mike Castle.
4030
4031 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
4032 * tests/regression.at (Web2c): Rename as...
4033 (Web2c Report): this.
4034 (Web2c Actions): New.
4035
776209d6
AD
40362001-12-22 Akim Demaille <akim@epita.fr>
4037
4038 Reductions in web2c.y are improperly reported.
4039 Reported by Mike Castle.
4040
4041 * src/conflicts.c (print_reductions): Fix.
4042 * tests/regression.at (Web2c): New.
4043
275fc3ad
AD
40442001-12-18 Akim Demaille <akim@epita.fr>
4045
4046 Some host fail on `assert (!"foo")', which expands to
4047 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
4048 Reported by Nelson Beebee.
4049
4050 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
4051 `#define it_succeeded 0' and `assert (it_succeeded)'.
4052
897668ee
MA
40532001-12-17 Marc Autret <autret_m@epita.fr>
4054
4055 * src/bison.simple: Don't hard code the skeleton line and filename.
4056 * src/output.c (output_parser): Rename 'line' as 'output_line'.
4057 New line counter 'skeleton_line' (skeleton-line muscle).
4058
ab3399e0
PE
40592001-12-17 Paul Eggert <eggert@twinsun.com>
4060
4061 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
4062 YYDEBUG must be defined to a nonzero value.
4063
4064 * src/bison.simple (yytname): Do not assume that the user defines
4065 YYDEBUG to a properly parenthesized expression.
4066
3877f72b
AD
40672001-12-17 Akim Demaille <akim@epita.fr>
4068
4069 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
4070 nlookaheads is a new member.
4071 Adjust all users.
4072 * src/lalr.h (nlookaheads): Remove this orphan declaration.
4073 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
4074 state.
776209d6 4075
331dbc1b
AD
40762001-12-17 Akim Demaille <akim@epita.fr>
4077
4078 * src/files.h, src/files.c (open_files, close_files): Remove.
4079 * src/main.c (main): Don't open/close files, nor invoke lex_free,
4080 let...
4081 * src/reader.c (reader): Do it.
776209d6 4082
be750e4c
AD
40832001-12-17 Akim Demaille <akim@epita.fr>
4084
4085 * src/conflicts.c (print_reductions): Formatting changes.
776209d6 4086
709ae8c6
AD
40872001-12-17 Akim Demaille <akim@epita.fr>
4088
4089 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
4090 (flush_reduce): New.
4091 (resolve_sr_conflict): Adjust.
776209d6 4092
f87685c3
AD
40932001-12-17 Akim Demaille <akim@epita.fr>
4094
4095 * src/output.c (output_obstack): Be static and rename as...
4096 (format_obstack): this, to avoid any confusion with files.c's
4097 output_obstack.
4098 * src/reader.h (muscle_obstack): Move to...
4099 * src/output.h: here, since it's defined in output.c.
4100
837491d8
AD
41012001-12-17 Akim Demaille <akim@epita.fr>
4102
4103 * src/output.c (action_row, save_column, default_goto)
4104 (sort_actions, matching_state, pack_vector): Better variable
4105 locality.
4106
796d61fb
AD
41072001-12-17 Akim Demaille <akim@epita.fr>
4108
4109 * src/output.c: Various formatting changes.
776209d6 4110
64d15509
AD
41112001-12-17 Akim Demaille <akim@epita.fr>
4112
4113 * src/files.c (output_files): Free the output_obstack.
4114 * src/main.c (main): Call print and print_graph conditionally.
4115 * src/print.c (print): Work unconditionally.
4116 * src/print_graph.c (print_graph): Work unconditionally.
4117 * src/conflicts.c (log_resolution): Output only if verbose_flag.
4118
fbc8ecb7
MA
41192001-12-16 Marc Autret <autret_m@epita.fr>
4120
4121 * src/output.c (actions_output): Fix. When we use %no-lines,
4122 there is one less line per action.
4123
f0440388
MA
41242001-12-16 Marc Autret <autret_m@epita.fr>
4125
4126 * src/bison.simple: Remove a useless #line directive.
4127 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
4128 * src/output.c (get_lines_number): New.
776209d6 4129 (output_parser): Adjust, now takes care about the lines of a
f0440388
MA
4130 output muscles.
4131 Fix line numbering.
4132 (actions_output): Computes the number of lines taken by actions.
4133 (output_master_parser): Insert new skeleton which is the name of
4134 the output parser file name.
4135
a79986b8
MA
41362001-12-15 Marc Autret <autret_m@epita.fr>
4137
4138 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
4139
4ec8e00f
MA
41402001-12-15 Marc Autret <autret_m@epita.fr>
4141
4142 * src/output.c (output_gram): Keep track of the hairy one.
4143
1a4648ff
AD
41442001-12-15 Akim Demaille <akim@epita.fr>
4145
4146 Make `make distcheck' work.
4147
4148 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
4149 system.h which uses libgettext.h.
4150
9c2c67e6
AD
41512001-12-15 Akim Demaille <akim@epita.fr>
4152
4153 * src/nullable.c (set_nullable): Useless rules must be skipped,
4154 otherwise, since we range over their symbols, we might look at a
4155 nonterminal which no longer ``exists'', i.e., it is not counted in
4156 `nvars', hence we overflow our arrays.
4157
93ede233
AD
41582001-12-15 Akim Demaille <akim@epita.fr>
4159
4160 The header can also be produced directly, without any obstack!
4161 Yahoo!
4162
4163 * src/files.c, src/files.h (defines_obstack): Remove.
4164 (compute_header_macro): Global.
4165 (defines_obstack_save): Remove.
4166 * src/reader.c (parse_union_decl): No longer output to
4167 defines_obstack: its content can be found in the `stype' muscle
4168 anyway.
4169 (output_token_translations): Merge into...
4170 (symbols_output): this.
4171 Rename as...
4172 (symbols_save): this.
4173 (reader): Adjust.
4174 * src/output.c (header_output): New.
4175 (output): Call it.
4176
2666f928
AD
41772001-12-15 Akim Demaille <akim@epita.fr>
4178
4179 * src/reader.c (parse_union_decl): Instead of handling two obstack
4180 simultaneously, use one to define the `stype' muscle, and use the
4181 value of the latter to fill defines_obstack.
4182 (copy_comment): Remove.
4183 (copy_comment2): Work for a single obstack.
4184 Rename as...
4185 (copy_comment): this.
4186
428046f8
AD
41872001-12-15 Akim Demaille <akim@epita.fr>
4188
4189 * src/lex.c, src/lex.h (xgetc): No longer static.
4190 * src/reader.c (parse_union_decl): Revamp.
4191
ea52d706
AD
41922001-12-15 Akim Demaille <akim@epita.fr>
4193
4194 Still making progress in separating Bison into (i) input, (ii)
4195 process, (iii) output: now we can directly output the parser file
4196 without using table_obstack at all.
4197
4198 * src/files.c, src/files.h (table_obstack): Bye bye.
4199 (parser_file_name): New.
4200 * src/files.c (compute_output_file_names): Compute it.
4201 * src/output.c (actions_output, output_parser)
4202 (output_master_parser): To a file instead of an obstack.
4203
3f96f4dc
AD
42042001-12-15 Akim Demaille <akim@epita.fr>
4205
4206 Attach actions to rules, instead of pre-outputting them to
4207 actions_obstack.
4208
4209 * src/gram.h (rule_t): action and action_line are new members.
4210 * src/reader.c (symbol_list): Likewise.
4211 (copy_action): Save the actions within the rule.
4212 (packgram): Save them in rule_table.
4213 * src/output.c (actions_output): New.
4214 (output_parser): Use it on `%%actions'.
4215 (output_rule_data): Don't free rule_table.
4216 (output): Do it.
4217 (prepare): Don't save the `action' muscle.
4218 * src/bison.simple: s/%%action/%%actions/.
4219
51576fb3
AD
42202001-12-15 Akim Demaille <akim@epita.fr>
4221
4222 * src/reader.c (copy_action): When --yacc, don't append a `;'
4223 to the user action: let it fail if lacking.
dee049eb 4224 Suggested by Arnold Robbins and Tom Tromey.
51576fb3 4225
2648a72d
AD
42262001-12-14 Akim Demaille <akim@epita.fr>
4227
4228 * src/lex.c (literalchar): Simply return the char you decoded, non
4229 longer mess around with obstacks and int pointers.
4230 Adjust all callers.
4231
92790e5b
AD
42322001-12-14 Akim Demaille <akim@epita.fr>
4233
4234 * src/lex.c (literalchar): Don't escape the special characters,
4235 just decode them, and keep them as char (before, eol was output as
4236 the 2 char string `\n' etc.).
4237 * src/output.c (output_rule_data): Use quotearg to output the
4238 token strings.
4239
927c1557
PE
42402001-12-13 Paul Eggert <eggert@twinsun.com>
4241
4242 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
4243 Do not infringe on the global user namespace when using C++.
4244 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
4245 All uses of `fprintf' and `stderr' changed.
4246
4247 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
4248
ed8e1f68
AD
42492001-12-13 Akim Demaille <akim@epita.fr>
4250
4251 The computation of nullable is broken: it doesn't handle empty
4252 RHS's properly.
4253
4254 * tests/torture.at (GNU AWK Grammar): New.
4255 * tests/sets.at (Nullable): New.
4256 * src/nullable.c (set_nullable): Instead of blindly looping over
4257 `ritems', loop over the rules, and then over their rhs's.
4258
4259 Work around Autotest bugs.
4260
4261 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
4262 frame, because Autotest understand lines starting with a `+' as
4263 traces from the shell. Then, they are not processed properly.
4264 Admittedly an Autotest bug, but we don't have time to wait for
4265 Autotest to catch up.
4266 * tests/regression.at (Broken Closure): Adjust to the new table
4267 frames.
4268 Move to...
4269 * tests/sets.at: here.
4270
cb581495
AD
42712001-12-13 Akim Demaille <akim@epita.fr>
4272
4273 * src/closure.c (closure): Use nrules instead of playing tricks
4274 with BITS_PER_WORD.
4275
2e729273
AD
42762001-12-13 Akim Demaille <akim@epita.fr>
4277
4278 * src/print.c (print_actions): Output the handling of `$' as the
4279 traces do: shifting the token EOF. Before EOF was treated as a
4280 nonterminal.
4281 * tests/regression.at: Adjust some tests.
4282 * src/print_graph.c (print_core): Complete the set of items via
4283 closure. The next-to-final and final states are still unsatisfying,
4284 but that's to be addressed elsewhere.
4285 No longer output the rule numbers, but do output the state number.
4286 A single loop for the shifts + gotos is enough, but picked a
4287 distinct color for each.
4288 (print_graph): Initialize and finalize closure.
4289
107f7dfb
AD
42902001-12-13 Akim Demaille <akim@epita.fr>
4291
4292 * src/reader.c (readgram): Remove dead code, an strip useless
4293 braces.
4294 (get_type): Remove, unused.
4295
9b53a24f
AD
42962001-12-12 Akim Demaille <akim@epita.fr>
4297
4298 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
4299 on that of lib/error.c.
4300
dbfb6dcd
AD
43012001-12-12 Akim Demaille <akim@epita.fr>
4302
4303 Some hosts don't like `/' in includes.
4304
4305 * src/system.h: Include libgettext.h without qualifying the path.
4306 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
4307 $(top_srcdir).
4308
c25fb648
MA
43092001-12-11 Marc Autret <autret_m@epita.fr>
4310
4311 * src/output.c (output_parser): Remove useless muscle.
4312
710ddc4f
MA
43132001-12-11 Marc Autret <autret_m@epita.fr>
4314
4315 * src/bison.simple: Remove #line just before %%epilogue. It
4316 is now handled in ...
4317 * src/reader.c (read_additionnal_code): Add the output of a
4318 #line for the epilogue.
4319
e83d80b8
MA
43202001-12-10 Marc Autret <autret_m@epita.fr>
4321
927c1557 4322 * src/reader.c (copy_definition): Re-use CPP-outed code which
e83d80b8
MA
4323 replace precedent remove.
4324 * src/bison.simple: Remove #line before %%prologue because
4325 %%input-line is wrong at this time.
4326
971d5158
MA
43272001-12-10 Marc Autret <autret_m@epita.fr>
4328
4329 * src/reader.c (symbols_output): Clean up.
927c1557 4330 * src/output.c (output_gram, output): Clean up.
971d5158 4331
5edafffd
AD
43322001-12-10 Akim Demaille <akim@epita.fr>
4333
4334 * src/lalr.c (initialize_lookaheads): New. Extracted from...
4335 * src/LR0.c (set_state_table): here.
4336 * src/lalr.c (lalr): Call it.
4337
0279f8e9
AD
43382001-12-10 Akim Demaille <akim@epita.fr>
4339
4340 * src/state.h (shifts): Remove the `number' member: shifts are
4341 attached to state, hence no longer need to be labelled with a
4342 state number.
4343
190c4f5f
AD
43442001-12-10 Akim Demaille <akim@epita.fr>
4345
4346 Now that states have a complete set of members, the linked list of
4347 shifts is useless: just fill directly the state's shifts member.
4348
4349 * src/state.h (shifts): Remove the `next' member.
4350 * src/LR0.c (first_state, last_state): Remove.
4351 Adjust the callers.
4352 (augment_automaton): Don't look for the shifts that must be added
4353 a shift on EOF: it is those of the state we looked for! But now,
4354 since shifts are attached, it is no longer needed to looking
4355 merely by its id: its number.
4356
2a73b93d
AD
43572001-12-10 Akim Demaille <akim@epita.fr>
4358
4359 * src/LR0.c (augment_automaton): Better variable locality.
4360 Remove an impossible branch: if there is a state corresponding to
4361 the start symbol being shifted, then there is shift for the start
4362 symbol from the initial state.
4363
74392f6a
AD
43642001-12-10 Akim Demaille <akim@epita.fr>
4365
4366 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
4367 only when appropriate: when insert_start_shifting_state' is not
4368 invoked.
4369 * tests/regression.at (Rule Line Numbers): Adjust.
4370
37c82725
AD
43712001-12-10 Akim Demaille <akim@epita.fr>
4372
4373 * src/LR0.c (augment_automaton): Now that all states have shifts,
4374 merge the two cases addition shifts to the initial state.
4375
6a164e0c
AD
43762001-12-10 Akim Demaille <akim@epita.fr>
4377
4378 * src/lalr.c (set_state_table): Move to...
4379 * src/LR0.c: here.
4380 * src/lalr.c (lalr): Don't call it...
4381 * src/LR0.c (generate_states): do it.
4382 * src/LR0.h (first_state): Remove, only the table is used.
4383
7215de24
AD
43842001-12-10 Akim Demaille <akim@epita.fr>
4385
4386 * src/LR0.h (first_shift, first_reduction): Remove.
4387 * src/lalr.c: Don't use first_shift: find shifts through the
4388 states.
4389
80e25d4d
AD
43902001-12-10 Akim Demaille <akim@epita.fr>
4391
4392 * src/LR0.c: Attach shifts to states as soon as they are
4393 computed.
4394 * src/lalr.c (set_state_table): Instead of assigning shifts to
4395 state, just assert that the mapping was properly done.
4396
0ab3728b
AD
43972001-12-10 Akim Demaille <akim@epita.fr>
4398
4399 * src/LR0.c (insert_start_shift): Rename as...
4400 (insert_start_shifting_state): this.
4401 (insert_eof_shifting_state, insert_accepting_state): New.
4402 (augment_automaton): Adjust.
4403 Better locality of the variables.
4404 When looking if the start_symbol is shifted from the initial
4405 state, using `while (... symbol != start_symbol ...)' sounds
4406 better than `while (... symbol < start_symbol ...)': If fail
4407 to see how the order between symbols could be relevant!
4408
78af9bbc
AD
44092001-12-10 Akim Demaille <akim@epita.fr>
4410
4411 * src/getargs.h: Don't declare `spec_name_prefix' and
4412 `spec_file_prefix', declared by src/files.h.
4413 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
4414 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
4415 * src/output.c (prepare): Adjust.
4416 * src/reader.c (symbols_output): Likewise.
4417 * src/vmsgetargs.c: Vaguely adjust, but who cares?
4418
bdef2a41
AD
44192001-12-10 Akim Demaille <akim@epita.fr>
4420
4421 * src/muscle_tab.c (muscle_init): NULL is a better default than
4422 `"0"'.
4423
3735969c
AD
44242001-12-10 Akim Demaille <akim@epita.fr>
4425
4426 * src/reader.c (reader): Calling symbols_output once is enough.
4427
49701457
AD
44282001-12-10 Akim Demaille <akim@epita.fr>
4429
4430 Now that states have a complete set of members, the linked list of
4431 reductions is useless: just fill directly the state's reductions
4432 member.
4433
4434 * src/state.h (struct reductions): Remove member `number' and
4435 `next'.
4436 * src/LR0.c (first_reduction, last_reduction): Remove.
4437 (save_reductions): Don't link the new reductions, store them in
4438 this_state.
4439 * src/lalr.c (set_state_table): No need to attach reductions to
4440 states, it's already done.
4441 * src/output.c (output_actions): No longer free the shifts, then
4442 the reductions, then the states: free all the states and their
4443 members.
4444
0edad749
AD
44452001-12-10 Akim Demaille <akim@epita.fr>
4446
4447 * src/options.c (OPTN, DRTV, BOTH): New.
4448 (option_table): Use them.
4449
0edad749
AD
4450 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
4451 the job of system.h.
4452 * src/options.c: Don't include stdio.h and xalloc.h for the same
4453 reasons.
4454
5449dd0f
AD
44552001-12-10 Akim Demaille <akim@epita.fr>
4456
4457 * src/output.c (output, prepare): Make sure the values of the
4458 muscles `action' and `prologue' are 0-terminated.
4459
a870c567
AD
44602001-12-10 Akim Demaille <akim@epita.fr>
4461
4462 Clean up GCC warnings.
4463
4464 * src/reader.c (copy_action): `buf' is not used.
4465 (parse_skel_decl): Be static.
4466 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
4467 * src/options.h (create_long_option_table): Have a real prototype.
4468 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
4469 (hash_delete_at): Return const void *.
4470 Adjust casts to preserve the const.
4471
80df8768
AD
44722001-12-10 Akim Demaille <akim@epita.fr>
4473
4474 * configure.in: Require 2.52g.
4475 M4 is not needed, but AUTOM4TE is.
4476 * m4/m4.m4: Remove.
4477 * tests/Makefile.am: Adjust.
4478
f693ad14
AD
44792001-12-10 Akim Demaille <akim@epita.fr>
4480
4481 One structure for states is enough, even though theoretically
4482 there are LR(0) states and LALR(1) states.
4483
4484 * src/lalr.h (state_t): Remove.
4485 (state_table): Be state_t **, not state_t *.
4486 * src/state.h (core, CORE_ALLOC): Rename as...
4487 (state_t, STATE_ALLOC): this.
4488 Add the LALR(1) members: shifts, reductions, errs.
4489 * src/LR0.c (state_table): Rename as...
4490 (state_hash): this, to avoid name clashes with the global
4491 `state_table'.
4492 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
4493 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
4494
74ffbcb6
AD
44952001-12-10 Akim Demaille <akim@epita.fr>
4496
4497 Bison dumps core on bash.y.
4498 Reported by Pascal Bart.
4499
4500 * src/warshall.c (bitmatrix_print): New.
4501 (TC): Use it.
4502 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
4503 j must be the outer loop.
4504 * tests/regression.at (Broken Closure): New.
4505
07708e19
AD
45062001-12-05 Akim Demaille <akim@epita.fr>
4507
4508 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
4509 its argument.
4510