gpt4 book ai didi

java - 更改 Java CUP 中的对象类型

转载 作者:太空宇宙 更新时间:2023-11-04 13:49:56 24 4
gpt4 key购买 nike

我正在使用 CUP 和 JFLex 一起创建一个解析器来创建扫描器。

我正在关注此链接 Parse tree generation with Java CUP但我陷入困境,因为我不知道如何将类型更改为 Node 因为默认情况下类型是 Object。

我希望 CUP case 语句如下所示

case 16: 
{
Node RESULT =null; ... }

而不是:

case 16: 
{
Object RESULT =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;

关于java - 更改 Java CUP 中的对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30415402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com