41d7a5f24d
* src/gram.c (rule_rhs_print_xml): Now static, since it isn't used elsewhere. * src/print-xml.c: Prefer "const" after types; that's more consistent. (xml_printf): Indent just 1 space for level. (e_char, xlate_char): Remove. (xml_escape_string): Rewrite to avoid undefined behavior (used storage that was freed from the stack). (xml_escape_n): Don't bother checking for subscript error.
Paul Eggert
2007-09-21 22:53:58 +00:00
6d8e724de2
* GNUmakefile: Switch to coreutils's version. * bootstrap: Likewise. * Makefile.cfg: Adjust to new GNUmakefile. * README-hacking: Likewise.
Paul Eggert
2007-09-21 21:26:14 +00:00
922bdd7ffa
Spell "boolean" as "Boolean". Reported by Akim Demaille. * data/bison.m4 (b4_percent_define_flag_if): Fix complaint. * doc/bison.texinfo (Decl Summary): Fix. * src/muscle_tab.c (muscle_percent_define_flag_if): Fix complaint. * tests/input.at (Boolean %define variables): Update output. * tests/skeletons.at (%define boolean variables: invalid skeleton defaults): Rename to... (%define Boolean variables: invalid skeleton defaults): ... this and update output.
Joel E. Denny
2007-08-28 07:14:11 +00:00
1b17b01d0f
In impure push mode, don't allow more than one yypstate to be allocated since multiple impure parsers would corrupt yynerrs. * data/push.c (yypstate_allocated): New static global variable initialized to 0. (yypull_parse): If yypstate_new returns 0, don't report it as memory exhaustion if yypstate_allocated is 1, but still return 2. (yypstate_new): Invoke yyerror and return 0 if yypstate_allocated is already 1. Otherwise, set it to 1. (yypstate_delete): Set it to 0. * tests/push.at (Push Parsing: Multiple impure instances): New test case.
Joel E. Denny
2007-08-18 00:45:52 +00:00
9987d1b3cc
* doc/bison.texinfo (Push Decl): Document the push parser. (Table of Symbols): Ditto. (Pure Decl): Ditto. (Decl Summary): Ditto. (Multiple Parsers, Push Parser Function, Pull Parser Function, Parser Create Function, Parser Delete Function): Add new push parser symbols. (Table of Symbols): Document push-parser, push-pull-parser, yypush_parse, yypull_parse, yypstate_new and yypstate_delete.
Joel E. Denny
2007-08-18 00:07:01 +00:00
728c4be290
Get rid of broken %no-parser, -n, and --no-parser implementation and documentation. * TODO: Don't mention them. * doc/bison.1: Likewise. * doc/bison.texinfo (Decl Summary): Likewise. (Bison Options): Likewise. (Option Cross Key): Likewise. * src/getargs.c (no_parser_flag): Remove global variable. (usage): Don't print description of -n and --no-parser. (long_options): Remove --no-parser entry here. (getargs): Remove -n case in the switch here. * src/getargs.h (no_parser_flag): Remove extern. * tests/regression.at (Web2c Actions): Remove comment that mentions --no-parser.
Joel E. Denny
2007-08-12 02:12:30 +00:00
5d31a2162d
* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Do not name user variables starting with yy'. Just pass NULL instead of a dummy local &yylval to yypush_parse. * tests/torture.at (AT_DATA_STACK_TORTURE): Do not name user variables starting with yy'.
Joel E. Denny
2007-08-11 23:08:04 +00:00
91661ebbe3
* ChangeLog: For changes in doc/bison.texinfo, consistently reference node names: say "Decl Summary" not "Bison Declaration Summary".
Joel E. Denny
2007-08-03 23:24:25 +00:00
a2ea208d82
* data/yacc.c (yyexhaustedlab): Define it when YYERROR_VERBOSE is true since it's then always used regardless of whether yyoverflow is defined. Reported by Christian Burger at <http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00031.html>. * THANKS: Add Christian Burger.
Joel E. Denny
2007-08-03 04:51:23 +00:00
cbd5054909
* src/muscle_tab.c (muscle_percent_define_flag_if): In order to determine whether this function has already complained about an invalid value for a %define boolean variable, don't check whether Bison has ever examined the value. As written, the check was a tautology. Instead, record and check for this complaint using a separate muscle.
Joel E. Denny
2007-07-29 01:17:40 +00:00
eb1b07409f
Fix push parsing memory leak reported by Brandon Lucia at <http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00032.html>. * THANKS: Add Brandon Lucia. * data/push.c (yypstate_delete): Free the stack if it was reallocated but the parse never completed and thus freed it. * tests/Makefile.am (TESTSUITE_AT): Add push.at. * tests/testsuite.at: Include push.at. * test/push.at: New. (Push Parsing: Memory Leak for Early Deletion): New test case.
Joel E. Denny
2007-07-28 04:27:32 +00:00
9d774affba
Improve handling of multiple S/R conflicts in the same state and of S/R conflicts involving multiple reductions. * src/conflicts.c (resolve_sr_conflict): Don't assign the error action set for a state here or Bison will abort if it is reassigned on a later conflicted reduction in the same state. Similarly, don't finalize and assign the solved conflicts report here or it will be lost if it is reassigned on a later conflicted reduction in the same state. (set_conflicts): Instead, assign them both here after all S/R conflicts in the state have been fully examined. * src/print.c (shift_set): Rename to... (no_reduce_set): ... this. (print_reductions): Update for rename, and add %nonassoc error action tokens to no_reduce_set so that, when printing the first remaining reduction on an error action token, the reduction is enclosed in brackets. (print_results): Update for rename. * tests/conflicts.at (Solved conflicts report for multiple reductions in a state): New test case. (%nonassoc error actions for multiple reductions in a state): New test case.
Joel E. Denny
2007-07-17 06:56:36 +00:00
b541ffdf2c
* lib/.cvsignore: Add charset.alias.
Joel E. Denny
2007-07-17 05:12:11 +00:00
10159d2a67
* build-aux/.cvsignore: Add compile. * lib/.cvsignore: Add ref-add.sed, ref-del.sed, and uniwidth.
Joel E. Denny
2007-07-17 03:19:37 +00:00
953b39351a
* bootstrap (slurp): Create target directories that don't exist. Specifically, we need lib/uniwidth/ because of recent Gnulib changes.
Joel E. Denny
2007-07-17 02:28:28 +00:00
6ce2d93a9b
* LR0.c (new_itemsets): Fix wording in comments: say item index rather than item number. * closure.c (closure): Likewise. * state.h (reductions): Comment sorting of rules. (state): Comment sorting of items.
Joel E. Denny
2007-07-10 02:57:31 +00:00
ce3448d5b9
Fix C++ test cases after recent Gnulib changes. Discussed starting at <http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00000.html>. * examples/calc++/Makefile.am (DEFAULT_INCLUDES): Override Automake's definition in order to avoid Gnulib headers since we don't use config.h here. * tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Use AT_DATA_GRAMMAR rather than AT_DATA so that config.h is included.
Joel E. Denny
2007-07-03 14:08:29 +00:00
8a86eef0fa
* data/glr.c (yy_yypstack, yypstates, yypdumpstack): Use YYFPRINTF instead of fprintf. Guard these functions with #if YYDEBUG instead of #ifdef YYDEBUG for consistency with all other uses of YYDEBUG in Bison and so that YYFPRINTF is guaranteed to be defined here.
Joel E. Denny
2007-07-02 02:07:20 +00:00
71b61d4db5
Improve some comments in parser table construction. * src/LR0.c (new_itemsets): Explain sorting of itemset and kernel_base. (generate_states): Don't mention ruleset, which is internal to closure. * src/closure.c (closure): Explain sorting of core and itemset, which is required for this function to behave correctly. * src/closure.h (closure): Mention sorting.
Joel E. Denny
2007-05-29 04:24:17 +00:00
b1a8161341
* src/muscle_tab.c (muscle_percent_define_invalid_value): Replace with... (muscle_percent_define_check_values): ... this more helpful function. Again, it's not used yet, but it will be. * src/muscle_tab.h: Likewise.
Joel E. Denny
2007-05-29 03:06:34 +00:00
2a6b783def
* src/lalr.c (state_lookahead_tokens_count): For code readability, move the check for disabled transitions to an aver since conflict resolution hasn't happened yet.
Joel E. Denny
2007-05-28 04:14:18 +00:00
efa02545e0
Update copyright date.
Joel E. Denny
2007-05-26 23:56:55 +00:00
61fee93ecb
* NEWS (2.3a+): In the %code entry, reference section `Bison Declaration Summary' from the manual now since the %code summary has moved there. * doc/bison.texinfo (Prologue Alternatives): Mention that directives in the rules section must be terminated by semicolons.
Joel E. Denny
2007-05-26 20:08:18 +00:00
f124d4233f
Extend the front-end API for %define variables to more completely mirror the back-end. This will be useful in the future. * data/bison.m4 (b4_percent_define_get, b4_percent_define_ifdef): Update comments to mention the new front-end counterparts of these macros. * src/muscle_tab.c (MUSCLE_COMMON_DECODE): New macro with common code for muscle_string_decode and muscle_location_decode. (muscle_string_decode): New static function. (muscle_location_decode): Use MUSCLE_COMMON_DECODE. (muscle_percent_define_get, muscle_percent_define_ifdef): New functions. (muscle_percent_define_flag_if): Use muscle_percent_define_ifdef and muscle_percent_define_get to mimic the b4_percent_define_flag_if implementation more closely. (muscle_percent_define_invalid_value): New function. * src/muscle_tab.h (muscle_percent_define_get, muscle_percent_define_ifdef, muscle_percent_define_invalid_value): Prototype.
Joel E. Denny
2007-05-20 05:01:53 +00:00
75ad86eebd
* NEWS (2.3a+): Mention yesterday's state-removal change. (2.3a): Remove the %language entry, which was added after 2.3a. * src/LR0.c, src/closure.c, src/closure.h, src/conflicts.c, src/conflicts.h, src/lalr.c, src/lalr.h, src/print.c, src/print_graph.c, src/state.c, src/state.h, tests/conflicts.at, tests/existing.at: Update copyright date.
Joel E. Denny
2007-05-08 05:03:53 +00:00
5967f0cf59
If conflict resolution makes states unreachable, remove those states, report rules that are then unused, and don't report conflicts in those states. * src/conflicts.c, src/conflicts.h (conflicts_update_state_numbers): New global function. * src/lalr.c, src/lalr.h (lalr_update_state_numbers): New global function. * src/main.c (main): After conflict resolution, remove the unreachable states and update all data structures that reference states by number. * src/state.c (state_new): Initialize each state's reachable member to false. (state_mark_reachable_states): New static function. (state_remove_unreachable_states): New global function. * src/state.h (struct state): Add member bool reachable. (state_remove_unreachable_states): Prototype. * tests/conflicts.at (Unreachable States After Conflict Resolution): New test case. * tests/existing.at (GNU pic Grammar): Update test case output now that an unused rule is discovered.
Joel E. Denny
2007-05-07 02:56:56 +00:00
b09f4f4851
Minor code cleanup in parser table construction. * src/LR0.c (new_itemsets): Use item_number_is_symbol_number. (new_itemsets, save_reductions): Update for rename to nitemset. * src/closure.c (nritemset): Rename to... (nitemset): ... this since the "r" appears to meaningless and isn't used in the comments. (closure): Update for rename. * src/closure.h (nritemset): Update extern to... (nitemset): ... this. * src/lalr.c (LA): Fix a typo in comments. * src/print.c (print_core): Update for rename to nitemset. * src/print_graph.c (print_graph): Likewise. * src/state.h: Fix some typos in header comments.
Joel E. Denny
2007-05-07 02:28:42 +00:00
9b33de72cd
Use ASCII for Sebastien Fricker's name.
Paul Eggert
2007-04-04 22:41:58 +00:00
bbb44d83f8
* README-hacking: New file, taken mostly from coreutils, with changes for Bison. Contains much of the contents of: * README-cvs: Remove. * bootstrap: Sync from gnulib. * build-aux/.cvsignore: Remove *.t, mkinstalldirs. * lib/.cvsignore: Add wchar.h, wctype.h. Remove exit.h.
Paul Eggert
2007-04-04 22:36:54 +00:00
2955354793
* doc/bison.texinfo (Destructor Decl): Fix typo reported by Sebastian Setzer. (Java Differences): Fix some typos. * THANKS: Add Sebastian Setzer.
Joel E. Denny
2007-03-10 21:05:24 +00:00
7cfc1553a3
* fnchange.lst: Reflect the renaming of c++ into cxx.
Juan Manuel Guerrero
2007-03-08 01:47:29 +00:00
a7309d7d90
* config.sed: Reflect the renaming of c++-skel.m4 into cxx-skel.m4.
Juan Manuel Guerrero
2007-03-08 01:47:19 +00:00
0d1c1cab3c
* config.bat: Reflect the renaming of c++-skel.m4 into cxx-skel.m4.
Juan Manuel Guerrero
2007-03-08 01:47:08 +00:00
7ac22ca61d
* config.bat: Inhibit the use of disallowed characters.
Juan Manuel Guerrero
2007-03-07 21:58:17 +00:00
90f09655c1
* testsuite.sed: Inhibit the use of disallowed characters.
Juan Manuel Guerrero
2007-03-07 21:58:05 +00:00
122bea3ab9
DJGPP spefic issue. Inhibit the use of disallowed characters for file name genertion on Win98, WinXP, etc. These are |<>":?*and concern testsuite case 46. * Makefile.am: djgpp/testsuite.sed added to EXTRA_DIST * djgpp/testsuite.sed: Inhibit the use of disallowed characters. * djgpp/config.bat: Inhibit the use of disallowed characters.
Juan Manuel Guerrero
2007-03-07 21:57:35 +00:00
ea3bcc0fcb
* Makefile.am: djgpp/testsuite.sed added to EXTRA_DIST
Juan Manuel Guerrero
2007-03-07 21:56:39 +00:00
c4d505179a
* djgpp/config.bat: Rename arguments to args. Avoids 8.3 alias difficulty.
Juan Manuel Guerrero
2007-03-07 07:24:23 +00:00
50a843778a
* djgpp/config.sed: Fix that inttypes.h and inttypes_.h map on the same 8.3 alias.
Juan Manuel Guerrero
2007-03-07 06:33:37 +00:00
7b30971d7b
* djgpp/config.bat: Fix that inttypes.h and inttypes_.h map on the same 8.3 alias.
Juan Manuel Guerrero
2007-03-07 06:33:27 +00:00
9611cfa20b
Miscellaneous %define and %code cleanup. * data/bison.m4 (b4_percent_define_flag_if): Correct comments on how values are interpreted. * doc/bison.texinfo (Decl Summary): Clean up and extend %define documentation a little more. * src/muscle_tab.c (MUSCLE_USER_NAME_CONVERT, muscle_percent_define_insert, muscle_percent_code_grow): New functions/macros. * src/muscle_tab.h (muscle_percent_define_insert, muscle_percent_code_grow): Prototype. * src/parse-gram.y (prologue_declaration): Use muscle_percent_define_insert and muscle_percent_code_grow when parsing %define and %code directives.
Joel E. Denny
2007-03-02 06:26:28 +00:00
0bf9249152
* src/print.c (lookahead_set, state_default_rule): Remove. (print_reductions): Replace state_default_rule invocation with equivalent use of yydefact, which was computed in token_actions in tables.c. (print_results): Don't allocate lookahead_set.
Joel E. Denny
2007-03-01 03:40:18 +00:00
28b806cbd5
lib/.cvsignore: Update.
Joel E. Denny
2007-02-24 22:40:59 +00:00
f57a753663
Use YYFPRINTF instead of fprintf where appropriate. Reported by Sbastien Fricker at <http://lists.gnu.org/archive/html/bug-bison/2007-02/msg00035.html>. * THANKS: Add Sbastien Fricker. * data/glr.c, data/push.c, data/yacc.c (yy_reduce_print): Implement. * doc/bison.texinfo (Tracing): Make it clearer that YYFPRINTF must accept a variable number of arguments.
Joel E. Denny
2007-02-24 05:43:35 +00:00
6404a5bf3f
* bootstrap: Remove occurrences of .#bootmp from lib/Makefile.
Joel E. Denny
2007-02-19 06:06:55 +00:00
1ab41b2a2e
* djgpp/README.in: More generic description of required packages for compiling the sources.
Juan Manuel Guerrero
2007-02-16 10:48:21 +00:00
c7c8ecd1df
* djgpp/config.site: Adjustments concerning the use of autoconf 2.61.
Juan Manuel Guerrero
2007-02-14 01:20:37 +00:00
2c061cb015
* djgpp/config.sed: Adjustments concerning the use of autoconf 2.61.
Juan Manuel Guerrero
2007-02-14 01:20:26 +00:00
12ab1c9dd1
* djgpp/config.bat: Adjustments concerning the use of autoconf 2.61.
Juan Manuel Guerrero
2007-02-14 01:20:06 +00:00
e4e0963996
* DJGPP specific adjustments concerning the use of autoconf 2.61.
Juan Manuel Guerrero
2007-02-14 01:19:42 +00:00
d7e0a1a776
Undo my 2007-02-07 change, switching back to the c-strcase module introduced in the 2007-02-03 change. Bruno Haible reported that the 2007-02-07 change would be dangerous in Turkish if we add a language whose name contains "i", since "i" is not lowercase "I" in Turkish. * bootstrap.conf (gnulib_modules): Add c-strcase. Remove strcase. * lib/.cvsignore: Add c-ctype.c, c-ctype.h, c-strcase.h, c-strcasecomp.c, c-strncasecmp.c. Remove strcasecmp.c, strncasecmp.c. * m4/.cvsignore: Remove strcase.m4. * src/getargs.c: Revert 2007-02-07 change, as follows. Include c-strcase.h. (language_argmatch): Use c_strcasecmp rather than strcasecmp.
Paul Eggert
2007-02-12 06:11:39 +00:00
574add857a
* data/Makefile.am: Update copyright date. * data/push.c (yypull_parse): Report memory exhaustion and return 2 if yypstate_new returns NULL. (yypstate_new): Return NULL if malloc does. * src/reader.c (packgram): Move translation of rule actions from the beginning of packgram to... (check_and_convert_grammar): ... here right before packgram is invoked so it's easier to write more complete comments, and remove redundant code.
Joel E. Denny
2007-02-11 07:34:26 +00:00
e785ccf715
As in semantic actions, make @$ in %initial-action, %destructor, and %printer imply %locations. * src/scan-code.l (SC_SYMBOL_ACTION): Set locations_flag = true when scanning @$. * tests/actions.at (AT_CHECK_ACTION_LOCATIONS): New macro supporting... (@$ in %initial-action implies %locations, @$ in %destructor implies %locations, @$ in %printer implies %locations): ... these new test cases.
Joel E. Denny
2007-02-10 22:28:23 +00:00
1cfe1ed7c8
Undo most of the 2007-02-03 change, switching to the strcase module now that gnulib strcase has been fixed. * bootstrap.conf (gnulib_modules): Remove c-strcase. Add strcase. * lib/.cvsignore: Remove c-ctype.c, c-ctype.h, c-strcase.h, c-strcasecomp.c, c-strncasecmp.c. Add strcasecmp.c, strncasecmp.c * m4/.cvsignore: Add strcase.m4. * src/getargs.c: Revert 2007-02-03 change, as follows. Don't include c-strcase.h. (language_argmatch): Use strcasecmp rather than c_strcasecmp. strcasecmp has "unspecified behavior" outside the POSIX locale, but it works fine in practice if at least one argument is ASCII, as is the case in Bison.
Paul Eggert
2007-02-07 20:37:29 +00:00
2c2b72205a
* .cvsignore: Add javacomp.sh, javaexec.sh. Is this really the right spot for these files? * bootstrap.conf (gnulib_modules): Add c-strcase. * lib/.cvsignore: Add c-ctype.c c-ctype.h, c-strcasecomp.c, c-strncasecmp.c. * src/getargs.c: Include c-strcase.h. (language_argmatch): Use c_strcasecmp rather than strcasecmp, to avoid unspecified behavior.
Paul Eggert
2007-02-04 07:19:10 +00:00
b2b81dae23
* doc/bison.texinfo (Decl Summary): Correct typo.
Joel E. Denny
2007-02-01 06:39:43 +00:00
87b0a37597
* src/scan-skel.l (at_directive_perform): Fix switch statements for last patch.
Joel E. Denny
2007-01-28 15:10:56 +00:00
3eb82471fa
Clean up. * src/scan-skel.l (at_directive_perform): Add at_directive_argc and at_directive_argv arguments so these no longer have to be global variables. Also, update the implementation for the following changes. (fail_for_at_directive_too_many_args, fail_for_at_directive_too_few_args): Add at_directive_name argument. (at_directive_name): Remove as at_directive_argv[0] will be used for this now. (AT_DIRECTIVE_ARGC_MAX): Increment to make space in at_directive_argv for the directive name. (at_directive_argc, at_directive_argv): Make these local within skel_lex instead of global. (INITIAL): Update directive start action for above changes. (SC_AT_DIRECTIVE_ARG): Rename to... (SC_AT_DIRECTIVE_ARGS): ... this, and update for above changes. (SC_AT_DIRECTIVE_SKIP_WS): Update. (scan_skel): Move yylex_destroy to... (skel_scanner_free): ... here. * tests/skeletons.at (installed skeleton file name): Rename to... (installed skeleton file names): ... this.
Joel E. Denny
2007-01-28 14:31:56 +00:00
148d66d861
* ChangeLog: For changes in doc/bison.texinfo, consistently reference node names: say "Table of Symbols" not "Bison Symbols", and say "Decl Summary" not "Directives". * doc/bison.texinfo (Decl Summary, Calc++ Parser): Cross-reference the %code entry in "Decl Summary" rather than the one in "Table of Symbols" since the former is now the more complete one. (Prologue Alternatives): Likewise and do the same for %defines. (Table of Symbols): Add summary of %code, add summary of %define, and move full %code documentation to... (Decl Summary): ... here for consistency with other entries in these sections. Move %define entry in order to keep this list alphabetized. Reword %define entry a little to put less emphasis on the skeleton concept, which most users shouldn't have to think about.
Joel E. Denny
2007-01-27 23:34:16 +00:00
665f0c2454
Adjust to recent gnulib changes. * lib/.cvsignore: Remove stpcpy.h, strndup.h, strnlen.h. Add string.h, string_.h, unistd_.h, wchar_.h. * m4/.cvsignore: Add gnulib-common.m4, string_h.m4, wchar.m4. * src/system.h: Don't include <stpcpy.h>; this is now done by <string.h>.
Paul Eggert
2007-01-26 23:11:59 +00:00
5f340b4884
Back out previous patch.
Joel E. Denny
2007-01-18 08:32:33 +00:00
d4bdb91677
Implement @gettext<...@> directive to call gettext from skeletons. It can be used anywhere including inside arguments of directives of the form @foo(...@). Eventually, it should be possible to write an xgettext-like utility to extract @gettext<...@> text from skeletons. * data/bison.m4 (b4_check_user_names): Use @gettext<...@> when invoking b4_warn_at since b4_warn_at doesn't invoke gettext anymore. * data/glr.cc, data/lalr1.cc: Likewise but for b4_fatal and b4_complain reporting a push-parsing request or a missing %defines. * src/scan-skel.l (INITIAL): Recognize @gettext<' to start... (SC_AT_GETTEXT_ARG): ... this new start condition where gettext is invoked. (SC_AT_DIRECTIVE_ARG): Rename to... (SC_AT_DIRECTIVE_ARGS): ... this, and recognize @gettext<' to start SC_AT_GETTEXT_ARG. (at_directive_perform): Don't invoke gettext for @warn(...@), @warn_at(...@), etc. Instead, let the skeletons decide what should be passed to @gettext<...@>. * tests/skeletons.at (@gettext<...@>): New test case.
Joel E. Denny
2007-01-18 05:14:59 +00:00
a7867f53b3
Implement support for relative and absolute skeleton file names. Discussed starting at <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00071.html>. * doc/bison.texinfo (Decl Summary): Document in %skeleton entry. (Bison Options): Document in --skeleton entry. * src/output.c (output_skeleton): Use strncpy rather than strcpy since full_skeleton can't necessarily hold all of pkgdatadir. If the specified skeleton file name contains a /', don't prepend pkgdatadir. * src/parse-gram.y (prologue_declaration): If the specified skeleton file name contains a /', prepend the grammar file directory. * tests/Makefile.am (TESTSUITE_AT): Add skeletons.at. * skeletons.at: New file. (relative skeleton file names): New test case. (installed skeleton file names): New test case. * tests/testsuite.at: Include skeletons.at.
Joel E. Denny
2007-01-18 02:18:17 +00:00
bb32f4f284
* doc/bison.texinfo (Calc++ Parsing Driver): Let "parse" return an error code. (Calc++ Scanner): Exit with failure if we can't open the input file. Accept "-" standing for stdin. (Calc++ Top Level): Print the result only if the parsing was successful.
Akim Demaille
2007-01-16 13:11:30 +00:00
a4e25e1dec
Clean up %define and %code implementation in M4 some. Most importantly, rename all related macros to be in the b4_percent_define and b4_percent_code namespaces. Also, complete support for .' in %define variable names and %code qualifiers. * data/bison.m4 (b4_check_user_names): Check for special "SKELETON-NAMESPACE(name)" macros instead of using two nested m4_foreach loops. (b4_get_percent_define, b4_get_percent_code): Rename to... (b4_percent_define_get, b4_percent_code_get): ... these. Extend documentation with examples. For SKELETON-NAMESPACE (as documented for b4_check_user_names), use b4_percent_define_skeleton_variables and b4_percent_code_skeleton_qualifiers. Expect any value for the %define variable foo' to be stored in the macro named b4_percent_define(foo)'; expect any %code blocks for the qualifier foo' to be stored in a macro named b4_percent_code(foo)'; expect any unqualified %code blocks to be stored in a macro named b4_percent_code_unqualified'. Use m4_indir so that %define variable names and %code qualifiers can contain `.', which is allowed by the grammar parser. (b4_percent_define_default): New macro to set a default value for a %define variable. (m4_wrap): Update wrapped code, and fix some underquoting. (b4_check_user_names_wrap): Update and define outside the m4_wrap. Expect grammar uses of %define variables and %code qualifiers to be defined in b4_percent_define_user_variables and b4_percent_code_user_qualifiers. * data/c++.m4: Use b4_percent_define_default rather than m4_define_default. Fix some underquoting. Skeleton usage of %define variable define_location_comparison now implies skeleton usage of %define variable filename_type. * data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc, data/push.c, data/yacc.c: Update macro names. * src/parse-gram.y (prologue_declaration, grammar_declaration): Update muscle names.
Joel E. Denny
2007-01-16 06:16:04 +00:00
e37c665c41
* djgpp/config.site: Set ac_cv_path_mkdir to a sane DJGPP specific default. Set gl_cv_absolute_wctype_h to a sane DJGPP specific default.
Juan Manuel Guerrero
2007-01-14 22:22:26 +00:00
7d2d521fb8
* tests/glr-regression.at: Use AT_PARSER_CHECK rather than AT_CHECK to run parsers in all tests so that Valgrind is invoked during maintainer-check-valgrind. (Duplicate representation of merged trees): Free all semantic values. (Duplicated user destructor for lookahead): Likewise.
Joel E. Denny
2007-01-10 03:47:50 +00:00
e0ac9b4bb0
* tests/local.at (AT_PARSER_CHECK): Add a PRE argument to specify a command-line prefix. * tests/torture.at (Exploding the Stack Size with Alloca): Stderr is ignored, so use that PRE to set --log-fd=1 in VALGRIND_OPTS so we don't miss Valgrind messages. (Exploding the Stack Size with Malloc): Likewise.
Joel E. Denny
2007-01-10 02:55:19 +00:00
78143faa16
Ignore YYSTACK_USE_ALLOCA for push parsers since the stacks can't be locals. Reported by Juan Manuel Guerrero at <http://lists.gnu.org/archive/html/bug-bison/2007-01/msg00000.html>. * data/push.c: Enclose the #ifdef YYSTACK_USE_ALLOCA in b4_push_if. Fix some indentation also. * tests/torture.at (Exploding the Stack Size with Alloca): Add comment explaining this issue.
Joel E. Denny
2007-01-10 00:50:55 +00:00
8f7ebfc81f
Regenerate.
Joel E. Denny
2007-01-09 05:36:40 +00:00
5c80250c8d
Clarify last entry a little.
Joel E. Denny
2007-01-09 05:32:14 +00:00
7ecec4ddf9
Simplify union and prologue handling, and escape union and lex/parse params with digraphs. * data/bison.m4 (b4_pre_prologue, b4_post_prologue): Set their default values to the empty string since these are no longer guaranteed initialized by the front-end. * data/glr.c, data/glr.cc, data/lalr1.cc, data/push.c, data/yacc.c: Add braces around b4_user_stype since this is no longer done by the front-end. * src/files.c, src/files.h (pre_prologue_obstack, post_prologue_obstack): Remove. * src/muscle_tab.c (muscle_pair_list_grow): Don't duplicate header comments here. Use MUSCLE_OBSTACK_SGROW so that values are escaped with digraphs. This fixes lex params and parse params. * src/muscle_tab.h (muscle_pair_list_grow): Update comments. * src/output.c (prepare): Remove muscle insertion of the prologues. (output): Remove freeing of pre_prologue_obstack and post_prologue_obstack. * src/parse-gram.y (prologue_declaration): Use muscle_code_grow rather than prologue_augment for prologue parsing so you don't need prologue obstacks. (grammar_declaration): Use `braceless' instead of "{...}" so that braces are already stripped and code is escaped with digraphs. * src/reader.c (prologue_augment): Remove. (reader): Remove initialization of pre_prologue_obstack and post_prologue_obstack. * src/reader.h (prologue_augment): Remove.
Joel E. Denny
2007-01-09 05:24:11 +00:00
16dc6a9ebf
Remove quotes from variables names in %define directives and from qualifiers in %code directives, and restrict the characters that are allowed in them to M4-friendly ones. For %define, continue to support the quoted form as a deprecated feature. Discussed starting at <http://lists.gnu.org/archive/html/bison-patches/2007-01/msg00023.html>. * NEWS (2.3a+): Add entry for the change to %define. Update entry for %code. * doc/bison.texinfo (Prologue Alternatives): Update. (Bison Declaration Summary): In %defines entry, update mention of %code requires' and %code provides'. (C++ Location Values): Update %define uses. (Calc++ Parser Interface): Likewise. (Calc++ Parser): Likewise, and update %code requires' uses. (Bison Symbols): Update %code documentation. * src/parse-gram.y (prologue_declaration): For %define variables, use variable' instead of STRING'. (grammar_declaration): For %code qualifiers, use ID' instead of STRING'. (variable): New nonterminal that takes an ID' or a `STRING'. * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Update %code and %define uses. * tests/calc.at (_AT_DATA_CALC_Y): Update %define use. * tests/input.at (Reject unused %code qualifiers): Update %code uses. (%define errors): Update %define uses.
Joel E. Denny
2007-01-09 01:17:51 +00:00
e9813cd4f8
* src/parse-gram.y (prologue_declaration): Use MUSCLE_INSERT_STRING instead of muscle_insert for %define values so that M4-special characters are replaced with digraphs. * tests/input.at (%define errors): Extend to check weird values.
Joel E. Denny
2007-01-08 22:06:55 +00:00
6afc30cc87
Instead of having skeletons declare all valid %define variables and %code qualifiers, provide macros that retrieve the associated values and build these lists automatically. Thus Bison will now warn when a variable or qualifier is not used by the skeleton in the current invocation regardless of whether it might sometimes be used by that skeleton in other invocations. Also, move all %define value macros to the b4_percent_define_ namespace, and remove the %define "NAME" {CODE} form, which is replaced by %code. * data/bison.m4 (b4_check_for_unrecognized_names): Rename to... (b4_check_user_names): ... this, and change the series of valid name arguments to a single list argument for names used in the skeleton similar to the existing list argument for names used in the grammar. Warn instead of complaining. (b4_get_percent_define, b4_get_percent_code): New to retrieve %define values and %code code, to format %code code properly, and to build lists of all %define variables and %code qualifiers used in the skeleton: b4_skeleton_percent_define_variables and b4_skeleton_percent_code_qualifiers. (b4_check_percent_define_variables, b4_check_percent_code_qualifiers): Remove, and... (m4_wrap): ... m4_wrap b4_check_user_names invocations instead so that the skeleton names lists can finish building first. In place of b4_used_percent_define_variables and b4_used_percent_code_qualifiers, expect the lists b4_user_percent_define_variables and b4_user_percent_code_qualifiers. * data/c++.m4: Where setting default values for b4_parser_class_name, b4_location_type, b4_filename_type, b4_namespace, and b4_define_location_comparison, update their names to the b4_percent_define_ namespace. * data/glr.c: Don't use b4_check_percent_define_variables and b4_check_percent_code_qualifiers. Use b4_get_percent_code. * data/glr.cc, data/lalr1.cc: Likewise, and use b4_get_percent_define. (b4_parser_class_name, b4_namespace): Define these using b4_get_percent_define for parser_class_name and namespace. Normally this would be a bad idea since there might be cases when the variables aren't used, but these variables are too pervasive in these skeletons for that to be a problem. * data/location.cc: Use b4_get_percent_define. * data/push.c: Don't use b4_check_percent_define_variables and b4_check_percent_code_qualifiers. Use b4_get_percent_code. * data/yacc.c: Likewise, and don't call m4_exit in b4_use_push_for_pull_if or m4_wrap code will never execute. * src/muscle_tab.c, src/muscle_tab.h (muscle_grow_used_name_list): Rename to... (muscle_grow_user_name_list): ... this for consistency with the terminology used in bison.m4. * src/parse-gram.y (prologue_declaration): Prepend "percent_define_" to %define variable names, and rename muscle used_percent_define_variables to user_percent_define_variables. (grammar_declaration): Rename muscle used_percent_code_qualifiers to user_percent_code_qualifiers. (content): Remove. (content.opt): Replace content RHS with STRING RHS so %define "NAME" {CODE} form is no longer accepted. * tests/input.at (Reject bad %code qualifiers): Rename to... (Reject unused %code qualifiers): ... this, and update test output. (%define error): Update test output.
Joel E. Denny
2007-01-08 21:38:30 +00:00
7eb8a0bcca
Check for unrecognized %define variables similar to checking for unrecognized %code qualifiers. Check for redefined %define variables. * data/bison.m4 (b4_check_for_unrecognized_names): New macro that generalizes... (b4_check_percent_code_qualifiers): ... this, which now wraps it. (b4_check_percent_define_variables): New, also wraps it. * data/glr.c: Unless glr.cc is wrapping glr.c, declare no valid %define variables using b4_check_percent_define_variables. * data/glr.cc, data/lalr1.cc: Declare the valid %define variables as all those exercised in the test suite and all those listed in the `Default values' section of c++.m4. Are there others? * data/push.c, data/yacc.c: Declare no valid %define variables. * src/muscle_tab.c, src/muscle_tab.h (muscle_find_const): New function, similar to muscle_find, but it works even when the muscle stores a const value. (muscle_grow_used_name_list): New function for constructing the used name list muscles that b4_check_for_unrecognized_names requires. * src/parse-gram.y (prologue_declaration): Warn if a variable is %define'd more than once. Define the b4_used_percent_define_variables muscle with muscle_grow_used_name_list. (grammar_declaration): Abbreviate %code code with muscle_grow_used_name_list. * tests/input.at (%define errors): New.
Joel E. Denny
2007-01-07 07:50:27 +00:00
3fc65ead4d
Provide warn_at, complain_at, and fatal_at function callbacks to the skeletons, and use this for %code qualifier complaints. * data/bison.m4 (b4_error_at): New, invoked by... (b4_warn_at, b4_complain_at, b4_fatal_at): ... these new macros to wrap the skeleton scanner's new @warn_at(...@), @complain_at(...@), and @fatal_at(...@) directives. (b4_check_percent_code_qualifiers): Rewrite to expect locations for qualifiers in b4_used_percent_code_qualifiers and to use b4_complain_at. * src/location.c, src/location.h (boundary_set_from_string): New global function. * src/muscle_tab.c, src/muscle_tab.h (muscle_boundary_grow): New global function. * src/parse-gram.y (grammar_declaration): Add locations for qualifiers to b4_used_percent_code_qualifiers. * src/scan-skel.l (fail_for_at_directive_too_few_args): New static function. (AT_DIRECTIVE_ARGC_MAX): Increase for boundary arguments. (lineno): Rename to... (out_lineno): ... this so I don't misunderstand it again. (SC_AT_DIRECTIVE_SKIP_WS): Don't increment out_lineno for newlines here; these newlines are in the input but not the output file. (SC_AT_DIRECTIVE_ARG): Likewise. Extract directive execution to... (at_directive_perform): ... this new static function, and add handling of new @warn_at(...@), @complain_at(...@), and @fatal_at(...@) directives. * tests/input.at (Reject bad %code qualifiers): Update test output with locations and extend.
Joel E. Denny
2007-01-07 03:19:21 +00:00
1c7b7e1d87
Clean up b4_check_percent_code_qualifiers a little. * data/bison.m4 (b4_check_percent_code_qualifiers): Expect qualifiers in b4_used_percent_code_qualifiers to be double-M4-quoted. Rewrite documentation and add examples. * src/parse-gram.y (grammar_declaration): Double-M4-quote those qualifiers here.
Joel E. Denny
2007-01-06 23:12:25 +00:00
08af01c2fc
Don't use m4_divert since it makes m4_divert_push and m4_divert_pop unreliable -- especially when they're hidden inside another macro. * data/bison.m4, data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4: Remove m4_divert(-1). * data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc, data/push.c, data/yacc.c: Likewise, and replace m4_divert(0) with m4_divert_push(0) and m4_divert_pop(0). * data/output.c (output_skeleton): Don't add an m4_divert_push(0) and an m4_wrap([m4_divert_pop(0)]) to the M4. Diversion -1, which is pushed and popped by m4sugar, should be first on the stack.
Joel E. Denny
2007-01-06 06:14:04 +00:00
8e0a5e9e73
Consolidate the 4 prologue alternative directives (%code, %requires, %provides, and %code-top) into a single %code directive with an optional qualifier field. Discussed at <http://lists.gnu.org/archive/html/bison-patches/2007-01/msg00012.html>. * NEWS (2.3a+): Rewrite the existing entry for the prologue alternatives. * doc/bison.texinfo (Prologue Alternatives): Update. (Decl Summary): Update to %code "requires" and %code "provides". (Calc++ Parser): Update to %code "requires". (Bison Symbols): Remove entries for %requires, %provides, and %code-top. Rewrite %code entry, and add a %code "QUALIFIER" entry. * data/bison.m4 (b4_user_provides, b4_user_requires): Remove as these are replaced by b4_percent_code_provides and b4_percent_code_requires, which are skeleton-specific. (b4_check_percent_code_qualifiers): New. A skeleton can use this to declare what %code qualifiers it supports and to complain if any other qualifiers were used in the grammar. * data/glr.cc: Update to use b4_user_code([b4_percent_code_requires]) and b4_user_code([b4_percent_code_provides]) in place of b4_user_requires and b4_user_provides. * data/glr.c, data/lalr1.cc, data/push.c, data/yacc.c: Likewise. Add b4_user_code([b4_percent_code_top]) and b4_user_code([b4_percent_code]). Invoke b4_check_percent_code_qualifiers. * src/parse-gram.y (PERCENT_CODE_TOP, PERCENT_PROVIDES, PERCENT_REQUIRES): Remove. (grammar_declaration): Remove RHS's for %code-top, %provides, and %requires. Rewrite the %code RHS as the unqualified form defining the muscle b4_percent_code. Add another RHS for the qualified %code form, which defines muscles of the form b4_percent_code_QUALIFIER and the b4_used_percent_code_qualifiers muscle. * src/scan-gram.l (PERCENT_CODE_TOP, PERCENT_PROVIDES, PERCENT_REQUIRES): Remove. * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Update to use %code "requires" and %code "provides". * tests/input.at (Reject bad %code qualifiers): New.
Joel E. Denny
2007-01-05 08:14:45 +00:00
95021767a1
Use the new code_props interface for destructors and printers. * 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_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 char const * and location. (symbol_destructor_location_get, symbol_printer_location_get): Remove since the locations are now contained in the return of symbol_destructor_get and symbol_printer_get. * 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/reader.c (symbol_should_be_used): Update use of symbol_destructor_get. * src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set): Update uses of the various _destructor_set and _printer_set functions. * src/symtab.c: (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_new, semantic_type_new, symbol_destructor_set, semantic_type_destructor_set, symbol_destructor_get, symbol_printer_set, semantic_type_printer_set, symbol_printer_get, symbol_check_alias_consistency, default_tagged_destructor_set, default_tagless_destructor_set, default_tagged_printer_set, default_tagless_printer_set): Update. (symbol_destructor_location_get, symbol_printer_location_get): Remove. (SYMBOL_CODE_PRINT): New similar to SYMBOL_ATTR_PRINT but for code_props members. (symbol_print): Use SYMBOL_CODE_PRINT.
Joel E. Denny
2007-01-04 04:51:22 +00:00
f6857bbf8c
Use the new code_props interface for rule actions. * src/symlist.h (symbol_list): Replace action, action_location, and used members with a code_props action_props member. * src/reader.c (symbol_should_be_used, grammar_rule_check, grammar_midrule_action, grammar_current_rule_merge_set, grammar_current_rule_symbol_append, packgram): Update. * src/scan-code.h (translate_rule_action): Remove, no longer used. * src/scan-code.l (handle_action_dollar): Update. (translate_rule_action): Remove, no longer used. * src/symlist.c (symbol_list_sym_new, symbol_list_syms_print): Update.
Joel E. Denny
2007-01-04 03:21:08 +00:00
7c0c61812d
Use the new code_props interface in parse-gram.y. * 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/scan-code.h, src/scan-code.l (translate_symbol_action, translate_code): Remove, no longer used. * src/symlist.h, src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set): Perform code translation here rather than depending on the caller to do so.
Joel E. Denny
2007-01-03 05:14:57 +00:00