我是ANTLR的新手,我正在尝试实现if else和逻辑符号,但是我不能这样做。有人可以帮我吗?下面是我所做的。
grammar BasForCCAL;
@header {
package basforccal;
}
@lexer::header{
package basforccal;
}
program : start programbody end;
start :'PROGRAM' ID {programName = $ID.text ; System.out.println("Checking program :"+$ID.text);};
logicalexpr
: (expression | ('logicalexpr'))
( '<' expression
| '>' expression
| '<>' expression
| '<=' expression
| '>=' expression
)*
;
parse
: expression EOF
;
expression
: LPAREN expression RPAREN
| NOT expression
| left=expression op=comparator right=expression
| left=expression op=binary right=expression
| bool
;
comparator
: GT | GE | LT | LE | EQ
;
binary
: AND | OR
;
bool
: TRUE | FALSE
;
下面是我得到的错误。
[00:51:12] error(210): The following sets of rules are mutually left-recursive [expression]
[00:51:12] Aborting because the following rules are mutually left-recursive:
[[BasForCCAL.expression,index=14,line=92]]