X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/28e52c0d622b3017e14d2cf2e526238aa2cfd6ef..830c9b1847f35d01a748203423b893378a7bca85:/ChangeLog diff --git a/ChangeLog b/ChangeLog index 8f269be5..a91b29e3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,477 @@ +2007-01-17 Paolo Bonzini + + * bootstrap: Remove occurrences of .#bootmp from the files. + +2007-01-17 Akim Demaille + + * doc/bison.texinfo (Calc++ Parser): Don't try to alias + nonterminals. + Use per-type %printer. + +2007-01-17 Joel E. Denny + + * NEWS, data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4, + data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc, + djgpp/config.site, src/files.c, src/files.h, src/main.c, + src/muscle_tab.c, src/muscle_tab.h, src/parse-gram.y, src/reader.h, + src/scan-skel.h, src/scan-skel.l, tests/actions.at, tests/calc.at, + tests/glr-regression.at, tests/input.at, tests/local.at, + tests/output.at, tests/torture.at: Update copyright to 2007. + +2007-01-16 Akim Demaille + + * doc/bison.texinfo (Calc++ Parsing Driver): Let "parse" return an + error code. + (Calc++ Scanner): Exit with failure if we can't open the input + file. + Accept "-" standing for stdin. + (Calc++ Top Level): Print the result only if the parsing was + successful. + +2007-01-16 Akim Demaille + + * data/lalr1.cc (yy_reduce_print_): Add a missing end-of-line. + +2007-01-15 Paolo Bonzini + and Joel E. Denny + + Clean up %define and %code implementation in M4 some. Most + importantly, rename all related macros to be in the b4_percent_define + and b4_percent_code namespaces. Also, complete support for `.' in + %define variable names and %code qualifiers. + * data/bison.m4 (b4_check_user_names): Check for special + "SKELETON-NAMESPACE(name)" macros instead of using two nested + m4_foreach loops. + (b4_get_percent_define, b4_get_percent_code): Rename to... + (b4_percent_define_get, b4_percent_code_get): ... these. + Extend documentation with examples. + For SKELETON-NAMESPACE (as documented for b4_check_user_names), use + b4_percent_define_skeleton_variables and + b4_percent_code_skeleton_qualifiers. + Expect any value for the %define variable `foo' to be stored in the + macro named `b4_percent_define(foo)'; expect any %code blocks for the + qualifier `foo' to be stored in a macro named `b4_percent_code(foo)'; + expect any unqualified %code blocks to be stored in a macro named + `b4_percent_code_unqualified'. + Use m4_indir so that %define variable names and %code qualifiers can + contain `.', which is allowed by the grammar parser. + (b4_percent_define_default): New macro to set a default value for a + %define variable. + (m4_wrap): Update wrapped code, and fix some underquoting. + (b4_check_user_names_wrap): Update and define outside the m4_wrap. + Expect grammar uses of %define variables and %code qualifiers to be + defined in b4_percent_define_user_variables and + b4_percent_code_user_qualifiers. + * data/c++.m4: Use b4_percent_define_default rather than + m4_define_default. Fix some underquoting. Skeleton usage of %define + variable define_location_comparison now implies skeleton usage of + %define variable filename_type. + * data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc, + data/push.c, data/yacc.c: Update macro names. + * src/parse-gram.y (prologue_declaration, grammar_declaration): Update + muscle names. + +2007-01-14 Juan Manuel Guerrero + + DJGPP specific issues. + + * djgpp/config.site: Set ac_cv_path_mkdir to a sane DJGPP specific + default. Set gl_cv_absolute_wctype_h to a sane DJGPP specific default. + +2007-01-09 Joel E. Denny + + * tests/glr-regression.at: Use AT_PARSER_CHECK rather than AT_CHECK to + run parsers in all tests so that Valgrind is invoked during + maintainer-check-valgrind. + (Duplicate representation of merged trees): Free all semantic values. + (Duplicated user destructor for lookahead): Likewise. + +2007-01-09 Joel E. Denny + + * tests/local.at (AT_PARSER_CHECK): Add a PRE argument to specify a + command-line prefix. + * tests/torture.at (Exploding the Stack Size with Alloca): Stderr is + ignored, so use that PRE to set --log-fd=1 in VALGRIND_OPTS so we don't + miss Valgrind messages. + (Exploding the Stack Size with Malloc): Likewise. + +2007-01-09 Joel E. Denny + + Ignore YYSTACK_USE_ALLOCA for push parsers since the stacks can't be + locals. Reported by Juan Manuel Guerrero at + . + * data/push.c: Enclose the #ifdef YYSTACK_USE_ALLOCA in b4_push_if. + Fix some indentation also. + * tests/torture.at (Exploding the Stack Size with Alloca): Add comment + explaining this issue. + +2007-01-09 Paolo Bonzini + and Joel E. Denny + + Simplify union and prologue handling, and escape union and lex/parse + params with digraphs. + * data/bison.m4 (b4_pre_prologue, b4_post_prologue): Set their default + values to the empty string since these are no longer guaranteed + initialized by the front-end. + * data/glr.c, data/glr.cc, data/lalr1.cc, data/push.c, data/yacc.c: Add + braces around b4_user_stype since this is no longer done by the + front-end. + * src/files.c, src/files.h (pre_prologue_obstack, + post_prologue_obstack): Remove. + * src/muscle_tab.c (muscle_pair_list_grow): Don't duplicate header + comments here. Use MUSCLE_OBSTACK_SGROW so that values are escaped + with digraphs. This fixes lex params and parse params. + * src/muscle_tab.h (muscle_pair_list_grow): Update comments. + * src/output.c (prepare): Remove muscle insertion of the prologues. + (output): Remove freeing of pre_prologue_obstack and + post_prologue_obstack. + * src/parse-gram.y (prologue_declaration): Use muscle_code_grow rather + than prologue_augment for prologue parsing so you don't need prologue + obstacks. + (grammar_declaration): For %union RHS, use `braceless' instead of + "{...}" so that braces are already stripped and code is escaped with + digraphs. + * src/reader.c (prologue_augment): Remove. + (reader): Remove initialization of pre_prologue_obstack and + post_prologue_obstack. + * src/reader.h (prologue_augment): Remove. + + * data/c.m4: Remove stray parenthesis. + +2007-01-08 Joel E. Denny + + Remove quotes from variables names in %define directives and from + qualifiers in %code directives, and restrict the characters that are + allowed in them to M4-friendly ones. For %define, continue to support + the quoted form as a deprecated feature. Discussed starting at + . + * NEWS (2.3a+): Add entry for the change to %define. Update entry for + %code. + * doc/bison.texinfo (Prologue Alternatives): Update. + (Bison Declaration Summary): In %defines entry, update mention of + `%code requires' and `%code provides'. + (C++ Location Values): Update %define uses. + (Calc++ Parser Interface): Likewise. + (Calc++ Parser): Likewise, and update `%code requires' uses. + (Bison Symbols): Update %code documentation. + * src/parse-gram.y (prologue_declaration): For %define variables, use + `variable' instead of `STRING'. + (grammar_declaration): For %code qualifiers, use `ID' instead of + `STRING'. + (variable): New nonterminal that takes an `ID' or a `STRING'. + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Update %code + and %define uses. + * tests/calc.at (_AT_DATA_CALC_Y): Update %define use. + * tests/input.at (Reject unused %code qualifiers): Update %code uses. + (%define errors): Update %define uses. + +2007-01-08 Joel E. Denny + + * src/parse-gram.y (prologue_declaration): Use MUSCLE_INSERT_STRING + instead of muscle_insert for %define values so that M4-special + characters are replaced with digraphs. + * tests/input.at (%define errors): Extend to check weird values. + +2007-01-08 Joel E. Denny + + Instead of having skeletons declare all valid %define variables and + %code qualifiers, provide macros that retrieve the associated values + and build these lists automatically. Thus Bison will now warn when a + variable or qualifier is not used by the skeleton in the current + invocation regardless of whether it might sometimes be used by that + skeleton in other invocations. Also, move all %define value macros to + the b4_percent_define_ namespace, and remove the %define "NAME" {CODE} + form, which is replaced by %code. + * data/bison.m4 (b4_check_for_unrecognized_names): Rename to... + (b4_check_user_names): ... this, and change the series of valid name + arguments to a single list argument for names used in the skeleton + similar to the existing list argument for names used in the grammar. + Warn instead of complaining. + (b4_get_percent_define, b4_get_percent_code): New to retrieve %define + values and %code code, to format %code code properly, and to build + lists of all %define variables and %code qualifiers used in the + skeleton: b4_skeleton_percent_define_variables and + b4_skeleton_percent_code_qualifiers. + (b4_check_percent_define_variables, b4_check_percent_code_qualifiers): + Remove, and... + (m4_wrap): ... m4_wrap b4_check_user_names invocations instead so that + the skeleton names lists can finish building first. In place of + b4_used_percent_define_variables and b4_used_percent_code_qualifiers, + expect the lists b4_user_percent_define_variables and + b4_user_percent_code_qualifiers. + * data/c++.m4: Where setting default values for b4_parser_class_name, + b4_location_type, b4_filename_type, b4_namespace, and + b4_define_location_comparison, update their names to the + b4_percent_define_ namespace. + * data/glr.c: Don't use b4_check_percent_define_variables and + b4_check_percent_code_qualifiers. Use b4_get_percent_code. + * data/glr.cc, data/lalr1.cc: Likewise, and use b4_get_percent_define. + (b4_parser_class_name, b4_namespace): Define these using + b4_get_percent_define for parser_class_name and namespace. + * data/location.cc: Use b4_get_percent_define. + * data/push.c: Don't use b4_check_percent_define_variables and + b4_check_percent_code_qualifiers. Use b4_get_percent_code. + * data/yacc.c: Likewise, and don't call m4_exit in + b4_use_push_for_pull_if or m4_wrap code will never execute. + * src/muscle_tab.c, src/muscle_tab.h (muscle_grow_used_name_list): + Rename to... + (muscle_grow_user_name_list): ... this for consistency with the + terminology used in bison.m4. + * src/parse-gram.y (prologue_declaration): Prepend "percent_define_" to + %define variable names, and rename muscle used_percent_define_variables + to user_percent_define_variables. + (grammar_declaration): Rename muscle used_percent_code_qualifiers to + user_percent_code_qualifiers. + (content): Remove. + (content.opt): Replace content RHS with STRING RHS so %define "NAME" + {CODE} form is no longer accepted. + * tests/input.at (Reject bad %code qualifiers): Rename to... + (Reject unused %code qualifiers): ... this, and update test output. + (%define error): Update test output. + +2007-01-07 Joel E. Denny + + Check for unrecognized %define variables similar to checking for + unrecognized %code qualifiers. Check for redefined %define variables. + * data/bison.m4 (b4_check_for_unrecognized_names): New macro that + generalizes... + (b4_check_percent_code_qualifiers): ... this, which now wraps it. + (b4_check_percent_define_variables): New, also wraps it. + * data/glr.c: Unless glr.cc is wrapping glr.c, declare no valid %define + variables using b4_check_percent_define_variables. + * data/glr.cc, data/lalr1.cc: Declare the valid %define variables as + all those exercised in the test suite and all those listed in the + `Default values' section of c++.m4. Are there others? + * data/push.c, data/yacc.c: Declare no valid %define variables. + * src/muscle_tab.c, src/muscle_tab.h (muscle_find_const): New function, + similar to muscle_find, but it works even when the muscle stores a + const value. + (muscle_grow_used_name_list): New function for constructing the used + name list muscles that b4_check_for_unrecognized_names requires. + * src/parse-gram.y (prologue_declaration): Warn if a variable is + %define'd more than once. Define the b4_used_percent_define_variables + muscle with muscle_grow_used_name_list. + (grammar_declaration): Abbreviate %code code with + muscle_grow_used_name_list. + * tests/input.at (%define errors): New. + +2007-01-06 Joel E. Denny + + Provide warn_at, complain_at, and fatal_at function callbacks to the + skeletons, and use this for %code qualifier complaints. + * data/bison.m4 (b4_error_at): New, invoked by... + (b4_warn_at, b4_complain_at, b4_fatal_at): ... these new macros to wrap + the skeleton scanner's new @warn_at(...@), @complain_at(...@), and + @fatal_at(...@) directives. + (b4_check_percent_code_qualifiers): Rewrite to expect locations for + qualifiers in b4_used_percent_code_qualifiers and to use + b4_complain_at. + * src/location.c, src/location.h (boundary_set_from_string): New global + function. + * src/muscle_tab.c, src/muscle_tab.h (muscle_boundary_grow): New global + function. + * src/parse-gram.y (grammar_declaration): Add locations for qualifiers + to b4_used_percent_code_qualifiers. + * src/scan-skel.l (fail_for_at_directive_too_few_args): New static + function. + (AT_DIRECTIVE_ARGC_MAX): Increase for boundary arguments. + (lineno): Rename to... + (out_lineno): ... this so I don't misunderstand it again. + (SC_AT_DIRECTIVE_SKIP_WS): Don't increment out_lineno for newlines + here; these newlines are in the input but not the output file. + (SC_AT_DIRECTIVE_ARG): Likewise. Extract directive execution to... + (at_directive_perform): ... this new static function, and add handling + of new @warn_at(...@), @complain_at(...@), and @fatal_at(...@) + directives. + * tests/input.at (Reject bad %code qualifiers): Update test output with + locations and extend. + + * tests/output.at (Output file name: [, Output file name: ]): Remove + bogus comment about these tests failing. + +2007-01-06 Joel E. Denny + + Clean up b4_check_percent_code_qualifiers a little. + * data/bison.m4 (b4_check_percent_code_qualifiers): Expect qualifiers + in b4_used_percent_code_qualifiers to be double-M4-quoted. Rewrite + documentation and add examples. + * src/parse-gram.y (grammar_declaration): Double-M4-quote those + qualifiers here. + +2007-01-05 Joel E. Denny + + Don't use m4_divert since it makes m4_divert_push and m4_divert_pop + unreliable -- especially when they're hidden inside another macro. + * data/bison.m4, data/c++-skel.m4, data/c++.m4, data/c-skel.m4, + data/c.m4: Remove m4_divert(-1). + * data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc, + data/push.c, data/yacc.c: Likewise, and replace m4_divert(0) with + m4_divert_push(0) and m4_divert_pop(0). + * src/output.c (output_skeleton): Don't add an m4_divert_push(0) and + an m4_wrap([m4_divert_pop(0)]) to the M4. Diversion -1, which is + pushed and popped by m4sugar, should be first on the stack. + + Provide warn, complain, and fatal function callbacks to the skeletons. + This provides more flexibility than m4_fatal, improves the error + message format, and captures messages for translation. Discussed + starting at + . + * data/bison.m4 (b4_error): New, invoked by... + (b4_warn, b4_complain, b4_fatal): ... these new macros to wrap the + skeleton scanner's new @warn(...@), @complain(...@), and @fatal(...@) + directives. Because these M4 macros might be called when the current + diversion is -1 or 0, m4_divert_push and m4_divert_pop is used; thus + the previous removal of uses of m4_divert, which caused trouble. + (b4_check_percent_code_qualifiers): Use b4_complain instead of + m4_fatal to report unrecognized %code qualifiers. + * data/c++-skel.m4: Use b4_complain instead of m4_fatal to report C++ + push parser requests. + * data/glr.c: Use b4_complain instead of m4_fatal to report + non-deterministic push parser requests. + Update @output usage to @output(...@) form. + * data/glr.cc, data/lalr1.cc: Use b4_fatal instead of m4_fatal to + report missing %defines. Update @output usage to @output(...@) form. + * data/location.cc, data/push.c, data/yacc.c: Update @output usage to + @output(...@) form. + * src/main.c (main): Invoke skel_scanner_free. + * src/scan-skel.h (skel_scanner_free): Prototype new function. + * src/scan-skel.l (FLEX_NO_OBSTACK): Don't define; we now need the + obstack_for_string from flex-scanner.h. + (YY_DECL): Use to declare skel_lex static. + (decode_at_digraphs): Remove; now handled in the new + SC_AT_DIRECTIVE_ARG start condition. + (fail_for_at_directive_too_many_args, fail_for_invalid_at): New static + functions. + (at_directive_name, AT_DIRECTIVE_ARGC_MAX, at_directive_argc, + at_directive_argv): New static globals. + (INITIAL): Use fail_for_invalid_at. + Don't parse `@output file_name\n' or `@basename(...@)'. Instead, + recognize the start of a generalized `@directive(...@)' form and + start... + (SC_AT_DIRECTIVE_ARG): ... this new start condition to parse the + directive args (using the new obstack_for_string), to decode the + contained @ diagraphs, and to perform the directive. It recognizes + @basename(...@), @warn(...@), @complain(...@), @fatal(...@), and + @output(...@). + (SC_AT_DIRECTIVE_SKIP_WS): New start condition started by + SC_AT_DIRECTIVE_ARG to skip whitespace after the argument delimiter, + `@,'. + (scan_skel): Initialize obstack_for_string on the first call. + (skel_scanner_free): New function to free obstack_for_string. + * tests/input.at (Reject bad %code qualifiers): Update test output. + +2007-01-04 Joel E. Denny + + Consolidate the 4 prologue alternative directives (%code, %requires, + %provides, and %code-top) into a single %code directive with an + optional qualifier field. Discussed at + . + * NEWS (2.3a+): Rewrite the existing entry for the prologue + alternatives. + * doc/bison.texinfo (Prologue Alternatives): Update. + (Decl Summary): Update to %code "requires" and %code "provides". + (Calc++ Parser): Update to %code "requires". + (Bison Symbols): Remove entries for %requires, %provides, and + %code-top. Rewrite %code entry, and add a %code "QUALIFIER" entry. + * data/bison.m4 (b4_user_provides, b4_user_requires): Remove as these + are replaced by b4_percent_code_provides and b4_percent_code_requires, + which are skeleton-specific. + (b4_check_percent_code_qualifiers): New. A skeleton can use this to + declare what %code qualifiers it supports and to complain if any other + qualifiers were used in the grammar. + * data/glr.cc: Update to use b4_user_code([b4_percent_code_requires]) + and b4_user_code([b4_percent_code_provides]) in place of + b4_user_requires and b4_user_provides. + * data/glr.c, data/lalr1.cc, data/push.c, data/yacc.c: Likewise. + Add b4_user_code([b4_percent_code_top]) and + b4_user_code([b4_percent_code]). + Invoke b4_check_percent_code_qualifiers. + * src/parse-gram.y (PERCENT_CODE_TOP, PERCENT_PROVIDES, + PERCENT_REQUIRES): Remove. + (grammar_declaration): Remove RHS's for %code-top, %provides, and + %requires. Rewrite the %code RHS as the unqualified form defining the + muscle b4_percent_code. Add another RHS for the qualified %code form, + which defines muscles of the form b4_percent_code_QUALIFIER and the + b4_used_percent_code_qualifiers muscle. + * src/scan-gram.l (PERCENT_CODE_TOP, PERCENT_PROVIDES, + PERCENT_REQUIRES): Remove. + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Update to use + %code "requires" and %code "provides". + * tests/input.at (Reject bad %code qualifiers): New. + +2007-01-03 Joel E. Denny + + Use the new code_props interface for destructors and printers. + * src/symtab.h (symbol, semantic_type): Remove destructor_location and + printer_location members, and change the type of the destructor and + printer members to code_props. + (symbol_destructor_set, symbol_destructor_get, symbol_printer_set, + symbol_printer_get, semantic_type_destructor_set, + semantic_type_printer_set, default_tagged_destructor_set, + default_tagless_destructor_set, default_tagged_printer_set, + default_tagless_printer_set): Use code_props in arguments and return + types in place of char const * and location. + (symbol_destructor_location_get, symbol_printer_location_get): Remove + since the locations are now contained in the return of + symbol_destructor_get and symbol_printer_get. + * src/output.c (symbol_destructors_output, symbol_printers_output): + Replace with... + (symbol_code_props_output): ... this to eliminate duplicate code. + (output_skeleton): Update to use symbol_code_props_output. + * src/reader.c (symbol_should_be_used): Update use of + symbol_destructor_get. + * src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set): + Update uses of the various _destructor_set and _printer_set functions. + * src/symtab.c: (default_tagged_destructor_location, + default_tagless_destructor_location, default_tagged_printer_location, + default_tagless_printer_location): Remove since we... + (default_tagged_destructor, default_tagless_destructor, + default_tagged_printer, default_tagless_printer): ... change the type + of these to code_props. + (symbol_new, semantic_type_new, symbol_destructor_set, + semantic_type_destructor_set, symbol_destructor_get, + symbol_printer_set, semantic_type_printer_set, symbol_printer_get, + symbol_check_alias_consistency, default_tagged_destructor_set, + default_tagless_destructor_set, default_tagged_printer_set, + default_tagless_printer_set): Update. + (symbol_destructor_location_get, symbol_printer_location_get): Remove. + (SYMBOL_CODE_PRINT): New similar to SYMBOL_ATTR_PRINT but for + code_props members. + (symbol_print): Use SYMBOL_CODE_PRINT. + +2007-01-03 Joel E. Denny + + Use the new code_props interface for rule actions. + * src/symlist.h (symbol_list): Replace action, action_location, and + used members with a code_props action_props member. + * src/reader.c (symbol_should_be_used, grammar_rule_check, + grammar_midrule_action, grammar_current_rule_merge_set, + grammar_current_rule_symbol_append, packgram): Update. + * src/scan-code.h (translate_rule_action): Remove, no longer used. + * src/scan-code.l (handle_action_dollar): Update. + (translate_rule_action): Remove, no longer used. + * src/symlist.c (symbol_list_sym_new, symbol_list_syms_print): Update. + +2007-01-02 Joel E. Denny + + Use the new code_props interface in parse-gram.y. + * src/parse-gram.y (prologue_declaration, braceless, epilogue.opt): + Update all uses of translate_* functions to use the new code_props + interface and to use gram_scanner_last_string_free and + code_scanner_last_string_free where possible. + (grammar_declaration): symbol_list_destructor_set and + symbol_list_printer_set now perform the translation, so don't do it + here. Use gram_scanner_last_string_free where possible. + * src/scan-code.h, src/scan-code.l (translate_symbol_action, + translate_code): Remove, no longer used. + * src/symlist.h, src/symlist.c (symbol_list_destructor_set, + symbol_list_printer_set): Perform code translation here rather than + depending on the caller to do so. + + * src/symlist.h (struct symbol_list): Correct some documentation typos. + * src/scan-gram.h (gram_last_string): Remove declaration. + * src/scan-gram.l (last_string): Declare it static. + 2007-01-02 Joel E. Denny Encapsulate code properties and related functionality for the various @@ -18367,8 +18841,8 @@ ----- Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free - Software Foundation, Inc. + 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 + Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted provided the copyright notice and this