]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
Get rid of broken %no-parser, -n, and --no-parser implementation and
[bison.git] / ChangeLog
index 109930a8de0310c6733384a386608d331eb154c5..957605ba705634a3a8363b92b8eb8e4eba76bbad 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,379 @@
+2007-08-11  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Get rid of broken %no-parser, -n, and --no-parser implementation and
+       documentation.
+       * TODO: Don't mention them.
+       * doc/bison.1: Likewise.
+       * doc/bison.texinfo (Decl Summary): Likewise.
+       (Bison Options): Likewise.
+       (Option Cross Key): Likewise.
+       * src/getargs.c (no_parser_flag): Remove global variable.
+       (usage): Don't print description of -n and --no-parser.
+       (long_options): Remove --no-parser entry here.
+       (getargs): Remove -n case in the switch here.
+       * src/getargs.h (no_parser_flag): Remove extern.
+       * tests/regression.at (Web2c Actions): Remove comment that mentions
+       --no-parser.
+
+2007-08-11  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * tests/push.at (Push Parsing: Memory Leak for Early Deletion): Do not
+       name user variables starting with `yy'.  Just pass NULL instead of a
+       dummy local &yylval to yypush_parse.
+       * tests/torture.at (AT_DATA_STACK_TORTURE): Do not name user variables
+       starting with `yy'.
+
+2007-08-03  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/yacc.c (yyexhaustedlab): Define it when YYERROR_VERBOSE is
+       true since it's then always used regardless of whether yyoverflow is
+       defined.  Reported by Christian Burger at
+       <http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00031.html>.
+       * THANKS: Add Christian Burger.
+
+       * ChangeLog: For changes in doc/bison.texinfo, consistently reference
+       node names: say "Decl Summary" not "Bison Declaration Summary".
+
+2007-07-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/muscle_tab.c (muscle_percent_define_flag_if): In order to
+       determine whether this function has already complained about an invalid
+       value for a %define boolean variable, don't check whether Bison has
+       ever examined the value.  As written, the check was a tautology.
+       Instead, record and check for this complaint using a separate muscle.
+
+2007-07-27  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix push parsing memory leak reported by Brandon Lucia at
+       <http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00032.html>.
+       * THANKS: Add Brandon Lucia.
+       * data/push.c (yypstate_delete): Free the stack if it was reallocated
+       but the parse never completed and thus freed it.
+       * tests/Makefile.am (TESTSUITE_AT): Add push.at.
+       * tests/testsuite.at: Include push.at.
+       * test/push.at: New.
+       (Push Parsing: Memory Leak for Early Deletion): New test case.
+
+2007-07-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Improve handling of multiple S/R conflicts in the same state and of S/R
+       conflicts involving multiple reductions.
+       * src/conflicts.c (resolve_sr_conflict): Don't assign the error action
+       set for a state here or Bison will abort if it is reassigned on a
+       later conflicted reduction in the same state.
+       Similarly, don't finalize and assign the solved conflicts report here
+       or it will be lost if it is reassigned on a later conflicted reduction
+       in the same state.
+       (set_conflicts): Instead, assign them both here after all S/R conflicts
+       in the state have been fully examined.
+       * src/print.c (shift_set): Rename to...
+       (no_reduce_set): ... this.
+       (print_reductions): Update for rename, and add %nonassoc error action
+       tokens to no_reduce_set so that, when printing the first remaining
+       reduction on an error action token, the reduction is enclosed in
+       brackets.
+       (print_results): Update for rename.
+       * tests/conflicts.at (Solved conflicts report for multiple reductions
+       in a state): New test case.
+       (%nonassoc error actions for multiple reductions in a state): New test
+       case.
+
+       * src/main.c (main): Don't depend on C99 features.
+
+2007-07-16  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * build-aux/.cvsignore: Add compile.
+       * lib/.cvsignore: Add charset.alias, ref-add.sed, ref-del.sed, and
+       uniwidth.
+
+2007-07-10  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * bootstrap (slurp): Create target directories that don't exist.
+       Specifically, we need lib/uniwidth/ because of recent Gnulib changes.
+
+2007-07-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * LR0.c (new_itemsets): Fix wording in comments: say item index rather
+       than item number.
+       * closure.c (closure): Likewise.
+       * state.h (reductions): Comment sorting of rules.
+       (state): Comment sorting of items.
+
+2007-07-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix C++ test cases after recent Gnulib changes.  Discussed starting at
+       <http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00000.html>.
+       * examples/calc++/Makefile.am (DEFAULT_INCLUDES): Override Automake's
+       definition in order to avoid Gnulib headers since we don't use config.h
+       here.
+       * tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Use AT_DATA_GRAMMAR
+       rather than AT_DATA so that config.h is included.
+
+2007-07-01  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/glr.c (yy_yypstack, yypstates, yypdumpstack): Use YYFPRINTF
+       instead of fprintf.  Guard these functions with #if YYDEBUG instead of
+       #ifdef YYDEBUG for consistency with all other uses of YYDEBUG in Bison
+       and so that YYFPRINTF is guaranteed to be defined here.
+
+2007-05-29  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/muscle_tab.c (muscle_percent_define_invalid_value): Replace
+       with...
+       (muscle_percent_define_check_values): ... this more helpful function.
+       Again, it's not used yet, but it will be.
+       * src/muscle_tab.h: Likewise.
+
+       Improve some comments in parser table construction.
+       * src/LR0.c (new_itemsets): Explain sorting of itemset and kernel_base.
+       (generate_states): Don't mention ruleset, which is internal to closure.
+       * src/closure.c (closure): Explain sorting of core and itemset, which
+       is required for this function to behave correctly.
+       * src/closure.h (closure): Mention sorting.
+
+2007-05-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/lalr.c (state_lookahead_tokens_count): For code readability,
+       move the check for disabled transitions to an aver since conflict
+       resolution hasn't happened yet.
+
+       * src/lalr.c (state_lookahead_tokens_count): Remove the check that
+       labels a state as inconsistent just because it has error transitions.
+       The original form of this check appeared in revision 1.1 of lalr.c,
+       which was committed on 1991-12-21.  Now (at least), changing the
+       consistency label on such a state appears to have no useful effect in
+       any of the places it is examined, which I enumerate below.  The key
+       point to understanding each item in this enumeration is that a state
+       with an error transition is labelled consistent in the first place only
+       if it has no rules, so the check cannot matter for states that have
+       rules.  (1) Labelling a state as inconsistent will cause set_conflicts
+       to try to identify its conflicts, and a state must have *rules* to have
+       conflicts.  (2) Labelling a state as inconsistent will affect how
+       action_row sets the default *rule* for the state.  (3) Labelling a
+       state as inconsistent will cause build_relations to add lookback edges
+       to *rules* in that state.
+       * src/state.h (struct state): Word the comment for member consistent
+       more carefully.
+
+2007-05-27  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't depend on C99 features.
+       * src/conflicts.c (conflicts_update_state_numbers): Fix for-loop.
+       * src/lalr.c (lalr_update_state_numbers): Fix for-loop.
+       * src/reader.c (check_and_convert_grammar): Fix for-loop.
+       * src/state.c (state_mark_reachable_states): Fix for-loop.
+       (state_remove_unreachable_states): Fix for-loop.
+
+       Don't widen struct state with member reachable just to temporarily
+       record reachability.  Instead, use a local bitset.
+       * src/state.h (struct state): Remove member.
+       * src/state.c (state_new): Don't initialize it.
+       (state_mark_reachable_states): Rename to...
+       (state_record_reachable_states): ... this, and use bitset.
+       (state_remove_unreachable_states): Use bitset.
+
+2007-05-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/Makefile.am (yacc): Quote target action commands properly so
+       that the yacc script isn't corrupt.  Reported by Hans Aberg at
+       <http://lists.gnu.org/archive/html/bug-bison/2007-05/msg00003.html>.
+
+       * data/glr.c (yylval): As in yacc.c, don't extern in the header for
+       the case of pure parsers.  Reported by Frans Englich at
+       <http://lists.gnu.org/archive/html/help-bison/2007-05/msg00018.html>.
+       * THANKS: Add Frans Englich.
+
+       * NEWS (2.3a+): In the %code entry, reference section `Bison
+       Declaration Summary' from the manual now since the %code summary has
+       moved there.
+       * doc/bison.texinfo (Prologue Alternatives): Mention that directives
+       in the rules section must be terminated by semicolons.
+
+2007-05-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Extend the front-end API for %define variables to more completely
+       mirror the back-end.  This will be useful in the future.
+       * data/bison.m4 (b4_percent_define_get, b4_percent_define_ifdef):
+       Update comments to mention the new front-end counterparts of these
+       macros.
+       * src/muscle_tab.c (MUSCLE_COMMON_DECODE): New macro with common code
+       for muscle_string_decode and muscle_location_decode.
+       (muscle_string_decode): New static function.
+       (muscle_location_decode): Use MUSCLE_COMMON_DECODE.
+       (muscle_percent_define_get, muscle_percent_define_ifdef): New
+       functions.
+       (muscle_percent_define_flag_if): Use muscle_percent_define_ifdef and
+       muscle_percent_define_get to mimic the b4_percent_define_flag_if
+       implementation more closely.
+       (muscle_percent_define_invalid_value): New function.
+       * src/muscle_tab.h (muscle_percent_define_get,
+       muscle_percent_define_ifdef, muscle_percent_define_invalid_value):
+       Prototype.
+
+2007-05-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * NEWS (2.3a+): Mention yesterday's state-removal change.
+       (2.3a): Remove the %language entry, which was added after 2.3a.
+       * src/LR0.c, src/closure.c, src/closure.h, src/conflicts.c,
+       src/conflicts.h, src/lalr.c, src/lalr.h, src/print.c,
+       src/print_graph.c, src/state.c, src/state.h, tests/conflicts.at,
+       tests/existing.at: Update copyright date.
+
+2007-05-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       If conflict resolution makes states unreachable, remove those states,
+       report rules that are then unused, and don't report conflicts in those
+       states.
+       * src/conflicts.c, src/conflicts.h (conflicts_update_state_numbers):
+       New global function.
+       * src/lalr.c, src/lalr.h (lalr_update_state_numbers): New global
+       function.
+       * src/main.c (main): After conflict resolution, remove the unreachable
+       states and update all data structures that reference states by number.
+       * src/state.c (state_new): Initialize each state's reachable member to
+       false.
+       (state_mark_reachable_states): New static function.
+       (state_remove_unreachable_states): New global function.
+       * src/state.h (struct state): Add member bool reachable.
+       (state_remove_unreachable_states): Prototype.
+       * tests/conflicts.at (Unreachable States After Conflict Resolution):
+       New test case.
+       * tests/existing.at (GNU pic Grammar): Update test case output now that
+       an unused rule is discovered.
+
+2007-05-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Minor code cleanup in parser table construction.
+       * src/LR0.c (new_itemsets): Use item_number_is_symbol_number.
+       (new_itemsets, save_reductions): Update for rename to nitemset.
+       * src/closure.c (nritemset): Rename to...
+       (nitemset): ... this since the "r" appears to meaningless and isn't
+       used in the comments.
+       (closure): Update for rename.
+       * src/closure.h (nritemset): Update extern to...
+       (nitemset): ... this.
+       * src/lalr.c (LA): Fix a typo in comments.
+       * src/print.c (print_core): Update for rename to nitemset.
+       * src/print_graph.c (print_graph): Likewise.
+       * src/state.h: Fix some typos in header comments.
+
+2007-04-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * THANKS: Use ASCII for Sebastien Fricker's name.  Bison source
+       still sticks to ASCII.  Sorry!
+
+       * README-hacking: New file, taken mostly from coreutils, with changes
+       for Bison.  Contains much of the contents of:
+       * README-cvs: Remove.
+       * bootstrap: Sync from gnulib.
+       * build-aux/.cvsignore: Remove *.t, mkinstalldirs.
+       * lib/.cvsignore: Add wchar.h, wctype.h.  Remove exit.h.
+
+2007-03-10  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * doc/bison.texinfo (Destructor Decl): Fix typo reported by Sebastian
+       Setzer.
+       (Java Differences): Fix some typos.
+       * THANKS: Add Sebastian Setzer.
+
+2007-03-07  Paolo Bonzini  <bonzini@gnu.org>
+
+        * data/java.m4 (b4_single_class_if): Remove.
+        (b4_abstract_if): Look at "%define abstract".
+        (b4_lexer_if): New.
+        (b4_union_name): Rename...
+        (b4_yystype): ... to this.  Map to "%define stype".
+        (b4_rhs_value, b4_parse_param_decl, b4_lex_param_decl,
+        b4_maybe_throws): Fix quoting.
+        (b4_lex_param_call): Move below to keep b4_*_param_decl close.
+        * data/lalr1.java (Lexer interface): Always define.
+        (Lexer interface within parser class): Remove.
+        (YYLexer class): New, used when "%code lexer" is present.
+        (constructor): When "%code lexer" is used, pass %lex-param
+        to the lexer constructor.
+        (yylex, yyparse): Remove %lex-param from method invocations
+        (YYStack, yyaction, yyparse): Rename b4_union_name to b4_yystype.
+
+        * doc/bison.texinfo (Java Bison Interface): Mention "%define
+        abstract".  Rename "%define union_name" to "%define stype".
+        Rename method names according to previous patch.
+        (Java Scanner Interface): Describe "%code lexer" instead of
+        "%pure-parser" and "%define single_class".
+        (Java Differences): Mention "%code lexer".
+
+        * tests/java.at (_AT_DATA_JAVA_CALC_Y): Remove final argument.
+        Include scanner here, using macros from tests/local.at.
+        (AT_DATA_CALC_Y): Remove final argument.
+        (_AT_CHECK_JAVA_CALC): Likewise.
+        (AT_CHECK_JAVA_CALC): Likewise.  Test all four combinations
+        of %locations and %error-verbose.
+        (main): Test with and without %lex-param.
+        * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_LEXPARAM_IF.
+        (AT_BISON_OPTION_POPDEFS): Pop it.
+
+2007-03-07  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+       DJGPP spefic issue.  Inhibit the use of disallowed characters for
+       file name genertion on Win98, WinXP, etc.  These are |<>":?*\
+       and concern testsuite case 46.
+       * Makefile.am: djgpp/testsuite.sed added to EXTRA_DIST
+       * djgpp/testsuite.sed: Inhibit the use of disallowed characters.
+       * djgpp/config.bat: Inhibit the use of disallowed characters.
+
+2007-03-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Miscellaneous %define and %code cleanup.
+       * data/bison.m4 (b4_percent_define_flag_if): Correct comments on how
+       values are interpreted.
+       * doc/bison.texinfo (Decl Summary): Clean up and extend %define
+       documentation a little more.
+       * src/muscle_tab.c (MUSCLE_USER_NAME_CONVERT,
+       muscle_percent_define_insert, muscle_percent_code_grow): New
+       functions/macros.
+       * src/muscle_tab.h (muscle_percent_define_insert,
+       muscle_percent_code_grow): Prototype.
+       * src/parse-gram.y (prologue_declaration): Use
+       muscle_percent_define_insert and muscle_percent_code_grow when parsing
+       %define and %code directives.
+
+       Make it easy to share %define boolean variables between the front-end
+       and back-end.  Though not used yet, this will be useful in the future.
+       * data/bison.m4 (b4_check_user_names): Rewrite comments to talk about
+       Bison uses of names rather than just skeleton uses of names.
+       (b4_percent_define_get, b4_percent_define_ifdef): Rename
+       b4_percent_define_skeleton_variables(VARIABLE) to
+       b4_percent_define_bison_variables(VARIABLE).
+       (b4_percent_code_get, b4_percent_code_ifdef): Rename
+       b4_percent_code_skeleton_qualifiers(QUALIFIER) to
+       b4_percent_code_bison_qualifiers(QUALIFIER).
+       (b4_check_user_names_wrap): Update for renames.
+       * src/muscle_tab.c, src/muscle_tab.h (muscle_percent_define_flag_if,
+       muscle_percent_define_default): New functions mimicking
+       b4_percent_define_flag_if and b4_percent_define_default.
+
+       For %define variables, report locations for invalid values and
+       redefinitions.
+       * data/bison.m4 (b4_percent_define_flag_if): Read
+       b4_percent_define_loc(VARIABLE) to report the location of an invalid
+       value for VARIABLE.
+       (b4_percent_define_default): Save a special location in
+       b4_percent_define_loc(VARIABLE) in case the default value for VARIABLE
+       must later be reported as invalid.
+       * src/muscle_tab.c (muscle_location_grow, muscle_location_decode): New
+       functions.
+       (muscle_percent_define_insert): Record the location of VARIABLE in
+       muscle percent_define_loc(VARIABLE), and use it to report the previous
+       location for a redefinition.
+       (muscle_percent_define_flag_if): Update like b4_percent_define_flag_if.
+       (muscle_percent_define_default): Update like b4_percent_define_default.
+       (muscle_grow_user_name_list): Rename to...
+       (muscle_user_name_list_grow): ... this for consistency and use
+       muscle_location_grow.
+       * src/muscle_tab.h (muscle_location_grow): Prototype.
+       * tests/input.at (%define errors): Update expected output.
+       * tests/skeletons.at (%define boolean variables: invalid skeleton
+       defaults): New test case.
+
 2007-02-28  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        * src/print.c (lookahead_set, state_default_rule): Remove.
 2007-02-28  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        * src/print.c (lookahead_set, state_default_rule): Remove.
 2007-02-24  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        Use YYFPRINTF instead of fprintf where appropriate.  Reported by
 2007-02-24  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        Use YYFPRINTF instead of fprintf where appropriate.  Reported by
-       Sébastien Fricker at
+       Sebastien Fricker at
        <http://lists.gnu.org/archive/html/bug-bison/2007-02/msg00035.html>.
        <http://lists.gnu.org/archive/html/bug-bison/2007-02/msg00035.html>.
-       * THANKS: Add Sébastien Fricker.
+       * THANKS: Add Sebastien Fricker.
        * data/glr.c, data/push.c, data/yacc.c (yy_reduce_print): Implement.
        * doc/bison.texinfo (Tracing): Make it clearer that YYFPRINTF must
        accept a variable number of arguments.
        * data/glr.c, data/push.c, data/yacc.c (yy_reduce_print): Implement.
        * doc/bison.texinfo (Tracing): Make it clearer that YYFPRINTF must
        accept a variable number of arguments.
        * NEWS (2.3a+): Add entry for the change to %define.  Update entry for
        %code.
        * doc/bison.texinfo (Prologue Alternatives): Update.
        * NEWS (2.3a+): Add entry for the change to %define.  Update entry for
        %code.
        * doc/bison.texinfo (Prologue Alternatives): Update.
-       (Bison Declaration Summary): In %defines entry, update mention of
-       `%code requires' and `%code provides'.
+       (Decl Summary): In %defines entry, update mention of `%code requires'
+       and `%code provides'.
        (C++ Location Values): Update %define uses.
        (Calc++ Parser Interface): Likewise.
        (Calc++ Parser): Likewise, and update `%code requires' uses.
        (C++ Location Values): Update %define uses.
        (Calc++ Parser Interface): Likewise.
        (Calc++ Parser): Likewise, and update `%code requires' uses.
        * doc/bison.texinfo (The prologue): Update names, and replace remaining
        prologue blocks with %*-header declarations.
        (Calc++ Parser): Likewise.
        * doc/bison.texinfo (The prologue): Update names, and replace remaining
        prologue blocks with %*-header declarations.
        (Calc++ Parser): Likewise.
-       (Bison Declaration Summary): Update names.
+       (Decl Summary): Update names.
        (Table of Symbols): Update description.
        * src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to...
        (PERCENT_END_HEADER): ... this.
        (Table of Symbols): Update description.
        * src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to...
        (PERCENT_END_HEADER): ... this.
        header and code file.
        * doc/bison.texinfo (Prologue): Show use of %before-definitions instead
        of prologues for %union dependencies.
        header and code file.
        * doc/bison.texinfo (Prologue): Show use of %before-definitions instead
        of prologues for %union dependencies.
-       (Bison Declaration Summary): In %defines description, mention the
-       effect of %before-definitions and %after-definitions on the header
-       file.
+       (Decl Summary): In %defines description, mention the effect of
+       %before-definitions and %after-definitions on the header file.
        (Calc++ Parser): Forward declare driver in a %before-definitions rather
        than in the pre-prologue so that make check succeeds.
        (Table of Symbols): Add entries for %before-definitions and
        (Calc++ Parser): Forward declare driver in a %before-definitions rather
        than in the pre-prologue so that make check succeeds.
        (Table of Symbols): Add entries for %before-definitions and