X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/95021767a1e93fa7b83f8a6c5ec5fd5f8064dd2c..d3b129885fc028cf5388841536ad9274af93d61a:/ChangeLog?ds=sidebyside diff --git a/ChangeLog b/ChangeLog index 2e9770aa..5cb1d5a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,637 @@ +2007-02-27 Paolo Bonzini + + * data/lalr1.java: Prefix all private members with yy. + +2007-02-24 Joel E. Denny + + Use YYFPRINTF instead of fprintf where appropriate. Reported by + Sébastien Fricker at + . + * THANKS: Add Sébastien Fricker. + * data/glr.c, data/push.c, data/yacc.c (yy_reduce_print): Implement. + * doc/bison.texinfo (Tracing): Make it clearer that YYFPRINTF must + accept a variable number of arguments. + +2007-02-19 Joel E. Denny + + * bootstrap: Remove occurrences of .#bootmp from lib/Makefile. + +2007-02-13 Juan Manuel Guerrero + + * djgpp/config.bat: Adjustments concerning the use of autoconf 2.61. + * djgpp/config.sed: Adjustments concerning the use of autoconf 2.61. + * djgpp/config.site: Adjustments concerning the use of autoconf 2.61. + +2007-02-11 Paul Eggert + + Undo my 2007-02-07 change, switching back to the c-strcase module + introduced in the 2007-02-03 change. Bruno Haible reported that + the 2007-02-07 change would be dangerous in Turkish if we add a + language whose name contains "i", since "i" is not lowercase "I" + in Turkish. + * bootstrap.conf (gnulib_modules): Add c-strcase. Remove strcase. + * lib/.cvsignore: Add c-ctype.c, c-ctype.h, c-strcase.h, + c-strcasecomp.c, c-strncasecmp.c. Remove strcasecmp.c, strncasecmp.c. + * m4/.cvsignore: Remove strcase.m4. + * src/getargs.c: Revert 2007-02-07 change, as follows. + Include c-strcase.h. + (language_argmatch): Use c_strcasecmp rather than strcasecmp. + +2007-02-11 Bruno Haible + + Enable the Java related testsuite tests when the only Java compiler + found is a gcj < 4.3. Discussed at + . + * configure.ac (gt_JAVACOMP): Don't specify a target_version. + +2007-02-11 Joel E. Denny + + * data/Makefile.am: Update copyright date. + * data/push.c (yypull_parse): Report memory exhaustion and return 2 if + yypstate_new returns NULL. + (yypstate_new): Return NULL if malloc does. + * src/reader.c (packgram): Move translation of rule actions from the + beginning of packgram to... + (check_and_convert_grammar): ... here right before packgram is invoked + so it's easier to write more complete comments, and remove redundant + code. + +2007-02-10 Joel E. Denny + + As in semantic actions, make @$ in %initial-action, %destructor, and + %printer imply %locations. + * src/scan-code.l (SC_SYMBOL_ACTION): Set locations_flag = true when + scanning @$. + * tests/actions.at (AT_CHECK_ACTION_LOCATIONS): New macro supporting... + (@$ in %initial-action implies %locations, + @$ in %destructor implies %locations, + @$ in %printer implies %locations): ... these new test cases. + +2007-02-07 Paul Eggert + + Undo most of the 2007-02-03 change, switching to the strcase module + now that gnulib strcase has been fixed. + * bootstrap.conf (gnulib_modules): Remove c-strcase. Add strcase. + * lib/.cvsignore: Remove c-ctype.c, c-ctype.h, c-strcase.h, + c-strcasecomp.c, c-strncasecmp.c. Add strcasecmp.c, strncasecmp.c + * m4/.cvsignore: Add strcase.m4. + * src/getargs.c: Revert 2007-02-03 change, as follows. + Don't include c-strcase.h. + (language_argmatch): Use strcasecmp rather than c_strcasecmp. + strcasecmp has "unspecified behavior" outside the POSIX locale, + but it works fine in practice if at least one argument is ASCII, + as is the case in Bison. + +2007-02-07 Paolo Bonzini + + * tests/java.at: Skip tests if only one of javac/java is present. + Reported by Joel E. Denny. + * tests/atlocal.in: Adjust copyright years. + +2007-02-05 Paolo Bonzini + + * data/lalr1.java (Stack): Work around old verifiers that disallow + access to the private fields of an inner class, from the outer class. + We can make Stack's fields public because user code doesn't have access + to the instance of Stack used by parse(). Reported by Paul Eggert. + +2007-02-03 Paul Eggert + + * .cvsignore: Add javacomp.sh, javaexec.sh. Is this really + the right spot for these files? + * bootstrap.conf (gnulib_modules): Add c-strcase. + * lib/.cvsignore: Add c-ctype.c c-ctype.h, c-strcasecomp.c, + c-strncasecmp.c. + * src/getargs.c: Include c-strcase.h. + (language_argmatch): Use c_strcasecmp rather than strcasecmp, + to avoid unspecified behavior. + +2007-02-01 Joel E. Denny + + * doc/bison.texinfo (Decl Summary): Correct typo. + +2007-01-30 Paolo Bonzini + + * data/bison.m4 (b4_percent_define_flag_if): Don't treat 0 as false. + Complain if the value does not match empty, "true" or "false". + * data/c++.m4: Adjust default definitions of %define variables. + * data/java.m4: Adjust default definitions of %define variables. + * doc/bison.texinfo (Decl Summary): Adjust the %define entry according + to above behavior. + * tests/input.at (Boolean %define variables): Test new behavior. + +2007-01-29 Paolo Bonzini + + * NEWS: Mention java. + * TODO: Remove things that are done. + * bootstrap.conf: Add javacomp-script and javaexec-script. + * configure.ac: Invoke gt_JAVACOMP and gt_JAVAEXEC. + + * data/Makefile.am: Add new files. + * data/java-skel.m4: New. + * data/java.m4: New. + * data/lalr1.java: New. + + * doc/bison.texinfo: Put "A Complete C++ Example" under + C++ Parsers. Add Java Parsers. Put C++ Parsers and Java Parsers + under Other Languages. + + * src/getargs.c (valid_languages): Add Java. + * src/getargs.h (struct bison_language): Update size of string fields. + + * tests/Makefile.am: Add java.at. + * tests/atlocal.in: Add CONF_JAVA and CONF_JAVAC. + * tests/java.at: New. + * tests/testsuite.at: Include it. + +2007-01-28 Joel E. Denny + + Clean up. + * src/scan-skel.l (at_directive_perform): Add at_directive_argc and + at_directive_argv arguments so these no longer have to be global + variables. Also, update the implementation for the following changes. + (fail_for_at_directive_too_many_args, + fail_for_at_directive_too_few_args): Add at_directive_name argument. + (at_directive_name): Remove as at_directive_argv[0] will be used for + this now. + (AT_DIRECTIVE_ARGC_MAX): Increment to make space in at_directive_argv + for the directive name. + (at_directive_argc, at_directive_argv): Make these local within + skel_lex instead of global. + (INITIAL): Update directive start action for above changes. + (SC_AT_DIRECTIVE_ARG): Rename to... + (SC_AT_DIRECTIVE_ARGS): ... this, and update for above changes. + (SC_AT_DIRECTIVE_SKIP_WS): Update. + (scan_skel): Move yylex_destroy to... + (skel_scanner_free): ... here. + * tests/skeletons.at (installed skeleton file name): Rename to... + (installed skeleton file names): ... this. + +2007-01-27 Joel E. Denny + + * ChangeLog: For changes in doc/bison.texinfo, consistently reference + node names: say "Table of Symbols" not "Bison Symbols", and say "Decl + Summary" not "Directives". + * doc/bison.texinfo (Decl Summary, Calc++ Parser): Cross-reference the + %code entry in "Decl Summary" rather than the one in "Table of Symbols" + since the former is now the more complete one. + (Prologue Alternatives): Likewise and do the same for %defines. + (Table of Symbols): Add summary of %code, add summary of %define, and + move full %code documentation to... + (Decl Summary): ... here for consistency with other entries in these + sections. + Move %define entry in order to keep this list alphabetized. + Reword %define entry a little to put less emphasis on the skeleton + concept, which most users shouldn't have to think about. + +2007-01-26 Paul Eggert + + Adjust to recent gnulib changes. + * lib/.cvsignore: Remove stpcpy.h, strndup.h, strnlen.h. + Add string.h, string_.h, unistd_.h, wchar_.h. + * m4/.cvsignore: Add gnulib-common.m4, string_h.m4, wchar.m4. + * src/system.h: Don't include ; this is now done by + . + +2007-01-23 Paolo Bonzini + + Simplify implementation of unqualified %code, implement macros for + uniform treatment of boolean %define flags. Document %define. + * data/bison.m4 (b4_percent_define_ifdef, b4_percent_define_flag_if, + b4_percent_code_ifdef): New. + (b4_percent_code_get): Map unqualified %code to b4_percent_code(). + * data/c++.m4: Define default value for global_tokens_and_yystype. + * data/glr.cc: Likewise. + * data/location.cc: Use b4_percent_define_flag_if. + + * doc/bison.texinfo (Decl Summary): Document %define. + + * src/parse-gram.y (Unqualified %code): Change muscle name to + b4_percent_code(). + (content.opt): Default to empty. + +2007-01-17 Joel E. Denny + + Implement support for relative and absolute skeleton file names. + Discussed starting at + . + * doc/bison.texinfo (Decl Summary): Document in %skeleton entry. + (Bison Options): Document in --skeleton entry. + * src/output.c (output_skeleton): Use strncpy rather than strcpy since + full_skeleton can't necessarily hold all of pkgdatadir. + If the specified skeleton file name contains a `/', don't prepend + pkgdatadir. + * src/parse-gram.y (prologue_declaration): If the specified skeleton + file name contains a `/', prepend the grammar file directory. + * tests/Makefile.am (TESTSUITE_AT): Add skeletons.at. + * skeletons.at: New file. + (relative skeleton file names): New test case. + (installed skeleton file names): New test case. + * tests/testsuite.at: Include skeletons.at. + + * bootstrap: Update copyright to 2007. + +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. + (Table of 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". + (Table of 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. @@ -383,7 +1017,7 @@ documentation instead. (Calc++ Parser): Use `%require "@value{VERSION}"' rather than `%require "2.3b"' so that the example is always up-to-date. - (Bison Symbols): Add entries for %language and %skeleton. + (Table of Symbols): Add entries for %language and %skeleton. * examples/extexi (normalize): Instead of replacing every %require argument with the current Bison version, just substitute for `@value{VERSION}'. This guarantees that we're testing what actually @@ -418,7 +1052,7 @@ * doc/bison.texinfo (C++ Parser Interface): Prefer %language over %skeleton. - (Directives): Document %language and %skeleton. + (Decl Summary): Document %language and %skeleton. (Command line): Document -L. * examples/extexi: Rewrite %require directive. @@ -619,7 +1253,7 @@ (2.3a): Annotate this entry to say the old forms of these features were also experimental. * doc/bison.texinfo (Prologue Alternatives, Freeing Discarded Symbols, - Bison Symbols): Say they're experimental. Comment out any mention + Table of Symbols): Say they're experimental. Comment out any mention of Java (we'll want this back eventually). 2006-12-01 Joel E. Denny @@ -628,7 +1262,7 @@ %file-prefix, %name-prefix, and %output. Discussed at . * NEWS (2.3a+): Mention. - * doc/bison.texinfo (Decl Summary, Bison Symbols): Add entry for new + * doc/bison.texinfo (Decl Summary, Table of Symbols): Add entry for new form of %defines, and remove `=' from entries for %file-prefix, %name-prefix, and %output. * src/parse-gram.y (prologue_declaration): Implement. @@ -658,7 +1292,7 @@ Rename to <>. Discussed starting at . * NEWS (2.3a+): Update. - * doc/bison.texinfo (Freeing Discarded Symbols, Bison Symbols): + * doc/bison.texinfo (Freeing Discarded Symbols, Table of Symbols): Update. * src/parse-gram.y (TYPE_TAG_NONE, generic_symlist_item): Implement. * src/scan-gram.l (INITIAL): Implement. @@ -834,7 +1468,7 @@ * NEWS (2.3a+): Mention. * doc/bison.texinfo (Freeing Discarded Symbols): Document this and the previous change today related to mid-rules. - (Bison Symbols): Remove %symbol-default and add <*> and . + (Table of Symbols): Remove %symbol-default and add <*> and . * src/parse-gram.y (PERCENT_SYMBOL_DEFAULT): Remove. (TYPE_TAG_ANY): Add as <*>. (TYPE_TAG_NONE): Add as . @@ -927,8 +1561,8 @@ alternatives to... (Prologue Alternatives): ... this new section, and extend it to discuss all 4 directives in detail. - (Bison Symbols): Clean up discussion of prologue alternatives and add - %code-top. + (Table of Symbols): Clean up discussion of prologue alternatives and + add %code-top. 2006-10-16 Juan Manuel Guerrero @@ -1384,7 +2018,7 @@ . * NEWS (2.3+): Add %symbol-default to example. * bison.texinfo (Freeing Discarded Symbols): Likewise. - (Bison Symbols): Add entry for %symbol-default. + (Table of Symbols): Add entry for %symbol-default. * src/parse-gram.y (PERCENT_SYMBOL_DEFAULT): New token. (generic_symlist, generic_symlist_item): New nonterminals for creating a list in which each item is a symbol, semantic type, or @@ -2026,7 +2660,7 @@ prologue blocks with %*-header declarations. (Calc++ Parser): Likewise. (Bison Declaration Summary): Update names. - (Bison Symbols): Update description. + (Table of Symbols): Update description. * src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to... (PERCENT_END_HEADER): ... this. (PERCENT_BEFORE_DEFINITIONS): Update to... @@ -2107,7 +2741,7 @@ 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 + (Table of Symbols): Add entries for %before-definitions and %after-definitions. * src/parse-gram.y (PERCENT_BEFORE_DEFINITIONS): New token for %before-definitions. @@ -3197,7 +3831,7 @@ in the yychar entry. In the yychar entry, remove mention of the local yychar case (pure parser) since this is irrelevant information when writing semantic - actions and since it's already discussed in `Bison Symbols' where + actions and since it's already discussed in `Table of Symbols' where yychar is otherwise described as an external variable. In the yychar entry, don't call it the `current' look-ahead since it isn't when semantic actions are deferred. @@ -3208,7 +3842,7 @@ `current' look-ahead, and do mention yylval and yylloc. (Error Recovery): Cross-reference `Action Features' when mentioning yyclearin. - (Bison Symbols): In the yychar entry, don't call it the `current' + (Table of Symbols): In the yychar entry, don't call it the `current' look-ahead. In the yylloc and yylval entries, mention look-ahead usage.