]> git.saurik.com Git - bison.git/blame_incremental - ChangeLog
* src/closure.c (print_fderives): Use rule_rhs_print.
[bison.git] / ChangeLog
... / ...
CommitLineData
12002-07-03 Akim Demaille <akim@epita.fr>
2
3 * src/closure.c (print_fderives): Use rule_rhs_print.
4 * src/derives.c (print_derives): Use rule_rhs_print.
5 (rule_list_t): New, replaces `shorts'.
6 (set_derives): Add comments.
7 * tests/sets.at (Nullable, Firsts): Adjust.
8
92002-07-03 Akim Demaille <akim@epita.fr>
10
11 * src/output.c (prepare_actions): Free `tally' and `width'.
12 (prepare_actions): Allocate and free `order'.
13 * src/symtab.c (symbols_free): Free `symbols'.
14 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
15 * src/output.c (m4_invoke): Move to...
16 * src/scan-skel.l: here.
17 (<<EOF>>): Close yyout, and free its name.
18
19
202002-07-03 Akim Demaille <akim@epita.fr>
21
22 Fix some memory leaks, and fix a bug: state 0 was examined twice.
23
24 * src/LR0.c (new_state): Merge into...
25 (state_list_append): this.
26 (new_states): Merge into...
27 (generate_states): here.
28 (set_states): Don't ensure a proper `errs' state member here, do it...
29 * src/conflicts.c (conflicts_solve): here.
30 * src/state.h, src/state.c: Comment changes.
31 (state_t): Rename member `shifts' as `transitions'.
32 Adjust all dependencies.
33 (errs_new): For consistency, also take the values as argument.
34 (errs_dup): Remove.
35 (state_errs_set): New.
36 (state_reductions_set, state_transitions_set): Assert that no
37 previous value was assigned.
38 (state_free): New.
39 (states_free): Use it.
40 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
41 temporary storage: use `errs' and `nerrs' as elsewhere.
42 (set_conflicts): Allocate and free this `errs'.
43
442002-07-02 Akim Demaille <akim@epita.fr>
45
46 * lib/libiberty.h: New.
47 * lib: Update the bitset implementation from upstream.
48 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
49 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
50 * src/main.c: Adjust bitset stats calls.
51
522002-07-01 Paul Eggert <eggert@twinsun.com>
53
54 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
55 char, so that negative chars don't collide with $.
56
572002-06-30 Akim Demaille <akim@epita.fr>
58
59 Have the GLR tests be `warning' checked, and fix the warnings.
60
61 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
62 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
63 (yyremoveDeletes): `yyi' and `yyj' are size_t.
64 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
65 (yyaddDeferredAction): static.
66 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
67 (yyreportParseError): yyprefix is const.
68 yytokenp is used only when verbose.
69 (yy__GNUC__): Replace with __GNUC__.
70 (yypdumpstack): yyi is size_t.
71 (yypreference): Un-yy local variables and arguments, to avoid
72 clashes with `yyr1'. Anyway, we are not in the user name space.
73 (yytname_size): be an int, as is compared with ints.
74 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
75 Use them.
76 * tests/cxx-gram.at: Use quotation to protect $1.
77 Use AT_COMPILE to enable warnings hunts.
78 Prototype yylex and yyerror.
79 `Use' argc.
80 Include `string.h', not `strings.h'.
81 Produce and prototype stmtMerge only when used.
82 yylex takes a location.
83
842002-06-30 Akim Demaille <akim@epita.fr>
85
86 We spend a lot of time in quotearg, in particular when --verbose.
87
88 * src/symtab.c (symbol_get): Store a quoted version of the key.
89 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
90 Adjust all callers.
91
922002-06-30 Akim Demaille <akim@epita.fr>
93
94 * src/state.h (reductions_t): Rename member `nreds' as num.
95 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
96 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
97
982002-06-30 Akim Demaille <akim@epita.fr>
99
100 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
101 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
102 (shifts_to): Rename as...
103 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
104 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
105 (TRANSITION_IS_DISABLED, transitions_to): these.
106
1072002-06-30 Akim Demaille <akim@epita.fr>
108
109 * src/print.c (print_shifts, print_gotos): Merge into...
110 (print_transitions): this.
111 (print_transitions, print_errs, print_reductions): Align the
112 lookaheads columns.
113 (print_core, print_transitions, print_errs, print_state,
114 print_grammar): Output empty lines separator before, not after.
115 (state_default_rule_compute): Rename as...
116 (state_default_rule): this.
117 * tests/conflicts.at (Defaulted Conflicted Reduction),
118 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
119 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
120
1212002-06-30 Akim Demaille <akim@epita.fr>
122
123 Display items as we display rules.
124
125 * src/gram.h, src/gram.c (rule_lhs_print): New.
126 * src/gram.c (grammar_rules_partial_print): Use it.
127 * src/print.c (print_core): Likewise.
128 * tests/conflicts.at (Defaulted Conflicted Reduction),
129 (Unresolved SR Conflicts): Adjust.
130 (Unresolved SR Conflicts): Adjust and rename as...
131 (Resolved SR Conflicts): this, as was meant.
132 * tests/regression.at (Web2c Report): Adjust.
133
1342002-06-30 Akim Demaille <akim@epita.fr>
135
136 * src/print.c (state_default_rule_compute): New, extracted from...
137 (print_reductions): here.
138 Pessimize, but clarify the code.
139 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
140
1412002-06-30 Akim Demaille <akim@epita.fr>
142
143 * src/output.c (action_row): Let default_rule be always a rule
144 number.
145
1462002-06-30 Akim Demaille <akim@epita.fr>
147
148 * src/closure.c (print_firsts, print_fderives, closure):
149 Use BITSET_EXECUTE.
150 * src/lalr.c (lookaheads_print): Likewise.
151 * src/state.c (state_rule_lookaheads_print): Likewise.
152 * src/print_graph.c (print_core): Likewise.
153 * src/print.c (print_reductions): Likewise.
154 * src/output.c (action_row): Likewise.
155 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
156
1572002-06-30 Akim Demaille <akim@epita.fr>
158
159 * src/print_graph.c: Use report_flag.
160
1612002-06-30 Akim Demaille <akim@epita.fr>
162
163 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
164 to...
165 * src/relation.h, src/relation.c (traverse, relation_digraph)
166 (relation_print, relation_transpose): New.
167
1682002-06-30 Akim Demaille <akim@epita.fr>
169
170 * src/state.h, src/state.c (shifts_to): New.
171 * src/lalr.c (build_relations): Use it.
172
1732002-06-30 Akim Demaille <akim@epita.fr>
174
175 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
176 (item_number_of_rule_number, rule_number_of_item_number): New.
177 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
178 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
179 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
180 Propagate their use.
181 Much remains to be done, in particular wrt `shorts' from types.h.
182
1832002-06-30 Akim Demaille <akim@epita.fr>
184
185 * src/symtab.c (symbol_new): Initialize the `printer' member.
186
1872002-06-30 Akim Demaille <akim@epita.fr>
188
189 * src/LR0.c (save_reductions): Remove, replaced by...
190 * src/state.h, src/state.c (state_reductions_set): New.
191 (reductions, errs): Rename as...
192 (reductions_t, errs_t): these.
193 Adjust all dependencies.
194
1952002-06-30 Akim Demaille <akim@epita.fr>
196
197 * src/LR0.c (state_list_t, state_list_append): New.
198 (first_state, last_state): Now symbol_list_t.
199 (this_state): Remove.
200 (new_itemsets, append_states, save_reductions): Take a state_t as
201 argument.
202 (set_states, generate_states): Adjust.
203 (save_shifts): Remove, replaced by...
204 * src/state.h, src/state.c (state_shifts_set): New.
205 (shifts): Rename as...
206 (shifts_t): this.
207 Adjust all dependencies.
208 * src/state.h (state_t): Remove the `next' member.
209
2102002-06-30 Akim Demaille <akim@epita.fr>
211
212 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
213 escaped in slot 0.
214
2152002-06-30 Akim Demaille <akim@epita.fr>
216
217 Use hash.h for the state hash table.
218
219 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
220 (allocate_storage): Use state_hash_new.
221 (free_storage): Use state_hash_free.
222 (new_state, get_state): Adjust.
223 * src/lalr.h, src/lalr.c (states): Move to...
224 * src/states.h (state_t): Remove the `link' member, no longer
225 used.
226 * src/states.h, src/states.c: here.
227 (state_hash_new, state_hash_free, state_hash_lookup)
228 (state_hash_insert, states_free): New.
229 * src/states.c (state_table, state_compare, state_hash): New.
230 * src/output.c (output_actions): Do not free states now, since we
231 still need to know the final_state number in `prepare', called
232 afterwards. Do it...
233 * src/main.c (main): here: call states_free after `output'.
234
2352002-06-30 Akim Demaille <akim@epita.fr>
236
237 * src/state.h, src/state.c (state_new): New, extracted from...
238 * src/LR0.c (new_state): here.
239 * src/state.h (STATE_ALLOC): Move to...
240 * src/state.c: here.
241 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
242 * src/state.h, src/state.c: here.
243
2442002-06-30 Akim Demaille <akim@epita.fr>
245
246 * src/reader.c (gensym): Rename as...
247 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
248 (getsym): Rename as...
249 (symbol_get): this.
250
2512002-06-30 Akim Demaille <akim@epita.fr>
252
253 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
254 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
255 * src/output.c, src/print.c, src/print_graph.c: Propagate.
256 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
257
2582002-06-30 Akim Demaille <akim@epita.fr>
259
260 Make the test suite pass with warnings checked.
261
262 * tests/actions.at (Printers and Destructors): Improve.
263 Avoid unsigned vs. signed issues.
264 * tests/calc.at: Don't exercise the scanner here, do it...
265 * tests/input.at (Torturing the Scanner): here.
266
2672002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
268
269 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
270 reorganize first lines parallel to yacc.c.
271
2722002-06-28 Akim Demaille <akim@epita.fr>
273
274 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
275 (b4_token_enum, b4_token_defines): New, factored from...
276 * data/lalr1.cc, data/yacc.c, glr.c: here.
277
2782002-06-28 Akim Demaille <akim@epita.fr>
279
280 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
281 unused variables.
282 * src/output.c (merger_output): static.
283
2842002-06-28 Akim Demaille <akim@epita.fr>
285
286 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
287 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
288 pacify GCC.
289 * src/output.c (save_row): Initialize all the variables to pacify GCC.
290
2912002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
292
293 Accumulated changelog for new GLR parsing features.
294
295 * src/conflicts.c (count_total_conflicts): Change name to
296 conflicts_total_count.
297 * src/conflicts.h: Ditto.
298 * src/output.c (token_actions): Use the new name.
299 (output_conflicts): Change conflp => conflict_list_heads, and
300 confl => conflict_list for better readability.
301 * data/glr.c: Use the new names.
302 * NEWS: Add self to GLR announcement.
303
304 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
305
306 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
307 Akim Demaille.
308
309 * data/bison.glr: Change name to glr.c
310 * data/glr.c: Renamed from bison.glr.
311 * data/Makefile.am: Add glr.c
312
313 * src/getargs.c:
314
315 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
316 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
317
318 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
319
320 * data/bison.glr: Be sure to restore the
321 current #line when returning to the skeleton contents after having
322 exposed the input file's #line.
323
324 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
325
326 * data/bison.glr: Bring up to date with changes to bison.simple.
327
328 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
329
330 * data/bison.glr: Correct definitions that use b4_prefix.
331 Various reformatting.
332 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
333 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
334 yytokenp argument; now part of stack.
335 (yychar): Define to behave as documented.
336 (yyclearin): Ditto.
337
338 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
339
340 * src/reader.h: Add declaration for free_merger_functions.
341
342 * src/reader.c (merge_functions): New variable.
343 (get_merge_function): New function.
344 (free_merger_functions): New function.
345 (readgram): Check for %prec that is not followed by a symbol.
346 Handle %dprec and %merge declarations.
347 (packgram): Initialize dprec and merger fields in rules array.
348
349 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
350 conflict_list_cnt, conflict_list_free): New variables.
351 (table_grow): Also grow conflict_table.
352 (prepare_rules): Output dprec and merger tables.
353 (conflict_row): New function.
354 (action_row): Output conflict lists for GLR parser. Don't use
355 default reduction in conflicted states for GLR parser so that there
356 are spaces for the conflict lists.
357 (save_row): Also save conflict information.
358 (token_actions): Allocate conflict list.
359 (merger_output): New function.
360 (pack_vector): Pack conflict table, too.
361 (output_conflicts): New function to output yyconflp and yyconfl.
362 (output_check): Allocate conflict_tos.
363 (output_actions): Output conflict tables, also.
364 (output_skeleton): Output b4_mergers definition.
365 (prepare): Output b4_max_rhs_length definition.
366 Use 'bison.glr' as default skeleton for GLR parsers.
367
368 * src/gram.c (glr_parser): New flag.
369 (grammar_free): Call free_merger_functions.
370
371 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
372 all pairs of conflicting reductions, rather than just all tokens
373 causing conflicts. Needed to size conflict tables.
374 (conflicts_output): Modify call to count_rr_conflicts for new
375 interface.
376 (conflicts_print): Ditto.
377 (count_total_conflicts): New function.
378
379 * src/reader.h (merger_list): New type.
380 (merge_functions): New variable.
381
382 * src/lex.h (tok_dprec, tok_merge): New token types.
383
384 * src/gram.h (rule_s): Add dprec and merger fields.
385 (glr_parser): New flag.
386
387 * src/conflicts.h (count_total_conflicts): New function.
388
389 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
390
391 * doc/bison.texinfo (Generalized LR Parsing): New section.
392 (GLR Parsers): New section.
393 (Language and Grammar): Mention GLR parsing.
394 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
395 Correct typo ("tge" -> "the").
396
397 * data/bison.glr: New skeleton for GLR parsing.
398
399 * tests/cxx-gram.at: New tests for GLR parsing.
400
401 * tests/testsuite.at: Include cxx-gram.at.
402
403 * tests/Makefile.am: Add cxx-gram.at.
404
405 * src/parse-gram.y:
406
407 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
408
409 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
410
4112002-06-27 Akim Demaille <akim@epita.fr>
412
413 * src/options.h, src/options.c: Remove.
414 * src/getargs.c (short_options, long_options): New.
415
4162002-06-27 Akim Demaille <akim@epita.fr>
417
418 * data/bison.simple, data/bison.c++: Rename as...
419 * data/yacc.c, data/lalr1.cc: these.
420 * doc/bison.texinfo (Environment Variables): Remove.
421
4222002-06-25 Raja R Harinath <harinath@cs.umn.edu>
423
424 * src/getargs.c (report_argmatch): Initialize strtok().
425
4262002-06-20 Akim Demaille <akim@epita.fr>
427
428 * data/bison.simple (b4_symbol_actions): New, replaces...
429 (b4_symbol_destructor, b4_symbol_printer): these.
430 (yysymprint): Be sure to call YYPRINT only for tokens, and using
431 user token numbers.
432
4332002-06-20 Akim Demaille <akim@epita.fr>
434
435 * data/bison.simple (yydestructor): Rename as...
436 (yydestruct): this.
437
4382002-06-20 Akim Demaille <akim@epita.fr>
439
440 * src/symtab.h, src/symtab.c (symbol_type_set)
441 (symbol_destructor_set, symbol_precedence_set): The location is
442 the last argument.
443 Adjust all callers.
444
4452002-06-20 Akim Demaille <akim@epita.fr>
446
447 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
448 internals.
449 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
450 Takes a location.
451 * src/symtab.h, src/symtab.c (symbol_class_set)
452 (symbol_user_token_number_set): Likewise.
453 Adjust all callers.
454 Promote complain_at.
455 * tests/input.at (Type Clashes): Adjust.
456
4572002-06-20 Akim Demaille <akim@epita.fr>
458
459 * data/bison.simple (YYLEX): Fix the declaration when
460 %pure-parser.
461
4622002-06-20 Akim Demaille <akim@epita.fr>
463
464 * data/bison.simple (yysymprint): Don't print the token number,
465 just its name.
466 * tests/actions.at (Destructors): Rename as...
467 (Printers and Destructors): this.
468 Also exercise %printer.
469
4702002-06-20 Akim Demaille <akim@epita.fr>
471
472 * data/bison.simple (YYDSYMPRINT): New.
473 Use it to remove many of the #if YYDEBUG/if (yydebug).
474
4752002-06-20 Akim Demaille <akim@epita.fr>
476
477 * src/symtab.h, src/symtab.c (symbol_t): printer and
478 printer_location are new members.
479 (symbol_printer_set): New.
480 * src/parse-gram.y (PERCENT_PRINTER): New token.
481 Handle its associated rule.
482 * src/scan-gram.l: Adjust.
483 (handle_destructor_at, handle_destructor_dollar): Rename as...
484 (handle_symbol_code_at, handle_symbol_code_dollar): these.
485 * src/output.c (symbol_printers_output): New.
486 (output_skeleton): Call it.
487 * data/bison.simple (yysymprint): New. Cannot be named yyprint
488 since there are already many grammar files with a user `yyprint'.
489 Replace the calls to YYPRINT to calls to yysymprint.
490 * tests/calc.at: Adjust.
491 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
492 taking advantage of parser very internal details (stack size!).
493
4942002-06-20 Akim Demaille <akim@epita.fr>
495
496 * src/scan-gram.l: Complete the scanner with the missing patterns
497 to pacify Flex.
498 Use `quote' and `symbol_tag_get' where appropriate.
499
5002002-06-19 Akim Demaille <akim@epita.fr>
501
502 * tests/actions.at (Destructors): Augment to test locations.
503 * data/bison.simple (yydestructor): Pass it the current location
504 if locations are enabled.
505 Prototype only when __STDC__ or C++.
506 Change the argument names to move into the yy name space: there is
507 user code here.
508
5092002-06-19 Akim Demaille <akim@epita.fr>
510
511 * data/bison.simple (b4_pure_if): New.
512 Use it instead of #ifdef YYPURE.
513
5142002-06-19 Akim Demaille <akim@epita.fr>
515
516 * data/bison.simple (b4_location_if): New.
517 Use it instead of #ifdef YYLSP_NEEDED.
518
5192002-06-19 Akim Demaille <akim@epita.fr>
520
521 Prepare @$ in %destructor, but currently don't bind it in the
522 skeleton, as %location use is not cleaned up yet.
523
524 * src/scan-gram.l (handle_dollar, handle_destructor_at)
525 (handle_action_at): New.
526 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
527 a braced_code_t and a location as additional arguments.
528 (handle_destructor_dollar): Instead of requiring `b4_eval', just
529 unquote one when outputting `b4_dollar_dollar'.
530 Adjust callers.
531 * data/bison.simple (b4_eval): Remove.
532 (b4_symbol_destructor): Adjust.
533 * tests/input.at (Invalid @n): Adjust.
534
5352002-06-19 Zack Weinberg <zack@codesourcery.com>
536
537 * doc/bison.texinfo: Document ability to have multiple
538 prologue sections.
539
5402002-06-18 Akim Demaille <akim@epita.fr>
541
542 * src/files.c (compute_base_names): When computing the output file
543 names from the input file name, strip the directory part.
544
5452002-06-18 Akim Demaille <akim@epita.fr>
546
547 * data/bison.simple.new: Comment changes.
548 Reported by Andreas Schwab.
549
5502002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
551
552 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
553 there are no `label `yyoverflowlab' defined but not used' warnings
554 when yyoverflow is defined.
555
5562002-06-18 Akim Demaille <akim@epita.fr>
557
558 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
559 new member.
560 (symbol_destructor_set): Adjust.
561 * src/output.c (symbol_destructors_output): Output the destructor
562 locations.
563 Output the symbol name.
564 * data/bison.simple (b4_symbol_destructor): Adjust.
565
5662002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
567 and Akim Demaille <akim@epita.fr>
568
569 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
570 what's left on the stack when the error recovery hits EOF.
571 * tests/actions.at (Destructors): Complete to exercise this case.
572
5732002-06-17 Akim Demaille <akim@epita.fr>
574
575 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
576 arguments is really empty, not only equal to `[]'.
577 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
578 member.
579 (symbol_destructor_set): New.
580 * src/output.c (symbol_destructors_output): New.
581 * src/reader.h (brace_code_t, current_braced_code): New.
582 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
583 (handle_dollar): Rename as...
584 (handle_action_dollar): this.
585 (handle_destructor_dollar): New.
586 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
587 (grammar_declaration): Use it.
588 * data/bison.simple (yystos): Is always defined.
589 (yydestructor): New.
590 * tests/actions.at (Destructors): New.
591 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
592
5932002-06-17 Akim Demaille <akim@epita.fr>
594
595 * src/symlist.h, src/symlist.c (symbol_list_length): New.
596 * src/scan-gram.l (handle_dollar, handle_at): Compute the
597 rule_length only when needed.
598 * src/output.c (actions_output, token_definitions_output): Output
599 the full M4 block.
600 * src/symtab.c: Don't access directly to the symbol tag, use
601 symbol_tag_get.
602 * src/parse-gram.y: Use symbol_list_free.
603
6042002-06-17 Akim Demaille <akim@epita.fr>
605
606 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
607 (symbol_list_prepend, get_type_name): Move to...
608 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
609 (symbol_list_prepend, symbol_list_n_type_name_get): here.
610 Adjust all callers.
611 (symbol_list_free): New.
612 * src/scan-gram.l (handle_dollar): Takes a location.
613 * tests/input.at (Invalid $n): Adjust.
614
6152002-06-17 Akim Demaille <akim@epita.fr>
616
617 * src/reader.h, src/reader.c (symbol_list_new): Export it.
618 (symbol_list_prepend): New.
619 * src/parse-gram.y (%union): `list' is a new member.
620 (symbols.1): New, replaces...
621 (terms_to_prec.1, nterms_to_type.1): these.
622 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
623 Take a location as additional argument.
624 Adjust all callers.
625
6262002-06-15 Akim Demaille <akim@epita.fr>
627
628 * src/parse-gram.y: Move %token in the declaration section so that
629 we don't depend upon CVS Bison.
630
6312002-06-15 Akim Demaille <akim@epita.fr>
632
633 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
634 * src/print.c (print_core): Use it.
635
6362002-06-15 Akim Demaille <akim@epita.fr>
637
638 * src/conflicts.c (log_resolution): Accept the rule involved in
639 the sr conflicts instead of the lookahead number that points to
640 that rule.
641 (flush_reduce): Accept the current lookahead vector as argument,
642 instead of the index in LA.
643 (resolve_sr_conflict): Accept the current number of lookahead
644 bitset to consider for the STATE, instead of the index in LA.
645 (set_conflicts): Adjust.
646 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
647
6482002-06-15 Akim Demaille <akim@epita.fr>
649
650 * src/state.h (state_t): Replace the `lookaheadsp' member, a
651 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
652 Adjust all dependencies.
653 * src/lalr.c (initialize_lookaheads): Split into...
654 (states_lookaheads_count, states_lookaheads_initialize): these.
655 (lalr): Adjust.
656
6572002-06-15 Akim Demaille <akim@epita.fr>
658
659 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
660 out of...
661 (grammar_rules_print): here.
662 * src/reduce.c (reduce_output): Use it.
663 * tests/reduce.at (Useless Rules, Reduced Automaton)
664 (Underivable Rules): Adjust.
665
6662002-06-15 Akim Demaille <akim@epita.fr>
667
668 Copy BYacc's nice way to report the grammar.
669
670 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
671 New.
672 Don't print the rules' location, it is confusing and useless.
673 (rule_print): Use grammar_rhs_print.
674 * src/print.c (print_grammar): Use grammar_rules_print.
675
6762002-06-15 Akim Demaille <akim@epita.fr>
677
678 Complete and rationalize `useless thing' warnings.
679
680 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
681 (symbol_tag_print): New.
682 Use them everywhere in place of accessing directly the tag member.
683 * src/gram.h, src/gram.c (rule_print): New.
684 Use it where a rule used to be printed `by hand'.
685 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
686 (reduce_grammar_tables): Report the useless rules.
687 (reduce_print): Useless things are a warning, not an error.
688 Report it as such.
689 * tests/reduce.at (Useless Nonterminals, Useless Rules):
690 (Reduced Automaton, Underivable Rules): Adjust.
691 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
692 * tests/conflicts.at (Unresolved SR Conflicts)
693 (Solved SR Conflicts): Adjust.
694
6952002-06-15 Akim Demaille <akim@epita.fr>
696
697 Let symbols have a location.
698
699 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
700 (getsym): Adjust.
701 Adjust all callers.
702 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
703 Use location_t, not int.
704 * src/symtab.c (symbol_check_defined): Take advantage of the
705 location.
706 * tests/regression.at (Invalid inputs): Adjust.
707
7082002-06-15 Akim Demaille <akim@epita.fr>
709
710 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
711 (input): Don't try to initialize yylloc here, do it in the
712 scanner.
713 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
714 * src/gram.h (rule_t): Change line and action_line into location
715 and action_location, of location_t type.
716 Adjust all dependencies.
717 * src/location.h, src/location.c (empty_location): New.
718 * src/reader.h, src/reader.c (grammar_start_symbol_set)
719 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
720 (grammar_current_rule_symbol_append)
721 (grammar_current_rule_action_append): Expect a location as argument.
722 * src/reader.c (grammar_midrule_action): Adjust to attach an
723 action's location as dummy symbol location.
724 * src/symtab.h, src/symtab.c (startsymbol_location): New.
725 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
726 the line numbers.
727
7282002-06-14 Akim Demaille <akim@epita.fr>
729
730 Grammar declarations may be found in the grammar section.
731
732 * src/parse-gram.y (rules_or_grammar_declaration): New.
733 (declarations): Each declaration may end with a semicolon, not
734 just...
735 (grammar_declaration): `"%union"'.
736 (grammar): Branch to rules_or_grammar_declaration.
737
7382002-06-14 Akim Demaille <akim@epita.fr>
739
740 * src/main.c (main): Invoke scanner_free.
741
7422002-06-14 Akim Demaille <akim@epita.fr>
743
744 * src/output.c (m4_invoke): Extracted from...
745 (output_skeleton): here.
746 Free tempfile.
747
7482002-06-14 Akim Demaille <akim@epita.fr>
749
750 * src/parse-gram.y (directives, directive, gram)
751 (grammar_directives, precedence_directives, precedence_directive):
752 Rename as...
753 (declarations, declaration, grammar, grammar_declaration)
754 (precedence_declaration, precedence_declarator): these.
755 (symbol_declaration): New.
756
7572002-06-14 Akim Demaille <akim@epita.fr>
758
759 * src/files.c (action_obstack): Remove, unused.
760 (output_obstack): Remove it, and all its dependencies, as it is no
761 longer needed.
762 * src/reader.c (epilogue_set): Build the epilogue in the
763 muscle_obstack.
764 * src/output.h, src/output.c (muscle_obstack): Move to...
765 * src/muscle_tab.h, src/muscle_tab.h: here.
766 (muscle_init): Initialize muscle_obstack.
767 (muscle_free): New.
768 * src/main.c (main): Call it.
769
7702002-06-14 Akim Demaille <akim@epita.fr>
771
772 * src/location.h: New, extracted from...
773 * src/reader.h: here.
774 * src/Makefile.am (noinst_HEADERS): Merge into
775 (bison_SOURCES): this.
776 Add location.h.
777 * src/parse-gram.y: Use location_t instead of Bison's.
778 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
779 Use location_t instead of ints.
780
7812002-06-14 Akim Demaille <akim@epita.fr>
782
783 * data/bison.simple, data/bison.c++: Be sure to restore the
784 current #line when returning to the skeleton contents after having
785 exposed the input file's #line.
786
7872002-06-12 Akim Demaille <akim@epita.fr>
788
789 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
790 eager.
791 * tests/actions.at (Exotic Dollars): New.
792
7932002-06-12 Akim Demaille <akim@epita.fr>
794
795 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
796 ['"/] too eagerly.
797 * tests/input.at (Torturing the Scanner): New.
798
7992002-06-11 Akim Demaille <akim@epita.fr>
800
801 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
802 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
803 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
804 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
805 * src/reader.c (reader): Use it.
806
8072002-06-11 Akim Demaille <akim@epita.fr>
808
809 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
810 Adjust all callers.
811 (scanner_last_string_free): New.
812
8132002-06-11 Akim Demaille <akim@epita.fr>
814
815 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
816 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
817 (last_string, YY_OBS_FREE): New.
818 Use them when returning an ID.
819
8202002-06-11 Akim Demaille <akim@epita.fr>
821
822 Have Bison grammars parsed by a Bison grammar.
823
824 * src/reader.c, src/reader.h (prologue_augment): New.
825 * src/reader.c (copy_definition): Remove.
826
827 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
828 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
829 (grammar_current_rule_prec_set, grammar_current_rule_check)
830 (grammar_current_rule_symbol_append)
831 (grammar_current_rule_action_append): Export.
832 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
833 (symbol_list_action_append): Remove.
834 Hook the routines from reader.
835 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
836 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
837
838 * src/reader.c (read_declarations): Remove, unused.
839
840 * src/parse-gram.y: Handle the epilogue.
841 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
842 (grammar_start_symbol_set): this.
843 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
844 * src/reader.c (readgram): Remove, unused.
845 (reader): Adjust to insert eoftoken and axiom where appropriate.
846
847 * src/reader.c (copy_dollar): Replace with...
848 * src/scan-gram.h (handle_dollar): this.
849 * src/parse-gram.y: Remove `%thong'.
850
851 * src/reader.c (copy_at): Replace with...
852 * src/scan-gram.h (handle_at): this.
853
854 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
855 New.
856
857 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
858 time being.
859
860 * src/reader.h, src/reader.c (grammar_rule_end): New.
861
862 * src/parse.y (current_type, current_class): New.
863 Implement `%nterm', `%token' support.
864 Merge `%term' into `%token'.
865 (string_as_id): New.
866 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
867 type name.
868
869 * src/parse-gram.y: Be sure to handle properly the beginning of
870 rules.
871
872 * src/parse-gram.y: Handle %type.
873 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
874
875 * src/parse-gram.y: More directives support.
876 * src/options.c: No longer handle source directives.
877
878 * src/parse-gram.y: Fix %output.
879
880 * src/parse-gram.y: Handle %union.
881 Use the prologue locations.
882 * src/reader.c (parse_union_decl): Remove.
883
884 * src/reader.h, src/reader.c (epilogue_set): New.
885 * src/parse-gram.y: Use it.
886
887 * data/bison.simple, data/bison.c++: b4_stype is now either not
888 defined, then default to int, or to the contents of %union,
889 without `union' itself.
890 Adjust.
891 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
892
893 * src/output.c (actions_output): Don't output braces, as they are
894 already handled by the scanner.
895
896 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
897 characters to themselves.
898
899 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
900 that the epilogue has a proper #line.
901
902 * src/parse-gram.y: Handle precedence/associativity.
903
904 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
905 a terminal.
906 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
907 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
908 at all to define terminals that cannot be emitted.
909
910 * src/scan-gram.l: Escape M4 characters.
911
912 * src/scan-gram.l: Working properly with escapes in user
913 strings/characters.
914
915 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
916 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
917 grammar.
918 Use more modest sizes, as for the time being the parser does not
919 release memory, and therefore the process swallows a huge amount
920 of memory.
921
922 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
923 stricter %token grammar.
924
925 * src/symtab.h (associativity): Add `undef_assoc'.
926 (symbol_precedence_set): Do nothing when passed an undef_assoc.
927 * src/symtab.c (symbol_check_alias_consistence): Adjust.
928
929 * tests/regression.at (Invalid %directive): Remove, as it is now
930 meaningless.
931 (Invalid inputs): Adjust to the new error messages.
932 (Token definitions): The new grammar doesn't allow too many
933 eccentricities.
934
935 * src/lex.h, src/lex.c: Remove.
936 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
937 (copy_character, copy_string2, copy_string, copy_identifier)
938 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
939 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
940 (parse_action): Remove.
941 * po/POTFILES.in: Adjust.
942
9432002-06-11 Akim Demaille <akim@epita.fr>
944
945 * src/reader.c (parse_action): Don't store directly into the
946 rule's action member: return the action as a string.
947 Don't require `rule_length' as an argument: compute it.
948 (grammar_current_rule_symbol_append)
949 (grammar_current_rule_action_append): New, eved out from
950 (readgram): here.
951 Remove `action_flag', `rulelength', unused now.
952
9532002-06-11 Akim Demaille <akim@epita.fr>
954
955 * src/reader.c (grammar_current_rule_prec_set).
956 (grammar_current_rule_check): New, eved out from...
957 (readgram): here.
958 Remove `xaction', `first_rhs': useless.
959 * tests/input.at (Type clashes): New.
960 * tests/existing.at (GNU Cim Grammar): Adjust.
961
9622002-06-11 Akim Demaille <akim@epita.fr>
963
964 * src/reader.c (grammar_midrule_action): New, Eved out from
965 (readgram): here.
966
9672002-06-11 Akim Demaille <akim@epita.fr>
968
969 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
970 New.
971 (readgram): Use them as replacement of inlined code, crule and
972 crule1.
973
9742002-06-11 Akim Demaille <akim@epita.fr>
975
976 * src/reader.c (grammar_end, grammar_symbol_append): New.
977 (readgram): Use them.
978 Make the use of `p' as local as possible.
979
9802002-06-10 Akim Demaille <akim@epita.fr>
981
982 GCJ's parser requires the tokens to be defined before the prologue.
983
984 * data/bison.simple: Output the token definition before the user's
985 prologue.
986 * tests/regression.at (Braces parsing, Duplicate string)
987 (Mixing %token styles): Check the output from bison.
988 (Early token definitions): New.
989
9902002-06-10 Akim Demaille <akim@epita.fr>
991
992 * src/symtab.c (symbol_user_token_number_set): Don't complain when
993 assigning twice the same user number to a token, so that we can
994 use it in...
995 * src/lex.c (lex): here.
996 Also use `symbol_class_set' instead of hand written code.
997 * src/reader.c (parse_assoc_decl): Likewise.
998
9992002-06-10 Akim Demaille <akim@epita.fr>
1000
1001 * src/symtab.c, src/symtab.c (symbol_class_set)
1002 (symbol_user_token_number_set): New.
1003 * src/reader.c (parse_token_decl): Use them.
1004 Use a switch instead of ifs.
1005 Use a single argument.
1006
10072002-06-10 Akim Demaille <akim@epita.fr>
1008
1009 Remove `%thong' support as it is undocumented, unused, duplicates
1010 `%token's job, and creates useless e-mail traffic with people who
1011 want to know what it is, why it is undocumented, unused, and
1012 duplicates `%token's job.
1013
1014 * src/reader.c (parse_thong_decl): Remove.
1015 * src/options.c (option_table): Remove "thong".
1016 * src/lex.h (tok_thong): Remove.
1017
10182002-06-10 Akim Demaille <akim@epita.fr>
1019
1020 * src/symtab.c, src/symtab.c (symbol_type_set)
1021 (symbol_precedence_set): New.
1022 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
1023 (value_components_used): Remove, unused.
1024
10252002-06-09 Akim Demaille <akim@epita.fr>
1026
1027 Move symbols handling code out of the reader.
1028
1029 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
1030 (axiom): Move to...
1031 * src/symtab.h, src/symtab.c: here.
1032
1033 * src/gram.c (start_symbol): Remove: use startsymbol->number.
1034 * src/reader.c (startval): Rename as...
1035 * src/symtab.h, src/symtab.c (startsymbol): this.
1036 * src/reader.c: Adjust.
1037
1038 * src/reader.c (symbol_check_defined, symbol_make_alias)
1039 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
1040 (token_translations_init)
1041 Move to...
1042 * src/symtab.c: here.
1043 * src/reader.c (packsymbols): Move to...
1044 * src/symtab.h, src/symtab.c (symbols_pack): here.
1045 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
1046 argument.
1047
10482002-06-03 Akim Demaille <akim@epita.fr>
1049
1050 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
1051 then statements.
1052
10532002-06-03 Akim Demaille <akim@epita.fr>
1054
1055 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
1056 structs with non literals.
1057 * src/scan-skel.l: never-interactive.
1058 * src/conflicts.c (enum conflict_resolution_e): No trailing
1059 comma.
1060 * src/getargs.c (usage): Split long literal strings.
1061 Reported by Hans Aberg.
1062
10632002-05-28 Akim Demaille <akim@epita.fr>
1064
1065 * data/bison.c++: Use C++ ostreams.
1066 (cdebug_): New member.
1067
10682002-05-28 Akim Demaille <akim@epita.fr>
1069
1070 * src/output.c (output_skeleton): Be sure to allocate enough room
1071 for `/' _and_ for `\0' in full_skeleton.
1072
10732002-05-28 Akim Demaille <akim@epita.fr>
1074
1075 * data/bison.c++: Catch up with bison.simple:
1076 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1077 and Paul Eggert <eggert@twinsun.com>: `error' handing.
1078 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
1079 and popping traces.
1080
10812002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1082
1083 * src/output.c (output_skeleton): Put an explicit path in front of
1084 the skeleton file name, rather than relying on the -I directory,
1085 to partially alleviate effects of having a skeleton file lying around
1086 in the current directory.
1087
10882002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1089
1090 * src/conflicts.c (log_resolution): Correct typo:
1091 obstack_printf should be obstack_fgrow1.
1092
10932002-05-26 Akim Demaille <akim@epita.fr>
1094
1095 * src/state.h (state_t): `solved_conflicts' is a new member.
1096 * src/LR0.c (new_state): Set it to 0.
1097 * src/conflicts.h, src/conflicts.c (print_conflicts)
1098 (free_conflicts, solve_conflicts): Rename as...
1099 (conflicts_print, conflicts_free, conflicts_solve): these.
1100 Adjust callers.
1101 * src/conflicts.c (enum conflict_resolution_e)
1102 (solved_conflicts_obstack): New, used by...
1103 (log_resolution): this.
1104 Adjust to attach the conflict resolution to each state.
1105 Complete the description with the precedence/associativity
1106 information.
1107 (resolve_sr_conflict): Adjust.
1108 * src/print.c (print_state): Output its solved_conflicts.
1109 * tests/conflicts.at (Unresolved SR Conflicts)
1110 (Solved SR Conflicts): Exercise --report=all.
1111
11122002-05-26 Akim Demaille <akim@epita.fr>
1113
1114 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
1115 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
1116 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
1117 (token_number_t, item_number_as_token_number)
1118 (token_number_as_item_number, muscle_insert_token_number_table):
1119 Rename as...
1120 (symbol_number_t, item_number_as_symbol_number)
1121 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
1122 these, since it is more appropriate.
1123
11242002-05-26 Akim Demaille <akim@epita.fr>
1125
1126 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
1127 `Error:' lines.
1128 * data/bison.simple (yystos) [YYDEBUG]: New.
1129 (yyparse) [YYDEBUG]: Display the symbols which are popped during
1130 error recovery.
1131 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
1132
11332002-05-25 Akim Demaille <akim@epita.fr>
1134
1135 * doc/bison.texinfo (Debugging): Split into...
1136 (Tracing): this new section, its former contents, and...
1137 (Understanding): this new section.
1138 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
1139 by...
1140 (report_flag): this.
1141 Adjust all dependencies.
1142 (report_args, report_types, report_argmatch): New.
1143 (usage, getargs): Report/support -r, --report.
1144 * src/options.h
1145 (struct option_table_struct): Rename as..,
1146 (struct option_table_s): this.
1147 Rename the `set_flag' member to `flag' to match with getopt_long's
1148 struct.
1149 * src/options.c (option_table): Split verbose into an entry for
1150 %verbose, and another for --verbose.
1151 Support --report/-r, so remove -r from the obsolete --raw.
1152 * src/print.c: Attach full item sets and lookaheads reports to
1153 report_flag instead of trace_flag.
1154 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
1155
11562002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1157 and Paul Eggert <eggert@twinsun.com>
1158
1159 * data/bison.simple (yyparse): Correct error handling to conform to
1160 POSIX and yacc. Specifically, after syntax error is discovered,
1161 do not reduce further before shifting the error token.
1162 Clean up the code a bit by removing the labels yyerrdefault,
1163 yyerrhandle, yyerrpop.
1164 * NEWS: Document the above.
1165
11662002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1167
1168 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
1169 type; it isn't always big enough, since it doesn't necessarily
1170 include non-terminals.
1171 (yytranslate): Expand definition of yy_token_number_type, so that
1172 the latter can be removed.
1173 (yy_token_number_type): Remove, only one use.
1174 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
1175 don't use TokenNumberType as element type.
1176
1177 * tests/regression.at: Modify expected output to agree with change
1178 to yyr1 and yytranslate.
1179
11802002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
1181
1182 * src/reader.c (parse_action): Use copy_character instead of
1183 obstack_1grow.
1184
11852002-05-13 Akim Demaille <akim@epita.fr>
1186
1187 * tests/regression.at (Token definitions): Prototype yylex and
1188 yyerror.
1189
11902002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1191
1192 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
1193 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
1194 32-bit arithmetic.
1195 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
1196
11972002-05-07 Akim Demaille <akim@epita.fr>
1198
1199 * tests/synclines.at: Be sure to prototype yylex and yyerror to
1200 avoid GCC warnings.
1201
12022002-05-07 Akim Demaille <akim@epita.fr>
1203
1204 Kill GCC warnings.
1205
1206 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
1207 over the RHS of each rule.
1208 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
1209 * src/state.h (state_t): Member `nitems' is unsigned short.
1210 * src/LR0.c (get_state): Adjust.
1211 * src/reader.c (packgram): Likewise.
1212 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
1213 `Type'.
1214 (muscle_insert_int_table): Remove, unused.
1215 (prepare_rules): Remove `max'.
1216
12172002-05-06 Akim Demaille <akim@epita.fr>
1218
1219 * src/closure.c (print_firsts): Display of the symbol tags.
1220 (bitmatrix_print): Move to...
1221 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
1222 here.
1223 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
1224
12252002-05-06 Akim Demaille <akim@epita.fr>
1226
1227 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
1228 hash_do_for_each.
1229
12302002-05-06 Akim Demaille <akim@epita.fr>
1231
1232 * src/LR0.c (new_state, get_state): Instead of using the global
1233 `kernel_size' and `kernel_base', have two new arguments:
1234 `core_size' and `core'.
1235 Adjust callers.
1236
12372002-05-06 Akim Demaille <akim@epita.fr>
1238
1239 * src/reader.c (packgram): No longer end `ritem' with a 0
1240 sentinel: it is not used.
1241
12422002-05-05 Akim Demaille <akim@epita.fr>
1243
1244 New experimental feature: display the lookaheads in the report and
1245 graph.
1246
1247 * src/print (print_core): When --trace-flag, display the rules
1248 lookaheads.
1249 * src/print_graph.c (print_core): Likewise.
1250 Swap the arguments.
1251 Adjust caller.
1252
12532002-05-05 Akim Demaille <akim@epita.fr>
1254
1255 * tests/torture.at (Many lookaheads): New test.
1256
12572002-05-05 Akim Demaille <akim@epita.fr>
1258
1259 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
1260 (GENERATE_MUSCLE_INSERT_TABLE): this.
1261 (output_int_table, output_unsigned_int_table, output_short_table)
1262 (output_token_number_table, output_item_number_table): Replace with...
1263 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
1264 (muscle_insert_short_table, muscle_insert_token_number_table)
1265 (muscle_insert_item_number_table): these.
1266 Adjust all callers.
1267 (prepare_tokens): Don't free `translations', since...
1268 * src/reader.h, src/reader.c (grammar_free): do it.
1269 Move to...
1270 * src/gram.h, src/gram.c (grammar_free): here.
1271 * data/bison.simple, data/bison.c++: b4_token_number_max is now
1272 b4_translate_max.
1273
12742002-05-05 Akim Demaille <akim@epita.fr>
1275
1276 * src/output.c (output_unsigned_int_table): New.
1277 (prepare_rules): `i' is unsigned.
1278 `prhs', `rline', `r2' are unsigned int.
1279 Rename muscle `rhs_number_max' as `rhs_max'.
1280 Output muscles `prhs_max', `rline_max', and `r2_max'.
1281 Free rline and r1.
1282 * data/bison.simple, data/bison.c++: Adjust to use these muscles
1283 to compute types instead of constant types.
1284 * tests/regression.at (Web2c Actions): Adjust.
1285
12862002-05-04 Akim Demaille <akim@epita.fr>
1287
1288 * src/symtab.h (SALIAS, SUNDEF): Rename as...
1289 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
1290 Adjust dependencies.
1291 * src/output.c (token_definitions_output): Be sure not to output a
1292 `#define 'a'' when fed with `%token 'a' "a"'.
1293 * tests/regression.at (Token definitions): New.
1294
12952002-05-03 Paul Eggert <eggert@twinsun.com>
1296
1297 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
1298 for K&R C.
1299
13002002-05-03 gettextize <bug-gnu-gettext@gnu.org>
1301
1302 * Makefile.am (SUBDIRS): Remove intl.
1303 (EXTRA_DIST): Add config/config.rpath.
1304
13052002-05-03 Akim Demaille <akim@epita.fr>
1306
1307 * data/bison.simple (m4_if): Don't output empty enums.
1308 And actually, output valid enum definitions :(.
1309
13102002-05-03 Akim Demaille <akim@epita.fr>
1311
1312 * configure.bat: Remove, completely obsolete.
1313 * Makefile.am (EXTRA_DIST): Adjust.
1314 Don't distribute config.rpath...
1315 * config/Makefile.am (EXTRA_DIST): Do it.
1316
13172002-05-03 Akim Demaille <akim@epita.fr>
1318
1319 * configure.in (GETTEXT_VERSION): New.
1320 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
1321
13222002-05-03 Akim Demaille <akim@epita.fr>
1323
1324 * data/bison.simple (b4_token_enum): New.
1325 (b4_token_defines): Use it to output tokens both as #define and
1326 enums.
1327 Suggested by Paul Eggert.
1328 * src/output.c (token_definitions_output): Don't output spurious
1329 white spaces.
1330
13312002-05-03 Akim Demaille <akim@epita.fr>
1332
1333 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
1334
13352002-05-02 Robert Anisko <robert@lrde.epita.fr>
1336
1337 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
1338 Update the stack class, give a try to deque as the default container.
1339
13402002-05-02 Akim Demaille <akim@epita.fr>
1341
1342 * data/bison.simple (yyparse): Do not implement @$ = @1.
1343 (YYLLOC_DEFAULT): Adjust to do it.
1344 * doc/bison.texinfo (Location Default Action): Fix.
1345
13462002-05-02 Akim Demaille <akim@epita.fr>
1347
1348 * src/reader.c (parse_braces): Merge into...
1349 (parse_action): this.
1350
13512002-05-02 Akim Demaille <akim@epita.fr>
1352
1353 * configure.in (ALL_LINGUAS): Remove.
1354 * po/LINGUAS, hr.po: New.
1355
13562002-05-02 Akim Demaille <akim@epita.fr>
1357
1358 Remove the so called hairy (semantic) parsers.
1359
1360 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
1361 * src/gram.h, src/gram.c (semantic_parser): Remove.
1362 (rule_t): Remove the guard and guard_line members.
1363 * src/lex.h (token_t): remove tok_guard.
1364 * src/options.c (option_table): Remove %guard and %semantic_parser
1365 support.
1366 * src/output.c, src/output.h (guards_output): Remove.
1367 (prepare): Adjust.
1368 (token_definitions_output): Don't output the `T'
1369 tokens (???).
1370 (output_skeleton): Don't output the guards.
1371 * src/files.c, src/files.c (attrsfile): Remove.
1372 * src/reader.c (symbol_list): Remove the guard and guard_line
1373 members.
1374 Adjust dependencies.
1375 (parse_guard): Remove.
1376 * data/bison.hairy: Remove.
1377 * doc/bison.texinfo (Environment Variables): Remove occurrences of
1378 BISON_HAIRY.
1379
13802002-05-02 Akim Demaille <akim@epita.fr>
1381
1382 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
1383 (parse_guard): Rename the formal argument `stack_offset' as
1384 `rule_length', which is more readable.
1385 Adjust callers.
1386 (copy_at, copy_dollar): Instead of outputting the hard coded
1387 values of $$, $n and so forth, output invocation to b4_lhs_value,
1388 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
1389 Note: this patch partially drops `semantic-parser' support: it
1390 always does `rule_length - n', where semantic parsers ought to
1391 always use `-n'.
1392 * data/bison.simple, data/bison.c++ (b4_lhs_value)
1393 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
1394
13952002-05-02 Akim Demaille <akim@epita.fr>
1396
1397 * configure.in (AC_INIT): Bump to 1.49b.
1398 (AM_INIT_AUTOMAKE): Short invocation.
1399
14002002-05-02 Akim Demaille <akim@epita.fr>
1401
1402 Version 1.49a.
1403
14042002-05-01 Akim Demaille <akim@epita.fr>
1405
1406 * src/skeleton.h: Remove.
1407
14082002-05-01 Akim Demaille <akim@epita.fr>
1409
1410 * src/skeleton.h: Fix the #endif.
1411 Reported by Magnus Fromreide.
1412
14132002-04-26 Paul Eggert <eggert@twinsun.com>
1414
1415 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
1416 Define if we define YYSTYPE and YYLTYPE, respectively.
1417 (YYCOPY): Fix [] quoting problem in the non-GCC case.
1418
14192002-04-25 Robert Anisko <robert@lrde.epita.fr>
1420
1421 * src/scan-skel.l: Postprocess quadrigraphs.
1422
1423 * src/reader.c (copy_character): New function, used to output
1424 single characters while replacing `[' and `]' with quadrigraphs, to
1425 avoid troubles with M4 quotes.
1426 (copy_comment): Output characters with copy_character.
1427 (read_additionnal_code): Likewise.
1428 (copy_string2): Likewise.
1429 (copy_definition): Likewise.
1430
1431 * tests/calc.at: Exercise M4 quoting.
1432
14332002-04-25 Akim Demaille <akim@epita.fr>
1434
1435 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
1436 between `!' and the command.
1437 Reported by Paul Eggert.
1438
14392002-04-24 Robert Anisko <robert@lrde.epita.fr>
1440
1441 * tests/calc.at: Exercise prologue splitting.
1442
1443 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
1444 `b4_post_prologue' instead of `b4_prologue'.
1445
1446 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
1447 muscles.
1448 (output): Free pre_prologue_obstack and post_prologue_obstack.
1449 * src/files.h, src/files.c (attrs_obstack): Remove.
1450 (pre_prologue_obstack, post_prologue_obstack): New.
1451 * src/reader.c (copy_definition): Add a parameter to specify the
1452 obstack to fill, instead of using attrs_obstack unconditionally.
1453 (read_declarations): Pass pre_prologue_obstack to copy_definition if
1454 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
1455
14562002-04-23 Paul Eggert <eggert@twinsun.com>
1457
1458 * data/bison.simple: Remove unnecessary commentary and white
1459 space differences from 1_29-branch.
1460 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
1461
1462 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
1463 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
1464 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
1465 constructors or destructors.
1466
1467 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
1468
14692002-04-23 Akim Demaille <akim@epita.fr>
1470
1471 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
1472 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
1473 location with columns.
1474 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
1475 All reported by Paul Eggert.
1476
14772002-04-22 Akim Demaille <akim@epita.fr>
1478
1479 * src/reduce.c (dump_grammar): Move to...
1480 * src/gram.h, src/gram.c (grammar_dump): here.
1481 Be sure to separate long item numbers.
1482 Don't read the members of a rule's prec if its nil.
1483
14842002-04-22 Akim Demaille <akim@epita.fr>
1485
1486 * src/output.c (table_size, table_grow): New.
1487 (MAXTABLE): Remove, replace uses with table_size.
1488 (pack_vector): Instead of dying when the table is too big, grow it.
1489
14902002-04-22 Akim Demaille <akim@epita.fr>
1491
1492 * data/bison.simple (yyr1): Its type is that of a token number.
1493 * data/bison.c++ (r1_): Likewise.
1494 * tests/regression.at (Web2c Actions): Adjust.
1495
14962002-04-22 Akim Demaille <akim@epita.fr>
1497
1498 * src/reader.c (token_translations_init): 256 is now the default
1499 value for the error token, i.e., it will be assigned another
1500 number if the user assigned 256 to one of her tokens.
1501 (reader): Don't force 256 to error.
1502 * doc/bison.texinfo (Symbols): Adjust.
1503 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
1504 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
1505 etc. instead of 10, 20, 30 (which was used to `jump' over error
1506 (256) and undefined (2)).
1507
15082002-04-22 Akim Demaille <akim@epita.fr>
1509
1510 Propagate more token_number_t.
1511
1512 * src/gram.h (token_number_as_item_number)
1513 (item_number_as_token_number): New.
1514 * src/output.c (GENERATE_OUTPUT_TABLE): New.
1515 Use it to create output_item_number_table and
1516 output_token_number_table.
1517 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
1518 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
1519 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
1520 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
1521
15222002-04-22 Akim Demaille <akim@epita.fr>
1523
1524 * src/output.h, src/output.c (get_lines_number): Remove.
1525
15262002-04-19 Akim Demaille <akim@epita.fr>
1527
1528 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
1529 as Lex/Flex'.
1530 (Debugging): More details about enabling the debugging features.
1531 (Table of Symbols): Describe $$, $n, @$, and @n.
1532 Suggested by Tim Josling.
1533
15342002-04-19 Akim Demaille <akim@epita.fr>
1535
1536 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
1537
15382002-04-10 Akim Demaille <akim@epita.fr>
1539
1540 * src/system.h: Rely on HAVE_LIMITS_H.
1541 Suggested by Paul Eggert.
1542
15432002-04-09 Akim Demaille <akim@epita.fr>
1544
1545 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
1546 full stderr, and strip it according to the bison options, instead
1547 of composing the error message from different bits.
1548 This makes it easier to check for several error messages.
1549 Adjust all the invocations.
1550 Add an invocation exercising the error token.
1551 Add an invocation demonstrating a stupid error message.
1552 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
1553 Adjust the tests.
1554 Error message are for stderr, not stdout.
1555
15562002-04-09 Akim Demaille <akim@epita.fr>
1557
1558 * src/gram.h, src/gram.c (error_token_number): Remove, use
1559 errtoken->number.
1560 * src/reader.c (reader): Don't specify the user token number (2)
1561 for $undefined, as it uselessly prevents using it.
1562 * src/gram.h (token_number_t): Move to...
1563 * src/symtab.h: here.
1564 (state_t.number): Is a token_number_t.
1565 * src/print.c, src/reader.c: Use undeftoken->number instead of
1566 hard coded 2.
1567 (Even though this 2 is not the same as above: the number of the
1568 undeftoken remains being 2, it is its user token number which
1569 might not be 2).
1570 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
1571 `user_token_number_max'.
1572 Output `undef_token_number'.
1573 * data/bison.simple, data/bison.c++: Use them.
1574 Be sure to map invalid yylex return values to
1575 `undef_token_number'. This saves us from gratuitous SEGV.
1576
1577 * tests/conflicts.at (Solved SR Conflicts)
1578 (Unresolved SR Conflicts): Adjust.
1579 * tests/regression.at (Web2c Actions): Adjust.
1580
15812002-04-08 Akim Demaille <akim@epita.fr>
1582
1583 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
1584 Adding #line.
1585 Remove the duplicate `typedefs'.
1586 (RhsNumberType): Fix the declaration and various other typos.
1587 Use __ofile__.
1588 * data/bison.simple: Use __ofile__.
1589 * src/scan-skel.l: Handle __ofile__.
1590
15912002-04-08 Akim Demaille <akim@epita.fr>
1592
1593 * src/gram.h (item_number_t): New, the type of item numbers in
1594 RITEM. Note that it must be able to code symbol numbers as
1595 positive number, and the negation of rule numbers as negative
1596 numbers.
1597 Adjust all dependencies (pretty many).
1598 * src/reduce.c (rule): Remove this `short *' pointer: use
1599 item_number_t.
1600 * src/system.h (MINSHORT, MAXSHORT): Remove.
1601 Include `limits.h'.
1602 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
1603 (shortcpy): Remove.
1604 (MAXTABLE): Move to...
1605 * src/output.c (MAXTABLE): here.
1606 (prepare_rules): Use output_int_table to output rhs.
1607 * data/bison.simple, data/bison.c++: Adjust.
1608 * tests/torture.at (Big triangle): Move the limit from 254 to
1609 500.
1610 * tests/regression.at (Web2c Actions): Ajust.
1611
1612 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
1613 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
1614 passes, but produces negative #line number, once fixed, GCC is
1615 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
1616 C), it passes.
1617 * src/state.h (state_h): Code input lines on ints, not shorts.
1618
16192002-04-08 Akim Demaille <akim@epita.fr>
1620
1621 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
1622 and then the grammar.
1623
16242002-04-08 Akim Demaille <akim@epita.fr>
1625
1626 * src/system.h: No longer using strndup.
1627
16282002-04-07 Akim Demaille <akim@epita.fr>
1629
1630 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
1631 * src/output.c (output_table_data): Return the longest number.
1632 (prepare_tokens): Output `token_number_max').
1633 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
1634 New.
1635 Use them to define yy_token_number_type/TokenNumberType.
1636 Use this type for yytranslate.
1637 * tests/torture.at (Big triangle): Push the limit from 124 to
1638 253.
1639 * tests/regression.at (Web2c Actions): Adjust.
1640
16412002-04-07 Akim Demaille <akim@epita.fr>
1642
1643 * tests/torture.at (Big triangle): New.
1644 (GNU AWK Grammar, GNU Cim Grammar): Move to...
1645 * tests/existing.at: here.
1646
16472002-04-07 Akim Demaille <akim@epita.fr>
1648
1649 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
1650 nritems.
1651 Adjust dependencies.
1652
16532002-04-07 Akim Demaille <akim@epita.fr>
1654
1655 * src/reader.c: Normalize increments to prefix form.
1656
16572002-04-07 Akim Demaille <akim@epita.fr>
1658
1659 * src/reader.c, symtab.c: Remove debugging code.
1660
16612002-04-07 Akim Demaille <akim@epita.fr>
1662
1663 Rename all the `bucket's as `symbol_t'.
1664
1665 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
1666 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
1667 * src/symtab.c, src/symtab.h (bucket): Rename as...
1668 (symbol_t): this.
1669 (symbol_list_new, bucket_check_defined, bucket_make_alias)
1670 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
1671 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
1672 (buckets_new, buckets_free, buckets_do): Rename as...
1673 (symbol_list_new, symbol_check_defined, symbol_make_alias)
1674 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
1675 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
1676 (symbols_new, symbols_free, symbols_do): these.
1677
16782002-04-07 Akim Demaille <akim@epita.fr>
1679
1680 Use lib/hash for the symbol table.
1681
1682 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
1683 EOF.
1684 * src/lex.c (lex): Set the `number' member of new terminals.
1685 * src/reader.c (bucket_check_defined, bucket_make_alias)
1686 (bucket_check_alias_consistence, bucket_translation): New.
1687 (reader, grammar_free, readgram, token_translations_init)
1688 (packsymbols): Adjust.
1689 (reader): Number the predefined tokens.
1690 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
1691 for predefined tokens.
1692 * src/symtab.h (bucket): Remove all the hash table related
1693 members.
1694 * src/symtab.c (symtab): Replace by...
1695 (bucket_table): this.
1696 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
1697 (buckets_new, buckets_do): New.
1698
16992002-04-07 Akim Demaille <akim@epita.fr>
1700
1701 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
1702 (start_symbol, max_user_token_number, semantic_parser)
1703 (error_token_number): Initialize.
1704 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
1705 Initialize.
1706 (reader): Don't.
1707 (errtoken, eoftoken, undeftoken, axiom): Extern.
1708
17092002-04-07 Akim Demaille <akim@epita.fr>
1710
1711 * src/gram.h (rule_s): prec and precsym are now pointers
1712 to the bucket giving the priority/associativity.
1713 Member `associativity' removed: useless.
1714 * src/reduce.c, src/conflicts.c: Adjust.
1715
17162002-04-07 Akim Demaille <akim@epita.fr>
1717
1718 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
1719 Properly escape the symbols' TAG when outputting them.
1720
17212002-04-07 Akim Demaille <akim@epita.fr>
1722
1723 * src/lalr.h (LA): Is a bitsetv, not bitset*.
1724
17252002-04-07 Akim Demaille <akim@epita.fr>
1726
1727 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
1728 (LArule): this, which is an array to rule_t*.
1729 * src/print.c, src/conflicts.c: Adjust.
1730
17312002-04-07 Akim Demaille <akim@epita.fr>
1732
1733 * src/gram.h (rule_t): Rename `number' as `user_number'.
1734 `number' is a new member.
1735 Adjust dependencies.
1736 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
1737
17382002-04-07 Akim Demaille <akim@epita.fr>
1739
1740 As a result of the previous patch, it is no longer needed
1741 to reorder ritem itself.
1742
1743 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
1744
17452002-04-07 Akim Demaille <akim@epita.fr>
1746
1747 Be sure never to walk through RITEMS, but use only data related to
1748 the rules themselves. RITEMS should be banished.
1749
1750 * src/output.c (output_token_translations): Rename as...
1751 (prepare_tokens): this.
1752 In addition to `translate', prepare the muscles `tname' and
1753 `toknum', which were handled by...
1754 (output_rule_data): this.
1755 Remove, and move the remainder of its outputs into...
1756 (prepare_rules): this new routines, which also merges content from
1757 (output_gram): this.
1758 (prepare_rules): Be sure never to walk through RITEMS.
1759 (output_stos): Rename as...
1760 (prepare_stos): this.
1761 (output): Always invoke prepare_states, after all, just don't use it
1762 in the output if you don't need it.
1763
17642002-04-07 Akim Demaille <akim@epita.fr>
1765
1766 * src/LR0.c (new_state): Display `nstates' as the name of the
1767 newly created state.
1768 Adjust to initialize first_state and last_state if needed.
1769 Be sure to distinguish the initial from the final state.
1770 (new_states): Create the itemset of the initial state, and use
1771 new_state.
1772 * src/closure.c (closure): Now that the initial state has its
1773 items properly set, there is no need for a special case when
1774 creating `ruleset'.
1775
1776 As a result, now the rule 0, reducing to $axiom, is visible in the
1777 outputs. Adjust the test suite.
1778
1779 * tests/conflicts.at (Solved SR Conflicts)
1780 (Unresolved SR Conflicts): Adjust.
1781 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
1782 * tests/conflicts.at (S/R in initial): New.
1783
17842002-04-07 Akim Demaille <akim@epita.fr>
1785
1786 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
1787 the RHS of the rules.
1788 * src/output.c (output_gram): Likewise.
1789
17902002-04-07 Akim Demaille <akim@epita.fr>
1791
1792 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
1793 bucket.
1794 Adjust all dependencies.
1795 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
1796 `number' of the buckets too.
1797 * src/gram.h: Include `symtab.h'.
1798 (associativity): Move to...
1799 * src/symtab.h: here.
1800 No longer include `gram.h'.
1801
18022002-04-07 Akim Demaille <akim@epita.fr>
1803
1804 * src/gram.h, src/gram.c (rules_rhs_length): New.
1805 (ritem_longest_rhs): Use it.
1806 * src/gram.h (rule_t): `number' is a new member.
1807 * src/reader.c (packgram): Set it.
1808 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
1809 the end of `rules', and count them out of `nrules'.
1810 (reduce_output, dump_grammar): Adjust.
1811 * src/print.c (print_grammar): It is no longer needed to check for
1812 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
1813 * tests/reduce.at (Reduced Automaton): New test.
1814
18152002-04-07 Akim Demaille <akim@epita.fr>
1816
1817 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
1818 lacking `+ 1' to nrules, Bison reported as useless a token if it
1819 was used solely to set the precedence of the last rule...
1820
18212002-04-07 Akim Demaille <akim@epita.fr>
1822
1823 * data/bison.c++, data/bison.simple: Don't output the current file
1824 name in #line, to avoid useless diffs between two identical
1825 outputs under different names.
1826
18272002-04-07 Akim Demaille <akim@epita.fr>
1828
1829 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
1830 Normalize loops to using `< nrules + 1', not `<= nrules'.
1831
18322002-04-07 Akim Demaille <akim@epita.fr>
1833
1834 * TODO: Update.
1835
18362002-04-07 Akim Demaille <akim@epita.fr>
1837
1838 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
1839 bucket.value as bucket.number.
1840
18412002-04-07 Akim Demaille <akim@epita.fr>
1842
1843 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
1844 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
1845 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
1846 RHS, instead of being an index in RITEMS.
1847
18482002-04-04 Paul Eggert <eggert@twinsun.com>
1849
1850 * doc/bison.texinfo: Update copyright date.
1851 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
1852 (Symbols): Warn about running Bison in one character set,
1853 but compiling and/or running in an incompatible one.
1854 Warn about character code 256, too.
1855
18562002-04-03 Paul Eggert <eggert@twinsun.com>
1857
1858 * src/bison.data (YYSTACK_ALLOC): Depend on whether
1859 YYERROR_VERBOSE is nonzero, not whether it is defined.
1860
1861 Merge changes from bison-1_29-branch.
1862
18632002-03-20 Paul Eggert <eggert@twinsun.com>
1864
1865 Merge fixes from Debian bison_1.34-1.diff.
1866
1867 * configure.in (AC_PREREQ): 2.53.
1868
18692002-03-20 Akim Demaille <akim@epita.fr>
1870
1871 * src/conflicts.c (log_resolution): Argument `resolution' is const.
1872
18732002-03-19 Paul Eggert <eggert@twinsun.com>
1874
1875 * src/bison.simple (YYCOPY): New macro.
1876 (YYSTACK_RELOCATE): Use it.
1877 Remove Type arg; no longer needed. All callers changed.
1878 (yymemcpy): Remove; no longer needed.
1879
1880 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
1881 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
1882
18832002-03-19 Akim Demaille <akim@epita.fr>
1884
1885 Test and fix the #line outputs.
1886
1887 * tests/atlocal.at (GCC): New.
1888 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
1889 (Prologue synch line, ,%union synch line, Postprologue synch line)
1890 (Action synch line, Epilogue synch line): New tests.
1891 * src/reader.c (parse_union_decl): Define the muscle stype_line.
1892 * data/bison.simple, data/bison.c++: Use it.
1893
18942002-03-19 Akim Demaille <akim@epita.fr>
1895
1896 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
1897 (Solved SR Conflicts, %expect not enough, %expect right)
1898 (%expect too much): Move to...
1899 * tests/conflicts.at: this new file.
1900
19012002-03-19 Akim Demaille <akim@epita.fr>
1902
1903 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
1904 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
1905 that we can move to enums for instance.
1906 * src/output.c (token_definitions_output): Output a list of
1907 `token-name, token-number' instead of the #define.
1908 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
1909
19102002-03-14 Akim Demaille <akim@epita.fr>
1911
1912 Use Gettext 0.11.1.
1913
19142002-03-09 Robert Anisko <robert@lrde.epita.fr>
1915
1916 * data/bison.c++: Make the user able to add members to the generated
1917 parser by subclassing.
1918
19192002-03-05 Robert Anisko <robert@lrde.epita.fr>
1920
1921 * src/reader.c (read_additionnal_code): `c' should be an integer, not
1922 a character.
1923 Reported by Nicolas Tisserand and Nicolas Burrus.
1924
19252002-03-04 Robert Anisko <robert@lrde.epita.fr>
1926
1927 * src/reader.c: Warn about lacking semi-colons, do not complain.
1928
19292002-03-04 Robert Anisko <robert@lrde.epita.fr>
1930
1931 * data/bison.c++: Remove a debug line.
1932
19332002-03-04 Robert Anisko <robert@lrde.epita.fr>
1934
1935 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
1936 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
1937 provide a default implementation.
1938
19392002-03-04 Akim Demaille <akim@epita.fr>
1940
1941 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
1942 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
1943 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
1944 * tests/semantic.at (Parsing Guards): Similarly.
1945 * src/reader.at (readgram): Complain if the last rule is not ended
1946 with a semi-colon.
1947
19482002-03-04 Akim Demaille <akim@epita.fr>
1949
1950 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
1951 * src/closure.c: here.
1952 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
1953 RTC.
1954 * src/warshall.h, src/warshall.c: Remove.
1955 * tests/sets.at (Broken Closure): Adjust.
1956
19572002-03-04 Akim Demaille <akim@epita.fr>
1958
1959 * src/output.c (output_skeleton): tempdir is const.
1960 bytes_read is unused.
1961
19622002-03-04 Akim Demaille <akim@epita.fr>
1963
1964 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
1965 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
1966 Update.
1967 From Michael Hayes.
1968
19692002-03-04 Akim Demaille <akim@epita.fr>
1970
1971 * src/closure.c (closure): `r' is unused.
1972
19732002-03-04 Akim Demaille <akim@epita.fr>
1974
1975 * tests/sets.at (Broken Closure): Add the ending `;'.
1976 * src/reader.at (readgram): Complain if a rule is not ended with a
1977 semi-colon.
1978
19792002-03-04 Akim Demaille <akim@epita.fr>
1980
1981 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
1982 (count_sr_conflicts): Use bitset_count.
1983 * src/reduce.c (inaccessable_symbols): Ditto.
1984 (bits_size): Remove.
1985 * src/warshall.h, src/warshall.c: Convert to bitsetv.
1986
19872002-03-04 Akim Demaille <akim@epita.fr>
1988
1989 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
1990 * src/reduce.c: Remove the `bitset_zero's following the
1991 `bitset_create's, as now it is performed by the latter.
1992
19932002-03-04 Akim Demaille <akim@epita.fr>
1994
1995 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
1996 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
1997 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
1998 latest sources from Michael.
1999
20002002-03-04 Akim Demaille <akim@epita.fr>
2001
2002 * src/output.c (output): Don't free the grammar.
2003 * src/reader.c (grammar_free): New.
2004 * src/main.c (main): Call it and don't free symtab here.
2005
20062002-03-04 Akim Demaille <akim@epita.fr>
2007
2008 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
2009 before returning.
2010 Reported by Benoit Perrot.
2011
20122002-03-04 Akim Demaille <akim@epita.fr>
2013
2014 Use bitset operations when possible, not loops over bits.
2015
2016 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
2017 bitset_or.
2018 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
2019 * src/reduce.c (useless_nonterminals): Formatting changes.
2020 * src/warshall.c (TC): Use bitset_or.
2021
20222002-03-04 Akim Demaille <akim@epita.fr>
2023
2024 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
2025 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
2026 Ditto.
2027
20282002-03-04 Akim Demaille <akim@epita.fr>
2029
2030 * src/lalr.c (F): Now a bitset*.
2031 Adjust all dependencies.
2032
20332002-03-04 Akim Demaille <akim@epita.fr>
2034
2035 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
2036 Adjust all dependencies.
2037
20382002-03-04 Akim Demaille <akim@epita.fr>
2039
2040 * src/L0.c, src/LR0.h (nstates): Be size_t.
2041 Adjust comparisons (signed vs unsigned).
2042 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
2043 bitset*.
2044 Adjust all dependencies.
2045
20462002-03-04 Akim Demaille <akim@epita.fr>
2047
2048 * src/closure.c (firsts): Now, also a bitset.
2049 Adjust all dependencies.
2050 (varsetsize): Remove, now unused.
2051 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
2052
20532002-03-04 Akim Demaille <akim@epita.fr>
2054
2055 * src/print.c: Convert to use bitset.h, not hand coded iterations
2056 over ints.
2057
20582002-03-04 Akim Demaille <akim@epita.fr>
2059
2060 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
2061
20622002-03-04 Akim Demaille <akim@epita.fr>
2063
2064 * src/closure.c (ruleset): Be a bitset.
2065 (rulesetsize): Remove.
2066
20672002-03-04 Akim Demaille <akim@epita.fr>
2068
2069 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
2070 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
2071 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
2072 * src/closure.c (fderives): Be an array of bitsets.
2073
20742002-02-28 Robert Anisko <robert@lrde.epita.fr>
2075
2076 * data/bison.c++: Merge the two generated headers. Insert a copyright
2077 notice in each output file.
2078
20792002-02-28 Akim Demaille <akim@epita.fr>
2080
2081 * data/bison.c++: Copy the prologue of bison.simple to fetch
2082 useful M4 definitions, such as b4_header_guard.
2083
20842002-02-25 Akim Demaille <akim@epita.fr>
2085
2086 * src/getargs.c (version): Give the name of the authors, and use a
2087 translator friendly scheme for the bgr
2088 copyright notice.
2089
20902002-02-25 Akim Demaille <akim@epita.fr>
2091
2092 * src/output.c (header_output): Remove, now handled completely via
2093 M4.
2094
20952002-02-25 Akim Demaille <akim@epita.fr>
2096
2097 * m4/m4.m4: New, from CVS Autoconf.
2098 * configure.in: Invoke it.
2099 * src/output.c (output_skeleton): Use its result instead of the
2100 hard coded name.
2101
21022002-02-25 Akim Demaille <akim@epita.fr>
2103
2104 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
2105 Fileutils 4.1.5.
2106 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
2107 * src/output.c (output_skeleton): Use mkstemp to create a real
2108 temporary file.
2109 Move the filling of `skeleton' and its muscle to...
2110 (prepare): here.
2111 (output): Move the definition of the prologue muscle to...
2112 (prepare): here.
2113 * src/system.h (DEFAULT_TMPDIR): New.
2114
21152002-02-14 Paul Eggert <eggert@twinsun.com>
2116
2117 Remove the support for C++ namespace cleanliness; it was
2118 causing more problems than it was curing, since it didn't work
2119 properly on some nonstandard C++ compilers. This can wait
2120 for a proper C++ parser.
2121
2122 * NEWS: Document this.
2123 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
2124 of C++, as it's treated like C now.
2125 * src/bison.simple (YYSTD): Remove.
2126 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
2127 Treat C++ just like Standard C instead of trying to support
2128 namespace cleanliness.
2129
21302002-02-14 Akim Demaille <akim@epita.fr>
2131
2132 * tests/regression.at (else): Adjust to Andreas' change.
2133
21342002-02-14 Akim Demaille <akim@epita.fr>
2135
2136 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
2137
21382002-02-13 Andreas Schwab <schwab@suse.de>
2139
2140 * src/output.c (output_rule_data): Don't output NULL, it might
2141 not be defined yet.
2142
21432002-02-11 Robert Anisko <robert@lrde.epita.fr>
2144
2145 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
2146 (Copyright notice): Update.
2147
21482002-02-11 Akim Demaille <akim@epita.fr>
2149
2150 * tests/regression.at (%nonassoc and eof): Don't include
2151 nonportable headers.
2152
21532002-02-08 Robert Anisko <robert@lrde.epita.fr>
2154
2155 * data/bison.c++: Correct error recovery. Make the user able to
2156 initialize the starting location.
2157
21582002-02-07 Akim Demaille <akim@epita.fr>
2159
2160 * tests/input.at: New.
2161
21622002-02-07 Robert Anisko <robert@lrde.epita.fr>
2163
2164 * data/bison.c++: Replace some direct m4 expansions by constants. Be
2165 more consistent when naming methods and variables. Put preprocessor
2166 directives around tables only needed for debugging.
2167
21682002-02-07 Robert Anisko <robert@lrde.epita.fr>
2169
2170 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
2171 C++ parsers.
2172 (yy::b4_name::parse): Use print_.
2173
21742002-02-07 Robert Anisko <robert@lrde.epita.fr>
2175
2176 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
2177
21782002-02-07 Robert Anisko <robert@lrde.epita.fr>
2179
2180 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
2181 C++ parsers.
2182 (yy::b4_name::parse): Build verbose error messages, and use error_.
2183
21842002-02-06 Robert Anisko <robert@lrde.epita.fr>
2185
2186 * data/bison.c++: Fix m4 quoting in comments.
2187
21882002-02-06 Robert Anisko <robert@lrde.epita.fr>
2189
2190 * data/bison.c++: Adjust the parser code. Fix some muscles that were
2191 not expanded by m4.
2192
21932002-02-05 Akim Demaille <akim@epita.fr>
2194
2195 * data/bison.c++: Adjust to the M4 back end.
2196 More is certainly needed.
2197
21982002-02-05 Akim Demaille <akim@epita.fr>
2199
2200 Give a try to M4 as a back end.
2201
2202 * lib/readpipe.c: New, from wdiff.
2203 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
2204 BISON_HAIRY.
2205 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
2206 specific values. Now it is m4 that performs the lookup.
2207 * src/parse-skel.y: Remove.
2208 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
2209 * src/output.c (actions_output, guards_output)
2210 (token_definitions_output): No longer keeps track of the output
2211 line number, hence remove the second argument.
2212 (guards_output): Check against the guard member of a rule, not the
2213 action member.
2214 Adjust callers.
2215 (output_skeleton): Don't look for the skeleton location, let m4 do
2216 that.
2217 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
2218 file will be used.
2219 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
2220 (prepare): Given that for the time being changesyntax is not
2221 usable in M4, rename the muscles using `-' to `_'.
2222 Define `defines_flag', `output_parser_name' and `output_header_name'.
2223 * src/output.h (actions_output, guards_output)
2224 (token_definitions_output): Adjust prototypes.
2225 * src/scan-skel.l: Instead of scanning the skeletons, it now
2226 processes the output of m4: `__oline__' and `#output'.
2227 * data/bison.simple: Adjust to be used by M4(sugar).
2228 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
2229 to date.
2230 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
2231 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
2232 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
2233 shamelessly stolen from CVS Autoconf.
2234
22352002-02-05 Akim Demaille <akim@epita.fr>
2236
2237 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
2238 * configure.in: Check for the declarations of free and malloc.
2239 * src/muscle_tab.c: Adjust.
2240
22412002-02-05 Akim Demaille <akim@epita.fr>
2242
2243 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
2244 which have no values.
2245
22462002-02-05 Akim Demaille <akim@epita.fr>
2247
2248 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
2249 * data/: here.
2250
22512002-01-29 Paul Eggert <eggert@twinsun.com>
2252
2253 * src/bison.simple (YYSIZE_T): Do not define merely because
2254 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
2255 On some platforms, <alloca.h> does not declare YYSTD (size_t).
2256
22572002-01-27 Akim Demaille <akim@epita.fr>
2258
2259 Fix `%nonassoc and eof'.
2260
2261 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
2262 which were not properly copied! Replace
2263 memcpy (res->errs, src->errs, src->nerrs);
2264 with
2265 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
2266 !!!
2267 * tests/regression.at (%nonassoc and eof): Adjust to newest
2268 Autotest: `.' is not in the PATH.
2269
22702002-01-27 Akim Demaille <akim@epita.fr>
2271
2272 * tests/sets.at (AT_EXTRACT_SETS): New.
2273 (Nullable): Use it.
2274 (Firsts): New.
2275
22762002-01-26 Akim Demaille <akim@epita.fr>
2277
2278 * tests/actions.at, tests/calc.at, tests/headers.at,
2279 * tests/torture.at: Adjust to the newest Autotest which no longer
2280 forces `.' in the PATH.
2281
22822002-01-25 Akim Demaille <akim@epita.fr>
2283
2284 * tests/regression.at (%nonassoc and eof): New.
2285 Suggested by Robert Anisko.
2286
22872002-01-24 Akim Demaille <akim@epita.fr>
2288
2289 Bison dumps core when trying to complain about broken input files.
2290 Reported by Cris van Pelt.
2291
2292 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
2293 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
2294 into...
2295 (Invalid inputs): Strengthen: exercise parse_percent_token.
2296
22972002-01-24 Robert Anisko <robert.anisko@epita.fr>
2298
2299 * src/Makefile.am: Add bison.c++.
2300 * src/bison.c++: New skeleton.
2301
23022002-01-21 Paolo Bonzini <bonzini@gnu.org>
2303
2304 * po/it.po: New.
2305
23062002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
2307
2308 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
2309
23102002-01-20 Marc Autret <marc@gnu.org>
2311
2312 * src/files.c (compute_output_file_names): Fix
2313
23142002-01-20 Marc Autret <marc@gnu.org>
2315
2316 * tests/output.at: New test.
2317 * src/files.c (compute_base_names): Don't map extensions when
2318 the YACC flag is set, use defaults.
2319 Reported by Evgeny Stambulchik.
2320
23212002-01-20 Marc Autret <marc@gnu.org>
2322
2323 * src/system.h: Need to define __attribute__ away for non-GCC
2324 compilers as well (i.e. the vendor C compiler).
2325 Suggested by Albert Chin-A-Young.
2326
23272002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
2328
2329 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
2330 canonical definition.
2331 * src/system.h: Use the canonical definition for PARAMS (avoids
2332 a conflict with the macro from lib/hash.h).
2333
23342002-01-11 Akim Demaille <akim@epita.fr>
2335
2336 * configure.in: Use AC_FUNC_STRNLEN.
2337 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
2338
23392002-01-09 Akim Demaille <akim@epita.fr>
2340
2341 * src/files.c, src/files.h (output_infix): New.
2342 (tab_extension): Remove.
2343 (compute_base_names): Compute the former, drop the latter.
2344 * src/output.c (prepare): Insert the muscles `output-infix', and
2345 `output-suffix'.
2346 * src/parse-skel.y (string, string.1): New.
2347 (section.header): Use it.
2348 (section.yacc): Remove.
2349 (prefix): Remove too.
2350 * src/scan-skel.l: Adjust.
2351 * src/bison.simple, src/bison.hairy: Adjust.
2352
23532002-01-09 Akim Demaille <akim@epita.fr>
2354
2355 * configure.in (WERROR_CFLAGS): Compute it.
2356 * src/Makefile.am (CFLAGS): Pass it.
2357 * tests/atlocal.in (CFLAGS): Idem.
2358 * src/files.c: Fix a few warnings.
2359 (get_extension_index): Remove, unused.
2360
23612002-01-08 Akim Demaille <akim@epita.fr>
2362
2363 * src/getargs.c (AS_FILE_NAME): New.
2364 (getargs): Use it to convert DOSish file names.
2365 * src/files.c (base_name): Rename as full_base_name to avoid
2366 clashes with `base_name ()'.
2367 (filename_split): New.
2368 (compute_base_names): N-th rewrite, using filename_split.
2369
23702002-01-08 Akim Demaille <akim@epita.fr>
2371
2372 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
2373 New, stolen from the Fileutils 4.1.
2374 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
2375 * configure.in: Check for the presence of memrchr, and of its
2376 prototype.
2377
23782002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
2379
2380 * lib/hash.h (__P): Added definition for this macro.
2381 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
2382 BUILT_SOURCES, to ensure they are generated first.
2383 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
2384 %error-verbose to allow bootstrapping with bison 1.30x.
2385
23862002-01-06 Akim Demaille <akim@epita.fr>
2387
2388 * src/reader.c (parse_braces): Don't fetch the next char, the
2389 convention is to fetch on entry.
2390 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
2391 'switch' without a following semicolon.
2392 * tests/regression.at (braces parsing): New.
2393
23942002-01-06 Akim Demaille <akim@epita.fr>
2395
2396 Bison is dead wrong in its RR conflict reports.
2397
2398 * tests/torture.at (GNU Cim Grammar): New.
2399 * src/conflicts.c (count_rr_conflicts): Fix.
2400
24012002-01-06 Akim Demaille <akim@epita.fr>
2402
2403 Creating package.m4 from configure.ac causes too many problems.
2404
2405 * tests/Makefile.am (package.m4): Create it by hand,
2406 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
2407
24082002-01-06 Akim Demaille <akim@epita.fr>
2409
2410 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
2411 skeleton.h.
2412
24132002-01-04 Paul Eggert <eggert@twinsun.com>
2414
2415 * doc/bison.texinfo (Debugging):
2416 Remove YYSTDERR; it's no longer defined or used.
2417 Also, s/cstdio.h/cstdio/.
2418
24192002-01-03 Akim Demaille <akim@epita.fr>
2420
2421 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
2422
24232002-01-03 Akim Demaille <akim@epita.fr>
2424
2425 * src/parse-skel.y (process_skeleton): Don't bind the parser's
2426 tracing code to --trace, wait for a better --trace option, with
2427 args.
2428
24292002-01-03 Akim Demaille <akim@epita.fr>
2430
2431 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
2432 The ISO C++ standard is extremely clear about it: stderr is
2433 considered a macro, not a regular symbol (see table 94 `Header
2434 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
2435 Therefore std:: does not apply to it. It still does with fprintf.
2436 Also, s/cstdio.h/cstdio/.
2437
24382002-01-03 Akim Demaille <akim@epita.fr>
2439
2440 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
2441 for non system headers.
2442
24432002-01-02 Akim Demaille <akim@epita.fr>
2444
2445 Equip the skeleton chain with location tracking, runtime trace,
2446 pure parser and scanner.
2447
2448 * src/parse-skel.y: Request a pure parser, locations, and prefix
2449 renaming.
2450 (%union): Having several members with the same type does not help
2451 type mismatches, simplify.
2452 (YYPRINT, yyprint): New.
2453 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
2454 (skel_error): this.
2455 Handle locations.
2456 * src/scan-skel.l: Adjust to these changes.
2457 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
2458 (LOCATION_PRINT, skel_control_t): New.
2459
24602001-12-30 Akim Demaille <akim@epita.fr>
2461
2462 * src/parse-skel.y: Get rid of the shift/reduce conflict:
2463 replace `gb' with BLANKS.
2464 * src/scan-skel.l: Adjust.
2465
24662001-12-30 Akim Demaille <akim@epita.fr>
2467
2468 * src/system.h: We don't need nor want bcopy.
2469 Throw away MS-DOS crap: we don't need getpid.
2470 * configure.in: We don't need strndup. It was even causing
2471 problems: because Flex includes the headers *before* us,
2472 _GNU_SOURCE is not defined by config.h, and therefore strndup was
2473 not visible.
2474 * lib/xstrndup.c: New.
2475 * src/scan-skel.l: Use it.
2476 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
2477 * src/parse-skel.y: Use %directives instead of #defines.
2478
24792001-12-30 Akim Demaille <akim@epita.fr>
2480
2481 * src/skeleton.h: New.
2482 * src/output.c (output_parser, output_master_parser): Remove, dead
2483 code.
2484 * src/output.h (get_lines_number, actions_output, guards_output)
2485 (token_definitions_output): Prototype them.
2486 * src/parse-skel.y: Add the license notice.
2487 Include output.h and skeleton.h.
2488 (process_skeleton): Returns void, and takes a single parameter.
2489 * src/scan-skel.l: Add the license notice.
2490 Include skeleton.h.
2491 Don't use %option yylineno: it seems that then Flex imagines
2492 REJECT has been used, and therefore it won't reallocate its
2493 buffers (which makes no other sense to me than a bug). It results
2494 in warnings for `unused: yy_flex_realloc'.
2495
24962001-12-30 Robert Anisko <robert.anisko@epita.fr>
2497
2498 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
2499 (MUSCLE_INSERT_PREFIX): ...to there.
2500 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
2501 (MUSCLE_INSERT_PREFIX): Move from here...
2502
2503 * src/bison.hairy: Add a section directive. Put braces around muscle
2504 names. This parser skeleton is still broken, but Bison should not
2505 choke on a bad muscle 'syntax'.
2506 * src/bison.simple: Add a section directive. Put braces around muscle
2507 names.
2508
2509 * src/files.h (strsuffix, stringappend): Add declarations.
2510 (tab_extension): Add declaration.
2511 (short_base_name): Add declaration.
2512
2513 * src/files.c (strsuffix, stringappend): No longer static. These
2514 functions are used in the skeleton parser.
2515 (tab_extension): New.
2516 (compute_base_names): Use the computations done in this function
2517 to guess if the generated parsers should have '.tab' in their
2518 names.
2519 (short_base_name): No longer static.
2520
2521 * src/output.c (output_skeleton): New.
2522 (output): Disable call to output_master_parser, and give a try to
2523 a new skeleton handling system.
2524 (guards_output, actions_output): No longer static.
2525 (token_definitions_output, get_lines_number): No longer static.
2526
2527 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
2528
2529 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
2530 parse-skel.y.
2531
2532 * src/parse-skel.y: New file.
2533 * src/scan-skel.l: New file.
2534
25352001-12-29 Akim Demaille <akim@epita.fr>
2536
2537 %name-prefix is broken.
2538
2539 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
2540 Adjust all dependencies.
2541 * tests/headers.at (export YYLTYPE): Strengthen this test: use
2542 %name-prefix.
2543
2544 Renaming yylval but not yylloc is not consistent. Now we do.
2545
2546 * src/bison.simple: Prefix yylloc if used.
2547 * doc/bison.texinfo (Decl Summary): Document that.
2548
25492001-12-29 Akim Demaille <akim@epita.fr>
2550
2551 * doc/bison.texinfo: Promote `%long-directive' over
2552 `%long_directive'.
2553 Remove all references to fixed-output-files, yacc is enough.
2554
25552001-12-29 Akim Demaille <akim@epita.fr>
2556
2557 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
2558 user prologue. These are defaults.
2559 * tests/actions.at (Mid-rule actions): Make sure the user can
2560 define YYDEBUG and YYERROR_VERBOSE.
2561
25622001-12-29 Akim Demaille <akim@epita.fr>
2563
2564 * src/output.c (header_output): Don't forget to export YYLTYPE and
2565 yylloc.
2566 * tests/headers.at (export YYLTYPE): New, make sure it does.
2567 * tests/regression.at (%union and --defines, Invalid CPP headers):
2568 Move to...
2569 * tests/headers.at: here.
2570
25712001-12-29 Akim Demaille <akim@epita.fr>
2572
2573 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
2574
25752001-12-29 Akim Demaille <akim@epita.fr>
2576
2577 * tests/actions.at (Mid-rule actions): Output on a single line
2578 instead of several.
2579
25802001-12-29 Akim Demaille <akim@epita.fr>
2581
2582 * doc/bison.texinfo: Formatting changes.
2583
25842001-12-29 Akim Demaille <akim@epita.fr>
2585
2586 Don't store the token defs in a muscle, just be ready to output it
2587 on command. Now possible via `symbols'. Fixes a memory leak.
2588
2589 * src/output.c (token_definitions_output): New.
2590 (output_parser, header_output): Use it.
2591 * src/reader.c (symbols_save): Remove.
2592
25932001-12-29 Akim Demaille <akim@epita.fr>
2594
2595 * src/bison.simple: Do not provide a default for YYSTYPE and
2596 YYLTYPE before the user's prologue. Otherwise it's hardly... a
2597 default.
2598
25992001-12-29 Akim Demaille <akim@epita.fr>
2600
2601 Mid-rule actions are simply... ignored!
2602
2603 * src/reader.c (readgram): Be sure to attach mid-rule actions to
2604 the empty-rule associated to the dummy symbol, not to the host
2605 rule.
2606 * tests/actions.at (Mid-rule actions): New.
2607
26082001-12-29 Akim Demaille <akim@epita.fr>
2609
2610 Memory leak.
2611
2612 * src/reader.c (reader): Free grammar.
2613
26142001-12-29 Akim Demaille <akim@epita.fr>
2615
2616 Memory leak.
2617
2618 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
2619 since it allocates it for each state, although only one is needed.
2620 (allocate_storage): Do it here.
2621
26222001-12-29 Akim Demaille <akim@epita.fr>
2623
2624 * src/options.h, src/options.c (create_long_option_table): Rename
2625 as...
2626 (long_option_table_new): this, with a clearer prototype.
2627 (percent_table): Remove, unused,
2628 * src/getargs.c (getargs): Adjust.
2629
26302001-12-29 Akim Demaille <akim@epita.fr>
2631
2632 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
2633 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
2634 as states.
2635
26362001-12-29 Akim Demaille <akim@epita.fr>
2637
2638 * src/lalr.c (build_relations): Rename `states' as `states1'.
2639 Sorry, I don't understand exactly what it is, no better name...
2640
26412001-12-29 Akim Demaille <akim@epita.fr>
2642
2643 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
2644 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
2645 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
2646 as rules.
2647
26482001-12-29 Akim Demaille <akim@epita.fr>
2649
2650 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
2651 ago.
2652
26532001-12-29 Akim Demaille <akim@epita.fr>
2654
2655 * src/reader.c, src/reader.h (user_toknums): Remove.
2656 Adjust all users to use symbols[i]->user_token_number.
2657
26582001-12-29 Akim Demaille <akim@epita.fr>
2659
2660 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
2661 Adjust all users to use symbols[i]->prec or ->assoc.
2662
26632001-12-29 Akim Demaille <akim@epita.fr>
2664
2665 * src/reader.c, src/reader.h (tags): Remove.
2666 Adjust all users to use symbols[i]->tag.
2667
26682001-12-29 Akim Demaille <akim@epita.fr>
2669
2670 * src/gram.h, src/gram.c (symbols): New, similar to state_table
2671 and rule_table.
2672 * src/reader.c (packsymbols): Fill this table.
2673 Drop sprec.
2674 * src/conflicts.c (resolve_sr_conflict): Adjust.
2675 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
2676 single table.
2677 Use symbols[i]->tag instead of tags[i].
2678
26792001-12-29 Akim Demaille <akim@epita.fr>
2680
2681 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
2682 In addition, put a comment in there, to replace...
2683 * tests/regression.at (%union and C comments): Remove.
2684
26852001-12-29 Akim Demaille <akim@epita.fr>
2686
2687 * tests/regression.at (Web2c Actions): Blindly move the actual
2688 output as expected output. The contents *seem* right to me, but I
2689 can't pretend reading perfectly parser tables... Nonetheless, all
2690 the other tests pass correctly, the table look OK, even though the
2691 presence of `$axiom' is to be noted: AFAICS it is useless (but
2692 harmless).
2693
26942001-12-29 Akim Demaille <akim@epita.fr>
2695
2696 * src/reader.c (readgram): Don't add the rule 0 if there were no
2697 rules read. In other words, add it _after_ having performed
2698 grammar sanity checks.
2699 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
2700
27012001-12-29 Akim Demaille <akim@epita.fr>
2702
2703 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
2704 visible, and some states have now a different number.
2705
27062001-12-29 Akim Demaille <akim@epita.fr>
2707
2708 * src/reader.c (readgram): Bind the initial rule's lineno to that
2709 of the first rule.
2710 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
2711 (Solved SR Conflicts): Adjust rule 0's line number.
2712
27132001-12-29 Akim Demaille <akim@epita.fr>
2714
2715 Fix the `GAWK Grammar' failure.
2716
2717 * src/LR0.c (final_state): Initialize to -1 so that we do compute
2718 the reductions of the first state which was mistakenly confused
2719 with the final state because precisely final_state was initialized
2720 to 0.
2721 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
2722 now noticed by Bison.
2723 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
2724 have a reduction on $default.
2725
27262001-12-29 Akim Demaille <akim@epita.fr>
2727
2728 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
2729 rule line numbers.
2730 * src/closure.c (print_closure): Likewise.
2731 * src/derives.c (print_derives): Likewise.
2732 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
2733 now.
2734
27352001-12-29 Akim Demaille <akim@epita.fr>
2736
2737 * src/lalr.c (lookaheads_print): New.
2738 (lalr): Call it when --trace-flag.
2739 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
2740 are dumped.
2741
27422001-12-29 Akim Demaille <akim@epita.fr>
2743
2744 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
2745 when walking through ritem, even via rule->rhs.
2746 * src/reduce.c (dump_grammar, useful_production, reduce_output)
2747 (useful_production, useless_nonterminals): Likewise.
2748 (reduce_grammar_tables): Likewise, plus update nritems.
2749 * src/nullable.c (set_nullable): Likewise.
2750 * src/lalr.c (build_relations): Likewise.
2751 * tests/sets.at (Nullable): Adjust.
2752 Fortunately, now, the $axiom is no longer nullable.
2753
27542001-12-29 Akim Demaille <akim@epita.fr>
2755
2756 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
2757 the 0-sentinel.
2758 * src/gram.c (ritem_longest_rhs): Likewise.
2759 * src/reduce.c (nonterminals_reduce): Likewise.
2760 * src/print_graph.c (print_graph): Likewise.
2761 * src/output.c (output_rule_data): Likewise.
2762 * src/nullable.c (set_nullable): Likewise.
2763
27642001-12-29 Akim Demaille <akim@epita.fr>
2765
2766 * src/output.c: Comment changes.
2767
27682001-12-27 Paul Eggert <eggert@twinsun.com>
2769
2770 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
2771 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
2772 Sparc, as they were causing more porting problems than the
2773 (minor) performance improvement was worth.
2774
2775 Also, catch up with 1.31's YYSTD.
2776
27772001-12-27 Akim Demaille <akim@epita.fr>
2778
2779 * src/output.c (output_gram): Rely on nritems, not the
2780 0-sentinel. See below.
2781 Use -1 as separator, not 0.
2782 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
2783 Rely on -1 as separator in yyrhs, instead of 0.
2784 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
2785 twice `Now at end of input', therefore there are two lines less to
2786 expect.
2787
27882001-12-27 Akim Demaille <akim@epita.fr>
2789
2790 * tests/regression.at (Unresolved SR Conflicts):
2791 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
2792 below.
2793
27942001-12-27 Akim Demaille <akim@epita.fr>
2795
2796 * src/LR0.c (new_state): Recognize the final state by the fact it
2797 is reached by eoftoken.
2798 (insert_start_shifting_state, insert_eof_shifting_state)
2799 (insert_accepting_state, augment_automaton): Remove, since now
2800 these states are automatically computed from the initial state.
2801 (generate_states): Adjust.
2802 * src/print.c: When reporting a rule number to the user, substract
2803 1, so that the axiom rule is rule 0, and the first user rule is 1.
2804 * src/reduce.c: Likewise.
2805 * src/print_graph.c (print_core): For the time being, just as for
2806 the report, depend upon --trace-flags to dump the full set of
2807 items.
2808 * src/reader.c (readgram): Once the grammar read, insert the rule
2809 0: `$axiom: START-SYMBOL $'.
2810 * tests/set.at: Adjust: rule 0 is now displayed, and since the
2811 number of the states has changed (the final state is no longer
2812 necessarily the last), catch up.
2813
28142001-12-27 Akim Demaille <akim@epita.fr>
2815
2816 Try to make the use of the eoftoken valid. Given that its value
2817 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
2818 is used instead of > 0 where appropriate, (ii), depend upon nritems
2819 instead of the 0-sentinel.
2820
2821 * src/gram.h, src/gram.c (nritems): New.
2822 Expected to be duplication of nitems, but for the time being...
2823 * src/reader.c (packgram): Assert nritems and nitems are equal.
2824 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
2825 * src/closure.c (print_closure, print_fderives): Likewise.
2826 * src/gram.c (ritem_print): Likewise.
2827 * src/print.c (print_core, print_grammar): Likewise.
2828 * src/print_graph.c: Likewise.
2829
28302001-12-27 Akim Demaille <akim@epita.fr>
2831
2832 * src/main.c (main): If there are complains after grammar
2833 reductions, then output the report anyway if requested, then die.
2834 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
2835 * src/reader.c (eoftoken): New.
2836 (parse_token_decl): If the token being defined has value `0', it
2837 is the eoftoken.
2838 (packsymbols): No longer hack `tags' to insert `$' by hand.
2839 Be sure to preserve the value of the eoftoken.
2840 (reader): Make sure eoftoken is defined.
2841 Initialize nsyms to 0: now eoftoken is created just like the others.
2842 * src/print.c (print_grammar): Don't special case the eof token.
2843 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
2844 lie anyway, albeit pleasant.
2845 * tests/calc.at: Exercise error messages with eoftoken.
2846 Change the grammar so that empty input is invalid.
2847 Adjust expectations.
2848 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
2849
28502001-12-27 Akim Demaille <akim@epita.fr>
2851
2852 * configure.in: Check the protos of strchr ans strspn.
2853 Replace strchr if needed.
2854 * src/system.h: Provide the protos of strchr, strspn and memchr if
2855 missing.
2856 * lib/strchr.c: New.
2857 * src/reader.c (symbols_save): Use strchr.
2858
28592001-12-27 Akim Demaille <akim@epita.fr>
2860
2861 * src/print.c, src/print_graph.c (escape): New.
2862 Use it to quote the TAGS outputs.
2863 * src/print_graph.c (print_state): Now errors are in red, and
2864 reductions in green.
2865 Prefer high to wide: output the state number on a line of its own.
2866
28672001-12-27 Akim Demaille <akim@epita.fr>
2868
2869 * src/state.h, src/state.c (reductions_new): New.
2870 * src/LR0.c (set_state_table): Let all the states have a
2871 `reductions', even if reduced to 0.
2872 (save_reductions): Adjust.
2873 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
2874 * src/print.c (print_reductions, print_actions): Adjust.
2875 * src/output.c (action_row): Adjust.
2876
28772001-12-27 Akim Demaille <akim@epita.fr>
2878
2879 * src/state.h, src/state.c (errs_new, errs_dup): New.
2880 * src/LR0.c (set_state_table): Let all the states have an errs,
2881 even if reduced to 0.
2882 * src/print.c (print_errs, print_reductions): Adjust.
2883 * src/output.c (output_actions, action_row): Adjust.
2884 * src/conflicts.c (resolve_sr_conflict): Adjust.
2885
28862001-12-27 Akim Demaille <akim@epita.fr>
2887
2888 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
2889
28902001-12-27 Akim Demaille <akim@epita.fr>
2891
2892 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
2893 * src/print.c: here.
2894 (lookaheadset, shiftset): New, used as additional storage by
2895 print_reductions.
2896 (print_results): Adjust.
2897 (print_shifts, print_gotos, print_errs): New, extracted from...
2898 (print_actions): here.
2899 * src/print_graph.c (print_actions): Remove dead code.
2900
29012001-12-27 Akim Demaille <akim@epita.fr>
2902
2903 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
2904 `$n' and `@n'.
2905
29062001-12-27 Akim Demaille <akim@epita.fr>
2907
2908 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
2909 (build_relations): Adjust.
2910
29112001-12-27 Akim Demaille <akim@epita.fr>
2912
2913 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
2914 duplication.
2915
29162001-12-27 Akim Demaille <akim@epita.fr>
2917
2918 * src/reader.c (packgram): Catch nitems overflows.
2919
29202001-12-27 Akim Demaille <akim@epita.fr>
2921
2922 * src/files.c, src/files.h (guard_obstack): Remove.
2923 * src/output.c (output): Adjust.
2924 * src/reader.c (parse_braces): New, factoring...
2925 (copy_action, copy_guard): these two which are renamed as...
2926 (parse_action, parse_guard): these.
2927 As a voluntary consequence, using braces around guards is now
2928 mandatory.
2929
29302001-12-27 Akim Demaille <akim@epita.fr>
2931
2932 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
2933 * src/reader.c (symbol_list): `guard' and `guard_line' are new
2934 members.
2935 (symbol_list_new): Adjust.
2936 (copy_action): action_line is the first line, not the last.
2937 (copy_guard): Just as for actions, store the `action' only, not
2938 the switch/case/break flesh.
2939 Don't parse the user action that might follow the guard, let...
2940 (readgram): do it, i.e., now, there can be an action after a
2941 guard.
2942 In other words the guard is just explicitly optional.
2943 (packgram): Adjust.
2944 * src/output.c (guards_output): New.
2945 (output_parser): Call it when needed.
2946 (output): Also free the guard and attrs obstacks.
2947 * src/files.c, src/files.h (obstack_save): Remove.
2948 (output_files): Remove.
2949 As a result, if one needs the former `.act' file, using an
2950 appropriate skeleton which requires actions and guards is now
2951 required.
2952 * src/main.c (main): Adjust.
2953 * tests/semantic.at: New.
2954 * tests/regression.at: Use `input.y' as input file name.
2955 Avoid 8+3 problems by requiring input.c when the test needs the
2956 parser.
2957
29582001-12-27 Akim Demaille <akim@epita.fr>
2959
2960 * src/reader.c (symbol_list_new): Be sure to initialize all the
2961 fields.
2962
29632001-12-27 Akim Demaille <akim@epita.fr>
2964
2965 All the hacks using a final pseudo state are now useless.
2966
2967 * src/LR0.c (set_state_table): state_table holds exactly nstates.
2968 * src/lalr.c (nLA): New.
2969 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
2970 instead of lookaheadsp from the pseudo state (nstate + 1).
2971
29722001-12-27 Akim Demaille <akim@epita.fr>
2973
2974 * src/output.c (action_row, token_actions): Use a state_t instead
2975 of a integer, and nlookaheads instead of the following state's
2976 lookaheadsp.
2977
29782001-12-27 Akim Demaille <akim@epita.fr>
2979
2980 * src/conflicts.c (log_resolution, flush_shift)
2981 (resolve_sr_conflict, set_conflicts, solve_conflicts)
2982 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
2983 (conflicts_print, print_reductions): Use a state_t instead of an
2984 integer when referring to a state.
2985 As much as possible, depend upon nlookaheads, instead of the
2986 `lookaheadsp' member of the following state (since lookaheads of
2987 successive states are successive, the difference between state n + 1
2988 and n served as the number of lookaheads for state n).
2989 * src/lalr.c (add_lookback_edge): Likewise.
2990 * src/print.c (print_core, print_actions, print_state)
2991 (print_results): Likewise.
2992 * src/print_graph.c (print_core, print_actions, print_state)
2993 (print_graph): Likewise.
2994 * src/conflicts.h: Adjust.
2995
29962001-12-27 Akim Demaille <akim@epita.fr>
2997
2998 * src/bison.hairy: Formatting/comment changes.
2999 ANSIfy.
3000 Remove `register' indications.
3001 Add plenty of `static'.
3002
30032001-12-27 Akim Demaille <akim@epita.fr>
3004
3005 * src/output.c (prepare): Drop the muscle `ntbase' which
3006 duplicates ntokens.
3007 * src/bison.simple: Formatting/comment changes.
3008 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
3009 is an undocumented synonym.
3010
30112001-12-22 Akim Demaille <akim@epita.fr>
3012
3013 * src/output.c (output_table_data): Change the prototype to use
3014 `int' for array ranges: some invocations do pass an int, not a
3015 short.
3016 Reported by Wayne Green.
3017
30182001-12-22 Akim Demaille <akim@epita.fr>
3019
3020 Some actions of web2c.y are improperly triggered.
3021 Reported by Mike Castle.
3022
3023 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
3024 * tests/regression.at (Web2c): Rename as...
3025 (Web2c Report): this.
3026 (Web2c Actions): New.
3027
30282001-12-22 Akim Demaille <akim@epita.fr>
3029
3030 Reductions in web2c.y are improperly reported.
3031 Reported by Mike Castle.
3032
3033 * src/conflicts.c (print_reductions): Fix.
3034 * tests/regression.at (Web2c): New.
3035
30362001-12-18 Akim Demaille <akim@epita.fr>
3037
3038 Some host fail on `assert (!"foo")', which expands to
3039 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
3040 Reported by Nelson Beebee.
3041
3042 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
3043 `#define it_succeeded 0' and `assert (it_succeeded)'.
3044
30452001-12-17 Marc Autret <autret_m@epita.fr>
3046
3047 * src/bison.simple: Don't hard code the skeleton line and filename.
3048 * src/output.c (output_parser): Rename 'line' as 'output_line'.
3049 New line counter 'skeleton_line' (skeleton-line muscle).
3050
30512001-12-17 Paul Eggert <eggert@twinsun.com>
3052
3053 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
3054 YYDEBUG must be defined to a nonzero value.
3055
3056 * src/bison.simple (yytname): Do not assume that the user defines
3057 YYDEBUG to a properly parenthesized expression.
3058
30592001-12-17 Akim Demaille <akim@epita.fr>
3060
3061 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
3062 nlookaheads is a new member.
3063 Adjust all users.
3064 * src/lalr.h (nlookaheads): Remove this orphan declaration.
3065 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
3066 state.
3067
30682001-12-17 Akim Demaille <akim@epita.fr>
3069
3070 * src/files.h, src/files.c (open_files, close_files): Remove.
3071 * src/main.c (main): Don't open/close files, nor invoke lex_free,
3072 let...
3073 * src/reader.c (reader): Do it.
3074
30752001-12-17 Akim Demaille <akim@epita.fr>
3076
3077 * src/conflicts.c (print_reductions): Formatting changes.
3078
30792001-12-17 Akim Demaille <akim@epita.fr>
3080
3081 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
3082 (flush_reduce): New.
3083 (resolve_sr_conflict): Adjust.
3084
30852001-12-17 Akim Demaille <akim@epita.fr>
3086
3087 * src/output.c (output_obstack): Be static and rename as...
3088 (format_obstack): this, to avoid any confusion with files.c's
3089 output_obstack.
3090 * src/reader.h (muscle_obstack): Move to...
3091 * src/output.h: here, since it's defined in output.c.
3092
30932001-12-17 Akim Demaille <akim@epita.fr>
3094
3095 * src/output.c (action_row, save_column, default_goto)
3096 (sort_actions, matching_state, pack_vector): Better variable
3097 locality.
3098
30992001-12-17 Akim Demaille <akim@epita.fr>
3100
3101 * src/output.c: Various formatting changes.
3102
31032001-12-17 Akim Demaille <akim@epita.fr>
3104
3105 * src/files.c (output_files): Free the output_obstack.
3106 * src/main.c (main): Call print and print_graph conditionally.
3107 * src/print.c (print): Work unconditionally.
3108 * src/print_graph.c (print_graph): Work unconditionally.
3109 * src/conflicts.c (log_resolution): Output only if verbose_flag.
3110
31112001-12-16 Marc Autret <autret_m@epita.fr>
3112
3113 * src/output.c (actions_output): Fix. When we use %no-lines,
3114 there is one less line per action.
3115
31162001-12-16 Marc Autret <autret_m@epita.fr>
3117
3118 * src/bison.simple: Remove a useless #line directive.
3119 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
3120 * src/output.c (get_lines_number): New.
3121 (output_parser): Adjust, now takes care about the lines of a
3122 output muscles.
3123 Fix line numbering.
3124 (actions_output): Computes the number of lines taken by actions.
3125 (output_master_parser): Insert new skeleton which is the name of
3126 the output parser file name.
3127
31282001-12-15 Marc Autret <autret_m@epita.fr>
3129
3130 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
3131
31322001-12-15 Marc Autret <autret_m@epita.fr>
3133
3134 * src/output.c (output_gram): Keep track of the hairy one.
3135
31362001-12-15 Akim Demaille <akim@epita.fr>
3137
3138 Make `make distcheck' work.
3139
3140 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
3141 system.h which uses libgettext.h.
3142
31432001-12-15 Akim Demaille <akim@epita.fr>
3144
3145 * src/nullable.c (set_nullable): Useless rules must be skipped,
3146 otherwise, since we range over their symbols, we might look at a
3147 nonterminal which no longer ``exists'', i.e., it is not counted in
3148 `nvars', hence we overflow our arrays.
3149
31502001-12-15 Akim Demaille <akim@epita.fr>
3151
3152 The header can also be produced directly, without any obstack!
3153 Yahoo!
3154
3155 * src/files.c, src/files.h (defines_obstack): Remove.
3156 (compute_header_macro): Global.
3157 (defines_obstack_save): Remove.
3158 * src/reader.c (parse_union_decl): No longer output to
3159 defines_obstack: its content can be found in the `stype' muscle
3160 anyway.
3161 (output_token_translations): Merge into...
3162 (symbols_output): this.
3163 Rename as...
3164 (symbols_save): this.
3165 (reader): Adjust.
3166 * src/output.c (header_output): New.
3167 (output): Call it.
3168
31692001-12-15 Akim Demaille <akim@epita.fr>
3170
3171 * src/reader.c (parse_union_decl): Instead of handling two obstack
3172 simultaneously, use one to define the `stype' muscle, and use the
3173 value of the latter to fill defines_obstack.
3174 (copy_comment): Remove.
3175 (copy_comment2): Work for a single obstack.
3176 Rename as...
3177 (copy_comment): this.
3178
31792001-12-15 Akim Demaille <akim@epita.fr>
3180
3181 * src/lex.c, src/lex.h (xgetc): No longer static.
3182 * src/reader.c (parse_union_decl): Revamp.
3183
31842001-12-15 Akim Demaille <akim@epita.fr>
3185
3186 Still making progress in separating Bison into (i) input, (ii)
3187 process, (iii) output: now we can directly output the parser file
3188 without using table_obstack at all.
3189
3190 * src/files.c, src/files.h (table_obstack): Bye bye.
3191 (parser_file_name): New.
3192 * src/files.c (compute_output_file_names): Compute it.
3193 * src/output.c (actions_output, output_parser)
3194 (output_master_parser): To a file instead of an obstack.
3195
31962001-12-15 Akim Demaille <akim@epita.fr>
3197
3198 Attach actions to rules, instead of pre-outputting them to
3199 actions_obstack.
3200
3201 * src/gram.h (rule_t): action and action_line are new members.
3202 * src/reader.c (symbol_list): Likewise.
3203 (copy_action): Save the actions within the rule.
3204 (packgram): Save them in rule_table.
3205 * src/output.c (actions_output): New.
3206 (output_parser): Use it on `%%actions'.
3207 (output_rule_data): Don't free rule_table.
3208 (output): Do it.
3209 (prepare): Don't save the `action' muscle.
3210 * src/bison.simple: s/%%action/%%actions/.
3211
32122001-12-15 Akim Demaille <akim@epita.fr>
3213
3214 * src/reader.c (copy_action): When --yacc, don't append a `;'
3215 to the user action: let it fail if lacking.
3216 Suggested by Arnold Robbins and Tom Tromey.
3217
32182001-12-14 Akim Demaille <akim@epita.fr>
3219
3220 * src/lex.c (literalchar): Simply return the char you decoded, non
3221 longer mess around with obstacks and int pointers.
3222 Adjust all callers.
3223
32242001-12-14 Akim Demaille <akim@epita.fr>
3225
3226 * src/lex.c (literalchar): Don't escape the special characters,
3227 just decode them, and keep them as char (before, eol was output as
3228 the 2 char string `\n' etc.).
3229 * src/output.c (output_rule_data): Use quotearg to output the
3230 token strings.
3231
32322001-12-13 Paul Eggert <eggert@twinsun.com>
3233
3234 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
3235 Do not infringe on the global user namespace when using C++.
3236 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
3237 All uses of `fprintf' and `stderr' changed.
3238
3239 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
3240
32412001-12-13 Akim Demaille <akim@epita.fr>
3242
3243 The computation of nullable is broken: it doesn't handle empty
3244 RHS's properly.
3245
3246 * tests/torture.at (GNU AWK Grammar): New.
3247 * tests/sets.at (Nullable): New.
3248 * src/nullable.c (set_nullable): Instead of blindly looping over
3249 `ritems', loop over the rules, and then over their rhs's.
3250
3251 Work around Autotest bugs.
3252
3253 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
3254 frame, because Autotest understand lines starting with a `+' as
3255 traces from the shell. Then, they are not processed properly.
3256 Admittedly an Autotest bug, but we don't have time to wait for
3257 Autotest to catch up.
3258 * tests/regression.at (Broken Closure): Adjust to the new table
3259 frames.
3260 Move to...
3261 * tests/sets.at: here.
3262
32632001-12-13 Akim Demaille <akim@epita.fr>
3264
3265 * src/closure.c (closure): Use nrules instead of playing tricks
3266 with BITS_PER_WORD.
3267
32682001-12-13 Akim Demaille <akim@epita.fr>
3269
3270 * src/print.c (print_actions): Output the handling of `$' as the
3271 traces do: shifting the token EOF. Before EOF was treated as a
3272 nonterminal.
3273 * tests/regression.at: Adjust some tests.
3274 * src/print_graph.c (print_core): Complete the set of items via
3275 closure. The next-to-final and final states are still unsatisfying,
3276 but that's to be addressed elsewhere.
3277 No longer output the rule numbers, but do output the state number.
3278 A single loop for the shifts + gotos is enough, but picked a
3279 distinct color for each.
3280 (print_graph): Initialize and finalize closure.
3281
32822001-12-13 Akim Demaille <akim@epita.fr>
3283
3284 * src/reader.c (readgram): Remove dead code, an strip useless
3285 braces.
3286 (get_type): Remove, unused.
3287
32882001-12-12 Akim Demaille <akim@epita.fr>
3289
3290 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
3291 on that of lib/error.c.
3292
32932001-12-12 Akim Demaille <akim@epita.fr>
3294
3295 Some hosts don't like `/' in includes.
3296
3297 * src/system.h: Include libgettext.h without qualifying the path.
3298 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
3299 $(top_srcdir).
3300
33012001-12-11 Marc Autret <autret_m@epita.fr>
3302
3303 * src/output.c (output_parser): Remove useless muscle.
3304
33052001-12-11 Marc Autret <autret_m@epita.fr>
3306
3307 * src/bison.simple: Remove #line just before %%epilogue. It
3308 is now handled in ...
3309 * src/reader.c (read_additionnal_code): Add the output of a
3310 #line for the epilogue.
3311
33122001-12-10 Marc Autret <autret_m@epita.fr>
3313
3314 * src/reader.c (copy_definition): Re-use CPP-outed code which
3315 replace precedent remove.
3316 * src/bison.simple: Remove #line before %%prologue because
3317 %%input-line is wrong at this time.
3318
33192001-12-10 Marc Autret <autret_m@epita.fr>
3320
3321 * src/reader.c (symbols_output): Clean up.
3322 * src/output.c (output_gram, output): Clean up.
3323
33242001-12-10 Akim Demaille <akim@epita.fr>
3325
3326 * src/lalr.c (initialize_lookaheads): New. Extracted from...
3327 * src/LR0.c (set_state_table): here.
3328 * src/lalr.c (lalr): Call it.
3329
33302001-12-10 Akim Demaille <akim@epita.fr>
3331
3332 * src/state.h (shifts): Remove the `number' member: shifts are
3333 attached to state, hence no longer need to be labelled with a
3334 state number.
3335
33362001-12-10 Akim Demaille <akim@epita.fr>
3337
3338 Now that states have a complete set of members, the linked list of
3339 shifts is useless: just fill directly the state's shifts member.
3340
3341 * src/state.h (shifts): Remove the `next' member.
3342 * src/LR0.c (first_state, last_state): Remove.
3343 Adjust the callers.
3344 (augment_automaton): Don't look for the shifts that must be added
3345 a shift on EOF: it is those of the state we looked for! But now,
3346 since shifts are attached, it is no longer needed to looking
3347 merely by its id: its number.
3348
33492001-12-10 Akim Demaille <akim@epita.fr>
3350
3351 * src/LR0.c (augment_automaton): Better variable locality.
3352 Remove an impossible branch: if there is a state corresponding to
3353 the start symbol being shifted, then there is shift for the start
3354 symbol from the initial state.
3355
33562001-12-10 Akim Demaille <akim@epita.fr>
3357
3358 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
3359 only when appropriate: when insert_start_shifting_state' is not
3360 invoked.
3361 * tests/regression.at (Rule Line Numbers): Adjust.
3362
33632001-12-10 Akim Demaille <akim@epita.fr>
3364
3365 * src/LR0.c (augment_automaton): Now that all states have shifts,
3366 merge the two cases addition shifts to the initial state.
3367
33682001-12-10 Akim Demaille <akim@epita.fr>
3369
3370 * src/lalr.c (set_state_table): Move to...
3371 * src/LR0.c: here.
3372 * src/lalr.c (lalr): Don't call it...
3373 * src/LR0.c (generate_states): do it.
3374 * src/LR0.h (first_state): Remove, only the table is used.
3375
33762001-12-10 Akim Demaille <akim@epita.fr>
3377
3378 * src/LR0.h (first_shift, first_reduction): Remove.
3379 * src/lalr.c: Don't use first_shift: find shifts through the
3380 states.
3381
33822001-12-10 Akim Demaille <akim@epita.fr>
3383
3384 * src/LR0.c: Attach shifts to states as soon as they are
3385 computed.
3386 * src/lalr.c (set_state_table): Instead of assigning shifts to
3387 state, just assert that the mapping was properly done.
3388
33892001-12-10 Akim Demaille <akim@epita.fr>
3390
3391 * src/LR0.c (insert_start_shift): Rename as...
3392 (insert_start_shifting_state): this.
3393 (insert_eof_shifting_state, insert_accepting_state): New.
3394 (augment_automaton): Adjust.
3395 Better locality of the variables.
3396 When looking if the start_symbol is shifted from the initial
3397 state, using `while (... symbol != start_symbol ...)' sounds
3398 better than `while (... symbol < start_symbol ...)': If fail
3399 to see how the order between symbols could be relevant!
3400
34012001-12-10 Akim Demaille <akim@epita.fr>
3402
3403 * src/getargs.h: Don't declare `spec_name_prefix' and
3404 `spec_file_prefix', declared by src/files.h.
3405 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
3406 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
3407 * src/output.c (prepare): Adjust.
3408 * src/reader.c (symbols_output): Likewise.
3409 * src/vmsgetargs.c: Vaguely adjust, but who cares?
3410
34112001-12-10 Akim Demaille <akim@epita.fr>
3412
3413 * src/muscle_tab.c (muscle_init): NULL is a better default than
3414 `"0"'.
3415
34162001-12-10 Akim Demaille <akim@epita.fr>
3417
3418 * src/reader.c (reader): Calling symbols_output once is enough.
3419
34202001-12-10 Akim Demaille <akim@epita.fr>
3421
3422 Now that states have a complete set of members, the linked list of
3423 reductions is useless: just fill directly the state's reductions
3424 member.
3425
3426 * src/state.h (struct reductions): Remove member `number' and
3427 `next'.
3428 * src/LR0.c (first_reduction, last_reduction): Remove.
3429 (save_reductions): Don't link the new reductions, store them in
3430 this_state.
3431 * src/lalr.c (set_state_table): No need to attach reductions to
3432 states, it's already done.
3433 * src/output.c (output_actions): No longer free the shifts, then
3434 the reductions, then the states: free all the states and their
3435 members.
3436
34372001-12-10 Akim Demaille <akim@epita.fr>
3438
3439 * src/options.c (OPTN, DRTV, BOTH): New.
3440 (option_table): Use them.
3441
3442 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
3443 the job of system.h.
3444 * src/options.c: Don't include stdio.h and xalloc.h for the same
3445 reasons.
3446
34472001-12-10 Akim Demaille <akim@epita.fr>
3448
3449 * src/output.c (output, prepare): Make sure the values of the
3450 muscles `action' and `prologue' are 0-terminated.
3451
34522001-12-10 Akim Demaille <akim@epita.fr>
3453
3454 Clean up GCC warnings.
3455
3456 * src/reader.c (copy_action): `buf' is not used.
3457 (parse_skel_decl): Be static.
3458 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
3459 * src/options.h (create_long_option_table): Have a real prototype.
3460 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
3461 (hash_delete_at): Return const void *.
3462 Adjust casts to preserve the const.
3463
34642001-12-10 Akim Demaille <akim@epita.fr>
3465
3466 * configure.in: Require 2.52g.
3467 M4 is not needed, but AUTOM4TE is.
3468 * m4/m4.m4: Remove.
3469 * tests/Makefile.am: Adjust.
3470
34712001-12-10 Akim Demaille <akim@epita.fr>
3472
3473 One structure for states is enough, even though theoretically
3474 there are LR(0) states and LALR(1) states.
3475
3476 * src/lalr.h (state_t): Remove.
3477 (state_table): Be state_t **, not state_t *.
3478 * src/state.h (core, CORE_ALLOC): Rename as...
3479 (state_t, STATE_ALLOC): this.
3480 Add the LALR(1) members: shifts, reductions, errs.
3481 * src/LR0.c (state_table): Rename as...
3482 (state_hash): this, to avoid name clashes with the global
3483 `state_table'.
3484 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
3485 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
3486
34872001-12-10 Akim Demaille <akim@epita.fr>
3488
3489 Bison dumps core on bash.y.
3490 Reported by Pascal Bart.
3491
3492 * src/warshall.c (bitmatrix_print): New.
3493 (TC): Use it.
3494 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
3495 j must be the outer loop.
3496 * tests/regression.at (Broken Closure): New.
3497
34982001-12-05 Akim Demaille <akim@epita.fr>
3499
3500 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
3501 its argument.
3502