在 Java CUP 中更改对象类型
Change Object type in Java CUP
我正在使用 CUP 和 JFLex 创建一个解析器来创建扫描器。
我正在关注这个 link Parse tree generation with Java CUP 但我卡住了,因为我不知道如何将类型更改为 Node 因为默认情况下类型是对象。
我希望 CUP 案例语句如下所示
case 16:
{
Node RESULT =null; ... }
而不是:
case 16:
{
Object RESULT =null; ...}
你不是只需要转换到 Node 吗?如下所示?
case 16:
{
Node RESULT = (Node) null; ... }
您可以在各自的部分指定终端/非终端的类型:
terminal [TYPE] TERM [, TERM]*;
non terminal [TYPE] NONTERM [, NONTERM]*;
生成代码为:
terminal Foo A,B,C;
non terminal BinaryExpression E0,E1;
non terminal BinaryOperator OP0,OP1;
/*etc*/
会是这样的:
/*. . . . . . . . . . . . . . . . . . . .*/
case 63: // E0 ::= E0 OP0 E1
{
BinaryExpression RESULT =null;
BinaryExpression e0 = (BinaryExpression)((java_cup.runtime.Symbol) CUP$/* ... */.value;
BinaryOperator op0 = (BinaryOperator)((java_cup.runtime.Symbol) CUP$C/* ... */.value;
BinaryExpression e1 = (BinaryExpression)((java_cup.runtime.Symbol) CUP$/* ... */.value;
RESULT = new BinaryExpression(e0,op0,e2);
CUP$/*...*/$result = /*...*/
}
return CUP$ConstructorAST$result;
我正在使用 CUP 和 JFLex 创建一个解析器来创建扫描器。
我正在关注这个 link Parse tree generation with Java CUP 但我卡住了,因为我不知道如何将类型更改为 Node 因为默认情况下类型是对象。
我希望 CUP 案例语句如下所示
case 16:
{
Node RESULT =null; ... }
而不是:
case 16:
{
Object RESULT =null; ...}
你不是只需要转换到 Node 吗?如下所示?
case 16:
{
Node RESULT = (Node) null; ... }
您可以在各自的部分指定终端/非终端的类型:
terminal [TYPE] TERM [, TERM]*;
non terminal [TYPE] NONTERM [, NONTERM]*;
生成代码为:
terminal Foo A,B,C;
non terminal BinaryExpression E0,E1;
non terminal BinaryOperator OP0,OP1;
/*etc*/
会是这样的:
/*. . . . . . . . . . . . . . . . . . . .*/
case 63: // E0 ::= E0 OP0 E1
{
BinaryExpression RESULT =null;
BinaryExpression e0 = (BinaryExpression)((java_cup.runtime.Symbol) CUP$/* ... */.value;
BinaryOperator op0 = (BinaryOperator)((java_cup.runtime.Symbol) CUP$C/* ... */.value;
BinaryExpression e1 = (BinaryExpression)((java_cup.runtime.Symbol) CUP$/* ... */.value;
RESULT = new BinaryExpression(e0,op0,e2);
CUP$/*...*/$result = /*...*/
}
return CUP$ConstructorAST$result;