语法为If,Else if和else语句在ANTLR3中

时间:2014-01-24 13:41:38

标签: grammar antlr3

我在antlr3中尝试了以下语法:

ifstmt  : IF '(' relation ')' (stmt|block)
        (ELSEIF '(' relation')' (stmt|block))*
        (ELSE (stmt|block))?
        ;

但它不接受其他部分说: “如果没有预期的话”:

if(a>b) stat; else if(a<b) stat; else stat;

在用antlrworks解释语法时,它说:

  rule ifstmt has non-LL(*) decision due to recursive rule invocations reachable
from alts 1,2.  Resolve by left-factoring or using syntactic predicates or using        backtrack=true option.

如果有人能为if-elseif-else声明提出可接受的语法,那就太棒了。

0 个答案:

没有答案