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