java如何手动将节点放在JavaCC堆栈上?
我有这样一个生成规则:
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 楼答案
这似乎有效:
void prod12() #void: {Expr expr=null;} { prod1() | expr=prod2() {jjtree.pushNode(expr);} }