aboutsummaryrefslogtreecommitdiffstats
path: root/sli/common/src/main/antlr4/org/onap/ccsdk/sli/core/sli/ExprGrammar.g4
blob: 1b026bb1a623c269c6ac58ed0afeade08e771b4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
grammar ExprGrammar;

options {
	language = Java;
}


COMPAREOP : '==' | '!=' | '>' | '<' | '>=' | '<=';

RELOP : 'and' | 'or';

ADDOP : '+' | '-';

MULTOP : '/' | '*';

NUMBER : ('0'..'9')+;

STRING : '\'' ~[\']* '\'';

IDENTIFIER : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'-')*;

// CONTEXT_VAR : '$' IDENTIFIER;

WS: [ \n\t\r]+ -> skip;

constant : NUMBER | STRING ;

variableLead : ('$')? variableTerm ;

variableTerm : IDENTIFIER ('[' expr ']')? ;

variable : variableLead ('.' variableTerm)* ('.')?;

// variable : CONTEXT_VAR  ( '[' expr ']' )? ('.' IDENTIFIER )? ;

atom : constant | variable;


expr : atom
     | parenExpr
     | multExpr
     | addExpr
     | compareExpr
     | relExpr
     | funcExpr;

parenExpr : '(' expr ')';

term : atom | parenExpr | funcExpr;

multExpr : term (MULTOP term)*;

addExpr : multExpr (ADDOP multExpr)*;

compareExpr : addExpr COMPAREOP addExpr;

relExpr : compareExpr (RELOP expr)*;

funcExpr : IDENTIFIER '(' expr (',' expr)* ')';