]> git.saurik.com Git - bison.git/blame - ChangeLog
* src/reader.h, src/reader.c (gram_error): ... can't get
[bison.git] / ChangeLog
CommitLineData
fc5734fe
AD
12002-07-26 Akim Demaille <akim@epita.fr>
2
3 * src/reader.h, src/reader.c (gram_error): ... can't get
4 yycontrol without making too strong assumptions on the parser
5 itself.
6 * src/output.c (prepare_tokens): Use the real 0th value of
7 token_translations instead of `0'.
8 * src/parse-gram.y (yyerror): Don't rely on yycontrol being
9 visible here.
10 * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
11 for the time being: %locations ought to provide it to yyerror.
12
3650b4b8
AD
132002-07-25 Akim Demaille <akim@epita.fr>
14
15 * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
16 * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
17 * tests/regression.at (Web2c Actions): Adjust.
18
4b3d3a8e
AD
192002-07-25 Akim Demaille <akim@epita.fr>
20
21 Stop storing rules from 1 to nrules + 1.
22
23 * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
24 * src/nullable.c, src/output.c, src/print.c, src/reader.c
25 * src/reduce.c: Allocate and free from &rules[0], not &rules[1].
26 Iterate from 0 to nrules.
27 Use rule_number_as_item_number and item_number_as_rule_number.
28 Adjust to `derive' now containing possibly 0.
29 * src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
30 Handle the `- 1' part in rule numbers from/to item numbers.
31 * src/conflicts.c (log_resolution): Fix the message which reversed
32 shift and reduce.
33 * src/output.c (action_row): Initialize default_rule to -1.
34 (token_actions): Adjust.
35 * tests/sets.at (Nullable, Firsts): Fix the previously bogus
36 expected output.
37 * tests/conflicts.at (Resolved SR Conflicts): Likewise.
38
4a2a22f4
AD
392002-07-25 Akim Demaille <akim@epita.fr>
40
41 * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
42 (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
43 (b4_c_knr_arg_decl): New.
44 * data/yacc.c: Use it to define yysymprint, yydestruct, and
45 yyreport_parse_error.
46
b8df3223
AD
472002-07-25 Akim Demaille <akim@epita.fr>
48
49 * data/yacc.c (yyreport_parse_error): New, extracted from...
50 (yyparse): here.
51 (yydestruct, yysymprint): Move above yyparse.
52 Be K&R compliant.
53
a762e609
AD
542002-07-25 Akim Demaille <akim@epita.fr>
55
56 * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
57 replace...
58 (b4_sint_type, b4_uint_type): these.
59 * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
60 * tests/regression.at (Web2c Actions): Adjust.
61
12b0043a
AD
622002-07-25 Akim Demaille <akim@epita.fr>
63
64 * src/gram.h (TIEM_NUMBER_MAX): New.
65 (item_number_of_rule_number, rule_number_of_item_number): Rename
66 as...
67 (rule_number_as_item_number, item_number_as_rule_number): these.
68 Adjust dependencies.
69 * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
70 (VECTOR_NUMBER_MIN, state_number_to_vector_number)
71 (symbol_number_to_vector_number): New.
72 (order): Of vector_number_t* type.
73 (base_t, BASE_MAX, BASE_MIN): New.
74 (froms, tos, width, pos, check): Of base_t type.
75 (action_number_t, ACTION_MIN, ACTION_MAX): New.
76 (actrow): Of action_number_t type.
77 (conflrow): Of unsigned int type.
78 (table_ninf, base_ninf): New.
79 (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
80 (muscle_insert_int_table, muscle_insert_base_table)
81 (muscle_insert_rule_number_table): New.
82 (prepare_tokens): Output `toknum' as int_table.
83 (action_row): Returns a rule_number_t.
84 Use ACTION_MIN, not SHRT_MIN.
85 (token_actions): yydefact is rule_number_t*.
86 (table_ninf_remap): New.
87 (pack_table): Use it for `base' and `table'.
88 * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
89 replaced with...
90 (YYPACT_NINF, YYTABLE_NINF): these.
91 (yypact, yytable): Compute their types instead of hard-coded
92 `short'.
93 * tests/regression.at (Web2c Actions): Adjust.
94
5dde258a
AD
952002-07-19 Akim Demaille <akim@epita.fr>
96
97 * src/scan-gram.l (id): Can start with an underscore.
98
a945ec39
AD
992002-07-16 Akim Demaille <akim@epita.fr>
100
101 * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
102 Adjust all former `associativity' dependencies.
103 * src/symtab.c (symbol_new): Default associativity is `undef', not
104 `right'.
105 (symbol_check_alias_consistence): Adjust.
106
fae437e8
AD
1072002-07-09 Akim Demaille <akim@epita.fr>
108
109 * doc/bison.texinfo: Properly set the ``header'' part.
110 Use @dircategory ``GNU programming tools'' as per Texinfo's
111 documentation.
112 Use @copying.
113
1a715ef2
AD
1142002-07-09 Akim Demaille <akim@epita.fr>
115
116 * lib/quotearg.h: Protect against multiple inclusions.
117 * src/location.h (location_t): Add a `file' member.
118 (LOCATION_RESET, LOCATION_PRINT): Adjust.
119 * src/complain.c (warn_at, complain_at, fatal_at): Drop
120 `error_one_per_line' support.
121
a5d50994
AD
1222002-07-09 Akim Demaille <akim@epita.fr>
123
124 * src/complain.h, src/complain.c (warn, complain): Remove, unused.
125 * src/reader.c (lineno): Remove.
126 Adjust all dependencies.
127 (get_merge_function): Take a location and use complain_at.
128 * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
129 * tests/regression.at (Invalid inputs, Mixing %token styles):
130 Adjust.
131
b275314e
AD
1322002-07-09 Akim Demaille <akim@epita.fr>
133
134 * src/parse-gram.y (rules_or_grammar_declaration): Add an error
135 recovery rule, and forbid extensions when --yacc.
136 (gram_error): Use complain_at.
137 * src/reader.c (reader): Exit if there were parse errors.
138
865b9df1
AD
1392002-07-09 Akim Demaille <akim@epita.fr>
140
141 * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
142 (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
143 Reported by R Blake <blakers@mac.com>.
144
c76e14da
AD
1452002-07-09 Akim Demaille <akim@epita.fr>
146
147 * data/yacc.c: Output the copyright notive in the header.
148
7db2ed2d
AD
1492002-07-03 Akim Demaille <akim@epita.fr>
150
151 * src/output.c (froms, tos): Are state_number_t.
152 (save_column): sp, sp1, and sp2 are state_number_t.
153 (prepare): Rename `final' as `final_state_number', `nnts' as
154 `nterms_number', `nrules' as `rules_number', `nstates' as
155 `states_number', and `ntokens' as `tokens_number'. Remove `nsym',
156 unused.
157 * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
158 * data/lalr1.cc (nsym_): Remove, unused.
159
e68e0410
AD
1602002-07-03 Akim Demaille <akim@epita.fr>
161
162 * src/lalr.h, src/lalr.c (goto_number_t): New.
163 * src/lalr.c (goto_list_t): New.
164 Propagate them.
165 * src/nullable.c (rule_list_t): New.
166 Propagate.
167 * src/types.h: Remove.
168
e1a4f3a4
AD
1692002-07-03 Akim Demaille <akim@epita.fr>
170
171 * src/closure.c (print_fderives): Use rule_rhs_print.
172 * src/derives.c (print_derives): Use rule_rhs_print.
173 (rule_list_t): New, replaces `shorts'.
174 (set_derives): Add comments.
175 * tests/sets.at (Nullable, Firsts): Adjust.
176
536545f3
AD
1772002-07-03 Akim Demaille <akim@epita.fr>
178
179 * src/output.c (prepare_actions): Free `tally' and `width'.
180 (prepare_actions): Allocate and free `order'.
181 * src/symtab.c (symbols_free): Free `symbols'.
182 * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
183 * src/output.c (m4_invoke): Move to...
184 * src/scan-skel.l: here.
185 (<<EOF>>): Close yyout, and free its name.
186
8b752b00
AD
1872002-07-03 Akim Demaille <akim@epita.fr>
188
189 Fix some memory leaks, and fix a bug: state 0 was examined twice.
190
191 * src/LR0.c (new_state): Merge into...
192 (state_list_append): this.
193 (new_states): Merge into...
194 (generate_states): here.
195 (set_states): Don't ensure a proper `errs' state member here, do it...
196 * src/conflicts.c (conflicts_solve): here.
197 * src/state.h, src/state.c: Comment changes.
198 (state_t): Rename member `shifts' as `transitions'.
199 Adjust all dependencies.
200 (errs_new): For consistency, also take the values as argument.
201 (errs_dup): Remove.
202 (state_errs_set): New.
203 (state_reductions_set, state_transitions_set): Assert that no
204 previous value was assigned.
205 (state_free): New.
206 (states_free): Use it.
207 * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
208 temporary storage: use `errs' and `nerrs' as elsewhere.
209 (set_conflicts): Allocate and free this `errs'.
210
613f5e1a
AD
2112002-07-02 Akim Demaille <akim@epita.fr>
212
213 * lib/libiberty.h: New.
214 * lib: Update the bitset implementation from upstream.
215 * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
216 * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
217 * src/main.c: Adjust bitset stats calls.
218
26e0cadc
PE
2192002-07-01 Paul Eggert <eggert@twinsun.com>
220
221 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
222 char, so that negative chars don't collide with $.
223
1154cced
AD
2242002-06-30 Akim Demaille <akim@epita.fr>
225
226 Have the GLR tests be `warning' checked, and fix the warnings.
227
228 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
229 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
230 (yyremoveDeletes): `yyi' and `yyj' are size_t.
231 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
232 (yyaddDeferredAction): static.
233 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
234 (yyreportParseError): yyprefix is const.
235 yytokenp is used only when verbose.
236 (yy__GNUC__): Replace with __GNUC__.
237 (yypdumpstack): yyi is size_t.
238 (yypreference): Un-yy local variables and arguments, to avoid
239 clashes with `yyr1'. Anyway, we are not in the user name space.
240 (yytname_size): be an int, as is compared with ints.
241 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
242 Use them.
243 * tests/cxx-gram.at: Use quotation to protect $1.
244 Use AT_COMPILE to enable warnings hunts.
245 Prototype yylex and yyerror.
246 `Use' argc.
247 Include `string.h', not `strings.h'.
248 Produce and prototype stmtMerge only when used.
249 yylex takes a location.
250
97650f4e
AD
2512002-06-30 Akim Demaille <akim@epita.fr>
252
253 We spend a lot of time in quotearg, in particular when --verbose.
254
255 * src/symtab.c (symbol_get): Store a quoted version of the key.
256 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
257 Adjust all callers.
258
d2576365
AD
2592002-06-30 Akim Demaille <akim@epita.fr>
260
261 * src/state.h (reductions_t): Rename member `nreds' as num.
262 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
263 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
264
ccaf65bc
AD
2652002-06-30 Akim Demaille <akim@epita.fr>
266
267 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
268 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
269 (shifts_to): Rename as...
270 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
271 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
272 (TRANSITION_IS_DISABLED, transitions_to): these.
273
87675353
AD
2742002-06-30 Akim Demaille <akim@epita.fr>
275
276 * src/print.c (print_shifts, print_gotos): Merge into...
277 (print_transitions): this.
278 (print_transitions, print_errs, print_reductions): Align the
279 lookaheads columns.
280 (print_core, print_transitions, print_errs, print_state,
281 print_grammar): Output empty lines separator before, not after.
282 (state_default_rule_compute): Rename as...
283 (state_default_rule): this.
284 * tests/conflicts.at (Defaulted Conflicted Reduction),
285 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
286 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
287
ce4ccb4b
AD
2882002-06-30 Akim Demaille <akim@epita.fr>
289
290 Display items as we display rules.
291
292 * src/gram.h, src/gram.c (rule_lhs_print): New.
293 * src/gram.c (grammar_rules_partial_print): Use it.
294 * src/print.c (print_core): Likewise.
295 * tests/conflicts.at (Defaulted Conflicted Reduction),
296 (Unresolved SR Conflicts): Adjust.
297 (Unresolved SR Conflicts): Adjust and rename as...
298 (Resolved SR Conflicts): this, as was meant.
299 * tests/regression.at (Web2c Report): Adjust.
300
bc933ef1
AD
3012002-06-30 Akim Demaille <akim@epita.fr>
302
303 * src/print.c (state_default_rule_compute): New, extracted from...
304 (print_reductions): here.
305 Pessimize, but clarify the code.
306 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
307
53d4308d
AD
3082002-06-30 Akim Demaille <akim@epita.fr>
309
310 * src/output.c (action_row): Let default_rule be always a rule
311 number.
312
574fb2d5
AD
3132002-06-30 Akim Demaille <akim@epita.fr>
314
315 * src/closure.c (print_firsts, print_fderives, closure):
316 Use BITSET_EXECUTE.
317 * src/lalr.c (lookaheads_print): Likewise.
318 * src/state.c (state_rule_lookaheads_print): Likewise.
319 * src/print_graph.c (print_core): Likewise.
320 * src/print.c (print_reductions): Likewise.
321 * src/output.c (action_row): Likewise.
322 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
323
05811fd7
AD
3242002-06-30 Akim Demaille <akim@epita.fr>
325
326 * src/print_graph.c: Use report_flag.
327
0e4d5753
AD
3282002-06-30 Akim Demaille <akim@epita.fr>
329
330 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
331 to...
332 * src/relation.h, src/relation.c (traverse, relation_digraph)
333 (relation_print, relation_transpose): New.
334
24c7d800
AD
3352002-06-30 Akim Demaille <akim@epita.fr>
336
337 * src/state.h, src/state.c (shifts_to): New.
338 * src/lalr.c (build_relations): Use it.
339
9222837b
AD
3402002-06-30 Akim Demaille <akim@epita.fr>
341
342 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
343 (item_number_of_rule_number, rule_number_of_item_number): New.
344 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
345 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
346 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
347 Propagate their use.
348 Much remains to be done, in particular wrt `shorts' from types.h.
349
260008e5
AD
3502002-06-30 Akim Demaille <akim@epita.fr>
351
352 * src/symtab.c (symbol_new): Initialize the `printer' member.
353
8a731ca8
AD
3542002-06-30 Akim Demaille <akim@epita.fr>
355
356 * src/LR0.c (save_reductions): Remove, replaced by...
357 * src/state.h, src/state.c (state_reductions_set): New.
358 (reductions, errs): Rename as...
359 (reductions_t, errs_t): these.
360 Adjust all dependencies.
361
32e1e0a4
AD
3622002-06-30 Akim Demaille <akim@epita.fr>
363
364 * src/LR0.c (state_list_t, state_list_append): New.
365 (first_state, last_state): Now symbol_list_t.
366 (this_state): Remove.
367 (new_itemsets, append_states, save_reductions): Take a state_t as
368 argument.
369 (set_states, generate_states): Adjust.
370 (save_shifts): Remove, replaced by...
371 * src/state.h, src/state.c (state_shifts_set): New.
372 (shifts): Rename as...
373 (shifts_t): this.
374 Adjust all dependencies.
375 * src/state.h (state_t): Remove the `next' member.
376
e5fb6710
AD
3772002-06-30 Akim Demaille <akim@epita.fr>
378
379 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
380 escaped in slot 0.
381
c7ca99d4
AD
3822002-06-30 Akim Demaille <akim@epita.fr>
383
384 Use hash.h for the state hash table.
385
386 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
387 (allocate_storage): Use state_hash_new.
388 (free_storage): Use state_hash_free.
389 (new_state, get_state): Adjust.
390 * src/lalr.h, src/lalr.c (states): Move to...
391 * src/states.h (state_t): Remove the `link' member, no longer
392 used.
393 * src/states.h, src/states.c: here.
394 (state_hash_new, state_hash_free, state_hash_lookup)
395 (state_hash_insert, states_free): New.
396 * src/states.c (state_table, state_compare, state_hash): New.
397 * src/output.c (output_actions): Do not free states now, since we
398 still need to know the final_state number in `prepare', called
399 afterwards. Do it...
400 * src/main.c (main): here: call states_free after `output'.
401
df0e7316
AD
4022002-06-30 Akim Demaille <akim@epita.fr>
403
404 * src/state.h, src/state.c (state_new): New, extracted from...
405 * src/LR0.c (new_state): here.
406 * src/state.h (STATE_ALLOC): Move to...
407 * src/state.c: here.
408 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
409 * src/state.h, src/state.c: here.
410
39f41916
AD
4112002-06-30 Akim Demaille <akim@epita.fr>
412
413 * src/reader.c (gensym): Rename as...
414 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
415 (getsym): Rename as...
416 (symbol_get): this.
417
d57650a5
AD
4182002-06-30 Akim Demaille <akim@epita.fr>
419
420 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
421 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
422 * src/output.c, src/print.c, src/print_graph.c: Propagate.
423 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
424
5a08f1ce
AD
4252002-06-30 Akim Demaille <akim@epita.fr>
426
427 Make the test suite pass with warnings checked.
428
429 * tests/actions.at (Printers and Destructors): Improve.
430 Avoid unsigned vs. signed issues.
431 * tests/calc.at: Don't exercise the scanner here, do it...
432 * tests/input.at (Torturing the Scanner): here.
433
720623af
PH
4342002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
435
88e7e941 436 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
720623af
PH
437 reorganize first lines parallel to yacc.c.
438
fb8135fa
AD
4392002-06-28 Akim Demaille <akim@epita.fr>
440
441 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
442 (b4_token_enum, b4_token_defines): New, factored from...
443 * data/lalr1.cc, data/yacc.c, glr.c: here.
444
41442480
AD
4452002-06-28 Akim Demaille <akim@epita.fr>
446
447 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
448 unused variables.
449 * src/output.c (merger_output): static.
450
e0e5bf84
AD
4512002-06-28 Akim Demaille <akim@epita.fr>
452
453 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
454 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
455 pacify GCC.
456 * src/output.c (save_row): Initialize all the variables to pacify GCC.
e0e5bf84 457
676385e2
PH
4582002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
459
460 Accumulated changelog for new GLR parsing features.
461
e0e5bf84 462 * src/conflicts.c (count_total_conflicts): Change name to
676385e2
PH
463 conflicts_total_count.
464 * src/conflicts.h: Ditto.
465 * src/output.c (token_actions): Use the new name.
466 (output_conflicts): Change conflp => conflict_list_heads, and
467 confl => conflict_list for better readability.
468 * data/glr.c: Use the new names.
469 * NEWS: Add self to GLR announcement.
e0e5bf84 470
676385e2
PH
471 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
472
473 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
474 Akim Demaille.
475
476 * data/bison.glr: Change name to glr.c
477 * data/glr.c: Renamed from bison.glr.
478 * data/Makefile.am: Add glr.c
e0e5bf84
AD
479
480 * src/getargs.c:
481
676385e2
PH
482 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
483 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
e0e5bf84 484
676385e2
PH
485 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
486
487 * data/bison.glr: Be sure to restore the
488 current #line when returning to the skeleton contents after having
489 exposed the input file's #line.
490
491 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
492
493 * data/bison.glr: Bring up to date with changes to bison.simple.
494
495 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
496
497 * data/bison.glr: Correct definitions that use b4_prefix.
498 Various reformatting.
499 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
500 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
501 yytokenp argument; now part of stack.
502 (yychar): Define to behave as documented.
503 (yyclearin): Ditto.
e0e5bf84 504
676385e2
PH
505 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
506
507 * src/reader.h: Add declaration for free_merger_functions.
508
509 * src/reader.c (merge_functions): New variable.
510 (get_merge_function): New function.
511 (free_merger_functions): New function.
512 (readgram): Check for %prec that is not followed by a symbol.
513 Handle %dprec and %merge declarations.
514 (packgram): Initialize dprec and merger fields in rules array.
515
516 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
517 conflict_list_cnt, conflict_list_free): New variables.
518 (table_grow): Also grow conflict_table.
e0e5bf84 519 (prepare_rules): Output dprec and merger tables.
676385e2 520 (conflict_row): New function.
e0e5bf84 521 (action_row): Output conflict lists for GLR parser. Don't use
676385e2
PH
522 default reduction in conflicted states for GLR parser so that there
523 are spaces for the conflict lists.
524 (save_row): Also save conflict information.
525 (token_actions): Allocate conflict list.
526 (merger_output): New function.
527 (pack_vector): Pack conflict table, too.
528 (output_conflicts): New function to output yyconflp and yyconfl.
529 (output_check): Allocate conflict_tos.
530 (output_actions): Output conflict tables, also.
531 (output_skeleton): Output b4_mergers definition.
532 (prepare): Output b4_max_rhs_length definition.
533 Use 'bison.glr' as default skeleton for GLR parsers.
534
535 * src/gram.c (glr_parser): New flag.
536 (grammar_free): Call free_merger_functions.
537
538 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
539 all pairs of conflicting reductions, rather than just all tokens
540 causing conflicts. Needed to size conflict tables.
e0e5bf84 541 (conflicts_output): Modify call to count_rr_conflicts for new
676385e2
PH
542 interface.
543 (conflicts_print): Ditto.
544 (count_total_conflicts): New function.
545
546 * src/reader.h (merger_list): New type.
547 (merge_functions): New variable.
548
549 * src/lex.h (tok_dprec, tok_merge): New token types.
550
551 * src/gram.h (rule_s): Add dprec and merger fields.
552 (glr_parser): New flag.
553
554 * src/conflicts.h (count_total_conflicts): New function.
555
556 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
557
558 * doc/bison.texinfo (Generalized LR Parsing): New section.
559 (GLR Parsers): New section.
560 (Language and Grammar): Mention GLR parsing.
561 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
562 Correct typo ("tge" -> "the").
563
564 * data/bison.glr: New skeleton for GLR parsing.
565
566 * tests/cxx-gram.at: New tests for GLR parsing.
567
568 * tests/testsuite.at: Include cxx-gram.at.
569
570 * tests/Makefile.am: Add cxx-gram.at.
e0e5bf84 571
676385e2
PH
572 * src/parse-gram.y:
573
574 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
575
576 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
e0e5bf84 577
b5480d74 5782002-06-27 Akim Demaille <akim@epita.fr>
e2aaf4c4
AD
579
580 * src/options.h, src/options.c: Remove.
581 * src/getargs.c (short_options, long_options): New.
582
60491a94
AD
5832002-06-27 Akim Demaille <akim@epita.fr>
584
585 * data/bison.simple, data/bison.c++: Rename as...
586 * data/yacc.c, data/lalr1.cc: these.
587 * doc/bison.texinfo (Environment Variables): Remove.
588
9be0c25b
AD
5892002-06-25 Raja R Harinath <harinath@cs.umn.edu>
590
591 * src/getargs.c (report_argmatch): Initialize strtok().
592
1ae72863
AD
5932002-06-20 Akim Demaille <akim@epita.fr>
594
595 * data/bison.simple (b4_symbol_actions): New, replaces...
596 (b4_symbol_destructor, b4_symbol_printer): these.
597 (yysymprint): Be sure to call YYPRINT only for tokens, and using
598 user token numbers.
599
87542d29
AD
6002002-06-20 Akim Demaille <akim@epita.fr>
601
602 * data/bison.simple (yydestructor): Rename as...
603 (yydestruct): this.
604
1a31ed21
AD
6052002-06-20 Akim Demaille <akim@epita.fr>
606
607 * src/symtab.h, src/symtab.c (symbol_type_set)
608 (symbol_destructor_set, symbol_precedence_set): The location is
609 the last argument.
610 Adjust all callers.
611
e776192e
AD
6122002-06-20 Akim Demaille <akim@epita.fr>
613
614 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
615 internals.
616 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
617 Takes a location.
618 * src/symtab.h, src/symtab.c (symbol_class_set)
619 (symbol_user_token_number_set): Likewise.
620 Adjust all callers.
621 Promote complain_at.
622 * tests/input.at (Type Clashes): Adjust.
623
5c1180b3
AD
6242002-06-20 Akim Demaille <akim@epita.fr>
625
626 * data/bison.simple (YYLEX): Fix the declaration when
627 %pure-parser.
628
e3170060
AD
6292002-06-20 Akim Demaille <akim@epita.fr>
630
631 * data/bison.simple (yysymprint): Don't print the token number,
632 just its name.
633 * tests/actions.at (Destructors): Rename as...
634 (Printers and Destructors): this.
635 Also exercise %printer.
636
253862fd
AD
6372002-06-20 Akim Demaille <akim@epita.fr>
638
639 * data/bison.simple (YYDSYMPRINT): New.
640 Use it to remove many of the #if YYDEBUG/if (yydebug).
641
366eea36
AD
6422002-06-20 Akim Demaille <akim@epita.fr>
643
644 * src/symtab.h, src/symtab.c (symbol_t): printer and
645 printer_location are new members.
646 (symbol_printer_set): New.
647 * src/parse-gram.y (PERCENT_PRINTER): New token.
648 Handle its associated rule.
649 * src/scan-gram.l: Adjust.
650 (handle_destructor_at, handle_destructor_dollar): Rename as...
651 (handle_symbol_code_at, handle_symbol_code_dollar): these.
652 * src/output.c (symbol_printers_output): New.
653 (output_skeleton): Call it.
654 * data/bison.simple (yysymprint): New. Cannot be named yyprint
655 since there are already many grammar files with a user `yyprint'.
656 Replace the calls to YYPRINT to calls to yysymprint.
657 * tests/calc.at: Adjust.
658 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
659 taking advantage of parser very internal details (stack size!).
660
4f25ebb0
AD
6612002-06-20 Akim Demaille <akim@epita.fr>
662
663 * src/scan-gram.l: Complete the scanner with the missing patterns
664 to pacify Flex.
665 Use `quote' and `symbol_tag_get' where appropriate.
666
93b68a0e
AD
6672002-06-19 Akim Demaille <akim@epita.fr>
668
669 * tests/actions.at (Destructors): Augment to test locations.
670 * data/bison.simple (yydestructor): Pass it the current location
671 if locations are enabled.
672 Prototype only when __STDC__ or C++.
673 Change the argument names to move into the yy name space: there is
674 user code here.
675
58612f1d
AD
6762002-06-19 Akim Demaille <akim@epita.fr>
677
74310291
AD
678 * data/bison.simple (b4_pure_if): New.
679 Use it instead of #ifdef YYPURE.
680
6812002-06-19 Akim Demaille <akim@epita.fr>
682
683 * data/bison.simple (b4_location_if): New.
58612f1d
AD
684 Use it instead of #ifdef YYLSP_NEEDED.
685
f25bfb75
AD
6862002-06-19 Akim Demaille <akim@epita.fr>
687
688 Prepare @$ in %destructor, but currently don't bind it in the
689 skeleton, as %location use is not cleaned up yet.
690
691 * src/scan-gram.l (handle_dollar, handle_destructor_at)
692 (handle_action_at): New.
693 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
694 a braced_code_t and a location as additional arguments.
695 (handle_destructor_dollar): Instead of requiring `b4_eval', just
696 unquote one when outputting `b4_dollar_dollar'.
697 Adjust callers.
698 * data/bison.simple (b4_eval): Remove.
699 (b4_symbol_destructor): Adjust.
700 * tests/input.at (Invalid @n): Adjust.
701
c732d2c6
AD
7022002-06-19 Zack Weinberg <zack@codesourcery.com>
703
704 * doc/bison.texinfo: Document ability to have multiple
705 prologue sections.
706
8c165d89
AD
7072002-06-18 Akim Demaille <akim@epita.fr>
708
709 * src/files.c (compute_base_names): When computing the output file
710 names from the input file name, strip the directory part.
711
ca98bf57
AD
7122002-06-18 Akim Demaille <akim@epita.fr>
713
714 * data/bison.simple.new: Comment changes.
715 Reported by Andreas Schwab.
716
0bfb02ff
AD
7172002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
718
719 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
720 there are no `label `yyoverflowlab' defined but not used' warnings
721 when yyoverflow is defined.
722
24c0aad7
AD
7232002-06-18 Akim Demaille <akim@epita.fr>
724
725 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
726 new member.
727 (symbol_destructor_set): Adjust.
728 * src/output.c (symbol_destructors_output): Output the destructor
729 locations.
730 Output the symbol name.
731 * data/bison.simple (b4_symbol_destructor): Adjust.
732
5719c109
AD
7332002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
734 and Akim Demaille <akim@epita.fr>
735
736 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
737 what's left on the stack when the error recovery hits EOF.
738 * tests/actions.at (Destructors): Complete to exercise this case.
739
9280d3ef
AD
7402002-06-17 Akim Demaille <akim@epita.fr>
741
742 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
743 arguments is really empty, not only equal to `[]'.
744 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
745 member.
746 (symbol_destructor_set): New.
747 * src/output.c (symbol_destructors_output): New.
748 * src/reader.h (brace_code_t, current_braced_code): New.
749 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
750 (handle_dollar): Rename as...
751 (handle_action_dollar): this.
752 (handle_destructor_dollar): New.
753 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
754 (grammar_declaration): Use it.
755 * data/bison.simple (yystos): Is always defined.
756 (yydestructor): New.
757 * tests/actions.at (Destructors): New.
758 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
759
dafdc66f
AD
7602002-06-17 Akim Demaille <akim@epita.fr>
761
762 * src/symlist.h, src/symlist.c (symbol_list_length): New.
763 * src/scan-gram.l (handle_dollar, handle_at): Compute the
764 rule_length only when needed.
765 * src/output.c (actions_output, token_definitions_output): Output
766 the full M4 block.
767 * src/symtab.c: Don't access directly to the symbol tag, use
768 symbol_tag_get.
769 * src/parse-gram.y: Use symbol_list_free.
770
56c47203
AD
7712002-06-17 Akim Demaille <akim@epita.fr>
772
773 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
774 (symbol_list_prepend, get_type_name): Move to...
775 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
776 (symbol_list_prepend, symbol_list_n_type_name_get): here.
777 Adjust all callers.
778 (symbol_list_free): New.
779 * src/scan-gram.l (handle_dollar): Takes a location.
780 * tests/input.at (Invalid $n): Adjust.
781
1e0bab92
AD
7822002-06-17 Akim Demaille <akim@epita.fr>
783
784 * src/reader.h, src/reader.c (symbol_list_new): Export it.
785 (symbol_list_prepend): New.
786 * src/parse-gram.y (%union): `list' is a new member.
787 (symbols.1): New, replaces...
788 (terms_to_prec.1, nterms_to_type.1): these.
789 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
790 Take a location as additional argument.
791 Adjust all callers.
792
04e60654
AD
7932002-06-15 Akim Demaille <akim@epita.fr>
794
795 * src/parse-gram.y: Move %token in the declaration section so that
796 we don't depend upon CVS Bison.
797
10e5b8bd
AD
7982002-06-15 Akim Demaille <akim@epita.fr>
799
800 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
801 * src/print.c (print_core): Use it.
802
9801d40c
AD
8032002-06-15 Akim Demaille <akim@epita.fr>
804
805 * src/conflicts.c (log_resolution): Accept the rule involved in
806 the sr conflicts instead of the lookahead number that points to
807 that rule.
808 (flush_reduce): Accept the current lookahead vector as argument,
809 instead of the index in LA.
810 (resolve_sr_conflict): Accept the current number of lookahead
811 bitset to consider for the STATE, instead of the index in LA.
812 (set_conflicts): Adjust.
813 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
814
c0263492
AD
8152002-06-15 Akim Demaille <akim@epita.fr>
816
817 * src/state.h (state_t): Replace the `lookaheadsp' member, a
818 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
819 Adjust all dependencies.
820 * src/lalr.c (initialize_lookaheads): Split into...
821 (states_lookaheads_count, states_lookaheads_initialize): these.
822 (lalr): Adjust.
823
9757c359
AD
8242002-06-15 Akim Demaille <akim@epita.fr>
825
826 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
827 out of...
828 (grammar_rules_print): here.
829 * src/reduce.c (reduce_output): Use it.
830 * tests/reduce.at (Useless Rules, Reduced Automaton)
831 (Underivable Rules): Adjust.
832
6b98e4b5
AD
8332002-06-15 Akim Demaille <akim@epita.fr>
834
835 Copy BYacc's nice way to report the grammar.
836
837 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
838 New.
839 Don't print the rules' location, it is confusing and useless.
840 (rule_print): Use grammar_rhs_print.
841 * src/print.c (print_grammar): Use grammar_rules_print.
842
6b98e4b5
AD
8432002-06-15 Akim Demaille <akim@epita.fr>
844
845 Complete and rationalize `useless thing' warnings.
846
847 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
848 (symbol_tag_print): New.
849 Use them everywhere in place of accessing directly the tag member.
850 * src/gram.h, src/gram.c (rule_print): New.
851 Use it where a rule used to be printed `by hand'.
852 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
853 (reduce_grammar_tables): Report the useless rules.
854 (reduce_print): Useless things are a warning, not an error.
855 Report it as such.
856 * tests/reduce.at (Useless Nonterminals, Useless Rules):
857 (Reduced Automaton, Underivable Rules): Adjust.
858 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
859 * tests/conflicts.at (Unresolved SR Conflicts)
860 (Solved SR Conflicts): Adjust.
861
ee000ba4
AD
8622002-06-15 Akim Demaille <akim@epita.fr>
863
864 Let symbols have a location.
865
866 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
867 (getsym): Adjust.
868 Adjust all callers.
869 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
870 Use location_t, not int.
871 * src/symtab.c (symbol_check_defined): Take advantage of the
872 location.
873 * tests/regression.at (Invalid inputs): Adjust.
874
8efe435c
AD
8752002-06-15 Akim Demaille <akim@epita.fr>
876
877 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
878 (input): Don't try to initialize yylloc here, do it in the
879 scanner.
880 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
881 * src/gram.h (rule_t): Change line and action_line into location
882 and action_location, of location_t type.
883 Adjust all dependencies.
884 * src/location.h, src/location.c (empty_location): New.
885 * src/reader.h, src/reader.c (grammar_start_symbol_set)
886 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
887 (grammar_current_rule_symbol_append)
888 (grammar_current_rule_action_append): Expect a location as argument.
889 * src/reader.c (grammar_midrule_action): Adjust to attach an
890 action's location as dummy symbol location.
891 * src/symtab.h, src/symtab.c (startsymbol_location): New.
892 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
893 the line numbers.
894
1921f1d7
AD
8952002-06-14 Akim Demaille <akim@epita.fr>
896
897 Grammar declarations may be found in the grammar section.
898
899 * src/parse-gram.y (rules_or_grammar_declaration): New.
900 (declarations): Each declaration may end with a semicolon, not
901 just...
902 (grammar_declaration): `"%union"'.
903 (grammar): Branch to rules_or_grammar_declaration.
904
4515534c
AD
9052002-06-14 Akim Demaille <akim@epita.fr>
906
907 * src/main.c (main): Invoke scanner_free.
908
f958596b
AD
9092002-06-14 Akim Demaille <akim@epita.fr>
910
911 * src/output.c (m4_invoke): Extracted from...
912 (output_skeleton): here.
913 Free tempfile.
914
2c569025
AD
9152002-06-14 Akim Demaille <akim@epita.fr>
916
917 * src/parse-gram.y (directives, directive, gram)
918 (grammar_directives, precedence_directives, precedence_directive):
919 Rename as...
920 (declarations, declaration, grammar, grammar_declaration)
921 (precedence_declaration, precedence_declarator): these.
922 (symbol_declaration): New.
923
592e8d4d
AD
9242002-06-14 Akim Demaille <akim@epita.fr>
925
926 * src/files.c (action_obstack): Remove, unused.
927 (output_obstack): Remove it, and all its dependencies, as it is no
928 longer needed.
929 * src/reader.c (epilogue_set): Build the epilogue in the
930 muscle_obstack.
931 * src/output.h, src/output.c (muscle_obstack): Move to...
932 * src/muscle_tab.h, src/muscle_tab.h: here.
933 (muscle_init): Initialize muscle_obstack.
934 (muscle_free): New.
935 * src/main.c (main): Call it.
936
0c15323d
AD
9372002-06-14 Akim Demaille <akim@epita.fr>
938
939 * src/location.h: New, extracted from...
940 * src/reader.h: here.
941 * src/Makefile.am (noinst_HEADERS): Merge into
942 (bison_SOURCES): this.
943 Add location.h.
944 * src/parse-gram.y: Use location_t instead of Bison's.
945 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
946 Use location_t instead of ints.
947
e96c9728
AD
9482002-06-14 Akim Demaille <akim@epita.fr>
949
950 * data/bison.simple, data/bison.c++: Be sure to restore the
951 current #line when returning to the skeleton contents after having
952 exposed the input file's #line.
953
75d1fe16
AD
9542002-06-12 Akim Demaille <akim@epita.fr>
955
956 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
957 eager.
958 * tests/actions.at (Exotic Dollars): New.
959
6c35d22c
AD
9602002-06-12 Akim Demaille <akim@epita.fr>
961
962 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
963 ['"/] too eagerly.
964 * tests/input.at (Torturing the Scanner): New.
965
1d6412ad
AD
9662002-06-11 Akim Demaille <akim@epita.fr>
967
968 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
969 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
970 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
971 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
972 * src/reader.c (reader): Use it.
973
4cdb01db
AD
9742002-06-11 Akim Demaille <akim@epita.fr>
975
976 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
977 Adjust all callers.
978 (scanner_last_string_free): New.
979
44995b2e
AD
9802002-06-11 Akim Demaille <akim@epita.fr>
981
982 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
983 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
984 (last_string, YY_OBS_FREE): New.
985 Use them when returning an ID.
986
e9955c83
AD
9872002-06-11 Akim Demaille <akim@epita.fr>
988
989 Have Bison grammars parsed by a Bison grammar.
990
991 * src/reader.c, src/reader.h (prologue_augment): New.
992 * src/reader.c (copy_definition): Remove.
993
994 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
995 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
996 (grammar_current_rule_prec_set, grammar_current_rule_check)
997 (grammar_current_rule_symbol_append)
998 (grammar_current_rule_action_append): Export.
999 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
1000 (symbol_list_action_append): Remove.
1001 Hook the routines from reader.
1002 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
1003 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
1004
1005 * src/reader.c (read_declarations): Remove, unused.
1006
1007 * src/parse-gram.y: Handle the epilogue.
1008 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
1009 (grammar_start_symbol_set): this.
1010 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
1011 * src/reader.c (readgram): Remove, unused.
1012 (reader): Adjust to insert eoftoken and axiom where appropriate.
1013
1014 * src/reader.c (copy_dollar): Replace with...
1015 * src/scan-gram.h (handle_dollar): this.
1016 * src/parse-gram.y: Remove `%thong'.
1017
1018 * src/reader.c (copy_at): Replace with...
1019 * src/scan-gram.h (handle_at): this.
1020
1021 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
1022 New.
1023
1024 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
1025 time being.
1026
1027 * src/reader.h, src/reader.c (grammar_rule_end): New.
1028
1029 * src/parse.y (current_type, current_class): New.
1030 Implement `%nterm', `%token' support.
1031 Merge `%term' into `%token'.
1032 (string_as_id): New.
1033 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
1034 type name.
1035
1036 * src/parse-gram.y: Be sure to handle properly the beginning of
1037 rules.
1038
1039 * src/parse-gram.y: Handle %type.
1040 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
1041
1042 * src/parse-gram.y: More directives support.
1043 * src/options.c: No longer handle source directives.
1044
1045 * src/parse-gram.y: Fix %output.
1046
1047 * src/parse-gram.y: Handle %union.
1048 Use the prologue locations.
1049 * src/reader.c (parse_union_decl): Remove.
1050
1051 * src/reader.h, src/reader.c (epilogue_set): New.
1052 * src/parse-gram.y: Use it.
1053
1054 * data/bison.simple, data/bison.c++: b4_stype is now either not
1055 defined, then default to int, or to the contents of %union,
1056 without `union' itself.
1057 Adjust.
1058 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
1059
1060 * src/output.c (actions_output): Don't output braces, as they are
1061 already handled by the scanner.
1062
1063 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
1064 characters to themselves.
1065
1066 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
1067 that the epilogue has a proper #line.
1068
1069 * src/parse-gram.y: Handle precedence/associativity.
1070
1071 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
1072 a terminal.
1073 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
1074 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
1075 at all to define terminals that cannot be emitted.
1076
1077 * src/scan-gram.l: Escape M4 characters.
1078
1079 * src/scan-gram.l: Working properly with escapes in user
1080 strings/characters.
1081
1082 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
1083 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
1084 grammar.
1085 Use more modest sizes, as for the time being the parser does not
1086 release memory, and therefore the process swallows a huge amount
1087 of memory.
1088
1089 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
1090 stricter %token grammar.
1091
1092 * src/symtab.h (associativity): Add `undef_assoc'.
1093 (symbol_precedence_set): Do nothing when passed an undef_assoc.
1094 * src/symtab.c (symbol_check_alias_consistence): Adjust.
1095
1096 * tests/regression.at (Invalid %directive): Remove, as it is now
1097 meaningless.
1098 (Invalid inputs): Adjust to the new error messages.
1099 (Token definitions): The new grammar doesn't allow too many
1100 eccentricities.
1101
1102 * src/lex.h, src/lex.c: Remove.
1103 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
1104 (copy_character, copy_string2, copy_string, copy_identifier)
1105 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
1106 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
1107 (parse_action): Remove.
1108 * po/POTFILES.in: Adjust.
1109
2e047461
AD
11102002-06-11 Akim Demaille <akim@epita.fr>
1111
1112 * src/reader.c (parse_action): Don't store directly into the
1113 rule's action member: return the action as a string.
1114 Don't require `rule_length' as an argument: compute it.
1115 (grammar_current_rule_symbol_append)
1116 (grammar_current_rule_action_append): New, eved out from
1117 (readgram): here.
1118 Remove `action_flag', `rulelength', unused now.
1119
9af3fbce
AD
11202002-06-11 Akim Demaille <akim@epita.fr>
1121
1122 * src/reader.c (grammar_current_rule_prec_set).
1123 (grammar_current_rule_check): New, eved out from...
1124 (readgram): here.
1125 Remove `xaction', `first_rhs': useless.
1126 * tests/input.at (Type clashes): New.
1127 * tests/existing.at (GNU Cim Grammar): Adjust.
1128
1485e106
AD
11292002-06-11 Akim Demaille <akim@epita.fr>
1130
1131 * src/reader.c (grammar_midrule_action): New, Eved out from
1132 (readgram): here.
1133
da4160c3
AD
11342002-06-11 Akim Demaille <akim@epita.fr>
1135
1136 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
1137 New.
1138 (readgram): Use them as replacement of inlined code, crule and
1139 crule1.
1140
f6d0f937
AD
11412002-06-11 Akim Demaille <akim@epita.fr>
1142
1143 * src/reader.c (grammar_end, grammar_symbol_append): New.
1144 (readgram): Use them.
1145 Make the use of `p' as local as possible.
1146
69078d4b
AD
11472002-06-10 Akim Demaille <akim@epita.fr>
1148
1149 GCJ's parser requires the tokens to be defined before the prologue.
1150
1151 * data/bison.simple: Output the token definition before the user's
1152 prologue.
1153 * tests/regression.at (Braces parsing, Duplicate string)
1154 (Mixing %token styles): Check the output from bison.
1155 (Early token definitions): New.
1156
5e424082
AD
11572002-06-10 Akim Demaille <akim@epita.fr>
1158
1159 * src/symtab.c (symbol_user_token_number_set): Don't complain when
1160 assigning twice the same user number to a token, so that we can
1161 use it in...
1162 * src/lex.c (lex): here.
1163 Also use `symbol_class_set' instead of hand written code.
1164 * src/reader.c (parse_assoc_decl): Likewise.
1165
44536b35
AD
11662002-06-10 Akim Demaille <akim@epita.fr>
1167
1168 * src/symtab.c, src/symtab.c (symbol_class_set)
1169 (symbol_user_token_number_set): New.
1170 * src/reader.c (parse_token_decl): Use them.
1171 Use a switch instead of ifs.
1172 Use a single argument.
1173
8b9f2372
AD
11742002-06-10 Akim Demaille <akim@epita.fr>
1175
1176 Remove `%thong' support as it is undocumented, unused, duplicates
1177 `%token's job, and creates useless e-mail traffic with people who
1178 want to know what it is, why it is undocumented, unused, and
1179 duplicates `%token's job.
1180
1181 * src/reader.c (parse_thong_decl): Remove.
1182 * src/options.c (option_table): Remove "thong".
1183 * src/lex.h (tok_thong): Remove.
1184
3ae2b51f
AD
11852002-06-10 Akim Demaille <akim@epita.fr>
1186
1187 * src/symtab.c, src/symtab.c (symbol_type_set)
1188 (symbol_precedence_set): New.
1189 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
1190 (value_components_used): Remove, unused.
1191
2f1afb73
AD
11922002-06-09 Akim Demaille <akim@epita.fr>
1193
1194 Move symbols handling code out of the reader.
1195
1196 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
1197 (axiom): Move to...
1198 * src/symtab.h, src/symtab.c: here.
1199
1200 * src/gram.c (start_symbol): Remove: use startsymbol->number.
1201 * src/reader.c (startval): Rename as...
1202 * src/symtab.h, src/symtab.c (startsymbol): this.
1203 * src/reader.c: Adjust.
1204
1205 * src/reader.c (symbol_check_defined, symbol_make_alias)
1206 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
1207 (token_translations_init)
1208 Move to...
1209 * src/symtab.c: here.
1210 * src/reader.c (packsymbols): Move to...
1211 * src/symtab.h, src/symtab.c (symbols_pack): here.
1212 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
1213 argument.
1214
e9bca3ad
AD
12152002-06-03 Akim Demaille <akim@epita.fr>
1216
1217 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
1218 then statements.
1219
86eff183
AD
12202002-06-03 Akim Demaille <akim@epita.fr>
1221
1222 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
1223 structs with non literals.
1224 * src/scan-skel.l: never-interactive.
1225 * src/conflicts.c (enum conflict_resolution_e): No trailing
1226 comma.
1227 * src/getargs.c (usage): Split long literal strings.
1228 Reported by Hans Aberg.
1229
717be197
AD
12302002-05-28 Akim Demaille <akim@epita.fr>
1231
1232 * data/bison.c++: Use C++ ostreams.
1233 (cdebug_): New member.
1234
670ddffd
AD
12352002-05-28 Akim Demaille <akim@epita.fr>
1236
1237 * src/output.c (output_skeleton): Be sure to allocate enough room
1238 for `/' _and_ for `\0' in full_skeleton.
1239
769b430f
AD
12402002-05-28 Akim Demaille <akim@epita.fr>
1241
1242 * data/bison.c++: Catch up with bison.simple:
1243 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1244 and Paul Eggert <eggert@twinsun.com>: `error' handing.
1245 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
1246 and popping traces.
1247
7067cb36
PH
12482002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1249
1250 * src/output.c (output_skeleton): Put an explicit path in front of
1251 the skeleton file name, rather than relying on the -I directory,
1252 to partially alleviate effects of having a skeleton file lying around
1253 in the current directory.
769b430f 1254
4a713ec2
PH
12552002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1256
769b430f 1257 * src/conflicts.c (log_resolution): Correct typo:
4a713ec2
PH
1258 obstack_printf should be obstack_fgrow1.
1259
b408954b
AD
12602002-05-26 Akim Demaille <akim@epita.fr>
1261
1262 * src/state.h (state_t): `solved_conflicts' is a new member.
1263 * src/LR0.c (new_state): Set it to 0.
1264 * src/conflicts.h, src/conflicts.c (print_conflicts)
1265 (free_conflicts, solve_conflicts): Rename as...
1266 (conflicts_print, conflicts_free, conflicts_solve): these.
1267 Adjust callers.
1268 * src/conflicts.c (enum conflict_resolution_e)
1269 (solved_conflicts_obstack): New, used by...
1270 (log_resolution): this.
1271 Adjust to attach the conflict resolution to each state.
1272 Complete the description with the precedence/associativity
1273 information.
1274 (resolve_sr_conflict): Adjust.
1275 * src/print.c (print_state): Output its solved_conflicts.
1276 * tests/conflicts.at (Unresolved SR Conflicts)
1277 (Solved SR Conflicts): Exercise --report=all.
1278
a49aecd5
AD
12792002-05-26 Akim Demaille <akim@epita.fr>
1280
1281 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
1282 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
1283 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
1284 (token_number_t, item_number_as_token_number)
1285 (token_number_as_item_number, muscle_insert_token_number_table):
1286 Rename as...
1287 (symbol_number_t, item_number_as_symbol_number)
1288 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
1289 these, since it is more appropriate.
1290
5504898e
AD
12912002-05-26 Akim Demaille <akim@epita.fr>
1292
1293 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
1294 `Error:' lines.
1295 * data/bison.simple (yystos) [YYDEBUG]: New.
1296 (yyparse) [YYDEBUG]: Display the symbols which are popped during
1297 error recovery.
1298 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
1299
ec3bc396
AD
13002002-05-25 Akim Demaille <akim@epita.fr>
1301
1302 * doc/bison.texinfo (Debugging): Split into...
1303 (Tracing): this new section, its former contents, and...
1304 (Understanding): this new section.
1305 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
1306 by...
1307 (report_flag): this.
1308 Adjust all dependencies.
1309 (report_args, report_types, report_argmatch): New.
1310 (usage, getargs): Report/support -r, --report.
1311 * src/options.h
1312 (struct option_table_struct): Rename as..,
1313 (struct option_table_s): this.
1314 Rename the `set_flag' member to `flag' to match with getopt_long's
1315 struct.
1316 * src/options.c (option_table): Split verbose into an entry for
1317 %verbose, and another for --verbose.
1318 Support --report/-r, so remove -r from the obsolete --raw.
1319 * src/print.c: Attach full item sets and lookaheads reports to
1320 report_flag instead of trace_flag.
1321 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
1322
78df8250
PE
13232002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1324 and Paul Eggert <eggert@twinsun.com>
769b430f 1325
78df8250
PE
1326 * data/bison.simple (yyparse): Correct error handling to conform to
1327 POSIX and yacc. Specifically, after syntax error is discovered,
1328 do not reduce further before shifting the error token.
1329 Clean up the code a bit by removing the labels yyerrdefault,
1330 yyerrhandle, yyerrpop.
1331 * NEWS: Document the above.
1332
c0c9ea05
PH
13332002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1334
1335 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
1336 type; it isn't always big enough, since it doesn't necessarily
1337 include non-terminals.
769b430f 1338 (yytranslate): Expand definition of yy_token_number_type, so that
c0c9ea05
PH
1339 the latter can be removed.
1340 (yy_token_number_type): Remove, only one use.
1341 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
1342 don't use TokenNumberType as element type.
769b430f 1343
c0c9ea05
PH
1344 * tests/regression.at: Modify expected output to agree with change
1345 to yyr1 and yytranslate.
769b430f 1346
6390a83f
FK
13472002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
1348
1349 * src/reader.c (parse_action): Use copy_character instead of
1350 obstack_1grow.
1351
db7c8e9a
AD
13522002-05-13 Akim Demaille <akim@epita.fr>
1353
1354 * tests/regression.at (Token definitions): Prototype yylex and
1355 yyerror.
1356
fcc61800
PH
13572002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1358
158c687b 1359 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
fcc61800
PH
1360 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
1361 32-bit arithmetic.
1362 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
1363
5683e9b2
AD
13642002-05-07 Akim Demaille <akim@epita.fr>
1365
1366 * tests/synclines.at: Be sure to prototype yylex and yyerror to
1367 avoid GCC warnings.
1368
0c2d3f4c
AD
13692002-05-07 Akim Demaille <akim@epita.fr>
1370
1371 Kill GCC warnings.
1372
1373 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
1374 over the RHS of each rule.
1375 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
1376 * src/state.h (state_t): Member `nitems' is unsigned short.
1377 * src/LR0.c (get_state): Adjust.
1378 * src/reader.c (packgram): Likewise.
1379 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
1380 `Type'.
1381 (muscle_insert_int_table): Remove, unused.
1382 (prepare_rules): Remove `max'.
1383
1565b720
AD
13842002-05-06 Akim Demaille <akim@epita.fr>
1385
1386 * src/closure.c (print_firsts): Display of the symbol tags.
1387 (bitmatrix_print): Move to...
1388 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
1389 here.
1390 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
1391
cfaee611
AD
13922002-05-06 Akim Demaille <akim@epita.fr>
1393
1394 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
1395 hash_do_for_each.
1396
458be8e0
AD
13972002-05-06 Akim Demaille <akim@epita.fr>
1398
1399 * src/LR0.c (new_state, get_state): Instead of using the global
1400 `kernel_size' and `kernel_base', have two new arguments:
1401 `core_size' and `core'.
1402 Adjust callers.
1403
a900a624
AD
14042002-05-06 Akim Demaille <akim@epita.fr>
1405
1406 * src/reader.c (packgram): No longer end `ritem' with a 0
1407 sentinel: it is not used.
1408
d4e7d3a1
AD
14092002-05-05 Akim Demaille <akim@epita.fr>
1410
1411 New experimental feature: display the lookaheads in the report and
1412 graph.
1413
1414 * src/print (print_core): When --trace-flag, display the rules
1415 lookaheads.
1416 * src/print_graph.c (print_core): Likewise.
1417 Swap the arguments.
1418 Adjust caller.
1419
39ceb25b
AD
14202002-05-05 Akim Demaille <akim@epita.fr>
1421
1422 * tests/torture.at (Many lookaheads): New test.
1423
5372019f
AD
14242002-05-05 Akim Demaille <akim@epita.fr>
1425
1426 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
1427 (GENERATE_MUSCLE_INSERT_TABLE): this.
1428 (output_int_table, output_unsigned_int_table, output_short_table)
1429 (output_token_number_table, output_item_number_table): Replace with...
1430 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
1431 (muscle_insert_short_table, muscle_insert_token_number_table)
1432 (muscle_insert_item_number_table): these.
1433 Adjust all callers.
1434 (prepare_tokens): Don't free `translations', since...
1435 * src/reader.h, src/reader.c (grammar_free): do it.
1436 Move to...
1437 * src/gram.h, src/gram.c (grammar_free): here.
1438 * data/bison.simple, data/bison.c++: b4_token_number_max is now
1439 b4_translate_max.
1440
5df5f6d5
AD
14412002-05-05 Akim Demaille <akim@epita.fr>
1442
1443 * src/output.c (output_unsigned_int_table): New.
1444 (prepare_rules): `i' is unsigned.
1445 `prhs', `rline', `r2' are unsigned int.
1446 Rename muscle `rhs_number_max' as `rhs_max'.
1447 Output muscles `prhs_max', `rline_max', and `r2_max'.
1448 Free rline and r1.
1449 * data/bison.simple, data/bison.c++: Adjust to use these muscles
1450 to compute types instead of constant types.
1451 * tests/regression.at (Web2c Actions): Adjust.
1452
b87f8b21
AD
14532002-05-04 Akim Demaille <akim@epita.fr>
1454
1455 * src/symtab.h (SALIAS, SUNDEF): Rename as...
1456 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
1457 Adjust dependencies.
1458 * src/output.c (token_definitions_output): Be sure not to output a
1459 `#define 'a'' when fed with `%token 'a' "a"'.
1460 * tests/regression.at (Token definitions): New.
1461
8bb936e4
PE
14622002-05-03 Paul Eggert <eggert@twinsun.com>
1463
1464 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
1465 for K&R C.
1466
14672002-05-03 gettextize <bug-gnu-gettext@gnu.org>
1468
1469 * Makefile.am (SUBDIRS): Remove intl.
1470 (EXTRA_DIST): Add config/config.rpath.
1471
53c71a12
AD
14722002-05-03 Akim Demaille <akim@epita.fr>
1473
1474 * data/bison.simple (m4_if): Don't output empty enums.
1475 And actually, output valid enum definitions :(.
1476
289dd0cf
AD
14772002-05-03 Akim Demaille <akim@epita.fr>
1478
1479 * configure.bat: Remove, completely obsolete.
1480 * Makefile.am (EXTRA_DIST): Adjust.
1481 Don't distribute config.rpath...
1482 * config/Makefile.am (EXTRA_DIST): Do it.
1483
db85e524
AD
14842002-05-03 Akim Demaille <akim@epita.fr>
1485
1486 * configure.in (GETTEXT_VERSION): New.
1487 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
1488
83ccf991
AD
14892002-05-03 Akim Demaille <akim@epita.fr>
1490
1491 * data/bison.simple (b4_token_enum): New.
1492 (b4_token_defines): Use it to output tokens both as #define and
1493 enums.
1494 Suggested by Paul Eggert.
1495 * src/output.c (token_definitions_output): Don't output spurious
1496 white spaces.
1497
1f418995
AD
14982002-05-03 Akim Demaille <akim@epita.fr>
1499
1500 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
1501
45119f04
RA
15022002-05-02 Robert Anisko <robert@lrde.epita.fr>
1503
1504 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
1505 Update the stack class, give a try to deque as the default container.
1506
b2d52318
AD
15072002-05-02 Akim Demaille <akim@epita.fr>
1508
1509 * data/bison.simple (yyparse): Do not implement @$ = @1.
1510 (YYLLOC_DEFAULT): Adjust to do it.
1511 * doc/bison.texinfo (Location Default Action): Fix.
1512
3a8b4109
AD
15132002-05-02 Akim Demaille <akim@epita.fr>
1514
1515 * src/reader.c (parse_braces): Merge into...
1516 (parse_action): this.
1517
84614e13
AD
15182002-05-02 Akim Demaille <akim@epita.fr>
1519
1520 * configure.in (ALL_LINGUAS): Remove.
1521 * po/LINGUAS, hr.po: New.
1522
fdbcd8e2
AD
15232002-05-02 Akim Demaille <akim@epita.fr>
1524
1525 Remove the so called hairy (semantic) parsers.
1526
1527 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
1528 * src/gram.h, src/gram.c (semantic_parser): Remove.
1529 (rule_t): Remove the guard and guard_line members.
1530 * src/lex.h (token_t): remove tok_guard.
1531 * src/options.c (option_table): Remove %guard and %semantic_parser
1532 support.
1533 * src/output.c, src/output.h (guards_output): Remove.
1534 (prepare): Adjust.
1535 (token_definitions_output): Don't output the `T'
1536 tokens (???).
1537 (output_skeleton): Don't output the guards.
1538 * src/files.c, src/files.c (attrsfile): Remove.
1539 * src/reader.c (symbol_list): Remove the guard and guard_line
1540 members.
1541 Adjust dependencies.
1542 (parse_guard): Remove.
1543 * data/bison.hairy: Remove.
1544 * doc/bison.texinfo (Environment Variables): Remove occurrences of
1545 BISON_HAIRY.
1546
82b6cb3f
AD
15472002-05-02 Akim Demaille <akim@epita.fr>
1548
1549 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
1550 (parse_guard): Rename the formal argument `stack_offset' as
1551 `rule_length', which is more readable.
1552 Adjust callers.
1553 (copy_at, copy_dollar): Instead of outputting the hard coded
1554 values of $$, $n and so forth, output invocation to b4_lhs_value,
1555 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
900c877b
AD
1556 Note: this patch partially drops `semantic-parser' support: it
1557 always does `rule_length - n', where semantic parsers ought to
1558 always use `-n'.
82b6cb3f
AD
1559 * data/bison.simple, data/bison.c++ (b4_lhs_value)
1560 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
1561
6cbfbcc5
AD
15622002-05-02 Akim Demaille <akim@epita.fr>
1563
1564 * configure.in (AC_INIT): Bump to 1.49b.
1565 (AM_INIT_AUTOMAKE): Short invocation.
1566
b8548114
AD
15672002-05-02 Akim Demaille <akim@epita.fr>
1568
1569 Version 1.49a.
1570
c20cd1fa
AD
15712002-05-01 Akim Demaille <akim@epita.fr>
1572
1573 * src/skeleton.h: Remove.
1574
8a9566d4
AD
15752002-05-01 Akim Demaille <akim@epita.fr>
1576
1577 * src/skeleton.h: Fix the #endif.
1578 Reported by Magnus Fromreide.
1579
8c6d399a
PE
15802002-04-26 Paul Eggert <eggert@twinsun.com>
1581
1582 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
1583 Define if we define YYSTYPE and YYLTYPE, respectively.
b756bb75 1584 (YYCOPY): Fix [] quoting problem in the non-GCC case.
8a9566d4 1585
2b7ed18a
RA
15862002-04-25 Robert Anisko <robert@lrde.epita.fr>
1587
1588 * src/scan-skel.l: Postprocess quadrigraphs.
1589
1590 * src/reader.c (copy_character): New function, used to output
1591 single characters while replacing `[' and `]' with quadrigraphs, to
1592 avoid troubles with M4 quotes.
1593 (copy_comment): Output characters with copy_character.
1594 (read_additionnal_code): Likewise.
1595 (copy_string2): Likewise.
1596 (copy_definition): Likewise.
1597
1598 * tests/calc.at: Exercise M4 quoting.
1599
34a89c50
AD
16002002-04-25 Akim Demaille <akim@epita.fr>
1601
1602 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
1603 between `!' and the command.
1604 Reported by Paul Eggert.
1605
0dd1580a
RA
16062002-04-24 Robert Anisko <robert@lrde.epita.fr>
1607
1608 * tests/calc.at: Exercise prologue splitting.
1609
1610 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
1611 `b4_post_prologue' instead of `b4_prologue'.
1612
1613 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
1614 muscles.
1615 (output): Free pre_prologue_obstack and post_prologue_obstack.
1616 * src/files.h, src/files.c (attrs_obstack): Remove.
1617 (pre_prologue_obstack, post_prologue_obstack): New.
1618 * src/reader.c (copy_definition): Add a parameter to specify the
1619 obstack to fill, instead of using attrs_obstack unconditionally.
1620 (read_declarations): Pass pre_prologue_obstack to copy_definition if
1621 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
1622
83c1796f
PE
16232002-04-23 Paul Eggert <eggert@twinsun.com>
1624
1625 * data/bison.simple: Remove unnecessary commentary and white
1626 space differences from 1_29-branch.
1627 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
1628
1629 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
1630 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
1631 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
1632 constructors or destructors.
1633
1634 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
1635
1207eeac
AD
16362002-04-23 Akim Demaille <akim@epita.fr>
1637
1638 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
1639 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
1640 location with columns.
1641 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
1642 All reported by Paul Eggert.
1643
78ab8f67
AD
16442002-04-22 Akim Demaille <akim@epita.fr>
1645
1646 * src/reduce.c (dump_grammar): Move to...
1647 * src/gram.h, src/gram.c (grammar_dump): here.
1648 Be sure to separate long item numbers.
1649 Don't read the members of a rule's prec if its nil.
1650
133c20e2
AD
16512002-04-22 Akim Demaille <akim@epita.fr>
1652
1653 * src/output.c (table_size, table_grow): New.
1654 (MAXTABLE): Remove, replace uses with table_size.
1655 (pack_vector): Instead of dying when the table is too big, grow it.
1656
9515e8a7
AD
16572002-04-22 Akim Demaille <akim@epita.fr>
1658
1659 * data/bison.simple (yyr1): Its type is that of a token number.
1660 * data/bison.c++ (r1_): Likewise.
1661 * tests/regression.at (Web2c Actions): Adjust.
1662
23c5a174
AD
16632002-04-22 Akim Demaille <akim@epita.fr>
1664
1665 * src/reader.c (token_translations_init): 256 is now the default
1666 value for the error token, i.e., it will be assigned another
1667 number if the user assigned 256 to one of her tokens.
1668 (reader): Don't force 256 to error.
1669 * doc/bison.texinfo (Symbols): Adjust.
1670 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
1671 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
1672 etc. instead of 10, 20, 30 (which was used to `jump' over error
1673 (256) and undefined (2)).
1674
5fbb0954
AD
16752002-04-22 Akim Demaille <akim@epita.fr>
1676
1677 Propagate more token_number_t.
1678
1679 * src/gram.h (token_number_as_item_number)
1680 (item_number_as_token_number): New.
1681 * src/output.c (GENERATE_OUTPUT_TABLE): New.
1682 Use it to create output_item_number_table and
1683 output_token_number_table.
1684 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
1685 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
1686 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
1687 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
1688
4f940944
AD
16892002-04-22 Akim Demaille <akim@epita.fr>
1690
1691 * src/output.h, src/output.c (get_lines_number): Remove.
1692
3ded9a63
AD
16932002-04-19 Akim Demaille <akim@epita.fr>
1694
1695 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
1696 as Lex/Flex'.
1697 (Debugging): More details about enabling the debugging features.
1698 (Table of Symbols): Describe $$, $n, @$, and @n.
1699 Suggested by Tim Josling.
1700
e0c471a9
AD
17012002-04-19 Akim Demaille <akim@epita.fr>
1702
1703 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
1704
fecc10cd
AD
17052002-04-10 Akim Demaille <akim@epita.fr>
1706
1707 * src/system.h: Rely on HAVE_LIMITS_H.
1708 Suggested by Paul Eggert.
1709
51dec47b
AD
17102002-04-09 Akim Demaille <akim@epita.fr>
1711
1712 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
1713 full stderr, and strip it according to the bison options, instead
1714 of composing the error message from different bits.
1715 This makes it easier to check for several error messages.
1716 Adjust all the invocations.
1717 Add an invocation exercising the error token.
1718 Add an invocation demonstrating a stupid error message.
1719 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
1720 Adjust the tests.
1721 Error message are for stderr, not stdout.
1722
007a50a4
AD
17232002-04-09 Akim Demaille <akim@epita.fr>
1724
1725 * src/gram.h, src/gram.c (error_token_number): Remove, use
1726 errtoken->number.
1727 * src/reader.c (reader): Don't specify the user token number (2)
1728 for $undefined, as it uselessly prevents using it.
1729 * src/gram.h (token_number_t): Move to...
1730 * src/symtab.h: here.
1731 (state_t.number): Is a token_number_t.
1732 * src/print.c, src/reader.c: Use undeftoken->number instead of
1733 hard coded 2.
1734 (Even though this 2 is not the same as above: the number of the
1735 undeftoken remains being 2, it is its user token number which
1736 might not be 2).
1737 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
1738 `user_token_number_max'.
1739 Output `undef_token_number'.
1740 * data/bison.simple, data/bison.c++: Use them.
1741 Be sure to map invalid yylex return values to
1742 `undef_token_number'. This saves us from gratuitous SEGV.
1743
1744 * tests/conflicts.at (Solved SR Conflicts)
1745 (Unresolved SR Conflicts): Adjust.
1746 * tests/regression.at (Web2c Actions): Adjust.
1747
06446ccf
AD
17482002-04-08 Akim Demaille <akim@epita.fr>
1749
1750 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
1751 Adding #line.
1752 Remove the duplicate `typedefs'.
1753 (RhsNumberType): Fix the declaration and various other typos.
1754 Use __ofile__.
1755 * data/bison.simple: Use __ofile__.
1756 * src/scan-skel.l: Handle __ofile__.
1757
62a3e4f0
AD
17582002-04-08 Akim Demaille <akim@epita.fr>
1759
1760 * src/gram.h (item_number_t): New, the type of item numbers in
1761 RITEM. Note that it must be able to code symbol numbers as
1762 positive number, and the negation of rule numbers as negative
1763 numbers.
1764 Adjust all dependencies (pretty many).
1765 * src/reduce.c (rule): Remove this `short *' pointer: use
1766 item_number_t.
1767 * src/system.h (MINSHORT, MAXSHORT): Remove.
1768 Include `limits.h'.
1769 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
1770 (shortcpy): Remove.
1771 (MAXTABLE): Move to...
1772 * src/output.c (MAXTABLE): here.
1773 (prepare_rules): Use output_int_table to output rhs.
1774 * data/bison.simple, data/bison.c++: Adjust.
1775 * tests/torture.at (Big triangle): Move the limit from 254 to
1776 500.
1777 * tests/regression.at (Web2c Actions): Ajust.
1778
1779 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
1780 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
1781 passes, but produces negative #line number, once fixed, GCC is
1782 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
1783 C), it passes.
1784 * src/state.h (state_h): Code input lines on ints, not shorts.
1785
bb88b0fc
AD
17862002-04-08 Akim Demaille <akim@epita.fr>
1787
1788 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
1789 and then the grammar.
1790
9a636f47
AD
17912002-04-08 Akim Demaille <akim@epita.fr>
1792
1793 * src/system.h: No longer using strndup.
1794
680e8701
AD
17952002-04-07 Akim Demaille <akim@epita.fr>
1796
1797 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
1798 * src/output.c (output_table_data): Return the longest number.
1799 (prepare_tokens): Output `token_number_max').
1800 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
1801 New.
1802 Use them to define yy_token_number_type/TokenNumberType.
1803 Use this type for yytranslate.
1804 * tests/torture.at (Big triangle): Push the limit from 124 to
1805 253.
1806 * tests/regression.at (Web2c Actions): Adjust.
1807
817e9f41
AD
18082002-04-07 Akim Demaille <akim@epita.fr>
1809
1810 * tests/torture.at (Big triangle): New.
1811 (GNU AWK Grammar, GNU Cim Grammar): Move to...
1812 * tests/existing.at: here.
1813
5123689b
AD
18142002-04-07 Akim Demaille <akim@epita.fr>
1815
1816 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
1817 nritems.
1818 Adjust dependencies.
1819
f3849179
AD
18202002-04-07 Akim Demaille <akim@epita.fr>
1821
1822 * src/reader.c: Normalize increments to prefix form.
1823
bd02036a
AD
18242002-04-07 Akim Demaille <akim@epita.fr>
1825
1826 * src/reader.c, symtab.c: Remove debugging code.
1827
db8837cb
AD
18282002-04-07 Akim Demaille <akim@epita.fr>
1829
1830 Rename all the `bucket's as `symbol_t'.
1831
1832 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
1833 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
1834 * src/symtab.c, src/symtab.h (bucket): Rename as...
1835 (symbol_t): this.
1836 (symbol_list_new, bucket_check_defined, bucket_make_alias)
1837 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
1838 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
1839 (buckets_new, buckets_free, buckets_do): Rename as...
1840 (symbol_list_new, symbol_check_defined, symbol_make_alias)
1841 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
1842 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
1843 (symbols_new, symbols_free, symbols_do): these.
1844
72a23c97
AD
18452002-04-07 Akim Demaille <akim@epita.fr>
1846
1847 Use lib/hash for the symbol table.
1848
1849 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
1850 EOF.
1851 * src/lex.c (lex): Set the `number' member of new terminals.
1852 * src/reader.c (bucket_check_defined, bucket_make_alias)
1853 (bucket_check_alias_consistence, bucket_translation): New.
1854 (reader, grammar_free, readgram, token_translations_init)
1855 (packsymbols): Adjust.
1856 (reader): Number the predefined tokens.
1857 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
1858 for predefined tokens.
1859 * src/symtab.h (bucket): Remove all the hash table related
1860 members.
1861 * src/symtab.c (symtab): Replace by...
1862 (bucket_table): this.
1863 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
1864 (buckets_new, buckets_do): New.
1865
280a38c3
AD
18662002-04-07 Akim Demaille <akim@epita.fr>
1867
1868 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
1869 (start_symbol, max_user_token_number, semantic_parser)
1870 (error_token_number): Initialize.
1871 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
1872 Initialize.
1873 (reader): Don't.
1874 (errtoken, eoftoken, undeftoken, axiom): Extern.
1875
03b31c0c
AD
18762002-04-07 Akim Demaille <akim@epita.fr>
1877
1878 * src/gram.h (rule_s): prec and precsym are now pointers
1879 to the bucket giving the priority/associativity.
1880 Member `associativity' removed: useless.
1881 * src/reduce.c, src/conflicts.c: Adjust.
1882
8b3df748
AD
18832002-04-07 Akim Demaille <akim@epita.fr>
1884
1885 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
1886 Properly escape the symbols' TAG when outputting them.
1887
e601aa1d
AD
18882002-04-07 Akim Demaille <akim@epita.fr>
1889
1890 * src/lalr.h (LA): Is a bitsetv, not bitset*.
1891
b0299a2e
AD
18922002-04-07 Akim Demaille <akim@epita.fr>
1893
1894 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
1895 (LArule): this, which is an array to rule_t*.
1896 * src/print.c, src/conflicts.c: Adjust.
1897
d7e1f00c
AD
18982002-04-07 Akim Demaille <akim@epita.fr>
1899
1900 * src/gram.h (rule_t): Rename `number' as `user_number'.
1901 `number' is a new member.
1902 Adjust dependencies.
1903 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
1904
cc9305dd
AD
19052002-04-07 Akim Demaille <akim@epita.fr>
1906
1907 As a result of the previous patch, it is no longer needed
1908 to reorder ritem itself.
1909
1910 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
1911
b0940840
AD
19122002-04-07 Akim Demaille <akim@epita.fr>
1913
1914 Be sure never to walk through RITEMS, but use only data related to
1915 the rules themselves. RITEMS should be banished.
1916
1917 * src/output.c (output_token_translations): Rename as...
1918 (prepare_tokens): this.
1919 In addition to `translate', prepare the muscles `tname' and
1920 `toknum', which were handled by...
1921 (output_rule_data): this.
1922 Remove, and move the remainder of its outputs into...
1923 (prepare_rules): this new routines, which also merges content from
1924 (output_gram): this.
1925 (prepare_rules): Be sure never to walk through RITEMS.
1926 (output_stos): Rename as...
1927 (prepare_stos): this.
1928 (output): Always invoke prepare_states, after all, just don't use it
1929 in the output if you don't need it.
1930
643a5994
AD
19312002-04-07 Akim Demaille <akim@epita.fr>
1932
1933 * src/LR0.c (new_state): Display `nstates' as the name of the
1934 newly created state.
1935 Adjust to initialize first_state and last_state if needed.
1936 Be sure to distinguish the initial from the final state.
1937 (new_states): Create the itemset of the initial state, and use
1938 new_state.
1939 * src/closure.c (closure): Now that the initial state has its
1940 items properly set, there is no need for a special case when
1941 creating `ruleset'.
1942
1943 As a result, now the rule 0, reducing to $axiom, is visible in the
1944 outputs. Adjust the test suite.
1945
1946 * tests/conflicts.at (Solved SR Conflicts)
1947 (Unresolved SR Conflicts): Adjust.
1948 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
1949 * tests/conflicts.at (S/R in initial): New.
1950
b4c4ccc2
AD
19512002-04-07 Akim Demaille <akim@epita.fr>
1952
1953 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
1954 the RHS of the rules.
1955 * src/output.c (output_gram): Likewise.
1956
bba97eb2
AD
19572002-04-07 Akim Demaille <akim@epita.fr>
1958
1959 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
1960 bucket.
1961 Adjust all dependencies.
1962 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
1963 `number' of the buckets too.
1964 * src/gram.h: Include `symtab.h'.
1965 (associativity): Move to...
1966 * src/symtab.h: here.
1967 No longer include `gram.h'.
1968
c3b407f4
AD
19692002-04-07 Akim Demaille <akim@epita.fr>
1970
1971 * src/gram.h, src/gram.c (rules_rhs_length): New.
1972 (ritem_longest_rhs): Use it.
1973 * src/gram.h (rule_t): `number' is a new member.
1974 * src/reader.c (packgram): Set it.
1975 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
1976 the end of `rules', and count them out of `nrules'.
1977 (reduce_output, dump_grammar): Adjust.
1978 * src/print.c (print_grammar): It is no longer needed to check for
1979 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
1980 * tests/reduce.at (Reduced Automaton): New test.
1981
11652ab3
AD
19822002-04-07 Akim Demaille <akim@epita.fr>
1983
1984 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
1985 lacking `+ 1' to nrules, Bison reported as useless a token if it
1986 was used solely to set the precedence of the last rule...
1987
26b23c1a
AD
19882002-04-07 Akim Demaille <akim@epita.fr>
1989
1990 * data/bison.c++, data/bison.simple: Don't output the current file
1991 name in #line, to avoid useless diffs between two identical
1992 outputs under different names.
1993
18bcecb0
AD
19942002-04-07 Akim Demaille <akim@epita.fr>
1995
1996 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
1997 Normalize loops to using `< nrules + 1', not `<= nrules'.
1998
fa770c86
AD
19992002-04-07 Akim Demaille <akim@epita.fr>
2000
2001 * TODO: Update.
2002
d9b739c3
AD
20032002-04-07 Akim Demaille <akim@epita.fr>
2004
2005 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
2006 bucket.value as bucket.number.
2007
99013900
AD
20082002-04-07 Akim Demaille <akim@epita.fr>
2009
2010 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
2011 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
2012 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
2013 RHS, instead of being an index in RITEMS.
2014
e966383b
PE
20152002-04-04 Paul Eggert <eggert@twinsun.com>
2016
2017 * doc/bison.texinfo: Update copyright date.
2018 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
2019 (Symbols): Warn about running Bison in one character set,
2020 but compiling and/or running in an incompatible one.
2021 Warn about character code 256, too.
2022
20232002-04-03 Paul Eggert <eggert@twinsun.com>
2024
2025 * src/bison.data (YYSTACK_ALLOC): Depend on whether
2026 YYERROR_VERBOSE is nonzero, not whether it is defined.
2027
2028 Merge changes from bison-1_29-branch.
c307773e 2029
8d6c48b9
PE
20302002-03-20 Paul Eggert <eggert@twinsun.com>
2031
2032 Merge fixes from Debian bison_1.34-1.diff.
2033
2034 * configure.in (AC_PREREQ): 2.53.
2035
e53c6322
AD
20362002-03-20 Akim Demaille <akim@epita.fr>
2037
2038 * src/conflicts.c (log_resolution): Argument `resolution' is const.
2039
9ffbeca7
PE
20402002-03-19 Paul Eggert <eggert@twinsun.com>
2041
21db0b2a
PE
2042 * src/bison.simple (YYCOPY): New macro.
2043 (YYSTACK_RELOCATE): Use it.
2044 Remove Type arg; no longer needed. All callers changed.
2045 (yymemcpy): Remove; no longer needed.
2046
9ffbeca7
PE
2047 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
2048 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
2049
642cb8f8
AD
20502002-03-19 Akim Demaille <akim@epita.fr>
2051
2052 Test and fix the #line outputs.
2053
2054 * tests/atlocal.at (GCC): New.
2055 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
2056 (Prologue synch line, ,%union synch line, Postprologue synch line)
2057 (Action synch line, Epilogue synch line): New tests.
2058 * src/reader.c (parse_union_decl): Define the muscle stype_line.
2059 * data/bison.simple, data/bison.c++: Use it.
2060
3c31a486
AD
20612002-03-19 Akim Demaille <akim@epita.fr>
2062
2063 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
2064 (Solved SR Conflicts, %expect not enough, %expect right)
2065 (%expect too much): Move to...
2066 * tests/conflicts.at: this new file.
2067
0d8bed56
AD
20682002-03-19 Akim Demaille <akim@epita.fr>
2069
2070 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
2071 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
2072 that we can move to enums for instance.
2073 * src/output.c (token_definitions_output): Output a list of
2074 `token-name, token-number' instead of the #define.
2075 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
2076
9208d17f
AD
20772002-03-14 Akim Demaille <akim@epita.fr>
2078
2079 Use Gettext 0.11.1.
2080
af27eacb
RA
20812002-03-09 Robert Anisko <robert@lrde.epita.fr>
2082
2083 * data/bison.c++: Make the user able to add members to the generated
2084 parser by subclassing.
2085
9101a310
RA
20862002-03-05 Robert Anisko <robert@lrde.epita.fr>
2087
2088 * src/reader.c (read_additionnal_code): `c' should be an integer, not
2089 a character.
2090 Reported by Nicolas Tisserand and Nicolas Burrus.
2091
fff9bf0b
RA
20922002-03-04 Robert Anisko <robert@lrde.epita.fr>
2093
2094 * src/reader.c: Warn about lacking semi-colons, do not complain.
2095
64dba31e
RA
20962002-03-04 Robert Anisko <robert@lrde.epita.fr>
2097
2098 * data/bison.c++: Remove a debug line.
2099
374f5a14
RA
21002002-03-04 Robert Anisko <robert@lrde.epita.fr>
2101
2102 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
2103 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
2104 provide a default implementation.
2105
bfcf1f3a
AD
21062002-03-04 Akim Demaille <akim@epita.fr>
2107
2108 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
2109 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
2110 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
2111 * tests/semantic.at (Parsing Guards): Similarly.
2112 * src/reader.at (readgram): Complain if the last rule is not ended
2113 with a semi-colon.
2114
65ccf9fc
AD
21152002-03-04 Akim Demaille <akim@epita.fr>
2116
2117 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
2118 * src/closure.c: here.
2119 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
2120 RTC.
2121 * src/warshall.h, src/warshall.c: Remove.
2122 * tests/sets.at (Broken Closure): Adjust.
2123
d0039cbc
AD
21242002-03-04 Akim Demaille <akim@epita.fr>
2125
2126 * src/output.c (output_skeleton): tempdir is const.
2127 bytes_read is unused.
2128
345cea78
AD
21292002-03-04 Akim Demaille <akim@epita.fr>
2130
2131 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
2132 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
2133 Update.
2134 From Michael Hayes.
2135
564801f7
AD
21362002-03-04 Akim Demaille <akim@epita.fr>
2137
2138 * src/closure.c (closure): `r' is unused.
2139
e5352bc7
AD
21402002-03-04 Akim Demaille <akim@epita.fr>
2141
2142 * tests/sets.at (Broken Closure): Add the ending `;'.
2143 * src/reader.at (readgram): Complain if a rule is not ended with a
2144 semi-colon.
2145
914feea9
AD
21462002-03-04 Akim Demaille <akim@epita.fr>
2147
2148 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
2149 (count_sr_conflicts): Use bitset_count.
2150 * src/reduce.c (inaccessable_symbols): Ditto.
2151 (bits_size): Remove.
2152 * src/warshall.h, src/warshall.c: Convert to bitsetv.
2153
f0250de6
AD
21542002-03-04 Akim Demaille <akim@epita.fr>
2155
2156 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
2157 * src/reduce.c: Remove the `bitset_zero's following the
2158 `bitset_create's, as now it is performed by the latter.
2159
ef017502
AD
21602002-03-04 Akim Demaille <akim@epita.fr>
2161
2162 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
2163 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
2164 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
2165 latest sources from Michael.
2166
76514394
AD
21672002-03-04 Akim Demaille <akim@epita.fr>
2168
2169 * src/output.c (output): Don't free the grammar.
2170 * src/reader.c (grammar_free): New.
2171 * src/main.c (main): Call it and don't free symtab here.
2172
55024580
AD
21732002-03-04 Akim Demaille <akim@epita.fr>
2174
2175 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
2176 before returning.
2177 Reported by Benoit Perrot.
2178
f9abaa2c
AD
21792002-03-04 Akim Demaille <akim@epita.fr>
2180
2181 Use bitset operations when possible, not loops over bits.
2182
2183 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
2184 bitset_or.
2185 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
2186 * src/reduce.c (useless_nonterminals): Formatting changes.
2187 * src/warshall.c (TC): Use bitset_or.
2188
0e721e75
AD
21892002-03-04 Akim Demaille <akim@epita.fr>
2190
2191 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
2192 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
2193 Ditto.
2194
0fb1ffb1
AD
21952002-03-04 Akim Demaille <akim@epita.fr>
2196
2197 * src/lalr.c (F): Now a bitset*.
2198 Adjust all dependencies.
2199
b86796bf
AD
22002002-03-04 Akim Demaille <akim@epita.fr>
2201
2202 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
2203 Adjust all dependencies.
2204
602bbf31
AD
22052002-03-04 Akim Demaille <akim@epita.fr>
2206
2207 * src/L0.c, src/LR0.h (nstates): Be size_t.
2208 Adjust comparisons (signed vs unsigned).
2209 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
2210 bitset*.
2211 Adjust all dependencies.
2212
d8a0245c
AD
22132002-03-04 Akim Demaille <akim@epita.fr>
2214
2215 * src/closure.c (firsts): Now, also a bitset.
2216 Adjust all dependencies.
2217 (varsetsize): Remove, now unused.
2218 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
2219
34ba9743
AD
22202002-03-04 Akim Demaille <akim@epita.fr>
2221
2222 * src/print.c: Convert to use bitset.h, not hand coded iterations
2223 over ints.
2224
ed86e78c
AD
22252002-03-04 Akim Demaille <akim@epita.fr>
2226
2227 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
2228
dfdb1797
AD
22292002-03-04 Akim Demaille <akim@epita.fr>
2230
2231 * src/closure.c (ruleset): Be a bitset.
2232 (rulesetsize): Remove.
2233
7086e707
AD
22342002-03-04 Akim Demaille <akim@epita.fr>
2235
2236 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
2237 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
2238 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
2239 * src/closure.c (fderives): Be an array of bitsets.
2240
98254360
RA
22412002-02-28 Robert Anisko <robert@lrde.epita.fr>
2242
2243 * data/bison.c++: Merge the two generated headers. Insert a copyright
2244 notice in each output file.
2245
a75c057f
AD
22462002-02-28 Akim Demaille <akim@epita.fr>
2247
2248 * data/bison.c++: Copy the prologue of bison.simple to fetch
2249 useful M4 definitions, such as b4_header_guard.
2250
06b00abc
AD
22512002-02-25 Akim Demaille <akim@epita.fr>
2252
2253 * src/getargs.c (version): Give the name of the authors, and use a
a75c057f
AD
2254 translator friendly scheme for the bgr
2255 copyright notice.
06b00abc 2256
70e7d534
AD
22572002-02-25 Akim Demaille <akim@epita.fr>
2258
2259 * src/output.c (header_output): Remove, now handled completely via
2260 M4.
2261
abe017f6
AD
22622002-02-25 Akim Demaille <akim@epita.fr>
2263
2264 * m4/m4.m4: New, from CVS Autoconf.
2265 * configure.in: Invoke it.
2266 * src/output.c (output_skeleton): Use its result instead of the
2267 hard coded name.
2268
381fb12e
AD
22692002-02-25 Akim Demaille <akim@epita.fr>
2270
2271 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
2272 Fileutils 4.1.5.
2273 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
2274 * src/output.c (output_skeleton): Use mkstemp to create a real
2275 temporary file.
2276 Move the filling of `skeleton' and its muscle to...
2277 (prepare): here.
2278 (output): Move the definition of the prologue muscle to...
2279 (prepare): here.
2280 * src/system.h (DEFAULT_TMPDIR): New.
2281
6f38107f
PE
22822002-02-14 Paul Eggert <eggert@twinsun.com>
2283
2284 Remove the support for C++ namespace cleanliness; it was
2285 causing more problems than it was curing, since it didn't work
2286 properly on some nonstandard C++ compilers. This can wait
2287 for a proper C++ parser.
2288
2289 * NEWS: Document this.
2290 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
2291 of C++, as it's treated like C now.
2292 * src/bison.simple (YYSTD): Remove.
2293 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
2294 Treat C++ just like Standard C instead of trying to support
2295 namespace cleanliness.
2296
80cce3da
AD
22972002-02-14 Akim Demaille <akim@epita.fr>
2298
2299 * tests/regression.at (else): Adjust to Andreas' change.
2300
842e8679
AD
23012002-02-14 Akim Demaille <akim@epita.fr>
2302
2303 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
2304
4bda3f10
AD
23052002-02-13 Andreas Schwab <schwab@suse.de>
2306
2307 * src/output.c (output_rule_data): Don't output NULL, it might
2308 not be defined yet.
2309
4162fa07 23102002-02-11 Robert Anisko <robert@lrde.epita.fr>
b418ecd8 2311
4162fa07
RA
2312 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
2313 (Copyright notice): Update.
b418ecd8 2314
bd16a5dc
AD
23152002-02-11 Akim Demaille <akim@epita.fr>
2316
2317 * tests/regression.at (%nonassoc and eof): Don't include
2318 nonportable headers.
2319
8d69a1a3
RA
23202002-02-08 Robert Anisko <robert@lrde.epita.fr>
2321
2322 * data/bison.c++: Correct error recovery. Make the user able to
2323 initialize the starting location.
2324
9b2d0677
AD
23252002-02-07 Akim Demaille <akim@epita.fr>
2326
2327 * tests/input.at: New.
2328
69e2658b
RA
23292002-02-07 Robert Anisko <robert@lrde.epita.fr>
2330
2331 * data/bison.c++: Replace some direct m4 expansions by constants. Be
9b2d0677 2332 more consistent when naming methods and variables. Put preprocessor
69e2658b
RA
2333 directives around tables only needed for debugging.
2334
4aacc3a7
RA
23352002-02-07 Robert Anisko <robert@lrde.epita.fr>
2336
2337 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
2338 C++ parsers.
2339 (yy::b4_name::parse): Use print_.
2340
762a801e
RA
23412002-02-07 Robert Anisko <robert@lrde.epita.fr>
2342
2343 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
2344
4bb2bc3f
RA
23452002-02-07 Robert Anisko <robert@lrde.epita.fr>
2346
2347 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
2348 C++ parsers.
2349 (yy::b4_name::parse): Build verbose error messages, and use error_.
2350
6b45a3ca
RA
23512002-02-06 Robert Anisko <robert@lrde.epita.fr>
2352
2353 * data/bison.c++: Fix m4 quoting in comments.
2354
50997c6e
RA
23552002-02-06 Robert Anisko <robert@lrde.epita.fr>
2356
2357 * data/bison.c++: Adjust the parser code. Fix some muscles that were
2358 not expanded by m4.
2359
3f3eed27
AD
23602002-02-05 Akim Demaille <akim@epita.fr>
2361
2362 * data/bison.c++: Adjust to the M4 back end.
2363 More is certainly needed.
2364
be2a1a68
AD
23652002-02-05 Akim Demaille <akim@epita.fr>
2366
2367 Give a try to M4 as a back end.
2368
2369 * lib/readpipe.c: New, from wdiff.
2370 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
2371 BISON_HAIRY.
2372 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
2373 specific values. Now it is m4 that performs the lookup.
2374 * src/parse-skel.y: Remove.
2375 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
2376 * src/output.c (actions_output, guards_output)
2377 (token_definitions_output): No longer keeps track of the output
2378 line number, hence remove the second argument.
2379 (guards_output): Check against the guard member of a rule, not the
2380 action member.
2381 Adjust callers.
2382 (output_skeleton): Don't look for the skeleton location, let m4 do
2383 that.
2384 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
2385 file will be used.
2386 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
2387 (prepare): Given that for the time being changesyntax is not
2388 usable in M4, rename the muscles using `-' to `_'.
2389 Define `defines_flag', `output_parser_name' and `output_header_name'.
2390 * src/output.h (actions_output, guards_output)
2391 (token_definitions_output): Adjust prototypes.
2392 * src/scan-skel.l: Instead of scanning the skeletons, it now
2393 processes the output of m4: `__oline__' and `#output'.
2394 * data/bison.simple: Adjust to be used by M4(sugar).
2395 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
2396 to date.
2397 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
2398 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
2399 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
2400 shamelessly stolen from CVS Autoconf.
2401
beda758b
AD
24022002-02-05 Akim Demaille <akim@epita.fr>
2403
2404 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
2405 * configure.in: Check for the declarations of free and malloc.
2406 * src/muscle_tab.c: Adjust.
2407
5ece6d43
AD
24082002-02-05 Akim Demaille <akim@epita.fr>
2409
2410 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
2411 which have no values.
2412
5bb18f9a
AD
24132002-02-05 Akim Demaille <akim@epita.fr>
2414
2415 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
2416 * data/: here.
2417
894dd62e
PE
24182002-01-29 Paul Eggert <eggert@twinsun.com>
2419
2420 * src/bison.simple (YYSIZE_T): Do not define merely because
2421 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
2422 On some platforms, <alloca.h> does not declare YYSTD (size_t).
2423
82841af7
AD
24242002-01-27 Akim Demaille <akim@epita.fr>
2425
2426 Fix `%nonassoc and eof'.
2427
2428 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
2429 which were not properly copied! Replace
2430 memcpy (res->errs, src->errs, src->nerrs);
2431 with
2432 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
2433 !!!
2434 * tests/regression.at (%nonassoc and eof): Adjust to newest
2435 Autotest: `.' is not in the PATH.
2436
318b76e9
AD
24372002-01-27 Akim Demaille <akim@epita.fr>
2438
2439 * tests/sets.at (AT_EXTRACT_SETS): New.
2440 (Nullable): Use it.
2441 (Firsts): New.
2442
30d2f3d5
AD
24432002-01-26 Akim Demaille <akim@epita.fr>
2444
2445 * tests/actions.at, tests/calc.at, tests/headers.at,
2446 * tests/torture.at: Adjust to the newest Autotest which no longer
2447 forces `.' in the PATH.
2448
30f8c395
AD
24492002-01-25 Akim Demaille <akim@epita.fr>
2450
2451 * tests/regression.at (%nonassoc and eof): New.
2452 Suggested by Robert Anisko.
2453
29ae55f1
AD
24542002-01-24 Akim Demaille <akim@epita.fr>
2455
2456 Bison dumps core when trying to complain about broken input files.
2457 Reported by Cris van Pelt.
2458
2459 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
2460 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
2461 into...
2462 (Invalid inputs): Strengthen: exercise parse_percent_token.
2463
2b548aa6
RA
24642002-01-24 Robert Anisko <robert.anisko@epita.fr>
2465
2466 * src/Makefile.am: Add bison.c++.
2467 * src/bison.c++: New skeleton.
2468
bb0146c2
AD
24692002-01-21 Paolo Bonzini <bonzini@gnu.org>
2470
2471 * po/it.po: New.
2472
bec30531
AD
24732002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
2474
2475 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
2476
fc6edc45
MA
24772002-01-20 Marc Autret <marc@gnu.org>
2478
2479 * src/files.c (compute_output_file_names): Fix
2480
5e5d5415
MA
24812002-01-20 Marc Autret <marc@gnu.org>
2482
2483 * tests/output.at: New test.
2484 * src/files.c (compute_base_names): Don't map extensions when
2485 the YACC flag is set, use defaults.
2486 Reported by Evgeny Stambulchik.
2487
44ea3fbd
MA
24882002-01-20 Marc Autret <marc@gnu.org>
2489
bb0146c2 2490 * src/system.h: Need to define __attribute__ away for non-GCC
44ea3fbd
MA
2491 compilers as well (i.e. the vendor C compiler).
2492 Suggested by Albert Chin-A-Young.
2493
338963d1
TVH
24942002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
2495
2496 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
2497 canonical definition.
2498 * src/system.h: Use the canonical definition for PARAMS (avoids
2499 a conflict with the macro from lib/hash.h).
2500
c57b2479
AD
25012002-01-11 Akim Demaille <akim@epita.fr>
2502
2503 * configure.in: Use AC_FUNC_STRNLEN.
d9e9746c 2504 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
c57b2479 2505
b85810ae
AD
25062002-01-09 Akim Demaille <akim@epita.fr>
2507
2508 * src/files.c, src/files.h (output_infix): New.
2509 (tab_extension): Remove.
2510 (compute_base_names): Compute the former, drop the latter.
2511 * src/output.c (prepare): Insert the muscles `output-infix', and
2512 `output-suffix'.
2513 * src/parse-skel.y (string, string.1): New.
2514 (section.header): Use it.
2515 (section.yacc): Remove.
2516 (prefix): Remove too.
2517 * src/scan-skel.l: Adjust.
2518 * src/bison.simple, src/bison.hairy: Adjust.
2519
cae60122
AD
25202002-01-09 Akim Demaille <akim@epita.fr>
2521
2522 * configure.in (WERROR_CFLAGS): Compute it.
2523 * src/Makefile.am (CFLAGS): Pass it.
2524 * tests/atlocal.in (CFLAGS): Idem.
2525 * src/files.c: Fix a few warnings.
2526 (get_extension_index): Remove, unused.
2527
ae404801
AD
25282002-01-08 Akim Demaille <akim@epita.fr>
2529
2530 * src/getargs.c (AS_FILE_NAME): New.
2531 (getargs): Use it to convert DOSish file names.
2532 * src/files.c (base_name): Rename as full_base_name to avoid
2533 clashes with `base_name ()'.
2534 (filename_split): New.
2535 (compute_base_names): N-th rewrite, using filename_split.
2536
22312b71
AD
25372002-01-08 Akim Demaille <akim@epita.fr>
2538
2539 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
2540 New, stolen from the Fileutils 4.1.
2541 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
2542 * configure.in: Check for the presence of memrchr, and of its
2543 prototype.
2544
a67cef01
TVH
25452002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
2546
2547 * lib/hash.h (__P): Added definition for this macro.
2548 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
2549 BUILT_SOURCES, to ensure they are generated first.
2550 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
2551 %error-verbose to allow bootstrapping with bison 1.30x.
2552
2b25d624
AD
25532002-01-06 Akim Demaille <akim@epita.fr>
2554
2555 * src/reader.c (parse_braces): Don't fetch the next char, the
2556 convention is to fetch on entry.
2557 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
2558 'switch' without a following semicolon.
2559 * tests/regression.at (braces parsing): New.
2560
3460813b
AD
25612002-01-06 Akim Demaille <akim@epita.fr>
2562
2563 Bison is dead wrong in its RR conflict reports.
2564
2565 * tests/torture.at (GNU Cim Grammar): New.
2566 * src/conflicts.c (count_rr_conflicts): Fix.
2567
73784c64
AD
25682002-01-06 Akim Demaille <akim@epita.fr>
2569
2570 Creating package.m4 from configure.ac causes too many problems.
2571
2572 * tests/Makefile.am (package.m4): Create it by hand,
2573 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
2574
25d81090
AD
25752002-01-06 Akim Demaille <akim@epita.fr>
2576
2577 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
2578 skeleton.h.
2579
a9b8959e
PE
25802002-01-04 Paul Eggert <eggert@twinsun.com>
2581
2582 * doc/bison.texinfo (Debugging):
2583 Remove YYSTDERR; it's no longer defined or used.
2584 Also, s/cstdio.h/cstdio/.
2585
25d81090
AD
25862002-01-03 Akim Demaille <akim@epita.fr>
2587
2588 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
2589
1109455c
AD
25902002-01-03 Akim Demaille <akim@epita.fr>
2591
2592 * src/parse-skel.y (process_skeleton): Don't bind the parser's
2593 tracing code to --trace, wait for a better --trace option, with
2594 args.
2595
7ea5e977
AD
25962002-01-03 Akim Demaille <akim@epita.fr>
2597
2598 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
2599 The ISO C++ standard is extremely clear about it: stderr is
2600 considered a macro, not a regular symbol (see table 94 `Header
2601 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
2602 Therefore std:: does not apply to it. It still does with fprintf.
2603 Also, s/cstdio.h/cstdio/.
2604
fab5b110
AD
26052002-01-03 Akim Demaille <akim@epita.fr>
2606
2607 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
2608 for non system headers.
2609
aed7fd9b
AD
26102002-01-02 Akim Demaille <akim@epita.fr>
2611
2612 Equip the skeleton chain with location tracking, runtime trace,
2613 pure parser and scanner.
2614
2615 * src/parse-skel.y: Request a pure parser, locations, and prefix
2616 renaming.
2617 (%union): Having several members with the same type does not help
2618 type mismatches, simplify.
2619 (YYPRINT, yyprint): New.
2620 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
2621 (skel_error): this.
2622 Handle locations.
2623 * src/scan-skel.l: Adjust to these changes.
2624 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
2625 (LOCATION_PRINT, skel_control_t): New.
2626
24fad99e
AD
26272001-12-30 Akim Demaille <akim@epita.fr>
2628
2629 * src/parse-skel.y: Get rid of the shift/reduce conflict:
2630 replace `gb' with BLANKS.
2631 * src/scan-skel.l: Adjust.
2632
a4b36db4
AD
26332001-12-30 Akim Demaille <akim@epita.fr>
2634
2635 * src/system.h: We don't need nor want bcopy.
2636 Throw away MS-DOS crap: we don't need getpid.
2637 * configure.in: We don't need strndup. It was even causing
2638 problems: because Flex includes the headers *before* us,
2639 _GNU_SOURCE is not defined by config.h, and therefore strndup was
2640 not visible.
2641 * lib/xstrndup.c: New.
2642 * src/scan-skel.l: Use it.
2643 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
2644 * src/parse-skel.y: Use %directives instead of #defines.
2645
1239777d
AD
26462001-12-30 Akim Demaille <akim@epita.fr>
2647
2648 * src/skeleton.h: New.
2649 * src/output.c (output_parser, output_master_parser): Remove, dead
2650 code.
2651 * src/output.h (get_lines_number, actions_output, guards_output)
2652 (token_definitions_output): Prototype them.
2653 * src/parse-skel.y: Add the license notice.
2654 Include output.h and skeleton.h.
2655 (process_skeleton): Returns void, and takes a single parameter.
2656 * src/scan-skel.l: Add the license notice.
2657 Include skeleton.h.
2658 Don't use %option yylineno: it seems that then Flex imagines
2659 REJECT has been used, and therefore it won't reallocate its
2660 buffers (which makes no other sense to me than a bug). It results
2661 in warnings for `unused: yy_flex_realloc'.
2662
9b3add5b
RA
26632001-12-30 Robert Anisko <robert.anisko@epita.fr>
2664
2665 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
2666 (MUSCLE_INSERT_PREFIX): ...to there.
2667 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
2668 (MUSCLE_INSERT_PREFIX): Move from here...
2669
2670 * src/bison.hairy: Add a section directive. Put braces around muscle
2671 names. This parser skeleton is still broken, but Bison should not
2672 choke on a bad muscle 'syntax'.
2673 * src/bison.simple: Add a section directive. Put braces around muscle
2674 names.
2675
2676 * src/files.h (strsuffix, stringappend): Add declarations.
2677 (tab_extension): Add declaration.
2678 (short_base_name): Add declaration.
2679
2680 * src/files.c (strsuffix, stringappend): No longer static. These
2681 functions are used in the skeleton parser.
2682 (tab_extension): New.
2683 (compute_base_names): Use the computations done in this function
fab5b110 2684 to guess if the generated parsers should have '.tab' in their
9b3add5b
RA
2685 names.
2686 (short_base_name): No longer static.
2687
2688 * src/output.c (output_skeleton): New.
2689 (output): Disable call to output_master_parser, and give a try to
2690 a new skeleton handling system.
2691 (guards_output, actions_output): No longer static.
2692 (token_definitions_output, get_lines_number): No longer static.
2693
2694 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
2695
fab5b110 2696 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
9b3add5b
RA
2697 parse-skel.y.
2698
2699 * src/parse-skel.y: New file.
2700 * src/scan-skel.l: New file.
2701
b5b61c61
AD
27022001-12-29 Akim Demaille <akim@epita.fr>
2703
2704 %name-prefix is broken.
2705
2706 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
2707 Adjust all dependencies.
2708 * tests/headers.at (export YYLTYPE): Strengthen this test: use
2709 %name-prefix.
2710
2711 Renaming yylval but not yylloc is not consistent. Now we do.
2712
2713 * src/bison.simple: Prefix yylloc if used.
2714 * doc/bison.texinfo (Decl Summary): Document that.
2715
8c9a50be
AD
27162001-12-29 Akim Demaille <akim@epita.fr>
2717
2718 * doc/bison.texinfo: Promote `%long-directive' over
2719 `%long_directive'.
2720 Remove all references to fixed-output-files, yacc is enough.
2721
d99361e6
AD
27222001-12-29 Akim Demaille <akim@epita.fr>
2723
2724 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
2725 user prologue. These are defaults.
2726 * tests/actions.at (Mid-rule actions): Make sure the user can
2727 define YYDEBUG and YYERROR_VERBOSE.
2728
b9cecb91
AD
27292001-12-29 Akim Demaille <akim@epita.fr>
2730
2731 * src/output.c (header_output): Don't forget to export YYLTYPE and
2732 yylloc.
2733 * tests/headers.at (export YYLTYPE): New, make sure it does.
2734 * tests/regression.at (%union and --defines, Invalid CPP headers):
2735 Move to...
2736 * tests/headers.at: here.
2737
aea13e97
AD
27382001-12-29 Akim Demaille <akim@epita.fr>
2739
2740 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
2741
931394cb
AD
27422001-12-29 Akim Demaille <akim@epita.fr>
2743
2744 * tests/actions.at (Mid-rule actions): Output on a single line
2745 instead of several.
2746
704a47c4
AD
27472001-12-29 Akim Demaille <akim@epita.fr>
2748
2749 * doc/bison.texinfo: Formatting changes.
2750
091e20bb
AD
27512001-12-29 Akim Demaille <akim@epita.fr>
2752
2753 Don't store the token defs in a muscle, just be ready to output it
2754 on command. Now possible via `symbols'. Fixes a memory leak.
2755
2756 * src/output.c (token_definitions_output): New.
2757 (output_parser, header_output): Use it.
2758 * src/reader.c (symbols_save): Remove.
2759
cce71710
AD
27602001-12-29 Akim Demaille <akim@epita.fr>
2761
2762 * src/bison.simple: Do not provide a default for YYSTYPE and
2763 YYLTYPE before the user's prologue. Otherwise it's hardly... a
2764 default.
2765
82c035a8
AD
27662001-12-29 Akim Demaille <akim@epita.fr>
2767
2768 Mid-rule actions are simply... ignored!
2769
2770 * src/reader.c (readgram): Be sure to attach mid-rule actions to
2771 the empty-rule associated to the dummy symbol, not to the host
2772 rule.
2773 * tests/actions.at (Mid-rule actions): New.
2774
8419d367
AD
27752001-12-29 Akim Demaille <akim@epita.fr>
2776
2777 Memory leak.
2778
2779 * src/reader.c (reader): Free grammar.
2780
375d5806
AD
27812001-12-29 Akim Demaille <akim@epita.fr>
2782
2783 Memory leak.
2784
2785 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
2786 since it allocates it for each state, although only one is needed.
2787 (allocate_storage): Do it here.
2788
f51cb8ff
AD
27892001-12-29 Akim Demaille <akim@epita.fr>
2790
2791 * src/options.h, src/options.c (create_long_option_table): Rename
2792 as...
2793 (long_option_table_new): this, with a clearer prototype.
2794 (percent_table): Remove, unused,
2795 * src/getargs.c (getargs): Adjust.
2796
29e88316
AD
27972001-12-29 Akim Demaille <akim@epita.fr>
2798
2799 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
2800 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
2801 as states.
2802
b9f71f19
AD
28032001-12-29 Akim Demaille <akim@epita.fr>
2804
2805 * src/lalr.c (build_relations): Rename `states' as `states1'.
2806 Sorry, I don't understand exactly what it is, no better name...
2807
1a2b5d37
AD
28082001-12-29 Akim Demaille <akim@epita.fr>
2809
2810 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
2811 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
2812 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
2813 as rules.
2814
1cca533e
AD
28152001-12-29 Akim Demaille <akim@epita.fr>
2816
2817 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
2818 ago.
2819
c03ae966
AD
28202001-12-29 Akim Demaille <akim@epita.fr>
2821
2822 * src/reader.c, src/reader.h (user_toknums): Remove.
2823 Adjust all users to use symbols[i]->user_token_number.
2824
5a670b1e
AD
28252001-12-29 Akim Demaille <akim@epita.fr>
2826
2827 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
2828 Adjust all users to use symbols[i]->prec or ->assoc.
2829
ad949da9
AD
28302001-12-29 Akim Demaille <akim@epita.fr>
2831
2832 * src/reader.c, src/reader.h (tags): Remove.
2833 Adjust all users to use symbols[i]->tag.
2834
0e78e603
AD
28352001-12-29 Akim Demaille <akim@epita.fr>
2836
2837 * src/gram.h, src/gram.c (symbols): New, similar to state_table
2838 and rule_table.
2839 * src/reader.c (packsymbols): Fill this table.
2840 Drop sprec.
2841 * src/conflicts.c (resolve_sr_conflict): Adjust.
2842 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
2843 single table.
2844 Use symbols[i]->tag instead of tags[i].
2845
213e640e
AD
28462001-12-29 Akim Demaille <akim@epita.fr>
2847
2848 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
2849 In addition, put a comment in there, to replace...
2850 * tests/regression.at (%union and C comments): Remove.
2851
e7b8bef1
AD
28522001-12-29 Akim Demaille <akim@epita.fr>
2853
2854 * tests/regression.at (Web2c Actions): Blindly move the actual
2855 output as expected output. The contents *seem* right to me, but I
2856 can't pretend reading perfectly parser tables... Nonetheless, all
2857 the other tests pass correctly, the table look OK, even though the
2858 presence of `$axiom' is to be noted: AFAICS it is useless (but
2859 harmless).
2860
b68e7744
AD
28612001-12-29 Akim Demaille <akim@epita.fr>
2862
2863 * src/reader.c (readgram): Don't add the rule 0 if there were no
2864 rules read. In other words, add it _after_ having performed
2865 grammar sanity checks.
2866 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
2867
78d5bae9
AD
28682001-12-29 Akim Demaille <akim@epita.fr>
2869
2870 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
2871 visible, and some states have now a different number.
2872
ff442794
AD
28732001-12-29 Akim Demaille <akim@epita.fr>
2874
2875 * src/reader.c (readgram): Bind the initial rule's lineno to that
2876 of the first rule.
2877 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
2878 (Solved SR Conflicts): Adjust rule 0's line number.
2879
610ab194
AD
28802001-12-29 Akim Demaille <akim@epita.fr>
2881
2882 Fix the `GAWK Grammar' failure.
2883
2884 * src/LR0.c (final_state): Initialize to -1 so that we do compute
2885 the reductions of the first state which was mistakenly confused
2886 with the final state because precisely final_state was initialized
2887 to 0.
2888 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
2889 now noticed by Bison.
2890 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
2891 have a reduction on $default.
2892
29d29c8f
AD
28932001-12-29 Akim Demaille <akim@epita.fr>
2894
2895 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
2896 rule line numbers.
2897 * src/closure.c (print_closure): Likewise.
2898 * src/derives.c (print_derives): Likewise.
2899 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
2900 now.
2901
7c6b64d0
AD
29022001-12-29 Akim Demaille <akim@epita.fr>
2903
2904 * src/lalr.c (lookaheads_print): New.
2905 (lalr): Call it when --trace-flag.
2906 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
2907 are dumped.
2908
3d4daee3
AD
29092001-12-29 Akim Demaille <akim@epita.fr>
2910
2911 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
2912 when walking through ritem, even via rule->rhs.
2913 * src/reduce.c (dump_grammar, useful_production, reduce_output)
2914 (useful_production, useless_nonterminals): Likewise.
2915 (reduce_grammar_tables): Likewise, plus update nritems.
2916 * src/nullable.c (set_nullable): Likewise.
2917 * src/lalr.c (build_relations): Likewise.
2918 * tests/sets.at (Nullable): Adjust.
2919 Fortunately, now, the $axiom is no longer nullable.
2920
9e7f6bbd
AD
29212001-12-29 Akim Demaille <akim@epita.fr>
2922
2923 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
2924 the 0-sentinel.
2925 * src/gram.c (ritem_longest_rhs): Likewise.
2926 * src/reduce.c (nonterminals_reduce): Likewise.
2927 * src/print_graph.c (print_graph): Likewise.
2928 * src/output.c (output_rule_data): Likewise.
2929 * src/nullable.c (set_nullable): Likewise.
2930
255ef638
AD
29312001-12-29 Akim Demaille <akim@epita.fr>
2932
2933 * src/output.c: Comment changes.
2934
0d8a7363
AD
29352001-12-27 Paul Eggert <eggert@twinsun.com>
2936
2937 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
2938 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
2939 Sparc, as they were causing more porting problems than the
2940 (minor) performance improvement was worth.
2941
2942 Also, catch up with 1.31's YYSTD.
2943
3db472b9
AD
29442001-12-27 Akim Demaille <akim@epita.fr>
2945
2946 * src/output.c (output_gram): Rely on nritems, not the
2947 0-sentinel. See below.
2948 Use -1 as separator, not 0.
2949 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
2950 Rely on -1 as separator in yyrhs, instead of 0.
2951 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
2952 twice `Now at end of input', therefore there are two lines less to
2953 expect.
2954
b365aa05
AD
29552001-12-27 Akim Demaille <akim@epita.fr>
2956
2957 * tests/regression.at (Unresolved SR Conflicts):
2958 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
2959 below.
2960
30171f79
AD
29612001-12-27 Akim Demaille <akim@epita.fr>
2962
2963 * src/LR0.c (new_state): Recognize the final state by the fact it
2964 is reached by eoftoken.
2965 (insert_start_shifting_state, insert_eof_shifting_state)
2966 (insert_accepting_state, augment_automaton): Remove, since now
2967 these states are automatically computed from the initial state.
2968 (generate_states): Adjust.
2969 * src/print.c: When reporting a rule number to the user, substract
2970 1, so that the axiom rule is rule 0, and the first user rule is 1.
2971 * src/reduce.c: Likewise.
2972 * src/print_graph.c (print_core): For the time being, just as for
2973 the report, depend upon --trace-flags to dump the full set of
2974 items.
2975 * src/reader.c (readgram): Once the grammar read, insert the rule
2976 0: `$axiom: START-SYMBOL $'.
2977 * tests/set.at: Adjust: rule 0 is now displayed, and since the
2978 number of the states has changed (the final state is no longer
2979 necessarily the last), catch up.
2980
75142d45
AD
29812001-12-27 Akim Demaille <akim@epita.fr>
2982
2983 Try to make the use of the eoftoken valid. Given that its value
2984 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
2985 is used instead of > 0 where appropriate, (ii), depend upon nritems
2986 instead of the 0-sentinel.
2987
2988 * src/gram.h, src/gram.c (nritems): New.
2989 Expected to be duplication of nitems, but for the time being...
2990 * src/reader.c (packgram): Assert nritems and nitems are equal.
2991 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
2992 * src/closure.c (print_closure, print_fderives): Likewise.
2993 * src/gram.c (ritem_print): Likewise.
2994 * src/print.c (print_core, print_grammar): Likewise.
2995 * src/print_graph.c: Likewise.
2996
b7c49edf
AD
29972001-12-27 Akim Demaille <akim@epita.fr>
2998
2999 * src/main.c (main): If there are complains after grammar
3000 reductions, then output the report anyway if requested, then die.
3001 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
3002 * src/reader.c (eoftoken): New.
3003 (parse_token_decl): If the token being defined has value `0', it
3004 is the eoftoken.
3005 (packsymbols): No longer hack `tags' to insert `$' by hand.
3006 Be sure to preserve the value of the eoftoken.
3007 (reader): Make sure eoftoken is defined.
3008 Initialize nsyms to 0: now eoftoken is created just like the others.
3009 * src/print.c (print_grammar): Don't special case the eof token.
3010 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
3011 lie anyway, albeit pleasant.
3012 * tests/calc.at: Exercise error messages with eoftoken.
3013 Change the grammar so that empty input is invalid.
3014 Adjust expectations.
3015 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
3016
ec2da99f
AD
30172001-12-27 Akim Demaille <akim@epita.fr>
3018
3019 * configure.in: Check the protos of strchr ans strspn.
3020 Replace strchr if needed.
3021 * src/system.h: Provide the protos of strchr, strspn and memchr if
3022 missing.
3023 * lib/strchr.c: New.
3024 * src/reader.c (symbols_save): Use strchr.
3025
8adfa272
AD
30262001-12-27 Akim Demaille <akim@epita.fr>
3027
3028 * src/print.c, src/print_graph.c (escape): New.
3029 Use it to quote the TAGS outputs.
3030 * src/print_graph.c (print_state): Now errors are in red, and
3031 reductions in green.
3032 Prefer high to wide: output the state number on a line of its own.
3033
80dac38c
AD
30342001-12-27 Akim Demaille <akim@epita.fr>
3035
3036 * src/state.h, src/state.c (reductions_new): New.
3037 * src/LR0.c (set_state_table): Let all the states have a
3038 `reductions', even if reduced to 0.
3039 (save_reductions): Adjust.
3040 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
3041 * src/print.c (print_reductions, print_actions): Adjust.
3042 * src/output.c (action_row): Adjust.
3043
2cec70b9
AD
30442001-12-27 Akim Demaille <akim@epita.fr>
3045
3046 * src/state.h, src/state.c (errs_new, errs_dup): New.
3047 * src/LR0.c (set_state_table): Let all the states have an errs,
3048 even if reduced to 0.
3049 * src/print.c (print_errs, print_reductions): Adjust.
3050 * src/output.c (output_actions, action_row): Adjust.
3051 * src/conflicts.c (resolve_sr_conflict): Adjust.
3052
13ca549a
AD
30532001-12-27 Akim Demaille <akim@epita.fr>
3054
3055 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
3056
5092aba5
AD
30572001-12-27 Akim Demaille <akim@epita.fr>
3058
3059 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
3060 * src/print.c: here.
3061 (lookaheadset, shiftset): New, used as additional storage by
3062 print_reductions.
3063 (print_results): Adjust.
3064 (print_shifts, print_gotos, print_errs): New, extracted from...
3065 (print_actions): here.
3066 * src/print_graph.c (print_actions): Remove dead code.
3067
11e2beca
AD
30682001-12-27 Akim Demaille <akim@epita.fr>
3069
3070 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
3071 `$n' and `@n'.
3072
dac3c910
AD
30732001-12-27 Akim Demaille <akim@epita.fr>
3074
3075 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
3076 (build_relations): Adjust.
3077
d0b0fefa
AD
30782001-12-27 Akim Demaille <akim@epita.fr>
3079
3080 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
3081 duplication.
3082
adc8c848
AD
30832001-12-27 Akim Demaille <akim@epita.fr>
3084
3085 * src/reader.c (packgram): Catch nitems overflows.
3086
14d293ac
AD
30872001-12-27 Akim Demaille <akim@epita.fr>
3088
3089 * src/files.c, src/files.h (guard_obstack): Remove.
3090 * src/output.c (output): Adjust.
3091 * src/reader.c (parse_braces): New, factoring...
3092 (copy_action, copy_guard): these two which are renamed as...
3093 (parse_action, parse_guard): these.
3094 As a voluntary consequence, using braces around guards is now
3095 mandatory.
3096
f499b062
AD
30972001-12-27 Akim Demaille <akim@epita.fr>
3098
3099 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
3100 * src/reader.c (symbol_list): `guard' and `guard_line' are new
3101 members.
3102 (symbol_list_new): Adjust.
3103 (copy_action): action_line is the first line, not the last.
3104 (copy_guard): Just as for actions, store the `action' only, not
3105 the switch/case/break flesh.
3106 Don't parse the user action that might follow the guard, let...
3107 (readgram): do it, i.e., now, there can be an action after a
3108 guard.
3109 In other words the guard is just explicitly optional.
3110 (packgram): Adjust.
3111 * src/output.c (guards_output): New.
3112 (output_parser): Call it when needed.
3113 (output): Also free the guard and attrs obstacks.
3114 * src/files.c, src/files.h (obstack_save): Remove.
3115 (output_files): Remove.
3116 As a result, if one needs the former `.act' file, using an
3117 appropriate skeleton which requires actions and guards is now
3118 required.
3119 * src/main.c (main): Adjust.
3120 * tests/semantic.at: New.
3121 * tests/regression.at: Use `input.y' as input file name.
3122 Avoid 8+3 problems by requiring input.c when the test needs the
3123 parser.
3124
d945f5cd
AD
31252001-12-27 Akim Demaille <akim@epita.fr>
3126
3127 * src/reader.c (symbol_list_new): Be sure to initialize all the
3128 fields.
3129
d200e455
AD
31302001-12-27 Akim Demaille <akim@epita.fr>
3131
3132 All the hacks using a final pseudo state are now useless.
3133
3134 * src/LR0.c (set_state_table): state_table holds exactly nstates.
3135 * src/lalr.c (nLA): New.
3136 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
3137 instead of lookaheadsp from the pseudo state (nstate + 1).
3138
f9507c28
AD
31392001-12-27 Akim Demaille <akim@epita.fr>
3140
3141 * src/output.c (action_row, token_actions): Use a state_t instead
3142 of a integer, and nlookaheads instead of the following state's
3143 lookaheadsp.
3144
065fbd27
AD
31452001-12-27 Akim Demaille <akim@epita.fr>
3146
3147 * src/conflicts.c (log_resolution, flush_shift)
3148 (resolve_sr_conflict, set_conflicts, solve_conflicts)
3149 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
3150 (conflicts_print, print_reductions): Use a state_t instead of an
3151 integer when referring to a state.
3152 As much as possible, depend upon nlookaheads, instead of the
3153 `lookaheadsp' member of the following state (since lookaheads of
3154 successive states are successive, the difference between state n + 1
3155 and n served as the number of lookaheads for state n).
3156 * src/lalr.c (add_lookback_edge): Likewise.
3157 * src/print.c (print_core, print_actions, print_state)
3158 (print_results): Likewise.
3159 * src/print_graph.c (print_core, print_actions, print_state)
3160 (print_graph): Likewise.
3161 * src/conflicts.h: Adjust.
3162
1b177bd7
AD
31632001-12-27 Akim Demaille <akim@epita.fr>
3164
3165 * src/bison.hairy: Formatting/comment changes.
3166 ANSIfy.
3167 Remove `register' indications.
3168 Add plenty of `static'.
3169
7742ddeb
AD
31702001-12-27 Akim Demaille <akim@epita.fr>
3171
3172 * src/output.c (prepare): Drop the muscle `ntbase' which
3173 duplicates ntokens.
3174 * src/bison.simple: Formatting/comment changes.
3175 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
3176 is an undocumented synonym.
3177
1fa14068
AD
31782001-12-22 Akim Demaille <akim@epita.fr>
3179
3180 * src/output.c (output_table_data): Change the prototype to use
3181 `int' for array ranges: some invocations do pass an int, not a
3182 short.
3183 Reported by Wayne Green.
3184
b9752825
AD
31852001-12-22 Akim Demaille <akim@epita.fr>
3186
3187 Some actions of web2c.y are improperly triggered.
3188 Reported by Mike Castle.
3189
3190 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
3191 * tests/regression.at (Web2c): Rename as...
3192 (Web2c Report): this.
3193 (Web2c Actions): New.
3194
776209d6
AD
31952001-12-22 Akim Demaille <akim@epita.fr>
3196
3197 Reductions in web2c.y are improperly reported.
3198 Reported by Mike Castle.
3199
3200 * src/conflicts.c (print_reductions): Fix.
3201 * tests/regression.at (Web2c): New.
3202
275fc3ad
AD
32032001-12-18 Akim Demaille <akim@epita.fr>
3204
3205 Some host fail on `assert (!"foo")', which expands to
3206 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
3207 Reported by Nelson Beebee.
3208
3209 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
3210 `#define it_succeeded 0' and `assert (it_succeeded)'.
3211
897668ee
MA
32122001-12-17 Marc Autret <autret_m@epita.fr>
3213
3214 * src/bison.simple: Don't hard code the skeleton line and filename.
3215 * src/output.c (output_parser): Rename 'line' as 'output_line'.
3216 New line counter 'skeleton_line' (skeleton-line muscle).
3217
ab3399e0
PE
32182001-12-17 Paul Eggert <eggert@twinsun.com>
3219
3220 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
3221 YYDEBUG must be defined to a nonzero value.
3222
3223 * src/bison.simple (yytname): Do not assume that the user defines
3224 YYDEBUG to a properly parenthesized expression.
3225
3877f72b
AD
32262001-12-17 Akim Demaille <akim@epita.fr>
3227
3228 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
3229 nlookaheads is a new member.
3230 Adjust all users.
3231 * src/lalr.h (nlookaheads): Remove this orphan declaration.
3232 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
3233 state.
776209d6 3234
331dbc1b
AD
32352001-12-17 Akim Demaille <akim@epita.fr>
3236
3237 * src/files.h, src/files.c (open_files, close_files): Remove.
3238 * src/main.c (main): Don't open/close files, nor invoke lex_free,
3239 let...
3240 * src/reader.c (reader): Do it.
776209d6 3241
be750e4c
AD
32422001-12-17 Akim Demaille <akim@epita.fr>
3243
3244 * src/conflicts.c (print_reductions): Formatting changes.
776209d6 3245
709ae8c6
AD
32462001-12-17 Akim Demaille <akim@epita.fr>
3247
3248 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
3249 (flush_reduce): New.
3250 (resolve_sr_conflict): Adjust.
776209d6 3251
f87685c3
AD
32522001-12-17 Akim Demaille <akim@epita.fr>
3253
3254 * src/output.c (output_obstack): Be static and rename as...
3255 (format_obstack): this, to avoid any confusion with files.c's
3256 output_obstack.
3257 * src/reader.h (muscle_obstack): Move to...
3258 * src/output.h: here, since it's defined in output.c.
3259
837491d8
AD
32602001-12-17 Akim Demaille <akim@epita.fr>
3261
3262 * src/output.c (action_row, save_column, default_goto)
3263 (sort_actions, matching_state, pack_vector): Better variable
3264 locality.
3265
796d61fb
AD
32662001-12-17 Akim Demaille <akim@epita.fr>
3267
3268 * src/output.c: Various formatting changes.
776209d6 3269
64d15509
AD
32702001-12-17 Akim Demaille <akim@epita.fr>
3271
3272 * src/files.c (output_files): Free the output_obstack.
3273 * src/main.c (main): Call print and print_graph conditionally.
3274 * src/print.c (print): Work unconditionally.
3275 * src/print_graph.c (print_graph): Work unconditionally.
3276 * src/conflicts.c (log_resolution): Output only if verbose_flag.
3277
fbc8ecb7
MA
32782001-12-16 Marc Autret <autret_m@epita.fr>
3279
3280 * src/output.c (actions_output): Fix. When we use %no-lines,
3281 there is one less line per action.
3282
f0440388
MA
32832001-12-16 Marc Autret <autret_m@epita.fr>
3284
3285 * src/bison.simple: Remove a useless #line directive.
3286 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
3287 * src/output.c (get_lines_number): New.
776209d6 3288 (output_parser): Adjust, now takes care about the lines of a
f0440388
MA
3289 output muscles.
3290 Fix line numbering.
3291 (actions_output): Computes the number of lines taken by actions.
3292 (output_master_parser): Insert new skeleton which is the name of
3293 the output parser file name.
3294
a79986b8
MA
32952001-12-15 Marc Autret <autret_m@epita.fr>
3296
3297 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
3298
4ec8e00f
MA
32992001-12-15 Marc Autret <autret_m@epita.fr>
3300
3301 * src/output.c (output_gram): Keep track of the hairy one.
3302
1a4648ff
AD
33032001-12-15 Akim Demaille <akim@epita.fr>
3304
3305 Make `make distcheck' work.
3306
3307 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
3308 system.h which uses libgettext.h.
3309
9c2c67e6
AD
33102001-12-15 Akim Demaille <akim@epita.fr>
3311
3312 * src/nullable.c (set_nullable): Useless rules must be skipped,
3313 otherwise, since we range over their symbols, we might look at a
3314 nonterminal which no longer ``exists'', i.e., it is not counted in
3315 `nvars', hence we overflow our arrays.
3316
93ede233
AD
33172001-12-15 Akim Demaille <akim@epita.fr>
3318
3319 The header can also be produced directly, without any obstack!
3320 Yahoo!
3321
3322 * src/files.c, src/files.h (defines_obstack): Remove.
3323 (compute_header_macro): Global.
3324 (defines_obstack_save): Remove.
3325 * src/reader.c (parse_union_decl): No longer output to
3326 defines_obstack: its content can be found in the `stype' muscle
3327 anyway.
3328 (output_token_translations): Merge into...
3329 (symbols_output): this.
3330 Rename as...
3331 (symbols_save): this.
3332 (reader): Adjust.
3333 * src/output.c (header_output): New.
3334 (output): Call it.
3335
2666f928
AD
33362001-12-15 Akim Demaille <akim@epita.fr>
3337
3338 * src/reader.c (parse_union_decl): Instead of handling two obstack
3339 simultaneously, use one to define the `stype' muscle, and use the
3340 value of the latter to fill defines_obstack.
3341 (copy_comment): Remove.
3342 (copy_comment2): Work for a single obstack.
3343 Rename as...
3344 (copy_comment): this.
3345
428046f8
AD
33462001-12-15 Akim Demaille <akim@epita.fr>
3347
3348 * src/lex.c, src/lex.h (xgetc): No longer static.
3349 * src/reader.c (parse_union_decl): Revamp.
3350
ea52d706
AD
33512001-12-15 Akim Demaille <akim@epita.fr>
3352
3353 Still making progress in separating Bison into (i) input, (ii)
3354 process, (iii) output: now we can directly output the parser file
3355 without using table_obstack at all.
3356
3357 * src/files.c, src/files.h (table_obstack): Bye bye.
3358 (parser_file_name): New.
3359 * src/files.c (compute_output_file_names): Compute it.
3360 * src/output.c (actions_output, output_parser)
3361 (output_master_parser): To a file instead of an obstack.
3362
3f96f4dc
AD
33632001-12-15 Akim Demaille <akim@epita.fr>
3364
3365 Attach actions to rules, instead of pre-outputting them to
3366 actions_obstack.
3367
3368 * src/gram.h (rule_t): action and action_line are new members.
3369 * src/reader.c (symbol_list): Likewise.
3370 (copy_action): Save the actions within the rule.
3371 (packgram): Save them in rule_table.
3372 * src/output.c (actions_output): New.
3373 (output_parser): Use it on `%%actions'.
3374 (output_rule_data): Don't free rule_table.
3375 (output): Do it.
3376 (prepare): Don't save the `action' muscle.
3377 * src/bison.simple: s/%%action/%%actions/.
3378
51576fb3
AD
33792001-12-15 Akim Demaille <akim@epita.fr>
3380
3381 * src/reader.c (copy_action): When --yacc, don't append a `;'
3382 to the user action: let it fail if lacking.
dee049eb 3383 Suggested by Arnold Robbins and Tom Tromey.
51576fb3 3384
2648a72d
AD
33852001-12-14 Akim Demaille <akim@epita.fr>
3386
3387 * src/lex.c (literalchar): Simply return the char you decoded, non
3388 longer mess around with obstacks and int pointers.
3389 Adjust all callers.
3390
92790e5b
AD
33912001-12-14 Akim Demaille <akim@epita.fr>
3392
3393 * src/lex.c (literalchar): Don't escape the special characters,
3394 just decode them, and keep them as char (before, eol was output as
3395 the 2 char string `\n' etc.).
3396 * src/output.c (output_rule_data): Use quotearg to output the
3397 token strings.
3398
927c1557
PE
33992001-12-13 Paul Eggert <eggert@twinsun.com>
3400
3401 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
3402 Do not infringe on the global user namespace when using C++.
3403 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
3404 All uses of `fprintf' and `stderr' changed.
3405
3406 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
3407
ed8e1f68
AD
34082001-12-13 Akim Demaille <akim@epita.fr>
3409
3410 The computation of nullable is broken: it doesn't handle empty
3411 RHS's properly.
3412
3413 * tests/torture.at (GNU AWK Grammar): New.
3414 * tests/sets.at (Nullable): New.
3415 * src/nullable.c (set_nullable): Instead of blindly looping over
3416 `ritems', loop over the rules, and then over their rhs's.
3417
3418 Work around Autotest bugs.
3419
3420 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
3421 frame, because Autotest understand lines starting with a `+' as
3422 traces from the shell. Then, they are not processed properly.
3423 Admittedly an Autotest bug, but we don't have time to wait for
3424 Autotest to catch up.
3425 * tests/regression.at (Broken Closure): Adjust to the new table
3426 frames.
3427 Move to...
3428 * tests/sets.at: here.
3429
cb581495
AD
34302001-12-13 Akim Demaille <akim@epita.fr>
3431
3432 * src/closure.c (closure): Use nrules instead of playing tricks
3433 with BITS_PER_WORD.
3434
2e729273
AD
34352001-12-13 Akim Demaille <akim@epita.fr>
3436
3437 * src/print.c (print_actions): Output the handling of `$' as the
3438 traces do: shifting the token EOF. Before EOF was treated as a
3439 nonterminal.
3440 * tests/regression.at: Adjust some tests.
3441 * src/print_graph.c (print_core): Complete the set of items via
3442 closure. The next-to-final and final states are still unsatisfying,
3443 but that's to be addressed elsewhere.
3444 No longer output the rule numbers, but do output the state number.
3445 A single loop for the shifts + gotos is enough, but picked a
3446 distinct color for each.
3447 (print_graph): Initialize and finalize closure.
3448
107f7dfb
AD
34492001-12-13 Akim Demaille <akim@epita.fr>
3450
3451 * src/reader.c (readgram): Remove dead code, an strip useless
3452 braces.
3453 (get_type): Remove, unused.
3454
9b53a24f
AD
34552001-12-12 Akim Demaille <akim@epita.fr>
3456
3457 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
3458 on that of lib/error.c.
3459
dbfb6dcd
AD
34602001-12-12 Akim Demaille <akim@epita.fr>
3461
3462 Some hosts don't like `/' in includes.
3463
3464 * src/system.h: Include libgettext.h without qualifying the path.
3465 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
3466 $(top_srcdir).
3467
c25fb648
MA
34682001-12-11 Marc Autret <autret_m@epita.fr>
3469
3470 * src/output.c (output_parser): Remove useless muscle.
3471
710ddc4f
MA
34722001-12-11 Marc Autret <autret_m@epita.fr>
3473
3474 * src/bison.simple: Remove #line just before %%epilogue. It
3475 is now handled in ...
3476 * src/reader.c (read_additionnal_code): Add the output of a
3477 #line for the epilogue.
3478
e83d80b8
MA
34792001-12-10 Marc Autret <autret_m@epita.fr>
3480
927c1557 3481 * src/reader.c (copy_definition): Re-use CPP-outed code which
e83d80b8
MA
3482 replace precedent remove.
3483 * src/bison.simple: Remove #line before %%prologue because
3484 %%input-line is wrong at this time.
3485
971d5158
MA
34862001-12-10 Marc Autret <autret_m@epita.fr>
3487
3488 * src/reader.c (symbols_output): Clean up.
927c1557 3489 * src/output.c (output_gram, output): Clean up.
971d5158 3490
5edafffd
AD
34912001-12-10 Akim Demaille <akim@epita.fr>
3492
3493 * src/lalr.c (initialize_lookaheads): New. Extracted from...
3494 * src/LR0.c (set_state_table): here.
3495 * src/lalr.c (lalr): Call it.
3496
0279f8e9
AD
34972001-12-10 Akim Demaille <akim@epita.fr>
3498
3499 * src/state.h (shifts): Remove the `number' member: shifts are
3500 attached to state, hence no longer need to be labelled with a
3501 state number.
3502
190c4f5f
AD
35032001-12-10 Akim Demaille <akim@epita.fr>
3504
3505 Now that states have a complete set of members, the linked list of
3506 shifts is useless: just fill directly the state's shifts member.
3507
3508 * src/state.h (shifts): Remove the `next' member.
3509 * src/LR0.c (first_state, last_state): Remove.
3510 Adjust the callers.
3511 (augment_automaton): Don't look for the shifts that must be added
3512 a shift on EOF: it is those of the state we looked for! But now,
3513 since shifts are attached, it is no longer needed to looking
3514 merely by its id: its number.
3515
2a73b93d
AD
35162001-12-10 Akim Demaille <akim@epita.fr>
3517
3518 * src/LR0.c (augment_automaton): Better variable locality.
3519 Remove an impossible branch: if there is a state corresponding to
3520 the start symbol being shifted, then there is shift for the start
3521 symbol from the initial state.
3522
74392f6a
AD
35232001-12-10 Akim Demaille <akim@epita.fr>
3524
3525 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
3526 only when appropriate: when insert_start_shifting_state' is not
3527 invoked.
3528 * tests/regression.at (Rule Line Numbers): Adjust.
3529
37c82725
AD
35302001-12-10 Akim Demaille <akim@epita.fr>
3531
3532 * src/LR0.c (augment_automaton): Now that all states have shifts,
3533 merge the two cases addition shifts to the initial state.
3534
6a164e0c
AD
35352001-12-10 Akim Demaille <akim@epita.fr>
3536
3537 * src/lalr.c (set_state_table): Move to...
3538 * src/LR0.c: here.
3539 * src/lalr.c (lalr): Don't call it...
3540 * src/LR0.c (generate_states): do it.
3541 * src/LR0.h (first_state): Remove, only the table is used.
3542
7215de24
AD
35432001-12-10 Akim Demaille <akim@epita.fr>
3544
3545 * src/LR0.h (first_shift, first_reduction): Remove.
3546 * src/lalr.c: Don't use first_shift: find shifts through the
3547 states.
3548
80e25d4d
AD
35492001-12-10 Akim Demaille <akim@epita.fr>
3550
3551 * src/LR0.c: Attach shifts to states as soon as they are
3552 computed.
3553 * src/lalr.c (set_state_table): Instead of assigning shifts to
3554 state, just assert that the mapping was properly done.
3555
0ab3728b
AD
35562001-12-10 Akim Demaille <akim@epita.fr>
3557
3558 * src/LR0.c (insert_start_shift): Rename as...
3559 (insert_start_shifting_state): this.
3560 (insert_eof_shifting_state, insert_accepting_state): New.
3561 (augment_automaton): Adjust.
3562 Better locality of the variables.
3563 When looking if the start_symbol is shifted from the initial
3564 state, using `while (... symbol != start_symbol ...)' sounds
3565 better than `while (... symbol < start_symbol ...)': If fail
3566 to see how the order between symbols could be relevant!
3567
78af9bbc
AD
35682001-12-10 Akim Demaille <akim@epita.fr>
3569
3570 * src/getargs.h: Don't declare `spec_name_prefix' and
3571 `spec_file_prefix', declared by src/files.h.
3572 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
3573 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
3574 * src/output.c (prepare): Adjust.
3575 * src/reader.c (symbols_output): Likewise.
3576 * src/vmsgetargs.c: Vaguely adjust, but who cares?
3577
bdef2a41
AD
35782001-12-10 Akim Demaille <akim@epita.fr>
3579
3580 * src/muscle_tab.c (muscle_init): NULL is a better default than
3581 `"0"'.
3582
3735969c
AD
35832001-12-10 Akim Demaille <akim@epita.fr>
3584
3585 * src/reader.c (reader): Calling symbols_output once is enough.
3586
49701457
AD
35872001-12-10 Akim Demaille <akim@epita.fr>
3588
3589 Now that states have a complete set of members, the linked list of
3590 reductions is useless: just fill directly the state's reductions
3591 member.
3592
3593 * src/state.h (struct reductions): Remove member `number' and
3594 `next'.
3595 * src/LR0.c (first_reduction, last_reduction): Remove.
3596 (save_reductions): Don't link the new reductions, store them in
3597 this_state.
3598 * src/lalr.c (set_state_table): No need to attach reductions to
3599 states, it's already done.
3600 * src/output.c (output_actions): No longer free the shifts, then
3601 the reductions, then the states: free all the states and their
3602 members.
3603
0edad749
AD
36042001-12-10 Akim Demaille <akim@epita.fr>
3605
3606 * src/options.c (OPTN, DRTV, BOTH): New.
3607 (option_table): Use them.
3608
0edad749
AD
3609 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
3610 the job of system.h.
3611 * src/options.c: Don't include stdio.h and xalloc.h for the same
3612 reasons.
3613
5449dd0f
AD
36142001-12-10 Akim Demaille <akim@epita.fr>
3615
3616 * src/output.c (output, prepare): Make sure the values of the
3617 muscles `action' and `prologue' are 0-terminated.
3618
a870c567
AD
36192001-12-10 Akim Demaille <akim@epita.fr>
3620
3621 Clean up GCC warnings.
3622
3623 * src/reader.c (copy_action): `buf' is not used.
3624 (parse_skel_decl): Be static.
3625 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
3626 * src/options.h (create_long_option_table): Have a real prototype.
3627 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
3628 (hash_delete_at): Return const void *.
3629 Adjust casts to preserve the const.
3630
80df8768
AD
36312001-12-10 Akim Demaille <akim@epita.fr>
3632
3633 * configure.in: Require 2.52g.
3634 M4 is not needed, but AUTOM4TE is.
3635 * m4/m4.m4: Remove.
3636 * tests/Makefile.am: Adjust.
3637
f693ad14
AD
36382001-12-10 Akim Demaille <akim@epita.fr>
3639
3640 One structure for states is enough, even though theoretically
3641 there are LR(0) states and LALR(1) states.
3642
3643 * src/lalr.h (state_t): Remove.
3644 (state_table): Be state_t **, not state_t *.
3645 * src/state.h (core, CORE_ALLOC): Rename as...
3646 (state_t, STATE_ALLOC): this.
3647 Add the LALR(1) members: shifts, reductions, errs.
3648 * src/LR0.c (state_table): Rename as...
3649 (state_hash): this, to avoid name clashes with the global
3650 `state_table'.
3651 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
3652 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
3653
74ffbcb6
AD
36542001-12-10 Akim Demaille <akim@epita.fr>
3655
3656 Bison dumps core on bash.y.
3657 Reported by Pascal Bart.
3658
3659 * src/warshall.c (bitmatrix_print): New.
3660 (TC): Use it.
3661 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
3662 j must be the outer loop.
3663 * tests/regression.at (Broken Closure): New.
3664
07708e19
AD
36652001-12-05 Akim Demaille <akim@epita.fr>
3666
3667 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
3668 its argument.
3669