bug-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bison 1.30f


From: Akim Demaille
Subject: Bison 1.30f
Date: 05 Dec 2001 16:16:35 +0100
User-agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Civil Service)

A few issues have been addressed since the last snapshot, and in
particular this snapshot benefits from the expertise of Paul Eggert
wrt 64 bit architectures.  I do not know how bison itself behaves on
these machines, but at least the parsers behave properly.  He also
made sure the parsers do not collide with the users' name space.

This snapshot, and the forthcoming release, should be the last of the
1.3x series: future work aims at providing more flexibility wrt (i)
parsing technologies (we would like to integrate LR(1) into Bison),
and (ii) wrt the output (e.g., addressing C++ etc.).

Thanks to all the people who tortured 1.30d.  Please, don't be kinder
with 1.30f!

  ftp://alpha.gnu.org/gnu/bison/bison-1.30f.tar.gz   (672 kB)
  ftp://alpha.gnu.org/gnu/bison/bison-1.30f.tar.bz2  (548 kB)

And here are xdelta-style diffs

  ftp://alpha.gnu.org/gnu/bison/bison-1.30d-1.30f.xdelta   (57 kB)

Here are the MD5 and SHA1 signatures for the compressed tar files:

ec19134ab07b352c925ec7da67b7ef6e  bison-1.30f.tar.gz
8a8326301fd3d53d96a30b99471edb17  bison-1.30f.tar.bz2
2db8ee125687e7dcf8bece58986b6a365c58a62a  bison-1.30f.tar.gz
c17a93f2bd7f72c1bd9a7026b0cef3a3e5093296  bison-1.30f.tar.bz2

NEWS:
Changes in version 1.30f:

* Reduced Grammars
  Fixed bugs when reporting useless nonterminals.

* 64 bit hosts
  The parsers work properly on 64 bit hosts.

Changes in version 1.30e:

* Error messages
  Some calls to strerror resulted in scrambled or missing error messages.

* %expect
  When the number of shift/reduce conflicts is correct, don't issue
  any warning.

* The verbose report includes the rule line numbers.

* Rule line numbers are fixed in traces.

ChangeLog entries:

**********************************************************************
ChangeLog       2001/12/05 11:46:05     1.173.2.223
**********************************************************************
2001-12-05  Akim Demaille  <address@hidden>

        Version 1.30f.

2001-12-05  Akim Demaille  <address@hidden>

        * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
        its argument.
        Reported by Peter Hámorský.

2001-12-05  Akim Demaille  <address@hidden>

        * src/conflicts.c (err_table): Remove.
        (resolve_sr_conflict): Adjust.
        * src/lalr.h (state_t.reduction_table, state_t.shift_table):
        Rename as...
        (state_t.reductions, state_t.shifts): this.

2001-12-05  Akim Demaille  <address@hidden>

        * src/reduce.c (reduce_grammar_tables): No longer disable the
        removal of useless rules via CPP but via `if (0)', so that the
        compiler still check the code is valid.
        For instance, it should have noticed `rline' no longer exists: use
        the `line' member of rule_t.
        * src/gram.c (dummy, rline): Remove, unused.

2001-12-05  Akim Demaille  <address@hidden>

        * src/output.c (pack_vector): Use assert, not berror.
        * src/main.c (berror): Remove, unused.

2001-12-05  Akim Demaille  <address@hidden>

        New experimental feature: if --verbose --trace output all the
        items of a state, not only its kernel.

        * src/print.c (print_core): If `trace_flag', then invoke closure
        before outputting the items of the state (print_core is no longer
        a correct name them).
        (print_results): Invoke new_closure/free_closure if needed.

2001-12-05  Akim Demaille  <address@hidden>

        * src/LR0.c (new_itemsets): Use nshifts only, not shiftcount.
        * src/closure.c, src/closure.h (itemsetsize): Rename as...
        (nitemset): for consistency with the rest of the project.

2001-12-05  Akim Demaille  <address@hidden>

        * src/closure.c (print_closure): Improve.
        (closure): Use it for printing input and output.

2001-12-05  Akim Demaille  <address@hidden>

        * src/closure.c (FIRSTS, FDERIVES): Adjust to reality: they are
        indexed by nonterminals.

2001-12-05  Akim Demaille  <address@hidden>

        * src/warshall.c (TC, RTC): De-obsfucate (source reduced to 22% of
        what it was!).
        * src/warshall.h: Remove accidental duplication of the content.

2001-12-05  Akim Demaille  <address@hidden>

        * src/closure.c (set_fderives): De-obfuscate.

2001-12-05  Akim Demaille  <address@hidden>

        * src/closure.c (print_firsts, print_fderives): De-obfuscate.

2001-12-05  Akim Demaille  <address@hidden>

        * src/closure.c (set_firsts): De-obfuscate.

2001-12-05  Akim Demaille  <address@hidden>

        * src/output.c (action_row): De-obfuscate
        using the good o' techniques: arrays not pointers, variable
        locality, BITISSET, RESETBIT etc.

2001-12-05  Akim Demaille  <address@hidden>

        Pessimize the code to simplify it: from now on, all the states
        have a valid SHIFTS, which NSHIFTS is possibly 0.

        * src/LR0.c (shifts_new): Be global and move to..
        * src/state.c, src/state.h: here.
        * src/conflicts, src/lalr.c, src/output.c, src/print.c,
        * src/print_graph: Adjust.

2001-12-05  Akim Demaille  <address@hidden>

        * src/state.h (SHIFT_DISABLE, SHIFT_IS_DISABLED): New.
        * src/conflicts.c: Use it.
        Restore a few missing `if (!SHIFT_IS_DISABLED)' which were
        incorrectly ``simplified''.

2001-12-05  Akim Demaille  <address@hidden>

        * src/conflicts.c (flush_shift, resolve_sr_conflict): De-obfuscate
        using the good o' techniques: arrays not pointers, variable
        locality, BITISSET, RESETBIT etc.

2001-12-05  Akim Demaille  <address@hidden>

        * src/state.h (SHIFT_SYMBOL): New.
        * src/conflicts.c: Use it to deobfuscate.

2001-12-05  Akim Demaille  <address@hidden>

        * src/conflicts.c (count_sr_conflicts, count_rr_conflicts)
        (print_reductions): De-obfuscate using the good o' techniques:
        arrays not pointers, variable locality, BITISSET.

2001-12-05  Akim Demaille  <address@hidden>

        * src/conflicts.c (print_reductions): Arrays, not pointers.
        Use BITISSET.

2001-12-05  Akim Demaille  <address@hidden>

        * src/conflicts.c (print_reductions): Pessimize, but clarify.

2001-12-05  Akim Demaille  <address@hidden>

        * src/conflicts.c (print_reductions): Improve variable locality.

2001-12-05  Akim Demaille  <address@hidden>

        * src/conflicts.c (print_reductions): Pessimize, but clarify.

2001-12-05  Akim Demaille  <address@hidden>

        * src/conflicts.c (print_reductions): Improve variable locality.

2001-12-05  Akim Demaille  <address@hidden>

        * src/state.h (SHIFT_IS_ERROR, SHIFT_IS_GOTO, SHIFT_IS_SHIFT): New.
        * src/lalr.c: Use them.

2001-12-05  Akim Demaille  <address@hidden>

        * src/LR0.c (augment_automaton): Formatting changes.
        Better variable locality.

2001-12-05  Akim Demaille  <address@hidden>

        * src/lalr.c (matrix_print): New.
        (transpose): Use it.
        Use arrays instead of pointers.

2001-12-05  Akim Demaille  <address@hidden>

        * src/lalr.c (maxrhs): Move to...
        * src/gram.c, src/gram.h (ritem_longest_rhs): here.
        * src/lalr.c (build_relations): Adjust.

2001-12-05  Akim Demaille  <address@hidden>

        * src/lalr.c (transpose): Free the memory allocated to the
        argument, as it is replaced by the results by the unique caller.
        (build_relations): Merely invoke transpose: it handles the memory
        deallocation.
        Improve variable locality.
        Avoid variables used as mere abbreviations.
        (compute_lookaheads): Use arrays instead of pointers.

2001-12-05  Akim Demaille  <address@hidden>

        * src/lalr.c (initialize_F): Improve variable locality.
        Avoid variables used as mere abbreviations.

2001-12-05  Akim Demaille  <address@hidden>

        * src/derives.c (print_derives): Display the ruleno.
        * src/lalr.c (initialize_F, transpose): Better variable locality
        to improve readability.
        Avoid variables used as mere abbreviations.

2001-12-05  Akim Demaille  <address@hidden>

        * src/lalr.c (traverse): Use arrays instead of pointers.

2001-12-05  Akim Demaille  <address@hidden>

        * src/nullable.c (set_nullable): Use a for loop to de-obfuscate
        the handling of squeue.
        `symbol >= 0' is wrong now, use `rule_table[ruleno].useful'.

2001-12-05  Akim Demaille  <address@hidden>

        Because useless nonterminals are now kept alive (instead of being
        `destroyed'), we now sometimes examine them, and store information
        related to them.  Hence we need to know their number, and adjust
        memory allocations.

        * src/reduce.c, src/reduce.h (nuseless_nonterminals): No longer
        static.
        * src/LR0.c (allocate_itemsets): The memory allocated to
        `symbol_count' was used for two different purpose: once to count
        the number of occurrences of each symbol, and later reassigned to
        `shift_symbol', containing the symbol that can be shifted from a
        given state.
        Deobfuscate, i.e., allocate, use and free `symbol_count' here
        only, and...
        (new_itemsets): Allocate `shift_symbol' here.
        (allocate_itemsets): symbol_count includes useless nonterminals.
        Make room for them.
        (free_storage): Use `free', not `XFREE', for pointers that cannot
        be null.

2001-12-05  Akim Demaille  <address@hidden>

        * src/nullable.c (set_nullable): Deobfuscate the handling of
        ritem.
        `symbol >= 0' is wrong now, use `rule_table[ruleno].useful'.

2001-12-05  Akim Demaille  <address@hidden>

        * src/gram.c, src/gram.h (ritem_print): New.
        * src/gram.c (dummy): Remove, now there is actual code in gram.c.
        (This useless function was defined only to work around VMS linkers
        that can't handle compilation units with variables only).
        * src/reduce.c (dump_grammar): Use it to trace the construction of
        ritem.

2001-12-04  Paul Eggert  <address@hidden>

        * src/bison.simple (union yyalloc): Change member names
        to be the same as the stack names.
        (yyparse): yyptr is now union yyalloc *, not char *.
        (YYSTACK_RELOCATE): Likewise.  This avoids a GCC warning,
        and may generate better code on some machines.
        (yystpcpy): Use prototype if __STDC__ is defined, not just
        if __cplusplus is defined.

2001-11-30  Akim Demaille  <address@hidden>

        * configure.in (WARNING_CFLAGS): Add -Werror when possible.
        (CFLAGS): Do not include the WARNING_CFLAGS here, since GNU
        Gettext doesn't compile cleanly, and dies with -Werror.
        * src/Makefile.am, lib/Makefile.am, tests/atlocal.in (CFLAGS):
        Include WARNING_CFLAGS here.
        * lib/xstrdup.c: Include xalloc.h, so that xstrdup be declared
        before being defined.

2001-11-30  Paul Eggert  <address@hidden>

        * lib/quotearg.h (quotearg_n, quotearg_n_style):
        First arg is int, not unsigned.
        * lib/quotearg.c (quotearg_n, quotearg_n_style): Likewise.
        (SIZE_MAX, UINT_MAX): New macros.
        (quotearg_n_options): Abort if N is negative.
        Avoid overflow check on hosts where size_t is 64 bits and int
        is 32 bits, as overflow is impossible there.
        Fix off-by-one typo that caused unnecessary reallocation.

2001-11-30  Paul Eggert  <address@hidden>

        Name space cleanup in generated parser.

        * doc/bison.texinfo (Bison Parser): Discuss system headers
        and their effect on the user name space.

        * src/bison.simple:
        (YYSTACK_ALLOC, YYSTACK_FREE, union yyalloc, YYSTACK_GAP_MAX,
        YYSTACK_BYTES, YYSTACK_RELOCATE): Do not define unless necessary,
        i.e. unless ! defined (yyoverflow) || defined (YYERROR_VERBOSE).

        (YYSIZE_T): New macro.  Use it instead of size_t, to avoid infringing
        on user names when possible.

        (YYSTACK_USE_ALLOCA): Do not define; just use any existing defn.
        Simplify test for whather <alloca.h> exists.

        (<stdlib.h>): Include if we will use malloc, and if standard C or C++.

        (<stdio.h>): Include if YYDEBUG.

        (yymemcpy): Renamed from __yy_memcpy.  Do not define unless
        ! defined (yyoverflow) && ! defined (yymemcpy).

        (yymemcpy, yyparse): Rename local variables as needed so that
        they all begin with 'yy'.

        (yystrlen, yystpcpy): New functions.

        (YY_DECL_NON_LSP_VARIABLES): Renamed from _YY_DECL_VARIABLES.
        All uses changed.

        (yyparse): size_t -> YYSIZE_T.  Use yystrlen and yystpcpy
        instead of relying on string.h functions.  Use YYSTACK_ALLOC
        and YYSTACK_FREE instead of malloc and free.

2001-11-30  Akim Demaille  <address@hidden>

        * src/bison.simple (YYSTACK_FREE): Use `do {;} while (0)' as empty
        if body instead of `;' to pacify GCC's warnings.

2001-11-30  Akim Demaille  <address@hidden>

        Instead of mapping the LHS of unused rules to -1, keep the LHS
        valid, but flag the rules as invalid.

        * src/gram.h (rule_t): `useful' is a new member.
        * src/print.c (print_grammar): Adjust.
        * src/derives.c (set_derives): Likewise.
        * src/reader.c (packgram, reduce_output): Likewise.
        * src/reduce.c (reduce_grammar_tables): Likewise.
        * tests/reduce.at (Underivable Rules, Useless Rules): New.

2001-11-30  Akim Demaille  <address@hidden>

        * src/reduce.c (reduce_output): Formatting changes.
        * src/print.c (print_results, print_grammar): Likewise.
        * tests/regression.at (Rule Line Numbers)
        (Solved SR Conflicts, Unresolved SR Conflicts): Adjust.

2001-11-30  Akim Demaille  <address@hidden>

        * src/reduce.c (nonterminals_reduce): Instead of throwing away
        useless nonterminals, move them at the end of the symbol arrays.
        (reduce_output): Adjust.
        * tests/reduce.at (Useless Nonterminals): Adjust.

2001-11-30  Akim Demaille  <address@hidden>

        * src/reduce.c: Various comment/formatting changes.
        (nonterminals_reduce): New, extracted from...
        (reduce_grammar_tables): here.
        (reduce_grammar): Call nonterminals_reduce.

2001-11-29  Paul Eggert  <address@hidden>

        * src/bison.simple (YYSTACK_REALLOC): Remove.
        (YYSTACK_ALLOC): Resurrect this macro, with its old meaning.
        (YYSTACK_FREE, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYSTACK_RELOCATE):
        New macros.
        (union yyalloc): New type.
        (__yy_memcpy): Last arg is size_t, not unsigned int, to remove
        an arbitrary restriction on hosts where size_t is wider than int.

        (yyparse): Don't dump core if alloca or malloc fails; instead, report
        a parser stack overflow.  Allocate just one block of memory for all
        three stacks, instead of allocating three blocks; this typically is
        faster and reduces fragmentation.

        Do not limit the number of items in the stack to a value that fits
        in 'int', as this is an arbitrary limit on hosts with 64-bit
        size_t and 32-bit int.

2001-11-28  Akim Demaille  <address@hidden>

        * src/LR0.c (shifts_new): New.
        (save_shifts, insert_start_shift, augment_automaton): Use it.

2001-11-28  Akim Demaille  <address@hidden>

        * src/closure.c (closure): `b' and `ruleno' denote the same value:
        keep ruleno only.

2001-11-28  Akim Demaille  <address@hidden>

        * src/closure.c (closure): Instead of looping over word in array
        then bits in words, loop over bits in array.

2001-11-28  Akim Demaille  <address@hidden>

        * src/closure.c (closure): No longer optimize the special case
        where all the bits of `ruleset[r]' are set to 0, to make the code
        clearer.

2001-11-28  Akim Demaille  <address@hidden>

        * src/closure.c (closure): `r' and `c' are new variables, used to
        de-obfuscate accesses to RULESET and CORE.

2001-11-28  Akim Demaille  <address@hidden>

        * src/reduce.c (reduce_print): Use ngettext.
        (dump_grammar): Improve the trace accuracy.

2001-11-28  Akim Demaille  <address@hidden>

        * src/reduce.c (dump_grammar): Don't translate trace messages.

2001-11-28  Akim Demaille  <address@hidden>

        * tests/reduce.at (Useless Terminals, Useless Nonterminals): New.
        * src/reduce.c (reduce_grammar_tables): Do not free useless tags,
        as all tags are free'ed afterwards.
        From Enrico Scholz.

2001-11-27  Akim Demaille  <address@hidden>

        * src/system.h: Use intl/libgettext.h.
        * src/Makefile.am (INCLUDES): Add -I $(top_srcdir).

2001-11-27  Paul Eggert  <address@hidden>

        * src/bison.simple (YYSTACK_REALLOC): Fix typo that caused us to
        use alloca when we didn't want to, and vice versa.

2001-11-27  Akim Demaille  <address@hidden>

        * tests/torture.at (Exploding the Stack Size with Malloc):
        s/YYSTACK_USE_ALLOCA_ALLOCA/YYSTACK_USE_ALLOCA/.

2001-11-27  Akim Demaille  <address@hidden>

        * src/files.c: Include error.h.
        From Hans Aberg.

2001-11-26  Akim Demaille  <address@hidden>

        Version 1.30e.

2001-11-26  Akim Demaille  <address@hidden>

        * src/reader.c (readgram): Make sure rules for mid-rule actions
        have a lineno equal to that of their host rule.
        Reported by Hans Aberg.
        * tests/regression.at (Rule Line Numbers): New.

2001-11-26  Akim Demaille  <address@hidden>

        * src/LR0.c (allocate_itemsets): kernel_size contains ints, not
        size_ts.
        Reported by Hans Aberg.

2001-11-26  Akim Demaille  <address@hidden>

        * src/complain.c, src/complain.h (error): Remove, provided by
        lib/error.[ch].

2001-11-26  Akim Demaille  <address@hidden>

        * src/reader.c (read_declarations): Don't abort on tok_illegal,
        issue an error message.
        * tests/regression.at (Invalid %directive): New.
        Reported by Hans Aberg.

2001-11-26  Akim Demaille  <address@hidden>

        * configure.in: Invoke AC_FUNC_OBSTACK and AC_FUNC_ERROR_AT_LINE.
        * lib/Makefile.am (libbison_a_SOURCES): Adjust.

2001-11-26  Akim Demaille  <address@hidden>

        * src/conflicts.c (conflicts_print): Don't complain at all when
        there are no reduce/reduce conflicts, and as many shift/reduce
        conflicts as expected.
        * tests/regression.at (%expect right): Adjust.

2001-11-23  Akim Demaille  <address@hidden>

        * lib/alloca.c: Update, from fileutils.

2001-11-23  Akim Demaille  <address@hidden>

        * lib/Makefile.am (libbison_a_LIBADD): Add @address@hidden

2001-11-23  Akim Demaille  <address@hidden>

        * src/system.h: Include alloca.h.
        * src/main.c (main) [C_ALLOCA]: Call alloca (0).

2001-11-23  Akim Demaille  <address@hidden>

        * src/print_graph.c (print_actions): Remove `rule', unused.
        * src/LR0.c (kernel_size): Contain `int' instead of `size_t' to
        pacify GCC's signed < unsigned warnings.
        * src/closure.c (itemsetsize): Likewise.
        * src/reader.c (symbol_list_new): Static.

2001-11-23  Akim Demaille  <address@hidden>

        Attaching lineno to buckets is stupid, since only one copy of each
        symbol is kept, only the line of the first occurrence is kept too.

        * src/symtab.h, src/symtab.c (bucket): Remove the line member.
        * src/reader.c (rline_allocated): Remove, unused.
        (symbol_list): Have a `line' member.
        (symbol_list_new): New.
        (readgram): Use it.
        * src/print.c (print_grammar): Output the rule line numbers.
        * tests/regression.at (Solved SR Conflicts)
        (Unresolved SR Conflicts): Adjust.
        Reported by Hans Aberg.

        * src/LR0.c (new_itemsets, get_state): Use more arrays and fewer
        * src/bison.simple (yyparse): When verbosely reporting an error,
        no longer put additional quotes around token names.
        * src/lalr.c (F): New macro to access the variable F.
        * src/lalr.h (LA): New macro to access the variable LA.
        * src/lalr.h (lookaheads): Removed array, whose contents is now
        a member of...
        * src/lalr.h (consistent): Removed array, whose contents is now
        a member of...
        * src/lalr.h (reduction_table, shift_table): Removed arrays, whose
        contents are now members of...



reply via email to

[Prev in Thread] Current Thread [Next in Thread]