├── .gitignore ├── LICENSE ├── README.md ├── bower.json ├── grammars └── cypher │ ├── Cypher.g4 │ ├── Cypher.g4.orig │ └── replace_target_symbols.sh ├── lib ├── Cypher.tokens ├── CypherLexer.js ├── CypherLexer.tokens ├── CypherListener.js └── CypherParser.js ├── main.js ├── package.json └── release ├── antlr4-cypher-min.js └── antlr4-cypher.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # nyc test coverage 18 | .nyc_output 19 | 20 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 21 | .grunt 22 | 23 | # node-waf configuration 24 | .lock-wscript 25 | 26 | # Compiled binary addons (http://nodejs.org/api/addons.html) 27 | build/Release 28 | 29 | # Dependency directories 30 | node_modules 31 | jspm_packages 32 | 33 | # Optional npm cache directory 34 | .npm 35 | 36 | # Optional REPL history 37 | .node_repl_history 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | antlr4-javascript-cypher 2 | ======================== 3 | 4 | An UMD module wrapping ANTLR generated parser, lexer, listener and antlr itself for the 5 | cypher query language. 6 | based on the antlr4-javascript-sparql module by Szymon Danielczyk. 7 | 8 | ### Info 9 | 10 | Parser classes where generated from G4 grammar files using the ANTLR runtime, version 4.5.1. 11 | 12 | The Cypher grammar file can be generated from the repository [opencypher/openCypher](https://github.com/opencypher/openCypher) 13 | or downloaded from [here](https://s3.amazonaws.com/artifacts.opencypher.org/Cypher.g4). 14 | 15 | For the generation of the javaScript lexer and parser there is a modification necessary to 16 | avoid the use of native symbols. This is done by the `replace_target_symbols.sh` 17 | 18 | Classes have been generated with the following commands: 19 | 20 | ``` 21 | java -Xmx500M -cp "antlr-4.5.1-complete.jar:$CLASSPATH" org.antlr.v4.Tool -Dlanguage=JavaScript grammars/cypher/Cypher.g4 -o lib 22 | ``` 23 | 24 | Or if antlr4 is in your `$PATH` you can invoke 25 | 26 | ``` 27 | npm run build-cypher 28 | ``` 29 | 30 | Then the following modifications have been made to generated classes: 31 | 32 | * each class has been wrapped in a function for dependency injection 33 | * in `CypherLexer`, `atn` and `decisionToFDA` have been moved inside the constructor 34 | * in `CypherParser` `atn`, `decisionToFDA`, `sharedContextCache` have been moved inside the constructor; `atn` has been bound to `this` and the `Object.defineProperty` has been commented out 35 | 36 | ### Usage 37 | 38 | 39 | To build UMD module type: 40 | 41 | ``` 42 | #as normal user in the project directory 43 | npm install 44 | npm run uglify 45 | ``` 46 | 47 | To minify: 48 | 49 | ``` 50 | #as normal user in the project directory 51 | npm install 52 | npm run browserify 53 | ``` 54 | 55 | To use with webpack define following shim antlr4-cypher.js 56 | 57 | ``` 58 | var antlr4 = require('antlr4-base'); 59 | var CypherLexer = require('node_modules/antlr4-javascript-cypher/lib/CypherLexer.js'); 60 | var CypherParser = require('node_modules/antlr4-javascript-cypher/lib/CypherParser.js'); 61 | var CypherListener = require('node_modules/antlr4-javascript-cypher/lib/CypherListener'); 62 | var listener = CypherListener(antlr4); 63 | 64 | module.exports = { 65 | CypherLexer: CypherLexer(antlr4), 66 | CypherParser: CypherParser(antlr4, listener, visitor), 67 | CypherListener: listener, 68 | }; 69 | ``` 70 | 71 | ### Test 72 | 73 | ``` 74 | npm install 75 | npm test 76 | ``` 77 | 78 | 79 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "antlr4-javascript-cypher", 3 | "version": "1.0.0", 4 | "homepage": "https://github.com/bastiion/antlr4-javascript-cypher", 5 | "authors": [ 6 | "Sebastian Tilsch" 7 | ], 8 | "description": "antlr4-javascript-cypher UMD module", 9 | "main": "release/antlr4-cypher.js", 10 | "moduleType": [ 11 | "amd", 12 | "globals", 13 | "node" 14 | ], 15 | "license": "Apache 2.0", 16 | "ignore": [ 17 | "**/.*", 18 | "node_modules", 19 | "bower_components", 20 | "test", 21 | "tests", 22 | "grammars", 23 | "lib" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /grammars/cypher/Cypher.g4: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-2016 "Neo Technology," 3 | * Network Engine for Objects in Lund AB [http://neotechnology.com] 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance c_with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | grammar Cypher; 18 | 19 | cypher : ws statement ( ws ';' )? ws ; 20 | 21 | statement : query ; 22 | 23 | query : regularQuery ; 24 | 25 | regularQuery : singleQuery ( ws union )* ; 26 | 27 | singleQuery : clause ( ws clause )* ; 28 | 29 | union : ( UNION sp ALL singleQuery ) 30 | | ( UNION singleQuery ) 31 | ; 32 | 33 | clause : c_match 34 | | unwind 35 | | c_merge 36 | | create 37 | | c_set 38 | | c_delete 39 | | remove 40 | | c_with 41 | | c_return 42 | ; 43 | 44 | c_match : ( OPTIONAL sp )? MATCH ws pattern ( ws where )? ; 45 | 46 | unwind : UNWIND ws expression sp AS sp variable ; 47 | 48 | c_merge : MERGE ws patternPart ( sp mergeAction )* ; 49 | 50 | mergeAction : ( ON sp MATCH sp c_set ) 51 | | ( ON sp CREATE sp c_set ) 52 | ; 53 | 54 | create : CREATE ws pattern ; 55 | 56 | c_set : SET setItem ( ',' setItem )* ; 57 | 58 | setItem : ( propertyExpression '=' expression ) 59 | | ( variable '=' expression ) 60 | | ( variable '+=' expression ) 61 | | ( variable nodeLabels ) 62 | ; 63 | 64 | c_delete : ( DELETE expression ( ',' expression )* ) 65 | | ( DETACH sp DELETE expression ( ',' expression )* ) 66 | ; 67 | 68 | remove : REMOVE sp removeItem ( ws ',' ws removeItem )* ; 69 | 70 | removeItem : ( variable nodeLabels ) 71 | | propertyExpression 72 | ; 73 | 74 | c_with : ( WITH DISTINCT sp returnBody where? ) 75 | | ( WITH sp returnBody where? ) 76 | ; 77 | 78 | c_return : ( RETURN sp DISTINCT sp returnBody ) 79 | | ( RETURN sp returnBody ) 80 | ; 81 | 82 | returnBody : returnItems ( sp order )? ( sp skip )? ( sp limit )? ; 83 | 84 | returnItems : ( '*' ( ws ',' ws returnItem )* ) 85 | | ( returnItem ( ws ',' ws returnItem )* ) 86 | ; 87 | 88 | returnItem : ( expression sp AS sp variable ) 89 | | expression 90 | ; 91 | 92 | order : ORDER sp BY sp sortItem ( ',' ws sortItem )* ; 93 | 94 | skip : L_SKIP sp expression ; 95 | 96 | limit : LIMIT sp expression ; 97 | 98 | sortItem : ( expression ( DESCENDING | DESC ) ) 99 | | ( expression ( ASCENDING | ASC )? ) 100 | ; 101 | 102 | where : WHERE sp expression ; 103 | 104 | pattern : patternPart ( ',' patternPart )* ; 105 | 106 | patternPart : ( variable ws '=' ws anonymousPatternPart ) 107 | | anonymousPatternPart 108 | ; 109 | 110 | anonymousPatternPart : patternElement ; 111 | 112 | patternElement : ( nodePattern ( ws patternElementChain )* ) 113 | | ( '(' patternElement ')' ) 114 | ; 115 | 116 | nodePattern : '(' ws ( variable ws )? ( nodeLabels ws )? ( properties ws )? ')' ; 117 | 118 | patternElementChain : relationshipPattern ws nodePattern ; 119 | 120 | relationshipPattern : ( leftArrowHead ws dash ws relationshipDetail? ws dash ws rightArrowHead ) 121 | | ( leftArrowHead ws dash ws relationshipDetail? ws dash ) 122 | | ( dash ws relationshipDetail? ws dash ws rightArrowHead ) 123 | | ( dash ws relationshipDetail? ws dash ) 124 | ; 125 | 126 | relationshipDetail : '[' variable? '?'? relationshipTypes? ( '*' rangeLiteral? )? properties? ']' ; 127 | 128 | properties : mapLiteral 129 | | parameter 130 | ; 131 | 132 | relationshipTypes : ':' relTypeName ( ws '|' ':'? ws relTypeName )* ; 133 | 134 | nodeLabels : nodeLabel ( ws nodeLabel )* ; 135 | 136 | nodeLabel : ':' labelName ; 137 | 138 | rangeLiteral : ( unsignedIntegerLiteral ws )? '..' ( ws unsignedIntegerLiteral )? ; 139 | 140 | labelName : symbolicName ; 141 | 142 | relTypeName : symbolicName ; 143 | 144 | expression : expression12 ; 145 | 146 | expression12 : expression11 ( sp OR sp expression11 )* ; 147 | 148 | expression11 : expression10 ( sp XOR sp expression10 )* ; 149 | 150 | expression10 : expression9 ( sp AND sp expression9 )* ; 151 | 152 | expression9 : ( sp NOT sp )* expression8 ; 153 | 154 | expression8 : expression7 ( ws partialComparisonExpression )* ; 155 | 156 | expression7 : expression6 ( ( ws '+' ws expression6 ) | ( ws '-' ws expression6 ) )* ; 157 | 158 | expression6 : expression5 ( ( ws '*' ws expression5 ) | ( ws '/' ws expression5 ) | ( ws '%' ws expression5 ) )* ; 159 | 160 | expression5 : expression4 ( ws '^' ws expression4 )* ; 161 | 162 | expression4 : ( ( '+' | '-' ) ws )* expression3 ; 163 | 164 | expression3 : expression2 ( ( ws '[' expression ']' ) | ( ws '[' expression? '..' expression? ']' ) | ( ( ( ws '=~' ) | ( sp IN ) | ( sp STARTS sp WITH ) | ( sp ENDS sp WITH ) | ( sp CONTAINS ) ) ws expression2 ) | ( sp IS sp NULL ) | ( sp IS sp NOT sp NULL ) )* ; 165 | 166 | expression2 : atom ( propertyLookup | nodeLabels )* ; 167 | 168 | atom : numberLiteral 169 | | StringLiteral 170 | | parameter 171 | | TRUE 172 | | FALSE 173 | | NULL 174 | | ( COUNT '(' '*' ')' ) 175 | | mapLiteral 176 | | listComprehension 177 | | ( '[' ws expression ws ( ',' ws expression ws )* ']' ) 178 | | ( FILTER ws '(' ws filterExpression ws ')' ) 179 | | ( EXTRACT ws '(' ws filterExpression ws ( ws '|' expression )? ')' ) 180 | | ( ALL ws '(' ws filterExpression ws ')' ) 181 | | ( ANY ws '(' ws filterExpression ws ')' ) 182 | | ( NONE ws '(' ws filterExpression ws ')' ) 183 | | ( SINGLE ws '(' ws filterExpression ws ')' ) 184 | | relationshipsPattern 185 | | parenthesizedExpression 186 | | functionInvocation 187 | | variable 188 | ; 189 | 190 | partialComparisonExpression : ( '=' ws expression7 ) 191 | | ( '<>' ws expression7 ) 192 | | ( '!=' ws expression7 ) 193 | | ( '<' ws expression7 ) 194 | | ( '>' ws expression7 ) 195 | | ( '<=' ws expression7 ) 196 | | ( '>=' ws expression7 ) 197 | ; 198 | 199 | parenthesizedExpression : '(' expression ')' ; 200 | 201 | relationshipsPattern : nodePattern ( ws patternElementChain )+ ; 202 | 203 | filterExpression : idInColl ( ws where )? ; 204 | 205 | idInColl : variable sp IN sp expression ; 206 | 207 | functionInvocation : functionName ws '(' ws DISTINCT? ( expression ( ',' ws expression )* )? ws ')' ; 208 | 209 | functionName : symbolicName ; 210 | 211 | listComprehension : '[' filterExpression ( ws '|' expression )? ']' ; 212 | 213 | propertyLookup : ws '.' ws ( ( propertyKeyName ( '?' | '!' ) ) | propertyKeyName ) ; 214 | 215 | variable : symbolicName ; 216 | 217 | StringLiteral : ( '"' ( StringLiteral_0 | EscapedChar )* '"' ) 218 | | ( '\'' ( StringLiteral_1 | EscapedChar )* '\'' ) 219 | ; 220 | 221 | EscapedChar : '\\' ( '\\' | '\'' | '"' | ( 'B' | 'b' ) | ( 'F' | 'f' ) | ( 'N' | 'n' ) | ( 'R' | 'r' ) | ( 'T' | 't' ) | '_' | '%' | ( ( 'U' | 'u' ) ( HexDigit HexDigit HexDigit HexDigit ) ) | ( ( 'U' | 'u' ) ( HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit ) ) ) ; 222 | 223 | numberLiteral : doubleLiteral 224 | | signedIntegerLiteral 225 | ; 226 | 227 | mapLiteral : '{' ws ( propertyKeyName ws ':' ws expression ws ( ',' ws propertyKeyName ws ':' ws expression ws )* )? '}' ; 228 | 229 | parameter : '{' ws ( symbolicName | unsignedDecimalInteger ) ws '}' ; 230 | 231 | propertyExpression : atom ( ws propertyLookup )+ ; 232 | 233 | propertyKeyName : symbolicName ; 234 | 235 | signedIntegerLiteral : hexInteger 236 | | octalInteger 237 | | decimalInteger 238 | ; 239 | 240 | unsignedIntegerLiteral : unsignedDecimalInteger ; 241 | 242 | hexInteger : '-'? unsignedHexInteger ; 243 | 244 | decimalInteger : '-'? unsignedDecimalInteger ; 245 | 246 | octalInteger : '-'? unsignedOctalInteger ; 247 | 248 | unsignedHexInteger : L_0X hexString ; 249 | 250 | unsignedDecimalInteger : ( ( '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ) digitString? ) 251 | | '0' 252 | ; 253 | 254 | unsignedOctalInteger : '0' octalString ; 255 | 256 | hexString : ( HexDigit )+ ; 257 | 258 | digitString : ( digit )+ ; 259 | 260 | octalString : ( octDigit )+ ; 261 | 262 | HexDigit : '0' 263 | | '1' 264 | | '2' 265 | | '3' 266 | | '4' 267 | | '5' 268 | | '6' 269 | | '7' 270 | | '8' 271 | | '9' 272 | | ( 'A' | 'a' ) 273 | | ( 'B' | 'b' ) 274 | | ( 'C' | 'c' ) 275 | | ( 'D' | 'd' ) 276 | | ( 'E' | 'e' ) 277 | | ( 'F' | 'f' ) 278 | ; 279 | 280 | digit : '0' 281 | | '1' 282 | | '2' 283 | | '3' 284 | | '4' 285 | | '5' 286 | | '6' 287 | | '7' 288 | | '8' 289 | | '9' 290 | ; 291 | 292 | octDigit : '0' 293 | | '1' 294 | | '2' 295 | | '3' 296 | | '4' 297 | | '5' 298 | | '6' 299 | | '7' 300 | ; 301 | 302 | doubleLiteral : exponentDecimalReal 303 | | regularDecimalReal 304 | ; 305 | 306 | exponentDecimalReal : '-'? ( digit | '.' )+ ( ( 'E' | 'e' ) | ( 'E' | 'e' ) ) '-'? digitString ; 307 | 308 | regularDecimalReal : '-'? ( digit )* '.' digitString ; 309 | 310 | symbolicName : UnescapedSymbolicName 311 | | EscapedSymbolicName 312 | | UNION 313 | | ALL 314 | | OPTIONAL 315 | | MATCH 316 | | UNWIND 317 | | AS 318 | | MERGE 319 | | ON 320 | | CREATE 321 | | SET 322 | | DELETE 323 | | DETACH 324 | | REMOVE 325 | | WITH 326 | | DISTINCT 327 | | RETURN 328 | | ORDER 329 | | BY 330 | | L_SKIP 331 | | LIMIT 332 | | DESCENDING 333 | | DESC 334 | | ASCENDING 335 | | ASC 336 | | WHERE 337 | | OR 338 | | XOR 339 | | AND 340 | | NOT 341 | | IN 342 | | STARTS 343 | | ENDS 344 | | CONTAINS 345 | | IS 346 | | NULL 347 | | TRUE 348 | | FALSE 349 | | COUNT 350 | | FILTER 351 | | EXTRACT 352 | | ANY 353 | | NONE 354 | | SINGLE 355 | | L_0X 356 | ; 357 | 358 | UNION : ( 'U' | 'u' ) ( 'N' | 'n' ) ( 'I' | 'i' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ; 359 | 360 | ALL : ( 'A' | 'a' ) ( 'L' | 'l' ) ( 'L' | 'l' ) ; 361 | 362 | OPTIONAL : ( 'O' | 'o' ) ( 'P' | 'p' ) ( 'T' | 't' ) ( 'I' | 'i' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'A' | 'a' ) ( 'L' | 'l' ) ; 363 | 364 | MATCH : ( 'M' | 'm' ) ( 'A' | 'a' ) ( 'T' | 't' ) ( 'C' | 'c' ) ( 'H' | 'h' ) ; 365 | 366 | UNWIND : ( 'U' | 'u' ) ( 'N' | 'n' ) ( 'W' | 'w' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'D' | 'd' ) ; 367 | 368 | AS : ( 'A' | 'a' ) ( 'S' | 's' ) ; 369 | 370 | MERGE : ( 'M' | 'm' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ( 'G' | 'g' ) ( 'E' | 'e' ) ; 371 | 372 | ON : ( 'O' | 'o' ) ( 'N' | 'n' ) ; 373 | 374 | CREATE : ( 'C' | 'c' ) ( 'R' | 'r' ) ( 'E' | 'e' ) ( 'A' | 'a' ) ( 'T' | 't' ) ( 'E' | 'e' ) ; 375 | 376 | SET : ( 'S' | 's' ) ( 'E' | 'e' ) ( 'T' | 't' ) ; 377 | 378 | DELETE : ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'T' | 't' ) ( 'E' | 'e' ) ; 379 | 380 | DETACH : ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'T' | 't' ) ( 'A' | 'a' ) ( 'C' | 'c' ) ( 'H' | 'h' ) ; 381 | 382 | REMOVE : ( 'R' | 'r' ) ( 'E' | 'e' ) ( 'M' | 'm' ) ( 'O' | 'o' ) ( 'V' | 'v' ) ( 'E' | 'e' ) ; 383 | 384 | WITH : ( 'W' | 'w' ) ( 'I' | 'i' ) ( 'T' | 't' ) ( 'H' | 'h' ) ; 385 | 386 | DISTINCT : ( 'D' | 'd' ) ( 'I' | 'i' ) ( 'S' | 's' ) ( 'T' | 't' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'C' | 'c' ) ( 'T' | 't' ) ; 387 | 388 | RETURN : ( 'R' | 'r' ) ( 'E' | 'e' ) ( 'T' | 't' ) ( 'U' | 'u' ) ( 'R' | 'r' ) ( 'N' | 'n' ) ; 389 | 390 | ORDER : ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ; 391 | 392 | BY : ( 'B' | 'b' ) ( 'Y' | 'y' ) ; 393 | 394 | L_SKIP : ( 'S' | 's' ) ( 'K' | 'k' ) ( 'I' | 'i' ) ( 'P' | 'p' ) ; 395 | 396 | LIMIT : ( 'L' | 'l' ) ( 'I' | 'i' ) ( 'M' | 'm' ) ( 'I' | 'i' ) ( 'T' | 't' ) ; 397 | 398 | DESCENDING : ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'S' | 's' ) ( 'C' | 'c' ) ( 'E' | 'e' ) ( 'N' | 'n' ) ( 'D' | 'd' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'G' | 'g' ) ; 399 | 400 | DESC : ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'S' | 's' ) ( 'C' | 'c' ) ; 401 | 402 | ASCENDING : ( 'A' | 'a' ) ( 'S' | 's' ) ( 'C' | 'c' ) ( 'E' | 'e' ) ( 'N' | 'n' ) ( 'D' | 'd' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'G' | 'g' ) ; 403 | 404 | ASC : ( 'A' | 'a' ) ( 'S' | 's' ) ( 'C' | 'c' ) ; 405 | 406 | WHERE : ( 'W' | 'w' ) ( 'H' | 'h' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ( 'E' | 'e' ) ; 407 | 408 | OR : ( 'O' | 'o' ) ( 'R' | 'r' ) ; 409 | 410 | XOR : ( 'X' | 'x' ) ( 'O' | 'o' ) ( 'R' | 'r' ) ; 411 | 412 | AND : ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' ) ; 413 | 414 | NOT : ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' ) ; 415 | 416 | IN : ( 'I' | 'i' ) ( 'N' | 'n' ) ; 417 | 418 | STARTS : ( 'S' | 's' ) ( 'T' | 't' ) ( 'A' | 'a' ) ( 'R' | 'r' ) ( 'T' | 't' ) ( 'S' | 's' ) ; 419 | 420 | ENDS : ( 'E' | 'e' ) ( 'N' | 'n' ) ( 'D' | 'd' ) ( 'S' | 's' ) ; 421 | 422 | CONTAINS : ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'T' | 't' ) ( 'A' | 'a' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'S' | 's' ) ; 423 | 424 | IS : ( 'I' | 'i' ) ( 'S' | 's' ) ; 425 | 426 | NULL : ( 'N' | 'n' ) ( 'U' | 'u' ) ( 'L' | 'l' ) ( 'L' | 'l' ) ; 427 | 428 | TRUE : ( 'T' | 't' ) ( 'R' | 'r' ) ( 'U' | 'u' ) ( 'E' | 'e' ) ; 429 | 430 | FALSE : ( 'F' | 'f' ) ( 'A' | 'a' ) ( 'L' | 'l' ) ( 'S' | 's' ) ( 'E' | 'e' ) ; 431 | 432 | COUNT : ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'U' | 'u' ) ( 'N' | 'n' ) ( 'T' | 't' ) ; 433 | 434 | FILTER : ( 'F' | 'f' ) ( 'I' | 'i' ) ( 'L' | 'l' ) ( 'T' | 't' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ; 435 | 436 | EXTRACT : ( 'E' | 'e' ) ( 'X' | 'x' ) ( 'T' | 't' ) ( 'R' | 'r' ) ( 'A' | 'a' ) ( 'C' | 'c' ) ( 'T' | 't' ) ; 437 | 438 | ANY : ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'Y' | 'y' ) ; 439 | 440 | NONE : ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'E' | 'e' ) ; 441 | 442 | SINGLE : ( 'S' | 's' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'G' | 'g' ) ( 'L' | 'l' ) ( 'E' | 'e' ) ; 443 | 444 | L_0X : ( '0' | '0' ) ( 'X' | 'x' ) ; 445 | 446 | UnescapedSymbolicName : IdentifierStart ( IdentifierPart )* ; 447 | 448 | /** 449 | * Based on the unicode identifier and pattern syntax 450 | * (http://www.unicode.org/reports/tr31/) 451 | * And extended c_with a few characters. 452 | */ 453 | IdentifierStart : ID_Start 454 | | Sc 455 | | '_' 456 | | '‿' 457 | | '⁀' 458 | | '⁔' 459 | | '︳' 460 | | '︴' 461 | | '﹍' 462 | | '﹎' 463 | | '﹏' 464 | | '_' 465 | ; 466 | 467 | /** 468 | * Based on the unicode identifier and pattern syntax 469 | * (http://www.unicode.org/reports/tr31/) 470 | * And extended c_with a few characters. 471 | */ 472 | IdentifierPart : ID_Continue 473 | | Sc 474 | ; 475 | 476 | /** 477 | * Any character except "`", enclosed within `backticks`. Backticks are escaped c_with double backticks. */ 478 | EscapedSymbolicName : ( '`' ( EscapedSymbolicName_0 )* '`' )+ ; 479 | 480 | ws : ( WHITESPACE )* ; 481 | 482 | sp : ( WHITESPACE )+ ; 483 | 484 | WHITESPACE : SPACE 485 | | TAB 486 | | LF 487 | | VT 488 | | FF 489 | | CR 490 | | FS 491 | | GS 492 | | RS 493 | | US 494 | | ' ' 495 | | '᠎' 496 | | ' ' 497 | | ' ' 498 | | ' ' 499 | | ' ' 500 | | ' ' 501 | | ' ' 502 | | ' ' 503 | | ' ' 504 | | ' ' 505 | | ' ' 506 | | '
' 507 | | '
' 508 | | ' ' 509 | | ' ' 510 | | ' ' 511 | | ' ' 512 | | ' ' 513 | | Comment 514 | ; 515 | 516 | Comment : ( '/*' ( Comment_0 | ( '*' Comment_1 ) )* '*/' ) 517 | | ( '//' Comment_2 CR? ( LF | EOF ) ) 518 | ; 519 | 520 | leftArrowHead : '<' 521 | | '⟨' 522 | | '〈' 523 | | '﹤' 524 | | '<' 525 | ; 526 | 527 | rightArrowHead : '>' 528 | | '⟩' 529 | | '〉' 530 | | '﹥' 531 | | '>' 532 | ; 533 | 534 | dash : '-' 535 | | '­' 536 | | '‐' 537 | | '‑' 538 | | '‒' 539 | | '–' 540 | | '—' 541 | | '―' 542 | | '−' 543 | | '﹘' 544 | | '﹣' 545 | | '-' 546 | ; 547 | 548 | fragment FF : [\f] ; 549 | 550 | fragment EscapedSymbolicName_0 : [\u0000-_a-\uFFFF] ; 551 | 552 | fragment RS : [\u001E] ; 553 | 554 | fragment ID_Continue : [0-9A-Z_a-z\u00AA\u00B5\u00B7\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376-\u0377\u037A-\u037D\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7-\u09C8\u09CB-\u09CE\u09D7\u09DC-\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47-\u0B48\u0B4B-\u0B4D\u0B56-\u0B57\u0B5C-\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82-\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C58-\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1-\u0CF2\u0D02-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2-\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18-\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772-\u1773\u1780-\u17D3\u17D7\u17DC-\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F-\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC-\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33-\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC] ; 555 | 556 | fragment Comment_1 : [\u0000-.0-\uFFFF] ; 557 | 558 | fragment Comment_0 : [\u0000-)+-\uFFFF] ; 559 | 560 | 561 | fragment Comment_2 : [\u0000-\t\u000B-\f\u000E-\uFFFF] ; 562 | 563 | fragment GS : [\u001D] ; 564 | 565 | fragment FS : [\u001C] ; 566 | 567 | fragment CR : [\r] ; 568 | 569 | fragment Sc : [$\u00A2-\u00A5\u058F\u060B\u09F2-\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BA\uA838\uFDFC\uFE69\uFF04\uFFE0-\uFFE1\uFFE5-\uFFE6] ; 570 | 571 | fragment SPACE : [ ] ; 572 | 573 | fragment TAB : [\t] ; 574 | 575 | 576 | fragment LF : [\n] ; 577 | 578 | fragment VT : [\u000B] ; 579 | 580 | fragment US : [\u001F] ; 581 | 582 | fragment ID_Start : [A-Za-z\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376-\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06E5-\u06E6\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4-\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58-\u0C59\u0C60-\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E46\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A-\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC] ; 583 | 584 | fragment StringLiteral_0 : ~[\\\'"] ; 585 | fragment StringLiteral_1 : ~[\\\'"] ; 586 | -------------------------------------------------------------------------------- /grammars/cypher/Cypher.g4.orig: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-2016 "Neo Technology," 3 | * Network Engine for Objects in Lund AB [http://neotechnology.com] 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | grammar Cypher; 18 | 19 | cypher : ws statement ( ws ';' )? ws ; 20 | 21 | statement : query ; 22 | 23 | query : regularQuery ; 24 | 25 | regularQuery : singleQuery ( ws union )* ; 26 | 27 | singleQuery : clause ( ws clause )* ; 28 | 29 | union : ( UNION sp ALL singleQuery ) 30 | | ( UNION singleQuery ) 31 | ; 32 | 33 | clause : match 34 | | unwind 35 | | merge 36 | | create 37 | | set 38 | | delete 39 | | remove 40 | | with 41 | | return 42 | ; 43 | 44 | match : ( OPTIONAL sp )? MATCH ws pattern ( ws where )? ; 45 | 46 | unwind : UNWIND ws expression sp AS sp variable ; 47 | 48 | merge : MERGE ws patternPart ( sp mergeAction )* ; 49 | 50 | mergeAction : ( ON sp MATCH sp set ) 51 | | ( ON sp CREATE sp set ) 52 | ; 53 | 54 | create : CREATE ws pattern ; 55 | 56 | set : SET setItem ( ',' setItem )* ; 57 | 58 | setItem : ( propertyExpression '=' expression ) 59 | | ( variable '=' expression ) 60 | | ( variable '+=' expression ) 61 | | ( variable nodeLabels ) 62 | ; 63 | 64 | delete : ( DELETE expression ( ',' expression )* ) 65 | | ( DETACH sp DELETE expression ( ',' expression )* ) 66 | ; 67 | 68 | remove : REMOVE sp removeItem ( ws ',' ws removeItem )* ; 69 | 70 | removeItem : ( variable nodeLabels ) 71 | | propertyExpression 72 | ; 73 | 74 | with : ( WITH DISTINCT sp returnBody where? ) 75 | | ( WITH sp returnBody where? ) 76 | ; 77 | 78 | return : ( RETURN sp DISTINCT sp returnBody ) 79 | | ( RETURN sp returnBody ) 80 | ; 81 | 82 | returnBody : returnItems ( sp order )? ( sp skip )? ( sp limit )? ; 83 | 84 | returnItems : ( '*' ( ws ',' ws returnItem )* ) 85 | | ( returnItem ( ws ',' ws returnItem )* ) 86 | ; 87 | 88 | returnItem : ( expression sp AS sp variable ) 89 | | expression 90 | ; 91 | 92 | order : ORDER sp BY sp sortItem ( ',' ws sortItem )* ; 93 | 94 | skip : L_SKIP sp expression ; 95 | 96 | limit : LIMIT sp expression ; 97 | 98 | sortItem : ( expression ( DESCENDING | DESC ) ) 99 | | ( expression ( ASCENDING | ASC )? ) 100 | ; 101 | 102 | where : WHERE sp expression ; 103 | 104 | pattern : patternPart ( ',' patternPart )* ; 105 | 106 | patternPart : ( variable ws '=' ws anonymousPatternPart ) 107 | | anonymousPatternPart 108 | ; 109 | 110 | anonymousPatternPart : patternElement ; 111 | 112 | patternElement : ( nodePattern ( ws patternElementChain )* ) 113 | | ( '(' patternElement ')' ) 114 | ; 115 | 116 | nodePattern : '(' ws ( variable ws )? ( nodeLabels ws )? ( properties ws )? ')' ; 117 | 118 | patternElementChain : relationshipPattern ws nodePattern ; 119 | 120 | relationshipPattern : ( leftArrowHead ws dash ws relationshipDetail? ws dash ws rightArrowHead ) 121 | | ( leftArrowHead ws dash ws relationshipDetail? ws dash ) 122 | | ( dash ws relationshipDetail? ws dash ws rightArrowHead ) 123 | | ( dash ws relationshipDetail? ws dash ) 124 | ; 125 | 126 | relationshipDetail : '[' variable? '?'? relationshipTypes? ( '*' rangeLiteral? )? properties? ']' ; 127 | 128 | properties : mapLiteral 129 | | parameter 130 | ; 131 | 132 | relationshipTypes : ':' relTypeName ( ws '|' ':'? ws relTypeName )* ; 133 | 134 | nodeLabels : nodeLabel ( ws nodeLabel )* ; 135 | 136 | nodeLabel : ':' labelName ; 137 | 138 | rangeLiteral : ( unsignedIntegerLiteral ws )? '..' ( ws unsignedIntegerLiteral )? ; 139 | 140 | labelName : symbolicName ; 141 | 142 | relTypeName : symbolicName ; 143 | 144 | expression : expression12 ; 145 | 146 | expression12 : expression11 ( sp OR sp expression11 )* ; 147 | 148 | expression11 : expression10 ( sp XOR sp expression10 )* ; 149 | 150 | expression10 : expression9 ( sp AND sp expression9 )* ; 151 | 152 | expression9 : ( sp NOT sp )* expression8 ; 153 | 154 | expression8 : expression7 ( ws partialComparisonExpression )* ; 155 | 156 | expression7 : expression6 ( ( ws '+' ws expression6 ) | ( ws '-' ws expression6 ) )* ; 157 | 158 | expression6 : expression5 ( ( ws '*' ws expression5 ) | ( ws '/' ws expression5 ) | ( ws '%' ws expression5 ) )* ; 159 | 160 | expression5 : expression4 ( ws '^' ws expression4 )* ; 161 | 162 | expression4 : ( ( '+' | '-' ) ws )* expression3 ; 163 | 164 | expression3 : expression2 ( ( ws '[' expression ']' ) | ( ws '[' expression? '..' expression? ']' ) | ( ( ( ws '=~' ) | ( sp IN ) | ( sp STARTS sp WITH ) | ( sp ENDS sp WITH ) | ( sp CONTAINS ) ) ws expression2 ) | ( sp IS sp NULL ) | ( sp IS sp NOT sp NULL ) )* ; 165 | 166 | expression2 : atom ( propertyLookup | nodeLabels )* ; 167 | 168 | atom : numberLiteral 169 | | StringLiteral 170 | | parameter 171 | | TRUE 172 | | FALSE 173 | | NULL 174 | | ( COUNT '(' '*' ')' ) 175 | | mapLiteral 176 | | listComprehension 177 | | ( '[' ws expression ws ( ',' ws expression ws )* ']' ) 178 | | ( FILTER ws '(' ws filterExpression ws ')' ) 179 | | ( EXTRACT ws '(' ws filterExpression ws ( ws '|' expression )? ')' ) 180 | | ( ALL ws '(' ws filterExpression ws ')' ) 181 | | ( ANY ws '(' ws filterExpression ws ')' ) 182 | | ( NONE ws '(' ws filterExpression ws ')' ) 183 | | ( SINGLE ws '(' ws filterExpression ws ')' ) 184 | | relationshipsPattern 185 | | parenthesizedExpression 186 | | functionInvocation 187 | | variable 188 | ; 189 | 190 | partialComparisonExpression : ( '=' ws expression7 ) 191 | | ( '<>' ws expression7 ) 192 | | ( '!=' ws expression7 ) 193 | | ( '<' ws expression7 ) 194 | | ( '>' ws expression7 ) 195 | | ( '<=' ws expression7 ) 196 | | ( '>=' ws expression7 ) 197 | ; 198 | 199 | parenthesizedExpression : '(' expression ')' ; 200 | 201 | relationshipsPattern : nodePattern ( ws patternElementChain )+ ; 202 | 203 | filterExpression : idInColl ( ws where )? ; 204 | 205 | idInColl : variable sp IN sp expression ; 206 | 207 | functionInvocation : functionName ws '(' ws DISTINCT? ( expression ( ',' ws expression )* )? ws ')' ; 208 | 209 | functionName : symbolicName ; 210 | 211 | listComprehension : '[' filterExpression ( ws '|' expression )? ']' ; 212 | 213 | propertyLookup : ws '.' ws ( ( propertyKeyName ( '?' | '!' ) ) | propertyKeyName ) ; 214 | 215 | variable : symbolicName ; 216 | 217 | StringLiteral : ( '"' ( StringLiteral_0 | EscapedChar )* '"' ) 218 | | ( '\'' ( StringLiteral_1 | EscapedChar )* '\'' ) 219 | ; 220 | 221 | EscapedChar : '\\' ( '\\' | '\'' | '"' | ( 'B' | 'b' ) | ( 'F' | 'f' ) | ( 'N' | 'n' ) | ( 'R' | 'r' ) | ( 'T' | 't' ) | '_' | '%' | ( ( 'U' | 'u' ) ( HexDigit HexDigit HexDigit HexDigit ) ) | ( ( 'U' | 'u' ) ( HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit ) ) ) ; 222 | 223 | numberLiteral : doubleLiteral 224 | | signedIntegerLiteral 225 | ; 226 | 227 | mapLiteral : '{' ws ( propertyKeyName ws ':' ws expression ws ( ',' ws propertyKeyName ws ':' ws expression ws )* )? '}' ; 228 | 229 | parameter : '{' ws ( symbolicName | unsignedDecimalInteger ) ws '}' ; 230 | 231 | propertyExpression : atom ( ws propertyLookup )+ ; 232 | 233 | propertyKeyName : symbolicName ; 234 | 235 | signedIntegerLiteral : hexInteger 236 | | octalInteger 237 | | decimalInteger 238 | ; 239 | 240 | unsignedIntegerLiteral : unsignedDecimalInteger ; 241 | 242 | hexInteger : '-'? unsignedHexInteger ; 243 | 244 | decimalInteger : '-'? unsignedDecimalInteger ; 245 | 246 | octalInteger : '-'? unsignedOctalInteger ; 247 | 248 | unsignedHexInteger : L_0X hexString ; 249 | 250 | unsignedDecimalInteger : ( ( '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ) digitString? ) 251 | | '0' 252 | ; 253 | 254 | unsignedOctalInteger : '0' octalString ; 255 | 256 | hexString : ( HexDigit )+ ; 257 | 258 | digitString : ( digit )+ ; 259 | 260 | octalString : ( octDigit )+ ; 261 | 262 | HexDigit : '0' 263 | | '1' 264 | | '2' 265 | | '3' 266 | | '4' 267 | | '5' 268 | | '6' 269 | | '7' 270 | | '8' 271 | | '9' 272 | | ( 'A' | 'a' ) 273 | | ( 'B' | 'b' ) 274 | | ( 'C' | 'c' ) 275 | | ( 'D' | 'd' ) 276 | | ( 'E' | 'e' ) 277 | | ( 'F' | 'f' ) 278 | ; 279 | 280 | digit : '0' 281 | | '1' 282 | | '2' 283 | | '3' 284 | | '4' 285 | | '5' 286 | | '6' 287 | | '7' 288 | | '8' 289 | | '9' 290 | ; 291 | 292 | octDigit : '0' 293 | | '1' 294 | | '2' 295 | | '3' 296 | | '4' 297 | | '5' 298 | | '6' 299 | | '7' 300 | ; 301 | 302 | doubleLiteral : exponentDecimalReal 303 | | regularDecimalReal 304 | ; 305 | 306 | exponentDecimalReal : '-'? ( digit | '.' )+ ( ( 'E' | 'e' ) | ( 'E' | 'e' ) ) '-'? digitString ; 307 | 308 | regularDecimalReal : '-'? ( digit )* '.' digitString ; 309 | 310 | symbolicName : UnescapedSymbolicName 311 | | EscapedSymbolicName 312 | | UNION 313 | | ALL 314 | | OPTIONAL 315 | | MATCH 316 | | UNWIND 317 | | AS 318 | | MERGE 319 | | ON 320 | | CREATE 321 | | SET 322 | | DELETE 323 | | DETACH 324 | | REMOVE 325 | | WITH 326 | | DISTINCT 327 | | RETURN 328 | | ORDER 329 | | BY 330 | | L_SKIP 331 | | LIMIT 332 | | DESCENDING 333 | | DESC 334 | | ASCENDING 335 | | ASC 336 | | WHERE 337 | | OR 338 | | XOR 339 | | AND 340 | | NOT 341 | | IN 342 | | STARTS 343 | | ENDS 344 | | CONTAINS 345 | | IS 346 | | NULL 347 | | TRUE 348 | | FALSE 349 | | COUNT 350 | | FILTER 351 | | EXTRACT 352 | | ANY 353 | | NONE 354 | | SINGLE 355 | | L_0X 356 | ; 357 | 358 | UNION : ( 'U' | 'u' ) ( 'N' | 'n' ) ( 'I' | 'i' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ; 359 | 360 | ALL : ( 'A' | 'a' ) ( 'L' | 'l' ) ( 'L' | 'l' ) ; 361 | 362 | OPTIONAL : ( 'O' | 'o' ) ( 'P' | 'p' ) ( 'T' | 't' ) ( 'I' | 'i' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'A' | 'a' ) ( 'L' | 'l' ) ; 363 | 364 | MATCH : ( 'M' | 'm' ) ( 'A' | 'a' ) ( 'T' | 't' ) ( 'C' | 'c' ) ( 'H' | 'h' ) ; 365 | 366 | UNWIND : ( 'U' | 'u' ) ( 'N' | 'n' ) ( 'W' | 'w' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'D' | 'd' ) ; 367 | 368 | AS : ( 'A' | 'a' ) ( 'S' | 's' ) ; 369 | 370 | MERGE : ( 'M' | 'm' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ( 'G' | 'g' ) ( 'E' | 'e' ) ; 371 | 372 | ON : ( 'O' | 'o' ) ( 'N' | 'n' ) ; 373 | 374 | CREATE : ( 'C' | 'c' ) ( 'R' | 'r' ) ( 'E' | 'e' ) ( 'A' | 'a' ) ( 'T' | 't' ) ( 'E' | 'e' ) ; 375 | 376 | SET : ( 'S' | 's' ) ( 'E' | 'e' ) ( 'T' | 't' ) ; 377 | 378 | DELETE : ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'T' | 't' ) ( 'E' | 'e' ) ; 379 | 380 | DETACH : ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'T' | 't' ) ( 'A' | 'a' ) ( 'C' | 'c' ) ( 'H' | 'h' ) ; 381 | 382 | REMOVE : ( 'R' | 'r' ) ( 'E' | 'e' ) ( 'M' | 'm' ) ( 'O' | 'o' ) ( 'V' | 'v' ) ( 'E' | 'e' ) ; 383 | 384 | WITH : ( 'W' | 'w' ) ( 'I' | 'i' ) ( 'T' | 't' ) ( 'H' | 'h' ) ; 385 | 386 | DISTINCT : ( 'D' | 'd' ) ( 'I' | 'i' ) ( 'S' | 's' ) ( 'T' | 't' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'C' | 'c' ) ( 'T' | 't' ) ; 387 | 388 | RETURN : ( 'R' | 'r' ) ( 'E' | 'e' ) ( 'T' | 't' ) ( 'U' | 'u' ) ( 'R' | 'r' ) ( 'N' | 'n' ) ; 389 | 390 | ORDER : ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ; 391 | 392 | BY : ( 'B' | 'b' ) ( 'Y' | 'y' ) ; 393 | 394 | L_SKIP : ( 'S' | 's' ) ( 'K' | 'k' ) ( 'I' | 'i' ) ( 'P' | 'p' ) ; 395 | 396 | LIMIT : ( 'L' | 'l' ) ( 'I' | 'i' ) ( 'M' | 'm' ) ( 'I' | 'i' ) ( 'T' | 't' ) ; 397 | 398 | DESCENDING : ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'S' | 's' ) ( 'C' | 'c' ) ( 'E' | 'e' ) ( 'N' | 'n' ) ( 'D' | 'd' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'G' | 'g' ) ; 399 | 400 | DESC : ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'S' | 's' ) ( 'C' | 'c' ) ; 401 | 402 | ASCENDING : ( 'A' | 'a' ) ( 'S' | 's' ) ( 'C' | 'c' ) ( 'E' | 'e' ) ( 'N' | 'n' ) ( 'D' | 'd' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'G' | 'g' ) ; 403 | 404 | ASC : ( 'A' | 'a' ) ( 'S' | 's' ) ( 'C' | 'c' ) ; 405 | 406 | WHERE : ( 'W' | 'w' ) ( 'H' | 'h' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ( 'E' | 'e' ) ; 407 | 408 | OR : ( 'O' | 'o' ) ( 'R' | 'r' ) ; 409 | 410 | XOR : ( 'X' | 'x' ) ( 'O' | 'o' ) ( 'R' | 'r' ) ; 411 | 412 | AND : ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' ) ; 413 | 414 | NOT : ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' ) ; 415 | 416 | IN : ( 'I' | 'i' ) ( 'N' | 'n' ) ; 417 | 418 | STARTS : ( 'S' | 's' ) ( 'T' | 't' ) ( 'A' | 'a' ) ( 'R' | 'r' ) ( 'T' | 't' ) ( 'S' | 's' ) ; 419 | 420 | ENDS : ( 'E' | 'e' ) ( 'N' | 'n' ) ( 'D' | 'd' ) ( 'S' | 's' ) ; 421 | 422 | CONTAINS : ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'T' | 't' ) ( 'A' | 'a' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'S' | 's' ) ; 423 | 424 | IS : ( 'I' | 'i' ) ( 'S' | 's' ) ; 425 | 426 | NULL : ( 'N' | 'n' ) ( 'U' | 'u' ) ( 'L' | 'l' ) ( 'L' | 'l' ) ; 427 | 428 | TRUE : ( 'T' | 't' ) ( 'R' | 'r' ) ( 'U' | 'u' ) ( 'E' | 'e' ) ; 429 | 430 | FALSE : ( 'F' | 'f' ) ( 'A' | 'a' ) ( 'L' | 'l' ) ( 'S' | 's' ) ( 'E' | 'e' ) ; 431 | 432 | COUNT : ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'U' | 'u' ) ( 'N' | 'n' ) ( 'T' | 't' ) ; 433 | 434 | FILTER : ( 'F' | 'f' ) ( 'I' | 'i' ) ( 'L' | 'l' ) ( 'T' | 't' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ; 435 | 436 | EXTRACT : ( 'E' | 'e' ) ( 'X' | 'x' ) ( 'T' | 't' ) ( 'R' | 'r' ) ( 'A' | 'a' ) ( 'C' | 'c' ) ( 'T' | 't' ) ; 437 | 438 | ANY : ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'Y' | 'y' ) ; 439 | 440 | NONE : ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'E' | 'e' ) ; 441 | 442 | SINGLE : ( 'S' | 's' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'G' | 'g' ) ( 'L' | 'l' ) ( 'E' | 'e' ) ; 443 | 444 | L_0X : ( '0' | '0' ) ( 'X' | 'x' ) ; 445 | 446 | UnescapedSymbolicName : IdentifierStart ( IdentifierPart )* ; 447 | 448 | /** 449 | * Based on the unicode identifier and pattern syntax 450 | * (http://www.unicode.org/reports/tr31/) 451 | * And extended with a few characters. 452 | */ 453 | IdentifierStart : ID_Start 454 | | Sc 455 | | '_' 456 | | '‿' 457 | | '⁀' 458 | | '⁔' 459 | | '︳' 460 | | '︴' 461 | | '﹍' 462 | | '﹎' 463 | | '﹏' 464 | | '_' 465 | ; 466 | 467 | /** 468 | * Based on the unicode identifier and pattern syntax 469 | * (http://www.unicode.org/reports/tr31/) 470 | * And extended with a few characters. 471 | */ 472 | IdentifierPart : ID_Continue 473 | | Sc 474 | ; 475 | 476 | /** 477 | * Any character except "`", enclosed within `backticks`. Backticks are escaped with double backticks. */ 478 | EscapedSymbolicName : ( '`' ( EscapedSymbolicName_0 )* '`' )+ ; 479 | 480 | ws : ( WHITESPACE )* ; 481 | 482 | sp : ( WHITESPACE )+ ; 483 | 484 | WHITESPACE : SPACE 485 | | TAB 486 | | LF 487 | | VT 488 | | FF 489 | | CR 490 | | FS 491 | | GS 492 | | RS 493 | | US 494 | | ' ' 495 | | '᠎' 496 | | ' ' 497 | | ' ' 498 | | ' ' 499 | | ' ' 500 | | ' ' 501 | | ' ' 502 | | ' ' 503 | | ' ' 504 | | ' ' 505 | | ' ' 506 | | '
' 507 | | '
' 508 | | ' ' 509 | | ' ' 510 | | ' ' 511 | | ' ' 512 | | ' ' 513 | | Comment 514 | ; 515 | 516 | Comment : ( '/*' ( Comment_0 | ( '*' Comment_1 ) )* '*/' ) 517 | | ( '//' Comment_2 CR? ( LF | EOF ) ) 518 | ; 519 | 520 | leftArrowHead : '<' 521 | | '⟨' 522 | | '〈' 523 | | '﹤' 524 | | '<' 525 | ; 526 | 527 | rightArrowHead : '>' 528 | | '⟩' 529 | | '〉' 530 | | '﹥' 531 | | '>' 532 | ; 533 | 534 | dash : '-' 535 | | '­' 536 | | '‐' 537 | | '‑' 538 | | '‒' 539 | | '–' 540 | | '—' 541 | | '―' 542 | | '−' 543 | | '﹘' 544 | | '﹣' 545 | | '-' 546 | ; 547 | 548 | fragment FF : [\f] ; 549 | 550 | fragment EscapedSymbolicName_0 : [\u0000-_a-\uFFFF] ; 551 | 552 | fragment RS : [\u001E] ; 553 | 554 | fragment ID_Continue : [0-9A-Z_a-z\u00AA\u00B5\u00B7\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376-\u0377\u037A-\u037D\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7-\u09C8\u09CB-\u09CE\u09D7\u09DC-\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47-\u0B48\u0B4B-\u0B4D\u0B56-\u0B57\u0B5C-\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82-\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C58-\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1-\u0CF2\u0D02-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2-\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18-\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772-\u1773\u1780-\u17D3\u17D7\u17DC-\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F-\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC-\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33-\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC] ; 555 | 556 | fragment Comment_1 : [\u0000-.0-\uFFFF] ; 557 | 558 | fragment Comment_0 : [\u0000-)+-\uFFFF] ; 559 | 560 | fragment StringLiteral_1 : [\u0000-&(-\[\]-\uFFFF] ; 561 | 562 | fragment Comment_2 : [\u0000-\t\u000B-\f\u000E-\uFFFF] ; 563 | 564 | fragment GS : [\u001D] ; 565 | 566 | fragment FS : [\u001C] ; 567 | 568 | fragment CR : [\r] ; 569 | 570 | fragment Sc : [$\u00A2-\u00A5\u058F\u060B\u09F2-\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BA\uA838\uFDFC\uFE69\uFF04\uFFE0-\uFFE1\uFFE5-\uFFE6] ; 571 | 572 | fragment SPACE : [ ] ; 573 | 574 | fragment TAB : [\t] ; 575 | 576 | fragment StringLiteral_0 : [\u0000-!#-\[\]-\uFFFF] ; 577 | 578 | fragment LF : [\n] ; 579 | 580 | fragment VT : [\u000B] ; 581 | 582 | fragment US : [\u001F] ; 583 | 584 | fragment ID_Start : [A-Za-z\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376-\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06E5-\u06E6\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4-\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58-\u0C59\u0C60-\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E46\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A-\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC] ; 585 | 586 | -------------------------------------------------------------------------------- /grammars/cypher/replace_target_symbols.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #!/bin/bash 3 | 4 | mv Cypher.g4 Cypher.g4.orig 5 | sed -e 's/\(delete\W\|delete$\|with\W\|with$\|return\W\|return$\|match\W\|match$\|set\W\|set$\|merge\W\|merge$\)/c_\1/g' Cypher.g4.orig > Cypher.g4.1 6 | cat Cypher.g4.1 | grep -v -e '^fragment StringLiteral_' > Cypher.g4 7 | rm Cypher.g4.1 8 | echo "fragment StringLiteral_0 : ~[\\\\\\\\\'\"] ;" >> Cypher.g4 9 | echo "fragment StringLiteral_1 : ~[\\\\\\\\\'\"] ;" >> Cypher.g4 10 | 11 | -------------------------------------------------------------------------------- /lib/Cypher.tokens: -------------------------------------------------------------------------------- 1 | T__0=1 2 | T__1=2 3 | T__2=3 4 | T__3=4 5 | T__4=5 6 | T__5=6 7 | T__6=7 8 | T__7=8 9 | T__8=9 10 | T__9=10 11 | T__10=11 12 | T__11=12 13 | T__12=13 14 | T__13=14 15 | T__14=15 16 | T__15=16 17 | T__16=17 18 | T__17=18 19 | T__18=19 20 | T__19=20 21 | T__20=21 22 | T__21=22 23 | T__22=23 24 | T__23=24 25 | T__24=25 26 | T__25=26 27 | T__26=27 28 | T__27=28 29 | T__28=29 30 | T__29=30 31 | T__30=31 32 | T__31=32 33 | T__32=33 34 | T__33=34 35 | T__34=35 36 | T__35=36 37 | T__36=37 38 | T__37=38 39 | T__38=39 40 | T__39=40 41 | T__40=41 42 | T__41=42 43 | T__42=43 44 | T__43=44 45 | T__44=45 46 | T__45=46 47 | T__46=47 48 | T__47=48 49 | T__48=49 50 | T__49=50 51 | T__50=51 52 | T__51=52 53 | T__52=53 54 | T__53=54 55 | T__54=55 56 | T__55=56 57 | T__56=57 58 | T__57=58 59 | T__58=59 60 | T__59=60 61 | StringLiteral=61 62 | EscapedChar=62 63 | HexDigit=63 64 | UNION=64 65 | ALL=65 66 | OPTIONAL=66 67 | MATCH=67 68 | UNWIND=68 69 | AS=69 70 | MERGE=70 71 | ON=71 72 | CREATE=72 73 | SET=73 74 | DELETE=74 75 | DETACH=75 76 | REMOVE=76 77 | WITH=77 78 | DISTINCT=78 79 | RETURN=79 80 | ORDER=80 81 | BY=81 82 | L_SKIP=82 83 | LIMIT=83 84 | DESCENDING=84 85 | DESC=85 86 | ASCENDING=86 87 | ASC=87 88 | WHERE=88 89 | OR=89 90 | XOR=90 91 | AND=91 92 | NOT=92 93 | IN=93 94 | STARTS=94 95 | ENDS=95 96 | CONTAINS=96 97 | IS=97 98 | NULL=98 99 | TRUE=99 100 | FALSE=100 101 | COUNT=101 102 | FILTER=102 103 | EXTRACT=103 104 | ANY=104 105 | NONE=105 106 | SINGLE=106 107 | L_0X=107 108 | UnescapedSymbolicName=108 109 | IdentifierStart=109 110 | IdentifierPart=110 111 | EscapedSymbolicName=111 112 | WHITESPACE=112 113 | Comment=113 114 | ';'=1 115 | ','=2 116 | '='=3 117 | '+='=4 118 | '*'=5 119 | '('=6 120 | ')'=7 121 | '['=8 122 | '?'=9 123 | ']'=10 124 | ':'=11 125 | '|'=12 126 | '..'=13 127 | '+'=14 128 | '-'=15 129 | '/'=16 130 | '%'=17 131 | '^'=18 132 | '=~'=19 133 | '<>'=20 134 | '!='=21 135 | '<'=22 136 | '>'=23 137 | '<='=24 138 | '>='=25 139 | '.'=26 140 | '!'=27 141 | '{'=28 142 | '}'=29 143 | '1'=30 144 | '2'=31 145 | '3'=32 146 | '4'=33 147 | '5'=34 148 | '6'=35 149 | '7'=36 150 | '8'=37 151 | '9'=38 152 | '0'=39 153 | 'E'=40 154 | 'e'=41 155 | '⟨'=42 156 | '〈'=43 157 | '﹤'=44 158 | '<'=45 159 | '⟩'=46 160 | '〉'=47 161 | '﹥'=48 162 | '>'=49 163 | '­'=50 164 | '‐'=51 165 | '‑'=52 166 | '‒'=53 167 | '–'=54 168 | '—'=55 169 | '―'=56 170 | '−'=57 171 | '﹘'=58 172 | '﹣'=59 173 | '-'=60 174 | -------------------------------------------------------------------------------- /lib/CypherLexer.js: -------------------------------------------------------------------------------- 1 | // Generated from browser-cypher/Cypher.g4 by ANTLR 4.5.3 2 | // jshint ignore: start 3 | 4 | module.exports = function (antlr4, CypherListener) { 5 | 6 | var serializedATN = ["\u0003\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd", 7 | "\u0002s\u0324\b\u0001\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004", 8 | "\u0004\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t", 9 | "\u0007\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004", 10 | "\f\t\f\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010", 11 | "\t\u0010\u0004\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013", 12 | "\u0004\u0014\t\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017", 13 | "\t\u0017\u0004\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a", 14 | "\u0004\u001b\t\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e", 15 | "\t\u001e\u0004\u001f\t\u001f\u0004 \t \u0004!\t!\u0004\"\t\"\u0004#", 16 | "\t#\u0004$\t$\u0004%\t%\u0004&\t&\u0004\'\t\'\u0004(\t(\u0004)\t)\u0004", 17 | "*\t*\u0004+\t+\u0004,\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u0004", 18 | "1\t1\u00042\t2\u00043\t3\u00044\t4\u00045\t5\u00046\t6\u00047\t7\u0004", 19 | "8\t8\u00049\t9\u0004:\t:\u0004;\t;\u0004<\t<\u0004=\t=\u0004>\t>\u0004", 20 | "?\t?\u0004@\t@\u0004A\tA\u0004B\tB\u0004C\tC\u0004D\tD\u0004E\tE\u0004", 21 | "F\tF\u0004G\tG\u0004H\tH\u0004I\tI\u0004J\tJ\u0004K\tK\u0004L\tL\u0004", 22 | "M\tM\u0004N\tN\u0004O\tO\u0004P\tP\u0004Q\tQ\u0004R\tR\u0004S\tS\u0004", 23 | "T\tT\u0004U\tU\u0004V\tV\u0004W\tW\u0004X\tX\u0004Y\tY\u0004Z\tZ\u0004", 24 | "[\t[\u0004\\\t\\\u0004]\t]\u0004^\t^\u0004_\t_\u0004`\t`\u0004a\ta\u0004", 25 | "b\tb\u0004c\tc\u0004d\td\u0004e\te\u0004f\tf\u0004g\tg\u0004h\th\u0004", 26 | "i\ti\u0004j\tj\u0004k\tk\u0004l\tl\u0004m\tm\u0004n\tn\u0004o\to\u0004", 27 | "p\tp\u0004q\tq\u0004r\tr\u0004s\ts\u0004t\tt\u0004u\tu\u0004v\tv\u0004", 28 | "w\tw\u0004x\tx\u0004y\ty\u0004z\tz\u0004{\t{\u0004|\t|\u0004}\t}\u0004", 29 | "~\t~\u0004\u007f\t\u007f\u0004\u0080\t\u0080\u0004\u0081\t\u0081\u0004", 30 | "\u0082\t\u0082\u0004\u0083\t\u0083\u0004\u0084\t\u0084\u0004\u0085\t", 31 | "\u0085\u0004\u0086\t\u0086\u0004\u0087\t\u0087\u0003\u0002\u0003\u0002", 32 | "\u0003\u0003\u0003\u0003\u0003\u0004\u0003\u0004\u0003\u0005\u0003\u0005", 33 | "\u0003\u0005\u0003\u0006\u0003\u0006\u0003\u0007\u0003\u0007\u0003\b", 34 | "\u0003\b\u0003\t\u0003\t\u0003\n\u0003\n\u0003\u000b\u0003\u000b\u0003", 35 | "\f\u0003\f\u0003\r\u0003\r\u0003\u000e\u0003\u000e\u0003\u000e\u0003", 36 | "\u000f\u0003\u000f\u0003\u0010\u0003\u0010\u0003\u0011\u0003\u0011\u0003", 37 | "\u0012\u0003\u0012\u0003\u0013\u0003\u0013\u0003\u0014\u0003\u0014\u0003", 38 | "\u0014\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0016\u0003\u0016\u0003", 39 | "\u0016\u0003\u0017\u0003\u0017\u0003\u0018\u0003\u0018\u0003\u0019\u0003", 40 | "\u0019\u0003\u0019\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001b\u0003", 41 | "\u001b\u0003\u001c\u0003\u001c\u0003\u001d\u0003\u001d\u0003\u001e\u0003", 42 | "\u001e\u0003\u001f\u0003\u001f\u0003 \u0003 \u0003!\u0003!\u0003\"\u0003", 43 | "\"\u0003#\u0003#\u0003$\u0003$\u0003%\u0003%\u0003&\u0003&\u0003\'\u0003", 44 | "\'\u0003(\u0003(\u0003)\u0003)\u0003*\u0003*\u0003+\u0003+\u0003,\u0003", 45 | ",\u0003-\u0003-\u0003.\u0003.\u0003/\u0003/\u00030\u00030\u00031\u0003", 46 | "1\u00032\u00032\u00033\u00033\u00034\u00034\u00035\u00035\u00036\u0003", 47 | "6\u00037\u00037\u00038\u00038\u00039\u00039\u0003:\u0003:\u0003;\u0003", 48 | ";\u0003<\u0003<\u0003=\u0003=\u0003>\u0003>\u0003>\u0007>\u0192\n>\f", 49 | ">\u000e>\u0195\u000b>\u0003>\u0003>\u0003>\u0003>\u0003>\u0007>\u019c", 50 | "\n>\f>\u000e>\u019f\u000b>\u0003>\u0003>\u0005>\u01a3\n>\u0003?\u0003", 51 | "?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003", 52 | "?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003?\u0005?\u01b7\n?\u0003@\u0005", 53 | "@\u01ba\n@\u0003A\u0003A\u0003A\u0003A\u0003A\u0003A\u0003B\u0003B\u0003", 54 | "B\u0003B\u0003C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003", 55 | "C\u0003D\u0003D\u0003D\u0003D\u0003D\u0003D\u0003E\u0003E\u0003E\u0003", 56 | "E\u0003E\u0003E\u0003E\u0003F\u0003F\u0003F\u0003G\u0003G\u0003G\u0003", 57 | "G\u0003G\u0003G\u0003H\u0003H\u0003H\u0003I\u0003I\u0003I\u0003I\u0003", 58 | "I\u0003I\u0003I\u0003J\u0003J\u0003J\u0003J\u0003K\u0003K\u0003K\u0003", 59 | "K\u0003K\u0003K\u0003K\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003", 60 | "L\u0003M\u0003M\u0003M\u0003M\u0003M\u0003M\u0003M\u0003N\u0003N\u0003", 61 | "N\u0003N\u0003N\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003", 62 | "O\u0003O\u0003P\u0003P\u0003P\u0003P\u0003P\u0003P\u0003P\u0003Q\u0003", 63 | "Q\u0003Q\u0003Q\u0003Q\u0003Q\u0003R\u0003R\u0003R\u0003S\u0003S\u0003", 64 | "S\u0003S\u0003S\u0003T\u0003T\u0003T\u0003T\u0003T\u0003T\u0003U\u0003", 65 | "U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003", 66 | "V\u0003V\u0003V\u0003V\u0003V\u0003W\u0003W\u0003W\u0003W\u0003W\u0003", 67 | "W\u0003W\u0003W\u0003W\u0003W\u0003X\u0003X\u0003X\u0003X\u0003Y\u0003", 68 | "Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Z\u0003Z\u0003Z\u0003[\u0003[\u0003", 69 | "[\u0003[\u0003\\\u0003\\\u0003\\\u0003\\\u0003]\u0003]\u0003]\u0003", 70 | "]\u0003^\u0003^\u0003^\u0003_\u0003_\u0003_\u0003_\u0003_\u0003_\u0003", 71 | "_\u0003`\u0003`\u0003`\u0003`\u0003`\u0003a\u0003a\u0003a\u0003a\u0003", 72 | "a\u0003a\u0003a\u0003a\u0003a\u0003b\u0003b\u0003b\u0003c\u0003c\u0003", 73 | "c\u0003c\u0003c\u0003d\u0003d\u0003d\u0003d\u0003d\u0003e\u0003e\u0003", 74 | "e\u0003e\u0003e\u0003e\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003", 75 | "g\u0003g\u0003g\u0003g\u0003g\u0003g\u0003g\u0003h\u0003h\u0003h\u0003", 76 | "h\u0003h\u0003h\u0003h\u0003h\u0003i\u0003i\u0003i\u0003i\u0003j\u0003", 77 | "j\u0003j\u0003j\u0003j\u0003k\u0003k\u0003k\u0003k\u0003k\u0003k\u0003", 78 | "k\u0003l\u0003l\u0003l\u0003m\u0003m\u0007m\u02b9\nm\fm\u000em\u02bc", 79 | "\u000bm\u0003n\u0003n\u0003n\u0005n\u02c1\nn\u0003o\u0003o\u0005o\u02c5", 80 | "\no\u0003p\u0003p\u0007p\u02c9\np\fp\u000ep\u02cc\u000bp\u0003p\u0006", 81 | "p\u02cf\np\rp\u000ep\u02d0\u0003q\u0003q\u0003q\u0003q\u0003q\u0003", 82 | "q\u0003q\u0003q\u0003q\u0003q\u0003q\u0003q\u0005q\u02df\nq\u0003r\u0003", 83 | "r\u0003r\u0003r\u0003r\u0003r\u0007r\u02e7\nr\fr\u000er\u02ea\u000b", 84 | "r\u0003r\u0003r\u0003r\u0003r\u0003r\u0003r\u0003r\u0005r\u02f3\nr\u0003", 85 | "r\u0003r\u0005r\u02f7\nr\u0005r\u02f9\nr\u0003s\u0003s\u0003t\u0003", 86 | "t\u0003u\u0003u\u0003v\u0003v\u0003w\u0003w\u0003x\u0003x\u0003y\u0003", 87 | "y\u0003z\u0003z\u0003{\u0003{\u0003|\u0003|\u0003}\u0003}\u0003~\u0003", 88 | "~\u0003\u007f\u0003\u007f\u0003\u0080\u0003\u0080\u0003\u0081\u0003", 89 | "\u0081\u0003\u0082\u0003\u0082\u0003\u0083\u0003\u0083\u0003\u0084\u0003", 90 | "\u0084\u0003\u0085\u0003\u0085\u0003\u0086\u0003\u0086\u0003\u0087\u0003", 91 | "\u0087\u0002\u0002\u0088\u0003\u0003\u0005\u0004\u0007\u0005\t\u0006", 92 | "\u000b\u0007\r\b\u000f\t\u0011\n\u0013\u000b\u0015\f\u0017\r\u0019\u000e", 93 | "\u001b\u000f\u001d\u0010\u001f\u0011!\u0012#\u0013%\u0014\'\u0015)\u0016", 94 | "+\u0017-\u0018/\u00191\u001a3\u001b5\u001c7\u001d9\u001e;\u001f= ?!", 95 | "A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]0_1a2c3e4g5i6k7m8o9q:s;u{?}@\u007f", 96 | "A\u0081B\u0083C\u0085D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091J\u0093", 97 | "K\u0095L\u0097M\u0099N\u009bO\u009dP\u009fQ\u00a1R\u00a3S\u00a5T\u00a7", 98 | "U\u00a9V\u00abW\u00adX\u00afY\u00b1Z\u00b3[\u00b5\\\u00b7]\u00b9^\u00bb", 99 | "_\u00bd`\u00bfa\u00c1b\u00c3c\u00c5d\u00c7e\u00c9f\u00cbg\u00cdh\u00cf", 100 | "i\u00d1j\u00d3k\u00d5l\u00d7m\u00d9n\u00dbo\u00ddp\u00dfq\u00e1r\u00e3", 101 | "s\u00e5\u0002\u00e7\u0002\u00e9\u0002\u00eb\u0002\u00ed\u0002\u00ef", 102 | "\u0002\u00f1\u0002\u00f3\u0002\u00f5\u0002\u00f7\u0002\u00f9\u0002\u00fb", 103 | "\u0002\u00fd\u0002\u00ff\u0002\u0101\u0002\u0103\u0002\u0105\u0002\u0107", 104 | "\u0002\u0109\u0002\u010b\u0002\u010d\u0002\u0003\u00021\u0011\u0002", 105 | "$$\'\'))DDHHPPTTVV^^aaddhhppttvv\u0004\u0002WWww\u0005\u00022;CHch\u0004", 106 | "\u0002PPpp\u0004\u0002KKkk\u0004\u0002QQqq\u0004\u0002CCcc\u0004\u0002", 107 | "NNnn\u0004\u0002RRrr\u0004\u0002VVvv\u0004\u0002OOoo\u0004\u0002EEe", 108 | "e\u0004\u0002JJjj\u0004\u0002YYyy\u0004\u0002FFff\u0004\u0002UUuu\u0004", 109 | "\u0002GGgg\u0004\u0002TTtt\u0004\u0002IIii\u0004\u0002XXxx\u0004\u0002", 110 | "DDdd\u0004\u0002[[{{\u0004\u0002MMmm\u0004\u0002ZZzz\u0004\u0002HHh", 111 | "h\b\u0002aa\u2041\u2042\u2056\u2056\ufe35\ufe36\ufe4f\ufe51\uff41\uff41", 112 | "\n\u0002\u00a2\u00a2\u1682\u1682\u1810\u1810\u2002\u200c\u202a\u202b", 113 | "\u2031\u2031\u2061\u2061\u3002\u3002\u0003\u0002$$\u0003\u0002))\u0003", 114 | "\u0002\u000e\u000e\u0004\u0002\u0002ac\u0001\u0003\u0002 \u01af\u0002", 115 | "2;C\\aac|\u00ac\u00ac\u00b7\u00b7\u00b9\u00b9\u00bc\u00bc\u00c2\u00d8", 116 | "\u00da\u00f8\u00fa\u02c3\u02c8\u02d3\u02e2\u02e6\u02ee\u02ee\u02f0\u02f0", 117 | "\u0302\u0376\u0378\u0379\u037c\u037f\u0388\u038c\u038e\u038e\u0390\u03a3", 118 | "\u03a5\u03f7\u03f9\u0483\u0485\u0489\u048c\u0529\u0533\u0558\u055b\u055b", 119 | "\u0563\u0589\u0593\u05bf\u05c1\u05c1\u05c3\u05c4\u05c6\u05c7\u05c9\u05c9", 120 | "\u05d2\u05ec\u05f2\u05f4\u0612\u061c\u0622\u066b\u0670\u06d5\u06d7\u06de", 121 | "\u06e1\u06ea\u06ec\u06fe\u0701\u0701\u0712\u074c\u074f\u07b3\u07c2\u07f7", 122 | "\u07fc\u07fc\u0802\u082f\u0842\u085d\u08a2\u08a2\u08a4\u08ae\u08e6\u0900", 123 | "\u0902\u0965\u0968\u0971\u0973\u0979\u097b\u0981\u0983\u0985\u0987\u098e", 124 | "\u0991\u0992\u0995\u09aa\u09ac\u09b2\u09b4\u09b4\u09b8\u09bb\u09be\u09c6", 125 | "\u09c9\u09ca\u09cd\u09d0\u09d9\u09d9\u09de\u09df\u09e1\u09e5\u09e8\u09f3", 126 | "\u0a03\u0a05\u0a07\u0a0c\u0a11\u0a12\u0a15\u0a2a\u0a2c\u0a32\u0a34\u0a35", 127 | "\u0a37\u0a38\u0a3a\u0a3b\u0a3e\u0a3e\u0a40\u0a44\u0a49\u0a4a\u0a4d\u0a4f", 128 | "\u0a53\u0a53\u0a5b\u0a5e\u0a60\u0a60\u0a68\u0a77\u0a83\u0a85\u0a87\u0a8f", 129 | "\u0a91\u0a93\u0a95\u0aaa\u0aac\u0ab2\u0ab4\u0ab5\u0ab7\u0abb\u0abe\u0ac7", 130 | "\u0ac9\u0acb\u0acd\u0acf\u0ad2\u0ad2\u0ae2\u0ae5\u0ae8\u0af1\u0b03\u0b05", 131 | "\u0b07\u0b0e\u0b11\u0b12\u0b15\u0b2a\u0b2c\u0b32\u0b34\u0b35\u0b37\u0b3b", 132 | "\u0b3e\u0b46\u0b49\u0b4a\u0b4d\u0b4f\u0b58\u0b59\u0b5e\u0b5f\u0b61\u0b65", 133 | "\u0b68\u0b71\u0b73\u0b73\u0b84\u0b85\u0b87\u0b8c\u0b90\u0b92\u0b94\u0b97", 134 | "\u0b9b\u0b9c\u0b9e\u0b9e\u0ba0\u0ba1\u0ba5\u0ba6\u0baa\u0bac\u0bb0\u0bbb", 135 | "\u0bc0\u0bc4\u0bc8\u0bca\u0bcc\u0bcf\u0bd2\u0bd2\u0bd9\u0bd9\u0be8\u0bf1", 136 | "\u0c03\u0c05\u0c07\u0c0e\u0c10\u0c12\u0c14\u0c2a\u0c2c\u0c35\u0c37\u0c3b", 137 | "\u0c3f\u0c46\u0c48\u0c4a\u0c4c\u0c4f\u0c57\u0c58\u0c5a\u0c5b\u0c62\u0c65", 138 | "\u0c68\u0c71\u0c84\u0c85\u0c87\u0c8e\u0c90\u0c92\u0c94\u0caa\u0cac\u0cb5", 139 | "\u0cb7\u0cbb\u0cbe\u0cc6\u0cc8\u0cca\u0ccc\u0ccf\u0cd7\u0cd8\u0ce0\u0ce0", 140 | "\u0ce2\u0ce5\u0ce8\u0cf1\u0cf3\u0cf4\u0d04\u0d05\u0d07\u0d0e\u0d10\u0d12", 141 | "\u0d14\u0d3c\u0d3f\u0d46\u0d48\u0d4a\u0d4c\u0d50\u0d59\u0d59\u0d62\u0d65", 142 | "\u0d68\u0d71\u0d7c\u0d81\u0d84\u0d85\u0d87\u0d98\u0d9c\u0db3\u0db5\u0dbd", 143 | "\u0dbf\u0dbf\u0dc2\u0dc8\u0dcc\u0dcc\u0dd1\u0dd6\u0dd8\u0dd8\u0dda\u0de1", 144 | "\u0df4\u0df5\u0e03\u0e3c\u0e42\u0e50\u0e52\u0e5b\u0e83\u0e84\u0e86\u0e86", 145 | "\u0e89\u0e8a\u0e8c\u0e8c\u0e8f\u0e8f\u0e96\u0e99\u0e9b\u0ea1\u0ea3\u0ea5", 146 | "\u0ea7\u0ea7\u0ea9\u0ea9\u0eac\u0ead\u0eaf\u0ebb\u0ebd\u0ebf\u0ec2\u0ec6", 147 | "\u0ec8\u0ec8\u0eca\u0ecf\u0ed2\u0edb\u0ede\u0ee1\u0f02\u0f02\u0f1a\u0f1b", 148 | "\u0f22\u0f2b\u0f37\u0f37\u0f39\u0f39\u0f3b\u0f3b\u0f40\u0f49\u0f4b\u0f6e", 149 | "\u0f73\u0f86\u0f88\u0f99\u0f9b\u0fbe\u0fc8\u0fc8\u1002\u104b\u1052\u109f", 150 | "\u10a2\u10c7\u10c9\u10c9\u10cf\u10cf\u10d2\u10fc\u10fe\u124a\u124c\u124f", 151 | "\u1252\u1258\u125a\u125a\u125c\u125f\u1262\u128a\u128c\u128f\u1292\u12b2", 152 | "\u12b4\u12b7\u12ba\u12c0\u12c2\u12c2\u12c4\u12c7\u12ca\u12d8\u12da\u1312", 153 | "\u1314\u1317\u131a\u135c\u135f\u1361\u136b\u1373\u1382\u1391\u13a2\u13f6", 154 | "\u1403\u166e\u1671\u1681\u1683\u169c\u16a2\u16ec\u16f0\u16f2\u1702\u170e", 155 | "\u1710\u1716\u1722\u1736\u1742\u1755\u1762\u176e\u1770\u1772\u1774\u1775", 156 | "\u1782\u17d5\u17d9\u17d9\u17de\u17df\u17e2\u17eb\u180d\u180f\u1812\u181b", 157 | "\u1822\u1879\u1882\u18ac\u18b2\u18f7\u1902\u191e\u1922\u192d\u1932\u193d", 158 | "\u1948\u196f\u1972\u1976\u1982\u19ad\u19b2\u19cb\u19d2\u19dc\u1a02\u1a1d", 159 | "\u1a22\u1a60\u1a62\u1a7e\u1a81\u1a8b\u1a92\u1a9b\u1aa9\u1aa9\u1b02\u1b4d", 160 | "\u1b52\u1b5b\u1b6d\u1b75\u1b82\u1bf5\u1c02\u1c39\u1c42\u1c4b\u1c4f\u1c7f", 161 | "\u1cd2\u1cd4\u1cd6\u1cf8\u1d02\u1de8\u1dfe\u1f17\u1f1a\u1f1f\u1f22\u1f47", 162 | "\u1f4a\u1f4f\u1f52\u1f59\u1f5b\u1f5b\u1f5d\u1f5d\u1f5f\u1f5f\u1f61\u1f7f", 163 | "\u1f82\u1fb6\u1fb8\u1fbe\u1fc0\u1fc0\u1fc4\u1fc6\u1fc8\u1fce\u1fd2\u1fd5", 164 | "\u1fd8\u1fdd\u1fe2\u1fee\u1ff4\u1ff6\u1ff8\u1ffe\u2041\u2042\u2056\u2056", 165 | "\u2073\u2073\u2081\u2081\u2092\u209e\u20d2\u20de\u20e3\u20e3\u20e7\u20f2", 166 | "\u2104\u2104\u2109\u2109\u210c\u2115\u2117\u2117\u211a\u211f\u2126\u2126", 167 | "\u2128\u2128\u212a\u212a\u212c\u213b\u213e\u2141\u2147\u214b\u2150\u2150", 168 | "\u2162\u218a\u2c02\u2c30\u2c32\u2c60\u2c62\u2ce6\u2ced\u2cf5\u2d02\u2d27", 169 | "\u2d29\u2d29\u2d2f\u2d2f\u2d32\u2d69\u2d71\u2d71\u2d81\u2d98\u2da2\u2da8", 170 | "\u2daa\u2db0\u2db2\u2db8\u2dba\u2dc0\u2dc2\u2dc8\u2dca\u2dd0\u2dd2\u2dd8", 171 | "\u2dda\u2de0\u2de2\u2e01\u3007\u3009\u3023\u3031\u3033\u3037\u303a\u303e", 172 | "\u3043\u3098\u309b\u30a1\u30a3\u30fc\u30fe\u3101\u3107\u312f\u3133\u3190", 173 | "\u31a2\u31bc\u31f2\u3201\u3402\u4db7\u4e02\u9fce\ua002\ua48e\ua4d2\ua4ff", 174 | "\ua502\ua60e\ua612\ua62d\ua642\ua671\ua676\ua67f\ua681\ua699\ua6a1\ua6f3", 175 | "\ua719\ua721\ua724\ua78a\ua78d\ua790\ua792\ua795\ua7a2\ua7ac\ua7fa\ua829", 176 | "\ua842\ua875\ua882\ua8c6\ua8d2\ua8db\ua8e2\ua8f9\ua8fd\ua8fd\ua902\ua92f", 177 | "\ua932\ua955\ua962\ua97e\ua982\ua9c2\ua9d1\ua9db\uaa02\uaa38\uaa42\uaa4f", 178 | "\uaa52\uaa5b\uaa62\uaa78\uaa7c\uaa7d\uaa82\uaac4\uaadd\uaadf\uaae2\uaaf1", 179 | "\uaaf4\uaaf8\uab03\uab08\uab0b\uab10\uab13\uab18\uab22\uab28\uab2a\uab30", 180 | "\uabc2\uabec\uabee\uabef\uabf2\uabfb\uac02\ud7a5\ud7b2\ud7c8\ud7cd\ud7fd", 181 | "\uf902\ufa6f\ufa72\ufadb\ufb02\ufb08\ufb15\ufb19\ufb1f\ufb2a\ufb2c\ufb38", 182 | "\ufb3a\ufb3e\ufb40\ufb40\ufb42\ufb43\ufb45\ufb46\ufb48\ufbb3\ufbd5\ufd3f", 183 | "\ufd52\ufd91\ufd94\ufdc9\ufdf2\ufdfd\ufe02\ufe11\ufe22\ufe28\ufe35\ufe36", 184 | "\ufe4f\ufe51\ufe72\ufe76\ufe78\ufefe\uff12\uff1b\uff23\uff3c\uff41\uff41", 185 | "\uff43\uff5c\uff68\uffc0\uffc4\uffc9\uffcc\uffd1\uffd4\uffd9\uffdc\uffde", 186 | "\u0004\u0002\u000202\u0001\u0004\u0002\u0002+-\u0001\u0005\u0002$$)", 187 | ")^^\u0005\u0002\u0002\u000b\r\u000e\u0010\u0001\u0003\u0002\u001f\u001f", 188 | "\u0003\u0002\u001e\u001e\u0003\u0002\u000f\u000f\u0013\u0002&&\u00a4", 189 | "\u00a7\u0591\u0591\u060d\u060d\u09f4\u09f5\u09fd\u09fd\u0af3\u0af3\u0bfb", 190 | "\u0bfb\u0e41\u0e41\u17dd\u17dd\u20a2\u20bc\ua83a\ua83a\ufdfe\ufdfe\ufe6b", 191 | "\ufe6b\uff06\uff06\uffe2\uffe3\uffe7\uffe8\u0003\u0002\"\"\u0003\u0002", 192 | "\u000b\u000b\u0003\u0002\f\f\u0003\u0002\r\r\u0003\u0002!!\u0174\u0002", 193 | "C\\c|\u00ac\u00ac\u00b7\u00b7\u00bc\u00bc\u00c2\u00d8\u00da\u00f8\u00fa", 194 | "\u02c3\u02c8\u02d3\u02e2\u02e6\u02ee\u02ee\u02f0\u02f0\u0372\u0376\u0378", 195 | "\u0379\u037c\u037f\u0388\u0388\u038a\u038c\u038e\u038e\u0390\u03a3\u03a5", 196 | "\u03f7\u03f9\u0483\u048c\u0529\u0533\u0558\u055b\u055b\u0563\u0589\u05d2", 197 | "\u05ec\u05f2\u05f4\u0622\u064c\u0670\u0671\u0673\u06d5\u06d7\u06d7\u06e7", 198 | "\u06e8\u06f0\u06f1\u06fc\u06fe\u0701\u0701\u0712\u0712\u0714\u0731\u074f", 199 | "\u07a7\u07b3\u07b3\u07cc\u07ec\u07f6\u07f7\u07fc\u07fc\u0802\u0817\u081c", 200 | "\u081c\u0826\u0826\u082a\u082a\u0842\u085a\u08a2\u08a2\u08a4\u08ae\u0906", 201 | "\u093b\u093f\u093f\u0952\u0952\u095a\u0963\u0973\u0979\u097b\u0981\u0987", 202 | "\u098e\u0991\u0992\u0995\u09aa\u09ac\u09b2\u09b4\u09b4\u09b8\u09bb\u09bf", 203 | "\u09bf\u09d0\u09d0\u09de\u09df\u09e1\u09e3\u09f2\u09f3\u0a07\u0a0c\u0a11", 204 | "\u0a12\u0a15\u0a2a\u0a2c\u0a32\u0a34\u0a35\u0a37\u0a38\u0a3a\u0a3b\u0a5b", 205 | "\u0a5e\u0a60\u0a60\u0a74\u0a76\u0a87\u0a8f\u0a91\u0a93\u0a95\u0aaa\u0aac", 206 | "\u0ab2\u0ab4\u0ab5\u0ab7\u0abb\u0abf\u0abf\u0ad2\u0ad2\u0ae2\u0ae3\u0b07", 207 | "\u0b0e\u0b11\u0b12\u0b15\u0b2a\u0b2c\u0b32\u0b34\u0b35\u0b37\u0b3b\u0b3f", 208 | "\u0b3f\u0b5e\u0b5f\u0b61\u0b63\u0b73\u0b73\u0b85\u0b85\u0b87\u0b8c\u0b90", 209 | "\u0b92\u0b94\u0b97\u0b9b\u0b9c\u0b9e\u0b9e\u0ba0\u0ba1\u0ba5\u0ba6\u0baa", 210 | "\u0bac\u0bb0\u0bbb\u0bd2\u0bd2\u0c07\u0c0e\u0c10\u0c12\u0c14\u0c2a\u0c2c", 211 | "\u0c35\u0c37\u0c3b\u0c3f\u0c3f\u0c5a\u0c5b\u0c62\u0c63\u0c87\u0c8e\u0c90", 212 | "\u0c92\u0c94\u0caa\u0cac\u0cb5\u0cb7\u0cbb\u0cbf\u0cbf\u0ce0\u0ce0\u0ce2", 213 | "\u0ce3\u0cf3\u0cf4\u0d07\u0d0e\u0d10\u0d12\u0d14\u0d3c\u0d3f\u0d3f\u0d50", 214 | "\u0d50\u0d62\u0d63\u0d7c\u0d81\u0d87\u0d98\u0d9c\u0db3\u0db5\u0dbd\u0dbf", 215 | "\u0dbf\u0dc2\u0dc8\u0e03\u0e32\u0e34\u0e35\u0e42\u0e48\u0e83\u0e84\u0e86", 216 | "\u0e86\u0e89\u0e8a\u0e8c\u0e8c\u0e8f\u0e8f\u0e96\u0e99\u0e9b\u0ea1\u0ea3", 217 | "\u0ea5\u0ea7\u0ea7\u0ea9\u0ea9\u0eac\u0ead\u0eaf\u0eb2\u0eb4\u0eb5\u0ebf", 218 | "\u0ebf\u0ec2\u0ec6\u0ec8\u0ec8\u0ede\u0ee1\u0f02\u0f02\u0f42\u0f49\u0f4b", 219 | "\u0f6e\u0f8a\u0f8e\u1002\u102c\u1041\u1041\u1052\u1057\u105c\u105f\u1063", 220 | "\u1063\u1067\u1068\u1070\u1072\u1077\u1083\u1090\u1090\u10a2\u10c7\u10c9", 221 | "\u10c9\u10cf\u10cf\u10d2\u10fc\u10fe\u124a\u124c\u124f\u1252\u1258\u125a", 222 | "\u125a\u125c\u125f\u1262\u128a\u128c\u128f\u1292\u12b2\u12b4\u12b7\u12ba", 223 | "\u12c0\u12c2\u12c2\u12c4\u12c7\u12ca\u12d8\u12da\u1312\u1314\u1317\u131a", 224 | "\u135c\u1382\u1391\u13a2\u13f6\u1403\u166e\u1671\u1681\u1683\u169c\u16a2", 225 | "\u16ec\u16f0\u16f2\u1702\u170e\u1710\u1713\u1722\u1733\u1742\u1753\u1762", 226 | "\u176e\u1770\u1772\u1782\u17b5\u17d9\u17d9\u17de\u17de\u1822\u1879\u1882", 227 | "\u18aa\u18ac\u18ac\u18b2\u18f7\u1902\u191e\u1952\u196f\u1972\u1976\u1982", 228 | "\u19ad\u19c3\u19c9\u1a02\u1a18\u1a22\u1a56\u1aa9\u1aa9\u1b07\u1b35\u1b47", 229 | "\u1b4d\u1b85\u1ba2\u1bb0\u1bb1\u1bbc\u1be7\u1c02\u1c25\u1c4f\u1c51\u1c5c", 230 | "\u1c7f\u1ceb\u1cee\u1cf0\u1cf3\u1cf7\u1cf8\u1d02\u1dc1\u1e02\u1f17\u1f1a", 231 | "\u1f1f\u1f22\u1f47\u1f4a\u1f4f\u1f52\u1f59\u1f5b\u1f5b\u1f5d\u1f5d\u1f5f", 232 | "\u1f5f\u1f61\u1f7f\u1f82\u1fb6\u1fb8\u1fbe\u1fc0\u1fc0\u1fc4\u1fc6\u1fc8", 233 | "\u1fce\u1fd2\u1fd5\u1fd8\u1fdd\u1fe2\u1fee\u1ff4\u1ff6\u1ff8\u1ffe\u2073", 234 | "\u2073\u2081\u2081\u2092\u209e\u2104\u2104\u2109\u2109\u210c\u2115\u2117", 235 | "\u2117\u211a\u211f\u2126\u2126\u2128\u2128\u212a\u212a\u212c\u213b\u213e", 236 | "\u2141\u2147\u214b\u2150\u2150\u2162\u218a\u2c02\u2c30\u2c32\u2c60\u2c62", 237 | "\u2ce6\u2ced\u2cf0\u2cf4\u2cf5\u2d02\u2d27\u2d29\u2d29\u2d2f\u2d2f\u2d32", 238 | "\u2d69\u2d71\u2d71\u2d82\u2d98\u2da2\u2da8\u2daa\u2db0\u2db2\u2db8\u2dba", 239 | "\u2dc0\u2dc2\u2dc8\u2dca\u2dd0\u2dd2\u2dd8\u2dda\u2de0\u3007\u3009\u3023", 240 | "\u302b\u3033\u3037\u303a\u303e\u3043\u3098\u309d\u30a1\u30a3\u30fc\u30fe", 241 | "\u3101\u3107\u312f\u3133\u3190\u31a2\u31bc\u31f2\u3201\u3402\u4db7\u4e02", 242 | "\u9fce\ua002\ua48e\ua4d2\ua4ff\ua502\ua60e\ua612\ua621\ua62c\ua62d\ua642", 243 | "\ua670\ua681\ua699\ua6a2\ua6f1\ua719\ua721\ua724\ua78a\ua78d\ua790\ua792", 244 | "\ua795\ua7a2\ua7ac\ua7fa\ua803\ua805\ua807\ua809\ua80c\ua80e\ua824\ua842", 245 | "\ua875\ua884\ua8b5\ua8f4\ua8f9\ua8fd\ua8fd\ua90c\ua927\ua932\ua948\ua962", 246 | "\ua97e\ua986\ua9b4\ua9d1\ua9d1\uaa02\uaa2a\uaa42\uaa44\uaa46\uaa4d\uaa62", 247 | "\uaa78\uaa7c\uaa7c\uaa82\uaab1\uaab3\uaab3\uaab7\uaab8\uaabb\uaabf\uaac2", 248 | "\uaac2\uaac4\uaac4\uaadd\uaadf\uaae2\uaaec\uaaf4\uaaf6\uab03\uab08\uab0b", 249 | "\uab10\uab13\uab18\uab22\uab28\uab2a\uab30\uabc2\uabe4\uac02\ud7a5\ud7b2", 250 | "\ud7c8\ud7cd\ud7fd\uf902\ufa6f\ufa72\ufadb\ufb02\ufb08\ufb15\ufb19\ufb1f", 251 | "\ufb1f\ufb21\ufb2a\ufb2c\ufb38\ufb3a\ufb3e\ufb40\ufb40\ufb42\ufb43\ufb45", 252 | "\ufb46\ufb48\ufbb3\ufbd5\ufd3f\ufd52\ufd91\ufd94\ufdc9\ufdf2\ufdfd\ufe72", 253 | "\ufe76\ufe78\ufefe\uff23\uff3c\uff43\uff5c\uff68\uffc0\uffc4\uffc9\uffcc", 254 | "\uffd1\uffd4\uffd9\uffdc\uffde\u032b\u0002\u0003\u0003\u0002\u0002\u0002", 255 | "\u0002\u0005\u0003\u0002\u0002\u0002\u0002\u0007\u0003\u0002\u0002\u0002", 256 | "\u0002\t\u0003\u0002\u0002\u0002\u0002\u000b\u0003\u0002\u0002\u0002", 257 | "\u0002\r\u0003\u0002\u0002\u0002\u0002\u000f\u0003\u0002\u0002\u0002", 258 | "\u0002\u0011\u0003\u0002\u0002\u0002\u0002\u0013\u0003\u0002\u0002\u0002", 259 | "\u0002\u0015\u0003\u0002\u0002\u0002\u0002\u0017\u0003\u0002\u0002\u0002", 260 | "\u0002\u0019\u0003\u0002\u0002\u0002\u0002\u001b\u0003\u0002\u0002\u0002", 261 | "\u0002\u001d\u0003\u0002\u0002\u0002\u0002\u001f\u0003\u0002\u0002\u0002", 262 | "\u0002!\u0003\u0002\u0002\u0002\u0002#\u0003\u0002\u0002\u0002\u0002", 263 | "%\u0003\u0002\u0002\u0002\u0002\'\u0003\u0002\u0002\u0002\u0002)\u0003", 264 | "\u0002\u0002\u0002\u0002+\u0003\u0002\u0002\u0002\u0002-\u0003\u0002", 265 | "\u0002\u0002\u0002/\u0003\u0002\u0002\u0002\u00021\u0003\u0002\u0002", 266 | "\u0002\u00023\u0003\u0002\u0002\u0002\u00025\u0003\u0002\u0002\u0002", 267 | "\u00027\u0003\u0002\u0002\u0002\u00029\u0003\u0002\u0002\u0002\u0002", 268 | ";\u0003\u0002\u0002\u0002\u0002=\u0003\u0002\u0002\u0002\u0002?\u0003", 269 | "\u0002\u0002\u0002\u0002A\u0003\u0002\u0002\u0002\u0002C\u0003\u0002", 270 | "\u0002\u0002\u0002E\u0003\u0002\u0002\u0002\u0002G\u0003\u0002\u0002", 271 | "\u0002\u0002I\u0003\u0002\u0002\u0002\u0002K\u0003\u0002\u0002\u0002", 272 | "\u0002M\u0003\u0002\u0002\u0002\u0002O\u0003\u0002\u0002\u0002\u0002", 273 | "Q\u0003\u0002\u0002\u0002\u0002S\u0003\u0002\u0002\u0002\u0002U\u0003", 274 | "\u0002\u0002\u0002\u0002W\u0003\u0002\u0002\u0002\u0002Y\u0003\u0002", 275 | "\u0002\u0002\u0002[\u0003\u0002\u0002\u0002\u0002]\u0003\u0002\u0002", 276 | "\u0002\u0002_\u0003\u0002\u0002\u0002\u0002a\u0003\u0002\u0002\u0002", 277 | "\u0002c\u0003\u0002\u0002\u0002\u0002e\u0003\u0002\u0002\u0002\u0002", 278 | "g\u0003\u0002\u0002\u0002\u0002i\u0003\u0002\u0002\u0002\u0002k\u0003", 279 | "\u0002\u0002\u0002\u0002m\u0003\u0002\u0002\u0002\u0002o\u0003\u0002", 280 | "\u0002\u0002\u0002q\u0003\u0002\u0002\u0002\u0002s\u0003\u0002\u0002", 281 | "\u0002\u0002u\u0003\u0002\u0002\u0002\u0002w\u0003\u0002\u0002\u0002", 282 | "\u0002y\u0003\u0002\u0002\u0002\u0002{\u0003\u0002\u0002\u0002\u0002", 283 | "}\u0003\u0002\u0002\u0002\u0002\u007f\u0003\u0002\u0002\u0002\u0002", 284 | "\u0081\u0003\u0002\u0002\u0002\u0002\u0083\u0003\u0002\u0002\u0002\u0002", 285 | "\u0085\u0003\u0002\u0002\u0002\u0002\u0087\u0003\u0002\u0002\u0002\u0002", 286 | "\u0089\u0003\u0002\u0002\u0002\u0002\u008b\u0003\u0002\u0002\u0002\u0002", 287 | "\u008d\u0003\u0002\u0002\u0002\u0002\u008f\u0003\u0002\u0002\u0002\u0002", 288 | "\u0091\u0003\u0002\u0002\u0002\u0002\u0093\u0003\u0002\u0002\u0002\u0002", 289 | "\u0095\u0003\u0002\u0002\u0002\u0002\u0097\u0003\u0002\u0002\u0002\u0002", 290 | "\u0099\u0003\u0002\u0002\u0002\u0002\u009b\u0003\u0002\u0002\u0002\u0002", 291 | "\u009d\u0003\u0002\u0002\u0002\u0002\u009f\u0003\u0002\u0002\u0002\u0002", 292 | "\u00a1\u0003\u0002\u0002\u0002\u0002\u00a3\u0003\u0002\u0002\u0002\u0002", 293 | "\u00a5\u0003\u0002\u0002\u0002\u0002\u00a7\u0003\u0002\u0002\u0002\u0002", 294 | "\u00a9\u0003\u0002\u0002\u0002\u0002\u00ab\u0003\u0002\u0002\u0002\u0002", 295 | "\u00ad\u0003\u0002\u0002\u0002\u0002\u00af\u0003\u0002\u0002\u0002\u0002", 296 | "\u00b1\u0003\u0002\u0002\u0002\u0002\u00b3\u0003\u0002\u0002\u0002\u0002", 297 | "\u00b5\u0003\u0002\u0002\u0002\u0002\u00b7\u0003\u0002\u0002\u0002\u0002", 298 | "\u00b9\u0003\u0002\u0002\u0002\u0002\u00bb\u0003\u0002\u0002\u0002\u0002", 299 | "\u00bd\u0003\u0002\u0002\u0002\u0002\u00bf\u0003\u0002\u0002\u0002\u0002", 300 | "\u00c1\u0003\u0002\u0002\u0002\u0002\u00c3\u0003\u0002\u0002\u0002\u0002", 301 | "\u00c5\u0003\u0002\u0002\u0002\u0002\u00c7\u0003\u0002\u0002\u0002\u0002", 302 | "\u00c9\u0003\u0002\u0002\u0002\u0002\u00cb\u0003\u0002\u0002\u0002\u0002", 303 | "\u00cd\u0003\u0002\u0002\u0002\u0002\u00cf\u0003\u0002\u0002\u0002\u0002", 304 | "\u00d1\u0003\u0002\u0002\u0002\u0002\u00d3\u0003\u0002\u0002\u0002\u0002", 305 | "\u00d5\u0003\u0002\u0002\u0002\u0002\u00d7\u0003\u0002\u0002\u0002\u0002", 306 | "\u00d9\u0003\u0002\u0002\u0002\u0002\u00db\u0003\u0002\u0002\u0002\u0002", 307 | "\u00dd\u0003\u0002\u0002\u0002\u0002\u00df\u0003\u0002\u0002\u0002\u0002", 308 | "\u00e1\u0003\u0002\u0002\u0002\u0002\u00e3\u0003\u0002\u0002\u0002\u0003", 309 | "\u010f\u0003\u0002\u0002\u0002\u0005\u0111\u0003\u0002\u0002\u0002\u0007", 310 | "\u0113\u0003\u0002\u0002\u0002\t\u0115\u0003\u0002\u0002\u0002\u000b", 311 | "\u0118\u0003\u0002\u0002\u0002\r\u011a\u0003\u0002\u0002\u0002\u000f", 312 | "\u011c\u0003\u0002\u0002\u0002\u0011\u011e\u0003\u0002\u0002\u0002\u0013", 313 | "\u0120\u0003\u0002\u0002\u0002\u0015\u0122\u0003\u0002\u0002\u0002\u0017", 314 | "\u0124\u0003\u0002\u0002\u0002\u0019\u0126\u0003\u0002\u0002\u0002\u001b", 315 | "\u0128\u0003\u0002\u0002\u0002\u001d\u012b\u0003\u0002\u0002\u0002\u001f", 316 | "\u012d\u0003\u0002\u0002\u0002!\u012f\u0003\u0002\u0002\u0002#\u0131", 317 | "\u0003\u0002\u0002\u0002%\u0133\u0003\u0002\u0002\u0002\'\u0135\u0003", 318 | "\u0002\u0002\u0002)\u0138\u0003\u0002\u0002\u0002+\u013b\u0003\u0002", 319 | "\u0002\u0002-\u013e\u0003\u0002\u0002\u0002/\u0140\u0003\u0002\u0002", 320 | "\u00021\u0142\u0003\u0002\u0002\u00023\u0145\u0003\u0002\u0002\u0002", 321 | "5\u0148\u0003\u0002\u0002\u00027\u014a\u0003\u0002\u0002\u00029\u014c", 322 | "\u0003\u0002\u0002\u0002;\u014e\u0003\u0002\u0002\u0002=\u0150\u0003", 323 | "\u0002\u0002\u0002?\u0152\u0003\u0002\u0002\u0002A\u0154\u0003\u0002", 324 | "\u0002\u0002C\u0156\u0003\u0002\u0002\u0002E\u0158\u0003\u0002\u0002", 325 | "\u0002G\u015a\u0003\u0002\u0002\u0002I\u015c\u0003\u0002\u0002\u0002", 326 | "K\u015e\u0003\u0002\u0002\u0002M\u0160\u0003\u0002\u0002\u0002O\u0162", 327 | "\u0003\u0002\u0002\u0002Q\u0164\u0003\u0002\u0002\u0002S\u0166\u0003", 328 | "\u0002\u0002\u0002U\u0168\u0003\u0002\u0002\u0002W\u016a\u0003\u0002", 329 | "\u0002\u0002Y\u016c\u0003\u0002\u0002\u0002[\u016e\u0003\u0002\u0002", 330 | "\u0002]\u0170\u0003\u0002\u0002\u0002_\u0172\u0003\u0002\u0002\u0002", 331 | "a\u0174\u0003\u0002\u0002\u0002c\u0176\u0003\u0002\u0002\u0002e\u0178", 332 | "\u0003\u0002\u0002\u0002g\u017a\u0003\u0002\u0002\u0002i\u017c\u0003", 333 | "\u0002\u0002\u0002k\u017e\u0003\u0002\u0002\u0002m\u0180\u0003\u0002", 334 | "\u0002\u0002o\u0182\u0003\u0002\u0002\u0002q\u0184\u0003\u0002\u0002", 335 | "\u0002s\u0186\u0003\u0002\u0002\u0002u\u0188\u0003\u0002\u0002\u0002", 336 | "w\u018a\u0003\u0002\u0002\u0002y\u018c\u0003\u0002\u0002\u0002{\u01a2", 337 | "\u0003\u0002\u0002\u0002}\u01a4\u0003\u0002\u0002\u0002\u007f\u01b9", 338 | "\u0003\u0002\u0002\u0002\u0081\u01bb\u0003\u0002\u0002\u0002\u0083\u01c1", 339 | "\u0003\u0002\u0002\u0002\u0085\u01c5\u0003\u0002\u0002\u0002\u0087\u01ce", 340 | "\u0003\u0002\u0002\u0002\u0089\u01d4\u0003\u0002\u0002\u0002\u008b\u01db", 341 | "\u0003\u0002\u0002\u0002\u008d\u01de\u0003\u0002\u0002\u0002\u008f\u01e4", 342 | "\u0003\u0002\u0002\u0002\u0091\u01e7\u0003\u0002\u0002\u0002\u0093\u01ee", 343 | "\u0003\u0002\u0002\u0002\u0095\u01f2\u0003\u0002\u0002\u0002\u0097\u01f9", 344 | "\u0003\u0002\u0002\u0002\u0099\u0200\u0003\u0002\u0002\u0002\u009b\u0207", 345 | "\u0003\u0002\u0002\u0002\u009d\u020c\u0003\u0002\u0002\u0002\u009f\u0215", 346 | "\u0003\u0002\u0002\u0002\u00a1\u021c\u0003\u0002\u0002\u0002\u00a3\u0222", 347 | "\u0003\u0002\u0002\u0002\u00a5\u0225\u0003\u0002\u0002\u0002\u00a7\u022a", 348 | "\u0003\u0002\u0002\u0002\u00a9\u0230\u0003\u0002\u0002\u0002\u00ab\u023b", 349 | "\u0003\u0002\u0002\u0002\u00ad\u0240\u0003\u0002\u0002\u0002\u00af\u024a", 350 | "\u0003\u0002\u0002\u0002\u00b1\u024e\u0003\u0002\u0002\u0002\u00b3\u0254", 351 | "\u0003\u0002\u0002\u0002\u00b5\u0257\u0003\u0002\u0002\u0002\u00b7\u025b", 352 | "\u0003\u0002\u0002\u0002\u00b9\u025f\u0003\u0002\u0002\u0002\u00bb\u0263", 353 | "\u0003\u0002\u0002\u0002\u00bd\u0266\u0003\u0002\u0002\u0002\u00bf\u026d", 354 | "\u0003\u0002\u0002\u0002\u00c1\u0272\u0003\u0002\u0002\u0002\u00c3\u027b", 355 | "\u0003\u0002\u0002\u0002\u00c5\u027e\u0003\u0002\u0002\u0002\u00c7\u0283", 356 | "\u0003\u0002\u0002\u0002\u00c9\u0288\u0003\u0002\u0002\u0002\u00cb\u028e", 357 | "\u0003\u0002\u0002\u0002\u00cd\u0294\u0003\u0002\u0002\u0002\u00cf\u029b", 358 | "\u0003\u0002\u0002\u0002\u00d1\u02a3\u0003\u0002\u0002\u0002\u00d3\u02a7", 359 | "\u0003\u0002\u0002\u0002\u00d5\u02ac\u0003\u0002\u0002\u0002\u00d7\u02b3", 360 | "\u0003\u0002\u0002\u0002\u00d9\u02b6\u0003\u0002\u0002\u0002\u00db\u02c0", 361 | "\u0003\u0002\u0002\u0002\u00dd\u02c4\u0003\u0002\u0002\u0002\u00df\u02ce", 362 | "\u0003\u0002\u0002\u0002\u00e1\u02de\u0003\u0002\u0002\u0002\u00e3\u02f8", 363 | "\u0003\u0002\u0002\u0002\u00e5\u02fa\u0003\u0002\u0002\u0002\u00e7\u02fc", 364 | "\u0003\u0002\u0002\u0002\u00e9\u02fe\u0003\u0002\u0002\u0002\u00eb\u0300", 365 | "\u0003\u0002\u0002\u0002\u00ed\u0302\u0003\u0002\u0002\u0002\u00ef\u0304", 366 | "\u0003\u0002\u0002\u0002\u00f1\u0306\u0003\u0002\u0002\u0002\u00f3\u0308", 367 | "\u0003\u0002\u0002\u0002\u00f5\u030a\u0003\u0002\u0002\u0002\u00f7\u030c", 368 | "\u0003\u0002\u0002\u0002\u00f9\u030e\u0003\u0002\u0002\u0002\u00fb\u0310", 369 | "\u0003\u0002\u0002\u0002\u00fd\u0312\u0003\u0002\u0002\u0002\u00ff\u0314", 370 | "\u0003\u0002\u0002\u0002\u0101\u0316\u0003\u0002\u0002\u0002\u0103\u0318", 371 | "\u0003\u0002\u0002\u0002\u0105\u031a\u0003\u0002\u0002\u0002\u0107\u031c", 372 | "\u0003\u0002\u0002\u0002\u0109\u031e\u0003\u0002\u0002\u0002\u010b\u0320", 373 | "\u0003\u0002\u0002\u0002\u010d\u0322\u0003\u0002\u0002\u0002\u010f\u0110", 374 | "\u0007=\u0002\u0002\u0110\u0004\u0003\u0002\u0002\u0002\u0111\u0112", 375 | "\u0007.\u0002\u0002\u0112\u0006\u0003\u0002\u0002\u0002\u0113\u0114", 376 | "\u0007?\u0002\u0002\u0114\b\u0003\u0002\u0002\u0002\u0115\u0116\u0007", 377 | "-\u0002\u0002\u0116\u0117\u0007?\u0002\u0002\u0117\n\u0003\u0002\u0002", 378 | "\u0002\u0118\u0119\u0007,\u0002\u0002\u0119\f\u0003\u0002\u0002\u0002", 379 | "\u011a\u011b\u0007*\u0002\u0002\u011b\u000e\u0003\u0002\u0002\u0002", 380 | "\u011c\u011d\u0007+\u0002\u0002\u011d\u0010\u0003\u0002\u0002\u0002", 381 | "\u011e\u011f\u0007]\u0002\u0002\u011f\u0012\u0003\u0002\u0002\u0002", 382 | "\u0120\u0121\u0007A\u0002\u0002\u0121\u0014\u0003\u0002\u0002\u0002", 383 | "\u0122\u0123\u0007_\u0002\u0002\u0123\u0016\u0003\u0002\u0002\u0002", 384 | "\u0124\u0125\u0007<\u0002\u0002\u0125\u0018\u0003\u0002\u0002\u0002", 385 | "\u0126\u0127\u0007~\u0002\u0002\u0127\u001a\u0003\u0002\u0002\u0002", 386 | "\u0128\u0129\u00070\u0002\u0002\u0129\u012a\u00070\u0002\u0002\u012a", 387 | "\u001c\u0003\u0002\u0002\u0002\u012b\u012c\u0007-\u0002\u0002\u012c", 388 | "\u001e\u0003\u0002\u0002\u0002\u012d\u012e\u0007/\u0002\u0002\u012e", 389 | " \u0003\u0002\u0002\u0002\u012f\u0130\u00071\u0002\u0002\u0130\"\u0003", 390 | "\u0002\u0002\u0002\u0131\u0132\u0007\'\u0002\u0002\u0132$\u0003\u0002", 391 | "\u0002\u0002\u0133\u0134\u0007`\u0002\u0002\u0134&\u0003\u0002\u0002", 392 | "\u0002\u0135\u0136\u0007?\u0002\u0002\u0136\u0137\u0007\u0080\u0002", 393 | "\u0002\u0137(\u0003\u0002\u0002\u0002\u0138\u0139\u0007>\u0002\u0002", 394 | "\u0139\u013a\u0007@\u0002\u0002\u013a*\u0003\u0002\u0002\u0002\u013b", 395 | "\u013c\u0007#\u0002\u0002\u013c\u013d\u0007?\u0002\u0002\u013d,\u0003", 396 | "\u0002\u0002\u0002\u013e\u013f\u0007>\u0002\u0002\u013f.\u0003\u0002", 397 | "\u0002\u0002\u0140\u0141\u0007@\u0002\u0002\u01410\u0003\u0002\u0002", 398 | "\u0002\u0142\u0143\u0007>\u0002\u0002\u0143\u0144\u0007?\u0002\u0002", 399 | "\u01442\u0003\u0002\u0002\u0002\u0145\u0146\u0007@\u0002\u0002\u0146", 400 | "\u0147\u0007?\u0002\u0002\u01474\u0003\u0002\u0002\u0002\u0148\u0149", 401 | "\u00070\u0002\u0002\u01496\u0003\u0002\u0002\u0002\u014a\u014b\u0007", 402 | "#\u0002\u0002\u014b8\u0003\u0002\u0002\u0002\u014c\u014d\u0007}\u0002", 403 | "\u0002\u014d:\u0003\u0002\u0002\u0002\u014e\u014f\u0007\u007f\u0002", 404 | "\u0002\u014f<\u0003\u0002\u0002\u0002\u0150\u0151\u00073\u0002\u0002", 405 | "\u0151>\u0003\u0002\u0002\u0002\u0152\u0153\u00074\u0002\u0002\u0153", 406 | "@\u0003\u0002\u0002\u0002\u0154\u0155\u00075\u0002\u0002\u0155B\u0003", 407 | "\u0002\u0002\u0002\u0156\u0157\u00076\u0002\u0002\u0157D\u0003\u0002", 408 | "\u0002\u0002\u0158\u0159\u00077\u0002\u0002\u0159F\u0003\u0002\u0002", 409 | "\u0002\u015a\u015b\u00078\u0002\u0002\u015bH\u0003\u0002\u0002\u0002", 410 | "\u015c\u015d\u00079\u0002\u0002\u015dJ\u0003\u0002\u0002\u0002\u015e", 411 | "\u015f\u0007:\u0002\u0002\u015fL\u0003\u0002\u0002\u0002\u0160\u0161", 412 | "\u0007;\u0002\u0002\u0161N\u0003\u0002\u0002\u0002\u0162\u0163\u0007", 413 | "2\u0002\u0002\u0163P\u0003\u0002\u0002\u0002\u0164\u0165\u0007G\u0002", 414 | "\u0002\u0165R\u0003\u0002\u0002\u0002\u0166\u0167\u0007g\u0002\u0002", 415 | "\u0167T\u0003\u0002\u0002\u0002\u0168\u0169\u0007\u27ea\u0002\u0002", 416 | "\u0169V\u0003\u0002\u0002\u0002\u016a\u016b\u0007\u300a\u0002\u0002", 417 | "\u016bX\u0003\u0002\u0002\u0002\u016c\u016d\u0007\ufe66\u0002\u0002", 418 | "\u016dZ\u0003\u0002\u0002\u0002\u016e\u016f\u0007\uff1e\u0002\u0002", 419 | "\u016f\\\u0003\u0002\u0002\u0002\u0170\u0171\u0007\u27eb\u0002\u0002", 420 | "\u0171^\u0003\u0002\u0002\u0002\u0172\u0173\u0007\u300b\u0002\u0002", 421 | "\u0173`\u0003\u0002\u0002\u0002\u0174\u0175\u0007\ufe67\u0002\u0002", 422 | "\u0175b\u0003\u0002\u0002\u0002\u0176\u0177\u0007\uff20\u0002\u0002", 423 | "\u0177d\u0003\u0002\u0002\u0002\u0178\u0179\u0007\u00af\u0002\u0002", 424 | "\u0179f\u0003\u0002\u0002\u0002\u017a\u017b\u0007\u2012\u0002\u0002", 425 | "\u017bh\u0003\u0002\u0002\u0002\u017c\u017d\u0007\u2013\u0002\u0002", 426 | "\u017dj\u0003\u0002\u0002\u0002\u017e\u017f\u0007\u2014\u0002\u0002", 427 | "\u017fl\u0003\u0002\u0002\u0002\u0180\u0181\u0007\u2015\u0002\u0002", 428 | "\u0181n\u0003\u0002\u0002\u0002\u0182\u0183\u0007\u2016\u0002\u0002", 429 | "\u0183p\u0003\u0002\u0002\u0002\u0184\u0185\u0007\u2017\u0002\u0002", 430 | "\u0185r\u0003\u0002\u0002\u0002\u0186\u0187\u0007\u2214\u0002\u0002", 431 | "\u0187t\u0003\u0002\u0002\u0002\u0188\u0189\u0007\ufe5a\u0002\u0002", 432 | "\u0189v\u0003\u0002\u0002\u0002\u018a\u018b\u0007\ufe65\u0002\u0002", 433 | "\u018bx\u0003\u0002\u0002\u0002\u018c\u018d\u0007\uff0f\u0002\u0002", 434 | "\u018dz\u0003\u0002\u0002\u0002\u018e\u0193\u0005\u00e5s\u0002\u018f", 435 | "\u0192\u0005\u0105\u0083\u0002\u0190\u0192\u0005}?\u0002\u0191\u018f", 436 | "\u0003\u0002\u0002\u0002\u0191\u0190\u0003\u0002\u0002\u0002\u0192\u0195", 437 | "\u0003\u0002\u0002\u0002\u0193\u0191\u0003\u0002\u0002\u0002\u0193\u0194", 438 | "\u0003\u0002\u0002\u0002\u0194\u0196\u0003\u0002\u0002\u0002\u0195\u0193", 439 | "\u0003\u0002\u0002\u0002\u0196\u0197\u0005\u00e5s\u0002\u0197\u01a3", 440 | "\u0003\u0002\u0002\u0002\u0198\u019d\u0005\u00e7t\u0002\u0199\u019c", 441 | "\u0005\u00f5{\u0002\u019a\u019c\u0005}?\u0002\u019b\u0199\u0003\u0002", 442 | "\u0002\u0002\u019b\u019a\u0003\u0002\u0002\u0002\u019c\u019f\u0003\u0002", 443 | "\u0002\u0002\u019d\u019b\u0003\u0002\u0002\u0002\u019d\u019e\u0003\u0002", 444 | "\u0002\u0002\u019e\u01a0\u0003\u0002\u0002\u0002\u019f\u019d\u0003\u0002", 445 | "\u0002\u0002\u01a0\u01a1\u0005\u00e7t\u0002\u01a1\u01a3\u0003\u0002", 446 | "\u0002\u0002\u01a2\u018e\u0003\u0002\u0002\u0002\u01a2\u0198\u0003\u0002", 447 | "\u0002\u0002\u01a3|\u0003\u0002\u0002\u0002\u01a4\u01b6\u0007^\u0002", 448 | "\u0002\u01a5\u01b7\t\u0002\u0002\u0002\u01a6\u01a7\t\u0003\u0002\u0002", 449 | "\u01a7\u01a8\u0005\u007f@\u0002\u01a8\u01a9\u0005\u007f@\u0002\u01a9", 450 | "\u01aa\u0005\u007f@\u0002\u01aa\u01ab\u0005\u007f@\u0002\u01ab\u01b7", 451 | "\u0003\u0002\u0002\u0002\u01ac\u01ad\t\u0003\u0002\u0002\u01ad\u01ae", 452 | "\u0005\u007f@\u0002\u01ae\u01af\u0005\u007f@\u0002\u01af\u01b0\u0005", 453 | "\u007f@\u0002\u01b0\u01b1\u0005\u007f@\u0002\u01b1\u01b2\u0005\u007f", 454 | "@\u0002\u01b2\u01b3\u0005\u007f@\u0002\u01b3\u01b4\u0005\u007f@\u0002", 455 | "\u01b4\u01b5\u0005\u007f@\u0002\u01b5\u01b7\u0003\u0002\u0002\u0002", 456 | "\u01b6\u01a5\u0003\u0002\u0002\u0002\u01b6\u01a6\u0003\u0002\u0002\u0002", 457 | "\u01b6\u01ac\u0003\u0002\u0002\u0002\u01b7~\u0003\u0002\u0002\u0002", 458 | "\u01b8\u01ba\t\u0004\u0002\u0002\u01b9\u01b8\u0003\u0002\u0002\u0002", 459 | "\u01ba\u0080\u0003\u0002\u0002\u0002\u01bb\u01bc\t\u0003\u0002\u0002", 460 | "\u01bc\u01bd\t\u0005\u0002\u0002\u01bd\u01be\t\u0006\u0002\u0002\u01be", 461 | "\u01bf\t\u0007\u0002\u0002\u01bf\u01c0\t\u0005\u0002\u0002\u01c0\u0082", 462 | "\u0003\u0002\u0002\u0002\u01c1\u01c2\t\b\u0002\u0002\u01c2\u01c3\t\t", 463 | "\u0002\u0002\u01c3\u01c4\t\t\u0002\u0002\u01c4\u0084\u0003\u0002\u0002", 464 | "\u0002\u01c5\u01c6\t\u0007\u0002\u0002\u01c6\u01c7\t\n\u0002\u0002\u01c7", 465 | "\u01c8\t\u000b\u0002\u0002\u01c8\u01c9\t\u0006\u0002\u0002\u01c9\u01ca", 466 | "\t\u0007\u0002\u0002\u01ca\u01cb\t\u0005\u0002\u0002\u01cb\u01cc\t\b", 467 | "\u0002\u0002\u01cc\u01cd\t\t\u0002\u0002\u01cd\u0086\u0003\u0002\u0002", 468 | "\u0002\u01ce\u01cf\t\f\u0002\u0002\u01cf\u01d0\t\b\u0002\u0002\u01d0", 469 | "\u01d1\t\u000b\u0002\u0002\u01d1\u01d2\t\r\u0002\u0002\u01d2\u01d3\t", 470 | "\u000e\u0002\u0002\u01d3\u0088\u0003\u0002\u0002\u0002\u01d4\u01d5\t", 471 | "\u0003\u0002\u0002\u01d5\u01d6\t\u0005\u0002\u0002\u01d6\u01d7\t\u000f", 472 | "\u0002\u0002\u01d7\u01d8\t\u0006\u0002\u0002\u01d8\u01d9\t\u0005\u0002", 473 | "\u0002\u01d9\u01da\t\u0010\u0002\u0002\u01da\u008a\u0003\u0002\u0002", 474 | "\u0002\u01db\u01dc\t\b\u0002\u0002\u01dc\u01dd\t\u0011\u0002\u0002\u01dd", 475 | "\u008c\u0003\u0002\u0002\u0002\u01de\u01df\t\f\u0002\u0002\u01df\u01e0", 476 | "\t\u0012\u0002\u0002\u01e0\u01e1\t\u0013\u0002\u0002\u01e1\u01e2\t\u0014", 477 | "\u0002\u0002\u01e2\u01e3\t\u0012\u0002\u0002\u01e3\u008e\u0003\u0002", 478 | "\u0002\u0002\u01e4\u01e5\t\u0007\u0002\u0002\u01e5\u01e6\t\u0005\u0002", 479 | "\u0002\u01e6\u0090\u0003\u0002\u0002\u0002\u01e7\u01e8\t\r\u0002\u0002", 480 | "\u01e8\u01e9\t\u0013\u0002\u0002\u01e9\u01ea\t\u0012\u0002\u0002\u01ea", 481 | "\u01eb\t\b\u0002\u0002\u01eb\u01ec\t\u000b\u0002\u0002\u01ec\u01ed\t", 482 | "\u0012\u0002\u0002\u01ed\u0092\u0003\u0002\u0002\u0002\u01ee\u01ef\t", 483 | "\u0011\u0002\u0002\u01ef\u01f0\t\u0012\u0002\u0002\u01f0\u01f1\t\u000b", 484 | "\u0002\u0002\u01f1\u0094\u0003\u0002\u0002\u0002\u01f2\u01f3\t\u0010", 485 | "\u0002\u0002\u01f3\u01f4\t\u0012\u0002\u0002\u01f4\u01f5\t\t\u0002\u0002", 486 | "\u01f5\u01f6\t\u0012\u0002\u0002\u01f6\u01f7\t\u000b\u0002\u0002\u01f7", 487 | "\u01f8\t\u0012\u0002\u0002\u01f8\u0096\u0003\u0002\u0002\u0002\u01f9", 488 | "\u01fa\t\u0010\u0002\u0002\u01fa\u01fb\t\u0012\u0002\u0002\u01fb\u01fc", 489 | "\t\u000b\u0002\u0002\u01fc\u01fd\t\b\u0002\u0002\u01fd\u01fe\t\r\u0002", 490 | "\u0002\u01fe\u01ff\t\u000e\u0002\u0002\u01ff\u0098\u0003\u0002\u0002", 491 | "\u0002\u0200\u0201\t\u0013\u0002\u0002\u0201\u0202\t\u0012\u0002\u0002", 492 | "\u0202\u0203\t\f\u0002\u0002\u0203\u0204\t\u0007\u0002\u0002\u0204\u0205", 493 | "\t\u0015\u0002\u0002\u0205\u0206\t\u0012\u0002\u0002\u0206\u009a\u0003", 494 | "\u0002\u0002\u0002\u0207\u0208\t\u000f\u0002\u0002\u0208\u0209\t\u0006", 495 | "\u0002\u0002\u0209\u020a\t\u000b\u0002\u0002\u020a\u020b\t\u000e\u0002", 496 | "\u0002\u020b\u009c\u0003\u0002\u0002\u0002\u020c\u020d\t\u0010\u0002", 497 | "\u0002\u020d\u020e\t\u0006\u0002\u0002\u020e\u020f\t\u0011\u0002\u0002", 498 | "\u020f\u0210\t\u000b\u0002\u0002\u0210\u0211\t\u0006\u0002\u0002\u0211", 499 | "\u0212\t\u0005\u0002\u0002\u0212\u0213\t\r\u0002\u0002\u0213\u0214\t", 500 | "\u000b\u0002\u0002\u0214\u009e\u0003\u0002\u0002\u0002\u0215\u0216\t", 501 | "\u0013\u0002\u0002\u0216\u0217\t\u0012\u0002\u0002\u0217\u0218\t\u000b", 502 | "\u0002\u0002\u0218\u0219\t\u0003\u0002\u0002\u0219\u021a\t\u0013\u0002", 503 | "\u0002\u021a\u021b\t\u0005\u0002\u0002\u021b\u00a0\u0003\u0002\u0002", 504 | "\u0002\u021c\u021d\t\u0007\u0002\u0002\u021d\u021e\t\u0013\u0002\u0002", 505 | "\u021e\u021f\t\u0010\u0002\u0002\u021f\u0220\t\u0012\u0002\u0002\u0220", 506 | "\u0221\t\u0013\u0002\u0002\u0221\u00a2\u0003\u0002\u0002\u0002\u0222", 507 | "\u0223\t\u0016\u0002\u0002\u0223\u0224\t\u0017\u0002\u0002\u0224\u00a4", 508 | "\u0003\u0002\u0002\u0002\u0225\u0226\t\u0011\u0002\u0002\u0226\u0227", 509 | "\t\u0018\u0002\u0002\u0227\u0228\t\u0006\u0002\u0002\u0228\u0229\t\n", 510 | "\u0002\u0002\u0229\u00a6\u0003\u0002\u0002\u0002\u022a\u022b\t\t\u0002", 511 | "\u0002\u022b\u022c\t\u0006\u0002\u0002\u022c\u022d\t\f\u0002\u0002\u022d", 512 | "\u022e\t\u0006\u0002\u0002\u022e\u022f\t\u000b\u0002\u0002\u022f\u00a8", 513 | "\u0003\u0002\u0002\u0002\u0230\u0231\t\u0010\u0002\u0002\u0231\u0232", 514 | "\t\u0012\u0002\u0002\u0232\u0233\t\u0011\u0002\u0002\u0233\u0234\t\r", 515 | "\u0002\u0002\u0234\u0235\t\u0012\u0002\u0002\u0235\u0236\t\u0005\u0002", 516 | "\u0002\u0236\u0237\t\u0010\u0002\u0002\u0237\u0238\t\u0006\u0002\u0002", 517 | "\u0238\u0239\t\u0005\u0002\u0002\u0239\u023a\t\u0014\u0002\u0002\u023a", 518 | "\u00aa\u0003\u0002\u0002\u0002\u023b\u023c\t\u0010\u0002\u0002\u023c", 519 | "\u023d\t\u0012\u0002\u0002\u023d\u023e\t\u0011\u0002\u0002\u023e\u023f", 520 | "\t\r\u0002\u0002\u023f\u00ac\u0003\u0002\u0002\u0002\u0240\u0241\t\b", 521 | "\u0002\u0002\u0241\u0242\t\u0011\u0002\u0002\u0242\u0243\t\r\u0002\u0002", 522 | "\u0243\u0244\t\u0012\u0002\u0002\u0244\u0245\t\u0005\u0002\u0002\u0245", 523 | "\u0246\t\u0010\u0002\u0002\u0246\u0247\t\u0006\u0002\u0002\u0247\u0248", 524 | "\t\u0005\u0002\u0002\u0248\u0249\t\u0014\u0002\u0002\u0249\u00ae\u0003", 525 | "\u0002\u0002\u0002\u024a\u024b\t\b\u0002\u0002\u024b\u024c\t\u0011\u0002", 526 | "\u0002\u024c\u024d\t\r\u0002\u0002\u024d\u00b0\u0003\u0002\u0002\u0002", 527 | "\u024e\u024f\t\u000f\u0002\u0002\u024f\u0250\t\u000e\u0002\u0002\u0250", 528 | "\u0251\t\u0012\u0002\u0002\u0251\u0252\t\u0013\u0002\u0002\u0252\u0253", 529 | "\t\u0012\u0002\u0002\u0253\u00b2\u0003\u0002\u0002\u0002\u0254\u0255", 530 | "\t\u0007\u0002\u0002\u0255\u0256\t\u0013\u0002\u0002\u0256\u00b4\u0003", 531 | "\u0002\u0002\u0002\u0257\u0258\t\u0019\u0002\u0002\u0258\u0259\t\u0007", 532 | "\u0002\u0002\u0259\u025a\t\u0013\u0002\u0002\u025a\u00b6\u0003\u0002", 533 | "\u0002\u0002\u025b\u025c\t\b\u0002\u0002\u025c\u025d\t\u0005\u0002\u0002", 534 | "\u025d\u025e\t\u0010\u0002\u0002\u025e\u00b8\u0003\u0002\u0002\u0002", 535 | "\u025f\u0260\t\u0005\u0002\u0002\u0260\u0261\t\u0007\u0002\u0002\u0261", 536 | "\u0262\t\u000b\u0002\u0002\u0262\u00ba\u0003\u0002\u0002\u0002\u0263", 537 | "\u0264\t\u0006\u0002\u0002\u0264\u0265\t\u0005\u0002\u0002\u0265\u00bc", 538 | "\u0003\u0002\u0002\u0002\u0266\u0267\t\u0011\u0002\u0002\u0267\u0268", 539 | "\t\u000b\u0002\u0002\u0268\u0269\t\b\u0002\u0002\u0269\u026a\t\u0013", 540 | "\u0002\u0002\u026a\u026b\t\u000b\u0002\u0002\u026b\u026c\t\u0011\u0002", 541 | "\u0002\u026c\u00be\u0003\u0002\u0002\u0002\u026d\u026e\t\u0012\u0002", 542 | "\u0002\u026e\u026f\t\u0005\u0002\u0002\u026f\u0270\t\u0010\u0002\u0002", 543 | "\u0270\u0271\t\u0011\u0002\u0002\u0271\u00c0\u0003\u0002\u0002\u0002", 544 | "\u0272\u0273\t\r\u0002\u0002\u0273\u0274\t\u0007\u0002\u0002\u0274\u0275", 545 | "\t\u0005\u0002\u0002\u0275\u0276\t\u000b\u0002\u0002\u0276\u0277\t\b", 546 | "\u0002\u0002\u0277\u0278\t\u0006\u0002\u0002\u0278\u0279\t\u0005\u0002", 547 | "\u0002\u0279\u027a\t\u0011\u0002\u0002\u027a\u00c2\u0003\u0002\u0002", 548 | "\u0002\u027b\u027c\t\u0006\u0002\u0002\u027c\u027d\t\u0011\u0002\u0002", 549 | "\u027d\u00c4\u0003\u0002\u0002\u0002\u027e\u027f\t\u0005\u0002\u0002", 550 | "\u027f\u0280\t\u0003\u0002\u0002\u0280\u0281\t\t\u0002\u0002\u0281\u0282", 551 | "\t\t\u0002\u0002\u0282\u00c6\u0003\u0002\u0002\u0002\u0283\u0284\t\u000b", 552 | "\u0002\u0002\u0284\u0285\t\u0013\u0002\u0002\u0285\u0286\t\u0003\u0002", 553 | "\u0002\u0286\u0287\t\u0012\u0002\u0002\u0287\u00c8\u0003\u0002\u0002", 554 | "\u0002\u0288\u0289\t\u001a\u0002\u0002\u0289\u028a\t\b\u0002\u0002\u028a", 555 | "\u028b\t\t\u0002\u0002\u028b\u028c\t\u0011\u0002\u0002\u028c\u028d\t", 556 | "\u0012\u0002\u0002\u028d\u00ca\u0003\u0002\u0002\u0002\u028e\u028f\t", 557 | "\r\u0002\u0002\u028f\u0290\t\u0007\u0002\u0002\u0290\u0291\t\u0003\u0002", 558 | "\u0002\u0291\u0292\t\u0005\u0002\u0002\u0292\u0293\t\u000b\u0002\u0002", 559 | "\u0293\u00cc\u0003\u0002\u0002\u0002\u0294\u0295\t\u001a\u0002\u0002", 560 | "\u0295\u0296\t\u0006\u0002\u0002\u0296\u0297\t\t\u0002\u0002\u0297\u0298", 561 | "\t\u000b\u0002\u0002\u0298\u0299\t\u0012\u0002\u0002\u0299\u029a\t\u0013", 562 | "\u0002\u0002\u029a\u00ce\u0003\u0002\u0002\u0002\u029b\u029c\t\u0012", 563 | "\u0002\u0002\u029c\u029d\t\u0019\u0002\u0002\u029d\u029e\t\u000b\u0002", 564 | "\u0002\u029e\u029f\t\u0013\u0002\u0002\u029f\u02a0\t\b\u0002\u0002\u02a0", 565 | "\u02a1\t\r\u0002\u0002\u02a1\u02a2\t\u000b\u0002\u0002\u02a2\u00d0\u0003", 566 | "\u0002\u0002\u0002\u02a3\u02a4\t\b\u0002\u0002\u02a4\u02a5\t\u0005\u0002", 567 | "\u0002\u02a5\u02a6\t\u0017\u0002\u0002\u02a6\u00d2\u0003\u0002\u0002", 568 | "\u0002\u02a7\u02a8\t\u0005\u0002\u0002\u02a8\u02a9\t\u0007\u0002\u0002", 569 | "\u02a9\u02aa\t\u0005\u0002\u0002\u02aa\u02ab\t\u0012\u0002\u0002\u02ab", 570 | "\u00d4\u0003\u0002\u0002\u0002\u02ac\u02ad\t\u0011\u0002\u0002\u02ad", 571 | "\u02ae\t\u0006\u0002\u0002\u02ae\u02af\t\u0005\u0002\u0002\u02af\u02b0", 572 | "\t\u0014\u0002\u0002\u02b0\u02b1\t\t\u0002\u0002\u02b1\u02b2\t\u0012", 573 | "\u0002\u0002\u02b2\u00d6\u0003\u0002\u0002\u0002\u02b3\u02b4\u00042", 574 | "2\u0002\u02b4\u02b5\t\u0019\u0002\u0002\u02b5\u00d8\u0003\u0002\u0002", 575 | "\u0002\u02b6\u02ba\u0005\u00dbn\u0002\u02b7\u02b9\u0005\u00ddo\u0002", 576 | "\u02b8\u02b7\u0003\u0002\u0002\u0002\u02b9\u02bc\u0003\u0002\u0002\u0002", 577 | "\u02ba\u02b8\u0003\u0002\u0002\u0002\u02ba\u02bb\u0003\u0002\u0002\u0002", 578 | "\u02bb\u00da\u0003\u0002\u0002\u0002\u02bc\u02ba\u0003\u0002\u0002\u0002", 579 | "\u02bd\u02c1\u0005\u010d\u0087\u0002\u02be\u02c1\u0005\u00ff\u0080\u0002", 580 | "\u02bf\u02c1\t\u001b\u0002\u0002\u02c0\u02bd\u0003\u0002\u0002\u0002", 581 | "\u02c0\u02be\u0003\u0002\u0002\u0002\u02c0\u02bf\u0003\u0002\u0002\u0002", 582 | "\u02c1\u00dc\u0003\u0002\u0002\u0002\u02c2\u02c5\u0005\u00efx\u0002", 583 | "\u02c3\u02c5\u0005\u00ff\u0080\u0002\u02c4\u02c2\u0003\u0002\u0002\u0002", 584 | "\u02c4\u02c3\u0003\u0002\u0002\u0002\u02c5\u00de\u0003\u0002\u0002\u0002", 585 | "\u02c6\u02ca\u0007b\u0002\u0002\u02c7\u02c9\u0005\u00ebv\u0002\u02c8", 586 | "\u02c7\u0003\u0002\u0002\u0002\u02c9\u02cc\u0003\u0002\u0002\u0002\u02ca", 587 | "\u02c8\u0003\u0002\u0002\u0002\u02ca\u02cb\u0003\u0002\u0002\u0002\u02cb", 588 | "\u02cd\u0003\u0002\u0002\u0002\u02cc\u02ca\u0003\u0002\u0002\u0002\u02cd", 589 | "\u02cf\u0007b\u0002\u0002\u02ce\u02c6\u0003\u0002\u0002\u0002\u02cf", 590 | "\u02d0\u0003\u0002\u0002\u0002\u02d0\u02ce\u0003\u0002\u0002\u0002\u02d0", 591 | "\u02d1\u0003\u0002\u0002\u0002\u02d1\u00e0\u0003\u0002\u0002\u0002\u02d2", 592 | "\u02df\u0005\u0101\u0081\u0002\u02d3\u02df\u0005\u0103\u0082\u0002\u02d4", 593 | "\u02df\u0005\u0107\u0084\u0002\u02d5\u02df\u0005\u0109\u0085\u0002\u02d6", 594 | "\u02df\u0005\u00e9u\u0002\u02d7\u02df\u0005\u00fd\u007f\u0002\u02d8", 595 | "\u02df\u0005\u00fb~\u0002\u02d9\u02df\u0005\u00f9}\u0002\u02da\u02df", 596 | "\u0005\u00edw\u0002\u02db\u02df\u0005\u010b\u0086\u0002\u02dc\u02df", 597 | "\t\u001c\u0002\u0002\u02dd\u02df\u0005\u00e3r\u0002\u02de\u02d2\u0003", 598 | "\u0002\u0002\u0002\u02de\u02d3\u0003\u0002\u0002\u0002\u02de\u02d4\u0003", 599 | "\u0002\u0002\u0002\u02de\u02d5\u0003\u0002\u0002\u0002\u02de\u02d6\u0003", 600 | "\u0002\u0002\u0002\u02de\u02d7\u0003\u0002\u0002\u0002\u02de\u02d8\u0003", 601 | "\u0002\u0002\u0002\u02de\u02d9\u0003\u0002\u0002\u0002\u02de\u02da\u0003", 602 | "\u0002\u0002\u0002\u02de\u02db\u0003\u0002\u0002\u0002\u02de\u02dc\u0003", 603 | "\u0002\u0002\u0002\u02de\u02dd\u0003\u0002\u0002\u0002\u02df\u00e2\u0003", 604 | "\u0002\u0002\u0002\u02e0\u02e1\u00071\u0002\u0002\u02e1\u02e2\u0007", 605 | ",\u0002\u0002\u02e2\u02e8\u0003\u0002\u0002\u0002\u02e3\u02e7\u0005", 606 | "\u00f3z\u0002\u02e4\u02e5\u0007,\u0002\u0002\u02e5\u02e7\u0005\u00f1", 607 | "y\u0002\u02e6\u02e3\u0003\u0002\u0002\u0002\u02e6\u02e4\u0003\u0002", 608 | "\u0002\u0002\u02e7\u02ea\u0003\u0002\u0002\u0002\u02e8\u02e6\u0003\u0002", 609 | "\u0002\u0002\u02e8\u02e9\u0003\u0002\u0002\u0002\u02e9\u02eb\u0003\u0002", 610 | "\u0002\u0002\u02ea\u02e8\u0003\u0002\u0002\u0002\u02eb\u02ec\u0007,", 611 | "\u0002\u0002\u02ec\u02f9\u00071\u0002\u0002\u02ed\u02ee\u00071\u0002", 612 | "\u0002\u02ee\u02ef\u00071\u0002\u0002\u02ef\u02f0\u0003\u0002\u0002", 613 | "\u0002\u02f0\u02f2\u0005\u00f7|\u0002\u02f1\u02f3\u0005\u00fd\u007f", 614 | "\u0002\u02f2\u02f1\u0003\u0002\u0002\u0002\u02f2\u02f3\u0003\u0002\u0002", 615 | "\u0002\u02f3\u02f6\u0003\u0002\u0002\u0002\u02f4\u02f7\u0005\u0107\u0084", 616 | "\u0002\u02f5\u02f7\u0007\u0002\u0002\u0003\u02f6\u02f4\u0003\u0002\u0002", 617 | "\u0002\u02f6\u02f5\u0003\u0002\u0002\u0002\u02f7\u02f9\u0003\u0002\u0002", 618 | "\u0002\u02f8\u02e0\u0003\u0002\u0002\u0002\u02f8\u02ed\u0003\u0002\u0002", 619 | "\u0002\u02f9\u00e4\u0003\u0002\u0002\u0002\u02fa\u02fb\t\u001d\u0002", 620 | "\u0002\u02fb\u00e6\u0003\u0002\u0002\u0002\u02fc\u02fd\t\u001e\u0002", 621 | "\u0002\u02fd\u00e8\u0003\u0002\u0002\u0002\u02fe\u02ff\t\u001f\u0002", 622 | "\u0002\u02ff\u00ea\u0003\u0002\u0002\u0002\u0300\u0301\t \u0002\u0002", 623 | "\u0301\u00ec\u0003\u0002\u0002\u0002\u0302\u0303\t!\u0002\u0002\u0303", 624 | "\u00ee\u0003\u0002\u0002\u0002\u0304\u0305\t\"\u0002\u0002\u0305\u00f0", 625 | "\u0003\u0002\u0002\u0002\u0306\u0307\t#\u0002\u0002\u0307\u00f2\u0003", 626 | "\u0002\u0002\u0002\u0308\u0309\t$\u0002\u0002\u0309\u00f4\u0003\u0002", 627 | "\u0002\u0002\u030a\u030b\n%\u0002\u0002\u030b\u00f6\u0003\u0002\u0002", 628 | "\u0002\u030c\u030d\t&\u0002\u0002\u030d\u00f8\u0003\u0002\u0002\u0002", 629 | "\u030e\u030f\t\'\u0002\u0002\u030f\u00fa\u0003\u0002\u0002\u0002\u0310", 630 | "\u0311\t(\u0002\u0002\u0311\u00fc\u0003\u0002\u0002\u0002\u0312\u0313", 631 | "\t)\u0002\u0002\u0313\u00fe\u0003\u0002\u0002\u0002\u0314\u0315\t*\u0002", 632 | "\u0002\u0315\u0100\u0003\u0002\u0002\u0002\u0316\u0317\t+\u0002\u0002", 633 | "\u0317\u0102\u0003\u0002\u0002\u0002\u0318\u0319\t,\u0002\u0002\u0319", 634 | "\u0104\u0003\u0002\u0002\u0002\u031a\u031b\n%\u0002\u0002\u031b\u0106", 635 | "\u0003\u0002\u0002\u0002\u031c\u031d\t-\u0002\u0002\u031d\u0108\u0003", 636 | "\u0002\u0002\u0002\u031e\u031f\t.\u0002\u0002\u031f\u010a\u0003\u0002", 637 | "\u0002\u0002\u0320\u0321\t/\u0002\u0002\u0321\u010c\u0003\u0002\u0002", 638 | "\u0002\u0322\u0323\t0\u0002\u0002\u0323\u010e\u0003\u0002\u0002\u0002", 639 | "\u0015\u0002\u0191\u0193\u019b\u019d\u01a2\u01b6\u01b9\u02ba\u02c0\u02c4", 640 | "\u02ca\u02d0\u02de\u02e6\u02e8\u02f2\u02f6\u02f8\u0002"].join(""); 641 | 642 | 643 | var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN); 644 | 645 | var decisionsToDFA = atn.decisionToState.map(function (ds, index) { 646 | return new antlr4.dfa.DFA(ds, index); 647 | }); 648 | 649 | function CypherLexer(input) { 650 | var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN); 651 | var decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); }); 652 | 653 | antlr4.Lexer.call(this, input); 654 | this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache()); 655 | return this; 656 | } 657 | 658 | CypherLexer.prototype = Object.create(antlr4.Lexer.prototype); 659 | CypherLexer.prototype.constructor = CypherLexer; 660 | 661 | CypherLexer.EOF = antlr4.Token.EOF; 662 | CypherLexer.T__0 = 1; 663 | CypherLexer.T__1 = 2; 664 | CypherLexer.T__2 = 3; 665 | CypherLexer.T__3 = 4; 666 | CypherLexer.T__4 = 5; 667 | CypherLexer.T__5 = 6; 668 | CypherLexer.T__6 = 7; 669 | CypherLexer.T__7 = 8; 670 | CypherLexer.T__8 = 9; 671 | CypherLexer.T__9 = 10; 672 | CypherLexer.T__10 = 11; 673 | CypherLexer.T__11 = 12; 674 | CypherLexer.T__12 = 13; 675 | CypherLexer.T__13 = 14; 676 | CypherLexer.T__14 = 15; 677 | CypherLexer.T__15 = 16; 678 | CypherLexer.T__16 = 17; 679 | CypherLexer.T__17 = 18; 680 | CypherLexer.T__18 = 19; 681 | CypherLexer.T__19 = 20; 682 | CypherLexer.T__20 = 21; 683 | CypherLexer.T__21 = 22; 684 | CypherLexer.T__22 = 23; 685 | CypherLexer.T__23 = 24; 686 | CypherLexer.T__24 = 25; 687 | CypherLexer.T__25 = 26; 688 | CypherLexer.T__26 = 27; 689 | CypherLexer.T__27 = 28; 690 | CypherLexer.T__28 = 29; 691 | CypherLexer.T__29 = 30; 692 | CypherLexer.T__30 = 31; 693 | CypherLexer.T__31 = 32; 694 | CypherLexer.T__32 = 33; 695 | CypherLexer.T__33 = 34; 696 | CypherLexer.T__34 = 35; 697 | CypherLexer.T__35 = 36; 698 | CypherLexer.T__36 = 37; 699 | CypherLexer.T__37 = 38; 700 | CypherLexer.T__38 = 39; 701 | CypherLexer.T__39 = 40; 702 | CypherLexer.T__40 = 41; 703 | CypherLexer.T__41 = 42; 704 | CypherLexer.T__42 = 43; 705 | CypherLexer.T__43 = 44; 706 | CypherLexer.T__44 = 45; 707 | CypherLexer.T__45 = 46; 708 | CypherLexer.T__46 = 47; 709 | CypherLexer.T__47 = 48; 710 | CypherLexer.T__48 = 49; 711 | CypherLexer.T__49 = 50; 712 | CypherLexer.T__50 = 51; 713 | CypherLexer.T__51 = 52; 714 | CypherLexer.T__52 = 53; 715 | CypherLexer.T__53 = 54; 716 | CypherLexer.T__54 = 55; 717 | CypherLexer.T__55 = 56; 718 | CypherLexer.T__56 = 57; 719 | CypherLexer.T__57 = 58; 720 | CypherLexer.T__58 = 59; 721 | CypherLexer.T__59 = 60; 722 | CypherLexer.StringLiteral = 61; 723 | CypherLexer.EscapedChar = 62; 724 | CypherLexer.HexDigit = 63; 725 | CypherLexer.UNION = 64; 726 | CypherLexer.ALL = 65; 727 | CypherLexer.OPTIONAL = 66; 728 | CypherLexer.MATCH = 67; 729 | CypherLexer.UNWIND = 68; 730 | CypherLexer.AS = 69; 731 | CypherLexer.MERGE = 70; 732 | CypherLexer.ON = 71; 733 | CypherLexer.CREATE = 72; 734 | CypherLexer.SET = 73; 735 | CypherLexer.DELETE = 74; 736 | CypherLexer.DETACH = 75; 737 | CypherLexer.REMOVE = 76; 738 | CypherLexer.WITH = 77; 739 | CypherLexer.DISTINCT = 78; 740 | CypherLexer.RETURN = 79; 741 | CypherLexer.ORDER = 80; 742 | CypherLexer.BY = 81; 743 | CypherLexer.L_SKIP = 82; 744 | CypherLexer.LIMIT = 83; 745 | CypherLexer.DESCENDING = 84; 746 | CypherLexer.DESC = 85; 747 | CypherLexer.ASCENDING = 86; 748 | CypherLexer.ASC = 87; 749 | CypherLexer.WHERE = 88; 750 | CypherLexer.OR = 89; 751 | CypherLexer.XOR = 90; 752 | CypherLexer.AND = 91; 753 | CypherLexer.NOT = 92; 754 | CypherLexer.IN = 93; 755 | CypherLexer.STARTS = 94; 756 | CypherLexer.ENDS = 95; 757 | CypherLexer.CONTAINS = 96; 758 | CypherLexer.IS = 97; 759 | CypherLexer.NULL = 98; 760 | CypherLexer.TRUE = 99; 761 | CypherLexer.FALSE = 100; 762 | CypherLexer.COUNT = 101; 763 | CypherLexer.FILTER = 102; 764 | CypherLexer.EXTRACT = 103; 765 | CypherLexer.ANY = 104; 766 | CypherLexer.NONE = 105; 767 | CypherLexer.SINGLE = 106; 768 | CypherLexer.L_0X = 107; 769 | CypherLexer.UnescapedSymbolicName = 108; 770 | CypherLexer.IdentifierStart = 109; 771 | CypherLexer.IdentifierPart = 110; 772 | CypherLexer.EscapedSymbolicName = 111; 773 | CypherLexer.WHITESPACE = 112; 774 | CypherLexer.Comment = 113; 775 | 776 | 777 | CypherLexer.modeNames = ["DEFAULT_MODE"]; 778 | 779 | CypherLexer.literalNames = [null, "';'", "','", "'='", "'+='", "'*'", "'('", 780 | "')'", "'['", "'?'", "']'", "':'", "'|'", "'..'", 781 | "'+'", "'-'", "'/'", "'%'", "'^'", "'=~'", 782 | "'<>'", "'!='", "'<'", "'>'", "'<='", "'>='", 783 | "'.'", "'!'", "'{'", "'}'", "'1'", "'2'", "'3'", 784 | "'4'", "'5'", "'6'", "'7'", "'8'", "'9'", "'0'", 785 | "'E'", "'e'", "'⟨'", "'〈'", "'﹤'", "'<'", "'⟩'", 786 | "'〉'", "'﹥'", "'>'", "'­'", "'‐'", "'‑'", "'‒'", 787 | "'–'", "'—'", "'―'", "'−'", "'﹘'", "'﹣'", "'-'"]; 788 | 789 | CypherLexer.symbolicNames = [null, null, null, null, null, null, null, 790 | null, null, null, null, null, null, null, 791 | null, null, null, null, null, null, null, 792 | null, null, null, null, null, null, null, 793 | null, null, null, null, null, null, null, 794 | null, null, null, null, null, null, null, 795 | null, null, null, null, null, null, null, 796 | null, null, null, null, null, null, null, 797 | null, null, null, null, null, "StringLiteral", 798 | "EscapedChar", "HexDigit", "UNION", "ALL", 799 | "OPTIONAL", "MATCH", "UNWIND", "AS", "MERGE", 800 | "ON", "CREATE", "SET", "DELETE", "DETACH", 801 | "REMOVE", "WITH", "DISTINCT", "RETURN", "ORDER", 802 | "BY", "L_SKIP", "LIMIT", "DESCENDING", "DESC", 803 | "ASCENDING", "ASC", "WHERE", "OR", "XOR", 804 | "AND", "NOT", "IN", "STARTS", "ENDS", "CONTAINS", 805 | "IS", "NULL", "TRUE", "FALSE", "COUNT", "FILTER", 806 | "EXTRACT", "ANY", "NONE", "SINGLE", "L_0X", 807 | "UnescapedSymbolicName", "IdentifierStart", 808 | "IdentifierPart", "EscapedSymbolicName", "WHITESPACE", 809 | "Comment"]; 810 | 811 | CypherLexer.ruleNames = ["T__0", "T__1", "T__2", "T__3", "T__4", "T__5", 812 | "T__6", "T__7", "T__8", "T__9", "T__10", "T__11", 813 | "T__12", "T__13", "T__14", "T__15", "T__16", "T__17", 814 | "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", 815 | "T__24", "T__25", "T__26", "T__27", "T__28", "T__29", 816 | "T__30", "T__31", "T__32", "T__33", "T__34", "T__35", 817 | "T__36", "T__37", "T__38", "T__39", "T__40", "T__41", 818 | "T__42", "T__43", "T__44", "T__45", "T__46", "T__47", 819 | "T__48", "T__49", "T__50", "T__51", "T__52", "T__53", 820 | "T__54", "T__55", "T__56", "T__57", "T__58", "T__59", 821 | "StringLiteral", "EscapedChar", "HexDigit", "UNION", 822 | "ALL", "OPTIONAL", "MATCH", "UNWIND", "AS", "MERGE", 823 | "ON", "CREATE", "SET", "DELETE", "DETACH", "REMOVE", 824 | "WITH", "DISTINCT", "RETURN", "ORDER", "BY", "L_SKIP", 825 | "LIMIT", "DESCENDING", "DESC", "ASCENDING", "ASC", 826 | "WHERE", "OR", "XOR", "AND", "NOT", "IN", "STARTS", 827 | "ENDS", "CONTAINS", "IS", "NULL", "TRUE", "FALSE", 828 | "COUNT", "FILTER", "EXTRACT", "ANY", "NONE", "SINGLE", 829 | "L_0X", "UnescapedSymbolicName", "IdentifierStart", 830 | "IdentifierPart", "EscapedSymbolicName", "WHITESPACE", 831 | "Comment", "Quote_DBL", "Quote_SG", "FF", "EscapedSymbolicName_0", 832 | "RS", "ID_Continue", "Comment_1", "Comment_0", 833 | "StringLiteral_1", "Comment_2", "GS", "FS", "CR", 834 | "Sc", "SPACE", "TAB", "StringLiteral_0", "LF", 835 | "VT", "US", "ID_Start"]; 836 | 837 | CypherLexer.grammarFileName = "Cypher.g4"; 838 | 839 | 840 | return CypherLexer; 841 | } 842 | -------------------------------------------------------------------------------- /lib/CypherLexer.tokens: -------------------------------------------------------------------------------- 1 | T__0=1 2 | T__1=2 3 | T__2=3 4 | T__3=4 5 | T__4=5 6 | T__5=6 7 | T__6=7 8 | T__7=8 9 | T__8=9 10 | T__9=10 11 | T__10=11 12 | T__11=12 13 | T__12=13 14 | T__13=14 15 | T__14=15 16 | T__15=16 17 | T__16=17 18 | T__17=18 19 | T__18=19 20 | T__19=20 21 | T__20=21 22 | T__21=22 23 | T__22=23 24 | T__23=24 25 | T__24=25 26 | T__25=26 27 | T__26=27 28 | T__27=28 29 | T__28=29 30 | T__29=30 31 | T__30=31 32 | T__31=32 33 | T__32=33 34 | T__33=34 35 | T__34=35 36 | T__35=36 37 | T__36=37 38 | T__37=38 39 | T__38=39 40 | T__39=40 41 | T__40=41 42 | T__41=42 43 | T__42=43 44 | T__43=44 45 | T__44=45 46 | T__45=46 47 | T__46=47 48 | T__47=48 49 | T__48=49 50 | T__49=50 51 | T__50=51 52 | T__51=52 53 | T__52=53 54 | T__53=54 55 | T__54=55 56 | T__55=56 57 | T__56=57 58 | T__57=58 59 | T__58=59 60 | T__59=60 61 | StringLiteral=61 62 | EscapedChar=62 63 | HexDigit=63 64 | UNION=64 65 | ALL=65 66 | OPTIONAL=66 67 | MATCH=67 68 | UNWIND=68 69 | AS=69 70 | MERGE=70 71 | ON=71 72 | CREATE=72 73 | SET=73 74 | DELETE=74 75 | DETACH=75 76 | REMOVE=76 77 | WITH=77 78 | DISTINCT=78 79 | RETURN=79 80 | ORDER=80 81 | BY=81 82 | L_SKIP=82 83 | LIMIT=83 84 | DESCENDING=84 85 | DESC=85 86 | ASCENDING=86 87 | ASC=87 88 | WHERE=88 89 | OR=89 90 | XOR=90 91 | AND=91 92 | NOT=92 93 | IN=93 94 | STARTS=94 95 | ENDS=95 96 | CONTAINS=96 97 | IS=97 98 | NULL=98 99 | TRUE=99 100 | FALSE=100 101 | COUNT=101 102 | FILTER=102 103 | EXTRACT=103 104 | ANY=104 105 | NONE=105 106 | SINGLE=106 107 | L_0X=107 108 | UnescapedSymbolicName=108 109 | IdentifierStart=109 110 | IdentifierPart=110 111 | EscapedSymbolicName=111 112 | WHITESPACE=112 113 | Comment=113 114 | ';'=1 115 | ','=2 116 | '='=3 117 | '+='=4 118 | '*'=5 119 | '('=6 120 | ')'=7 121 | '['=8 122 | '?'=9 123 | ']'=10 124 | ':'=11 125 | '|'=12 126 | '..'=13 127 | '+'=14 128 | '-'=15 129 | '/'=16 130 | '%'=17 131 | '^'=18 132 | '=~'=19 133 | '<>'=20 134 | '!='=21 135 | '<'=22 136 | '>'=23 137 | '<='=24 138 | '>='=25 139 | '.'=26 140 | '!'=27 141 | '{'=28 142 | '}'=29 143 | '1'=30 144 | '2'=31 145 | '3'=32 146 | '4'=33 147 | '5'=34 148 | '6'=35 149 | '7'=36 150 | '8'=37 151 | '9'=38 152 | '0'=39 153 | 'E'=40 154 | 'e'=41 155 | '⟨'=42 156 | '〈'=43 157 | '﹤'=44 158 | '<'=45 159 | '⟩'=46 160 | '〉'=47 161 | '﹥'=48 162 | '>'=49 163 | '­'=50 164 | '‐'=51 165 | '‑'=52 166 | '‒'=53 167 | '–'=54 168 | '—'=55 169 | '―'=56 170 | '−'=57 171 | '﹘'=58 172 | '﹣'=59 173 | '-'=60 174 | -------------------------------------------------------------------------------- /lib/CypherListener.js: -------------------------------------------------------------------------------- 1 | // Generated from browser-cypher/Cypher.g4 by ANTLR 4.5.3 2 | // jshint ignore: start 3 | module.exports = function (antlr4) { 4 | 5 | // This class defines a complete listener for a parse tree produced by CypherParser. 6 | function CypherListener() { 7 | antlr4.tree.ParseTreeListener.call(this); 8 | return this; 9 | } 10 | 11 | CypherListener.prototype = Object.create(antlr4.tree.ParseTreeListener.prototype); 12 | CypherListener.prototype.constructor = CypherListener; 13 | 14 | // Enter a parse tree produced by CypherParser#cypher. 15 | CypherListener.prototype.enterCypher = function (ctx) { 16 | }; 17 | 18 | // Exit a parse tree produced by CypherParser#cypher. 19 | CypherListener.prototype.exitCypher = function (ctx) { 20 | }; 21 | 22 | 23 | // Enter a parse tree produced by CypherParser#statement. 24 | CypherListener.prototype.enterStatement = function (ctx) { 25 | }; 26 | 27 | // Exit a parse tree produced by CypherParser#statement. 28 | CypherListener.prototype.exitStatement = function (ctx) { 29 | }; 30 | 31 | 32 | // Enter a parse tree produced by CypherParser#query. 33 | CypherListener.prototype.enterQuery = function (ctx) { 34 | }; 35 | 36 | // Exit a parse tree produced by CypherParser#query. 37 | CypherListener.prototype.exitQuery = function (ctx) { 38 | }; 39 | 40 | 41 | // Enter a parse tree produced by CypherParser#regularQuery. 42 | CypherListener.prototype.enterRegularQuery = function (ctx) { 43 | }; 44 | 45 | // Exit a parse tree produced by CypherParser#regularQuery. 46 | CypherListener.prototype.exitRegularQuery = function (ctx) { 47 | }; 48 | 49 | 50 | // Enter a parse tree produced by CypherParser#singleQuery. 51 | CypherListener.prototype.enterSingleQuery = function (ctx) { 52 | }; 53 | 54 | // Exit a parse tree produced by CypherParser#singleQuery. 55 | CypherListener.prototype.exitSingleQuery = function (ctx) { 56 | }; 57 | 58 | 59 | // Enter a parse tree produced by CypherParser#union. 60 | CypherListener.prototype.enterUnion = function (ctx) { 61 | }; 62 | 63 | // Exit a parse tree produced by CypherParser#union. 64 | CypherListener.prototype.exitUnion = function (ctx) { 65 | }; 66 | 67 | 68 | // Enter a parse tree produced by CypherParser#clause. 69 | CypherListener.prototype.enterClause = function (ctx) { 70 | }; 71 | 72 | // Exit a parse tree produced by CypherParser#clause. 73 | CypherListener.prototype.exitClause = function (ctx) { 74 | }; 75 | 76 | 77 | // Enter a parse tree produced by CypherParser#c_match. 78 | CypherListener.prototype.enterC_match = function (ctx) { 79 | }; 80 | 81 | // Exit a parse tree produced by CypherParser#c_match. 82 | CypherListener.prototype.exitC_match = function (ctx) { 83 | }; 84 | 85 | 86 | // Enter a parse tree produced by CypherParser#unwind. 87 | CypherListener.prototype.enterUnwind = function (ctx) { 88 | }; 89 | 90 | // Exit a parse tree produced by CypherParser#unwind. 91 | CypherListener.prototype.exitUnwind = function (ctx) { 92 | }; 93 | 94 | 95 | // Enter a parse tree produced by CypherParser#c_merge. 96 | CypherListener.prototype.enterC_merge = function (ctx) { 97 | }; 98 | 99 | // Exit a parse tree produced by CypherParser#c_merge. 100 | CypherListener.prototype.exitC_merge = function (ctx) { 101 | }; 102 | 103 | 104 | // Enter a parse tree produced by CypherParser#c_mergeAction. 105 | CypherListener.prototype.enterC_mergeAction = function (ctx) { 106 | }; 107 | 108 | // Exit a parse tree produced by CypherParser#c_mergeAction. 109 | CypherListener.prototype.exitC_mergeAction = function (ctx) { 110 | }; 111 | 112 | 113 | // Enter a parse tree produced by CypherParser#create. 114 | CypherListener.prototype.enterCreate = function (ctx) { 115 | }; 116 | 117 | // Exit a parse tree produced by CypherParser#create. 118 | CypherListener.prototype.exitCreate = function (ctx) { 119 | }; 120 | 121 | 122 | // Enter a parse tree produced by CypherParser#c_set. 123 | CypherListener.prototype.enterC_set = function (ctx) { 124 | }; 125 | 126 | // Exit a parse tree produced by CypherParser#c_set. 127 | CypherListener.prototype.exitC_set = function (ctx) { 128 | }; 129 | 130 | 131 | // Enter a parse tree produced by CypherParser#setItem. 132 | CypherListener.prototype.enterSetItem = function (ctx) { 133 | }; 134 | 135 | // Exit a parse tree produced by CypherParser#setItem. 136 | CypherListener.prototype.exitSetItem = function (ctx) { 137 | }; 138 | 139 | 140 | // Enter a parse tree produced by CypherParser#c_delete. 141 | CypherListener.prototype.enterC_delete = function (ctx) { 142 | }; 143 | 144 | // Exit a parse tree produced by CypherParser#c_delete. 145 | CypherListener.prototype.exitC_delete = function (ctx) { 146 | }; 147 | 148 | 149 | // Enter a parse tree produced by CypherParser#remove. 150 | CypherListener.prototype.enterRemove = function (ctx) { 151 | }; 152 | 153 | // Exit a parse tree produced by CypherParser#remove. 154 | CypherListener.prototype.exitRemove = function (ctx) { 155 | }; 156 | 157 | 158 | // Enter a parse tree produced by CypherParser#removeItem. 159 | CypherListener.prototype.enterRemoveItem = function (ctx) { 160 | }; 161 | 162 | // Exit a parse tree produced by CypherParser#removeItem. 163 | CypherListener.prototype.exitRemoveItem = function (ctx) { 164 | }; 165 | 166 | 167 | // Enter a parse tree produced by CypherParser#c_with. 168 | CypherListener.prototype.enterC_with = function (ctx) { 169 | }; 170 | 171 | // Exit a parse tree produced by CypherParser#c_with. 172 | CypherListener.prototype.exitC_with = function (ctx) { 173 | }; 174 | 175 | 176 | // Enter a parse tree produced by CypherParser#c_return. 177 | CypherListener.prototype.enterC_return = function (ctx) { 178 | }; 179 | 180 | // Exit a parse tree produced by CypherParser#c_return. 181 | CypherListener.prototype.exitC_return = function (ctx) { 182 | }; 183 | 184 | 185 | // Enter a parse tree produced by CypherParser#c_returnBody. 186 | CypherListener.prototype.enterC_returnBody = function (ctx) { 187 | }; 188 | 189 | // Exit a parse tree produced by CypherParser#c_returnBody. 190 | CypherListener.prototype.exitC_returnBody = function (ctx) { 191 | }; 192 | 193 | 194 | // Enter a parse tree produced by CypherParser#c_returnItems. 195 | CypherListener.prototype.enterC_returnItems = function (ctx) { 196 | }; 197 | 198 | // Exit a parse tree produced by CypherParser#c_returnItems. 199 | CypherListener.prototype.exitC_returnItems = function (ctx) { 200 | }; 201 | 202 | 203 | // Enter a parse tree produced by CypherParser#c_returnItem. 204 | CypherListener.prototype.enterC_returnItem = function (ctx) { 205 | }; 206 | 207 | // Exit a parse tree produced by CypherParser#c_returnItem. 208 | CypherListener.prototype.exitC_returnItem = function (ctx) { 209 | }; 210 | 211 | 212 | // Enter a parse tree produced by CypherParser#order. 213 | CypherListener.prototype.enterOrder = function (ctx) { 214 | }; 215 | 216 | // Exit a parse tree produced by CypherParser#order. 217 | CypherListener.prototype.exitOrder = function (ctx) { 218 | }; 219 | 220 | 221 | // Enter a parse tree produced by CypherParser#skip. 222 | CypherListener.prototype.enterSkip = function (ctx) { 223 | }; 224 | 225 | // Exit a parse tree produced by CypherParser#skip. 226 | CypherListener.prototype.exitSkip = function (ctx) { 227 | }; 228 | 229 | 230 | // Enter a parse tree produced by CypherParser#limit. 231 | CypherListener.prototype.enterLimit = function (ctx) { 232 | }; 233 | 234 | // Exit a parse tree produced by CypherParser#limit. 235 | CypherListener.prototype.exitLimit = function (ctx) { 236 | }; 237 | 238 | 239 | // Enter a parse tree produced by CypherParser#sortItem. 240 | CypherListener.prototype.enterSortItem = function (ctx) { 241 | }; 242 | 243 | // Exit a parse tree produced by CypherParser#sortItem. 244 | CypherListener.prototype.exitSortItem = function (ctx) { 245 | }; 246 | 247 | 248 | // Enter a parse tree produced by CypherParser#where. 249 | CypherListener.prototype.enterWhere = function (ctx) { 250 | }; 251 | 252 | // Exit a parse tree produced by CypherParser#where. 253 | CypherListener.prototype.exitWhere = function (ctx) { 254 | }; 255 | 256 | 257 | // Enter a parse tree produced by CypherParser#pattern. 258 | CypherListener.prototype.enterPattern = function (ctx) { 259 | }; 260 | 261 | // Exit a parse tree produced by CypherParser#pattern. 262 | CypherListener.prototype.exitPattern = function (ctx) { 263 | }; 264 | 265 | 266 | // Enter a parse tree produced by CypherParser#patternPart. 267 | CypherListener.prototype.enterPatternPart = function (ctx) { 268 | }; 269 | 270 | // Exit a parse tree produced by CypherParser#patternPart. 271 | CypherListener.prototype.exitPatternPart = function (ctx) { 272 | }; 273 | 274 | 275 | // Enter a parse tree produced by CypherParser#anonymousPatternPart. 276 | CypherListener.prototype.enterAnonymousPatternPart = function (ctx) { 277 | }; 278 | 279 | // Exit a parse tree produced by CypherParser#anonymousPatternPart. 280 | CypherListener.prototype.exitAnonymousPatternPart = function (ctx) { 281 | }; 282 | 283 | 284 | // Enter a parse tree produced by CypherParser#patternElement. 285 | CypherListener.prototype.enterPatternElement = function (ctx) { 286 | }; 287 | 288 | // Exit a parse tree produced by CypherParser#patternElement. 289 | CypherListener.prototype.exitPatternElement = function (ctx) { 290 | }; 291 | 292 | 293 | // Enter a parse tree produced by CypherParser#nodePattern. 294 | CypherListener.prototype.enterNodePattern = function (ctx) { 295 | }; 296 | 297 | // Exit a parse tree produced by CypherParser#nodePattern. 298 | CypherListener.prototype.exitNodePattern = function (ctx) { 299 | }; 300 | 301 | 302 | // Enter a parse tree produced by CypherParser#patternElementChain. 303 | CypherListener.prototype.enterPatternElementChain = function (ctx) { 304 | }; 305 | 306 | // Exit a parse tree produced by CypherParser#patternElementChain. 307 | CypherListener.prototype.exitPatternElementChain = function (ctx) { 308 | }; 309 | 310 | 311 | // Enter a parse tree produced by CypherParser#relationshipPattern. 312 | CypherListener.prototype.enterRelationshipPattern = function (ctx) { 313 | }; 314 | 315 | // Exit a parse tree produced by CypherParser#relationshipPattern. 316 | CypherListener.prototype.exitRelationshipPattern = function (ctx) { 317 | }; 318 | 319 | 320 | // Enter a parse tree produced by CypherParser#relationshipDetail. 321 | CypherListener.prototype.enterRelationshipDetail = function (ctx) { 322 | }; 323 | 324 | // Exit a parse tree produced by CypherParser#relationshipDetail. 325 | CypherListener.prototype.exitRelationshipDetail = function (ctx) { 326 | }; 327 | 328 | 329 | // Enter a parse tree produced by CypherParser#properties. 330 | CypherListener.prototype.enterProperties = function (ctx) { 331 | }; 332 | 333 | // Exit a parse tree produced by CypherParser#properties. 334 | CypherListener.prototype.exitProperties = function (ctx) { 335 | }; 336 | 337 | 338 | // Enter a parse tree produced by CypherParser#relationshipTypes. 339 | CypherListener.prototype.enterRelationshipTypes = function (ctx) { 340 | }; 341 | 342 | // Exit a parse tree produced by CypherParser#relationshipTypes. 343 | CypherListener.prototype.exitRelationshipTypes = function (ctx) { 344 | }; 345 | 346 | 347 | // Enter a parse tree produced by CypherParser#nodeLabels. 348 | CypherListener.prototype.enterNodeLabels = function (ctx) { 349 | }; 350 | 351 | // Exit a parse tree produced by CypherParser#nodeLabels. 352 | CypherListener.prototype.exitNodeLabels = function (ctx) { 353 | }; 354 | 355 | 356 | // Enter a parse tree produced by CypherParser#nodeLabel. 357 | CypherListener.prototype.enterNodeLabel = function (ctx) { 358 | }; 359 | 360 | // Exit a parse tree produced by CypherParser#nodeLabel. 361 | CypherListener.prototype.exitNodeLabel = function (ctx) { 362 | }; 363 | 364 | 365 | // Enter a parse tree produced by CypherParser#rangeLiteral. 366 | CypherListener.prototype.enterRangeLiteral = function (ctx) { 367 | }; 368 | 369 | // Exit a parse tree produced by CypherParser#rangeLiteral. 370 | CypherListener.prototype.exitRangeLiteral = function (ctx) { 371 | }; 372 | 373 | 374 | // Enter a parse tree produced by CypherParser#labelName. 375 | CypherListener.prototype.enterLabelName = function (ctx) { 376 | }; 377 | 378 | // Exit a parse tree produced by CypherParser#labelName. 379 | CypherListener.prototype.exitLabelName = function (ctx) { 380 | }; 381 | 382 | 383 | // Enter a parse tree produced by CypherParser#relTypeName. 384 | CypherListener.prototype.enterRelTypeName = function (ctx) { 385 | }; 386 | 387 | // Exit a parse tree produced by CypherParser#relTypeName. 388 | CypherListener.prototype.exitRelTypeName = function (ctx) { 389 | }; 390 | 391 | 392 | // Enter a parse tree produced by CypherParser#expression. 393 | CypherListener.prototype.enterExpression = function (ctx) { 394 | }; 395 | 396 | // Exit a parse tree produced by CypherParser#expression. 397 | CypherListener.prototype.exitExpression = function (ctx) { 398 | }; 399 | 400 | 401 | // Enter a parse tree produced by CypherParser#expression12. 402 | CypherListener.prototype.enterExpression12 = function (ctx) { 403 | }; 404 | 405 | // Exit a parse tree produced by CypherParser#expression12. 406 | CypherListener.prototype.exitExpression12 = function (ctx) { 407 | }; 408 | 409 | 410 | // Enter a parse tree produced by CypherParser#expression11. 411 | CypherListener.prototype.enterExpression11 = function (ctx) { 412 | }; 413 | 414 | // Exit a parse tree produced by CypherParser#expression11. 415 | CypherListener.prototype.exitExpression11 = function (ctx) { 416 | }; 417 | 418 | 419 | // Enter a parse tree produced by CypherParser#expression10. 420 | CypherListener.prototype.enterExpression10 = function (ctx) { 421 | }; 422 | 423 | // Exit a parse tree produced by CypherParser#expression10. 424 | CypherListener.prototype.exitExpression10 = function (ctx) { 425 | }; 426 | 427 | 428 | // Enter a parse tree produced by CypherParser#expression9. 429 | CypherListener.prototype.enterExpression9 = function (ctx) { 430 | }; 431 | 432 | // Exit a parse tree produced by CypherParser#expression9. 433 | CypherListener.prototype.exitExpression9 = function (ctx) { 434 | }; 435 | 436 | 437 | // Enter a parse tree produced by CypherParser#expression8. 438 | CypherListener.prototype.enterExpression8 = function (ctx) { 439 | }; 440 | 441 | // Exit a parse tree produced by CypherParser#expression8. 442 | CypherListener.prototype.exitExpression8 = function (ctx) { 443 | }; 444 | 445 | 446 | // Enter a parse tree produced by CypherParser#expression7. 447 | CypherListener.prototype.enterExpression7 = function (ctx) { 448 | }; 449 | 450 | // Exit a parse tree produced by CypherParser#expression7. 451 | CypherListener.prototype.exitExpression7 = function (ctx) { 452 | }; 453 | 454 | 455 | // Enter a parse tree produced by CypherParser#expression6. 456 | CypherListener.prototype.enterExpression6 = function (ctx) { 457 | }; 458 | 459 | // Exit a parse tree produced by CypherParser#expression6. 460 | CypherListener.prototype.exitExpression6 = function (ctx) { 461 | }; 462 | 463 | 464 | // Enter a parse tree produced by CypherParser#expression5. 465 | CypherListener.prototype.enterExpression5 = function (ctx) { 466 | }; 467 | 468 | // Exit a parse tree produced by CypherParser#expression5. 469 | CypherListener.prototype.exitExpression5 = function (ctx) { 470 | }; 471 | 472 | 473 | // Enter a parse tree produced by CypherParser#expression4. 474 | CypherListener.prototype.enterExpression4 = function (ctx) { 475 | }; 476 | 477 | // Exit a parse tree produced by CypherParser#expression4. 478 | CypherListener.prototype.exitExpression4 = function (ctx) { 479 | }; 480 | 481 | 482 | // Enter a parse tree produced by CypherParser#expression3. 483 | CypherListener.prototype.enterExpression3 = function (ctx) { 484 | }; 485 | 486 | // Exit a parse tree produced by CypherParser#expression3. 487 | CypherListener.prototype.exitExpression3 = function (ctx) { 488 | }; 489 | 490 | 491 | // Enter a parse tree produced by CypherParser#expression2. 492 | CypherListener.prototype.enterExpression2 = function (ctx) { 493 | }; 494 | 495 | // Exit a parse tree produced by CypherParser#expression2. 496 | CypherListener.prototype.exitExpression2 = function (ctx) { 497 | }; 498 | 499 | 500 | // Enter a parse tree produced by CypherParser#atom. 501 | CypherListener.prototype.enterAtom = function (ctx) { 502 | }; 503 | 504 | // Exit a parse tree produced by CypherParser#atom. 505 | CypherListener.prototype.exitAtom = function (ctx) { 506 | }; 507 | 508 | 509 | // Enter a parse tree produced by CypherParser#partialComparisonExpression. 510 | CypherListener.prototype.enterPartialComparisonExpression = function (ctx) { 511 | }; 512 | 513 | // Exit a parse tree produced by CypherParser#partialComparisonExpression. 514 | CypherListener.prototype.exitPartialComparisonExpression = function (ctx) { 515 | }; 516 | 517 | 518 | // Enter a parse tree produced by CypherParser#parenthesizedExpression. 519 | CypherListener.prototype.enterParenthesizedExpression = function (ctx) { 520 | }; 521 | 522 | // Exit a parse tree produced by CypherParser#parenthesizedExpression. 523 | CypherListener.prototype.exitParenthesizedExpression = function (ctx) { 524 | }; 525 | 526 | 527 | // Enter a parse tree produced by CypherParser#relationshipsPattern. 528 | CypherListener.prototype.enterRelationshipsPattern = function (ctx) { 529 | }; 530 | 531 | // Exit a parse tree produced by CypherParser#relationshipsPattern. 532 | CypherListener.prototype.exitRelationshipsPattern = function (ctx) { 533 | }; 534 | 535 | 536 | // Enter a parse tree produced by CypherParser#filterExpression. 537 | CypherListener.prototype.enterFilterExpression = function (ctx) { 538 | }; 539 | 540 | // Exit a parse tree produced by CypherParser#filterExpression. 541 | CypherListener.prototype.exitFilterExpression = function (ctx) { 542 | }; 543 | 544 | 545 | // Enter a parse tree produced by CypherParser#idInColl. 546 | CypherListener.prototype.enterIdInColl = function (ctx) { 547 | }; 548 | 549 | // Exit a parse tree produced by CypherParser#idInColl. 550 | CypherListener.prototype.exitIdInColl = function (ctx) { 551 | }; 552 | 553 | 554 | // Enter a parse tree produced by CypherParser#functionInvocation. 555 | CypherListener.prototype.enterFunctionInvocation = function (ctx) { 556 | }; 557 | 558 | // Exit a parse tree produced by CypherParser#functionInvocation. 559 | CypherListener.prototype.exitFunctionInvocation = function (ctx) { 560 | }; 561 | 562 | 563 | // Enter a parse tree produced by CypherParser#functionName. 564 | CypherListener.prototype.enterFunctionName = function (ctx) { 565 | }; 566 | 567 | // Exit a parse tree produced by CypherParser#functionName. 568 | CypherListener.prototype.exitFunctionName = function (ctx) { 569 | }; 570 | 571 | 572 | // Enter a parse tree produced by CypherParser#listComprehension. 573 | CypherListener.prototype.enterListComprehension = function (ctx) { 574 | }; 575 | 576 | // Exit a parse tree produced by CypherParser#listComprehension. 577 | CypherListener.prototype.exitListComprehension = function (ctx) { 578 | }; 579 | 580 | 581 | // Enter a parse tree produced by CypherParser#propertyLookup. 582 | CypherListener.prototype.enterPropertyLookup = function (ctx) { 583 | }; 584 | 585 | // Exit a parse tree produced by CypherParser#propertyLookup. 586 | CypherListener.prototype.exitPropertyLookup = function (ctx) { 587 | }; 588 | 589 | 590 | // Enter a parse tree produced by CypherParser#variable. 591 | CypherListener.prototype.enterVariable = function (ctx) { 592 | }; 593 | 594 | // Exit a parse tree produced by CypherParser#variable. 595 | CypherListener.prototype.exitVariable = function (ctx) { 596 | }; 597 | 598 | 599 | // Enter a parse tree produced by CypherParser#numberLiteral. 600 | CypherListener.prototype.enterNumberLiteral = function (ctx) { 601 | }; 602 | 603 | // Exit a parse tree produced by CypherParser#numberLiteral. 604 | CypherListener.prototype.exitNumberLiteral = function (ctx) { 605 | }; 606 | 607 | 608 | // Enter a parse tree produced by CypherParser#mapLiteral. 609 | CypherListener.prototype.enterMapLiteral = function (ctx) { 610 | }; 611 | 612 | // Exit a parse tree produced by CypherParser#mapLiteral. 613 | CypherListener.prototype.exitMapLiteral = function (ctx) { 614 | }; 615 | 616 | 617 | // Enter a parse tree produced by CypherParser#parameter. 618 | CypherListener.prototype.enterParameter = function (ctx) { 619 | }; 620 | 621 | // Exit a parse tree produced by CypherParser#parameter. 622 | CypherListener.prototype.exitParameter = function (ctx) { 623 | }; 624 | 625 | 626 | // Enter a parse tree produced by CypherParser#propertyExpression. 627 | CypherListener.prototype.enterPropertyExpression = function (ctx) { 628 | }; 629 | 630 | // Exit a parse tree produced by CypherParser#propertyExpression. 631 | CypherListener.prototype.exitPropertyExpression = function (ctx) { 632 | }; 633 | 634 | 635 | // Enter a parse tree produced by CypherParser#propertyKeyName. 636 | CypherListener.prototype.enterPropertyKeyName = function (ctx) { 637 | }; 638 | 639 | // Exit a parse tree produced by CypherParser#propertyKeyName. 640 | CypherListener.prototype.exitPropertyKeyName = function (ctx) { 641 | }; 642 | 643 | 644 | // Enter a parse tree produced by CypherParser#signedIntegerLiteral. 645 | CypherListener.prototype.enterSignedIntegerLiteral = function (ctx) { 646 | }; 647 | 648 | // Exit a parse tree produced by CypherParser#signedIntegerLiteral. 649 | CypherListener.prototype.exitSignedIntegerLiteral = function (ctx) { 650 | }; 651 | 652 | 653 | // Enter a parse tree produced by CypherParser#unsignedIntegerLiteral. 654 | CypherListener.prototype.enterUnsignedIntegerLiteral = function (ctx) { 655 | }; 656 | 657 | // Exit a parse tree produced by CypherParser#unsignedIntegerLiteral. 658 | CypherListener.prototype.exitUnsignedIntegerLiteral = function (ctx) { 659 | }; 660 | 661 | 662 | // Enter a parse tree produced by CypherParser#hexInteger. 663 | CypherListener.prototype.enterHexInteger = function (ctx) { 664 | }; 665 | 666 | // Exit a parse tree produced by CypherParser#hexInteger. 667 | CypherListener.prototype.exitHexInteger = function (ctx) { 668 | }; 669 | 670 | 671 | // Enter a parse tree produced by CypherParser#decimalInteger. 672 | CypherListener.prototype.enterDecimalInteger = function (ctx) { 673 | }; 674 | 675 | // Exit a parse tree produced by CypherParser#decimalInteger. 676 | CypherListener.prototype.exitDecimalInteger = function (ctx) { 677 | }; 678 | 679 | 680 | // Enter a parse tree produced by CypherParser#octalInteger. 681 | CypherListener.prototype.enterOctalInteger = function (ctx) { 682 | }; 683 | 684 | // Exit a parse tree produced by CypherParser#octalInteger. 685 | CypherListener.prototype.exitOctalInteger = function (ctx) { 686 | }; 687 | 688 | 689 | // Enter a parse tree produced by CypherParser#unsignedHexInteger. 690 | CypherListener.prototype.enterUnsignedHexInteger = function (ctx) { 691 | }; 692 | 693 | // Exit a parse tree produced by CypherParser#unsignedHexInteger. 694 | CypherListener.prototype.exitUnsignedHexInteger = function (ctx) { 695 | }; 696 | 697 | 698 | // Enter a parse tree produced by CypherParser#unsignedDecimalInteger. 699 | CypherListener.prototype.enterUnsignedDecimalInteger = function (ctx) { 700 | }; 701 | 702 | // Exit a parse tree produced by CypherParser#unsignedDecimalInteger. 703 | CypherListener.prototype.exitUnsignedDecimalInteger = function (ctx) { 704 | }; 705 | 706 | 707 | // Enter a parse tree produced by CypherParser#unsignedOctalInteger. 708 | CypherListener.prototype.enterUnsignedOctalInteger = function (ctx) { 709 | }; 710 | 711 | // Exit a parse tree produced by CypherParser#unsignedOctalInteger. 712 | CypherListener.prototype.exitUnsignedOctalInteger = function (ctx) { 713 | }; 714 | 715 | 716 | // Enter a parse tree produced by CypherParser#hexString. 717 | CypherListener.prototype.enterHexString = function (ctx) { 718 | }; 719 | 720 | // Exit a parse tree produced by CypherParser#hexString. 721 | CypherListener.prototype.exitHexString = function (ctx) { 722 | }; 723 | 724 | 725 | // Enter a parse tree produced by CypherParser#digitString. 726 | CypherListener.prototype.enterDigitString = function (ctx) { 727 | }; 728 | 729 | // Exit a parse tree produced by CypherParser#digitString. 730 | CypherListener.prototype.exitDigitString = function (ctx) { 731 | }; 732 | 733 | 734 | // Enter a parse tree produced by CypherParser#octalString. 735 | CypherListener.prototype.enterOctalString = function (ctx) { 736 | }; 737 | 738 | // Exit a parse tree produced by CypherParser#octalString. 739 | CypherListener.prototype.exitOctalString = function (ctx) { 740 | }; 741 | 742 | 743 | // Enter a parse tree produced by CypherParser#digit. 744 | CypherListener.prototype.enterDigit = function (ctx) { 745 | }; 746 | 747 | // Exit a parse tree produced by CypherParser#digit. 748 | CypherListener.prototype.exitDigit = function (ctx) { 749 | }; 750 | 751 | 752 | // Enter a parse tree produced by CypherParser#octDigit. 753 | CypherListener.prototype.enterOctDigit = function (ctx) { 754 | }; 755 | 756 | // Exit a parse tree produced by CypherParser#octDigit. 757 | CypherListener.prototype.exitOctDigit = function (ctx) { 758 | }; 759 | 760 | 761 | // Enter a parse tree produced by CypherParser#doubleLiteral. 762 | CypherListener.prototype.enterDoubleLiteral = function (ctx) { 763 | }; 764 | 765 | // Exit a parse tree produced by CypherParser#doubleLiteral. 766 | CypherListener.prototype.exitDoubleLiteral = function (ctx) { 767 | }; 768 | 769 | 770 | // Enter a parse tree produced by CypherParser#exponentDecimalReal. 771 | CypherListener.prototype.enterExponentDecimalReal = function (ctx) { 772 | }; 773 | 774 | // Exit a parse tree produced by CypherParser#exponentDecimalReal. 775 | CypherListener.prototype.exitExponentDecimalReal = function (ctx) { 776 | }; 777 | 778 | 779 | // Enter a parse tree produced by CypherParser#regularDecimalReal. 780 | CypherListener.prototype.enterRegularDecimalReal = function (ctx) { 781 | }; 782 | 783 | // Exit a parse tree produced by CypherParser#regularDecimalReal. 784 | CypherListener.prototype.exitRegularDecimalReal = function (ctx) { 785 | }; 786 | 787 | 788 | // Enter a parse tree produced by CypherParser#symbolicName. 789 | CypherListener.prototype.enterSymbolicName = function (ctx) { 790 | }; 791 | 792 | // Exit a parse tree produced by CypherParser#symbolicName. 793 | CypherListener.prototype.exitSymbolicName = function (ctx) { 794 | }; 795 | 796 | 797 | // Enter a parse tree produced by CypherParser#ws. 798 | CypherListener.prototype.enterWs = function (ctx) { 799 | }; 800 | 801 | // Exit a parse tree produced by CypherParser#ws. 802 | CypherListener.prototype.exitWs = function (ctx) { 803 | }; 804 | 805 | 806 | // Enter a parse tree produced by CypherParser#sp. 807 | CypherListener.prototype.enterSp = function (ctx) { 808 | }; 809 | 810 | // Exit a parse tree produced by CypherParser#sp. 811 | CypherListener.prototype.exitSp = function (ctx) { 812 | }; 813 | 814 | 815 | // Enter a parse tree produced by CypherParser#leftArrowHead. 816 | CypherListener.prototype.enterLeftArrowHead = function (ctx) { 817 | }; 818 | 819 | // Exit a parse tree produced by CypherParser#leftArrowHead. 820 | CypherListener.prototype.exitLeftArrowHead = function (ctx) { 821 | }; 822 | 823 | 824 | // Enter a parse tree produced by CypherParser#rightArrowHead. 825 | CypherListener.prototype.enterRightArrowHead = function (ctx) { 826 | }; 827 | 828 | // Exit a parse tree produced by CypherParser#rightArrowHead. 829 | CypherListener.prototype.exitRightArrowHead = function (ctx) { 830 | }; 831 | 832 | 833 | // Enter a parse tree produced by CypherParser#dash. 834 | CypherListener.prototype.enterDash = function (ctx) { 835 | }; 836 | 837 | // Exit a parse tree produced by CypherParser#dash. 838 | CypherListener.prototype.exitDash = function (ctx) { 839 | }; 840 | 841 | 842 | return CypherListener; 843 | } -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | // Template has been taken from 2 | // https://github.com/umdjs/umd/blob/master/templates/returnExports.js 3 | 4 | // Uses Node, AMD or browser globals to create a module. 5 | 6 | // If you want something that will work in other stricter CommonJS environments, 7 | // or if you need to create a circular dependency, see commonJsStrict.js 8 | 9 | // Defines a module "returnExports" that depends another module called "b". 10 | // Note that the name of the module is implied by the file name. It is best 11 | // if the file name and the exported global have matching names. 12 | 13 | // If the 'b' module also uses this type of boilerplate, then 14 | // in the browser, it will create a global .b that is used below. 15 | 16 | // If you do not want to support the browser global path, then you 17 | // can remove the `root` use and the passing `this` as the first arg to 18 | // the top function. 19 | 20 | 21 | // if the module has no dependencies, the above pattern can be simplified to 22 | (function (root, factory) { 23 | if (typeof define === 'function' && define.amd) { 24 | // AMD. Register as an anonymous module. 25 | define([], factory); 26 | } else if (typeof module === 'object' && module.exports) { 27 | // Node. Does not work with strict CommonJS, but 28 | // only CommonJS-like environments that support module.exports, 29 | // like Node. 30 | module.exports = factory(); 31 | } else { 32 | // Browser globals (root is window) 33 | root.returnExports = factory(); 34 | } 35 | }(this, function () { 36 | var CypherLexer = require('./lib/CypherLexer.js'); 37 | var CypherParser = require('./lib/CypherParser.js'); 38 | var CypherListener = require('./lib/CypherListener'); 39 | var antlr4 = require('antlr4'); 40 | 41 | var listener = CypherListener(antlr4); 42 | 43 | // Just return a value to define the module export. 44 | // This example returns an object, but the module 45 | // can return a function as the exported value. 46 | return { 47 | CypherLexer: CypherLexer(antlr4), 48 | CypherParser: CypherParser(antlr4, listener), 49 | CypherListener: listener, 50 | antlr4: antlr4 51 | 52 | }; 53 | })); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "antlr4-javascript-cypher", 3 | "version": "1.0.0", 4 | "description": "antlr4-javascript-cypher UMD", 5 | "scripts": { 6 | "browserify": "node node_modules/browserify/bin/cmd.js --ignore-missing main.js -o release/antlr4-cypher.js", 7 | "uglify": "node node_modules/uglify-js/bin/uglifyjs release/antlr4-cypher.js -o release/antlr4-cypher-min.js -m -c", 8 | "build-cypher": "antlr4 -Dlanguage=JavaScript grammars/cypher/Cypher.g4 -o lib" 9 | }, 10 | "main": "release/antlr4-cypher.js", 11 | "repository": { 12 | "type": "git", 13 | "url": "https://github.com/bastiion/antlr4-javascript-cypher.git" 14 | }, 15 | "keywords": [ 16 | "antlr4", 17 | "umd" 18 | ], 19 | "author": "Sebastian Tilsch", 20 | "license": "Apache 2.0", 21 | "bugs": { 22 | "url": "https://github.com/bastiion/antlr4-javascript-cypher/issues" 23 | }, 24 | "homepage": "https://github.com/bastiion/antlr4-javascript-cypher", 25 | "devDependencies": { 26 | "browserify": "^10.2.4", 27 | "uglify-js": "^2.7.0" 28 | }, 29 | "dependencies": { 30 | "antlr4": "^4.5.2" 31 | } 32 | } 33 | --------------------------------------------------------------------------------