forked from hyperledger-cacti/cacti
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPolicy.g4
48 lines (38 loc) · 1.08 KB
/
Policy.g4
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
grammar Policy;
// ============
// PARSER RULES
// ============
root
: expression EOF
;
// TODO: Add paren support
// | LPAREN expression RPAREN # parenExpression
expression
: expression AND expression #booleanAndExpression
| expression OR expression #booleanOrExpression
| ID #idExpression
| count_expression #countExpression
;
count_expression
: COUNT (GREATER_THAN | GREATER_THAN_EQUAL | LESS_THAN | LESS_THAN_EQUAL) INTLIT
| INTLIT (GREATER_THAN | GREATER_THAN_EQUAL | LESS_THAN | LESS_THAN_EQUAL) COUNT
;
// ======
// TOKENS
// ======
// Whitespace
WS : [t ]+ -> skip ;
// Keywords
COUNT : 'count' ;
// Literals
INTLIT : '0'|[1-9][0-9]* ;
// Operators
AND : '&&' ;
OR : '||' ;
GREATER_THAN : '>' ;
LESS_THAN : '<' ;
EQUAL : '==' ;
GREATER_THAN_EQUAL : '>=' ;
LESS_THAN_EQUAL : '<=' ;
// Identifiers
ID : [_]*[a-z][A-Za-z0-9_]* ;