51f40169011918369bf2fb0a855a344f444c4152
[ccsdk/sli/core.git] / sli / common / src / main / antlr4 / org / openecomp / sdnc / sli / ExprGrammar.g4
1 grammar ExprGrammar;
2         
3 options {
4         language = Java;
5 }
6         
7
8 COMPAREOP : '==' | '!=' | '>' | '<' | '>=' | '<=';
9
10 RELOP : 'and' | 'or';
11
12 ADDOP : '+' | '-';
13
14 MULTOP : '/' | '*';
15
16 NUMBER : ('0'..'9')+;
17
18 STRING : '\'' ~[\']* '\'';
19
20 IDENTIFIER : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'-')*;
21
22 // CONTEXT_VAR : '$' IDENTIFIER;
23
24 WS: [ \n\t\r]+ -> skip;
25
26 constant : NUMBER | STRING ;
27
28 variableLead : ('$')? variableTerm ;
29
30 variableTerm : IDENTIFIER ('[' expr ']')? ;
31
32 variable : variableLead ('.' variableTerm)* ('.')?;
33
34 // variable : CONTEXT_VAR  ( '[' expr ']' )? ('.' IDENTIFIER )? ;
35
36 atom : constant | variable;
37
38
39 expr : atom 
40      | parenExpr 
41      | multExpr 
42      | addExpr 
43      | compareExpr 
44      | relExpr 
45      | funcExpr;
46
47 parenExpr : '(' expr ')';
48
49 term : atom | parenExpr | funcExpr;
50
51 multExpr : term (MULTOP term)*;
52
53 addExpr : multExpr (ADDOP multExpr)*;
54
55 compareExpr : addExpr COMPAREOP addExpr;
56
57 relExpr : compareExpr (RELOP expr)*;
58
59 funcExpr : IDENTIFIER '(' expr (',' expr)* ')';
60
61                                                         
62
63
64  
65         
66