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