2016-03-28 21 views
0

我有一个生产规则是这样的:如何手动在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()的结果放置在节点堆栈上?

+0

你尝试寻找的PROD1生成的代码?你可能会在那里找到答案。 –

回答

1

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