* data/bison.m4 (b4_percent_define_flag_if): Correct comments on how
values are interpreted.
* doc/bison.texinfo (Decl Summary): Clean up and extend %define
documentation a little more.
* src/muscle_tab.c (MUSCLE_USER_NAME_CONVERT,
muscle_percent_define_insert, muscle_percent_code_grow): New
functions/macros.
* src/muscle_tab.h (muscle_percent_define_insert,
muscle_percent_code_grow): Prototype.
* src/parse-gram.y (prologue_declaration): Use
muscle_percent_define_insert and muscle_percent_code_grow when parsing
%define and %code directives.
Make it easy to share %define boolean variables between the front-end
and back-end. Though not used yet, this will be useful in the future.
* data/bison.m4 (b4_check_user_names): Rewrite comments to talk about
Bison uses of names rather than just skeleton uses of names.
(b4_percent_define_get, b4_percent_define_ifdef): Rename
b4_percent_define_skeleton_variables(VARIABLE) to
b4_percent_define_bison_variables(VARIABLE).
(b4_percent_code_get, b4_percent_code_ifdef): Rename
b4_percent_code_skeleton_qualifiers(QUALIFIER) to
b4_percent_code_bison_qualifiers(QUALIFIER).
(b4_check_user_names_wrap): Update for renames.
* src/muscle_tab.c, src/muscle_tab.h (muscle_percent_define_flag_if,
muscle_percent_define_default): New functions mimicking
b4_percent_define_flag_if and b4_percent_define_default.
For %define variables, report locations for invalid values and
redefinitions.
* data/bison.m4 (b4_percent_define_flag_if): Read
b4_percent_define_loc(VARIABLE) to report the location of an invalid
value for VARIABLE.
(b4_percent_define_default): Save a special location in
b4_percent_define_loc(VARIABLE) in case the default value for VARIABLE
must later be reported as invalid.
* src/muscle_tab.c (muscle_location_grow, muscle_location_decode): New
functions.
(muscle_percent_define_insert): Record the location of VARIABLE in
muscle percent_define_loc(VARIABLE), and use it to report the previous
location for a redefinition.
(muscle_percent_define_flag_if): Update like b4_percent_define_flag_if.
(muscle_percent_define_default): Update like b4_percent_define_default.
(muscle_grow_user_name_list): Rename to...
(muscle_user_name_list_grow): ... this for consistency and use
muscle_location_grow.
* src/muscle_tab.h (muscle_location_grow): Prototype.
* tests/input.at (%define errors): Update expected output.
* tests/skeletons.at (%define boolean variables: invalid skeleton
defaults): New test case.
(print_reductions): Replace state_default_rule invocation with
equivalent use of yydefact, which was computed in token_actions in
tables.c.
(print_results): Don't allocate lookahead_set.
Sbastien Fricker at
<http://lists.gnu.org/archive/html/bug-bison/2007-02/msg00035.html>.
* THANKS: Add Sbastien 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.
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.
* 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.
%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.
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.
* 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().
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.
* 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.
* 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.
* 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.
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.
can be used anywhere including inside arguments of directives of the
form @foo(...@). Eventually, it should be possible to write an
xgettext-like utility to extract @gettext<...@> text from skeletons.
* data/bison.m4 (b4_check_user_names): Use @gettext<...@> when invoking
b4_warn_at since b4_warn_at doesn't invoke gettext anymore.
* data/glr.cc, data/lalr1.cc: Likewise but for b4_fatal and
b4_complain reporting a push-parsing request or a missing %defines.
* src/scan-skel.l (INITIAL): Recognize `@gettext<' to start...
(SC_AT_GETTEXT_ARG): ... this new start condition where gettext is
invoked.
(SC_AT_DIRECTIVE_ARG): Rename to...
(SC_AT_DIRECTIVE_ARGS): ... this, and recognize `@gettext<' to start
SC_AT_GETTEXT_ARG.
(at_directive_perform): Don't invoke gettext for @warn(...@),
@warn_at(...@), etc. Instead, let the skeletons decide what should be
passed to @gettext<...@>.
* tests/skeletons.at (@gettext<...@>): New test case.
* tests/skeletons.at (installed skeleton file name): Rename to...
(installed skeleton file names): ... this.
Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00071.html>.
* 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.
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.
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.
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.
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.
locals. Reported by Juan Manuel Guerrero at
<http://lists.gnu.org/archive/html/bug-bison/2007-01/msg00000.html>.
* 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.
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): 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.
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
<http://lists.gnu.org/archive/html/bison-patches/2007-01/msg00023.html>.
* 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.
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.