]> git.saurik.com Git - bison.git/log
bison.git
18 years agoSupport a file name argument to %defines. Deprecate `=' in
Joel E. Denny [Sat, 2 Dec 2006 01:52:16 +0000 (01:52 +0000)] 
Support a file name argument to %defines.  Deprecate `=' in
%file-prefix, %name-prefix, and %output.  Discussed at
<http://lists.gnu.org/archive/html/help-bison/2006-09/msg00001.html>.
* NEWS (2.3a+): Mention.
* doc/bison.texinfo (Decl Summary, Bison 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.
* tests/calc.at (Simple LALR Calculator, Simple GLR Calculator, Simple
LALR1 C++ Calculator, Simple GLR C++ Calculator): Remove the `=' from
all but one occurrence of %name-prefix.
* tests/headers.at (export YYLTYPE): Remove the `=' from %name-prefix.
* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Likewise.
* tests/output.at (AT_CHECK_OUTPUT): Remove the `=' from all but one
occurrence of each of %file-prefix and %output.  Add check for %defines
with argument.
* tests/reduce.at (Useless Terminals, Useless Nonterminals,
Useless Rules, Reduced Automaton, Underivable Rules, Empty Language):
Remove the `=' from %output.

18 years agoDon't escape $ in test case titles since Autoconf 2.61 now does that
Joel E. Denny [Tue, 21 Nov 2006 07:07:35 +0000 (07:07 +0000)] 
Don't escape $ in test case titles since Autoconf 2.61 now does that
correctly.
* tests/actions.at (Default %printer and %destructor are not for error
or $undefined): Here.
(Default %printer and %destructor are not for $accept): Here.
* tests/input.at (Invalid $n and @n): Here.

18 years agoRename <!> to <>. Discussed starting at
Joel E. Denny [Tue, 21 Nov 2006 00:43:26 +0000 (00:43 +0000)] 
Rename <!> to <>.  Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-11/msg00039.html>.
* NEWS (2.3a+): Update.
* doc/bison.texinfo (Freeing Discarded Symbols, Bison Symbols):
Update.
* src/parse-gram.y (TYPE_TAG_NONE, generic_symlist_item): Implement.
* src/scan-gram.l (INITIAL): Implement.
* src/symlist.c (symbol_list_default_tagless_new): Update comment.
* src/symlist.h (symbol_list, symbol_list_default_tagless_new): Update
comment.
* tests/actions.at (Default tagless %printer and %destructor,
Default tagged and per-type %printer and %destructor,
Default %printer and %destructor are not for error or $undefined,
Default %printer and %destructor are not for $accept,
Default %printer and %destructor for mid-rule values): Update.
* tests/input.at (Default %printer and %destructor redeclared,
Unused values with default %destructor): Update.

18 years agoDon't let %prec take a nonterminal.
Joel E. Denny [Fri, 17 Nov 2006 20:07:08 +0000 (20:07 +0000)] 
Don't let %prec take a nonterminal.
* src/reader.c (grammar_current_rule_prec_set): Make the %prec symbol a
token.
* tests/input.at (%prec takes a token): New test checking that %prec
won't take a nonterminal.

18 years agoRemove last commit at the request of Paul Eggert.
Joel E. Denny [Sun, 12 Nov 2006 07:39:37 +0000 (07:39 +0000)] 
Remove last commit at the request of Paul Eggert.

18 years ago* src/symlist.h (symbol_list): Fix typos in comments.
Joel E. Denny [Sat, 11 Nov 2006 07:35:15 +0000 (07:35 +0000)] 
* src/symlist.h (symbol_list): Fix typos in comments.

18 years agoEncapsulate code properties and related functionality for the various
Joel E. Denny [Sat, 11 Nov 2006 06:57:39 +0000 (06:57 +0000)] 
Encapsulate code properties and related functionality for the various
destructors, printers, and actions into a code_props structure and
interface.
* src/location.h (EMPTY_LOCATION_INIT): Define so that it's easier to
consistently initialize const structs that have an empty location field.
* src/location.c (empty_location): Initialize with EMPTY_LOCATION_INIT
to ensure consistency.
* 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/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/reader.c: Update to use code_props interface for destructors and
rule actions.
* src/scan-code.h (code_props): New structure.
(code_props_none_init, CODE_PROPS_NONE_INIT, code_props_none): New
function, macro, and const global variable for initializing a
code_props with no code.
(code_props_plain_init, code_props_symbol_action_init,
code_props_rule_action_init, code_props_translate_code,
code_props_code_get, code_props_location_get,
code_props_is_value_used): The rest of the new code_props interface.
(translate_rule_action, translate_symbol_action, translate_code):
Remove as these are now just special cases within
code_props_translate_code, which is switched on the code_props kind.
(code_scanner_last_string_free): New function similar to
gram_scanner_last_string_free.
* src/scan-code.l: Implement the new interface.
(last_string): New static global similar to the one in scan-gram.l.
(SC_SYMBOL_ACTION): For $$, set the is_value_used member of the
code_props since Bison will one day use this information for
destructors and printers.
(<*><<EOF>>): Use STRING_FINISH so that last_string is set.
(handle_action_dollar): Update to use the code_props interface of rule
actions.  Use symbol_list_n_get and set is_value_used directly since
symbol_list_n_used_set is removed.
* src/symlist.h, src/symlist.c (symbol_list): Replace action,
action_location, and used members with a code_props member, and update
all uses.
(symbol_list_n_used_set): Remove since it would need to break the
encapsulation of code_props.
(symbol_list_destructor_set, symbol_list_printer_set): Perform code
translation here rather than depending on the caller to do so.
* 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_location_get, symbol_printer_location_get): Remove
unneeded.
(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 const char * and location.
* src/symtab.c: Update implementation for interface and struct changes.
(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_CODE_PRINT): New similar to SYMBOL_ATTR_PRINT but for
code_props members.
(symbol_print): Use SYMBOL_CODE_PRINT.

* src/scan-gram.h (gram_last_string): Remove declaration.
* src/scan-gram.l (last_string): Declare it static.

18 years ago* tests/testsuite.at (AT_CHECK): Don't miss an exit value of 0 because
Joel E. Denny [Sat, 11 Nov 2006 04:12:48 +0000 (04:12 +0000)] 
* tests/testsuite.at (AT_CHECK): Don't miss an exit value of 0 because
it was double-quoted.

18 years ago* src/Makefile.am (YACC): Use --warnings=all,error so that Bison's own
Joel E. Denny [Fri, 10 Nov 2006 06:11:21 +0000 (06:11 +0000)] 
* src/Makefile.am (YACC): Use --warnings=all,error so that Bison's own
grammar is maintained with Bison's highest standards.
* src/getargs.c: Fix some typos in Doxygen comments.

18 years agoFix memory leaks in scanners generated by at least Flex 2.5.9 and
Joel E. Denny [Fri, 10 Nov 2006 05:26:26 +0000 (05:26 +0000)] 
Fix memory leaks in scanners generated by at least Flex 2.5.9 and
later.  Reported by Paul Eggert in
<http://lists.gnu.org/archive/html/bison-patches/2006-11/msg00014.html>.
* src/flex-scanner.h (yylex_destroy): Define for Flex before 2.5.9.
* src/scan-code.l (translate_action): Don't bother invoking
yy_delete_buffer (YY_CURRENT_BUFFER) before creating the first buffer.
(code_scanner_free): Instead of invoking
yy_delete_buffer (YY_CURRENT_BUFFER) directly, invoke yylex_destroy,
which frees more.
* src/scan-gram.l (gram_scanner_free): Likewise.
* src/scan-skel.l (scan_skel): Likewise.

18 years ago* src/files.c (tr): Change return type to void.
Joel E. Denny [Thu, 9 Nov 2006 18:17:05 +0000 (18:17 +0000)] 
* src/files.c (tr): Change return type to void.
* src/muscle_tab.c (muscle_insert): Free storage in case muscle_grow
has been called previously for the same key.
(muscle_find): Return storage instead of value so that
--enable-gcc-warnings doesn't produce warnings that the return discards
const.  aver that the value and storage are the same since storage
could potentially be NULL when value is not.
* tests/testsuite.at (AT_CHECK): Treat an unspecified exit value the
same as 0.

18 years ago* bootstrap.conf (excluded_files): Exclude m4/codeset.m4 (undoing
Paul Eggert [Wed, 8 Nov 2006 20:41:55 +0000 (20:41 +0000)] 
* bootstrap.conf (excluded_files): Exclude m4/codeset.m4 (undoing
the earlier change today), m4/intl.m4, m4/intldir.m4.  This gives
us a slightly cleaner distribution, and also works.
* m4/.cvsignore: Add inline.m4, wint_t.m4 to accommodate recent
gnulib changes.

18 years agoRegenerate.
Paul Eggert [Wed, 8 Nov 2006 20:32:19 +0000 (20:32 +0000)] 
Regenerate.

18 years agoDon't let Bison leak memory except when it complains.
Paul Eggert [Wed, 8 Nov 2006 20:28:57 +0000 (20:28 +0000)] 
Don't let Bison leak memory except when it complains.
* src/files.h (parser_file_name, spec_verbose_file, spec_graph_file):
(spec_defines_file, dir_prefix): Now char *, not const char *,
since they are freed.
* src/files.c: Likewise.
(all_but_ext, all_but_tab_ext, src_extension, header_extension):
Likewise.
(tr): Now operates in-place.  All uses changed.
(compute_exts_from_gf, compute_exts_from_src): Don't leak temporary
values.
(compute_file_name_parts, compute_output_file_names): Don't store
read-only data in variables that will be freed.
(compute_output_file_names): Free all_but_ext, all_but_tab_ext,
src_extension, and header_extension.
(output_file_names_free): New public function to free
spec_verbose_file, spec_graph_file, spec_defines_file,
parser_file_name, and dir_prefix.
* src/getargs.c (getargs): Don't store read-only data in variables that
will be freed.
* src/main.c (main): Invoke output_file_names_free, code_scanner_free
(which previously existed but was unused), and quotearg_free.
* src/muscle_tab.h (muscle_insert): value arg is now a `char const *'.
* src/muscle_tab.c: Likewise.
(muscle_entry): Make the value char const *,
and add a new storage member that is char * and can be freed.
(muscle_entry_free): New private function.
(muscle_init): Use it instead of free.
(muscle_insert, muscle_grow): Update and use new storage member.
(muscle_code_grow): Free the string passed to muscle_grow
since it's not needed anymore.
* src/parse-gram.y (%union): Make `chars' member a `char const *', and
add a new `char *code' member.
("{...}"): Declare semantic type as code.
* src/scan-code.h (translate_rule_action):
(translate_symbol_action, translate_code, translate_action): Return
`char const *' rather than `char *' since external code should not free
these strings.
* src/scan-code.l: Likewise.
* src/scan-gram.l (<SC_BRACED_CODE>): Use val->code for BRACED_CODE,
which is "{...}" in the parser.
* tests/Makefile.am (maintainer-check-valgrind): Set
VALGRIND_OPTS='--leak-check=full --show-reacheable=yes' before invoking
Valgrind.
* tests/calc.at (_AT_DATA_CALC_Y): fclose the FILE* so Valgrind doesn't
complain.
* tests/testsuite.at (AT_CHECK): Redefine so that running Bison and
expecting a non-zero exit status sets --leak-check=summary and
--show-reachable=no for Valgrind.  Bison unabashedly leaks memory in
this case, and we don't want to hear about it.

18 years ago* bootstrap (runtime-po/Makevars): Derive from po/Makevars
Paul Eggert [Wed, 8 Nov 2006 20:01:48 +0000 (20:01 +0000)] 
* bootstrap (runtime-po/Makevars): Derive from po/Makevars
instead of from the template, to simplify configuration a bit.
* bootstrap.conf (excluded_files): Don't exclude m4/codeset.m4
and m4/wint_t.m4, as they are needed with the latest gnulib.

18 years agoDisable unset/unused mid-rule value warnings by default, and recognize
Joel E. Denny [Wed, 1 Nov 2006 06:09:40 +0000 (06:09 +0000)] 
Disable unset/unused mid-rule value warnings by default, and recognize
--warnings=midrule-values to enable them.  Discussed starting at
<http://lists.gnu.org/archive/html/help-bison/2006-10/msg00030.html>.
* NEWS (2.3a+): Mention.
* src/getargs.c, src/getargs.h (warnings_args, warnings_types, enum
warnings): Add entry for midrule-values subargument.
* src/reader.c (symbol_should_be_used): Don't return true just because
the value is a set/used mid-rule value unless
--warnings=midrule-values was specified.
* tests/input.at (Unused values, Unused values before symbol
declarations): Run tests with and without --warnings=midrule-values.

* src/reader.c (check_and_convert_grammar): Use symbol_list_free rather
than LIST_FREE directly.

18 years agoFinish implementing --warnings=error, which should not be implied by
Joel E. Denny [Wed, 1 Nov 2006 01:47:44 +0000 (01:47 +0000)] 
Finish implementing --warnings=error, which should not be implied by
--warnings=all (or by its synonyms -W and --warnings without
subarguments).
* src/complain.c (set_warning_issued): New function to report that
warnings are being treated as errors and to record an error if so.
Invoke...
(warn_at, warn): ... here.
* src/getargs.c (warnings_args, warnings_types): Reorder so that
"error - warnings are errors" does not appear above "all - all of the
above".
(getargs): For -W and --warnings without subarguments, don't let
FLAGS_ARGMATCH set warnings_error in warnings_flag.
* src/getargs.h (enum warnings): Unset warnings_error in warnings_all.

18 years ago* src/getargs.c (flags_argmatch): Don't cause segmentation fault for
Joel E. Denny [Tue, 31 Oct 2006 22:24:57 +0000 (22:24 +0000)] 
* src/getargs.c (flags_argmatch): Don't cause segmentation fault for
empty subargument list.  For example: `bison  --warnings=  parser.y'.

18 years ago* data/push.c, data/yacc.c: Make sure there's a newline at the end of
Joel E. Denny [Sun, 22 Oct 2006 00:28:16 +0000 (00:28 +0000)] 
* data/push.c, data/yacc.c: Make sure there's a newline at the end of
the parser header file so that gcc doesn't warn.

18 years agoSplit the default %destructor/%printer into two kinds: <*> and <!>.
Joel E. Denny [Sat, 21 Oct 2006 10:03:35 +0000 (10:03 +0000)] 
Split the default %destructor/%printer into two kinds: <*> and <!>.
Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00060.html>.
* 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 <!>.
* src/parser-gram.y (PERCENT_SYMBOL_DEFAULT): Remove.
(TYPE_TAG_ANY): Add as <*>.
(TYPE_TAG_NONE): Add as <!>.
(generic_symlist_item): Remove RHS for %symbol-default and add RHS's
for <*> and <!>.
* src/scan-gram.l (PERCENT_SYMBOL_DEFAULT): Remove.
(TYPE_TAG_ANY, TYPE_TAG_NONE): Add.
* src/symlist.c (symbol_list_default_new): Split into tagged and
tagless versions.
(symbol_list_destructor_set, symbol_list_printer_set): Split
SYMLIST_DEFAULT case into SYMLIST_DEFAULT_TAGGED and
SYMLIST_DEFAULT_TAGLESS.
* src/symlist.h: Update symbol_list_default*_new prototypes.
(symbol_list.content_type): Split enum value SYMLIST_DEFAULT into
SYMLIST_DEFAULT_TAGGED and SYMLIST_DEFAULT_TAGLESS.
* src/symtab.c (default_destructor, default_destructor_location,
default_printer, default_printer_location): Split each into tagged and
tagless versions.
(symbol_destructor_get, symbol_destructor_location_get,
symbol_printer_get, symbol_printer_location_get): Implement tagged
default and tagless default cases.
(default_destructor_set, default_printer_set): Split each into tagged
and tagless versions.
* src/symtab.h: Update prototypes.
* tests/actions.at (Default %printer and %destructor): Rename to...
(Default tagless %printer and %destructor): ... this, and extend.
(Per-type %printer and %destructor): Rename to...
(Default tagged and per-type %printer and %destructor): ... this, and
extend.
(Default %printer and %destructor for user-defined end token): Extend.
(Default %printer and %destructor are not for error or $undefined):
Update.
(Default %printer and %destructor are not for $accept): Update.
(Default %printer and %destructor for mid-rule values): Extend.
* tests/input.at (Default %printer and %destructor redeclared): Extend.
(Unused values with default %destructor): Extend.

18 years agoDon't apply the default %destructor/%printer to an unreferenced midrule
Joel E. Denny [Sat, 21 Oct 2006 04:52:43 +0000 (04:52 +0000)] 
Don't apply the default %destructor/%printer to an unreferenced midrule
value.  Mentioned at
<http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00104.html>.
* src/symtab.c (dummy_symbol_get): Name all dummy symbols initially
like $@n instead of just @n so that the default %destructor/%printer
logic doesn't see them as user-defined symbols.
(symbol_is_dummy): Check for both forms of the name.
* src/reader.c (packgram): Remove the `$' from each midrule symbol
name for which the midrule value is referenced in any action.
* tests/actions.at (Default %printer and %destructor for mid-rule
values): New test.
* tests/regression.at (Rule Line Numbers, Web2c Report): Update output
for change to dummy symbol names.

18 years agoWarn about unset midrule $$ if the corresponding $n is used.
Joel E. Denny [Sat, 21 Oct 2006 02:31:50 +0000 (02:31 +0000)] 
Warn about unset midrule $$ if the corresponding $n is used.
* src/reader.c (symbol_should_be_used): Check midrule parent rule for
$n usage.
(packgram): Before invoking grammar_rule_check on any rule, make sure
all actions have already been scanned in order to set `used' flags.
Otherwise, checking that a midrule's $$ is set will not always work
properly because the midrule check must forward-reference the midrule's
parent rule.
* tests/input.at (AT_CHECK_UNUSED_VALUES): Extend to check the new
warning.

18 years agoMore improvements to the documentation of the prologue alternatives:
Joel E. Denny [Fri, 20 Oct 2006 22:10:50 +0000 (22:10 +0000)] 
More improvements to the documentation of the prologue alternatives:
* NEWS (2.3a+): Mention the new `Prologue Alternatives' section in the
Bison manual.
* doc/bison.texinfo (Prologue Alternatives): Correct some errors.  Add
some text to clarify the relative importance of the new directives and
to show how these directives may be viewed as code labels.

18 years ago* doc/bison.texinfo (Prologue Alternatives): Fix a tiny typo.
Joel E. Denny [Mon, 16 Oct 2006 05:48:34 +0000 (05:48 +0000)] 
* doc/bison.texinfo (Prologue Alternatives): Fix a tiny typo.

18 years agoSimilar to the recently removed %before-header, add %code-top as the
Joel E. Denny [Mon, 16 Oct 2006 05:25:36 +0000 (05:25 +0000)] 
Similar to the recently removed %before-header, add %code-top as the
alternative to the pre-prologue.  Mentioned at
<http://lists.gnu.org/archive/html/bison-patches/2006-10/msg00063.html>.
Also, let the prologue alternatives appear in the grammar section.
* src/parse-gram.y (PERCENT_CODE_TOP): New token.
(prologue_declaration): Move the existing prologue alternatives to...
(grammar_declaration): ... here and add %code-top.
* src/scan-gram.l (PERCENT_CODE_TOP): New token.

Clean up and extend documentation for the prologue alternatives.
* NEWS (2.3a+): Describe prologue alternatives.
* doc/bison.texinfo (Prologue): Move discussion of prologue
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.

18 years agodjgpp/config.site: Adjust config.sed for the use of autoconf 2.60.
Juan Manuel Guerrero [Sun, 15 Oct 2006 22:38:37 +0000 (22:38 +0000)] 
djgpp/config.site: Adjust config.sed for the use of autoconf 2.60.

18 years agodjgpp/config.sed: Adjust config.sed for the use of autoconf 2.60.
Juan Manuel Guerrero [Sun, 15 Oct 2006 22:38:27 +0000 (22:38 +0000)] 
djgpp/config.sed: Adjust config.sed for the use of autoconf 2.60.

18 years agodjgpp/config.bat: config.hin has been moved to lib. Adjust
Juan Manuel Guerrero [Sun, 15 Oct 2006 22:38:13 +0000 (22:38 +0000)] 
djgpp/config.bat: config.hin has been moved to lib. Adjust
config.bat accordingly.

18 years agoDJGPP specific issues.
Juan Manuel Guerrero [Sun, 15 Oct 2006 22:37:54 +0000 (22:37 +0000)] 
DJGPP specific issues.

18 years agofix previous changelog entry
Paolo Bonzini [Sun, 15 Oct 2006 12:38:16 +0000 (12:38 +0000)] 
fix previous changelog entry

18 years ago2006-10-16 Paolo Bonzini <bonzini@gnu.org>
Paolo Bonzini [Sun, 15 Oct 2006 12:37:07 +0000 (12:37 +0000)] 
2006-10-16  Paolo Bonzini  <bonzini@gnu.org>

* data/bison.m4 (b4_user_requires, b4_user_provides): New.
(b4_user_start_header): Remove.
* data/glr.c: Use new macros instead of b4_*start_header
and b4_*end_header.
* data/glr.cc: Likewise.
* data/lalr1.cc: Likewise.
* data/push.c: Likewise.
* data/yacc.c: Likewise.

* doc/bison.texinfo: Remove %before-header, rename
%{start,end,after}-header to %requires, %provides, %code.

* src/parse-gram.y: Likewise (also rename token names accordingly).
* src/scan-gram.l: Likewise.
* tests/actions.at: Likewise.

18 years ago* lib/Makefile.am (AM_CFLAGS): Remove $(WERROR_CFLAGS).
Paul Eggert [Sun, 15 Oct 2006 04:31:23 +0000 (04:31 +0000)] 
* lib/Makefile.am (AM_CFLAGS): Remove $(WERROR_CFLAGS).
Problem reported by Joel E. Denny.

2006-10-14  Jim Meyering  <jim@meyering.net>

(Sync from coreutils.)
Work also when the working directory (with e.g. coreutils sources)
is version controlled with git, rather than CVS.
* bootstrap (CVS_only_file): Test for the existence of README-cvs,
rather than CVS.
In messages and comments, say e.g., "checked-out sources",
rather than "CVS sources".
(version_controlled_file): New function.  Work for git as well as
for CVS.  Don't use grep's -q option.
(slurp): Call it here, in place of CVS-specific code.

18 years agoFix testsuite for ./configure --enable-gcc-warnings:
Joel E. Denny [Sun, 15 Oct 2006 00:02:21 +0000 (00:02 +0000)] 
Fix testsuite for ./configure --enable-gcc-warnings:
* configure.ac (gcc-warnings): Move -Wall before -Wno-sign-compare.
Otherwise, gcc 4.1.0 (at least) warns about sign comparisons in
__AT_CHECK_PRINTER_AND_DESTRUCTOR in tests/actions.at.
* test/input.at (Torturing the Scanner): #include <stdlib.h> for abort.
* test/regression.at (Diagnostic that expects two alternatives):
Likewise.

18 years ago* bootstrap.conf (gnulib_modules): Add config-h.
Paul Eggert [Fri, 13 Oct 2006 05:00:26 +0000 (05:00 +0000)] 
* bootstrap.conf (gnulib_modules): Add config-h.
* djgpp/subpipe.c: Include <config.h> unconditionally; don't
worry about HAVE_CONFIG_H.
* lib/abitset.c: Likewise.
* lib/bitset.c: Likewise.
* lib/bitset_stats.c: Likewise.
* lib/bitsetv-print.c: Likewise.
* lib/bitsetv.c: Likewise.
* lib/ebitset.c: Likewise.
* lib/get-errno.c: Likewise.
* lib/lbitset.c: Likewise.
* lib/subpipe.c: Likewise.
* lib/timevar.c: Likewise.
* lib/vbitset.c: Likewise.
* lib/bitset.c: Include "bitset.h" first, to test interface.
* lib/bitset_stats.c: Include "bitset_stats.h" first.
* lib/bitsetv-print.c: Include "bitsetv-print.h" first.
* lib/bitsetv.c: Include "bitsetv.h" first.
* lib/get-errno.c: Include "get-errno.h" first.
* m4/.cvsignore: Add config-h.m4.
* tests/actions.at (Default %printer and %destructor for ...):
Adjust expected line numbers in output to reflect removal of #if
HAVE_CONFIG_H lines.
* tests/glr-regression.at (Missed %merge type warnings when ...):
Likewise.
* tests/regression.at (Braced code in declaration in rules section):
Likewise.
* tests/atlocal.in (CPPFLAGS): Don't define HAVE_CONFIG_H.
* tests/local.at (AT_DATA_GRAMMAR_PROLOGUE):
Include <config.h> unconditionally.

18 years ago* bootstrap: Sync from coreutils, as follows:
Paul Eggert [Fri, 13 Oct 2006 04:37:19 +0000 (04:37 +0000)] 
* bootstrap: Sync from coreutils, as follows:

2006-10-11  Paul Eggert  <eggert@cs.ucla.edu>

* bootstrap (symlink_to_gnulib): Fix bug: the dot_dots shell
variable was sometimes used without being initialized.  This
messed up the installation of the INSTALL file in some cases.

2006-10-09  Paul Eggert  <eggert@cs.ucla.edu>

* bootstrap (usage, main program, symlink_to_gnulib): Add option
--copy.  Inspired by a suggestion from Bruno Haible.

2006-10-03  Jim Meyering  <jim@meyering.net>

* bootstrap: Undo last change to this file, since now gnulib-tool
sticks with the automake default in generating dependencies.

18 years ago* configure.ac: Use AC_PROG_CC_STDC; this is more modern than
Paul Eggert [Fri, 13 Oct 2006 04:09:14 +0000 (04:09 +0000)] 
* configure.ac: Use AC_PROG_CC_STDC; this is more modern than
the old AC_PROG_CC / AM_PROG_CC_STDC combination.

* doc/bison.1: Add copyright notice.

* data/glr.c: Don't include <stdarg.h>; not used.

18 years agoCredit Satya for the graphviz change.
Paul Eggert [Thu, 12 Oct 2006 23:35:24 +0000 (23:35 +0000)] 
Credit Satya for the graphviz change.

18 years ago* NEWS: The -g and --graph options now output graphs in Graphviz
Paul Eggert [Thu, 12 Oct 2006 23:29:52 +0000 (23:29 +0000)] 
* NEWS: The -g and --graph options now output graphs in Graphviz
DOT format, not VCG format.
* doc/bison.1: Likewise.
* doc/bison.texinfo (Understanding, Bison Options): Likewise.
* TODO: Remove Graphviz entry.
* src/Makefile.am (bison_SOURCES): Add graphviz.c and graphviz.h;
remove vcg.c, vcg.h, vcg_defaults.h.
* src/vcg.c, src/vcg.h, src/vcg_defaults.h: Remove.
* src/graphviz.c, src/graphviz.h: New files.
* src/files.c (compute_output_file_names): Output .dot, not .vcg.
* src/files.h: Make comment more generic.
* src/main.c (main): Likewise.
* src/print_graph.h: Likewise.
* src/getargs.c (usage): Make usage description more generic.
* src/print_graph.c: Include graphviz.h rather than vcg.h.
(static_graph, fgraph): Remove.  All uses changed to pass
arguments instead of sharing a static var.
(print_core, print_actions, print_state, print_graph):
Output graphviz format rather than VCG format.
* tests/.cvsignore: Remove *.vcg; add *.dot.
* tests/output.at: Expect *.dot files, not *.vcg files.

18 years ago* data/Makefile.am (dist_pkgdata_DATA): Add bison.m4; this
Paul Eggert [Thu, 12 Oct 2006 22:40:52 +0000 (22:40 +0000)] 
* data/Makefile.am (dist_pkgdata_DATA): Add bison.m4; this
accommodates the 2006-10-08 change.

18 years ago* data/push.c (yypushparse, yypvarsinit, yypvars): Wrap in b4_push_if.
Paul Eggert [Thu, 12 Oct 2006 05:47:58 +0000 (05:47 +0000)] 
* data/push.c (yypushparse, yypvarsinit, yypvars): Wrap in b4_push_if.
(b4_yyssa, b4_yyerror_range): New macros.
(struct yypvars): Remove yyssa_ptr and yyerror_range_ptr fields.
(yypvarsinit): Remove init of removed fields.
(yypushparse): Remove use of removed fields; use new macros instead.

18 years agoFix missing bracket.
Paul Eggert [Wed, 11 Oct 2006 19:13:48 +0000 (19:13 +0000)] 
Fix missing bracket.

18 years ago* data/push.c (yypushparse): Fix memory leak if yymsg is malloced
Paul Eggert [Wed, 11 Oct 2006 16:35:34 +0000 (16:35 +0000)] 
* data/push.c (yypushparse): Fix memory leak if yymsg is malloced
in a push parser.  Reindent slightly to match yacc.c better.

2006-10-11  Bob Rossi  <bob@brasko.net>

        * data/push.c (struct yypvars): Remove yymsgbuf, yymsgbuf_ptr, yymsg,
        yymsg_alloc fields.
        (yypvarsinit, yypushparse): Remove init of removed fields.
        (yypushparse): Use yymsgbuf instead of yymsgbuf_ptr.

18 years ago* THANKS: Add Paolo Bonzini and Bob Rossi.
Paul Eggert [Mon, 9 Oct 2006 16:18:52 +0000 (16:18 +0000)] 
* THANKS: Add Paolo Bonzini and Bob Rossi.

18 years ago2006-10-08 Paolo Bonzini <bonzini@gnu.org>
Paolo Bonzini [Sun, 8 Oct 2006 11:07:02 +0000 (11:07 +0000)] 
2006-10-08  Paolo Bonzini  <bonzini@gnu.org>

* data/c.m4 (b4_copyright, b4_epilogue, b4_location_initial_column,
b4_location_initial_line, p4_parse_param, b4_ints_in, b4_flag_if,
b4_define_flag_if and uses, b4_basename, b4_syncline, b4_user_code,
b4_define_user_cde and uses): Remove.
(b4_comment, b4_prefix, b4_sync_start): New.
* data/bison.m4: New file, with most of the content removed from c.m4.
* src/muscle_tab.h: Use "do {...} while(0)" throughout.
* src/output.c (output_skeleton): Pass bison.m4.
(prepare): Pass glr_flag and nondeterministic_flag.  Pass prefix
only if specified.

18 years agoFix test failure reported by Tom Lane in
Paul Eggert [Fri, 6 Oct 2006 06:57:00 +0000 (06:57 +0000)] 
Fix test failure reported by Tom Lane in
<http://lists.gnu.org/archive/html/bug-bison/2006-10/msg00000.html>
and try to make such failures easier to catch in the future.
* data/glr.c (YYTRANSLATE): Don't check for nonpositive arg;
that's now the caller's responsibility.
(yyprocessOneStack, yyrecoverSyntaxError, yyparse):
Set yychar = YYEOF if it's negative.
* tests/actions.at (yylex): Abort if asked to read past EOF.
* tests/conflicts.at (yylex): Likewise.
* tests/cxx-type.at (yylex): Likewise.
* tests/glr-regression.at (yylex): Likewise.
* tests/input.at (yylex): Likewise.
* tests/regression.at (yylex): Likewise.
* tests/torture.at (yylex): Likewise.

18 years agoFix problems with translating English-language diagnostics.
Paul Eggert [Sun, 1 Oct 2006 23:35:37 +0000 (23:35 +0000)] 
Fix problems with translating English-language diagnostics.
* bootstrap: Fix bug introduced in recent bootstrap changes, with
respect to bison-runtime pot generation.  The YY_ stuff
wasn't being captured.
* bootstrap.conf (XGETTEXT_OPTIONS_RUNTIME): New var.
* po/POTFILES.in: Add src/location.c, src/scan-code.l.
* runtime-po/POTFILES.in: Add data/push.c.

18 years agoMerge bootstrap changes from coreutils.
Paul Eggert [Sat, 30 Sep 2006 05:21:35 +0000 (05:21 +0000)] 
Merge bootstrap changes from coreutils.

2006-09-28  Jim Meyering  <jim@meyering.net>

Automatically generated dependencies are important even
when all of the sources in a directory come from gnulib.
* bootstrap (gnulib_tool): Remove the "no-dependencies" automake
option that gnulib-tool adds to what becomes our lib/gnulib.mk.

2006-09-23  Jim Meyering  <jim@meyering.net>

* bootstrap (gnulib_tool_options): Add "--local-dir gl".

2006-09-20  Paul Eggert  <eggert@cs.ucla.edu>

* bootstrap: Add support for --force.
(usage): New function.  Describe usage less tersely.
(CVS_only_file): New var.

18 years ago* data/push.c (YYPUSH_MORE): Make it an enum instead.
Paul Eggert [Thu, 21 Sep 2006 17:45:21 +0000 (17:45 +0000)] 
* data/push.c (YYPUSH_MORE): Make it an enum instead.
(yypushparse): Use YYPUSH_MORE instead of the mystery constant.
Adjust white space and comments to match GNU style better.

18 years ago* data/push.c (yyresult_get): Remove function.
Paul Eggert [Thu, 21 Sep 2006 04:57:36 +0000 (04:57 +0000)] 
* data/push.c (yyresult_get): Remove function.
(YYPUSH_MORE): Add #define.
(yypushparse): Modify return value.

18 years ago* stamp-h.in: Remove; no longer needed.
Paul Eggert [Wed, 20 Sep 2006 20:22:24 +0000 (20:22 +0000)] 
* stamp-h.in: Remove; no longer needed.
* .cvsignore: Replace autom4te.cache and config.cache with *.cache.
Remove config.h, config.hin, intl (no longer created).
* lib/.cvsignore: Add config.h, config.hin, configmake.h, inttypes.h,
stamp-h1.

Sync bootstrap from coreutils.

18 years ago* src/getargs.c (usage): Rework to use conventions similar to
Paul Eggert [Wed, 20 Sep 2006 20:04:28 +0000 (20:04 +0000)] 
* src/getargs.c (usage): Rework to use conventions similar to
coreutils, to make translation a bit easier and the code a bit
smaller.  Problem reported by Tim Van Holder.

18 years agoUse some of gnulib's new modules, taken from coreutils.
Paul Eggert [Fri, 15 Sep 2006 18:59:40 +0000 (18:59 +0000)] 
Use some of gnulib's new modules, taken from coreutils.

* bootstrap: Sync from coreutils, except add support for gnulib_files.
* bootstrap.conf: New file.
(gnulib_modules): Add configmake, inttypes, unistd.
(XGETTEXT_OPTIONS): Add complain, complain_at,
fatal, fatal_at, warn, warn_at, unexpected_end.
* configure.ac (AC_CONFIG_HEADERS): config.h is now in lib, not here.
(gl_USE_SYSTEM_EXTENSIONS): Remove; gl_EARLY now does this.
(gl_EARLY): Add.
(AM_STDBOOL_H): Remove; gl_INIT now dows this.
(gl_INIT): Add
(GNULIB_AUTOCONF_SNIPPET): Remove.
(AM_GNU_GETTEXT): Add; require formatstring macros since that's
the pickiest.
* lib/.cvsignore: Add inttypes_.h.
* lib/Makefile.am: Include gnulib.mk first so we can append to it.
(AM_CFLAGS): Add WERROR_CFLAGS, to be more like coreutils.
(BUILT_SOURCES, EXTRA_DIST, MOSTLYCLEANFILES): Remove
no-longer-necessary initializations.
(lib_SOURCES): Remove, replacing by libbison_a_SOURCES.
* lib/subpipe.c: Include <unistd.h> unconditionally, now that we
use the unistd module.
* src/system.h: Likewise.
* m4/.cvsignore: Remove *_gl.m4, gnulib.m4, inttypes_h.m4, uintmax_t.m4,
ulonglong.m4.  Add gettext.m4, gnulib-cache.m4, gnulib-comp.m4,
gnulib-tool.m4, inttypes-h.m4, inttypes-pri.m4, inttypes.m4.
* src/Makefile.am (DEFS): Remove, since configmake does this for us.
(AM_CPPFLAGS): Remove -I../lib, since Automake does that for us.
* src/system.h: Include inttypes.h unconditionally, now that we
use the inttypes module.  Don't bother to include stdint.h, since
inttypes.h now does that for us.
(LOCALEDIR): Remove, now that we use the configmake module.
* src/getargs.c: Include configmake.h.
* src/main.c: Likewise.
* src/output.c: Likewise.
* tests/atlocal.in (CPPFLAGS): Include from $abs_top_builddir/lib,
not from $abs_top_builddir, since config.h moved.

18 years ago(AC_INIT): Bump from 2.3a to 2.3a+.
Paul Eggert [Fri, 15 Sep 2006 17:08:40 +0000 (17:08 +0000)] 
(AC_INIT): Bump from 2.3a to 2.3a+.

18 years agoRegenerate.
Paul Eggert [Fri, 15 Sep 2006 16:45:33 +0000 (16:45 +0000)] 
Regenerate.

18 years agoPort to GCC 2.95. First two problems reported by Michael Deutschmann in
Paul Eggert [Fri, 15 Sep 2006 16:34:48 +0000 (16:34 +0000)] 
Port to GCC 2.95.  First two problems reported by Michael Deutschmann in
<http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00018.html>.

* src/parse-gram.y (symbol_declaration): Don't put statements
before declarations; it's not portable to C89.
* src/scan-code.l (handle_action_at): Likewise.

* src/scan-code.l: Always initialize braces_level; the old code
left it uninitialized and therefore had undefined behavior.

Don't attempt to redefine 'assert', since it runs afoul of
systems where standard headers (mistakenly) include <assert.h>.
Instead, define and use our own alternative, called 'aver'.
* src/reader.c: Don't include assert.h, since we no longer
use assert.
* src/scan-code.l: Likewise.
* src/system.h (assert): Remove, replacing with....
(aver): New function, taking a bool arg.  All uses changed.
* src/tables.c (pack_vector): Ensure that aver arg is bool,
not merely an integer.

18 years agoRegenerate.
Paul Eggert [Fri, 15 Sep 2006 15:56:38 +0000 (15:56 +0000)] 
Regenerate.

18 years ago* data/Makefile.am (dist_pkgdata_DATA): Add push.c.
Paul Eggert [Fri, 15 Sep 2006 15:56:26 +0000 (15:56 +0000)] 
* data/Makefile.am (dist_pkgdata_DATA): Add push.c.
* data/c.m4 (YYPUSH): New.
(b4_push_if): New macro.  Use it instead of #ifdef YYPUSH.
* src/getargs.c (push_parser): New var.
* src/getargs.h (push_parser): New declaration.
* src/output.c (prepare): Add macro insertion of `push_flag'.
* src/parse-gram.y (PERCENT_PUSH_PARSER): New token.
(prologue_declaration): Parse %push-parser.
* src/scan-gram.l: Scan new PERCENT_PUSH_PARSER token.
* tests/calc.at (_AT_CHECK_CALC_ERROR): Add "Return" and "Now" to
list of removed lines from the traces observed.
(AT_CHECK_CALC_LALR): Added push parser tests.

18 years agoVersion 2.3a.
Paul Eggert [Wed, 13 Sep 2006 19:42:04 +0000 (19:42 +0000)] 
Version 2.3a.

18 years ago* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Remove
Paul Eggert [Wed, 13 Sep 2006 19:39:14 +0000 (19:39 +0000)] 
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Remove
"#define YYSTYPE int" that caused "make maintainer-check" to fail
due to header ordering dependencies.  I don't know why the #define
was there.

18 years agoRemove bogus comments.
Paul Eggert [Wed, 13 Sep 2006 18:44:47 +0000 (18:44 +0000)] 
Remove bogus comments.

18 years agoFix typo in previous patch; YYCDEBUG was defined in the wrong section.
Paul Eggert [Wed, 13 Sep 2006 18:37:24 +0000 (18:37 +0000)] 
Fix typo in previous patch; YYCDEBUG was defined in the wrong section.

18 years agoFix glr.cc and lalr1.cc's use of YYDEBUG so that there's zero
Paul Eggert [Wed, 13 Sep 2006 17:41:19 +0000 (17:41 +0000)] 
Fix glr.cc and lalr1.cc's use of YYDEBUG so that there's zero
runtime cost when YYDEBUG is not defined, and so that some tests
that used to fail now work.  Problem and initial suggestion by
Paolo Bonzini.
* data/c++.m4 (b4_parse_param_cons): Omit leading ','.
* data/glr.cc (b4_parser_class_name):
Initialize yycdebug_ only if YYDEBUG.  Also, initialize yydebug_.
(debug_level, set_debug_level): Affect yydebug_, not ::yydebug.
(yydebug_) [YYDEBUG]: New member.
(yycdebug_): Now defined only if YYDEBUG.
* data/lalr1.cc (yydebug_, yycdebug_): Now defined only if YYDEBUG.
(YYCDEBUG) [!YYDEBUG]: Don't use yydebug_ and yycdebug_.
(b4_parser_class_name): Initialize yydebug_ and yycdebug_ only
if YYYDEBUG.
(debug_stream, set_debug_stream, debug_level, set_debug_level):
Define only if YYDEBUG.
* tests/calc.at (_AT_DATA_CALC_Y) [!YYDEBUG]: Omit call to
set_debug_level.
* tests/regression.at (_AT_DATA_DANCER_Y) [!YYDEBUG]: Likewise.
* tests/calc.at (AT_CHECK_CALC_GLR_CC): Uncomment calls to
AT_CHECK_CALC_GLR_CC that are working now.

18 years ago* data/glr.cc (YYERROR_VERBOSE, YYTOKEN_TABLE): Remove.
Paul Eggert [Tue, 12 Sep 2006 17:46:34 +0000 (17:46 +0000)] 
* data/glr.cc (YYERROR_VERBOSE, YYTOKEN_TABLE): Remove.

18 years ago* data/c.m4 (b4_null, b4_case): Define.
Paul Eggert [Tue, 12 Sep 2006 17:26:02 +0000 (17:26 +0000)] 
* data/c.m4 (b4_null, b4_case): Define.
* src/output.c (prepare_symbols): Use b4_null.
(user_actions_output): Use b4_case.

18 years ago* data/glr.c (b4_shared_declarations): Put start-header first,
Paul Eggert [Mon, 11 Sep 2006 18:56:58 +0000 (18:56 +0000)] 
* data/glr.c (b4_shared_declarations): Put start-header first,
before any #includes that we generate, so that feature-test
macros work.  Problem reported by Michael Deutschmann in
<http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00004.html>.
* data/lalr1.cc: Likewise.
* doc/bison.texinfo (Prologue): Document that feature-test macros
should be defined before any Bison declarations.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Put defns
that depend on location.hh after, not before, Bison decls, since
we now include location.hh after the first user prologue.

18 years agoAdd argmatch.m4. Remove obstack.m4, strerror_r.m4.
Paul Eggert [Mon, 11 Sep 2006 18:53:47 +0000 (18:53 +0000)] 
Add argmatch.m4.  Remove obstack.m4, strerror_r.m4.
This adjusts to recent gnulib changes.

18 years agoFix typo: "&" should be "&&". Problem reported
Paul Eggert [Mon, 11 Sep 2006 18:48:21 +0000 (18:48 +0000)] 
Fix typo: "&" should be "&&".  Problem reported
by Jim Meyering.

18 years ago* doc/bison.texinfo (Calc++ Parser): Fix memory leak reported by
Paul Eggert [Mon, 11 Sep 2006 18:02:10 +0000 (18:02 +0000)] 
* doc/bison.texinfo (Calc++ Parser): Fix memory leak reported by
Sander Brandenburg in
<http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00002.html>.
Also, fix minor white space and comment issues.

18 years agoFinish implementation of per-type %destructor/%printer. Discussed
Joel E. Denny [Mon, 4 Sep 2006 22:20:52 +0000 (22:20 +0000)] 
Finish implementation of per-type %destructor/%printer.  Discussed
starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-02/msg00064.html>
and
<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00091.html>.
* NEWS (2.3+): Add a description of this feature to the default
%destructor/%printer description.
* doc/bison.texinfo (Freeing Discarded Symbols): Likewise.
* src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set):
Invoke semantic_type_destructor_set or semantic_type_printer_set when a
list node contains a semantic type.
* src/symtab.c, src/symtab.h: Extend with a table that associates
semantic types with their %destructor's and %printer's.
(semantic_type_from_uniqstr, semantic_type_get,
semantic_type_destructor_set, semantic_type_printer_set): New functions
composing the public interface of that table.
(symbol_destructor_get, symbol_destructor_location_get,
symbol_printer_get, symbol_printer_location_get):  If there's no
per-symbol %destructor/%printer, look up the per-type before trying
the default.
* tests/actions.at (Per-type %printer and %destructor): New test case.
* tests/input.at (Default %printer and %destructor redeclared):
Extend to check that multiple occurrences of %symbol-default in a
single %destructor/%printer declaration is an error.
(Per-type %printer and %destructor redeclared, Unused values with
per-type %destructor): New test cases.

18 years agoRequire default %destructor/%printer to be declared using
Joel E. Denny [Mon, 4 Sep 2006 19:29:29 +0000 (19:29 +0000)] 
Require default %destructor/%printer to be declared using
%symbol-default instead of an empty symbol list, and start working on
new per-type %destructor/%printer.  Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00007.html>.
* NEWS (2.3+): Add %symbol-default to example.
* bison.texinfo (Freeing Discarded Symbols): Likewise.
(Bison 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
%symbol-default.
(grammar_declaration): Use generic_symlist in %destructor and %printer
declarations instead of symbols.1 or an empty list.
(symbol_declaration, precedence_declaration, symbols.1): Update actions
for changes to symbol_list.
* src/reader.c: Update for changes to symbol_list.
* src/scan-code.l: Likewise.
* src/scan-gram.l: Scan new PERCENT_SYMBOL_DEFAULT token.
* src/symlist.c, src/symlist.h: Extend such that a list node may
represent a semantic type or a %symbol-default in addition to just an
ordinary symbol.  Add switched functions for setting %destructor's and
%printer's.
* tests/actions.at, tests/input.at: Add %symbol-default to all default
%destructor/%printer declarations.

18 years agoWhether the default %destructor/%printer applies to a particular symbol
Joel E. Denny [Thu, 24 Aug 2006 01:26:07 +0000 (01:26 +0000)] 
Whether the default %destructor/%printer applies to a particular symbol
isn't a question of whether the user *declares* that symbol (in %token,
for example).  It's a question of whether the user by any means
*defines* the symbol at all (by simply using a char token, for
example).  $end is defined by Bison whereas any other token with token
number 0 is defined by the user.  The error token is always defined by
Bison regardless of whether the user declares it with %token, but we
may one day let the user define error as a nonterminal instead.
* NEWS (2.3+): Say "user-defined" instead of "user-declared".
* doc/bison.texinfo (Freeing Discarded Symbols): Likewise, and document
the meaning of "user-defined".
* tests/actions.at (Default %printer and %destructor for user-declared
end token): Rename to...
(Default %printer and %destructor for user-defined end token): ...
this.

* src/symtab.c (symbol_destructor_get, symbol_printer_get): In the
computation of whether to apply the default, don't maintain a list of
every Bison-defined symbol.  Instead, just check for a first character
of '$', which a user symbol cannot have, and check for the error token.

18 years agoDon't apply the default %destructor or %printer to the error token,
Joel E. Denny [Mon, 21 Aug 2006 21:53:18 +0000 (21:53 +0000)] 
Don't apply the default %destructor or %printer to the error token,
$undefined, or $accept.  This change fits the general rule that the
default %destructor and %printer are only for user-declared symbols,
and it solves several difficulties that are described in the new test
cases listed below.
* src/symtab.c (symbol_destructor_get, symbol_printer_get): Implement.
* tests/actions.at (Default %printer and %destructor are not for error
or $undefined, Default %printer and %destructor are not for $accept):
New test cases.

18 years agoAllow %start after the first rule.
Joel E. Denny [Sun, 20 Aug 2006 03:10:18 +0000 (03:10 +0000)] 
Allow %start after the first rule.
* src/reader.c (grammar_current_rule_begin): Don't set the start symbol
when parsing the first rule.
(check_and_convert_grammar): Search for it here after all grammar
declarations have been parsed.  Skip midrules, which have dummy LHS
nonterminals.
* src/symtab.c (symbol_is_dummy): New function.
* src/symtab.h (symbol_is_dummy): Declare it.
* tests/input.at (%start after first rule): New test.

18 years agoRedo some of the previous commit: add back the ability to use
Joel E. Denny [Fri, 18 Aug 2006 21:43:18 +0000 (21:43 +0000)] 
Redo some of the previous commit: add back the ability to use
non-aliased/undeclared string literals since it might be useful to
those declaring %token-table.
* src/reader.c (check_and_convert_grammar): Undo changes in previous
commit: don't worry about complaints from symbols_pack.
* src/symtab.c (symbol_new, symbol_class_set,
symbol_check_alias_consistency): Undo changes in previous commit: count         each string literal as a new symbol and token, assign it a symbol
number, and don't complain about non-aliased string literals.
(symbols_pack): Since symbol_make_alias still does not decrement symbol
and token counts but does still set aliased tokens to the same number,
symbol_pack_processor now leaves empty slots in the symbols array.
Remove those slots.
* tests/regression.at (Undeclared string literal): Remove test case
added in previous commit since non-aliased string literals are allowed
again.
(Characters Escapes, Web2c Actions): Undo changes in previous commit:
remove unnecessary string literal declarations.
* tests/sets.at (Firsts): Likewise.

18 years agoDon't allow an undeclared string literal, but allow a string literal to
Joel E. Denny [Fri, 18 Aug 2006 10:25:50 +0000 (10:25 +0000)] 
Don't allow an undeclared string literal, but allow a string literal to
be used before its declaration.
* src/reader.c (check_and_convert_grammar): Don't invoke packgram if
symbols_pack complained.
* src/symtab.c (symbol_new): Don't count a string literal as a new
symbol.
(symbol_class_set): Don't count a string literal as a new token, and
don't assign it a symbol number since symbol_make_alias does that.
(symbol_make_alias): It's not necessary to decrement the symbol and
token counts anymore.  Don't assume that an alias declaration occurs
before any uses of the identifier or string, and thus don't assert that
one of them has the highest symbol number so far.
(symbol_check_alias_consistency): Complain if there's a string literal
that wasn't declared as an alias.
(symbols_pack): Bail if symbol_check_alias_consistency failed since
symbol_pack asserts that every token has been assigned a symbol number
although undeclared string literals have not.
* tests/regression.at (String alias declared after use, Undeclared
string literal): New test case.
(Characters Escapes, Web2c Actions): Declare string literals as
aliases.
* tests/sets.at (Firsts): Likewise.

18 years agoUndo last commit.
Joel E. Denny [Mon, 14 Aug 2006 22:40:33 +0000 (22:40 +0000)] 
Undo last commit.

18 years ago* src/scan-gram.l (braces_level, context_state): Make these globals
Joel E. Denny [Mon, 14 Aug 2006 21:06:05 +0000 (21:06 +0000)] 
* src/scan-gram.l (braces_level, context_state): Make these globals
static.

18 years agoIn the grammar scanner, STRING_FINISH unclosed constructs and return
Joel E. Denny [Mon, 14 Aug 2006 20:51:33 +0000 (20:51 +0000)] 
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.

18 years agoHandle string aliases for character tokens correctly.
Joel E. Denny [Mon, 14 Aug 2006 00:34:17 +0000 (00:34 +0000)] 
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.

18 years ago* src/parse-gram.y: Add `%expect 0' so we don't overlook conflicts.
Joel E. Denny [Sun, 13 Aug 2006 03:18:15 +0000 (03:18 +0000)] 
* src/parse-gram.y: Add `%expect 0' so we don't overlook conflicts.

18 years ago* bootstrap: Put in need-ngettext argument to AM_GNU_GETTEXT,
Paul Eggert [Fri, 11 Aug 2006 20:52:55 +0000 (20:52 +0000)] 
* 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).

18 years ago* lib/subpipe.c (create_subpipe): Use new gnulib pipe_safer
Paul Eggert [Fri, 11 Aug 2006 20:30:38 +0000 (20:30 +0000)] 
* lib/subpipe.c (create_subpipe): Use new gnulib pipe_safer
function, since it simplifies our code a bit.

18 years ago* configure.ac (AC_ARG_ENABLE): Use -Wextra -Wno-sign-compare
Paul Eggert [Fri, 11 Aug 2006 19:50:14 +0000 (19:50 +0000)] 
* 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.

18 years agoClean up scanners a bit.
Joel E. Denny [Thu, 10 Aug 2006 04:53:04 +0000 (04:53 +0000)] 
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".

18 years agoSuppress signed/unsigned comparison warnings for yycheck.
Joel E. Denny [Thu, 10 Aug 2006 01:18:50 +0000 (01:18 +0000)] 
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.

18 years ago* doc/bison.texinfo: Fix some typos.
Paul Eggert [Wed, 9 Aug 2006 17:13:46 +0000 (17:13 +0000)] 
* doc/bison.texinfo: Fix some typos.

18 years ago* m4/.cvsignore: Add inttypes_h.m4,lib-ld.m4, lib-prefix.m4,
Paul Eggert [Wed, 2 Aug 2006 05:13:20 +0000 (05:13 +0000)] 
* 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.

18 years agoEnable declaration of default %printer/%destructor. Make the parser
Joel E. Denny [Sat, 29 Jul 2006 05:53:42 +0000 (05:53 +0000)] 
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
<http://lists.gnu.org/archive/html/bison-patches/2006-02/msg00064.html>,
<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00091.html>,
and
<http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>.
* 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.

18 years agoClean up handling of %destructor for the end token (token 0).
Joel E. Denny [Sat, 29 Jul 2006 04:11:33 +0000 (04:11 +0000)] 
Clean up handling of %destructor for the end token (token 0).
Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>
and
<http://lists.gnu.org/archive/html/help-bison/2006-07/msg00013.html>.

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.

18 years agoUpdate to latest gnulib and gettext versions.
Paul Eggert [Tue, 25 Jul 2006 06:45:06 +0000 (06:45 +0000)] 
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.

18 years ago* bootstrap: Adjust to today's change to gnulib-tool by invoking
Paul Eggert [Thu, 20 Jul 2006 16:55:12 +0000 (16:55 +0000)] 
* bootstrap: Adjust to today's change to gnulib-tool by invoking
it with --assume-autoconf='latest-stable'.

18 years ago* src/parse-gram.y (grammar_declaration): Don't confuse Doxygen (at
Joel E. Denny [Thu, 13 Jul 2006 20:05:34 +0000 (20:05 +0000)] 
* 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.

18 years agoSupport %define "KEY" {VALUE}.
Akim Demaille [Thu, 13 Jul 2006 08:12:00 +0000 (08:12 +0000)] 
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.

18 years ago* data/lalr1.cc (YYCDEBUG): Use 'if (yydebug_) (*yycdebug_)'
Paul Eggert [Wed, 12 Jul 2006 18:01:19 +0000 (18:01 +0000)] 
* data/lalr1.cc (YYCDEBUG): Use 'if (yydebug_) (*yycdebug_)'
rather than a for-loop that declares a local bool variable.

18 years ago* data/c.m4: Comment changes.
Akim Demaille [Wed, 12 Jul 2006 13:48:41 +0000 (13:48 +0000)] 
* data/c.m4: Comment changes.

18 years ago* src/complain.c (error_message, ERROR_MESSAGE): New.
Akim Demaille [Mon, 10 Jul 2006 19:36:31 +0000 (19:36 +0000)] 
* 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.

18 years agounless unless -> unless
Paul Eggert [Mon, 10 Jul 2006 00:37:25 +0000 (00:37 +0000)] 
unless unless -> unless

18 years agoRegenerate.
Paul Eggert [Sun, 9 Jul 2006 20:40:43 +0000 (20:40 +0000)] 
Regenerate.

18 years ago* NEWS: Instead of %union, you can define and use your own union type
Paul Eggert [Sun, 9 Jul 2006 20:36:33 +0000 (20:36 +0000)] 
* NEWS: Instead of %union, you can define and use your own union type
YYSTYPE if your grammar contains at least one <type> 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.

18 years ago* src/symlist.c (symbol_list_length): Return int, not unsigned
Paul Eggert [Sun, 9 Jul 2006 19:55:15 +0000 (19:55 +0000)] 
* src/symlist.c (symbol_list_length): Return int, not unsigned
int, since callers expect int.