]> git.saurik.com Git - bison.git/blame - ChangeLog
* src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
[bison.git] / ChangeLog
CommitLineData
26e0cadc
PE
12002-07-01 Paul Eggert <eggert@twinsun.com>
2
3 * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
4 char, so that negative chars don't collide with $.
5
1154cced
AD
62002-06-30 Akim Demaille <akim@epita.fr>
7
8 Have the GLR tests be `warning' checked, and fix the warnings.
9
10 * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
11 (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
12 (yyremoveDeletes): `yyi' and `yyj' are size_t.
13 Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
14 (yyaddDeferredAction): static.
15 (yyglrReduce): yyi, yyk, amd yyposn are size_t.
16 (yyreportParseError): yyprefix is const.
17 yytokenp is used only when verbose.
18 (yy__GNUC__): Replace with __GNUC__.
19 (yypdumpstack): yyi is size_t.
20 (yypreference): Un-yy local variables and arguments, to avoid
21 clashes with `yyr1'. Anyway, we are not in the user name space.
22 (yytname_size): be an int, as is compared with ints.
23 * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
24 Use them.
25 * tests/cxx-gram.at: Use quotation to protect $1.
26 Use AT_COMPILE to enable warnings hunts.
27 Prototype yylex and yyerror.
28 `Use' argc.
29 Include `string.h', not `strings.h'.
30 Produce and prototype stmtMerge only when used.
31 yylex takes a location.
32
97650f4e
AD
332002-06-30 Akim Demaille <akim@epita.fr>
34
35 We spend a lot of time in quotearg, in particular when --verbose.
36
37 * src/symtab.c (symbol_get): Store a quoted version of the key.
38 (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
39 Adjust all callers.
40
d2576365
AD
412002-06-30 Akim Demaille <akim@epita.fr>
42
43 * src/state.h (reductions_t): Rename member `nreds' as num.
44 (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
45 * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
46
ccaf65bc
AD
472002-06-30 Akim Demaille <akim@epita.fr>
48
49 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
50 (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
51 (shifts_to): Rename as...
52 (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
53 (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
54 (TRANSITION_IS_DISABLED, transitions_to): these.
55
87675353
AD
562002-06-30 Akim Demaille <akim@epita.fr>
57
58 * src/print.c (print_shifts, print_gotos): Merge into...
59 (print_transitions): this.
60 (print_transitions, print_errs, print_reductions): Align the
61 lookaheads columns.
62 (print_core, print_transitions, print_errs, print_state,
63 print_grammar): Output empty lines separator before, not after.
64 (state_default_rule_compute): Rename as...
65 (state_default_rule): this.
66 * tests/conflicts.at (Defaulted Conflicted Reduction),
67 (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
68 * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
69
ce4ccb4b
AD
702002-06-30 Akim Demaille <akim@epita.fr>
71
72 Display items as we display rules.
73
74 * src/gram.h, src/gram.c (rule_lhs_print): New.
75 * src/gram.c (grammar_rules_partial_print): Use it.
76 * src/print.c (print_core): Likewise.
77 * tests/conflicts.at (Defaulted Conflicted Reduction),
78 (Unresolved SR Conflicts): Adjust.
79 (Unresolved SR Conflicts): Adjust and rename as...
80 (Resolved SR Conflicts): this, as was meant.
81 * tests/regression.at (Web2c Report): Adjust.
82
bc933ef1
AD
832002-06-30 Akim Demaille <akim@epita.fr>
84
85 * src/print.c (state_default_rule_compute): New, extracted from...
86 (print_reductions): here.
87 Pessimize, but clarify the code.
88 * tests/conflicts.at (Defaulted Conflicted Reduction): New.
89
53d4308d
AD
902002-06-30 Akim Demaille <akim@epita.fr>
91
92 * src/output.c (action_row): Let default_rule be always a rule
93 number.
94
574fb2d5
AD
952002-06-30 Akim Demaille <akim@epita.fr>
96
97 * src/closure.c (print_firsts, print_fderives, closure):
98 Use BITSET_EXECUTE.
99 * src/lalr.c (lookaheads_print): Likewise.
100 * src/state.c (state_rule_lookaheads_print): Likewise.
101 * src/print_graph.c (print_core): Likewise.
102 * src/print.c (print_reductions): Likewise.
103 * src/output.c (action_row): Likewise.
104 Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
105
05811fd7
AD
1062002-06-30 Akim Demaille <akim@epita.fr>
107
108 * src/print_graph.c: Use report_flag.
109
0e4d5753
AD
1102002-06-30 Akim Demaille <akim@epita.fr>
111
112 * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
113 to...
114 * src/relation.h, src/relation.c (traverse, relation_digraph)
115 (relation_print, relation_transpose): New.
116
24c7d800
AD
1172002-06-30 Akim Demaille <akim@epita.fr>
118
119 * src/state.h, src/state.c (shifts_to): New.
120 * src/lalr.c (build_relations): Use it.
121
9222837b
AD
1222002-06-30 Akim Demaille <akim@epita.fr>
123
124 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
125 (item_number_of_rule_number, rule_number_of_item_number): New.
126 * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
127 * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
128 * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
129 Propagate their use.
130 Much remains to be done, in particular wrt `shorts' from types.h.
131
260008e5
AD
1322002-06-30 Akim Demaille <akim@epita.fr>
133
134 * src/symtab.c (symbol_new): Initialize the `printer' member.
135
8a731ca8
AD
1362002-06-30 Akim Demaille <akim@epita.fr>
137
138 * src/LR0.c (save_reductions): Remove, replaced by...
139 * src/state.h, src/state.c (state_reductions_set): New.
140 (reductions, errs): Rename as...
141 (reductions_t, errs_t): these.
142 Adjust all dependencies.
143
32e1e0a4
AD
1442002-06-30 Akim Demaille <akim@epita.fr>
145
146 * src/LR0.c (state_list_t, state_list_append): New.
147 (first_state, last_state): Now symbol_list_t.
148 (this_state): Remove.
149 (new_itemsets, append_states, save_reductions): Take a state_t as
150 argument.
151 (set_states, generate_states): Adjust.
152 (save_shifts): Remove, replaced by...
153 * src/state.h, src/state.c (state_shifts_set): New.
154 (shifts): Rename as...
155 (shifts_t): this.
156 Adjust all dependencies.
157 * src/state.h (state_t): Remove the `next' member.
158
e5fb6710
AD
1592002-06-30 Akim Demaille <akim@epita.fr>
160
161 * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
162 escaped in slot 0.
163
c7ca99d4
AD
1642002-06-30 Akim Demaille <akim@epita.fr>
165
166 Use hash.h for the state hash table.
167
168 * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
169 (allocate_storage): Use state_hash_new.
170 (free_storage): Use state_hash_free.
171 (new_state, get_state): Adjust.
172 * src/lalr.h, src/lalr.c (states): Move to...
173 * src/states.h (state_t): Remove the `link' member, no longer
174 used.
175 * src/states.h, src/states.c: here.
176 (state_hash_new, state_hash_free, state_hash_lookup)
177 (state_hash_insert, states_free): New.
178 * src/states.c (state_table, state_compare, state_hash): New.
179 * src/output.c (output_actions): Do not free states now, since we
180 still need to know the final_state number in `prepare', called
181 afterwards. Do it...
182 * src/main.c (main): here: call states_free after `output'.
183
df0e7316
AD
1842002-06-30 Akim Demaille <akim@epita.fr>
185
186 * src/state.h, src/state.c (state_new): New, extracted from...
187 * src/LR0.c (new_state): here.
188 * src/state.h (STATE_ALLOC): Move to...
189 * src/state.c: here.
190 * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
191 * src/state.h, src/state.c: here.
192
39f41916
AD
1932002-06-30 Akim Demaille <akim@epita.fr>
194
195 * src/reader.c (gensym): Rename as...
196 * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
197 (getsym): Rename as...
198 (symbol_get): this.
199
d57650a5
AD
2002002-06-30 Akim Demaille <akim@epita.fr>
201
202 * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
203 * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
204 * src/output.c, src/print.c, src/print_graph.c: Propagate.
205 * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
206
5a08f1ce
AD
2072002-06-30 Akim Demaille <akim@epita.fr>
208
209 Make the test suite pass with warnings checked.
210
211 * tests/actions.at (Printers and Destructors): Improve.
212 Avoid unsigned vs. signed issues.
213 * tests/calc.at: Don't exercise the scanner here, do it...
214 * tests/input.at (Torturing the Scanner): here.
215
720623af
PH
2162002-06-28 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
217
88e7e941 218 * data/glr.c: Correct typo in Emacs-mode directive. Slightly
720623af
PH
219 reorganize first lines parallel to yacc.c.
220
fb8135fa
AD
2212002-06-28 Akim Demaille <akim@epita.fr>
222
223 * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
224 (b4_token_enum, b4_token_defines): New, factored from...
225 * data/lalr1.cc, data/yacc.c, glr.c: here.
226
41442480
AD
2272002-06-28 Akim Demaille <akim@epita.fr>
228
229 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
230 unused variables.
231 * src/output.c (merger_output): static.
232
e0e5bf84
AD
2332002-06-28 Akim Demaille <akim@epita.fr>
234
235 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
236 * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
237 pacify GCC.
238 * src/output.c (save_row): Initialize all the variables to pacify GCC.
e0e5bf84 239
676385e2
PH
2402002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
241
242 Accumulated changelog for new GLR parsing features.
243
e0e5bf84 244 * src/conflicts.c (count_total_conflicts): Change name to
676385e2
PH
245 conflicts_total_count.
246 * src/conflicts.h: Ditto.
247 * src/output.c (token_actions): Use the new name.
248 (output_conflicts): Change conflp => conflict_list_heads, and
249 confl => conflict_list for better readability.
250 * data/glr.c: Use the new names.
251 * NEWS: Add self to GLR announcement.
e0e5bf84 252
676385e2
PH
253 * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
254
255 * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
256 Akim Demaille.
257
258 * data/bison.glr: Change name to glr.c
259 * data/glr.c: Renamed from bison.glr.
260 * data/Makefile.am: Add glr.c
e0e5bf84
AD
261
262 * src/getargs.c:
263
676385e2
PH
264 * src/symlist.h: Add dprec and merger fields to symbol_list_s.
265 * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
e0e5bf84 266
676385e2
PH
267 Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
268
269 * data/bison.glr: Be sure to restore the
270 current #line when returning to the skeleton contents after having
271 exposed the input file's #line.
272
273 Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
274
275 * data/bison.glr: Bring up to date with changes to bison.simple.
276
277 Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
278
279 * data/bison.glr: Correct definitions that use b4_prefix.
280 Various reformatting.
281 (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
282 (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
283 yytokenp argument; now part of stack.
284 (yychar): Define to behave as documented.
285 (yyclearin): Ditto.
e0e5bf84 286
676385e2
PH
287 Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
288
289 * src/reader.h: Add declaration for free_merger_functions.
290
291 * src/reader.c (merge_functions): New variable.
292 (get_merge_function): New function.
293 (free_merger_functions): New function.
294 (readgram): Check for %prec that is not followed by a symbol.
295 Handle %dprec and %merge declarations.
296 (packgram): Initialize dprec and merger fields in rules array.
297
298 * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
299 conflict_list_cnt, conflict_list_free): New variables.
300 (table_grow): Also grow conflict_table.
e0e5bf84 301 (prepare_rules): Output dprec and merger tables.
676385e2 302 (conflict_row): New function.
e0e5bf84 303 (action_row): Output conflict lists for GLR parser. Don't use
676385e2
PH
304 default reduction in conflicted states for GLR parser so that there
305 are spaces for the conflict lists.
306 (save_row): Also save conflict information.
307 (token_actions): Allocate conflict list.
308 (merger_output): New function.
309 (pack_vector): Pack conflict table, too.
310 (output_conflicts): New function to output yyconflp and yyconfl.
311 (output_check): Allocate conflict_tos.
312 (output_actions): Output conflict tables, also.
313 (output_skeleton): Output b4_mergers definition.
314 (prepare): Output b4_max_rhs_length definition.
315 Use 'bison.glr' as default skeleton for GLR parsers.
316
317 * src/gram.c (glr_parser): New flag.
318 (grammar_free): Call free_merger_functions.
319
320 * src/conflicts.c (count_rr_conflicts): Augment to optionally count
321 all pairs of conflicting reductions, rather than just all tokens
322 causing conflicts. Needed to size conflict tables.
e0e5bf84 323 (conflicts_output): Modify call to count_rr_conflicts for new
676385e2
PH
324 interface.
325 (conflicts_print): Ditto.
326 (count_total_conflicts): New function.
327
328 * src/reader.h (merger_list): New type.
329 (merge_functions): New variable.
330
331 * src/lex.h (tok_dprec, tok_merge): New token types.
332
333 * src/gram.h (rule_s): Add dprec and merger fields.
334 (glr_parser): New flag.
335
336 * src/conflicts.h (count_total_conflicts): New function.
337
338 * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
339
340 * doc/bison.texinfo (Generalized LR Parsing): New section.
341 (GLR Parsers): New section.
342 (Language and Grammar): Mention GLR parsing.
343 (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
344 Correct typo ("tge" -> "the").
345
346 * data/bison.glr: New skeleton for GLR parsing.
347
348 * tests/cxx-gram.at: New tests for GLR parsing.
349
350 * tests/testsuite.at: Include cxx-gram.at.
351
352 * tests/Makefile.am: Add cxx-gram.at.
e0e5bf84 353
676385e2
PH
354 * src/parse-gram.y:
355
356 * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
357
358 * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
e0e5bf84 359
b5480d74 3602002-06-27 Akim Demaille <akim@epita.fr>
e2aaf4c4
AD
361
362 * src/options.h, src/options.c: Remove.
363 * src/getargs.c (short_options, long_options): New.
364
60491a94
AD
3652002-06-27 Akim Demaille <akim@epita.fr>
366
367 * data/bison.simple, data/bison.c++: Rename as...
368 * data/yacc.c, data/lalr1.cc: these.
369 * doc/bison.texinfo (Environment Variables): Remove.
370
9be0c25b
AD
3712002-06-25 Raja R Harinath <harinath@cs.umn.edu>
372
373 * src/getargs.c (report_argmatch): Initialize strtok().
374
1ae72863
AD
3752002-06-20 Akim Demaille <akim@epita.fr>
376
377 * data/bison.simple (b4_symbol_actions): New, replaces...
378 (b4_symbol_destructor, b4_symbol_printer): these.
379 (yysymprint): Be sure to call YYPRINT only for tokens, and using
380 user token numbers.
381
87542d29
AD
3822002-06-20 Akim Demaille <akim@epita.fr>
383
384 * data/bison.simple (yydestructor): Rename as...
385 (yydestruct): this.
386
1a31ed21
AD
3872002-06-20 Akim Demaille <akim@epita.fr>
388
389 * src/symtab.h, src/symtab.c (symbol_type_set)
390 (symbol_destructor_set, symbol_precedence_set): The location is
391 the last argument.
392 Adjust all callers.
393
e776192e
AD
3942002-06-20 Akim Demaille <akim@epita.fr>
395
396 * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
397 internals.
398 * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
399 Takes a location.
400 * src/symtab.h, src/symtab.c (symbol_class_set)
401 (symbol_user_token_number_set): Likewise.
402 Adjust all callers.
403 Promote complain_at.
404 * tests/input.at (Type Clashes): Adjust.
405
5c1180b3
AD
4062002-06-20 Akim Demaille <akim@epita.fr>
407
408 * data/bison.simple (YYLEX): Fix the declaration when
409 %pure-parser.
410
e3170060
AD
4112002-06-20 Akim Demaille <akim@epita.fr>
412
413 * data/bison.simple (yysymprint): Don't print the token number,
414 just its name.
415 * tests/actions.at (Destructors): Rename as...
416 (Printers and Destructors): this.
417 Also exercise %printer.
418
253862fd
AD
4192002-06-20 Akim Demaille <akim@epita.fr>
420
421 * data/bison.simple (YYDSYMPRINT): New.
422 Use it to remove many of the #if YYDEBUG/if (yydebug).
423
366eea36
AD
4242002-06-20 Akim Demaille <akim@epita.fr>
425
426 * src/symtab.h, src/symtab.c (symbol_t): printer and
427 printer_location are new members.
428 (symbol_printer_set): New.
429 * src/parse-gram.y (PERCENT_PRINTER): New token.
430 Handle its associated rule.
431 * src/scan-gram.l: Adjust.
432 (handle_destructor_at, handle_destructor_dollar): Rename as...
433 (handle_symbol_code_at, handle_symbol_code_dollar): these.
434 * src/output.c (symbol_printers_output): New.
435 (output_skeleton): Call it.
436 * data/bison.simple (yysymprint): New. Cannot be named yyprint
437 since there are already many grammar files with a user `yyprint'.
438 Replace the calls to YYPRINT to calls to yysymprint.
439 * tests/calc.at: Adjust.
440 * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
441 taking advantage of parser very internal details (stack size!).
442
4f25ebb0
AD
4432002-06-20 Akim Demaille <akim@epita.fr>
444
445 * src/scan-gram.l: Complete the scanner with the missing patterns
446 to pacify Flex.
447 Use `quote' and `symbol_tag_get' where appropriate.
448
93b68a0e
AD
4492002-06-19 Akim Demaille <akim@epita.fr>
450
451 * tests/actions.at (Destructors): Augment to test locations.
452 * data/bison.simple (yydestructor): Pass it the current location
453 if locations are enabled.
454 Prototype only when __STDC__ or C++.
455 Change the argument names to move into the yy name space: there is
456 user code here.
457
58612f1d
AD
4582002-06-19 Akim Demaille <akim@epita.fr>
459
74310291
AD
460 * data/bison.simple (b4_pure_if): New.
461 Use it instead of #ifdef YYPURE.
462
4632002-06-19 Akim Demaille <akim@epita.fr>
464
465 * data/bison.simple (b4_location_if): New.
58612f1d
AD
466 Use it instead of #ifdef YYLSP_NEEDED.
467
f25bfb75
AD
4682002-06-19 Akim Demaille <akim@epita.fr>
469
470 Prepare @$ in %destructor, but currently don't bind it in the
471 skeleton, as %location use is not cleaned up yet.
472
473 * src/scan-gram.l (handle_dollar, handle_destructor_at)
474 (handle_action_at): New.
475 (handle_at, handle_action_dollar, handle_destructor_dollar): Take
476 a braced_code_t and a location as additional arguments.
477 (handle_destructor_dollar): Instead of requiring `b4_eval', just
478 unquote one when outputting `b4_dollar_dollar'.
479 Adjust callers.
480 * data/bison.simple (b4_eval): Remove.
481 (b4_symbol_destructor): Adjust.
482 * tests/input.at (Invalid @n): Adjust.
483
c732d2c6
AD
4842002-06-19 Zack Weinberg <zack@codesourcery.com>
485
486 * doc/bison.texinfo: Document ability to have multiple
487 prologue sections.
488
8c165d89
AD
4892002-06-18 Akim Demaille <akim@epita.fr>
490
491 * src/files.c (compute_base_names): When computing the output file
492 names from the input file name, strip the directory part.
493
ca98bf57
AD
4942002-06-18 Akim Demaille <akim@epita.fr>
495
496 * data/bison.simple.new: Comment changes.
497 Reported by Andreas Schwab.
498
0bfb02ff
AD
4992002-06-18 Matt Kraai <kraai@alumni.cmu.edu>
500
501 * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
502 there are no `label `yyoverflowlab' defined but not used' warnings
503 when yyoverflow is defined.
504
24c0aad7
AD
5052002-06-18 Akim Demaille <akim@epita.fr>
506
507 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
508 new member.
509 (symbol_destructor_set): Adjust.
510 * src/output.c (symbol_destructors_output): Output the destructor
511 locations.
512 Output the symbol name.
513 * data/bison.simple (b4_symbol_destructor): Adjust.
514
5719c109
AD
5152002-06-18 Cris Bailiff <c.bailiff@awayweb.com>
516 and Akim Demaille <akim@epita.fr>
517
518 * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
519 what's left on the stack when the error recovery hits EOF.
520 * tests/actions.at (Destructors): Complete to exercise this case.
521
9280d3ef
AD
5222002-06-17 Akim Demaille <akim@epita.fr>
523
524 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
525 arguments is really empty, not only equal to `[]'.
526 * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
527 member.
528 (symbol_destructor_set): New.
529 * src/output.c (symbol_destructors_output): New.
530 * src/reader.h (brace_code_t, current_braced_code): New.
531 * src/scan-gram.l (BRACED_CODE): Use it to branch on...
532 (handle_dollar): Rename as...
533 (handle_action_dollar): this.
534 (handle_destructor_dollar): New.
535 * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
536 (grammar_declaration): Use it.
537 * data/bison.simple (yystos): Is always defined.
538 (yydestructor): New.
539 * tests/actions.at (Destructors): New.
540 * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
541
dafdc66f
AD
5422002-06-17 Akim Demaille <akim@epita.fr>
543
544 * src/symlist.h, src/symlist.c (symbol_list_length): New.
545 * src/scan-gram.l (handle_dollar, handle_at): Compute the
546 rule_length only when needed.
547 * src/output.c (actions_output, token_definitions_output): Output
548 the full M4 block.
549 * src/symtab.c: Don't access directly to the symbol tag, use
550 symbol_tag_get.
551 * src/parse-gram.y: Use symbol_list_free.
552
56c47203
AD
5532002-06-17 Akim Demaille <akim@epita.fr>
554
555 * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
556 (symbol_list_prepend, get_type_name): Move to...
557 * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
558 (symbol_list_prepend, symbol_list_n_type_name_get): here.
559 Adjust all callers.
560 (symbol_list_free): New.
561 * src/scan-gram.l (handle_dollar): Takes a location.
562 * tests/input.at (Invalid $n): Adjust.
563
1e0bab92
AD
5642002-06-17 Akim Demaille <akim@epita.fr>
565
566 * src/reader.h, src/reader.c (symbol_list_new): Export it.
567 (symbol_list_prepend): New.
568 * src/parse-gram.y (%union): `list' is a new member.
569 (symbols.1): New, replaces...
570 (terms_to_prec.1, nterms_to_type.1): these.
571 * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
572 Take a location as additional argument.
573 Adjust all callers.
574
04e60654
AD
5752002-06-15 Akim Demaille <akim@epita.fr>
576
577 * src/parse-gram.y: Move %token in the declaration section so that
578 we don't depend upon CVS Bison.
579
10e5b8bd
AD
5802002-06-15 Akim Demaille <akim@epita.fr>
581
582 * src/state.h, src/state.c (state_rule_lookaheads_print): New.
583 * src/print.c (print_core): Use it.
584
9801d40c
AD
5852002-06-15 Akim Demaille <akim@epita.fr>
586
587 * src/conflicts.c (log_resolution): Accept the rule involved in
588 the sr conflicts instead of the lookahead number that points to
589 that rule.
590 (flush_reduce): Accept the current lookahead vector as argument,
591 instead of the index in LA.
592 (resolve_sr_conflict): Accept the current number of lookahead
593 bitset to consider for the STATE, instead of the index in LA.
594 (set_conflicts): Adjust.
595 * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
596
c0263492
AD
5972002-06-15 Akim Demaille <akim@epita.fr>
598
599 * src/state.h (state_t): Replace the `lookaheadsp' member, a
600 short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
601 Adjust all dependencies.
602 * src/lalr.c (initialize_lookaheads): Split into...
603 (states_lookaheads_count, states_lookaheads_initialize): these.
604 (lalr): Adjust.
605
9757c359
AD
6062002-06-15 Akim Demaille <akim@epita.fr>
607
608 * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
609 out of...
610 (grammar_rules_print): here.
611 * src/reduce.c (reduce_output): Use it.
612 * tests/reduce.at (Useless Rules, Reduced Automaton)
613 (Underivable Rules): Adjust.
614
6b98e4b5
AD
6152002-06-15 Akim Demaille <akim@epita.fr>
616
617 Copy BYacc's nice way to report the grammar.
618
619 * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
620 New.
621 Don't print the rules' location, it is confusing and useless.
622 (rule_print): Use grammar_rhs_print.
623 * src/print.c (print_grammar): Use grammar_rules_print.
624
6b98e4b5
AD
6252002-06-15 Akim Demaille <akim@epita.fr>
626
627 Complete and rationalize `useless thing' warnings.
628
629 * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
630 (symbol_tag_print): New.
631 Use them everywhere in place of accessing directly the tag member.
632 * src/gram.h, src/gram.c (rule_print): New.
633 Use it where a rule used to be printed `by hand'.
634 * src/reduce.c (nonterminals_reduce): Report the use nonterminals.
635 (reduce_grammar_tables): Report the useless rules.
636 (reduce_print): Useless things are a warning, not an error.
637 Report it as such.
638 * tests/reduce.at (Useless Nonterminals, Useless Rules):
639 (Reduced Automaton, Underivable Rules): Adjust.
640 * tests/regression.at (Web2c Report, Web2c Report): Adjust.
641 * tests/conflicts.at (Unresolved SR Conflicts)
642 (Solved SR Conflicts): Adjust.
643
ee000ba4
AD
6442002-06-15 Akim Demaille <akim@epita.fr>
645
646 Let symbols have a location.
647
648 * src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
649 (getsym): Adjust.
650 Adjust all callers.
651 * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
652 Use location_t, not int.
653 * src/symtab.c (symbol_check_defined): Take advantage of the
654 location.
655 * tests/regression.at (Invalid inputs): Adjust.
656
8efe435c
AD
6572002-06-15 Akim Demaille <akim@epita.fr>
658
659 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
660 (input): Don't try to initialize yylloc here, do it in the
661 scanner.
662 * src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
663 * src/gram.h (rule_t): Change line and action_line into location
664 and action_location, of location_t type.
665 Adjust all dependencies.
666 * src/location.h, src/location.c (empty_location): New.
667 * src/reader.h, src/reader.c (grammar_start_symbol_set)
668 (grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
669 (grammar_current_rule_symbol_append)
670 (grammar_current_rule_action_append): Expect a location as argument.
671 * src/reader.c (grammar_midrule_action): Adjust to attach an
672 action's location as dummy symbol location.
673 * src/symtab.h, src/symtab.c (startsymbol_location): New.
674 * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
675 the line numbers.
676
1921f1d7
AD
6772002-06-14 Akim Demaille <akim@epita.fr>
678
679 Grammar declarations may be found in the grammar section.
680
681 * src/parse-gram.y (rules_or_grammar_declaration): New.
682 (declarations): Each declaration may end with a semicolon, not
683 just...
684 (grammar_declaration): `"%union"'.
685 (grammar): Branch to rules_or_grammar_declaration.
686
4515534c
AD
6872002-06-14 Akim Demaille <akim@epita.fr>
688
689 * src/main.c (main): Invoke scanner_free.
690
f958596b
AD
6912002-06-14 Akim Demaille <akim@epita.fr>
692
693 * src/output.c (m4_invoke): Extracted from...
694 (output_skeleton): here.
695 Free tempfile.
696
2c569025
AD
6972002-06-14 Akim Demaille <akim@epita.fr>
698
699 * src/parse-gram.y (directives, directive, gram)
700 (grammar_directives, precedence_directives, precedence_directive):
701 Rename as...
702 (declarations, declaration, grammar, grammar_declaration)
703 (precedence_declaration, precedence_declarator): these.
704 (symbol_declaration): New.
705
592e8d4d
AD
7062002-06-14 Akim Demaille <akim@epita.fr>
707
708 * src/files.c (action_obstack): Remove, unused.
709 (output_obstack): Remove it, and all its dependencies, as it is no
710 longer needed.
711 * src/reader.c (epilogue_set): Build the epilogue in the
712 muscle_obstack.
713 * src/output.h, src/output.c (muscle_obstack): Move to...
714 * src/muscle_tab.h, src/muscle_tab.h: here.
715 (muscle_init): Initialize muscle_obstack.
716 (muscle_free): New.
717 * src/main.c (main): Call it.
718
0c15323d
AD
7192002-06-14 Akim Demaille <akim@epita.fr>
720
721 * src/location.h: New, extracted from...
722 * src/reader.h: here.
723 * src/Makefile.am (noinst_HEADERS): Merge into
724 (bison_SOURCES): this.
725 Add location.h.
726 * src/parse-gram.y: Use location_t instead of Bison's.
727 * src/reader.h, src/reader.c (prologue_augment, epilogue_set):
728 Use location_t instead of ints.
729
e96c9728
AD
7302002-06-14 Akim Demaille <akim@epita.fr>
731
732 * data/bison.simple, data/bison.c++: Be sure to restore the
733 current #line when returning to the skeleton contents after having
734 exposed the input file's #line.
735
75d1fe16
AD
7362002-06-12 Akim Demaille <akim@epita.fr>
737
738 * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
739 eager.
740 * tests/actions.at (Exotic Dollars): New.
741
6c35d22c
AD
7422002-06-12 Akim Demaille <akim@epita.fr>
743
744 * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
745 ['"/] too eagerly.
746 * tests/input.at (Torturing the Scanner): New.
747
1d6412ad
AD
7482002-06-11 Akim Demaille <akim@epita.fr>
749
750 * src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
751 [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
752 [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
753 * src/reader.h, src/scan-gram.l (scanner_initialize): this.
754 * src/reader.c (reader): Use it.
755
4cdb01db
AD
7562002-06-11 Akim Demaille <akim@epita.fr>
757
758 * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
759 Adjust all callers.
760 (scanner_last_string_free): New.
761
44995b2e
AD
7622002-06-11 Akim Demaille <akim@epita.fr>
763
764 * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
765 (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
766 (last_string, YY_OBS_FREE): New.
767 Use them when returning an ID.
768
e9955c83
AD
7692002-06-11 Akim Demaille <akim@epita.fr>
770
771 Have Bison grammars parsed by a Bison grammar.
772
773 * src/reader.c, src/reader.h (prologue_augment): New.
774 * src/reader.c (copy_definition): Remove.
775
776 * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
777 (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
778 (grammar_current_rule_prec_set, grammar_current_rule_check)
779 (grammar_current_rule_symbol_append)
780 (grammar_current_rule_action_append): Export.
781 * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
782 (symbol_list_action_append): Remove.
783 Hook the routines from reader.
784 * src/scan-gram.l: In INITIAL, characters and strings are tokens.
785 * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
786
787 * src/reader.c (read_declarations): Remove, unused.
788
789 * src/parse-gram.y: Handle the epilogue.
790 * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
791 (grammar_start_symbol_set): this.
792 * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
793 * src/reader.c (readgram): Remove, unused.
794 (reader): Adjust to insert eoftoken and axiom where appropriate.
795
796 * src/reader.c (copy_dollar): Replace with...
797 * src/scan-gram.h (handle_dollar): this.
798 * src/parse-gram.y: Remove `%thong'.
799
800 * src/reader.c (copy_at): Replace with...
801 * src/scan-gram.h (handle_at): this.
802
803 * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
804 New.
805
806 * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
807 time being.
808
809 * src/reader.h, src/reader.c (grammar_rule_end): New.
810
811 * src/parse.y (current_type, current_class): New.
812 Implement `%nterm', `%token' support.
813 Merge `%term' into `%token'.
814 (string_as_id): New.
815 * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
816 type name.
817
818 * src/parse-gram.y: Be sure to handle properly the beginning of
819 rules.
820
821 * src/parse-gram.y: Handle %type.
822 * src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
823
824 * src/parse-gram.y: More directives support.
825 * src/options.c: No longer handle source directives.
826
827 * src/parse-gram.y: Fix %output.
828
829 * src/parse-gram.y: Handle %union.
830 Use the prologue locations.
831 * src/reader.c (parse_union_decl): Remove.
832
833 * src/reader.h, src/reader.c (epilogue_set): New.
834 * src/parse-gram.y: Use it.
835
836 * data/bison.simple, data/bison.c++: b4_stype is now either not
837 defined, then default to int, or to the contents of %union,
838 without `union' itself.
839 Adjust.
840 * src/muscle_tab.c (muscle_init): Don't predefine `stype'.
841
842 * src/output.c (actions_output): Don't output braces, as they are
843 already handled by the scanner.
844
845 * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
846 characters to themselves.
847
848 * tests/reduce.at (Reduced Automaton): End the grammars with %% so
849 that the epilogue has a proper #line.
850
851 * src/parse-gram.y: Handle precedence/associativity.
852
853 * src/symtab.c (symbol_precedence_set): Requires the symbol to be
854 a terminal.
855 * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
856 * tests/calc.at: Do not use `%token "foo"' as it makes not sense
857 at all to define terminals that cannot be emitted.
858
859 * src/scan-gram.l: Escape M4 characters.
860
861 * src/scan-gram.l: Working properly with escapes in user
862 strings/characters.
863
864 * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
865 (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
866 grammar.
867 Use more modest sizes, as for the time being the parser does not
868 release memory, and therefore the process swallows a huge amount
869 of memory.
870
871 * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
872 stricter %token grammar.
873
874 * src/symtab.h (associativity): Add `undef_assoc'.
875 (symbol_precedence_set): Do nothing when passed an undef_assoc.
876 * src/symtab.c (symbol_check_alias_consistence): Adjust.
877
878 * tests/regression.at (Invalid %directive): Remove, as it is now
879 meaningless.
880 (Invalid inputs): Adjust to the new error messages.
881 (Token definitions): The new grammar doesn't allow too many
882 eccentricities.
883
884 * src/lex.h, src/lex.c: Remove.
885 * src/reader.c (lastprec, skip_to_char, read_signed_integer)
886 (copy_character, copy_string2, copy_string, copy_identifier)
887 (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
888 (parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
889 (parse_action): Remove.
890 * po/POTFILES.in: Adjust.
891
2e047461
AD
8922002-06-11 Akim Demaille <akim@epita.fr>
893
894 * src/reader.c (parse_action): Don't store directly into the
895 rule's action member: return the action as a string.
896 Don't require `rule_length' as an argument: compute it.
897 (grammar_current_rule_symbol_append)
898 (grammar_current_rule_action_append): New, eved out from
899 (readgram): here.
900 Remove `action_flag', `rulelength', unused now.
901
9af3fbce
AD
9022002-06-11 Akim Demaille <akim@epita.fr>
903
904 * src/reader.c (grammar_current_rule_prec_set).
905 (grammar_current_rule_check): New, eved out from...
906 (readgram): here.
907 Remove `xaction', `first_rhs': useless.
908 * tests/input.at (Type clashes): New.
909 * tests/existing.at (GNU Cim Grammar): Adjust.
910
1485e106
AD
9112002-06-11 Akim Demaille <akim@epita.fr>
912
913 * src/reader.c (grammar_midrule_action): New, Eved out from
914 (readgram): here.
915
da4160c3
AD
9162002-06-11 Akim Demaille <akim@epita.fr>
917
918 * src/reader.c (grammar_rule_begin, previous_rule, current_rule):
919 New.
920 (readgram): Use them as replacement of inlined code, crule and
921 crule1.
922
f6d0f937
AD
9232002-06-11 Akim Demaille <akim@epita.fr>
924
925 * src/reader.c (grammar_end, grammar_symbol_append): New.
926 (readgram): Use them.
927 Make the use of `p' as local as possible.
928
69078d4b
AD
9292002-06-10 Akim Demaille <akim@epita.fr>
930
931 GCJ's parser requires the tokens to be defined before the prologue.
932
933 * data/bison.simple: Output the token definition before the user's
934 prologue.
935 * tests/regression.at (Braces parsing, Duplicate string)
936 (Mixing %token styles): Check the output from bison.
937 (Early token definitions): New.
938
5e424082
AD
9392002-06-10 Akim Demaille <akim@epita.fr>
940
941 * src/symtab.c (symbol_user_token_number_set): Don't complain when
942 assigning twice the same user number to a token, so that we can
943 use it in...
944 * src/lex.c (lex): here.
945 Also use `symbol_class_set' instead of hand written code.
946 * src/reader.c (parse_assoc_decl): Likewise.
947
44536b35
AD
9482002-06-10 Akim Demaille <akim@epita.fr>
949
950 * src/symtab.c, src/symtab.c (symbol_class_set)
951 (symbol_user_token_number_set): New.
952 * src/reader.c (parse_token_decl): Use them.
953 Use a switch instead of ifs.
954 Use a single argument.
955
8b9f2372
AD
9562002-06-10 Akim Demaille <akim@epita.fr>
957
958 Remove `%thong' support as it is undocumented, unused, duplicates
959 `%token's job, and creates useless e-mail traffic with people who
960 want to know what it is, why it is undocumented, unused, and
961 duplicates `%token's job.
962
963 * src/reader.c (parse_thong_decl): Remove.
964 * src/options.c (option_table): Remove "thong".
965 * src/lex.h (tok_thong): Remove.
966
3ae2b51f
AD
9672002-06-10 Akim Demaille <akim@epita.fr>
968
969 * src/symtab.c, src/symtab.c (symbol_type_set)
970 (symbol_precedence_set): New.
971 * src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
972 (value_components_used): Remove, unused.
973
2f1afb73
AD
9742002-06-09 Akim Demaille <akim@epita.fr>
975
976 Move symbols handling code out of the reader.
977
978 * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
979 (axiom): Move to...
980 * src/symtab.h, src/symtab.c: here.
981
982 * src/gram.c (start_symbol): Remove: use startsymbol->number.
983 * src/reader.c (startval): Rename as...
984 * src/symtab.h, src/symtab.c (startsymbol): this.
985 * src/reader.c: Adjust.
986
987 * src/reader.c (symbol_check_defined, symbol_make_alias)
988 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
989 (token_translations_init)
990 Move to...
991 * src/symtab.c: here.
992 * src/reader.c (packsymbols): Move to...
993 * src/symtab.h, src/symtab.c (symbols_pack): here.
994 * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
995 argument.
996
e9bca3ad
AD
9972002-06-03 Akim Demaille <akim@epita.fr>
998
999 * src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
1000 then statements.
1001
86eff183
AD
10022002-06-03 Akim Demaille <akim@epita.fr>
1003
1004 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
1005 structs with non literals.
1006 * src/scan-skel.l: never-interactive.
1007 * src/conflicts.c (enum conflict_resolution_e): No trailing
1008 comma.
1009 * src/getargs.c (usage): Split long literal strings.
1010 Reported by Hans Aberg.
1011
717be197
AD
10122002-05-28 Akim Demaille <akim@epita.fr>
1013
1014 * data/bison.c++: Use C++ ostreams.
1015 (cdebug_): New member.
1016
670ddffd
AD
10172002-05-28 Akim Demaille <akim@epita.fr>
1018
1019 * src/output.c (output_skeleton): Be sure to allocate enough room
1020 for `/' _and_ for `\0' in full_skeleton.
1021
769b430f
AD
10222002-05-28 Akim Demaille <akim@epita.fr>
1023
1024 * data/bison.c++: Catch up with bison.simple:
1025 2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1026 and Paul Eggert <eggert@twinsun.com>: `error' handing.
1027 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
1028 and popping traces.
1029
7067cb36
PH
10302002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1031
1032 * src/output.c (output_skeleton): Put an explicit path in front of
1033 the skeleton file name, rather than relying on the -I directory,
1034 to partially alleviate effects of having a skeleton file lying around
1035 in the current directory.
769b430f 1036
4a713ec2
PH
10372002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1038
769b430f 1039 * src/conflicts.c (log_resolution): Correct typo:
4a713ec2
PH
1040 obstack_printf should be obstack_fgrow1.
1041
b408954b
AD
10422002-05-26 Akim Demaille <akim@epita.fr>
1043
1044 * src/state.h (state_t): `solved_conflicts' is a new member.
1045 * src/LR0.c (new_state): Set it to 0.
1046 * src/conflicts.h, src/conflicts.c (print_conflicts)
1047 (free_conflicts, solve_conflicts): Rename as...
1048 (conflicts_print, conflicts_free, conflicts_solve): these.
1049 Adjust callers.
1050 * src/conflicts.c (enum conflict_resolution_e)
1051 (solved_conflicts_obstack): New, used by...
1052 (log_resolution): this.
1053 Adjust to attach the conflict resolution to each state.
1054 Complete the description with the precedence/associativity
1055 information.
1056 (resolve_sr_conflict): Adjust.
1057 * src/print.c (print_state): Output its solved_conflicts.
1058 * tests/conflicts.at (Unresolved SR Conflicts)
1059 (Solved SR Conflicts): Exercise --report=all.
1060
a49aecd5
AD
10612002-05-26 Akim Demaille <akim@epita.fr>
1062
1063 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
1064 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
1065 * src/reader.c, src/reduce.c, src/state.h, src/symtab.h
1066 (token_number_t, item_number_as_token_number)
1067 (token_number_as_item_number, muscle_insert_token_number_table):
1068 Rename as...
1069 (symbol_number_t, item_number_as_symbol_number)
1070 (symbol_number_as_item_number, muscle_insert_symbol_number_table):
1071 these, since it is more appropriate.
1072
5504898e
AD
10732002-05-26 Akim Demaille <akim@epita.fr>
1074
1075 * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
1076 `Error:' lines.
1077 * data/bison.simple (yystos) [YYDEBUG]: New.
1078 (yyparse) [YYDEBUG]: Display the symbols which are popped during
1079 error recovery.
1080 * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
1081
ec3bc396
AD
10822002-05-25 Akim Demaille <akim@epita.fr>
1083
1084 * doc/bison.texinfo (Debugging): Split into...
1085 (Tracing): this new section, its former contents, and...
1086 (Understanding): this new section.
1087 * src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
1088 by...
1089 (report_flag): this.
1090 Adjust all dependencies.
1091 (report_args, report_types, report_argmatch): New.
1092 (usage, getargs): Report/support -r, --report.
1093 * src/options.h
1094 (struct option_table_struct): Rename as..,
1095 (struct option_table_s): this.
1096 Rename the `set_flag' member to `flag' to match with getopt_long's
1097 struct.
1098 * src/options.c (option_table): Split verbose into an entry for
1099 %verbose, and another for --verbose.
1100 Support --report/-r, so remove -r from the obsolete --raw.
1101 * src/print.c: Attach full item sets and lookaheads reports to
1102 report_flag instead of trace_flag.
1103 * lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
1104
78df8250
PE
11052002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1106 and Paul Eggert <eggert@twinsun.com>
769b430f 1107
78df8250
PE
1108 * data/bison.simple (yyparse): Correct error handling to conform to
1109 POSIX and yacc. Specifically, after syntax error is discovered,
1110 do not reduce further before shifting the error token.
1111 Clean up the code a bit by removing the labels yyerrdefault,
1112 yyerrhandle, yyerrpop.
1113 * NEWS: Document the above.
1114
c0c9ea05
PH
11152002-05-20 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1116
1117 * data/bison.simple (yyr1): Don't use yy_token_number_type as element
1118 type; it isn't always big enough, since it doesn't necessarily
1119 include non-terminals.
769b430f 1120 (yytranslate): Expand definition of yy_token_number_type, so that
c0c9ea05
PH
1121 the latter can be removed.
1122 (yy_token_number_type): Remove, only one use.
1123 * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
1124 don't use TokenNumberType as element type.
769b430f 1125
c0c9ea05
PH
1126 * tests/regression.at: Modify expected output to agree with change
1127 to yyr1 and yytranslate.
769b430f 1128
6390a83f
FK
11292002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
1130
1131 * src/reader.c (parse_action): Use copy_character instead of
1132 obstack_1grow.
1133
db7c8e9a
AD
11342002-05-13 Akim Demaille <akim@epita.fr>
1135
1136 * tests/regression.at (Token definitions): Prototype yylex and
1137 yyerror.
1138
fcc61800
PH
11392002-05-12 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
1140
158c687b 1141 * src/scan-skel.l: Correct off-by-one error in handling of __oline__.
fcc61800
PH
1142 * data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
1143 32-bit arithmetic.
1144 * data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.
1145
5683e9b2
AD
11462002-05-07 Akim Demaille <akim@epita.fr>
1147
1148 * tests/synclines.at: Be sure to prototype yylex and yyerror to
1149 avoid GCC warnings.
1150
0c2d3f4c
AD
11512002-05-07 Akim Demaille <akim@epita.fr>
1152
1153 Kill GCC warnings.
1154
1155 * src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
1156 over the RHS of each rule.
1157 * src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
1158 * src/state.h (state_t): Member `nitems' is unsigned short.
1159 * src/LR0.c (get_state): Adjust.
1160 * src/reader.c (packgram): Likewise.
1161 * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
1162 `Type'.
1163 (muscle_insert_int_table): Remove, unused.
1164 (prepare_rules): Remove `max'.
1165
1565b720
AD
11662002-05-06 Akim Demaille <akim@epita.fr>
1167
1168 * src/closure.c (print_firsts): Display of the symbol tags.
1169 (bitmatrix_print): Move to...
1170 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
1171 here.
1172 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
1173
cfaee611
AD
11742002-05-06 Akim Demaille <akim@epita.fr>
1175
1176 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
1177 hash_do_for_each.
1178
458be8e0
AD
11792002-05-06 Akim Demaille <akim@epita.fr>
1180
1181 * src/LR0.c (new_state, get_state): Instead of using the global
1182 `kernel_size' and `kernel_base', have two new arguments:
1183 `core_size' and `core'.
1184 Adjust callers.
1185
a900a624
AD
11862002-05-06 Akim Demaille <akim@epita.fr>
1187
1188 * src/reader.c (packgram): No longer end `ritem' with a 0
1189 sentinel: it is not used.
1190
d4e7d3a1
AD
11912002-05-05 Akim Demaille <akim@epita.fr>
1192
1193 New experimental feature: display the lookaheads in the report and
1194 graph.
1195
1196 * src/print (print_core): When --trace-flag, display the rules
1197 lookaheads.
1198 * src/print_graph.c (print_core): Likewise.
1199 Swap the arguments.
1200 Adjust caller.
1201
39ceb25b
AD
12022002-05-05 Akim Demaille <akim@epita.fr>
1203
1204 * tests/torture.at (Many lookaheads): New test.
1205
5372019f
AD
12062002-05-05 Akim Demaille <akim@epita.fr>
1207
1208 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
1209 (GENERATE_MUSCLE_INSERT_TABLE): this.
1210 (output_int_table, output_unsigned_int_table, output_short_table)
1211 (output_token_number_table, output_item_number_table): Replace with...
1212 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
1213 (muscle_insert_short_table, muscle_insert_token_number_table)
1214 (muscle_insert_item_number_table): these.
1215 Adjust all callers.
1216 (prepare_tokens): Don't free `translations', since...
1217 * src/reader.h, src/reader.c (grammar_free): do it.
1218 Move to...
1219 * src/gram.h, src/gram.c (grammar_free): here.
1220 * data/bison.simple, data/bison.c++: b4_token_number_max is now
1221 b4_translate_max.
1222
5df5f6d5
AD
12232002-05-05 Akim Demaille <akim@epita.fr>
1224
1225 * src/output.c (output_unsigned_int_table): New.
1226 (prepare_rules): `i' is unsigned.
1227 `prhs', `rline', `r2' are unsigned int.
1228 Rename muscle `rhs_number_max' as `rhs_max'.
1229 Output muscles `prhs_max', `rline_max', and `r2_max'.
1230 Free rline and r1.
1231 * data/bison.simple, data/bison.c++: Adjust to use these muscles
1232 to compute types instead of constant types.
1233 * tests/regression.at (Web2c Actions): Adjust.
1234
b87f8b21
AD
12352002-05-04 Akim Demaille <akim@epita.fr>
1236
1237 * src/symtab.h (SALIAS, SUNDEF): Rename as...
1238 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
1239 Adjust dependencies.
1240 * src/output.c (token_definitions_output): Be sure not to output a
1241 `#define 'a'' when fed with `%token 'a' "a"'.
1242 * tests/regression.at (Token definitions): New.
1243
8bb936e4
PE
12442002-05-03 Paul Eggert <eggert@twinsun.com>
1245
1246 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
1247 for K&R C.
1248
12492002-05-03 gettextize <bug-gnu-gettext@gnu.org>
1250
1251 * Makefile.am (SUBDIRS): Remove intl.
1252 (EXTRA_DIST): Add config/config.rpath.
1253
53c71a12
AD
12542002-05-03 Akim Demaille <akim@epita.fr>
1255
1256 * data/bison.simple (m4_if): Don't output empty enums.
1257 And actually, output valid enum definitions :(.
1258
289dd0cf
AD
12592002-05-03 Akim Demaille <akim@epita.fr>
1260
1261 * configure.bat: Remove, completely obsolete.
1262 * Makefile.am (EXTRA_DIST): Adjust.
1263 Don't distribute config.rpath...
1264 * config/Makefile.am (EXTRA_DIST): Do it.
1265
db85e524
AD
12662002-05-03 Akim Demaille <akim@epita.fr>
1267
1268 * configure.in (GETTEXT_VERSION): New.
1269 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
1270
83ccf991
AD
12712002-05-03 Akim Demaille <akim@epita.fr>
1272
1273 * data/bison.simple (b4_token_enum): New.
1274 (b4_token_defines): Use it to output tokens both as #define and
1275 enums.
1276 Suggested by Paul Eggert.
1277 * src/output.c (token_definitions_output): Don't output spurious
1278 white spaces.
1279
1f418995
AD
12802002-05-03 Akim Demaille <akim@epita.fr>
1281
1282 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
1283
45119f04
RA
12842002-05-02 Robert Anisko <robert@lrde.epita.fr>
1285
1286 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
1287 Update the stack class, give a try to deque as the default container.
1288
b2d52318
AD
12892002-05-02 Akim Demaille <akim@epita.fr>
1290
1291 * data/bison.simple (yyparse): Do not implement @$ = @1.
1292 (YYLLOC_DEFAULT): Adjust to do it.
1293 * doc/bison.texinfo (Location Default Action): Fix.
1294
3a8b4109
AD
12952002-05-02 Akim Demaille <akim@epita.fr>
1296
1297 * src/reader.c (parse_braces): Merge into...
1298 (parse_action): this.
1299
84614e13
AD
13002002-05-02 Akim Demaille <akim@epita.fr>
1301
1302 * configure.in (ALL_LINGUAS): Remove.
1303 * po/LINGUAS, hr.po: New.
1304
fdbcd8e2
AD
13052002-05-02 Akim Demaille <akim@epita.fr>
1306
1307 Remove the so called hairy (semantic) parsers.
1308
1309 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
1310 * src/gram.h, src/gram.c (semantic_parser): Remove.
1311 (rule_t): Remove the guard and guard_line members.
1312 * src/lex.h (token_t): remove tok_guard.
1313 * src/options.c (option_table): Remove %guard and %semantic_parser
1314 support.
1315 * src/output.c, src/output.h (guards_output): Remove.
1316 (prepare): Adjust.
1317 (token_definitions_output): Don't output the `T'
1318 tokens (???).
1319 (output_skeleton): Don't output the guards.
1320 * src/files.c, src/files.c (attrsfile): Remove.
1321 * src/reader.c (symbol_list): Remove the guard and guard_line
1322 members.
1323 Adjust dependencies.
1324 (parse_guard): Remove.
1325 * data/bison.hairy: Remove.
1326 * doc/bison.texinfo (Environment Variables): Remove occurrences of
1327 BISON_HAIRY.
1328
82b6cb3f
AD
13292002-05-02 Akim Demaille <akim@epita.fr>
1330
1331 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
1332 (parse_guard): Rename the formal argument `stack_offset' as
1333 `rule_length', which is more readable.
1334 Adjust callers.
1335 (copy_at, copy_dollar): Instead of outputting the hard coded
1336 values of $$, $n and so forth, output invocation to b4_lhs_value,
1337 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
900c877b
AD
1338 Note: this patch partially drops `semantic-parser' support: it
1339 always does `rule_length - n', where semantic parsers ought to
1340 always use `-n'.
82b6cb3f
AD
1341 * data/bison.simple, data/bison.c++ (b4_lhs_value)
1342 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
1343
6cbfbcc5
AD
13442002-05-02 Akim Demaille <akim@epita.fr>
1345
1346 * configure.in (AC_INIT): Bump to 1.49b.
1347 (AM_INIT_AUTOMAKE): Short invocation.
1348
b8548114
AD
13492002-05-02 Akim Demaille <akim@epita.fr>
1350
1351 Version 1.49a.
1352
c20cd1fa
AD
13532002-05-01 Akim Demaille <akim@epita.fr>
1354
1355 * src/skeleton.h: Remove.
1356
8a9566d4
AD
13572002-05-01 Akim Demaille <akim@epita.fr>
1358
1359 * src/skeleton.h: Fix the #endif.
1360 Reported by Magnus Fromreide.
1361
8c6d399a
PE
13622002-04-26 Paul Eggert <eggert@twinsun.com>
1363
1364 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
1365 Define if we define YYSTYPE and YYLTYPE, respectively.
b756bb75 1366 (YYCOPY): Fix [] quoting problem in the non-GCC case.
8a9566d4 1367
2b7ed18a
RA
13682002-04-25 Robert Anisko <robert@lrde.epita.fr>
1369
1370 * src/scan-skel.l: Postprocess quadrigraphs.
1371
1372 * src/reader.c (copy_character): New function, used to output
1373 single characters while replacing `[' and `]' with quadrigraphs, to
1374 avoid troubles with M4 quotes.
1375 (copy_comment): Output characters with copy_character.
1376 (read_additionnal_code): Likewise.
1377 (copy_string2): Likewise.
1378 (copy_definition): Likewise.
1379
1380 * tests/calc.at: Exercise M4 quoting.
1381
34a89c50
AD
13822002-04-25 Akim Demaille <akim@epita.fr>
1383
1384 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
1385 between `!' and the command.
1386 Reported by Paul Eggert.
1387
0dd1580a
RA
13882002-04-24 Robert Anisko <robert@lrde.epita.fr>
1389
1390 * tests/calc.at: Exercise prologue splitting.
1391
1392 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
1393 `b4_post_prologue' instead of `b4_prologue'.
1394
1395 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
1396 muscles.
1397 (output): Free pre_prologue_obstack and post_prologue_obstack.
1398 * src/files.h, src/files.c (attrs_obstack): Remove.
1399 (pre_prologue_obstack, post_prologue_obstack): New.
1400 * src/reader.c (copy_definition): Add a parameter to specify the
1401 obstack to fill, instead of using attrs_obstack unconditionally.
1402 (read_declarations): Pass pre_prologue_obstack to copy_definition if
1403 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
1404
83c1796f
PE
14052002-04-23 Paul Eggert <eggert@twinsun.com>
1406
1407 * data/bison.simple: Remove unnecessary commentary and white
1408 space differences from 1_29-branch.
1409 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
1410
1411 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
1412 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
1413 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
1414 constructors or destructors.
1415
1416 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
1417
1207eeac
AD
14182002-04-23 Akim Demaille <akim@epita.fr>
1419
1420 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
1421 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
1422 location with columns.
1423 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
1424 All reported by Paul Eggert.
1425
78ab8f67
AD
14262002-04-22 Akim Demaille <akim@epita.fr>
1427
1428 * src/reduce.c (dump_grammar): Move to...
1429 * src/gram.h, src/gram.c (grammar_dump): here.
1430 Be sure to separate long item numbers.
1431 Don't read the members of a rule's prec if its nil.
1432
133c20e2
AD
14332002-04-22 Akim Demaille <akim@epita.fr>
1434
1435 * src/output.c (table_size, table_grow): New.
1436 (MAXTABLE): Remove, replace uses with table_size.
1437 (pack_vector): Instead of dying when the table is too big, grow it.
1438
9515e8a7
AD
14392002-04-22 Akim Demaille <akim@epita.fr>
1440
1441 * data/bison.simple (yyr1): Its type is that of a token number.
1442 * data/bison.c++ (r1_): Likewise.
1443 * tests/regression.at (Web2c Actions): Adjust.
1444
23c5a174
AD
14452002-04-22 Akim Demaille <akim@epita.fr>
1446
1447 * src/reader.c (token_translations_init): 256 is now the default
1448 value for the error token, i.e., it will be assigned another
1449 number if the user assigned 256 to one of her tokens.
1450 (reader): Don't force 256 to error.
1451 * doc/bison.texinfo (Symbols): Adjust.
1452 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
1453 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
1454 etc. instead of 10, 20, 30 (which was used to `jump' over error
1455 (256) and undefined (2)).
1456
5fbb0954
AD
14572002-04-22 Akim Demaille <akim@epita.fr>
1458
1459 Propagate more token_number_t.
1460
1461 * src/gram.h (token_number_as_item_number)
1462 (item_number_as_token_number): New.
1463 * src/output.c (GENERATE_OUTPUT_TABLE): New.
1464 Use it to create output_item_number_table and
1465 output_token_number_table.
1466 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
1467 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
1468 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
1469 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
1470
4f940944
AD
14712002-04-22 Akim Demaille <akim@epita.fr>
1472
1473 * src/output.h, src/output.c (get_lines_number): Remove.
1474
3ded9a63
AD
14752002-04-19 Akim Demaille <akim@epita.fr>
1476
1477 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
1478 as Lex/Flex'.
1479 (Debugging): More details about enabling the debugging features.
1480 (Table of Symbols): Describe $$, $n, @$, and @n.
1481 Suggested by Tim Josling.
1482
e0c471a9
AD
14832002-04-19 Akim Demaille <akim@epita.fr>
1484
1485 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
1486
fecc10cd
AD
14872002-04-10 Akim Demaille <akim@epita.fr>
1488
1489 * src/system.h: Rely on HAVE_LIMITS_H.
1490 Suggested by Paul Eggert.
1491
51dec47b
AD
14922002-04-09 Akim Demaille <akim@epita.fr>
1493
1494 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
1495 full stderr, and strip it according to the bison options, instead
1496 of composing the error message from different bits.
1497 This makes it easier to check for several error messages.
1498 Adjust all the invocations.
1499 Add an invocation exercising the error token.
1500 Add an invocation demonstrating a stupid error message.
1501 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
1502 Adjust the tests.
1503 Error message are for stderr, not stdout.
1504
007a50a4
AD
15052002-04-09 Akim Demaille <akim@epita.fr>
1506
1507 * src/gram.h, src/gram.c (error_token_number): Remove, use
1508 errtoken->number.
1509 * src/reader.c (reader): Don't specify the user token number (2)
1510 for $undefined, as it uselessly prevents using it.
1511 * src/gram.h (token_number_t): Move to...
1512 * src/symtab.h: here.
1513 (state_t.number): Is a token_number_t.
1514 * src/print.c, src/reader.c: Use undeftoken->number instead of
1515 hard coded 2.
1516 (Even though this 2 is not the same as above: the number of the
1517 undeftoken remains being 2, it is its user token number which
1518 might not be 2).
1519 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
1520 `user_token_number_max'.
1521 Output `undef_token_number'.
1522 * data/bison.simple, data/bison.c++: Use them.
1523 Be sure to map invalid yylex return values to
1524 `undef_token_number'. This saves us from gratuitous SEGV.
1525
1526 * tests/conflicts.at (Solved SR Conflicts)
1527 (Unresolved SR Conflicts): Adjust.
1528 * tests/regression.at (Web2c Actions): Adjust.
1529
06446ccf
AD
15302002-04-08 Akim Demaille <akim@epita.fr>
1531
1532 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
1533 Adding #line.
1534 Remove the duplicate `typedefs'.
1535 (RhsNumberType): Fix the declaration and various other typos.
1536 Use __ofile__.
1537 * data/bison.simple: Use __ofile__.
1538 * src/scan-skel.l: Handle __ofile__.
1539
62a3e4f0
AD
15402002-04-08 Akim Demaille <akim@epita.fr>
1541
1542 * src/gram.h (item_number_t): New, the type of item numbers in
1543 RITEM. Note that it must be able to code symbol numbers as
1544 positive number, and the negation of rule numbers as negative
1545 numbers.
1546 Adjust all dependencies (pretty many).
1547 * src/reduce.c (rule): Remove this `short *' pointer: use
1548 item_number_t.
1549 * src/system.h (MINSHORT, MAXSHORT): Remove.
1550 Include `limits.h'.
1551 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
1552 (shortcpy): Remove.
1553 (MAXTABLE): Move to...
1554 * src/output.c (MAXTABLE): here.
1555 (prepare_rules): Use output_int_table to output rhs.
1556 * data/bison.simple, data/bison.c++: Adjust.
1557 * tests/torture.at (Big triangle): Move the limit from 254 to
1558 500.
1559 * tests/regression.at (Web2c Actions): Ajust.
1560
1561 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
1562 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
1563 passes, but produces negative #line number, once fixed, GCC is
1564 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
1565 C), it passes.
1566 * src/state.h (state_h): Code input lines on ints, not shorts.
1567
bb88b0fc
AD
15682002-04-08 Akim Demaille <akim@epita.fr>
1569
1570 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
1571 and then the grammar.
1572
9a636f47
AD
15732002-04-08 Akim Demaille <akim@epita.fr>
1574
1575 * src/system.h: No longer using strndup.
1576
680e8701
AD
15772002-04-07 Akim Demaille <akim@epita.fr>
1578
1579 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
1580 * src/output.c (output_table_data): Return the longest number.
1581 (prepare_tokens): Output `token_number_max').
1582 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
1583 New.
1584 Use them to define yy_token_number_type/TokenNumberType.
1585 Use this type for yytranslate.
1586 * tests/torture.at (Big triangle): Push the limit from 124 to
1587 253.
1588 * tests/regression.at (Web2c Actions): Adjust.
1589
817e9f41
AD
15902002-04-07 Akim Demaille <akim@epita.fr>
1591
1592 * tests/torture.at (Big triangle): New.
1593 (GNU AWK Grammar, GNU Cim Grammar): Move to...
1594 * tests/existing.at: here.
1595
5123689b
AD
15962002-04-07 Akim Demaille <akim@epita.fr>
1597
1598 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
1599 nritems.
1600 Adjust dependencies.
1601
f3849179
AD
16022002-04-07 Akim Demaille <akim@epita.fr>
1603
1604 * src/reader.c: Normalize increments to prefix form.
1605
bd02036a
AD
16062002-04-07 Akim Demaille <akim@epita.fr>
1607
1608 * src/reader.c, symtab.c: Remove debugging code.
1609
db8837cb
AD
16102002-04-07 Akim Demaille <akim@epita.fr>
1611
1612 Rename all the `bucket's as `symbol_t'.
1613
1614 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
1615 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
1616 * src/symtab.c, src/symtab.h (bucket): Rename as...
1617 (symbol_t): this.
1618 (symbol_list_new, bucket_check_defined, bucket_make_alias)
1619 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
1620 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
1621 (buckets_new, buckets_free, buckets_do): Rename as...
1622 (symbol_list_new, symbol_check_defined, symbol_make_alias)
1623 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
1624 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
1625 (symbols_new, symbols_free, symbols_do): these.
1626
72a23c97
AD
16272002-04-07 Akim Demaille <akim@epita.fr>
1628
1629 Use lib/hash for the symbol table.
1630
1631 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
1632 EOF.
1633 * src/lex.c (lex): Set the `number' member of new terminals.
1634 * src/reader.c (bucket_check_defined, bucket_make_alias)
1635 (bucket_check_alias_consistence, bucket_translation): New.
1636 (reader, grammar_free, readgram, token_translations_init)
1637 (packsymbols): Adjust.
1638 (reader): Number the predefined tokens.
1639 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
1640 for predefined tokens.
1641 * src/symtab.h (bucket): Remove all the hash table related
1642 members.
1643 * src/symtab.c (symtab): Replace by...
1644 (bucket_table): this.
1645 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
1646 (buckets_new, buckets_do): New.
1647
280a38c3
AD
16482002-04-07 Akim Demaille <akim@epita.fr>
1649
1650 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
1651 (start_symbol, max_user_token_number, semantic_parser)
1652 (error_token_number): Initialize.
1653 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
1654 Initialize.
1655 (reader): Don't.
1656 (errtoken, eoftoken, undeftoken, axiom): Extern.
1657
03b31c0c
AD
16582002-04-07 Akim Demaille <akim@epita.fr>
1659
1660 * src/gram.h (rule_s): prec and precsym are now pointers
1661 to the bucket giving the priority/associativity.
1662 Member `associativity' removed: useless.
1663 * src/reduce.c, src/conflicts.c: Adjust.
1664
8b3df748
AD
16652002-04-07 Akim Demaille <akim@epita.fr>
1666
1667 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
1668 Properly escape the symbols' TAG when outputting them.
1669
e601aa1d
AD
16702002-04-07 Akim Demaille <akim@epita.fr>
1671
1672 * src/lalr.h (LA): Is a bitsetv, not bitset*.
1673
b0299a2e
AD
16742002-04-07 Akim Demaille <akim@epita.fr>
1675
1676 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
1677 (LArule): this, which is an array to rule_t*.
1678 * src/print.c, src/conflicts.c: Adjust.
1679
d7e1f00c
AD
16802002-04-07 Akim Demaille <akim@epita.fr>
1681
1682 * src/gram.h (rule_t): Rename `number' as `user_number'.
1683 `number' is a new member.
1684 Adjust dependencies.
1685 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
1686
cc9305dd
AD
16872002-04-07 Akim Demaille <akim@epita.fr>
1688
1689 As a result of the previous patch, it is no longer needed
1690 to reorder ritem itself.
1691
1692 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
1693
b0940840
AD
16942002-04-07 Akim Demaille <akim@epita.fr>
1695
1696 Be sure never to walk through RITEMS, but use only data related to
1697 the rules themselves. RITEMS should be banished.
1698
1699 * src/output.c (output_token_translations): Rename as...
1700 (prepare_tokens): this.
1701 In addition to `translate', prepare the muscles `tname' and
1702 `toknum', which were handled by...
1703 (output_rule_data): this.
1704 Remove, and move the remainder of its outputs into...
1705 (prepare_rules): this new routines, which also merges content from
1706 (output_gram): this.
1707 (prepare_rules): Be sure never to walk through RITEMS.
1708 (output_stos): Rename as...
1709 (prepare_stos): this.
1710 (output): Always invoke prepare_states, after all, just don't use it
1711 in the output if you don't need it.
1712
643a5994
AD
17132002-04-07 Akim Demaille <akim@epita.fr>
1714
1715 * src/LR0.c (new_state): Display `nstates' as the name of the
1716 newly created state.
1717 Adjust to initialize first_state and last_state if needed.
1718 Be sure to distinguish the initial from the final state.
1719 (new_states): Create the itemset of the initial state, and use
1720 new_state.
1721 * src/closure.c (closure): Now that the initial state has its
1722 items properly set, there is no need for a special case when
1723 creating `ruleset'.
1724
1725 As a result, now the rule 0, reducing to $axiom, is visible in the
1726 outputs. Adjust the test suite.
1727
1728 * tests/conflicts.at (Solved SR Conflicts)
1729 (Unresolved SR Conflicts): Adjust.
1730 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
1731 * tests/conflicts.at (S/R in initial): New.
1732
b4c4ccc2
AD
17332002-04-07 Akim Demaille <akim@epita.fr>
1734
1735 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
1736 the RHS of the rules.
1737 * src/output.c (output_gram): Likewise.
1738
bba97eb2
AD
17392002-04-07 Akim Demaille <akim@epita.fr>
1740
1741 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
1742 bucket.
1743 Adjust all dependencies.
1744 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
1745 `number' of the buckets too.
1746 * src/gram.h: Include `symtab.h'.
1747 (associativity): Move to...
1748 * src/symtab.h: here.
1749 No longer include `gram.h'.
1750
c3b407f4
AD
17512002-04-07 Akim Demaille <akim@epita.fr>
1752
1753 * src/gram.h, src/gram.c (rules_rhs_length): New.
1754 (ritem_longest_rhs): Use it.
1755 * src/gram.h (rule_t): `number' is a new member.
1756 * src/reader.c (packgram): Set it.
1757 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
1758 the end of `rules', and count them out of `nrules'.
1759 (reduce_output, dump_grammar): Adjust.
1760 * src/print.c (print_grammar): It is no longer needed to check for
1761 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
1762 * tests/reduce.at (Reduced Automaton): New test.
1763
11652ab3
AD
17642002-04-07 Akim Demaille <akim@epita.fr>
1765
1766 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
1767 lacking `+ 1' to nrules, Bison reported as useless a token if it
1768 was used solely to set the precedence of the last rule...
1769
26b23c1a
AD
17702002-04-07 Akim Demaille <akim@epita.fr>
1771
1772 * data/bison.c++, data/bison.simple: Don't output the current file
1773 name in #line, to avoid useless diffs between two identical
1774 outputs under different names.
1775
18bcecb0
AD
17762002-04-07 Akim Demaille <akim@epita.fr>
1777
1778 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
1779 Normalize loops to using `< nrules + 1', not `<= nrules'.
1780
fa770c86
AD
17812002-04-07 Akim Demaille <akim@epita.fr>
1782
1783 * TODO: Update.
1784
d9b739c3
AD
17852002-04-07 Akim Demaille <akim@epita.fr>
1786
1787 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
1788 bucket.value as bucket.number.
1789
99013900
AD
17902002-04-07 Akim Demaille <akim@epita.fr>
1791
1792 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
1793 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
1794 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
1795 RHS, instead of being an index in RITEMS.
1796
e966383b
PE
17972002-04-04 Paul Eggert <eggert@twinsun.com>
1798
1799 * doc/bison.texinfo: Update copyright date.
1800 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
1801 (Symbols): Warn about running Bison in one character set,
1802 but compiling and/or running in an incompatible one.
1803 Warn about character code 256, too.
1804
18052002-04-03 Paul Eggert <eggert@twinsun.com>
1806
1807 * src/bison.data (YYSTACK_ALLOC): Depend on whether
1808 YYERROR_VERBOSE is nonzero, not whether it is defined.
1809
1810 Merge changes from bison-1_29-branch.
c307773e 1811
8d6c48b9
PE
18122002-03-20 Paul Eggert <eggert@twinsun.com>
1813
1814 Merge fixes from Debian bison_1.34-1.diff.
1815
1816 * configure.in (AC_PREREQ): 2.53.
1817
e53c6322
AD
18182002-03-20 Akim Demaille <akim@epita.fr>
1819
1820 * src/conflicts.c (log_resolution): Argument `resolution' is const.
1821
9ffbeca7
PE
18222002-03-19 Paul Eggert <eggert@twinsun.com>
1823
21db0b2a
PE
1824 * src/bison.simple (YYCOPY): New macro.
1825 (YYSTACK_RELOCATE): Use it.
1826 Remove Type arg; no longer needed. All callers changed.
1827 (yymemcpy): Remove; no longer needed.
1828
9ffbeca7
PE
1829 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
1830 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
1831
642cb8f8
AD
18322002-03-19 Akim Demaille <akim@epita.fr>
1833
1834 Test and fix the #line outputs.
1835
1836 * tests/atlocal.at (GCC): New.
1837 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
1838 (Prologue synch line, ,%union synch line, Postprologue synch line)
1839 (Action synch line, Epilogue synch line): New tests.
1840 * src/reader.c (parse_union_decl): Define the muscle stype_line.
1841 * data/bison.simple, data/bison.c++: Use it.
1842
3c31a486
AD
18432002-03-19 Akim Demaille <akim@epita.fr>
1844
1845 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
1846 (Solved SR Conflicts, %expect not enough, %expect right)
1847 (%expect too much): Move to...
1848 * tests/conflicts.at: this new file.
1849
0d8bed56
AD
18502002-03-19 Akim Demaille <akim@epita.fr>
1851
1852 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
1853 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
1854 that we can move to enums for instance.
1855 * src/output.c (token_definitions_output): Output a list of
1856 `token-name, token-number' instead of the #define.
1857 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
1858
9208d17f
AD
18592002-03-14 Akim Demaille <akim@epita.fr>
1860
1861 Use Gettext 0.11.1.
1862
af27eacb
RA
18632002-03-09 Robert Anisko <robert@lrde.epita.fr>
1864
1865 * data/bison.c++: Make the user able to add members to the generated
1866 parser by subclassing.
1867
9101a310
RA
18682002-03-05 Robert Anisko <robert@lrde.epita.fr>
1869
1870 * src/reader.c (read_additionnal_code): `c' should be an integer, not
1871 a character.
1872 Reported by Nicolas Tisserand and Nicolas Burrus.
1873
fff9bf0b
RA
18742002-03-04 Robert Anisko <robert@lrde.epita.fr>
1875
1876 * src/reader.c: Warn about lacking semi-colons, do not complain.
1877
64dba31e
RA
18782002-03-04 Robert Anisko <robert@lrde.epita.fr>
1879
1880 * data/bison.c++: Remove a debug line.
1881
374f5a14
RA
18822002-03-04 Robert Anisko <robert@lrde.epita.fr>
1883
1884 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
1885 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
1886 provide a default implementation.
1887
bfcf1f3a
AD
18882002-03-04 Akim Demaille <akim@epita.fr>
1889
1890 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
1891 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
1892 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
1893 * tests/semantic.at (Parsing Guards): Similarly.
1894 * src/reader.at (readgram): Complain if the last rule is not ended
1895 with a semi-colon.
1896
65ccf9fc
AD
18972002-03-04 Akim Demaille <akim@epita.fr>
1898
1899 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
1900 * src/closure.c: here.
1901 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
1902 RTC.
1903 * src/warshall.h, src/warshall.c: Remove.
1904 * tests/sets.at (Broken Closure): Adjust.
1905
d0039cbc
AD
19062002-03-04 Akim Demaille <akim@epita.fr>
1907
1908 * src/output.c (output_skeleton): tempdir is const.
1909 bytes_read is unused.
1910
345cea78
AD
19112002-03-04 Akim Demaille <akim@epita.fr>
1912
1913 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
1914 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
1915 Update.
1916 From Michael Hayes.
1917
564801f7
AD
19182002-03-04 Akim Demaille <akim@epita.fr>
1919
1920 * src/closure.c (closure): `r' is unused.
1921
e5352bc7
AD
19222002-03-04 Akim Demaille <akim@epita.fr>
1923
1924 * tests/sets.at (Broken Closure): Add the ending `;'.
1925 * src/reader.at (readgram): Complain if a rule is not ended with a
1926 semi-colon.
1927
914feea9
AD
19282002-03-04 Akim Demaille <akim@epita.fr>
1929
1930 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
1931 (count_sr_conflicts): Use bitset_count.
1932 * src/reduce.c (inaccessable_symbols): Ditto.
1933 (bits_size): Remove.
1934 * src/warshall.h, src/warshall.c: Convert to bitsetv.
1935
f0250de6
AD
19362002-03-04 Akim Demaille <akim@epita.fr>
1937
1938 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
1939 * src/reduce.c: Remove the `bitset_zero's following the
1940 `bitset_create's, as now it is performed by the latter.
1941
ef017502
AD
19422002-03-04 Akim Demaille <akim@epita.fr>
1943
1944 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
1945 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
1946 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
1947 latest sources from Michael.
1948
76514394
AD
19492002-03-04 Akim Demaille <akim@epita.fr>
1950
1951 * src/output.c (output): Don't free the grammar.
1952 * src/reader.c (grammar_free): New.
1953 * src/main.c (main): Call it and don't free symtab here.
1954
55024580
AD
19552002-03-04 Akim Demaille <akim@epita.fr>
1956
1957 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
1958 before returning.
1959 Reported by Benoit Perrot.
1960
f9abaa2c
AD
19612002-03-04 Akim Demaille <akim@epita.fr>
1962
1963 Use bitset operations when possible, not loops over bits.
1964
1965 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
1966 bitset_or.
1967 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
1968 * src/reduce.c (useless_nonterminals): Formatting changes.
1969 * src/warshall.c (TC): Use bitset_or.
1970
0e721e75
AD
19712002-03-04 Akim Demaille <akim@epita.fr>
1972
1973 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
1974 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
1975 Ditto.
1976
0fb1ffb1
AD
19772002-03-04 Akim Demaille <akim@epita.fr>
1978
1979 * src/lalr.c (F): Now a bitset*.
1980 Adjust all dependencies.
1981
b86796bf
AD
19822002-03-04 Akim Demaille <akim@epita.fr>
1983
1984 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
1985 Adjust all dependencies.
1986
602bbf31
AD
19872002-03-04 Akim Demaille <akim@epita.fr>
1988
1989 * src/L0.c, src/LR0.h (nstates): Be size_t.
1990 Adjust comparisons (signed vs unsigned).
1991 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
1992 bitset*.
1993 Adjust all dependencies.
1994
d8a0245c
AD
19952002-03-04 Akim Demaille <akim@epita.fr>
1996
1997 * src/closure.c (firsts): Now, also a bitset.
1998 Adjust all dependencies.
1999 (varsetsize): Remove, now unused.
2000 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
2001
34ba9743
AD
20022002-03-04 Akim Demaille <akim@epita.fr>
2003
2004 * src/print.c: Convert to use bitset.h, not hand coded iterations
2005 over ints.
2006
ed86e78c
AD
20072002-03-04 Akim Demaille <akim@epita.fr>
2008
2009 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
2010
dfdb1797
AD
20112002-03-04 Akim Demaille <akim@epita.fr>
2012
2013 * src/closure.c (ruleset): Be a bitset.
2014 (rulesetsize): Remove.
2015
7086e707
AD
20162002-03-04 Akim Demaille <akim@epita.fr>
2017
2018 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
2019 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
2020 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
2021 * src/closure.c (fderives): Be an array of bitsets.
2022
98254360
RA
20232002-02-28 Robert Anisko <robert@lrde.epita.fr>
2024
2025 * data/bison.c++: Merge the two generated headers. Insert a copyright
2026 notice in each output file.
2027
a75c057f
AD
20282002-02-28 Akim Demaille <akim@epita.fr>
2029
2030 * data/bison.c++: Copy the prologue of bison.simple to fetch
2031 useful M4 definitions, such as b4_header_guard.
2032
06b00abc
AD
20332002-02-25 Akim Demaille <akim@epita.fr>
2034
2035 * src/getargs.c (version): Give the name of the authors, and use a
a75c057f
AD
2036 translator friendly scheme for the bgr
2037 copyright notice.
06b00abc 2038
70e7d534
AD
20392002-02-25 Akim Demaille <akim@epita.fr>
2040
2041 * src/output.c (header_output): Remove, now handled completely via
2042 M4.
2043
abe017f6
AD
20442002-02-25 Akim Demaille <akim@epita.fr>
2045
2046 * m4/m4.m4: New, from CVS Autoconf.
2047 * configure.in: Invoke it.
2048 * src/output.c (output_skeleton): Use its result instead of the
2049 hard coded name.
2050
381fb12e
AD
20512002-02-25 Akim Demaille <akim@epita.fr>
2052
2053 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
2054 Fileutils 4.1.5.
2055 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
2056 * src/output.c (output_skeleton): Use mkstemp to create a real
2057 temporary file.
2058 Move the filling of `skeleton' and its muscle to...
2059 (prepare): here.
2060 (output): Move the definition of the prologue muscle to...
2061 (prepare): here.
2062 * src/system.h (DEFAULT_TMPDIR): New.
2063
6f38107f
PE
20642002-02-14 Paul Eggert <eggert@twinsun.com>
2065
2066 Remove the support for C++ namespace cleanliness; it was
2067 causing more problems than it was curing, since it didn't work
2068 properly on some nonstandard C++ compilers. This can wait
2069 for a proper C++ parser.
2070
2071 * NEWS: Document this.
2072 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
2073 of C++, as it's treated like C now.
2074 * src/bison.simple (YYSTD): Remove.
2075 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
2076 Treat C++ just like Standard C instead of trying to support
2077 namespace cleanliness.
2078
80cce3da
AD
20792002-02-14 Akim Demaille <akim@epita.fr>
2080
2081 * tests/regression.at (else): Adjust to Andreas' change.
2082
842e8679
AD
20832002-02-14 Akim Demaille <akim@epita.fr>
2084
2085 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
2086
4bda3f10
AD
20872002-02-13 Andreas Schwab <schwab@suse.de>
2088
2089 * src/output.c (output_rule_data): Don't output NULL, it might
2090 not be defined yet.
2091
4162fa07 20922002-02-11 Robert Anisko <robert@lrde.epita.fr>
b418ecd8 2093
4162fa07
RA
2094 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
2095 (Copyright notice): Update.
b418ecd8 2096
bd16a5dc
AD
20972002-02-11 Akim Demaille <akim@epita.fr>
2098
2099 * tests/regression.at (%nonassoc and eof): Don't include
2100 nonportable headers.
2101
8d69a1a3
RA
21022002-02-08 Robert Anisko <robert@lrde.epita.fr>
2103
2104 * data/bison.c++: Correct error recovery. Make the user able to
2105 initialize the starting location.
2106
9b2d0677
AD
21072002-02-07 Akim Demaille <akim@epita.fr>
2108
2109 * tests/input.at: New.
2110
69e2658b
RA
21112002-02-07 Robert Anisko <robert@lrde.epita.fr>
2112
2113 * data/bison.c++: Replace some direct m4 expansions by constants. Be
9b2d0677 2114 more consistent when naming methods and variables. Put preprocessor
69e2658b
RA
2115 directives around tables only needed for debugging.
2116
4aacc3a7
RA
21172002-02-07 Robert Anisko <robert@lrde.epita.fr>
2118
2119 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
2120 C++ parsers.
2121 (yy::b4_name::parse): Use print_.
2122
762a801e
RA
21232002-02-07 Robert Anisko <robert@lrde.epita.fr>
2124
2125 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
2126
4bb2bc3f
RA
21272002-02-07 Robert Anisko <robert@lrde.epita.fr>
2128
2129 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
2130 C++ parsers.
2131 (yy::b4_name::parse): Build verbose error messages, and use error_.
2132
6b45a3ca
RA
21332002-02-06 Robert Anisko <robert@lrde.epita.fr>
2134
2135 * data/bison.c++: Fix m4 quoting in comments.
2136
50997c6e
RA
21372002-02-06 Robert Anisko <robert@lrde.epita.fr>
2138
2139 * data/bison.c++: Adjust the parser code. Fix some muscles that were
2140 not expanded by m4.
2141
3f3eed27
AD
21422002-02-05 Akim Demaille <akim@epita.fr>
2143
2144 * data/bison.c++: Adjust to the M4 back end.
2145 More is certainly needed.
2146
be2a1a68
AD
21472002-02-05 Akim Demaille <akim@epita.fr>
2148
2149 Give a try to M4 as a back end.
2150
2151 * lib/readpipe.c: New, from wdiff.
2152 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
2153 BISON_HAIRY.
2154 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
2155 specific values. Now it is m4 that performs the lookup.
2156 * src/parse-skel.y: Remove.
2157 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
2158 * src/output.c (actions_output, guards_output)
2159 (token_definitions_output): No longer keeps track of the output
2160 line number, hence remove the second argument.
2161 (guards_output): Check against the guard member of a rule, not the
2162 action member.
2163 Adjust callers.
2164 (output_skeleton): Don't look for the skeleton location, let m4 do
2165 that.
2166 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
2167 file will be used.
2168 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
2169 (prepare): Given that for the time being changesyntax is not
2170 usable in M4, rename the muscles using `-' to `_'.
2171 Define `defines_flag', `output_parser_name' and `output_header_name'.
2172 * src/output.h (actions_output, guards_output)
2173 (token_definitions_output): Adjust prototypes.
2174 * src/scan-skel.l: Instead of scanning the skeletons, it now
2175 processes the output of m4: `__oline__' and `#output'.
2176 * data/bison.simple: Adjust to be used by M4(sugar).
2177 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
2178 to date.
2179 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
2180 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
2181 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
2182 shamelessly stolen from CVS Autoconf.
2183
beda758b
AD
21842002-02-05 Akim Demaille <akim@epita.fr>
2185
2186 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
2187 * configure.in: Check for the declarations of free and malloc.
2188 * src/muscle_tab.c: Adjust.
2189
5ece6d43
AD
21902002-02-05 Akim Demaille <akim@epita.fr>
2191
2192 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
2193 which have no values.
2194
5bb18f9a
AD
21952002-02-05 Akim Demaille <akim@epita.fr>
2196
2197 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
2198 * data/: here.
2199
894dd62e
PE
22002002-01-29 Paul Eggert <eggert@twinsun.com>
2201
2202 * src/bison.simple (YYSIZE_T): Do not define merely because
2203 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
2204 On some platforms, <alloca.h> does not declare YYSTD (size_t).
2205
82841af7
AD
22062002-01-27 Akim Demaille <akim@epita.fr>
2207
2208 Fix `%nonassoc and eof'.
2209
2210 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
2211 which were not properly copied! Replace
2212 memcpy (res->errs, src->errs, src->nerrs);
2213 with
2214 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
2215 !!!
2216 * tests/regression.at (%nonassoc and eof): Adjust to newest
2217 Autotest: `.' is not in the PATH.
2218
318b76e9
AD
22192002-01-27 Akim Demaille <akim@epita.fr>
2220
2221 * tests/sets.at (AT_EXTRACT_SETS): New.
2222 (Nullable): Use it.
2223 (Firsts): New.
2224
30d2f3d5
AD
22252002-01-26 Akim Demaille <akim@epita.fr>
2226
2227 * tests/actions.at, tests/calc.at, tests/headers.at,
2228 * tests/torture.at: Adjust to the newest Autotest which no longer
2229 forces `.' in the PATH.
2230
30f8c395
AD
22312002-01-25 Akim Demaille <akim@epita.fr>
2232
2233 * tests/regression.at (%nonassoc and eof): New.
2234 Suggested by Robert Anisko.
2235
29ae55f1
AD
22362002-01-24 Akim Demaille <akim@epita.fr>
2237
2238 Bison dumps core when trying to complain about broken input files.
2239 Reported by Cris van Pelt.
2240
2241 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
2242 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
2243 into...
2244 (Invalid inputs): Strengthen: exercise parse_percent_token.
2245
2b548aa6
RA
22462002-01-24 Robert Anisko <robert.anisko@epita.fr>
2247
2248 * src/Makefile.am: Add bison.c++.
2249 * src/bison.c++: New skeleton.
2250
bb0146c2
AD
22512002-01-21 Paolo Bonzini <bonzini@gnu.org>
2252
2253 * po/it.po: New.
2254
bec30531
AD
22552002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
2256
2257 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
2258
fc6edc45
MA
22592002-01-20 Marc Autret <marc@gnu.org>
2260
2261 * src/files.c (compute_output_file_names): Fix
2262
5e5d5415
MA
22632002-01-20 Marc Autret <marc@gnu.org>
2264
2265 * tests/output.at: New test.
2266 * src/files.c (compute_base_names): Don't map extensions when
2267 the YACC flag is set, use defaults.
2268 Reported by Evgeny Stambulchik.
2269
44ea3fbd
MA
22702002-01-20 Marc Autret <marc@gnu.org>
2271
bb0146c2 2272 * src/system.h: Need to define __attribute__ away for non-GCC
44ea3fbd
MA
2273 compilers as well (i.e. the vendor C compiler).
2274 Suggested by Albert Chin-A-Young.
2275
338963d1
TVH
22762002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
2277
2278 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
2279 canonical definition.
2280 * src/system.h: Use the canonical definition for PARAMS (avoids
2281 a conflict with the macro from lib/hash.h).
2282
c57b2479
AD
22832002-01-11 Akim Demaille <akim@epita.fr>
2284
2285 * configure.in: Use AC_FUNC_STRNLEN.
d9e9746c 2286 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
c57b2479 2287
b85810ae
AD
22882002-01-09 Akim Demaille <akim@epita.fr>
2289
2290 * src/files.c, src/files.h (output_infix): New.
2291 (tab_extension): Remove.
2292 (compute_base_names): Compute the former, drop the latter.
2293 * src/output.c (prepare): Insert the muscles `output-infix', and
2294 `output-suffix'.
2295 * src/parse-skel.y (string, string.1): New.
2296 (section.header): Use it.
2297 (section.yacc): Remove.
2298 (prefix): Remove too.
2299 * src/scan-skel.l: Adjust.
2300 * src/bison.simple, src/bison.hairy: Adjust.
2301
cae60122
AD
23022002-01-09 Akim Demaille <akim@epita.fr>
2303
2304 * configure.in (WERROR_CFLAGS): Compute it.
2305 * src/Makefile.am (CFLAGS): Pass it.
2306 * tests/atlocal.in (CFLAGS): Idem.
2307 * src/files.c: Fix a few warnings.
2308 (get_extension_index): Remove, unused.
2309
ae404801
AD
23102002-01-08 Akim Demaille <akim@epita.fr>
2311
2312 * src/getargs.c (AS_FILE_NAME): New.
2313 (getargs): Use it to convert DOSish file names.
2314 * src/files.c (base_name): Rename as full_base_name to avoid
2315 clashes with `base_name ()'.
2316 (filename_split): New.
2317 (compute_base_names): N-th rewrite, using filename_split.
2318
22312b71
AD
23192002-01-08 Akim Demaille <akim@epita.fr>
2320
2321 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
2322 New, stolen from the Fileutils 4.1.
2323 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
2324 * configure.in: Check for the presence of memrchr, and of its
2325 prototype.
2326
a67cef01
TVH
23272002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
2328
2329 * lib/hash.h (__P): Added definition for this macro.
2330 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
2331 BUILT_SOURCES, to ensure they are generated first.
2332 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
2333 %error-verbose to allow bootstrapping with bison 1.30x.
2334
2b25d624
AD
23352002-01-06 Akim Demaille <akim@epita.fr>
2336
2337 * src/reader.c (parse_braces): Don't fetch the next char, the
2338 convention is to fetch on entry.
2339 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
2340 'switch' without a following semicolon.
2341 * tests/regression.at (braces parsing): New.
2342
3460813b
AD
23432002-01-06 Akim Demaille <akim@epita.fr>
2344
2345 Bison is dead wrong in its RR conflict reports.
2346
2347 * tests/torture.at (GNU Cim Grammar): New.
2348 * src/conflicts.c (count_rr_conflicts): Fix.
2349
73784c64
AD
23502002-01-06 Akim Demaille <akim@epita.fr>
2351
2352 Creating package.m4 from configure.ac causes too many problems.
2353
2354 * tests/Makefile.am (package.m4): Create it by hand,
2355 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
2356
25d81090
AD
23572002-01-06 Akim Demaille <akim@epita.fr>
2358
2359 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
2360 skeleton.h.
2361
a9b8959e
PE
23622002-01-04 Paul Eggert <eggert@twinsun.com>
2363
2364 * doc/bison.texinfo (Debugging):
2365 Remove YYSTDERR; it's no longer defined or used.
2366 Also, s/cstdio.h/cstdio/.
2367
25d81090
AD
23682002-01-03 Akim Demaille <akim@epita.fr>
2369
2370 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
2371
1109455c
AD
23722002-01-03 Akim Demaille <akim@epita.fr>
2373
2374 * src/parse-skel.y (process_skeleton): Don't bind the parser's
2375 tracing code to --trace, wait for a better --trace option, with
2376 args.
2377
7ea5e977
AD
23782002-01-03 Akim Demaille <akim@epita.fr>
2379
2380 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
2381 The ISO C++ standard is extremely clear about it: stderr is
2382 considered a macro, not a regular symbol (see table 94 `Header
2383 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
2384 Therefore std:: does not apply to it. It still does with fprintf.
2385 Also, s/cstdio.h/cstdio/.
2386
fab5b110
AD
23872002-01-03 Akim Demaille <akim@epita.fr>
2388
2389 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
2390 for non system headers.
2391
aed7fd9b
AD
23922002-01-02 Akim Demaille <akim@epita.fr>
2393
2394 Equip the skeleton chain with location tracking, runtime trace,
2395 pure parser and scanner.
2396
2397 * src/parse-skel.y: Request a pure parser, locations, and prefix
2398 renaming.
2399 (%union): Having several members with the same type does not help
2400 type mismatches, simplify.
2401 (YYPRINT, yyprint): New.
2402 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
2403 (skel_error): this.
2404 Handle locations.
2405 * src/scan-skel.l: Adjust to these changes.
2406 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
2407 (LOCATION_PRINT, skel_control_t): New.
2408
24fad99e
AD
24092001-12-30 Akim Demaille <akim@epita.fr>
2410
2411 * src/parse-skel.y: Get rid of the shift/reduce conflict:
2412 replace `gb' with BLANKS.
2413 * src/scan-skel.l: Adjust.
2414
a4b36db4
AD
24152001-12-30 Akim Demaille <akim@epita.fr>
2416
2417 * src/system.h: We don't need nor want bcopy.
2418 Throw away MS-DOS crap: we don't need getpid.
2419 * configure.in: We don't need strndup. It was even causing
2420 problems: because Flex includes the headers *before* us,
2421 _GNU_SOURCE is not defined by config.h, and therefore strndup was
2422 not visible.
2423 * lib/xstrndup.c: New.
2424 * src/scan-skel.l: Use it.
2425 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
2426 * src/parse-skel.y: Use %directives instead of #defines.
2427
1239777d
AD
24282001-12-30 Akim Demaille <akim@epita.fr>
2429
2430 * src/skeleton.h: New.
2431 * src/output.c (output_parser, output_master_parser): Remove, dead
2432 code.
2433 * src/output.h (get_lines_number, actions_output, guards_output)
2434 (token_definitions_output): Prototype them.
2435 * src/parse-skel.y: Add the license notice.
2436 Include output.h and skeleton.h.
2437 (process_skeleton): Returns void, and takes a single parameter.
2438 * src/scan-skel.l: Add the license notice.
2439 Include skeleton.h.
2440 Don't use %option yylineno: it seems that then Flex imagines
2441 REJECT has been used, and therefore it won't reallocate its
2442 buffers (which makes no other sense to me than a bug). It results
2443 in warnings for `unused: yy_flex_realloc'.
2444
9b3add5b
RA
24452001-12-30 Robert Anisko <robert.anisko@epita.fr>
2446
2447 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
2448 (MUSCLE_INSERT_PREFIX): ...to there.
2449 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
2450 (MUSCLE_INSERT_PREFIX): Move from here...
2451
2452 * src/bison.hairy: Add a section directive. Put braces around muscle
2453 names. This parser skeleton is still broken, but Bison should not
2454 choke on a bad muscle 'syntax'.
2455 * src/bison.simple: Add a section directive. Put braces around muscle
2456 names.
2457
2458 * src/files.h (strsuffix, stringappend): Add declarations.
2459 (tab_extension): Add declaration.
2460 (short_base_name): Add declaration.
2461
2462 * src/files.c (strsuffix, stringappend): No longer static. These
2463 functions are used in the skeleton parser.
2464 (tab_extension): New.
2465 (compute_base_names): Use the computations done in this function
fab5b110 2466 to guess if the generated parsers should have '.tab' in their
9b3add5b
RA
2467 names.
2468 (short_base_name): No longer static.
2469
2470 * src/output.c (output_skeleton): New.
2471 (output): Disable call to output_master_parser, and give a try to
2472 a new skeleton handling system.
2473 (guards_output, actions_output): No longer static.
2474 (token_definitions_output, get_lines_number): No longer static.
2475
2476 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
2477
fab5b110 2478 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
9b3add5b
RA
2479 parse-skel.y.
2480
2481 * src/parse-skel.y: New file.
2482 * src/scan-skel.l: New file.
2483
b5b61c61
AD
24842001-12-29 Akim Demaille <akim@epita.fr>
2485
2486 %name-prefix is broken.
2487
2488 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
2489 Adjust all dependencies.
2490 * tests/headers.at (export YYLTYPE): Strengthen this test: use
2491 %name-prefix.
2492
2493 Renaming yylval but not yylloc is not consistent. Now we do.
2494
2495 * src/bison.simple: Prefix yylloc if used.
2496 * doc/bison.texinfo (Decl Summary): Document that.
2497
8c9a50be
AD
24982001-12-29 Akim Demaille <akim@epita.fr>
2499
2500 * doc/bison.texinfo: Promote `%long-directive' over
2501 `%long_directive'.
2502 Remove all references to fixed-output-files, yacc is enough.
2503
d99361e6
AD
25042001-12-29 Akim Demaille <akim@epita.fr>
2505
2506 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
2507 user prologue. These are defaults.
2508 * tests/actions.at (Mid-rule actions): Make sure the user can
2509 define YYDEBUG and YYERROR_VERBOSE.
2510
b9cecb91
AD
25112001-12-29 Akim Demaille <akim@epita.fr>
2512
2513 * src/output.c (header_output): Don't forget to export YYLTYPE and
2514 yylloc.
2515 * tests/headers.at (export YYLTYPE): New, make sure it does.
2516 * tests/regression.at (%union and --defines, Invalid CPP headers):
2517 Move to...
2518 * tests/headers.at: here.
2519
aea13e97
AD
25202001-12-29 Akim Demaille <akim@epita.fr>
2521
2522 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
2523
931394cb
AD
25242001-12-29 Akim Demaille <akim@epita.fr>
2525
2526 * tests/actions.at (Mid-rule actions): Output on a single line
2527 instead of several.
2528
704a47c4
AD
25292001-12-29 Akim Demaille <akim@epita.fr>
2530
2531 * doc/bison.texinfo: Formatting changes.
2532
091e20bb
AD
25332001-12-29 Akim Demaille <akim@epita.fr>
2534
2535 Don't store the token defs in a muscle, just be ready to output it
2536 on command. Now possible via `symbols'. Fixes a memory leak.
2537
2538 * src/output.c (token_definitions_output): New.
2539 (output_parser, header_output): Use it.
2540 * src/reader.c (symbols_save): Remove.
2541
cce71710
AD
25422001-12-29 Akim Demaille <akim@epita.fr>
2543
2544 * src/bison.simple: Do not provide a default for YYSTYPE and
2545 YYLTYPE before the user's prologue. Otherwise it's hardly... a
2546 default.
2547
82c035a8
AD
25482001-12-29 Akim Demaille <akim@epita.fr>
2549
2550 Mid-rule actions are simply... ignored!
2551
2552 * src/reader.c (readgram): Be sure to attach mid-rule actions to
2553 the empty-rule associated to the dummy symbol, not to the host
2554 rule.
2555 * tests/actions.at (Mid-rule actions): New.
2556
8419d367
AD
25572001-12-29 Akim Demaille <akim@epita.fr>
2558
2559 Memory leak.
2560
2561 * src/reader.c (reader): Free grammar.
2562
375d5806
AD
25632001-12-29 Akim Demaille <akim@epita.fr>
2564
2565 Memory leak.
2566
2567 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
2568 since it allocates it for each state, although only one is needed.
2569 (allocate_storage): Do it here.
2570
f51cb8ff
AD
25712001-12-29 Akim Demaille <akim@epita.fr>
2572
2573 * src/options.h, src/options.c (create_long_option_table): Rename
2574 as...
2575 (long_option_table_new): this, with a clearer prototype.
2576 (percent_table): Remove, unused,
2577 * src/getargs.c (getargs): Adjust.
2578
29e88316
AD
25792001-12-29 Akim Demaille <akim@epita.fr>
2580
2581 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
2582 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
2583 as states.
2584
b9f71f19
AD
25852001-12-29 Akim Demaille <akim@epita.fr>
2586
2587 * src/lalr.c (build_relations): Rename `states' as `states1'.
2588 Sorry, I don't understand exactly what it is, no better name...
2589
1a2b5d37
AD
25902001-12-29 Akim Demaille <akim@epita.fr>
2591
2592 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
2593 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
2594 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
2595 as rules.
2596
1cca533e
AD
25972001-12-29 Akim Demaille <akim@epita.fr>
2598
2599 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
2600 ago.
2601
c03ae966
AD
26022001-12-29 Akim Demaille <akim@epita.fr>
2603
2604 * src/reader.c, src/reader.h (user_toknums): Remove.
2605 Adjust all users to use symbols[i]->user_token_number.
2606
5a670b1e
AD
26072001-12-29 Akim Demaille <akim@epita.fr>
2608
2609 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
2610 Adjust all users to use symbols[i]->prec or ->assoc.
2611
ad949da9
AD
26122001-12-29 Akim Demaille <akim@epita.fr>
2613
2614 * src/reader.c, src/reader.h (tags): Remove.
2615 Adjust all users to use symbols[i]->tag.
2616
0e78e603
AD
26172001-12-29 Akim Demaille <akim@epita.fr>
2618
2619 * src/gram.h, src/gram.c (symbols): New, similar to state_table
2620 and rule_table.
2621 * src/reader.c (packsymbols): Fill this table.
2622 Drop sprec.
2623 * src/conflicts.c (resolve_sr_conflict): Adjust.
2624 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
2625 single table.
2626 Use symbols[i]->tag instead of tags[i].
2627
213e640e
AD
26282001-12-29 Akim Demaille <akim@epita.fr>
2629
2630 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
2631 In addition, put a comment in there, to replace...
2632 * tests/regression.at (%union and C comments): Remove.
2633
e7b8bef1
AD
26342001-12-29 Akim Demaille <akim@epita.fr>
2635
2636 * tests/regression.at (Web2c Actions): Blindly move the actual
2637 output as expected output. The contents *seem* right to me, but I
2638 can't pretend reading perfectly parser tables... Nonetheless, all
2639 the other tests pass correctly, the table look OK, even though the
2640 presence of `$axiom' is to be noted: AFAICS it is useless (but
2641 harmless).
2642
b68e7744
AD
26432001-12-29 Akim Demaille <akim@epita.fr>
2644
2645 * src/reader.c (readgram): Don't add the rule 0 if there were no
2646 rules read. In other words, add it _after_ having performed
2647 grammar sanity checks.
2648 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
2649
78d5bae9
AD
26502001-12-29 Akim Demaille <akim@epita.fr>
2651
2652 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
2653 visible, and some states have now a different number.
2654
ff442794
AD
26552001-12-29 Akim Demaille <akim@epita.fr>
2656
2657 * src/reader.c (readgram): Bind the initial rule's lineno to that
2658 of the first rule.
2659 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
2660 (Solved SR Conflicts): Adjust rule 0's line number.
2661
610ab194
AD
26622001-12-29 Akim Demaille <akim@epita.fr>
2663
2664 Fix the `GAWK Grammar' failure.
2665
2666 * src/LR0.c (final_state): Initialize to -1 so that we do compute
2667 the reductions of the first state which was mistakenly confused
2668 with the final state because precisely final_state was initialized
2669 to 0.
2670 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
2671 now noticed by Bison.
2672 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
2673 have a reduction on $default.
2674
29d29c8f
AD
26752001-12-29 Akim Demaille <akim@epita.fr>
2676
2677 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
2678 rule line numbers.
2679 * src/closure.c (print_closure): Likewise.
2680 * src/derives.c (print_derives): Likewise.
2681 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
2682 now.
2683
7c6b64d0
AD
26842001-12-29 Akim Demaille <akim@epita.fr>
2685
2686 * src/lalr.c (lookaheads_print): New.
2687 (lalr): Call it when --trace-flag.
2688 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
2689 are dumped.
2690
3d4daee3
AD
26912001-12-29 Akim Demaille <akim@epita.fr>
2692
2693 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
2694 when walking through ritem, even via rule->rhs.
2695 * src/reduce.c (dump_grammar, useful_production, reduce_output)
2696 (useful_production, useless_nonterminals): Likewise.
2697 (reduce_grammar_tables): Likewise, plus update nritems.
2698 * src/nullable.c (set_nullable): Likewise.
2699 * src/lalr.c (build_relations): Likewise.
2700 * tests/sets.at (Nullable): Adjust.
2701 Fortunately, now, the $axiom is no longer nullable.
2702
9e7f6bbd
AD
27032001-12-29 Akim Demaille <akim@epita.fr>
2704
2705 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
2706 the 0-sentinel.
2707 * src/gram.c (ritem_longest_rhs): Likewise.
2708 * src/reduce.c (nonterminals_reduce): Likewise.
2709 * src/print_graph.c (print_graph): Likewise.
2710 * src/output.c (output_rule_data): Likewise.
2711 * src/nullable.c (set_nullable): Likewise.
2712
255ef638
AD
27132001-12-29 Akim Demaille <akim@epita.fr>
2714
2715 * src/output.c: Comment changes.
2716
0d8a7363
AD
27172001-12-27 Paul Eggert <eggert@twinsun.com>
2718
2719 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
2720 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
2721 Sparc, as they were causing more porting problems than the
2722 (minor) performance improvement was worth.
2723
2724 Also, catch up with 1.31's YYSTD.
2725
3db472b9
AD
27262001-12-27 Akim Demaille <akim@epita.fr>
2727
2728 * src/output.c (output_gram): Rely on nritems, not the
2729 0-sentinel. See below.
2730 Use -1 as separator, not 0.
2731 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
2732 Rely on -1 as separator in yyrhs, instead of 0.
2733 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
2734 twice `Now at end of input', therefore there are two lines less to
2735 expect.
2736
b365aa05
AD
27372001-12-27 Akim Demaille <akim@epita.fr>
2738
2739 * tests/regression.at (Unresolved SR Conflicts):
2740 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
2741 below.
2742
30171f79
AD
27432001-12-27 Akim Demaille <akim@epita.fr>
2744
2745 * src/LR0.c (new_state): Recognize the final state by the fact it
2746 is reached by eoftoken.
2747 (insert_start_shifting_state, insert_eof_shifting_state)
2748 (insert_accepting_state, augment_automaton): Remove, since now
2749 these states are automatically computed from the initial state.
2750 (generate_states): Adjust.
2751 * src/print.c: When reporting a rule number to the user, substract
2752 1, so that the axiom rule is rule 0, and the first user rule is 1.
2753 * src/reduce.c: Likewise.
2754 * src/print_graph.c (print_core): For the time being, just as for
2755 the report, depend upon --trace-flags to dump the full set of
2756 items.
2757 * src/reader.c (readgram): Once the grammar read, insert the rule
2758 0: `$axiom: START-SYMBOL $'.
2759 * tests/set.at: Adjust: rule 0 is now displayed, and since the
2760 number of the states has changed (the final state is no longer
2761 necessarily the last), catch up.
2762
75142d45
AD
27632001-12-27 Akim Demaille <akim@epita.fr>
2764
2765 Try to make the use of the eoftoken valid. Given that its value
2766 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
2767 is used instead of > 0 where appropriate, (ii), depend upon nritems
2768 instead of the 0-sentinel.
2769
2770 * src/gram.h, src/gram.c (nritems): New.
2771 Expected to be duplication of nitems, but for the time being...
2772 * src/reader.c (packgram): Assert nritems and nitems are equal.
2773 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
2774 * src/closure.c (print_closure, print_fderives): Likewise.
2775 * src/gram.c (ritem_print): Likewise.
2776 * src/print.c (print_core, print_grammar): Likewise.
2777 * src/print_graph.c: Likewise.
2778
b7c49edf
AD
27792001-12-27 Akim Demaille <akim@epita.fr>
2780
2781 * src/main.c (main): If there are complains after grammar
2782 reductions, then output the report anyway if requested, then die.
2783 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
2784 * src/reader.c (eoftoken): New.
2785 (parse_token_decl): If the token being defined has value `0', it
2786 is the eoftoken.
2787 (packsymbols): No longer hack `tags' to insert `$' by hand.
2788 Be sure to preserve the value of the eoftoken.
2789 (reader): Make sure eoftoken is defined.
2790 Initialize nsyms to 0: now eoftoken is created just like the others.
2791 * src/print.c (print_grammar): Don't special case the eof token.
2792 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
2793 lie anyway, albeit pleasant.
2794 * tests/calc.at: Exercise error messages with eoftoken.
2795 Change the grammar so that empty input is invalid.
2796 Adjust expectations.
2797 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
2798
ec2da99f
AD
27992001-12-27 Akim Demaille <akim@epita.fr>
2800
2801 * configure.in: Check the protos of strchr ans strspn.
2802 Replace strchr if needed.
2803 * src/system.h: Provide the protos of strchr, strspn and memchr if
2804 missing.
2805 * lib/strchr.c: New.
2806 * src/reader.c (symbols_save): Use strchr.
2807
8adfa272
AD
28082001-12-27 Akim Demaille <akim@epita.fr>
2809
2810 * src/print.c, src/print_graph.c (escape): New.
2811 Use it to quote the TAGS outputs.
2812 * src/print_graph.c (print_state): Now errors are in red, and
2813 reductions in green.
2814 Prefer high to wide: output the state number on a line of its own.
2815
80dac38c
AD
28162001-12-27 Akim Demaille <akim@epita.fr>
2817
2818 * src/state.h, src/state.c (reductions_new): New.
2819 * src/LR0.c (set_state_table): Let all the states have a
2820 `reductions', even if reduced to 0.
2821 (save_reductions): Adjust.
2822 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
2823 * src/print.c (print_reductions, print_actions): Adjust.
2824 * src/output.c (action_row): Adjust.
2825
2cec70b9
AD
28262001-12-27 Akim Demaille <akim@epita.fr>
2827
2828 * src/state.h, src/state.c (errs_new, errs_dup): New.
2829 * src/LR0.c (set_state_table): Let all the states have an errs,
2830 even if reduced to 0.
2831 * src/print.c (print_errs, print_reductions): Adjust.
2832 * src/output.c (output_actions, action_row): Adjust.
2833 * src/conflicts.c (resolve_sr_conflict): Adjust.
2834
13ca549a
AD
28352001-12-27 Akim Demaille <akim@epita.fr>
2836
2837 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
2838
5092aba5
AD
28392001-12-27 Akim Demaille <akim@epita.fr>
2840
2841 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
2842 * src/print.c: here.
2843 (lookaheadset, shiftset): New, used as additional storage by
2844 print_reductions.
2845 (print_results): Adjust.
2846 (print_shifts, print_gotos, print_errs): New, extracted from...
2847 (print_actions): here.
2848 * src/print_graph.c (print_actions): Remove dead code.
2849
11e2beca
AD
28502001-12-27 Akim Demaille <akim@epita.fr>
2851
2852 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
2853 `$n' and `@n'.
2854
dac3c910
AD
28552001-12-27 Akim Demaille <akim@epita.fr>
2856
2857 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
2858 (build_relations): Adjust.
2859
d0b0fefa
AD
28602001-12-27 Akim Demaille <akim@epita.fr>
2861
2862 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
2863 duplication.
2864
adc8c848
AD
28652001-12-27 Akim Demaille <akim@epita.fr>
2866
2867 * src/reader.c (packgram): Catch nitems overflows.
2868
14d293ac
AD
28692001-12-27 Akim Demaille <akim@epita.fr>
2870
2871 * src/files.c, src/files.h (guard_obstack): Remove.
2872 * src/output.c (output): Adjust.
2873 * src/reader.c (parse_braces): New, factoring...
2874 (copy_action, copy_guard): these two which are renamed as...
2875 (parse_action, parse_guard): these.
2876 As a voluntary consequence, using braces around guards is now
2877 mandatory.
2878
f499b062
AD
28792001-12-27 Akim Demaille <akim@epita.fr>
2880
2881 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
2882 * src/reader.c (symbol_list): `guard' and `guard_line' are new
2883 members.
2884 (symbol_list_new): Adjust.
2885 (copy_action): action_line is the first line, not the last.
2886 (copy_guard): Just as for actions, store the `action' only, not
2887 the switch/case/break flesh.
2888 Don't parse the user action that might follow the guard, let...
2889 (readgram): do it, i.e., now, there can be an action after a
2890 guard.
2891 In other words the guard is just explicitly optional.
2892 (packgram): Adjust.
2893 * src/output.c (guards_output): New.
2894 (output_parser): Call it when needed.
2895 (output): Also free the guard and attrs obstacks.
2896 * src/files.c, src/files.h (obstack_save): Remove.
2897 (output_files): Remove.
2898 As a result, if one needs the former `.act' file, using an
2899 appropriate skeleton which requires actions and guards is now
2900 required.
2901 * src/main.c (main): Adjust.
2902 * tests/semantic.at: New.
2903 * tests/regression.at: Use `input.y' as input file name.
2904 Avoid 8+3 problems by requiring input.c when the test needs the
2905 parser.
2906
d945f5cd
AD
29072001-12-27 Akim Demaille <akim@epita.fr>
2908
2909 * src/reader.c (symbol_list_new): Be sure to initialize all the
2910 fields.
2911
d200e455
AD
29122001-12-27 Akim Demaille <akim@epita.fr>
2913
2914 All the hacks using a final pseudo state are now useless.
2915
2916 * src/LR0.c (set_state_table): state_table holds exactly nstates.
2917 * src/lalr.c (nLA): New.
2918 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
2919 instead of lookaheadsp from the pseudo state (nstate + 1).
2920
f9507c28
AD
29212001-12-27 Akim Demaille <akim@epita.fr>
2922
2923 * src/output.c (action_row, token_actions): Use a state_t instead
2924 of a integer, and nlookaheads instead of the following state's
2925 lookaheadsp.
2926
065fbd27
AD
29272001-12-27 Akim Demaille <akim@epita.fr>
2928
2929 * src/conflicts.c (log_resolution, flush_shift)
2930 (resolve_sr_conflict, set_conflicts, solve_conflicts)
2931 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
2932 (conflicts_print, print_reductions): Use a state_t instead of an
2933 integer when referring to a state.
2934 As much as possible, depend upon nlookaheads, instead of the
2935 `lookaheadsp' member of the following state (since lookaheads of
2936 successive states are successive, the difference between state n + 1
2937 and n served as the number of lookaheads for state n).
2938 * src/lalr.c (add_lookback_edge): Likewise.
2939 * src/print.c (print_core, print_actions, print_state)
2940 (print_results): Likewise.
2941 * src/print_graph.c (print_core, print_actions, print_state)
2942 (print_graph): Likewise.
2943 * src/conflicts.h: Adjust.
2944
1b177bd7
AD
29452001-12-27 Akim Demaille <akim@epita.fr>
2946
2947 * src/bison.hairy: Formatting/comment changes.
2948 ANSIfy.
2949 Remove `register' indications.
2950 Add plenty of `static'.
2951
7742ddeb
AD
29522001-12-27 Akim Demaille <akim@epita.fr>
2953
2954 * src/output.c (prepare): Drop the muscle `ntbase' which
2955 duplicates ntokens.
2956 * src/bison.simple: Formatting/comment changes.
2957 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
2958 is an undocumented synonym.
2959
1fa14068
AD
29602001-12-22 Akim Demaille <akim@epita.fr>
2961
2962 * src/output.c (output_table_data): Change the prototype to use
2963 `int' for array ranges: some invocations do pass an int, not a
2964 short.
2965 Reported by Wayne Green.
2966
b9752825
AD
29672001-12-22 Akim Demaille <akim@epita.fr>
2968
2969 Some actions of web2c.y are improperly triggered.
2970 Reported by Mike Castle.
2971
2972 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
2973 * tests/regression.at (Web2c): Rename as...
2974 (Web2c Report): this.
2975 (Web2c Actions): New.
2976
776209d6
AD
29772001-12-22 Akim Demaille <akim@epita.fr>
2978
2979 Reductions in web2c.y are improperly reported.
2980 Reported by Mike Castle.
2981
2982 * src/conflicts.c (print_reductions): Fix.
2983 * tests/regression.at (Web2c): New.
2984
275fc3ad
AD
29852001-12-18 Akim Demaille <akim@epita.fr>
2986
2987 Some host fail on `assert (!"foo")', which expands to
2988 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
2989 Reported by Nelson Beebee.
2990
2991 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
2992 `#define it_succeeded 0' and `assert (it_succeeded)'.
2993
897668ee
MA
29942001-12-17 Marc Autret <autret_m@epita.fr>
2995
2996 * src/bison.simple: Don't hard code the skeleton line and filename.
2997 * src/output.c (output_parser): Rename 'line' as 'output_line'.
2998 New line counter 'skeleton_line' (skeleton-line muscle).
2999
ab3399e0
PE
30002001-12-17 Paul Eggert <eggert@twinsun.com>
3001
3002 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
3003 YYDEBUG must be defined to a nonzero value.
3004
3005 * src/bison.simple (yytname): Do not assume that the user defines
3006 YYDEBUG to a properly parenthesized expression.
3007
3877f72b
AD
30082001-12-17 Akim Demaille <akim@epita.fr>
3009
3010 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
3011 nlookaheads is a new member.
3012 Adjust all users.
3013 * src/lalr.h (nlookaheads): Remove this orphan declaration.
3014 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
3015 state.
776209d6 3016
331dbc1b
AD
30172001-12-17 Akim Demaille <akim@epita.fr>
3018
3019 * src/files.h, src/files.c (open_files, close_files): Remove.
3020 * src/main.c (main): Don't open/close files, nor invoke lex_free,
3021 let...
3022 * src/reader.c (reader): Do it.
776209d6 3023
be750e4c
AD
30242001-12-17 Akim Demaille <akim@epita.fr>
3025
3026 * src/conflicts.c (print_reductions): Formatting changes.
776209d6 3027
709ae8c6
AD
30282001-12-17 Akim Demaille <akim@epita.fr>
3029
3030 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
3031 (flush_reduce): New.
3032 (resolve_sr_conflict): Adjust.
776209d6 3033
f87685c3
AD
30342001-12-17 Akim Demaille <akim@epita.fr>
3035
3036 * src/output.c (output_obstack): Be static and rename as...
3037 (format_obstack): this, to avoid any confusion with files.c's
3038 output_obstack.
3039 * src/reader.h (muscle_obstack): Move to...
3040 * src/output.h: here, since it's defined in output.c.
3041
837491d8
AD
30422001-12-17 Akim Demaille <akim@epita.fr>
3043
3044 * src/output.c (action_row, save_column, default_goto)
3045 (sort_actions, matching_state, pack_vector): Better variable
3046 locality.
3047
796d61fb
AD
30482001-12-17 Akim Demaille <akim@epita.fr>
3049
3050 * src/output.c: Various formatting changes.
776209d6 3051
64d15509
AD
30522001-12-17 Akim Demaille <akim@epita.fr>
3053
3054 * src/files.c (output_files): Free the output_obstack.
3055 * src/main.c (main): Call print and print_graph conditionally.
3056 * src/print.c (print): Work unconditionally.
3057 * src/print_graph.c (print_graph): Work unconditionally.
3058 * src/conflicts.c (log_resolution): Output only if verbose_flag.
3059
fbc8ecb7
MA
30602001-12-16 Marc Autret <autret_m@epita.fr>
3061
3062 * src/output.c (actions_output): Fix. When we use %no-lines,
3063 there is one less line per action.
3064
f0440388
MA
30652001-12-16 Marc Autret <autret_m@epita.fr>
3066
3067 * src/bison.simple: Remove a useless #line directive.
3068 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
3069 * src/output.c (get_lines_number): New.
776209d6 3070 (output_parser): Adjust, now takes care about the lines of a
f0440388
MA
3071 output muscles.
3072 Fix line numbering.
3073 (actions_output): Computes the number of lines taken by actions.
3074 (output_master_parser): Insert new skeleton which is the name of
3075 the output parser file name.
3076
a79986b8
MA
30772001-12-15 Marc Autret <autret_m@epita.fr>
3078
3079 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
3080
4ec8e00f
MA
30812001-12-15 Marc Autret <autret_m@epita.fr>
3082
3083 * src/output.c (output_gram): Keep track of the hairy one.
3084
1a4648ff
AD
30852001-12-15 Akim Demaille <akim@epita.fr>
3086
3087 Make `make distcheck' work.
3088
3089 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
3090 system.h which uses libgettext.h.
3091
9c2c67e6
AD
30922001-12-15 Akim Demaille <akim@epita.fr>
3093
3094 * src/nullable.c (set_nullable): Useless rules must be skipped,
3095 otherwise, since we range over their symbols, we might look at a
3096 nonterminal which no longer ``exists'', i.e., it is not counted in
3097 `nvars', hence we overflow our arrays.
3098
93ede233
AD
30992001-12-15 Akim Demaille <akim@epita.fr>
3100
3101 The header can also be produced directly, without any obstack!
3102 Yahoo!
3103
3104 * src/files.c, src/files.h (defines_obstack): Remove.
3105 (compute_header_macro): Global.
3106 (defines_obstack_save): Remove.
3107 * src/reader.c (parse_union_decl): No longer output to
3108 defines_obstack: its content can be found in the `stype' muscle
3109 anyway.
3110 (output_token_translations): Merge into...
3111 (symbols_output): this.
3112 Rename as...
3113 (symbols_save): this.
3114 (reader): Adjust.
3115 * src/output.c (header_output): New.
3116 (output): Call it.
3117
2666f928
AD
31182001-12-15 Akim Demaille <akim@epita.fr>
3119
3120 * src/reader.c (parse_union_decl): Instead of handling two obstack
3121 simultaneously, use one to define the `stype' muscle, and use the
3122 value of the latter to fill defines_obstack.
3123 (copy_comment): Remove.
3124 (copy_comment2): Work for a single obstack.
3125 Rename as...
3126 (copy_comment): this.
3127
428046f8
AD
31282001-12-15 Akim Demaille <akim@epita.fr>
3129
3130 * src/lex.c, src/lex.h (xgetc): No longer static.
3131 * src/reader.c (parse_union_decl): Revamp.
3132
ea52d706
AD
31332001-12-15 Akim Demaille <akim@epita.fr>
3134
3135 Still making progress in separating Bison into (i) input, (ii)
3136 process, (iii) output: now we can directly output the parser file
3137 without using table_obstack at all.
3138
3139 * src/files.c, src/files.h (table_obstack): Bye bye.
3140 (parser_file_name): New.
3141 * src/files.c (compute_output_file_names): Compute it.
3142 * src/output.c (actions_output, output_parser)
3143 (output_master_parser): To a file instead of an obstack.
3144
3f96f4dc
AD
31452001-12-15 Akim Demaille <akim@epita.fr>
3146
3147 Attach actions to rules, instead of pre-outputting them to
3148 actions_obstack.
3149
3150 * src/gram.h (rule_t): action and action_line are new members.
3151 * src/reader.c (symbol_list): Likewise.
3152 (copy_action): Save the actions within the rule.
3153 (packgram): Save them in rule_table.
3154 * src/output.c (actions_output): New.
3155 (output_parser): Use it on `%%actions'.
3156 (output_rule_data): Don't free rule_table.
3157 (output): Do it.
3158 (prepare): Don't save the `action' muscle.
3159 * src/bison.simple: s/%%action/%%actions/.
3160
51576fb3
AD
31612001-12-15 Akim Demaille <akim@epita.fr>
3162
3163 * src/reader.c (copy_action): When --yacc, don't append a `;'
3164 to the user action: let it fail if lacking.
dee049eb 3165 Suggested by Arnold Robbins and Tom Tromey.
51576fb3 3166
2648a72d
AD
31672001-12-14 Akim Demaille <akim@epita.fr>
3168
3169 * src/lex.c (literalchar): Simply return the char you decoded, non
3170 longer mess around with obstacks and int pointers.
3171 Adjust all callers.
3172
92790e5b
AD
31732001-12-14 Akim Demaille <akim@epita.fr>
3174
3175 * src/lex.c (literalchar): Don't escape the special characters,
3176 just decode them, and keep them as char (before, eol was output as
3177 the 2 char string `\n' etc.).
3178 * src/output.c (output_rule_data): Use quotearg to output the
3179 token strings.
3180
927c1557
PE
31812001-12-13 Paul Eggert <eggert@twinsun.com>
3182
3183 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
3184 Do not infringe on the global user namespace when using C++.
3185 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
3186 All uses of `fprintf' and `stderr' changed.
3187
3188 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
3189
ed8e1f68
AD
31902001-12-13 Akim Demaille <akim@epita.fr>
3191
3192 The computation of nullable is broken: it doesn't handle empty
3193 RHS's properly.
3194
3195 * tests/torture.at (GNU AWK Grammar): New.
3196 * tests/sets.at (Nullable): New.
3197 * src/nullable.c (set_nullable): Instead of blindly looping over
3198 `ritems', loop over the rules, and then over their rhs's.
3199
3200 Work around Autotest bugs.
3201
3202 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
3203 frame, because Autotest understand lines starting with a `+' as
3204 traces from the shell. Then, they are not processed properly.
3205 Admittedly an Autotest bug, but we don't have time to wait for
3206 Autotest to catch up.
3207 * tests/regression.at (Broken Closure): Adjust to the new table
3208 frames.
3209 Move to...
3210 * tests/sets.at: here.
3211
cb581495
AD
32122001-12-13 Akim Demaille <akim@epita.fr>
3213
3214 * src/closure.c (closure): Use nrules instead of playing tricks
3215 with BITS_PER_WORD.
3216
2e729273
AD
32172001-12-13 Akim Demaille <akim@epita.fr>
3218
3219 * src/print.c (print_actions): Output the handling of `$' as the
3220 traces do: shifting the token EOF. Before EOF was treated as a
3221 nonterminal.
3222 * tests/regression.at: Adjust some tests.
3223 * src/print_graph.c (print_core): Complete the set of items via
3224 closure. The next-to-final and final states are still unsatisfying,
3225 but that's to be addressed elsewhere.
3226 No longer output the rule numbers, but do output the state number.
3227 A single loop for the shifts + gotos is enough, but picked a
3228 distinct color for each.
3229 (print_graph): Initialize and finalize closure.
3230
107f7dfb
AD
32312001-12-13 Akim Demaille <akim@epita.fr>
3232
3233 * src/reader.c (readgram): Remove dead code, an strip useless
3234 braces.
3235 (get_type): Remove, unused.
3236
9b53a24f
AD
32372001-12-12 Akim Demaille <akim@epita.fr>
3238
3239 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
3240 on that of lib/error.c.
3241
dbfb6dcd
AD
32422001-12-12 Akim Demaille <akim@epita.fr>
3243
3244 Some hosts don't like `/' in includes.
3245
3246 * src/system.h: Include libgettext.h without qualifying the path.
3247 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
3248 $(top_srcdir).
3249
c25fb648
MA
32502001-12-11 Marc Autret <autret_m@epita.fr>
3251
3252 * src/output.c (output_parser): Remove useless muscle.
3253
710ddc4f
MA
32542001-12-11 Marc Autret <autret_m@epita.fr>
3255
3256 * src/bison.simple: Remove #line just before %%epilogue. It
3257 is now handled in ...
3258 * src/reader.c (read_additionnal_code): Add the output of a
3259 #line for the epilogue.
3260
e83d80b8
MA
32612001-12-10 Marc Autret <autret_m@epita.fr>
3262
927c1557 3263 * src/reader.c (copy_definition): Re-use CPP-outed code which
e83d80b8
MA
3264 replace precedent remove.
3265 * src/bison.simple: Remove #line before %%prologue because
3266 %%input-line is wrong at this time.
3267
971d5158
MA
32682001-12-10 Marc Autret <autret_m@epita.fr>
3269
3270 * src/reader.c (symbols_output): Clean up.
927c1557 3271 * src/output.c (output_gram, output): Clean up.
971d5158 3272
5edafffd
AD
32732001-12-10 Akim Demaille <akim@epita.fr>
3274
3275 * src/lalr.c (initialize_lookaheads): New. Extracted from...
3276 * src/LR0.c (set_state_table): here.
3277 * src/lalr.c (lalr): Call it.
3278
0279f8e9
AD
32792001-12-10 Akim Demaille <akim@epita.fr>
3280
3281 * src/state.h (shifts): Remove the `number' member: shifts are
3282 attached to state, hence no longer need to be labelled with a
3283 state number.
3284
190c4f5f
AD
32852001-12-10 Akim Demaille <akim@epita.fr>
3286
3287 Now that states have a complete set of members, the linked list of
3288 shifts is useless: just fill directly the state's shifts member.
3289
3290 * src/state.h (shifts): Remove the `next' member.
3291 * src/LR0.c (first_state, last_state): Remove.
3292 Adjust the callers.
3293 (augment_automaton): Don't look for the shifts that must be added
3294 a shift on EOF: it is those of the state we looked for! But now,
3295 since shifts are attached, it is no longer needed to looking
3296 merely by its id: its number.
3297
2a73b93d
AD
32982001-12-10 Akim Demaille <akim@epita.fr>
3299
3300 * src/LR0.c (augment_automaton): Better variable locality.
3301 Remove an impossible branch: if there is a state corresponding to
3302 the start symbol being shifted, then there is shift for the start
3303 symbol from the initial state.
3304
74392f6a
AD
33052001-12-10 Akim Demaille <akim@epita.fr>
3306
3307 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
3308 only when appropriate: when insert_start_shifting_state' is not
3309 invoked.
3310 * tests/regression.at (Rule Line Numbers): Adjust.
3311
37c82725
AD
33122001-12-10 Akim Demaille <akim@epita.fr>
3313
3314 * src/LR0.c (augment_automaton): Now that all states have shifts,
3315 merge the two cases addition shifts to the initial state.
3316
6a164e0c
AD
33172001-12-10 Akim Demaille <akim@epita.fr>
3318
3319 * src/lalr.c (set_state_table): Move to...
3320 * src/LR0.c: here.
3321 * src/lalr.c (lalr): Don't call it...
3322 * src/LR0.c (generate_states): do it.
3323 * src/LR0.h (first_state): Remove, only the table is used.
3324
7215de24
AD
33252001-12-10 Akim Demaille <akim@epita.fr>
3326
3327 * src/LR0.h (first_shift, first_reduction): Remove.
3328 * src/lalr.c: Don't use first_shift: find shifts through the
3329 states.
3330
80e25d4d
AD
33312001-12-10 Akim Demaille <akim@epita.fr>
3332
3333 * src/LR0.c: Attach shifts to states as soon as they are
3334 computed.
3335 * src/lalr.c (set_state_table): Instead of assigning shifts to
3336 state, just assert that the mapping was properly done.
3337
0ab3728b
AD
33382001-12-10 Akim Demaille <akim@epita.fr>
3339
3340 * src/LR0.c (insert_start_shift): Rename as...
3341 (insert_start_shifting_state): this.
3342 (insert_eof_shifting_state, insert_accepting_state): New.
3343 (augment_automaton): Adjust.
3344 Better locality of the variables.
3345 When looking if the start_symbol is shifted from the initial
3346 state, using `while (... symbol != start_symbol ...)' sounds
3347 better than `while (... symbol < start_symbol ...)': If fail
3348 to see how the order between symbols could be relevant!
3349
78af9bbc
AD
33502001-12-10 Akim Demaille <akim@epita.fr>
3351
3352 * src/getargs.h: Don't declare `spec_name_prefix' and
3353 `spec_file_prefix', declared by src/files.h.
3354 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
3355 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
3356 * src/output.c (prepare): Adjust.
3357 * src/reader.c (symbols_output): Likewise.
3358 * src/vmsgetargs.c: Vaguely adjust, but who cares?
3359
bdef2a41
AD
33602001-12-10 Akim Demaille <akim@epita.fr>
3361
3362 * src/muscle_tab.c (muscle_init): NULL is a better default than
3363 `"0"'.
3364
3735969c
AD
33652001-12-10 Akim Demaille <akim@epita.fr>
3366
3367 * src/reader.c (reader): Calling symbols_output once is enough.
3368
49701457
AD
33692001-12-10 Akim Demaille <akim@epita.fr>
3370
3371 Now that states have a complete set of members, the linked list of
3372 reductions is useless: just fill directly the state's reductions
3373 member.
3374
3375 * src/state.h (struct reductions): Remove member `number' and
3376 `next'.
3377 * src/LR0.c (first_reduction, last_reduction): Remove.
3378 (save_reductions): Don't link the new reductions, store them in
3379 this_state.
3380 * src/lalr.c (set_state_table): No need to attach reductions to
3381 states, it's already done.
3382 * src/output.c (output_actions): No longer free the shifts, then
3383 the reductions, then the states: free all the states and their
3384 members.
3385
0edad749
AD
33862001-12-10 Akim Demaille <akim@epita.fr>
3387
3388 * src/options.c (OPTN, DRTV, BOTH): New.
3389 (option_table): Use them.
3390
0edad749
AD
3391 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
3392 the job of system.h.
3393 * src/options.c: Don't include stdio.h and xalloc.h for the same
3394 reasons.
3395
5449dd0f
AD
33962001-12-10 Akim Demaille <akim@epita.fr>
3397
3398 * src/output.c (output, prepare): Make sure the values of the
3399 muscles `action' and `prologue' are 0-terminated.
3400
a870c567
AD
34012001-12-10 Akim Demaille <akim@epita.fr>
3402
3403 Clean up GCC warnings.
3404
3405 * src/reader.c (copy_action): `buf' is not used.
3406 (parse_skel_decl): Be static.
3407 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
3408 * src/options.h (create_long_option_table): Have a real prototype.
3409 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
3410 (hash_delete_at): Return const void *.
3411 Adjust casts to preserve the const.
3412
80df8768
AD
34132001-12-10 Akim Demaille <akim@epita.fr>
3414
3415 * configure.in: Require 2.52g.
3416 M4 is not needed, but AUTOM4TE is.
3417 * m4/m4.m4: Remove.
3418 * tests/Makefile.am: Adjust.
3419
f693ad14
AD
34202001-12-10 Akim Demaille <akim@epita.fr>
3421
3422 One structure for states is enough, even though theoretically
3423 there are LR(0) states and LALR(1) states.
3424
3425 * src/lalr.h (state_t): Remove.
3426 (state_table): Be state_t **, not state_t *.
3427 * src/state.h (core, CORE_ALLOC): Rename as...
3428 (state_t, STATE_ALLOC): this.
3429 Add the LALR(1) members: shifts, reductions, errs.
3430 * src/LR0.c (state_table): Rename as...
3431 (state_hash): this, to avoid name clashes with the global
3432 `state_table'.
3433 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
3434 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
3435
74ffbcb6
AD
34362001-12-10 Akim Demaille <akim@epita.fr>
3437
3438 Bison dumps core on bash.y.
3439 Reported by Pascal Bart.
3440
3441 * src/warshall.c (bitmatrix_print): New.
3442 (TC): Use it.
3443 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
3444 j must be the outer loop.
3445 * tests/regression.at (Broken Closure): New.
3446
07708e19
AD
34472001-12-05 Akim Demaille <akim@epita.fr>
3448
3449 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
3450 its argument.
3451