X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/deef2a0a4d97b580fe45a02da328b94ce32538b1..11c073b7e53fb82c67f1adf8cd7c2e60b7518729:/ChangeLog diff --git a/ChangeLog b/ChangeLog index f75739c6..ec89f00d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1565 @@ +2009-03-26 Akim Demaille + + 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 + + Comment changes. + +2009-03-02 Akim Demaille + + Share b4_yytranslate_define. + * data/lalr1.cc (b4_yytranslate_define): Move to... + * data/c++.m4: here. + +2009-03-02 Akim Demaille + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + Upgrade gnulib. + * gnulib: Upgrade from master. + * lib/.cvsignore, lib/.gitignore, m4/.cvsignore, m4/.gitignore: + Regen. + +2009-02-25 Akim Demaille + + Remove useless arguments. + * data/glr.c (yy_reduce_print): $$ and @$ are not used and not + relevant. + +2009-02-25 Akim Demaille + + Comment changes. + * data/lalr1.cc: here. + +2009-02-25 Akim Demaille + + 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 + + Copyright years. + * data/glr.c: Add 2007 and 2008 here, consistenly with the comments. + +2009-02-25 Akim Demaille + + Style changes. + * etc/bench.pl.in (generate_grammar_list): Consitently use + location_type, not yy::location. + +2009-02-25 Akim Demaille + + Comment change. + * data/lalr1.cc: here. + +2009-02-19 Akim Demaille + + 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 + + Comment changes. + * data/glr.cc: here. + +2009-02-19 Akim Demaille + + 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 + + Use b4_c_modern. + * data/c.m4 (b4_c_function_decl): Here. + +2009-02-19 Akim Demaille + + Comment changes. + * data/lalr1.cc: here. + +2009-02-19 Akim Demaille + + Extract variant.hh + * data/variant.hh: New, extracted from... + * data/lalr1.cc: here. + Adjust. + * data/local.mk: Adjust. + +2009-02-19 Akim Demaille + + 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 + + Add reminder about uploading public key to keys.gnupg.net. + * HACKING (Release Procedure): Here. + +2009-01-28 Akim Demaille + + * NEWS: Update information about 2.4.1 and 2.4.2. + +2008-11-04 Akim Demaille + + Reformat NEWS. + * NEWS: Use more outline-mode markup. + Suggested by Jim Meyering. + +2009-01-08 Akim Demaille + + 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 + + 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 + + Formatting changes. + * data/glr.c: Formatting changes. + +2008-12-11 Akim Demaille + + 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 + + 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 + + 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 + + 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 + + Update data/README. + * data/README: Document glr.cc, lalr1.java, m4sugar and xslt. + +2008-12-08 Akim Demaille + + 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 + + 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 + + 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 + + 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 + + Update gnulib. + * gnulib: Update from master. + +2008-12-05 Eric Blake + + Avoid compiler warning. + * src/output.c (muscle_insert_item_number_table): Delete unused + function. + +2008-12-02 Eric Blake + + 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 + + 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 + + Use b4_symbol_case_. + * data/lalr1.cc, data/bison.m4 (b4_symbol_action): Use + b4_symbol_case_. + +2008-12-01 Akim Demaille + + 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 + + b4_symbol/type_foreach. + * data/lalr1.cc (b4_symbol_foreach, b4_type_foreach): New. + Use them. + +2008-12-01 Akim Demaille + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + Regen. + * src/parse-gram.h, src/parse-gram.c: Regen. + +2008-11-26 Akim Demaille + + 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 + + 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 + + Rule length is unsigned. + * src/gram.h, src/gram.c (rule_rhs_length): Return a size_t. + +2008-11-26 Akim Demaille + + 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 + + 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 + + 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 + + Flag glr tests. + * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): If glr, declare it + as an Autotest keyword. + +2008-11-25 Akim Demaille + + 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 + + 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 + + Formatting changes. + +2008-11-25 Akim Demaille + + 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 + + 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 + + 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 + + Formatting changes. + * data/lalr1.java: here. + +2008-11-25 Akim Demaille + + 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 + + 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 + + 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 + + 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 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 + + Fix unexpanded macros in GLR defines file. + Reported by Csaba Raduly at + . + * 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 + + More TODO. + * TODO: More short term issues. + +2008-11-18 Akim Demaille + + Regen. + * src/parse-gram.h, src/parse-gram.c: Regen. + +2008-11-18 Akim Demaille + + 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 + + Remove incorrect mode specification. + * data/glr.cc: Don't pretend it's C code. + +2008-11-17 Joel E. Denny + + Simplify last patch slightly. + * src/getargs.c (getargs): Here. + +2008-11-17 Joel E. Denny + + 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 + + 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 + + * 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 + + 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 + + * 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 + + 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 + + * TODO: Update. + +2008-11-15 Akim Demaille + + Formatting changes. + * tests/input.at: here. + +2008-11-15 Akim Demaille + + Remove duplicate header inclusion. + * src/LR0.c: here. + +2008-11-15 Akim Demaille + + * src/parse-gram.h, src/parse-gram.c: Regen. + +2008-11-15 Akim Demaille + + 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 > >. + + 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 + + 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 + + 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 + + Formatting change. + +2008-11-15 Akim Demaille + + 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 + + Better error message. + * bootstrap (find_tool): Fix the error message. + +2008-11-15 Akim Demaille + + Update variant.yy to newest interface. + * examples/variant.yy: Define lex_symbol. + Adjust. + +2008-11-15 Akim Demaille + + Don't use locations in variant.yy. + * examples/variant.yy: Adjust to not using locations. + +2008-11-15 Akim Demaille + + Comment changes. + * data/local.mk, etc/local.mk, examples/local.mk: Use Automake + comments for the license. + +2008-11-15 Akim Demaille + + 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 + + Comment changes. + +2008-11-15 Akim Demaille + + djgpp/local.mk. + * Makefile.am (EXTRA_DIST): Move djgpp related part to... + * djgpp/local.mk: this new file. + +2008-11-15 Akim Demaille + + 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 + + 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 + + Regen. + * src/parse-gram.h, src/parse-gram.h: Regen. + +2008-11-15 Akim Demaille + + 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 + + Remove useless variable. + * doc/Makefile.am (srcsrcdir): Remove. + +2008-11-15 Akim Demaille + + 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 + + Remove etc/Makefile.am. + * etc/Makefile.am: Rename as... + * etc/local.mk: this. + Adjust. + * Makefile.am, configure.ac: Adjust. + +2008-11-15 Akim Demaille + + 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 + + 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 + + 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 + + Instead of using make_symbol, 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 + + %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 + + Compute at M4 time some of the subtractions. + * data/lalr1.cc (b4_subtract): New. + (b4_rhs_data): Use it. + +2008-11-13 Akim Demaille + + 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 + + YYERRCODE. + * TODO (YYERRCODE): Mention the case of $undef. + +2008-11-13 Akim Demaille + + TODO: YYPRINT. + * TODO (YYPRINT): New. + +2008-11-13 Akim Demaille + + Comment changes. + * data/lalr1.cc, data/yacc.c: Fix the description of the + yytranslate and yytoknum tables. + +2008-11-13 Akim Demaille + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + Honor lex-params in %define lex_symbol mode. + * data/lalr1.cc: Use b4_lex_param. + +2008-11-13 Akim Demaille + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + Simplify lalr1.cc since %defines is mandatory. + * data/lalr1.cc: Remove useless calls to b4_defines_if. + +2008-11-11 Akim Demaille + + TODO: yyfmt. + * TODO (yysyntax_error): New item. + +2008-11-11 Akim Demaille + + Prefer M4 to CPP. + * data/lalr1.cc: Use b4_error_verbose_if instead of #if + YYERROR_VERBOSE. + +2008-11-11 Akim Demaille + + 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 + + More TODO. + * TODO (single stack, yysyntax_error): New. + +2008-11-11 Akim Demaille + + 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 + + Remove useless bench case. + * etc/bench.pl.in (bench_variant_parser): VARIANT_DESTROY is + no longer used. + +2008-11-11 Akim Demaille + + Improve display of directives. + * etc/bench.pl.in (parse_term): Don't add useless eol. + +2008-11-11 Akim Demaille + + Use string_cast in the bench. + * etc/bench.pl.in (generate_grammar_list): Define and use + string_cast. + +2008-11-11 Akim Demaille + + Replace yychar with a Boolean. + * data/lalr1.cc (parse::yychar): Replace by... + (parse::yyempty): this. + +2008-11-11 Akim Demaille + + Factor the tables. + * TODO: New item. + +2008-11-11 Akim Demaille + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + * 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 + + 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 + + * 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 + + 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 + + Formatting changes. + +2008-11-10 Akim Demaille + + 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 + + Regen. + +2008-11-10 Akim Demaille + + 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 + + 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 + + Comment changes. + +2008-11-10 Akim Demaille + + 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 + + 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 + + Formatting changes. + * data/lalr1.cc: here. + +2008-11-10 Akim Demaille + + 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 + + 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 + + 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 + + --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 + + muscles_output. + * src/output.c (muscles_output): New, extracted from... + (output_skeleton): here. + Adjust. + +2008-11-10 Akim Demaille + + Formatting changes. + +2008-11-10 Akim Demaille + + Update the variant example. + * examples/variant.yy: Formatting changes. + One stage build. + +2008-11-10 Akim Demaille + + 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 + + Test variants. + * tests/c++.at (AT_CHECK_VARIANTS): New. + Use it with and without %define assert. + +2008-11-10 Akim Demaille + + 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 + + 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 + + fix eof condition + +2008-11-09 Akim Demaille + + Fix --help. + +2008-11-09 Akim Demaille + + Require the generation of parse-gram.output. + * src/Makefile.am (YACC): Pass --report=all. + 2008-11-09 Akim Demaille Formatting changes. @@ -96,10 +1658,11 @@ 2008-11-09 Akim Demaille 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. @@ -165,7 +1728,7 @@ 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. @@ -230,19 +1793,19 @@ 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. @@ -331,7 +1894,7 @@ 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. @@ -523,27 +2086,31 @@ 2008-11-03 Akim Demaille 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) @@ -557,7 +2124,7 @@ 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 @@ -586,15 +2153,16 @@ 2008-11-03 Akim Demaille 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. @@ -614,7 +2182,7 @@ 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. @@ -820,9 +2388,9 @@ 2008-08-29 Akim Demaille 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 @@ -842,15 +2410,15 @@ 2008-08-27 Akim Demaille 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 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