@ast-grep/lang-yaml 0.0.1 → 0.0.3

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/scanner.c CHANGED
@@ -49,6 +49,7 @@ typedef enum {
49
49
  R_SGL_PLN_BOL_BLK, BR_SGL_PLN_BOL_BLK, B_SGL_PLN_BOL_BLK, R_SGL_PLN_BOL_FLW, BR_SGL_PLN_BOL_FLW,
50
50
  R_SGL_PLN_INT_BLK, BR_SGL_PLN_INT_BLK, B_SGL_PLN_INT_BLK, R_SGL_PLN_INT_FLW, BR_SGL_PLN_INT_FLW,
51
51
  R_SGL_PLN_FLT_BLK, BR_SGL_PLN_FLT_BLK, B_SGL_PLN_FLT_BLK, R_SGL_PLN_FLT_FLW, BR_SGL_PLN_FLT_FLW,
52
+ R_SGL_PLN_TMS_BLK, BR_SGL_PLN_TMS_BLK, B_SGL_PLN_TMS_BLK, R_SGL_PLN_TMS_FLW, BR_SGL_PLN_TMS_FLW,
52
53
  R_SGL_PLN_STR_BLK, BR_SGL_PLN_STR_BLK, B_SGL_PLN_STR_BLK, R_SGL_PLN_STR_FLW, BR_SGL_PLN_STR_FLW,
53
54
 
54
55
  R_MTL_PLN_STR_BLK, BR_MTL_PLN_STR_BLK,
@@ -125,12 +126,22 @@ typedef enum {
125
126
  } \
126
127
  }
127
128
 
129
+ #if HAS_TIMESTAMP
128
130
  #define SGL_PLN_SYM(POS, CTX) \
129
- (scanner->rlt_sch == RS_NULL ? POS##_SGL_PLN_NUL_##CTX \
130
- : scanner->rlt_sch == RS_BOOL ? POS##_SGL_PLN_BOL_##CTX \
131
- : scanner->rlt_sch == RS_INT ? POS##_SGL_PLN_INT_##CTX \
132
- : scanner->rlt_sch == RS_FLOAT ? POS##_SGL_PLN_FLT_##CTX \
133
- : POS##_SGL_PLN_STR_##CTX)
131
+ (scanner->rlt_sch == RS_NULL ? POS##_SGL_PLN_NUL_##CTX \
132
+ : scanner->rlt_sch == RS_BOOL ? POS##_SGL_PLN_BOL_##CTX \
133
+ : scanner->rlt_sch == RS_INT ? POS##_SGL_PLN_INT_##CTX \
134
+ : scanner->rlt_sch == RS_FLOAT ? POS##_SGL_PLN_FLT_##CTX \
135
+ : scanner->rlt_sch == RS_TIMESTAMP ? POS##_SGL_PLN_TMS_##CTX \
136
+ : POS##_SGL_PLN_STR_##CTX)
137
+ #else
138
+ #define SGL_PLN_SYM(POS, CTX) \
139
+ (scanner->rlt_sch == RS_NULL ? POS##_SGL_PLN_NUL_##CTX \
140
+ : scanner->rlt_sch == RS_BOOL ? POS##_SGL_PLN_BOL_##CTX \
141
+ : scanner->rlt_sch == RS_INT ? POS##_SGL_PLN_INT_##CTX \
142
+ : scanner->rlt_sch == RS_FLOAT ? POS##_SGL_PLN_FLT_##CTX \
143
+ : POS##_SGL_PLN_STR_##CTX)
144
+ #endif
134
145
 
135
146
  typedef struct {
136
147
  int16_t row;
package/src/schema.core.c CHANGED
@@ -1,7 +1,11 @@
1
+ #include <stdint.h>
2
+
1
3
  #include <stdlib.h>
2
4
 
3
5
  #define SCH_STT_FRZ -1
4
6
 
7
+ #define HAS_TIMESTAMP 0
8
+
5
9
  typedef enum {
6
10
  RS_STR,
7
11
  RS_INT,
package/src/schema.json.c CHANGED
@@ -1,7 +1,11 @@
1
+ #include <stdint.h>
2
+
1
3
  #include <stdlib.h>
2
4
 
3
5
  #define SCH_STT_FRZ -1
4
6
 
7
+ #define HAS_TIMESTAMP 0
8
+
5
9
  typedef enum {
6
10
  RS_STR,
7
11
  RS_INT,
@@ -0,0 +1,517 @@
1
+ #include <stdint.h>
2
+
3
+ #include <stdlib.h>
4
+
5
+ #define SCH_STT_FRZ -1
6
+
7
+ #define HAS_TIMESTAMP 1
8
+
9
+ typedef enum {
10
+ RS_STR,
11
+ RS_FLOAT,
12
+ RS_INT,
13
+ RS_BOOL,
14
+ RS_NULL,
15
+ RS_TIMESTAMP,
16
+ } ResultSchema;
17
+
18
+ static int8_t adv_sch_stt(int8_t sch_stt, int32_t cur_chr, ResultSchema *rlt_sch) {
19
+ switch (sch_stt) {
20
+ case SCH_STT_FRZ:
21
+ break;
22
+ case 0:
23
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 89;}
24
+ if (cur_chr == '0') {*rlt_sch = RS_INT; return 75;}
25
+ if (cur_chr == 'F') {*rlt_sch = RS_STR; return 13;}
26
+ if (cur_chr == 'N') {*rlt_sch = RS_BOOL; return 70;}
27
+ if (cur_chr == 'O') {*rlt_sch = RS_STR; return 17;}
28
+ if (cur_chr == 'T') {*rlt_sch = RS_STR; return 24;}
29
+ if (cur_chr == 'Y') {*rlt_sch = RS_BOOL; return 69;}
30
+ if (cur_chr == 'f') {*rlt_sch = RS_STR; return 29;}
31
+ if (cur_chr == 'n') {*rlt_sch = RS_BOOL; return 72;}
32
+ if (cur_chr == 'o') {*rlt_sch = RS_STR; return 33;}
33
+ if (cur_chr == 't') {*rlt_sch = RS_STR; return 40;}
34
+ if (cur_chr == 'y') {*rlt_sch = RS_BOOL; return 71;}
35
+ if (cur_chr == '~') {*rlt_sch = RS_NULL; return 67;}
36
+ if (cur_chr == '+') {*rlt_sch = RS_STR; return 7;}
37
+ if (cur_chr == '-') {*rlt_sch = RS_STR; return 7;}
38
+ if (('1' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_INT; return 82;}
39
+ break;
40
+ case 1:
41
+ if (cur_chr == '-') {*rlt_sch = RS_STR; return 53;}
42
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
43
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 50;}
44
+ if (('0' <= cur_chr && cur_chr <= '9') ||
45
+ cur_chr == '_') {*rlt_sch = RS_STR; return 6;}
46
+ break;
47
+ case 2:
48
+ if (cur_chr == '-') {*rlt_sch = RS_STR; return 54;}
49
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 3;}
50
+ break;
51
+ case 3:
52
+ if (cur_chr == '-') {*rlt_sch = RS_STR; return 60;}
53
+ break;
54
+ case 4:
55
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
56
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 50;}
57
+ if (cur_chr == '_') {*rlt_sch = RS_STR; return 6;}
58
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 1;}
59
+ break;
60
+ case 5:
61
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
62
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 50;}
63
+ if (cur_chr == '_') {*rlt_sch = RS_STR; return 6;}
64
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 4;}
65
+ break;
66
+ case 6:
67
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
68
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 50;}
69
+ if (('0' <= cur_chr && cur_chr <= '9') ||
70
+ cur_chr == '_') {*rlt_sch = RS_STR; return 6;}
71
+ break;
72
+ case 7:
73
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 90;}
74
+ if (cur_chr == '0') {*rlt_sch = RS_INT; return 78;}
75
+ if (('1' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_INT; return 83;}
76
+ break;
77
+ case 8:
78
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 93;}
79
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 50;}
80
+ break;
81
+ case 9:
82
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 93;}
83
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 50;}
84
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 8;}
85
+ break;
86
+ case 10:
87
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 61;}
88
+ break;
89
+ case 11:
90
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 61;}
91
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 10;}
92
+ break;
93
+ case 12:
94
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 62;}
95
+ break;
96
+ case 13:
97
+ if (cur_chr == 'A') {*rlt_sch = RS_STR; return 20;}
98
+ if (cur_chr == 'a') {*rlt_sch = RS_STR; return 36;}
99
+ break;
100
+ case 14:
101
+ if (cur_chr == 'A') {*rlt_sch = RS_STR; return 22;}
102
+ if (cur_chr == 'a') {*rlt_sch = RS_STR; return 22;}
103
+ break;
104
+ case 15:
105
+ if (cur_chr == 'E') {*rlt_sch = RS_BOOL; return 68;}
106
+ break;
107
+ case 16:
108
+ if (cur_chr == 'F') {*rlt_sch = RS_BOOL; return 68;}
109
+ break;
110
+ case 17:
111
+ if (cur_chr == 'F') {*rlt_sch = RS_STR; return 16;}
112
+ if (cur_chr == 'f') {*rlt_sch = RS_STR; return 32;}
113
+ if (cur_chr == 'N' ||
114
+ cur_chr == 'n') {*rlt_sch = RS_BOOL; return 68;}
115
+ break;
116
+ case 18:
117
+ if (cur_chr == 'F') {*rlt_sch = RS_FLOAT; return 88;}
118
+ break;
119
+ case 19:
120
+ if (cur_chr == 'L') {*rlt_sch = RS_NULL; return 67;}
121
+ break;
122
+ case 20:
123
+ if (cur_chr == 'L') {*rlt_sch = RS_STR; return 26;}
124
+ break;
125
+ case 21:
126
+ if (cur_chr == 'L') {*rlt_sch = RS_STR; return 19;}
127
+ break;
128
+ case 22:
129
+ if (cur_chr == 'N') {*rlt_sch = RS_FLOAT; return 88;}
130
+ break;
131
+ case 23:
132
+ if (cur_chr == 'N') {*rlt_sch = RS_STR; return 18;}
133
+ if (cur_chr == 'n') {*rlt_sch = RS_STR; return 34;}
134
+ break;
135
+ case 24:
136
+ if (cur_chr == 'R') {*rlt_sch = RS_STR; return 27;}
137
+ if (cur_chr == 'r') {*rlt_sch = RS_STR; return 43;}
138
+ break;
139
+ case 25:
140
+ if (cur_chr == 'S') {*rlt_sch = RS_BOOL; return 68;}
141
+ break;
142
+ case 26:
143
+ if (cur_chr == 'S') {*rlt_sch = RS_STR; return 15;}
144
+ break;
145
+ case 27:
146
+ if (cur_chr == 'U') {*rlt_sch = RS_STR; return 15;}
147
+ break;
148
+ case 28:
149
+ if (cur_chr == 'Z') {*rlt_sch = RS_TIMESTAMP; return 94;}
150
+ if (cur_chr == '\t' ||
151
+ cur_chr == ' ') {*rlt_sch = RS_STR; return 28;}
152
+ break;
153
+ case 29:
154
+ if (cur_chr == 'a') {*rlt_sch = RS_STR; return 36;}
155
+ break;
156
+ case 30:
157
+ if (cur_chr == 'a') {*rlt_sch = RS_STR; return 38;}
158
+ break;
159
+ case 31:
160
+ if (cur_chr == 'e') {*rlt_sch = RS_BOOL; return 68;}
161
+ break;
162
+ case 32:
163
+ if (cur_chr == 'f') {*rlt_sch = RS_BOOL; return 68;}
164
+ break;
165
+ case 33:
166
+ if (cur_chr == 'f') {*rlt_sch = RS_STR; return 32;}
167
+ if (cur_chr == 'n') {*rlt_sch = RS_BOOL; return 68;}
168
+ break;
169
+ case 34:
170
+ if (cur_chr == 'f') {*rlt_sch = RS_FLOAT; return 88;}
171
+ break;
172
+ case 35:
173
+ if (cur_chr == 'l') {*rlt_sch = RS_NULL; return 67;}
174
+ break;
175
+ case 36:
176
+ if (cur_chr == 'l') {*rlt_sch = RS_STR; return 42;}
177
+ break;
178
+ case 37:
179
+ if (cur_chr == 'l') {*rlt_sch = RS_STR; return 35;}
180
+ break;
181
+ case 38:
182
+ if (cur_chr == 'n') {*rlt_sch = RS_FLOAT; return 88;}
183
+ break;
184
+ case 39:
185
+ if (cur_chr == 'n') {*rlt_sch = RS_STR; return 34;}
186
+ break;
187
+ case 40:
188
+ if (cur_chr == 'r') {*rlt_sch = RS_STR; return 43;}
189
+ break;
190
+ case 41:
191
+ if (cur_chr == 's') {*rlt_sch = RS_BOOL; return 68;}
192
+ break;
193
+ case 42:
194
+ if (cur_chr == 's') {*rlt_sch = RS_STR; return 31;}
195
+ break;
196
+ case 43:
197
+ if (cur_chr == 'u') {*rlt_sch = RS_STR; return 31;}
198
+ break;
199
+ case 44:
200
+ if (cur_chr == '\t' ||
201
+ cur_chr == ' ') {*rlt_sch = RS_STR; return 47;}
202
+ if (cur_chr == 'T' ||
203
+ cur_chr == 't') {*rlt_sch = RS_STR; return 55;}
204
+ break;
205
+ case 45:
206
+ if (cur_chr == '\t' ||
207
+ cur_chr == ' ') {*rlt_sch = RS_STR; return 47;}
208
+ if (cur_chr == 'T' ||
209
+ cur_chr == 't') {*rlt_sch = RS_STR; return 55;}
210
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 44;}
211
+ break;
212
+ case 46:
213
+ if (cur_chr == '\t' ||
214
+ cur_chr == ' ') {*rlt_sch = RS_STR; return 47;}
215
+ if (cur_chr == 'T' ||
216
+ cur_chr == 't') {*rlt_sch = RS_STR; return 55;}
217
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_TIMESTAMP; return 99;}
218
+ break;
219
+ case 47:
220
+ if (cur_chr == '\t' ||
221
+ cur_chr == ' ') {*rlt_sch = RS_STR; return 47;}
222
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 11;}
223
+ break;
224
+ case 48:
225
+ if (cur_chr == '+' ||
226
+ cur_chr == '-') {*rlt_sch = RS_STR; return 52;}
227
+ break;
228
+ case 49:
229
+ if (cur_chr == '0' ||
230
+ cur_chr == '1' ||
231
+ cur_chr == '_') {*rlt_sch = RS_INT; return 86;}
232
+ break;
233
+ case 50:
234
+ if (('6' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 8;}
235
+ if (('0' <= cur_chr && cur_chr <= '5')) {*rlt_sch = RS_STR; return 9;}
236
+ break;
237
+ case 51:
238
+ if (('6' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_INT; return 84;}
239
+ if (('0' <= cur_chr && cur_chr <= '5')) {*rlt_sch = RS_INT; return 85;}
240
+ break;
241
+ case 52:
242
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_FLOAT; return 92;}
243
+ break;
244
+ case 53:
245
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 2;}
246
+ break;
247
+ case 54:
248
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 45;}
249
+ break;
250
+ case 55:
251
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 11;}
252
+ break;
253
+ case 56:
254
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_TIMESTAMP; return 95;}
255
+ break;
256
+ case 57:
257
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_TIMESTAMP; return 94;}
258
+ break;
259
+ case 58:
260
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_TIMESTAMP; return 98;}
261
+ break;
262
+ case 59:
263
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_TIMESTAMP; return 97;}
264
+ break;
265
+ case 60:
266
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 46;}
267
+ break;
268
+ case 61:
269
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 64;}
270
+ break;
271
+ case 62:
272
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 56;}
273
+ break;
274
+ case 63:
275
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 57;}
276
+ break;
277
+ case 64:
278
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_STR; return 12;}
279
+ break;
280
+ case 65:
281
+ if (('0' <= cur_chr && cur_chr <= '9') ||
282
+ ('A' <= cur_chr && cur_chr <= 'F') ||
283
+ cur_chr == '_' ||
284
+ ('a' <= cur_chr && cur_chr <= 'f')) {*rlt_sch = RS_INT; return 87;}
285
+ break;
286
+ case 66:
287
+ abort();
288
+ break;
289
+ case 67:
290
+ *rlt_sch = RS_NULL;
291
+ break;
292
+ case 68:
293
+ *rlt_sch = RS_BOOL;
294
+ break;
295
+ case 69:
296
+ *rlt_sch = RS_BOOL;
297
+ if (cur_chr == 'E') {*rlt_sch = RS_STR; return 25;}
298
+ if (cur_chr == 'e') {*rlt_sch = RS_STR; return 41;}
299
+ break;
300
+ case 70:
301
+ *rlt_sch = RS_BOOL;
302
+ if (cur_chr == 'U') {*rlt_sch = RS_STR; return 21;}
303
+ if (cur_chr == 'u') {*rlt_sch = RS_STR; return 37;}
304
+ if (cur_chr == 'O' ||
305
+ cur_chr == 'o') {*rlt_sch = RS_BOOL; return 68;}
306
+ break;
307
+ case 71:
308
+ *rlt_sch = RS_BOOL;
309
+ if (cur_chr == 'e') {*rlt_sch = RS_STR; return 41;}
310
+ break;
311
+ case 72:
312
+ *rlt_sch = RS_BOOL;
313
+ if (cur_chr == 'o') {*rlt_sch = RS_BOOL; return 68;}
314
+ if (cur_chr == 'u') {*rlt_sch = RS_STR; return 37;}
315
+ break;
316
+ case 73:
317
+ *rlt_sch = RS_INT;
318
+ if (cur_chr == '-') {*rlt_sch = RS_STR; return 53;}
319
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
320
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 50;}
321
+ if (cur_chr == '8' ||
322
+ cur_chr == '9') {*rlt_sch = RS_STR; return 6;}
323
+ if (('0' <= cur_chr && cur_chr <= '7') ||
324
+ cur_chr == '_') {*rlt_sch = RS_INT; return 79;}
325
+ break;
326
+ case 74:
327
+ *rlt_sch = RS_INT;
328
+ if (cur_chr == '-') {*rlt_sch = RS_STR; return 53;}
329
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
330
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 51;}
331
+ if (('0' <= cur_chr && cur_chr <= '9') ||
332
+ cur_chr == '_') {*rlt_sch = RS_INT; return 83;}
333
+ break;
334
+ case 75:
335
+ *rlt_sch = RS_INT;
336
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
337
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 50;}
338
+ if (cur_chr == '_') {*rlt_sch = RS_INT; return 79;}
339
+ if (cur_chr == 'b') {*rlt_sch = RS_STR; return 49;}
340
+ if (cur_chr == 'x') {*rlt_sch = RS_STR; return 65;}
341
+ if (cur_chr == '8' ||
342
+ cur_chr == '9') {*rlt_sch = RS_STR; return 5;}
343
+ if (('0' <= cur_chr && cur_chr <= '7')) {*rlt_sch = RS_INT; return 77;}
344
+ break;
345
+ case 76:
346
+ *rlt_sch = RS_INT;
347
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
348
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 50;}
349
+ if (cur_chr == '_') {*rlt_sch = RS_INT; return 79;}
350
+ if (cur_chr == '8' ||
351
+ cur_chr == '9') {*rlt_sch = RS_STR; return 1;}
352
+ if (('0' <= cur_chr && cur_chr <= '7')) {*rlt_sch = RS_INT; return 73;}
353
+ break;
354
+ case 77:
355
+ *rlt_sch = RS_INT;
356
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
357
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 50;}
358
+ if (cur_chr == '_') {*rlt_sch = RS_INT; return 79;}
359
+ if (cur_chr == '8' ||
360
+ cur_chr == '9') {*rlt_sch = RS_STR; return 4;}
361
+ if (('0' <= cur_chr && cur_chr <= '7')) {*rlt_sch = RS_INT; return 76;}
362
+ break;
363
+ case 78:
364
+ *rlt_sch = RS_INT;
365
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
366
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 50;}
367
+ if (cur_chr == 'b') {*rlt_sch = RS_STR; return 49;}
368
+ if (cur_chr == 'x') {*rlt_sch = RS_STR; return 65;}
369
+ if (cur_chr == '8' ||
370
+ cur_chr == '9') {*rlt_sch = RS_STR; return 6;}
371
+ if (('0' <= cur_chr && cur_chr <= '7') ||
372
+ cur_chr == '_') {*rlt_sch = RS_INT; return 79;}
373
+ break;
374
+ case 79:
375
+ *rlt_sch = RS_INT;
376
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
377
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 50;}
378
+ if (cur_chr == '8' ||
379
+ cur_chr == '9') {*rlt_sch = RS_STR; return 6;}
380
+ if (('0' <= cur_chr && cur_chr <= '7') ||
381
+ cur_chr == '_') {*rlt_sch = RS_INT; return 79;}
382
+ break;
383
+ case 80:
384
+ *rlt_sch = RS_INT;
385
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
386
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 51;}
387
+ if (cur_chr == '_') {*rlt_sch = RS_INT; return 83;}
388
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_INT; return 74;}
389
+ break;
390
+ case 81:
391
+ *rlt_sch = RS_INT;
392
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
393
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 51;}
394
+ if (cur_chr == '_') {*rlt_sch = RS_INT; return 83;}
395
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_INT; return 80;}
396
+ break;
397
+ case 82:
398
+ *rlt_sch = RS_INT;
399
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
400
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 51;}
401
+ if (cur_chr == '_') {*rlt_sch = RS_INT; return 83;}
402
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_INT; return 81;}
403
+ break;
404
+ case 83:
405
+ *rlt_sch = RS_INT;
406
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 91;}
407
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 51;}
408
+ if (('0' <= cur_chr && cur_chr <= '9') ||
409
+ cur_chr == '_') {*rlt_sch = RS_INT; return 83;}
410
+ break;
411
+ case 84:
412
+ *rlt_sch = RS_INT;
413
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 93;}
414
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 51;}
415
+ break;
416
+ case 85:
417
+ *rlt_sch = RS_INT;
418
+ if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 93;}
419
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 51;}
420
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_INT; return 84;}
421
+ break;
422
+ case 86:
423
+ *rlt_sch = RS_INT;
424
+ if (cur_chr == '0' ||
425
+ cur_chr == '1' ||
426
+ cur_chr == '_') {*rlt_sch = RS_INT; return 86;}
427
+ break;
428
+ case 87:
429
+ *rlt_sch = RS_INT;
430
+ if (('0' <= cur_chr && cur_chr <= '9') ||
431
+ ('A' <= cur_chr && cur_chr <= 'F') ||
432
+ cur_chr == '_' ||
433
+ ('a' <= cur_chr && cur_chr <= 'f')) {*rlt_sch = RS_INT; return 87;}
434
+ break;
435
+ case 88:
436
+ *rlt_sch = RS_FLOAT;
437
+ break;
438
+ case 89:
439
+ *rlt_sch = RS_FLOAT;
440
+ if (cur_chr == 'I') {*rlt_sch = RS_STR; return 23;}
441
+ if (cur_chr == 'N') {*rlt_sch = RS_STR; return 14;}
442
+ if (cur_chr == 'i') {*rlt_sch = RS_STR; return 39;}
443
+ if (cur_chr == 'n') {*rlt_sch = RS_STR; return 30;}
444
+ if (cur_chr == 'E' ||
445
+ cur_chr == 'e') {*rlt_sch = RS_STR; return 48;}
446
+ if (cur_chr == '.' ||
447
+ ('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_FLOAT; return 91;}
448
+ break;
449
+ case 90:
450
+ *rlt_sch = RS_FLOAT;
451
+ if (cur_chr == 'I') {*rlt_sch = RS_STR; return 23;}
452
+ if (cur_chr == 'i') {*rlt_sch = RS_STR; return 39;}
453
+ if (cur_chr == 'E' ||
454
+ cur_chr == 'e') {*rlt_sch = RS_STR; return 48;}
455
+ if (cur_chr == '.' ||
456
+ ('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_FLOAT; return 91;}
457
+ break;
458
+ case 91:
459
+ *rlt_sch = RS_FLOAT;
460
+ if (cur_chr == 'E' ||
461
+ cur_chr == 'e') {*rlt_sch = RS_STR; return 48;}
462
+ if (cur_chr == '.' ||
463
+ ('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_FLOAT; return 91;}
464
+ break;
465
+ case 92:
466
+ *rlt_sch = RS_FLOAT;
467
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_FLOAT; return 92;}
468
+ break;
469
+ case 93:
470
+ *rlt_sch = RS_FLOAT;
471
+ if (('0' <= cur_chr && cur_chr <= '9') ||
472
+ cur_chr == '_') {*rlt_sch = RS_FLOAT; return 93;}
473
+ break;
474
+ case 94:
475
+ *rlt_sch = RS_TIMESTAMP;
476
+ break;
477
+ case 95:
478
+ *rlt_sch = RS_TIMESTAMP;
479
+ if (cur_chr == '.') {*rlt_sch = RS_STR; return 58;}
480
+ if (cur_chr == 'Z') {*rlt_sch = RS_TIMESTAMP; return 94;}
481
+ if (cur_chr == '\t' ||
482
+ cur_chr == ' ') {*rlt_sch = RS_STR; return 28;}
483
+ if (cur_chr == '+' ||
484
+ cur_chr == '-') {*rlt_sch = RS_STR; return 59;}
485
+ break;
486
+ case 96:
487
+ *rlt_sch = RS_TIMESTAMP;
488
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 63;}
489
+ break;
490
+ case 97:
491
+ *rlt_sch = RS_TIMESTAMP;
492
+ if (cur_chr == ':') {*rlt_sch = RS_STR; return 63;}
493
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_TIMESTAMP; return 96;}
494
+ break;
495
+ case 98:
496
+ *rlt_sch = RS_TIMESTAMP;
497
+ if (cur_chr == 'Z') {*rlt_sch = RS_TIMESTAMP; return 94;}
498
+ if (cur_chr == '\t' ||
499
+ cur_chr == ' ') {*rlt_sch = RS_STR; return 28;}
500
+ if (cur_chr == '+' ||
501
+ cur_chr == '-') {*rlt_sch = RS_STR; return 59;}
502
+ if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_TIMESTAMP; return 98;}
503
+ break;
504
+ case 99:
505
+ *rlt_sch = RS_TIMESTAMP;
506
+ if (cur_chr == '\t' ||
507
+ cur_chr == ' ') {*rlt_sch = RS_STR; return 47;}
508
+ if (cur_chr == 'T' ||
509
+ cur_chr == 't') {*rlt_sch = RS_STR; return 55;}
510
+ break;
511
+ default:
512
+ *rlt_sch = RS_STR;
513
+ return SCH_STT_FRZ;
514
+ }
515
+ if (cur_chr != '\r' && cur_chr != '\n' && cur_chr != ' ' && cur_chr != 0) *rlt_sch = RS_STR;
516
+ return SCH_STT_FRZ;
517
+ }
@@ -14,6 +14,7 @@ extern "C" {
14
14
  #include <string.h>
15
15
 
16
16
  #ifdef _MSC_VER
17
+ #pragma warning(push)
17
18
  #pragma warning(disable : 4101)
18
19
  #elif defined(__GNUC__) || defined(__clang__)
19
20
  #pragma GCC diagnostic push
@@ -278,7 +279,7 @@ static inline void _array__splice(Array *self, size_t element_size,
278
279
  #define _compare_int(a, b) ((int)*(a) - (int)(b))
279
280
 
280
281
  #ifdef _MSC_VER
281
- #pragma warning(default : 4101)
282
+ #pragma warning(pop)
282
283
  #elif defined(__GNUC__) || defined(__clang__)
283
284
  #pragma GCC diagnostic pop
284
285
  #endif
@@ -18,6 +18,11 @@ typedef uint16_t TSStateId;
18
18
  typedef uint16_t TSSymbol;
19
19
  typedef uint16_t TSFieldId;
20
20
  typedef struct TSLanguage TSLanguage;
21
+ typedef struct TSLanguageMetadata {
22
+ uint8_t major_version;
23
+ uint8_t minor_version;
24
+ uint8_t patch_version;
25
+ } TSLanguageMetadata;
21
26
  #endif
22
27
 
23
28
  typedef struct {
@@ -26,10 +31,11 @@ typedef struct {
26
31
  bool inherited;
27
32
  } TSFieldMapEntry;
28
33
 
34
+ // Used to index the field and supertype maps.
29
35
  typedef struct {
30
36
  uint16_t index;
31
37
  uint16_t length;
32
- } TSFieldMapSlice;
38
+ } TSMapSlice;
33
39
 
34
40
  typedef struct {
35
41
  bool visible;
@@ -79,6 +85,12 @@ typedef struct {
79
85
  uint16_t external_lex_state;
80
86
  } TSLexMode;
81
87
 
88
+ typedef struct {
89
+ uint16_t lex_state;
90
+ uint16_t external_lex_state;
91
+ uint16_t reserved_word_set_id;
92
+ } TSLexerMode;
93
+
82
94
  typedef union {
83
95
  TSParseAction action;
84
96
  struct {
@@ -93,7 +105,7 @@ typedef struct {
93
105
  } TSCharacterRange;
94
106
 
95
107
  struct TSLanguage {
96
- uint32_t version;
108
+ uint32_t abi_version;
97
109
  uint32_t symbol_count;
98
110
  uint32_t alias_count;
99
111
  uint32_t token_count;
@@ -109,13 +121,13 @@ struct TSLanguage {
109
121
  const TSParseActionEntry *parse_actions;
110
122
  const char * const *symbol_names;
111
123
  const char * const *field_names;
112
- const TSFieldMapSlice *field_map_slices;
124
+ const TSMapSlice *field_map_slices;
113
125
  const TSFieldMapEntry *field_map_entries;
114
126
  const TSSymbolMetadata *symbol_metadata;
115
127
  const TSSymbol *public_symbol_map;
116
128
  const uint16_t *alias_map;
117
129
  const TSSymbol *alias_sequences;
118
- const TSLexMode *lex_modes;
130
+ const TSLexerMode *lex_modes;
119
131
  bool (*lex_fn)(TSLexer *, TSStateId);
120
132
  bool (*keyword_lex_fn)(TSLexer *, TSStateId);
121
133
  TSSymbol keyword_capture_token;
@@ -129,15 +141,23 @@ struct TSLanguage {
129
141
  void (*deserialize)(void *, const char *, unsigned);
130
142
  } external_scanner;
131
143
  const TSStateId *primary_state_ids;
144
+ const char *name;
145
+ const TSSymbol *reserved_words;
146
+ uint16_t max_reserved_word_set_size;
147
+ uint32_t supertype_count;
148
+ const TSSymbol *supertype_symbols;
149
+ const TSMapSlice *supertype_map_slices;
150
+ const TSSymbol *supertype_map_entries;
151
+ TSLanguageMetadata metadata;
132
152
  };
133
153
 
134
- static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t lookahead) {
154
+ static inline bool set_contains(const TSCharacterRange *ranges, uint32_t len, int32_t lookahead) {
135
155
  uint32_t index = 0;
136
156
  uint32_t size = len - index;
137
157
  while (size > 1) {
138
158
  uint32_t half_size = size / 2;
139
159
  uint32_t mid_index = index + half_size;
140
- TSCharacterRange *range = &ranges[mid_index];
160
+ const TSCharacterRange *range = &ranges[mid_index];
141
161
  if (lookahead >= range->start && lookahead <= range->end) {
142
162
  return true;
143
163
  } else if (lookahead > range->end) {
@@ -145,7 +165,7 @@ static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t
145
165
  }
146
166
  size -= half_size;
147
167
  }
148
- TSCharacterRange *range = &ranges[index];
168
+ const TSCharacterRange *range = &ranges[index];
149
169
  return (lookahead >= range->start && lookahead <= range->end);
150
170
  }
151
171