]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
Remove some unnecessary differences between the pull parser code and
[bison.git] / ChangeLog
index ac07c07484ee97c8799819c445183b941b2dd06a..6f6db4bcf1e1045ddcd01a064b81acb2043d03e2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,390 @@
+2006-12-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Remove some unnecessary differences between the pull parser code and
+       the push parser code.  This patch enables yynerrs in push mode.
+       * data/push.c: Reformat M4 a little.
+       (b4_yyerror_range): Remove and convert all uses to just yyerror_range.
+       (b4_declare_scanner_communication_variables): Don't omit yynerrs just
+       because push mode is on.  Instead, if pure mode is on, move yynerrs
+       to...
+       (b4_declare_parser_state_variables): ... here.
+       (yynerrs, yyerror_range): For push mode, #define each NAME in this list
+       to yyps->NAME so it can be used in yypush_parse.
+       (yypush_parse): Don't omit uses of yynerrs in push mode.
+
+2006-12-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix bug such that the first pushed token's value and location are
+       sometimes overwritten (sometimes by %initial-action) before being used.
+       * data/push.c (yypush_parse): Rename arguments yynchar, yynlval, and
+       yynlloc to yypushed_char, yypushed_val, and yypushed_loc for clarity.
+       For the first yypush_parse invocation, initialize yychar to YYEMPTY to
+       more closely mimic the pull parser logic.
+       Don't copy the pushed token to yychar, yylval, and yylloc until it's
+       time to read a token, which is after any initialization of yylval and
+       yylloc.
+       (gottoken): Rename label to...
+       (yyread_pushed_token): ... for clarity and to avoid infringing on the
+       user namespace.
+
+2006-12-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Rearrange initialization of the parser state variables so that the
+       skeleton doesn't have to have a copy for pull mode and another for push
+       mode.  This patch also fixes at least a bug such that yylloc was not
+       initialized (with b4_location_initial_line and
+       b4_location_initial_column) upon calling yypush_parse.  However, that
+       initialization now overwrites the first token's location;
+       %initial-action assigning @$ already did the same thing, and both bugs
+       will be fixed in a later patch.
+       * data/push.c (b4_yyssa): Remove and convert all uses to just yyssa.
+       (b4_declare_parser_state_variables): Remove initialization of yytoken,
+       yyss, yyvs, yyls, and yystacksize.
+       (yypstate_new): Remove initialization of some yypstate fields: yystate,
+       yyerrstatus, yytoken, yyss, yyvs, yyls, yystacksize, yyssp, yyvsp, and
+       yylsp.
+       (yyssa, yyvsa, yylsa): For push mode, #define each NAME in this list to
+       yyps->NAME so it can be used in yypush_parse.
+       (yyparse or yypush_parse): For yypush_parse, don't print the
+       "Starting parse" diagnostic for invocations after the first.
+       Add initialization of yytoken, yyss, yyvs, yyls, and yystacksize; for
+       yypush_parse, only do it for the first invocation.
+       Allow yystate, yyerrstatus, yyssp, yyvsp, yylsp, and yylloc
+       initialization to occur in yypush_parse but only on the first
+       invocation.
+
+2006-12-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/push.c: Add CPP guards around push parser declarations in both
+       the header and the code file.
+       In the code file, move the push parser declarations to the same place
+       they appear in the header file.
+       Clean up the M4 some, especially the inconsistent underquoting in
+       some b4_c_function_def and b4_c_function_decl uses.
+
+2006-12-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Encapsulate the push parser state variables into an M4 macro so the
+       push skeleton doesn't have to list them again for pull mode's yyparse.
+       For push mode, remove yypush_parse's local equivalents of these
+       variables to eliminate unnecessary copying between the two sets at
+       run-time.  This patch also fixes at least a bug related to multiple
+       %initial-action invocations in push mode.
+       * data/push.c (b4_declare_parser_variables): Rename to...
+       (b4_declare_scanner_communication_variables): ... this for clarity and
+       update both uses.
+       (b4_declare_yyparse_variables): Remove and move its contents to the one
+       spot where it was invoked.
+       (b4_declare_parser_state_variables): New macro containing the parser
+       state variables required by push mode.
+       (struct yypstate): Replace all fields but yynew with
+       b4_declare_parser_state_variables.
+       (yystate, yyn, yyresult, yyerrstatus, yytoken, yyss, yyssp, yyvs,
+       yyvsp, yyls, yylsp, yystacksize, yyval, yyloc): For push mode, #define
+       each NAME in this list to yyps->NAME so it can be used in yypush_parse.
+       (yyparse or yypush_parse): For yyparse in pull mode, replace local
+       parser state variable declarations with
+       b4_declare_parser_state_variables.
+       Don't initialize parser state variables when calling yypush_parse since
+       yypstate_new already does that.
+       Invoke the user's initial action only upon the first yypush_parse
+       invocation.
+       Remove all code that copies between the local parser state variables
+       and the yypstate.
+
+2006-12-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/push.c (union yyalloc): Rename yyss, yyvs, and yyls fields to
+       prevent a name collision in a future patch where these names will
+       sometimes be #define'd.
+       (YYSTACK_RELOCATE): Add an argument to select a union yyalloc field
+       since it no longer has the same name as the existing argument.
+       (yyparse or yypush_parse): Update all uses of YYSTACK_RELOCATE.
+
+2006-12-19  Paolo Bonzini  <bonzini@gnu.org>
+       and Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * doc/bison.texinfo (Decl Summary): In the %language entry, mention
+       that the argument is case-insensitive, and there's no `=' here.
+       For the %skeleton entry, mention that %language is better.
+       (Bison Options): Likewise for --language and --skeleton.  Move the
+       --skeleton entry so that the `Tuning the parser' section is sorted
+       alphabetically on long options.
+       (C++ Bison Interface): Don't use the word skeleton.  Don't explain the
+       %language directive in detail here; cross-reference the %language
+       documentation instead.
+       (Calc++ Parser): Use `%require "@value{VERSION}"' rather than
+       `%require "2.3b"' so that the example is always up-to-date.
+       (Bison Symbols): Add entries for %language and %skeleton.
+       * examples/extexi (normalize): Instead of replacing every %require
+       argument with the current Bison version, just substitute for
+       `@value{VERSION}'.  This guarantees that we're testing what actually
+       appears in the documentation.
+       * examples/calc++/Makefile.am ($(calc_extracted)): Use `$(VERSION)'
+       rather than `@VERSION@'.
+
+2006-12-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Reword the %language news a bit, and put it earlier.
+
+       * src/getargs.c (skeleton_arg): Last arg is now location const *.
+       Rewrite to simplify the logic.
+       (language_argmatch): Likewise.
+       (program_name): We now own this var.
+       * src/getargs.h (struct bison_language): Use char[] rather than
+       const char *.
+
+       * doc/bison.texinfo (Decl Summary, Bison Options): Don't claim
+       Java is supported.
+       * src/complain.c (program_name): Remove decl; no longer needed.
+       * src/main.c (program_name): Remove; now belongs to getargs.
+
+2006-12-18  Paolo Bonzini  <bonzini@gnu.org>
+
+       * NEWS: Document %language.
+
+       * data/Makefile.am (dist_pkgdata_DATA): Add c-skel.m4, c++-skel.m4.
+
+       * data/c-skel.m4, data/c++-skel.m4: New files.
+       * data/glr.c: Complain on push parsers.
+
+       * doc/bison.texinfo (C++ Parser Interface): Prefer %language
+       over %skeleton.
+       (Directives): Document %language and %skeleton.
+       (Command line): Document -L.
+
+       * examples/extexi: Rewrite %require directive.
+       * examples/calc++/Makefile.am: Pass VERSION to extexi.
+
+       * src/files.c (compute_exts_from_gc): Look in language structure
+       for .y extension.
+       (compute_file_name_parts): Check whether .tab should be added.
+       * src/getargs.c (valid_languages, skeleton_prio, language_prio):
+       (language, skeleton_arg, language_argmatch): New.
+       (long_options): Add --language.
+       (getargs): Use skeleton_arg, add -L/--language.
+       * src/getargs.h: Include location.h.
+       (struct bison_language, language, skeleton_arg, language_argmatch): New.
+       * src/output.c (prepare): Pick default skeleton from struct language.
+       Don't dispatch C skeletons here.
+       * src/parse-gram.y (PERCENT_LANGUAGE): New.
+       (prologue_declaration): Add "%language" rule, use skeleton_arg.
+       * src/scan-gram.l ("%language"): New rule.
+
+       * tests/calc.at: Test %skeleton and %language.
+       * tests/local.at (AT_SKEL_CC_IF): Look for %language.
+       (AT_GLR_IF): Look for %skeleton "glr.cc".
+       (AT_LALR1_CC_IF, AT_GLR_CC_IF): Rewrite.
+       (AT_YACC_IF): Reject %language.
+
+2006-12-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/symtab.h (struct semantic_type): Remove the tag 'semantic_type',
+       since it wasn't used; only the typedef name 'semantic_type' is needed.
+       Also, omit trailing white space.
+
+       * bootstrap: Sync from coreutils.
+       (gnulib_extra_files): Add build-aux/announce.gen.
+       (slurp): Adjust .gitignore files like .cvsignore files.
+       * build-aux/announce-gen: Remove from CVS, since bootstrap
+       now creates this.
+
+2006-12-16  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Make %push-parser imply %pure-parser.  This fixes several bugs; see
+       <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00148.html>.
+       * src/parse-gram.y (prologue_declaration): For %push-parser, also set
+       pure_parser = true.
+       * data/push.c: Don't bother testing b4_push_if when deciding whether
+       to expand b4_declare_parser_variables globally.
+       (yypush_parse): Likewise in here.
+
+       * data/push.c (yypush_parse): Add b4_parse_param to arguments.
+       (yy_reduce_print): Reformat M4 for readability.
+
+2006-12-15  Bob Rossi  <bob@brasko.net>
+       and Joel Denny  <jdenny@ces.clemson.edu>
+
+       * data/push.c (yypstate): Add typedef, and update all uses of
+       struct yypstate to just yypstate.
+       * tests/calc.at (_AT_DATA_CALC_Y): Update here as well.
+
+2006-12-14  Bob Rossi  <bob@brasko.net>
+
+       * data/push.c (yypush_parse): Declare prototype regardless of
+       %locations option.
+
+2006-12-14  Bob Rossi  <bob@brasko.net>
+
+       * data/push.c (yyparse): Remove the prototype and the #define when in
+       push-parser mode.
+
+2006-12-13  Bob Rossi  <bob@brasko.net>
+
+       * data/push.c (yypstate_init): Rename to...
+       (yypstate_new): ... this and use b4_c_function_def.
+       (yypstate_delete): New.
+       (yypush_parse): Change parameters yynval and yynlloc to be const.
+       * tests/calc.at (_AT_DATA_CALC_Y): Use new yypstate_new and
+       yypstate_delete functions.
+
+2006-12-13  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * configure.ac (AC_PREREQ): Require Autoconf 2.61 because of our
+       strange test case titles.  Reported by Bob Rossi.
+
+2006-12-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * TODO: Add pointer to Sylvain Schmitz's work on static detection
+       of potential ambiguities in GLR grammers.
+
+2006-12-12  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * tests/testsuite.at (AT_CHECK): When checking if $1 starts with
+       `bison ', use m4_index instead of m4_substr since chopping up a string
+       containing M4-special characters causes problems here.
+
+       Fix a couple of bugs related to special characters in user-specified
+       file names, and make it easier for skeletons to compute output file
+       names with the same file name prefix as Bison-computed output file
+       names.
+       * data/glr.cc, data/push.c, data/yacc.c: In @output, use
+       b4_parser_file_name and b4_spec_defines_file instead of
+       @output_parser_name@ and @output_header_name@, which are now redundant.
+       * data/glr.c, data/lalr1.cc: Likewise.  Also, in header #include's, use
+       b4_parser_file_name, b4_spec_defines_file, and the new
+       @basename(FILENAME@) instead of @output_parser_name@ and
+       @output_header_name@, which inappropriately escaped the file names as
+       C string literals.
+       * src/files.c (all_but_ext): Remove static qualifier.
+       (compute_output_file_names): Move `free (all_but_ext)' to...
+       (output_file_names_free): ... here since all_but_ext is needed later.
+       * src/files.h (all_but_ext): Extern.
+       * src/muscle_tab.h (MUSCLE_INSERT_STRING_RAW): New macro that does
+       exactly what MUSCLE_INSERT_STRING used to do.
+       (MUSCLE_INSERT_STRING): Use MUSCLE_OBSTACK_SGROW so that M4-special
+       characters are escaped properly.
+       * src/output.c (prepare): Define muscle file_name_all_but_ext as
+       all_but_ext.
+       For pkgdatadir muscle, maintain previous functionality by using
+       MUSCLE_INSERT_STRING_RAW instead of MUSCLE_INSERT_STRING.  The problem
+       is that b4_pkgdatadir is used inside m4_include in the skeletons, so
+       digraphs would never be expanded.  Hopefully no one has M4-special
+       characters in his Bison installation path.
+       * src/scan-skel.l: Don't parse @output_header_name@ and
+       @output_parser_name@ anymore since they're now redundant.
+       In @output, use decode_at_digraphs.
+       Parse a new @basename command that invokes last_component.
+       (decode_at_digraphs): New.
+       (BASE_QPUTS): Remove unused.
+       * tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): New macro.
+       (Output file name): New tests.
+
+2006-12-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Warn about output files that are generated by the skeletons and that
+       conflict with other output files.
+       * data/glr.c: Don't generate the header file here when glr.cc does.
+       * src/files.c (file_names, file_names_count): New static globals.
+       (compute_output_file_names): Invoke output_file_name_check for files
+       not generated by the skeletons and remove existing checks.
+       (output_file_name_check): New function that warns about conflicting
+       output file names.
+       (output_file_names_free): Free file_names.
+       * src/files.h (output_file_name_check): Declare.
+       * src/scan-skel.l: Invoke output_file_name_check for files generated by
+       the skeletons.
+       * tests/output.at (AT_CHECK_CONFLICTING_OUTPUT): New.
+       (Conflicting output files): New tests.
+
+2006-12-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/bison.texinfo: Fix a couple of typos.
+
+2006-12-08  Bob Rossi  <bob@brasko.net>
+
+       * data/push.c: (yypvarsinit, yypvars, struct yypvars, yypushparse):
+       Rename to...
+       (yypstate_init, yypstate, struct yypstate, yypush_parse): ... these and
+       update all uses.
+       (b4_yyssa, b4_yyerror_range, yypstate_init): Rename pv to yyps.
+       (yypush_parse): Rename yypvars argument to yyps and remove redundant
+       local pv.
+       (yypstate_init, yypush_parse): Declare in Bison-generated header file.
+       * tests/calc.at (_AT_DATA_CALC_Y): Use newly named functions.
+
+2006-12-07  Bob Rossi  <bob@brasko.net>
+       and Joel Denny  <jdenny@ces.clemson.edu>
+
+       * data/push.c (yypvarsinit): Change return type from void* to struct
+       yypvars*. No longer cast to void* on return.
+       (struct yypvars): Remove yylen since it need not be remembered between
+       yypushparse invocations.
+       (yypushparse): Don't copy between yylen and pv->yylen.
+
+2006-12-05  Bob Rossi  <bob@brasko.net>
+
+       * data/push.c (yychar_set, yylval_set, yylloc_set): Delete.
+       (yypushparse): Add yynchar, yynlval, yynlloc parameters.
+       (b4_declare_parser_variables): Do not declare yynerrs for push mode.
+       (struct yypvars): Remove b4_declare_parser_variables.
+       (yypvarsinit): Remove init code for removed variables.
+       (global scope): Do not declare b4_declare_parser_variables if
+       push or pure mode.
+       (yypushparse): Add b4_declare_parser_variables.
+       Init new local variables, and remove init code for removed
+       yypvars variables.
+       (yyparse): Delete.
+       * tests/calc.at (_AT_DATA_CALC_Y): Call yypushparse for push mode
+       and yyparse for other modes.
+       (AT_CHECK_CALC_LALR): Added '%skeleton "push.c"' for push tests.
+       * tests/local.at (AT_PUSH_IF, AT_PURE_OR_PUSH_IF): Added.
+       (AT_YYERROR_SEES_LOC_IF): push-parser makes this false.
+       (AT_PURE_LEX_IF): True if pure or push parser.
+
+2006-12-05  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Document Yacc prologue alternatives and default %destructor's and
+       %printer's as experimental.  Don't mention Java yet.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00002.html>.
+       * NEWS (2.3a+): Say they're experimental.  Remove any mention of Java.
+       (2.3a): Annotate this entry to say the old forms of these features were
+       also experimental.
+       * doc/bison.texinfo (Prologue Alternatives, Freeing Discarded Symbols,
+       Bison Symbols): Say they're experimental.  Comment out any mention
+       of Java (we'll want this back eventually).
+
+2006-12-01  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Support a file name argument to %defines.  Deprecate `=' in
+       %file-prefix, %name-prefix, and %output.  Discussed at
+       <http://lists.gnu.org/archive/html/help-bison/2006-09/msg00001.html>.
+       * NEWS (2.3a+): Mention.
+       * doc/bison.texinfo (Decl Summary, Bison Symbols): Add entry for new
+       form of %defines, and remove `=' from entries for %file-prefix,
+       %name-prefix, and %output.
+       * src/parse-gram.y (prologue_declaration): Implement.
+       * tests/calc.at (Simple LALR Calculator, Simple GLR Calculator, Simple
+       LALR1 C++ Calculator, Simple GLR C++ Calculator): Remove the `=' from
+       all but one occurrence of %name-prefix.
+       * tests/headers.at (export YYLTYPE): Remove the `=' from %name-prefix.
+       * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Likewise.
+       * tests/output.at (AT_CHECK_OUTPUT): Remove the `=' from all but one
+       occurrence of each of %file-prefix and %output.  Add check for %defines
+       with argument.
+       * tests/reduce.at (Useless Terminals, Useless Nonterminals,
+       Useless Rules, Reduced Automaton, Underivable Rules, Empty Language):
+       Remove the `=' from %output.
+
+2006-11-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't escape $ in test case titles since Autoconf 2.61 now does that
+       correctly.
+       * tests/actions.at (Default %printer and %destructor are not for error
+       or $undefined): Here.
+       (Default %printer and %destructor are not for $accept): Here.
+       * tests/input.at (Invalid $n and @n): Here.
+
 2006-11-20  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        Rename <!> to <>.  Discussed starting at