| /* | |
| * Licensed to the Apache Software Foundation (ASF) under one | |
| * or more contributor license agreements. See the NOTICE file | |
| * distributed with this work for additional information | |
| * regarding copyright ownership. The ASF licenses this file | |
| * to you under the Apache License, Version 2.0 (the | |
| * "License"); you may not use this file except in compliance | |
| * with the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, | |
| * software distributed under the License is distributed on an | |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| * KIND, either express or implied. See the License for the | |
| * specific language governing permissions and limitations | |
| * under the License. | |
| */ | |
| /* Apache AGE output data grammar */ | |
| grammar Age; | |
| ageout | |
| : value | |
| | vertex | |
| | edge | |
| | path | |
| ; | |
| vertex | |
| : properties KW_VERTEX | |
| ; | |
| edge | |
| : properties KW_EDGE | |
| ; | |
| path | |
| : '[' vertex (',' edge ',' vertex)* ']' KW_PATH | |
| ; | |
| //Keywords | |
| KW_VERTEX : '::vertex'; | |
| KW_EDGE : '::edge'; | |
| KW_PATH : '::path'; | |
| KW_NUMERIC : '::numeric'; | |
| // Common Values Rule | |
| value | |
| : STRING | |
| | NUMBER | |
| | NUMERIC | |
| | FLOAT_EXPR | |
| | BOOL | |
| | NULL | |
| | properties | |
| | arr | |
| ; | |
| properties | |
| : '{' pair (',' pair)* '}' | |
| | '{' '}' | |
| ; | |
| pair | |
| : STRING ':' value | |
| ; | |
| arr | |
| : '[' value (',' value)* ']' | |
| | '[' ']' | |
| ; | |
| STRING | |
| : '"' (ESC | SAFECODEPOINT)* '"' | |
| ; | |
| BOOL | |
| : 'true'|'false' | |
| ; | |
| NULL | |
| : 'null' | |
| ; | |
| fragment ESC | |
| : '\\' (["\\/bfnrt] | UNICODE) | |
| ; | |
| fragment UNICODE | |
| : 'u' HEX HEX HEX HEX | |
| ; | |
| fragment HEX | |
| : [0-9a-fA-F] | |
| ; | |
| fragment SAFECODEPOINT | |
| : ~ ["\\\u0000-\u001F] | |
| ; | |
| NUMBER | |
| : '-'? INT ('.' [0-9] +)? EXP? | |
| ; | |
| FLOAT_EXPR | |
| : 'NaN' | '-Infinity' | 'Infinity' | |
| ; | |
| NUMERIC | |
| : '-'? INT ('.' [0-9] +)? EXP? KW_NUMERIC | |
| ; | |
| fragment INT | |
| : '0' | [1-9] [0-9]* | |
| ; | |
| // no leading zeros | |
| fragment EXP | |
| : [Ee] [+\-]? INT | |
| ; | |
| // \- since - means "range" inside [...] | |
| WS | |
| : [ \t\n\r] + -> skip | |
| ; |