在Antlr2中,如下所示。翻译规则是微不足道的,但对于行动我还没有找到如何进入'然后' vs' else'儿童。 想法?
分析器:
| "if"^ fexpr "then"! isolated_start ( "else"! start )? "endif"!
然后走路时采取行动:
: #("if" cond=F:fexpr)
{
if( cond != 0.0 )
{
if( F->getNextSibling() )
if( F->getNextSibling()->getFirstChild() )
start(F->getNextSibling()->getFirstChild());
}
else
{
if( F->getNextSibling() )
{
if( F->getNextSibling()->getNextSibling() )
{
start( F->getNextSibling()->getNextSibling() );
}
}
}
}