]> git.saurik.com Git - bison.git/blame_incremental - ChangeLog
* src/closure.c (print_firsts): Display of the symbol tags.
[bison.git] / ChangeLog
... / ...
CommitLineData
12002-05-06 Akim Demaille <akim@epita.fr>
2
3 * src/closure.c (print_firsts): Display of the symbol tags.
4 (bitmatrix_print): Move to...
5 * lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
6 here.
7 * tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.
8
92002-05-06 Akim Demaille <akim@epita.fr>
10
11 * src/muscle_tab.c (muscle_m4_output): Must return TRUE for
12 hash_do_for_each.
13
142002-05-06 Akim Demaille <akim@epita.fr>
15
16 * src/LR0.c (new_state, get_state): Instead of using the global
17 `kernel_size' and `kernel_base', have two new arguments:
18 `core_size' and `core'.
19 Adjust callers.
20
212002-05-06 Akim Demaille <akim@epita.fr>
22
23 * src/reader.c (packgram): No longer end `ritem' with a 0
24 sentinel: it is not used.
25
262002-05-05 Akim Demaille <akim@epita.fr>
27
28 New experimental feature: display the lookaheads in the report and
29 graph.
30
31 * src/print (print_core): When --trace-flag, display the rules
32 lookaheads.
33 * src/print_graph.c (print_core): Likewise.
34 Swap the arguments.
35 Adjust caller.
36
372002-05-05 Akim Demaille <akim@epita.fr>
38
39 * tests/torture.at (Many lookaheads): New test.
40
412002-05-05 Akim Demaille <akim@epita.fr>
42
43 * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
44 (GENERATE_MUSCLE_INSERT_TABLE): this.
45 (output_int_table, output_unsigned_int_table, output_short_table)
46 (output_token_number_table, output_item_number_table): Replace with...
47 (muscle_insert_int_table, muscle_insert_unsigned_int_table)
48 (muscle_insert_short_table, muscle_insert_token_number_table)
49 (muscle_insert_item_number_table): these.
50 Adjust all callers.
51 (prepare_tokens): Don't free `translations', since...
52 * src/reader.h, src/reader.c (grammar_free): do it.
53 Move to...
54 * src/gram.h, src/gram.c (grammar_free): here.
55 * data/bison.simple, data/bison.c++: b4_token_number_max is now
56 b4_translate_max.
57
582002-05-05 Akim Demaille <akim@epita.fr>
59
60 * src/output.c (output_unsigned_int_table): New.
61 (prepare_rules): `i' is unsigned.
62 `prhs', `rline', `r2' are unsigned int.
63 Rename muscle `rhs_number_max' as `rhs_max'.
64 Output muscles `prhs_max', `rline_max', and `r2_max'.
65 Free rline and r1.
66 * data/bison.simple, data/bison.c++: Adjust to use these muscles
67 to compute types instead of constant types.
68 * tests/regression.at (Web2c Actions): Adjust.
69
702002-05-04 Akim Demaille <akim@epita.fr>
71
72 * src/symtab.h (SALIAS, SUNDEF): Rename as...
73 (USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
74 Adjust dependencies.
75 * src/output.c (token_definitions_output): Be sure not to output a
76 `#define 'a'' when fed with `%token 'a' "a"'.
77 * tests/regression.at (Token definitions): New.
78
792002-05-03 Paul Eggert <eggert@twinsun.com>
80
81 * data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
82 for K&R C.
83
842002-05-03 gettextize <bug-gnu-gettext@gnu.org>
85
86 * Makefile.am (SUBDIRS): Remove intl.
87 (EXTRA_DIST): Add config/config.rpath.
88
892002-05-03 Akim Demaille <akim@epita.fr>
90
91 * data/bison.simple (m4_if): Don't output empty enums.
92 And actually, output valid enum definitions :(.
93
942002-05-03 Akim Demaille <akim@epita.fr>
95
96 * configure.bat: Remove, completely obsolete.
97 * Makefile.am (EXTRA_DIST): Adjust.
98 Don't distribute config.rpath...
99 * config/Makefile.am (EXTRA_DIST): Do it.
100
1012002-05-03 Akim Demaille <akim@epita.fr>
102
103 * configure.in (GETTEXT_VERSION): New.
104 Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.
105
1062002-05-03 Akim Demaille <akim@epita.fr>
107
108 * data/bison.simple (b4_token_enum): New.
109 (b4_token_defines): Use it to output tokens both as #define and
110 enums.
111 Suggested by Paul Eggert.
112 * src/output.c (token_definitions_output): Don't output spurious
113 white spaces.
114
1152002-05-03 Akim Demaille <akim@epita.fr>
116
117 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
118
1192002-05-02 Robert Anisko <robert@lrde.epita.fr>
120
121 * data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
122 Update the stack class, give a try to deque as the default container.
123
1242002-05-02 Akim Demaille <akim@epita.fr>
125
126 * data/bison.simple (yyparse): Do not implement @$ = @1.
127 (YYLLOC_DEFAULT): Adjust to do it.
128 * doc/bison.texinfo (Location Default Action): Fix.
129
1302002-05-02 Akim Demaille <akim@epita.fr>
131
132 * src/reader.c (parse_braces): Merge into...
133 (parse_action): this.
134
1352002-05-02 Akim Demaille <akim@epita.fr>
136
137 * configure.in (ALL_LINGUAS): Remove.
138 * po/LINGUAS, hr.po: New.
139
1402002-05-02 Akim Demaille <akim@epita.fr>
141
142 Remove the so called hairy (semantic) parsers.
143
144 * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
145 * src/gram.h, src/gram.c (semantic_parser): Remove.
146 (rule_t): Remove the guard and guard_line members.
147 * src/lex.h (token_t): remove tok_guard.
148 * src/options.c (option_table): Remove %guard and %semantic_parser
149 support.
150 * src/output.c, src/output.h (guards_output): Remove.
151 (prepare): Adjust.
152 (token_definitions_output): Don't output the `T'
153 tokens (???).
154 (output_skeleton): Don't output the guards.
155 * src/files.c, src/files.c (attrsfile): Remove.
156 * src/reader.c (symbol_list): Remove the guard and guard_line
157 members.
158 Adjust dependencies.
159 (parse_guard): Remove.
160 * data/bison.hairy: Remove.
161 * doc/bison.texinfo (Environment Variables): Remove occurrences of
162 BISON_HAIRY.
163
1642002-05-02 Akim Demaille <akim@epita.fr>
165
166 * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
167 (parse_guard): Rename the formal argument `stack_offset' as
168 `rule_length', which is more readable.
169 Adjust callers.
170 (copy_at, copy_dollar): Instead of outputting the hard coded
171 values of $$, $n and so forth, output invocation to b4_lhs_value,
172 b4_lhs_location, b4_rhs_value, and b4_rhs_location.
173 Note: this patch partially drops `semantic-parser' support: it
174 always does `rule_length - n', where semantic parsers ought to
175 always use `-n'.
176 * data/bison.simple, data/bison.c++ (b4_lhs_value)
177 (b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.
178
1792002-05-02 Akim Demaille <akim@epita.fr>
180
181 * configure.in (AC_INIT): Bump to 1.49b.
182 (AM_INIT_AUTOMAKE): Short invocation.
183
1842002-05-02 Akim Demaille <akim@epita.fr>
185
186 Version 1.49a.
187
1882002-05-01 Akim Demaille <akim@epita.fr>
189
190 * src/skeleton.h: Remove.
191
1922002-05-01 Akim Demaille <akim@epita.fr>
193
194 * src/skeleton.h: Fix the #endif.
195 Reported by Magnus Fromreide.
196
1972002-04-26 Paul Eggert <eggert@twinsun.com>
198
199 * data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
200 Define if we define YYSTYPE and YYLTYPE, respectively.
201 (YYCOPY): Fix [] quoting problem in the non-GCC case.
202
2032002-04-25 Robert Anisko <robert@lrde.epita.fr>
204
205 * src/scan-skel.l: Postprocess quadrigraphs.
206
207 * src/reader.c (copy_character): New function, used to output
208 single characters while replacing `[' and `]' with quadrigraphs, to
209 avoid troubles with M4 quotes.
210 (copy_comment): Output characters with copy_character.
211 (read_additionnal_code): Likewise.
212 (copy_string2): Likewise.
213 (copy_definition): Likewise.
214
215 * tests/calc.at: Exercise M4 quoting.
216
2172002-04-25 Akim Demaille <akim@epita.fr>
218
219 * tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
220 between `!' and the command.
221 Reported by Paul Eggert.
222
2232002-04-24 Robert Anisko <robert@lrde.epita.fr>
224
225 * tests/calc.at: Exercise prologue splitting.
226
227 * data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
228 `b4_post_prologue' instead of `b4_prologue'.
229
230 * src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
231 muscles.
232 (output): Free pre_prologue_obstack and post_prologue_obstack.
233 * src/files.h, src/files.c (attrs_obstack): Remove.
234 (pre_prologue_obstack, post_prologue_obstack): New.
235 * src/reader.c (copy_definition): Add a parameter to specify the
236 obstack to fill, instead of using attrs_obstack unconditionally.
237 (read_declarations): Pass pre_prologue_obstack to copy_definition if
238 `%union' has not yet been seen, pass post_prologue_obstack otherwise.
239
2402002-04-23 Paul Eggert <eggert@twinsun.com>
241
242 * data/bison.simple: Remove unnecessary commentary and white
243 space differences from 1_29-branch.
244 Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
245
246 (union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
247 YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
248 if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
249 constructors or destructors.
250
251 (yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.
252
2532002-04-23 Akim Demaille <akim@epita.fr>
254
255 * tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
256 * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
257 location with columns.
258 * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
259 All reported by Paul Eggert.
260
2612002-04-22 Akim Demaille <akim@epita.fr>
262
263 * src/reduce.c (dump_grammar): Move to...
264 * src/gram.h, src/gram.c (grammar_dump): here.
265 Be sure to separate long item numbers.
266 Don't read the members of a rule's prec if its nil.
267
2682002-04-22 Akim Demaille <akim@epita.fr>
269
270 * src/output.c (table_size, table_grow): New.
271 (MAXTABLE): Remove, replace uses with table_size.
272 (pack_vector): Instead of dying when the table is too big, grow it.
273
2742002-04-22 Akim Demaille <akim@epita.fr>
275
276 * data/bison.simple (yyr1): Its type is that of a token number.
277 * data/bison.c++ (r1_): Likewise.
278 * tests/regression.at (Web2c Actions): Adjust.
279
2802002-04-22 Akim Demaille <akim@epita.fr>
281
282 * src/reader.c (token_translations_init): 256 is now the default
283 value for the error token, i.e., it will be assigned another
284 number if the user assigned 256 to one of her tokens.
285 (reader): Don't force 256 to error.
286 * doc/bison.texinfo (Symbols): Adjust.
287 * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
288 (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
289 etc. instead of 10, 20, 30 (which was used to `jump' over error
290 (256) and undefined (2)).
291
2922002-04-22 Akim Demaille <akim@epita.fr>
293
294 Propagate more token_number_t.
295
296 * src/gram.h (token_number_as_item_number)
297 (item_number_as_token_number): New.
298 * src/output.c (GENERATE_OUTPUT_TABLE): New.
299 Use it to create output_item_number_table and
300 output_token_number_table.
301 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
302 * src/lex.c, src/nullable.c, src/output.c, src/print.c,
303 * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
304 * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
305
3062002-04-22 Akim Demaille <akim@epita.fr>
307
308 * src/output.h, src/output.c (get_lines_number): Remove.
309
3102002-04-19 Akim Demaille <akim@epita.fr>
311
312 * doc/bison.texinfo (Actions): Make clear that `|' is not the same
313 as Lex/Flex'.
314 (Debugging): More details about enabling the debugging features.
315 (Table of Symbols): Describe $$, $n, @$, and @n.
316 Suggested by Tim Josling.
317
3182002-04-19 Akim Demaille <akim@epita.fr>
319
320 * doc/bison.texinfo: Remove the uses of the obsolete @refill.
321
3222002-04-10 Akim Demaille <akim@epita.fr>
323
324 * src/system.h: Rely on HAVE_LIMITS_H.
325 Suggested by Paul Eggert.
326
3272002-04-09 Akim Demaille <akim@epita.fr>
328
329 * tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
330 full stderr, and strip it according to the bison options, instead
331 of composing the error message from different bits.
332 This makes it easier to check for several error messages.
333 Adjust all the invocations.
334 Add an invocation exercising the error token.
335 Add an invocation demonstrating a stupid error message.
336 (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
337 Adjust the tests.
338 Error message are for stderr, not stdout.
339
3402002-04-09 Akim Demaille <akim@epita.fr>
341
342 * src/gram.h, src/gram.c (error_token_number): Remove, use
343 errtoken->number.
344 * src/reader.c (reader): Don't specify the user token number (2)
345 for $undefined, as it uselessly prevents using it.
346 * src/gram.h (token_number_t): Move to...
347 * src/symtab.h: here.
348 (state_t.number): Is a token_number_t.
349 * src/print.c, src/reader.c: Use undeftoken->number instead of
350 hard coded 2.
351 (Even though this 2 is not the same as above: the number of the
352 undeftoken remains being 2, it is its user token number which
353 might not be 2).
354 * src/output.c (prepare_tokens): Rename the `maxtok' muscle with
355 `user_token_number_max'.
356 Output `undef_token_number'.
357 * data/bison.simple, data/bison.c++: Use them.
358 Be sure to map invalid yylex return values to
359 `undef_token_number'. This saves us from gratuitous SEGV.
360
361 * tests/conflicts.at (Solved SR Conflicts)
362 (Unresolved SR Conflicts): Adjust.
363 * tests/regression.at (Web2c Actions): Adjust.
364
3652002-04-08 Akim Demaille <akim@epita.fr>
366
367 * data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
368 Adding #line.
369 Remove the duplicate `typedefs'.
370 (RhsNumberType): Fix the declaration and various other typos.
371 Use __ofile__.
372 * data/bison.simple: Use __ofile__.
373 * src/scan-skel.l: Handle __ofile__.
374
3752002-04-08 Akim Demaille <akim@epita.fr>
376
377 * src/gram.h (item_number_t): New, the type of item numbers in
378 RITEM. Note that it must be able to code symbol numbers as
379 positive number, and the negation of rule numbers as negative
380 numbers.
381 Adjust all dependencies (pretty many).
382 * src/reduce.c (rule): Remove this `short *' pointer: use
383 item_number_t.
384 * src/system.h (MINSHORT, MAXSHORT): Remove.
385 Include `limits.h'.
386 Adjust dependencies to using SHRT_MAX and SHRT_MIN.
387 (shortcpy): Remove.
388 (MAXTABLE): Move to...
389 * src/output.c (MAXTABLE): here.
390 (prepare_rules): Use output_int_table to output rhs.
391 * data/bison.simple, data/bison.c++: Adjust.
392 * tests/torture.at (Big triangle): Move the limit from 254 to
393 500.
394 * tests/regression.at (Web2c Actions): Ajust.
395
396 Trying with bigger grammars shows various phenomena: at 3000 (28Mb
397 of grammar file) bison is killed by my system, at 2000 (12Mb) bison
398 passes, but produces negative #line number, once fixed, GCC is
399 killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
400 C), it passes.
401 * src/state.h (state_h): Code input lines on ints, not shorts.
402
4032002-04-08 Akim Demaille <akim@epita.fr>
404
405 * src/reduce.c (reduce_grammar): First reduce the nonterminals,
406 and then the grammar.
407
4082002-04-08 Akim Demaille <akim@epita.fr>
409
410 * src/system.h: No longer using strndup.
411
4122002-04-07 Akim Demaille <akim@epita.fr>
413
414 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
415 * src/output.c (output_table_data): Return the longest number.
416 (prepare_tokens): Output `token_number_max').
417 * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
418 New.
419 Use them to define yy_token_number_type/TokenNumberType.
420 Use this type for yytranslate.
421 * tests/torture.at (Big triangle): Push the limit from 124 to
422 253.
423 * tests/regression.at (Web2c Actions): Adjust.
424
4252002-04-07 Akim Demaille <akim@epita.fr>
426
427 * tests/torture.at (Big triangle): New.
428 (GNU AWK Grammar, GNU Cim Grammar): Move to...
429 * tests/existing.at: here.
430
4312002-04-07 Akim Demaille <akim@epita.fr>
432
433 * src/gram.h, src/gram.c (nitems): Remove, it is an alias of
434 nritems.
435 Adjust dependencies.
436
4372002-04-07 Akim Demaille <akim@epita.fr>
438
439 * src/reader.c: Normalize increments to prefix form.
440
4412002-04-07 Akim Demaille <akim@epita.fr>
442
443 * src/reader.c, symtab.c: Remove debugging code.
444
4452002-04-07 Akim Demaille <akim@epita.fr>
446
447 Rename all the `bucket's as `symbol_t'.
448
449 * src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
450 * src/reader.c, src/reader.h, src/reduce.c, src/state.h,
451 * src/symtab.c, src/symtab.h (bucket): Rename as...
452 (symbol_t): this.
453 (symbol_list_new, bucket_check_defined, bucket_make_alias)
454 (bucket_check_alias_consistence, bucket_pack, bucket_translation)
455 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
456 (buckets_new, buckets_free, buckets_do): Rename as...
457 (symbol_list_new, symbol_check_defined, symbol_make_alias)
458 (symbol_check_alias_consistence, symbol_pack, symbol_translation)
459 (symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
460 (symbols_new, symbols_free, symbols_do): these.
461
4622002-04-07 Akim Demaille <akim@epita.fr>
463
464 Use lib/hash for the symbol table.
465
466 * src/gram.c (ntokens): Initialize to 1, to reserve a slot for
467 EOF.
468 * src/lex.c (lex): Set the `number' member of new terminals.
469 * src/reader.c (bucket_check_defined, bucket_make_alias)
470 (bucket_check_alias_consistence, bucket_translation): New.
471 (reader, grammar_free, readgram, token_translations_init)
472 (packsymbols): Adjust.
473 (reader): Number the predefined tokens.
474 * src/reduce.c (inaccessable_symbols): Just use hard coded numbers
475 for predefined tokens.
476 * src/symtab.h (bucket): Remove all the hash table related
477 members.
478 * src/symtab.c (symtab): Replace by...
479 (bucket_table): this.
480 (bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
481 (buckets_new, buckets_do): New.
482
4832002-04-07 Akim Demaille <akim@epita.fr>
484
485 * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
486 (start_symbol, max_user_token_number, semantic_parser)
487 (error_token_number): Initialize.
488 * src/reader.c (grammar, start_flag, startval, typed, lastprec):
489 Initialize.
490 (reader): Don't.
491 (errtoken, eoftoken, undeftoken, axiom): Extern.
492
4932002-04-07 Akim Demaille <akim@epita.fr>
494
495 * src/gram.h (rule_s): prec and precsym are now pointers
496 to the bucket giving the priority/associativity.
497 Member `associativity' removed: useless.
498 * src/reduce.c, src/conflicts.c: Adjust.
499
5002002-04-07 Akim Demaille <akim@epita.fr>
501
502 * src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
503 Properly escape the symbols' TAG when outputting them.
504
5052002-04-07 Akim Demaille <akim@epita.fr>
506
507 * src/lalr.h (LA): Is a bitsetv, not bitset*.
508
5092002-04-07 Akim Demaille <akim@epita.fr>
510
511 * src/lalr.h, src/lalr.c (LAruleno): Replace with...
512 (LArule): this, which is an array to rule_t*.
513 * src/print.c, src/conflicts.c: Adjust.
514
5152002-04-07 Akim Demaille <akim@epita.fr>
516
517 * src/gram.h (rule_t): Rename `number' as `user_number'.
518 `number' is a new member.
519 Adjust dependencies.
520 * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
521
5222002-04-07 Akim Demaille <akim@epita.fr>
523
524 As a result of the previous patch, it is no longer needed
525 to reorder ritem itself.
526
527 * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
528
5292002-04-07 Akim Demaille <akim@epita.fr>
530
531 Be sure never to walk through RITEMS, but use only data related to
532 the rules themselves. RITEMS should be banished.
533
534 * src/output.c (output_token_translations): Rename as...
535 (prepare_tokens): this.
536 In addition to `translate', prepare the muscles `tname' and
537 `toknum', which were handled by...
538 (output_rule_data): this.
539 Remove, and move the remainder of its outputs into...
540 (prepare_rules): this new routines, which also merges content from
541 (output_gram): this.
542 (prepare_rules): Be sure never to walk through RITEMS.
543 (output_stos): Rename as...
544 (prepare_stos): this.
545 (output): Always invoke prepare_states, after all, just don't use it
546 in the output if you don't need it.
547
5482002-04-07 Akim Demaille <akim@epita.fr>
549
550 * src/LR0.c (new_state): Display `nstates' as the name of the
551 newly created state.
552 Adjust to initialize first_state and last_state if needed.
553 Be sure to distinguish the initial from the final state.
554 (new_states): Create the itemset of the initial state, and use
555 new_state.
556 * src/closure.c (closure): Now that the initial state has its
557 items properly set, there is no need for a special case when
558 creating `ruleset'.
559
560 As a result, now the rule 0, reducing to $axiom, is visible in the
561 outputs. Adjust the test suite.
562
563 * tests/conflicts.at (Solved SR Conflicts)
564 (Unresolved SR Conflicts): Adjust.
565 * tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
566 * tests/conflicts.at (S/R in initial): New.
567
5682002-04-07 Akim Demaille <akim@epita.fr>
569
570 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
571 the RHS of the rules.
572 * src/output.c (output_gram): Likewise.
573
5742002-04-07 Akim Demaille <akim@epita.fr>
575
576 * src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
577 bucket.
578 Adjust all dependencies.
579 * src/reduce.c (nonterminals_reduce): Don't forget to renumber the
580 `number' of the buckets too.
581 * src/gram.h: Include `symtab.h'.
582 (associativity): Move to...
583 * src/symtab.h: here.
584 No longer include `gram.h'.
585
5862002-04-07 Akim Demaille <akim@epita.fr>
587
588 * src/gram.h, src/gram.c (rules_rhs_length): New.
589 (ritem_longest_rhs): Use it.
590 * src/gram.h (rule_t): `number' is a new member.
591 * src/reader.c (packgram): Set it.
592 * src/reduce.c (reduce_grammar_tables): Move the useless rules at
593 the end of `rules', and count them out of `nrules'.
594 (reduce_output, dump_grammar): Adjust.
595 * src/print.c (print_grammar): It is no longer needed to check for
596 the usefulness of a rule, as useless rules are beyond `nrules + 1'.
597 * tests/reduce.at (Reduced Automaton): New test.
598
5992002-04-07 Akim Demaille <akim@epita.fr>
600
601 * src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
602 lacking `+ 1' to nrules, Bison reported as useless a token if it
603 was used solely to set the precedence of the last rule...
604
6052002-04-07 Akim Demaille <akim@epita.fr>
606
607 * data/bison.c++, data/bison.simple: Don't output the current file
608 name in #line, to avoid useless diffs between two identical
609 outputs under different names.
610
6112002-04-07 Akim Demaille <akim@epita.fr>
612
613 * src/closure.c, src/print.c, src/reader.c, src/reduce.c:
614 Normalize loops to using `< nrules + 1', not `<= nrules'.
615
6162002-04-07 Akim Demaille <akim@epita.fr>
617
618 * TODO: Update.
619
6202002-04-07 Akim Demaille <akim@epita.fr>
621
622 * src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
623 bucket.value as bucket.number.
624
6252002-04-07 Akim Demaille <akim@epita.fr>
626
627 * src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
628 * src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
629 * src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
630 RHS, instead of being an index in RITEMS.
631
6322002-04-04 Paul Eggert <eggert@twinsun.com>
633
634 * doc/bison.texinfo: Update copyright date.
635 (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
636 (Symbols): Warn about running Bison in one character set,
637 but compiling and/or running in an incompatible one.
638 Warn about character code 256, too.
639
6402002-04-03 Paul Eggert <eggert@twinsun.com>
641
642 * src/bison.data (YYSTACK_ALLOC): Depend on whether
643 YYERROR_VERBOSE is nonzero, not whether it is defined.
644
645 Merge changes from bison-1_29-branch.
646
6472002-03-20 Paul Eggert <eggert@twinsun.com>
648
649 Merge fixes from Debian bison_1.34-1.diff.
650
651 * configure.in (AC_PREREQ): 2.53.
652
6532002-03-20 Akim Demaille <akim@epita.fr>
654
655 * src/conflicts.c (log_resolution): Argument `resolution' is const.
656
6572002-03-19 Paul Eggert <eggert@twinsun.com>
658
659 * src/bison.simple (YYCOPY): New macro.
660 (YYSTACK_RELOCATE): Use it.
661 Remove Type arg; no longer needed. All callers changed.
662 (yymemcpy): Remove; no longer needed.
663
664 * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
665 * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
666
6672002-03-19 Akim Demaille <akim@epita.fr>
668
669 Test and fix the #line outputs.
670
671 * tests/atlocal.at (GCC): New.
672 * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
673 (Prologue synch line, ,%union synch line, Postprologue synch line)
674 (Action synch line, Epilogue synch line): New tests.
675 * src/reader.c (parse_union_decl): Define the muscle stype_line.
676 * data/bison.simple, data/bison.c++: Use it.
677
6782002-03-19 Akim Demaille <akim@epita.fr>
679
680 * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
681 (Solved SR Conflicts, %expect not enough, %expect right)
682 (%expect too much): Move to...
683 * tests/conflicts.at: this new file.
684
6852002-03-19 Akim Demaille <akim@epita.fr>
686
687 * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
688 * data/bison.simple, data/bison.c++: Handle the `#define' part, so
689 that we can move to enums for instance.
690 * src/output.c (token_definitions_output): Output a list of
691 `token-name, token-number' instead of the #define.
692 (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
693
6942002-03-14 Akim Demaille <akim@epita.fr>
695
696 Use Gettext 0.11.1.
697
6982002-03-09 Robert Anisko <robert@lrde.epita.fr>
699
700 * data/bison.c++: Make the user able to add members to the generated
701 parser by subclassing.
702
7032002-03-05 Robert Anisko <robert@lrde.epita.fr>
704
705 * src/reader.c (read_additionnal_code): `c' should be an integer, not
706 a character.
707 Reported by Nicolas Tisserand and Nicolas Burrus.
708
7092002-03-04 Robert Anisko <robert@lrde.epita.fr>
710
711 * src/reader.c: Warn about lacking semi-colons, do not complain.
712
7132002-03-04 Robert Anisko <robert@lrde.epita.fr>
714
715 * data/bison.c++: Remove a debug line.
716
7172002-03-04 Robert Anisko <robert@lrde.epita.fr>
718
719 * data/bison.c++: Unmerge value as yylval and value as yyval. Unmerge
720 location as yylloc and location as yyloc. Use YYLLOC_DEFAULT, and
721 provide a default implementation.
722
7232002-03-04 Akim Demaille <akim@epita.fr>
724
725 * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
726 * tests/output.at (AT_CHECK_OUTPUT): Likewise.
727 * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
728 * tests/semantic.at (Parsing Guards): Similarly.
729 * src/reader.at (readgram): Complain if the last rule is not ended
730 with a semi-colon.
731
7322002-03-04 Akim Demaille <akim@epita.fr>
733
734 * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
735 * src/closure.c: here.
736 (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
737 RTC.
738 * src/warshall.h, src/warshall.c: Remove.
739 * tests/sets.at (Broken Closure): Adjust.
740
7412002-03-04 Akim Demaille <akim@epita.fr>
742
743 * src/output.c (output_skeleton): tempdir is const.
744 bytes_read is unused.
745
7462002-03-04 Akim Demaille <akim@epita.fr>
747
748 * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
749 * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
750 Update.
751 From Michael Hayes.
752
7532002-03-04 Akim Demaille <akim@epita.fr>
754
755 * src/closure.c (closure): `r' is unused.
756
7572002-03-04 Akim Demaille <akim@epita.fr>
758
759 * tests/sets.at (Broken Closure): Add the ending `;'.
760 * src/reader.at (readgram): Complain if a rule is not ended with a
761 semi-colon.
762
7632002-03-04 Akim Demaille <akim@epita.fr>
764
765 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
766 (count_sr_conflicts): Use bitset_count.
767 * src/reduce.c (inaccessable_symbols): Ditto.
768 (bits_size): Remove.
769 * src/warshall.h, src/warshall.c: Convert to bitsetv.
770
7712002-03-04 Akim Demaille <akim@epita.fr>
772
773 * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
774 * src/reduce.c: Remove the `bitset_zero's following the
775 `bitset_create's, as now it is performed by the latter.
776
7772002-03-04 Akim Demaille <akim@epita.fr>
778
779 * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
780 * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
781 * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
782 latest sources from Michael.
783
7842002-03-04 Akim Demaille <akim@epita.fr>
785
786 * src/output.c (output): Don't free the grammar.
787 * src/reader.c (grammar_free): New.
788 * src/main.c (main): Call it and don't free symtab here.
789
7902002-03-04 Akim Demaille <akim@epita.fr>
791
792 * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
793 before returning.
794 Reported by Benoit Perrot.
795
7962002-03-04 Akim Demaille <akim@epita.fr>
797
798 Use bitset operations when possible, not loops over bits.
799
800 * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
801 bitset_or.
802 * src/print.c (print_reductions): Use bitset_and, bitset_andn.
803 * src/reduce.c (useless_nonterminals): Formatting changes.
804 * src/warshall.c (TC): Use bitset_or.
805
8062002-03-04 Akim Demaille <akim@epita.fr>
807
808 * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
809 * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
810 Ditto.
811
8122002-03-04 Akim Demaille <akim@epita.fr>
813
814 * src/lalr.c (F): Now a bitset*.
815 Adjust all dependencies.
816
8172002-03-04 Akim Demaille <akim@epita.fr>
818
819 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
820 Adjust all dependencies.
821
8222002-03-04 Akim Demaille <akim@epita.fr>
823
824 * src/L0.c, src/LR0.h (nstates): Be size_t.
825 Adjust comparisons (signed vs unsigned).
826 * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
827 bitset*.
828 Adjust all dependencies.
829
8302002-03-04 Akim Demaille <akim@epita.fr>
831
832 * src/closure.c (firsts): Now, also a bitset.
833 Adjust all dependencies.
834 (varsetsize): Remove, now unused.
835 * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
836
8372002-03-04 Akim Demaille <akim@epita.fr>
838
839 * src/print.c: Convert to use bitset.h, not hand coded iterations
840 over ints.
841
8422002-03-04 Akim Demaille <akim@epita.fr>
843
844 * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
845
8462002-03-04 Akim Demaille <akim@epita.fr>
847
848 * src/closure.c (ruleset): Be a bitset.
849 (rulesetsize): Remove.
850
8512002-03-04 Akim Demaille <akim@epita.fr>
852
853 * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
854 * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
855 * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
856 * src/closure.c (fderives): Be an array of bitsets.
857
8582002-02-28 Robert Anisko <robert@lrde.epita.fr>
859
860 * data/bison.c++: Merge the two generated headers. Insert a copyright
861 notice in each output file.
862
8632002-02-28 Akim Demaille <akim@epita.fr>
864
865 * data/bison.c++: Copy the prologue of bison.simple to fetch
866 useful M4 definitions, such as b4_header_guard.
867
8682002-02-25 Akim Demaille <akim@epita.fr>
869
870 * src/getargs.c (version): Give the name of the authors, and use a
871 translator friendly scheme for the bgr
872 copyright notice.
873
8742002-02-25 Akim Demaille <akim@epita.fr>
875
876 * src/output.c (header_output): Remove, now handled completely via
877 M4.
878
8792002-02-25 Akim Demaille <akim@epita.fr>
880
881 * m4/m4.m4: New, from CVS Autoconf.
882 * configure.in: Invoke it.
883 * src/output.c (output_skeleton): Use its result instead of the
884 hard coded name.
885
8862002-02-25 Akim Demaille <akim@epita.fr>
887
888 * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
889 Fileutils 4.1.5.
890 * configure.in: Invoke UTILS_FUNC_MKSTEMP.
891 * src/output.c (output_skeleton): Use mkstemp to create a real
892 temporary file.
893 Move the filling of `skeleton' and its muscle to...
894 (prepare): here.
895 (output): Move the definition of the prologue muscle to...
896 (prepare): here.
897 * src/system.h (DEFAULT_TMPDIR): New.
898
8992002-02-14 Paul Eggert <eggert@twinsun.com>
900
901 Remove the support for C++ namespace cleanliness; it was
902 causing more problems than it was curing, since it didn't work
903 properly on some nonstandard C++ compilers. This can wait
904 for a proper C++ parser.
905
906 * NEWS: Document this.
907 * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
908 of C++, as it's treated like C now.
909 * src/bison.simple (YYSTD): Remove.
910 (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
911 Treat C++ just like Standard C instead of trying to support
912 namespace cleanliness.
913
9142002-02-14 Akim Demaille <akim@epita.fr>
915
916 * tests/regression.at (else): Adjust to Andreas' change.
917
9182002-02-14 Akim Demaille <akim@epita.fr>
919
920 * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
921
9222002-02-13 Andreas Schwab <schwab@suse.de>
923
924 * src/output.c (output_rule_data): Don't output NULL, it might
925 not be defined yet.
926
9272002-02-11 Robert Anisko <robert@lrde.epita.fr>
928
929 * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
930 (Copyright notice): Update.
931
9322002-02-11 Akim Demaille <akim@epita.fr>
933
934 * tests/regression.at (%nonassoc and eof): Don't include
935 nonportable headers.
936
9372002-02-08 Robert Anisko <robert@lrde.epita.fr>
938
939 * data/bison.c++: Correct error recovery. Make the user able to
940 initialize the starting location.
941
9422002-02-07 Akim Demaille <akim@epita.fr>
943
944 * tests/input.at: New.
945
9462002-02-07 Robert Anisko <robert@lrde.epita.fr>
947
948 * data/bison.c++: Replace some direct m4 expansions by constants. Be
949 more consistent when naming methods and variables. Put preprocessor
950 directives around tables only needed for debugging.
951
9522002-02-07 Robert Anisko <robert@lrde.epita.fr>
953
954 * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
955 C++ parsers.
956 (yy::b4_name::parse): Use print_.
957
9582002-02-07 Robert Anisko <robert@lrde.epita.fr>
959
960 * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
961
9622002-02-07 Robert Anisko <robert@lrde.epita.fr>
963
964 * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
965 C++ parsers.
966 (yy::b4_name::parse): Build verbose error messages, and use error_.
967
9682002-02-06 Robert Anisko <robert@lrde.epita.fr>
969
970 * data/bison.c++: Fix m4 quoting in comments.
971
9722002-02-06 Robert Anisko <robert@lrde.epita.fr>
973
974 * data/bison.c++: Adjust the parser code. Fix some muscles that were
975 not expanded by m4.
976
9772002-02-05 Akim Demaille <akim@epita.fr>
978
979 * data/bison.c++: Adjust to the M4 back end.
980 More is certainly needed.
981
9822002-02-05 Akim Demaille <akim@epita.fr>
983
984 Give a try to M4 as a back end.
985
986 * lib/readpipe.c: New, from wdiff.
987 * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
988 BISON_HAIRY.
989 * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
990 specific values. Now it is m4 that performs the lookup.
991 * src/parse-skel.y: Remove.
992 * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
993 * src/output.c (actions_output, guards_output)
994 (token_definitions_output): No longer keeps track of the output
995 line number, hence remove the second argument.
996 (guards_output): Check against the guard member of a rule, not the
997 action member.
998 Adjust callers.
999 (output_skeleton): Don't look for the skeleton location, let m4 do
1000 that.
1001 Create `/tmp/muscles.m4'. This is temporary, a proper temporary
1002 file will be used.
1003 Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
1004 (prepare): Given that for the time being changesyntax is not
1005 usable in M4, rename the muscles using `-' to `_'.
1006 Define `defines_flag', `output_parser_name' and `output_header_name'.
1007 * src/output.h (actions_output, guards_output)
1008 (token_definitions_output): Adjust prototypes.
1009 * src/scan-skel.l: Instead of scanning the skeletons, it now
1010 processes the output of m4: `__oline__' and `#output'.
1011 * data/bison.simple: Adjust to be used by M4(sugar).
1012 * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
1013 to date.
1014 * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
1015 instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
1016 * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
1017 shamelessly stolen from CVS Autoconf.
1018
10192002-02-05 Akim Demaille <akim@epita.fr>
1020
1021 * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
1022 * configure.in: Check for the declarations of free and malloc.
1023 * src/muscle_tab.c: Adjust.
1024
10252002-02-05 Akim Demaille <akim@epita.fr>
1026
1027 * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
1028 which have no values.
1029
10302002-02-05 Akim Demaille <akim@epita.fr>
1031
1032 * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
1033 * data/: here.
1034
10352002-01-29 Paul Eggert <eggert@twinsun.com>
1036
1037 * src/bison.simple (YYSIZE_T): Do not define merely because
1038 YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
1039 On some platforms, <alloca.h> does not declare YYSTD (size_t).
1040
10412002-01-27 Akim Demaille <akim@epita.fr>
1042
1043 Fix `%nonassoc and eof'.
1044
1045 * src/state.c (errs_dup): Aaaah! The failure was due to bytes
1046 which were not properly copied! Replace
1047 memcpy (res->errs, src->errs, src->nerrs);
1048 with
1049 memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
1050 !!!
1051 * tests/regression.at (%nonassoc and eof): Adjust to newest
1052 Autotest: `.' is not in the PATH.
1053
10542002-01-27 Akim Demaille <akim@epita.fr>
1055
1056 * tests/sets.at (AT_EXTRACT_SETS): New.
1057 (Nullable): Use it.
1058 (Firsts): New.
1059
10602002-01-26 Akim Demaille <akim@epita.fr>
1061
1062 * tests/actions.at, tests/calc.at, tests/headers.at,
1063 * tests/torture.at: Adjust to the newest Autotest which no longer
1064 forces `.' in the PATH.
1065
10662002-01-25 Akim Demaille <akim@epita.fr>
1067
1068 * tests/regression.at (%nonassoc and eof): New.
1069 Suggested by Robert Anisko.
1070
10712002-01-24 Akim Demaille <akim@epita.fr>
1072
1073 Bison dumps core when trying to complain about broken input files.
1074 Reported by Cris van Pelt.
1075
1076 * src/lex.c (parse_percent_token): Be sure to set token_buffer.
1077 * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
1078 into...
1079 (Invalid inputs): Strengthen: exercise parse_percent_token.
1080
10812002-01-24 Robert Anisko <robert.anisko@epita.fr>
1082
1083 * src/Makefile.am: Add bison.c++.
1084 * src/bison.c++: New skeleton.
1085
10862002-01-21 Paolo Bonzini <bonzini@gnu.org>
1087
1088 * po/it.po: New.
1089
10902002-01-21 Kees Zeelenberg <kzlg@users.sourceforge.net>
1091
1092 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
1093
10942002-01-20 Marc Autret <marc@gnu.org>
1095
1096 * src/files.c (compute_output_file_names): Fix
1097
10982002-01-20 Marc Autret <marc@gnu.org>
1099
1100 * tests/output.at: New test.
1101 * src/files.c (compute_base_names): Don't map extensions when
1102 the YACC flag is set, use defaults.
1103 Reported by Evgeny Stambulchik.
1104
11052002-01-20 Marc Autret <marc@gnu.org>
1106
1107 * src/system.h: Need to define __attribute__ away for non-GCC
1108 compilers as well (i.e. the vendor C compiler).
1109 Suggested by Albert Chin-A-Young.
1110
11112002-01-11 Tim Van Holder <tim.van.holder@pandora.be>
1112
1113 * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
1114 canonical definition.
1115 * src/system.h: Use the canonical definition for PARAMS (avoids
1116 a conflict with the macro from lib/hash.h).
1117
11182002-01-11 Akim Demaille <akim@epita.fr>
1119
1120 * configure.in: Use AC_FUNC_STRNLEN.
1121 Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
1122
11232002-01-09 Akim Demaille <akim@epita.fr>
1124
1125 * src/files.c, src/files.h (output_infix): New.
1126 (tab_extension): Remove.
1127 (compute_base_names): Compute the former, drop the latter.
1128 * src/output.c (prepare): Insert the muscles `output-infix', and
1129 `output-suffix'.
1130 * src/parse-skel.y (string, string.1): New.
1131 (section.header): Use it.
1132 (section.yacc): Remove.
1133 (prefix): Remove too.
1134 * src/scan-skel.l: Adjust.
1135 * src/bison.simple, src/bison.hairy: Adjust.
1136
11372002-01-09 Akim Demaille <akim@epita.fr>
1138
1139 * configure.in (WERROR_CFLAGS): Compute it.
1140 * src/Makefile.am (CFLAGS): Pass it.
1141 * tests/atlocal.in (CFLAGS): Idem.
1142 * src/files.c: Fix a few warnings.
1143 (get_extension_index): Remove, unused.
1144
11452002-01-08 Akim Demaille <akim@epita.fr>
1146
1147 * src/getargs.c (AS_FILE_NAME): New.
1148 (getargs): Use it to convert DOSish file names.
1149 * src/files.c (base_name): Rename as full_base_name to avoid
1150 clashes with `base_name ()'.
1151 (filename_split): New.
1152 (compute_base_names): N-th rewrite, using filename_split.
1153
11542002-01-08 Akim Demaille <akim@epita.fr>
1155
1156 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
1157 New, stolen from the Fileutils 4.1.
1158 * lib/Makefile.am (libbison_a_SOURCES): Adjust.
1159 * configure.in: Check for the presence of memrchr, and of its
1160 prototype.
1161
11622002-01-07 Tim Van Holder <tim.van.holder@pandora.be>
1163
1164 * lib/hash.h (__P): Added definition for this macro.
1165 * src/Makefile.am: Add parse-skel.c and scan-skel.c to
1166 BUILT_SOURCES, to ensure they are generated first.
1167 * src/parse-skel.y: Use YYERROR_VERBOSE instead of
1168 %error-verbose to allow bootstrapping with bison 1.30x.
1169
11702002-01-06 Akim Demaille <akim@epita.fr>
1171
1172 * src/reader.c (parse_braces): Don't fetch the next char, the
1173 convention is to fetch on entry.
1174 * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
1175 'switch' without a following semicolon.
1176 * tests/regression.at (braces parsing): New.
1177
11782002-01-06 Akim Demaille <akim@epita.fr>
1179
1180 Bison is dead wrong in its RR conflict reports.
1181
1182 * tests/torture.at (GNU Cim Grammar): New.
1183 * src/conflicts.c (count_rr_conflicts): Fix.
1184
11852002-01-06 Akim Demaille <akim@epita.fr>
1186
1187 Creating package.m4 from configure.ac causes too many problems.
1188
1189 * tests/Makefile.am (package.m4): Create it by hand,
1190 AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
1191
11922002-01-06 Akim Demaille <akim@epita.fr>
1193
1194 * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
1195 skeleton.h.
1196
11972002-01-04 Paul Eggert <eggert@twinsun.com>
1198
1199 * doc/bison.texinfo (Debugging):
1200 Remove YYSTDERR; it's no longer defined or used.
1201 Also, s/cstdio.h/cstdio/.
1202
12032002-01-03 Akim Demaille <akim@epita.fr>
1204
1205 * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
1206
12072002-01-03 Akim Demaille <akim@epita.fr>
1208
1209 * src/parse-skel.y (process_skeleton): Don't bind the parser's
1210 tracing code to --trace, wait for a better --trace option, with
1211 args.
1212
12132002-01-03 Akim Demaille <akim@epita.fr>
1214
1215 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
1216 The ISO C++ standard is extremely clear about it: stderr is
1217 considered a macro, not a regular symbol (see table 94 `Header
1218 <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
1219 Therefore std:: does not apply to it. It still does with fprintf.
1220 Also, s/cstdio.h/cstdio/.
1221
12222002-01-03 Akim Demaille <akim@epita.fr>
1223
1224 * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
1225 for non system headers.
1226
12272002-01-02 Akim Demaille <akim@epita.fr>
1228
1229 Equip the skeleton chain with location tracking, runtime trace,
1230 pure parser and scanner.
1231
1232 * src/parse-skel.y: Request a pure parser, locations, and prefix
1233 renaming.
1234 (%union): Having several members with the same type does not help
1235 type mismatches, simplify.
1236 (YYPRINT, yyprint): New.
1237 (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
1238 (skel_error): this.
1239 Handle locations.
1240 * src/scan-skel.l: Adjust to these changes.
1241 * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
1242 (LOCATION_PRINT, skel_control_t): New.
1243
12442001-12-30 Akim Demaille <akim@epita.fr>
1245
1246 * src/parse-skel.y: Get rid of the shift/reduce conflict:
1247 replace `gb' with BLANKS.
1248 * src/scan-skel.l: Adjust.
1249
12502001-12-30 Akim Demaille <akim@epita.fr>
1251
1252 * src/system.h: We don't need nor want bcopy.
1253 Throw away MS-DOS crap: we don't need getpid.
1254 * configure.in: We don't need strndup. It was even causing
1255 problems: because Flex includes the headers *before* us,
1256 _GNU_SOURCE is not defined by config.h, and therefore strndup was
1257 not visible.
1258 * lib/xstrndup.c: New.
1259 * src/scan-skel.l: Use it.
1260 Be sure to initialize yylval.muscle member when scanning a MUSCLE.
1261 * src/parse-skel.y: Use %directives instead of #defines.
1262
12632001-12-30 Akim Demaille <akim@epita.fr>
1264
1265 * src/skeleton.h: New.
1266 * src/output.c (output_parser, output_master_parser): Remove, dead
1267 code.
1268 * src/output.h (get_lines_number, actions_output, guards_output)
1269 (token_definitions_output): Prototype them.
1270 * src/parse-skel.y: Add the license notice.
1271 Include output.h and skeleton.h.
1272 (process_skeleton): Returns void, and takes a single parameter.
1273 * src/scan-skel.l: Add the license notice.
1274 Include skeleton.h.
1275 Don't use %option yylineno: it seems that then Flex imagines
1276 REJECT has been used, and therefore it won't reallocate its
1277 buffers (which makes no other sense to me than a bug). It results
1278 in warnings for `unused: yy_flex_realloc'.
1279
12802001-12-30 Robert Anisko <robert.anisko@epita.fr>
1281
1282 * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
1283 (MUSCLE_INSERT_PREFIX): ...to there.
1284 * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
1285 (MUSCLE_INSERT_PREFIX): Move from here...
1286
1287 * src/bison.hairy: Add a section directive. Put braces around muscle
1288 names. This parser skeleton is still broken, but Bison should not
1289 choke on a bad muscle 'syntax'.
1290 * src/bison.simple: Add a section directive. Put braces around muscle
1291 names.
1292
1293 * src/files.h (strsuffix, stringappend): Add declarations.
1294 (tab_extension): Add declaration.
1295 (short_base_name): Add declaration.
1296
1297 * src/files.c (strsuffix, stringappend): No longer static. These
1298 functions are used in the skeleton parser.
1299 (tab_extension): New.
1300 (compute_base_names): Use the computations done in this function
1301 to guess if the generated parsers should have '.tab' in their
1302 names.
1303 (short_base_name): No longer static.
1304
1305 * src/output.c (output_skeleton): New.
1306 (output): Disable call to output_master_parser, and give a try to
1307 a new skeleton handling system.
1308 (guards_output, actions_output): No longer static.
1309 (token_definitions_output, get_lines_number): No longer static.
1310
1311 * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
1312
1313 * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
1314 parse-skel.y.
1315
1316 * src/parse-skel.y: New file.
1317 * src/scan-skel.l: New file.
1318
13192001-12-29 Akim Demaille <akim@epita.fr>
1320
1321 %name-prefix is broken.
1322
1323 * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
1324 Adjust all dependencies.
1325 * tests/headers.at (export YYLTYPE): Strengthen this test: use
1326 %name-prefix.
1327
1328 Renaming yylval but not yylloc is not consistent. Now we do.
1329
1330 * src/bison.simple: Prefix yylloc if used.
1331 * doc/bison.texinfo (Decl Summary): Document that.
1332
13332001-12-29 Akim Demaille <akim@epita.fr>
1334
1335 * doc/bison.texinfo: Promote `%long-directive' over
1336 `%long_directive'.
1337 Remove all references to fixed-output-files, yacc is enough.
1338
13392001-12-29 Akim Demaille <akim@epita.fr>
1340
1341 * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
1342 user prologue. These are defaults.
1343 * tests/actions.at (Mid-rule actions): Make sure the user can
1344 define YYDEBUG and YYERROR_VERBOSE.
1345
13462001-12-29 Akim Demaille <akim@epita.fr>
1347
1348 * src/output.c (header_output): Don't forget to export YYLTYPE and
1349 yylloc.
1350 * tests/headers.at (export YYLTYPE): New, make sure it does.
1351 * tests/regression.at (%union and --defines, Invalid CPP headers):
1352 Move to...
1353 * tests/headers.at: here.
1354
13552001-12-29 Akim Demaille <akim@epita.fr>
1356
1357 * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
1358
13592001-12-29 Akim Demaille <akim@epita.fr>
1360
1361 * tests/actions.at (Mid-rule actions): Output on a single line
1362 instead of several.
1363
13642001-12-29 Akim Demaille <akim@epita.fr>
1365
1366 * doc/bison.texinfo: Formatting changes.
1367
13682001-12-29 Akim Demaille <akim@epita.fr>
1369
1370 Don't store the token defs in a muscle, just be ready to output it
1371 on command. Now possible via `symbols'. Fixes a memory leak.
1372
1373 * src/output.c (token_definitions_output): New.
1374 (output_parser, header_output): Use it.
1375 * src/reader.c (symbols_save): Remove.
1376
13772001-12-29 Akim Demaille <akim@epita.fr>
1378
1379 * src/bison.simple: Do not provide a default for YYSTYPE and
1380 YYLTYPE before the user's prologue. Otherwise it's hardly... a
1381 default.
1382
13832001-12-29 Akim Demaille <akim@epita.fr>
1384
1385 Mid-rule actions are simply... ignored!
1386
1387 * src/reader.c (readgram): Be sure to attach mid-rule actions to
1388 the empty-rule associated to the dummy symbol, not to the host
1389 rule.
1390 * tests/actions.at (Mid-rule actions): New.
1391
13922001-12-29 Akim Demaille <akim@epita.fr>
1393
1394 Memory leak.
1395
1396 * src/reader.c (reader): Free grammar.
1397
13982001-12-29 Akim Demaille <akim@epita.fr>
1399
1400 Memory leak.
1401
1402 * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
1403 since it allocates it for each state, although only one is needed.
1404 (allocate_storage): Do it here.
1405
14062001-12-29 Akim Demaille <akim@epita.fr>
1407
1408 * src/options.h, src/options.c (create_long_option_table): Rename
1409 as...
1410 (long_option_table_new): this, with a clearer prototype.
1411 (percent_table): Remove, unused,
1412 * src/getargs.c (getargs): Adjust.
1413
14142001-12-29 Akim Demaille <akim@epita.fr>
1415
1416 * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
1417 * src/print.c, src/print_graph.c, src/state.h: Rename state_table
1418 as states.
1419
14202001-12-29 Akim Demaille <akim@epita.fr>
1421
1422 * src/lalr.c (build_relations): Rename `states' as `states1'.
1423 Sorry, I don't understand exactly what it is, no better name...
1424
14252001-12-29 Akim Demaille <akim@epita.fr>
1426
1427 * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
1428 * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
1429 * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
1430 as rules.
1431
14322001-12-29 Akim Demaille <akim@epita.fr>
1433
1434 * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
1435 ago.
1436
14372001-12-29 Akim Demaille <akim@epita.fr>
1438
1439 * src/reader.c, src/reader.h (user_toknums): Remove.
1440 Adjust all users to use symbols[i]->user_token_number.
1441
14422001-12-29 Akim Demaille <akim@epita.fr>
1443
1444 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
1445 Adjust all users to use symbols[i]->prec or ->assoc.
1446
14472001-12-29 Akim Demaille <akim@epita.fr>
1448
1449 * src/reader.c, src/reader.h (tags): Remove.
1450 Adjust all users to use symbols[i]->tag.
1451
14522001-12-29 Akim Demaille <akim@epita.fr>
1453
1454 * src/gram.h, src/gram.c (symbols): New, similar to state_table
1455 and rule_table.
1456 * src/reader.c (packsymbols): Fill this table.
1457 Drop sprec.
1458 * src/conflicts.c (resolve_sr_conflict): Adjust.
1459 * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
1460 single table.
1461 Use symbols[i]->tag instead of tags[i].
1462
14632001-12-29 Akim Demaille <akim@epita.fr>
1464
1465 * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
1466 In addition, put a comment in there, to replace...
1467 * tests/regression.at (%union and C comments): Remove.
1468
14692001-12-29 Akim Demaille <akim@epita.fr>
1470
1471 * tests/regression.at (Web2c Actions): Blindly move the actual
1472 output as expected output. The contents *seem* right to me, but I
1473 can't pretend reading perfectly parser tables... Nonetheless, all
1474 the other tests pass correctly, the table look OK, even though the
1475 presence of `$axiom' is to be noted: AFAICS it is useless (but
1476 harmless).
1477
14782001-12-29 Akim Demaille <akim@epita.fr>
1479
1480 * src/reader.c (readgram): Don't add the rule 0 if there were no
1481 rules read. In other words, add it _after_ having performed
1482 grammar sanity checks.
1483 Fixes the `tests/regression.at (Invalid input: 1)' Failure.
1484
14852001-12-29 Akim Demaille <akim@epita.fr>
1486
1487 * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
1488 visible, and some states have now a different number.
1489
14902001-12-29 Akim Demaille <akim@epita.fr>
1491
1492 * src/reader.c (readgram): Bind the initial rule's lineno to that
1493 of the first rule.
1494 * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
1495 (Solved SR Conflicts): Adjust rule 0's line number.
1496
14972001-12-29 Akim Demaille <akim@epita.fr>
1498
1499 Fix the `GAWK Grammar' failure.
1500
1501 * src/LR0.c (final_state): Initialize to -1 so that we do compute
1502 the reductions of the first state which was mistakenly confused
1503 with the final state because precisely final_state was initialized
1504 to 0.
1505 * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
1506 now noticed by Bison.
1507 * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
1508 have a reduction on $default.
1509
15102001-12-29 Akim Demaille <akim@epita.fr>
1511
1512 * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
1513 rule line numbers.
1514 * src/closure.c (print_closure): Likewise.
1515 * src/derives.c (print_derives): Likewise.
1516 * tests/sets.at (Nullable): Adjust: the rule numbers are correct
1517 now.
1518
15192001-12-29 Akim Demaille <akim@epita.fr>
1520
1521 * src/lalr.c (lookaheads_print): New.
1522 (lalr): Call it when --trace-flag.
1523 * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
1524 are dumped.
1525
15262001-12-29 Akim Demaille <akim@epita.fr>
1527
1528 * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
1529 when walking through ritem, even via rule->rhs.
1530 * src/reduce.c (dump_grammar, useful_production, reduce_output)
1531 (useful_production, useless_nonterminals): Likewise.
1532 (reduce_grammar_tables): Likewise, plus update nritems.
1533 * src/nullable.c (set_nullable): Likewise.
1534 * src/lalr.c (build_relations): Likewise.
1535 * tests/sets.at (Nullable): Adjust.
1536 Fortunately, now, the $axiom is no longer nullable.
1537
15382001-12-29 Akim Demaille <akim@epita.fr>
1539
1540 * src/LR0.c (generate_states): Use nritems, not nitems, nor using
1541 the 0-sentinel.
1542 * src/gram.c (ritem_longest_rhs): Likewise.
1543 * src/reduce.c (nonterminals_reduce): Likewise.
1544 * src/print_graph.c (print_graph): Likewise.
1545 * src/output.c (output_rule_data): Likewise.
1546 * src/nullable.c (set_nullable): Likewise.
1547
15482001-12-29 Akim Demaille <akim@epita.fr>
1549
1550 * src/output.c: Comment changes.
1551
15522001-12-27 Paul Eggert <eggert@twinsun.com>
1553
1554 * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
1555 cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
1556 Sparc, as they were causing more porting problems than the
1557 (minor) performance improvement was worth.
1558
1559 Also, catch up with 1.31's YYSTD.
1560
15612001-12-27 Akim Demaille <akim@epita.fr>
1562
1563 * src/output.c (output_gram): Rely on nritems, not the
1564 0-sentinel. See below.
1565 Use -1 as separator, not 0.
1566 * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
1567 Rely on -1 as separator in yyrhs, instead of 0.
1568 * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
1569 twice `Now at end of input', therefore there are two lines less to
1570 expect.
1571
15722001-12-27 Akim Demaille <akim@epita.fr>
1573
1574 * tests/regression.at (Unresolved SR Conflicts):
1575 (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
1576 below.
1577
15782001-12-27 Akim Demaille <akim@epita.fr>
1579
1580 * src/LR0.c (new_state): Recognize the final state by the fact it
1581 is reached by eoftoken.
1582 (insert_start_shifting_state, insert_eof_shifting_state)
1583 (insert_accepting_state, augment_automaton): Remove, since now
1584 these states are automatically computed from the initial state.
1585 (generate_states): Adjust.
1586 * src/print.c: When reporting a rule number to the user, substract
1587 1, so that the axiom rule is rule 0, and the first user rule is 1.
1588 * src/reduce.c: Likewise.
1589 * src/print_graph.c (print_core): For the time being, just as for
1590 the report, depend upon --trace-flags to dump the full set of
1591 items.
1592 * src/reader.c (readgram): Once the grammar read, insert the rule
1593 0: `$axiom: START-SYMBOL $'.
1594 * tests/set.at: Adjust: rule 0 is now displayed, and since the
1595 number of the states has changed (the final state is no longer
1596 necessarily the last), catch up.
1597
15982001-12-27 Akim Demaille <akim@epita.fr>
1599
1600 Try to make the use of the eoftoken valid. Given that its value
1601 is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
1602 is used instead of > 0 where appropriate, (ii), depend upon nritems
1603 instead of the 0-sentinel.
1604
1605 * src/gram.h, src/gram.c (nritems): New.
1606 Expected to be duplication of nitems, but for the time being...
1607 * src/reader.c (packgram): Assert nritems and nitems are equal.
1608 * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
1609 * src/closure.c (print_closure, print_fderives): Likewise.
1610 * src/gram.c (ritem_print): Likewise.
1611 * src/print.c (print_core, print_grammar): Likewise.
1612 * src/print_graph.c: Likewise.
1613
16142001-12-27 Akim Demaille <akim@epita.fr>
1615
1616 * src/main.c (main): If there are complains after grammar
1617 reductions, then output the report anyway if requested, then die.
1618 * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
1619 * src/reader.c (eoftoken): New.
1620 (parse_token_decl): If the token being defined has value `0', it
1621 is the eoftoken.
1622 (packsymbols): No longer hack `tags' to insert `$' by hand.
1623 Be sure to preserve the value of the eoftoken.
1624 (reader): Make sure eoftoken is defined.
1625 Initialize nsyms to 0: now eoftoken is created just like the others.
1626 * src/print.c (print_grammar): Don't special case the eof token.
1627 * src/regression.at: Adjust: `$' has value 0, not -1, which was a
1628 lie anyway, albeit pleasant.
1629 * tests/calc.at: Exercise error messages with eoftoken.
1630 Change the grammar so that empty input is invalid.
1631 Adjust expectations.
1632 When yyungeting, be sure to use a valid yylloc: use last_yylloc.
1633
16342001-12-27 Akim Demaille <akim@epita.fr>
1635
1636 * configure.in: Check the protos of strchr ans strspn.
1637 Replace strchr if needed.
1638 * src/system.h: Provide the protos of strchr, strspn and memchr if
1639 missing.
1640 * lib/strchr.c: New.
1641 * src/reader.c (symbols_save): Use strchr.
1642
16432001-12-27 Akim Demaille <akim@epita.fr>
1644
1645 * src/print.c, src/print_graph.c (escape): New.
1646 Use it to quote the TAGS outputs.
1647 * src/print_graph.c (print_state): Now errors are in red, and
1648 reductions in green.
1649 Prefer high to wide: output the state number on a line of its own.
1650
16512001-12-27 Akim Demaille <akim@epita.fr>
1652
1653 * src/state.h, src/state.c (reductions_new): New.
1654 * src/LR0.c (set_state_table): Let all the states have a
1655 `reductions', even if reduced to 0.
1656 (save_reductions): Adjust.
1657 * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
1658 * src/print.c (print_reductions, print_actions): Adjust.
1659 * src/output.c (action_row): Adjust.
1660
16612001-12-27 Akim Demaille <akim@epita.fr>
1662
1663 * src/state.h, src/state.c (errs_new, errs_dup): New.
1664 * src/LR0.c (set_state_table): Let all the states have an errs,
1665 even if reduced to 0.
1666 * src/print.c (print_errs, print_reductions): Adjust.
1667 * src/output.c (output_actions, action_row): Adjust.
1668 * src/conflicts.c (resolve_sr_conflict): Adjust.
1669
16702001-12-27 Akim Demaille <akim@epita.fr>
1671
1672 * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
1673
16742001-12-27 Akim Demaille <akim@epita.fr>
1675
1676 * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
1677 * src/print.c: here.
1678 (lookaheadset, shiftset): New, used as additional storage by
1679 print_reductions.
1680 (print_results): Adjust.
1681 (print_shifts, print_gotos, print_errs): New, extracted from...
1682 (print_actions): here.
1683 * src/print_graph.c (print_actions): Remove dead code.
1684
16852001-12-27 Akim Demaille <akim@epita.fr>
1686
1687 * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
1688 `$n' and `@n'.
1689
16902001-12-27 Akim Demaille <akim@epita.fr>
1691
1692 * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
1693 (build_relations): Adjust.
1694
16952001-12-27 Akim Demaille <akim@epita.fr>
1696
1697 * src/lalr.c (set_goto_map): Remove a wrong but benign loop
1698 duplication.
1699
17002001-12-27 Akim Demaille <akim@epita.fr>
1701
1702 * src/reader.c (packgram): Catch nitems overflows.
1703
17042001-12-27 Akim Demaille <akim@epita.fr>
1705
1706 * src/files.c, src/files.h (guard_obstack): Remove.
1707 * src/output.c (output): Adjust.
1708 * src/reader.c (parse_braces): New, factoring...
1709 (copy_action, copy_guard): these two which are renamed as...
1710 (parse_action, parse_guard): these.
1711 As a voluntary consequence, using braces around guards is now
1712 mandatory.
1713
17142001-12-27 Akim Demaille <akim@epita.fr>
1715
1716 * src/gram.h (rule_t): `guard' and `guard_line' are new members.
1717 * src/reader.c (symbol_list): `guard' and `guard_line' are new
1718 members.
1719 (symbol_list_new): Adjust.
1720 (copy_action): action_line is the first line, not the last.
1721 (copy_guard): Just as for actions, store the `action' only, not
1722 the switch/case/break flesh.
1723 Don't parse the user action that might follow the guard, let...
1724 (readgram): do it, i.e., now, there can be an action after a
1725 guard.
1726 In other words the guard is just explicitly optional.
1727 (packgram): Adjust.
1728 * src/output.c (guards_output): New.
1729 (output_parser): Call it when needed.
1730 (output): Also free the guard and attrs obstacks.
1731 * src/files.c, src/files.h (obstack_save): Remove.
1732 (output_files): Remove.
1733 As a result, if one needs the former `.act' file, using an
1734 appropriate skeleton which requires actions and guards is now
1735 required.
1736 * src/main.c (main): Adjust.
1737 * tests/semantic.at: New.
1738 * tests/regression.at: Use `input.y' as input file name.
1739 Avoid 8+3 problems by requiring input.c when the test needs the
1740 parser.
1741
17422001-12-27 Akim Demaille <akim@epita.fr>
1743
1744 * src/reader.c (symbol_list_new): Be sure to initialize all the
1745 fields.
1746
17472001-12-27 Akim Demaille <akim@epita.fr>
1748
1749 All the hacks using a final pseudo state are now useless.
1750
1751 * src/LR0.c (set_state_table): state_table holds exactly nstates.
1752 * src/lalr.c (nLA): New.
1753 (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
1754 instead of lookaheadsp from the pseudo state (nstate + 1).
1755
17562001-12-27 Akim Demaille <akim@epita.fr>
1757
1758 * src/output.c (action_row, token_actions): Use a state_t instead
1759 of a integer, and nlookaheads instead of the following state's
1760 lookaheadsp.
1761
17622001-12-27 Akim Demaille <akim@epita.fr>
1763
1764 * src/conflicts.c (log_resolution, flush_shift)
1765 (resolve_sr_conflict, set_conflicts, solve_conflicts)
1766 (count_sr_conflicts, count_rr_conflicts, conflicts_output)
1767 (conflicts_print, print_reductions): Use a state_t instead of an
1768 integer when referring to a state.
1769 As much as possible, depend upon nlookaheads, instead of the
1770 `lookaheadsp' member of the following state (since lookaheads of
1771 successive states are successive, the difference between state n + 1
1772 and n served as the number of lookaheads for state n).
1773 * src/lalr.c (add_lookback_edge): Likewise.
1774 * src/print.c (print_core, print_actions, print_state)
1775 (print_results): Likewise.
1776 * src/print_graph.c (print_core, print_actions, print_state)
1777 (print_graph): Likewise.
1778 * src/conflicts.h: Adjust.
1779
17802001-12-27 Akim Demaille <akim@epita.fr>
1781
1782 * src/bison.hairy: Formatting/comment changes.
1783 ANSIfy.
1784 Remove `register' indications.
1785 Add plenty of `static'.
1786
17872001-12-27 Akim Demaille <akim@epita.fr>
1788
1789 * src/output.c (prepare): Drop the muscle `ntbase' which
1790 duplicates ntokens.
1791 * src/bison.simple: Formatting/comment changes.
1792 Use YYNTOKENS only, which is documented, but not YYNTBASE, which
1793 is an undocumented synonym.
1794
17952001-12-22 Akim Demaille <akim@epita.fr>
1796
1797 * src/output.c (output_table_data): Change the prototype to use
1798 `int' for array ranges: some invocations do pass an int, not a
1799 short.
1800 Reported by Wayne Green.
1801
18022001-12-22 Akim Demaille <akim@epita.fr>
1803
1804 Some actions of web2c.y are improperly triggered.
1805 Reported by Mike Castle.
1806
1807 * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
1808 * tests/regression.at (Web2c): Rename as...
1809 (Web2c Report): this.
1810 (Web2c Actions): New.
1811
18122001-12-22 Akim Demaille <akim@epita.fr>
1813
1814 Reductions in web2c.y are improperly reported.
1815 Reported by Mike Castle.
1816
1817 * src/conflicts.c (print_reductions): Fix.
1818 * tests/regression.at (Web2c): New.
1819
18202001-12-18 Akim Demaille <akim@epita.fr>
1821
1822 Some host fail on `assert (!"foo")', which expands to
1823 ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
1824 Reported by Nelson Beebee.
1825
1826 * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
1827 `#define it_succeeded 0' and `assert (it_succeeded)'.
1828
18292001-12-17 Marc Autret <autret_m@epita.fr>
1830
1831 * src/bison.simple: Don't hard code the skeleton line and filename.
1832 * src/output.c (output_parser): Rename 'line' as 'output_line'.
1833 New line counter 'skeleton_line' (skeleton-line muscle).
1834
18352001-12-17 Paul Eggert <eggert@twinsun.com>
1836
1837 * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
1838 YYDEBUG must be defined to a nonzero value.
1839
1840 * src/bison.simple (yytname): Do not assume that the user defines
1841 YYDEBUG to a properly parenthesized expression.
1842
18432001-12-17 Akim Demaille <akim@epita.fr>
1844
1845 * src/state.h (state_t): Rename lookaheads as lookaheadsp.
1846 nlookaheads is a new member.
1847 Adjust all users.
1848 * src/lalr.h (nlookaheads): Remove this orphan declaration.
1849 * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
1850 state.
1851
18522001-12-17 Akim Demaille <akim@epita.fr>
1853
1854 * src/files.h, src/files.c (open_files, close_files): Remove.
1855 * src/main.c (main): Don't open/close files, nor invoke lex_free,
1856 let...
1857 * src/reader.c (reader): Do it.
1858
18592001-12-17 Akim Demaille <akim@epita.fr>
1860
1861 * src/conflicts.c (print_reductions): Formatting changes.
1862
18632001-12-17 Akim Demaille <akim@epita.fr>
1864
1865 * src/conflicts.c (flush_shift): Also adjust lookaheadset.
1866 (flush_reduce): New.
1867 (resolve_sr_conflict): Adjust.
1868
18692001-12-17 Akim Demaille <akim@epita.fr>
1870
1871 * src/output.c (output_obstack): Be static and rename as...
1872 (format_obstack): this, to avoid any confusion with files.c's
1873 output_obstack.
1874 * src/reader.h (muscle_obstack): Move to...
1875 * src/output.h: here, since it's defined in output.c.
1876
18772001-12-17 Akim Demaille <akim@epita.fr>
1878
1879 * src/output.c (action_row, save_column, default_goto)
1880 (sort_actions, matching_state, pack_vector): Better variable
1881 locality.
1882
18832001-12-17 Akim Demaille <akim@epita.fr>
1884
1885 * src/output.c: Various formatting changes.
1886
18872001-12-17 Akim Demaille <akim@epita.fr>
1888
1889 * src/files.c (output_files): Free the output_obstack.
1890 * src/main.c (main): Call print and print_graph conditionally.
1891 * src/print.c (print): Work unconditionally.
1892 * src/print_graph.c (print_graph): Work unconditionally.
1893 * src/conflicts.c (log_resolution): Output only if verbose_flag.
1894
18952001-12-16 Marc Autret <autret_m@epita.fr>
1896
1897 * src/output.c (actions_output): Fix. When we use %no-lines,
1898 there is one less line per action.
1899
19002001-12-16 Marc Autret <autret_m@epita.fr>
1901
1902 * src/bison.simple: Remove a useless #line directive.
1903 s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
1904 * src/output.c (get_lines_number): New.
1905 (output_parser): Adjust, now takes care about the lines of a
1906 output muscles.
1907 Fix line numbering.
1908 (actions_output): Computes the number of lines taken by actions.
1909 (output_master_parser): Insert new skeleton which is the name of
1910 the output parser file name.
1911
19122001-12-15 Marc Autret <autret_m@epita.fr>
1913
1914 * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
1915
19162001-12-15 Marc Autret <autret_m@epita.fr>
1917
1918 * src/output.c (output_gram): Keep track of the hairy one.
1919
19202001-12-15 Akim Demaille <akim@epita.fr>
1921
1922 Make `make distcheck' work.
1923
1924 * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
1925 system.h which uses libgettext.h.
1926
19272001-12-15 Akim Demaille <akim@epita.fr>
1928
1929 * src/nullable.c (set_nullable): Useless rules must be skipped,
1930 otherwise, since we range over their symbols, we might look at a
1931 nonterminal which no longer ``exists'', i.e., it is not counted in
1932 `nvars', hence we overflow our arrays.
1933
19342001-12-15 Akim Demaille <akim@epita.fr>
1935
1936 The header can also be produced directly, without any obstack!
1937 Yahoo!
1938
1939 * src/files.c, src/files.h (defines_obstack): Remove.
1940 (compute_header_macro): Global.
1941 (defines_obstack_save): Remove.
1942 * src/reader.c (parse_union_decl): No longer output to
1943 defines_obstack: its content can be found in the `stype' muscle
1944 anyway.
1945 (output_token_translations): Merge into...
1946 (symbols_output): this.
1947 Rename as...
1948 (symbols_save): this.
1949 (reader): Adjust.
1950 * src/output.c (header_output): New.
1951 (output): Call it.
1952
19532001-12-15 Akim Demaille <akim@epita.fr>
1954
1955 * src/reader.c (parse_union_decl): Instead of handling two obstack
1956 simultaneously, use one to define the `stype' muscle, and use the
1957 value of the latter to fill defines_obstack.
1958 (copy_comment): Remove.
1959 (copy_comment2): Work for a single obstack.
1960 Rename as...
1961 (copy_comment): this.
1962
19632001-12-15 Akim Demaille <akim@epita.fr>
1964
1965 * src/lex.c, src/lex.h (xgetc): No longer static.
1966 * src/reader.c (parse_union_decl): Revamp.
1967
19682001-12-15 Akim Demaille <akim@epita.fr>
1969
1970 Still making progress in separating Bison into (i) input, (ii)
1971 process, (iii) output: now we can directly output the parser file
1972 without using table_obstack at all.
1973
1974 * src/files.c, src/files.h (table_obstack): Bye bye.
1975 (parser_file_name): New.
1976 * src/files.c (compute_output_file_names): Compute it.
1977 * src/output.c (actions_output, output_parser)
1978 (output_master_parser): To a file instead of an obstack.
1979
19802001-12-15 Akim Demaille <akim@epita.fr>
1981
1982 Attach actions to rules, instead of pre-outputting them to
1983 actions_obstack.
1984
1985 * src/gram.h (rule_t): action and action_line are new members.
1986 * src/reader.c (symbol_list): Likewise.
1987 (copy_action): Save the actions within the rule.
1988 (packgram): Save them in rule_table.
1989 * src/output.c (actions_output): New.
1990 (output_parser): Use it on `%%actions'.
1991 (output_rule_data): Don't free rule_table.
1992 (output): Do it.
1993 (prepare): Don't save the `action' muscle.
1994 * src/bison.simple: s/%%action/%%actions/.
1995
19962001-12-15 Akim Demaille <akim@epita.fr>
1997
1998 * src/reader.c (copy_action): When --yacc, don't append a `;'
1999 to the user action: let it fail if lacking.
2000 Suggested by Arnold Robbins and Tom Tromey.
2001
20022001-12-14 Akim Demaille <akim@epita.fr>
2003
2004 * src/lex.c (literalchar): Simply return the char you decoded, non
2005 longer mess around with obstacks and int pointers.
2006 Adjust all callers.
2007
20082001-12-14 Akim Demaille <akim@epita.fr>
2009
2010 * src/lex.c (literalchar): Don't escape the special characters,
2011 just decode them, and keep them as char (before, eol was output as
2012 the 2 char string `\n' etc.).
2013 * src/output.c (output_rule_data): Use quotearg to output the
2014 token strings.
2015
20162001-12-13 Paul Eggert <eggert@twinsun.com>
2017
2018 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
2019 Do not infringe on the global user namespace when using C++.
2020 (YYFPRINTF, YYSTDERR): New macros, needed for the above.
2021 All uses of `fprintf' and `stderr' changed.
2022
2023 * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
2024
20252001-12-13 Akim Demaille <akim@epita.fr>
2026
2027 The computation of nullable is broken: it doesn't handle empty
2028 RHS's properly.
2029
2030 * tests/torture.at (GNU AWK Grammar): New.
2031 * tests/sets.at (Nullable): New.
2032 * src/nullable.c (set_nullable): Instead of blindly looping over
2033 `ritems', loop over the rules, and then over their rhs's.
2034
2035 Work around Autotest bugs.
2036
2037 * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
2038 frame, because Autotest understand lines starting with a `+' as
2039 traces from the shell. Then, they are not processed properly.
2040 Admittedly an Autotest bug, but we don't have time to wait for
2041 Autotest to catch up.
2042 * tests/regression.at (Broken Closure): Adjust to the new table
2043 frames.
2044 Move to...
2045 * tests/sets.at: here.
2046
20472001-12-13 Akim Demaille <akim@epita.fr>
2048
2049 * src/closure.c (closure): Use nrules instead of playing tricks
2050 with BITS_PER_WORD.
2051
20522001-12-13 Akim Demaille <akim@epita.fr>
2053
2054 * src/print.c (print_actions): Output the handling of `$' as the
2055 traces do: shifting the token EOF. Before EOF was treated as a
2056 nonterminal.
2057 * tests/regression.at: Adjust some tests.
2058 * src/print_graph.c (print_core): Complete the set of items via
2059 closure. The next-to-final and final states are still unsatisfying,
2060 but that's to be addressed elsewhere.
2061 No longer output the rule numbers, but do output the state number.
2062 A single loop for the shifts + gotos is enough, but picked a
2063 distinct color for each.
2064 (print_graph): Initialize and finalize closure.
2065
20662001-12-13 Akim Demaille <akim@epita.fr>
2067
2068 * src/reader.c (readgram): Remove dead code, an strip useless
2069 braces.
2070 (get_type): Remove, unused.
2071
20722001-12-12 Akim Demaille <akim@epita.fr>
2073
2074 * src/complain.h, src/complain.c: Remove error_one_per_line, rely
2075 on that of lib/error.c.
2076
20772001-12-12 Akim Demaille <akim@epita.fr>
2078
2079 Some hosts don't like `/' in includes.
2080
2081 * src/system.h: Include libgettext.h without qualifying the path.
2082 * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
2083 $(top_srcdir).
2084
20852001-12-11 Marc Autret <autret_m@epita.fr>
2086
2087 * src/output.c (output_parser): Remove useless muscle.
2088
20892001-12-11 Marc Autret <autret_m@epita.fr>
2090
2091 * src/bison.simple: Remove #line just before %%epilogue. It
2092 is now handled in ...
2093 * src/reader.c (read_additionnal_code): Add the output of a
2094 #line for the epilogue.
2095
20962001-12-10 Marc Autret <autret_m@epita.fr>
2097
2098 * src/reader.c (copy_definition): Re-use CPP-outed code which
2099 replace precedent remove.
2100 * src/bison.simple: Remove #line before %%prologue because
2101 %%input-line is wrong at this time.
2102
21032001-12-10 Marc Autret <autret_m@epita.fr>
2104
2105 * src/reader.c (symbols_output): Clean up.
2106 * src/output.c (output_gram, output): Clean up.
2107
21082001-12-10 Akim Demaille <akim@epita.fr>
2109
2110 * src/lalr.c (initialize_lookaheads): New. Extracted from...
2111 * src/LR0.c (set_state_table): here.
2112 * src/lalr.c (lalr): Call it.
2113
21142001-12-10 Akim Demaille <akim@epita.fr>
2115
2116 * src/state.h (shifts): Remove the `number' member: shifts are
2117 attached to state, hence no longer need to be labelled with a
2118 state number.
2119
21202001-12-10 Akim Demaille <akim@epita.fr>
2121
2122 Now that states have a complete set of members, the linked list of
2123 shifts is useless: just fill directly the state's shifts member.
2124
2125 * src/state.h (shifts): Remove the `next' member.
2126 * src/LR0.c (first_state, last_state): Remove.
2127 Adjust the callers.
2128 (augment_automaton): Don't look for the shifts that must be added
2129 a shift on EOF: it is those of the state we looked for! But now,
2130 since shifts are attached, it is no longer needed to looking
2131 merely by its id: its number.
2132
21332001-12-10 Akim Demaille <akim@epita.fr>
2134
2135 * src/LR0.c (augment_automaton): Better variable locality.
2136 Remove an impossible branch: if there is a state corresponding to
2137 the start symbol being shifted, then there is shift for the start
2138 symbol from the initial state.
2139
21402001-12-10 Akim Demaille <akim@epita.fr>
2141
2142 * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
2143 only when appropriate: when insert_start_shifting_state' is not
2144 invoked.
2145 * tests/regression.at (Rule Line Numbers): Adjust.
2146
21472001-12-10 Akim Demaille <akim@epita.fr>
2148
2149 * src/LR0.c (augment_automaton): Now that all states have shifts,
2150 merge the two cases addition shifts to the initial state.
2151
21522001-12-10 Akim Demaille <akim@epita.fr>
2153
2154 * src/lalr.c (set_state_table): Move to...
2155 * src/LR0.c: here.
2156 * src/lalr.c (lalr): Don't call it...
2157 * src/LR0.c (generate_states): do it.
2158 * src/LR0.h (first_state): Remove, only the table is used.
2159
21602001-12-10 Akim Demaille <akim@epita.fr>
2161
2162 * src/LR0.h (first_shift, first_reduction): Remove.
2163 * src/lalr.c: Don't use first_shift: find shifts through the
2164 states.
2165
21662001-12-10 Akim Demaille <akim@epita.fr>
2167
2168 * src/LR0.c: Attach shifts to states as soon as they are
2169 computed.
2170 * src/lalr.c (set_state_table): Instead of assigning shifts to
2171 state, just assert that the mapping was properly done.
2172
21732001-12-10 Akim Demaille <akim@epita.fr>
2174
2175 * src/LR0.c (insert_start_shift): Rename as...
2176 (insert_start_shifting_state): this.
2177 (insert_eof_shifting_state, insert_accepting_state): New.
2178 (augment_automaton): Adjust.
2179 Better locality of the variables.
2180 When looking if the start_symbol is shifted from the initial
2181 state, using `while (... symbol != start_symbol ...)' sounds
2182 better than `while (... symbol < start_symbol ...)': If fail
2183 to see how the order between symbols could be relevant!
2184
21852001-12-10 Akim Demaille <akim@epita.fr>
2186
2187 * src/getargs.h: Don't declare `spec_name_prefix' and
2188 `spec_file_prefix', declared by src/files.h.
2189 * src/files.c, src/files.h: Default for spec_name_prefix is "yy".
2190 * src/muscle_tab.c (muscle_init): Default prefix to NULL.
2191 * src/output.c (prepare): Adjust.
2192 * src/reader.c (symbols_output): Likewise.
2193 * src/vmsgetargs.c: Vaguely adjust, but who cares?
2194
21952001-12-10 Akim Demaille <akim@epita.fr>
2196
2197 * src/muscle_tab.c (muscle_init): NULL is a better default than
2198 `"0"'.
2199
22002001-12-10 Akim Demaille <akim@epita.fr>
2201
2202 * src/reader.c (reader): Calling symbols_output once is enough.
2203
22042001-12-10 Akim Demaille <akim@epita.fr>
2205
2206 Now that states have a complete set of members, the linked list of
2207 reductions is useless: just fill directly the state's reductions
2208 member.
2209
2210 * src/state.h (struct reductions): Remove member `number' and
2211 `next'.
2212 * src/LR0.c (first_reduction, last_reduction): Remove.
2213 (save_reductions): Don't link the new reductions, store them in
2214 this_state.
2215 * src/lalr.c (set_state_table): No need to attach reductions to
2216 states, it's already done.
2217 * src/output.c (output_actions): No longer free the shifts, then
2218 the reductions, then the states: free all the states and their
2219 members.
2220
22212001-12-10 Akim Demaille <akim@epita.fr>
2222
2223 * src/options.c (OPTN, DRTV, BOTH): New.
2224 (option_table): Use them.
2225
2226 * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
2227 the job of system.h.
2228 * src/options.c: Don't include stdio.h and xalloc.h for the same
2229 reasons.
2230
22312001-12-10 Akim Demaille <akim@epita.fr>
2232
2233 * src/output.c (output, prepare): Make sure the values of the
2234 muscles `action' and `prologue' are 0-terminated.
2235
22362001-12-10 Akim Demaille <akim@epita.fr>
2237
2238 Clean up GCC warnings.
2239
2240 * src/reader.c (copy_action): `buf' is not used.
2241 (parse_skel_decl): Be static.
2242 * src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
2243 * src/options.h (create_long_option_table): Have a real prototype.
2244 * lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
2245 (hash_delete_at): Return const void *.
2246 Adjust casts to preserve the const.
2247
22482001-12-10 Akim Demaille <akim@epita.fr>
2249
2250 * configure.in: Require 2.52g.
2251 M4 is not needed, but AUTOM4TE is.
2252 * m4/m4.m4: Remove.
2253 * tests/Makefile.am: Adjust.
2254
22552001-12-10 Akim Demaille <akim@epita.fr>
2256
2257 One structure for states is enough, even though theoretically
2258 there are LR(0) states and LALR(1) states.
2259
2260 * src/lalr.h (state_t): Remove.
2261 (state_table): Be state_t **, not state_t *.
2262 * src/state.h (core, CORE_ALLOC): Rename as...
2263 (state_t, STATE_ALLOC): this.
2264 Add the LALR(1) members: shifts, reductions, errs.
2265 * src/LR0.c (state_table): Rename as...
2266 (state_hash): this, to avoid name clashes with the global
2267 `state_table'.
2268 * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
2269 * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
2270
22712001-12-10 Akim Demaille <akim@epita.fr>
2272
2273 Bison dumps core on bash.y.
2274 Reported by Pascal Bart.
2275
2276 * src/warshall.c (bitmatrix_print): New.
2277 (TC): Use it.
2278 When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
2279 j must be the outer loop.
2280 * tests/regression.at (Broken Closure): New.
2281
22822001-12-05 Akim Demaille <akim@epita.fr>
2283
2284 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
2285 its argument.
2286