mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-19 17:23:02 +00:00
java: don't expose the Context's members
* data/skeletons/lalr1.java (Context): Make data members private. (Context.getLocation): New. * examples/java/calc/Calc.y, tests/java.at, tests/local.at: Adjust.
This commit is contained in:
@@ -339,8 +339,7 @@ import java.text.MessageFormat;
|
|||||||
public int size = 16;
|
public int size = 16;
|
||||||
public int height = -1;
|
public int height = -1;
|
||||||
|
|
||||||
public final void push (int state, ]b4_yystype[ value]dnl
|
public final void push (int state, ]b4_yystype[ value]b4_locations_if([, ]b4_location_type[ loc])[) {
|
||||||
b4_locations_if([, ]b4_location_type[ loc])[) {
|
|
||||||
height++;
|
height++;
|
||||||
if (size == height)
|
if (size == height)
|
||||||
{
|
{
|
||||||
@@ -860,12 +859,20 @@ b4_dollar_popdef[]dnl
|
|||||||
}
|
}
|
||||||
]])[
|
]])[
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Information needed to get the list of expected tokens and to forge
|
||||||
|
* a syntax error diagnostic.
|
||||||
|
*/
|
||||||
public static final class Context
|
public static final class Context
|
||||||
{
|
{
|
||||||
public YYStack yystack;
|
private YYStack yystack;
|
||||||
public int yytoken;]b4_locations_if([[
|
private int yytoken;]b4_locations_if([[
|
||||||
public ]b4_location_type[ yylocation;]])[
|
public ]b4_location_type[ getLocation ()
|
||||||
public static final int yyntokens = ]b4_parser_class[.yyntokens_;
|
{
|
||||||
|
return yylocation;
|
||||||
|
}
|
||||||
|
private ]b4_location_type[ yylocation;]])[
|
||||||
|
static final int yyntokens = ]b4_parser_class[.yyntokens_;
|
||||||
|
|
||||||
/* Put in YYARG at most YYARGN of the expected tokens given the
|
/* Put in YYARG at most YYARGN of the expected tokens given the
|
||||||
current YYCTX, and return the number of tokens stored in YYARG. If
|
current YYCTX, and return the number of tokens stored in YYARG. If
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ class CalcLexer implements Calc.Lexer {
|
|||||||
final int ARGMAX = 10;
|
final int ARGMAX = 10;
|
||||||
int[] arg = new int[ARGMAX];
|
int[] arg = new int[ARGMAX];
|
||||||
int n = ctx.yysyntaxErrorArguments (arg, ARGMAX);
|
int n = ctx.yysyntaxErrorArguments (arg, ARGMAX);
|
||||||
System.err.print (ctx.yylocation + ": syntax error");
|
System.err.print (ctx.getLocation () + ": syntax error");
|
||||||
for (int i = 1; i < n; ++i)
|
for (int i = 1; i < n; ++i)
|
||||||
System.err.print ((i == 1 ? ": expected " : " or ")
|
System.err.print ((i == 1 ? ": expected " : " or ")
|
||||||
+ ctx.yysymbolName (arg[i]));
|
+ ctx.yysymbolName (arg[i]));
|
||||||
|
|||||||
@@ -478,8 +478,8 @@ AT_CHECK_JAVA_MINIMAL([[
|
|||||||
%define api.position.type {MyPos}
|
%define api.position.type {MyPos}
|
||||||
%code { class MyPos {} }]], [[$$ = $<java.awt.Color>1;]], [[MyPos]])
|
%code { class MyPos {} }]], [[$$ = $<java.awt.Color>1;]], [[MyPos]])
|
||||||
AT_CHECK([[grep 'java.awt.Color' YYParser.java]], [0], [ignore])
|
AT_CHECK([[grep 'java.awt.Color' YYParser.java]], [0], [ignore])
|
||||||
AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep 'Position']], [1], [ignore])
|
AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep -w 'Position']], [1], [ignore])
|
||||||
AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep 'Location']], [1], [ignore])
|
AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep -w 'Location']], [1], [ignore])
|
||||||
|
|
||||||
AT_CHECK_JAVA_MINIMAL_W_LEXER([[
|
AT_CHECK_JAVA_MINIMAL_W_LEXER([[
|
||||||
%define api.value.type {java.awt.Color}
|
%define api.value.type {java.awt.Color}
|
||||||
@@ -490,8 +490,8 @@ AT_CHECK_JAVA_MINIMAL_W_LEXER([[
|
|||||||
[[$$ = $<java.awt.Color>1;]],
|
[[$$ = $<java.awt.Color>1;]],
|
||||||
[[java.awt.Color]], [[MyPos]], [[MyLoc]])
|
[[java.awt.Color]], [[MyPos]], [[MyLoc]])
|
||||||
AT_CHECK([[grep 'java.awt.Color' YYParser.java]], [0], [ignore])
|
AT_CHECK([[grep 'java.awt.Color' YYParser.java]], [0], [ignore])
|
||||||
AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep 'Position']], [1], [ignore])
|
AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep -w 'Position']], [1], [ignore])
|
||||||
AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep 'Location']], [1], [ignore])
|
AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep -w 'Location']], [1], [ignore])
|
||||||
|
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
|
|||||||
@@ -935,7 +935,7 @@ m4_define([AT_YYERROR_DEFINE(java)],
|
|||||||
{
|
{
|
||||||
int[] arg = new int[ctx.yyntokens];
|
int[] arg = new int[ctx.yyntokens];
|
||||||
int n = ctx.yysyntaxErrorArguments (arg, ctx.yyntokens);
|
int n = ctx.yysyntaxErrorArguments (arg, ctx.yyntokens);
|
||||||
System.err.print (]AT_LOCATION_IF([[ctx.yylocation + ": "]]
|
System.err.print (]AT_LOCATION_IF([[ctx.getLocation () + ": "]]
|
||||||
+ )["syntax error on token @<:@" + ctx.yysymbolName (arg[0]) + "@:>@");
|
+ )["syntax error on token @<:@" + ctx.yysymbolName (arg[0]) + "@:>@");
|
||||||
if (1 < n)
|
if (1 < n)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user