Я новичок в 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]]