]> git.saurik.com Git - bison.git/blame - ChangeLog
* src/complain.h, src/complain.c (warn, complain): Remove, unused.
[bison.git] / ChangeLog
CommitLineData
a5d50994
AD
12002-07-09 Akim Demaille <akim@epita.fr>
2
3 * src/complain.h, src/complain.c (warn, complain): Remove, unused.
4 * src/reader.c (lineno): Remove.
5 Adjust all dependencies.
6 (get_merge_function): Take a location and use complain_at.
7 * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
8 * tests/regression.at (Invalid inputs, Mixing %token styles):
9 Adjust.
10
b275314e
AD
112002-07-09 Akim Demaille <akim@epita.fr>
12
13 * src/parse-gram.y (rules_or_grammar_declaration): Add an error
14 recovery rule, and forbid extensions when --yacc.
15 (gram_error): Use complain_at.
16 * src/reader.c (reader): Exit if there were parse errors.
17
865b9df1
AD
182002-07-09 Akim Demaille <akim@epita.fr>
19
20 * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
21 (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
22 Reported by R Blake <blakers@mac.com>.
23
c76e14da
AD
242002-07-09 Akim Demaille <akim@epita.fr>
25
26 * data/yacc.c: Output the copyright notive in the header.
27
7db2ed2d
AD
282002-07-03 Akim Demaille <akim@epita.fr>
29
30 * src/output.c (froms, tos): Are state_number_t.
31 (save_column): sp, sp1, and sp2 are state_number_t.
32 (prepare): Rename `final' as `final_state_number', `nnts' as
33 `nterms_number', `nrules' as `rules_number', `nstates' as
34 `states_number', and `ntokens' as `tokens_number'. Remove `nsym',
35 unused.
36 * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
37 * data/lalr1.cc (nsym_): Remove, unused.
38
e68e0410
AD
392002-07-03 Akim Demaille <akim@epita.fr>
40
41 * src/lalr.h, src/lalr.c (goto_number_t): New.
42 * src/lalr.c (goto_list_t): New.
43 Propagate them.
44 * src/nullable.c (rule_list_t): New.
45 Propagate.
46 * src/types.h: Remove.
47
e1a4f3a4
AD
482002-07-03 Akim Demaille <akim@epita.fr>
49
50 * src/closure.c (print_fderives): Use rule_rhs_print.
51 * src/derives.c (print_derives): Use rule_rhs_print.
52 (rule_list_t): New, replaces `shorts'.
53 (set_derives): Add comments.
54 * tests/sets.at (Nullable, Firsts): Adjust.
55
536545f3
AD
562002-07-03 Akim Demaille <akim@epita.fr>
57
58 * src/output.c (prepare_actions): Free `tally' and `width'.
59 (prepare_actions): Allocate and free `order'.
60 * src/symtab.c (symbols_free): Free `symbols'.
61 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
62 * src/output.c (m4_invoke): Move to...
63 * src/scan-skel.l: here.
64 (<<EOF>>): Close yyout, and free its name.
65
8b752b00
AD
662002-07-03 Akim Demaille <akim@epita.fr>
67
68 Fix some memory leaks, and fix a bug: state 0 was examined twice.
69
70 * src/LR0.c (new_state): Merge into...
71 (state_list_append): this.
72 (new_states): Merge into...
73 (generate_states): here.
74 (set_states): Don't ensure a proper `errs' state member here, do it...
75 * src/conflicts.c (conflicts_solve): here.
76 * src/state.h, src/state.c: Comment changes.
77 (state_t): Rename member `shifts' as `transitions'.
78 Adjust all dependencies.
79 (errs_new): For consistency, also take the values as argument.
80 (errs_dup): Remove.
81 (state_errs_set): New.
82 (state_reductions_set, state_transitions_set): Assert that no
83 previous value was assigned.
84 (state_free): New.
85 (states_free): Use it.
86 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
87 temporary storage: use `errs' and `nerrs' as elsewhere.
88 (set_conflicts): Allocate and free this `errs'.
89
613f5e1a
AD
902002-07-02 Akim Demaille <akim@epita.fr>
91
92 * lib/libiberty.h: New.
93 * lib: Update the bitset implementation from upstream.
94 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
95 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
96 * src/main.c: Adjust bitset stats calls.
97
26e0cadc
PE
982002-07-01 Paul Eggert <eggert@twinsun.com>
99
100 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
101 char, so that negative chars don't collide with $.
102
1154cced
AD
1032002-06-30 Akim Demaille <akim@epita.fr>
104
105 Have the GLR tests be `warning' checked, and fix the warnings.
106
107 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
108 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
109 (yyremoveDeletes): `yyi' and `yyj' are size_t.
110 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
111 (yyaddDeferredAction): static.
112 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
113 (yyreportParseError): yyprefix is const.
114 yytokenp is used only when verbose.
115 (yy__GNUC__): Replace with __GNUC__.
116 (yypdumpstack): yyi is size_t.
117 (yypreference): Un-yy local variables and arguments, to avoid
118 clashes with `yyr1'. Anyway, we are not in the user name space.
119 (yytname_size): be an int, as is compared with ints.
120 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
121 Use them.
122 * tests/cxx-gram.at: Use quotation to protect $1.
123 Use AT_COMPILE to enable warnings hunts.
124 Prototype yylex and yyerror.
125 `Use' argc.
126 Include `string.h', not `strings.h'.
127 Produce and prototype stmtMerge only when used.
128 yylex takes a location.
129
97650f4e
AD
1302002-06-30 Akim Demaille <akim@epita.fr>
131
132 We spend a lot of time in quotearg, in particular when --verbose.
133
134 * src/symtab.c (symbol_get): Store a quoted version of the key.
135 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
136 Adjust all callers.
137
d2576365
AD
1382002-06-30 Akim Demaille <akim@epita.fr>
139
140 * src/state.h (reductions_t): Rename member `nreds' as num.
141 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
142 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
143
ccaf65bc
AD
1442002-06-30 Akim Demaille <akim@epita.fr>
145
146 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
147 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
148 (shifts_to): Rename as...
149 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
150 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
151 (TRANSITION_IS_DISABLED, transitions_to): these.
152
87675353
AD
1532002-06-30 Akim Demaille <akim@epita.fr>
154
155 * src/print.c (print_shifts, print_gotos): Merge into...
156 (print_transitions): this.
157 (print_transitions, print_errs, print_reductions): Align the
158 lookaheads columns.
159 (print_core, print_transitions, print_errs, print_state,
160 print_grammar): Output empty lines separator before, not after.
161 (state_default_rule_compute): Rename as...
162 (state_default_rule): this.
163 * tests/conflicts.at (Defaulted Conflicted Reduction),
164 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
165 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
166
ce4ccb4b
AD
1672002-06-30 Akim Demaille <akim@epita.fr>
168
169 Display items as we display rules.
170
171 * src/gram.h, src/gram.c (rule_lhs_print): New.
172 * src/gram.c (grammar_rules_partial_print): Use it.
173 * src/print.c (print_core): Likewise.
174 * tests/conflicts.at (Defaulted Conflicted Reduction),
175 (Unresolved SR Conflicts): Adjust.
176 (Unresolved SR Conflicts): Adjust and rename as...
177 (Resolved SR Conflicts): this, as was meant.
178 * tests/regression.at (Web2c Report): Adjust.
179
bc933ef1
AD
1802002-06-30 Akim Demaille <akim@epita.fr>
181
182 * src/print.c (state_default_rule_compute): New, extracted from...
183 (print_reductions): here.
184 Pessimize, but clarify the code.
185 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
186
53d4308d
AD
1872002-06-30 Akim Demaille <akim@epita.fr>
188
189 * src/output.c (action_row): Let default_rule be always a rule
190 number.
191
574fb2d5
AD
1922002-06-30 Akim Demaille <akim@epita.fr>
193
194 * src/closure.c (print_firsts, print_fderives, closure):
195 Use BITSET_EXECUTE.
196 * src/lalr.c (lookaheads_print): Likewise.
197 * src/state.c (state_rule_lookaheads_print): Likewise.
198 * src/print_graph.c (print_core): Likewise.
199 * src/print.c (print_reductions): Likewise.
200 * src/output.c (action_row): Likewise.
201 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
202
05811fd7
AD
2032002-06-30 Akim Demaille <akim@epita.fr>
204
205 * src/print_graph.c: Use report_flag.
206
0e4d5753
AD
2072002-06-30 Akim Demaille <akim@epita.fr>
208
209 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
210 to...
211 * src/relation.h, src/relation.c (traverse, relation_digraph)
212 (relation_print, relation_transpose): New.
213
24c7d800
AD
2142002-06-30 Akim Demaille <akim@epita.fr>
215
216 * src/state.h, src/state.c (shifts_to): New.
217 * src/lalr.c (build_relations): Use it.
218
9222837b
AD
2192002-06-30 Akim Demaille <akim@epita.fr>
220
221 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
222 (item_number_of_rule_number, rule_number_of_item_number): New.
223 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
224 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
225 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
226 Propagate their use.
227 Much remains to be done, in particular wrt `shorts' from types.h.
228
260008e5
AD
2292002-06-30 Akim Demaille <akim@epita.fr>
230
231 * src/symtab.c (symbol_new): Initialize the `printer' member.
232
8a731ca8
AD
2332002-06-30 Akim Demaille <akim@epita.fr>
234
235 * src/LR0.c (save_reductions): Remove, replaced by...
236 * src/state.h, src/state.c (state_reductions_set): New.
237 (reductions, errs): Rename as...
238 (reductions_t, errs_t): these.
239 Adjust all dependencies.
240
32e1e0a4
AD
2412002-06-30 Akim Demaille <akim@epita.fr>
242
243 * src/LR0.c (state_list_t, state_list_append): New.
244 (first_state, last_state): Now symbol_list_t.
245 (this_state): Remove.
246 (new_itemsets, append_states, save_reductions): Take a state_t as
247 argument.
248 (set_states, generate_states): Adjust.
249 (save_shifts): Remove, replaced by...
250 * src/state.h, src/state.c (state_shifts_set): New.
251 (shifts): Rename as...
252 (shifts_t): this.
253 Adjust all dependencies.
254 * src/state.h (state_t): Remove the `next' member.
255
e5fb6710
AD
2562002-06-30 Akim Demaille <akim@epita.fr>
257
258 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
259 escaped in slot 0.
260
c7ca99d4
AD
2612002-06-30 Akim Demaille <akim@epita.fr>
262
263 Use hash.h for the state hash table.
264
265 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
266 (allocate_storage): Use state_hash_new.
267 (free_storage): Use state_hash_free.
268 (new_state, get_state): Adjust.
269 * src/lalr.h, src/lalr.c (states): Move to...
270 * src/states.h (state_t): Remove the `link' member, no longer
271 used.
272 * src/states.h, src/states.c: here.
273 (state_hash_new, state_hash_free, state_hash_lookup)
274 (state_hash_insert, states_free): New.
275 * src/states.c (state_table, state_compare, state_hash): New.
276 * src/output.c (output_actions): Do not free states now, since we
277 still need to know the final_state number in `prepare', called
278 afterwards. Do it...
279 * src/main.c (main): here: call states_free after `output'.
280
df0e7316
AD
2812002-06-30 Akim Demaille <akim@epita.fr>
282
283 * src/state.h, src/state.c (state_new): New, extracted from...
284 * src/LR0.c (new_state): here.
285 * src/state.h (STATE_ALLOC): Move to...
286 * src/state.c: here.
287 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
288 * src/state.h, src/state.c: here.
289
39f41916
AD
2902002-06-30 Akim Demaille <akim@epita.fr>
291
292 * src/reader.c (gensym): Rename as...
293 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
294 (getsym): Rename as...
295 (symbol_get): this.
296
d57650a5
AD
2972002-06-30 Akim Demaille <akim@epita.fr>
298
299 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
300 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
301 * src/output.c, src/print.c, src/print_graph.c: Propagate.
302 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
303
5a08f1ce
AD
3042002-06-30 Akim Demaille <akim@epita.fr>
305
306 Make the test suite pass with warnings checked.
307
308 * tests/actions.at (Printers and Destructors): Improve.
309 Avoid unsigned vs. signed issues.
310 * tests/calc.at: Don't exercise the scanner here, do it...
311 * tests/input.at (Torturing the Scanner): here.
312
720623af
PH
3132002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
314
88e7e941 315 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
720623af
PH
316 reorganize first lines parallel to yacc.c.
317
fb8135fa
AD
3182002-06-28 Akim Demaille <akim@epita.fr>
319
320 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
321 (b4_token_enum, b4_token_defines): New, factored from...
322 * data/lalr1.cc, data/yacc.c, glr.c: here.
323
41442480
AD
3242002-06-28 Akim Demaille <akim@epita.fr>
325
326 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
327 unused variables.
328 * src/output.c (merger_output): static.
329
e0e5bf84
AD
3302002-06-28 Akim Demaille <akim@epita.fr>
331
332 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
333 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
334 pacify GCC.
335 * src/output.c (save_row): Initialize all the variables to pacify GCC.
e0e5bf84 336
676385e2
PH
3372002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
338
339 Accumulated changelog for new GLR parsing features.
340
e0e5bf84 341 * src/conflicts.c (count_total_conflicts): Change name to
676385e2
PH
342 conflicts_total_count.
343 * src/conflicts.h: Ditto.
344 * src/output.c (token_actions): Use the new name.
345 (output_conflicts): Change conflp => conflict_list_heads, and
346 confl => conflict_list for better readability.
347 * data/glr.c: Use the new names.
348 * NEWS: Add self to GLR announcement.
e0e5bf84 349
676385e2
PH
350 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
351
352 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
353 Akim Demaille.
354
355 * data/bison.glr: Change name to glr.c
356 * data/glr.c: Renamed from bison.glr.
357 * data/Makefile.am: Add glr.c
e0e5bf84
AD
358
359 * src/getargs.c:
360
676385e2
PH
361 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
362 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
e0e5bf84 363
676385e2
PH
364 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
365
366 * data/bison.glr: Be sure to restore the
367 current #line when returning to the skeleton contents after having
368 exposed the input file's #line.
369
370 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
371
372 * data/bison.glr: Bring up to date with changes to bison.simple.
373
374 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
375
376 * data/bison.glr: Correct definitions that use b4_prefix.
377 Various reformatting.
378 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
379 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
380 yytokenp argument; now part of stack.
381 (yychar): Define to behave as documented.
382 (yyclearin): Ditto.
e0e5bf84 383
676385e2
PH
384 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
385
386 * src/reader.h: Add declaration for free_merger_functions.
387
388 * src/reader.c (merge_functions): New variable.
389 (get_merge_function): New function.
390 (free_merger_functions): New function.
391 (readgram): Check for %prec that is not followed by a symbol.
392 Handle %dprec and %merge declarations.
393 (packgram): Initialize dprec and merger fields in rules array.
394
395 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
396 conflict_list_cnt, conflict_list_free): New variables.
397 (table_grow): Also grow conflict_table.
e0e5bf84 398 (prepare_rules): Output dprec and merger tables.
676385e2 399 (conflict_row): New function.
e0e5bf84 400 (action_row): Output conflict lists for GLR parser. Don't use
676385e2
PH
401 default reduction in conflicted states for GLR parser so that there
402 are spaces for the conflict lists.
403 (save_row): Also save conflict information.
404 (token_actions): Allocate conflict list.
405 (merger_output): New function.
406 (pack_vector): Pack conflict table, too.
407 (output_conflicts): New function to output yyconflp and yyconfl.
408 (output_check): Allocate conflict_tos.
409 (output_actions): Output conflict tables, also.
410 (output_skeleton): Output b4_mergers definition.
411 (prepare): Output b4_max_rhs_length definition.
412 Use 'bison.glr' as default skeleton for GLR parsers.
413
414 * src/gram.c (glr_parser): New flag.
415 (grammar_free): Call free_merger_functions.
416
417 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
418 all pairs of conflicting reductions, rather than just all tokens
419 causing conflicts. Needed to size conflict tables.
e0e5bf84 420 (conflicts_output): Modify call to count_rr_conflicts for new
676385e2
PH
421 interface.
422 (conflicts_print): Ditto.
423 (count_total_conflicts): New function.
424
425 * src/reader.h (merger_list): New type.
426 (merge_functions): New variable.
427
428 * src/lex.h (tok_dprec, tok_merge): New token types.
429
430 * src/gram.h (rule_s): Add dprec and merger fields.
431 (glr_parser): New flag.
432
433 * src/conflicts.h (count_total_conflicts): New function.
434
435 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
436
437 * doc/bison.texinfo (Generalized LR Parsing): New section.
438 (GLR Parsers): New section.
439 (Language and Grammar): Mention GLR parsing.
440 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
441 Correct typo ("tge" -> "the").
442
443 * data/bison.glr: New skeleton for GLR parsing.
444
445 * tests/cxx-gram.at: New tests for GLR parsing.
446
447 * tests/testsuite.at: Include cxx-gram.at.
448
449 * tests/Makefile.am: Add cxx-gram.at.
e0e5bf84 450
676385e2
PH
451 * src/parse-gram.y:
452
453 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
454
455 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
e0e5bf84 456
b5480d74 4572002-06-27 Akim Demaille <akim@epita.fr>
e2aaf4c4
AD
458
459 * src/options.h, src/options.c: Remove.
460 * src/getargs.c (short_options, long_options): New.
461
60491a94
AD
4622002-06-27 Akim Demaille <akim@epita.fr>
463
464 * data/bison.simple, data/bison.c++: Rename as...
465 * data/yacc.c, data/lalr1.cc: these.
466 * doc/bison.texinfo (Environment Variables): Remove.
467
9be0c25b
AD
4682002-06-25 Raja R Harinath <harinath@cs.umn.edu>
469
470 * src/getargs.c (report_argmatch): Initialize strtok().
471
1ae72863
AD
4722002-06-20 Akim Demaille <akim@epita.fr>
473
474 * data/bison.simple (b4_symbol_actions): New, replaces...
475 (b4_symbol_destructor, b4_symbol_printer): these.
476 (yysymprint): Be sure to call YYPRINT only for tokens, and using
477 user token numbers.
478
87542d29
AD
4792002-06-20 Akim Demaille <akim@epita.fr>
480
481 * data/bison.simple (yydestructor): Rename as...
482 (yydestruct): this.
483
1a31ed21
AD
4842002-06-20 Akim Demaille <akim@epita.fr>
485
486 * src/symtab.h, src/symtab.c (symbol_type_set)
487 (symbol_destructor_set, symbol_precedence_set): The location is
488 the last argument.
489 Adjust all callers.
490
e776192e
AD
4912002-06-20 Akim Demaille <akim@epita.fr>
492
493 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
494 internals.
495 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
496 Takes a location.
497 * src/symtab.h, src/symtab.c (symbol_class_set)
498 (symbol_user_token_number_set): Likewise.
499 Adjust all callers.
500 Promote complain_at.
501 * tests/input.at (Type Clashes): Adjust.
502
5c1180b3
AD
5032002-06-20 Akim Demaille <akim@epita.fr>
504
505 * data/bison.simple (YYLEX): Fix the declaration when
506 %pure-parser.
507
e3170060
AD
5082002-06-20 Akim Demaille <akim@epita.fr>
509
510 * data/bison.simple (yysymprint): Don't print the token number,
511 just its name.
512 * tests/actions.at (Destructors): Rename as...
513 (Printers and Destructors): this.
514 Also exercise %printer.
515
253862fd
AD
5162002-06-20 Akim Demaille <akim@epita.fr>
517
518 * data/bison.simple (YYDSYMPRINT): New.
519 Use it to remove many of the #if YYDEBUG/if (yydebug).
520
366eea36
AD
5212002-06-20 Akim Demaille <akim@epita.fr>
522
523 * src/symtab.h, src/symtab.c (symbol_t): printer and
524 printer_location are new members.
525 (symbol_printer_set): New.
526 * src/parse-gram.y (PERCENT_PRINTER): New token.
527 Handle its associated rule.
528 * src/scan-gram.l: Adjust.
529 (handle_destructor_at, handle_destructor_dollar): Rename as...
530 (handle_symbol_code_at, handle_symbol_code_dollar): these.
531 * src/output.c (symbol_printers_output): New.
532 (output_skeleton): Call it.
533 * data/bison.simple (yysymprint): New. Cannot be named yyprint
534 since there are already many grammar files with a user `yyprint'.
535 Replace the calls to YYPRINT to calls to yysymprint.
536 * tests/calc.at: Adjust.
537 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
538 taking advantage of parser very internal details (stack size!).
539
4f25ebb0
AD
5402002-06-20 Akim Demaille <akim@epita.fr>
541
542 * src/scan-gram.l: Complete the scanner with the missing patterns
543 to pacify Flex.
544 Use `quote' and `symbol_tag_get' where appropriate.
545
93b68a0e
AD
5462002-06-19 Akim Demaille <akim@epita.fr>
547
548 * tests/actions.at (Destructors): Augment to test locations.
549 * data/bison.simple (yydestructor): Pass it the current location
550 if locations are enabled.
551 Prototype only when __STDC__ or C++.
552 Change the argument names to move into the yy name space: there is
553 user code here.
554
58612f1d
AD
5552002-06-19 Akim Demaille <akim@epita.fr>
556
74310291
AD
557 * data/bison.simple (b4_pure_if): New.
558 Use it instead of #ifdef YYPURE.
559
5602002-06-19 Akim Demaille <akim@epita.fr>
561
562 * data/bison.simple (b4_location_if): New.
58612f1d
AD
563 Use it instead of #ifdef YYLSP_NEEDED.
564
f25bfb75
AD
5652002-06-19 Akim Demaille <akim@epita.fr>
566
567 Prepare @$ in %destructor, but currently don't bind it in the
568 skeleton, as %location use is not cleaned up yet.
569
570 * src/scan-gram.l (handle_dollar, handle_destructor_at)
571 (handle_action_at): New.
572 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
573 a braced_code_t and a location as additional arguments.
574 (handle_destructor_dollar): Instead of requiring `b4_eval', just
575 unquote one when outputting `b4_dollar_dollar'.
576 Adjust callers.
577 * data/bison.simple (b4_eval): Remove.
578 (b4_symbol_destructor): Adjust.
579 * tests/input.at (Invalid @n): Adjust.
580
c732d2c6
AD
5812002-06-19 Zack Weinberg <zack@codesourcery.com>
582
583 * doc/bison.texinfo: Document ability to have multiple
584 prologue sections.
585
8c165d89
AD
5862002-06-18 Akim Demaille <akim@epita.fr>
587
588 * src/files.c (compute_base_names): When computing the output file
589 names from the input file name, strip the directory part.
590
ca98bf57
AD
5912002-06-18 Akim Demaille <akim@epita.fr>
592
593 * data/bison.simple.new: Comment changes.
594 Reported by Andreas Schwab.
595
0bfb02ff
AD
5962002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
597
598 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
599 there are no `label `yyoverflowlab' defined but not used' warnings
600 when yyoverflow is defined.
601
24c0aad7
AD
6022002-06-18 Akim Demaille <akim@epita.fr>
603
604 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
605 new member.
606 (symbol_destructor_set): Adjust.
607 * src/output.c (symbol_destructors_output): Output the destructor
608 locations.
609 Output the symbol name.
610 * data/bison.simple (b4_symbol_destructor): Adjust.
611
5719c109
AD
6122002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
613 and Akim Demaille <akim@epita.fr>
614
615 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
616 what's left on the stack when the error recovery hits EOF.
617 * tests/actions.at (Destructors): Complete to exercise this case.
618
9280d3ef
AD
6192002-06-17 Akim Demaille <akim@epita.fr>
620
621 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
622 arguments is really empty, not only equal to `[]'.
623 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
624 member.
625 (symbol_destructor_set): New.
626 * src/output.c (symbol_destructors_output): New.
627 * src/reader.h (brace_code_t, current_braced_code): New.
628 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
629 (handle_dollar): Rename as...
630 (handle_action_dollar): this.
631 (handle_destructor_dollar): New.
632 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
633 (grammar_declaration): Use it.
634 * data/bison.simple (yystos): Is always defined.
635 (yydestructor): New.
636 * tests/actions.at (Destructors): New.
637 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
638
dafdc66f
AD
6392002-06-17 Akim Demaille <akim@epita.fr>
640
641 * src/symlist.h, src/symlist.c (symbol_list_length): New.
642 * src/scan-gram.l (handle_dollar, handle_at): Compute the
643 rule_length only when needed.
644 * src/output.c (actions_output, token_definitions_output): Output
645 the full M4 block.
646 * src/symtab.c: Don't access directly to the symbol tag, use
647 symbol_tag_get.
648 * src/parse-gram.y: Use symbol_list_free.
649
56c47203
AD
6502002-06-17 Akim Demaille <akim@epita.fr>
651
652 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
653 (symbol_list_prepend, get_type_name): Move to...
654 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
655 (symbol_list_prepend, symbol_list_n_type_name_get): here.
656 Adjust all callers.
657 (symbol_list_free): New.
658 * src/scan-gram.l (handle_dollar): Takes a location.
659 * tests/input.at (Invalid $n): Adjust.
660
1e0bab92
AD
6612002-06-17 Akim Demaille <akim@epita.fr>
662
663 * src/reader.h, src/reader.c (symbol_list_new): Export it.
664 (symbol_list_prepend): New.
665 * src/parse-gram.y (%union): `list' is a new member.
666 (symbols.1): New, replaces...
667 (terms_to_prec.1, nterms_to_type.1): these.
668 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
669 Take a location as additional argument.
670 Adjust all callers.
671
04e60654
AD
6722002-06-15 Akim Demaille <akim@epita.fr>
673
674 * src/parse-gram.y: Move %token in the declaration section so that
675 we don't depend upon CVS Bison.
676
10e5b8bd
AD
6772002-06-15 Akim Demaille <akim@epita.fr>
678
679 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
680 * src/print.c (print_core): Use it.
681
9801d40c
AD
6822002-06-15 Akim Demaille <akim@epita.fr>
683
684 * src/conflicts.c (log_resolution): Accept the rule involved in
685 the sr conflicts instead of the lookahead number that points to
686 that rule.
687 (flush_reduce): Accept the current lookahead vector as argument,
688 instead of the index in LA.
689 (resolve_sr_conflict): Accept the current number of lookahead
690 bitset to consider for the STATE, instead of the index in LA.
691 (set_conflicts): Adjust.
692 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
693
c0263492
AD
6942002-06-15 Akim Demaille <akim@epita.fr>
695
696 * src/state.h (state_t): Replace the `lookaheadsp' member, a
697 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
698 Adjust all dependencies.
699 * src/lalr.c (initialize_lookaheads): Split into...
700 (states_lookaheads_count, states_lookaheads_initialize): these.
701 (lalr): Adjust.
702
9757c359
AD
7032002-06-15 Akim Demaille <akim@epita.fr>
704
705 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
706 out of...
707 (grammar_rules_print): here.
708 * src/reduce.c (reduce_output): Use it.
709 * tests/reduce.at (Useless Rules, Reduced Automaton)
710 (Underivable Rules): Adjust.
711
6b98e4b5
AD
7122002-06-15 Akim Demaille <akim@epita.fr>
713
714 Copy BYacc's nice way to report the grammar.
715
716 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
717 New.
718 Don't print the rules' location, it is confusing and useless.
719 (rule_print): Use grammar_rhs_print.
720 * src/print.c (print_grammar): Use grammar_rules_print.
721
6b98e4b5
AD
7222002-06-15 Akim Demaille <akim@epita.fr>
723
724 Complete and rationalize `useless thing' warnings.
725
726 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
727 (symbol_tag_print): New.
728 Use them everywhere in place of accessing directly the tag member.
729 * src/gram.h, src/gram.c (rule_print): New.
730 Use it where a rule used to be printed `by hand'.
731 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
732 (reduce_grammar_tables): Report the useless rules.
733 (reduce_print): Useless things are a warning, not an error.
734 Report it as such.
735 * tests/reduce.at (Useless Nonterminals, Useless Rules):
736 (Reduced Automaton, Underivable Rules): Adjust.
737 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
738 * tests/conflicts.at (Unresolved SR Conflicts)
739 (Solved SR Conflicts): Adjust.
740
ee000ba4
AD
7412002-06-15 Akim Demaille <akim@epita.fr>
742
743 Let symbols have a location.
744
745 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
746 (getsym): Adjust.
747 Adjust all callers.
748 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
749 Use location_t, not int.
750 * src/symtab.c (symbol_check_defined): Take advantage of the
751 location.
752 * tests/regression.at (Invalid inputs): Adjust.
753
8efe435c
AD
7542002-06-15 Akim Demaille <akim@epita.fr>
755
756 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
757 (input): Don't try to initialize yylloc here, do it in the
758 scanner.
759 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
760 * src/gram.h (rule_t): Change line and action_line into location
761 and action_location, of location_t type.
762 Adjust all dependencies.
763 * src/location.h, src/location.c (empty_location): New.
764 * src/reader.h, src/reader.c (grammar_start_symbol_set)
765 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
766 (grammar_current_rule_symbol_append)
767 (grammar_current_rule_action_append): Expect a location as argument.
768 * src/reader.c (grammar_midrule_action): Adjust to attach an
769 action's location as dummy symbol location.
770 * src/symtab.h, src/symtab.c (startsymbol_location): New.
771 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
772 the line numbers.
773
1921f1d7
AD
7742002-06-14 Akim Demaille <akim@epita.fr>
775
776 Grammar declarations may be found in the grammar section.
777
778 * src/parse-gram.y (rules_or_grammar_declaration): New.
779 (declarations): Each declaration may end with a semicolon, not
780 just...
781 (grammar_declaration): `"%union"'.
782 (grammar): Branch to rules_or_grammar_declaration.
783
4515534c
AD
7842002-06-14 Akim Demaille <akim@epita.fr>
785
786 * src/main.c (main): Invoke scanner_free.
787
f958596b
AD
7882002-06-14 Akim Demaille <akim@epita.fr>
789
790 * src/output.c (m4_invoke): Extracted from...
791 (output_skeleton): here.
792 Free tempfile.
793
2c569025
AD
7942002-06-14 Akim Demaille <akim@epita.fr>
795
796 * src/parse-gram.y (directives, directive, gram)
797 (grammar_directives, precedence_directives, precedence_directive):
798 Rename as...
799 (declarations, declaration, grammar, grammar_declaration)
800 (precedence_declaration, precedence_declarator): these.
801 (symbol_declaration): New.
802
592e8d4d
AD
8032002-06-14 Akim Demaille <akim@epita.fr>
804
805 * src/files.c (action_obstack): Remove, unused.
806 (output_obstack): Remove it, and all its dependencies, as it is no
807 longer needed.
808 * src/reader.c (epilogue_set): Build the epilogue in the
809 muscle_obstack.
810 * src/output.h, src/output.c (muscle_obstack): Move to...
811 * src/muscle_tab.h, src/muscle_tab.h: here.
812 (muscle_init): Initialize muscle_obstack.
813 (muscle_free): New.
814 * src/main.c (main): Call it.
815
0c15323d
AD
8162002-06-14 Akim Demaille <akim@epita.fr>
817
818 * src/location.h: New, extracted from...
819 * src/reader.h: here.
820 * src/Makefile.am (noinst_HEADERS): Merge into
821 (bison_SOURCES): this.
822 Add location.h.
823 * src/parse-gram.y: Use location_t instead of Bison's.
824 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
825 Use location_t instead of ints.
826
e96c9728
AD
8272002-06-14 Akim Demaille <akim@epita.fr>
828
829 * data/bison.simple, data/bison.c++: Be sure to restore the
830 current #line when returning to the skeleton contents after having
831 exposed the input file's #line.
832
75d1fe16
AD
8332002-06-12 Akim Demaille <akim@epita.fr>
834
835 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
836 eager.
837 * tests/actions.at (Exotic Dollars): New.
838
6c35d22c
AD
8392002-06-12 Akim Demaille <akim@epita.fr>
840
841 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
842 ['"/] too eagerly.
843 * tests/input.at (Torturing the Scanner): New.
844
1d6412ad
AD
8452002-06-11 Akim Demaille <akim@epita.fr>
846
847 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
848 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
849 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
850 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
851 * src/reader.c (reader): Use it.
852
4cdb01db
AD
8532002-06-11 Akim Demaille <akim@epita.fr>
854
855 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
856 Adjust all callers.
857 (scanner_last_string_free): New.
858
44995b2e
AD
8592002-06-11 Akim Demaille <akim@epita.fr>
860
861 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
862 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
863 (last_string, YY_OBS_FREE): New.
864 Use them when returning an ID.
865
e9955c83
AD
8662002-06-11 Akim Demaille <akim@epita.fr>
867
868 Have Bison grammars parsed by a Bison grammar.
869
870 * src/reader.c, src/reader.h (prologue_augment): New.
871 * src/reader.c (copy_definition): Remove.
872
873 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
874 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
875 (grammar_current_rule_prec_set, grammar_current_rule_check)
876 (grammar_current_rule_symbol_append)
877 (grammar_current_rule_action_append): Export.
878 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
879 (symbol_list_action_append): Remove.
880 Hook the routines from reader.
881 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
882 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
883
884 * src/reader.c (read_declarations): Remove, unused.
885
886 * src/parse-gram.y: Handle the epilogue.
887 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
888 (grammar_start_symbol_set): this.
889 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
890 * src/reader.c (readgram): Remove, unused.
891 (reader): Adjust to insert eoftoken and axiom where appropriate.
892
893 * src/reader.c (copy_dollar): Replace with...
894 * src/scan-gram.h (handle_dollar): this.
895 * src/parse-gram.y: Remove `%thong'.
896
897 * src/reader.c (copy_at): Replace with...
898 * src/scan-gram.h (handle_at): this.
899
900 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
901 New.
902
903 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
904 time being.
905
906 * src/reader.h, src/reader.c (grammar_rule_end): New.
907
908 * src/parse.y (current_type, current_class): New.
909 Implement `%nterm', `%token' support.
910 Merge `%term' into `%token'.
911 (string_as_id): New.
912 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
913 type name.
914
915 * src/parse-gram.y: Be sure to handle properly the beginning of
916 rules.
917
918 * src/parse-gram.y: Handle %type.
919 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
920
921 * src/parse-gram.y: More directives support.
922 * src/options.c: No longer handle source directives.
923
924 * src/parse-gram.y: Fix %output.
925
926 * src/parse-gram.y: Handle %union.
927 Use the prologue locations.
928 * src/reader.c (parse_union_decl): Remove.
929
930 * src/reader.h, src/reader.c (epilogue_set): New.
931 * src/parse-gram.y: Use it.
932
933 * data/bison.simple, data/bison.c++: b4_stype is now either not
934 defined, then default to int, or to the contents of %union,
935 without `union' itself.
936 Adjust.
937 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
938
939 * src/output.c (actions_output): Don't output braces, as they are
940 already handled by the scanner.
941
942 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
943 characters to themselves.
944
945 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
946 that the epilogue has a proper #line.
947
948 * src/parse-gram.y: Handle precedence/associativity.
949
950 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
951 a terminal.
952 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
953 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
954 at all to define terminals that cannot be emitted.
955
956 * src/scan-gram.l: Escape M4 characters.
957
958 * src/scan-gram.l: Working properly with escapes in user
959 strings/characters.
960
961 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
962 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
963 grammar.
964 Use more modest sizes, as for the time being the parser does not
965 release memory, and therefore the process swallows a huge amount
966 of memory.
967
968 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
969 stricter %token grammar.
970
971 * src/symtab.h (associativity): Add `undef_assoc'.
972 (symbol_precedence_set): Do nothing when passed an undef_assoc.
973 * src/symtab.c (symbol_check_alias_consistence): Adjust.
974
975 * tests/regression.at (Invalid %directive): Remove, as it is now
976 meaningless.
977 (Invalid inputs): Adjust to the new error messages.
978 (Token definitions): The new grammar doesn't allow too many
979 eccentricities.
980
981 * src/lex.h, src/lex.c: Remove.
982 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
983 (copy_character, copy_string2, copy_string, copy_identifier)
984 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
985 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
986 (parse_action): Remove.
987 * po/POTFILES.in: Adjust.
988
2e047461
AD
9892002-06-11 Akim Demaille <akim@epita.fr>
990
991 * src/reader.c (parse_action): Don't store directly into the
992 rule's action member: return the action as a string.
993 Don't require `rule_length' as an argument: compute it.
994 (grammar_current_rule_symbol_append)
995 (grammar_current_rule_action_append): New, eved out from
996 (readgram): here.
997 Remove `action_flag', `rulelength', unused now.
998
9af3fbce
AD
9992002-06-11 Akim Demaille <akim@epita.fr>
1000
1001 * src/reader.c (grammar_current_rule_prec_set).
1002 (grammar_current_rule_check): New, eved out from...
1003 (readgram): here.
1004 Remove `xaction', `first_rhs': useless.
1005 * tests/input.at (Type clashes): New.
1006 * tests/existing.at (GNU Cim Grammar): Adjust.
1007
1485e106
AD
10082002-06-11 Akim Demaille <akim@epita.fr>
1009
1010 * src/reader.c (grammar_midrule_action): New, Eved out from
1011 (readgram): here.
1012
da4160c3
AD
10132002-06-11 Akim Demaille <akim@epita.fr>
1014
1015 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
1016 New.
1017 (readgram): Use them as replacement of inlined code, crule and
1018 crule1.
1019
f6d0f937
AD
10202002-06-11 Akim Demaille <akim@epita.fr>
1021
1022 * src/reader.c (grammar_end, grammar_symbol_append): New.
1023 (readgram): Use them.
1024 Make the use of `p' as local as possible.
1025
69078d4b
AD
10262002-06-10 Akim Demaille <akim@epita.fr>
1027
1028 GCJ's parser requires the tokens to be defined before the prologue.
1029
1030 * data/bison.simple: Output the token definition before the user's
1031 prologue.
1032 * tests/regression.at (Braces parsing, Duplicate string)
1033 (Mixing %token styles): Check the output from bison.
1034 (Early token definitions): New.
1035
5e424082
AD
10362002-06-10 Akim Demaille <akim@epita.fr>
1037
1038 * src/symtab.c (symbol_user_token_number_set): Don't complain when
1039 assigning twice the same user number to a token, so that we can
1040 use it in...
1041 * src/lex.c (lex): here.
1042 Also use `symbol_class_set' instead of hand written code.
1043 * src/reader.c (parse_assoc_decl): Likewise.
1044
44536b35
AD
10452002-06-10 Akim Demaille <akim@epita.fr>
1046
1047 * src/symtab.c, src/symtab.c (symbol_class_set)
1048 (symbol_user_token_number_set): New.
1049 * src/reader.c (parse_token_decl): Use them.
1050 Use a switch instead of ifs.
1051 Use a single argument.
1052
8b9f2372
AD
10532002-06-10 Akim Demaille <akim@epita.fr>
1054
1055 Remove `%thong' support as it is undocumented, unused, duplicates
1056 `%token's job, and creates useless e-mail traffic with people who
1057 want to know what it is, why it is undocumented, unused, and
1058 duplicates `%token's job.
1059
1060 * src/reader.c (parse_thong_decl): Remove.
1061 * src/options.c (option_table): Remove "thong".
1062 * src/lex.h (tok_thong): Remove.
1063
3ae2b51f
AD
10642002-06-10 Akim Demaille <akim@epita.fr>
1065
1066 * src/symtab.c, src/symtab.c (symbol_type_set)
1067 (symbol_precedence_set): New.
1068 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
1069 (value_components_used): Remove, unused.
1070
2f1afb73
AD
10712002-06-09 Akim Demaille <akim@epita.fr>
1072
1073 Move symbols handling code out of the reader.
1074
1075 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
1076 (axiom): Move to...
1077 * src/symtab.h, src/symtab.c: here.
1078
1079 * src/gram.c (start_symbol): Remove: use startsymbol->number.
1080 * src/reader.c (startval): Rename as...
1081 * src/symtab.h, src/symtab.c (startsymbol): this.
1082 * src/reader.c: Adjust.
1083
1084 * src/reader.c (symbol_check_defined, symbol_make_alias)
1085 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
1086 (token_translations_init)
1087 Move to...
1088 * src/symtab.c: here.
1089 * src/reader.c (packsymbols): Move to...
1090 * src/symtab.h, src/symtab.c (symbols_pack): here.
1091 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
1092 argument.
1093
e9bca3ad
AD
10942002-06-03 Akim Demaille <akim@epita.fr>
1095
1096 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
1097 then statements.
1098
86eff183
AD
10992002-06-03 Akim Demaille <akim@epita.fr>
1100
1101 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
1102 structs with non literals.
1103 * src/scan-skel.l: never-interactive.
1104 * src/conflicts.c (enum conflict_resolution_e): No trailing
1105 comma.
1106 * src/getargs.c (usage): Split long literal strings.
1107 Reported by Hans Aberg.
1108
717be197
AD
11092002-05-28 Akim Demaille <akim@epita.fr>
1110
1111 * data/bison.c++: Use C++ ostreams.
1112 (cdebug_): New member.
1113
670ddffd
AD
11142002-05-28 Akim Demaille <akim@epita.fr>
1115
1116 * src/output.c (output_skeleton): Be sure to allocate enough room
1117 for `/' _and_ for `\0' in full_skeleton.
1118
769b430f
AD
11192002-05-28 Akim Demaille <akim@epita.fr>
1120
1121 * data/bison.c++: Catch up with bison.simple:
1122 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1123 and Paul Eggert <eggert@twinsun.com>: `error' handing.
1124 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
1125 and popping traces.
1126
7067cb36
PH
11272002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1128
1129 * src/output.c (output_skeleton): Put an explicit path in front of
1130 the skeleton file name, rather than relying on the -I directory,
1131 to partially alleviate effects of having a skeleton file lying around
1132 in the current directory.
769b430f 1133
4a713ec2
PH
11342002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1135
769b430f 1136 * src/conflicts.c (log_resolution): Correct typo:
4a713ec2
PH
1137 obstack_printf should be obstack_fgrow1.
1138
b408954b
AD
11392002-05-26 Akim Demaille <akim@epita.fr>
1140
1141 * src/state.h (state_t): `solved_conflicts' is a new member.
1142 * src/LR0.c (new_state): Set it to 0.
1143 * src/conflicts.h, src/conflicts.c (print_conflicts)
1144 (free_conflicts, solve_conflicts): Rename as...
1145 (conflicts_print, conflicts_free, conflicts_solve): these.
1146 Adjust callers.
1147 * src/conflicts.c (enum conflict_resolution_e)
1148 (solved_conflicts_obstack): New, used by...
1149 (log_resolution): this.
1150 Adjust to attach the conflict resolution to each state.
1151 Complete the description with the precedence/associativity
1152 information.
1153 (resolve_sr_conflict): Adjust.
1154 * src/print.c (print_state): Output its solved_conflicts.
1155 * tests/conflicts.at (Unresolved SR Conflicts)
1156 (Solved SR Conflicts): Exercise --report=all.
1157
a49aecd5
AD
11582002-05-26 Akim Demaille <akim@epita.fr>
1159
1160 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
1161 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
1162 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
1163 (token_number_t, item_number_as_token_number)
1164 (token_number_as_item_number, muscle_insert_token_number_table):
1165 Rename as...
1166 (symbol_number_t, item_number_as_symbol_number)
1167 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
1168 these, since it is more appropriate.
1169
5504898e
AD
11702002-05-26 Akim Demaille <akim@epita.fr>
1171
1172 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
1173 `Error:' lines.
1174 * data/bison.simple (yystos) [YYDEBUG]: New.
1175 (yyparse) [YYDEBUG]: Display the symbols which are popped during
1176 error recovery.
1177 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
1178
ec3bc396
AD
11792002-05-25 Akim Demaille <akim@epita.fr>
1180
1181 * doc/bison.texinfo (Debugging): Split into...
1182 (Tracing): this new section, its former contents, and...
1183 (Understanding): this new section.
1184 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
1185 by...
1186 (report_flag): this.
1187 Adjust all dependencies.
1188 (report_args, report_types, report_argmatch): New.
1189 (usage, getargs): Report/support -r, --report.
1190 * src/options.h
1191 (struct option_table_struct): Rename as..,
1192 (struct option_table_s): this.
1193 Rename the `set_flag' member to `flag' to match with getopt_long's
1194 struct.
1195 * src/options.c (option_table): Split verbose into an entry for
1196 %verbose, and another for --verbose.
1197 Support --report/-r, so remove -r from the obsolete --raw.
1198 * src/print.c: Attach full item sets and lookaheads reports to
1199 report_flag instead of trace_flag.
1200 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
1201
78df8250
PE
12022002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1203 and Paul Eggert <eggert@twinsun.com>
769b430f 1204
78df8250
PE
1205 * data/bison.simple (yyparse): Correct error handling to conform to
1206 POSIX and yacc. Specifically, after syntax error is discovered,
1207 do not reduce further before shifting the error token.
1208 Clean up the code a bit by removing the labels yyerrdefault,
1209 yyerrhandle, yyerrpop.
1210 * NEWS: Document the above.
1211
c0c9ea05
PH
12122002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1213
1214 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
1215 type; it isn't always big enough, since it doesn't necessarily
1216 include non-terminals.
769b430f 1217 (yytranslate): Expand definition of yy_token_number_type, so that
c0c9ea05
PH
1218 the latter can be removed.
1219 (yy_token_number_type): Remove, only one use.
1220 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
1221 don't use TokenNumberType as element type.
769b430f 1222
c0c9ea05
PH
1223 * tests/regression.at: Modify expected output to agree with change
1224 to yyr1 and yytranslate.
769b430f 1225
6390a83f
FK
12262002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
1227
1228 * src/reader.c (parse_action): Use copy_character instead of
1229 obstack_1grow.
1230
db7c8e9a
AD
12312002-05-13 Akim Demaille <akim@epita.fr>
1232
1233 * tests/regression.at (Token definitions): Prototype yylex and
1234 yyerror.
1235
fcc61800
PH
12362002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1237
158c687b 1238 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
fcc61800
PH
1239 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
1240 32-bit arithmetic.
1241 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
1242
5683e9b2
AD
12432002-05-07 Akim Demaille <akim@epita.fr>
1244
1245 * tests/synclines.at: Be sure to prototype yylex and yyerror to
1246 avoid GCC warnings.
1247
0c2d3f4c
AD
12482002-05-07 Akim Demaille <akim@epita.fr>
1249
1250 Kill GCC warnings.
1251
1252 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
1253 over the RHS of each rule.
1254 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
1255 * src/state.h (state_t): Member `nitems' is unsigned short.
1256 * src/LR0.c (get_state): Adjust.
1257 * src/reader.c (packgram): Likewise.
1258 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
1259 `Type'.
1260 (muscle_insert_int_table): Remove, unused.
1261 (prepare_rules): Remove `max'.
1262
1565b720
AD
12632002-05-06 Akim Demaille <akim@epita.fr>
1264
1265 * src/closure.c (print_firsts): Display of the symbol tags.
1266 (bitmatrix_print): Move to...
1267 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
1268 here.
1269 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
1270
cfaee611
AD
12712002-05-06 Akim Demaille <akim@epita.fr>
1272
1273 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
1274 hash_do_for_each.
1275
458be8e0
AD
12762002-05-06 Akim Demaille <akim@epita.fr>
1277
1278 * src/LR0.c (new_state, get_state): Instead of using the global
1279 `kernel_size' and `kernel_base', have two new arguments:
1280 `core_size' and `core'.
1281 Adjust callers.
1282
a900a624
AD
12832002-05-06 Akim Demaille <akim@epita.fr>
1284
1285 * src/reader.c (packgram): No longer end `ritem' with a 0
1286 sentinel: it is not used.
1287
d4e7d3a1
AD
12882002-05-05 Akim Demaille <akim@epita.fr>
1289
1290 New experimental feature: display the lookaheads in the report and
1291 graph.
1292
1293 * src/print (print_core): When --trace-flag, display the rules
1294 lookaheads.
1295 * src/print_graph.c (print_core): Likewise.
1296 Swap the arguments.
1297 Adjust caller.
1298
39ceb25b
AD
12992002-05-05 Akim Demaille <akim@epita.fr>
1300
1301 * tests/torture.at (Many lookaheads): New test.
1302
5372019f
AD
13032002-05-05 Akim Demaille <akim@epita.fr>
1304
1305 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
1306 (GENERATE_MUSCLE_INSERT_TABLE): this.
1307 (output_int_table, output_unsigned_int_table, output_short_table)
1308 (output_token_number_table, output_item_number_table): Replace with...
1309 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
1310 (muscle_insert_short_table, muscle_insert_token_number_table)
1311 (muscle_insert_item_number_table): these.
1312 Adjust all callers.
1313 (prepare_tokens): Don't free `translations', since...
1314 * src/reader.h, src/reader.c (grammar_free): do it.
1315 Move to...
1316 * src/gram.h, src/gram.c (grammar_free): here.
1317 * data/bison.simple, data/bison.c++: b4_token_number_max is now
1318 b4_translate_max.
1319
5df5f6d5
AD
13202002-05-05 Akim Demaille <akim@epita.fr>
1321
1322 * src/output.c (output_unsigned_int_table): New.
1323 (prepare_rules): `i' is unsigned.
1324 `prhs', `rline', `r2' are unsigned int.
1325 Rename muscle `rhs_number_max' as `rhs_max'.
1326 Output muscles `prhs_max', `rline_max', and `r2_max'.
1327 Free rline and r1.
1328 * data/bison.simple, data/bison.c++: Adjust to use these muscles
1329 to compute types instead of constant types.
1330 * tests/regression.at (Web2c Actions): Adjust.
1331
b87f8b21
AD
13322002-05-04 Akim Demaille <akim@epita.fr>
1333
1334 * src/symtab.h (SALIAS, SUNDEF): Rename as...
1335 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
1336 Adjust dependencies.
1337 * src/output.c (token_definitions_output): Be sure not to output a
1338 `#define 'a'' when fed with `%token 'a' "a"'.
1339 * tests/regression.at (Token definitions): New.
1340
8bb936e4
PE
13412002-05-03 Paul Eggert <eggert@twinsun.com>
1342
1343 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
1344 for K&R C.
1345
13462002-05-03 gettextize <bug-gnu-gettext@gnu.org>
1347
1348 * Makefile.am (SUBDIRS): Remove intl.
1349 (EXTRA_DIST): Add config/config.rpath.
1350
53c71a12
AD
13512002-05-03 Akim Demaille <akim@epita.fr>
1352
1353 * data/bison.simple (m4_if): Don't output empty enums.
1354 And actually, output valid enum definitions :(.
1355
289dd0cf
AD
13562002-05-03 Akim Demaille <akim@epita.fr>
1357
1358 * configure.bat: Remove, completely obsolete.
1359 * Makefile.am (EXTRA_DIST): Adjust.
1360 Don't distribute config.rpath...
1361 * config/Makefile.am (EXTRA_DIST): Do it.
1362
db85e524
AD
13632002-05-03 Akim Demaille <akim@epita.fr>
1364
1365 * configure.in (GETTEXT_VERSION): New.
1366 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
1367
83ccf991
AD
13682002-05-03 Akim Demaille <akim@epita.fr>
1369
1370 * data/bison.simple (b4_token_enum): New.
1371 (b4_token_defines): Use it to output tokens both as #define and
1372 enums.
1373 Suggested by Paul Eggert.
1374 * src/output.c (token_definitions_output): Don't output spurious
1375 white spaces.
1376
1f418995
AD
13772002-05-03 Akim Demaille <akim@epita.fr>
1378
1379 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
1380
45119f04
RA
13812002-05-02 Robert Anisko <robert@lrde.epita.fr>
1382
1383 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
1384 Update the stack class, give a try to deque as the default container.
1385
b2d52318
AD
13862002-05-02 Akim Demaille <akim@epita.fr>
1387
1388 * data/bison.simple (yyparse): Do not implement @$ = @1.
1389 (YYLLOC_DEFAULT): Adjust to do it.
1390 * doc/bison.texinfo (Location Default Action): Fix.
1391
3a8b4109
AD
13922002-05-02 Akim Demaille <akim@epita.fr>
1393
1394 * src/reader.c (parse_braces): Merge into...
1395 (parse_action): this.
1396
84614e13
AD
13972002-05-02 Akim Demaille <akim@epita.fr>
1398
1399 * configure.in (ALL_LINGUAS): Remove.
1400 * po/LINGUAS, hr.po: New.
1401
fdbcd8e2
AD
14022002-05-02 Akim Demaille <akim@epita.fr>
1403
1404 Remove the so called hairy (semantic) parsers.
1405
1406 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
1407 * src/gram.h, src/gram.c (semantic_parser): Remove.
1408 (rule_t): Remove the guard and guard_line members.
1409 * src/lex.h (token_t): remove tok_guard.
1410 * src/options.c (option_table): Remove %guard and %semantic_parser
1411 support.
1412 * src/output.c, src/output.h (guards_output): Remove.
1413 (prepare): Adjust.
1414 (token_definitions_output): Don't output the `T'
1415 tokens (???).
1416 (output_skeleton): Don't output the guards.
1417 * src/files.c, src/files.c (attrsfile): Remove.
1418 * src/reader.c (symbol_list): Remove the guard and guard_line
1419 members.
1420 Adjust dependencies.
1421 (parse_guard): Remove.
1422 * data/bison.hairy: Remove.
1423 * doc/bison.texinfo (Environment Variables): Remove occurrences of
1424 BISON_HAIRY.
1425
82b6cb3f
AD
14262002-05-02 Akim Demaille <akim@epita.fr>
1427
1428 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
1429 (parse_guard): Rename the formal argument `stack_offset' as
1430 `rule_length', which is more readable.
1431 Adjust callers.
1432 (copy_at, copy_dollar): Instead of outputting the hard coded
1433 values of $$, $n and so forth, output invocation to b4_lhs_value,
1434 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
900c877b
AD
1435 Note: this patch partially drops `semantic-parser' support: it
1436 always does `rule_length - n', where semantic parsers ought to
1437 always use `-n'.
82b6cb3f
AD
1438 * data/bison.simple, data/bison.c++ (b4_lhs_value)
1439 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
1440
6cbfbcc5
AD
14412002-05-02 Akim Demaille <akim@epita.fr>
1442
1443 * configure.in (AC_INIT): Bump to 1.49b.
1444 (AM_INIT_AUTOMAKE): Short invocation.
1445
b8548114
AD
14462002-05-02 Akim Demaille <akim@epita.fr>
1447
1448 Version 1.49a.
1449
c20cd1fa
AD
14502002-05-01 Akim Demaille <akim@epita.fr>
1451
1452 * src/skeleton.h: Remove.
1453
8a9566d4
AD
14542002-05-01 Akim Demaille <akim@epita.fr>
1455
1456 * src/skeleton.h: Fix the #endif.
1457 Reported by Magnus Fromreide.
1458
8c6d399a
PE
14592002-04-26 Paul Eggert <eggert@twinsun.com>
1460
1461 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
1462 Define if we define YYSTYPE and YYLTYPE, respectively.
b756bb75 1463 (YYCOPY): Fix [] quoting problem in the non-GCC case.
8a9566d4 1464
2b7ed18a
RA
14652002-04-25 Robert Anisko <robert@lrde.epita.fr>
1466
1467 * src/scan-skel.l: Postprocess quadrigraphs.
1468
1469 * src/reader.c (copy_character): New function, used to output
1470 single characters while replacing `[' and `]' with quadrigraphs, to
1471 avoid troubles with M4 quotes.
1472 (copy_comment): Output characters with copy_character.
1473 (read_additionnal_code): Likewise.
1474 (copy_string2): Likewise.
1475 (copy_definition): Likewise.
1476
1477 * tests/calc.at: Exercise M4 quoting.
1478
34a89c50
AD
14792002-04-25 Akim Demaille <akim@epita.fr>
1480
1481 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
1482 between `!' and the command.
1483 Reported by Paul Eggert.
1484
0dd1580a
RA
14852002-04-24 Robert Anisko <robert@lrde.epita.fr>
1486
1487 * tests/calc.at: Exercise prologue splitting.
1488
1489 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
1490 `b4_post_prologue' instead of `b4_prologue'.
1491
1492 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
1493 muscles.
1494 (output): Free pre_prologue_obstack and post_prologue_obstack.
1495 * src/files.h, src/files.c (attrs_obstack): Remove.
1496 (pre_prologue_obstack, post_prologue_obstack): New.
1497 * src/reader.c (copy_definition): Add a parameter to specify the
1498 obstack to fill, instead of using attrs_obstack unconditionally.
1499 (read_declarations): Pass pre_prologue_obstack to copy_definition if
1500 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
1501
83c1796f
PE
15022002-04-23 Paul Eggert <eggert@twinsun.com>
1503
1504 * data/bison.simple: Remove unnecessary commentary and white
1505 space differences from 1_29-branch.
1506 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
1507
1508 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
1509 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
1510 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
1511 constructors or destructors.
1512
1513 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
1514
1207eeac
AD
15152002-04-23 Akim Demaille <akim@epita.fr>
1516
1517 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
1518 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
1519 location with columns.
1520 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
1521 All reported by Paul Eggert.
1522
78ab8f67
AD
15232002-04-22 Akim Demaille <akim@epita.fr>
1524
1525 * src/reduce.c (dump_grammar): Move to...
1526 * src/gram.h, src/gram.c (grammar_dump): here.
1527 Be sure to separate long item numbers.
1528 Don't read the members of a rule's prec if its nil.
1529
133c20e2
AD
15302002-04-22 Akim Demaille <akim@epita.fr>
1531
1532 * src/output.c (table_size, table_grow): New.
1533 (MAXTABLE): Remove, replace uses with table_size.
1534 (pack_vector): Instead of dying when the table is too big, grow it.
1535
9515e8a7
AD
15362002-04-22 Akim Demaille <akim@epita.fr>
1537
1538 * data/bison.simple (yyr1): Its type is that of a token number.
1539 * data/bison.c++ (r1_): Likewise.
1540 * tests/regression.at (Web2c Actions): Adjust.
1541
23c5a174
AD
15422002-04-22 Akim Demaille <akim@epita.fr>
1543
1544 * src/reader.c (token_translations_init): 256 is now the default
1545 value for the error token, i.e., it will be assigned another
1546 number if the user assigned 256 to one of her tokens.
1547 (reader): Don't force 256 to error.
1548 * doc/bison.texinfo (Symbols): Adjust.
1549 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
1550 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
1551 etc. instead of 10, 20, 30 (which was used to `jump' over error
1552 (256) and undefined (2)).
1553
5fbb0954
AD
15542002-04-22 Akim Demaille <akim@epita.fr>
1555
1556 Propagate more token_number_t.
1557
1558 * src/gram.h (token_number_as_item_number)
1559 (item_number_as_token_number): New.
1560 * src/output.c (GENERATE_OUTPUT_TABLE): New.
1561 Use it to create output_item_number_table and
1562 output_token_number_table.
1563 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
1564 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
1565 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
1566 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
1567
4f940944
AD
15682002-04-22 Akim Demaille <akim@epita.fr>
1569
1570 * src/output.h, src/output.c (get_lines_number): Remove.
1571
3ded9a63
AD
15722002-04-19 Akim Demaille <akim@epita.fr>
1573
1574 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
1575 as Lex/Flex'.
1576 (Debugging): More details about enabling the debugging features.
1577 (Table of Symbols): Describe $$, $n, @$, and @n.
1578 Suggested by Tim Josling.
1579
e0c471a9
AD
15802002-04-19 Akim Demaille <akim@epita.fr>
1581
1582 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
1583
fecc10cd
AD
15842002-04-10 Akim Demaille <akim@epita.fr>
1585
1586 * src/system.h: Rely on HAVE_LIMITS_H.
1587 Suggested by Paul Eggert.
1588
51dec47b
AD
15892002-04-09 Akim Demaille <akim@epita.fr>
1590
1591 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
1592 full stderr, and strip it according to the bison options, instead
1593 of composing the error message from different bits.
1594 This makes it easier to check for several error messages.
1595 Adjust all the invocations.
1596 Add an invocation exercising the error token.
1597 Add an invocation demonstrating a stupid error message.
1598 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
1599 Adjust the tests.
1600 Error message are for stderr, not stdout.
1601
007a50a4
AD
16022002-04-09 Akim Demaille <akim@epita.fr>
1603
1604 * src/gram.h, src/gram.c (error_token_number): Remove, use
1605 errtoken->number.
1606 * src/reader.c (reader): Don't specify the user token number (2)
1607 for $undefined, as it uselessly prevents using it.
1608 * src/gram.h (token_number_t): Move to...
1609 * src/symtab.h: here.
1610 (state_t.number): Is a token_number_t.
1611 * src/print.c, src/reader.c: Use undeftoken->number instead of
1612 hard coded 2.
1613 (Even though this 2 is not the same as above: the number of the
1614 undeftoken remains being 2, it is its user token number which
1615 might not be 2).
1616 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
1617 `user_token_number_max'.
1618 Output `undef_token_number'.
1619 * data/bison.simple, data/bison.c++: Use them.
1620 Be sure to map invalid yylex return values to
1621 `undef_token_number'. This saves us from gratuitous SEGV.
1622
1623 * tests/conflicts.at (Solved SR Conflicts)
1624 (Unresolved SR Conflicts): Adjust.
1625 * tests/regression.at (Web2c Actions): Adjust.
1626
06446ccf
AD
16272002-04-08 Akim Demaille <akim@epita.fr>
1628
1629 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
1630 Adding #line.
1631 Remove the duplicate `typedefs'.
1632 (RhsNumberType): Fix the declaration and various other typos.
1633 Use __ofile__.
1634 * data/bison.simple: Use __ofile__.
1635 * src/scan-skel.l: Handle __ofile__.
1636
62a3e4f0
AD
16372002-04-08 Akim Demaille <akim@epita.fr>
1638
1639 * src/gram.h (item_number_t): New, the type of item numbers in
1640 RITEM. Note that it must be able to code symbol numbers as
1641 positive number, and the negation of rule numbers as negative
1642 numbers.
1643 Adjust all dependencies (pretty many).
1644 * src/reduce.c (rule): Remove this `short *' pointer: use
1645 item_number_t.
1646 * src/system.h (MINSHORT, MAXSHORT): Remove.
1647 Include `limits.h'.
1648 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
1649 (shortcpy): Remove.
1650 (MAXTABLE): Move to...
1651 * src/output.c (MAXTABLE): here.
1652 (prepare_rules): Use output_int_table to output rhs.
1653 * data/bison.simple, data/bison.c++: Adjust.
1654 * tests/torture.at (Big triangle): Move the limit from 254 to
1655 500.
1656 * tests/regression.at (Web2c Actions): Ajust.
1657
1658 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
1659 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
1660 passes, but produces negative #line number, once fixed, GCC is
1661 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
1662 C), it passes.
1663 * src/state.h (state_h): Code input lines on ints, not shorts.
1664
bb88b0fc
AD
16652002-04-08 Akim Demaille <akim@epita.fr>
1666
1667 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
1668 and then the grammar.
1669
9a636f47
AD
16702002-04-08 Akim Demaille <akim@epita.fr>
1671
1672 * src/system.h: No longer using strndup.
1673
680e8701
AD
16742002-04-07 Akim Demaille <akim@epita.fr>
1675
1676 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
1677 * src/output.c (output_table_data): Return the longest number.
1678 (prepare_tokens): Output `token_number_max').
1679 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
1680 New.
1681 Use them to define yy_token_number_type/TokenNumberType.
1682 Use this type for yytranslate.
1683 * tests/torture.at (Big triangle): Push the limit from 124 to
1684 253.
1685 * tests/regression.at (Web2c Actions): Adjust.
1686
817e9f41
AD
16872002-04-07 Akim Demaille <akim@epita.fr>
1688
1689 * tests/torture.at (Big triangle): New.
1690 (GNU AWK Grammar, GNU Cim Grammar): Move to...
1691 * tests/existing.at: here.
1692
5123689b
AD
16932002-04-07 Akim Demaille <akim@epita.fr>
1694
1695 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
1696 nritems.
1697 Adjust dependencies.
1698
f3849179
AD
16992002-04-07 Akim Demaille <akim@epita.fr>
1700
1701 * src/reader.c: Normalize increments to prefix form.
1702
bd02036a
AD
17032002-04-07 Akim Demaille <akim@epita.fr>
1704
1705 * src/reader.c, symtab.c: Remove debugging code.
1706
db8837cb
AD
17072002-04-07 Akim Demaille <akim@epita.fr>
1708
1709 Rename all the `bucket's as `symbol_t'.
1710
1711 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
1712 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
1713 * src/symtab.c, src/symtab.h (bucket): Rename as...
1714 (symbol_t): this.
1715 (symbol_list_new, bucket_check_defined, bucket_make_alias)
1716 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
1717 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
1718 (buckets_new, buckets_free, buckets_do): Rename as...
1719 (symbol_list_new, symbol_check_defined, symbol_make_alias)
1720 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
1721 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
1722 (symbols_new, symbols_free, symbols_do): these.
1723
72a23c97
AD
17242002-04-07 Akim Demaille <akim@epita.fr>
1725
1726 Use lib/hash for the symbol table.
1727
1728 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
1729 EOF.
1730 * src/lex.c (lex): Set the `number' member of new terminals.
1731 * src/reader.c (bucket_check_defined, bucket_make_alias)
1732 (bucket_check_alias_consistence, bucket_translation): New.
1733 (reader, grammar_free, readgram, token_translations_init)
1734 (packsymbols): Adjust.
1735 (reader): Number the predefined tokens.
1736 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
1737 for predefined tokens.
1738 * src/symtab.h (bucket): Remove all the hash table related
1739 members.
1740 * src/symtab.c (symtab): Replace by...
1741 (bucket_table): this.
1742 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
1743 (buckets_new, buckets_do): New.
1744
280a38c3
AD
17452002-04-07 Akim Demaille <akim@epita.fr>
1746
1747 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
1748 (start_symbol, max_user_token_number, semantic_parser)
1749 (error_token_number): Initialize.
1750 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
1751 Initialize.
1752 (reader): Don't.
1753 (errtoken, eoftoken, undeftoken, axiom): Extern.
1754
03b31c0c
AD
17552002-04-07 Akim Demaille <akim@epita.fr>
1756
1757 * src/gram.h (rule_s): prec and precsym are now pointers
1758 to the bucket giving the priority/associativity.
1759 Member `associativity' removed: useless.
1760 * src/reduce.c, src/conflicts.c: Adjust.
1761
8b3df748
AD
17622002-04-07 Akim Demaille <akim@epita.fr>
1763
1764 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
1765 Properly escape the symbols' TAG when outputting them.
1766
e601aa1d
AD
17672002-04-07 Akim Demaille <akim@epita.fr>
1768
1769 * src/lalr.h (LA): Is a bitsetv, not bitset*.
1770
b0299a2e
AD
17712002-04-07 Akim Demaille <akim@epita.fr>
1772
1773 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
1774 (LArule): this, which is an array to rule_t*.
1775 * src/print.c, src/conflicts.c: Adjust.
1776
d7e1f00c
AD
17772002-04-07 Akim Demaille <akim@epita.fr>
1778
1779 * src/gram.h (rule_t): Rename `number' as `user_number'.
1780 `number' is a new member.
1781 Adjust dependencies.
1782 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
1783
cc9305dd
AD
17842002-04-07 Akim Demaille <akim@epita.fr>
1785
1786 As a result of the previous patch, it is no longer needed
1787 to reorder ritem itself.
1788
1789 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
1790
b0940840
AD
17912002-04-07 Akim Demaille <akim@epita.fr>
1792
1793 Be sure never to walk through RITEMS, but use only data related to
1794 the rules themselves. RITEMS should be banished.
1795
1796 * src/output.c (output_token_translations): Rename as...
1797 (prepare_tokens): this.
1798 In addition to `translate', prepare the muscles `tname' and
1799 `toknum', which were handled by...
1800 (output_rule_data): this.
1801 Remove, and move the remainder of its outputs into...
1802 (prepare_rules): this new routines, which also merges content from
1803 (output_gram): this.
1804 (prepare_rules): Be sure never to walk through RITEMS.
1805 (output_stos): Rename as...
1806 (prepare_stos): this.
1807 (output): Always invoke prepare_states, after all, just don't use it
1808 in the output if you don't need it.
1809
643a5994
AD
18102002-04-07 Akim Demaille <akim@epita.fr>
1811
1812 * src/LR0.c (new_state): Display `nstates' as the name of the
1813 newly created state.
1814 Adjust to initialize first_state and last_state if needed.
1815 Be sure to distinguish the initial from the final state.
1816 (new_states): Create the itemset of the initial state, and use
1817 new_state.
1818 * src/closure.c (closure): Now that the initial state has its
1819 items properly set, there is no need for a special case when
1820 creating `ruleset'.
1821
1822 As a result, now the rule 0, reducing to $axiom, is visible in the
1823 outputs. Adjust the test suite.
1824
1825 * tests/conflicts.at (Solved SR Conflicts)
1826 (Unresolved SR Conflicts): Adjust.
1827 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
1828 * tests/conflicts.at (S/R in initial): New.
1829
b4c4ccc2
AD
18302002-04-07 Akim Demaille <akim@epita.fr>
1831
1832 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
1833 the RHS of the rules.
1834 * src/output.c (output_gram): Likewise.
1835
bba97eb2
AD
18362002-04-07 Akim Demaille <akim@epita.fr>
1837
1838 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
1839 bucket.
1840 Adjust all dependencies.
1841 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
1842 `number' of the buckets too.
1843 * src/gram.h: Include `symtab.h'.
1844 (associativity): Move to...
1845 * src/symtab.h: here.
1846 No longer include `gram.h'.
1847
c3b407f4
AD
18482002-04-07 Akim Demaille <akim@epita.fr>
1849
1850 * src/gram.h, src/gram.c (rules_rhs_length): New.
1851 (ritem_longest_rhs): Use it.
1852 * src/gram.h (rule_t): `number' is a new member.
1853 * src/reader.c (packgram): Set it.
1854 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
1855 the end of `rules', and count them out of `nrules'.
1856 (reduce_output, dump_grammar): Adjust.
1857 * src/print.c (print_grammar): It is no longer needed to check for
1858 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
1859 * tests/reduce.at (Reduced Automaton): New test.
1860
11652ab3
AD
18612002-04-07 Akim Demaille <akim@epita.fr>
1862
1863 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
1864 lacking `+ 1' to nrules, Bison reported as useless a token if it
1865 was used solely to set the precedence of the last rule...
1866
26b23c1a
AD
18672002-04-07 Akim Demaille <akim@epita.fr>
1868
1869 * data/bison.c++, data/bison.simple: Don't output the current file
1870 name in #line, to avoid useless diffs between two identical
1871 outputs under different names.
1872
18bcecb0
AD
18732002-04-07 Akim Demaille <akim@epita.fr>
1874
1875 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
1876 Normalize loops to using `< nrules + 1', not `<= nrules'.
1877
fa770c86
AD
18782002-04-07 Akim Demaille <akim@epita.fr>
1879
1880 * TODO: Update.
1881
d9b739c3
AD
18822002-04-07 Akim Demaille <akim@epita.fr>
1883
1884 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
1885 bucket.value as bucket.number.
1886
99013900
AD
18872002-04-07 Akim Demaille <akim@epita.fr>
1888
1889 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
1890 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
1891 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
1892 RHS, instead of being an index in RITEMS.
1893
e966383b
PE
18942002-04-04 Paul Eggert <eggert@twinsun.com>
1895
1896 * doc/bison.texinfo: Update copyright date.
1897 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
1898 (Symbols): Warn about running Bison in one character set,
1899 but compiling and/or running in an incompatible one.
1900 Warn about character code 256, too.
1901
19022002-04-03 Paul Eggert <eggert@twinsun.com>
1903
1904 * src/bison.data (YYSTACK_ALLOC): Depend on whether
1905 YYERROR_VERBOSE is nonzero, not whether it is defined.
1906
1907 Merge changes from bison-1_29-branch.
c307773e 1908
8d6c48b9
PE
19092002-03-20 Paul Eggert <eggert@twinsun.com>
1910
1911 Merge fixes from Debian bison_1.34-1.diff.
1912
1913 * configure.in (AC_PREREQ): 2.53.
1914
e53c6322
AD
19152002-03-20 Akim Demaille <akim@epita.fr>
1916
1917 * src/conflicts.c (log_resolution): Argument `resolution' is const.
1918
9ffbeca7
PE
19192002-03-19 Paul Eggert <eggert@twinsun.com>
1920
21db0b2a
PE
1921 * src/bison.simple (YYCOPY): New macro.
1922 (YYSTACK_RELOCATE): Use it.
1923 Remove Type arg; no longer needed. All callers changed.
1924 (yymemcpy): Remove; no longer needed.
1925
9ffbeca7
PE
1926 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
1927 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
1928
642cb8f8
AD
19292002-03-19 Akim Demaille <akim@epita.fr>
1930
1931 Test and fix the #line outputs.
1932
1933 * tests/atlocal.at (GCC): New.
1934 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
1935 (Prologue synch line, ,%union synch line, Postprologue synch line)
1936 (Action synch line, Epilogue synch line): New tests.
1937 * src/reader.c (parse_union_decl): Define the muscle stype_line.
1938 * data/bison.simple, data/bison.c++: Use it.
1939
3c31a486
AD
19402002-03-19 Akim Demaille <akim@epita.fr>
1941
1942 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
1943 (Solved SR Conflicts, %expect not enough, %expect right)
1944 (%expect too much): Move to...
1945 * tests/conflicts.at: this new file.
1946
0d8bed56
AD
19472002-03-19 Akim Demaille <akim@epita.fr>
1948
1949 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
1950 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
1951 that we can move to enums for instance.
1952 * src/output.c (token_definitions_output): Output a list of
1953 `token-name, token-number' instead of the #define.
1954 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
1955
9208d17f
AD
19562002-03-14 Akim Demaille <akim@epita.fr>
1957
1958 Use Gettext 0.11.1.
1959
af27eacb
RA
19602002-03-09 Robert Anisko <robert@lrde.epita.fr>
1961
1962 * data/bison.c++: Make the user able to add members to the generated
1963 parser by subclassing.
1964
9101a310
RA
19652002-03-05 Robert Anisko <robert@lrde.epita.fr>
1966
1967 * src/reader.c (read_additionnal_code): `c' should be an integer, not
1968 a character.
1969 Reported by Nicolas Tisserand and Nicolas Burrus.
1970
fff9bf0b
RA
19712002-03-04 Robert Anisko <robert@lrde.epita.fr>
1972
1973 * src/reader.c: Warn about lacking semi-colons, do not complain.
1974
64dba31e
RA
19752002-03-04 Robert Anisko <robert@lrde.epita.fr>
1976
1977 * data/bison.c++: Remove a debug line.
1978
374f5a14
RA
19792002-03-04 Robert Anisko <robert@lrde.epita.fr>
1980
1981 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
1982 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
1983 provide a default implementation.
1984
bfcf1f3a
AD
19852002-03-04 Akim Demaille <akim@epita.fr>
1986
1987 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
1988 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
1989 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
1990 * tests/semantic.at (Parsing Guards): Similarly.
1991 * src/reader.at (readgram): Complain if the last rule is not ended
1992 with a semi-colon.
1993
65ccf9fc
AD
19942002-03-04 Akim Demaille <akim@epita.fr>
1995
1996 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
1997 * src/closure.c: here.
1998 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
1999 RTC.
2000 * src/warshall.h, src/warshall.c: Remove.
2001 * tests/sets.at (Broken Closure): Adjust.
2002
d0039cbc
AD
20032002-03-04 Akim Demaille <akim@epita.fr>
2004
2005 * src/output.c (output_skeleton): tempdir is const.
2006 bytes_read is unused.
2007
345cea78
AD
20082002-03-04 Akim Demaille <akim@epita.fr>
2009
2010 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
2011 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
2012 Update.
2013 From Michael Hayes.
2014
564801f7
AD
20152002-03-04 Akim Demaille <akim@epita.fr>
2016
2017 * src/closure.c (closure): `r' is unused.
2018
e5352bc7
AD
20192002-03-04 Akim Demaille <akim@epita.fr>
2020
2021 * tests/sets.at (Broken Closure): Add the ending `;'.
2022 * src/reader.at (readgram): Complain if a rule is not ended with a
2023 semi-colon.
2024
914feea9
AD
20252002-03-04 Akim Demaille <akim@epita.fr>
2026
2027 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
2028 (count_sr_conflicts): Use bitset_count.
2029 * src/reduce.c (inaccessable_symbols): Ditto.
2030 (bits_size): Remove.
2031 * src/warshall.h, src/warshall.c: Convert to bitsetv.
2032
f0250de6
AD
20332002-03-04 Akim Demaille <akim@epita.fr>
2034
2035 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
2036 * src/reduce.c: Remove the `bitset_zero's following the
2037 `bitset_create's, as now it is performed by the latter.
2038
ef017502
AD
20392002-03-04 Akim Demaille <akim@epita.fr>
2040
2041 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
2042 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
2043 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
2044 latest sources from Michael.
2045
76514394
AD
20462002-03-04 Akim Demaille <akim@epita.fr>
2047
2048 * src/output.c (output): Don't free the grammar.
2049 * src/reader.c (grammar_free): New.
2050 * src/main.c (main): Call it and don't free symtab here.
2051
55024580
AD
20522002-03-04 Akim Demaille <akim@epita.fr>
2053
2054 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
2055 before returning.
2056 Reported by Benoit Perrot.
2057
f9abaa2c
AD
20582002-03-04 Akim Demaille <akim@epita.fr>
2059
2060 Use bitset operations when possible, not loops over bits.
2061
2062 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
2063 bitset_or.
2064 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
2065 * src/reduce.c (useless_nonterminals): Formatting changes.
2066 * src/warshall.c (TC): Use bitset_or.
2067
0e721e75
AD
20682002-03-04 Akim Demaille <akim@epita.fr>
2069
2070 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
2071 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
2072 Ditto.
2073
0fb1ffb1
AD
20742002-03-04 Akim Demaille <akim@epita.fr>
2075
2076 * src/lalr.c (F): Now a bitset*.
2077 Adjust all dependencies.
2078
b86796bf
AD
20792002-03-04 Akim Demaille <akim@epita.fr>
2080
2081 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
2082 Adjust all dependencies.
2083
602bbf31
AD
20842002-03-04 Akim Demaille <akim@epita.fr>
2085
2086 * src/L0.c, src/LR0.h (nstates): Be size_t.
2087 Adjust comparisons (signed vs unsigned).
2088 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
2089 bitset*.
2090 Adjust all dependencies.
2091
d8a0245c
AD
20922002-03-04 Akim Demaille <akim@epita.fr>
2093
2094 * src/closure.c (firsts): Now, also a bitset.
2095 Adjust all dependencies.
2096 (varsetsize): Remove, now unused.
2097 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
2098
34ba9743
AD
20992002-03-04 Akim Demaille <akim@epita.fr>
2100
2101 * src/print.c: Convert to use bitset.h, not hand coded iterations
2102 over ints.
2103
ed86e78c
AD
21042002-03-04 Akim Demaille <akim@epita.fr>
2105
2106 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
2107
dfdb1797
AD
21082002-03-04 Akim Demaille <akim@epita.fr>
2109
2110 * src/closure.c (ruleset): Be a bitset.
2111 (rulesetsize): Remove.
2112
7086e707
AD
21132002-03-04 Akim Demaille <akim@epita.fr>
2114
2115 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
2116 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
2117 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
2118 * src/closure.c (fderives): Be an array of bitsets.
2119
98254360
RA
21202002-02-28 Robert Anisko <robert@lrde.epita.fr>
2121
2122 * data/bison.c++: Merge the two generated headers. Insert a copyright
2123 notice in each output file.
2124
a75c057f
AD
21252002-02-28 Akim Demaille <akim@epita.fr>
2126
2127 * data/bison.c++: Copy the prologue of bison.simple to fetch
2128 useful M4 definitions, such as b4_header_guard.
2129
06b00abc
AD
21302002-02-25 Akim Demaille <akim@epita.fr>
2131
2132 * src/getargs.c (version): Give the name of the authors, and use a
a75c057f
AD
2133 translator friendly scheme for the bgr
2134 copyright notice.
06b00abc 2135
70e7d534
AD
21362002-02-25 Akim Demaille <akim@epita.fr>
2137
2138 * src/output.c (header_output): Remove, now handled completely via
2139 M4.
2140
abe017f6
AD
21412002-02-25 Akim Demaille <akim@epita.fr>
2142
2143 * m4/m4.m4: New, from CVS Autoconf.
2144 * configure.in: Invoke it.
2145 * src/output.c (output_skeleton): Use its result instead of the
2146 hard coded name.
2147
381fb12e
AD
21482002-02-25 Akim Demaille <akim@epita.fr>
2149
2150 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
2151 Fileutils 4.1.5.
2152 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
2153 * src/output.c (output_skeleton): Use mkstemp to create a real
2154 temporary file.
2155 Move the filling of `skeleton' and its muscle to...
2156 (prepare): here.
2157 (output): Move the definition of the prologue muscle to...
2158 (prepare): here.
2159 * src/system.h (DEFAULT_TMPDIR): New.
2160
6f38107f
PE
21612002-02-14 Paul Eggert <eggert@twinsun.com>
2162
2163 Remove the support for C++ namespace cleanliness; it was
2164 causing more problems than it was curing, since it didn't work
2165 properly on some nonstandard C++ compilers. This can wait
2166 for a proper C++ parser.
2167
2168 * NEWS: Document this.
2169 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
2170 of C++, as it's treated like C now.
2171 * src/bison.simple (YYSTD): Remove.
2172 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
2173 Treat C++ just like Standard C instead of trying to support
2174 namespace cleanliness.
2175
80cce3da
AD
21762002-02-14 Akim Demaille <akim@epita.fr>
2177
2178 * tests/regression.at (else): Adjust to Andreas' change.
2179
842e8679
AD
21802002-02-14 Akim Demaille <akim@epita.fr>
2181
2182 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
2183
4bda3f10
AD
21842002-02-13 Andreas Schwab <schwab@suse.de>
2185
2186 * src/output.c (output_rule_data): Don't output NULL, it might
2187 not be defined yet.
2188
4162fa07 21892002-02-11 Robert Anisko <robert@lrde.epita.fr>
b418ecd8 2190
4162fa07
RA
2191 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
2192 (Copyright notice): Update.
b418ecd8 2193
bd16a5dc
AD
21942002-02-11 Akim Demaille <akim@epita.fr>
2195
2196 * tests/regression.at (%nonassoc and eof): Don't include
2197 nonportable headers.
2198
8d69a1a3
RA
21992002-02-08 Robert Anisko <robert@lrde.epita.fr>
2200
2201 * data/bison.c++: Correct error recovery. Make the user able to
2202 initialize the starting location.
2203
9b2d0677
AD
22042002-02-07 Akim Demaille <akim@epita.fr>
2205
2206 * tests/input.at: New.
2207
69e2658b
RA
22082002-02-07 Robert Anisko <robert@lrde.epita.fr>
2209
2210 * data/bison.c++: Replace some direct m4 expansions by constants. Be
9b2d0677 2211 more consistent when naming methods and variables. Put preprocessor
69e2658b
RA
2212 directives around tables only needed for debugging.
2213
4aacc3a7
RA
22142002-02-07 Robert Anisko <robert@lrde.epita.fr>
2215
2216 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
2217 C++ parsers.
2218 (yy::b4_name::parse): Use print_.
2219
762a801e
RA
22202002-02-07 Robert Anisko <robert@lrde.epita.fr>
2221
2222 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
2223
4bb2bc3f
RA
22242002-02-07 Robert Anisko <robert@lrde.epita.fr>
2225
2226 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
2227 C++ parsers.
2228 (yy::b4_name::parse): Build verbose error messages, and use error_.
2229
6b45a3ca
RA
22302002-02-06 Robert Anisko <robert@lrde.epita.fr>
2231
2232 * data/bison.c++: Fix m4 quoting in comments.
2233
50997c6e
RA
22342002-02-06 Robert Anisko <robert@lrde.epita.fr>
2235
2236 * data/bison.c++: Adjust the parser code. Fix some muscles that were
2237 not expanded by m4.
2238
3f3eed27
AD
22392002-02-05 Akim Demaille <akim@epita.fr>
2240
2241 * data/bison.c++: Adjust to the M4 back end.
2242 More is certainly needed.
2243
be2a1a68
AD
22442002-02-05 Akim Demaille <akim@epita.fr>
2245
2246 Give a try to M4 as a back end.
2247
2248 * lib/readpipe.c: New, from wdiff.
2249 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
2250 BISON_HAIRY.
2251 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
2252 specific values. Now it is m4 that performs the lookup.
2253 * src/parse-skel.y: Remove.
2254 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
2255 * src/output.c (actions_output, guards_output)
2256 (token_definitions_output): No longer keeps track of the output
2257 line number, hence remove the second argument.
2258 (guards_output): Check against the guard member of a rule, not the
2259 action member.
2260 Adjust callers.
2261 (output_skeleton): Don't look for the skeleton location, let m4 do
2262 that.
2263 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
2264 file will be used.
2265 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
2266 (prepare): Given that for the time being changesyntax is not
2267 usable in M4, rename the muscles using `-' to `_'.
2268 Define `defines_flag', `output_parser_name' and `output_header_name'.
2269 * src/output.h (actions_output, guards_output)
2270 (token_definitions_output): Adjust prototypes.
2271 * src/scan-skel.l: Instead of scanning the skeletons, it now
2272 processes the output of m4: `__oline__' and `#output'.
2273 * data/bison.simple: Adjust to be used by M4(sugar).
2274 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
2275 to date.
2276 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
2277 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
2278 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
2279 shamelessly stolen from CVS Autoconf.
2280
beda758b
AD
22812002-02-05 Akim Demaille <akim@epita.fr>
2282
2283 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
2284 * configure.in: Check for the declarations of free and malloc.
2285 * src/muscle_tab.c: Adjust.
2286
5ece6d43
AD
22872002-02-05 Akim Demaille <akim@epita.fr>
2288
2289 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
2290 which have no values.
2291
5bb18f9a
AD
22922002-02-05 Akim Demaille <akim@epita.fr>
2293
2294 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
2295 * data/: here.
2296
894dd62e
PE
22972002-01-29 Paul Eggert <eggert@twinsun.com>
2298
2299 * src/bison.simple (YYSIZE_T): Do not define merely because
2300 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
2301 On some platforms, <alloca.h> does not declare YYSTD (size_t).
2302
82841af7
AD
23032002-01-27 Akim Demaille <akim@epita.fr>
2304
2305 Fix `%nonassoc and eof'.
2306
2307 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
2308 which were not properly copied! Replace
2309 memcpy (res->errs, src->errs, src->nerrs);
2310 with
2311 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
2312 !!!
2313 * tests/regression.at (%nonassoc and eof): Adjust to newest
2314 Autotest: `.' is not in the PATH.
2315
318b76e9
AD
23162002-01-27 Akim Demaille <akim@epita.fr>
2317
2318 * tests/sets.at (AT_EXTRACT_SETS): New.
2319 (Nullable): Use it.
2320 (Firsts): New.
2321
30d2f3d5
AD
23222002-01-26 Akim Demaille <akim@epita.fr>
2323
2324 * tests/actions.at, tests/calc.at, tests/headers.at,
2325 * tests/torture.at: Adjust to the newest Autotest which no longer
2326 forces `.' in the PATH.
2327
30f8c395
AD
23282002-01-25 Akim Demaille <akim@epita.fr>
2329
2330 * tests/regression.at (%nonassoc and eof): New.
2331 Suggested by Robert Anisko.
2332
29ae55f1
AD
23332002-01-24 Akim Demaille <akim@epita.fr>
2334
2335 Bison dumps core when trying to complain about broken input files.
2336 Reported by Cris van Pelt.
2337
2338 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
2339 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
2340 into...
2341 (Invalid inputs): Strengthen: exercise parse_percent_token.
2342
2b548aa6
RA
23432002-01-24 Robert Anisko <robert.anisko@epita.fr>
2344
2345 * src/Makefile.am: Add bison.c++.
2346 * src/bison.c++: New skeleton.
2347
bb0146c2
AD
23482002-01-21 Paolo Bonzini <bonzini@gnu.org>
2349
2350 * po/it.po: New.
2351
bec30531
AD
23522002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
2353
2354 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
2355
fc6edc45
MA
23562002-01-20 Marc Autret <marc@gnu.org>
2357
2358 * src/files.c (compute_output_file_names): Fix
2359
5e5d5415
MA
23602002-01-20 Marc Autret <marc@gnu.org>
2361
2362 * tests/output.at: New test.
2363 * src/files.c (compute_base_names): Don't map extensions when
2364 the YACC flag is set, use defaults.
2365 Reported by Evgeny Stambulchik.
2366
44ea3fbd
MA
23672002-01-20 Marc Autret <marc@gnu.org>
2368
bb0146c2 2369 * src/system.h: Need to define __attribute__ away for non-GCC
44ea3fbd
MA
2370 compilers as well (i.e. the vendor C compiler).
2371 Suggested by Albert Chin-A-Young.
2372
338963d1
TVH
23732002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
2374
2375 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
2376 canonical definition.
2377 * src/system.h: Use the canonical definition for PARAMS (avoids
2378 a conflict with the macro from lib/hash.h).
2379
c57b2479
AD
23802002-01-11 Akim Demaille <akim@epita.fr>
2381
2382 * configure.in: Use AC_FUNC_STRNLEN.
d9e9746c 2383 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
c57b2479 2384
b85810ae
AD
23852002-01-09 Akim Demaille <akim@epita.fr>
2386
2387 * src/files.c, src/files.h (output_infix): New.
2388 (tab_extension): Remove.
2389 (compute_base_names): Compute the former, drop the latter.
2390 * src/output.c (prepare): Insert the muscles `output-infix', and
2391 `output-suffix'.
2392 * src/parse-skel.y (string, string.1): New.
2393 (section.header): Use it.
2394 (section.yacc): Remove.
2395 (prefix): Remove too.
2396 * src/scan-skel.l: Adjust.
2397 * src/bison.simple, src/bison.hairy: Adjust.
2398
cae60122
AD
23992002-01-09 Akim Demaille <akim@epita.fr>
2400
2401 * configure.in (WERROR_CFLAGS): Compute it.
2402 * src/Makefile.am (CFLAGS): Pass it.
2403 * tests/atlocal.in (CFLAGS): Idem.
2404 * src/files.c: Fix a few warnings.
2405 (get_extension_index): Remove, unused.
2406
ae404801
AD
24072002-01-08 Akim Demaille <akim@epita.fr>
2408
2409 * src/getargs.c (AS_FILE_NAME): New.
2410 (getargs): Use it to convert DOSish file names.
2411 * src/files.c (base_name): Rename as full_base_name to avoid
2412 clashes with `base_name ()'.
2413 (filename_split): New.
2414 (compute_base_names): N-th rewrite, using filename_split.
2415
22312b71
AD
24162002-01-08 Akim Demaille <akim@epita.fr>
2417
2418 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
2419 New, stolen from the Fileutils 4.1.
2420 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
2421 * configure.in: Check for the presence of memrchr, and of its
2422 prototype.
2423
a67cef01
TVH
24242002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
2425
2426 * lib/hash.h (__P): Added definition for this macro.
2427 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
2428 BUILT_SOURCES, to ensure they are generated first.
2429 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
2430 %error-verbose to allow bootstrapping with bison 1.30x.
2431
2b25d624
AD
24322002-01-06 Akim Demaille <akim@epita.fr>
2433
2434 * src/reader.c (parse_braces): Don't fetch the next char, the
2435 convention is to fetch on entry.
2436 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
2437 'switch' without a following semicolon.
2438 * tests/regression.at (braces parsing): New.
2439
3460813b
AD
24402002-01-06 Akim Demaille <akim@epita.fr>
2441
2442 Bison is dead wrong in its RR conflict reports.
2443
2444 * tests/torture.at (GNU Cim Grammar): New.
2445 * src/conflicts.c (count_rr_conflicts): Fix.
2446
73784c64
AD
24472002-01-06 Akim Demaille <akim@epita.fr>
2448
2449 Creating package.m4 from configure.ac causes too many problems.
2450
2451 * tests/Makefile.am (package.m4): Create it by hand,
2452 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
2453
25d81090
AD
24542002-01-06 Akim Demaille <akim@epita.fr>
2455
2456 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
2457 skeleton.h.
2458
a9b8959e
PE
24592002-01-04 Paul Eggert <eggert@twinsun.com>
2460
2461 * doc/bison.texinfo (Debugging):
2462 Remove YYSTDERR; it's no longer defined or used.
2463 Also, s/cstdio.h/cstdio/.
2464
25d81090
AD
24652002-01-03 Akim Demaille <akim@epita.fr>
2466
2467 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
2468
1109455c
AD
24692002-01-03 Akim Demaille <akim@epita.fr>
2470
2471 * src/parse-skel.y (process_skeleton): Don't bind the parser's
2472 tracing code to --trace, wait for a better --trace option, with
2473 args.
2474
7ea5e977
AD
24752002-01-03 Akim Demaille <akim@epita.fr>
2476
2477 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
2478 The ISO C++ standard is extremely clear about it: stderr is
2479 considered a macro, not a regular symbol (see table 94 `Header
2480 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
2481 Therefore std:: does not apply to it. It still does with fprintf.
2482 Also, s/cstdio.h/cstdio/.
2483
fab5b110
AD
24842002-01-03 Akim Demaille <akim@epita.fr>
2485
2486 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
2487 for non system headers.
2488
aed7fd9b
AD
24892002-01-02 Akim Demaille <akim@epita.fr>
2490
2491 Equip the skeleton chain with location tracking, runtime trace,
2492 pure parser and scanner.
2493
2494 * src/parse-skel.y: Request a pure parser, locations, and prefix
2495 renaming.
2496 (%union): Having several members with the same type does not help
2497 type mismatches, simplify.
2498 (YYPRINT, yyprint): New.
2499 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
2500 (skel_error): this.
2501 Handle locations.
2502 * src/scan-skel.l: Adjust to these changes.
2503 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
2504 (LOCATION_PRINT, skel_control_t): New.
2505
24fad99e
AD
25062001-12-30 Akim Demaille <akim@epita.fr>
2507
2508 * src/parse-skel.y: Get rid of the shift/reduce conflict:
2509 replace `gb' with BLANKS.
2510 * src/scan-skel.l: Adjust.
2511
a4b36db4
AD
25122001-12-30 Akim Demaille <akim@epita.fr>
2513
2514 * src/system.h: We don't need nor want bcopy.
2515 Throw away MS-DOS crap: we don't need getpid.
2516 * configure.in: We don't need strndup. It was even causing
2517 problems: because Flex includes the headers *before* us,
2518 _GNU_SOURCE is not defined by config.h, and therefore strndup was
2519 not visible.
2520 * lib/xstrndup.c: New.
2521 * src/scan-skel.l: Use it.
2522 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
2523 * src/parse-skel.y: Use %directives instead of #defines.
2524
1239777d
AD
25252001-12-30 Akim Demaille <akim@epita.fr>
2526
2527 * src/skeleton.h: New.
2528 * src/output.c (output_parser, output_master_parser): Remove, dead
2529 code.
2530 * src/output.h (get_lines_number, actions_output, guards_output)
2531 (token_definitions_output): Prototype them.
2532 * src/parse-skel.y: Add the license notice.
2533 Include output.h and skeleton.h.
2534 (process_skeleton): Returns void, and takes a single parameter.
2535 * src/scan-skel.l: Add the license notice.
2536 Include skeleton.h.
2537 Don't use %option yylineno: it seems that then Flex imagines
2538 REJECT has been used, and therefore it won't reallocate its
2539 buffers (which makes no other sense to me than a bug). It results
2540 in warnings for `unused: yy_flex_realloc'.
2541
9b3add5b
RA
25422001-12-30 Robert Anisko <robert.anisko@epita.fr>
2543
2544 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
2545 (MUSCLE_INSERT_PREFIX): ...to there.
2546 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
2547 (MUSCLE_INSERT_PREFIX): Move from here...
2548
2549 * src/bison.hairy: Add a section directive. Put braces around muscle
2550 names. This parser skeleton is still broken, but Bison should not
2551 choke on a bad muscle 'syntax'.
2552 * src/bison.simple: Add a section directive. Put braces around muscle
2553 names.
2554
2555 * src/files.h (strsuffix, stringappend): Add declarations.
2556 (tab_extension): Add declaration.
2557 (short_base_name): Add declaration.
2558
2559 * src/files.c (strsuffix, stringappend): No longer static. These
2560 functions are used in the skeleton parser.
2561 (tab_extension): New.
2562 (compute_base_names): Use the computations done in this function
fab5b110 2563 to guess if the generated parsers should have '.tab' in their
9b3add5b
RA
2564 names.
2565 (short_base_name): No longer static.
2566
2567 * src/output.c (output_skeleton): New.
2568 (output): Disable call to output_master_parser, and give a try to
2569 a new skeleton handling system.
2570 (guards_output, actions_output): No longer static.
2571 (token_definitions_output, get_lines_number): No longer static.
2572
2573 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
2574
fab5b110 2575 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
9b3add5b
RA
2576 parse-skel.y.
2577
2578 * src/parse-skel.y: New file.
2579 * src/scan-skel.l: New file.
2580
b5b61c61
AD
25812001-12-29 Akim Demaille <akim@epita.fr>
2582
2583 %name-prefix is broken.
2584
2585 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
2586 Adjust all dependencies.
2587 * tests/headers.at (export YYLTYPE): Strengthen this test: use
2588 %name-prefix.
2589
2590 Renaming yylval but not yylloc is not consistent. Now we do.
2591
2592 * src/bison.simple: Prefix yylloc if used.
2593 * doc/bison.texinfo (Decl Summary): Document that.
2594
8c9a50be
AD
25952001-12-29 Akim Demaille <akim@epita.fr>
2596
2597 * doc/bison.texinfo: Promote `%long-directive' over
2598 `%long_directive'.
2599 Remove all references to fixed-output-files, yacc is enough.
2600
d99361e6
AD
26012001-12-29 Akim Demaille <akim@epita.fr>
2602
2603 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
2604 user prologue. These are defaults.
2605 * tests/actions.at (Mid-rule actions): Make sure the user can
2606 define YYDEBUG and YYERROR_VERBOSE.
2607
b9cecb91
AD
26082001-12-29 Akim Demaille <akim@epita.fr>
2609
2610 * src/output.c (header_output): Don't forget to export YYLTYPE and
2611 yylloc.
2612 * tests/headers.at (export YYLTYPE): New, make sure it does.
2613 * tests/regression.at (%union and --defines, Invalid CPP headers):
2614 Move to...
2615 * tests/headers.at: here.
2616
aea13e97
AD
26172001-12-29 Akim Demaille <akim@epita.fr>
2618
2619 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
2620
931394cb
AD
26212001-12-29 Akim Demaille <akim@epita.fr>
2622
2623 * tests/actions.at (Mid-rule actions): Output on a single line
2624 instead of several.
2625
704a47c4
AD
26262001-12-29 Akim Demaille <akim@epita.fr>
2627
2628 * doc/bison.texinfo: Formatting changes.
2629
091e20bb
AD
26302001-12-29 Akim Demaille <akim@epita.fr>
2631
2632 Don't store the token defs in a muscle, just be ready to output it
2633 on command. Now possible via `symbols'. Fixes a memory leak.
2634
2635 * src/output.c (token_definitions_output): New.
2636 (output_parser, header_output): Use it.
2637 * src/reader.c (symbols_save): Remove.
2638
cce71710
AD
26392001-12-29 Akim Demaille <akim@epita.fr>
2640
2641 * src/bison.simple: Do not provide a default for YYSTYPE and
2642 YYLTYPE before the user's prologue. Otherwise it's hardly... a
2643 default.
2644
82c035a8
AD
26452001-12-29 Akim Demaille <akim@epita.fr>
2646
2647 Mid-rule actions are simply... ignored!
2648
2649 * src/reader.c (readgram): Be sure to attach mid-rule actions to
2650 the empty-rule associated to the dummy symbol, not to the host
2651 rule.
2652 * tests/actions.at (Mid-rule actions): New.
2653
8419d367
AD
26542001-12-29 Akim Demaille <akim@epita.fr>
2655
2656 Memory leak.
2657
2658 * src/reader.c (reader): Free grammar.
2659
375d5806
AD
26602001-12-29 Akim Demaille <akim@epita.fr>
2661
2662 Memory leak.
2663
2664 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
2665 since it allocates it for each state, although only one is needed.
2666 (allocate_storage): Do it here.
2667
f51cb8ff
AD
26682001-12-29 Akim Demaille <akim@epita.fr>
2669
2670 * src/options.h, src/options.c (create_long_option_table): Rename
2671 as...
2672 (long_option_table_new): this, with a clearer prototype.
2673 (percent_table): Remove, unused,
2674 * src/getargs.c (getargs): Adjust.
2675
29e88316
AD
26762001-12-29 Akim Demaille <akim@epita.fr>
2677
2678 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
2679 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
2680 as states.
2681
b9f71f19
AD
26822001-12-29 Akim Demaille <akim@epita.fr>
2683
2684 * src/lalr.c (build_relations): Rename `states' as `states1'.
2685 Sorry, I don't understand exactly what it is, no better name...
2686
1a2b5d37
AD
26872001-12-29 Akim Demaille <akim@epita.fr>
2688
2689 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
2690 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
2691 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
2692 as rules.
2693
1cca533e
AD
26942001-12-29 Akim Demaille <akim@epita.fr>
2695
2696 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
2697 ago.
2698
c03ae966
AD
26992001-12-29 Akim Demaille <akim@epita.fr>
2700
2701 * src/reader.c, src/reader.h (user_toknums): Remove.
2702 Adjust all users to use symbols[i]->user_token_number.
2703
5a670b1e
AD
27042001-12-29 Akim Demaille <akim@epita.fr>
2705
2706 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
2707 Adjust all users to use symbols[i]->prec or ->assoc.
2708
ad949da9
AD
27092001-12-29 Akim Demaille <akim@epita.fr>
2710
2711 * src/reader.c, src/reader.h (tags): Remove.
2712 Adjust all users to use symbols[i]->tag.
2713
0e78e603
AD
27142001-12-29 Akim Demaille <akim@epita.fr>
2715
2716 * src/gram.h, src/gram.c (symbols): New, similar to state_table
2717 and rule_table.
2718 * src/reader.c (packsymbols): Fill this table.
2719 Drop sprec.
2720 * src/conflicts.c (resolve_sr_conflict): Adjust.
2721 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
2722 single table.
2723 Use symbols[i]->tag instead of tags[i].
2724
213e640e
AD
27252001-12-29 Akim Demaille <akim@epita.fr>
2726
2727 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
2728 In addition, put a comment in there, to replace...
2729 * tests/regression.at (%union and C comments): Remove.
2730
e7b8bef1
AD
27312001-12-29 Akim Demaille <akim@epita.fr>
2732
2733 * tests/regression.at (Web2c Actions): Blindly move the actual
2734 output as expected output. The contents *seem* right to me, but I
2735 can't pretend reading perfectly parser tables... Nonetheless, all
2736 the other tests pass correctly, the table look OK, even though the
2737 presence of `$axiom' is to be noted: AFAICS it is useless (but
2738 harmless).
2739
b68e7744
AD
27402001-12-29 Akim Demaille <akim@epita.fr>
2741
2742 * src/reader.c (readgram): Don't add the rule 0 if there were no
2743 rules read. In other words, add it _after_ having performed
2744 grammar sanity checks.
2745 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
2746
78d5bae9
AD
27472001-12-29 Akim Demaille <akim@epita.fr>
2748
2749 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
2750 visible, and some states have now a different number.
2751
ff442794
AD
27522001-12-29 Akim Demaille <akim@epita.fr>
2753
2754 * src/reader.c (readgram): Bind the initial rule's lineno to that
2755 of the first rule.
2756 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
2757 (Solved SR Conflicts): Adjust rule 0's line number.
2758
610ab194
AD
27592001-12-29 Akim Demaille <akim@epita.fr>
2760
2761 Fix the `GAWK Grammar' failure.
2762
2763 * src/LR0.c (final_state): Initialize to -1 so that we do compute
2764 the reductions of the first state which was mistakenly confused
2765 with the final state because precisely final_state was initialized
2766 to 0.
2767 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
2768 now noticed by Bison.
2769 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
2770 have a reduction on $default.
2771
29d29c8f
AD
27722001-12-29 Akim Demaille <akim@epita.fr>
2773
2774 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
2775 rule line numbers.
2776 * src/closure.c (print_closure): Likewise.
2777 * src/derives.c (print_derives): Likewise.
2778 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
2779 now.
2780
7c6b64d0
AD
27812001-12-29 Akim Demaille <akim@epita.fr>
2782
2783 * src/lalr.c (lookaheads_print): New.
2784 (lalr): Call it when --trace-flag.
2785 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
2786 are dumped.
2787
3d4daee3
AD
27882001-12-29 Akim Demaille <akim@epita.fr>
2789
2790 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
2791 when walking through ritem, even via rule->rhs.
2792 * src/reduce.c (dump_grammar, useful_production, reduce_output)
2793 (useful_production, useless_nonterminals): Likewise.
2794 (reduce_grammar_tables): Likewise, plus update nritems.
2795 * src/nullable.c (set_nullable): Likewise.
2796 * src/lalr.c (build_relations): Likewise.
2797 * tests/sets.at (Nullable): Adjust.
2798 Fortunately, now, the $axiom is no longer nullable.
2799
9e7f6bbd
AD
28002001-12-29 Akim Demaille <akim@epita.fr>
2801
2802 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
2803 the 0-sentinel.
2804 * src/gram.c (ritem_longest_rhs): Likewise.
2805 * src/reduce.c (nonterminals_reduce): Likewise.
2806 * src/print_graph.c (print_graph): Likewise.
2807 * src/output.c (output_rule_data): Likewise.
2808 * src/nullable.c (set_nullable): Likewise.
2809
255ef638
AD
28102001-12-29 Akim Demaille <akim@epita.fr>
2811
2812 * src/output.c: Comment changes.
2813
0d8a7363
AD
28142001-12-27 Paul Eggert <eggert@twinsun.com>
2815
2816 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
2817 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
2818 Sparc, as they were causing more porting problems than the
2819 (minor) performance improvement was worth.
2820
2821 Also, catch up with 1.31's YYSTD.
2822
3db472b9
AD
28232001-12-27 Akim Demaille <akim@epita.fr>
2824
2825 * src/output.c (output_gram): Rely on nritems, not the
2826 0-sentinel. See below.
2827 Use -1 as separator, not 0.
2828 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
2829 Rely on -1 as separator in yyrhs, instead of 0.
2830 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
2831 twice `Now at end of input', therefore there are two lines less to
2832 expect.
2833
b365aa05
AD
28342001-12-27 Akim Demaille <akim@epita.fr>
2835
2836 * tests/regression.at (Unresolved SR Conflicts):
2837 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
2838 below.
2839
30171f79
AD
28402001-12-27 Akim Demaille <akim@epita.fr>
2841
2842 * src/LR0.c (new_state): Recognize the final state by the fact it
2843 is reached by eoftoken.
2844 (insert_start_shifting_state, insert_eof_shifting_state)
2845 (insert_accepting_state, augment_automaton): Remove, since now
2846 these states are automatically computed from the initial state.
2847 (generate_states): Adjust.
2848 * src/print.c: When reporting a rule number to the user, substract
2849 1, so that the axiom rule is rule 0, and the first user rule is 1.
2850 * src/reduce.c: Likewise.
2851 * src/print_graph.c (print_core): For the time being, just as for
2852 the report, depend upon --trace-flags to dump the full set of
2853 items.
2854 * src/reader.c (readgram): Once the grammar read, insert the rule
2855 0: `$axiom: START-SYMBOL $'.
2856 * tests/set.at: Adjust: rule 0 is now displayed, and since the
2857 number of the states has changed (the final state is no longer
2858 necessarily the last), catch up.
2859
75142d45
AD
28602001-12-27 Akim Demaille <akim@epita.fr>
2861
2862 Try to make the use of the eoftoken valid. Given that its value
2863 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
2864 is used instead of > 0 where appropriate, (ii), depend upon nritems
2865 instead of the 0-sentinel.
2866
2867 * src/gram.h, src/gram.c (nritems): New.
2868 Expected to be duplication of nitems, but for the time being...
2869 * src/reader.c (packgram): Assert nritems and nitems are equal.
2870 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
2871 * src/closure.c (print_closure, print_fderives): Likewise.
2872 * src/gram.c (ritem_print): Likewise.
2873 * src/print.c (print_core, print_grammar): Likewise.
2874 * src/print_graph.c: Likewise.
2875
b7c49edf
AD
28762001-12-27 Akim Demaille <akim@epita.fr>
2877
2878 * src/main.c (main): If there are complains after grammar
2879 reductions, then output the report anyway if requested, then die.
2880 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
2881 * src/reader.c (eoftoken): New.
2882 (parse_token_decl): If the token being defined has value `0', it
2883 is the eoftoken.
2884 (packsymbols): No longer hack `tags' to insert `$' by hand.
2885 Be sure to preserve the value of the eoftoken.
2886 (reader): Make sure eoftoken is defined.
2887 Initialize nsyms to 0: now eoftoken is created just like the others.
2888 * src/print.c (print_grammar): Don't special case the eof token.
2889 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
2890 lie anyway, albeit pleasant.
2891 * tests/calc.at: Exercise error messages with eoftoken.
2892 Change the grammar so that empty input is invalid.
2893 Adjust expectations.
2894 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
2895
ec2da99f
AD
28962001-12-27 Akim Demaille <akim@epita.fr>
2897
2898 * configure.in: Check the protos of strchr ans strspn.
2899 Replace strchr if needed.
2900 * src/system.h: Provide the protos of strchr, strspn and memchr if
2901 missing.
2902 * lib/strchr.c: New.
2903 * src/reader.c (symbols_save): Use strchr.
2904
8adfa272
AD
29052001-12-27 Akim Demaille <akim@epita.fr>
2906
2907 * src/print.c, src/print_graph.c (escape): New.
2908 Use it to quote the TAGS outputs.
2909 * src/print_graph.c (print_state): Now errors are in red, and
2910 reductions in green.
2911 Prefer high to wide: output the state number on a line of its own.
2912
80dac38c
AD
29132001-12-27 Akim Demaille <akim@epita.fr>
2914
2915 * src/state.h, src/state.c (reductions_new): New.
2916 * src/LR0.c (set_state_table): Let all the states have a
2917 `reductions', even if reduced to 0.
2918 (save_reductions): Adjust.
2919 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
2920 * src/print.c (print_reductions, print_actions): Adjust.
2921 * src/output.c (action_row): Adjust.
2922
2cec70b9
AD
29232001-12-27 Akim Demaille <akim@epita.fr>
2924
2925 * src/state.h, src/state.c (errs_new, errs_dup): New.
2926 * src/LR0.c (set_state_table): Let all the states have an errs,
2927 even if reduced to 0.
2928 * src/print.c (print_errs, print_reductions): Adjust.
2929 * src/output.c (output_actions, action_row): Adjust.
2930 * src/conflicts.c (resolve_sr_conflict): Adjust.
2931
13ca549a
AD
29322001-12-27 Akim Demaille <akim@epita.fr>
2933
2934 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
2935
5092aba5
AD
29362001-12-27 Akim Demaille <akim@epita.fr>
2937
2938 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
2939 * src/print.c: here.
2940 (lookaheadset, shiftset): New, used as additional storage by
2941 print_reductions.
2942 (print_results): Adjust.
2943 (print_shifts, print_gotos, print_errs): New, extracted from...
2944 (print_actions): here.
2945 * src/print_graph.c (print_actions): Remove dead code.
2946
11e2beca
AD
29472001-12-27 Akim Demaille <akim@epita.fr>
2948
2949 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
2950 `$n' and `@n'.
2951
dac3c910
AD
29522001-12-27 Akim Demaille <akim@epita.fr>
2953
2954 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
2955 (build_relations): Adjust.
2956
d0b0fefa
AD
29572001-12-27 Akim Demaille <akim@epita.fr>
2958
2959 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
2960 duplication.
2961
adc8c848
AD
29622001-12-27 Akim Demaille <akim@epita.fr>
2963
2964 * src/reader.c (packgram): Catch nitems overflows.
2965
14d293ac
AD
29662001-12-27 Akim Demaille <akim@epita.fr>
2967
2968 * src/files.c, src/files.h (guard_obstack): Remove.
2969 * src/output.c (output): Adjust.
2970 * src/reader.c (parse_braces): New, factoring...
2971 (copy_action, copy_guard): these two which are renamed as...
2972 (parse_action, parse_guard): these.
2973 As a voluntary consequence, using braces around guards is now
2974 mandatory.
2975
f499b062
AD
29762001-12-27 Akim Demaille <akim@epita.fr>
2977
2978 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
2979 * src/reader.c (symbol_list): `guard' and `guard_line' are new
2980 members.
2981 (symbol_list_new): Adjust.
2982 (copy_action): action_line is the first line, not the last.
2983 (copy_guard): Just as for actions, store the `action' only, not
2984 the switch/case/break flesh.
2985 Don't parse the user action that might follow the guard, let...
2986 (readgram): do it, i.e., now, there can be an action after a
2987 guard.
2988 In other words the guard is just explicitly optional.
2989 (packgram): Adjust.
2990 * src/output.c (guards_output): New.
2991 (output_parser): Call it when needed.
2992 (output): Also free the guard and attrs obstacks.
2993 * src/files.c, src/files.h (obstack_save): Remove.
2994 (output_files): Remove.
2995 As a result, if one needs the former `.act' file, using an
2996 appropriate skeleton which requires actions and guards is now
2997 required.
2998 * src/main.c (main): Adjust.
2999 * tests/semantic.at: New.
3000 * tests/regression.at: Use `input.y' as input file name.
3001 Avoid 8+3 problems by requiring input.c when the test needs the
3002 parser.
3003
d945f5cd
AD
30042001-12-27 Akim Demaille <akim@epita.fr>
3005
3006 * src/reader.c (symbol_list_new): Be sure to initialize all the
3007 fields.
3008
d200e455
AD
30092001-12-27 Akim Demaille <akim@epita.fr>
3010
3011 All the hacks using a final pseudo state are now useless.
3012
3013 * src/LR0.c (set_state_table): state_table holds exactly nstates.
3014 * src/lalr.c (nLA): New.
3015 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
3016 instead of lookaheadsp from the pseudo state (nstate + 1).
3017
f9507c28
AD
30182001-12-27 Akim Demaille <akim@epita.fr>
3019
3020 * src/output.c (action_row, token_actions): Use a state_t instead
3021 of a integer, and nlookaheads instead of the following state's
3022 lookaheadsp.
3023
065fbd27
AD
30242001-12-27 Akim Demaille <akim@epita.fr>
3025
3026 * src/conflicts.c (log_resolution, flush_shift)
3027 (resolve_sr_conflict, set_conflicts, solve_conflicts)
3028 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
3029 (conflicts_print, print_reductions): Use a state_t instead of an
3030 integer when referring to a state.
3031 As much as possible, depend upon nlookaheads, instead of the
3032 `lookaheadsp' member of the following state (since lookaheads of
3033 successive states are successive, the difference between state n + 1
3034 and n served as the number of lookaheads for state n).
3035 * src/lalr.c (add_lookback_edge): Likewise.
3036 * src/print.c (print_core, print_actions, print_state)
3037 (print_results): Likewise.
3038 * src/print_graph.c (print_core, print_actions, print_state)
3039 (print_graph): Likewise.
3040 * src/conflicts.h: Adjust.
3041
1b177bd7
AD
30422001-12-27 Akim Demaille <akim@epita.fr>
3043
3044 * src/bison.hairy: Formatting/comment changes.
3045 ANSIfy.
3046 Remove `register' indications.
3047 Add plenty of `static'.
3048
7742ddeb
AD
30492001-12-27 Akim Demaille <akim@epita.fr>
3050
3051 * src/output.c (prepare): Drop the muscle `ntbase' which
3052 duplicates ntokens.
3053 * src/bison.simple: Formatting/comment changes.
3054 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
3055 is an undocumented synonym.
3056
1fa14068
AD
30572001-12-22 Akim Demaille <akim@epita.fr>
3058
3059 * src/output.c (output_table_data): Change the prototype to use
3060 `int' for array ranges: some invocations do pass an int, not a
3061 short.
3062 Reported by Wayne Green.
3063
b9752825
AD
30642001-12-22 Akim Demaille <akim@epita.fr>
3065
3066 Some actions of web2c.y are improperly triggered.
3067 Reported by Mike Castle.
3068
3069 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
3070 * tests/regression.at (Web2c): Rename as...
3071 (Web2c Report): this.
3072 (Web2c Actions): New.
3073
776209d6
AD
30742001-12-22 Akim Demaille <akim@epita.fr>
3075
3076 Reductions in web2c.y are improperly reported.
3077 Reported by Mike Castle.
3078
3079 * src/conflicts.c (print_reductions): Fix.
3080 * tests/regression.at (Web2c): New.
3081
275fc3ad
AD
30822001-12-18 Akim Demaille <akim@epita.fr>
3083
3084 Some host fail on `assert (!"foo")', which expands to
3085 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
3086 Reported by Nelson Beebee.
3087
3088 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
3089 `#define it_succeeded 0' and `assert (it_succeeded)'.
3090
897668ee
MA
30912001-12-17 Marc Autret <autret_m@epita.fr>
3092
3093 * src/bison.simple: Don't hard code the skeleton line and filename.
3094 * src/output.c (output_parser): Rename 'line' as 'output_line'.
3095 New line counter 'skeleton_line' (skeleton-line muscle).
3096
ab3399e0
PE
30972001-12-17 Paul Eggert <eggert@twinsun.com>
3098
3099 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
3100 YYDEBUG must be defined to a nonzero value.
3101
3102 * src/bison.simple (yytname): Do not assume that the user defines
3103 YYDEBUG to a properly parenthesized expression.
3104
3877f72b
AD
31052001-12-17 Akim Demaille <akim@epita.fr>
3106
3107 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
3108 nlookaheads is a new member.
3109 Adjust all users.
3110 * src/lalr.h (nlookaheads): Remove this orphan declaration.
3111 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
3112 state.
776209d6 3113
331dbc1b
AD
31142001-12-17 Akim Demaille <akim@epita.fr>
3115
3116 * src/files.h, src/files.c (open_files, close_files): Remove.
3117 * src/main.c (main): Don't open/close files, nor invoke lex_free,
3118 let...
3119 * src/reader.c (reader): Do it.
776209d6 3120
be750e4c
AD
31212001-12-17 Akim Demaille <akim@epita.fr>
3122
3123 * src/conflicts.c (print_reductions): Formatting changes.
776209d6 3124
709ae8c6
AD
31252001-12-17 Akim Demaille <akim@epita.fr>
3126
3127 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
3128 (flush_reduce): New.
3129 (resolve_sr_conflict): Adjust.
776209d6 3130
f87685c3
AD
31312001-12-17 Akim Demaille <akim@epita.fr>
3132
3133 * src/output.c (output_obstack): Be static and rename as...
3134 (format_obstack): this, to avoid any confusion with files.c's
3135 output_obstack.
3136 * src/reader.h (muscle_obstack): Move to...
3137 * src/output.h: here, since it's defined in output.c.
3138
837491d8
AD
31392001-12-17 Akim Demaille <akim@epita.fr>
3140
3141 * src/output.c (action_row, save_column, default_goto)
3142 (sort_actions, matching_state, pack_vector): Better variable
3143 locality.
3144
796d61fb
AD
31452001-12-17 Akim Demaille <akim@epita.fr>
3146
3147 * src/output.c: Various formatting changes.
776209d6 3148
64d15509
AD
31492001-12-17 Akim Demaille <akim@epita.fr>
3150
3151 * src/files.c (output_files): Free the output_obstack.
3152 * src/main.c (main): Call print and print_graph conditionally.
3153 * src/print.c (print): Work unconditionally.
3154 * src/print_graph.c (print_graph): Work unconditionally.
3155 * src/conflicts.c (log_resolution): Output only if verbose_flag.
3156
fbc8ecb7
MA
31572001-12-16 Marc Autret <autret_m@epita.fr>
3158
3159 * src/output.c (actions_output): Fix. When we use %no-lines,
3160 there is one less line per action.
3161
f0440388
MA
31622001-12-16 Marc Autret <autret_m@epita.fr>
3163
3164 * src/bison.simple: Remove a useless #line directive.
3165 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
3166 * src/output.c (get_lines_number): New.
776209d6 3167 (output_parser): Adjust, now takes care about the lines of a
f0440388
MA
3168 output muscles.
3169 Fix line numbering.
3170 (actions_output): Computes the number of lines taken by actions.
3171 (output_master_parser): Insert new skeleton which is the name of
3172 the output parser file name.
3173
a79986b8
MA
31742001-12-15 Marc Autret <autret_m@epita.fr>
3175
3176 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
3177
4ec8e00f
MA
31782001-12-15 Marc Autret <autret_m@epita.fr>
3179
3180 * src/output.c (output_gram): Keep track of the hairy one.
3181
1a4648ff
AD
31822001-12-15 Akim Demaille <akim@epita.fr>
3183
3184 Make `make distcheck' work.
3185
3186 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
3187 system.h which uses libgettext.h.
3188
9c2c67e6
AD
31892001-12-15 Akim Demaille <akim@epita.fr>
3190
3191 * src/nullable.c (set_nullable): Useless rules must be skipped,
3192 otherwise, since we range over their symbols, we might look at a
3193 nonterminal which no longer ``exists'', i.e., it is not counted in
3194 `nvars', hence we overflow our arrays.
3195
93ede233
AD
31962001-12-15 Akim Demaille <akim@epita.fr>
3197
3198 The header can also be produced directly, without any obstack!
3199 Yahoo!
3200
3201 * src/files.c, src/files.h (defines_obstack): Remove.
3202 (compute_header_macro): Global.
3203 (defines_obstack_save): Remove.
3204 * src/reader.c (parse_union_decl): No longer output to
3205 defines_obstack: its content can be found in the `stype' muscle
3206 anyway.
3207 (output_token_translations): Merge into...
3208 (symbols_output): this.
3209 Rename as...
3210 (symbols_save): this.
3211 (reader): Adjust.
3212 * src/output.c (header_output): New.
3213 (output): Call it.
3214
2666f928
AD
32152001-12-15 Akim Demaille <akim@epita.fr>
3216
3217 * src/reader.c (parse_union_decl): Instead of handling two obstack
3218 simultaneously, use one to define the `stype' muscle, and use the
3219 value of the latter to fill defines_obstack.
3220 (copy_comment): Remove.
3221 (copy_comment2): Work for a single obstack.
3222 Rename as...
3223 (copy_comment): this.
3224
428046f8
AD
32252001-12-15 Akim Demaille <akim@epita.fr>
3226
3227 * src/lex.c, src/lex.h (xgetc): No longer static.
3228 * src/reader.c (parse_union_decl): Revamp.
3229
ea52d706
AD
32302001-12-15 Akim Demaille <akim@epita.fr>
3231
3232 Still making progress in separating Bison into (i) input, (ii)
3233 process, (iii) output: now we can directly output the parser file
3234 without using table_obstack at all.
3235
3236 * src/files.c, src/files.h (table_obstack): Bye bye.
3237 (parser_file_name): New.
3238 * src/files.c (compute_output_file_names): Compute it.
3239 * src/output.c (actions_output, output_parser)
3240 (output_master_parser): To a file instead of an obstack.
3241
3f96f4dc
AD
32422001-12-15 Akim Demaille <akim@epita.fr>
3243
3244 Attach actions to rules, instead of pre-outputting them to
3245 actions_obstack.
3246
3247 * src/gram.h (rule_t): action and action_line are new members.
3248 * src/reader.c (symbol_list): Likewise.
3249 (copy_action): Save the actions within the rule.
3250 (packgram): Save them in rule_table.
3251 * src/output.c (actions_output): New.
3252 (output_parser): Use it on `%%actions'.
3253 (output_rule_data): Don't free rule_table.
3254 (output): Do it.
3255 (prepare): Don't save the `action' muscle.
3256 * src/bison.simple: s/%%action/%%actions/.
3257
51576fb3
AD
32582001-12-15 Akim Demaille <akim@epita.fr>
3259
3260 * src/reader.c (copy_action): When --yacc, don't append a `;'
3261 to the user action: let it fail if lacking.
dee049eb 3262 Suggested by Arnold Robbins and Tom Tromey.
51576fb3 3263
2648a72d
AD
32642001-12-14 Akim Demaille <akim@epita.fr>
3265
3266 * src/lex.c (literalchar): Simply return the char you decoded, non
3267 longer mess around with obstacks and int pointers.
3268 Adjust all callers.
3269
92790e5b
AD
32702001-12-14 Akim Demaille <akim@epita.fr>
3271
3272 * src/lex.c (literalchar): Don't escape the special characters,
3273 just decode them, and keep them as char (before, eol was output as
3274 the 2 char string `\n' etc.).
3275 * src/output.c (output_rule_data): Use quotearg to output the
3276 token strings.
3277
927c1557
PE
32782001-12-13 Paul Eggert <eggert@twinsun.com>
3279
3280 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
3281 Do not infringe on the global user namespace when using C++.
3282 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
3283 All uses of `fprintf' and `stderr' changed.
3284
3285 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
3286
ed8e1f68
AD
32872001-12-13 Akim Demaille <akim@epita.fr>
3288
3289 The computation of nullable is broken: it doesn't handle empty
3290 RHS's properly.
3291
3292 * tests/torture.at (GNU AWK Grammar): New.
3293 * tests/sets.at (Nullable): New.
3294 * src/nullable.c (set_nullable): Instead of blindly looping over
3295 `ritems', loop over the rules, and then over their rhs's.
3296
3297 Work around Autotest bugs.
3298
3299 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
3300 frame, because Autotest understand lines starting with a `+' as
3301 traces from the shell. Then, they are not processed properly.
3302 Admittedly an Autotest bug, but we don't have time to wait for
3303 Autotest to catch up.
3304 * tests/regression.at (Broken Closure): Adjust to the new table
3305 frames.
3306 Move to...
3307 * tests/sets.at: here.
3308
cb581495
AD
33092001-12-13 Akim Demaille <akim@epita.fr>
3310
3311 * src/closure.c (closure): Use nrules instead of playing tricks
3312 with BITS_PER_WORD.
3313
2e729273
AD
33142001-12-13 Akim Demaille <akim@epita.fr>
3315
3316 * src/print.c (print_actions): Output the handling of `$' as the
3317 traces do: shifting the token EOF. Before EOF was treated as a
3318 nonterminal.
3319 * tests/regression.at: Adjust some tests.
3320 * src/print_graph.c (print_core): Complete the set of items via
3321 closure. The next-to-final and final states are still unsatisfying,
3322 but that's to be addressed elsewhere.
3323 No longer output the rule numbers, but do output the state number.
3324 A single loop for the shifts + gotos is enough, but picked a
3325 distinct color for each.
3326 (print_graph): Initialize and finalize closure.
3327
107f7dfb
AD
33282001-12-13 Akim Demaille <akim@epita.fr>
3329
3330 * src/reader.c (readgram): Remove dead code, an strip useless
3331 braces.
3332 (get_type): Remove, unused.
3333
9b53a24f
AD
33342001-12-12 Akim Demaille <akim@epita.fr>
3335
3336 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
3337 on that of lib/error.c.
3338
dbfb6dcd
AD
33392001-12-12 Akim Demaille <akim@epita.fr>
3340
3341 Some hosts don't like `/' in includes.
3342
3343 * src/system.h: Include libgettext.h without qualifying the path.
3344 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
3345 $(top_srcdir).
3346
c25fb648
MA
33472001-12-11 Marc Autret <autret_m@epita.fr>
3348
3349 * src/output.c (output_parser): Remove useless muscle.
3350
710ddc4f
MA
33512001-12-11 Marc Autret <autret_m@epita.fr>
3352
3353 * src/bison.simple: Remove #line just before %%epilogue. It
3354 is now handled in ...
3355 * src/reader.c (read_additionnal_code): Add the output of a
3356 #line for the epilogue.
3357
e83d80b8
MA
33582001-12-10 Marc Autret <autret_m@epita.fr>
3359
927c1557 3360 * src/reader.c (copy_definition): Re-use CPP-outed code which
e83d80b8
MA
3361 replace precedent remove.
3362 * src/bison.simple: Remove #line before %%prologue because
3363 %%input-line is wrong at this time.
3364
971d5158
MA
33652001-12-10 Marc Autret <autret_m@epita.fr>
3366
3367 * src/reader.c (symbols_output): Clean up.
927c1557 3368 * src/output.c (output_gram, output): Clean up.
971d5158 3369
5edafffd
AD
33702001-12-10 Akim Demaille <akim@epita.fr>
3371
3372 * src/lalr.c (initialize_lookaheads): New. Extracted from...
3373 * src/LR0.c (set_state_table): here.
3374 * src/lalr.c (lalr): Call it.
3375
0279f8e9
AD
33762001-12-10 Akim Demaille <akim@epita.fr>
3377
3378 * src/state.h (shifts): Remove the `number' member: shifts are
3379 attached to state, hence no longer need to be labelled with a
3380 state number.
3381
190c4f5f
AD
33822001-12-10 Akim Demaille <akim@epita.fr>
3383
3384 Now that states have a complete set of members, the linked list of
3385 shifts is useless: just fill directly the state's shifts member.
3386
3387 * src/state.h (shifts): Remove the `next' member.
3388 * src/LR0.c (first_state, last_state): Remove.
3389 Adjust the callers.
3390 (augment_automaton): Don't look for the shifts that must be added
3391 a shift on EOF: it is those of the state we looked for! But now,
3392 since shifts are attached, it is no longer needed to looking
3393 merely by its id: its number.
3394
2a73b93d
AD
33952001-12-10 Akim Demaille <akim@epita.fr>
3396
3397 * src/LR0.c (augment_automaton): Better variable locality.
3398 Remove an impossible branch: if there is a state corresponding to
3399 the start symbol being shifted, then there is shift for the start
3400 symbol from the initial state.
3401
74392f6a
AD
34022001-12-10 Akim Demaille <akim@epita.fr>
3403
3404 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
3405 only when appropriate: when insert_start_shifting_state' is not
3406 invoked.
3407 * tests/regression.at (Rule Line Numbers): Adjust.
3408
37c82725
AD
34092001-12-10 Akim Demaille <akim@epita.fr>
3410
3411 * src/LR0.c (augment_automaton): Now that all states have shifts,
3412 merge the two cases addition shifts to the initial state.
3413
6a164e0c
AD
34142001-12-10 Akim Demaille <akim@epita.fr>
3415
3416 * src/lalr.c (set_state_table): Move to...
3417 * src/LR0.c: here.
3418 * src/lalr.c (lalr): Don't call it...
3419 * src/LR0.c (generate_states): do it.
3420 * src/LR0.h (first_state): Remove, only the table is used.
3421
7215de24
AD
34222001-12-10 Akim Demaille <akim@epita.fr>
3423
3424 * src/LR0.h (first_shift, first_reduction): Remove.
3425 * src/lalr.c: Don't use first_shift: find shifts through the
3426 states.
3427
80e25d4d
AD
34282001-12-10 Akim Demaille <akim@epita.fr>
3429
3430 * src/LR0.c: Attach shifts to states as soon as they are
3431 computed.
3432 * src/lalr.c (set_state_table): Instead of assigning shifts to
3433 state, just assert that the mapping was properly done.
3434
0ab3728b
AD
34352001-12-10 Akim Demaille <akim@epita.fr>
3436
3437 * src/LR0.c (insert_start_shift): Rename as...
3438 (insert_start_shifting_state): this.
3439 (insert_eof_shifting_state, insert_accepting_state): New.
3440 (augment_automaton): Adjust.
3441 Better locality of the variables.
3442 When looking if the start_symbol is shifted from the initial
3443 state, using `while (... symbol != start_symbol ...)' sounds
3444 better than `while (... symbol < start_symbol ...)': If fail
3445 to see how the order between symbols could be relevant!
3446
78af9bbc
AD
34472001-12-10 Akim Demaille <akim@epita.fr>
3448
3449 * src/getargs.h: Don't declare `spec_name_prefix' and
3450 `spec_file_prefix', declared by src/files.h.
3451 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
3452 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
3453 * src/output.c (prepare): Adjust.
3454 * src/reader.c (symbols_output): Likewise.
3455 * src/vmsgetargs.c: Vaguely adjust, but who cares?
3456
bdef2a41
AD
34572001-12-10 Akim Demaille <akim@epita.fr>
3458
3459 * src/muscle_tab.c (muscle_init): NULL is a better default than
3460 `"0"'.
3461
3735969c
AD
34622001-12-10 Akim Demaille <akim@epita.fr>
3463
3464 * src/reader.c (reader): Calling symbols_output once is enough.
3465
49701457
AD
34662001-12-10 Akim Demaille <akim@epita.fr>
3467
3468 Now that states have a complete set of members, the linked list of
3469 reductions is useless: just fill directly the state's reductions
3470 member.
3471
3472 * src/state.h (struct reductions): Remove member `number' and
3473 `next'.
3474 * src/LR0.c (first_reduction, last_reduction): Remove.
3475 (save_reductions): Don't link the new reductions, store them in
3476 this_state.
3477 * src/lalr.c (set_state_table): No need to attach reductions to
3478 states, it's already done.
3479 * src/output.c (output_actions): No longer free the shifts, then
3480 the reductions, then the states: free all the states and their
3481 members.
3482
0edad749
AD
34832001-12-10 Akim Demaille <akim@epita.fr>
3484
3485 * src/options.c (OPTN, DRTV, BOTH): New.
3486 (option_table): Use them.
3487
0edad749
AD
3488 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
3489 the job of system.h.
3490 * src/options.c: Don't include stdio.h and xalloc.h for the same
3491 reasons.
3492
5449dd0f
AD
34932001-12-10 Akim Demaille <akim@epita.fr>
3494
3495 * src/output.c (output, prepare): Make sure the values of the
3496 muscles `action' and `prologue' are 0-terminated.
3497
a870c567
AD
34982001-12-10 Akim Demaille <akim@epita.fr>
3499
3500 Clean up GCC warnings.
3501
3502 * src/reader.c (copy_action): `buf' is not used.
3503 (parse_skel_decl): Be static.
3504 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
3505 * src/options.h (create_long_option_table): Have a real prototype.
3506 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
3507 (hash_delete_at): Return const void *.
3508 Adjust casts to preserve the const.
3509
80df8768
AD
35102001-12-10 Akim Demaille <akim@epita.fr>
3511
3512 * configure.in: Require 2.52g.
3513 M4 is not needed, but AUTOM4TE is.
3514 * m4/m4.m4: Remove.
3515 * tests/Makefile.am: Adjust.
3516
f693ad14
AD
35172001-12-10 Akim Demaille <akim@epita.fr>
3518
3519 One structure for states is enough, even though theoretically
3520 there are LR(0) states and LALR(1) states.
3521
3522 * src/lalr.h (state_t): Remove.
3523 (state_table): Be state_t **, not state_t *.
3524 * src/state.h (core, CORE_ALLOC): Rename as...
3525 (state_t, STATE_ALLOC): this.
3526 Add the LALR(1) members: shifts, reductions, errs.
3527 * src/LR0.c (state_table): Rename as...
3528 (state_hash): this, to avoid name clashes with the global
3529 `state_table'.
3530 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
3531 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
3532
74ffbcb6
AD
35332001-12-10 Akim Demaille <akim@epita.fr>
3534
3535 Bison dumps core on bash.y.
3536 Reported by Pascal Bart.
3537
3538 * src/warshall.c (bitmatrix_print): New.
3539 (TC): Use it.
3540 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
3541 j must be the outer loop.
3542 * tests/regression.at (Broken Closure): New.
3543
07708e19
AD
35442001-12-05 Akim Demaille <akim@epita.fr>
3545
3546 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
3547 its argument.
3548