X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/a7ee59cfb466c53f7a9bed59df1bb2ee080146b3..5362ed19b6e8a8091345d979eefb4e11087b728f:/ChangeLog diff --git a/ChangeLog b/ChangeLog index 28b74f90..8fa43858 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,640 @@ +2006-08-14 Joel E. Denny + + In the grammar scanner, STRING_FINISH unclosed constructs and return + them to the parser in order to improve error messages. + * src/scan-gram.l (SC_ESCAPED_STRING, SC_ESCAPED_CHARACTER, + SC_BRACED_CODE, SC_PROLOGUE): Implement. + * tests/input.at (Unclosed constructs): New test case. + * tests/regression.at (Invalid inputs): Update now that unclosed %{ is + seen. + + * src/scan-gram.h, src/scan-gram.l (gram_last_braced_code_loc): Remove + unused global. + +2006-08-13 Joel E. Denny + + Handle string aliases for character tokens correctly. + * src/symtab.c (symbol_user_token_number_set): If the token has an + alias, check and set its alias's user token number instead of its own, + which is set to indicate the alias. Previously, every occurrence of + the character token in the grammar overwrote that alias indicator with + the character code. + * tests/input.at (String aliases for character tokens): New test. + +2006-08-12 Joel E. Denny + + * src/parse-gram.y: Add `%expect 0' so we don't overlook conflicts. + +2006-08-11 Paul Eggert + + * bootstrap: Put in need-ngettext argument to AM_GNU_GETTEXT, + to prevent failures when building on older platforms. + Check for autopoint failure. + Set XGETTEXT_OPTIONS to values that check for C format strings, + so that translators are warned about them (this also helps + prevent core dumps). + + * lib/subpipe.c (create_subpipe): Use new gnulib pipe_safer + function, since it simplifies our code a bit. + + * configure.ac (AC_ARG_ENABLE): Use -Wextra -Wno-sign-compare + rather than -W, so we don't get bogus warnings about sign comparisons. + Add -Wpointer-arith, since that warning is useful (it reports code + that does not conform to C89 and that some compilers reject). + * data/c.m4, data/glr.c, data/lalr1.cc, data/yacc.c: Undo latest change, + since it's no longer needed. + +2006-08-10 Joel E. Denny + + Clean up scanners a bit. + * src/flex-scanner.h (FLEX_NO_OBSTACK): New macro that blocks obstack + definitions so gcc won't warn when obstack_for_string is unused. + * src/scan-code.l: config.h and system.h are already #include'd by + scan-code-c.c, so get rid of them here. + * src/scan-gram.l: Likewise. + * src/scan-skel.l: Likewise, and use flex-scanner.h without obstack + definitions rather than duplicating the rest of it. + * src/scan-gram-c.c, scan-skel-c.c: #include "system.h". + +2006-08-09 Joel E. Denny + + Suppress signed/unsigned comparison warnings for yycheck. + * data/c.m4 (b4_safest_int_type): New macro. + * data/glr.c, data/lalr1.cc: Wherever you compare yycheck[i] against + a signed int type, cast it to b4_safest_int_type first. + * data/yacc.c: Likewise. + (b4_safest_int_type): Overwrite the one from c.m4 since b4_int_type is + also overwritten. + +2006-08-09 Ralf Wildenhues (tiny change) + + * doc/bison.texinfo: Fix some typos. + +2006-08-02 Paul Eggert + + * m4/.cvsignore: Add inttypes_h.m4,lib-ld.m4, lib-prefix.m4, + po.m4, stdint_h.m4, uintmax_t.m4, ulonglong.m4, warning.m4. + + * bootstrap (gnulib_tool): Stop using --assume-autoconf; + the latest gnulib does this a different way. + (get_translations): Sharuzzaman Ahmat Raslan reported that the ms + translation was patched, so stop omitting it. + +2006-07-29 Joel E. Denny + + Enable declaration of default %printer/%destructor. Make the parser + use these for all user-declared grammar symbols for which the user does + not declare a specific %printer/%destructor. Thus, the parser uses it + for token 0 if the user declares it but not if Bison generates it as + $end. Discussed starting at + , + , + and + . + * NEWS (2.3+): Mention. + * doc/bison.texinfo (Actions in Mid-Rule): It's no longer impossible to + declare a %destructor for a mid-rule's semantic value. It's just + impossible to declare one specific to it. + (Freeing Discarded Symbols): Mention that @$ can be used in %destructor + code. Describe default %destructor form. + * src/parse-gram.y (grammar_declaration): Parse default + %printer/%destructor declarations. + * src/output.c (symbol_destructors_output): Use symbol_destructor_get + and symbol_destructor_location_get rather than accessing the destructor + and destructor_location members of struct symbol. + (symbol_printers_output): Likewise but for %printer's. + * src/reader.c (symbol_should_be_used): Likewise but for %destructor's + again. + * src/symtab.c (default_destructor, default_destructor_location, + default_printer, default_printer_location): New static global + variables to record the default %destructor and %printer. + (symbol_destructor_get, symbol_destructor_location_get, + symbol_printer_get, symbol_printer_location_get): New functions to + compute the appropriate %destructor and %printer for a symbol. + (default_destructor_set, default_printer_set): New functions to set the + default %destructor and %printer. + * src/symtab.h: Prototype all those new functions. + * tests/actions.at (Default %printer and %destructor): New test to + check that the right %printer and %destructor are called, that they're + not called for $end, and that $$ and @$ work correctly. + (Default %printer and %destructor for user-declared end token): New + test to check that the default %printer and %destructor are called for + a user-declared end token. + * tests/input.at (Default %printer and %destructor redeclared, Unused + values with default %destructor): New tests to check related grammar + warnings and errors. + +2006-07-29 Joel E. Denny + + Clean up handling of %destructor for the end token (token 0). + Discussed starting at + + and + . + + Make the skeletons consistent in how they pop the end token and invoke + its %destructor. + * data/glr.c (yyrecoverSyntaxError, yyparse): Don't pop the start + state, which has token number 0, since this would invoke the + %destructor for the end token. + * data/lalr1.cc (yy::parser::parse): Don't check for the final state + until after shifting the end token, or else it won't be popped. + * data/yacc.c (yyparse): Likewise. + + * data/glr.c (yyparse): Clear the lookahead after shifting it even when + it's the end token. Upon termination, destroy an unshifted lookahead + even when it's the end token. + * data/lalr1.cc (yy::parser::parse): Likewise. + * data/yacc.c (yyparse): Likewise. + + * src/reader.c (packgram): Don't check rule 0. This suppresses unused + value warnings for the end token when the user gives the end token a + %destructor. + + * tests/actions.at (Printers and Destructors): Test all the above. + +2006-07-24 Paul Eggert + + Update to latest gnulib and gettext versions. + * bootstrap (gnulib-modules): Remove hard-locale, stdio-safer. + Add fopen-safer. + (gnulib_files): Add m4/warning.m4. Don't worry about files + overwritten by autopoint. + Replace gt_INTL_SUBDIR_CORE with an empty body in m4/gettext_gl.m4. + Suppress "id", "ms", "tr" translations for now, since gettext 0.15 + rejects them. + Don't use autoreconf; instead, invoke autopoint etc. by hand, + so that we can remove the intl files at a better time. + (intl_files_to_remove): Remove aclocal.m4, since it gets + rebuilt anyway. Remove m4/inttypes_h.m4, m4/inttypes.m4, + m4/isc-posix.m4, m4/lib-ld.m4, m4/lib-prefix.m4, m4/po.m4, + m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4. + Add m4/inttypes-h.m4, m4/lock.m4, m4/visibility.m4. + Remove datarootdir hack; no longer needed. + * configure.ac: Use gl_WARNING_CFLAGS rather than BISON_WARNING. + (AM_GNU_GETTEXT_VERSION): Bump from 0.12 to 0.15. + * lib/.cvsignore: Remove hard-locale.c, hard-locale.h, strdup.c, + strdup.h. + * m4/.cvsignore: Remove hard-locale.m4, strdup.m4. + * m4/warning.m4: Remove from CVS, since we now use gnulib's version. + +2006-07-20 Paul Eggert + + * bootstrap: Adjust to today's change to gnulib-tool by invoking + it with --assume-autoconf='latest-stable'. + +2006-07-13 Joel E. Denny + + * src/parse-gram.y (grammar_declaration): Don't confuse Doxygen (at + least 1.4.7 and 1.4.4) by putting a #line between `typedef union + YYSTYPE' and `{'. + * src/muscle_tab.h (muscle_grow): Replace the header comments with + those from muscle_tab.c since the old ones are misleading. + +2006-07-13 Akim Demaille + + Support %define "KEY" {VALUE}. + * src/scan-code.h, src/scan-code.l (translate_action) + (translate_rule_action, translate_symbol_action, translate_code): + Return char *, not const char *. + * src/parse-gram.y (declaration): Rename as... + (prologue_declaration): this. + (string_content): Remove this nonterminal, use STRING. + (braceless, content, content.opt): New nonterminal. + Use them. + (%define): Now accept content.opt, i.e., accept also BRACED_CODE + as value. + * src/scan-gram.l (getargs.h): Don't include it. + +2006-07-12 Paul Eggert + + * data/lalr1.cc (YYCDEBUG): Use 'if (yydebug_) (*yycdebug_)' + rather than a for-loop that declares a local bool variable. This + should work around a compatibility problem with a Cray x1e C++ + compiler reported by Hung Nguyen in + . + The for-loop was introduced in the 2004-11-17 change but I don't + know why it was needed. + +2006-07-12 Akim Demaille + + * data/c.m4: Comment changes. + +2006-07-10 Akim Demaille + + * src/complain.c (error_message, ERROR_MESSAGE): New. + To factor... + (fatal_at, fatal, warn_at, warn, complain_at, complain): these. + * src/complain.h, src/complain.c (warning_issued): Remove, unused. + +2006-07-09 Paul Eggert + + * NEWS: Instead of %union, you can define and use your own union type + YYSTYPE if your grammar contains at least one tag. + Your YYSTYPE need not be a macro; it can be a typedef. + * doc/bison.texinfo (Value Type, Multiple Types, Location Type): + (Union Decl, Decl Summary): Document this. + * data/glr.c (YYSTYPE): Implement this. + * data/glr.cc (YYSTYPE): Likewise. + * data/lalr1.cc (YYSTYPE): Likewise. + * data/yacc.c (YYSTYPE): Likewise. + * src/output.c (prepare): Output tag_seen_flag. + * src/parse-gram.y (declaration, grammar_declaration): + Use 'union_seen' rather than 'typed' to determine whether + %union has been seen, since grammars can now be typed without + %union. + (symbol_declaration, type.opt, symbol_def): + Keep track of whether a tag has been seen. + * src/reader.c (union_seen, tag_seen): New vars. + (typed): remove. + * src/reader.h (union_seen, tag_seen, typed): Likewise. + * src/scan-code.l (untyped_var_seen): New variable. + (handle_action_dollar): Adjust to above changes. + (handle_action_dollar, handle_action_at): + Improve overflow checking for outlandish numbers. + * tests/input.at (AT_CHECK_UNUSED_VALUES): Redo test to + avoid new diagnostics generated by above changes. + * tests/regression.at (YYSTYPE typedef): Add test to check + for type tags without %union. + + * src/symlist.c (symbol_list_length): Return int, not unsigned + int, since callers expect int. This may need to get revisited + once we have proper integer overflow checking. + + * src/scan-gram.h (gram_scanner_cursor): Remove decl, since this + object is now static. + + * src/getargs.c (flags_argmatch): Return void, not int, + to pacify ./configure --enable-gcc-warnings. + + * src/flex-scanner.h (STRING_FREE): Don't use FLEX_PREFIX (last_string) + since last_string is already defined to FLEX_PREFIX (last_string). + +2006-07-09 Akim Demaille + + Implement --warnings/-W. + * src/getargs.c (report_argmatch, trace_argmatch): Remove, + replaced by... + (flags_argmatch, FLAGS_ARGMATCH): this new function and macro. + Adjust callers. + * src/getargs.h, src/getargs.c (warnings, warnings_flags) + (warnings_args, warnings_types): New. + (getargs, short_options, long_options): Accept -W/--warnings. + Sort the options by alphabetical order, upper case letter right + before its lower case. + +2006-07-09 Joel E. Denny + + Change %merge result type clash warnings to errors. Discussed at + . + * src/reader.c (record_merge_function_type): Use complain_at. + * tests/glr-regression.at (Missed %merge type warnings when LHS type is + declared later): Update test case results. + +2006-07-09 Akim Demaille + + * src/getargs.h, src/getargs.c: Swap --report and --trace handling + to be in alphabetical order. + (trace_args): Spelling fixes. + +2006-07-09 Paul Eggert + + * data/yacc.c (YYID, yy_stack_print): Prefix local vars with "yy" + so they don't collide with user-defined macros. + (yy_stack_print): Don't assume that yytype_int16 promotes to int; + this was never guaranteed, and now that we're using gnulib stdint, + which defines int_fast16_t to long int, the problem is exposed. + +2006-07-08 Paul Eggert + + * data/c.m4 (b4_basename): Simplify a bit, since we don't + need the full POSIX semantics (and weren't implementing them + anyway). + + Adjust to Autoconf 2.60 and today's gnulib. + * bootstrap (gnulib_modules): Add stdint. + Remove special case for m4/onceonly_2_57.m4, since gnulib-tool + no longer copies it. + (intl_files_to_remove): Remove m4/longlong.m4 and m4/wchar_t.m4, + since stdint needs the former and wcwidth (which is now required + by mbswidth) needs the latter. + Append 'datarootdir = @datarootdir@' to po/Makefile.in.in, to + work around a compatibility glitch between gettext 0.14.6 and + Autoconf 2.60. + * configure.ac (AC_PREREQ): Require Autoconf 2.60. + Do not check for uintptr_t, since new stdint module does the right + thing. + * lib/.cvsignore: Remove alloca.c, alloca.h, alloca_.h. + Add stdint.h, stdint_.h, wcwidth.h. + * m4/.cvsignore: Remove alloca.m4, onceonly.m4. + Add absolute-header.m4, double-slash-root.m4, longlong.m4, + stdint.m4, wchar_t.m4, wcwidth.m4. + * src/files.c: Include and in the + usual order for ../lib/*.h files. + (file_name_split): Use last_component, not base_name, to adjust + to gnulib changes. + * src/parse-gram.h: Include in the usual order + for ../lib/*.h files. + (YYTYPE_INT16, YYTYPE_INT8, YYTYPE_UINT16, YYTYPE_UINT8): + Define unconditionally, since we now assume the stdint module. + * src/scan-skel.l: Include . + (BASE_QPUTS): Use last_component, not base_name. + * src/system.h: Include in the usual order + for ../lib/*.h files. Include unconditionally, + since we now use the stdint module. + (uintptr_t): Declare if UINTPTR_MAX is not defined, not + HAVE_UINTPTR_T, since we now use the stdint module. + (base_name): Remove decl, since files now include + to get the decl. + +2006-07-08 Akim Demaille + + * data/c.m4 (b4_location_initial_column, b4_location_initial_line): + New, default to 1. + * data/yacc.c, data/glr.c, data/location.cc: Use them. + * NEWS, doc/bison.texinfo: The initial column and line are 1 by + default. + * tests/calc.at: Adjust. + +2006-07-08 Akim Demaille + + * data/c.m4 (b4_basename): New. + (b4_syncline): Also output the location of its invocation (from + the skeleton). + (b4_user_action, b4_define_user_action, b4_user_actions) + (b4_user_initial_action, b4_user_post_prologue, b4_user_start_header) + (b4_user_stype): New. + * data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: Use them. + +2006-07-07 Joel E. Denny + + In the grammar file, the first column is 1 not 0 on the first line as + on every other line. + * src/parse-gram.y (%initial-action): Initialize @$ correctly. + * tests/input.at (Torturing the Scanner): Update output. + + * src/scan-gram.l (scanner_cursor): Declare it static. + +2006-07-07 Joel E. Denny + + In warnings, say "previous declaration" rather than "first + declaration". + * src/symtab.c (redeclaration): Do that here. + * src/reader.c (record_merge_function_type): In the case of a result + type clash, report the previous declaration rather than the very first + one in the grammar file. + * tests/glr-regression.at (Missed %merge type warnings when LHS type is + declared later): Add a third declaration to check this behavior. + * tests/input.at (Incompatible Aliases): Update output. + +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 @@ -3654,7 +4291,7 @@ * data/lalr1.cc (symprint_): Use cdebug_ to avoid warnings. -2004-10-28 Akim Demaille , +2004-11-17 Akim Demaille , Alexandre Duret-Lutz * data/lalr1.cc (Parser::yycdebug_): New, a pointer, to allow