+2008-11-03 Akim Demaille <demaille@gostai.com>
+
+ Improve genericity of bench.pl.
+ * etc/bench.pl.in (&bench_grammar): Take the set of benches as
+ argument.
+ (&bench_push_parser): New.
+ Call it.
+
+2008-11-03 Akim Demaille <demaille@gostai.com>
+
+ Add documentation to bench.pl.
+ * etc/bench.pl.in: Comment changes.
+
+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).
+
+ 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.
+ (b4_rhs_value, b4_rhs_location): New definitions overriding those
+ from c++.m4.
+ (state_stack_type, semantic_stack_type, location_stack_type)
+ (yystate_stack_, yysemantic_stack_, yylocation_stack_): Remove.
+ (data_type, stack_type, yystack_): New.
+ (YYLLOC_DEFAULT, yypush_): Adjust.
+ (yyerror_range): Now based on data_type, not location_type.
+
+2008-11-03 Akim Demaille <demaille@gostai.com>
+
+ 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
+ is to be pushed on the state stack, now the three of them must
+ have been pushed before. yystate still must be the new state.
+ This allows to use yypush_ everywhere instead of individual
+ handling of the stacks.
+
+2008-11-03 Akim Demaille <demaille@gostai.com>
+
+ Prefer references to pointers.
+ * data/lalr1.cc (b4_symbol_actions): New, overrides the default C
+ definition to use references instead of pointers.
+ (yy_symbol_value_print_, yy_symbol_print_, yydestruct_):
+ Take the value and location as references.
+ Adjust callers.
+
+2008-11-03 Akim Demaille <demaille@gostai.com>
+
+ stack::size instead of stack::height.
+ * data/lalr1.cc (stack::height): Rename as...
+ (stack::size): this.
+ Fix the output type.
+ Comment changes.
+
+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.
+
+ * src/output.c (type_names_output): New.
+ (output_skeleton): Invoke it.
+ * data/c++.m4 (b4_variant_if): New.
+ (b4_symbol_value): If needed, provide a definition for variants.
+ * data/lalr1.cc (b4_symbol_value, b4_symbol_action_)
+ (b4_symbol_variant, _b4_char_sizeof_counter, _b4_char_sizeof_dummy)
+ (b4_char_sizeof, yy::variant): New.
+ (parser::parse): If variants are requested, define
+ parser::union_type, parser::variant, change the definition of
+ semantic_type, construct $$ before running the user action instead
+ of performing a default $$ = $1.
+ * examples/variant.yy: New.
+ Based on an example by Michiel De Wilde.
+
+2008-11-03 Akim Demaille <demaille@gostai.com>
+
+ 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.
+ * data/glr.c: Use b4_symbol_value.
+ (b4_rhs_data): New.
+ Use it.
+
+2008-11-03 Akim Demaille <demaille@gostai.com>
+
+ Prepare easier M4 changes.
+ * data/lalr1.cc: Use escaped [] instead of literals to prepare
+ future changes.
+
+2008-11-02 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Initiate further development.
+ * NEWS: Create an empty section for new entries.
+ * gnulib: Update submodule to HEAD.
+
+2008-11-02 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * NEWS: Version 2.4.
+
+2008-11-02 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Prepare for next release.
+ * NEWS: Briefly mention changes since 2.3b.
+ * README: Say GNU m4 1.4.6, which we've been requiring in release
+ announcements already, not 1.4.3, which breaks the build.
+
+2008-11-02 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Say %language is experimental.
+ We're thinking of extending it's effect on output file naming. See the
+ thread at
+ <http://lists.gnu.org/archive/html/bison-patches/2008-10/msg00003.html>.
+ * NEWS: Say it's experimental.
+ * doc/bison.texinfo (Decl Summary): Say it's experimental, and so don't
+ recommend it over %skeleton for now.
+ (Bison Options): Likewise.
+ (C++ Bison Interface): Use %skeleton not %language.
+ (Calc++ Parser): Use %skeleton not %language.
+ * src/getargs.c (usage): Say it's experimental.
+
+2008-11-01 Di-an Jan <dianj@freeshell.org>
+ Paolo Bonzini <bonzini@gnu.org>
+
+ Support all Java parser class modifiers.
+ * data/java.m4 (b4_percent_define_get3): New.
+ (b4_final_if, b4_strictfp_if): New.
+ * data/lalr1.java (final, strictfp, extends, implements): Support.
+ * doc/bison.texinfo (final, strictfp, extends, implements): Add
+ documentation.
+ * tests/java.at (AT_CHECK_JAVA_MINIMAL): New.
+ (AT_CHECK_JAVA_MINIMAL_W_LEXER): New.
+ (AT_CHECK_JAVA_GREP): New.
+ (Java parser class modifiers): New test.
+ (Java parser class extends and implements): New test.
+
+ Model exception propagation better with throws and lex_throws.
+ * data/java.m4 (b4_list2): New.
+ (throws): Change default.
+ * data/lalr1.java (yyaction): Add throws.
+ (parse): Add lex_throws in addition to throws.
+ * doc/bison.texinfo (throws, lex_throws): Add documentation.
+ * tests/java.at (Java throws specifications): New test.
+
+ Improve documentation for Java parsers.
+ * doc/bison.texinfo (Java Parsers): Add subsections.
+ Don't quote first argument of %define.
+ (Java Bison Interface): Document output files. Move documentation
+ of parser class and merge into Java Parser Interface. Document
+ features that error out. Document directives with no effect.
+ Move note about Javadoc higher.
+ (Java Semantic Values): Explicitly mention stype.
+ Document that generic types cannot be used.
+ (Java Location Values): Use @deftypeivar. Document constructors.
+ Correct return value for toString.
+ (Java Parser Interface): List undocumented constants/fields.
+ Move documentation of fields added by %parse-param closer to list
+ of members. Document that token names are added as fields.
+ Document constructors accurately. Remove error method.
+ (Java Scanner Interface): Move note on %pure-parser to Java Bison
+ Interface. Describe %code lexer and yylex accutately.
+ Remove documentation that does not match the code.
+ (Java Action Features): New.
+ (Java Differences): Add reference. Add item on semantic values.
+ Add note about @{ ... @}. Clarify %% epilogue placement.
+ (Java Declarations Summary): New.
+
+ Fix Java skeleton.
+ * data/java.m4 (b4_prefix): Correct quoting for m4_define_default.
+ (b4_remove_comma): Quote test argument.
+ (b4_identification): Remove "bison" field.
+ * tests/java.at (Java parser class and package names): New test.
+ (Java %parse-param and %lex-param): New test.
+ (Java stype, position_class and location_class): New test.
+
+2008-10-31 Di-an Jan <dianj@freeshell.org>
+
+ * data/lalr1.jave: Update copyright years.
+ (YYParser): Correct name of "generated from" file in Javadoc:
+ use b4_file_name instead of @ofile@.
+ (Location constructor): Correct Javadoc parameter name.
+ (yylloc): Add missing opening m4 quote after b4_location_if.
+ This removes a stray [ in the Javadoc of Lexer.getStartPos.
+ (Lexer.yyerror): Fix incorrect m4 and Javadoc.
+ (YYParser constructor): Correct Javadoc parameter name.
+
+2008-10-30 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Always put auxiliary code files in the same dir as other output files.
+ * src/files.c (compute_file_name_parts): When the user specifies
+ --output but not --file-prefix, extract the directory prefix from the
+ file prefix not from the grammar file name. This affects the location
+ of files like location.hh generated by the C++ skeleton. The includes
+ in the other output files require this fix.
+ * tests/output.at (AT_CHECK_OUTPUT): Automatically create directories
+ for expected output files.
+ (Output files): Add a test for the above.
+
2008-10-29 Joel E. Denny <jdenny@ces.clemson.edu>
* gnulib: Update submodule to HEAD.