X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/a7ee59cfb466c53f7a9bed59df1bb2ee080146b3..fab044e6daaffb8d45401cd37145affa1033c253:/ChangeLog?ds=inline diff --git a/ChangeLog b/ChangeLog index 28b74f90..614a3982 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,251 @@ +2006-06-27 Akim Demaille + + * doc/Doxyfile.in: New. + * doc/Makefile.am: Use it. + * src/lalr.h, src/symtab.h: Initial doxygenation. + +2006-06-26 Joel E. Denny + + 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 + + Get action warnings (grammar_rule_check) right even when symbol + declarations appear after the rules. Discussed at + + and + . + 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 + + 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 + + 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 + + Fix bug that mistakes braced code in a declaration in the rules section + to be a rule action. Mentioned at + . + * 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 + + 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 + . + * 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 + + Add comparison operators for C++ location classes. Discussed at + . + * 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 + + 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 + , + , + and + . + * 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 + + * 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 * src/scan-gram.l: Remove unused declaration of last_string_1 so the