[Top][All Lists]
[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...
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Bison 1.30f,
Akim Demaille <=