我有这样一个生产规则:
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()
是一部作品吗?
1条答案
按热度按时间jucafojl1#
这似乎奏效了:
void prod12() #void: {Expr expr=null;} { prod1() | expr=prod2() {jjtree.pushNode(expr);} }