java—如何手动将节点放在javacc堆栈上?

lrl1mhuk  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(280)

我有这样一个生产规则:

void prod12() #void:
{}
{
  prod1() | prod2()
}

void prod1() :
{}{
...
}

void prod2() :
{}{
...
}

也就是说, prod12() 不生成节点,而是保留由生成的节点 prod1() 或者 prod2() . 现在我想要 prod2() 作为一个产生结果(expr类型)的普通函数,我想把结果放在堆栈上,就像在 prod2() 是一部作品:`

void prod12() #void:
{Expr expr=null;}
{
  prod1() | expr=prod2()
}

void prod1() :
{}{
...
}

Expr prod2() {
... return expr;
}

为了得到这个结果,我还应该做些什么 prod2() 在节点堆栈上的放置方式与 prod2() 是一部作品吗?

jucafojl

jucafojl1#

这似乎奏效了: void prod12() #void: {Expr expr=null;} { prod1() | expr=prod2() {jjtree.pushNode(expr);} }

相关问题