Antlr4:如何实现if / then / else动作?

时间:2015-07-12 07:10:13

标签: antlr antlr4

在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() );
        }
    }
    }
}

1 个答案:

答案 0 :(得分:0)

MU中有一个例子。它包括一个访客。另见

If/else statements in ANTLR using listeners