945e396c8a
Add maintainer-push-check to run maintainer-check using push parsing in place of pull parsing where available. * Makefile.am (maintainer-push-check): New. * data/bison.m4 (b4_use_push_for_pull_if): New. * data/push.c: Redefine b4_push_if and b4_use_push_for_pull_if appropriately based on their existing values. (yypush_parse): Don't print push-parser-specific diagnostics if push parsing is being used in place of pull parsing. * data/yacc.c: If push parsing should replace pull parsing, redirect to push.c. * src/output.c (prepare): Check BISON_USE_PUSH_FOR_PULL environment variable, and insert b4_use_push_for_pull_flag into muscles. * tests/Makefile.am (maintainer-push-check): New.
Joel E. Denny
2007-01-02 02:10:42 +00:00
7d59638490
* data/push.c (yypush_parse): Set yynew = 1 at the end of a parse (whether successful or failed) so that yypush_parse can be invoked again to start a new parse using the same yypstate. * tests/torture.at (AT_DATA_STACK_TORTURE): For push mode, extend to check multiple yypull_parse invocations on the same yypstate. For pull mode, extend to check multiple yyparse invocations. (Exploding the Stack Size with Alloca): Extend to try with %push-pull-parser. (Exploding the Stack Size with Malloc): Likewise.
Joel E. Denny
2007-01-01 00:42:21 +00:00
7172e23e8f
For push mode, convert yyparse from a macro to a function, invoke yylex instead of passing a yylexp argument to yypull_parse, and don't generate yypull_parse or yyparse unless %push-pull-parser is declared. Discussed starting at <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00163.html>. * data/bison.m4 (b4_pull_if): New. * data/c.m4 (b4_identification): Define YYPULL similar to YYPUSH. * data/push.c: Improve M4 quoting a little. (b4_generate_macro_args, b4_parenthesize): Remove. (yyparse): If there's a b4_prefix, #define this to b4_prefix[parse] any time a pull parser is requested. Don't #define this as a wrapper around yypull_parse. Instead, when both push and pull are requested, make it a function that does that same thing. (yypull_parse): If there's a b4_prefix, #define this to b4_prefix[pull_parse] when both push and pull are requested. Don't define this as a function unless both push and pull are requested. Remove the yylexp argument and hard-code yylex invocation instead. * etc/bench.pl.in (bench_grammar): Use %push-pull-parser instead of %push-parser. * src/getargs.c (pull_parser): New global initialized to true. * getargs.h (pull_parser): extern it. * src/output.c (prepare): Insert pull_flag muscle. * src/parse-gram.y (PERCENT_PUSH_PULL_PARSER): New token. (prologue_declaration): Set both push_parser and pull_parser = true for %push-pull-parser. Set push_parser = true and pull_parser = false for %push-parser. * src/scan-gram.l: Don't accept %push_parser as an alternative to %push-parser since there's no backward-compatibility concern here. Scan %push-pull-parser. * tests/calc.at (Simple LALR(1) Calculator): Use %push-pull-parser instead of %push-parser. * tests/headers.at (export YYLTYPE): Make yylex static, and don't prototype it in the module that calls yyparse. * tests/input.at (Torturing the Scanner): Likewise. * tests/local.at (AT_PUSH_IF): Check for %push-pull-parser as well.
Joel E. Denny
2006-12-31 20:29:48 +00:00
2e7944cbb2
Update etc/bench.pl. Optimize push mode a little (the yyn change deserves most of the credit). * Makefile.am (SUBDIRS): Add etc subdirectory. * configure.ac (AC_CONFIG_FILES): Add etc/bench.pl and etc/Makefile. * data/push.c (b4_declare_parser_state_variables): Move yyn, yyresult, yytoken, yyval, and yyloc declarations to... (yyparse or yypush_parse): ... here to improve performance. For yypush_parse invocations after the first, be sure to assign yyn its old value again. (yypstate_new): Don't bother initializing the yyresult field since the initial value isn't used. (yyn, yyresult, yytoken, yyval, yyloc): For each NAME in this list, remove the #define that, in push mode, set it to yyps->NAME. * etc/Makefile.am: New. * etc/bench.pl: Remove and build it instead from... * etc/bench.pl.in: ... this new file. Use @abs_top_builddir@ to invoke "tests/bison" from the build directory by default rather than just invoking "bison" from $PATH. (calc_grammar): Update push parser code: don't declare yylval globally, don't define yyparse_wrapper, and don't #define yyparse. (bench_grammar): Update to check all working combinations of yacc.c, push.c, impure, pure, pull, and push.
Joel E. Denny
2006-12-26 18:09:53 +00:00
c3d503425f
For push mode, add pull wrappers around yypush_parse. * data/push.c: (b4_generate_macro_args, b4_parenthesize): New macros. (yypull_parse): New function wrapping yypush_parse. (yyparse): New #define wrapping yypull_parse. * tests/calc.at (_AT_DATA_CALC_Y): Call yyparse even when %push-parser is declared. * tests/headers.at (export YYLTYPE): Make yylex global. For push mode, prototype yylex in the module that calls yyparse, and don't prototype yyparse there. Otherwise, the yyparse expansion won't compile. * tests/input.at (Torturing the Scanner): Likewise.
Joel E. Denny
2006-12-25 18:21:52 +00:00
94ebeba53f
Enable push parsers to operate in impure mode. Thus, %push-parser no longer implies %pure-parser. The point of this change is to move towards being able to test the push parser code by running the entire test suite as if %push-parser had been declared. * data/push.c (yypush_parse): For impure mode, remove the yypushed_char, yypushed_val, and yypushed_loc arguments. Instead, declare these as local variables initialized to the global yychar, yylval, and yylloc. For the first yypush_parse invocation only, restore the initial values of these global variables when it's time to read a token since they have been overwritten. * src/parse-gram.y (prologue_declaration): Don't set pure_parser for %push-parser. * tests/calc.at (Simple LALR(1) Calculator): Always declare %pure-parser along with %push-parser since this test case was designed for pure push parsers. * tests/local.at (AT_PURE_OR_PUSH_IF): Remove unused. (AT_YACC_OR_PUSH_IF): New. (AT_YYERROR_SEES_LOC_IF): Fix enough that the test suite passes, but add a note that it's still wrong for some cases (as it has been for a while). (AT_PURE_LEX_IF): Use AT_PURE_IF instead of AT_PURE_OR_PUSH_IF since %push-parser no longer implies %pure-parser.
Joel E. Denny
2006-12-25 17:25:39 +00:00
a063317885
Remove some unnecessary differences between the pull parser code and the push parser code. This patch enables yynerrs in push mode. * data/push.c: Reformat M4 a little. (b4_yyerror_range): Remove and convert all uses to just yyerror_range. (b4_declare_scanner_communication_variables): Don't omit yynerrs just because push mode is on. Instead, if pure mode is on, move yynerrs to... (b4_declare_parser_state_variables): ... here. (yynerrs, yyerror_range): For push mode, #define each NAME in this list to yyps->NAME so it can be used in yypush_parse. (yypush_parse): Don't omit uses of yynerrs in push mode.
Joel E. Denny
2006-12-20 07:48:57 +00:00
8646b6a3fd
Fix bug such that the first pushed token's value and location are sometimes overwritten (sometimes by %initial-action) before being used. * data/push.c (yypush_parse): Rename arguments yynchar, yynlval, and yynlloc to yypushed_char, yypushed_val, and yypushed_loc for clarity. For the first yypush_parse invocation, initialize yychar to YYEMPTY to more closely mimic the pull parser logic. Don't copy the pushed token to yychar, yylval, and yylloc until it's time to read a token, which is after any initialization of yylval and yylloc. (gottoken): Rename label to... (yyread_pushed_token): ... for clarity and to avoid infringing on the user namespace.
Joel E. Denny
2006-12-20 06:46:20 +00:00
9baf4d74a6
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.
Joel E. Denny
2006-12-20 06:33:30 +00:00
2352216441
* 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.
Joel E. Denny
2006-12-20 06:15:54 +00:00
bb010fe51a
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.
Joel E. Denny
2006-12-20 00:59:18 +00:00
2d212f8ca6
* 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.
Joel E. Denny
2006-12-19 21:40:14 +00:00
e6e704dc78
* 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@'.
Joel E. Denny
2006-12-19 07:52:02 +00:00
fd575f05a4
Document last checkin a bit better.
Paul Eggert
2006-12-19 00:39:07 +00:00
5e6feb866a
Regenerate.
Paul Eggert
2006-12-19 00:35:24 +00:00
0e021770cc
* src/getargs.c (skeleton_arg): Last arg is now location const *. Rewrite to simplify the logic. (language_argmatch): Likewise.
Paul Eggert
2006-12-19 00:34:37 +00:00
db06f0ce72
* 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.
Paul Eggert
2006-12-18 17:27:23 +00:00
5691bf57fb
* 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.
Paul Eggert
2006-12-18 17:23:37 +00:00
791934e4b5
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.
Joel E. Denny
2006-12-17 01:33:31 +00:00
ee5abb379b
* 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.
Joel E. Denny
2006-12-15 05:31:26 +00:00
16ca01f9bf
* data/push.c (yypush_parse): Declare prototype regardless of %locations option.
Joel E. Denny
2006-12-15 03:36:22 +00:00
ab8e7e1a82
* data/push.c (yyparse): Remove the prototype and the #define when in push-parser mode.
Joel E. Denny
2006-12-14 20:45:47 +00:00
9bf32be3a0
* 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.
Joel E. Denny
2006-12-14 02:58:11 +00:00
f02e2948bd
* configure.ac (AC_PREREQ): Require Autoconf 2.61 because of our strange test case titles. Reported by Bob Rossi.
Joel E. Denny
2006-12-13 22:52:33 +00:00
38eb7751e4
* TODO: Add pointer to Sylvain Schmitz's work on static detection of potential ambiguities in GLR grammers.
Paul Eggert
2006-12-13 20:23:19 +00:00
bd9d212b13
* 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.
Joel E. Denny
2006-12-12 06:47:39 +00:00
3f7ca62853
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.
Joel E. Denny
2006-12-10 00:16:15 +00:00
178e123eec
* doc/bison.texinfo: Fix a couple of typos.
Paul Eggert
2006-12-09 18:52:01 +00:00
8def5cd0c3
* 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.
Joel E. Denny
2006-12-08 22:36:33 +00:00
ea17f233e6
* 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.
Joel E. Denny
2006-12-08 01:04:39 +00:00
55a30bda17
* 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.
Joel E. Denny
2006-12-07 02:21:13 +00:00
8589431355
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).
Joel E. Denny
2006-12-05 23:13:41 +00:00
02975b9aad
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.
Joel E. Denny
2006-12-02 01:52:16 +00:00
287b314eef
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.
Joel E. Denny
2006-11-21 07:07:35 +00:00
3ebecc240d
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.
Joel E. Denny
2006-11-21 00:43:26 +00:00
26b8a43805
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.
Joel E. Denny
2006-11-17 20:07:08 +00:00
b0f4c4eaa1
Remove last commit at the request of Paul Eggert.
Joel E. Denny
2006-11-12 07:39:37 +00:00
40cb301cd8
* src/symlist.h (symbol_list): Fix typos in comments.
Joel E. Denny
2006-11-11 07:35:15 +00:00
76290368d4
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.
Joel E. Denny
2006-11-11 06:57:39 +00:00
405d53b724
* tests/testsuite.at (AT_CHECK): Don't miss an exit value of 0 because it was double-quoted.
Joel E. Denny
2006-11-11 04:12:48 +00:00
07c39ae908
* 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.
Joel E. Denny
2006-11-10 06:11:21 +00:00
580b892607
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.
Joel E. Denny
2006-11-10 05:26:26 +00:00
4502eadc2f
* 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.
Joel E. Denny
2006-11-09 18:17:05 +00:00
7746c8f63d
* 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.
Paul Eggert
2006-11-08 20:41:55 +00:00
ff8d8df2e6
Regenerate.
Paul Eggert
2006-11-08 20:32:19 +00:00
eb09565001
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.
Paul Eggert
2006-11-08 20:28:57 +00:00
ac564be451
* 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.
Paul Eggert
2006-11-08 20:01:48 +00:00
17bd8a736a
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.
Joel E. Denny
2006-11-01 06:09:40 +00:00
89eb3c7653
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.
Joel E. Denny
2006-11-01 01:47:44 +00:00
ba7560e26b
* src/getargs.c (flags_argmatch): Don't cause segmentation fault for empty subargument list. For example: `bison --warnings= parser.y'.
Joel E. Denny
2006-10-31 22:24:57 +00:00
31283fc38a
* 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.
Joel E. Denny
2006-10-22 00:28:16 +00:00
12e3584054
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.
Joel E. Denny
2006-10-21 10:03:35 +00:00
f91b162944
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.
Joel E. Denny
2006-10-21 04:52:43 +00:00
519d000408
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.
Joel E. Denny
2006-10-21 02:31:50 +00:00
a501eca911
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.
Joel E. Denny
2006-10-20 22:10:50 +00:00
67a9768ed4
* doc/bison.texinfo (Prologue Alternatives): Fix a tiny typo.
Joel E. Denny
2006-10-16 05:48:34 +00:00
2cbe6b7f8f
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.
Joel E. Denny
2006-10-16 05:25:36 +00:00
f209868ed0
djgpp/config.site: Adjust config.sed for the use of autoconf 2.60.
Juan Manuel Guerrero
2006-10-15 22:38:37 +00:00
b36e835baa
djgpp/config.sed: Adjust config.sed for the use of autoconf 2.60.
Juan Manuel Guerrero
2006-10-15 22:38:27 +00:00
179de98b6e
djgpp/config.bat: config.hin has been moved to lib. Adjust config.bat accordingly.
Juan Manuel Guerrero
2006-10-15 22:38:13 +00:00
e557d3eac6
DJGPP specific issues.
Juan Manuel Guerrero
2006-10-15 22:37:54 +00:00
27bd5d67d1
fix previous changelog entry
Paolo Bonzini
2006-10-15 12:38:16 +00:00
10f429ef19
* lib/Makefile.am (AM_CFLAGS): Remove $(WERROR_CFLAGS). Problem reported by Joel E. Denny.
Paul Eggert
2006-10-15 04:31:23 +00:00
c4bd5bf7c5
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.
Joel E. Denny
2006-10-15 00:02:21 +00:00
231ed89af1
* 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.
Paul Eggert
2006-10-13 05:00:26 +00:00
46356ea426
* bootstrap: Sync from coreutils, as follows:
Paul Eggert
2006-10-13 04:37:19 +00:00
cf2a5f7c47
* configure.ac: Use AC_PROG_CC_STDC; this is more modern than the old AC_PROG_CC / AM_PROG_CC_STDC combination.
Paul Eggert
2006-10-13 04:09:14 +00:00
fcab4a2ee2
Credit Satya for the graphviz change.
Paul Eggert
2006-10-12 23:35:24 +00:00
35fe08345e
* 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.
Paul Eggert
2006-10-12 23:29:52 +00:00
dd4bf07827
* data/Makefile.am (dist_pkgdata_DATA): Add bison.m4; this accommodates the 2006-10-08 change.
Paul Eggert
2006-10-12 22:40:52 +00:00
efdd742137
* 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.
Paul Eggert
2006-10-12 05:47:58 +00:00
f317f99734
Fix missing bracket.
Paul Eggert
2006-10-11 19:13:48 +00:00
96a1981a77
* data/push.c (yypushparse): Fix memory leak if yymsg is malloced in a push parser. Reindent slightly to match yacc.c better.
Paul Eggert
2006-10-11 16:35:34 +00:00
c1630a8b80
* THANKS: Add Paolo Bonzini and Bob Rossi.
Paul Eggert
2006-10-09 16:18:52 +00:00
cf8067530b
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.
Paul Eggert
2006-10-06 06:57:00 +00:00
0e2f006a23
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.
Paul Eggert
2006-10-01 23:35:37 +00:00
e3ddc1e355
Merge bootstrap changes from coreutils.
Paul Eggert
2006-09-30 05:21:35 +00:00
01e972b3f5
* 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.
Paul Eggert
2006-09-21 17:45:21 +00:00
e70f46d132
* 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.
Paul Eggert
2006-09-20 20:22:24 +00:00
a92be413b2
* 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.
Paul Eggert
2006-09-20 20:04:28 +00:00
3b2942e671
Use some of gnulib's new modules, taken from coreutils.
Paul Eggert
2006-09-15 18:59:40 +00:00
41f58bae8b
(AC_INIT): Bump from 2.3a to 2.3a+.
Paul Eggert
2006-09-15 17:08:40 +00:00
3acc03086e
Regenerate.
Paul Eggert
2006-09-15 16:45:33 +00:00
3fa3725adb
Regenerate.
Paul Eggert
2006-09-15 15:56:38 +00:00
31c10e38db
* 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.
Paul Eggert
2006-09-15 15:56:26 +00:00
21fe08cadc
Version 2.3a.
v2.3a
Paul Eggert
2006-09-13 19:42:04 +00:00
e8ec4d9b33
* 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.
Paul Eggert
2006-09-13 19:39:14 +00:00
1ef30650b8
Remove bogus comments.
Paul Eggert
2006-09-13 18:44:47 +00:00
a36b333cc2
Fix typo in previous patch; YYCDEBUG was defined in the wrong section.
Paul Eggert
2006-09-13 18:37:24 +00:00
fa7b79c063
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.
Paul Eggert
2006-09-13 17:41:19 +00:00
8e1687aef6
* data/c.m4 (b4_null, b4_case): Define. * src/output.c (prepare_symbols): Use b4_null. (user_actions_output): Use b4_case.
Paul Eggert
2006-09-12 17:26:02 +00:00
aef3da8689
* 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.
Paul Eggert
2006-09-11 18:56:58 +00:00
84567a1b1c
Add argmatch.m4. Remove obstack.m4, strerror_r.m4. This adjusts to recent gnulib changes.
Paul Eggert
2006-09-11 18:53:47 +00:00
afac5ba023
Fix typo: "&" should be "&&". Problem reported by Jim Meyering.
Paul Eggert
2006-09-11 18:48:21 +00:00