]> git.saurik.com Git - bison.git/log
bison.git
17 years agoRearrange initialization of the parser state variables so that the
Joel E. Denny [Wed, 20 Dec 2006 06:33:30 +0000 (06:33 +0000)] 
Rearrange initialization of the parser state variables so that the
skeleton doesn't have to have a copy for pull mode and another for push
mode.  This patch also fixes at least a bug such that yylloc was not
initialized (with b4_location_initial_line and
b4_location_initial_column) upon calling yypush_parse.  However, that
initialization now overwrites the first token's location;
%initial-action assigning @$ already did the same thing, and both bugs
will be fixed in a later patch.
* data/push.c (b4_yyssa): Remove and convert all uses to just yyssa.
(b4_declare_parser_state_variables): Remove initialization of yytoken,
yyss, yyvs, yyls, and yystacksize.
(yypstate_new): Remove initialization of some yypstate fields: yystate,
yyerrstatus, yytoken, yyss, yyvs, yyls, yystacksize, yyssp, yyvsp, and
yylsp.
(yyssa, yyvsa, yylsa): For push mode, #define each NAME in this list to
yyps->NAME so it can be used in yypush_parse.
(yyparse or yypush_parse): For yypush_parse, don't print the
"Starting parse" diagnostic for invocations after the first.
Add initialization of yytoken, yyss, yyvs, yyls, and yystacksize; for
yypush_parse, only do it for the first invocation.
Allow yystate, yyerrstatus, yyssp, yyvsp, yylsp, and yylloc
initialization to occur in yypush_parse but only on the first
invocation.

17 years ago* data/push.c: Add CPP guards around push parser declarations in both
Joel E. Denny [Wed, 20 Dec 2006 06:15:54 +0000 (06:15 +0000)] 
* data/push.c: Add CPP guards around push parser declarations in both
the header and the code file.
In the code file, move the push parser declarations to the same place
they appear in the header file.
Clean up the M4 some, especially the inconsistent underquoting in
some b4_c_function_def and b4_c_function_decl uses.

17 years agoEncapsulate the push parser state variables into an M4 macro so the
Joel E. Denny [Wed, 20 Dec 2006 00:59:18 +0000 (00:59 +0000)] 
Encapsulate the push parser state variables into an M4 macro so the
push skeleton doesn't have to list them again for pull mode's yyparse.
For push mode, remove yypush_parse's local equivalents of these
variables to eliminate unnecessary copying between the two sets at
run-time.  This patch also fixes at least a bug related to multiple
%initial-action invocations in push mode.
* data/push.c (b4_declare_parser_variables): Rename to...
(b4_declare_scanner_communication_variables): ... this for clarity and
update both uses.
(b4_declare_yyparse_variables): Remove and move its contents to the one
spot where it was invoked.
(b4_declare_parser_state_variables): New macro containing the parser
state variables required by push mode.
(struct yypstate): Replace all fields but yynew with
b4_declare_parser_state_variables.
(yystate, yyn, yyresult, yyerrstatus, yytoken, yyss, yyssp, yyvs,
yyvsp, yyls, yylsp, yystacksize, yyval, yyloc): For push mode, #define
each NAME in this list to yyps->NAME so it can be used in yypush_parse.
(yyparse or yypush_parse): For yyparse in pull mode, replace local
parser state variable declarations with
b4_declare_parser_state_variables.
Don't initialize parser state variables when calling yypush_parse since
yypstate_new already does that.
Invoke the user's initial action only upon the first yypush_parse
invocation.
Remove all code that copies between the local parser state variables
and the yypstate.

17 years ago* data/push.c (union yyalloc): Rename yyss, yyvs, and yyls fields to
Joel E. Denny [Tue, 19 Dec 2006 21:40:14 +0000 (21:40 +0000)] 
* data/push.c (union yyalloc): Rename yyss, yyvs, and yyls fields to
prevent a name collision in a future patch where these names will
sometimes be #define'd.
(YYSTACK_RELOCATE): Add an argument to select a union yyalloc field
since it no longer has the same name as the existing argument.
(yyparse or yypush_parse): Update all uses of YYSTACK_RELOCATE.

17 years ago* doc/bison.texinfo (Decl Summary): In the %language entry, mention
Joel E. Denny [Tue, 19 Dec 2006 07:52:02 +0000 (07:52 +0000)] 
* doc/bison.texinfo (Decl Summary): In the %language entry, mention
that the argument is case-insensitive, and there's no `=' here.
For the %skeleton entry, mention that %language is better.
(Bison Options): Likewise for --language and --skeleton.  Move the
--skeleton entry so that the `Tuning the parser' section is sorted
alphabetically on long options.
(C++ Bison Interface): Don't use the word skeleton.  Don't explain the
%language directive in detail here; cross-reference the %language
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.
* 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
appears in the documentation.
* examples/calc++/Makefile.am ($(calc_extracted)): Use `$(VERSION)'
rather than `@VERSION@'.

17 years agoDocument last checkin a bit better.
Paul Eggert [Tue, 19 Dec 2006 00:39:07 +0000 (00:39 +0000)] 
Document last checkin a bit better.

17 years agoRegenerate.
Paul Eggert [Tue, 19 Dec 2006 00:35:24 +0000 (00:35 +0000)] 
Regenerate.

17 years ago* src/getargs.c (skeleton_arg): Last arg is now location const *.
Paul Eggert [Tue, 19 Dec 2006 00:34:37 +0000 (00:34 +0000)] 
* src/getargs.c (skeleton_arg): Last arg is now location const *.
Rewrite to simplify the logic.
(language_argmatch): Likewise.

* doc/bison.texinfo (Decl Summary, Bison Options): Don't claim
Java is supported.
* src/complain.c (program_name): Remove decl; no longer needed.
* src/main.c (program_name): Remove; now belongs to getargs.

2006-12-18  Paolo Bonzini  <bonzini@gnu.org>

* NEWS: Document %language.

* data/Makefile.am (dist_pkgdata_DATA): Add c-skel.m4, c++-skel.m4.

* data/c-skel.m4, data/c++-skel.m4: New files.
* data/glr.c: Complain on push parsers.

* doc/bison.texinfo (C++ Parser Interface): Prefer %language
over %skeleton.
(Directives): Document %language and %skeleton.
(Command line): Document -L.

* examples/extexi: Rewrite %require directive.
* examples/calc++/Makefile.am: Pass VERSION to extexi.

* src/files.c (compute_exts_from_gc): Look in language structure
for .y extension.
(compute_file_name_parts): Check whether .tab should be added.
* src/getargs.c (valid_languages, skeleton_prio, language_prio):
(language, skeleton_arg, language_argmatch): New.
(long_options): Add --language.
(getargs): Use skeleton_arg, add -L/--language.
* src/getargs.h: Include location.h.
(struct bison_language, language, skeleton_arg, language_argmatch): New.
* src/output.c (prepare): Pick default skeleton from struct language.
Don't dispatch C skeletons here.
* src/parse-gram.y (PERCENT_LANGUAGE): New.
(prologue_declaration): Add "%language" rule, use skeleton_arg.
* src/scan-gram.l ("%language"): New rule.

* tests/calc.at: Test %skeleton and %language.
* tests/local.at (AT_SKEL_CC_IF): Look for %language.
(AT_GLR_IF): Look for %skeleton "glr.cc".
(AT_LALR1_CC_IF, AT_GLR_CC_IF): Rewrite.
(AT_YACC_IF): Reject %language.

2006-12-18  Paul Eggert  <eggert@cs.ucla.edu>

17 years ago* src/symtab.h (struct semantic_type): Remove the tag 'semantic_type',
Paul Eggert [Mon, 18 Dec 2006 17:27:23 +0000 (17:27 +0000)] 
* src/symtab.h (struct semantic_type): Remove the tag 'semantic_type',
since it wasn't used; only the typedef name 'semantic_type' is needed.
Also, omit trailing white space.

17 years ago* bootstrap: Sync from coreutils.
Paul Eggert [Mon, 18 Dec 2006 17:23:37 +0000 (17:23 +0000)] 
* bootstrap: Sync from coreutils.
(gnulib_extra_files): Add build-aux/announce.gen.
(slurp): Adjust .gitignore files like .cvsignore files.
* build-aux/announce-gen: Remove from CVS, since bootstrap
now creates this.

17 years agoMake %push-parser imply %pure-parser. This fixes several bugs; see
Joel E. Denny [Sun, 17 Dec 2006 01:33:31 +0000 (01:33 +0000)] 
Make %push-parser imply %pure-parser.  This fixes several bugs; see
<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00148.html>.
* src/parse-gram.y (prologue_declaration): For %push-parser, also set
pure_parser = true.
* data/push.c: Don't bother testing b4_push_if when deciding whether
to expand b4_declare_parser_variables globally.
(yypush_parse): Likewise in here.

* data/push.c (yypush_parse): Add b4_parse_param to arguments.
(yy_reduce_print): Reformat M4 for readability.

17 years ago* data/push.c (yypstate): Add typedef, and update all uses of
Joel E. Denny [Fri, 15 Dec 2006 05:31:26 +0000 (05:31 +0000)] 
* data/push.c (yypstate): Add typedef, and update all uses of
struct yypstate to just yypstate.
* tests/calc.at (_AT_DATA_CALC_Y): Update here as well.

17 years ago* data/push.c (yypush_parse): Declare prototype regardless of
Joel E. Denny [Fri, 15 Dec 2006 03:36:22 +0000 (03:36 +0000)] 
* data/push.c (yypush_parse): Declare prototype regardless of
%locations option.

17 years ago* data/push.c (yyparse): Remove the prototype and the #define when in
Joel E. Denny [Thu, 14 Dec 2006 20:45:47 +0000 (20:45 +0000)] 
* data/push.c (yyparse): Remove the prototype and the #define when in
push-parser mode.

17 years ago* data/push.c (yypstate_init): Rename to...
Joel E. Denny [Thu, 14 Dec 2006 02:58:11 +0000 (02:58 +0000)] 
* data/push.c (yypstate_init): Rename to...
(yypstate_new): ... this and use b4_c_function_def.
(yypstate_delete): New.
(yypush_parse): Change parameters yynval and yynlloc to be const.
* tests/calc.at (_AT_DATA_CALC_Y): Use new yypstate_new and
yypstate_delete functions.

17 years ago* configure.ac (AC_PREREQ): Require Autoconf 2.61 because of our
Joel E. Denny [Wed, 13 Dec 2006 22:52:33 +0000 (22:52 +0000)] 
* configure.ac (AC_PREREQ): Require Autoconf 2.61 because of our
strange test case titles.  Reported by Bob Rossi.

17 years ago* TODO: Add pointer to Sylvain Schmitz's work on static detection
Paul Eggert [Wed, 13 Dec 2006 20:23:19 +0000 (20:23 +0000)] 
* TODO: Add pointer to Sylvain Schmitz's work on static detection
of potential ambiguities in GLR grammers.

17 years ago* tests/testsuite.at (AT_CHECK): When checking if $1 starts with
Joel E. Denny [Tue, 12 Dec 2006 06:47:39 +0000 (06:47 +0000)] 
* tests/testsuite.at (AT_CHECK): When checking if $1 starts with
`bison ', use m4_index instead of m4_substr since chopping up a string
containing M4-special characters causes problems here.

Fix a couple of bugs related to special characters in user-specified
file names, and make it easier for skeletons to compute output file
names with the same file name prefix as Bison-computed output file
names.
* data/glr.cc, data/push.c, data/yacc.c: In @output, use
b4_parser_file_name and b4_spec_defines_file instead of
@output_parser_name@ and @output_header_name@, which are now redundant.
* data/glr.c, data/lalr1.cc: Likewise.  Also, in header #include's, use
b4_parser_file_name, b4_spec_defines_file, and the new
@basename(FILENAME@) instead of @output_parser_name@ and
@output_header_name@, which inappropriately escaped the file names as
C string literals.
* src/files.c (all_but_ext): Remove static qualifier.
(compute_output_file_names): Move `free (all_but_ext)' to...
(output_file_names_free): ... here since all_but_ext is needed later.
* src/files.h (all_but_ext): Extern.
* src/muscle_tab.h (MUSCLE_INSERT_STRING_RAW): New macro that does
exactly what MUSCLE_INSERT_STRING used to do.
(MUSCLE_INSERT_STRING): Use MUSCLE_OBSTACK_SGROW so that M4-special
characters are escaped properly.
* src/output.c (prepare): Define muscle file_name_all_but_ext as
all_but_ext.
For pkgdatadir muscle, maintain previous functionality by using
MUSCLE_INSERT_STRING_RAW instead of MUSCLE_INSERT_STRING.  The problem
is that b4_pkgdatadir is used inside m4_include in the skeletons, so
digraphs would never be expanded.  Hopefully no one has M4-special
characters in his Bison installation path.
* src/scan-skel.l: Don't parse @output_header_name@ and
@output_parser_name@ anymore since they're now redundant.
In @output, use decode_at_digraphs.
Parse a new @basename command that invokes last_component.
(decode_at_digraphs): New.
(BASE_QPUTS): Remove unused.
* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): New macro.
(Output file name): New tests.

17 years agoWarn about output files that are generated by the skeletons and that
Joel E. Denny [Sun, 10 Dec 2006 00:16:15 +0000 (00:16 +0000)] 
Warn about output files that are generated by the skeletons and that
conflict with other output files.
* data/glr.c: Don't generate the header file here when glr.cc does.
* src/files.c (file_names, file_names_count): New static globals.
(compute_output_file_names): Invoke output_file_name_check for files
not generated by the skeletons and remove existing checks.
(output_file_name_check): New function that warns about conflicting
output file names.
(output_file_names_free): Free file_names.
* src/files.h (output_file_name_check): Declare.
* src/scan-skel.l: Invoke output_file_name_check for files generated by
the skeletons.
* tests/output.at (AT_CHECK_CONFLICTING_OUTPUT): New.
(Conflicting output files): New tests.

17 years ago* doc/bison.texinfo: Fix a couple of typos.
Paul Eggert [Sat, 9 Dec 2006 18:52:01 +0000 (18:52 +0000)] 
* doc/bison.texinfo: Fix a couple of typos.

2006-12-08  Bob Rossi  <bob@brasko.net>

17 years ago* data/push.c: (yypvarsinit, yypvars, struct yypvars, yypushparse):
Joel E. Denny [Fri, 8 Dec 2006 22:36:33 +0000 (22:36 +0000)] 
* data/push.c: (yypvarsinit, yypvars, struct yypvars, yypushparse):
Rename to...
(yypstate_init, yypstate, struct yypstate, yypush_parse): ... these and         update all uses.
(b4_yyssa, b4_yyerror_range, yypstate_init): Rename pv to yyps.
(yypush_parse): Rename yypvars argument to yyps and remove redundant
local pv.
(yypstate_init, yypush_parse): Declare in Bison-generated header file.
* tests/calc.at (_AT_DATA_CALC_Y): Use newly named functions.

17 years ago* data/push.c (yypvarsinit): Change return type from void* to struct
Joel E. Denny [Fri, 8 Dec 2006 01:04:39 +0000 (01:04 +0000)] 
* data/push.c (yypvarsinit): Change return type from void* to struct
yypvars*. No longer cast to void* on return.
(struct yypvars): Remove yylen since it need not be remembered between
yypushparse invocations.
(yypushparse): Don't copy between yylen and pv->yylen.

17 years ago* data/push.c (yychar_set, yylval_set, yylloc_set): Delete.
Joel E. Denny [Thu, 7 Dec 2006 02:21:13 +0000 (02:21 +0000)] 
* data/push.c (yychar_set, yylval_set, yylloc_set): Delete.
(yypushparse): Add yynchar, yynlval, yynlloc parameters.
(b4_declare_parser_variables): Do not declare yynerrs for push mode.
(struct yypvars): Remove b4_declare_parser_variables.
(yypvarsinit): Remove init code for removed variables.
(global scope): Do not declare b4_declare_parser_variables if
push or pure mode.
(yypushparse): Add b4_declare_parser_variables.
Init new local variables, and remove init code for removed
yypvars variables.
(yyparse): Delete.
* tests/calc.at (_AT_DATA_CALC_Y): Call yypushparse for push mode
and yyparse for other modes.
(AT_CHECK_CALC_LALR): Added '%skeleton "push.c"' for push tests.
* tests/local.at (AT_PUSH_IF, AT_PURE_OR_PUSH_IF): Added.
(AT_YYERROR_SEES_LOC_IF): push-parser makes this false.
(AT_PURE_LEX_IF): True if pure or push parser.

17 years agoDocument Yacc prologue alternatives and default %destructor's and
Joel E. Denny [Tue, 5 Dec 2006 23:13:41 +0000 (23:13 +0000)] 
Document Yacc prologue alternatives and default %destructor's and
%printer's as experimental.  Don't mention Java yet.  Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00002.html>.
* NEWS (2.3a+): Say they're experimental.  Remove any mention of Java.
(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
of Java (we'll want this back eventually).

17 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.