aboutsummaryrefslogtreecommitdiffstats
path: root/sli/common/src/main/antlr4/org/openecomp/sdnc/sli/ExprGrammar.g4
blob: 51f40169011918369bf2fb0a855a344f444c4152 (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
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)* ')';