在Antr中实现IF Else和逻辑语句

时间:2020-04-07 07:52:22

标签: antlr

我是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]]

0 个答案:

没有答案