plum

#treesitter#compiler#wasm

git clone https://git.pyrossh.dev/plum

A statically typed, imperative programming language inspired by rust, python


e832171Peter John 2022-11-07T01:04:41+05:30
intitial commit
.gitattributes ADDED
@@ -0,0 +1,2 @@
1
+ /src/** linguist-vendored
2
+ /examples/* linguist-vendored
.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ Cargo.lock
2
+ package-lock.json
3
+ node_modules
4
+ build
5
+ *.log
6
+ /examples/*/
7
+ /target/
.npmignore ADDED
@@ -0,0 +1,6 @@
1
+ corpus
2
+ examples
3
+ build
4
+ script
5
+ target
6
+ bindings/rust
Cargo.toml ADDED
@@ -0,0 +1,26 @@
1
+ [package]
2
+ name = "tree-sitter-pine"
3
+ description = "pine grammar for the tree-sitter parsing library"
4
+ version = "0.0.1"
5
+ keywords = ["incremental", "parsing", "pine"]
6
+ categories = ["parsing", "text-editors"]
7
+ repository = "https://github.com/tree-sitter/tree-sitter-pine"
8
+ edition = "2018"
9
+ license = "MIT"
10
+
11
+ build = "bindings/rust/build.rs"
12
+ include = [
13
+ "bindings/rust/*",
14
+ "grammar.js",
15
+ "queries/*",
16
+ "src/*",
17
+ ]
18
+
19
+ [lib]
20
+ path = "bindings/rust/lib.rs"
21
+
22
+ [dependencies]
23
+ tree-sitter = "~0.20"
24
+
25
+ [build-dependencies]
26
+ cc = "1.0"
binding.gyp ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "targets": [
3
+ {
4
+ "target_name": "tree_sitter_pine_binding",
5
+ "include_dirs": [
6
+ "<!(node -e \"require('nan')\")",
7
+ "src"
8
+ ],
9
+ "sources": [
10
+ "bindings/node/binding.cc",
11
+ "src/parser.c",
12
+ "src/scanner.cc",
13
+ ],
14
+ "cflags_c": [
15
+ "-std=c99",
16
+ ]
17
+ }
18
+ ]
19
+ }
bindings/node/binding.cc ADDED
@@ -0,0 +1,28 @@
1
+ #include "tree_sitter/parser.h"
2
+ #include <node.h>
3
+ #include "nan.h"
4
+
5
+ using namespace v8;
6
+
7
+ extern "C" TSLanguage * tree_sitter_pine();
8
+
9
+ namespace {
10
+
11
+ NAN_METHOD(New) {}
12
+
13
+ void Init(Local<Object> exports, Local<Object> module) {
14
+ Local<FunctionTemplate> tpl = Nan::New<FunctionTemplate>(New);
15
+ tpl->SetClassName(Nan::New("Language").ToLocalChecked());
16
+ tpl->InstanceTemplate()->SetInternalFieldCount(1);
17
+
18
+ Local<Function> constructor = Nan::GetFunction(tpl).ToLocalChecked();
19
+ Local<Object> instance = constructor->NewInstance(Nan::GetCurrentContext()).ToLocalChecked();
20
+ Nan::SetInternalFieldPointer(instance, 0, tree_sitter_pine());
21
+
22
+ Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("pine").ToLocalChecked());
23
+ Nan::Set(module, Nan::New("exports").ToLocalChecked(), instance);
24
+ }
25
+
26
+ NODE_MODULE(tree_sitter_pine_binding, Init)
27
+
28
+ } // namespace
bindings/node/index.js ADDED
@@ -0,0 +1,19 @@
1
+ try {
2
+ module.exports = require("../../build/Release/tree_sitter_pine_binding");
3
+ } catch (error1) {
4
+ if (error1.code !== 'MODULE_NOT_FOUND') {
5
+ throw error1;
6
+ }
7
+ try {
8
+ module.exports = require("../../build/Debug/tree_sitter_pine_binding");
9
+ } catch (error2) {
10
+ if (error2.code !== 'MODULE_NOT_FOUND') {
11
+ throw error2;
12
+ }
13
+ throw error1
14
+ }
15
+ }
16
+
17
+ try {
18
+ module.exports.nodeTypeInfo = require("../../src/node-types.json");
19
+ } catch (_) {}
bindings/rust/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # tree-sitter-python
2
+
3
+ This crate provides a Python grammar for the [tree-sitter][] parsing library.
4
+ To use this crate, add it to the `[dependencies]` section of your `Cargo.toml`
5
+ file. (Note that you will probably also need to depend on the
6
+ [`tree-sitter`][tree-sitter crate] crate to use the parsed result in any useful
7
+ way.)
8
+
9
+ ``` toml
10
+ [dependencies]
11
+ tree-sitter = "0.17"
12
+ tree-sitter-python = "0.17"
13
+ ```
14
+
15
+ Typically, you will use the [language][language func] function to add this
16
+ grammar to a tree-sitter [Parser][], and then use the parser to parse some code:
17
+
18
+ ``` rust
19
+ let code = r#"
20
+ def double(x):
21
+ return x * 2
22
+ "#;
23
+ let mut parser = Parser::new();
24
+ parser.set_language(tree_sitter_python::language()).expect("Error loading Python grammar");
25
+ let parsed = parser.parse(code, None);
26
+ ```
27
+
28
+ If you have any questions, please reach out to us in the [tree-sitter
29
+ discussions] page.
30
+
31
+ [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html
32
+ [language func]: https://docs.rs/tree-sitter-python/*/tree_sitter_python/fn.language.html
33
+ [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html
34
+ [tree-sitter]: https://tree-sitter.github.io/
35
+ [tree-sitter crate]: https://crates.io/crates/tree-sitter
36
+ [tree-sitter discussions]: https://github.com/tree-sitter/tree-sitter/discussions
bindings/rust/build.rs ADDED
@@ -0,0 +1,28 @@
1
+ use std::path::Path;
2
+ extern crate cc;
3
+
4
+ fn main() {
5
+ let src_dir = Path::new("src");
6
+
7
+ let mut c_config = cc::Build::new();
8
+ c_config.include(&src_dir);
9
+ c_config
10
+ .flag_if_supported("-Wno-unused-parameter")
11
+ .flag_if_supported("-Wno-unused-but-set-variable")
12
+ .flag_if_supported("-Wno-trigraphs");
13
+ let parser_path = src_dir.join("parser.c");
14
+ c_config.file(&parser_path);
15
+ println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap());
16
+ c_config.compile("parser");
17
+
18
+ let mut cpp_config = cc::Build::new();
19
+ cpp_config.cpp(true);
20
+ cpp_config.include(&src_dir);
21
+ cpp_config
22
+ .flag_if_supported("-Wno-unused-parameter")
23
+ .flag_if_supported("-Wno-unused-but-set-variable");
24
+ let scanner_path = src_dir.join("scanner.cc");
25
+ cpp_config.file(&scanner_path);
26
+ println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap());
27
+ cpp_config.compile("scanner");
28
+ }
bindings/rust/lib.rs ADDED
@@ -0,0 +1,68 @@
1
+ // -*- coding: utf-8 -*-
2
+ // ------------------------------------------------------------------------------------------------
3
+ // Copyright © 2020, tree-sitter-python authors.
4
+ // See the LICENSE file in this repo for license details.
5
+ // ------------------------------------------------------------------------------------------------
6
+
7
+ //! This crate provides a Python grammar for the [tree-sitter][] parsing library.
8
+ //!
9
+ //! Typically, you will use the [language][language func] function to add this grammar to a
10
+ //! tree-sitter [Parser][], and then use the parser to parse some code:
11
+ //!
12
+ //! ```
13
+ //! use tree_sitter::Parser;
14
+ //!
15
+ //! let code = r#"
16
+ //! def double(x):
17
+ //! return x * 2
18
+ //! "#;
19
+ //! let mut parser = Parser::new();
20
+ //! parser.set_language(tree_sitter_python::language()).expect("Error loading Python grammar");
21
+ //! let parsed = parser.parse(code, None);
22
+ //! # let parsed = parsed.unwrap();
23
+ //! # let root = parsed.root_node();
24
+ //! # assert!(!root.has_error());
25
+ //! ```
26
+ //!
27
+ //! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html
28
+ //! [language func]: fn.language.html
29
+ //! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html
30
+ //! [tree-sitter]: https://tree-sitter.github.io/
31
+
32
+ use tree_sitter::Language;
33
+
34
+ extern "C" {
35
+ fn tree_sitter_python() -> Language;
36
+ }
37
+
38
+ /// Returns the tree-sitter [Language][] for this grammar.
39
+ ///
40
+ /// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html
41
+ pub fn language() -> Language {
42
+ unsafe { tree_sitter_python() }
43
+ }
44
+
45
+ /// The source of the Python tree-sitter grammar description.
46
+ pub const GRAMMAR: &'static str = include_str!("../../grammar.js");
47
+
48
+ /// The syntax highlighting query for this language.
49
+ pub const HIGHLIGHT_QUERY: &'static str = include_str!("../../queries/highlights.scm");
50
+
51
+ /// The content of the [`node-types.json`][] file for this grammar.
52
+ ///
53
+ /// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types
54
+ pub const NODE_TYPES: &'static str = include_str!("../../src/node-types.json");
55
+
56
+ /// The symbol tagging query for this language.
57
+ pub const TAGGING_QUERY: &'static str = include_str!("../../queries/tags.scm");
58
+
59
+ #[cfg(test)]
60
+ mod tests {
61
+ #[test]
62
+ fn can_load_grammar() {
63
+ let mut parser = tree_sitter::Parser::new();
64
+ parser
65
+ .set_language(super::language())
66
+ .expect("Error loading Python grammar");
67
+ }
68
+ }
grammar.js ADDED
@@ -0,0 +1,77 @@
1
+ module.exports = grammar({
2
+ name: 'pine',
3
+ externals: $ => [
4
+ $._newline,
5
+ $._indent,
6
+ $._dedent,
7
+ $._string_start,
8
+ $._string_content,
9
+ $._string_end,
10
+
11
+ // Mark comments as external tokens so that the external scanner is always
12
+ // invoked, even if no external token is expected. This allows for better
13
+ // error recovery, because the external scanner can maintain the overall
14
+ // structure by returning dedent tokens whenever a dedent occurs, even
15
+ // if no dedent is expected.
16
+ $.comment,
17
+
18
+ // Allow the external scanner to check for the validity of closing brackets
19
+ // so that it can avoid returning dedent tokens between brackets.
20
+ ']',
21
+ ')',
22
+ '}',
23
+ ],
24
+ rules: {
25
+ module: $ => repeat($._definitions),
26
+
27
+ _definitions: $ => choice(
28
+ $.import_statement,
29
+ $.class_definition,
30
+ ),
31
+
32
+ import_statement: $ => seq(
33
+ 'import',
34
+ commaSep1(field('name', sep1($.identifier, '/')))
35
+ ),
36
+
37
+ class_definition: $ => seq(
38
+ 'class',
39
+ field('name', $.identifier),
40
+ field('generics', optional($.generic_list)),
41
+ field('traits', optional($.trait_list)),
42
+ ':',
43
+ field('fields', seq($._indent, seq(
44
+ repeat($.type_pair),
45
+ $._dedent
46
+ ))),
47
+ ),
48
+
49
+ trait_list: $ => seq(
50
+ '(',
51
+ commaSep1($.identifier),
52
+ ')'
53
+ ),
54
+
55
+ generic_list: $ => seq(
56
+ '<',
57
+ commaSep1($.identifier),
58
+ '>'
59
+ ),
60
+
61
+ type_pair: $ => seq(
62
+ field('key', $.identifier),
63
+ ':',
64
+ field('value', $.identifier)
65
+ ),
66
+
67
+ identifier: $ => /[_\p{XID_Start}][_\p{XID_Continue}]*/,
68
+ }
69
+ });
70
+
71
+ function commaSep1(rule) {
72
+ return sep1(rule, ',')
73
+ }
74
+
75
+ function sep1(rule, separator) {
76
+ return seq(rule, repeat(seq(separator, rule)))
77
+ }
package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "tree-sitter-pine",
3
+ "version": "1.0.0",
4
+ "main": "bindings/node",
5
+ "description": "Pine grammar for tree-sitter",
6
+ "scripts": {
7
+ "build": "tree-sitter generate && node-gyp build",
8
+ "test": "tree-sitter test && script/parse-examples",
9
+ "parse": "tree-sitter parse",
10
+ "test-windows": "tree-sitter test"
11
+ },
12
+ "author": "pyrossh",
13
+ "license": "MIT",
14
+ "keywords": [
15
+ "parser",
16
+ "lexer",
17
+ "pine"
18
+ ],
19
+ "dependencies": {
20
+ "nan": "^2.17.0"
21
+ },
22
+ "devDependencies": {
23
+ "tree-sitter-cli": "^0.20.7"
24
+ },
25
+ "repository": "https://github.com/pyrossh/tree-sitter-pine",
26
+ "tree-sitter": [
27
+ {
28
+ "scope": "source.pine",
29
+ "file-types": [
30
+ "pi"
31
+ ]
32
+ }
33
+ ]
34
+ }
src/grammar.json ADDED
@@ -0,0 +1,349 @@
1
+ {
2
+ "name": "pine",
3
+ "rules": {
4
+ "module": {
5
+ "type": "REPEAT",
6
+ "content": {
7
+ "type": "SYMBOL",
8
+ "name": "_definitions"
9
+ }
10
+ },
11
+ "_definitions": {
12
+ "type": "CHOICE",
13
+ "members": [
14
+ {
15
+ "type": "SYMBOL",
16
+ "name": "import_statement"
17
+ },
18
+ {
19
+ "type": "SYMBOL",
20
+ "name": "class_definition"
21
+ }
22
+ ]
23
+ },
24
+ "import_statement": {
25
+ "type": "SEQ",
26
+ "members": [
27
+ {
28
+ "type": "STRING",
29
+ "value": "import"
30
+ },
31
+ {
32
+ "type": "SEQ",
33
+ "members": [
34
+ {
35
+ "type": "FIELD",
36
+ "name": "name",
37
+ "content": {
38
+ "type": "SEQ",
39
+ "members": [
40
+ {
41
+ "type": "SYMBOL",
42
+ "name": "identifier"
43
+ },
44
+ {
45
+ "type": "REPEAT",
46
+ "content": {
47
+ "type": "SEQ",
48
+ "members": [
49
+ {
50
+ "type": "STRING",
51
+ "value": "/"
52
+ },
53
+ {
54
+ "type": "SYMBOL",
55
+ "name": "identifier"
56
+ }
57
+ ]
58
+ }
59
+ }
60
+ ]
61
+ }
62
+ },
63
+ {
64
+ "type": "REPEAT",
65
+ "content": {
66
+ "type": "SEQ",
67
+ "members": [
68
+ {
69
+ "type": "STRING",
70
+ "value": ","
71
+ },
72
+ {
73
+ "type": "FIELD",
74
+ "name": "name",
75
+ "content": {
76
+ "type": "SEQ",
77
+ "members": [
78
+ {
79
+ "type": "SYMBOL",
80
+ "name": "identifier"
81
+ },
82
+ {
83
+ "type": "REPEAT",
84
+ "content": {
85
+ "type": "SEQ",
86
+ "members": [
87
+ {
88
+ "type": "STRING",
89
+ "value": "/"
90
+ },
91
+ {
92
+ "type": "SYMBOL",
93
+ "name": "identifier"
94
+ }
95
+ ]
96
+ }
97
+ }
98
+ ]
99
+ }
100
+ }
101
+ ]
102
+ }
103
+ }
104
+ ]
105
+ }
106
+ ]
107
+ },
108
+ "class_definition": {
109
+ "type": "SEQ",
110
+ "members": [
111
+ {
112
+ "type": "STRING",
113
+ "value": "class"
114
+ },
115
+ {
116
+ "type": "FIELD",
117
+ "name": "name",
118
+ "content": {
119
+ "type": "SYMBOL",
120
+ "name": "identifier"
121
+ }
122
+ },
123
+ {
124
+ "type": "FIELD",
125
+ "name": "generics",
126
+ "content": {
127
+ "type": "CHOICE",
128
+ "members": [
129
+ {
130
+ "type": "SYMBOL",
131
+ "name": "generic_list"
132
+ },
133
+ {
134
+ "type": "BLANK"
135
+ }
136
+ ]
137
+ }
138
+ },
139
+ {
140
+ "type": "FIELD",
141
+ "name": "traits",
142
+ "content": {
143
+ "type": "CHOICE",
144
+ "members": [
145
+ {
146
+ "type": "SYMBOL",
147
+ "name": "trait_list"
148
+ },
149
+ {
150
+ "type": "BLANK"
151
+ }
152
+ ]
153
+ }
154
+ },
155
+ {
156
+ "type": "STRING",
157
+ "value": ":"
158
+ },
159
+ {
160
+ "type": "FIELD",
161
+ "name": "fields",
162
+ "content": {
163
+ "type": "SEQ",
164
+ "members": [
165
+ {
166
+ "type": "SYMBOL",
167
+ "name": "_indent"
168
+ },
169
+ {
170
+ "type": "SEQ",
171
+ "members": [
172
+ {
173
+ "type": "REPEAT",
174
+ "content": {
175
+ "type": "SYMBOL",
176
+ "name": "type_pair"
177
+ }
178
+ },
179
+ {
180
+ "type": "SYMBOL",
181
+ "name": "_dedent"
182
+ }
183
+ ]
184
+ }
185
+ ]
186
+ }
187
+ }
188
+ ]
189
+ },
190
+ "trait_list": {
191
+ "type": "SEQ",
192
+ "members": [
193
+ {
194
+ "type": "STRING",
195
+ "value": "("
196
+ },
197
+ {
198
+ "type": "SEQ",
199
+ "members": [
200
+ {
201
+ "type": "SYMBOL",
202
+ "name": "identifier"
203
+ },
204
+ {
205
+ "type": "REPEAT",
206
+ "content": {
207
+ "type": "SEQ",
208
+ "members": [
209
+ {
210
+ "type": "STRING",
211
+ "value": ","
212
+ },
213
+ {
214
+ "type": "SYMBOL",
215
+ "name": "identifier"
216
+ }
217
+ ]
218
+ }
219
+ }
220
+ ]
221
+ },
222
+ {
223
+ "type": "STRING",
224
+ "value": ")"
225
+ }
226
+ ]
227
+ },
228
+ "generic_list": {
229
+ "type": "SEQ",
230
+ "members": [
231
+ {
232
+ "type": "STRING",
233
+ "value": "<"
234
+ },
235
+ {
236
+ "type": "SEQ",
237
+ "members": [
238
+ {
239
+ "type": "SYMBOL",
240
+ "name": "identifier"
241
+ },
242
+ {
243
+ "type": "REPEAT",
244
+ "content": {
245
+ "type": "SEQ",
246
+ "members": [
247
+ {
248
+ "type": "STRING",
249
+ "value": ","
250
+ },
251
+ {
252
+ "type": "SYMBOL",
253
+ "name": "identifier"
254
+ }
255
+ ]
256
+ }
257
+ }
258
+ ]
259
+ },
260
+ {
261
+ "type": "STRING",
262
+ "value": ">"
263
+ }
264
+ ]
265
+ },
266
+ "type_pair": {
267
+ "type": "SEQ",
268
+ "members": [
269
+ {
270
+ "type": "FIELD",
271
+ "name": "key",
272
+ "content": {
273
+ "type": "SYMBOL",
274
+ "name": "identifier"
275
+ }
276
+ },
277
+ {
278
+ "type": "STRING",
279
+ "value": ":"
280
+ },
281
+ {
282
+ "type": "FIELD",
283
+ "name": "value",
284
+ "content": {
285
+ "type": "SYMBOL",
286
+ "name": "identifier"
287
+ }
288
+ }
289
+ ]
290
+ },
291
+ "identifier": {
292
+ "type": "PATTERN",
293
+ "value": "[_\\p{XID_Start}][_\\p{XID_Continue}]*"
294
+ }
295
+ },
296
+ "extras": [
297
+ {
298
+ "type": "PATTERN",
299
+ "value": "\\s"
300
+ }
301
+ ],
302
+ "conflicts": [],
303
+ "precedences": [],
304
+ "externals": [
305
+ {
306
+ "type": "SYMBOL",
307
+ "name": "_newline"
308
+ },
309
+ {
310
+ "type": "SYMBOL",
311
+ "name": "_indent"
312
+ },
313
+ {
314
+ "type": "SYMBOL",
315
+ "name": "_dedent"
316
+ },
317
+ {
318
+ "type": "SYMBOL",
319
+ "name": "_string_start"
320
+ },
321
+ {
322
+ "type": "SYMBOL",
323
+ "name": "_string_content"
324
+ },
325
+ {
326
+ "type": "SYMBOL",
327
+ "name": "_string_end"
328
+ },
329
+ {
330
+ "type": "SYMBOL",
331
+ "name": "comment"
332
+ },
333
+ {
334
+ "type": "STRING",
335
+ "value": "]"
336
+ },
337
+ {
338
+ "type": "STRING",
339
+ "value": ")"
340
+ },
341
+ {
342
+ "type": "STRING",
343
+ "value": "}"
344
+ }
345
+ ],
346
+ "inline": [],
347
+ "supertypes": []
348
+ }
349
+
src/node-types.json ADDED
@@ -0,0 +1,183 @@
1
+ [
2
+ {
3
+ "type": "class_definition",
4
+ "named": true,
5
+ "fields": {
6
+ "fields": {
7
+ "multiple": true,
8
+ "required": true,
9
+ "types": [
10
+ {
11
+ "type": "type_pair",
12
+ "named": true
13
+ }
14
+ ]
15
+ },
16
+ "generics": {
17
+ "multiple": false,
18
+ "required": false,
19
+ "types": [
20
+ {
21
+ "type": "generic_list",
22
+ "named": true
23
+ }
24
+ ]
25
+ },
26
+ "name": {
27
+ "multiple": false,
28
+ "required": true,
29
+ "types": [
30
+ {
31
+ "type": "identifier",
32
+ "named": true
33
+ }
34
+ ]
35
+ },
36
+ "traits": {
37
+ "multiple": false,
38
+ "required": false,
39
+ "types": [
40
+ {
41
+ "type": "trait_list",
42
+ "named": true
43
+ }
44
+ ]
45
+ }
46
+ }
47
+ },
48
+ {
49
+ "type": "generic_list",
50
+ "named": true,
51
+ "fields": {},
52
+ "children": {
53
+ "multiple": true,
54
+ "required": true,
55
+ "types": [
56
+ {
57
+ "type": "identifier",
58
+ "named": true
59
+ }
60
+ ]
61
+ }
62
+ },
63
+ {
64
+ "type": "import_statement",
65
+ "named": true,
66
+ "fields": {
67
+ "name": {
68
+ "multiple": true,
69
+ "required": true,
70
+ "types": [
71
+ {
72
+ "type": "/",
73
+ "named": false
74
+ },
75
+ {
76
+ "type": "identifier",
77
+ "named": true
78
+ }
79
+ ]
80
+ }
81
+ }
82
+ },
83
+ {
84
+ "type": "module",
85
+ "named": true,
86
+ "fields": {},
87
+ "children": {
88
+ "multiple": true,
89
+ "required": false,
90
+ "types": [
91
+ {
92
+ "type": "class_definition",
93
+ "named": true
94
+ },
95
+ {
96
+ "type": "import_statement",
97
+ "named": true
98
+ }
99
+ ]
100
+ }
101
+ },
102
+ {
103
+ "type": "trait_list",
104
+ "named": true,
105
+ "fields": {},
106
+ "children": {
107
+ "multiple": true,
108
+ "required": true,
109
+ "types": [
110
+ {
111
+ "type": "identifier",
112
+ "named": true
113
+ }
114
+ ]
115
+ }
116
+ },
117
+ {
118
+ "type": "type_pair",
119
+ "named": true,
120
+ "fields": {
121
+ "key": {
122
+ "multiple": false,
123
+ "required": true,
124
+ "types": [
125
+ {
126
+ "type": "identifier",
127
+ "named": true
128
+ }
129
+ ]
130
+ },
131
+ "value": {
132
+ "multiple": false,
133
+ "required": true,
134
+ "types": [
135
+ {
136
+ "type": "identifier",
137
+ "named": true
138
+ }
139
+ ]
140
+ }
141
+ }
142
+ },
143
+ {
144
+ "type": "(",
145
+ "named": false
146
+ },
147
+ {
148
+ "type": ")",
149
+ "named": false
150
+ },
151
+ {
152
+ "type": ",",
153
+ "named": false
154
+ },
155
+ {
156
+ "type": "/",
157
+ "named": false
158
+ },
159
+ {
160
+ "type": ":",
161
+ "named": false
162
+ },
163
+ {
164
+ "type": "<",
165
+ "named": false
166
+ },
167
+ {
168
+ "type": ">",
169
+ "named": false
170
+ },
171
+ {
172
+ "type": "class",
173
+ "named": false
174
+ },
175
+ {
176
+ "type": "identifier",
177
+ "named": true
178
+ },
179
+ {
180
+ "type": "import",
181
+ "named": false
182
+ }
183
+ ]
src/parser.c ADDED
@@ -0,0 +1,3061 @@
1
+ #include <tree_sitter/parser.h>
2
+
3
+ #if defined(__GNUC__) || defined(__clang__)
4
+ #pragma GCC diagnostic push
5
+ #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
6
+ #endif
7
+
8
+ #define LANGUAGE_VERSION 14
9
+ #define STATE_COUNT 62
10
+ #define LARGE_STATE_COUNT 2
11
+ #define SYMBOL_COUNT 32
12
+ #define ALIAS_COUNT 0
13
+ #define TOKEN_COUNT 20
14
+ #define EXTERNAL_TOKEN_COUNT 10
15
+ #define FIELD_COUNT 6
16
+ #define MAX_ALIAS_SEQUENCE_LENGTH 8
17
+ #define PRODUCTION_ID_COUNT 15
18
+
19
+ enum {
20
+ anon_sym_import = 1,
21
+ anon_sym_SLASH = 2,
22
+ anon_sym_COMMA = 3,
23
+ anon_sym_class = 4,
24
+ anon_sym_COLON = 5,
25
+ anon_sym_LPAREN = 6,
26
+ anon_sym_RPAREN = 7,
27
+ anon_sym_LT = 8,
28
+ anon_sym_GT = 9,
29
+ sym_identifier = 10,
30
+ anon_sym_RBRACK = 11,
31
+ anon_sym_RBRACE = 12,
32
+ sym__newline = 13,
33
+ sym__indent = 14,
34
+ sym__dedent = 15,
35
+ sym__string_start = 16,
36
+ sym__string_content = 17,
37
+ sym__string_end = 18,
38
+ sym_comment = 19,
39
+ sym_module = 20,
40
+ sym__definitions = 21,
41
+ sym_import_statement = 22,
42
+ sym_class_definition = 23,
43
+ sym_trait_list = 24,
44
+ sym_generic_list = 25,
45
+ sym_type_pair = 26,
46
+ aux_sym_module_repeat1 = 27,
47
+ aux_sym_import_statement_repeat1 = 28,
48
+ aux_sym_import_statement_repeat2 = 29,
49
+ aux_sym_class_definition_repeat1 = 30,
50
+ aux_sym_trait_list_repeat1 = 31,
51
+ };
52
+
53
+ static const char * const ts_symbol_names[] = {
54
+ [ts_builtin_sym_end] = "end",
55
+ [anon_sym_import] = "import",
56
+ [anon_sym_SLASH] = "/",
57
+ [anon_sym_COMMA] = ",",
58
+ [anon_sym_class] = "class",
59
+ [anon_sym_COLON] = ":",
60
+ [anon_sym_LPAREN] = "(",
61
+ [anon_sym_RPAREN] = ")",
62
+ [anon_sym_LT] = "<",
63
+ [anon_sym_GT] = ">",
64
+ [sym_identifier] = "identifier",
65
+ [anon_sym_RBRACK] = "]",
66
+ [anon_sym_RBRACE] = "}",
67
+ [sym__newline] = "_newline",
68
+ [sym__indent] = "_indent",
69
+ [sym__dedent] = "_dedent",
70
+ [sym__string_start] = "_string_start",
71
+ [sym__string_content] = "_string_content",
72
+ [sym__string_end] = "_string_end",
73
+ [sym_comment] = "comment",
74
+ [sym_module] = "module",
75
+ [sym__definitions] = "_definitions",
76
+ [sym_import_statement] = "import_statement",
77
+ [sym_class_definition] = "class_definition",
78
+ [sym_trait_list] = "trait_list",
79
+ [sym_generic_list] = "generic_list",
80
+ [sym_type_pair] = "type_pair",
81
+ [aux_sym_module_repeat1] = "module_repeat1",
82
+ [aux_sym_import_statement_repeat1] = "import_statement_repeat1",
83
+ [aux_sym_import_statement_repeat2] = "import_statement_repeat2",
84
+ [aux_sym_class_definition_repeat1] = "class_definition_repeat1",
85
+ [aux_sym_trait_list_repeat1] = "trait_list_repeat1",
86
+ };
87
+
88
+ static const TSSymbol ts_symbol_map[] = {
89
+ [ts_builtin_sym_end] = ts_builtin_sym_end,
90
+ [anon_sym_import] = anon_sym_import,
91
+ [anon_sym_SLASH] = anon_sym_SLASH,
92
+ [anon_sym_COMMA] = anon_sym_COMMA,
93
+ [anon_sym_class] = anon_sym_class,
94
+ [anon_sym_COLON] = anon_sym_COLON,
95
+ [anon_sym_LPAREN] = anon_sym_LPAREN,
96
+ [anon_sym_RPAREN] = anon_sym_RPAREN,
97
+ [anon_sym_LT] = anon_sym_LT,
98
+ [anon_sym_GT] = anon_sym_GT,
99
+ [sym_identifier] = sym_identifier,
100
+ [anon_sym_RBRACK] = anon_sym_RBRACK,
101
+ [anon_sym_RBRACE] = anon_sym_RBRACE,
102
+ [sym__newline] = sym__newline,
103
+ [sym__indent] = sym__indent,
104
+ [sym__dedent] = sym__dedent,
105
+ [sym__string_start] = sym__string_start,
106
+ [sym__string_content] = sym__string_content,
107
+ [sym__string_end] = sym__string_end,
108
+ [sym_comment] = sym_comment,
109
+ [sym_module] = sym_module,
110
+ [sym__definitions] = sym__definitions,
111
+ [sym_import_statement] = sym_import_statement,
112
+ [sym_class_definition] = sym_class_definition,
113
+ [sym_trait_list] = sym_trait_list,
114
+ [sym_generic_list] = sym_generic_list,
115
+ [sym_type_pair] = sym_type_pair,
116
+ [aux_sym_module_repeat1] = aux_sym_module_repeat1,
117
+ [aux_sym_import_statement_repeat1] = aux_sym_import_statement_repeat1,
118
+ [aux_sym_import_statement_repeat2] = aux_sym_import_statement_repeat2,
119
+ [aux_sym_class_definition_repeat1] = aux_sym_class_definition_repeat1,
120
+ [aux_sym_trait_list_repeat1] = aux_sym_trait_list_repeat1,
121
+ };
122
+
123
+ static const TSSymbolMetadata ts_symbol_metadata[] = {
124
+ [ts_builtin_sym_end] = {
125
+ .visible = false,
126
+ .named = true,
127
+ },
128
+ [anon_sym_import] = {
129
+ .visible = true,
130
+ .named = false,
131
+ },
132
+ [anon_sym_SLASH] = {
133
+ .visible = true,
134
+ .named = false,
135
+ },
136
+ [anon_sym_COMMA] = {
137
+ .visible = true,
138
+ .named = false,
139
+ },
140
+ [anon_sym_class] = {
141
+ .visible = true,
142
+ .named = false,
143
+ },
144
+ [anon_sym_COLON] = {
145
+ .visible = true,
146
+ .named = false,
147
+ },
148
+ [anon_sym_LPAREN] = {
149
+ .visible = true,
150
+ .named = false,
151
+ },
152
+ [anon_sym_RPAREN] = {
153
+ .visible = true,
154
+ .named = false,
155
+ },
156
+ [anon_sym_LT] = {
157
+ .visible = true,
158
+ .named = false,
159
+ },
160
+ [anon_sym_GT] = {
161
+ .visible = true,
162
+ .named = false,
163
+ },
164
+ [sym_identifier] = {
165
+ .visible = true,
166
+ .named = true,
167
+ },
168
+ [anon_sym_RBRACK] = {
169
+ .visible = true,
170
+ .named = false,
171
+ },
172
+ [anon_sym_RBRACE] = {
173
+ .visible = true,
174
+ .named = false,
175
+ },
176
+ [sym__newline] = {
177
+ .visible = false,
178
+ .named = true,
179
+ },
180
+ [sym__indent] = {
181
+ .visible = false,
182
+ .named = true,
183
+ },
184
+ [sym__dedent] = {
185
+ .visible = false,
186
+ .named = true,
187
+ },
188
+ [sym__string_start] = {
189
+ .visible = false,
190
+ .named = true,
191
+ },
192
+ [sym__string_content] = {
193
+ .visible = false,
194
+ .named = true,
195
+ },
196
+ [sym__string_end] = {
197
+ .visible = false,
198
+ .named = true,
199
+ },
200
+ [sym_comment] = {
201
+ .visible = true,
202
+ .named = true,
203
+ },
204
+ [sym_module] = {
205
+ .visible = true,
206
+ .named = true,
207
+ },
208
+ [sym__definitions] = {
209
+ .visible = false,
210
+ .named = true,
211
+ },
212
+ [sym_import_statement] = {
213
+ .visible = true,
214
+ .named = true,
215
+ },
216
+ [sym_class_definition] = {
217
+ .visible = true,
218
+ .named = true,
219
+ },
220
+ [sym_trait_list] = {
221
+ .visible = true,
222
+ .named = true,
223
+ },
224
+ [sym_generic_list] = {
225
+ .visible = true,
226
+ .named = true,
227
+ },
228
+ [sym_type_pair] = {
229
+ .visible = true,
230
+ .named = true,
231
+ },
232
+ [aux_sym_module_repeat1] = {
233
+ .visible = false,
234
+ .named = false,
235
+ },
236
+ [aux_sym_import_statement_repeat1] = {
237
+ .visible = false,
238
+ .named = false,
239
+ },
240
+ [aux_sym_import_statement_repeat2] = {
241
+ .visible = false,
242
+ .named = false,
243
+ },
244
+ [aux_sym_class_definition_repeat1] = {
245
+ .visible = false,
246
+ .named = false,
247
+ },
248
+ [aux_sym_trait_list_repeat1] = {
249
+ .visible = false,
250
+ .named = false,
251
+ },
252
+ };
253
+
254
+ enum {
255
+ field_fields = 1,
256
+ field_generics = 2,
257
+ field_key = 3,
258
+ field_name = 4,
259
+ field_traits = 5,
260
+ field_value = 6,
261
+ };
262
+
263
+ static const char * const ts_field_names[] = {
264
+ [0] = NULL,
265
+ [field_fields] = "fields",
266
+ [field_generics] = "generics",
267
+ [field_key] = "key",
268
+ [field_name] = "name",
269
+ [field_traits] = "traits",
270
+ [field_value] = "value",
271
+ };
272
+
273
+ static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = {
274
+ [1] = {.index = 0, .length = 1},
275
+ [2] = {.index = 1, .length = 2},
276
+ [3] = {.index = 3, .length = 2},
277
+ [4] = {.index = 5, .length = 3},
278
+ [5] = {.index = 8, .length = 2},
279
+ [6] = {.index = 10, .length = 3},
280
+ [7] = {.index = 13, .length = 4},
281
+ [8] = {.index = 17, .length = 4},
282
+ [9] = {.index = 21, .length = 4},
283
+ [10] = {.index = 25, .length = 2},
284
+ [11] = {.index = 27, .length = 5},
285
+ [12] = {.index = 32, .length = 5},
286
+ [13] = {.index = 37, .length = 5},
287
+ [14] = {.index = 42, .length = 6},
288
+ };
289
+
290
+ static const TSFieldMapEntry ts_field_map_entries[] = {
291
+ [0] =
292
+ {field_name, 1},
293
+ [1] =
294
+ {field_name, 1},
295
+ {field_name, 2},
296
+ [3] =
297
+ {field_name, 1},
298
+ {field_name, 2, .inherited = true},
299
+ [5] =
300
+ {field_name, 1},
301
+ {field_name, 2},
302
+ {field_name, 3, .inherited = true},
303
+ [8] =
304
+ {field_name, 0, .inherited = true},
305
+ {field_name, 1, .inherited = true},
306
+ [10] =
307
+ {field_fields, 3},
308
+ {field_fields, 4},
309
+ {field_name, 1},
310
+ [13] =
311
+ {field_fields, 3},
312
+ {field_fields, 4},
313
+ {field_fields, 5},
314
+ {field_name, 1},
315
+ [17] =
316
+ {field_fields, 4},
317
+ {field_fields, 5},
318
+ {field_name, 1},
319
+ {field_traits, 2},
320
+ [21] =
321
+ {field_fields, 4},
322
+ {field_fields, 5},
323
+ {field_generics, 2},
324
+ {field_name, 1},
325
+ [25] =
326
+ {field_key, 0},
327
+ {field_value, 2},
328
+ [27] =
329
+ {field_fields, 4},
330
+ {field_fields, 5},
331
+ {field_fields, 6},
332
+ {field_name, 1},
333
+ {field_traits, 2},
334
+ [32] =
335
+ {field_fields, 4},
336
+ {field_fields, 5},
337
+ {field_fields, 6},
338
+ {field_generics, 2},
339
+ {field_name, 1},
340
+ [37] =
341
+ {field_fields, 5},
342
+ {field_fields, 6},
343
+ {field_generics, 2},
344
+ {field_name, 1},
345
+ {field_traits, 3},
346
+ [42] =
347
+ {field_fields, 5},
348
+ {field_fields, 6},
349
+ {field_fields, 7},
350
+ {field_generics, 2},
351
+ {field_name, 1},
352
+ {field_traits, 3},
353
+ };
354
+
355
+ static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = {
356
+ [0] = {0},
357
+ };
358
+
359
+ static const uint16_t ts_non_terminal_alias_map[] = {
360
+ 0,
361
+ };
362
+
363
+ static const TSStateId ts_primary_state_ids[STATE_COUNT] = {
364
+ [0] = 0,
365
+ [1] = 1,
366
+ [2] = 2,
367
+ [3] = 3,
368
+ [4] = 4,
369
+ [5] = 5,
370
+ [6] = 6,
371
+ [7] = 7,
372
+ [8] = 8,
373
+ [9] = 9,
374
+ [10] = 10,
375
+ [11] = 11,
376
+ [12] = 12,
377
+ [13] = 13,
378
+ [14] = 14,
379
+ [15] = 15,
380
+ [16] = 16,
381
+ [17] = 17,
382
+ [18] = 18,
383
+ [19] = 19,
384
+ [20] = 20,
385
+ [21] = 21,
386
+ [22] = 22,
387
+ [23] = 23,
388
+ [24] = 24,
389
+ [25] = 25,
390
+ [26] = 26,
391
+ [27] = 27,
392
+ [28] = 26,
393
+ [29] = 29,
394
+ [30] = 30,
395
+ [31] = 31,
396
+ [32] = 32,
397
+ [33] = 33,
398
+ [34] = 34,
399
+ [35] = 35,
400
+ [36] = 36,
401
+ [37] = 37,
402
+ [38] = 38,
403
+ [39] = 39,
404
+ [40] = 38,
405
+ [41] = 41,
406
+ [42] = 42,
407
+ [43] = 43,
408
+ [44] = 44,
409
+ [45] = 45,
410
+ [46] = 46,
411
+ [47] = 47,
412
+ [48] = 48,
413
+ [49] = 49,
414
+ [50] = 50,
415
+ [51] = 51,
416
+ [52] = 52,
417
+ [53] = 53,
418
+ [54] = 54,
419
+ [55] = 55,
420
+ [56] = 56,
421
+ [57] = 57,
422
+ [58] = 58,
423
+ [59] = 59,
424
+ [60] = 60,
425
+ [61] = 44,
426
+ };
427
+
428
+ static inline bool sym_identifier_character_set_1(int32_t c) {
429
+ return (c < 43514
430
+ ? (c < 4193
431
+ ? (c < 2707
432
+ ? (c < 1994
433
+ ? (c < 910
434
+ ? (c < 736
435
+ ? (c < 186
436
+ ? (c < 'a'
437
+ ? (c < '_'
438
+ ? (c >= 'A' && c <= 'Z')
439
+ : c <= '_')
440
+ : (c <= 'z' || (c < 181
441
+ ? c == 170
442
+ : c <= 181)))
443
+ : (c <= 186 || (c < 248
444
+ ? (c < 216
445
+ ? (c >= 192 && c <= 214)
446
+ : c <= 246)
447
+ : (c <= 705 || (c >= 710 && c <= 721)))))
448
+ : (c <= 740 || (c < 891
449
+ ? (c < 880
450
+ ? (c < 750
451
+ ? c == 748
452
+ : c <= 750)
453
+ : (c <= 884 || (c >= 886 && c <= 887)))
454
+ : (c <= 893 || (c < 904
455
+ ? (c < 902
456
+ ? c == 895
457
+ : c <= 902)
458
+ : (c <= 906 || c == 908))))))
459
+ : (c <= 929 || (c < 1649
460
+ ? (c < 1376
461
+ ? (c < 1162
462
+ ? (c < 1015
463
+ ? (c >= 931 && c <= 1013)
464
+ : c <= 1153)
465
+ : (c <= 1327 || (c < 1369
466
+ ? (c >= 1329 && c <= 1366)
467
+ : c <= 1369)))
468
+ : (c <= 1416 || (c < 1568
469
+ ? (c < 1519
470
+ ? (c >= 1488 && c <= 1514)
471
+ : c <= 1522)
472
+ : (c <= 1610 || (c >= 1646 && c <= 1647)))))
473
+ : (c <= 1747 || (c < 1791
474
+ ? (c < 1774
475
+ ? (c < 1765
476
+ ? c == 1749
477
+ : c <= 1766)
478
+ : (c <= 1775 || (c >= 1786 && c <= 1788)))
479
+ : (c <= 1791 || (c < 1869
480
+ ? (c < 1810
481
+ ? c == 1808
482
+ : c <= 1839)
483
+ : (c <= 1957 || c == 1969))))))))
484
+ : (c <= 2026 || (c < 2482
485
+ ? (c < 2208
486
+ ? (c < 2088
487
+ ? (c < 2048
488
+ ? (c < 2042
489
+ ? (c >= 2036 && c <= 2037)
490
+ : c <= 2042)
491
+ : (c <= 2069 || (c < 2084
492
+ ? c == 2074
493
+ : c <= 2084)))
494
+ : (c <= 2088 || (c < 2160
495
+ ? (c < 2144
496
+ ? (c >= 2112 && c <= 2136)
497
+ : c <= 2154)
498
+ : (c <= 2183 || (c >= 2185 && c <= 2190)))))
499
+ : (c <= 2249 || (c < 2417
500
+ ? (c < 2384
501
+ ? (c < 2365
502
+ ? (c >= 2308 && c <= 2361)
503
+ : c <= 2365)
504
+ : (c <= 2384 || (c >= 2392 && c <= 2401)))
505
+ : (c <= 2432 || (c < 2451
506
+ ? (c < 2447
507
+ ? (c >= 2437 && c <= 2444)
508
+ : c <= 2448)
509
+ : (c <= 2472 || (c >= 2474 && c <= 2480)))))))
510
+ : (c <= 2482 || (c < 2579
511
+ ? (c < 2527
512
+ ? (c < 2510
513
+ ? (c < 2493
514
+ ? (c >= 2486 && c <= 2489)
515
+ : c <= 2493)
516
+ : (c <= 2510 || (c >= 2524 && c <= 2525)))
517
+ : (c <= 2529 || (c < 2565
518
+ ? (c < 2556
519
+ ? (c >= 2544 && c <= 2545)
520
+ : c <= 2556)
521
+ : (c <= 2570 || (c >= 2575 && c <= 2576)))))
522
+ : (c <= 2600 || (c < 2649
523
+ ? (c < 2613
524
+ ? (c < 2610
525
+ ? (c >= 2602 && c <= 2608)
526
+ : c <= 2611)
527
+ : (c <= 2614 || (c >= 2616 && c <= 2617)))
528
+ : (c <= 2652 || (c < 2693
529
+ ? (c < 2674
530
+ ? c == 2654
531
+ : c <= 2676)
532
+ : (c <= 2701 || (c >= 2703 && c <= 2705)))))))))))
533
+ : (c <= 2728 || (c < 3242
534
+ ? (c < 2962
535
+ ? (c < 2858
536
+ ? (c < 2784
537
+ ? (c < 2741
538
+ ? (c < 2738
539
+ ? (c >= 2730 && c <= 2736)
540
+ : c <= 2739)
541
+ : (c <= 2745 || (c < 2768
542
+ ? c == 2749
543
+ : c <= 2768)))
544
+ : (c <= 2785 || (c < 2831
545
+ ? (c < 2821
546
+ ? c == 2809
547
+ : c <= 2828)
548
+ : (c <= 2832 || (c >= 2835 && c <= 2856)))))
549
+ : (c <= 2864 || (c < 2911
550
+ ? (c < 2877
551
+ ? (c < 2869
552
+ ? (c >= 2866 && c <= 2867)
553
+ : c <= 2873)
554
+ : (c <= 2877 || (c >= 2908 && c <= 2909)))
555
+ : (c <= 2913 || (c < 2949
556
+ ? (c < 2947
557
+ ? c == 2929
558
+ : c <= 2947)
559
+ : (c <= 2954 || (c >= 2958 && c <= 2960)))))))
560
+ : (c <= 2965 || (c < 3090
561
+ ? (c < 2984
562
+ ? (c < 2974
563
+ ? (c < 2972
564
+ ? (c >= 2969 && c <= 2970)
565
+ : c <= 2972)
566
+ : (c <= 2975 || (c >= 2979 && c <= 2980)))
567
+ : (c <= 2986 || (c < 3077
568
+ ? (c < 3024
569
+ ? (c >= 2990 && c <= 3001)
570
+ : c <= 3024)
571
+ : (c <= 3084 || (c >= 3086 && c <= 3088)))))
572
+ : (c <= 3112 || (c < 3168
573
+ ? (c < 3160
574
+ ? (c < 3133
575
+ ? (c >= 3114 && c <= 3129)
576
+ : c <= 3133)
577
+ : (c <= 3162 || c == 3165))
578
+ : (c <= 3169 || (c < 3214
579
+ ? (c < 3205
580
+ ? c == 3200
581
+ : c <= 3212)
582
+ : (c <= 3216 || (c >= 3218 && c <= 3240)))))))))
583
+ : (c <= 3251 || (c < 3648
584
+ ? (c < 3412
585
+ ? (c < 3332
586
+ ? (c < 3293
587
+ ? (c < 3261
588
+ ? (c >= 3253 && c <= 3257)
589
+ : c <= 3261)
590
+ : (c <= 3294 || (c < 3313
591
+ ? (c >= 3296 && c <= 3297)
592
+ : c <= 3314)))
593
+ : (c <= 3340 || (c < 3389
594
+ ? (c < 3346
595
+ ? (c >= 3342 && c <= 3344)
596
+ : c <= 3386)
597
+ : (c <= 3389 || c == 3406))))
598
+ : (c <= 3414 || (c < 3507
599
+ ? (c < 3461
600
+ ? (c < 3450
601
+ ? (c >= 3423 && c <= 3425)
602
+ : c <= 3455)
603
+ : (c <= 3478 || (c >= 3482 && c <= 3505)))
604
+ : (c <= 3515 || (c < 3585
605
+ ? (c < 3520
606
+ ? c == 3517
607
+ : c <= 3526)
608
+ : (c <= 3632 || c == 3634))))))
609
+ : (c <= 3654 || (c < 3782
610
+ ? (c < 3749
611
+ ? (c < 3718
612
+ ? (c < 3716
613
+ ? (c >= 3713 && c <= 3714)
614
+ : c <= 3716)
615
+ : (c <= 3722 || (c >= 3724 && c <= 3747)))
616
+ : (c <= 3749 || (c < 3773
617
+ ? (c < 3762
618
+ ? (c >= 3751 && c <= 3760)
619
+ : c <= 3762)
620
+ : (c <= 3773 || (c >= 3776 && c <= 3780)))))
621
+ : (c <= 3782 || (c < 3976
622
+ ? (c < 3904
623
+ ? (c < 3840
624
+ ? (c >= 3804 && c <= 3807)
625
+ : c <= 3840)
626
+ : (c <= 3911 || (c >= 3913 && c <= 3948)))
627
+ : (c <= 3980 || (c < 4176
628
+ ? (c < 4159
629
+ ? (c >= 4096 && c <= 4138)
630
+ : c <= 4159)
631
+ : (c <= 4181 || (c >= 4186 && c <= 4189)))))))))))))
632
+ : (c <= 4193 || (c < 8134
633
+ ? (c < 6176
634
+ ? (c < 4808
635
+ ? (c < 4688
636
+ ? (c < 4295
637
+ ? (c < 4213
638
+ ? (c < 4206
639
+ ? (c >= 4197 && c <= 4198)
640
+ : c <= 4208)
641
+ : (c <= 4225 || (c < 4256
642
+ ? c == 4238
643
+ : c <= 4293)))
644
+ : (c <= 4295 || (c < 4348
645
+ ? (c < 4304
646
+ ? c == 4301
647
+ : c <= 4346)
648
+ : (c <= 4680 || (c >= 4682 && c <= 4685)))))
649
+ : (c <= 4694 || (c < 4752
650
+ ? (c < 4704
651
+ ? (c < 4698
652
+ ? c == 4696
653
+ : c <= 4701)
654
+ : (c <= 4744 || (c >= 4746 && c <= 4749)))
655
+ : (c <= 4784 || (c < 4800
656
+ ? (c < 4792
657
+ ? (c >= 4786 && c <= 4789)
658
+ : c <= 4798)
659
+ : (c <= 4800 || (c >= 4802 && c <= 4805)))))))
660
+ : (c <= 4822 || (c < 5792
661
+ ? (c < 5024
662
+ ? (c < 4888
663
+ ? (c < 4882
664
+ ? (c >= 4824 && c <= 4880)
665
+ : c <= 4885)
666
+ : (c <= 4954 || (c >= 4992 && c <= 5007)))
667
+ : (c <= 5109 || (c < 5743
668
+ ? (c < 5121
669
+ ? (c >= 5112 && c <= 5117)
670
+ : c <= 5740)
671
+ : (c <= 5759 || (c >= 5761 && c <= 5786)))))
672
+ : (c <= 5866 || (c < 5984
673
+ ? (c < 5919
674
+ ? (c < 5888
675
+ ? (c >= 5870 && c <= 5880)
676
+ : c <= 5905)
677
+ : (c <= 5937 || (c >= 5952 && c <= 5969)))
678
+ : (c <= 5996 || (c < 6103
679
+ ? (c < 6016
680
+ ? (c >= 5998 && c <= 6000)
681
+ : c <= 6067)
682
+ : (c <= 6103 || c == 6108))))))))
683
+ : (c <= 6264 || (c < 7312
684
+ ? (c < 6823
685
+ ? (c < 6512
686
+ ? (c < 6320
687
+ ? (c < 6314
688
+ ? (c >= 6272 && c <= 6312)
689
+ : c <= 6314)
690
+ : (c <= 6389 || (c < 6480
691
+ ? (c >= 6400 && c <= 6430)
692
+ : c <= 6509)))
693
+ : (c <= 6516 || (c < 6656
694
+ ? (c < 6576
695
+ ? (c >= 6528 && c <= 6571)
696
+ : c <= 6601)
697
+ : (c <= 6678 || (c >= 6688 && c <= 6740)))))
698
+ : (c <= 6823 || (c < 7098
699
+ ? (c < 7043
700
+ ? (c < 6981
701
+ ? (c >= 6917 && c <= 6963)
702
+ : c <= 6988)
703
+ : (c <= 7072 || (c >= 7086 && c <= 7087)))
704
+ : (c <= 7141 || (c < 7258
705
+ ? (c < 7245
706
+ ? (c >= 7168 && c <= 7203)
707
+ : c <= 7247)
708
+ : (c <= 7293 || (c >= 7296 && c <= 7304)))))))
709
+ : (c <= 7354 || (c < 8008
710
+ ? (c < 7418
711
+ ? (c < 7406
712
+ ? (c < 7401
713
+ ? (c >= 7357 && c <= 7359)
714
+ : c <= 7404)
715
+ : (c <= 7411 || (c >= 7413 && c <= 7414)))
716
+ : (c <= 7418 || (c < 7960
717
+ ? (c < 7680
718
+ ? (c >= 7424 && c <= 7615)
719
+ : c <= 7957)
720
+ : (c <= 7965 || (c >= 7968 && c <= 8005)))))
721
+ : (c <= 8013 || (c < 8031
722
+ ? (c < 8027
723
+ ? (c < 8025
724
+ ? (c >= 8016 && c <= 8023)
725
+ : c <= 8025)
726
+ : (c <= 8027 || c == 8029))
727
+ : (c <= 8061 || (c < 8126
728
+ ? (c < 8118
729
+ ? (c >= 8064 && c <= 8116)
730
+ : c <= 8124)
731
+ : (c <= 8126 || (c >= 8130 && c <= 8132)))))))))))
732
+ : (c <= 8140 || (c < 12337
733
+ ? (c < 8544
734
+ ? (c < 8458
735
+ ? (c < 8305
736
+ ? (c < 8160
737
+ ? (c < 8150
738
+ ? (c >= 8144 && c <= 8147)
739
+ : c <= 8155)
740
+ : (c <= 8172 || (c < 8182
741
+ ? (c >= 8178 && c <= 8180)
742
+ : c <= 8188)))
743
+ : (c <= 8305 || (c < 8450
744
+ ? (c < 8336
745
+ ? c == 8319
746
+ : c <= 8348)
747
+ : (c <= 8450 || c == 8455))))
748
+ : (c <= 8467 || (c < 8488
749
+ ? (c < 8484
750
+ ? (c < 8472
751
+ ? c == 8469
752
+ : c <= 8477)
753
+ : (c <= 8484 || c == 8486))
754
+ : (c <= 8488 || (c < 8517
755
+ ? (c < 8508
756
+ ? (c >= 8490 && c <= 8505)
757
+ : c <= 8511)
758
+ : (c <= 8521 || c == 8526))))))
759
+ : (c <= 8584 || (c < 11680
760
+ ? (c < 11559
761
+ ? (c < 11506
762
+ ? (c < 11499
763
+ ? (c >= 11264 && c <= 11492)
764
+ : c <= 11502)
765
+ : (c <= 11507 || (c >= 11520 && c <= 11557)))
766
+ : (c <= 11559 || (c < 11631
767
+ ? (c < 11568
768
+ ? c == 11565
769
+ : c <= 11623)
770
+ : (c <= 11631 || (c >= 11648 && c <= 11670)))))
771
+ : (c <= 11686 || (c < 11720
772
+ ? (c < 11704
773
+ ? (c < 11696
774
+ ? (c >= 11688 && c <= 11694)
775
+ : c <= 11702)
776
+ : (c <= 11710 || (c >= 11712 && c <= 11718)))
777
+ : (c <= 11726 || (c < 12293
778
+ ? (c < 11736
779
+ ? (c >= 11728 && c <= 11734)
780
+ : c <= 11742)
781
+ : (c <= 12295 || (c >= 12321 && c <= 12329)))))))))
782
+ : (c <= 12341 || (c < 42891
783
+ ? (c < 19968
784
+ ? (c < 12549
785
+ ? (c < 12445
786
+ ? (c < 12353
787
+ ? (c >= 12344 && c <= 12348)
788
+ : c <= 12438)
789
+ : (c <= 12447 || (c < 12540
790
+ ? (c >= 12449 && c <= 12538)
791
+ : c <= 12543)))
792
+ : (c <= 12591 || (c < 12784
793
+ ? (c < 12704
794
+ ? (c >= 12593 && c <= 12686)
795
+ : c <= 12735)
796
+ : (c <= 12799 || (c >= 13312 && c <= 19903)))))
797
+ : (c <= 42124 || (c < 42560
798
+ ? (c < 42512
799
+ ? (c < 42240
800
+ ? (c >= 42192 && c <= 42237)
801
+ : c <= 42508)
802
+ : (c <= 42527 || (c >= 42538 && c <= 42539)))
803
+ : (c <= 42606 || (c < 42775
804
+ ? (c < 42656
805
+ ? (c >= 42623 && c <= 42653)
806
+ : c <= 42735)
807
+ : (c <= 42783 || (c >= 42786 && c <= 42888)))))))
808
+ : (c <= 42954 || (c < 43250
809
+ ? (c < 43011
810
+ ? (c < 42965
811
+ ? (c < 42963
812
+ ? (c >= 42960 && c <= 42961)
813
+ : c <= 42963)
814
+ : (c <= 42969 || (c >= 42994 && c <= 43009)))
815
+ : (c <= 43013 || (c < 43072
816
+ ? (c < 43020
817
+ ? (c >= 43015 && c <= 43018)
818
+ : c <= 43042)
819
+ : (c <= 43123 || (c >= 43138 && c <= 43187)))))
820
+ : (c <= 43255 || (c < 43360
821
+ ? (c < 43274
822
+ ? (c < 43261
823
+ ? c == 43259
824
+ : c <= 43262)
825
+ : (c <= 43301 || (c >= 43312 && c <= 43334)))
826
+ : (c <= 43388 || (c < 43488
827
+ ? (c < 43471
828
+ ? (c >= 43396 && c <= 43442)
829
+ : c <= 43471)
830
+ : (c <= 43492 || (c >= 43494 && c <= 43503)))))))))))))))
831
+ : (c <= 43518 || (c < 70727
832
+ ? (c < 66956
833
+ ? (c < 64914
834
+ ? (c < 43868
835
+ ? (c < 43714
836
+ ? (c < 43646
837
+ ? (c < 43588
838
+ ? (c < 43584
839
+ ? (c >= 43520 && c <= 43560)
840
+ : c <= 43586)
841
+ : (c <= 43595 || (c < 43642
842
+ ? (c >= 43616 && c <= 43638)
843
+ : c <= 43642)))
844
+ : (c <= 43695 || (c < 43705
845
+ ? (c < 43701
846
+ ? c == 43697
847
+ : c <= 43702)
848
+ : (c <= 43709 || c == 43712))))
849
+ : (c <= 43714 || (c < 43785
850
+ ? (c < 43762
851
+ ? (c < 43744
852
+ ? (c >= 43739 && c <= 43741)
853
+ : c <= 43754)
854
+ : (c <= 43764 || (c >= 43777 && c <= 43782)))
855
+ : (c <= 43790 || (c < 43816
856
+ ? (c < 43808
857
+ ? (c >= 43793 && c <= 43798)
858
+ : c <= 43814)
859
+ : (c <= 43822 || (c >= 43824 && c <= 43866)))))))
860
+ : (c <= 43881 || (c < 64287
861
+ ? (c < 63744
862
+ ? (c < 55216
863
+ ? (c < 44032
864
+ ? (c >= 43888 && c <= 44002)
865
+ : c <= 55203)
866
+ : (c <= 55238 || (c >= 55243 && c <= 55291)))
867
+ : (c <= 64109 || (c < 64275
868
+ ? (c < 64256
869
+ ? (c >= 64112 && c <= 64217)
870
+ : c <= 64262)
871
+ : (c <= 64279 || c == 64285))))
872
+ : (c <= 64296 || (c < 64323
873
+ ? (c < 64318
874
+ ? (c < 64312
875
+ ? (c >= 64298 && c <= 64310)
876
+ : c <= 64316)
877
+ : (c <= 64318 || (c >= 64320 && c <= 64321)))
878
+ : (c <= 64324 || (c < 64612
879
+ ? (c < 64467
880
+ ? (c >= 64326 && c <= 64433)
881
+ : c <= 64605)
882
+ : (c <= 64829 || (c >= 64848 && c <= 64911)))))))))
883
+ : (c <= 64967 || (c < 65599
884
+ ? (c < 65382
885
+ ? (c < 65147
886
+ ? (c < 65139
887
+ ? (c < 65137
888
+ ? (c >= 65008 && c <= 65017)
889
+ : c <= 65137)
890
+ : (c <= 65139 || (c < 65145
891
+ ? c == 65143
892
+ : c <= 65145)))
893
+ : (c <= 65147 || (c < 65313
894
+ ? (c < 65151
895
+ ? c == 65149
896
+ : c <= 65276)
897
+ : (c <= 65338 || (c >= 65345 && c <= 65370)))))
898
+ : (c <= 65437 || (c < 65498
899
+ ? (c < 65482
900
+ ? (c < 65474
901
+ ? (c >= 65440 && c <= 65470)
902
+ : c <= 65479)
903
+ : (c <= 65487 || (c >= 65490 && c <= 65495)))
904
+ : (c <= 65500 || (c < 65576
905
+ ? (c < 65549
906
+ ? (c >= 65536 && c <= 65547)
907
+ : c <= 65574)
908
+ : (c <= 65594 || (c >= 65596 && c <= 65597)))))))
909
+ : (c <= 65613 || (c < 66464
910
+ ? (c < 66208
911
+ ? (c < 65856
912
+ ? (c < 65664
913
+ ? (c >= 65616 && c <= 65629)
914
+ : c <= 65786)
915
+ : (c <= 65908 || (c >= 66176 && c <= 66204)))
916
+ : (c <= 66256 || (c < 66384
917
+ ? (c < 66349
918
+ ? (c >= 66304 && c <= 66335)
919
+ : c <= 66378)
920
+ : (c <= 66421 || (c >= 66432 && c <= 66461)))))
921
+ : (c <= 66499 || (c < 66776
922
+ ? (c < 66560
923
+ ? (c < 66513
924
+ ? (c >= 66504 && c <= 66511)
925
+ : c <= 66517)
926
+ : (c <= 66717 || (c >= 66736 && c <= 66771)))
927
+ : (c <= 66811 || (c < 66928
928
+ ? (c < 66864
929
+ ? (c >= 66816 && c <= 66855)
930
+ : c <= 66915)
931
+ : (c <= 66938 || (c >= 66940 && c <= 66954)))))))))))
932
+ : (c <= 66962 || (c < 68864
933
+ ? (c < 67828
934
+ ? (c < 67506
935
+ ? (c < 67072
936
+ ? (c < 66979
937
+ ? (c < 66967
938
+ ? (c >= 66964 && c <= 66965)
939
+ : c <= 66977)
940
+ : (c <= 66993 || (c < 67003
941
+ ? (c >= 66995 && c <= 67001)
942
+ : c <= 67004)))
943
+ : (c <= 67382 || (c < 67456
944
+ ? (c < 67424
945
+ ? (c >= 67392 && c <= 67413)
946
+ : c <= 67431)
947
+ : (c <= 67461 || (c >= 67463 && c <= 67504)))))
948
+ : (c <= 67514 || (c < 67644
949
+ ? (c < 67594
950
+ ? (c < 67592
951
+ ? (c >= 67584 && c <= 67589)
952
+ : c <= 67592)
953
+ : (c <= 67637 || (c >= 67639 && c <= 67640)))
954
+ : (c <= 67644 || (c < 67712
955
+ ? (c < 67680
956
+ ? (c >= 67647 && c <= 67669)
957
+ : c <= 67702)
958
+ : (c <= 67742 || (c >= 67808 && c <= 67826)))))))
959
+ : (c <= 67829 || (c < 68224
960
+ ? (c < 68096
961
+ ? (c < 67968
962
+ ? (c < 67872
963
+ ? (c >= 67840 && c <= 67861)
964
+ : c <= 67897)
965
+ : (c <= 68023 || (c >= 68030 && c <= 68031)))
966
+ : (c <= 68096 || (c < 68121
967
+ ? (c < 68117
968
+ ? (c >= 68112 && c <= 68115)
969
+ : c <= 68119)
970
+ : (c <= 68149 || (c >= 68192 && c <= 68220)))))
971
+ : (c <= 68252 || (c < 68448
972
+ ? (c < 68352
973
+ ? (c < 68297
974
+ ? (c >= 68288 && c <= 68295)
975
+ : c <= 68324)
976
+ : (c <= 68405 || (c >= 68416 && c <= 68437)))
977
+ : (c <= 68466 || (c < 68736
978
+ ? (c < 68608
979
+ ? (c >= 68480 && c <= 68497)
980
+ : c <= 68680)
981
+ : (c <= 68786 || (c >= 68800 && c <= 68850)))))))))
982
+ : (c <= 68899 || (c < 70106
983
+ ? (c < 69749
984
+ ? (c < 69488
985
+ ? (c < 69376
986
+ ? (c < 69296
987
+ ? (c >= 69248 && c <= 69289)
988
+ : c <= 69297)
989
+ : (c <= 69404 || (c < 69424
990
+ ? c == 69415
991
+ : c <= 69445)))
992
+ : (c <= 69505 || (c < 69635
993
+ ? (c < 69600
994
+ ? (c >= 69552 && c <= 69572)
995
+ : c <= 69622)
996
+ : (c <= 69687 || (c >= 69745 && c <= 69746)))))
997
+ : (c <= 69749 || (c < 69959
998
+ ? (c < 69891
999
+ ? (c < 69840
1000
+ ? (c >= 69763 && c <= 69807)
1001
+ : c <= 69864)
1002
+ : (c <= 69926 || c == 69956))
1003
+ : (c <= 69959 || (c < 70019
1004
+ ? (c < 70006
1005
+ ? (c >= 69968 && c <= 70002)
1006
+ : c <= 70006)
1007
+ : (c <= 70066 || (c >= 70081 && c <= 70084)))))))
1008
+ : (c <= 70106 || (c < 70405
1009
+ ? (c < 70280
1010
+ ? (c < 70163
1011
+ ? (c < 70144
1012
+ ? c == 70108
1013
+ : c <= 70161)
1014
+ : (c <= 70187 || (c >= 70272 && c <= 70278)))
1015
+ : (c <= 70280 || (c < 70303
1016
+ ? (c < 70287
1017
+ ? (c >= 70282 && c <= 70285)
1018
+ : c <= 70301)
1019
+ : (c <= 70312 || (c >= 70320 && c <= 70366)))))
1020
+ : (c <= 70412 || (c < 70453
1021
+ ? (c < 70442
1022
+ ? (c < 70419
1023
+ ? (c >= 70415 && c <= 70416)
1024
+ : c <= 70440)
1025
+ : (c <= 70448 || (c >= 70450 && c <= 70451)))
1026
+ : (c <= 70457 || (c < 70493
1027
+ ? (c < 70480
1028
+ ? c == 70461
1029
+ : c <= 70480)
1030
+ : (c <= 70497 || (c >= 70656 && c <= 70708)))))))))))))
1031
+ : (c <= 70730 || (c < 119894
1032
+ ? (c < 73056
1033
+ ? (c < 72001
1034
+ ? (c < 71424
1035
+ ? (c < 71128
1036
+ ? (c < 70852
1037
+ ? (c < 70784
1038
+ ? (c >= 70751 && c <= 70753)
1039
+ : c <= 70831)
1040
+ : (c <= 70853 || (c < 71040
1041
+ ? c == 70855
1042
+ : c <= 71086)))
1043
+ : (c <= 71131 || (c < 71296
1044
+ ? (c < 71236
1045
+ ? (c >= 71168 && c <= 71215)
1046
+ : c <= 71236)
1047
+ : (c <= 71338 || c == 71352))))
1048
+ : (c <= 71450 || (c < 71945
1049
+ ? (c < 71840
1050
+ ? (c < 71680
1051
+ ? (c >= 71488 && c <= 71494)
1052
+ : c <= 71723)
1053
+ : (c <= 71903 || (c >= 71935 && c <= 71942)))
1054
+ : (c <= 71945 || (c < 71960
1055
+ ? (c < 71957
1056
+ ? (c >= 71948 && c <= 71955)
1057
+ : c <= 71958)
1058
+ : (c <= 71983 || c == 71999))))))
1059
+ : (c <= 72001 || (c < 72349
1060
+ ? (c < 72192
1061
+ ? (c < 72161
1062
+ ? (c < 72106
1063
+ ? (c >= 72096 && c <= 72103)
1064
+ : c <= 72144)
1065
+ : (c <= 72161 || c == 72163))
1066
+ : (c <= 72192 || (c < 72272
1067
+ ? (c < 72250
1068
+ ? (c >= 72203 && c <= 72242)
1069
+ : c <= 72250)
1070
+ : (c <= 72272 || (c >= 72284 && c <= 72329)))))
1071
+ : (c <= 72349 || (c < 72818
1072
+ ? (c < 72714
1073
+ ? (c < 72704
1074
+ ? (c >= 72368 && c <= 72440)
1075
+ : c <= 72712)
1076
+ : (c <= 72750 || c == 72768))
1077
+ : (c <= 72847 || (c < 72971
1078
+ ? (c < 72968
1079
+ ? (c >= 72960 && c <= 72966)
1080
+ : c <= 72969)
1081
+ : (c <= 73008 || c == 73030))))))))
1082
+ : (c <= 73061 || (c < 93952
1083
+ ? (c < 82944
1084
+ ? (c < 73728
1085
+ ? (c < 73112
1086
+ ? (c < 73066
1087
+ ? (c >= 73063 && c <= 73064)
1088
+ : c <= 73097)
1089
+ : (c <= 73112 || (c < 73648
1090
+ ? (c >= 73440 && c <= 73458)
1091
+ : c <= 73648)))
1092
+ : (c <= 74649 || (c < 77712
1093
+ ? (c < 74880
1094
+ ? (c >= 74752 && c <= 74862)
1095
+ : c <= 75075)
1096
+ : (c <= 77808 || (c >= 77824 && c <= 78894)))))
1097
+ : (c <= 83526 || (c < 92928
1098
+ ? (c < 92784
1099
+ ? (c < 92736
1100
+ ? (c >= 92160 && c <= 92728)
1101
+ : c <= 92766)
1102
+ : (c <= 92862 || (c >= 92880 && c <= 92909)))
1103
+ : (c <= 92975 || (c < 93053
1104
+ ? (c < 93027
1105
+ ? (c >= 92992 && c <= 92995)
1106
+ : c <= 93047)
1107
+ : (c <= 93071 || (c >= 93760 && c <= 93823)))))))
1108
+ : (c <= 94026 || (c < 110589
1109
+ ? (c < 94208
1110
+ ? (c < 94176
1111
+ ? (c < 94099
1112
+ ? c == 94032
1113
+ : c <= 94111)
1114
+ : (c <= 94177 || c == 94179))
1115
+ : (c <= 100343 || (c < 110576
1116
+ ? (c < 101632
1117
+ ? (c >= 100352 && c <= 101589)
1118
+ : c <= 101640)
1119
+ : (c <= 110579 || (c >= 110581 && c <= 110587)))))
1120
+ : (c <= 110590 || (c < 113664
1121
+ ? (c < 110948
1122
+ ? (c < 110928
1123
+ ? (c >= 110592 && c <= 110882)
1124
+ : c <= 110930)
1125
+ : (c <= 110951 || (c >= 110960 && c <= 111355)))
1126
+ : (c <= 113770 || (c < 113808
1127
+ ? (c < 113792
1128
+ ? (c >= 113776 && c <= 113788)
1129
+ : c <= 113800)
1130
+ : (c <= 113817 || (c >= 119808 && c <= 119892)))))))))))
1131
+ : (c <= 119964 || (c < 125259
1132
+ ? (c < 120572
1133
+ ? (c < 120086
1134
+ ? (c < 119995
1135
+ ? (c < 119973
1136
+ ? (c < 119970
1137
+ ? (c >= 119966 && c <= 119967)
1138
+ : c <= 119970)
1139
+ : (c <= 119974 || (c < 119982
1140
+ ? (c >= 119977 && c <= 119980)
1141
+ : c <= 119993)))
1142
+ : (c <= 119995 || (c < 120071
1143
+ ? (c < 120005
1144
+ ? (c >= 119997 && c <= 120003)
1145
+ : c <= 120069)
1146
+ : (c <= 120074 || (c >= 120077 && c <= 120084)))))
1147
+ : (c <= 120092 || (c < 120138
1148
+ ? (c < 120128
1149
+ ? (c < 120123
1150
+ ? (c >= 120094 && c <= 120121)
1151
+ : c <= 120126)
1152
+ : (c <= 120132 || c == 120134))
1153
+ : (c <= 120144 || (c < 120514
1154
+ ? (c < 120488
1155
+ ? (c >= 120146 && c <= 120485)
1156
+ : c <= 120512)
1157
+ : (c <= 120538 || (c >= 120540 && c <= 120570)))))))
1158
+ : (c <= 120596 || (c < 123191
1159
+ ? (c < 120714
1160
+ ? (c < 120656
1161
+ ? (c < 120630
1162
+ ? (c >= 120598 && c <= 120628)
1163
+ : c <= 120654)
1164
+ : (c <= 120686 || (c >= 120688 && c <= 120712)))
1165
+ : (c <= 120744 || (c < 122624
1166
+ ? (c < 120772
1167
+ ? (c >= 120746 && c <= 120770)
1168
+ : c <= 120779)
1169
+ : (c <= 122654 || (c >= 123136 && c <= 123180)))))
1170
+ : (c <= 123197 || (c < 124904
1171
+ ? (c < 123584
1172
+ ? (c < 123536
1173
+ ? c == 123214
1174
+ : c <= 123565)
1175
+ : (c <= 123627 || (c >= 124896 && c <= 124902)))
1176
+ : (c <= 124907 || (c < 124928
1177
+ ? (c < 124912
1178
+ ? (c >= 124909 && c <= 124910)
1179
+ : c <= 124926)
1180
+ : (c <= 125124 || (c >= 125184 && c <= 125251)))))))))
1181
+ : (c <= 125259 || (c < 126559
1182
+ ? (c < 126535
1183
+ ? (c < 126505
1184
+ ? (c < 126497
1185
+ ? (c < 126469
1186
+ ? (c >= 126464 && c <= 126467)
1187
+ : c <= 126495)
1188
+ : (c <= 126498 || (c < 126503
1189
+ ? c == 126500
1190
+ : c <= 126503)))
1191
+ : (c <= 126514 || (c < 126523
1192
+ ? (c < 126521
1193
+ ? (c >= 126516 && c <= 126519)
1194
+ : c <= 126521)
1195
+ : (c <= 126523 || c == 126530))))
1196
+ : (c <= 126535 || (c < 126548
1197
+ ? (c < 126541
1198
+ ? (c < 126539
1199
+ ? c == 126537
1200
+ : c <= 126539)
1201
+ : (c <= 126543 || (c >= 126545 && c <= 126546)))
1202
+ : (c <= 126548 || (c < 126555
1203
+ ? (c < 126553
1204
+ ? c == 126551
1205
+ : c <= 126553)
1206
+ : (c <= 126555 || c == 126557))))))
1207
+ : (c <= 126559 || (c < 126625
1208
+ ? (c < 126580
1209
+ ? (c < 126567
1210
+ ? (c < 126564
1211
+ ? (c >= 126561 && c <= 126562)
1212
+ : c <= 126564)
1213
+ : (c <= 126570 || (c >= 126572 && c <= 126578)))
1214
+ : (c <= 126583 || (c < 126592
1215
+ ? (c < 126590
1216
+ ? (c >= 126585 && c <= 126588)
1217
+ : c <= 126590)
1218
+ : (c <= 126601 || (c >= 126603 && c <= 126619)))))
1219
+ : (c <= 126627 || (c < 177984
1220
+ ? (c < 131072
1221
+ ? (c < 126635
1222
+ ? (c >= 126629 && c <= 126633)
1223
+ : c <= 126651)
1224
+ : (c <= 173791 || (c >= 173824 && c <= 177976)))
1225
+ : (c <= 178205 || (c < 194560
1226
+ ? (c < 183984
1227
+ ? (c >= 178208 && c <= 183969)
1228
+ : c <= 191456)
1229
+ : (c <= 195101 || (c >= 196608 && c <= 201546)))))))))))))))));
1230
+ }
1231
+
1232
+ static inline bool sym_identifier_character_set_2(int32_t c) {
1233
+ return (c < 43616
1234
+ ? (c < 3782
1235
+ ? (c < 2748
1236
+ ? (c < 2045
1237
+ ? (c < 1015
1238
+ ? (c < 710
1239
+ ? (c < 181
1240
+ ? (c < '_'
1241
+ ? (c < 'A'
1242
+ ? (c >= '0' && c <= '9')
1243
+ : c <= 'Z')
1244
+ : (c <= '_' || (c < 170
1245
+ ? (c >= 'a' && c <= 'z')
1246
+ : c <= 170)))
1247
+ : (c <= 181 || (c < 192
1248
+ ? (c < 186
1249
+ ? c == 183
1250
+ : c <= 186)
1251
+ : (c <= 214 || (c < 248
1252
+ ? (c >= 216 && c <= 246)
1253
+ : c <= 705)))))
1254
+ : (c <= 721 || (c < 891
1255
+ ? (c < 750
1256
+ ? (c < 748
1257
+ ? (c >= 736 && c <= 740)
1258
+ : c <= 748)
1259
+ : (c <= 750 || (c < 886
1260
+ ? (c >= 768 && c <= 884)
1261
+ : c <= 887)))
1262
+ : (c <= 893 || (c < 908
1263
+ ? (c < 902
1264
+ ? c == 895
1265
+ : c <= 906)
1266
+ : (c <= 908 || (c < 931
1267
+ ? (c >= 910 && c <= 929)
1268
+ : c <= 1013)))))))
1269
+ : (c <= 1153 || (c < 1519
1270
+ ? (c < 1425
1271
+ ? (c < 1329
1272
+ ? (c < 1162
1273
+ ? (c >= 1155 && c <= 1159)
1274
+ : c <= 1327)
1275
+ : (c <= 1366 || (c < 1376
1276
+ ? c == 1369
1277
+ : c <= 1416)))
1278
+ : (c <= 1469 || (c < 1476
1279
+ ? (c < 1473
1280
+ ? c == 1471
1281
+ : c <= 1474)
1282
+ : (c <= 1477 || (c < 1488
1283
+ ? c == 1479
1284
+ : c <= 1514)))))
1285
+ : (c <= 1522 || (c < 1770
1286
+ ? (c < 1646
1287
+ ? (c < 1568
1288
+ ? (c >= 1552 && c <= 1562)
1289
+ : c <= 1641)
1290
+ : (c <= 1747 || (c < 1759
1291
+ ? (c >= 1749 && c <= 1756)
1292
+ : c <= 1768)))
1293
+ : (c <= 1788 || (c < 1869
1294
+ ? (c < 1808
1295
+ ? c == 1791
1296
+ : c <= 1866)
1297
+ : (c <= 1969 || (c < 2042
1298
+ ? (c >= 1984 && c <= 2037)
1299
+ : c <= 2042)))))))))
1300
+ : (c <= 2045 || (c < 2558
1301
+ ? (c < 2451
1302
+ ? (c < 2200
1303
+ ? (c < 2144
1304
+ ? (c < 2112
1305
+ ? (c >= 2048 && c <= 2093)
1306
+ : c <= 2139)
1307
+ : (c <= 2154 || (c < 2185
1308
+ ? (c >= 2160 && c <= 2183)
1309
+ : c <= 2190)))
1310
+ : (c <= 2273 || (c < 2417
1311
+ ? (c < 2406
1312
+ ? (c >= 2275 && c <= 2403)
1313
+ : c <= 2415)
1314
+ : (c <= 2435 || (c < 2447
1315
+ ? (c >= 2437 && c <= 2444)
1316
+ : c <= 2448)))))
1317
+ : (c <= 2472 || (c < 2507
1318
+ ? (c < 2486
1319
+ ? (c < 2482
1320
+ ? (c >= 2474 && c <= 2480)
1321
+ : c <= 2482)
1322
+ : (c <= 2489 || (c < 2503
1323
+ ? (c >= 2492 && c <= 2500)
1324
+ : c <= 2504)))
1325
+ : (c <= 2510 || (c < 2527
1326
+ ? (c < 2524
1327
+ ? c == 2519
1328
+ : c <= 2525)
1329
+ : (c <= 2531 || (c < 2556
1330
+ ? (c >= 2534 && c <= 2545)
1331
+ : c <= 2556)))))))
1332
+ : (c <= 2558 || (c < 2635
1333
+ ? (c < 2610
1334
+ ? (c < 2575
1335
+ ? (c < 2565
1336
+ ? (c >= 2561 && c <= 2563)
1337
+ : c <= 2570)
1338
+ : (c <= 2576 || (c < 2602
1339
+ ? (c >= 2579 && c <= 2600)
1340
+ : c <= 2608)))
1341
+ : (c <= 2611 || (c < 2620
1342
+ ? (c < 2616
1343
+ ? (c >= 2613 && c <= 2614)
1344
+ : c <= 2617)
1345
+ : (c <= 2620 || (c < 2631
1346
+ ? (c >= 2622 && c <= 2626)
1347
+ : c <= 2632)))))
1348
+ : (c <= 2637 || (c < 2693
1349
+ ? (c < 2654
1350
+ ? (c < 2649
1351
+ ? c == 2641
1352
+ : c <= 2652)
1353
+ : (c <= 2654 || (c < 2689
1354
+ ? (c >= 2662 && c <= 2677)
1355
+ : c <= 2691)))
1356
+ : (c <= 2701 || (c < 2730
1357
+ ? (c < 2707
1358
+ ? (c >= 2703 && c <= 2705)
1359
+ : c <= 2728)
1360
+ : (c <= 2736 || (c < 2741
1361
+ ? (c >= 2738 && c <= 2739)
1362
+ : c <= 2745)))))))))))
1363
+ : (c <= 2757 || (c < 3168
1364
+ ? (c < 2958
1365
+ ? (c < 2866
1366
+ ? (c < 2809
1367
+ ? (c < 2768
1368
+ ? (c < 2763
1369
+ ? (c >= 2759 && c <= 2761)
1370
+ : c <= 2765)
1371
+ : (c <= 2768 || (c < 2790
1372
+ ? (c >= 2784 && c <= 2787)
1373
+ : c <= 2799)))
1374
+ : (c <= 2815 || (c < 2831
1375
+ ? (c < 2821
1376
+ ? (c >= 2817 && c <= 2819)
1377
+ : c <= 2828)
1378
+ : (c <= 2832 || (c < 2858
1379
+ ? (c >= 2835 && c <= 2856)
1380
+ : c <= 2864)))))
1381
+ : (c <= 2867 || (c < 2908
1382
+ ? (c < 2887
1383
+ ? (c < 2876
1384
+ ? (c >= 2869 && c <= 2873)
1385
+ : c <= 2884)
1386
+ : (c <= 2888 || (c < 2901
1387
+ ? (c >= 2891 && c <= 2893)
1388
+ : c <= 2903)))
1389
+ : (c <= 2909 || (c < 2929
1390
+ ? (c < 2918
1391
+ ? (c >= 2911 && c <= 2915)
1392
+ : c <= 2927)
1393
+ : (c <= 2929 || (c < 2949
1394
+ ? (c >= 2946 && c <= 2947)
1395
+ : c <= 2954)))))))
1396
+ : (c <= 2960 || (c < 3031
1397
+ ? (c < 2984
1398
+ ? (c < 2972
1399
+ ? (c < 2969
1400
+ ? (c >= 2962 && c <= 2965)
1401
+ : c <= 2970)
1402
+ : (c <= 2972 || (c < 2979
1403
+ ? (c >= 2974 && c <= 2975)
1404
+ : c <= 2980)))
1405
+ : (c <= 2986 || (c < 3014
1406
+ ? (c < 3006
1407
+ ? (c >= 2990 && c <= 3001)
1408
+ : c <= 3010)
1409
+ : (c <= 3016 || (c < 3024
1410
+ ? (c >= 3018 && c <= 3021)
1411
+ : c <= 3024)))))
1412
+ : (c <= 3031 || (c < 3132
1413
+ ? (c < 3086
1414
+ ? (c < 3072
1415
+ ? (c >= 3046 && c <= 3055)
1416
+ : c <= 3084)
1417
+ : (c <= 3088 || (c < 3114
1418
+ ? (c >= 3090 && c <= 3112)
1419
+ : c <= 3129)))
1420
+ : (c <= 3140 || (c < 3157
1421
+ ? (c < 3146
1422
+ ? (c >= 3142 && c <= 3144)
1423
+ : c <= 3149)
1424
+ : (c <= 3158 || (c < 3165
1425
+ ? (c >= 3160 && c <= 3162)
1426
+ : c <= 3165)))))))))
1427
+ : (c <= 3171 || (c < 3450
1428
+ ? (c < 3293
1429
+ ? (c < 3242
1430
+ ? (c < 3205
1431
+ ? (c < 3200
1432
+ ? (c >= 3174 && c <= 3183)
1433
+ : c <= 3203)
1434
+ : (c <= 3212 || (c < 3218
1435
+ ? (c >= 3214 && c <= 3216)
1436
+ : c <= 3240)))
1437
+ : (c <= 3251 || (c < 3270
1438
+ ? (c < 3260
1439
+ ? (c >= 3253 && c <= 3257)
1440
+ : c <= 3268)
1441
+ : (c <= 3272 || (c < 3285
1442
+ ? (c >= 3274 && c <= 3277)
1443
+ : c <= 3286)))))
1444
+ : (c <= 3294 || (c < 3346
1445
+ ? (c < 3313
1446
+ ? (c < 3302
1447
+ ? (c >= 3296 && c <= 3299)
1448
+ : c <= 3311)
1449
+ : (c <= 3314 || (c < 3342
1450
+ ? (c >= 3328 && c <= 3340)
1451
+ : c <= 3344)))
1452
+ : (c <= 3396 || (c < 3412
1453
+ ? (c < 3402
1454
+ ? (c >= 3398 && c <= 3400)
1455
+ : c <= 3406)
1456
+ : (c <= 3415 || (c < 3430
1457
+ ? (c >= 3423 && c <= 3427)
1458
+ : c <= 3439)))))))
1459
+ : (c <= 3455 || (c < 3570
1460
+ ? (c < 3520
1461
+ ? (c < 3482
1462
+ ? (c < 3461
1463
+ ? (c >= 3457 && c <= 3459)
1464
+ : c <= 3478)
1465
+ : (c <= 3505 || (c < 3517
1466
+ ? (c >= 3507 && c <= 3515)
1467
+ : c <= 3517)))
1468
+ : (c <= 3526 || (c < 3542
1469
+ ? (c < 3535
1470
+ ? c == 3530
1471
+ : c <= 3540)
1472
+ : (c <= 3542 || (c < 3558
1473
+ ? (c >= 3544 && c <= 3551)
1474
+ : c <= 3567)))))
1475
+ : (c <= 3571 || (c < 3718
1476
+ ? (c < 3664
1477
+ ? (c < 3648
1478
+ ? (c >= 3585 && c <= 3642)
1479
+ : c <= 3662)
1480
+ : (c <= 3673 || (c < 3716
1481
+ ? (c >= 3713 && c <= 3714)
1482
+ : c <= 3716)))
1483
+ : (c <= 3722 || (c < 3751
1484
+ ? (c < 3749
1485
+ ? (c >= 3724 && c <= 3747)
1486
+ : c <= 3749)
1487
+ : (c <= 3773 || (c >= 3776 && c <= 3780)))))))))))))
1488
+ : (c <= 3782 || (c < 8025
1489
+ ? (c < 5888
1490
+ ? (c < 4688
1491
+ ? (c < 3953
1492
+ ? (c < 3872
1493
+ ? (c < 3804
1494
+ ? (c < 3792
1495
+ ? (c >= 3784 && c <= 3789)
1496
+ : c <= 3801)
1497
+ : (c <= 3807 || (c < 3864
1498
+ ? c == 3840
1499
+ : c <= 3865)))
1500
+ : (c <= 3881 || (c < 3897
1501
+ ? (c < 3895
1502
+ ? c == 3893
1503
+ : c <= 3895)
1504
+ : (c <= 3897 || (c < 3913
1505
+ ? (c >= 3902 && c <= 3911)
1506
+ : c <= 3948)))))
1507
+ : (c <= 3972 || (c < 4256
1508
+ ? (c < 4038
1509
+ ? (c < 3993
1510
+ ? (c >= 3974 && c <= 3991)
1511
+ : c <= 4028)
1512
+ : (c <= 4038 || (c < 4176
1513
+ ? (c >= 4096 && c <= 4169)
1514
+ : c <= 4253)))
1515
+ : (c <= 4293 || (c < 4304
1516
+ ? (c < 4301
1517
+ ? c == 4295
1518
+ : c <= 4301)
1519
+ : (c <= 4346 || (c < 4682
1520
+ ? (c >= 4348 && c <= 4680)
1521
+ : c <= 4685)))))))
1522
+ : (c <= 4694 || (c < 4882
1523
+ ? (c < 4786
1524
+ ? (c < 4704
1525
+ ? (c < 4698
1526
+ ? c == 4696
1527
+ : c <= 4701)
1528
+ : (c <= 4744 || (c < 4752
1529
+ ? (c >= 4746 && c <= 4749)
1530
+ : c <= 4784)))
1531
+ : (c <= 4789 || (c < 4802
1532
+ ? (c < 4800
1533
+ ? (c >= 4792 && c <= 4798)
1534
+ : c <= 4800)
1535
+ : (c <= 4805 || (c < 4824
1536
+ ? (c >= 4808 && c <= 4822)
1537
+ : c <= 4880)))))
1538
+ : (c <= 4885 || (c < 5112
1539
+ ? (c < 4969
1540
+ ? (c < 4957
1541
+ ? (c >= 4888 && c <= 4954)
1542
+ : c <= 4959)
1543
+ : (c <= 4977 || (c < 5024
1544
+ ? (c >= 4992 && c <= 5007)
1545
+ : c <= 5109)))
1546
+ : (c <= 5117 || (c < 5761
1547
+ ? (c < 5743
1548
+ ? (c >= 5121 && c <= 5740)
1549
+ : c <= 5759)
1550
+ : (c <= 5786 || (c < 5870
1551
+ ? (c >= 5792 && c <= 5866)
1552
+ : c <= 5880)))))))))
1553
+ : (c <= 5909 || (c < 6688
1554
+ ? (c < 6176
1555
+ ? (c < 6016
1556
+ ? (c < 5984
1557
+ ? (c < 5952
1558
+ ? (c >= 5919 && c <= 5940)
1559
+ : c <= 5971)
1560
+ : (c <= 5996 || (c < 6002
1561
+ ? (c >= 5998 && c <= 6000)
1562
+ : c <= 6003)))
1563
+ : (c <= 6099 || (c < 6112
1564
+ ? (c < 6108
1565
+ ? c == 6103
1566
+ : c <= 6109)
1567
+ : (c <= 6121 || (c < 6159
1568
+ ? (c >= 6155 && c <= 6157)
1569
+ : c <= 6169)))))
1570
+ : (c <= 6264 || (c < 6470
1571
+ ? (c < 6400
1572
+ ? (c < 6320
1573
+ ? (c >= 6272 && c <= 6314)
1574
+ : c <= 6389)
1575
+ : (c <= 6430 || (c < 6448
1576
+ ? (c >= 6432 && c <= 6443)
1577
+ : c <= 6459)))
1578
+ : (c <= 6509 || (c < 6576
1579
+ ? (c < 6528
1580
+ ? (c >= 6512 && c <= 6516)
1581
+ : c <= 6571)
1582
+ : (c <= 6601 || (c < 6656
1583
+ ? (c >= 6608 && c <= 6618)
1584
+ : c <= 6683)))))))
1585
+ : (c <= 6750 || (c < 7232
1586
+ ? (c < 6847
1587
+ ? (c < 6800
1588
+ ? (c < 6783
1589
+ ? (c >= 6752 && c <= 6780)
1590
+ : c <= 6793)
1591
+ : (c <= 6809 || (c < 6832
1592
+ ? c == 6823
1593
+ : c <= 6845)))
1594
+ : (c <= 6862 || (c < 7019
1595
+ ? (c < 6992
1596
+ ? (c >= 6912 && c <= 6988)
1597
+ : c <= 7001)
1598
+ : (c <= 7027 || (c < 7168
1599
+ ? (c >= 7040 && c <= 7155)
1600
+ : c <= 7223)))))
1601
+ : (c <= 7241 || (c < 7380
1602
+ ? (c < 7312
1603
+ ? (c < 7296
1604
+ ? (c >= 7245 && c <= 7293)
1605
+ : c <= 7304)
1606
+ : (c <= 7354 || (c < 7376
1607
+ ? (c >= 7357 && c <= 7359)
1608
+ : c <= 7378)))
1609
+ : (c <= 7418 || (c < 7968
1610
+ ? (c < 7960
1611
+ ? (c >= 7424 && c <= 7957)
1612
+ : c <= 7965)
1613
+ : (c <= 8005 || (c < 8016
1614
+ ? (c >= 8008 && c <= 8013)
1615
+ : c <= 8023)))))))))))
1616
+ : (c <= 8025 || (c < 11720
1617
+ ? (c < 8458
1618
+ ? (c < 8178
1619
+ ? (c < 8126
1620
+ ? (c < 8031
1621
+ ? (c < 8029
1622
+ ? c == 8027
1623
+ : c <= 8029)
1624
+ : (c <= 8061 || (c < 8118
1625
+ ? (c >= 8064 && c <= 8116)
1626
+ : c <= 8124)))
1627
+ : (c <= 8126 || (c < 8144
1628
+ ? (c < 8134
1629
+ ? (c >= 8130 && c <= 8132)
1630
+ : c <= 8140)
1631
+ : (c <= 8147 || (c < 8160
1632
+ ? (c >= 8150 && c <= 8155)
1633
+ : c <= 8172)))))
1634
+ : (c <= 8180 || (c < 8336
1635
+ ? (c < 8276
1636
+ ? (c < 8255
1637
+ ? (c >= 8182 && c <= 8188)
1638
+ : c <= 8256)
1639
+ : (c <= 8276 || (c < 8319
1640
+ ? c == 8305
1641
+ : c <= 8319)))
1642
+ : (c <= 8348 || (c < 8421
1643
+ ? (c < 8417
1644
+ ? (c >= 8400 && c <= 8412)
1645
+ : c <= 8417)
1646
+ : (c <= 8432 || (c < 8455
1647
+ ? c == 8450
1648
+ : c <= 8455)))))))
1649
+ : (c <= 8467 || (c < 11499
1650
+ ? (c < 8490
1651
+ ? (c < 8484
1652
+ ? (c < 8472
1653
+ ? c == 8469
1654
+ : c <= 8477)
1655
+ : (c <= 8484 || (c < 8488
1656
+ ? c == 8486
1657
+ : c <= 8488)))
1658
+ : (c <= 8505 || (c < 8526
1659
+ ? (c < 8517
1660
+ ? (c >= 8508 && c <= 8511)
1661
+ : c <= 8521)
1662
+ : (c <= 8526 || (c < 11264
1663
+ ? (c >= 8544 && c <= 8584)
1664
+ : c <= 11492)))))
1665
+ : (c <= 11507 || (c < 11647
1666
+ ? (c < 11565
1667
+ ? (c < 11559
1668
+ ? (c >= 11520 && c <= 11557)
1669
+ : c <= 11559)
1670
+ : (c <= 11565 || (c < 11631
1671
+ ? (c >= 11568 && c <= 11623)
1672
+ : c <= 11631)))
1673
+ : (c <= 11670 || (c < 11696
1674
+ ? (c < 11688
1675
+ ? (c >= 11680 && c <= 11686)
1676
+ : c <= 11694)
1677
+ : (c <= 11702 || (c < 11712
1678
+ ? (c >= 11704 && c <= 11710)
1679
+ : c <= 11718)))))))))
1680
+ : (c <= 11726 || (c < 42623
1681
+ ? (c < 12540
1682
+ ? (c < 12337
1683
+ ? (c < 11744
1684
+ ? (c < 11736
1685
+ ? (c >= 11728 && c <= 11734)
1686
+ : c <= 11742)
1687
+ : (c <= 11775 || (c < 12321
1688
+ ? (c >= 12293 && c <= 12295)
1689
+ : c <= 12335)))
1690
+ : (c <= 12341 || (c < 12441
1691
+ ? (c < 12353
1692
+ ? (c >= 12344 && c <= 12348)
1693
+ : c <= 12438)
1694
+ : (c <= 12442 || (c < 12449
1695
+ ? (c >= 12445 && c <= 12447)
1696
+ : c <= 12538)))))
1697
+ : (c <= 12543 || (c < 19968
1698
+ ? (c < 12704
1699
+ ? (c < 12593
1700
+ ? (c >= 12549 && c <= 12591)
1701
+ : c <= 12686)
1702
+ : (c <= 12735 || (c < 13312
1703
+ ? (c >= 12784 && c <= 12799)
1704
+ : c <= 19903)))
1705
+ : (c <= 42124 || (c < 42512
1706
+ ? (c < 42240
1707
+ ? (c >= 42192 && c <= 42237)
1708
+ : c <= 42508)
1709
+ : (c <= 42539 || (c < 42612
1710
+ ? (c >= 42560 && c <= 42607)
1711
+ : c <= 42621)))))))
1712
+ : (c <= 42737 || (c < 43232
1713
+ ? (c < 42965
1714
+ ? (c < 42891
1715
+ ? (c < 42786
1716
+ ? (c >= 42775 && c <= 42783)
1717
+ : c <= 42888)
1718
+ : (c <= 42954 || (c < 42963
1719
+ ? (c >= 42960 && c <= 42961)
1720
+ : c <= 42963)))
1721
+ : (c <= 42969 || (c < 43072
1722
+ ? (c < 43052
1723
+ ? (c >= 42994 && c <= 43047)
1724
+ : c <= 43052)
1725
+ : (c <= 43123 || (c < 43216
1726
+ ? (c >= 43136 && c <= 43205)
1727
+ : c <= 43225)))))
1728
+ : (c <= 43255 || (c < 43471
1729
+ ? (c < 43312
1730
+ ? (c < 43261
1731
+ ? c == 43259
1732
+ : c <= 43309)
1733
+ : (c <= 43347 || (c < 43392
1734
+ ? (c >= 43360 && c <= 43388)
1735
+ : c <= 43456)))
1736
+ : (c <= 43481 || (c < 43584
1737
+ ? (c < 43520
1738
+ ? (c >= 43488 && c <= 43518)
1739
+ : c <= 43574)
1740
+ : (c <= 43597 || (c >= 43600 && c <= 43609)))))))))))))))
1741
+ : (c <= 43638 || (c < 71453
1742
+ ? (c < 67639
1743
+ ? (c < 65345
1744
+ ? (c < 64312
1745
+ ? (c < 43888
1746
+ ? (c < 43785
1747
+ ? (c < 43744
1748
+ ? (c < 43739
1749
+ ? (c >= 43642 && c <= 43714)
1750
+ : c <= 43741)
1751
+ : (c <= 43759 || (c < 43777
1752
+ ? (c >= 43762 && c <= 43766)
1753
+ : c <= 43782)))
1754
+ : (c <= 43790 || (c < 43816
1755
+ ? (c < 43808
1756
+ ? (c >= 43793 && c <= 43798)
1757
+ : c <= 43814)
1758
+ : (c <= 43822 || (c < 43868
1759
+ ? (c >= 43824 && c <= 43866)
1760
+ : c <= 43881)))))
1761
+ : (c <= 44010 || (c < 63744
1762
+ ? (c < 44032
1763
+ ? (c < 44016
1764
+ ? (c >= 44012 && c <= 44013)
1765
+ : c <= 44025)
1766
+ : (c <= 55203 || (c < 55243
1767
+ ? (c >= 55216 && c <= 55238)
1768
+ : c <= 55291)))
1769
+ : (c <= 64109 || (c < 64275
1770
+ ? (c < 64256
1771
+ ? (c >= 64112 && c <= 64217)
1772
+ : c <= 64262)
1773
+ : (c <= 64279 || (c < 64298
1774
+ ? (c >= 64285 && c <= 64296)
1775
+ : c <= 64310)))))))
1776
+ : (c <= 64316 || (c < 65075
1777
+ ? (c < 64612
1778
+ ? (c < 64323
1779
+ ? (c < 64320
1780
+ ? c == 64318
1781
+ : c <= 64321)
1782
+ : (c <= 64324 || (c < 64467
1783
+ ? (c >= 64326 && c <= 64433)
1784
+ : c <= 64605)))
1785
+ : (c <= 64829 || (c < 65008
1786
+ ? (c < 64914
1787
+ ? (c >= 64848 && c <= 64911)
1788
+ : c <= 64967)
1789
+ : (c <= 65017 || (c < 65056
1790
+ ? (c >= 65024 && c <= 65039)
1791
+ : c <= 65071)))))
1792
+ : (c <= 65076 || (c < 65147
1793
+ ? (c < 65139
1794
+ ? (c < 65137
1795
+ ? (c >= 65101 && c <= 65103)
1796
+ : c <= 65137)
1797
+ : (c <= 65139 || (c < 65145
1798
+ ? c == 65143
1799
+ : c <= 65145)))
1800
+ : (c <= 65147 || (c < 65296
1801
+ ? (c < 65151
1802
+ ? c == 65149
1803
+ : c <= 65276)
1804
+ : (c <= 65305 || (c < 65343
1805
+ ? (c >= 65313 && c <= 65338)
1806
+ : c <= 65343)))))))))
1807
+ : (c <= 65370 || (c < 66513
1808
+ ? (c < 65664
1809
+ ? (c < 65536
1810
+ ? (c < 65482
1811
+ ? (c < 65474
1812
+ ? (c >= 65382 && c <= 65470)
1813
+ : c <= 65479)
1814
+ : (c <= 65487 || (c < 65498
1815
+ ? (c >= 65490 && c <= 65495)
1816
+ : c <= 65500)))
1817
+ : (c <= 65547 || (c < 65596
1818
+ ? (c < 65576
1819
+ ? (c >= 65549 && c <= 65574)
1820
+ : c <= 65594)
1821
+ : (c <= 65597 || (c < 65616
1822
+ ? (c >= 65599 && c <= 65613)
1823
+ : c <= 65629)))))
1824
+ : (c <= 65786 || (c < 66304
1825
+ ? (c < 66176
1826
+ ? (c < 66045
1827
+ ? (c >= 65856 && c <= 65908)
1828
+ : c <= 66045)
1829
+ : (c <= 66204 || (c < 66272
1830
+ ? (c >= 66208 && c <= 66256)
1831
+ : c <= 66272)))
1832
+ : (c <= 66335 || (c < 66432
1833
+ ? (c < 66384
1834
+ ? (c >= 66349 && c <= 66378)
1835
+ : c <= 66426)
1836
+ : (c <= 66461 || (c < 66504
1837
+ ? (c >= 66464 && c <= 66499)
1838
+ : c <= 66511)))))))
1839
+ : (c <= 66517 || (c < 66979
1840
+ ? (c < 66864
1841
+ ? (c < 66736
1842
+ ? (c < 66720
1843
+ ? (c >= 66560 && c <= 66717)
1844
+ : c <= 66729)
1845
+ : (c <= 66771 || (c < 66816
1846
+ ? (c >= 66776 && c <= 66811)
1847
+ : c <= 66855)))
1848
+ : (c <= 66915 || (c < 66956
1849
+ ? (c < 66940
1850
+ ? (c >= 66928 && c <= 66938)
1851
+ : c <= 66954)
1852
+ : (c <= 66962 || (c < 66967
1853
+ ? (c >= 66964 && c <= 66965)
1854
+ : c <= 66977)))))
1855
+ : (c <= 66993 || (c < 67456
1856
+ ? (c < 67072
1857
+ ? (c < 67003
1858
+ ? (c >= 66995 && c <= 67001)
1859
+ : c <= 67004)
1860
+ : (c <= 67382 || (c < 67424
1861
+ ? (c >= 67392 && c <= 67413)
1862
+ : c <= 67431)))
1863
+ : (c <= 67461 || (c < 67584
1864
+ ? (c < 67506
1865
+ ? (c >= 67463 && c <= 67504)
1866
+ : c <= 67514)
1867
+ : (c <= 67589 || (c < 67594
1868
+ ? c == 67592
1869
+ : c <= 67637)))))))))))
1870
+ : (c <= 67640 || (c < 69956
1871
+ ? (c < 68448
1872
+ ? (c < 68101
1873
+ ? (c < 67828
1874
+ ? (c < 67680
1875
+ ? (c < 67647
1876
+ ? c == 67644
1877
+ : c <= 67669)
1878
+ : (c <= 67702 || (c < 67808
1879
+ ? (c >= 67712 && c <= 67742)
1880
+ : c <= 67826)))
1881
+ : (c <= 67829 || (c < 67968
1882
+ ? (c < 67872
1883
+ ? (c >= 67840 && c <= 67861)
1884
+ : c <= 67897)
1885
+ : (c <= 68023 || (c < 68096
1886
+ ? (c >= 68030 && c <= 68031)
1887
+ : c <= 68099)))))
1888
+ : (c <= 68102 || (c < 68192
1889
+ ? (c < 68121
1890
+ ? (c < 68117
1891
+ ? (c >= 68108 && c <= 68115)
1892
+ : c <= 68119)
1893
+ : (c <= 68149 || (c < 68159
1894
+ ? (c >= 68152 && c <= 68154)
1895
+ : c <= 68159)))
1896
+ : (c <= 68220 || (c < 68297
1897
+ ? (c < 68288
1898
+ ? (c >= 68224 && c <= 68252)
1899
+ : c <= 68295)
1900
+ : (c <= 68326 || (c < 68416
1901
+ ? (c >= 68352 && c <= 68405)
1902
+ : c <= 68437)))))))
1903
+ : (c <= 68466 || (c < 69424
1904
+ ? (c < 68912
1905
+ ? (c < 68736
1906
+ ? (c < 68608
1907
+ ? (c >= 68480 && c <= 68497)
1908
+ : c <= 68680)
1909
+ : (c <= 68786 || (c < 68864
1910
+ ? (c >= 68800 && c <= 68850)
1911
+ : c <= 68903)))
1912
+ : (c <= 68921 || (c < 69296
1913
+ ? (c < 69291
1914
+ ? (c >= 69248 && c <= 69289)
1915
+ : c <= 69292)
1916
+ : (c <= 69297 || (c < 69415
1917
+ ? (c >= 69376 && c <= 69404)
1918
+ : c <= 69415)))))
1919
+ : (c <= 69456 || (c < 69759
1920
+ ? (c < 69600
1921
+ ? (c < 69552
1922
+ ? (c >= 69488 && c <= 69509)
1923
+ : c <= 69572)
1924
+ : (c <= 69622 || (c < 69734
1925
+ ? (c >= 69632 && c <= 69702)
1926
+ : c <= 69749)))
1927
+ : (c <= 69818 || (c < 69872
1928
+ ? (c < 69840
1929
+ ? c == 69826
1930
+ : c <= 69864)
1931
+ : (c <= 69881 || (c < 69942
1932
+ ? (c >= 69888 && c <= 69940)
1933
+ : c <= 69951)))))))))
1934
+ : (c <= 69959 || (c < 70459
1935
+ ? (c < 70282
1936
+ ? (c < 70108
1937
+ ? (c < 70016
1938
+ ? (c < 70006
1939
+ ? (c >= 69968 && c <= 70003)
1940
+ : c <= 70006)
1941
+ : (c <= 70084 || (c < 70094
1942
+ ? (c >= 70089 && c <= 70092)
1943
+ : c <= 70106)))
1944
+ : (c <= 70108 || (c < 70206
1945
+ ? (c < 70163
1946
+ ? (c >= 70144 && c <= 70161)
1947
+ : c <= 70199)
1948
+ : (c <= 70206 || (c < 70280
1949
+ ? (c >= 70272 && c <= 70278)
1950
+ : c <= 70280)))))
1951
+ : (c <= 70285 || (c < 70405
1952
+ ? (c < 70320
1953
+ ? (c < 70303
1954
+ ? (c >= 70287 && c <= 70301)
1955
+ : c <= 70312)
1956
+ : (c <= 70378 || (c < 70400
1957
+ ? (c >= 70384 && c <= 70393)
1958
+ : c <= 70403)))
1959
+ : (c <= 70412 || (c < 70442
1960
+ ? (c < 70419
1961
+ ? (c >= 70415 && c <= 70416)
1962
+ : c <= 70440)
1963
+ : (c <= 70448 || (c < 70453
1964
+ ? (c >= 70450 && c <= 70451)
1965
+ : c <= 70457)))))))
1966
+ : (c <= 70468 || (c < 70855
1967
+ ? (c < 70502
1968
+ ? (c < 70480
1969
+ ? (c < 70475
1970
+ ? (c >= 70471 && c <= 70472)
1971
+ : c <= 70477)
1972
+ : (c <= 70480 || (c < 70493
1973
+ ? c == 70487
1974
+ : c <= 70499)))
1975
+ : (c <= 70508 || (c < 70736
1976
+ ? (c < 70656
1977
+ ? (c >= 70512 && c <= 70516)
1978
+ : c <= 70730)
1979
+ : (c <= 70745 || (c < 70784
1980
+ ? (c >= 70750 && c <= 70753)
1981
+ : c <= 70853)))))
1982
+ : (c <= 70855 || (c < 71236
1983
+ ? (c < 71096
1984
+ ? (c < 71040
1985
+ ? (c >= 70864 && c <= 70873)
1986
+ : c <= 71093)
1987
+ : (c <= 71104 || (c < 71168
1988
+ ? (c >= 71128 && c <= 71133)
1989
+ : c <= 71232)))
1990
+ : (c <= 71236 || (c < 71360
1991
+ ? (c < 71296
1992
+ ? (c >= 71248 && c <= 71257)
1993
+ : c <= 71352)
1994
+ : (c <= 71369 || (c >= 71424 && c <= 71450)))))))))))))
1995
+ : (c <= 71467 || (c < 119973
1996
+ ? (c < 77824
1997
+ ? (c < 72760
1998
+ ? (c < 72016
1999
+ ? (c < 71945
2000
+ ? (c < 71680
2001
+ ? (c < 71488
2002
+ ? (c >= 71472 && c <= 71481)
2003
+ : c <= 71494)
2004
+ : (c <= 71738 || (c < 71935
2005
+ ? (c >= 71840 && c <= 71913)
2006
+ : c <= 71942)))
2007
+ : (c <= 71945 || (c < 71960
2008
+ ? (c < 71957
2009
+ ? (c >= 71948 && c <= 71955)
2010
+ : c <= 71958)
2011
+ : (c <= 71989 || (c < 71995
2012
+ ? (c >= 71991 && c <= 71992)
2013
+ : c <= 72003)))))
2014
+ : (c <= 72025 || (c < 72263
2015
+ ? (c < 72154
2016
+ ? (c < 72106
2017
+ ? (c >= 72096 && c <= 72103)
2018
+ : c <= 72151)
2019
+ : (c <= 72161 || (c < 72192
2020
+ ? (c >= 72163 && c <= 72164)
2021
+ : c <= 72254)))
2022
+ : (c <= 72263 || (c < 72368
2023
+ ? (c < 72349
2024
+ ? (c >= 72272 && c <= 72345)
2025
+ : c <= 72349)
2026
+ : (c <= 72440 || (c < 72714
2027
+ ? (c >= 72704 && c <= 72712)
2028
+ : c <= 72758)))))))
2029
+ : (c <= 72768 || (c < 73056
2030
+ ? (c < 72968
2031
+ ? (c < 72850
2032
+ ? (c < 72818
2033
+ ? (c >= 72784 && c <= 72793)
2034
+ : c <= 72847)
2035
+ : (c <= 72871 || (c < 72960
2036
+ ? (c >= 72873 && c <= 72886)
2037
+ : c <= 72966)))
2038
+ : (c <= 72969 || (c < 73020
2039
+ ? (c < 73018
2040
+ ? (c >= 72971 && c <= 73014)
2041
+ : c <= 73018)
2042
+ : (c <= 73021 || (c < 73040
2043
+ ? (c >= 73023 && c <= 73031)
2044
+ : c <= 73049)))))
2045
+ : (c <= 73061 || (c < 73440
2046
+ ? (c < 73104
2047
+ ? (c < 73066
2048
+ ? (c >= 73063 && c <= 73064)
2049
+ : c <= 73102)
2050
+ : (c <= 73105 || (c < 73120
2051
+ ? (c >= 73107 && c <= 73112)
2052
+ : c <= 73129)))
2053
+ : (c <= 73462 || (c < 74752
2054
+ ? (c < 73728
2055
+ ? c == 73648
2056
+ : c <= 74649)
2057
+ : (c <= 74862 || (c < 77712
2058
+ ? (c >= 74880 && c <= 75075)
2059
+ : c <= 77808)))))))))
2060
+ : (c <= 78894 || (c < 110576
2061
+ ? (c < 93027
2062
+ ? (c < 92864
2063
+ ? (c < 92736
2064
+ ? (c < 92160
2065
+ ? (c >= 82944 && c <= 83526)
2066
+ : c <= 92728)
2067
+ : (c <= 92766 || (c < 92784
2068
+ ? (c >= 92768 && c <= 92777)
2069
+ : c <= 92862)))
2070
+ : (c <= 92873 || (c < 92928
2071
+ ? (c < 92912
2072
+ ? (c >= 92880 && c <= 92909)
2073
+ : c <= 92916)
2074
+ : (c <= 92982 || (c < 93008
2075
+ ? (c >= 92992 && c <= 92995)
2076
+ : c <= 93017)))))
2077
+ : (c <= 93047 || (c < 94176
2078
+ ? (c < 93952
2079
+ ? (c < 93760
2080
+ ? (c >= 93053 && c <= 93071)
2081
+ : c <= 93823)
2082
+ : (c <= 94026 || (c < 94095
2083
+ ? (c >= 94031 && c <= 94087)
2084
+ : c <= 94111)))
2085
+ : (c <= 94177 || (c < 94208
2086
+ ? (c < 94192
2087
+ ? (c >= 94179 && c <= 94180)
2088
+ : c <= 94193)
2089
+ : (c <= 100343 || (c < 101632
2090
+ ? (c >= 100352 && c <= 101589)
2091
+ : c <= 101640)))))))
2092
+ : (c <= 110579 || (c < 118528
2093
+ ? (c < 110960
2094
+ ? (c < 110592
2095
+ ? (c < 110589
2096
+ ? (c >= 110581 && c <= 110587)
2097
+ : c <= 110590)
2098
+ : (c <= 110882 || (c < 110948
2099
+ ? (c >= 110928 && c <= 110930)
2100
+ : c <= 110951)))
2101
+ : (c <= 111355 || (c < 113792
2102
+ ? (c < 113776
2103
+ ? (c >= 113664 && c <= 113770)
2104
+ : c <= 113788)
2105
+ : (c <= 113800 || (c < 113821
2106
+ ? (c >= 113808 && c <= 113817)
2107
+ : c <= 113822)))))
2108
+ : (c <= 118573 || (c < 119210
2109
+ ? (c < 119149
2110
+ ? (c < 119141
2111
+ ? (c >= 118576 && c <= 118598)
2112
+ : c <= 119145)
2113
+ : (c <= 119154 || (c < 119173
2114
+ ? (c >= 119163 && c <= 119170)
2115
+ : c <= 119179)))
2116
+ : (c <= 119213 || (c < 119894
2117
+ ? (c < 119808
2118
+ ? (c >= 119362 && c <= 119364)
2119
+ : c <= 119892)
2120
+ : (c <= 119964 || (c < 119970
2121
+ ? (c >= 119966 && c <= 119967)
2122
+ : c <= 119970)))))))))))
2123
+ : (c <= 119974 || (c < 124912
2124
+ ? (c < 120746
2125
+ ? (c < 120134
2126
+ ? (c < 120071
2127
+ ? (c < 119995
2128
+ ? (c < 119982
2129
+ ? (c >= 119977 && c <= 119980)
2130
+ : c <= 119993)
2131
+ : (c <= 119995 || (c < 120005
2132
+ ? (c >= 119997 && c <= 120003)
2133
+ : c <= 120069)))
2134
+ : (c <= 120074 || (c < 120094
2135
+ ? (c < 120086
2136
+ ? (c >= 120077 && c <= 120084)
2137
+ : c <= 120092)
2138
+ : (c <= 120121 || (c < 120128
2139
+ ? (c >= 120123 && c <= 120126)
2140
+ : c <= 120132)))))
2141
+ : (c <= 120134 || (c < 120572
2142
+ ? (c < 120488
2143
+ ? (c < 120146
2144
+ ? (c >= 120138 && c <= 120144)
2145
+ : c <= 120485)
2146
+ : (c <= 120512 || (c < 120540
2147
+ ? (c >= 120514 && c <= 120538)
2148
+ : c <= 120570)))
2149
+ : (c <= 120596 || (c < 120656
2150
+ ? (c < 120630
2151
+ ? (c >= 120598 && c <= 120628)
2152
+ : c <= 120654)
2153
+ : (c <= 120686 || (c < 120714
2154
+ ? (c >= 120688 && c <= 120712)
2155
+ : c <= 120744)))))))
2156
+ : (c <= 120770 || (c < 122907
2157
+ ? (c < 121476
2158
+ ? (c < 121344
2159
+ ? (c < 120782
2160
+ ? (c >= 120772 && c <= 120779)
2161
+ : c <= 120831)
2162
+ : (c <= 121398 || (c < 121461
2163
+ ? (c >= 121403 && c <= 121452)
2164
+ : c <= 121461)))
2165
+ : (c <= 121476 || (c < 122624
2166
+ ? (c < 121505
2167
+ ? (c >= 121499 && c <= 121503)
2168
+ : c <= 121519)
2169
+ : (c <= 122654 || (c < 122888
2170
+ ? (c >= 122880 && c <= 122886)
2171
+ : c <= 122904)))))
2172
+ : (c <= 122913 || (c < 123214
2173
+ ? (c < 123136
2174
+ ? (c < 122918
2175
+ ? (c >= 122915 && c <= 122916)
2176
+ : c <= 122922)
2177
+ : (c <= 123180 || (c < 123200
2178
+ ? (c >= 123184 && c <= 123197)
2179
+ : c <= 123209)))
2180
+ : (c <= 123214 || (c < 124896
2181
+ ? (c < 123584
2182
+ ? (c >= 123536 && c <= 123566)
2183
+ : c <= 123641)
2184
+ : (c <= 124902 || (c < 124909
2185
+ ? (c >= 124904 && c <= 124907)
2186
+ : c <= 124910)))))))))
2187
+ : (c <= 124926 || (c < 126557
2188
+ ? (c < 126521
2189
+ ? (c < 126469
2190
+ ? (c < 125184
2191
+ ? (c < 125136
2192
+ ? (c >= 124928 && c <= 125124)
2193
+ : c <= 125142)
2194
+ : (c <= 125259 || (c < 126464
2195
+ ? (c >= 125264 && c <= 125273)
2196
+ : c <= 126467)))
2197
+ : (c <= 126495 || (c < 126503
2198
+ ? (c < 126500
2199
+ ? (c >= 126497 && c <= 126498)
2200
+ : c <= 126500)
2201
+ : (c <= 126503 || (c < 126516
2202
+ ? (c >= 126505 && c <= 126514)
2203
+ : c <= 126519)))))
2204
+ : (c <= 126521 || (c < 126541
2205
+ ? (c < 126535
2206
+ ? (c < 126530
2207
+ ? c == 126523
2208
+ : c <= 126530)
2209
+ : (c <= 126535 || (c < 126539
2210
+ ? c == 126537
2211
+ : c <= 126539)))
2212
+ : (c <= 126543 || (c < 126551
2213
+ ? (c < 126548
2214
+ ? (c >= 126545 && c <= 126546)
2215
+ : c <= 126548)
2216
+ : (c <= 126551 || (c < 126555
2217
+ ? c == 126553
2218
+ : c <= 126555)))))))
2219
+ : (c <= 126557 || (c < 126629
2220
+ ? (c < 126580
2221
+ ? (c < 126564
2222
+ ? (c < 126561
2223
+ ? c == 126559
2224
+ : c <= 126562)
2225
+ : (c <= 126564 || (c < 126572
2226
+ ? (c >= 126567 && c <= 126570)
2227
+ : c <= 126578)))
2228
+ : (c <= 126583 || (c < 126592
2229
+ ? (c < 126590
2230
+ ? (c >= 126585 && c <= 126588)
2231
+ : c <= 126590)
2232
+ : (c <= 126601 || (c < 126625
2233
+ ? (c >= 126603 && c <= 126619)
2234
+ : c <= 126627)))))
2235
+ : (c <= 126633 || (c < 178208
2236
+ ? (c < 131072
2237
+ ? (c < 130032
2238
+ ? (c >= 126635 && c <= 126651)
2239
+ : c <= 130041)
2240
+ : (c <= 173791 || (c < 177984
2241
+ ? (c >= 173824 && c <= 177976)
2242
+ : c <= 178205)))
2243
+ : (c <= 183969 || (c < 196608
2244
+ ? (c < 194560
2245
+ ? (c >= 183984 && c <= 191456)
2246
+ : c <= 195101)
2247
+ : (c <= 201546 || (c >= 917760 && c <= 917999)))))))))))))))));
2248
+ }
2249
+
2250
+ static bool ts_lex(TSLexer *lexer, TSStateId state) {
2251
+ START_LEXER();
2252
+ eof = lexer->eof(lexer);
2253
+ switch (state) {
2254
+ case 0:
2255
+ if (eof) ADVANCE(11);
2256
+ if (lookahead == '(') ADVANCE(17);
2257
+ if (lookahead == ')') ADVANCE(18);
2258
+ if (lookahead == ',') ADVANCE(14);
2259
+ if (lookahead == '/') ADVANCE(13);
2260
+ if (lookahead == ':') ADVANCE(16);
2261
+ if (lookahead == '<') ADVANCE(19);
2262
+ if (lookahead == '>') ADVANCE(20);
2263
+ if (lookahead == ']') ADVANCE(22);
2264
+ if (lookahead == 'c') ADVANCE(2);
2265
+ if (lookahead == 'i') ADVANCE(3);
2266
+ if (lookahead == '}') ADVANCE(23);
2267
+ if (lookahead == '\t' ||
2268
+ lookahead == '\n' ||
2269
+ lookahead == '\r' ||
2270
+ lookahead == ' ') SKIP(0)
2271
+ END_STATE();
2272
+ case 1:
2273
+ if (lookahead == 'a') ADVANCE(8);
2274
+ END_STATE();
2275
+ case 2:
2276
+ if (lookahead == 'l') ADVANCE(1);
2277
+ END_STATE();
2278
+ case 3:
2279
+ if (lookahead == 'm') ADVANCE(5);
2280
+ END_STATE();
2281
+ case 4:
2282
+ if (lookahead == 'o') ADVANCE(6);
2283
+ END_STATE();
2284
+ case 5:
2285
+ if (lookahead == 'p') ADVANCE(4);
2286
+ END_STATE();
2287
+ case 6:
2288
+ if (lookahead == 'r') ADVANCE(9);
2289
+ END_STATE();
2290
+ case 7:
2291
+ if (lookahead == 's') ADVANCE(15);
2292
+ END_STATE();
2293
+ case 8:
2294
+ if (lookahead == 's') ADVANCE(7);
2295
+ END_STATE();
2296
+ case 9:
2297
+ if (lookahead == 't') ADVANCE(12);
2298
+ END_STATE();
2299
+ case 10:
2300
+ if (lookahead == '\t' ||
2301
+ lookahead == '\n' ||
2302
+ lookahead == '\r' ||
2303
+ lookahead == ' ') SKIP(10)
2304
+ if (sym_identifier_character_set_1(lookahead)) ADVANCE(21);
2305
+ END_STATE();
2306
+ case 11:
2307
+ ACCEPT_TOKEN(ts_builtin_sym_end);
2308
+ END_STATE();
2309
+ case 12:
2310
+ ACCEPT_TOKEN(anon_sym_import);
2311
+ END_STATE();
2312
+ case 13:
2313
+ ACCEPT_TOKEN(anon_sym_SLASH);
2314
+ END_STATE();
2315
+ case 14:
2316
+ ACCEPT_TOKEN(anon_sym_COMMA);
2317
+ END_STATE();
2318
+ case 15:
2319
+ ACCEPT_TOKEN(anon_sym_class);
2320
+ END_STATE();
2321
+ case 16:
2322
+ ACCEPT_TOKEN(anon_sym_COLON);
2323
+ END_STATE();
2324
+ case 17:
2325
+ ACCEPT_TOKEN(anon_sym_LPAREN);
2326
+ END_STATE();
2327
+ case 18:
2328
+ ACCEPT_TOKEN(anon_sym_RPAREN);
2329
+ END_STATE();
2330
+ case 19:
2331
+ ACCEPT_TOKEN(anon_sym_LT);
2332
+ END_STATE();
2333
+ case 20:
2334
+ ACCEPT_TOKEN(anon_sym_GT);
2335
+ END_STATE();
2336
+ case 21:
2337
+ ACCEPT_TOKEN(sym_identifier);
2338
+ if (sym_identifier_character_set_2(lookahead)) ADVANCE(21);
2339
+ END_STATE();
2340
+ case 22:
2341
+ ACCEPT_TOKEN(anon_sym_RBRACK);
2342
+ END_STATE();
2343
+ case 23:
2344
+ ACCEPT_TOKEN(anon_sym_RBRACE);
2345
+ END_STATE();
2346
+ default:
2347
+ return false;
2348
+ }
2349
+ }
2350
+
2351
+ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
2352
+ [0] = {.lex_state = 0, .external_lex_state = 1},
2353
+ [1] = {.lex_state = 0},
2354
+ [2] = {.lex_state = 0},
2355
+ [3] = {.lex_state = 0},
2356
+ [4] = {.lex_state = 0},
2357
+ [5] = {.lex_state = 0},
2358
+ [6] = {.lex_state = 0},
2359
+ [7] = {.lex_state = 0},
2360
+ [8] = {.lex_state = 0},
2361
+ [9] = {.lex_state = 0},
2362
+ [10] = {.lex_state = 0},
2363
+ [11] = {.lex_state = 0},
2364
+ [12] = {.lex_state = 0},
2365
+ [13] = {.lex_state = 0},
2366
+ [14] = {.lex_state = 10, .external_lex_state = 2},
2367
+ [15] = {.lex_state = 10, .external_lex_state = 2},
2368
+ [16] = {.lex_state = 10, .external_lex_state = 2},
2369
+ [17] = {.lex_state = 10, .external_lex_state = 2},
2370
+ [18] = {.lex_state = 10, .external_lex_state = 2},
2371
+ [19] = {.lex_state = 10, .external_lex_state = 2},
2372
+ [20] = {.lex_state = 10, .external_lex_state = 2},
2373
+ [21] = {.lex_state = 10, .external_lex_state = 2},
2374
+ [22] = {.lex_state = 10, .external_lex_state = 2},
2375
+ [23] = {.lex_state = 0},
2376
+ [24] = {.lex_state = 0, .external_lex_state = 3},
2377
+ [25] = {.lex_state = 0},
2378
+ [26] = {.lex_state = 0},
2379
+ [27] = {.lex_state = 0},
2380
+ [28] = {.lex_state = 0, .external_lex_state = 3},
2381
+ [29] = {.lex_state = 0},
2382
+ [30] = {.lex_state = 0},
2383
+ [31] = {.lex_state = 0},
2384
+ [32] = {.lex_state = 0, .external_lex_state = 3},
2385
+ [33] = {.lex_state = 0},
2386
+ [34] = {.lex_state = 0},
2387
+ [35] = {.lex_state = 0},
2388
+ [36] = {.lex_state = 0},
2389
+ [37] = {.lex_state = 0},
2390
+ [38] = {.lex_state = 0, .external_lex_state = 3},
2391
+ [39] = {.lex_state = 0},
2392
+ [40] = {.lex_state = 0},
2393
+ [41] = {.lex_state = 10, .external_lex_state = 2},
2394
+ [42] = {.lex_state = 0},
2395
+ [43] = {.lex_state = 0, .external_lex_state = 4},
2396
+ [44] = {.lex_state = 10},
2397
+ [45] = {.lex_state = 0},
2398
+ [46] = {.lex_state = 0},
2399
+ [47] = {.lex_state = 10},
2400
+ [48] = {.lex_state = 0},
2401
+ [49] = {.lex_state = 0},
2402
+ [50] = {.lex_state = 0, .external_lex_state = 4},
2403
+ [51] = {.lex_state = 0},
2404
+ [52] = {.lex_state = 10},
2405
+ [53] = {.lex_state = 0, .external_lex_state = 4},
2406
+ [54] = {.lex_state = 10},
2407
+ [55] = {.lex_state = 0, .external_lex_state = 4},
2408
+ [56] = {.lex_state = 10},
2409
+ [57] = {.lex_state = 10},
2410
+ [58] = {.lex_state = 0},
2411
+ [59] = {.lex_state = 10},
2412
+ [60] = {.lex_state = 10},
2413
+ [61] = {.lex_state = 10},
2414
+ };
2415
+
2416
+ enum {
2417
+ ts_external_token__newline = 0,
2418
+ ts_external_token__indent = 1,
2419
+ ts_external_token__dedent = 2,
2420
+ ts_external_token__string_start = 3,
2421
+ ts_external_token__string_content = 4,
2422
+ ts_external_token__string_end = 5,
2423
+ ts_external_token_comment = 6,
2424
+ ts_external_token_RBRACK = 7,
2425
+ ts_external_token_RPAREN = 8,
2426
+ ts_external_token_RBRACE = 9,
2427
+ };
2428
+
2429
+ static const TSSymbol ts_external_scanner_symbol_map[EXTERNAL_TOKEN_COUNT] = {
2430
+ [ts_external_token__newline] = sym__newline,
2431
+ [ts_external_token__indent] = sym__indent,
2432
+ [ts_external_token__dedent] = sym__dedent,
2433
+ [ts_external_token__string_start] = sym__string_start,
2434
+ [ts_external_token__string_content] = sym__string_content,
2435
+ [ts_external_token__string_end] = sym__string_end,
2436
+ [ts_external_token_comment] = sym_comment,
2437
+ [ts_external_token_RBRACK] = anon_sym_RBRACK,
2438
+ [ts_external_token_RPAREN] = anon_sym_RPAREN,
2439
+ [ts_external_token_RBRACE] = anon_sym_RBRACE,
2440
+ };
2441
+
2442
+ static const bool ts_external_scanner_states[5][EXTERNAL_TOKEN_COUNT] = {
2443
+ [1] = {
2444
+ [ts_external_token__newline] = true,
2445
+ [ts_external_token__indent] = true,
2446
+ [ts_external_token__dedent] = true,
2447
+ [ts_external_token__string_start] = true,
2448
+ [ts_external_token__string_content] = true,
2449
+ [ts_external_token__string_end] = true,
2450
+ [ts_external_token_comment] = true,
2451
+ [ts_external_token_RBRACK] = true,
2452
+ [ts_external_token_RPAREN] = true,
2453
+ [ts_external_token_RBRACE] = true,
2454
+ },
2455
+ [2] = {
2456
+ [ts_external_token__dedent] = true,
2457
+ },
2458
+ [3] = {
2459
+ [ts_external_token_RPAREN] = true,
2460
+ },
2461
+ [4] = {
2462
+ [ts_external_token__indent] = true,
2463
+ },
2464
+ };
2465
+
2466
+ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
2467
+ [0] = {
2468
+ [ts_builtin_sym_end] = ACTIONS(1),
2469
+ [anon_sym_import] = ACTIONS(1),
2470
+ [anon_sym_SLASH] = ACTIONS(1),
2471
+ [anon_sym_COMMA] = ACTIONS(1),
2472
+ [anon_sym_class] = ACTIONS(1),
2473
+ [anon_sym_COLON] = ACTIONS(1),
2474
+ [anon_sym_LPAREN] = ACTIONS(1),
2475
+ [anon_sym_RPAREN] = ACTIONS(1),
2476
+ [anon_sym_LT] = ACTIONS(1),
2477
+ [anon_sym_GT] = ACTIONS(1),
2478
+ [anon_sym_RBRACK] = ACTIONS(1),
2479
+ [anon_sym_RBRACE] = ACTIONS(1),
2480
+ [sym__newline] = ACTIONS(1),
2481
+ [sym__indent] = ACTIONS(1),
2482
+ [sym__dedent] = ACTIONS(1),
2483
+ [sym__string_start] = ACTIONS(1),
2484
+ [sym__string_content] = ACTIONS(1),
2485
+ [sym__string_end] = ACTIONS(1),
2486
+ [sym_comment] = ACTIONS(1),
2487
+ },
2488
+ [1] = {
2489
+ [sym_module] = STATE(58),
2490
+ [sym__definitions] = STATE(2),
2491
+ [sym_import_statement] = STATE(2),
2492
+ [sym_class_definition] = STATE(2),
2493
+ [aux_sym_module_repeat1] = STATE(2),
2494
+ [ts_builtin_sym_end] = ACTIONS(3),
2495
+ [anon_sym_import] = ACTIONS(5),
2496
+ [anon_sym_class] = ACTIONS(7),
2497
+ },
2498
+ };
2499
+
2500
+ static const uint16_t ts_small_parse_table[] = {
2501
+ [0] = 4,
2502
+ ACTIONS(5), 1,
2503
+ anon_sym_import,
2504
+ ACTIONS(7), 1,
2505
+ anon_sym_class,
2506
+ ACTIONS(9), 1,
2507
+ ts_builtin_sym_end,
2508
+ STATE(4), 4,
2509
+ sym__definitions,
2510
+ sym_import_statement,
2511
+ sym_class_definition,
2512
+ aux_sym_module_repeat1,
2513
+ [16] = 5,
2514
+ ACTIONS(13), 1,
2515
+ anon_sym_SLASH,
2516
+ ACTIONS(15), 1,
2517
+ anon_sym_COMMA,
2518
+ STATE(5), 1,
2519
+ aux_sym_import_statement_repeat1,
2520
+ STATE(13), 1,
2521
+ aux_sym_import_statement_repeat2,
2522
+ ACTIONS(11), 3,
2523
+ ts_builtin_sym_end,
2524
+ anon_sym_import,
2525
+ anon_sym_class,
2526
+ [34] = 4,
2527
+ ACTIONS(17), 1,
2528
+ ts_builtin_sym_end,
2529
+ ACTIONS(19), 1,
2530
+ anon_sym_import,
2531
+ ACTIONS(22), 1,
2532
+ anon_sym_class,
2533
+ STATE(4), 4,
2534
+ sym__definitions,
2535
+ sym_import_statement,
2536
+ sym_class_definition,
2537
+ aux_sym_module_repeat1,
2538
+ [50] = 5,
2539
+ ACTIONS(13), 1,
2540
+ anon_sym_SLASH,
2541
+ ACTIONS(15), 1,
2542
+ anon_sym_COMMA,
2543
+ STATE(6), 1,
2544
+ aux_sym_import_statement_repeat1,
2545
+ STATE(11), 1,
2546
+ aux_sym_import_statement_repeat2,
2547
+ ACTIONS(25), 3,
2548
+ ts_builtin_sym_end,
2549
+ anon_sym_import,
2550
+ anon_sym_class,
2551
+ [68] = 3,
2552
+ ACTIONS(29), 1,
2553
+ anon_sym_SLASH,
2554
+ STATE(6), 1,
2555
+ aux_sym_import_statement_repeat1,
2556
+ ACTIONS(27), 4,
2557
+ ts_builtin_sym_end,
2558
+ anon_sym_import,
2559
+ anon_sym_COMMA,
2560
+ anon_sym_class,
2561
+ [81] = 3,
2562
+ ACTIONS(13), 1,
2563
+ anon_sym_SLASH,
2564
+ STATE(8), 1,
2565
+ aux_sym_import_statement_repeat1,
2566
+ ACTIONS(32), 4,
2567
+ ts_builtin_sym_end,
2568
+ anon_sym_import,
2569
+ anon_sym_COMMA,
2570
+ anon_sym_class,
2571
+ [94] = 3,
2572
+ ACTIONS(13), 1,
2573
+ anon_sym_SLASH,
2574
+ STATE(6), 1,
2575
+ aux_sym_import_statement_repeat1,
2576
+ ACTIONS(34), 4,
2577
+ ts_builtin_sym_end,
2578
+ anon_sym_import,
2579
+ anon_sym_COMMA,
2580
+ anon_sym_class,
2581
+ [107] = 1,
2582
+ ACTIONS(27), 5,
2583
+ ts_builtin_sym_end,
2584
+ anon_sym_import,
2585
+ anon_sym_SLASH,
2586
+ anon_sym_COMMA,
2587
+ anon_sym_class,
2588
+ [115] = 3,
2589
+ ACTIONS(38), 1,
2590
+ anon_sym_COMMA,
2591
+ STATE(10), 1,
2592
+ aux_sym_import_statement_repeat2,
2593
+ ACTIONS(36), 3,
2594
+ ts_builtin_sym_end,
2595
+ anon_sym_import,
2596
+ anon_sym_class,
2597
+ [127] = 3,
2598
+ ACTIONS(15), 1,
2599
+ anon_sym_COMMA,
2600
+ STATE(10), 1,
2601
+ aux_sym_import_statement_repeat2,
2602
+ ACTIONS(41), 3,
2603
+ ts_builtin_sym_end,
2604
+ anon_sym_import,
2605
+ anon_sym_class,
2606
+ [139] = 5,
2607
+ ACTIONS(43), 1,
2608
+ anon_sym_COLON,
2609
+ ACTIONS(45), 1,
2610
+ anon_sym_LPAREN,
2611
+ ACTIONS(47), 1,
2612
+ anon_sym_LT,
2613
+ STATE(29), 1,
2614
+ sym_generic_list,
2615
+ STATE(51), 1,
2616
+ sym_trait_list,
2617
+ [155] = 3,
2618
+ ACTIONS(15), 1,
2619
+ anon_sym_COMMA,
2620
+ STATE(10), 1,
2621
+ aux_sym_import_statement_repeat2,
2622
+ ACTIONS(49), 3,
2623
+ ts_builtin_sym_end,
2624
+ anon_sym_import,
2625
+ anon_sym_class,
2626
+ [167] = 3,
2627
+ ACTIONS(51), 1,
2628
+ sym_identifier,
2629
+ ACTIONS(53), 1,
2630
+ sym__dedent,
2631
+ STATE(17), 2,
2632
+ sym_type_pair,
2633
+ aux_sym_class_definition_repeat1,
2634
+ [178] = 3,
2635
+ ACTIONS(51), 1,
2636
+ sym_identifier,
2637
+ ACTIONS(55), 1,
2638
+ sym__dedent,
2639
+ STATE(19), 2,
2640
+ sym_type_pair,
2641
+ aux_sym_class_definition_repeat1,
2642
+ [189] = 3,
2643
+ ACTIONS(51), 1,
2644
+ sym_identifier,
2645
+ ACTIONS(57), 1,
2646
+ sym__dedent,
2647
+ STATE(19), 2,
2648
+ sym_type_pair,
2649
+ aux_sym_class_definition_repeat1,
2650
+ [200] = 3,
2651
+ ACTIONS(51), 1,
2652
+ sym_identifier,
2653
+ ACTIONS(59), 1,
2654
+ sym__dedent,
2655
+ STATE(19), 2,
2656
+ sym_type_pair,
2657
+ aux_sym_class_definition_repeat1,
2658
+ [211] = 3,
2659
+ ACTIONS(51), 1,
2660
+ sym_identifier,
2661
+ ACTIONS(61), 1,
2662
+ sym__dedent,
2663
+ STATE(21), 2,
2664
+ sym_type_pair,
2665
+ aux_sym_class_definition_repeat1,
2666
+ [222] = 3,
2667
+ ACTIONS(63), 1,
2668
+ sym_identifier,
2669
+ ACTIONS(66), 1,
2670
+ sym__dedent,
2671
+ STATE(19), 2,
2672
+ sym_type_pair,
2673
+ aux_sym_class_definition_repeat1,
2674
+ [233] = 3,
2675
+ ACTIONS(51), 1,
2676
+ sym_identifier,
2677
+ ACTIONS(68), 1,
2678
+ sym__dedent,
2679
+ STATE(16), 2,
2680
+ sym_type_pair,
2681
+ aux_sym_class_definition_repeat1,
2682
+ [244] = 3,
2683
+ ACTIONS(51), 1,
2684
+ sym_identifier,
2685
+ ACTIONS(70), 1,
2686
+ sym__dedent,
2687
+ STATE(19), 2,
2688
+ sym_type_pair,
2689
+ aux_sym_class_definition_repeat1,
2690
+ [255] = 3,
2691
+ ACTIONS(51), 1,
2692
+ sym_identifier,
2693
+ ACTIONS(72), 1,
2694
+ sym__dedent,
2695
+ STATE(15), 2,
2696
+ sym_type_pair,
2697
+ aux_sym_class_definition_repeat1,
2698
+ [266] = 1,
2699
+ ACTIONS(74), 3,
2700
+ ts_builtin_sym_end,
2701
+ anon_sym_import,
2702
+ anon_sym_class,
2703
+ [272] = 3,
2704
+ ACTIONS(76), 1,
2705
+ anon_sym_COMMA,
2706
+ ACTIONS(78), 1,
2707
+ anon_sym_RPAREN,
2708
+ STATE(32), 1,
2709
+ aux_sym_trait_list_repeat1,
2710
+ [282] = 3,
2711
+ ACTIONS(80), 1,
2712
+ anon_sym_COMMA,
2713
+ ACTIONS(82), 1,
2714
+ anon_sym_GT,
2715
+ STATE(33), 1,
2716
+ aux_sym_trait_list_repeat1,
2717
+ [292] = 3,
2718
+ ACTIONS(84), 1,
2719
+ anon_sym_COMMA,
2720
+ ACTIONS(87), 1,
2721
+ anon_sym_GT,
2722
+ STATE(26), 1,
2723
+ aux_sym_trait_list_repeat1,
2724
+ [302] = 1,
2725
+ ACTIONS(89), 3,
2726
+ ts_builtin_sym_end,
2727
+ anon_sym_import,
2728
+ anon_sym_class,
2729
+ [308] = 3,
2730
+ ACTIONS(87), 1,
2731
+ anon_sym_RPAREN,
2732
+ ACTIONS(91), 1,
2733
+ anon_sym_COMMA,
2734
+ STATE(28), 1,
2735
+ aux_sym_trait_list_repeat1,
2736
+ [318] = 3,
2737
+ ACTIONS(45), 1,
2738
+ anon_sym_LPAREN,
2739
+ ACTIONS(94), 1,
2740
+ anon_sym_COLON,
2741
+ STATE(48), 1,
2742
+ sym_trait_list,
2743
+ [328] = 1,
2744
+ ACTIONS(96), 3,
2745
+ ts_builtin_sym_end,
2746
+ anon_sym_import,
2747
+ anon_sym_class,
2748
+ [334] = 1,
2749
+ ACTIONS(98), 3,
2750
+ ts_builtin_sym_end,
2751
+ anon_sym_import,
2752
+ anon_sym_class,
2753
+ [340] = 3,
2754
+ ACTIONS(76), 1,
2755
+ anon_sym_COMMA,
2756
+ ACTIONS(100), 1,
2757
+ anon_sym_RPAREN,
2758
+ STATE(28), 1,
2759
+ aux_sym_trait_list_repeat1,
2760
+ [350] = 3,
2761
+ ACTIONS(80), 1,
2762
+ anon_sym_COMMA,
2763
+ ACTIONS(102), 1,
2764
+ anon_sym_GT,
2765
+ STATE(26), 1,
2766
+ aux_sym_trait_list_repeat1,
2767
+ [360] = 1,
2768
+ ACTIONS(104), 3,
2769
+ ts_builtin_sym_end,
2770
+ anon_sym_import,
2771
+ anon_sym_class,
2772
+ [366] = 1,
2773
+ ACTIONS(106), 3,
2774
+ ts_builtin_sym_end,
2775
+ anon_sym_import,
2776
+ anon_sym_class,
2777
+ [372] = 1,
2778
+ ACTIONS(108), 3,
2779
+ ts_builtin_sym_end,
2780
+ anon_sym_import,
2781
+ anon_sym_class,
2782
+ [378] = 1,
2783
+ ACTIONS(110), 3,
2784
+ ts_builtin_sym_end,
2785
+ anon_sym_import,
2786
+ anon_sym_class,
2787
+ [384] = 1,
2788
+ ACTIONS(87), 2,
2789
+ anon_sym_COMMA,
2790
+ anon_sym_RPAREN,
2791
+ [389] = 1,
2792
+ ACTIONS(112), 2,
2793
+ anon_sym_COLON,
2794
+ anon_sym_LPAREN,
2795
+ [394] = 1,
2796
+ ACTIONS(87), 2,
2797
+ anon_sym_COMMA,
2798
+ anon_sym_GT,
2799
+ [399] = 1,
2800
+ ACTIONS(114), 2,
2801
+ sym__dedent,
2802
+ sym_identifier,
2803
+ [404] = 1,
2804
+ ACTIONS(116), 2,
2805
+ anon_sym_COLON,
2806
+ anon_sym_LPAREN,
2807
+ [409] = 1,
2808
+ ACTIONS(118), 1,
2809
+ sym__indent,
2810
+ [413] = 1,
2811
+ ACTIONS(120), 1,
2812
+ sym_identifier,
2813
+ [417] = 1,
2814
+ ACTIONS(122), 1,
2815
+ anon_sym_COLON,
2816
+ [421] = 1,
2817
+ ACTIONS(124), 1,
2818
+ anon_sym_COLON,
2819
+ [425] = 1,
2820
+ ACTIONS(126), 1,
2821
+ sym_identifier,
2822
+ [429] = 1,
2823
+ ACTIONS(128), 1,
2824
+ anon_sym_COLON,
2825
+ [433] = 1,
2826
+ ACTIONS(130), 1,
2827
+ anon_sym_COLON,
2828
+ [437] = 1,
2829
+ ACTIONS(132), 1,
2830
+ sym__indent,
2831
+ [441] = 1,
2832
+ ACTIONS(134), 1,
2833
+ anon_sym_COLON,
2834
+ [445] = 1,
2835
+ ACTIONS(136), 1,
2836
+ sym_identifier,
2837
+ [449] = 1,
2838
+ ACTIONS(138), 1,
2839
+ sym__indent,
2840
+ [453] = 1,
2841
+ ACTIONS(140), 1,
2842
+ sym_identifier,
2843
+ [457] = 1,
2844
+ ACTIONS(142), 1,
2845
+ sym__indent,
2846
+ [461] = 1,
2847
+ ACTIONS(144), 1,
2848
+ sym_identifier,
2849
+ [465] = 1,
2850
+ ACTIONS(146), 1,
2851
+ sym_identifier,
2852
+ [469] = 1,
2853
+ ACTIONS(148), 1,
2854
+ ts_builtin_sym_end,
2855
+ [473] = 1,
2856
+ ACTIONS(150), 1,
2857
+ sym_identifier,
2858
+ [477] = 1,
2859
+ ACTIONS(152), 1,
2860
+ sym_identifier,
2861
+ [481] = 1,
2862
+ ACTIONS(154), 1,
2863
+ sym_identifier,
2864
+ };
2865
+
2866
+ static const uint32_t ts_small_parse_table_map[] = {
2867
+ [SMALL_STATE(2)] = 0,
2868
+ [SMALL_STATE(3)] = 16,
2869
+ [SMALL_STATE(4)] = 34,
2870
+ [SMALL_STATE(5)] = 50,
2871
+ [SMALL_STATE(6)] = 68,
2872
+ [SMALL_STATE(7)] = 81,
2873
+ [SMALL_STATE(8)] = 94,
2874
+ [SMALL_STATE(9)] = 107,
2875
+ [SMALL_STATE(10)] = 115,
2876
+ [SMALL_STATE(11)] = 127,
2877
+ [SMALL_STATE(12)] = 139,
2878
+ [SMALL_STATE(13)] = 155,
2879
+ [SMALL_STATE(14)] = 167,
2880
+ [SMALL_STATE(15)] = 178,
2881
+ [SMALL_STATE(16)] = 189,
2882
+ [SMALL_STATE(17)] = 200,
2883
+ [SMALL_STATE(18)] = 211,
2884
+ [SMALL_STATE(19)] = 222,
2885
+ [SMALL_STATE(20)] = 233,
2886
+ [SMALL_STATE(21)] = 244,
2887
+ [SMALL_STATE(22)] = 255,
2888
+ [SMALL_STATE(23)] = 266,
2889
+ [SMALL_STATE(24)] = 272,
2890
+ [SMALL_STATE(25)] = 282,
2891
+ [SMALL_STATE(26)] = 292,
2892
+ [SMALL_STATE(27)] = 302,
2893
+ [SMALL_STATE(28)] = 308,
2894
+ [SMALL_STATE(29)] = 318,
2895
+ [SMALL_STATE(30)] = 328,
2896
+ [SMALL_STATE(31)] = 334,
2897
+ [SMALL_STATE(32)] = 340,
2898
+ [SMALL_STATE(33)] = 350,
2899
+ [SMALL_STATE(34)] = 360,
2900
+ [SMALL_STATE(35)] = 366,
2901
+ [SMALL_STATE(36)] = 372,
2902
+ [SMALL_STATE(37)] = 378,
2903
+ [SMALL_STATE(38)] = 384,
2904
+ [SMALL_STATE(39)] = 389,
2905
+ [SMALL_STATE(40)] = 394,
2906
+ [SMALL_STATE(41)] = 399,
2907
+ [SMALL_STATE(42)] = 404,
2908
+ [SMALL_STATE(43)] = 409,
2909
+ [SMALL_STATE(44)] = 413,
2910
+ [SMALL_STATE(45)] = 417,
2911
+ [SMALL_STATE(46)] = 421,
2912
+ [SMALL_STATE(47)] = 425,
2913
+ [SMALL_STATE(48)] = 429,
2914
+ [SMALL_STATE(49)] = 433,
2915
+ [SMALL_STATE(50)] = 437,
2916
+ [SMALL_STATE(51)] = 441,
2917
+ [SMALL_STATE(52)] = 445,
2918
+ [SMALL_STATE(53)] = 449,
2919
+ [SMALL_STATE(54)] = 453,
2920
+ [SMALL_STATE(55)] = 457,
2921
+ [SMALL_STATE(56)] = 461,
2922
+ [SMALL_STATE(57)] = 465,
2923
+ [SMALL_STATE(58)] = 469,
2924
+ [SMALL_STATE(59)] = 473,
2925
+ [SMALL_STATE(60)] = 477,
2926
+ [SMALL_STATE(61)] = 481,
2927
+ };
2928
+
2929
+ static const TSParseActionEntry ts_parse_actions[] = {
2930
+ [0] = {.entry = {.count = 0, .reusable = false}},
2931
+ [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(),
2932
+ [3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module, 0),
2933
+ [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47),
2934
+ [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60),
2935
+ [9] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module, 1),
2936
+ [11] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 2, .production_id = 1),
2937
+ [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57),
2938
+ [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56),
2939
+ [17] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2),
2940
+ [19] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(47),
2941
+ [22] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(60),
2942
+ [25] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 3, .production_id = 2),
2943
+ [27] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_import_statement_repeat1, 2),
2944
+ [29] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_import_statement_repeat1, 2), SHIFT_REPEAT(57),
2945
+ [32] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_import_statement_repeat2, 2, .production_id = 1),
2946
+ [34] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_import_statement_repeat2, 3, .production_id = 2),
2947
+ [36] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_import_statement_repeat2, 2, .production_id = 5),
2948
+ [38] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_import_statement_repeat2, 2, .production_id = 5), SHIFT_REPEAT(56),
2949
+ [41] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 4, .production_id = 4),
2950
+ [43] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55),
2951
+ [45] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54),
2952
+ [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52),
2953
+ [49] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 3, .production_id = 3),
2954
+ [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49),
2955
+ [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27),
2956
+ [55] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35),
2957
+ [57] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36),
2958
+ [59] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34),
2959
+ [61] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23),
2960
+ [63] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_class_definition_repeat1, 2), SHIFT_REPEAT(49),
2961
+ [66] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_class_definition_repeat1, 2),
2962
+ [68] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30),
2963
+ [70] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37),
2964
+ [72] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31),
2965
+ [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 7, .production_id = 13),
2966
+ [76] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44),
2967
+ [78] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45),
2968
+ [80] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61),
2969
+ [82] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42),
2970
+ [84] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_trait_list_repeat1, 2), SHIFT_REPEAT(61),
2971
+ [87] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_trait_list_repeat1, 2),
2972
+ [89] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, .production_id = 8),
2973
+ [91] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_trait_list_repeat1, 2), SHIFT_REPEAT(44),
2974
+ [94] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43),
2975
+ [96] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, .production_id = 6),
2976
+ [98] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, .production_id = 9),
2977
+ [100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46),
2978
+ [102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39),
2979
+ [104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 7, .production_id = 11),
2980
+ [106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 7, .production_id = 12),
2981
+ [108] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, .production_id = 7),
2982
+ [110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 8, .production_id = 14),
2983
+ [112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_list, 4),
2984
+ [114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_pair, 3, .production_id = 10),
2985
+ [116] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_list, 3),
2986
+ [118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22),
2987
+ [120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38),
2988
+ [122] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_list, 3),
2989
+ [124] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_list, 4),
2990
+ [126] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3),
2991
+ [128] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53),
2992
+ [130] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59),
2993
+ [132] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14),
2994
+ [134] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50),
2995
+ [136] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25),
2996
+ [138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18),
2997
+ [140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24),
2998
+ [142] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20),
2999
+ [144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7),
3000
+ [146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9),
3001
+ [148] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(),
3002
+ [150] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41),
3003
+ [152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12),
3004
+ [154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40),
3005
+ };
3006
+
3007
+ #ifdef __cplusplus
3008
+ extern "C" {
3009
+ #endif
3010
+ void *tree_sitter_pine_external_scanner_create(void);
3011
+ void tree_sitter_pine_external_scanner_destroy(void *);
3012
+ bool tree_sitter_pine_external_scanner_scan(void *, TSLexer *, const bool *);
3013
+ unsigned tree_sitter_pine_external_scanner_serialize(void *, char *);
3014
+ void tree_sitter_pine_external_scanner_deserialize(void *, const char *, unsigned);
3015
+
3016
+ #ifdef _WIN32
3017
+ #define extern __declspec(dllexport)
3018
+ #endif
3019
+
3020
+ extern const TSLanguage *tree_sitter_pine(void) {
3021
+ static const TSLanguage language = {
3022
+ .version = LANGUAGE_VERSION,
3023
+ .symbol_count = SYMBOL_COUNT,
3024
+ .alias_count = ALIAS_COUNT,
3025
+ .token_count = TOKEN_COUNT,
3026
+ .external_token_count = EXTERNAL_TOKEN_COUNT,
3027
+ .state_count = STATE_COUNT,
3028
+ .large_state_count = LARGE_STATE_COUNT,
3029
+ .production_id_count = PRODUCTION_ID_COUNT,
3030
+ .field_count = FIELD_COUNT,
3031
+ .max_alias_sequence_length = MAX_ALIAS_SEQUENCE_LENGTH,
3032
+ .parse_table = &ts_parse_table[0][0],
3033
+ .small_parse_table = ts_small_parse_table,
3034
+ .small_parse_table_map = ts_small_parse_table_map,
3035
+ .parse_actions = ts_parse_actions,
3036
+ .symbol_names = ts_symbol_names,
3037
+ .field_names = ts_field_names,
3038
+ .field_map_slices = ts_field_map_slices,
3039
+ .field_map_entries = ts_field_map_entries,
3040
+ .symbol_metadata = ts_symbol_metadata,
3041
+ .public_symbol_map = ts_symbol_map,
3042
+ .alias_map = ts_non_terminal_alias_map,
3043
+ .alias_sequences = &ts_alias_sequences[0][0],
3044
+ .lex_modes = ts_lex_modes,
3045
+ .lex_fn = ts_lex,
3046
+ .external_scanner = {
3047
+ &ts_external_scanner_states[0][0],
3048
+ ts_external_scanner_symbol_map,
3049
+ tree_sitter_pine_external_scanner_create,
3050
+ tree_sitter_pine_external_scanner_destroy,
3051
+ tree_sitter_pine_external_scanner_scan,
3052
+ tree_sitter_pine_external_scanner_serialize,
3053
+ tree_sitter_pine_external_scanner_deserialize,
3054
+ },
3055
+ .primary_state_ids = ts_primary_state_ids,
3056
+ };
3057
+ return &language;
3058
+ }
3059
+ #ifdef __cplusplus
3060
+ }
3061
+ #endif
src/scanner.cc ADDED
@@ -0,0 +1,408 @@
1
+ #include <tree_sitter/parser.h>
2
+ #include <vector>
3
+ #include <cwctype>
4
+ #include <cstring>
5
+ #include <cassert>
6
+ #include <stdio.h>
7
+ namespace {
8
+
9
+ using std::vector;
10
+ using std::iswspace;
11
+ using std::memcpy;
12
+
13
+ enum TokenType {
14
+ NEWLINE,
15
+ INDENT,
16
+ DEDENT,
17
+ STRING_START,
18
+ STRING_CONTENT,
19
+ STRING_END,
20
+ COMMENT,
21
+ CLOSE_PAREN,
22
+ CLOSE_BRACKET,
23
+ CLOSE_BRACE,
24
+ };
25
+
26
+ struct Delimiter {
27
+ enum {
28
+ SingleQuote = 1 << 0,
29
+ DoubleQuote = 1 << 1,
30
+ BackQuote = 1 << 2,
31
+ Raw = 1 << 3,
32
+ Format = 1 << 4,
33
+ Triple = 1 << 5,
34
+ Bytes = 1 << 6,
35
+ };
36
+
37
+ Delimiter() : flags(0) {}
38
+
39
+ bool is_format() const {
40
+ return flags & Format;
41
+ }
42
+
43
+ bool is_raw() const {
44
+ return flags & Raw;
45
+ }
46
+
47
+ bool is_triple() const {
48
+ return flags & Triple;
49
+ }
50
+
51
+ bool is_bytes() const {
52
+ return flags & Bytes;
53
+ }
54
+
55
+ int32_t end_character() const {
56
+ if (flags & SingleQuote) return '\'';
57
+ if (flags & DoubleQuote) return '"';
58
+ if (flags & BackQuote) return '`';
59
+ return 0;
60
+ }
61
+
62
+ void set_format() {
63
+ flags |= Format;
64
+ }
65
+
66
+ void set_raw() {
67
+ flags |= Raw;
68
+ }
69
+
70
+ void set_triple() {
71
+ flags |= Triple;
72
+ }
73
+
74
+ void set_bytes() {
75
+ flags |= Bytes;
76
+ }
77
+
78
+ void set_end_character(int32_t character) {
79
+ switch (character) {
80
+ case '\'':
81
+ flags |= SingleQuote;
82
+ break;
83
+ case '"':
84
+ flags |= DoubleQuote;
85
+ break;
86
+ case '`':
87
+ flags |= BackQuote;
88
+ break;
89
+ default:
90
+ assert(false);
91
+ }
92
+ }
93
+
94
+ char flags;
95
+ };
96
+
97
+ struct Scanner {
98
+ Scanner() {
99
+ assert(sizeof(Delimiter) == sizeof(char));
100
+ deserialize(NULL, 0);
101
+ }
102
+
103
+ unsigned serialize(char *buffer) {
104
+ size_t i = 0;
105
+
106
+ size_t delimiter_count = delimiter_stack.size();
107
+ if (delimiter_count > UINT8_MAX) delimiter_count = UINT8_MAX;
108
+ buffer[i++] = delimiter_count;
109
+
110
+ if (delimiter_count > 0) {
111
+ memcpy(&buffer[i], delimiter_stack.data(), delimiter_count);
112
+ }
113
+ i += delimiter_count;
114
+
115
+ vector<uint16_t>::iterator
116
+ iter = indent_length_stack.begin() + 1,
117
+ end = indent_length_stack.end();
118
+
119
+ for (; iter != end && i < TREE_SITTER_SERIALIZATION_BUFFER_SIZE; ++iter) {
120
+ buffer[i++] = *iter;
121
+ }
122
+
123
+ return i;
124
+ }
125
+
126
+ void deserialize(const char *buffer, unsigned length) {
127
+ delimiter_stack.clear();
128
+ indent_length_stack.clear();
129
+ indent_length_stack.push_back(0);
130
+
131
+ if (length > 0) {
132
+ size_t i = 0;
133
+
134
+ size_t delimiter_count = (uint8_t)buffer[i++];
135
+ delimiter_stack.resize(delimiter_count);
136
+ if (delimiter_count > 0) {
137
+ memcpy(delimiter_stack.data(), &buffer[i], delimiter_count);
138
+ }
139
+ i += delimiter_count;
140
+
141
+ for (; i < length; i++) {
142
+ indent_length_stack.push_back(buffer[i]);
143
+ }
144
+ }
145
+ }
146
+
147
+ void advance(TSLexer *lexer) {
148
+ lexer->advance(lexer, false);
149
+ }
150
+
151
+ void skip(TSLexer *lexer) {
152
+ lexer->advance(lexer, true);
153
+ }
154
+
155
+ bool scan(TSLexer *lexer, const bool *valid_symbols) {
156
+ bool error_recovery_mode = valid_symbols[STRING_CONTENT] && valid_symbols[INDENT];
157
+ bool within_brackets = valid_symbols[CLOSE_BRACE] || valid_symbols[CLOSE_PAREN] || valid_symbols[CLOSE_BRACKET];
158
+
159
+ if (valid_symbols[STRING_CONTENT] && !delimiter_stack.empty() && !error_recovery_mode) {
160
+ Delimiter delimiter = delimiter_stack.back();
161
+ int32_t end_character = delimiter.end_character();
162
+ bool has_content = false;
163
+ while (lexer->lookahead) {
164
+ if ((lexer->lookahead == '{' || lexer->lookahead == '}') && delimiter.is_format()) {
165
+ lexer->mark_end(lexer);
166
+ lexer->result_symbol = STRING_CONTENT;
167
+ return has_content;
168
+ } else if (lexer->lookahead == '\\') {
169
+ if (delimiter.is_raw()) {
170
+ lexer->advance(lexer, false);
171
+ } else if (delimiter.is_bytes()) {
172
+ lexer->mark_end(lexer);
173
+ lexer->advance(lexer, false);
174
+ if (lexer->lookahead == 'N' || lexer->lookahead == 'u' || lexer->lookahead == 'U') {
175
+ // In bytes string, \N{...}, \uXXXX and \UXXXXXXXX are not escape sequences
176
+ // https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals
177
+ lexer->advance(lexer, false);
178
+ } else {
179
+ lexer->result_symbol = STRING_CONTENT;
180
+ return has_content;
181
+ }
182
+ } else {
183
+ lexer->mark_end(lexer);
184
+ lexer->result_symbol = STRING_CONTENT;
185
+ return has_content;
186
+ }
187
+ } else if (lexer->lookahead == end_character) {
188
+ if (delimiter.is_triple()) {
189
+ lexer->mark_end(lexer);
190
+ lexer->advance(lexer, false);
191
+ if (lexer->lookahead == end_character) {
192
+ lexer->advance(lexer, false);
193
+ if (lexer->lookahead == end_character) {
194
+ if (has_content) {
195
+ lexer->result_symbol = STRING_CONTENT;
196
+ } else {
197
+ lexer->advance(lexer, false);
198
+ lexer->mark_end(lexer);
199
+ delimiter_stack.pop_back();
200
+ lexer->result_symbol = STRING_END;
201
+ }
202
+ return true;
203
+ } else {
204
+ lexer->mark_end(lexer);
205
+ lexer->result_symbol = STRING_CONTENT;
206
+ return true;
207
+ }
208
+ } else {
209
+ lexer->mark_end(lexer);
210
+ lexer->result_symbol = STRING_CONTENT;
211
+ return true;
212
+ }
213
+ } else {
214
+ if (has_content) {
215
+ lexer->result_symbol = STRING_CONTENT;
216
+ } else {
217
+ lexer->advance(lexer, false);
218
+ delimiter_stack.pop_back();
219
+ lexer->result_symbol = STRING_END;
220
+ }
221
+ lexer->mark_end(lexer);
222
+ return true;
223
+ }
224
+ } else if (lexer->lookahead == '\n' && has_content && !delimiter.is_triple()) {
225
+ return false;
226
+ }
227
+ advance(lexer);
228
+ has_content = true;
229
+ }
230
+ }
231
+
232
+ lexer->mark_end(lexer);
233
+
234
+ bool found_end_of_line = false;
235
+ uint32_t indent_length = 0;
236
+ int32_t first_comment_indent_length = -1;
237
+ for (;;) {
238
+ if (lexer->lookahead == '\n') {
239
+ found_end_of_line = true;
240
+ indent_length = 0;
241
+ skip(lexer);
242
+ } else if (lexer->lookahead == ' ') {
243
+ indent_length++;
244
+ skip(lexer);
245
+ } else if (lexer->lookahead == '\r') {
246
+ indent_length = 0;
247
+ skip(lexer);
248
+ } else if (lexer->lookahead == '\t') {
249
+ indent_length += 8;
250
+ skip(lexer);
251
+ } else if (lexer->lookahead == '#') {
252
+ if (first_comment_indent_length == -1) {
253
+ first_comment_indent_length = (int32_t)indent_length;
254
+ }
255
+ while (lexer->lookahead && lexer->lookahead != '\n') {
256
+ skip(lexer);
257
+ }
258
+ skip(lexer);
259
+ indent_length = 0;
260
+ } else if (lexer->lookahead == '\\') {
261
+ skip(lexer);
262
+ if (lexer->lookahead == '\r') {
263
+ skip(lexer);
264
+ }
265
+ if (lexer->lookahead == '\n') {
266
+ skip(lexer);
267
+ } else {
268
+ return false;
269
+ }
270
+ } else if (lexer->lookahead == '\f') {
271
+ indent_length = 0;
272
+ skip(lexer);
273
+ } else if (lexer->lookahead == 0) {
274
+ indent_length = 0;
275
+ found_end_of_line = true;
276
+ break;
277
+ } else {
278
+ break;
279
+ }
280
+ }
281
+
282
+ if (found_end_of_line) {
283
+ if (!indent_length_stack.empty()) {
284
+ uint16_t current_indent_length = indent_length_stack.back();
285
+
286
+ if (
287
+ valid_symbols[INDENT] &&
288
+ indent_length > current_indent_length
289
+ ) {
290
+ indent_length_stack.push_back(indent_length);
291
+ lexer->result_symbol = INDENT;
292
+ return true;
293
+ }
294
+
295
+ if (
296
+ (valid_symbols[DEDENT] || (!valid_symbols[NEWLINE] && !within_brackets)) &&
297
+ indent_length < current_indent_length &&
298
+
299
+ // Wait to create a dedent token until we've consumed any comments
300
+ // whose indentation matches the current block.
301
+ first_comment_indent_length < (int32_t)current_indent_length
302
+ ) {
303
+ indent_length_stack.pop_back();
304
+ lexer->result_symbol = DEDENT;
305
+ return true;
306
+ }
307
+ }
308
+
309
+ if (valid_symbols[NEWLINE] && !error_recovery_mode) {
310
+ lexer->result_symbol = NEWLINE;
311
+ return true;
312
+ }
313
+ }
314
+
315
+ if (first_comment_indent_length == -1 && valid_symbols[STRING_START]) {
316
+ Delimiter delimiter;
317
+
318
+ bool has_flags = false;
319
+ while (lexer->lookahead) {
320
+ if (lexer->lookahead == 'f' || lexer->lookahead == 'F') {
321
+ delimiter.set_format();
322
+ } else if (lexer->lookahead == 'r' || lexer->lookahead == 'R') {
323
+ delimiter.set_raw();
324
+ } else if (lexer->lookahead == 'b' || lexer->lookahead == 'B') {
325
+ delimiter.set_bytes();
326
+ } else if (lexer->lookahead != 'u' && lexer->lookahead != 'U') {
327
+ break;
328
+ }
329
+ has_flags = true;
330
+ advance(lexer);
331
+ }
332
+
333
+ if (lexer->lookahead == '`') {
334
+ delimiter.set_end_character('`');
335
+ advance(lexer);
336
+ lexer->mark_end(lexer);
337
+ } else if (lexer->lookahead == '\'') {
338
+ delimiter.set_end_character('\'');
339
+ advance(lexer);
340
+ lexer->mark_end(lexer);
341
+ if (lexer->lookahead == '\'') {
342
+ advance(lexer);
343
+ if (lexer->lookahead == '\'') {
344
+ advance(lexer);
345
+ lexer->mark_end(lexer);
346
+ delimiter.set_triple();
347
+ }
348
+ }
349
+ } else if (lexer->lookahead == '"') {
350
+ delimiter.set_end_character('"');
351
+ advance(lexer);
352
+ lexer->mark_end(lexer);
353
+ if (lexer->lookahead == '"') {
354
+ advance(lexer);
355
+ if (lexer->lookahead == '"') {
356
+ advance(lexer);
357
+ lexer->mark_end(lexer);
358
+ delimiter.set_triple();
359
+ }
360
+ }
361
+ }
362
+
363
+ if (delimiter.end_character()) {
364
+ delimiter_stack.push_back(delimiter);
365
+ lexer->result_symbol = STRING_START;
366
+ return true;
367
+ } else if (has_flags) {
368
+ return false;
369
+ }
370
+ }
371
+
372
+ return false;
373
+ }
374
+
375
+ vector<uint16_t> indent_length_stack;
376
+ vector<Delimiter> delimiter_stack;
377
+ };
378
+
379
+ }
380
+
381
+ extern "C" {
382
+
383
+ void *tree_sitter_pine_external_scanner_create() {
384
+ return new Scanner();
385
+ }
386
+
387
+ bool tree_sitter_pine_external_scanner_scan(void *payload, TSLexer *lexer,
388
+ const bool *valid_symbols) {
389
+ Scanner *scanner = static_cast<Scanner *>(payload);
390
+ return scanner->scan(lexer, valid_symbols);
391
+ }
392
+
393
+ unsigned tree_sitter_pine_external_scanner_serialize(void *payload, char *buffer) {
394
+ Scanner *scanner = static_cast<Scanner *>(payload);
395
+ return scanner->serialize(buffer);
396
+ }
397
+
398
+ void tree_sitter_pine_external_scanner_deserialize(void *payload, const char *buffer, unsigned length) {
399
+ Scanner *scanner = static_cast<Scanner *>(payload);
400
+ scanner->deserialize(buffer, length);
401
+ }
402
+
403
+ void tree_sitter_pine_external_scanner_destroy(void *payload) {
404
+ Scanner *scanner = static_cast<Scanner *>(payload);
405
+ delete scanner;
406
+ }
407
+
408
+ }
src/tree_sitter/parser.h ADDED
@@ -0,0 +1,224 @@
1
+ #ifndef TREE_SITTER_PARSER_H_
2
+ #define TREE_SITTER_PARSER_H_
3
+
4
+ #ifdef __cplusplus
5
+ extern "C" {
6
+ #endif
7
+
8
+ #include <stdbool.h>
9
+ #include <stdint.h>
10
+ #include <stdlib.h>
11
+
12
+ #define ts_builtin_sym_error ((TSSymbol)-1)
13
+ #define ts_builtin_sym_end 0
14
+ #define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024
15
+
16
+ typedef uint16_t TSStateId;
17
+
18
+ #ifndef TREE_SITTER_API_H_
19
+ typedef uint16_t TSSymbol;
20
+ typedef uint16_t TSFieldId;
21
+ typedef struct TSLanguage TSLanguage;
22
+ #endif
23
+
24
+ typedef struct {
25
+ TSFieldId field_id;
26
+ uint8_t child_index;
27
+ bool inherited;
28
+ } TSFieldMapEntry;
29
+
30
+ typedef struct {
31
+ uint16_t index;
32
+ uint16_t length;
33
+ } TSFieldMapSlice;
34
+
35
+ typedef struct {
36
+ bool visible;
37
+ bool named;
38
+ bool supertype;
39
+ } TSSymbolMetadata;
40
+
41
+ typedef struct TSLexer TSLexer;
42
+
43
+ struct TSLexer {
44
+ int32_t lookahead;
45
+ TSSymbol result_symbol;
46
+ void (*advance)(TSLexer *, bool);
47
+ void (*mark_end)(TSLexer *);
48
+ uint32_t (*get_column)(TSLexer *);
49
+ bool (*is_at_included_range_start)(const TSLexer *);
50
+ bool (*eof)(const TSLexer *);
51
+ };
52
+
53
+ typedef enum {
54
+ TSParseActionTypeShift,
55
+ TSParseActionTypeReduce,
56
+ TSParseActionTypeAccept,
57
+ TSParseActionTypeRecover,
58
+ } TSParseActionType;
59
+
60
+ typedef union {
61
+ struct {
62
+ uint8_t type;
63
+ TSStateId state;
64
+ bool extra;
65
+ bool repetition;
66
+ } shift;
67
+ struct {
68
+ uint8_t type;
69
+ uint8_t child_count;
70
+ TSSymbol symbol;
71
+ int16_t dynamic_precedence;
72
+ uint16_t production_id;
73
+ } reduce;
74
+ uint8_t type;
75
+ } TSParseAction;
76
+
77
+ typedef struct {
78
+ uint16_t lex_state;
79
+ uint16_t external_lex_state;
80
+ } TSLexMode;
81
+
82
+ typedef union {
83
+ TSParseAction action;
84
+ struct {
85
+ uint8_t count;
86
+ bool reusable;
87
+ } entry;
88
+ } TSParseActionEntry;
89
+
90
+ struct TSLanguage {
91
+ uint32_t version;
92
+ uint32_t symbol_count;
93
+ uint32_t alias_count;
94
+ uint32_t token_count;
95
+ uint32_t external_token_count;
96
+ uint32_t state_count;
97
+ uint32_t large_state_count;
98
+ uint32_t production_id_count;
99
+ uint32_t field_count;
100
+ uint16_t max_alias_sequence_length;
101
+ const uint16_t *parse_table;
102
+ const uint16_t *small_parse_table;
103
+ const uint32_t *small_parse_table_map;
104
+ const TSParseActionEntry *parse_actions;
105
+ const char * const *symbol_names;
106
+ const char * const *field_names;
107
+ const TSFieldMapSlice *field_map_slices;
108
+ const TSFieldMapEntry *field_map_entries;
109
+ const TSSymbolMetadata *symbol_metadata;
110
+ const TSSymbol *public_symbol_map;
111
+ const uint16_t *alias_map;
112
+ const TSSymbol *alias_sequences;
113
+ const TSLexMode *lex_modes;
114
+ bool (*lex_fn)(TSLexer *, TSStateId);
115
+ bool (*keyword_lex_fn)(TSLexer *, TSStateId);
116
+ TSSymbol keyword_capture_token;
117
+ struct {
118
+ const bool *states;
119
+ const TSSymbol *symbol_map;
120
+ void *(*create)(void);
121
+ void (*destroy)(void *);
122
+ bool (*scan)(void *, TSLexer *, const bool *symbol_whitelist);
123
+ unsigned (*serialize)(void *, char *);
124
+ void (*deserialize)(void *, const char *, unsigned);
125
+ } external_scanner;
126
+ const TSStateId *primary_state_ids;
127
+ };
128
+
129
+ /*
130
+ * Lexer Macros
131
+ */
132
+
133
+ #define START_LEXER() \
134
+ bool result = false; \
135
+ bool skip = false; \
136
+ bool eof = false; \
137
+ int32_t lookahead; \
138
+ goto start; \
139
+ next_state: \
140
+ lexer->advance(lexer, skip); \
141
+ start: \
142
+ skip = false; \
143
+ lookahead = lexer->lookahead;
144
+
145
+ #define ADVANCE(state_value) \
146
+ { \
147
+ state = state_value; \
148
+ goto next_state; \
149
+ }
150
+
151
+ #define SKIP(state_value) \
152
+ { \
153
+ skip = true; \
154
+ state = state_value; \
155
+ goto next_state; \
156
+ }
157
+
158
+ #define ACCEPT_TOKEN(symbol_value) \
159
+ result = true; \
160
+ lexer->result_symbol = symbol_value; \
161
+ lexer->mark_end(lexer);
162
+
163
+ #define END_STATE() return result;
164
+
165
+ /*
166
+ * Parse Table Macros
167
+ */
168
+
169
+ #define SMALL_STATE(id) id - LARGE_STATE_COUNT
170
+
171
+ #define STATE(id) id
172
+
173
+ #define ACTIONS(id) id
174
+
175
+ #define SHIFT(state_value) \
176
+ {{ \
177
+ .shift = { \
178
+ .type = TSParseActionTypeShift, \
179
+ .state = state_value \
180
+ } \
181
+ }}
182
+
183
+ #define SHIFT_REPEAT(state_value) \
184
+ {{ \
185
+ .shift = { \
186
+ .type = TSParseActionTypeShift, \
187
+ .state = state_value, \
188
+ .repetition = true \
189
+ } \
190
+ }}
191
+
192
+ #define SHIFT_EXTRA() \
193
+ {{ \
194
+ .shift = { \
195
+ .type = TSParseActionTypeShift, \
196
+ .extra = true \
197
+ } \
198
+ }}
199
+
200
+ #define REDUCE(symbol_val, child_count_val, ...) \
201
+ {{ \
202
+ .reduce = { \
203
+ .type = TSParseActionTypeReduce, \
204
+ .symbol = symbol_val, \
205
+ .child_count = child_count_val, \
206
+ __VA_ARGS__ \
207
+ }, \
208
+ }}
209
+
210
+ #define RECOVER() \
211
+ {{ \
212
+ .type = TSParseActionTypeRecover \
213
+ }}
214
+
215
+ #define ACCEPT_INPUT() \
216
+ {{ \
217
+ .type = TSParseActionTypeAccept \
218
+ }}
219
+
220
+ #ifdef __cplusplus
221
+ }
222
+ #endif
223
+
224
+ #endif // TREE_SITTER_PARSER_H_
test/corpus/class_definitions.txt ADDED
@@ -0,0 +1,67 @@
1
+ ================================================================================
2
+ Class definitions
3
+ ================================================================================
4
+
5
+ class A:
6
+ a: String
7
+ b: Int
8
+
9
+ class B<S, T>:
10
+ a: S
11
+ b: T
12
+
13
+ class A(B, C):
14
+ a: String
15
+ b: Float
16
+
17
+ class A<S, T>(B, C):
18
+ a: S
19
+ b: T
20
+
21
+ --------------------------------------------------------------------------------
22
+
23
+ (module
24
+ (class_definition
25
+ (identifier)
26
+ (type_pair
27
+ (identifier)
28
+ (identifier))
29
+ (type_pair
30
+ (identifier)
31
+ (identifier)))
32
+ (class_definition
33
+ (identifier)
34
+ (generic_list
35
+ (identifier)
36
+ (identifier))
37
+ (type_pair
38
+ (identifier)
39
+ (identifier))
40
+ (type_pair
41
+ (identifier)
42
+ (identifier)))
43
+ (class_definition
44
+ (identifier)
45
+ (trait_list
46
+ (identifier)
47
+ (identifier))
48
+ (type_pair
49
+ (identifier)
50
+ (identifier))
51
+ (type_pair
52
+ (identifier)
53
+ (identifier)))
54
+ (class_definition
55
+ (identifier)
56
+ (generic_list
57
+ (identifier)
58
+ (identifier))
59
+ (trait_list
60
+ (identifier)
61
+ (identifier))
62
+ (type_pair
63
+ (identifier)
64
+ (identifier))
65
+ (type_pair
66
+ (identifier)
67
+ (identifier))))
test/corpus/import_statements.txt ADDED
@@ -0,0 +1,13 @@
1
+ ================================================================================
2
+ Import statements
3
+ ================================================================================
4
+
5
+ import github/pyros2097/std
6
+
7
+ --------------------------------------------------------------------------------
8
+
9
+ (module
10
+ (import_statement
11
+ (identifier)
12
+ (identifier)
13
+ (identifier)))