+2006-06-27 Akim Demaille <akim@epita.fr>
+
+ * doc/Doxyfile.in: New.
+ * doc/Makefile.am: Use it.
+ * src/lalr.h, src/symtab.h: Initial doxygenation.
+
+2006-06-26 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't miss %merge result type warnings just because the LHS types are
+ declared after the %merge. This continues the effort of the previous
+ patch.
+ * src/reader.c (get_merge_function): Don't set the merger type yet.
+ (record_merge_function_type): New function for setting the merger type
+ and checking for clashes.
+ (grammar_current_rule_merge_set): Set the location of the %merge for
+ the current rule.
+ (packgram): Invoke record_merge_function_type for each rule now that
+ all symbol type declarations have been parsed.
+ * src/reader.h (merger_list.type_declaration_location): New member
+ storing the location of the first %merge from which the type for this
+ merging function was derived.
+ * src/symlist.h (symbol_list.merger_declaration_location): New member
+ storing the location of a rule's %merge, if any.
+ * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+ declared later): New test to catch the error fixed by the above patch.
+
+2006-06-26 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Get action warnings (grammar_rule_check) right even when symbol
+ declarations appear after the rules. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00108.html>
+ and
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00151.html>.
+ Don't mistake the type of $$ in a midrule to be that of its parent
+ rule's $$.
+ * src/reader.c (grammar_current_rule_end): Don't invoke
+ grammar_rule_check yet since not all symbol declarations may have been
+ parsed yet.
+ (grammar_midrule_action): Likewise.
+ Don't record whether the midrule's $$ has been used yet since actions
+ haven't been translated yet.
+ Record the midrule's parent rule and its RHS index within the parent
+ rule.
+ (grammar_current_rule_action_append): Don't translate the action yet
+ since not all symbol declarations may have been parsed yet and, thus,
+ warnings about types for $$, $n, @$, and @n can't be reported yet.
+ (packgram): Translate the action and invoke grammar_rule_check now that
+ all symbol declarations have been parsed.
+ * src/scan-code.l (handle_action_dollar): Now that this is invoked
+ after parsing the entire grammar file, the symbol list here in the case
+ of a midrule is actually the midrule's empty RHS, so reference its
+ parent rule's RHS where necessary.
+ On the other hand, now that you can already know it's a midrule, you
+ aren't forced to think $$ has the same type as its parent rule's $$.
+ (handle_action_at): In the case of a midrule, reference the parent rule
+ where necessary.
+ * src/symlist.c (symbol_list_new): Initialize new midrule-related
+ members.
+ (symbol_list_length): Now that this is invoked after all rules have
+ been parsed, a NULL symbol (rather than a NULL symbol list node)
+ terminates a rule. symbol_list_print already does this correctly.
+ * src/symlist.h (symbol_list.midrule_parent_rule,
+ symbol_list.midrule_parent_rhs_index): New members so that midrules can
+ remember their relationships with their parents.
+ * tests/input.at (Type Clashes): Extend to catch the midrule $$ error
+ fixed by the above patch.
+ (_AT_UNUSED_VALUES_DECLARATIONS, AT_CHECK_UNUSED_VALUES): New m4 macros
+ implementing...
+ (Unused values): ... this old test case and...
+ (Unused values before symbol declarations): ... this new test case.
+ This one is the same as `Unused values' except that all symbol
+ declarations appear after the rules in order to catch the rest of the
+ errors fixed by the above patch.
+
+2006-06-26 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ More cleanup.
+ * src/reader.c (current_rule): Declare it static since it's no longer
+ used outside this file.
+ (grammar_current_rule_action_append): Remove redundant arguments from
+ translate_rule_action invocation.
+ * src/reader.h (current_rule): Remove this unused extern.
+ * src/scan-code.h (translate_rule_action): Remove redundant arguments.
+ * src/scan-code.l (translate_rule_action): Likewise.
+
+2006-06-25 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Clean up yesterday's patch.
+ * parse-gram.y (rhs): Move grammar_midrule_action invocation from here
+ to...
+ * src/reader.c (grammar_current_rule_action_append): ... here for
+ consistency with grammar_current_rule_symbol_append.
+ * tests/regression.at (Braced code in declaration in rules section):
+ Make yyerror and yylex static as usual.
+
+2006-06-24 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Fix bug that mistakes braced code in a declaration in the rules section
+ to be a rule action. Mentioned at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00105.html>.
+ * src/scan-gram.l: Move midrule action detection from the start of the
+ scanning of any braced code to...
+ * src/parse-gram.y (rhs): ... the parsing of braced code as a rule
+ action. For readability, use $2 and @2 rather than the equivalent
+ global variables.
+ * tests/regression.at (Braced code in declaration in rules section):
+ New test to catch the error fixed by the above patch.
+
+ Work on code readability some.
+ * src/scan-code.l (current_rule): Get rid of this misleading and
+ redundant declaration: it's actually extern'ed in reader.h.
+ (YY_DECL, code_lex, handle_action_dollar, handle_action_at,
+ translate_action): Add a rule argument and use it instead of the global
+ current_rule.
+ (translate_rule_action): This already receives current_rule through an
+ argument, so pass it on to translate_action instead of assigning
+ current_rule to current_rule.
+ (translate_symbol_action, translate_code): Pass rule = NULL to
+ translate_action.
+
+2006-06-23 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Rename %before-definitions to %start-header and %after-definitions to
+ %end-header. Don't use these declarations to separate pre-prologue
+ blocks from post-prologue blocks. Add new order-independent
+ declarations %before-header and %after-header as alternatives to the
+ traditional Yacc pre-prologue and post-prologue blocks. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00110.html>.
+ * NEWS (2.3+): Update for these changes.
+ * data/glr.c (b4_before_definitions): Update to...
+ (b4_start_header): ... this.
+ (b4_after_definitions): Update to...
+ (b4_end_header): ... this.
+ * data/glr.cc: Likewise.
+ * data/lalr1.cc: Likewise.
+ * data/yacc.c: Likewise.
+ * doc/bison.texinfo (The prologue): Update names, and replace remaining
+ prologue blocks with %*-header declarations.
+ (Calc++ Parser): Likewise.
+ (Bison Declaration Summary): Update names.
+ (Bison Symbols): Update description.
+ * src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to...
+ (PERCENT_END_HEADER): ... this.
+ (PERCENT_BEFORE_DEFINITIONS): Update to...
+ (PERCENT_START_HEADER): ... this.
+ (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
+ (declaration): Update token names and m4 macro names.
+ When parsing %end-header and %start-header, invoke translate_code
+ before muscle_code_grow, and no longer set global booleans to remember
+ whether these declarations have been seen.
+ Parse new %after-header and %before-header.
+ * src/reader.c (before_definitions, after_definitions): Remove.
+ (prologue_augment): Accept a new bool argument to specify whether to
+ augment the pre-prologue or post-prologue.
+ * src/reader.h (before_definitions, after_definitions): Remove these
+ extern's.
+ (prologue_augment): Add new bool argument.
+ * src/scan-gram.l (PERCENT_AFTER_DEFINITIONS): Update to...
+ (PERCENT_END_HEADER): ... this.
+ (PERCENT_BEFORE_DEFINITIONS): Update to...
+ (PERCENT_START_HEADER): ... this.
+ (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
+ * tests/actions.at (Printers and Destructors): Update names.
+
+2006-06-22 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Add comparison operators for C++ location classes. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00092.html>.
+ * data/c++.m4 (b4_define_location_comparison): New boolean %define
+ declaration indicating whether filename_type has an operator==. If
+ filename_type is `std::string', it defaults to `1', `0' otherwise.
+ * data/location.cc: Iff b4_define_location_comparison is `1', add
+ operator== and operator!= for class position and for class location.
+
+ Some minor fixes.
+ * src/scan-action.l: Remove unused file.
+ * src/symtab.c (symbol_printer_set): Use printer_location not
+ destructor_location.
+ * src/symtab.h (struct symbol): Replace incorrect source comment for
+ printer members.
+ * tests/input.at (Incompatible Aliases): Update output with correct
+ printer location.
+
+2006-06-20 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't put the pre-prologue in the header file. For the yacc.c code
+ file and the glr.c header and code files, move the pre-prologue before
+ the token definitions. Add new %before-definitions and
+ %after-definitions to declare code that will go in both the header file
+ and code file. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00000.html>,
+ <http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00016.html>,
+ and
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00055.html>.
+ * NEWS (2.3+): Describe these changes.
+ * data/glr.c (b4_pre_prologue): Move from within to before...
+ (b4_shared_declarations): ... this.
+ Add new b4_before_definitions before b4_token_enums.
+ Add new b4_after_definitions at the end.
+ * data/glr.cc (b4_pre_prologue): Replace with...
+ (b4_before_definitions): ... this in the header file.
+ (b4_after_definitions): New near the end of the header file.
+ * data/lalr1.cc (b4_pre_prologue): Move from the header file to the
+ code file right before including the header file.
+ (b4_before_definitions): New in the previous position of
+ b4_pre_prologue in the header file.
+ (b4_after_definitions): New near the end of the header file.
+ * data/yacc.c: Clean up some m4 quoting especially in the header file.
+ (b4_token_enums_defines): In the code file, move to right before
+ YYSTYPE for consistency with the header file.
+ (b4_before_definitions): New right before b4_token_enums_defines in
+ both the header and code file.
+ (b4_after_definitions): New right after YYLTYPE and yylloc in both the
+ header and code file.
+ * doc/bison.texinfo (Prologue): Show use of %before-definitions instead
+ of prologues for %union dependencies.
+ (Bison Declaration Summary): In %defines description, mention the
+ effect of %before-definitions and %after-definitions on the header
+ file.
+ (Calc++ Parser): Forward declare driver in a %before-definitions rather
+ than in the pre-prologue so that make check succeeds.
+ (Bison Symbols): Add entries for %before-definitions and
+ %after-definitions.
+ * src/parse-gram.y (PERCENT_BEFORE_DEFINITIONS): New token for
+ %before-definitions.
+ (PERCENT_AFTER_DEFINITIONS): New token for %after-definitions.
+ (declaration): Parse those declarations and append to
+ b4_before_definitions and b4_after_definitions, respectively.
+ * src/reader.c (before_definitions, after_definitions): New bools to
+ track whether those declarations have been seen.
+ (prologue_augment): Add to the post-prologue if %union,
+ %before-definitions, or %after-definitions has been seen.
+ * src/reader.h (before_definitions, after_definitions): New extern's.
+ * src/scan-gram.l: Scan the new declarations.
+ * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Place the second
+ prologue block in a %before-definitions or a %after-definitions based
+ on whether the %union is declared.
+ * tests/regression.at (Early token definitions with --yacc, Early token
+ definitions without --yacc): Move tests for token definitions into the
+ post-prologue since token names are no longer defined in the
+ pre-prologue.
+
+2006-06-20 Akim Demaille <akim@epita.fr>
+
+ * src/symtab.h, src/symtab.c (symbol_from_uniqstr): New.
+ (symbol_get): Use it.
+ * src/parse-gram.y: Use it.
+
+2006-06-19 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/scan-gram.l: Remove unused declaration of last_string_1 so the
+ build succeeds when configured with --enable-gcc-warnings.
+
+2006-06-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/parse-gram.y (char_name): New function.
+ (CHAR, STRING, string_content): For %printer, properly escape.
+ (ID): Prefer fputs to fprintf.
+ (id): Reindent to be consistent with other rules.
+ Properly quote char.
+
+ The Translation Project changed its way of publishing translations
+ to maintainers. I haven't received any responses to my request
+ for supporting the old way, or for documenting the new way. I
+ have modified 'bootstrap' to use screen scraping
+ (in this case, HTML scraping). This is unreliable and inelegant,
+ but I don't see any better way. Yuck.
+ * bootstrap (TP_URL, WGET_COMMAND): New vars.
+ (get_translations): New function, which uses HTML scraping to
+ deduce locations of latest translations.
+ Use this function to grab both bison and bison-runtime .po files.
+ Don't bother priming the pump for the runtime-po domain any more,
+ as it's now translated better than bison is.
+
2006-06-19 Akim Demaille <akim@epita.fr>
* src/scan-gram.l: No longer "parse" things after `%union' until