diff options
author | James Forsyth <jf2512@att.com> | 2019-04-11 16:22:48 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2019-04-11 16:22:48 +0000 |
commit | deffc993786bdbafe9e6d5fe63cdce5b58cafe1a (patch) | |
tree | 568c41a72696693d815064be8e301824c6c83585 /aai-traversal/src/main/resources/antlr4/org/onap/aai/AAIDsl.g4 | |
parent | 4d7847bbd41b88c65279b25cbec284d8f0a6ef3e (diff) | |
parent | 5b3ccace8082f9ae76a69d8fc96def195c2c3da7 (diff) |
Merge "add v16 to traversal repo"
Diffstat (limited to 'aai-traversal/src/main/resources/antlr4/org/onap/aai/AAIDsl.g4')
-rw-r--r-- | aai-traversal/src/main/resources/antlr4/org/onap/aai/AAIDsl.g4 | 55 |
1 files changed, 28 insertions, 27 deletions
diff --git a/aai-traversal/src/main/resources/antlr4/org/onap/aai/AAIDsl.g4 b/aai-traversal/src/main/resources/antlr4/org/onap/aai/AAIDsl.g4 index cf34571..78162f5 100644 --- a/aai-traversal/src/main/resources/antlr4/org/onap/aai/AAIDsl.g4 +++ b/aai-traversal/src/main/resources/antlr4/org/onap/aai/AAIDsl.g4 @@ -1,29 +1,41 @@ /** - * Define a grammar called AAIDsl + * Define a parser grammar called AAIDsl */ grammar AAIDsl; +aaiquery: startStatement limit?; -aaiquery: dslStatement; +startStatement: (vertex ) (traversal)* ; +nestedStatement: (vertex|unionVertex ) (traversal)* ; -dslStatement: (singleNodeStep ) (traverseStep )* limitStep*; +vertex: label store? (filter)?; -unionQueryStep: LBRACKET dslStatement ( COMMA (dslStatement))* RBRACKET; +traversal: (edge (vertex|unionVertex)); -traverseStep: (TRAVERSE ( singleNodeStep | unionQueryStep)); +filter: (propertyFilter)* whereFilter?; +propertyFilter: (not? '(' key (',' (key | num))* ')'); -singleNodeStep: NODE STORE? (filterStep | filterTraverseStep)*; +whereFilter: (not? '(' edge nestedStatement ')' ); -filterStep: NOT? (LPAREN KEY (COMMA (KEY | NODE))* RPAREN); -filterTraverseStep: (LPAREN traverseStep* RPAREN); +unionVertex: '[' ( (edgeFilter)* nestedStatement ( comma ( (edgeFilter)* nestedStatement))*) ']'; -limitStep: LIMIT NODE; +comma: ','; +edge: TRAVERSE (edgeFilter)*; +edgeFilter: '(' key (',' key )* ')'; -LIMIT: 'LIMIT'; -NODE: ID; +num: NUM; +limit: LIMIT num; +label: (ID | NUM )+; +key: KEY; -KEY: ['] (ID | ' ')* ['] ; +store: STORE; +not: NOT; +LIMIT: 'LIMIT'|'limit'; +NUM: (DIGIT)+; + +/*NODE: (ID | NUM )+;*/ +KEY : '\'' ( ~['\r\n] )*? '\''; AND: [&]; @@ -33,29 +45,18 @@ OR: [|]; TRAVERSE: [>] ; -LPAREN: [(]; - -RPAREN: [)]; - -COMMA: [,] ; - EQUAL: [=]; -LBRACKET: [[]; - -RBRACKET: [\]]; - NOT: [!]; -VALUE: [DIGIT]+; - fragment LOWERCASE : [a-z] ; fragment UPPERCASE : [A-Z] ; fragment DIGIT : [0-9] ; +fragment ESC : '\\' . ; +fragment ID_SPECIALS: [-:_]; + ID - : ( LOWERCASE | UPPERCASE | DIGIT) ( LOWERCASE | UPPERCASE | DIGIT | '-' | '.' | '_' | '/')* + : ( LOWERCASE | UPPERCASE | DIGIT | ID_SPECIALS) ; WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines - - |