Index: ChangeLog =================================================================== RCS file: /sources/bison/bison/ChangeLog,v retrieving revision 1.1610 diff -p -u -r1.1610 ChangeLog --- ChangeLog 21 Nov 2006 07:07:35 -0000 1.1610 +++ ChangeLog 2 Dec 2006 01:48:03 -0000 @@ -1,3 +1,25 @@ +2006-12-01 Joel E. Denny + + Support a file name argument to %defines. Deprecate `=' in + %file-prefix, %name-prefix, and %output. Discussed at + . + * 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. + 2006-11-21 Joel E. Denny Don't escape $ in test case titles since Autoconf 2.61 now does that Index: NEWS =================================================================== RCS file: /sources/bison/bison/NEWS,v retrieving revision 1.166 diff -p -u -r1.166 NEWS --- NEWS 21 Nov 2006 00:43:26 -0000 1.166 +++ NEWS 2 Dec 2006 01:48:04 -0000 @@ -6,6 +6,18 @@ Changes in version 2.3a+ (????-??-??): * The -g and --graph options now output graphs in Graphviz DOT format, not VCG format. +* The grammar file may now specify the name of the parser header file using + %defines. For example: + + %defines "parser.h" + +* The `=' that used to be required in the following declarations is now + deprecated: + + %file-prefix "parser" + %name-prefix "c_" + %output "parser.c" + * Revised warning: unset or unused mid-rule values Since Bison 2.2, Bison has warned about mid-rule values that are set but not Index: doc/bison.texinfo =================================================================== RCS file: /sources/bison/bison/doc/bison.texinfo,v retrieving revision 1.212 diff -p -u -r1.212 bison.texinfo --- doc/bison.texinfo 21 Nov 2006 00:43:26 -0000 1.212 +++ doc/bison.texinfo 2 Dec 2006 01:48:07 -0000 @@ -4598,12 +4598,16 @@ header also contains their code. @xref{Table of Symbols, ,%requires}. @end deffn address@hidden {Directive} %defines @var{defines-file} +Same as above, but save in the file @var{defines-file}. address@hidden deffn + @deffn {Directive} %destructor Specify how the parser should reclaim the memory associated to discarded symbols. @xref{Destructor Decl, , Freeing Discarded Symbols}. @end deffn address@hidden {Directive} %file-prefix="@var{prefix}" address@hidden {Directive} %file-prefix "@var{prefix}" Specify a prefix to use for all Bison output file names. The names are chosen as if the input file were named @address@hidden @end deffn @@ -4616,14 +4620,14 @@ grammar does not use it, using @samp{%lo accurate syntax error messages. @end deffn address@hidden {Directive} %name-prefix="@var{prefix}" address@hidden {Directive} %name-prefix "@var{prefix}" Rename the external symbols used in the parser so that they start with @var{prefix} instead of @samp{yy}. The precise list of symbols renamed in C parsers is @code{yyparse}, @code{yylex}, @code{yyerror}, @code{yynerrs}, @code{yylval}, @code{yychar}, @code{yydebug}, and (if locations are used) @code{yylloc}. For example, if you use address@hidden"c_"}, the names become @code{c_parse}, @code{c_lex}, address@hidden "c_"}, the names become @code{c_parse}, @code{c_lex}, and so on. In C++ parsers, it is only the surrounding namespace which is named @var{prefix} instead of @samp{yy}. @xref{Multiple Parsers, ,Multiple Parsers in the Same Program}. @@ -4656,7 +4660,7 @@ associate errors with the parser file, t file in its own right. @end deffn address@hidden {Directive} %output="@var{file}" address@hidden {Directive} %output "@var{file}" Specify @var{file} for the parser file. @end deffn @@ -7265,7 +7269,7 @@ Pretend that @code{%locations} was speci @item -p @var{prefix} @itemx address@hidden -Pretend that @code{%name-prefix="@var{prefix}"} was specified. +Pretend that @code{%name-prefix "@var{prefix}"} was specified. @xref{Decl Summary}. @item -l @@ -8653,6 +8657,11 @@ Bison declaration to create a header fil @xref{Decl Summary}. @end deffn address@hidden {Directive} %defines @var{defines-file} +Same as above, but save in the file @var{defines-file}. address@hidden Summary}. address@hidden deffn + @deffn {Directive} %destructor Specify how the parser should reclaim the memory associated to discarded symbols. @xref{Destructor Decl, , Freeing Discarded Symbols}. @@ -8685,7 +8694,7 @@ Bison declaration to request verbose, sp when @code{yyerror} is called. @end deffn address@hidden {Directive} %file-prefix="@var{prefix}" address@hidden {Directive} %file-prefix "@var{prefix}" Bison declaration to set the prefix of the output files. @xref{Decl Summary}. @end deffn @@ -8717,7 +8726,7 @@ function is applied to the two semantic @xref{GLR Parsers, ,Writing @acronym{GLR} Parsers}. @end deffn address@hidden {Directive} %name-prefix="@var{prefix}" address@hidden {Directive} %name-prefix "@var{prefix}" Bison declaration to rename the external symbols. @xref{Decl Summary}. @end deffn @@ -8739,7 +8748,7 @@ Bison declaration to assign nonassociati @xref{Precedence Decl, ,Operator Precedence}. @end deffn address@hidden {Directive} %output="@var{file}" address@hidden {Directive} %output "@var{file}" Bison declaration to set the name of the parser file. @xref{Decl Summary}. @end deffn Index: src/parse-gram.y =================================================================== RCS file: /sources/bison/bison/src/parse-gram.y,v retrieving revision 1.99 diff -p -u -r1.99 parse-gram.y --- src/parse-gram.y 21 Nov 2006 00:43:26 -0000 1.99 +++ src/parse-gram.y 2 Dec 2006 01:48:08 -0000 @@ -226,10 +226,16 @@ prologue_declaration: | "%debug" { debug_flag = true; } | "%define" STRING content.opt { muscle_insert ($2, $3); } | "%defines" { defines_flag = true; } +| "%defines" STRING + { + defines_flag = true; + spec_defines_file = xstrdup ($2); + } | "%error-verbose" { error_verbose = true; } | "%expect" INT { expected_sr_conflicts = $2; } | "%expect-rr" INT { expected_rr_conflicts = $2; } -| "%file-prefix" "=" STRING { spec_file_prefix = $3; } +| "%file-prefix" STRING { spec_file_prefix = $2; } +| "%file-prefix" "=" STRING { spec_file_prefix = $3; } /* deprecated */ | "%glr-parser" { nondeterministic_parser = true; @@ -241,10 +247,12 @@ prologue_declaration: } | "%lex-param" "{...}" { add_param ("lex_param", $2, @2); } | "%locations" { locations_flag = true; } -| "%name-prefix" "=" STRING { spec_name_prefix = $3; } +| "%name-prefix" STRING { spec_name_prefix = $2; } +| "%name-prefix" "=" STRING { spec_name_prefix = $3; } /* deprecated */ | "%no-lines" { no_lines_flag = true; } | "%nondeterministic-parser" { nondeterministic_parser = true; } -| "%output" "=" STRING { spec_outfile = $3; } +| "%output" STRING { spec_outfile = $2; } +| "%output" "=" STRING { spec_outfile = $3; } /* deprecated */ | "%parse-param" "{...}" { add_param ("parse_param", $2, @2); } | "%pure-parser" { pure_parser = true; } | "%push-parser" { push_parser = true; } Index: tests/calc.at =================================================================== RCS file: /sources/bison/bison/tests/calc.at,v retrieving revision 1.93 diff -p -u -r1.93 calc.at --- tests/calc.at 8 Nov 2006 20:28:57 -0000 1.93 +++ tests/calc.at 2 Dec 2006 01:48:08 -0000 @@ -556,7 +556,7 @@ AT_CHECK_CALC_LALR() AT_CHECK_CALC_LALR([%defines]) AT_CHECK_CALC_LALR([%locations]) -AT_CHECK_CALC_LALR([%name-prefix="calc"]) +AT_CHECK_CALC_LALR([%name-prefix="calc"]) dnl test deprecated `=' AT_CHECK_CALC_LALR([%verbose]) AT_CHECK_CALC_LALR([%yacc]) AT_CHECK_CALC_LALR([%error-verbose]) @@ -565,15 +565,15 @@ AT_CHECK_CALC_LALR([%pure-parser %locati AT_CHECK_CALC_LALR([%push-parser %locations]) AT_CHECK_CALC_LALR([%error-verbose %locations]) -AT_CHECK_CALC_LALR([%error-verbose %locations %defines %name-prefix="calc" %verbose %yacc]) +AT_CHECK_CALC_LALR([%error-verbose %locations %defines %name-prefix "calc" %verbose %yacc]) AT_CHECK_CALC_LALR([%debug]) -AT_CHECK_CALC_LALR([%error-verbose %debug %locations %defines %name-prefix="calc" %verbose %yacc]) +AT_CHECK_CALC_LALR([%error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc]) -AT_CHECK_CALC_LALR([%pure-parser %error-verbose %debug %locations %defines %name-prefix="calc" %verbose %yacc]) -AT_CHECK_CALC_LALR([%push-parser %error-verbose %debug %locations %defines %name-prefix="calc" %verbose %yacc]) +AT_CHECK_CALC_LALR([%pure-parser %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc]) +AT_CHECK_CALC_LALR([%push-parser %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc]) -AT_CHECK_CALC_LALR([%pure-parser %error-verbose %debug %locations %defines %name-prefix="calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}]) +AT_CHECK_CALC_LALR([%pure-parser %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}]) # ----------------------- # @@ -594,7 +594,7 @@ AT_CHECK_CALC_GLR() AT_CHECK_CALC_GLR([%defines]) AT_CHECK_CALC_GLR([%locations]) -AT_CHECK_CALC_GLR([%name-prefix="calc"]) +AT_CHECK_CALC_GLR([%name-prefix "calc"]) AT_CHECK_CALC_GLR([%verbose]) AT_CHECK_CALC_GLR([%yacc]) AT_CHECK_CALC_GLR([%error-verbose]) @@ -602,14 +602,14 @@ AT_CHECK_CALC_GLR([%error-verbose]) AT_CHECK_CALC_GLR([%pure-parser %locations]) AT_CHECK_CALC_GLR([%error-verbose %locations]) -AT_CHECK_CALC_GLR([%error-verbose %locations %defines %name-prefix="calc" %verbose %yacc]) +AT_CHECK_CALC_GLR([%error-verbose %locations %defines %name-prefix "calc" %verbose %yacc]) AT_CHECK_CALC_GLR([%debug]) -AT_CHECK_CALC_GLR([%error-verbose %debug %locations %defines %name-prefix="calc" %verbose %yacc]) +AT_CHECK_CALC_GLR([%error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc]) -AT_CHECK_CALC_GLR([%pure-parser %error-verbose %debug %locations %defines %name-prefix="calc" %verbose %yacc]) +AT_CHECK_CALC_GLR([%pure-parser %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc]) -AT_CHECK_CALC_GLR([%pure-parser %error-verbose %debug %locations %defines %name-prefix="calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}]) +AT_CHECK_CALC_GLR([%pure-parser %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}]) # ----------------------------- # @@ -626,13 +626,13 @@ m4_define([AT_CHECK_CALC_LALR1_CC], [AT_CHECK_CALC([%skeleton "lalr1.cc" %defines %locations] $@)]) AT_CHECK_CALC_LALR1_CC([]) -AT_CHECK_CALC_LALR1_CC([%error-verbose %name-prefix="calc" %verbose %yacc]) +AT_CHECK_CALC_LALR1_CC([%error-verbose %name-prefix "calc" %verbose %yacc]) -AT_CHECK_CALC_LALR1_CC([%error-verbose %debug %name-prefix="calc" %verbose %yacc]) +AT_CHECK_CALC_LALR1_CC([%error-verbose %debug %name-prefix "calc" %verbose %yacc]) -AT_CHECK_CALC_LALR1_CC([%pure-parser %error-verbose %debug %name-prefix="calc" %verbose %yacc]) +AT_CHECK_CALC_LALR1_CC([%pure-parser %error-verbose %debug %name-prefix "calc" %verbose %yacc]) -AT_CHECK_CALC_LALR1_CC([%pure-parser %error-verbose %debug %name-prefix="calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}]) +AT_CHECK_CALC_LALR1_CC([%pure-parser %error-verbose %debug %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}]) @@ -650,11 +650,11 @@ m4_define([AT_CHECK_CALC_GLR_CC], [AT_CHECK_CALC([%skeleton "glr.cc" %defines %locations] $@)]) AT_CHECK_CALC_GLR_CC([]) -AT_CHECK_CALC_GLR_CC([%error-verbose %name-prefix="calc" %verbose %yacc]) +AT_CHECK_CALC_GLR_CC([%error-verbose %name-prefix "calc" %verbose %yacc]) AT_CHECK_CALC_GLR_CC([%debug]) -AT_CHECK_CALC_GLR_CC([%error-verbose %debug %name-prefix="calc" %verbose %yacc]) +AT_CHECK_CALC_GLR_CC([%error-verbose %debug %name-prefix "calc" %verbose %yacc]) -AT_CHECK_CALC_GLR_CC([%pure-parser %error-verbose %debug %name-prefix="calc" %verbose %yacc]) +AT_CHECK_CALC_GLR_CC([%pure-parser %error-verbose %debug %name-prefix "calc" %verbose %yacc]) -AT_CHECK_CALC_GLR_CC([%pure-parser %error-verbose %debug %name-prefix="calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}]) +AT_CHECK_CALC_GLR_CC([%pure-parser %error-verbose %debug %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}]) Index: tests/headers.at =================================================================== RCS file: /sources/bison/bison/tests/headers.at,v retrieving revision 1.14 diff -p -u -r1.14 headers.at --- tests/headers.at 13 Feb 2006 19:07:04 -0000 1.14 +++ tests/headers.at 2 Dec 2006 01:48:08 -0000 @@ -89,7 +89,7 @@ AT_SETUP([export YYLTYPE]) AT_DATA_GRAMMAR([input.y], [%locations -%name-prefix="my_" +%name-prefix "my_" %{ #include #include Index: tests/local.at =================================================================== RCS file: /sources/bison/bison/tests/local.at,v retrieving revision 1.17 diff -p -u -r1.17 local.at --- tests/local.at 13 Oct 2006 05:00:26 -0000 1.17 +++ tests/local.at 2 Dec 2006 01:48:08 -0000 @@ -64,8 +64,8 @@ m4_pushdef([AT_PURE_AND_LOC_IF], m4_pushdef([AT_GLR_OR_PARAM_IF], [m4_bmatch([$3], [%glr-parser\|%parse-param], [$1], [$2])]) m4_pushdef([AT_NAME_PREFIX], -[m4_bmatch([$3], [%name-prefix=".*"], - [m4_bregexp([$3], [name-prefix="\([^"]*\)"], [\1])], +[m4_bmatch([$3], [%name-prefix ".*"], + [m4_bregexp([$3], [name-prefix "\([^"]*\)"], [\1])], [yy])]) # yyerror receives the location if %location & %pure & (%glr or %parse-param). m4_pushdef([AT_YYERROR_ARG_LOC_IF], Index: tests/output.at =================================================================== RCS file: /sources/bison/bison/tests/output.at,v retrieving revision 1.11 diff -p -u -r1.11 output.at --- tests/output.at 12 Oct 2006 23:29:52 -0000 1.11 +++ tests/output.at 2 Dec 2006 01:48:08 -0000 @@ -64,13 +64,13 @@ AT_CHECK_OUTPUT([foo.y], [%defines %verb AT_CHECK_OUTPUT([foo.yy], [%defines %verbose %yacc],[], [y.output y.tab.c y.tab.h]) -# Exercise %output and %file-prefix -AT_CHECK_OUTPUT([foo.y], [%file-prefix="bar" %defines %verbose], [], +# Exercise %output and %file-prefix including deprecated `=' +AT_CHECK_OUTPUT([foo.y], [%file-prefix "bar" %defines %verbose], [], [bar.output bar.tab.c bar.tab.h]) AT_CHECK_OUTPUT([foo.y], [%output="bar.c" %defines %verbose %yacc],[], [bar.output bar.c bar.h]) AT_CHECK_OUTPUT([foo.y], - [%file-prefix="baz" %output="bar.c" %defines %verbose %yacc], + [%file-prefix="baz" %output "bar.c" %defines %verbose %yacc], [], [bar.output bar.c bar.h]) @@ -86,6 +86,10 @@ AT_CHECK_OUTPUT([foo.yy], [], [--defines=foo.hpp -o foo.c++], [foo.c++ foo.hpp]) +AT_CHECK_OUTPUT([foo.yy], [%defines "foo.hpp"], + [-o foo.c++], + [foo.c++ foo.hpp]) + AT_CHECK_OUTPUT([foo.yy], [], [-o foo.c++ --graph=foo.gph], [foo.c++ foo.gph]) Index: tests/reduce.at =================================================================== RCS file: /sources/bison/bison/tests/reduce.at,v retrieving revision 1.14 diff -p -u -r1.14 reduce.at --- tests/reduce.at 14 May 2005 06:49:48 -0000 1.14 +++ tests/reduce.at 2 Dec 2006 01:48:08 -0000 @@ -27,7 +27,7 @@ AT_SETUP([Useless Terminals]) AT_DATA([[input.y]], [[%verbose -%output="input.c" +%output "input.c" %token useless1 %token useless2 @@ -71,7 +71,7 @@ AT_SETUP([Useless Nonterminals]) AT_DATA([[input.y]], [[%verbose -%output="input.c" +%output "input.c" %nterm useless1 %nterm useless2 @@ -128,7 +128,7 @@ AT_KEYWORDS([report]) AT_DATA([[input.y]], [[%verbose -%output="input.c" +%output "input.c" %token useful %% exp: useful; @@ -221,7 +221,7 @@ AT_DATA([[not-reduced.y]], /* A useful one. */ %token useful %verbose -%output="not-reduced.c" +%output "not-reduced.c" %% @@ -267,7 +267,7 @@ AT_DATA([[reduced.y]], /* A useful one. */ %token useful %verbose -%output="reduced.c" +%output "reduced.c" %% @@ -304,7 +304,7 @@ AT_KEYWORDS([report]) AT_DATA([[input.y]], [[%verbose -%output="input.c" +%output "input.c" %token useful %% exp: useful | underivable; @@ -342,7 +342,7 @@ AT_CLEANUP AT_SETUP([Empty Language]) AT_DATA([[input.y]], -[[%output="input.c" +[[%output "input.c" %% exp: exp; ]])