+2009-04-14 Akim Demaille <demaille@gostai.com>
+
+ doc: minor fixes.
+ * doc/bison.texinfo (Decl Summary): Fix entry about %debug.
+ (Table of Symbols): Remove duplicate entry for %debug.
+
+2009-04-10 Eric Blake <ebb9@byu.net>
+
+ submodules: update to latest
+ * submodules/autoconf: Use latest upstream Autoconf.
+
+2009-04-06 Eric Blake <ebb9@byu.net>
+
+ Work around autoconf 2.63b bug in testsuite.
+ * tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Avoid tripping
+ autoconf bug related to # in test.
+
+2009-04-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * NEWS (2.5): New section. Describe new -D/--define feature.
+
+2009-04-06 Akim Demaille <demaille@gostai.com>
+
+ Regen.
+ * src/parse-gram.h, src/parse-gram.c: Regen.
+
+2009-04-06 Akim Demaille <demaille@gostai.com>
+
+ rename muscle_tab.* as muscle-tab.* for consistency.
+ * src/muscle_tab.h, src/muscle_tab.c: Rename as...
+ * src/muscle-tab.h, src/muscle-tab.c: these.
+ * src/getargs.c, src/local.mk, src/main.c, src/output.c,
+ * src/parse-gram.y, src/reader.c, src/scan-code.l: Adjust.
+
+2009-04-06 Akim Demaille <demaille@gostai.com>
+
+ Makefile: introduce $(BISON).
+ * src/local.mk (BISON): New.
+ (YACC): Use it.
+
+2009-04-06 Akim Demaille <demaille@gostai.com>
+
+ parser: handle %locations as %define locations.
+ * src/getargs.h, src/getargs.c (locations_flag): Remove.
+ * src/getargs.c, src/scan-code.l: Use muscle_percent_define_ensure
+ to set "locations" to true.
+ * src/output.c (prepare): Don't output "locations".
+ * src/scan-gram.l (%locations): Handle it as a %<flag>.
+ * src/parse-gram.y: It's no longer a token.
+ Don't handle it.
+ * data/bison.m4 (b4_locations_if): Define it with
+ b4_percent_define_if_define.
+ * data/c.m4, data/glr.cc: Adjust.
+
+2009-04-06 Akim Demaille <demaille@gostai.com>
+
+ Regen.
+ * src/parse-gram.c: Regen.
+
+2009-04-06 Akim Demaille <demaille@gostai.com>
+
+ muscle: factor the handling of obsolete of obsolete directives.
+ Suggested by Joel E. Denny.
+
+ * src/muscle_tab.h, src/muscle_tab.c (muscle_percent_define_ensure):
+ New, extracted from...
+ * src/parse-gram.y (prologue_declaration: pure-parser): here.
+ Remove it.
+ (prologue_declaration: "%<flag>"): Use
+ muscle_percent_define_ensure.
+ (%error-verbose, %pure-parser): No longer tokens.
+ * src/scan-gram.l (pure-parser): Return as a %<flag>.
+
+2009-04-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Fix options documentation.
+ * build-aux/cross-options.pl: As in --help output, write optional
+ arguments as [=ARG] not =[ARG].
+ * doc/bison.texinfo (Bison Options): Add -W/--warnings argument.
+
+2009-04-04 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Replace BISON_PROG_GNU_M4 with Autoconf's AC_PROG_GNU_M4.
+ If the first m4 in $PATH is wrong, it keeps looking. Moreover, its
+ requirements for a correct m4 are stricter.
+ * m4/m4.m4: Make it a symbolic link to submodules/autoconf/m4/m4.m4.
+ * configure.ac: Update to use AC_PROG_GNU_M4.
+ Reported by Eric Blake.
+
+2009-04-03 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Help with updating web manual.
+ * HACKING: Incorporate instructions from gnulib/doc/README.
+ * bootstrap.conf (gnulib_modules): Add gendocs.
+
+2009-04-03 Akim Demaille <demaille@gostai.com>
+
+ Regen.
+ * src/parse-gram.h, src/parse-gram.c: Regen.
+
+2009-04-03 Akim Demaille <demaille@gostai.com>
+
+ Factor %FLAG at scan level.
+ * src/parse-gram.y (PERCENT_DEBUG, PERCENT_ERROR_VERBOSE): Token
+ definitions and associated rules, replaced by....
+ (PERCENT_FLAG): this new token type, and rule.
+ * src/scan-gram.l (RETURN_PERCENT_FLAG): New.
+ Use it for %debug and %error-verbose.
+
+2009-04-03 Akim Demaille <demaille@gostai.com>
+
+ Regen.
+ * src/parse-gram.h, src/parse-gram.c: Regen.
+
+2009-04-03 Akim Demaille <demaille@gostai.com>
+
+ Treat %debug as %define debug.
+ * data/bison.m4 (b4_debug_if): New.
+ * data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c,
+ * data/lalr1.java: Use it instead of b4_debug_flag.
+ * src/getargs.h, src/getargs.c (debug_flag): Remove.
+ * src/output.c (prepare): Don't output it.
+ * src/parse-gram.y: Treat %debug as %define debug.
+
+2009-04-03 Akim Demaille <demaille@gostai.com>
+
+ Treat %error-verbose as %define error_verbose.
+ This allows to pass -Derror_verbose on the command line. Better
+ yet, it allows to pass -Derror_verbose=$(ERROR_VERBOSE), with
+ ERROR_VERBOSE being defined as false or true.
+ * data/bison.m4 (b4_percent_define_if_define): Instead of relying
+ on b4_percent_define_ifdef, for does not check the defined value,
+ but only whether the symbol is defined, rely on
+ b4_percent_define_flag_if, so that a value of "false" is processed
+ as a false.
+ If not defined, define the flag to "false".
+ (b4_error_verbose_if): New.
+ * data/glr.c, data/lalr1.cc, data/yacc.c: Use it instead of
+ b4_error_verbose_flag.
+ * src/getargs.h, src/getargs.c (error_verbose_flag): Remove.
+ * src/output.c (prepare): Don't output it.
+ * src/parse-gram.y (%error-verbose): Treat as %define error_verbose.
+
+2009-04-03 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Fix strange %define locations for default values.
+ Reported by Akim Demaille at
+ <http://lists.gnu.org/archive/html/bug-bison/2007-12/msg00001.html>
+ and discussed again starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2008-11/msg00102.html>.
+ * data/bison.m4 (b4_percent_define_default): Leave syncline blank
+ because location information is bogus.
+ Use angle brackets to delimit fake file name because square brackets
+ look like underexpanded m4. Choose a better fake file name.
+ Use negative line numbers.
+ * src/muscle_tab.c (muscle_percent_define_default): Likewise.
+ * src/location.c (location_print): If line for a boundary is negative,
+ only print that boundary's file name.
+ * src/location.h: Document that.
+ * tests/skeletons.at (%define Boolean variables: invalid skeleton
+ defaults): Update output.
+
+2009-04-03 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Pacify ./configure --enable-gcc-warnings.
+ * Makefile.am (AM_CFLAGS): Remove $(WERROR_CFLAGS) because many files
+ in lib won't compile with it.
+ * src/local.mk (src_bison_CFLAGS): Use $(WERROR_CFLAGS) here only.
+
+2009-03-31 Akim Demaille <demaille@gostai.com>
+
+ bootstrap: --help to stdout.
+ * bootstrap (usage): Don't send --help to stderr.
+ Use a here doc instead of a long string.
+
+2009-03-31 Akim Demaille <demaille@gostai.com>
+
+ bootstrap: README-hacking no longer exists
+ * bootstrap (checkout_only_file): Set to HACKING.
+
+2009-03-26 Akim Demaille <demaille@gostai.com>
+
+ doc: merge HACKING and README-hacking.
+ Two files is confusing.
+ Reported by Alexandre Duret-Lutz.
+
+ * README-hacking: Merge into...
+ * HACKING (Working from the repository): here.
+
+2009-03-26 Akim Demaille <demaille@gostai.com>
+
+ doc: update README-hacking.
+ * README-hacking: We now use git and git submodules.
+ Reported by Ralf Wildenhues and Alexandre Duret-Lutz.
+
+2009-03-26 Akim Demaille <demaille@gostai.com>
+
+ lalr1.cc: avoid GCC 4.3 warnings.
+ GCC 4.3 now warns about "a || b && c" and asks for explicit
+ parentheses.
+ Reported by Alexandre Duret-Lutz.
+ * data/location.cc: Update copyright years.
+ (Position::operator==): Use parens to make precedence explicit.
+ Compare lines and columns first, as they are more likely to be
+ different, and they are faster to compare.
+
+2009-03-26 Akim Demaille <demaille@gostai.com>
+
+ gnulib: update.
+ * gnulib: Update to latest.
+ * src/local.mk (AM_CFLAGS): Move to...
+ * Makefile.am: here.
+ * etc/prefix-gnulib-mk (prefix_assignment): Also transform
+ AM_CFLAGS.
+
+2009-03-02 Akim Demaille <demaille@gostai.com>
+
+ Comment changes.
+
+2009-03-02 Akim Demaille <demaille@gostai.com>
+
+ Share b4_yytranslate_define.
+ * data/lalr1.cc (b4_yytranslate_define): Move to...
+ * data/c++.m4: here.
+
+2009-03-02 Akim Demaille <demaille@gostai.com>
+
+ Use locations in the variant example.
+ Yes, this obfuscates the point of this example, variants only.
+ But glr.cc cannot work (yet?) without locations. This change
+ makes it easier to use this example with glr.cc.
+
+ * examples/variant.yy (assert): %define it.
+ (locations): Request them.
+ (yylex): Bind the location to the stage.
+
+2009-03-02 Akim Demaille <demaille@gostai.com>
+
+ Dub make_TOKEN as a public type interface.
+ * data/c++.m4 (b4_symbol_constructor_declare)
+ (b4_symbol_constructor_define): New empty stubs.
+ (b4_public_types_declare, b4_public_types_define): Use them.
+ * data/lalr1.cc (b4_symbol_constructor_declare)
+ (b4_symbol_constructor_declare_)
+ (b4_symbol_constructor_define_, b4_symbol_constructor_define):
+ Move to...
+ * data/variant.hh: here.
+ Remove the "b4_variant_if" parts, as variant.hh is loaded only if
+ needed.
+ * data/lalr1.cc: No longer invoke b4_symbol_constructor_define and
+ b4_symbol_constructor_declare, as it is now done by
+ b4_public_types_define and b4_public_types_declare.
+
+2009-03-02 Akim Demaille <demaille@gostai.com>
+
+ Coding style changes.
+ * data/lalr1.cc (b4_symbol_constructor_declaration_)
+ (b4_symbol_constructor_declarations)
+ (b4_symbol_constructor_definition_)
+ (b4_symbol_constructor_definitions)
+ (b4_yytranslate_definition): Rename as...
+ (b4_symbol_constructor_declare_)
+ (b4_symbol_constructor_declare)
+ (b4_symbol_constructor_define_)
+ (b4_symbol_constructor_define)
+ (b4_yytranslate_define): these.
+ * data/variant.hh (b4_variant_definition): Rename as...
+ (b4_variant_define): this.
+
+2009-03-02 Akim Demaille <demaille@gostai.com>
+
+ Factor b4_assert_if, b4_lex_symbol_if, and b4_variant_if.
+ * data/bison.m4 (b4_percent_define_if_define): New.
+ * data/c++.m4 (b4_variant_if): Move to...
+ * data/bison.m4: Here, using b4_percent_define_if_define.
+ * data/lalr1.cc (b4_assert_if, b4_lex_symbol_if): Move to...
+ * data/bison.m4: Here, using b4_percent_define_if_define.
+
+2009-03-02 Akim Demaille <demaille@gostai.com>
+
+ Dub symbol_type_base as a public type.
+ * data/c++.m4 (b4_public_types_declare): Now define
+ symbol_type_base and symbol_type.
+ (b4_public_types_define): New.
+ In both cases, the definitions are taken verbatim from lalr1.cc.
+ * data/lalr1.cc: Adjust.
+
+2009-03-02 Akim Demaille <demaille@gostai.com>
+
+ b4_public_types_declare.
+ * data/c++.m4 (b4_public_types_declare): New.
+ * data/glr.cc, data/lalr1.cc: Use it.
+
+2009-03-02 Akim Demaille <demaille@gostai.com>
+
+ b4_semantic_type_declare.
+ * data/c++.m4 (b4_semantic_type_declare): New.
+ Factors and generalizes what was in glr.cc and lalr1.cc.
+ * data/variant.hh (b4_semantic_type_declare): Redefine it for
+ variants.
+ * data/lalr1.cc, data/glr.cc: Use it.
+
+2009-02-26 Akim Demaille <demaille@gostai.com>
+
+ Upgrade gnulib.
+ * gnulib: Upgrade from master.
+ * lib/.cvsignore, lib/.gitignore, m4/.cvsignore, m4/.gitignore:
+ Regen.
+
+2009-02-25 Akim Demaille <demaille@gostai.com>
+
+ Remove useless arguments.
+ * data/glr.c (yy_reduce_print): $$ and @$ are not used and not
+ relevant.
+
+2009-02-25 Akim Demaille <demaille@gostai.com>
+
+ Comment changes.
+ * data/lalr1.cc: here.
+
+2009-02-25 Akim Demaille <demaille@gostai.com>
+
+ Fix glr.cc's debug level handling.
+ * data/glr.cc (yydebug_): Remove, as it is actually yydebug from
+ glr.c which is used.
+ (debug_level, set_debug_level): Adjust.
+
+2009-02-25 Akim Demaille <demaille@gostai.com>
+
+ Copyright years.
+ * data/glr.c: Add 2007 and 2008 here, consistenly with the comments.
+
+2009-02-25 Akim Demaille <demaille@gostai.com>
+
+ Style changes.
+ * etc/bench.pl.in (generate_grammar_list): Consitently use
+ location_type, not yy::location.
+
+2009-02-25 Akim Demaille <demaille@gostai.com>
+
+ Comment change.
+ * data/lalr1.cc: here.
+
+2009-02-19 Akim Demaille <demaille@gostai.com>
+
+ Make yyparser::error public.
+ * data/lalr1.cc: here.
+ There is no good reason to keep it private (and it is convenient
+ to use it from the scanner for instance). It is already public in
+ glr.cc.
+
+2009-02-19 Akim Demaille <demaille@gostai.com>
+
+ Comment changes.
+ * data/glr.cc: here.
+
+2009-02-19 Akim Demaille <demaille@gostai.com>
+
+ Remove trailing blanks.
+ The epilogue has its own ending \n, no need to add another.
+
+ * data/glr.c, data/lalr1.java, data/yacc.c: dnl when outputing the
+ epilogue.
+ * data/glr.cc: dnl when extending the epilogue.
+ Remove stray "private:".
+
+2009-02-19 Akim Demaille <demaille@gostai.com>
+
+ Use b4_c_modern.
+ * data/c.m4 (b4_c_function_decl): Here.
+
+2009-02-19 Akim Demaille <demaille@gostai.com>
+
+ Comment changes.
+ * data/lalr1.cc: here.
+
+2009-02-19 Akim Demaille <demaille@gostai.com>
+
+ Extract variant.hh
+ * data/variant.hh: New, extracted from...
+ * data/lalr1.cc: here.
+ Adjust.
+ * data/local.mk: Adjust.
+
+2009-02-19 Akim Demaille <demaille@gostai.com>
+
+ Extract stack.hh from lalr1.cc.
+ * data/stack.hh: New.
+ * data/lalr1.cc: Extract from here.
+ * data/local.mk: Adjust.
+
+2009-02-03 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Add reminder about uploading public key to keys.gnupg.net.
+ * HACKING (Release Procedure): Here.
+
+2009-01-28 Akim Demaille <demaille@gostai.com>
+
+ * NEWS: Update information about 2.4.1 and 2.4.2.
+
+2008-11-04 Akim Demaille <demaille@gostai.com>
+
+ Reformat NEWS.
+ * NEWS: Use more outline-mode markup.
+ Suggested by Jim Meyering.
+
+2009-01-08 Akim Demaille <demaille@gostai.com>
+
+ Fix grep portability issues.
+ Grep on Solaris does not support -q.
+ Reported by Summum Bonum.
+
+ * NEWS: Add a stub for 2.4.2.
+ * THANKS: Add Summum Bonum.
+ * tests/atlocal.in (EGREP): New.
+ (CC, CXX, XSLTPROC): Make it possible to override them via
+ envvars.
+ * tests/java.at: Use $EGREP instead of egrep.
+ Use AT_CHECK's ignore instead of grep's -q.
+
+2008-12-11 Akim Demaille <demaille@gostai.com>
+
+ Pass the token type to yysyntax_error.
+ * data/yacc.c (yysyntax_error): Take the transated token instead
+ of the raw number.
+ Adjust callers.
+ * TODO: Update.
+
+2008-12-11 Akim Demaille <demaille@gostai.com>
+
+ Formatting changes.
+ * data/glr.c: Formatting changes.
+
+2008-12-11 Akim Demaille <demaille@gostai.com>
+
+ Propagate i18n changes into glr.c.
+ * TODO: Update.
+ * data/glr.c (yyreportSyntaxError): Use "switch" instead of
+ building the error message format dynamically.
+ * data/lalr1.java: Formatting changes.
+
+2008-12-11 Akim Demaille <demaille@gostai.com>
+
+ Use testsuite -C.
+ * tests/local.mk: Replace "cd && testsuite" by "testsuite -C".
+ Solves problems when top_srcdir is an absolute path.
+ Suggested by Eric Blake.
+ * configure.ac: Require Autoconf 2.62.
+
+2008-12-11 Akim Demaille <demaille@gostai.com>
+
+ Simplify the i18n of the error messages.
+ * data/lalr1.cc: Comment changes.
+ * data/yacc.c (yysyntax_error): Rewrite, using a switch as in
+ lalr1.cc instead of building dynamically the format string.
+
+2008-12-08 Akim Demaille <demaille@gostai.com>
+
+ Fix portability issue in the test suite.
+ * tests/local.at (AT_MATCHES_CHECK): New.
+ Based on Perl instead of Sed. Sed has too many portability
+ pitfalls, not ever Sed is GNU Sed.
+ * tests/actions.at (Fix user actions without a trailing semicolon):
+ Use it.
+
+2008-12-08 Akim Demaille <demaille@gostai.com>
+
+ Update data/README.
+ * data/README: Document glr.cc, lalr1.java, m4sugar and xslt.
+
+2008-12-08 Akim Demaille <demaille@gostai.com>
+
+ Install autoconf as a submodule to get m4sugar.
+ * .gitmodules: Add submodules/autoconf.
+ * data/m4sugar/foreach.m4, data/m4sugar/m4sugar.m4: Now links into
+ submodules/autoconf.
+
+2008-12-08 Akim Demaille <demaille@gostai.com>
+
+ Test token.prefix in all the skeletons.
+ * data/java.m4 (b4_token_enum): Use the token.prefix.
+ * tests/local.at (AT_BISON_OPTION_PUSHDEFS): Define AT_TOKEN_PREFIX.
+ * tests/calc.at (_AT_DATA_CALC_Y): Use it.
+ Add checks for yacc.c, glr.c, lalr1.cc and glr.cc.
+ * tests/java.at: Comment changes.
+ (AT_CHECK_JAVA_MINIMAL): Define the END token.
+ (Java parser class and package names): Add token.prefix check.
+
+2008-12-08 Akim Demaille <demaille@gostai.com>
+
+ Fix regeneration of atconfig.
+ * tests/local.mk (tests/atconfig): The rule was incorrect, but
+ remove it: now that there is no tests/Makefile.am, the top-level
+ Makefile properly updates atconfig when needed.
+
+2008-12-07 Di-an Jan <dianj@freeshell.org>
+
+ Implement the FIXME that ends an user action with a semicolon
+ if it seems necessary.
+ * src/scan-code.l (flex rules section): Flag cpp directive from
+ any `#' to the first unescaped end-of-line. Semicolon is not
+ needed after `;', `{', '}', or cpp directives and is needed after
+ any other token (whitespaces and comments have no effect).
+ * tests/actions.at (Fix user actions without a trailing semicolon):
+ New test.
+ * tests/input.at (AT_CHECK_UNUSED_VALUES): Add semicolons to
+ to make user actions complete statements.
+ Adjust column numbers in error messages.
+ * tests/regression.at (Fix user actions without a trailing semicolon):
+ Remove. Covered by new test.
+
+2008-12-07 Akim Demaille <demaille@gostai.com>
+
+ Update gnulib.
+ * gnulib: Update from master.
+
+2008-12-05 Eric Blake <ebb9@byu.net>
+
+ Avoid compiler warning.
+ * src/output.c (muscle_insert_item_number_table): Delete unused
+ function.
+
+2008-12-02 Eric Blake <ebb9@byu.net>
+
+ Build testsuite with newer autoconf.
+ * tests/output.at (m4_expand): Don't override in newer autoconf,
+ where the underlying implementation changed.
+ * tests/cxx-type.at (_AT_RESOLVED_GLR_OUTPUT)
+ (_AT_RESOLVED_GLR_OUTPUT_WITH_LOC, _AT_AMBIG_GLR_OUTPUT)
+ (_AT_AMBIG_GLR_OUTPUT_WITH_LOC, _AT_GLR_STDERR)
+ (_AT_VERBOSE_GLR_STDERR): Expand to double-quoted strings,
+ since some of them contain unbalanced ')'.
+
+2008-12-01 Akim Demaille <demaille@gostai.com>
+
+ Use b4_symbol for printers and destructors everywhere.
+ * data/bison.m4 (b4_symbol_action_location): New.
+ * data/c.m4 (b4_symbol_actions): Remove.
+ Adjust all callers to use by b4_symbol_foreach and the corresponding
+ b4_symbol_printer/destructor macro.
+ * data/glr.cc: Adjust.
+ * data/lalr1.java: Adjust the %destructor sanity check.
+ * src/output.c (symbol_code_props_output): Remove, we no longer
+ need the b4_symbol_printers/destructors tables.
+
+2008-12-01 Akim Demaille <demaille@gostai.com>
+
+ Use b4_symbol_case_.
+ * data/lalr1.cc, data/bison.m4 (b4_symbol_action): Use
+ b4_symbol_case_.
+
+2008-12-01 Akim Demaille <demaille@gostai.com>
+
+ Move b4_symbol based macro to bison.m4.
+ * data/lalr1.cc (b4_symbol_, b4_symbol, b4_symbol_if)
+ (b4_symbol_action, b4_symbol_destructor, b4_symbol_printer)
+ (b4_symbol_case_, b4_symbol_foreach, b4_type_action_)
+ (b4_type_foreach): Move to...
+ * data/bison.m4: Here.
+ * data/lalr1.cc (b4_symbol_action): Specialize for C++: use
+ b4_symbol_value_template instead of b4_symbol_value.
+
+2008-12-01 Akim Demaille <demaille@gostai.com>
+
+ b4_symbol/type_foreach.
+ * data/lalr1.cc (b4_symbol_foreach, b4_type_foreach): New.
+ Use them.
+
+2008-12-01 Akim Demaille <demaille@gostai.com>
+
+ Use the symbol properties to output the printer/destructor for lalr1.cc.
+ Instead of defining complex list of tuples to define various
+ properties of the symbols, we now prefer to define symbols as
+ "structs" in m4: using the symbol key (its number), and the
+ property name, b4_symbol gives it value. Use this to handle
+ destructors and printers.
+
+ * src/output.c (CODE_PROP): New.
+ (prepare_symbol_definitions): Use it to define the printer and
+ destructor related attributes of the symbols.
+ * data/lalr1.cc (b4_symbol_actions): Rename as...
+ (b4_symbol_action): this.
+ Use b4_symbol instead of 6 arguments.
+ (b4_symbol_printer, b4_symbol_destructor): New.
+ Use them instead of b4_symbol_actions.
+
+2008-12-01 Akim Demaille <demaille@gostai.com>
+
+ Avoid capturing variables too easily.
+ * src/muscle_tab.h (MUSCLE_INSERT_BOOL, MUSCLE_OBSTACK_SGROW): Use
+ v__ and p__ instead of v and p.
+
+2008-12-01 Akim Demaille <demaille@gostai.com>
+
+ Remove spurious empty line before syncline.
+ * data/bison.m4 (b4_syncline): Don't output an empty line before
+ the output.
+
+2008-11-26 Akim Demaille <demaille@gostai.com>
+
+ Convert lib/Makefile.am into lib/local.mk.
+ The real problem is rather gnulib.mk, which itself is extracted
+ from a Makefile.am that gnulib expects to the "recursive". The
+ tool prefix-gnulib-mk converts such a gnulib.mk to be
+ non-recursive. Also, some AC_SUBST variables need to be adjusted.
+
+ * etc/prefix-gnulib-mk: New.
+ * bootstrap (slurp): Use it to convert further gnulib.mk.
+ No longer try to avoid re-creation of lib/gnulib.mk as the changes
+ are deeper.
+ * lib/Makefile.am: Rename as...
+ * lib/local.mk: this.
+ Adjust to be prefixed.
+ * Makefile.am, configure.ac: Adjust.
+ * src/local.mk (AM_CPPFLAGS): Extend it, don't define it.
+
+2008-11-26 Akim Demaille <demaille@gostai.com>
+
+ s/_FLAGS/FLAGS/.
+ * tests/local.mk (TESTSUITE_FLAGS, AUTOTEST_FLAGS): Rename as...
+ (TESTSUITEFLAGS, AUTOTESTFLAGS): these to compy with the GCS.
+ Reported by Eric Blake.
+
+2008-11-26 Akim Demaille <demaille@gostai.com>
+
+ Use b4_parser_tables_define in glr.cc.
+ * data/glr.c: Use b4_parser_tables_define instead of defining the
+ (deterministic integral) tables by hand.
+
+2008-11-26 Akim Demaille <demaille@gostai.com>
+
+ Use b4_parser_tables_define in Java.
+ * data/java.m4 (b4_typed_parser_table): Rename as...
+ (b4_typed_parser_table_define): this, for consistency.
+ Accept a comment as $4.
+ Move $2 into yy*_.
+ (b4_integral_parser_table): Rename as...
+ (b4_integral_parser_table_define): this.
+ * data/lalr1.java: Adjust all uses.
+ Use b4_parser_tables_define instead of generation by hand.
+
+2008-11-26 Akim Demaille <demaille@gostai.com>
+
+ Prepare the convergence bw C style and Java table generation.
+ * data/bison.m4 (b4_tables_map, b4_tables_declare)
+ (b4_tables_define): Rename as...
+ (b4_integral_parser_tables_map, b4_parser_tables_declare)
+ (b4_parser_tables_define): these.
+ * data/c.m4 (b4_table_define): Rename as...
+ (b4_integral_parser_table_define): this.
+ * data/lalr1.cc: Adjust.
+ (b4_table_define, b4_table_declare): Rename as...
+ (b4_integral_parser_table_define)
+ (b4_integral_parser_table_declare): these.
+ (yyrline_): Move the comment where it is actually used.
+ * data/yacc.c: Adjust.
+ (yyrline): Use b4_integral_parser_table_define.
+
+2008-11-26 Akim Demaille <demaille@gostai.com>
+
+ Regen.
+ * src/parse-gram.h, src/parse-gram.c: Regen.
+
+2008-11-26 Akim Demaille <demaille@gostai.com>
+
+ Factor the generation of the (integral) tables bw yacc.c and lalr1.cc.
+ * data/lalr1.cc (b4_tables_map): Move to...
+ * data/bison.m4: here.
+ Update the comment for yytable during the flight.
+ (b4_tables_declare, b4_tables_define): New.
+ * data/lalr1.cc: Use them.
+ * data/c.m4 (b4_table_define): New.
+ * data/yacc.c: Use b4_tables_define instead of output the tables
+ by hand.
+ * tests/regression.at (Web2c Actions): Adjust the expected output,
+ the order of the tables changed.
+
+2008-11-26 Akim Demaille <demaille@gostai.com>
+
+ Get rid of (yy)rhs and (yy)prhs.
+ These tables are no longer needed in the parsers, and they don't seem to
+ be useful. They are not documented either.
+
+ * src/output.c (prepare_rules): Get rid of rhs and prhs.
+ Adjust the computation of (yy)r2.
+
+2008-11-26 Akim Demaille <demaille@gostai.com>
+
+ Rule length is unsigned.
+ * src/gram.h, src/gram.c (rule_rhs_length): Return a size_t.
+
+2008-11-26 Akim Demaille <demaille@gostai.com>
+
+ Get rid of lalr1-split.cc.
+ It was no longer maintainer.
+
+ * data/lalr1-split.cc: Remove.
+ * etc/bench.pl.in (bench_fusion_parser): Remove.
+ Adjust.
+
+2008-11-26 Akim Demaille <demaille@gostai.com>
+
+ Use yy* consistently.
+ * data/glr.c: Now that yyrhs no longer exists as a global
+ variable, rename local "rhs" variables into "yyrhs" for
+ consistency.
+
+2008-11-25 Akim Demaille <demaille@gostai.com>
+
+ Get rid of yyrhs and yyprhs in glr.c.
+ * data/glr.c (yyrhs, yyprhs): Remove.
+ Instead, use the state stack and yystos.
+
+2008-11-25 Akim Demaille <demaille@gostai.com>
+
+ Flag glr tests.
+ * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): If glr, declare it
+ as an Autotest keyword.
+
+2008-11-25 Akim Demaille <demaille@gostai.com>
+
+ Prefer TESTSUITE_FLAGS.
+ TESTSUITEFLAGS is barely readable.
+
+ * tests/local.mk (TESTSUITE_FLAGS): Default to $(TESTSUITEFLAGS)
+ for backward compatibility.
+ Use the former instead of the latter.
+
+2008-11-25 Akim Demaille <demaille@gostai.com>
+
+ Get rid of yyrhs and yyprhs in larl1.java.
+ * data/lalr1.java (yyrhs_, yyprhs_): Remove.
+ (yy_reduce_print): Rather, use yystos_ and the state stack.
+
+2008-11-25 Akim Demaille <demaille@gostai.com>
+
+ Formatting changes.
+
+2008-11-25 Akim Demaille <demaille@gostai.com>
+
+ Get rid of yyrhs and yyprhs in yacc.c.
+ They were used to get the symbol types, given a rule number, when
+ displaying the top of the stack before a reduction. But the
+ symbol type is available from the state stack. This has two be
+ benefits: two tables less in the parser (making it smaller), and a
+ more consistent use of the three stacks which will help to fuse
+ them.
+
+ * data/yacc.c (yyprhs, yyrhs): Remove.
+ (YY_REDUCE_PRINT): Pass yyssp to yy_reduce_print.
+ (yy_reduce_print): Take yyssp as argument.
+ Use it, together with yystos, to get the symbol type.
+ * tests/regression.at (Web2c Report): Remove these tables from the
+ expected output.
+
+2008-11-25 Akim Demaille <demaille@gostai.com>
+
+ b4_tables_map.
+ The point is to factor the generation of the tables across skeletons.
+ This is language dependant.
+
+ * data/c.m4 (b4_comment_): New.
+ Should be usable to define how to generate tables independently of
+ the language.
+ (b4_c_comment): New.
+ (b4_comment): Bounce to b4_c_comment.
+ Now support $2 = [PREFIX] for indentation.
+ * data/lalr1.cc (b4_table_declare): Don't output a comment if
+ there is no comment.
+ Indent it properly when there is one.
+ Output the ending semicolon.
+ (b4_table_define): Space changes.
+ Output the ending semicolon.
+ (b4_tables_map): New.
+ Use it twice instead of declaring and defining the (integral)
+ tables by hand.
+
+2008-11-25 Akim Demaille <demaille@gostai.com>
+
+ b4_table_declare.
+ * data/lalr1.cc (b4_table_declare): New.
+ Use it to declare the tables defined with b4_table_define.
+ (b4_table_define): Declare a third arg to match b4_table_declare
+ signature.
+ Move all the comments around invocations of b4_table_define into
+ the invocations itselves.
+ Move things around to have the order for declarations and
+ definitions.
+
+2008-11-25 Akim Demaille <demaille@gostai.com>
+
+ Formatting changes.
+ * data/lalr1.java: here.
+
+2008-11-25 Akim Demaille <demaille@gostai.com>
+
+ b4_args is more general than only C++.
+ * data/lalr1.cc (b4_args, _b4_args): Move to...
+ * data/bison.m4: here.
+
+2008-11-21 Di-an Jan <dianj@freeshell.org>
+
+ Implement no-XXX arguments for --warnings, --report, --trace.
+ * src/getargs.c (flags_argmatch): Handles no-XXX.
+ Fix typo in doxygen comment.
+
+2008-11-21 Akim Demaille <demaille@gostai.com>
+
+ Display the changes in cross-options.texi.
+ * build-aux/cross-options.pl ($sep): New, to separate items.
+ * doc/local.mk ($(CROSS_OPTIONS_TEXI)): Use diff to display the
+ changes.
+
+2008-11-20 Di-an Jan <dianj@freeshell.org>
+
+ Improves options in the manual.
+ * doc/bison.texinfo (-g, -x): Add space before argument.
+ (Option Cross Key): Implement FIXME: listing directives also.
+ * build-aux/cross-options.pl: Read from <STDIN> rather than <>.
+ (Short Option): Special case -d. Put arguments inside @option.
+ (Bison Directive): Add column, automatically extracted from
+ src/scan-gram.l (actual name passed as the first argument)
+ with special case for %define.
+ * doc/local.mk (doc/cross-options.texi): Pass src/scan-gram.l
+ to build-aux/cross-options.pl.
+ * src/getargs.c (usage): Document limitations of cross-options.pl.
+ * src/scan-gram.l: Likewise.
+
+2008-11-18 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Fix unexpanded macros in GLR defines file.
+ Reported by Csaba Raduly at
+ <http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00048.html>.
+ * THANKS (Csaba Raduly): Add.
+ * data/glr.c: Fix overquoting on b4_prefix for yylval and yylloc.
+ * tests/calc.at (_AT_DATA_CALC_Y): If %defines is specified, generate
+ lexer in a separate module that includes the defines file.
+ (AT_CHECK_CALC): From AT_FULL_COMPILE, request compilation of lexer
+ source.
+ * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_DEFINES_IF.
+ Adjust AT_LOC and AT_VAL to use AT_NAME_PREFIX.
+ (AT_BISON_OPTION_POPDEFS): Pop AT_DEFINES_IF.
+ (AT_DATA_SOURCE_PROLOGUE): New.
+ (AT_DATA_GRAMMAR_PROLOGUE): Use AT_DATA_SOURCE_PROLOGUE.
+ (AT_DATA_SOURCE): New.
+ (AT_FULL_COMPILE): Extend to support an additional source file.
+
+2008-11-18 Akim Demaille <demaille@gostai.com>
+
+ More TODO.
+ * TODO: More short term issues.
+
+2008-11-18 Akim Demaille <demaille@gostai.com>
+
+ Regen.
+ * src/parse-gram.h, src/parse-gram.c: Regen.
+
+2008-11-18 Akim Demaille <demaille@gostai.com>
+
+ Use b4_subtract where possible.
+ * data/lalr1.cc (b4_subtract): Move to...
+ * data/bison.m4: here.
+ * data/glr.c (b4_rhs_data): Use it.
+ * data/yacc.c (b4_rhs_value, b4_rhs_location): Use it.
+
+2008-11-18 Akim Demaille <demaille@gostai.com>
+
+ Remove incorrect mode specification.
+ * data/glr.cc: Don't pretend it's C code.
+
+2008-11-17 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Simplify last patch slightly.
+ * src/getargs.c (getargs): Here.
+
+2008-11-17 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Fix last warning from --enable-gcc-warnings.
+ * src/getargs.c (getargs): Don't assign const address to non-const
+ pointer.
+
+2008-11-17 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't let maintainer-*-check targets force a version update.
+ * cfg.mk (_is-dist-target): Implement. maintainer-check* was already
+ handled.
+
+2008-11-17 Di-an Jan <dianj@freeshell.org>
+
+ * doc/bison.texinfo: Synchronize ``Detail Node Listing''.
+ Align menus. Adjust word wrapping. Use node names for menu names.
+ (Examples): Don't abbreviate node names.
+ (LocalWords): Remove abbreviations.
+ (Copying): Make description a sentence.
+ (Java Action Features): Remove period to match the rest of menu.
+
+2008-11-17 Di-an Jan <dianj@freeshell.org>
+
+ Handles several --enable-gcc-warnings.
+ * src/getargs.c (command_line_location): Set parameters to void.
+ * src/output.c (symbol_type_name_cmp): Make static.
+ (symbols_by_type_name): Set parameters to void.
+ (symbol_definitions_output): Remove unused parameter. Rename as...
+ (prepare_symbol_definitions): this.
+ (muscles_output): Move symbol_definitions_output to...
+ (output): here as prepare_symbol_definitions.
+ * tests/c++.at (AT_CHECK_VARIANTS): Remove unused parameters of main.
+ (AT_CHECK_NAMESPACE): Make unused parameter lloc unnamed.
+
+2008-11-17 Di-an Jan <dianj@freeshell.org>
+
+ * tests/c++.at (AT_CHECK_VARIANTS): Fixes tests 198-202.
+ Use AT_DATA_GRAMMAR instead of AT_DATA for compiled tests.
+
+2008-11-16 Akim Demaille <demaille@gostai.com>
+
+ Add missing $(EXEEXT).
+ * doc/local.mk ($(CROSS_OPTIONS_TEXI)): The target is
+ "src/bison$(EXEEXT)".
+ Reported by Di-an Jan.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ * TODO: Update.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Formatting changes.
+ * tests/input.at: here.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Remove duplicate header inclusion.
+ * src/LR0.c: here.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ * src/parse-gram.h, src/parse-gram.c: Regen.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Support parametric types.
+
+ There are two issues to handle: first scanning nested angle
+ bracket pairs to support types such as std::pair< std::string,
+ std::list<std::string> > >.
+
+ Another issue is to address idiosyncracies of C++: do not glue two
+ closing angle brackets together (otherwise it's operator>>), and
+ avoid sticking blindly a TYPE to the opening <, as it can result
+ in '<:' which is a digraph for '['.
+
+ * src/scan-gram.l (brace_level): Rename as...
+ (nesting): this.
+ (SC_TAG): New.
+ Implement support for complex tags.
+ (tag): Accept
+ , but not <.
+ * data/lalr1.cc (b4_symbol_value, b4_symbol_value_template)
+ (b4_symbol_variant): Leave space around types as parameters.
+ * examples/variant.yy: Use nested template types and leading ::.
+ * src/parse-gram.y (TYPE, TYPE_TAG_ANY, TYPE_TAG_NONE, type.opt):
+ Rename as...
+ (TAG, TAG_ANY, TAG_NONE, tag.opt): these.
+ * tests/c++.at: Test parametric types.
+
+2008-11-15 Akim Demaille <akim@betelgeuse.gostai.ensta.fr>
+
+ Test token.prefix.
+ This is not sufficient, but we test at least that the make_SYMBOL
+ interface is not affected by token.prefix. A more general test
+ will be implemented when the support of token.prefix is generalized
+ to more skeletons.
+
+ * tests/c++.at: One more variant test, using token.prefix.
+
+2008-11-15 Akim Demaille <akim@betelgeuse.gostai.ensta.fr>
+
+ Test the make_TOKEN interface.
+ * tests/c++.at (AT_CHECK_VARIANTS): Require and use locations.
+ Factor the common code in yylex.
+ Use it to test "%define lex_symbol".
+
+2008-11-15 Akim Demaille <akim@betelgeuse.gostai.ensta.fr>
+
+ Formatting change.
+
+2008-11-15 Akim Demaille <akim@betelgeuse.gostai.ensta.fr>
+
+ Simplify code for variants bench marks.
+ * etc/bench.pl.in (&generate_grammar_list): Define and use
+ location_type.
+ Factor the common code in yylex.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Better error message.
+ * bootstrap (find_tool): Fix the error message.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Update variant.yy to newest interface.
+ * examples/variant.yy: Define lex_symbol.
+ Adjust.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Don't use locations in variant.yy.
+ * examples/variant.yy: Adjust to not using locations.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Comment changes.
+ * data/local.mk, etc/local.mk, examples/local.mk: Use Automake
+ comments for the license.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Remove tests/Makefile.am.
+ * tests/Makefile.am: Rename as...
+ * tests/local.mk: this.
+ * Makefile.am, configure.ac: Adjust.
+ * Makefile.am (DISTCLEANFILES): Define.
+ (maintainer-check, maintainer-xml-check, maintainer-push-check):
+ Remove, we no longer need to bounce to the real targets.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Comment changes.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ djgpp/local.mk.
+ * Makefile.am (EXTRA_DIST): Move djgpp related part to...
+ * djgpp/local.mk: this new file.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Remove doc/Makefile.am.
+ * doc/Makefile.am: Rename as...
+ * doc/local.mk: this.
+ Adjust paths
+ * Makefile.am, configure.ac: Adjust.
+ * Makefile.am (MOSTLYCLEANFILES): New.
+ * src/local.mk: Adjust.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Move sc_tight_scope into maint.mk.
+ It does not work, and I don't know how it was supposed to work: it
+ seems to be looking for sources in the build tree. I just moved
+ it at a better place, fixing it is still required.
+
+ * src/local.mk (echo): Remove.
+ (sc_tight_scope): Move to...
+ * maint.mk: here.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Regen.
+ * src/parse-gram.h, src/parse-gram.h: Regen.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Remove src/Makefile.am.
+ * src/Makefile.am: Rename as...
+ * src/local.mk: this.
+ Prefix all the paths with src/.
+ (AUTOMAKE_OPTIONS): Build object files in the sub dirs.
+ (AM_CPPFLAGS): Find find in builddir/src.
+ (YACC): Move the flags into...
+ (AM_YFLAGS): here.
+ * maint.mk (sc_tight_scope): Disable.
+ It used to bounce to the version in src/Makefile.am which is now
+ part of this very Makefile.
+ * Makefile.am, configure.ac: Adjust.
+ * src/scan-code-c.c, src/scan-code.l: We can no longer rely on
+ include "..." to find files "here": we are no longer in src/, so
+ qualify the includes with src/.
+ * doc/Makefile.am (PREPATH): No longer include the top_builddir
+ prefix.
+ (.x.1): Adjust to be able to create src/foo from the top level
+ Makefile, instead of going bounce to src/Makefile the creation of
+ foo.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Remove useless variable.
+ * doc/Makefile.am (srcsrcdir): Remove.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Remove data/Makefile.am.
+ * data/Makefile.am: Rename as...
+ * data/local.mk: this.
+ Adjust paths.
+ * Makefile.am, configure.ac: Adjust.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Remove etc/Makefile.am.
+ * etc/Makefile.am: Rename as...
+ * etc/local.mk: this.
+ Adjust.
+ * Makefile.am, configure.ac: Adjust.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Remove examples/local.mk.
+ examples/calc++/Makefile.am might be interesting to keep as is, since
+ it is an example in itself.
+
+ * examples/Makefile.am: Rename as...
+ * examples/local.mk: this.
+ Adjust.
+ * Makefile.am, configure.ac: Adjust.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Remove build-aux/Makefile.am.
+ Recursive Makefiles are really way too slow, let's get rid of some of
+ them.
+
+ * build-aux/Makefile.am: Rename as...
+ * build-aux/local.mk: this.
+ Adjust paths.
+ * Makefile.am, configure.ac: Adjust.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Provide convenience constructors for locations and positions.
+ * data/location.cc (position::position): Accept file, line and
+ column as arguments with default values.
+ Always qualify initial line and column literals as unsigned.
+ (location::location): Provide convenience constructors.
+
+2008-11-15 Akim Demaille <demaille@gostai.com>
+
+ Instead of using make_symbol<TOK_FOO>, generate make_FOO for each
+ token type.
+ Using template buys us nothing, and makes it uselessly complex to
+ construct a symbol. Besides, it could not be generalized to other
+ languages, while make_FOO would work in C/Java etc.
+
+ * data/lalr1.cc (b4_symbol_): New.
+ (b4_symbol): Use it.
+ (b4_symbol_constructor_declaration_)
+ (b4_symbol_constructor_definition_): Instead of generating
+ specializations of an overloaded template function, just generate
+ several functions whose names are forged from the token names
+ without the token.prefix.
+ (b4_symbol_constructor_declarations): Generate them for all the
+ symbols, not just by class of symbol type, now that instead of
+ specializing a function template by the token, we generate a
+ function named after the token.
+ (b4_symbol_constructor_specialization_)
+ (b4_symbol_constructor_specializations): Remove.
+ * etc/bench.pl.in: Adjust to this new API.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ %define token.prefix.
+ Provide a means to add a prefix to the name of the tokens as
+ output in the generated files. Because of name clashes, it is
+ good to have such a prefix such as TOK_ that protects from names
+ such as EOF, FILE etc. But it clutters the grammar itself.
+
+ * data/bison.m4 (token.prefix): Empty by default.
+ * data/c.m4 (b4_token_enum, b4_token_define): Use it.
+ * data/lalr1.cc (b4_symbol): Ditto.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ Compute at M4 time some of the subtractions.
+ * data/lalr1.cc (b4_subtract): New.
+ (b4_rhs_data): Use it.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ symbol::token.
+ This allows the user to get the type of a token returned by yylex.
+
+ * data/lalr1.cc (symbol::token): New.
+ (yytoknum_): Define when %define lex_symbol, independently of
+ %debug.
+ (yytoken_number_): Move into...
+ (symbol::token): here, since that's the only use.
+ The other one is YYPRINT which was not officially supported
+ by lalr1.cc, and anyway it did not work since YYPRINT uses this
+ array under a different name (yytoknum).
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ YYERRCODE.
+ * TODO (YYERRCODE): Mention the case of $undef.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ TODO: YYPRINT.
+ * TODO (YYPRINT): New.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ Comment changes.
+ * data/lalr1.cc, data/yacc.c: Fix the description of the
+ yytranslate and yytoknum tables.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ Define make_symbol in the header.
+ To reach good performances these functions should be inlined (yet
+ this is to measure precisely). To this end they must be available
+ to the caller.
+
+ * data/lalr1.cc (b4_symbol_constructor_definition_): Qualify
+ location_type with the class name.
+ Since will now be output in the header, declare "inline".
+ No longer use b4_symbol_constructor_specializations, but
+ b4_symbol_constructor_definitions in the header.
+ Don't call it in the *.cc file.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ Define yytranslate in the header for lex_symbol.
+ * data/lalr1.cc: Move the invocation of b4_yytranslate_definition
+ into the header file when using %define lex_symbol.
+ (yytranslate_): Declare inline.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ Define the constructors of symbol_type in
+ b4_symbol_constructor_definitions.
+ The constructors are called by the make_symbol functions, which a
+ forthcoming patch will move elsewhere. Hence the interest of
+ putting them together.
+
+ The stack_symbol_type does not need to be moved, it is used only
+ by the parser.
+
+ * data/lalr1.cc: Move symbol_type and symbol_base_type
+ constructors into...
+ (b4_symbol_constructor_definitions): here.
+ Adjust.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ Make it easier to move the definition of yytranslate_.
+ Forthcoming changes will make it possible to use yytranslate_
+ from outside the parser implementation file.
+
+ * data/lalr1.cc (b4_yytranslate_definition): New.
+ Use it.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ Remove useless class specification.
+ * data/lalr1.cc (b4_symbol_constructor_specialization_): No need
+ to refer to the class name to use a type defined by the class for
+ arguments of member functions.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ Finer input type for yytranslate.
+ This patch is debatable: the tradition expects yylex to return an int
+ which happens to correspond to token_number (which is an enum). This
+ allows for instance to return characters (such as '*' etc.). But this
+ goes against the stronger typing I am trying to have with the new
+ lex interface which return a symbol_type. So in this case, feed
+ yytranslate_ with a token_type.
+
+ * data/lalr1.cc (yytranslate_): When in %define lex-symbol,
+ expect a token_type.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ Honor lex-params in %define lex_symbol mode.
+ * data/lalr1.cc: Use b4_lex_param.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ Simplify names.
+ * src/output.c (symbol_definitions_output): Rename symbol
+ attributes type_name and has_type_name as type and has_type.
+ * data/lalr1.cc: Adjust uses.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ Use b4_type_names for the union type.
+ The union used to compute the size of the variant used to iterate
+ over the type of all the symbols, with a lot of redundancy. Now
+ iterate over the lists of symbols having the same type-name.
+
+ * data/lalr1.cc (b4_char_sizeof_): New.
+ (b4_char_sizeof): Use it.
+ Adjust to be called with a list of numbers instead of a single
+ number.
+ Adjust its caller for new-line issues.
+
+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ Define the "identifier" of a symbol.
+ Symbols may have several string representations, for instance if
+ they have an alias. What I call its "id" is a string that can be
+ used as an identifier. May not exist.
+
+ Currently the symbols which have the "tag_is_id" flag set are
+ those that don't have an alias. Look harder for the id.
+
+ * src/output.c (is_identifier): Move to...
+ * src/symtab.c (is_identifier): here.
+ * src/symtab.h, src/symtab.c (symbol_id_get): New.
+ * src/output.c (symbol_definitions_output): Use it to define "id"
+ and "has_id".
+ Remove the definition of "tag_is_id".
+ * data/lalr1.cc: Use the "id" and "has_id" whereever "tag" and
+ "tag_is_id" were used to produce code.
+ We still use "tag" for documentation.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Locations are no longer required by lalr1.cc.
+ * data/lalr1.cc (_b4_args, b4_args): New.
+ Adjust all uses of locations to make them optional.
+ * tests/c++.at (AT_CHECK_VARIANTS): No longer use the locations.
+ (AT_CHECK_NAMESPACE): Check the use of locations.
+ * tests/calc.at (_AT_DATA_CALC_Y): Adjust to be usable with or
+ without locations with lalr1.cc.
+ Test these cases.
+ * tests/output.at: Check lalr1.cc with and without location
+ support.
+ * tests/regression.at (_AT_DATA_EXPECT2_Y, _AT_DATA_DANCER_Y):
+ Don't use locations.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ AT_FULL_COMPILE.
+ * tests/local.at (AT_FULL_COMPILE): New.
+ * tests/actions.at, tests/calc.at, tests/regression.at: Use it.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Support parens in calc++.
+ * doc/bison.texinfo (Calc++ Scanner, Calc++ Parser): Support parens.
+ * examples/calc++/test (run): Check the expected output.
+ Adjust callers.
+ Check parens too.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Simplify lalr1.cc since %defines is mandatory.
+ * data/lalr1.cc: Remove useless calls to b4_defines_if.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ TODO: yyfmt.
+ * TODO (yysyntax_error): New item.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Prefer M4 to CPP.
+ * data/lalr1.cc: Use b4_error_verbose_if instead of #if
+ YYERROR_VERBOSE.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Support i18n of the parse error messages.
+ * TODO (lalr1.cc/I18n): Remove.
+ * data/lalr1.cc (yysyntax_error_): Support the translation of the
+ error messages, as done in yacc.c.
+ Stay within the yy* pseudo namespace.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ More TODO.
+ * TODO (single stack, yysyntax_error): New.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Make it possible to return a symbol_type from yylex.
+ * data/lalr1.cc (b4_lex_symbol_if): New.
+ (parse): When lex_symbol is defined, expected yylex to return the
+ complete lookahead.
+ * etc/bench.pl.in (generate_grammar_list): Extend to support this
+ yylex interface.
+ (bench_variant_parser): Exercise it.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Remove useless bench case.
+ * etc/bench.pl.in (bench_variant_parser): VARIANT_DESTROY is
+ no longer used.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Improve display of directives.
+ * etc/bench.pl.in (parse_term): Don't add useless eol.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Use string_cast in the bench.
+ * etc/bench.pl.in (generate_grammar_list): Define and use
+ string_cast.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Replace yychar with a Boolean.
+ * data/lalr1.cc (parse::yychar): Replace by...
+ (parse::yyempty): this.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Factor the tables.
+ * TODO: New item.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Let yytranslate handle the eof case.
+ * data/lalr1.cc (yytranslate_): Handle the EOF case.
+ Adjust callers.
+ No longer expect yychar to be equal to yyeof_, rather, test the
+ lookahead's (translated) kind.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ yychar cannot be empty in yyerrlab.
+ * TODO (yychar == yyempty_): New.
+ * data/lalr1.cc: Remove the handling of this case.
+ This eases forthcoming changes related to yychar and yytranslate.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Bench: syntactic sugar for %define/#define.
+ * etc/bench.pl.in (parse_dirs): Support %d and #d with arguments.
+ (&bench_push_parser, bench_variant_parser): Use this feature.
+ (&eat): New.
+ Use it.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Less memory pressure on the "list" bench.
+ * etc/bench.pl.in (generate_grammar_list): Do not accumulate all
+ the values, to limit memory pressure.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Introduce make_symbol.
+ make_symbol provides a means to construct a full symbol (kind,
+ value, location) in a single shot. It is meant to be a Symbol
+ constructor, parameterized by the symbol kind so that overloading
+ would prevent incorrect kind/value pairs. Unfortunately
+ parameterized constructors do not work well in C++ (unless the
+ parameter also appears as an argument, which is not acceptable),
+ hence the use of a function instead of a constructor.
+
+ * data/lalr1.cc (b4_symbol_constructor_declaration_)
+ (b4_symbol_constructor_declarations)
+ (b4_symbol_constructor_specialization_)
+ (b4_symbol_constructor_specializations)
+ (b4_symbol_constructor_definition_)
+ (b4_symbol_constructor_definitions): New.
+ Use them where appropriate to generate declaration, declaration of
+ the specializations, and implementations of the templated
+ overloaded function "make_symbol".
+ (variant::variant): Always define a default ctor.
+ Also provide a copy ctor.
+ (symbol_base_type, symbol_type): New ctor overloads for value-less
+ symbols.
+ (symbol_type): Now public, so that functions such as yylex can use
+ it.
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Inform m4 whether a tag is a valid id.
+ * src/output.c (is_identifier): New.
+ (symbol_definitions_output): Use it to define tag_is_id.
+ But maybe this should be done at m4 level?
+
+2008-11-11 Akim Demaille <demaille@gostai.com>
+
+ Test 214 was failing: it greps with a pattern containing [ ]*
+ which obviously meant to catch spaces and tabs, but contained only
+ spaces. Tabulations in sources are a nuisance, so to simplify the
+ matter, get rid of all the tabulations in the Java sources. The
+ other skeletons will be treated equally later.
+
+ * data/java.m4, data/lalr1.java: Untabify.
+ * tests/java.at: Simplify AT_CHECK_JAVA_GREP invocations:
+ tabulations are no longer generated.
+
+2008-11-11 Paolo Bonzini <bonzini@gnu.org>
+
+ * bootstrap.conf: Replace m4/warning.m4 with warnings module.
+ * configure.ac: Adjust usage.
+ * lib/Makefile.am: Replace $(WARNING_CFLAGS) with $(WARN_CFLAGS).
+ * src/Makefile.am: Replace $(WARNING_CFLAGS) with $(WARN_CFLAGS).
+ * tests/atlocal.in: Replace $(WARNING_*FLAGS) with $(WARN_*FLAGS).
+
+2008-11-10 Di-an Jan <dianj@freeshell.org>
+
+ Workaround Java's ``code too large'' problem for parser tables
+ in most cases, by using one function per initialization.
+ * data/java.m4 (b4_typed_parser_table, b4_integral_parser_table): New.
+ * data/lalr1.java (yypact_, yydefact_, yypgoto_, yydefgoto_,
+ yytable_, yycheck_, yystos_, yytoken_number_, yyr1_, yyr2_, yyrhs_
+ yyprhs_, yyrline_, yytranslate_table_): Use b4_integral_parser_table.
+ (yytname_): Use b4_typed_parser_table.
+ * doc/bison.texinfo (Java Bison Interface): Add note on Java's
+ ``code too large'' error.
+
+2008-11-10 Di-an Jan <dianj@freeshell.org>
+
+ * NEWS: Document them.
+
+ General Java skeleton improvements.
+ * configure.ac (gt_JAVACOMP): Request target of 1.4, which allows
+ using gcj < 4.3 in the testsuite, according to comments in
+ gnulib/m4/javacomp.m4.
+ * data/java.m4 (stype, parser_class_name, lex_throws, throws,
+ location_type, position_type): Remove extraneous brackets from
+ b4_percent_define_default.
+ (b4_lex_param, b4_parse_param): Remove extraneous brackets from
+ m4_define and m4_define_default.
+ * data/lalr1.java (b4_pre_prologue): Change to b4_user_post_prologue,
+ which marks the end of user code with appropriate syncline, like all
+ the other skeletons.
+ (b4_user_post_prologue): Add. Don't silently drop.
+ (yylex): Remove.
+ (parse): Inline yylex.
+ * doc/bison.texinfo (bisonVersion, bisonSkeleton): Document.
+ (%{...%}): Fix typo of %code imports.
+ * tests/java.at (AT_JAVA_COMPILE): Add "java" keyword.
+
+ Support annotations on parser class with %define annotations.
+ * data/lalr1.java (annotations): Add to parser class modifier.
+ * doc/bison.texinfo (Java Parser Interface): Document
+ %define annotations.
+ (Java Declarations Summary): Document %define annotations.
+ * tests/java.at (Java parser class modifiers): Test annotations.
+
+ Do not generate code for %error-verbose unless requested.
+ * data/lalr1.java (errorVerbose): Rename to yyErrorVerbose.
+ Make private. Make conditional on %error-verbose.
+ (getErrorVerbose, setErrorVerbose): New.
+ (yytnamerr_): Make conditional on %error-verbose.
+ (yysyntax_error): Make some code conditional on %error-verbose.
+ * doc/bison.texinfo (Java Bison Interface): Remove the parts
+ about %error-verbose having no effect.
+ (getErrorVerbose, setErrorVerbose): Document.
+
+ Move constants for token names to Lexer interface.
+ * data/lalr1.java (Lexer): Move EOF, b4_token_enums(b4_tokens) here.
+ * data/java.m4 (b4_token_enum): Indent for move to Lexer interface.
+ (parse): Qualify EOF to Lexer.EOF.
+ * doc/bison.texinfo (Java Parser Interface): Move documentation of
+ EOF and token names to Java Lexer Interface.
+ * tests/java.at (_AT_DATA_JAVA_CALC_Y): Remove Calc qualifier.
+
+ Make yyerror public.
+ * data/lalr1.java (Lexer.yyerror): Use longer parameter name.
+ (yyerror): Change to public. Add Javadoc comments. Use longer
+ parameter names. Make the body rather than the declarator
+ conditional on %locations.
+ * doc/bison.texinfo (yyerror): Document. Don't mark as protected.
+
+ Allow user to add code to the constructor with %code init.
+ * data/java.m4 (b4_init_throws): New, for %define init_throws.
+ * data/lalr1.java (YYParser.YYParser): Add b4_init_throws.
+ Add %code init to the front of the constructor body.
+ * doc/bison.texinfo (YYParser.YYParser): Document %code init
+ and %define init_throws.
+ (Java Declarations Summary): Document %code init and
+ %define init_throws.
+ * tests/java.at (Java %parse-param and %lex-param): Adjust grep.
+ (Java constructor init and init_throws): Add tests.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Update TODO.
+ * TODO (-D): is implemented.
+ (associativity): Same precedence must have the same associativity.
+ For instance, how can a * b / c be parsed if * is %left and / is
+ %right?
+ (YYERRORCODE, YYFAIL, YYBACKUP): New.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Formatting changes.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ More information about the symbols.
+ * src/output.c (type_names_output): Document all the symbols,
+ including those that don't have a type-name.
+ (symbol_definitions_output): Define "is_token" and
+ "has_type_name".
+ * data/lalr1.cc (b4_type_action_): Skip symbols that have an empty
+ type-name, now that they are defined too in b4_type_names.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Regen.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Make parser::yytranslate static.
+ Small speedup (1%) on the list grammar. And makes yytranslate_
+ available in non member functions.
+
+ * data/lalr1.cc (yytranslate_): Does not need to be a instance
+ function.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Avoid trailing spaces.
+ * data/c.m4: b4_comment(TEXT): Don't indent empty lines.
+ * data/lalr1.cc: Don't indent before rule and symbol actions, as
+ they can be empty, and anyway this incorrectly indents the first
+ action.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Comment changes.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Use "enum" for integral constants.
+ This is just nicer to read, I observed no speedup.
+
+ * data/lalr1.cc (yyeof_, yylast_, yynnts_, yyempty_, yyfinal_)
+ (yterror_, yyerrcode_, yyntokens_): Define as members of an enum.
+ (yyuser_token_number_max_, yyundef_token_): Move into...
+ (yytranslate_): here.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Shortcuts in bench directives.
+ * etc/bench.pl.in (parse_dirs): New.
+ Use it.
+ (bench_variant_parser, bench_fusion_parser): Use %s and %d.
+ Create the benches in "benches/".
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Formatting changes.
+ * data/lalr1.cc: here.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Adjust verbose message to using emacs.
+ * etc/bench.pl.in: Inform compilation-mode when we change the
+ directory.
+ (generate_grammar_list): Recognize %define "variant" in addition
+ to %define variant.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Classify symbols by type-name.
+ * src/uniqstr.h (UNIQSTR_CMP): New.
+ * src/output.c (symbol_type_name_cmp, symbols_by_type_name)
+ (type_names_output): New.
+ (muscles_output): Use it.
+ * data/lalr1.cc (b4_symbol_action_): Remove.
+ (b4_symbol_case_, b4_type_action_): New.
+ Adjust uses of b4_symbol_action_ to use b4_type_action_.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Change the handling of the symbols in the skeletons.
+ Before we were using tables which lines were the symbols and which
+ columns were things like number, tag, type-name etc. It is was
+ difficult to extend: each time a column was added, all the numbers had
+ to be updated (you asked for colon $2, not for "tag"). Also, it was
+ hard to filter these tables when only a subset of the symbols (say the
+ tokens, or the nterms, or the tokens that have and external number
+ *and* a type-name) was of interest.
+
+ Now instead of monolithic tables, we define one macro per cell. For
+ instance "b4_symbol(0, tag)" is a macro name which contents is
+ self-decriptive. The macro "b4_symbol" provides easier access to
+ these cells.
+
+ * src/output.c (type_names_output): Remove.
+ (symbol_numbers_output, symbol_definitions_output): New.
+ (muscles_output): Call them.
+ (prepare_symbols): Define b4_symbols_number.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ --trace=muscles
+ * src/getargs.h, src/getargs.c (trace_muscle): New.
+ (trace_types, trace_args): Support it.
+ * src/output.c (output_skeleton): Use it.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ muscles_output.
+ * src/output.c (muscles_output): New, extracted from...
+ (output_skeleton): here.
+ Adjust.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Formatting changes.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Update the variant example.
+ * examples/variant.yy: Formatting changes.
+ One stage build.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Support constructor with an argument.
+ This improves the "list" bench by 2%.
+
+ * data/lalr1.cc (variant::build): Add an overloaded version with
+ an argument.
+ * tests/c++.at (AT_CHECK_VARIANT): Check it.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Test variants.
+ * tests/c++.at (AT_CHECK_VARIANTS): New.
+ Use it with and without %define assert.
+
+2008-11-10 Akim Demaille <demaille@gostai.com>
+
+ Add %precedence support.
+ Unfortunately it is not possible to reuse the %prec directive. This
+ is because to please POSIX, we do not require to end the rules with a
+ semicolon. As a result,
+
+ foo: bar %prec baz
+
+ is ambiguous: either a rule which precedence is that of baz, or a rule,
+ and then a declaration of the precedence of the token baz.
+
+ * doc/bison.texinfo: Document %precedence.
+ (Precedence Only): New.
+ * src/assoc.h, src/assoc.c (precedence_assoc): New.
+ * src/conflicts.c (resolve_sr_conflict): Support it.
+ * src/scan-gram.l, src/parse-gram.y (%precedence): New token.
+ Parse it.
+ * tests/calc.at: Use %precedence for NEG.
+ * tests/conflicts.at (%precedence does not suffice)
+ (%precedence suffices): New tests.
+
+2008-11-09 Akim Demaille <demaille@gostai.com>
+
+ Make benches in a sub dirs.
+ * etc/bench.pl.in ($dir): New.
+ Use it.
+ Check the use of constructors with an argument.
+ (bench_variant_parser): Fix.
+
+2008-11-09 Akim Demaille <demaille@gostai.com>
+
+ fix eof condition
+
2008-11-09 Akim Demaille <demaille@gostai.com>
Fix --help.
2008-11-09 Akim Demaille <demaille@gostai.com>
Rely on the state stack to display reduction traces.
- To display rhs symbols before a reduction, we used information about the rule
- reduced, which required the tables yyrhs and yyprhs. Now use rely only on the
- state stack to get the same information.
-
+ To display rhs symbols before a reduction, we used information
+ about the rule reduced, which required the tables yyrhs and
+ yyprhs. Now use rely only on the state stack to get the same
+ information.
+
* data/lalr1.cc (b4_rhs_data, b4_rhs_state): New.
Use them.
(parser::yyrhs_, parser::yyprhs_): Remove.
Avoid empty-if warnings.
Reported by Quentin Hocquet.
-
+
* data/lalr1-fusion.cc (YY_SYMBOL_PRINT, YY_REDUCE_PRINT)
(YY_STACK_PRINT): Provide some contents even when !YYDEBUG.
This is used to help the user catch cases where some value gets
ovewritten by a new one. This should not happen, as this will
probably leak.
-
+
Unfortunately this uncovered a bug in the C++ parser itself: the
lookahead value was not destroyed between two calls to yylex. For
instance if the previous lookahead was a std::string, and then an int,
then the value of the std::string was correctly taken (i.e., the
lookahead was now an empty string), but std::string structure itself
was not reclaimed.
-
+
This is now done in variant::build(other&) (which is used to take the
value of the lookahead): other is not only stolen from its value, it
is also destroyed. This incurs a new performance penalty of a few
percent, and union becomes faster again.
-
+
* data/lalr1-fusion.cc (variant::build(other&)): Destroy other.
(b4_variant_if): New.
(variant::built): New.
Make variant.yy more complex.
std::list cannot be copied via memcpy, they are more demanding than
std::string. Use one std::list to strengthen the test.
-
+
* examples/variant.yy: Use lalr1-fusion.cc, not lalr1.cc.
Adjust.
Create a list of strings, instead of a single large string.
2008-11-03 Akim Demaille <demaille@gostai.com>
Fuse the three stacks into a single one.
- In order to make it easy to perform benchmarks to ensure that there are no
- performance loss, lalr1.cc is forked into lalr1-fusion.cc. Eventually,
- lalr1-fusion.cc will replace lalr1.cc.
-
- Meanwhile, to make sure that lalr1-fusion.cc is correctly exercized by the
- test suite, the user must install a symbolic link from lalr1.cc to it.
-
- Instead of having three stacks (state, value, location), use a stack
- of triples. This considerably simplifies the code (and it will be
- easier not to require locations as currently does the C++ parser),
- and also gives a 10% speedup according to etc/bench (probably mainly since
- memory allocation is done once instead of three times).
-
+
+ In order to make it easy to perform benchmarks to ensure that
+ there are no performance loss, lalr1.cc is forked into
+ lalr1-fusion.cc. Eventually, lalr1-fusion.cc will replace
+ lalr1.cc.
+
+ Meanwhile, to make sure that lalr1-fusion.cc is correctly
+ exercized by the test suite, the user must install a symbolic link
+ from lalr1.cc to it.
+
+ Instead of having three stacks (state, value, location), use a
+ stack of triples. This considerably simplifies the code (and it
+ will be easier not to require locations as currently does the C++
+ parser), and also gives a 10% speedup according to
+ etc/bench (probably mainly since memory allocation is done once
+ instead of three times).
+
Another motivation is to make it easier to destruct properly
semantic values: now that they are bound to their state (hence
symbol type) it will be easier to call the appropriate destructor.
-
+
These changes should probably benefit the C parser too.
-
- * data/lalr1.cc: Copy as... * data/lalr1-fusion.cc: this new
- file.
+
+ * data/lalr1.cc: Copy as...
+ * data/lalr1-fusion.cc: this new file.
(b4_rhs_value, b4_rhs_location): New definitions overriding those
from c++.m4.
(state_stack_type, semantic_stack_type, location_stack_type)
Push the state, value, and location at the same time.
This is needed to prepare a forthcoming patch that fuses the three
stacks into one.
-
+
* data/lalr1.cc (parser::yypush_): New.
(parser::yynewstate): Change the semantics: instead of arriving to
this label when value and location have been pushed, but yystate
2008-11-03 Akim Demaille <demaille@gostai.com>
Use variants to support objects as semantic values.
- This patch was inspired by work by Michiel De Wilde. But he used Boost
- variants which (i) requires Boost on the user side, (ii) is slow, and
- (iii) has useless overhead (the parser knows the type of the semantic value
- there is no reason to duplicate this information as Boost.Variants do).
-
- This implementation reserves a buffer large enough to store the largest
- objects. yy::variant implements this buffer. It was implemented with
- Quentin Hocquet.
-
+ This patch was inspired by work by Michiel De Wilde. But he used
+ Boost variants which (i) requires Boost on the user side, (ii) is
+ slow, and (iii) has useless overhead (the parser knows the type of
+ the semantic value there is no reason to duplicate this
+ information as Boost.Variants do).
+
+ This implementation reserves a buffer large enough to store the
+ largest objects. yy::variant implements this buffer. It was
+ implemented with Quentin Hocquet.
+
* src/output.c (type_names_output): New.
(output_skeleton): Invoke it.
* data/c++.m4 (b4_variant_if): New.
Parameterize the extraction of semantic values.
To make future changes easier, no longer rely on ".TYPE" being the
way to get a semantic value.
-
+
* data/c.m4 (b4_symbol_value): New.
Use it.
* data/c++.m4, data/yacc.c: Use it.
2008-08-29 Akim Demaille <demaille@gostai.com>
Clarify UPDATED use.
- * doc/bison.texinfo: It refers to the last edition of this file,
+ * doc/bison.texinfo: It refers to the last edition of this file,
not to the release date of Bison.
- Reported by Joel E. Denny.
+ Reported by Joel E. Denny.
2008-08-29 Akim Demaille <demaille@gostai.com>
2008-08-27 Akim Demaille <demaille@gostai.com>
Check yyerrok in calc.at.
- * tests/calc.at (calc.y): Use yyerrok on "( error )".
- (AT_CHECK_CALC): Add a check that ensures that yyerrok works as
- expected.
+ * tests/calc.at (calc.y): Use yyerrok on "( error )".
+ (AT_CHECK_CALC): Add a check that ensures that yyerrok works as
+ expected.
2008-08-27 Akim Demaille <demaille@gostai.com>
Support yyerrok in lalr1.cc.
YYBACKUP is still to import back into lalr1.cc.
- * data/lalr1.cc (yyerrork, yyclearin, YYRECOVERING): Define.
+ * data/lalr1.cc (yyerrork, yyclearin, YYRECOVERING): Define.
2008-08-26 Joel E. Denny <jdenny@ces.clemson.edu>
-----
Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996,
- 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
- Free Software Foundation, Inc.
+ 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+ 2008, 2009 Free Software Foundation, Inc.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice and this