【发布时间】:2021-11-09 09:39:41
【问题描述】:
我想写像springEl这样的表达式来练习。
当我输入#user.age>3时是对的。
但我输入#user.age>3ww 或#user.age>3ww && #user.age<2 解析器没有提示任何错误。我不认为#user.age>3ww 是正确的语法。
如何改变语法让解析器提示3ww是错误的?
我的部分 antlr4 语法
grammar FlowExpr;
statement : expr;
expr
: expr (Mul|Div) expr
| expr (Add|Sub) expr
| expr BooleanOperator expr
| expr And expr
| expr Or expr
| Not expr
| object
;
object
: boolean
| invoker
| entity
| number
| String
;
entity : ObjectSymbol Identifier;
boolean : 'true'|'false';
invoker : entity attribute+;
attribute : Dot Identifier;
number
: Integer
| Float
;
Identifier : Letter (Letter|JavaIDDigit)* ;
Integer : '-'? INT ;
Float : '-'? INT Dot [0-9]*;
Commas : ',';
BooleanOperator
: '>'|'>='|'<'|'<='|'=='|'!=';
Not:'!';
Dot : '.';
ObjectSymbol : '#';
WS : [ \t\n\r]+ -> skip ;
【问题讨论】: