java: use api.location.type and api.position.type

* data/java.m4: here.
* NEWS, doc/bison.texi, tests/java.at: Adjust.
This commit is contained in:
Akim Demaille
2012-10-12 13:00:59 +02:00
parent e94ca80bbb
commit 7287be84f1
4 changed files with 28 additions and 20 deletions

15
NEWS
View File

@@ -43,7 +43,7 @@ GNU Bison NEWS
The parse function now catches exceptions, uses the %destructors to
release memory (the lookahead symbol and the symbols pushed on the stack)
before rethrowing the exception.
before re-throwing the exception.
This feature is somewhat experimental. User feedback would be
appreciated.
@@ -65,7 +65,7 @@ GNU Bison NEWS
"function declared 'noreturn' should not return") have also been
addressed.
** New %define variable: api.location.type (glr.cc, lalr1.cc)
** New %define variable: api.location.type (glr.cc, lalr1.cc, lalr1.java)
The %define variable api.location.type defines the name of the type to use
for locations. When defined, Bison no longer generates the position.hh
@@ -73,13 +73,17 @@ GNU Bison NEWS
then responsible to define her type.
This can be used in programs with several parsers to factor their location
and position files: let one of them generate them, and let the others
simply resue these types and files.
and position files: let one of them generate them, and the others just use
them.
This feature was actually introduced, but not documented, in Bison 2.5,
under the name "location_type" (which is maintained for backward
compatibility).
For consistency, lalr1.java's %define variables location_type and
position_type are deprecated in favor of api.location.type and
api.position.type.
* Noteworthy changes in release 2.6.2 (2012-08-03) [stable]
** Bug fixes
@@ -1937,7 +1941,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
LocalWords: namespaces strerror const autoconfiguration Dconst Autoconf's FDL
LocalWords: Automake TMPDIR LESSEQ ylwrap endif yydebug YYTOKEN YYLSP ival hh
LocalWords: extern YYTOKENTYPE TOKENTYPE yytokentype tokentype STYPE lval pdf
LocalWords: lang yyoutput dvi html ps POSIX lvalp llocp calc yyo fval
LocalWords: lang yyoutput dvi html ps POSIX lvalp llocp calc yyo fval Wmaybe
LocalWords: yyvsp pragmas noreturn java's
Local Variables:
mode: outline

View File

@@ -172,8 +172,8 @@ m4_define([b4_throws], [b4_percent_define_get([[throws]])])
b4_percent_define_default([[api.location.type]], [Location])])
m4_define([b4_location_type], [b4_percent_define_get([[api.location.type]])])
b4_percent_define_default([[position_type]], [Position])])
m4_define([b4_position_type], [b4_percent_define_get([[position_type]])])
b4_percent_define_default([[api.position.type]], [Position])])
m4_define([b4_position_type], [b4_percent_define_get([[api.position.type]])])
## ----------------- ##

View File

@@ -5331,7 +5331,7 @@ Some of the accepted @var{variable}s are:
@findex %define api.location.type
@itemize @bullet
@item Language(s): C++
@item Language(s): C++, Java
@item Purpose: Define the location type.
@xref{User Defined Location Type}.
@@ -9458,7 +9458,7 @@ to generate the @file{master/position.hh} and @file{master/location.hh}
files, reused by other parsers as follows:
@example
%define location_type "master::location"
%define api.location.type "master::location"
%code requires @{ #include <master/location.hh> @}
@end example
@@ -10175,11 +10175,11 @@ class defines a @dfn{position}, a single point in a file; Bison itself
defines a class representing a @dfn{location}, a range composed of a pair of
positions (possibly spanning several files). The location class is an inner
class of the parser; the name is @code{Location} by default, and may also be
renamed using @code{%define location_type "@var{class-name}"}.
renamed using @code{%define api.location.type "@var{class-name}"}.
The location class treats the position as a completely opaque value.
By default, the class name is @code{Position}, but this can be changed
with @code{%define position_type "@var{class-name}"}. This class must
with @code{%define api.position.type "@var{class-name}"}. This class must
be supplied by the user.
@@ -10314,7 +10314,7 @@ In both cases, the scanner has to implement the following methods.
@deftypemethod {Lexer} {void} yyerror (Location @var{loc}, String @var{msg})
This method is defined by the user to emit an error message. The first
parameter is omitted if location tracking is not active. Its type can be
changed using @code{%define location_type "@var{class-name}".}
changed using @code{%define api.location.type "@var{class-name}".}
@end deftypemethod
@deftypemethod {Lexer} {int} yylex ()
@@ -10332,7 +10332,7 @@ Return respectively the first position of the last token that
@code{yylex} returned, and the first position beyond it. These
methods are not needed unless location tracking is active.
The return type can be changed using @code{%define position_type
The return type can be changed using @code{%define api.position.type
"@var{class-name}".}
@end deftypemethod
@@ -10577,10 +10577,11 @@ comma-separated list. Default is @code{java.io.IOException}.
@xref{Java Scanner Interface}.
@end deffn
@deffn {Directive} {%define location_type} "@var{class}"
@deffn {Directive} {%define api.location.type} "@var{class}"
The name of the class used for locations (a range between two
positions). This class is generated as an inner class of the parser
class by @command{bison}. Default is @code{Location}.
Formerly named @code{location_type}.
@xref{Java Location Values}.
@end deffn
@@ -10595,9 +10596,10 @@ The name of the parser class. Default is @code{YYParser} or
@xref{Java Bison Interface}.
@end deffn
@deffn {Directive} {%define position_type} "@var{class}"
@deffn {Directive} {%define api.position.type} "@var{class}"
The name of the class used for positions. This class must be supplied by
the user. Default is @code{Position}.
Formerly named @code{position_type}.
@xref{Java Location Values}.
@end deffn
@@ -11881,9 +11883,10 @@ London, Department of Computer Science, TR-00-12 (December 2000).
@c LocalWords: getLVal defvar deftypefn deftypefnx gotos msgfmt Corbett LALR's
@c LocalWords: subdirectory Solaris nonassociativity perror schemas Malloy ints
@c LocalWords: Scannerless ispell american ChangeLog smallexample CSTYPE CLTYPE
@c LocalWords: clval CDEBUG cdebug deftypeopx yyterminate
@c LocalWords: clval CDEBUG cdebug deftypeopx yyterminate LocationType
@c Local Variables:
@c ispell-dictionary: "american"
@c fill-column: 76
@c End:
@c LocalWords: errorVerbose

View File

@@ -719,8 +719,8 @@ AT_SETUP([Java stype, position_class and location_class])
AT_CHECK_JAVA_MINIMAL([[
%define stype "java.awt.Color"
%type<java.awt.Color> start;
%define location_type "MyLoc"
%define position_type "MyPos"
%define api.location.type "MyLoc"
%define api.position.type "MyPos"
%code { class MyPos {} }]], [[$$ = $<java.awt.Color>1;]], [[MyPos]])
AT_CHECK([[grep 'java.awt.Color' YYParser.java]], [0], [ignore])
AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep 'Position']], [1], [ignore])
@@ -729,8 +729,8 @@ AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep 'Location']], [1], [ignore])
AT_CHECK_JAVA_MINIMAL_W_LEXER([[
%define stype "java.awt.Color"
%type<java.awt.Color> start;
%define location_type "MyLoc"
%define position_type "MyPos"
%define api.location.type "MyLoc"
%define api.position.type "MyPos"
%code { class MyPos {} }]], [], [[return EOF;]], [],
[[$$ = $<java.awt.Color>1;]],
[[java.awt.Color]], [[MyPos]], [[MyLoc]])