mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-19 09:13:04 +00:00
clearly deprecate %name-prefix
* src/scan-gram.l (%name-prefix): Issue a deprecation warning. * tests/calc.at, tests/headers.at, tests/input.at, tests/java.at, * tests/javapush.at, tests/local.at: Adjust expectations. Or disable -Wdeprecated. * doc/bison.texi: Document that %name-prefix is replaced by %define api.prefix.
This commit is contained in:
12
NEWS
12
NEWS
@@ -19,8 +19,16 @@ GNU Bison NEWS
|
|||||||
|
|
||||||
** Deprecated features
|
** Deprecated features
|
||||||
|
|
||||||
The use of the %error-verbose directive is deprecated in favor of "%define
|
The %error-verbose directive is deprecated in favor of '%define
|
||||||
parse.error verbose" since Bison 3.0, but no warning was issued.
|
parse.error verbose' since Bison 3.0, but no warning was issued.
|
||||||
|
|
||||||
|
The '%name-prefix "xx"' directive is deprecated in favor of '%define
|
||||||
|
api.prefix {xx}' since Bison 3.0, but no warning was issued. These
|
||||||
|
directives are slightly different, you might need to adjust your code.
|
||||||
|
%name-prefix renames only symbols with external linkage, while api.prefix
|
||||||
|
also renames types and macros, including @code{YYDEBUG},
|
||||||
|
@code{YYTOKENTYPE}, @code{yytokentype}, @code{YYSTYPE}, @code{YYLTYPE},
|
||||||
|
etc.
|
||||||
|
|
||||||
The following variables have been renamed for consistency. Backward
|
The following variables have been renamed for consistency. Backward
|
||||||
compatibility is ensured, but upgrading is recommended.
|
compatibility is ensured, but upgrading is recommended.
|
||||||
|
|||||||
@@ -5692,6 +5692,10 @@ it, using @samp{%locations} allows for more accurate syntax error messages.
|
|||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Directive} %name-prefix "@var{prefix}"
|
@deffn {Directive} %name-prefix "@var{prefix}"
|
||||||
|
Obsoleted by @samp{%define api.prefix @{@var{prefix}@}}. @xref{Multiple
|
||||||
|
Parsers, ,Multiple Parsers in the Same Program}. For C++ parsers, see the
|
||||||
|
@samp{%define api.namespace} documentation in this section.
|
||||||
|
|
||||||
Rename the external symbols used in the parser so that they start with
|
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
|
@var{prefix} instead of @samp{yy}. The precise list of symbols renamed in C
|
||||||
parsers is @code{yyparse}, @code{yylex}, @code{yyerror}, @code{yynerrs},
|
parsers is @code{yyparse}, @code{yylex}, @code{yyerror}, @code{yynerrs},
|
||||||
@@ -5700,9 +5704,11 @@ parsers is @code{yyparse}, @code{yylex}, @code{yyerror}, @code{yynerrs},
|
|||||||
@code{yypull_parse}, @code{yypstate}, @code{yypstate_new} and
|
@code{yypull_parse}, @code{yypstate}, @code{yypstate_new} and
|
||||||
@code{yypstate_delete} will also be renamed. For example, if you use
|
@code{yypstate_delete} will also be renamed. For example, if you use
|
||||||
@samp{%name-prefix "c_"}, the names become @code{c_parse}, @code{c_lex}, and
|
@samp{%name-prefix "c_"}, the names become @code{c_parse}, @code{c_lex}, and
|
||||||
so on. For C++ parsers, see the @samp{%define api.namespace} documentation
|
so on.
|
||||||
in this section. @xref{Multiple Parsers, ,Multiple Parsers in the Same
|
|
||||||
Program}.
|
Contrary to defining @code{api.prefix}, some symbols are @emph{not} renamed
|
||||||
|
by @code{%name-prefix}, for instance @code{YYDEBUG}, @code{YYTOKENTYPE},
|
||||||
|
@code{yytokentype}, @code{YYSTYPE}, @code{YYLTYPE}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@ifset defaultprec
|
@ifset defaultprec
|
||||||
@@ -5880,21 +5886,8 @@ Any absolute or relative C++ namespace reference without a trailing
|
|||||||
@code{"::"}. For example, @code{"foo"} or @code{"::foo::bar"}.
|
@code{"::"}. For example, @code{"foo"} or @code{"::foo::bar"}.
|
||||||
|
|
||||||
@item Default Value:
|
@item Default Value:
|
||||||
The value specified by @code{%name-prefix}, which defaults to @code{yy}.
|
@code{yy}, unless you used the obsolete @samp{%name-prefix "@var{prefix}"}
|
||||||
This usage of @code{%name-prefix} is for backward compatibility and can be
|
directive.
|
||||||
confusing since @code{%name-prefix} also specifies the textual prefix for
|
|
||||||
the lexical analyzer function. Thus, if you specify @code{%name-prefix}, it
|
|
||||||
is best to also specify @samp{%define api.namespace} so that
|
|
||||||
@code{%name-prefix} @emph{only} affects the lexical analyzer function. For
|
|
||||||
example, if you specify:
|
|
||||||
|
|
||||||
@example
|
|
||||||
%define api.namespace @{foo@}
|
|
||||||
%name-prefix "bar::"
|
|
||||||
@end example
|
|
||||||
|
|
||||||
The parser namespace is @code{foo} and @code{yylex} is referenced as
|
|
||||||
@code{bar::lex}.
|
|
||||||
@end itemize
|
@end itemize
|
||||||
@end deffn
|
@end deffn
|
||||||
@c api.namespace
|
@c api.namespace
|
||||||
@@ -5996,7 +5989,7 @@ Any valid identifier.
|
|||||||
|
|
||||||
@item Default Value:
|
@item Default Value:
|
||||||
In C++, @code{parser}. In Java, @code{YYParser} or
|
In C++, @code{parser}. In Java, @code{YYParser} or
|
||||||
@code{@var{name-prefix}Parser} (@pxref{Java Bison Interface}).
|
@code{@var{api.prefix}Parser} (@pxref{Java Bison Interface}).
|
||||||
|
|
||||||
@item History:
|
@item History:
|
||||||
Introduced in Bison 3.3 to replace @code{parser_class_name}.
|
Introduced in Bison 3.3 to replace @code{parser_class_name}.
|
||||||
@@ -6709,7 +6702,7 @@ extern int cdebug;
|
|||||||
|
|
||||||
Prior to Bison 2.6, a feature similar to @code{api.prefix} was provided by
|
Prior to Bison 2.6, a feature similar to @code{api.prefix} was provided by
|
||||||
the obsolete directive @code{%name-prefix} (@pxref{Table of Symbols, ,Bison
|
the obsolete directive @code{%name-prefix} (@pxref{Table of Symbols, ,Bison
|
||||||
Symbols}) and the option @code{--name-prefix} (@pxref{Bison Options}).
|
Symbols}) and the option @option{--name-prefix} (@pxref{Bison Options}).
|
||||||
|
|
||||||
@node Interface
|
@node Interface
|
||||||
@chapter Parser C-Language Interface
|
@chapter Parser C-Language Interface
|
||||||
@@ -12240,7 +12233,7 @@ single Java source file named @file{@var{basename}.java} containing the
|
|||||||
parser implementation. Using a grammar file without a @file{.y} suffix is
|
parser implementation. Using a grammar file without a @file{.y} suffix is
|
||||||
currently broken. The basename of the parser implementation file can be
|
currently broken. The basename of the parser implementation file can be
|
||||||
changed by the @code{%file-prefix} directive or the
|
changed by the @code{%file-prefix} directive or the
|
||||||
@option{-p}/@option{--name-prefix} option. The entire parser implementation
|
@option{-b}/@option{--file-prefix} option. The entire parser implementation
|
||||||
file name can be changed by the @code{%output} directive or the
|
file name can be changed by the @code{%output} directive or the
|
||||||
@option{-o}/@option{--output} option. The parser implementation file
|
@option{-o}/@option{--output} option. The parser implementation file
|
||||||
contains a single class for the parser.
|
contains a single class for the parser.
|
||||||
@@ -12373,10 +12366,9 @@ properly, the position class should override the @code{equals} and
|
|||||||
@c - Reporting errors
|
@c - Reporting errors
|
||||||
|
|
||||||
The name of the generated parser class defaults to @code{YYParser}. The
|
The name of the generated parser class defaults to @code{YYParser}. The
|
||||||
@code{YY} prefix may be changed using the @code{%name-prefix} directive or
|
@code{YY} prefix may be changed using the @samp{%define api.prefix}.
|
||||||
the @option{-p}/@option{--name-prefix} option. Alternatively, use
|
Alternatively, use @samp{%define api.parser.class @{@var{name}@}} to give a
|
||||||
@samp{%define api.parser.class @{@var{name}@}} to give a custom name to the
|
custom name to the class. The interface of this class is detailed below.
|
||||||
class. The interface of this class is detailed below.
|
|
||||||
|
|
||||||
By default, the parser class has package visibility. A declaration
|
By default, the parser class has package visibility. A declaration
|
||||||
@samp{%define public} will change to public visibility. Remember that,
|
@samp{%define public} will change to public visibility. Remember that,
|
||||||
@@ -12753,12 +12745,6 @@ constructor that @emph{creates} a lexer. Default is none.
|
|||||||
@xref{Java Scanner Interface}.
|
@xref{Java Scanner Interface}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Directive} %name-prefix "@var{prefix}"
|
|
||||||
The prefix of the parser class name @code{@var{prefix}Parser} if
|
|
||||||
@samp{%define api.parser.class} is not used. Default is @code{YY}.
|
|
||||||
@xref{Java Bison Interface}.
|
|
||||||
@end deffn
|
|
||||||
|
|
||||||
@deffn {Directive} %parse-param @{@var{type} @var{name}@}
|
@deffn {Directive} %parse-param @{@var{type} @var{name}@}
|
||||||
A parameter for the parser class added as parameters to constructor(s)
|
A parameter for the parser class added as parameters to constructor(s)
|
||||||
and as fields initialized by the constructor(s). Default is none.
|
and as fields initialized by the constructor(s). Default is none.
|
||||||
@@ -12807,6 +12793,12 @@ Not supported. Use @code{%code imports} instead.
|
|||||||
@xref{Java Differences}.
|
@xref{Java Differences}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Directive} {%define api.prefix} @{@var{prefix}@}
|
||||||
|
The prefix of the parser class name @code{@var{prefix}Parser} if
|
||||||
|
@samp{%define api.parser.class} is not used. Default is @code{YY}.
|
||||||
|
@xref{Java Bison Interface}.
|
||||||
|
@end deffn
|
||||||
|
|
||||||
@deffn {Directive} {%define abstract}
|
@deffn {Directive} {%define abstract}
|
||||||
Whether the parser class is declared @code{abstract}. Default is false.
|
Whether the parser class is declared @code{abstract}. Default is false.
|
||||||
@xref{Java Bison Interface}.
|
@xref{Java Bison Interface}.
|
||||||
@@ -12860,7 +12852,7 @@ The package to put the parser class in. Default is none.
|
|||||||
|
|
||||||
@deffn {Directive} {%define api.parser.class} @{@var{name}@}
|
@deffn {Directive} {%define api.parser.class} @{@var{name}@}
|
||||||
The name of the parser class. Default is @code{YYParser} or
|
The name of the parser class. Default is @code{YYParser} or
|
||||||
@code{@var{name-prefix}Parser}. @xref{Java Bison Interface}.
|
@code{@var{api.prefix}Parser}. @xref{Java Bison Interface}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Directive} {%define api.position.type} @{@var{class}@}
|
@deffn {Directive} {%define api.position.type} @{@var{class}@}
|
||||||
|
|||||||
@@ -237,7 +237,6 @@ eqopt ([[:space:]]*=)?
|
|||||||
"%lex-param" RETURN_PERCENT_PARAM (lex);
|
"%lex-param" RETURN_PERCENT_PARAM (lex);
|
||||||
"%locations" RETURN_PERCENT_FLAG ("locations");
|
"%locations" RETURN_PERCENT_FLAG ("locations");
|
||||||
"%merge" return BISON_DIRECTIVE (MERGE);
|
"%merge" return BISON_DIRECTIVE (MERGE);
|
||||||
"%name-prefix" return BISON_DIRECTIVE (NAME_PREFIX);
|
|
||||||
"%no-default-prec" return BISON_DIRECTIVE (NO_DEFAULT_PREC);
|
"%no-default-prec" return BISON_DIRECTIVE (NO_DEFAULT_PREC);
|
||||||
"%no-lines" return BISON_DIRECTIVE (NO_LINES);
|
"%no-lines" return BISON_DIRECTIVE (NO_LINES);
|
||||||
"%nonassoc" return PERCENT_NONASSOC;
|
"%nonassoc" return PERCENT_NONASSOC;
|
||||||
@@ -266,13 +265,19 @@ eqopt ([[:space:]]*=)?
|
|||||||
issued only since Bison 3.3. */
|
issued only since Bison 3.3. */
|
||||||
"%error-verbose" DEPRECATED ("%define parse.error verbose");
|
"%error-verbose" DEPRECATED ("%define parse.error verbose");
|
||||||
|
|
||||||
|
/* Deprecated since Bison 2.6 (2012-07-19), but the warning is
|
||||||
|
issued only since Bison 3.3. */
|
||||||
|
"%name"[-_]"prefix"{eqopt} {
|
||||||
|
deprecated_directive (loc, yytext, "%define api.prefix");
|
||||||
|
return BISON_DIRECTIVE (NAME_PREFIX);
|
||||||
|
}
|
||||||
|
|
||||||
/* Deprecated since Bison 2.7.90, 2012. */
|
/* Deprecated since Bison 2.7.90, 2012. */
|
||||||
"%default"[-_]"prec" DEPRECATED ("%default-prec");
|
"%default"[-_]"prec" DEPRECATED ("%default-prec");
|
||||||
"%error"[-_]"verbose" DEPRECATED ("%define parse.error verbose");
|
"%error"[-_]"verbose" DEPRECATED ("%define parse.error verbose");
|
||||||
"%expect"[-_]"rr" DEPRECATED ("%expect-rr");
|
"%expect"[-_]"rr" DEPRECATED ("%expect-rr");
|
||||||
"%file-prefix"{eqopt} DEPRECATED ("%file-prefix");
|
"%file-prefix"{eqopt} DEPRECATED ("%file-prefix");
|
||||||
"%fixed"[-_]"output"[-_]"files" DEPRECATED ("%fixed-output-files");
|
"%fixed"[-_]"output"[-_]"files" DEPRECATED ("%fixed-output-files");
|
||||||
"%name"[-_]"prefix"{eqopt} DEPRECATED ("%name-prefix");
|
|
||||||
"%no"[-_]"default"[-_]"prec" DEPRECATED ("%no-default-prec");
|
"%no"[-_]"default"[-_]"prec" DEPRECATED ("%no-default-prec");
|
||||||
"%no"[-_]"lines" DEPRECATED ("%no-lines");
|
"%no"[-_]"lines" DEPRECATED ("%no-lines");
|
||||||
"%output"{eqopt} DEPRECATED ("%output");
|
"%output"{eqopt} DEPRECATED ("%output");
|
||||||
|
|||||||
@@ -445,18 +445,22 @@ sed '/^Starting/d
|
|||||||
/ \$[[0-9$]]* = /d
|
/ \$[[0-9$]]* = /d
|
||||||
/^yydestructor:/d' stderr >at-stderr
|
/^yydestructor:/d' stderr >at-stderr
|
||||||
mv at-stderr stderr
|
mv at-stderr stderr
|
||||||
|
|
||||||
# 2. Create the reference error message.
|
# 2. Create the reference error message.
|
||||||
AT_DATA([[expout]],
|
AT_DATA([[expout]],
|
||||||
[$5
|
[$5
|
||||||
])
|
])
|
||||||
|
|
||||||
# 3. If locations are not used, remove them.
|
# 3. If locations are not used, remove them.
|
||||||
AT_YYERROR_SEES_LOC_IF([],
|
AT_YYERROR_SEES_LOC_IF([],
|
||||||
[[sed 's/^[-0-9.]*: //' expout >at-expout
|
[[sed 's/^[-0-9.]*: //' expout >at-expout
|
||||||
mv at-expout expout]])
|
mv at-expout expout]])
|
||||||
|
|
||||||
# 4. If error-verbose is not used, strip the', unexpected....' part.
|
# 4. If error-verbose is not used, strip the', unexpected....' part.
|
||||||
m4_bmatch([$1], [%define parse.error verbose], [],
|
m4_bmatch([$1], [%define parse.error verbose], [],
|
||||||
[[sed 's/syntax error, .*$/syntax error/' expout >at-expout
|
[[sed 's/syntax error, .*$/syntax error/' expout >at-expout
|
||||||
mv at-expout expout]])
|
mv at-expout expout]])
|
||||||
|
|
||||||
# 5. Check
|
# 5. Check
|
||||||
AT_CHECK([cat stderr], 0, [expout])
|
AT_CHECK([cat stderr], 0, [expout])
|
||||||
])
|
])
|
||||||
@@ -494,7 +498,7 @@ AT_SETUP([Calculator $1 $2])
|
|||||||
AT_BISON_OPTION_PUSHDEFS([$1])
|
AT_BISON_OPTION_PUSHDEFS([$1])
|
||||||
|
|
||||||
AT_DATA_CALC_Y([$1])
|
AT_DATA_CALC_Y([$1])
|
||||||
AT_FULL_COMPILE([calc], AT_DEFINES_IF([[lex], [main]]), [], [$2])
|
AT_FULL_COMPILE([calc], AT_DEFINES_IF([[lex], [main]], [[], []]), [$2], [-Wno-deprecated])
|
||||||
AT_CHECK_SPACES([calc.AT_LANG_EXT AT_DEFINES_IF([calc.AT_LANG_HDR])])
|
AT_CHECK_SPACES([calc.AT_LANG_EXT AT_DEFINES_IF([calc.AT_LANG_HDR])])
|
||||||
|
|
||||||
# Test the priorities.
|
# Test the priorities.
|
||||||
|
|||||||
@@ -84,7 +84,9 @@ AT_DATA_GRAMMAR([input.y],
|
|||||||
exp: %empty;
|
exp: %empty;
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_BISON_CHECK([--defines -o input.c input.y])
|
AT_BISON_CHECK([--defines -o input.c input.y], [], [],
|
||||||
|
[[input.y:11.1-12: warning: deprecated directive: '%name-prefix', use '%define api.prefix' [-Wdeprecated]
|
||||||
|
]])
|
||||||
|
|
||||||
# YYLTYPE should be defined, and MY_LLOC declared.
|
# YYLTYPE should be defined, and MY_LLOC declared.
|
||||||
AT_DATA([caller.c],
|
AT_DATA([caller.c],
|
||||||
|
|||||||
@@ -2310,7 +2310,7 @@ m4_pushdef([AT_TEST],
|
|||||||
%%
|
%%
|
||||||
exp: %empty;
|
exp: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[$2 input.y]], [[1]], [[]],
|
AT_BISON_CHECK([[$2 -Wno-deprecated input.y]], [[1]], [[]],
|
||||||
[[$3: error: '%name-prefix' and '%define api.prefix' cannot be used together
|
[[$3: error: '%name-prefix' and '%define api.prefix' cannot be used together
|
||||||
]])
|
]])
|
||||||
])
|
])
|
||||||
@@ -2501,7 +2501,9 @@ AT_DATA_GRAMMAR([[input.y]],
|
|||||||
%token_table
|
%token_table
|
||||||
%error-verbose
|
%error-verbose
|
||||||
%glr-parser
|
%glr-parser
|
||||||
%% exp : '0'
|
%name-prefix "bar"
|
||||||
|
%%
|
||||||
|
exp : '0'
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_BISON_CHECK([[input.y]], [[1]], [[]],
|
AT_BISON_CHECK([[input.y]], [[1]], [[]],
|
||||||
@@ -2512,7 +2514,7 @@ input.y:13.1-14: warning: deprecated directive: '%file-prefix =', use '%file-pre
|
|||||||
input.y:14.1-15.2: warning: deprecated directive: '%file-prefix\n =', use '%file-prefix' [-Wdeprecated]
|
input.y:14.1-15.2: warning: deprecated directive: '%file-prefix\n =', use '%file-prefix' [-Wdeprecated]
|
||||||
input.y:17.1-19: warning: deprecated directive: '%fixed-output_files', use '%fixed-output-files' [-Wdeprecated]
|
input.y:17.1-19: warning: deprecated directive: '%fixed-output_files', use '%fixed-output-files' [-Wdeprecated]
|
||||||
input.y:18.1-19: warning: deprecated directive: '%fixed_output-files', use '%fixed-output-files' [-Wdeprecated]
|
input.y:18.1-19: warning: deprecated directive: '%fixed_output-files', use '%fixed-output-files' [-Wdeprecated]
|
||||||
input.y:20.1-13: warning: deprecated directive: '%name-prefix=', use '%name-prefix' [-Wdeprecated]
|
input.y:20.1-13: warning: deprecated directive: '%name-prefix=', use '%define api.prefix' [-Wdeprecated]
|
||||||
input.y:21.1-16: warning: deprecated directive: '%no-default_prec', use '%no-default-prec' [-Wdeprecated]
|
input.y:21.1-16: warning: deprecated directive: '%no-default_prec', use '%no-default-prec' [-Wdeprecated]
|
||||||
input.y:22.1-16: warning: deprecated directive: '%no_default-prec', use '%no-default-prec' [-Wdeprecated]
|
input.y:22.1-16: warning: deprecated directive: '%no_default-prec', use '%no-default-prec' [-Wdeprecated]
|
||||||
input.y:23.1-9: warning: deprecated directive: '%no_lines', use '%no-lines' [-Wdeprecated]
|
input.y:23.1-9: warning: deprecated directive: '%no_lines', use '%no-lines' [-Wdeprecated]
|
||||||
@@ -2522,6 +2524,7 @@ input.y:26.1-12: warning: deprecated directive: '%token_table', use '%token-tabl
|
|||||||
input.y:27.1-14: warning: deprecated directive: '%error-verbose', use '%define parse.error verbose' [-Wdeprecated]
|
input.y:27.1-14: warning: deprecated directive: '%error-verbose', use '%define parse.error verbose' [-Wdeprecated]
|
||||||
input.y:27-6: error: %define variable 'parse.error' redefined
|
input.y:27-6: error: %define variable 'parse.error' redefined
|
||||||
input.y:11-6: previous definition
|
input.y:11-6: previous definition
|
||||||
|
input.y:29.1-12: warning: deprecated directive: '%name-prefix', use '%define api.prefix' [-Wdeprecated]
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
@@ -2581,7 +2584,6 @@ AT_DATA_GRAMMAR([[input.y]],
|
|||||||
%file-prefix
|
%file-prefix
|
||||||
"bar"
|
"bar"
|
||||||
%fixed-output-files
|
%fixed-output-files
|
||||||
%name-prefix "foo"
|
|
||||||
%no-default-prec
|
%no-default-prec
|
||||||
%no-lines
|
%no-lines
|
||||||
%output "foo"
|
%output "foo"
|
||||||
|
|||||||
@@ -263,7 +263,7 @@ AT_DATA_JAVA_CALC_Y([$1
|
|||||||
$2
|
$2
|
||||||
}])
|
}])
|
||||||
|
|
||||||
AT_BISON_CHECK([-o Calc.java Calc.y])
|
AT_BISON_CHECK([-Wno-deprecated -o Calc.java Calc.y])
|
||||||
AT_JAVA_COMPILE([Calc.java])
|
AT_JAVA_COMPILE([Calc.java])
|
||||||
|
|
||||||
# Test the priorities.
|
# Test the priorities.
|
||||||
@@ -401,7 +401,7 @@ start: END {$2};
|
|||||||
%%
|
%%
|
||||||
class m4_default([$3], [Position]) {}
|
class m4_default([$3], [Position]) {}
|
||||||
])
|
])
|
||||||
AT_BISON_CHECK([[YYParser.y]])
|
AT_BISON_CHECK([[-Wno-deprecated YYParser.y]])
|
||||||
AT_CHECK([[grep '[mb]4_' YYParser.y]], [1], [ignore])
|
AT_CHECK([[grep '[mb]4_' YYParser.y]], [1], [ignore])
|
||||||
AT_JAVA_COMPILE([[YYParser.java]])
|
AT_JAVA_COMPILE([[YYParser.java]])
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ AT_DATA([input],[[1 + 2 * 3 = 7
|
|||||||
# Compose pieces to build the actual .y file.
|
# Compose pieces to build the actual .y file.
|
||||||
AT_DATA([Calc.y],[[/* Infix notation calculator--calc */
|
AT_DATA([Calc.y],[[/* Infix notation calculator--calc */
|
||||||
%language "Java"
|
%language "Java"
|
||||||
%name-prefix "Calc"
|
|
||||||
%define api.parser.class {Calc}
|
%define api.parser.class {Calc}
|
||||||
|
|
||||||
%code {
|
%code {
|
||||||
@@ -619,7 +619,7 @@ AT_BISON_OPTION_PUSHDEFS
|
|||||||
|
|
||||||
AT_DATA([Calc.y],[[/* Infix notation calculator--calc. */
|
AT_DATA([Calc.y],[[/* Infix notation calculator--calc. */
|
||||||
%language "Java"
|
%language "Java"
|
||||||
%name-prefix "Calc"
|
|
||||||
%define api.parser.class {Calc}
|
%define api.parser.class {Calc}
|
||||||
%lex-param { Reader rdr }
|
%lex-param { Reader rdr }
|
||||||
%locations
|
%locations
|
||||||
|
|||||||
@@ -874,15 +874,16 @@ m4_define([AT_LANG_HDR(c)], [h])
|
|||||||
m4_define([AT_LANG_HDR(c++)], [hh])
|
m4_define([AT_LANG_HDR(c++)], [hh])
|
||||||
|
|
||||||
|
|
||||||
# AT_FULL_COMPILE(OUTPUT, [OTHER1], [OTHER2], [EXTRA-COMPILER-FLAGS)
|
# AT_FULL_COMPILE(OUTPUT, [OTHER1], [OTHER2],
|
||||||
# ------------------------------------------------------------------
|
# [$4: EXTRA-COMPILER-FLAGS, [$5: EXTRA-BISON-FLAGS])
|
||||||
|
# -------------------------------------------------------------------
|
||||||
# Compile OUTPUT.y to OUTPUT.c, OUTPUT.cc, or OUTPUT.java, and then
|
# Compile OUTPUT.y to OUTPUT.c, OUTPUT.cc, or OUTPUT.java, and then
|
||||||
# compile it to OUTPUT or OUTPUT.class. If OTHER is specified, compile
|
# compile it to OUTPUT or OUTPUT.class. If OTHER is specified, compile
|
||||||
# OUTPUT-OTHER.c, OUTPUT-OTHER.cc, or OUTPUT-OTHER.java to OUTPUT or
|
# OUTPUT-OTHER.c, OUTPUT-OTHER.cc, or OUTPUT-OTHER.java to OUTPUT or
|
||||||
# OUTPUT.java along with it. Relies on AT_CXX_IF and
|
# OUTPUT.java along with it. Relies on AT_CXX_IF and
|
||||||
# AT_JAVA_IF.
|
# AT_JAVA_IF.
|
||||||
m4_define([AT_FULL_COMPILE],
|
m4_define([AT_FULL_COMPILE],
|
||||||
[AT_BISON_CHECK([-o $1.AT_LANG_EXT $1.y])
|
[AT_BISON_CHECK([$5 -o $1.AT_LANG_EXT $1.y])
|
||||||
AT_LANG_COMPILE([$1],
|
AT_LANG_COMPILE([$1],
|
||||||
m4_join([ ],
|
m4_join([ ],
|
||||||
[$1.AT_LANG_EXT],
|
[$1.AT_LANG_EXT],
|
||||||
|
|||||||
Reference in New Issue
Block a user