8 COMPAREOP : '==' | '!=' | '>' | '<' | '>=' | '<=';
18 STRING : '\'' ~[\']* '\'';
20 IDENTIFIER : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'-')*;
22 // CONTEXT_VAR : '$' IDENTIFIER;
24 WS: [ \n\t\r]+ -> skip;
26 constant : NUMBER | STRING ;
28 variableLead : ('$')? variableTerm ;
30 variableTerm : IDENTIFIER ('[' expr ']')? ;
32 variable : variableLead ('.' variableTerm)* ('.')?;
34 // variable : CONTEXT_VAR ( '[' expr ']' )? ('.' IDENTIFIER )? ;
36 atom : constant | variable;
47 parenExpr : '(' expr ')';
49 term : atom | parenExpr | funcExpr;
51 multExpr : term (MULTOP term)*;
53 addExpr : multExpr (ADDOP multExpr)*;
55 compareExpr : addExpr COMPAREOP addExpr;
57 relExpr : compareExpr (RELOP expr)*;
59 funcExpr : IDENTIFIER '(' expr (',' expr)* ')';