@ast-grep/lang-json 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/parser.c ADDED
@@ -0,0 +1,1061 @@
1
+ #include "tree_sitter/parser.h"
2
+
3
+ #if defined(__GNUC__) || defined(__clang__)
4
+ #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
5
+ #endif
6
+
7
+ #define LANGUAGE_VERSION 14
8
+ #define STATE_COUNT 32
9
+ #define LARGE_STATE_COUNT 7
10
+ #define SYMBOL_COUNT 25
11
+ #define ALIAS_COUNT 0
12
+ #define TOKEN_COUNT 15
13
+ #define EXTERNAL_TOKEN_COUNT 0
14
+ #define FIELD_COUNT 2
15
+ #define MAX_ALIAS_SEQUENCE_LENGTH 4
16
+ #define PRODUCTION_ID_COUNT 2
17
+
18
+ enum ts_symbol_identifiers {
19
+ anon_sym_LBRACE = 1,
20
+ anon_sym_COMMA = 2,
21
+ anon_sym_RBRACE = 3,
22
+ anon_sym_COLON = 4,
23
+ anon_sym_LBRACK = 5,
24
+ anon_sym_RBRACK = 6,
25
+ anon_sym_DQUOTE = 7,
26
+ sym_string_content = 8,
27
+ sym_escape_sequence = 9,
28
+ sym_number = 10,
29
+ sym_true = 11,
30
+ sym_false = 12,
31
+ sym_null = 13,
32
+ sym_comment = 14,
33
+ sym_document = 15,
34
+ sym__value = 16,
35
+ sym_object = 17,
36
+ sym_pair = 18,
37
+ sym_array = 19,
38
+ sym_string = 20,
39
+ aux_sym__string_content = 21,
40
+ aux_sym_document_repeat1 = 22,
41
+ aux_sym_object_repeat1 = 23,
42
+ aux_sym_array_repeat1 = 24,
43
+ };
44
+
45
+ static const char * const ts_symbol_names[] = {
46
+ [ts_builtin_sym_end] = "end",
47
+ [anon_sym_LBRACE] = "{",
48
+ [anon_sym_COMMA] = ",",
49
+ [anon_sym_RBRACE] = "}",
50
+ [anon_sym_COLON] = ":",
51
+ [anon_sym_LBRACK] = "[",
52
+ [anon_sym_RBRACK] = "]",
53
+ [anon_sym_DQUOTE] = "\"",
54
+ [sym_string_content] = "string_content",
55
+ [sym_escape_sequence] = "escape_sequence",
56
+ [sym_number] = "number",
57
+ [sym_true] = "true",
58
+ [sym_false] = "false",
59
+ [sym_null] = "null",
60
+ [sym_comment] = "comment",
61
+ [sym_document] = "document",
62
+ [sym__value] = "_value",
63
+ [sym_object] = "object",
64
+ [sym_pair] = "pair",
65
+ [sym_array] = "array",
66
+ [sym_string] = "string",
67
+ [aux_sym__string_content] = "_string_content",
68
+ [aux_sym_document_repeat1] = "document_repeat1",
69
+ [aux_sym_object_repeat1] = "object_repeat1",
70
+ [aux_sym_array_repeat1] = "array_repeat1",
71
+ };
72
+
73
+ static const TSSymbol ts_symbol_map[] = {
74
+ [ts_builtin_sym_end] = ts_builtin_sym_end,
75
+ [anon_sym_LBRACE] = anon_sym_LBRACE,
76
+ [anon_sym_COMMA] = anon_sym_COMMA,
77
+ [anon_sym_RBRACE] = anon_sym_RBRACE,
78
+ [anon_sym_COLON] = anon_sym_COLON,
79
+ [anon_sym_LBRACK] = anon_sym_LBRACK,
80
+ [anon_sym_RBRACK] = anon_sym_RBRACK,
81
+ [anon_sym_DQUOTE] = anon_sym_DQUOTE,
82
+ [sym_string_content] = sym_string_content,
83
+ [sym_escape_sequence] = sym_escape_sequence,
84
+ [sym_number] = sym_number,
85
+ [sym_true] = sym_true,
86
+ [sym_false] = sym_false,
87
+ [sym_null] = sym_null,
88
+ [sym_comment] = sym_comment,
89
+ [sym_document] = sym_document,
90
+ [sym__value] = sym__value,
91
+ [sym_object] = sym_object,
92
+ [sym_pair] = sym_pair,
93
+ [sym_array] = sym_array,
94
+ [sym_string] = sym_string,
95
+ [aux_sym__string_content] = aux_sym__string_content,
96
+ [aux_sym_document_repeat1] = aux_sym_document_repeat1,
97
+ [aux_sym_object_repeat1] = aux_sym_object_repeat1,
98
+ [aux_sym_array_repeat1] = aux_sym_array_repeat1,
99
+ };
100
+
101
+ static const TSSymbolMetadata ts_symbol_metadata[] = {
102
+ [ts_builtin_sym_end] = {
103
+ .visible = false,
104
+ .named = true,
105
+ },
106
+ [anon_sym_LBRACE] = {
107
+ .visible = true,
108
+ .named = false,
109
+ },
110
+ [anon_sym_COMMA] = {
111
+ .visible = true,
112
+ .named = false,
113
+ },
114
+ [anon_sym_RBRACE] = {
115
+ .visible = true,
116
+ .named = false,
117
+ },
118
+ [anon_sym_COLON] = {
119
+ .visible = true,
120
+ .named = false,
121
+ },
122
+ [anon_sym_LBRACK] = {
123
+ .visible = true,
124
+ .named = false,
125
+ },
126
+ [anon_sym_RBRACK] = {
127
+ .visible = true,
128
+ .named = false,
129
+ },
130
+ [anon_sym_DQUOTE] = {
131
+ .visible = true,
132
+ .named = false,
133
+ },
134
+ [sym_string_content] = {
135
+ .visible = true,
136
+ .named = true,
137
+ },
138
+ [sym_escape_sequence] = {
139
+ .visible = true,
140
+ .named = true,
141
+ },
142
+ [sym_number] = {
143
+ .visible = true,
144
+ .named = true,
145
+ },
146
+ [sym_true] = {
147
+ .visible = true,
148
+ .named = true,
149
+ },
150
+ [sym_false] = {
151
+ .visible = true,
152
+ .named = true,
153
+ },
154
+ [sym_null] = {
155
+ .visible = true,
156
+ .named = true,
157
+ },
158
+ [sym_comment] = {
159
+ .visible = true,
160
+ .named = true,
161
+ },
162
+ [sym_document] = {
163
+ .visible = true,
164
+ .named = true,
165
+ },
166
+ [sym__value] = {
167
+ .visible = false,
168
+ .named = true,
169
+ .supertype = true,
170
+ },
171
+ [sym_object] = {
172
+ .visible = true,
173
+ .named = true,
174
+ },
175
+ [sym_pair] = {
176
+ .visible = true,
177
+ .named = true,
178
+ },
179
+ [sym_array] = {
180
+ .visible = true,
181
+ .named = true,
182
+ },
183
+ [sym_string] = {
184
+ .visible = true,
185
+ .named = true,
186
+ },
187
+ [aux_sym__string_content] = {
188
+ .visible = false,
189
+ .named = false,
190
+ },
191
+ [aux_sym_document_repeat1] = {
192
+ .visible = false,
193
+ .named = false,
194
+ },
195
+ [aux_sym_object_repeat1] = {
196
+ .visible = false,
197
+ .named = false,
198
+ },
199
+ [aux_sym_array_repeat1] = {
200
+ .visible = false,
201
+ .named = false,
202
+ },
203
+ };
204
+
205
+ enum ts_field_identifiers {
206
+ field_key = 1,
207
+ field_value = 2,
208
+ };
209
+
210
+ static const char * const ts_field_names[] = {
211
+ [0] = NULL,
212
+ [field_key] = "key",
213
+ [field_value] = "value",
214
+ };
215
+
216
+ static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = {
217
+ [1] = {.index = 0, .length = 2},
218
+ };
219
+
220
+ static const TSFieldMapEntry ts_field_map_entries[] = {
221
+ [0] =
222
+ {field_key, 0},
223
+ {field_value, 2},
224
+ };
225
+
226
+ static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = {
227
+ [0] = {0},
228
+ };
229
+
230
+ static const uint16_t ts_non_terminal_alias_map[] = {
231
+ 0,
232
+ };
233
+
234
+ static const TSStateId ts_primary_state_ids[STATE_COUNT] = {
235
+ [0] = 0,
236
+ [1] = 1,
237
+ [2] = 2,
238
+ [3] = 3,
239
+ [4] = 4,
240
+ [5] = 5,
241
+ [6] = 6,
242
+ [7] = 7,
243
+ [8] = 8,
244
+ [9] = 9,
245
+ [10] = 10,
246
+ [11] = 11,
247
+ [12] = 12,
248
+ [13] = 13,
249
+ [14] = 14,
250
+ [15] = 15,
251
+ [16] = 16,
252
+ [17] = 17,
253
+ [18] = 18,
254
+ [19] = 19,
255
+ [20] = 20,
256
+ [21] = 21,
257
+ [22] = 22,
258
+ [23] = 23,
259
+ [24] = 24,
260
+ [25] = 25,
261
+ [26] = 26,
262
+ [27] = 27,
263
+ [28] = 28,
264
+ [29] = 29,
265
+ [30] = 30,
266
+ [31] = 31,
267
+ };
268
+
269
+ static bool ts_lex(TSLexer *lexer, TSStateId state) {
270
+ START_LEXER();
271
+ eof = lexer->eof(lexer);
272
+ switch (state) {
273
+ case 0:
274
+ if (eof) ADVANCE(21);
275
+ ADVANCE_MAP(
276
+ '"', 28,
277
+ ',', 23,
278
+ '-', 7,
279
+ '/', 3,
280
+ '0', 35,
281
+ ':', 25,
282
+ '[', 26,
283
+ '\\', 18,
284
+ ']', 27,
285
+ 'f', 8,
286
+ 'n', 17,
287
+ 't', 14,
288
+ '{', 22,
289
+ '}', 24,
290
+ );
291
+ if (('\t' <= lookahead && lookahead <= '\r') ||
292
+ lookahead == ' ') SKIP(20);
293
+ if (('1' <= lookahead && lookahead <= '9')) ADVANCE(36);
294
+ END_STATE();
295
+ case 1:
296
+ if (lookahead == '\n') SKIP(2);
297
+ if (lookahead == '"') ADVANCE(28);
298
+ if (lookahead == '/') ADVANCE(29);
299
+ if (lookahead == '\\') ADVANCE(18);
300
+ if (('\t' <= lookahead && lookahead <= '\r') ||
301
+ lookahead == ' ') ADVANCE(32);
302
+ if (lookahead != 0) ADVANCE(33);
303
+ END_STATE();
304
+ case 2:
305
+ if (lookahead == '"') ADVANCE(28);
306
+ if (lookahead == '/') ADVANCE(3);
307
+ if (('\t' <= lookahead && lookahead <= '\r') ||
308
+ lookahead == ' ') SKIP(2);
309
+ END_STATE();
310
+ case 3:
311
+ if (lookahead == '*') ADVANCE(5);
312
+ if (lookahead == '/') ADVANCE(43);
313
+ END_STATE();
314
+ case 4:
315
+ if (lookahead == '*') ADVANCE(4);
316
+ if (lookahead == '/') ADVANCE(42);
317
+ if (lookahead != 0) ADVANCE(5);
318
+ END_STATE();
319
+ case 5:
320
+ if (lookahead == '*') ADVANCE(4);
321
+ if (lookahead != 0) ADVANCE(5);
322
+ END_STATE();
323
+ case 6:
324
+ if (lookahead == '-') ADVANCE(19);
325
+ if (('0' <= lookahead && lookahead <= '9')) ADVANCE(38);
326
+ END_STATE();
327
+ case 7:
328
+ if (lookahead == '0') ADVANCE(35);
329
+ if (('1' <= lookahead && lookahead <= '9')) ADVANCE(36);
330
+ END_STATE();
331
+ case 8:
332
+ if (lookahead == 'a') ADVANCE(11);
333
+ END_STATE();
334
+ case 9:
335
+ if (lookahead == 'e') ADVANCE(39);
336
+ END_STATE();
337
+ case 10:
338
+ if (lookahead == 'e') ADVANCE(40);
339
+ END_STATE();
340
+ case 11:
341
+ if (lookahead == 'l') ADVANCE(15);
342
+ END_STATE();
343
+ case 12:
344
+ if (lookahead == 'l') ADVANCE(41);
345
+ END_STATE();
346
+ case 13:
347
+ if (lookahead == 'l') ADVANCE(12);
348
+ END_STATE();
349
+ case 14:
350
+ if (lookahead == 'r') ADVANCE(16);
351
+ END_STATE();
352
+ case 15:
353
+ if (lookahead == 's') ADVANCE(10);
354
+ END_STATE();
355
+ case 16:
356
+ if (lookahead == 'u') ADVANCE(9);
357
+ END_STATE();
358
+ case 17:
359
+ if (lookahead == 'u') ADVANCE(13);
360
+ END_STATE();
361
+ case 18:
362
+ ADVANCE_MAP(
363
+ '"', 34,
364
+ '/', 34,
365
+ '\\', 34,
366
+ 'b', 34,
367
+ 'f', 34,
368
+ 'n', 34,
369
+ 'r', 34,
370
+ 't', 34,
371
+ 'u', 34,
372
+ );
373
+ END_STATE();
374
+ case 19:
375
+ if (('0' <= lookahead && lookahead <= '9')) ADVANCE(38);
376
+ END_STATE();
377
+ case 20:
378
+ if (eof) ADVANCE(21);
379
+ ADVANCE_MAP(
380
+ '"', 28,
381
+ ',', 23,
382
+ '-', 7,
383
+ '/', 3,
384
+ '0', 35,
385
+ ':', 25,
386
+ '[', 26,
387
+ ']', 27,
388
+ 'f', 8,
389
+ 'n', 17,
390
+ 't', 14,
391
+ '{', 22,
392
+ '}', 24,
393
+ );
394
+ if (('\t' <= lookahead && lookahead <= '\r') ||
395
+ lookahead == ' ') SKIP(20);
396
+ if (('1' <= lookahead && lookahead <= '9')) ADVANCE(36);
397
+ END_STATE();
398
+ case 21:
399
+ ACCEPT_TOKEN(ts_builtin_sym_end);
400
+ END_STATE();
401
+ case 22:
402
+ ACCEPT_TOKEN(anon_sym_LBRACE);
403
+ END_STATE();
404
+ case 23:
405
+ ACCEPT_TOKEN(anon_sym_COMMA);
406
+ END_STATE();
407
+ case 24:
408
+ ACCEPT_TOKEN(anon_sym_RBRACE);
409
+ END_STATE();
410
+ case 25:
411
+ ACCEPT_TOKEN(anon_sym_COLON);
412
+ END_STATE();
413
+ case 26:
414
+ ACCEPT_TOKEN(anon_sym_LBRACK);
415
+ END_STATE();
416
+ case 27:
417
+ ACCEPT_TOKEN(anon_sym_RBRACK);
418
+ END_STATE();
419
+ case 28:
420
+ ACCEPT_TOKEN(anon_sym_DQUOTE);
421
+ END_STATE();
422
+ case 29:
423
+ ACCEPT_TOKEN(sym_string_content);
424
+ if (lookahead == '*') ADVANCE(31);
425
+ if (lookahead == '/') ADVANCE(33);
426
+ if (lookahead != 0 &&
427
+ lookahead != '\n' &&
428
+ lookahead != '"' &&
429
+ lookahead != '\\') ADVANCE(33);
430
+ END_STATE();
431
+ case 30:
432
+ ACCEPT_TOKEN(sym_string_content);
433
+ if (lookahead == '*') ADVANCE(30);
434
+ if (lookahead == '/') ADVANCE(33);
435
+ if (lookahead != 0 &&
436
+ lookahead != '\n' &&
437
+ lookahead != '"' &&
438
+ lookahead != '\\') ADVANCE(31);
439
+ END_STATE();
440
+ case 31:
441
+ ACCEPT_TOKEN(sym_string_content);
442
+ if (lookahead == '*') ADVANCE(30);
443
+ if (lookahead != 0 &&
444
+ lookahead != '\n' &&
445
+ lookahead != '"' &&
446
+ lookahead != '\\') ADVANCE(31);
447
+ END_STATE();
448
+ case 32:
449
+ ACCEPT_TOKEN(sym_string_content);
450
+ if (lookahead == '/') ADVANCE(29);
451
+ if (lookahead == '\t' ||
452
+ (0x0b <= lookahead && lookahead <= '\r') ||
453
+ lookahead == ' ') ADVANCE(32);
454
+ if (lookahead != 0 &&
455
+ (lookahead < '\t' || '\r' < lookahead) &&
456
+ lookahead != '"' &&
457
+ lookahead != '\\') ADVANCE(33);
458
+ END_STATE();
459
+ case 33:
460
+ ACCEPT_TOKEN(sym_string_content);
461
+ if (lookahead != 0 &&
462
+ lookahead != '\n' &&
463
+ lookahead != '"' &&
464
+ lookahead != '\\') ADVANCE(33);
465
+ END_STATE();
466
+ case 34:
467
+ ACCEPT_TOKEN(sym_escape_sequence);
468
+ END_STATE();
469
+ case 35:
470
+ ACCEPT_TOKEN(sym_number);
471
+ if (lookahead == '.') ADVANCE(37);
472
+ if (lookahead == 'E' ||
473
+ lookahead == 'e') ADVANCE(6);
474
+ END_STATE();
475
+ case 36:
476
+ ACCEPT_TOKEN(sym_number);
477
+ if (lookahead == '.') ADVANCE(37);
478
+ if (lookahead == 'E' ||
479
+ lookahead == 'e') ADVANCE(6);
480
+ if (('0' <= lookahead && lookahead <= '9')) ADVANCE(36);
481
+ END_STATE();
482
+ case 37:
483
+ ACCEPT_TOKEN(sym_number);
484
+ if (lookahead == 'E' ||
485
+ lookahead == 'e') ADVANCE(6);
486
+ if (('0' <= lookahead && lookahead <= '9')) ADVANCE(37);
487
+ END_STATE();
488
+ case 38:
489
+ ACCEPT_TOKEN(sym_number);
490
+ if (('0' <= lookahead && lookahead <= '9')) ADVANCE(38);
491
+ END_STATE();
492
+ case 39:
493
+ ACCEPT_TOKEN(sym_true);
494
+ END_STATE();
495
+ case 40:
496
+ ACCEPT_TOKEN(sym_false);
497
+ END_STATE();
498
+ case 41:
499
+ ACCEPT_TOKEN(sym_null);
500
+ END_STATE();
501
+ case 42:
502
+ ACCEPT_TOKEN(sym_comment);
503
+ END_STATE();
504
+ case 43:
505
+ ACCEPT_TOKEN(sym_comment);
506
+ if (lookahead != 0 &&
507
+ lookahead != '\n') ADVANCE(43);
508
+ END_STATE();
509
+ default:
510
+ return false;
511
+ }
512
+ }
513
+
514
+ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
515
+ [0] = {.lex_state = 0},
516
+ [1] = {.lex_state = 0},
517
+ [2] = {.lex_state = 0},
518
+ [3] = {.lex_state = 0},
519
+ [4] = {.lex_state = 0},
520
+ [5] = {.lex_state = 0},
521
+ [6] = {.lex_state = 0},
522
+ [7] = {.lex_state = 0},
523
+ [8] = {.lex_state = 0},
524
+ [9] = {.lex_state = 0},
525
+ [10] = {.lex_state = 0},
526
+ [11] = {.lex_state = 0},
527
+ [12] = {.lex_state = 0},
528
+ [13] = {.lex_state = 0},
529
+ [14] = {.lex_state = 0},
530
+ [15] = {.lex_state = 0},
531
+ [16] = {.lex_state = 0},
532
+ [17] = {.lex_state = 1},
533
+ [18] = {.lex_state = 1},
534
+ [19] = {.lex_state = 1},
535
+ [20] = {.lex_state = 0},
536
+ [21] = {.lex_state = 0},
537
+ [22] = {.lex_state = 0},
538
+ [23] = {.lex_state = 0},
539
+ [24] = {.lex_state = 0},
540
+ [25] = {.lex_state = 0},
541
+ [26] = {.lex_state = 0},
542
+ [27] = {.lex_state = 0},
543
+ [28] = {.lex_state = 0},
544
+ [29] = {.lex_state = 0},
545
+ [30] = {.lex_state = 0},
546
+ [31] = {.lex_state = 0},
547
+ };
548
+
549
+ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
550
+ [0] = {
551
+ [ts_builtin_sym_end] = ACTIONS(1),
552
+ [anon_sym_LBRACE] = ACTIONS(1),
553
+ [anon_sym_COMMA] = ACTIONS(1),
554
+ [anon_sym_RBRACE] = ACTIONS(1),
555
+ [anon_sym_COLON] = ACTIONS(1),
556
+ [anon_sym_LBRACK] = ACTIONS(1),
557
+ [anon_sym_RBRACK] = ACTIONS(1),
558
+ [anon_sym_DQUOTE] = ACTIONS(1),
559
+ [sym_escape_sequence] = ACTIONS(1),
560
+ [sym_number] = ACTIONS(1),
561
+ [sym_true] = ACTIONS(1),
562
+ [sym_false] = ACTIONS(1),
563
+ [sym_null] = ACTIONS(1),
564
+ [sym_comment] = ACTIONS(3),
565
+ },
566
+ [1] = {
567
+ [sym_document] = STATE(30),
568
+ [sym__value] = STATE(2),
569
+ [sym_object] = STATE(8),
570
+ [sym_array] = STATE(8),
571
+ [sym_string] = STATE(8),
572
+ [aux_sym_document_repeat1] = STATE(2),
573
+ [ts_builtin_sym_end] = ACTIONS(5),
574
+ [anon_sym_LBRACE] = ACTIONS(7),
575
+ [anon_sym_LBRACK] = ACTIONS(9),
576
+ [anon_sym_DQUOTE] = ACTIONS(11),
577
+ [sym_number] = ACTIONS(13),
578
+ [sym_true] = ACTIONS(13),
579
+ [sym_false] = ACTIONS(13),
580
+ [sym_null] = ACTIONS(13),
581
+ [sym_comment] = ACTIONS(3),
582
+ },
583
+ [2] = {
584
+ [sym__value] = STATE(3),
585
+ [sym_object] = STATE(8),
586
+ [sym_array] = STATE(8),
587
+ [sym_string] = STATE(8),
588
+ [aux_sym_document_repeat1] = STATE(3),
589
+ [ts_builtin_sym_end] = ACTIONS(15),
590
+ [anon_sym_LBRACE] = ACTIONS(7),
591
+ [anon_sym_LBRACK] = ACTIONS(9),
592
+ [anon_sym_DQUOTE] = ACTIONS(11),
593
+ [sym_number] = ACTIONS(13),
594
+ [sym_true] = ACTIONS(13),
595
+ [sym_false] = ACTIONS(13),
596
+ [sym_null] = ACTIONS(13),
597
+ [sym_comment] = ACTIONS(3),
598
+ },
599
+ [3] = {
600
+ [sym__value] = STATE(3),
601
+ [sym_object] = STATE(8),
602
+ [sym_array] = STATE(8),
603
+ [sym_string] = STATE(8),
604
+ [aux_sym_document_repeat1] = STATE(3),
605
+ [ts_builtin_sym_end] = ACTIONS(17),
606
+ [anon_sym_LBRACE] = ACTIONS(19),
607
+ [anon_sym_LBRACK] = ACTIONS(22),
608
+ [anon_sym_DQUOTE] = ACTIONS(25),
609
+ [sym_number] = ACTIONS(28),
610
+ [sym_true] = ACTIONS(28),
611
+ [sym_false] = ACTIONS(28),
612
+ [sym_null] = ACTIONS(28),
613
+ [sym_comment] = ACTIONS(3),
614
+ },
615
+ [4] = {
616
+ [sym__value] = STATE(21),
617
+ [sym_object] = STATE(8),
618
+ [sym_array] = STATE(8),
619
+ [sym_string] = STATE(8),
620
+ [anon_sym_LBRACE] = ACTIONS(7),
621
+ [anon_sym_LBRACK] = ACTIONS(9),
622
+ [anon_sym_RBRACK] = ACTIONS(31),
623
+ [anon_sym_DQUOTE] = ACTIONS(11),
624
+ [sym_number] = ACTIONS(13),
625
+ [sym_true] = ACTIONS(13),
626
+ [sym_false] = ACTIONS(13),
627
+ [sym_null] = ACTIONS(13),
628
+ [sym_comment] = ACTIONS(3),
629
+ },
630
+ [5] = {
631
+ [ts_builtin_sym_end] = ACTIONS(33),
632
+ [anon_sym_LBRACE] = ACTIONS(33),
633
+ [anon_sym_COMMA] = ACTIONS(33),
634
+ [anon_sym_RBRACE] = ACTIONS(33),
635
+ [anon_sym_COLON] = ACTIONS(33),
636
+ [anon_sym_LBRACK] = ACTIONS(33),
637
+ [anon_sym_RBRACK] = ACTIONS(33),
638
+ [anon_sym_DQUOTE] = ACTIONS(33),
639
+ [sym_number] = ACTIONS(33),
640
+ [sym_true] = ACTIONS(33),
641
+ [sym_false] = ACTIONS(33),
642
+ [sym_null] = ACTIONS(33),
643
+ [sym_comment] = ACTIONS(3),
644
+ },
645
+ [6] = {
646
+ [ts_builtin_sym_end] = ACTIONS(35),
647
+ [anon_sym_LBRACE] = ACTIONS(35),
648
+ [anon_sym_COMMA] = ACTIONS(35),
649
+ [anon_sym_RBRACE] = ACTIONS(35),
650
+ [anon_sym_COLON] = ACTIONS(35),
651
+ [anon_sym_LBRACK] = ACTIONS(35),
652
+ [anon_sym_RBRACK] = ACTIONS(35),
653
+ [anon_sym_DQUOTE] = ACTIONS(35),
654
+ [sym_number] = ACTIONS(35),
655
+ [sym_true] = ACTIONS(35),
656
+ [sym_false] = ACTIONS(35),
657
+ [sym_null] = ACTIONS(35),
658
+ [sym_comment] = ACTIONS(3),
659
+ },
660
+ };
661
+
662
+ static const uint16_t ts_small_parse_table[] = {
663
+ [0] = 2,
664
+ ACTIONS(3), 1,
665
+ sym_comment,
666
+ ACTIONS(37), 11,
667
+ ts_builtin_sym_end,
668
+ anon_sym_LBRACE,
669
+ anon_sym_COMMA,
670
+ anon_sym_RBRACE,
671
+ anon_sym_LBRACK,
672
+ anon_sym_RBRACK,
673
+ anon_sym_DQUOTE,
674
+ sym_number,
675
+ sym_true,
676
+ sym_false,
677
+ sym_null,
678
+ [17] = 2,
679
+ ACTIONS(3), 1,
680
+ sym_comment,
681
+ ACTIONS(39), 11,
682
+ ts_builtin_sym_end,
683
+ anon_sym_LBRACE,
684
+ anon_sym_COMMA,
685
+ anon_sym_RBRACE,
686
+ anon_sym_LBRACK,
687
+ anon_sym_RBRACK,
688
+ anon_sym_DQUOTE,
689
+ sym_number,
690
+ sym_true,
691
+ sym_false,
692
+ sym_null,
693
+ [34] = 2,
694
+ ACTIONS(3), 1,
695
+ sym_comment,
696
+ ACTIONS(41), 11,
697
+ ts_builtin_sym_end,
698
+ anon_sym_LBRACE,
699
+ anon_sym_COMMA,
700
+ anon_sym_RBRACE,
701
+ anon_sym_LBRACK,
702
+ anon_sym_RBRACK,
703
+ anon_sym_DQUOTE,
704
+ sym_number,
705
+ sym_true,
706
+ sym_false,
707
+ sym_null,
708
+ [51] = 7,
709
+ ACTIONS(3), 1,
710
+ sym_comment,
711
+ ACTIONS(7), 1,
712
+ anon_sym_LBRACE,
713
+ ACTIONS(9), 1,
714
+ anon_sym_LBRACK,
715
+ ACTIONS(11), 1,
716
+ anon_sym_DQUOTE,
717
+ STATE(29), 1,
718
+ sym__value,
719
+ STATE(8), 3,
720
+ sym_object,
721
+ sym_array,
722
+ sym_string,
723
+ ACTIONS(13), 4,
724
+ sym_number,
725
+ sym_true,
726
+ sym_false,
727
+ sym_null,
728
+ [78] = 2,
729
+ ACTIONS(3), 1,
730
+ sym_comment,
731
+ ACTIONS(43), 11,
732
+ ts_builtin_sym_end,
733
+ anon_sym_LBRACE,
734
+ anon_sym_COMMA,
735
+ anon_sym_RBRACE,
736
+ anon_sym_LBRACK,
737
+ anon_sym_RBRACK,
738
+ anon_sym_DQUOTE,
739
+ sym_number,
740
+ sym_true,
741
+ sym_false,
742
+ sym_null,
743
+ [95] = 2,
744
+ ACTIONS(3), 1,
745
+ sym_comment,
746
+ ACTIONS(45), 11,
747
+ ts_builtin_sym_end,
748
+ anon_sym_LBRACE,
749
+ anon_sym_COMMA,
750
+ anon_sym_RBRACE,
751
+ anon_sym_LBRACK,
752
+ anon_sym_RBRACK,
753
+ anon_sym_DQUOTE,
754
+ sym_number,
755
+ sym_true,
756
+ sym_false,
757
+ sym_null,
758
+ [112] = 7,
759
+ ACTIONS(3), 1,
760
+ sym_comment,
761
+ ACTIONS(7), 1,
762
+ anon_sym_LBRACE,
763
+ ACTIONS(9), 1,
764
+ anon_sym_LBRACK,
765
+ ACTIONS(11), 1,
766
+ anon_sym_DQUOTE,
767
+ STATE(28), 1,
768
+ sym__value,
769
+ STATE(8), 3,
770
+ sym_object,
771
+ sym_array,
772
+ sym_string,
773
+ ACTIONS(13), 4,
774
+ sym_number,
775
+ sym_true,
776
+ sym_false,
777
+ sym_null,
778
+ [139] = 2,
779
+ ACTIONS(3), 1,
780
+ sym_comment,
781
+ ACTIONS(47), 11,
782
+ ts_builtin_sym_end,
783
+ anon_sym_LBRACE,
784
+ anon_sym_COMMA,
785
+ anon_sym_RBRACE,
786
+ anon_sym_LBRACK,
787
+ anon_sym_RBRACK,
788
+ anon_sym_DQUOTE,
789
+ sym_number,
790
+ sym_true,
791
+ sym_false,
792
+ sym_null,
793
+ [156] = 2,
794
+ ACTIONS(3), 1,
795
+ sym_comment,
796
+ ACTIONS(49), 11,
797
+ ts_builtin_sym_end,
798
+ anon_sym_LBRACE,
799
+ anon_sym_COMMA,
800
+ anon_sym_RBRACE,
801
+ anon_sym_LBRACK,
802
+ anon_sym_RBRACK,
803
+ anon_sym_DQUOTE,
804
+ sym_number,
805
+ sym_true,
806
+ sym_false,
807
+ sym_null,
808
+ [173] = 5,
809
+ ACTIONS(3), 1,
810
+ sym_comment,
811
+ ACTIONS(11), 1,
812
+ anon_sym_DQUOTE,
813
+ ACTIONS(51), 1,
814
+ anon_sym_RBRACE,
815
+ STATE(20), 1,
816
+ sym_pair,
817
+ STATE(31), 1,
818
+ sym_string,
819
+ [189] = 4,
820
+ ACTIONS(53), 1,
821
+ anon_sym_DQUOTE,
822
+ ACTIONS(57), 1,
823
+ sym_comment,
824
+ STATE(18), 1,
825
+ aux_sym__string_content,
826
+ ACTIONS(55), 2,
827
+ sym_string_content,
828
+ sym_escape_sequence,
829
+ [203] = 4,
830
+ ACTIONS(57), 1,
831
+ sym_comment,
832
+ ACTIONS(59), 1,
833
+ anon_sym_DQUOTE,
834
+ STATE(19), 1,
835
+ aux_sym__string_content,
836
+ ACTIONS(61), 2,
837
+ sym_string_content,
838
+ sym_escape_sequence,
839
+ [217] = 4,
840
+ ACTIONS(57), 1,
841
+ sym_comment,
842
+ ACTIONS(63), 1,
843
+ anon_sym_DQUOTE,
844
+ STATE(19), 1,
845
+ aux_sym__string_content,
846
+ ACTIONS(65), 2,
847
+ sym_string_content,
848
+ sym_escape_sequence,
849
+ [231] = 4,
850
+ ACTIONS(3), 1,
851
+ sym_comment,
852
+ ACTIONS(68), 1,
853
+ anon_sym_COMMA,
854
+ ACTIONS(70), 1,
855
+ anon_sym_RBRACE,
856
+ STATE(22), 1,
857
+ aux_sym_object_repeat1,
858
+ [244] = 4,
859
+ ACTIONS(3), 1,
860
+ sym_comment,
861
+ ACTIONS(72), 1,
862
+ anon_sym_COMMA,
863
+ ACTIONS(74), 1,
864
+ anon_sym_RBRACK,
865
+ STATE(24), 1,
866
+ aux_sym_array_repeat1,
867
+ [257] = 4,
868
+ ACTIONS(3), 1,
869
+ sym_comment,
870
+ ACTIONS(68), 1,
871
+ anon_sym_COMMA,
872
+ ACTIONS(76), 1,
873
+ anon_sym_RBRACE,
874
+ STATE(25), 1,
875
+ aux_sym_object_repeat1,
876
+ [270] = 4,
877
+ ACTIONS(3), 1,
878
+ sym_comment,
879
+ ACTIONS(11), 1,
880
+ anon_sym_DQUOTE,
881
+ STATE(27), 1,
882
+ sym_pair,
883
+ STATE(31), 1,
884
+ sym_string,
885
+ [283] = 4,
886
+ ACTIONS(3), 1,
887
+ sym_comment,
888
+ ACTIONS(72), 1,
889
+ anon_sym_COMMA,
890
+ ACTIONS(78), 1,
891
+ anon_sym_RBRACK,
892
+ STATE(26), 1,
893
+ aux_sym_array_repeat1,
894
+ [296] = 4,
895
+ ACTIONS(3), 1,
896
+ sym_comment,
897
+ ACTIONS(80), 1,
898
+ anon_sym_COMMA,
899
+ ACTIONS(83), 1,
900
+ anon_sym_RBRACE,
901
+ STATE(25), 1,
902
+ aux_sym_object_repeat1,
903
+ [309] = 4,
904
+ ACTIONS(3), 1,
905
+ sym_comment,
906
+ ACTIONS(85), 1,
907
+ anon_sym_COMMA,
908
+ ACTIONS(88), 1,
909
+ anon_sym_RBRACK,
910
+ STATE(26), 1,
911
+ aux_sym_array_repeat1,
912
+ [322] = 2,
913
+ ACTIONS(3), 1,
914
+ sym_comment,
915
+ ACTIONS(83), 2,
916
+ anon_sym_COMMA,
917
+ anon_sym_RBRACE,
918
+ [330] = 2,
919
+ ACTIONS(3), 1,
920
+ sym_comment,
921
+ ACTIONS(90), 2,
922
+ anon_sym_COMMA,
923
+ anon_sym_RBRACE,
924
+ [338] = 2,
925
+ ACTIONS(3), 1,
926
+ sym_comment,
927
+ ACTIONS(88), 2,
928
+ anon_sym_COMMA,
929
+ anon_sym_RBRACK,
930
+ [346] = 2,
931
+ ACTIONS(3), 1,
932
+ sym_comment,
933
+ ACTIONS(92), 1,
934
+ ts_builtin_sym_end,
935
+ [353] = 2,
936
+ ACTIONS(3), 1,
937
+ sym_comment,
938
+ ACTIONS(94), 1,
939
+ anon_sym_COLON,
940
+ };
941
+
942
+ static const uint32_t ts_small_parse_table_map[] = {
943
+ [SMALL_STATE(7)] = 0,
944
+ [SMALL_STATE(8)] = 17,
945
+ [SMALL_STATE(9)] = 34,
946
+ [SMALL_STATE(10)] = 51,
947
+ [SMALL_STATE(11)] = 78,
948
+ [SMALL_STATE(12)] = 95,
949
+ [SMALL_STATE(13)] = 112,
950
+ [SMALL_STATE(14)] = 139,
951
+ [SMALL_STATE(15)] = 156,
952
+ [SMALL_STATE(16)] = 173,
953
+ [SMALL_STATE(17)] = 189,
954
+ [SMALL_STATE(18)] = 203,
955
+ [SMALL_STATE(19)] = 217,
956
+ [SMALL_STATE(20)] = 231,
957
+ [SMALL_STATE(21)] = 244,
958
+ [SMALL_STATE(22)] = 257,
959
+ [SMALL_STATE(23)] = 270,
960
+ [SMALL_STATE(24)] = 283,
961
+ [SMALL_STATE(25)] = 296,
962
+ [SMALL_STATE(26)] = 309,
963
+ [SMALL_STATE(27)] = 322,
964
+ [SMALL_STATE(28)] = 330,
965
+ [SMALL_STATE(29)] = 338,
966
+ [SMALL_STATE(30)] = 346,
967
+ [SMALL_STATE(31)] = 353,
968
+ };
969
+
970
+ static const TSParseActionEntry ts_parse_actions[] = {
971
+ [0] = {.entry = {.count = 0, .reusable = false}},
972
+ [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(),
973
+ [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(),
974
+ [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_document, 0, 0, 0),
975
+ [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16),
976
+ [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4),
977
+ [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17),
978
+ [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8),
979
+ [15] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_document, 1, 0, 0),
980
+ [17] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0),
981
+ [19] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(16),
982
+ [22] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(4),
983
+ [25] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(17),
984
+ [28] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(8),
985
+ [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9),
986
+ [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 2, 0, 0),
987
+ [35] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 3, 0, 0),
988
+ [37] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 2, 0, 0),
989
+ [39] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__value, 1, 0, 0),
990
+ [41] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array, 2, 0, 0),
991
+ [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 3, 0, 0),
992
+ [45] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 4, 0, 0),
993
+ [47] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array, 3, 0, 0),
994
+ [49] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array, 4, 0, 0),
995
+ [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7),
996
+ [53] = {.entry = {.count = 1, .reusable = false}}, SHIFT(5),
997
+ [55] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18),
998
+ [57] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(),
999
+ [59] = {.entry = {.count = 1, .reusable = false}}, SHIFT(6),
1000
+ [61] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19),
1001
+ [63] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__string_content, 2, 0, 0),
1002
+ [65] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__string_content, 2, 0, 0), SHIFT_REPEAT(19),
1003
+ [68] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23),
1004
+ [70] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11),
1005
+ [72] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10),
1006
+ [74] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14),
1007
+ [76] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12),
1008
+ [78] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15),
1009
+ [80] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2, 0, 0), SHIFT_REPEAT(23),
1010
+ [83] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2, 0, 0),
1011
+ [85] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_array_repeat1, 2, 0, 0), SHIFT_REPEAT(10),
1012
+ [88] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_array_repeat1, 2, 0, 0),
1013
+ [90] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pair, 3, 0, 1),
1014
+ [92] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(),
1015
+ [94] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13),
1016
+ };
1017
+
1018
+ #ifdef __cplusplus
1019
+ extern "C" {
1020
+ #endif
1021
+ #ifdef TREE_SITTER_HIDE_SYMBOLS
1022
+ #define TS_PUBLIC
1023
+ #elif defined(_WIN32)
1024
+ #define TS_PUBLIC __declspec(dllexport)
1025
+ #else
1026
+ #define TS_PUBLIC __attribute__((visibility("default")))
1027
+ #endif
1028
+
1029
+ TS_PUBLIC const TSLanguage *tree_sitter_json(void) {
1030
+ static const TSLanguage language = {
1031
+ .version = LANGUAGE_VERSION,
1032
+ .symbol_count = SYMBOL_COUNT,
1033
+ .alias_count = ALIAS_COUNT,
1034
+ .token_count = TOKEN_COUNT,
1035
+ .external_token_count = EXTERNAL_TOKEN_COUNT,
1036
+ .state_count = STATE_COUNT,
1037
+ .large_state_count = LARGE_STATE_COUNT,
1038
+ .production_id_count = PRODUCTION_ID_COUNT,
1039
+ .field_count = FIELD_COUNT,
1040
+ .max_alias_sequence_length = MAX_ALIAS_SEQUENCE_LENGTH,
1041
+ .parse_table = &ts_parse_table[0][0],
1042
+ .small_parse_table = ts_small_parse_table,
1043
+ .small_parse_table_map = ts_small_parse_table_map,
1044
+ .parse_actions = ts_parse_actions,
1045
+ .symbol_names = ts_symbol_names,
1046
+ .field_names = ts_field_names,
1047
+ .field_map_slices = ts_field_map_slices,
1048
+ .field_map_entries = ts_field_map_entries,
1049
+ .symbol_metadata = ts_symbol_metadata,
1050
+ .public_symbol_map = ts_symbol_map,
1051
+ .alias_map = ts_non_terminal_alias_map,
1052
+ .alias_sequences = &ts_alias_sequences[0][0],
1053
+ .lex_modes = ts_lex_modes,
1054
+ .lex_fn = ts_lex,
1055
+ .primary_state_ids = ts_primary_state_ids,
1056
+ };
1057
+ return &language;
1058
+ }
1059
+ #ifdef __cplusplus
1060
+ }
1061
+ #endif