Реализовать IF «Остальное» и логическое утверждение в Antr - PullRequest
0 голосов
/ 07 апреля 2020

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