2016-03-28 2 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);} }

Смежные вопросы