Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Kitware
GitHub Repository: Kitware/CMake
Path: blob/master/Utilities/cmllpkgc/llpkgc__internal.c
3150 views
1
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2
file LICENSE.rst or https://cmake.org/licensing for details. */
3
4
/* This code was generated by llpkgc, do not edit it by hand
5
See: https://gitlab.kitware.com/utils/llpkgc */
6
7
8
#include <stdlib.h>
9
#include <stdint.h>
10
#include <string.h>
11
12
#ifdef __SSE4_2__
13
#ifdef _MSC_VER
14
#include <nmmintrin.h>
15
#else /* !_MSC_VER */
16
#include <x86intrin.h>
17
#endif /* _MSC_VER */
18
#endif /* __SSE4_2__ */
19
20
#ifdef _MSC_VER
21
#define ALIGN(n) _declspec(align(n))
22
#else /* !_MSC_VER */
23
#define ALIGN(n) __attribute__((aligned(n)))
24
#endif /* _MSC_VER */
25
26
#include "llpkgc__internal.h"
27
28
typedef int (*llpkgc__internal__span_cb)(
29
llpkgc__internal_t*, const char*, const char*);
30
31
enum llparse_state_e {
32
s_error,
33
s_n_llpkgc__internal__n_comment,
34
s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete,
35
s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_1,
36
s_n_llpkgc__internal__n_literal_skip_dollar,
37
s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_2,
38
s_n_llpkgc__internal__n_maybe_CR,
39
s_n_llpkgc__internal__n_skip_escaped_LF,
40
s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_3,
41
s_n_llpkgc__internal__n_maybe_LF,
42
s_n_llpkgc__internal__n_skip_escaped_CR,
43
s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_4,
44
s_n_llpkgc__internal__n_literal_skip_hash,
45
s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span_1,
46
s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_5,
47
s_n_llpkgc__internal__n_maybe_escaped,
48
s_n_llpkgc__internal__n_literal,
49
s_n_llpkgc__internal__n_variable_skip_dollar,
50
s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span,
51
s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span_2,
52
s_n_llpkgc__internal__n_variable_close,
53
s_n_llpkgc__internal__n_variable_skip_curly,
54
s_n_llpkgc__internal__n_invoke_llpkgc__valvar_complete,
55
s_n_llpkgc__internal__n_variable,
56
s_n_llpkgc__internal__n_span_start_llpkgc__valvar_span,
57
s_n_llpkgc__internal__n_maybe_variable,
58
s_n_llpkgc__internal__n_expect_value,
59
s_n_llpkgc__internal__n_expect_sep,
60
s_n_llpkgc__internal__n_key,
61
s_n_llpkgc__internal__n_span_start_llpkgc__key_span,
62
s_n_llpkgc__internal__n_line_start,
63
};
64
typedef enum llparse_state_e llparse_state_t;
65
66
int llpkgc__key_span(
67
llpkgc__internal_t* s, const unsigned char* p,
68
const unsigned char* endp);
69
70
int llpkgc__vallit_span(
71
llpkgc__internal_t* s, const unsigned char* p,
72
const unsigned char* endp);
73
74
int llpkgc__valvar_span(
75
llpkgc__internal_t* s, const unsigned char* p,
76
const unsigned char* endp);
77
78
int llpkgc__line_begin(
79
llpkgc__internal_t* s, const unsigned char* p,
80
const unsigned char* endp);
81
82
int llpkgc__keyword_complete(
83
llpkgc__internal_t* s, const unsigned char* p,
84
const unsigned char* endp);
85
86
int llpkgc__value_complete(
87
llpkgc__internal_t* s, const unsigned char* p,
88
const unsigned char* endp);
89
90
int llpkgc__vallit_complete(
91
llpkgc__internal_t* s, const unsigned char* p,
92
const unsigned char* endp);
93
94
int llpkgc__internal__c_update_escaped_(
95
llpkgc__internal_t* state,
96
const unsigned char* p,
97
const unsigned char* endp) {
98
state->escaped_ = 1;
99
return 0;
100
}
101
102
int llpkgc__valvar_complete(
103
llpkgc__internal_t* s, const unsigned char* p,
104
const unsigned char* endp);
105
106
int llpkgc__variable_complete(
107
llpkgc__internal_t* s, const unsigned char* p,
108
const unsigned char* endp);
109
110
int llpkgc__internal_init(llpkgc__internal_t* state) {
111
memset(state, 0, sizeof(*state));
112
state->_current = (void*) (intptr_t) s_n_llpkgc__internal__n_line_start;
113
return 0;
114
}
115
116
static llparse_state_t llpkgc__internal__run(
117
llpkgc__internal_t* state,
118
const unsigned char* p,
119
const unsigned char* endp) {
120
int match;
121
switch ((llparse_state_t) (intptr_t) state->_current) {
122
case s_n_llpkgc__internal__n_comment:
123
s_n_llpkgc__internal__n_comment: {
124
if (p == endp) {
125
return s_n_llpkgc__internal__n_comment;
126
}
127
switch (*p) {
128
case 10: {
129
p++;
130
goto s_n_llpkgc__internal__n_line_start;
131
}
132
case 13: {
133
p++;
134
goto s_n_llpkgc__internal__n_line_start;
135
}
136
default: {
137
p++;
138
goto s_n_llpkgc__internal__n_comment;
139
}
140
}
141
/* UNREACHABLE */;
142
abort();
143
}
144
case s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete:
145
s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete: {
146
switch (llpkgc__vallit_complete(state, p, endp)) {
147
case 0:
148
goto s_n_llpkgc__internal__n_invoke_llpkgc__value_complete_1;
149
default:
150
goto s_n_llpkgc__internal__n_error_3;
151
}
152
/* UNREACHABLE */;
153
abort();
154
}
155
case s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_1:
156
s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_1: {
157
switch (llpkgc__vallit_complete(state, p, endp)) {
158
case 0:
159
goto s_n_llpkgc__internal__n_invoke_llpkgc__value_complete_2;
160
default:
161
goto s_n_llpkgc__internal__n_error_5;
162
}
163
/* UNREACHABLE */;
164
abort();
165
}
166
case s_n_llpkgc__internal__n_literal_skip_dollar:
167
s_n_llpkgc__internal__n_literal_skip_dollar: {
168
if (p == endp) {
169
return s_n_llpkgc__internal__n_literal_skip_dollar;
170
}
171
p++;
172
goto s_n_llpkgc__internal__n_maybe_variable;
173
/* UNREACHABLE */;
174
abort();
175
}
176
case s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_2:
177
s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_2: {
178
switch (llpkgc__vallit_complete(state, p, endp)) {
179
case 0:
180
goto s_n_llpkgc__internal__n_literal_skip_dollar;
181
default:
182
goto s_n_llpkgc__internal__n_error_7;
183
}
184
/* UNREACHABLE */;
185
abort();
186
}
187
case s_n_llpkgc__internal__n_maybe_CR:
188
s_n_llpkgc__internal__n_maybe_CR: {
189
if (p == endp) {
190
return s_n_llpkgc__internal__n_maybe_CR;
191
}
192
switch (*p) {
193
case 13: {
194
p++;
195
goto s_n_llpkgc__internal__n_expect_value;
196
}
197
default: {
198
goto s_n_llpkgc__internal__n_expect_value;
199
}
200
}
201
/* UNREACHABLE */;
202
abort();
203
}
204
case s_n_llpkgc__internal__n_skip_escaped_LF:
205
s_n_llpkgc__internal__n_skip_escaped_LF: {
206
if (p == endp) {
207
return s_n_llpkgc__internal__n_skip_escaped_LF;
208
}
209
p++;
210
goto s_n_llpkgc__internal__n_maybe_CR;
211
/* UNREACHABLE */;
212
abort();
213
}
214
case s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_3:
215
s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_3: {
216
switch (llpkgc__vallit_complete(state, p, endp)) {
217
case 0:
218
goto s_n_llpkgc__internal__n_skip_escaped_LF;
219
default:
220
goto s_n_llpkgc__internal__n_error_8;
221
}
222
/* UNREACHABLE */;
223
abort();
224
}
225
case s_n_llpkgc__internal__n_maybe_LF:
226
s_n_llpkgc__internal__n_maybe_LF: {
227
if (p == endp) {
228
return s_n_llpkgc__internal__n_maybe_LF;
229
}
230
switch (*p) {
231
case 10: {
232
p++;
233
goto s_n_llpkgc__internal__n_expect_value;
234
}
235
default: {
236
goto s_n_llpkgc__internal__n_expect_value;
237
}
238
}
239
/* UNREACHABLE */;
240
abort();
241
}
242
case s_n_llpkgc__internal__n_skip_escaped_CR:
243
s_n_llpkgc__internal__n_skip_escaped_CR: {
244
if (p == endp) {
245
return s_n_llpkgc__internal__n_skip_escaped_CR;
246
}
247
p++;
248
goto s_n_llpkgc__internal__n_maybe_LF;
249
/* UNREACHABLE */;
250
abort();
251
}
252
case s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_4:
253
s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_4: {
254
switch (llpkgc__vallit_complete(state, p, endp)) {
255
case 0:
256
goto s_n_llpkgc__internal__n_skip_escaped_CR;
257
default:
258
goto s_n_llpkgc__internal__n_error_9;
259
}
260
/* UNREACHABLE */;
261
abort();
262
}
263
case s_n_llpkgc__internal__n_literal_skip_hash:
264
s_n_llpkgc__internal__n_literal_skip_hash: {
265
if (p == endp) {
266
return s_n_llpkgc__internal__n_literal_skip_hash;
267
}
268
p++;
269
goto s_n_llpkgc__internal__n_literal;
270
/* UNREACHABLE */;
271
abort();
272
}
273
case s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span_1:
274
s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span_1: {
275
if (p == endp) {
276
return s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span_1;
277
}
278
state->_span_pos0 = (void*) p;
279
state->_span_cb0 = llpkgc__vallit_span;
280
goto s_n_llpkgc__internal__n_literal_skip_hash;
281
/* UNREACHABLE */;
282
abort();
283
}
284
case s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_5:
285
s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_5: {
286
switch (llpkgc__vallit_complete(state, p, endp)) {
287
case 0:
288
goto s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span_1;
289
default:
290
goto s_n_llpkgc__internal__n_error_10;
291
}
292
/* UNREACHABLE */;
293
abort();
294
}
295
case s_n_llpkgc__internal__n_maybe_escaped:
296
s_n_llpkgc__internal__n_maybe_escaped: {
297
if (p == endp) {
298
return s_n_llpkgc__internal__n_maybe_escaped;
299
}
300
switch (*p) {
301
case 10: {
302
goto s_n_llpkgc__internal__n_invoke_update_escaped_;
303
}
304
case 13: {
305
goto s_n_llpkgc__internal__n_invoke_update_escaped__1;
306
}
307
case '#': {
308
goto s_n_llpkgc__internal__n_invoke_update_escaped__2;
309
}
310
default: {
311
goto s_n_llpkgc__internal__n_literal;
312
}
313
}
314
/* UNREACHABLE */;
315
abort();
316
}
317
case s_n_llpkgc__internal__n_literal:
318
s_n_llpkgc__internal__n_literal: {
319
if (p == endp) {
320
return s_n_llpkgc__internal__n_literal;
321
}
322
switch (*p) {
323
case 10: {
324
goto s_n_llpkgc__internal__n_span_end_llpkgc__vallit_span;
325
}
326
case 13: {
327
goto s_n_llpkgc__internal__n_span_end_llpkgc__vallit_span;
328
}
329
case '#': {
330
goto s_n_llpkgc__internal__n_span_end_llpkgc__vallit_span_1;
331
}
332
case '$': {
333
goto s_n_llpkgc__internal__n_span_end_llpkgc__vallit_span_2;
334
}
335
case 92: {
336
p++;
337
goto s_n_llpkgc__internal__n_maybe_escaped;
338
}
339
default: {
340
p++;
341
goto s_n_llpkgc__internal__n_literal;
342
}
343
}
344
/* UNREACHABLE */;
345
abort();
346
}
347
case s_n_llpkgc__internal__n_variable_skip_dollar:
348
s_n_llpkgc__internal__n_variable_skip_dollar: {
349
if (p == endp) {
350
return s_n_llpkgc__internal__n_variable_skip_dollar;
351
}
352
p++;
353
goto s_n_llpkgc__internal__n_literal;
354
/* UNREACHABLE */;
355
abort();
356
}
357
case s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span:
358
s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span: {
359
if (p == endp) {
360
return s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span;
361
}
362
state->_span_pos0 = (void*) p;
363
state->_span_cb0 = llpkgc__vallit_span;
364
goto s_n_llpkgc__internal__n_variable_skip_dollar;
365
/* UNREACHABLE */;
366
abort();
367
}
368
case s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span_2:
369
s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span_2: {
370
if (p == endp) {
371
return s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span_2;
372
}
373
state->_span_pos0 = (void*) p;
374
state->_span_cb0 = llpkgc__vallit_span;
375
goto s_n_llpkgc__internal__n_literal;
376
/* UNREACHABLE */;
377
abort();
378
}
379
case s_n_llpkgc__internal__n_variable_close:
380
s_n_llpkgc__internal__n_variable_close: {
381
if (p == endp) {
382
return s_n_llpkgc__internal__n_variable_close;
383
}
384
switch (*p) {
385
case 10: {
386
goto s_n_llpkgc__internal__n_invoke_llpkgc__value_complete;
387
}
388
case 13: {
389
goto s_n_llpkgc__internal__n_invoke_llpkgc__value_complete;
390
}
391
case '#': {
392
goto s_n_llpkgc__internal__n_invoke_llpkgc__value_complete;
393
}
394
case '$': {
395
p++;
396
goto s_n_llpkgc__internal__n_maybe_variable;
397
}
398
default: {
399
goto s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span_2;
400
}
401
}
402
/* UNREACHABLE */;
403
abort();
404
}
405
case s_n_llpkgc__internal__n_variable_skip_curly:
406
s_n_llpkgc__internal__n_variable_skip_curly: {
407
if (p == endp) {
408
return s_n_llpkgc__internal__n_variable_skip_curly;
409
}
410
p++;
411
goto s_n_llpkgc__internal__n_variable_close;
412
/* UNREACHABLE */;
413
abort();
414
}
415
case s_n_llpkgc__internal__n_invoke_llpkgc__valvar_complete:
416
s_n_llpkgc__internal__n_invoke_llpkgc__valvar_complete: {
417
switch (llpkgc__valvar_complete(state, p, endp)) {
418
case 0:
419
goto s_n_llpkgc__internal__n_variable_skip_curly;
420
default:
421
goto s_n_llpkgc__internal__n_error_11;
422
}
423
/* UNREACHABLE */;
424
abort();
425
}
426
case s_n_llpkgc__internal__n_variable:
427
s_n_llpkgc__internal__n_variable: {
428
static uint8_t lookup_table[] = {
429
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
430
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
431
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
432
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
433
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
434
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
435
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
436
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0,
437
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
438
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
439
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
440
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
441
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
442
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
443
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
444
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
445
};
446
if (p == endp) {
447
return s_n_llpkgc__internal__n_variable;
448
}
449
switch (lookup_table[(uint8_t) *p]) {
450
case 1: {
451
p++;
452
goto s_n_llpkgc__internal__n_variable;
453
}
454
case 2: {
455
goto s_n_llpkgc__internal__n_span_end_llpkgc__valvar_span;
456
}
457
default: {
458
goto s_n_llpkgc__internal__n_error_12;
459
}
460
}
461
/* UNREACHABLE */;
462
abort();
463
}
464
case s_n_llpkgc__internal__n_span_start_llpkgc__valvar_span:
465
s_n_llpkgc__internal__n_span_start_llpkgc__valvar_span: {
466
if (p == endp) {
467
return s_n_llpkgc__internal__n_span_start_llpkgc__valvar_span;
468
}
469
state->_span_pos0 = (void*) p;
470
state->_span_cb0 = llpkgc__valvar_span;
471
goto s_n_llpkgc__internal__n_variable;
472
/* UNREACHABLE */;
473
abort();
474
}
475
case s_n_llpkgc__internal__n_maybe_variable:
476
s_n_llpkgc__internal__n_maybe_variable: {
477
if (p == endp) {
478
return s_n_llpkgc__internal__n_maybe_variable;
479
}
480
switch (*p) {
481
case '$': {
482
goto s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span;
483
}
484
case '{': {
485
p++;
486
goto s_n_llpkgc__internal__n_span_start_llpkgc__valvar_span;
487
}
488
default: {
489
goto s_n_llpkgc__internal__n_error_13;
490
}
491
}
492
/* UNREACHABLE */;
493
abort();
494
}
495
case s_n_llpkgc__internal__n_expect_value:
496
s_n_llpkgc__internal__n_expect_value: {
497
if (p == endp) {
498
return s_n_llpkgc__internal__n_expect_value;
499
}
500
switch (*p) {
501
case 9: {
502
p++;
503
goto s_n_llpkgc__internal__n_expect_value;
504
}
505
case 10: {
506
goto s_n_llpkgc__internal__n_invoke_llpkgc__value_complete;
507
}
508
case 13: {
509
goto s_n_llpkgc__internal__n_invoke_llpkgc__value_complete;
510
}
511
case ' ': {
512
p++;
513
goto s_n_llpkgc__internal__n_expect_value;
514
}
515
case '#': {
516
goto s_n_llpkgc__internal__n_invoke_llpkgc__value_complete;
517
}
518
case '$': {
519
p++;
520
goto s_n_llpkgc__internal__n_maybe_variable;
521
}
522
default: {
523
goto s_n_llpkgc__internal__n_span_start_llpkgc__vallit_span_2;
524
}
525
}
526
/* UNREACHABLE */;
527
abort();
528
}
529
case s_n_llpkgc__internal__n_expect_sep:
530
s_n_llpkgc__internal__n_expect_sep: {
531
if (p == endp) {
532
return s_n_llpkgc__internal__n_expect_sep;
533
}
534
switch (*p) {
535
case 9: {
536
p++;
537
goto s_n_llpkgc__internal__n_expect_sep;
538
}
539
case ' ': {
540
p++;
541
goto s_n_llpkgc__internal__n_expect_sep;
542
}
543
case ':': {
544
p++;
545
goto s_n_llpkgc__internal__n_invoke_llpkgc__keyword_complete;
546
}
547
case '=': {
548
p++;
549
goto s_n_llpkgc__internal__n_invoke_llpkgc__variable_complete;
550
}
551
default: {
552
goto s_n_llpkgc__internal__n_error_15;
553
}
554
}
555
/* UNREACHABLE */;
556
abort();
557
}
558
case s_n_llpkgc__internal__n_key:
559
s_n_llpkgc__internal__n_key: {
560
static uint8_t lookup_table[] = {
561
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
562
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
563
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,
564
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 0, 1, 0, 0,
565
0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
566
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2,
567
0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
568
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0,
569
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
570
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
571
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
572
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
573
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
574
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
575
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
576
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
577
};
578
if (p == endp) {
579
return s_n_llpkgc__internal__n_key;
580
}
581
switch (lookup_table[(uint8_t) *p]) {
582
case 1: {
583
goto s_n_llpkgc__internal__n_span_end_llpkgc__key_span;
584
}
585
case 2: {
586
p++;
587
goto s_n_llpkgc__internal__n_key;
588
}
589
default: {
590
goto s_n_llpkgc__internal__n_error_16;
591
}
592
}
593
/* UNREACHABLE */;
594
abort();
595
}
596
case s_n_llpkgc__internal__n_span_start_llpkgc__key_span:
597
s_n_llpkgc__internal__n_span_start_llpkgc__key_span: {
598
if (p == endp) {
599
return s_n_llpkgc__internal__n_span_start_llpkgc__key_span;
600
}
601
state->_span_pos0 = (void*) p;
602
state->_span_cb0 = llpkgc__key_span;
603
goto s_n_llpkgc__internal__n_key;
604
/* UNREACHABLE */;
605
abort();
606
}
607
case s_n_llpkgc__internal__n_line_start:
608
s_n_llpkgc__internal__n_line_start: {
609
static uint8_t lookup_table[] = {
610
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
611
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
612
1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
613
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0,
614
0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
615
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3,
616
0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
617
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0,
618
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
619
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
620
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
621
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
622
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
623
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
624
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
625
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
626
};
627
if (p == endp) {
628
return s_n_llpkgc__internal__n_line_start;
629
}
630
switch (lookup_table[(uint8_t) *p]) {
631
case 1: {
632
p++;
633
goto s_n_llpkgc__internal__n_line_start;
634
}
635
case 2: {
636
p++;
637
goto s_n_llpkgc__internal__n_comment;
638
}
639
case 3: {
640
goto s_n_llpkgc__internal__n_invoke_llpkgc__line_begin;
641
}
642
default: {
643
goto s_n_llpkgc__internal__n_error_17;
644
}
645
}
646
/* UNREACHABLE */;
647
abort();
648
}
649
default:
650
/* UNREACHABLE */
651
abort();
652
}
653
s_n_llpkgc__internal__n_error_2: {
654
state->error = 0xb;
655
state->reason = "Value complete error";
656
state->error_pos = (const char*) p;
657
state->_current = (void*) (intptr_t) s_error;
658
return s_error;
659
/* UNREACHABLE */;
660
abort();
661
}
662
s_n_llpkgc__internal__n_invoke_llpkgc__value_complete: {
663
switch (llpkgc__value_complete(state, p, endp)) {
664
case 0:
665
goto s_n_llpkgc__internal__n_line_start;
666
default:
667
goto s_n_llpkgc__internal__n_error_2;
668
}
669
/* UNREACHABLE */;
670
abort();
671
}
672
s_n_llpkgc__internal__n_error_4: {
673
state->error = 0xb;
674
state->reason = "Value complete error";
675
state->error_pos = (const char*) p;
676
state->_current = (void*) (intptr_t) s_error;
677
return s_error;
678
/* UNREACHABLE */;
679
abort();
680
}
681
s_n_llpkgc__internal__n_invoke_llpkgc__value_complete_1: {
682
switch (llpkgc__value_complete(state, p, endp)) {
683
case 0:
684
goto s_n_llpkgc__internal__n_line_start;
685
default:
686
goto s_n_llpkgc__internal__n_error_4;
687
}
688
/* UNREACHABLE */;
689
abort();
690
}
691
s_n_llpkgc__internal__n_error_3: {
692
state->error = 0xa;
693
state->reason = "Literal complete error";
694
state->error_pos = (const char*) p;
695
state->_current = (void*) (intptr_t) s_error;
696
return s_error;
697
/* UNREACHABLE */;
698
abort();
699
}
700
s_n_llpkgc__internal__n_span_end_llpkgc__vallit_span: {
701
const unsigned char* start;
702
int err;
703
704
start = state->_span_pos0;
705
state->_span_pos0 = NULL;
706
err = llpkgc__vallit_span(state, start, p);
707
if (err != 0) {
708
state->error = err;
709
state->error_pos = (const char*) p;
710
state->_current = (void*) (intptr_t) s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete;
711
return s_error;
712
}
713
goto s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete;
714
/* UNREACHABLE */;
715
abort();
716
}
717
s_n_llpkgc__internal__n_error_6: {
718
state->error = 0xb;
719
state->reason = "Value complete error";
720
state->error_pos = (const char*) p;
721
state->_current = (void*) (intptr_t) s_error;
722
return s_error;
723
/* UNREACHABLE */;
724
abort();
725
}
726
s_n_llpkgc__internal__n_invoke_llpkgc__value_complete_2: {
727
switch (llpkgc__value_complete(state, p, endp)) {
728
case 0:
729
goto s_n_llpkgc__internal__n_comment;
730
default:
731
goto s_n_llpkgc__internal__n_error_6;
732
}
733
/* UNREACHABLE */;
734
abort();
735
}
736
s_n_llpkgc__internal__n_error_5: {
737
state->error = 0xa;
738
state->reason = "Literal complete error";
739
state->error_pos = (const char*) p;
740
state->_current = (void*) (intptr_t) s_error;
741
return s_error;
742
/* UNREACHABLE */;
743
abort();
744
}
745
s_n_llpkgc__internal__n_span_end_llpkgc__vallit_span_1: {
746
const unsigned char* start;
747
int err;
748
749
start = state->_span_pos0;
750
state->_span_pos0 = NULL;
751
err = llpkgc__vallit_span(state, start, p);
752
if (err != 0) {
753
state->error = err;
754
state->error_pos = (const char*) p;
755
state->_current = (void*) (intptr_t) s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_1;
756
return s_error;
757
}
758
goto s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_1;
759
/* UNREACHABLE */;
760
abort();
761
}
762
s_n_llpkgc__internal__n_error_7: {
763
state->error = 0xa;
764
state->reason = "Literal complete error";
765
state->error_pos = (const char*) p;
766
state->_current = (void*) (intptr_t) s_error;
767
return s_error;
768
/* UNREACHABLE */;
769
abort();
770
}
771
s_n_llpkgc__internal__n_span_end_llpkgc__vallit_span_2: {
772
const unsigned char* start;
773
int err;
774
775
start = state->_span_pos0;
776
state->_span_pos0 = NULL;
777
err = llpkgc__vallit_span(state, start, p);
778
if (err != 0) {
779
state->error = err;
780
state->error_pos = (const char*) p;
781
state->_current = (void*) (intptr_t) s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_2;
782
return s_error;
783
}
784
goto s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_2;
785
/* UNREACHABLE */;
786
abort();
787
}
788
s_n_llpkgc__internal__n_error_8: {
789
state->error = 0xa;
790
state->reason = "Literal complete error";
791
state->error_pos = (const char*) p;
792
state->_current = (void*) (intptr_t) s_error;
793
return s_error;
794
/* UNREACHABLE */;
795
abort();
796
}
797
s_n_llpkgc__internal__n_span_end_llpkgc__vallit_span_3: {
798
const unsigned char* start;
799
int err;
800
801
start = state->_span_pos0;
802
state->_span_pos0 = NULL;
803
err = llpkgc__vallit_span(state, start, p);
804
if (err != 0) {
805
state->error = err;
806
state->error_pos = (const char*) p;
807
state->_current = (void*) (intptr_t) s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_3;
808
return s_error;
809
}
810
goto s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_3;
811
/* UNREACHABLE */;
812
abort();
813
}
814
s_n_llpkgc__internal__n_invoke_update_escaped_: {
815
switch (llpkgc__internal__c_update_escaped_(state, p, endp)) {
816
default:
817
goto s_n_llpkgc__internal__n_span_end_llpkgc__vallit_span_3;
818
}
819
/* UNREACHABLE */;
820
abort();
821
}
822
s_n_llpkgc__internal__n_error_9: {
823
state->error = 0xa;
824
state->reason = "Literal complete error";
825
state->error_pos = (const char*) p;
826
state->_current = (void*) (intptr_t) s_error;
827
return s_error;
828
/* UNREACHABLE */;
829
abort();
830
}
831
s_n_llpkgc__internal__n_span_end_llpkgc__vallit_span_4: {
832
const unsigned char* start;
833
int err;
834
835
start = state->_span_pos0;
836
state->_span_pos0 = NULL;
837
err = llpkgc__vallit_span(state, start, p);
838
if (err != 0) {
839
state->error = err;
840
state->error_pos = (const char*) p;
841
state->_current = (void*) (intptr_t) s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_4;
842
return s_error;
843
}
844
goto s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_4;
845
/* UNREACHABLE */;
846
abort();
847
}
848
s_n_llpkgc__internal__n_invoke_update_escaped__1: {
849
switch (llpkgc__internal__c_update_escaped_(state, p, endp)) {
850
default:
851
goto s_n_llpkgc__internal__n_span_end_llpkgc__vallit_span_4;
852
}
853
/* UNREACHABLE */;
854
abort();
855
}
856
s_n_llpkgc__internal__n_error_10: {
857
state->error = 0xa;
858
state->reason = "Literal complete error";
859
state->error_pos = (const char*) p;
860
state->_current = (void*) (intptr_t) s_error;
861
return s_error;
862
/* UNREACHABLE */;
863
abort();
864
}
865
s_n_llpkgc__internal__n_span_end_llpkgc__vallit_span_5: {
866
const unsigned char* start;
867
int err;
868
869
start = state->_span_pos0;
870
state->_span_pos0 = NULL;
871
err = llpkgc__vallit_span(state, start, p);
872
if (err != 0) {
873
state->error = err;
874
state->error_pos = (const char*) p;
875
state->_current = (void*) (intptr_t) s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_5;
876
return s_error;
877
}
878
goto s_n_llpkgc__internal__n_invoke_llpkgc__vallit_complete_5;
879
/* UNREACHABLE */;
880
abort();
881
}
882
s_n_llpkgc__internal__n_invoke_update_escaped__2: {
883
switch (llpkgc__internal__c_update_escaped_(state, p, endp)) {
884
default:
885
goto s_n_llpkgc__internal__n_span_end_llpkgc__vallit_span_5;
886
}
887
/* UNREACHABLE */;
888
abort();
889
}
890
s_n_llpkgc__internal__n_error_11: {
891
state->error = 0xc;
892
state->reason = "Variable complete error";
893
state->error_pos = (const char*) p;
894
state->_current = (void*) (intptr_t) s_error;
895
return s_error;
896
/* UNREACHABLE */;
897
abort();
898
}
899
s_n_llpkgc__internal__n_span_end_llpkgc__valvar_span: {
900
const unsigned char* start;
901
int err;
902
903
start = state->_span_pos0;
904
state->_span_pos0 = NULL;
905
err = llpkgc__valvar_span(state, start, p);
906
if (err != 0) {
907
state->error = err;
908
state->error_pos = (const char*) p;
909
state->_current = (void*) (intptr_t) s_n_llpkgc__internal__n_invoke_llpkgc__valvar_complete;
910
return s_error;
911
}
912
goto s_n_llpkgc__internal__n_invoke_llpkgc__valvar_complete;
913
/* UNREACHABLE */;
914
abort();
915
}
916
s_n_llpkgc__internal__n_error_12: {
917
state->error = 0xd;
918
state->reason = "Invalid variable character";
919
state->error_pos = (const char*) p;
920
state->_current = (void*) (intptr_t) s_error;
921
return s_error;
922
/* UNREACHABLE */;
923
abort();
924
}
925
s_n_llpkgc__internal__n_error_13: {
926
state->error = 0x9;
927
state->reason = "Unexpected `$`";
928
state->error_pos = (const char*) p;
929
state->_current = (void*) (intptr_t) s_error;
930
return s_error;
931
/* UNREACHABLE */;
932
abort();
933
}
934
s_n_llpkgc__internal__n_error_1: {
935
state->error = 0x5;
936
state->reason = "Keyword complete error";
937
state->error_pos = (const char*) p;
938
state->_current = (void*) (intptr_t) s_error;
939
return s_error;
940
/* UNREACHABLE */;
941
abort();
942
}
943
s_n_llpkgc__internal__n_invoke_llpkgc__keyword_complete: {
944
switch (llpkgc__keyword_complete(state, p, endp)) {
945
case 0:
946
goto s_n_llpkgc__internal__n_expect_value;
947
default:
948
goto s_n_llpkgc__internal__n_error_1;
949
}
950
/* UNREACHABLE */;
951
abort();
952
}
953
s_n_llpkgc__internal__n_error_14: {
954
state->error = 0x6;
955
state->reason = "Variable complete error";
956
state->error_pos = (const char*) p;
957
state->_current = (void*) (intptr_t) s_error;
958
return s_error;
959
/* UNREACHABLE */;
960
abort();
961
}
962
s_n_llpkgc__internal__n_invoke_llpkgc__variable_complete: {
963
switch (llpkgc__variable_complete(state, p, endp)) {
964
case 0:
965
goto s_n_llpkgc__internal__n_expect_value;
966
default:
967
goto s_n_llpkgc__internal__n_error_14;
968
}
969
/* UNREACHABLE */;
970
abort();
971
}
972
s_n_llpkgc__internal__n_error_15: {
973
state->error = 0x7;
974
state->reason = "Expected seperator";
975
state->error_pos = (const char*) p;
976
state->_current = (void*) (intptr_t) s_error;
977
return s_error;
978
/* UNREACHABLE */;
979
abort();
980
}
981
s_n_llpkgc__internal__n_span_end_llpkgc__key_span: {
982
const unsigned char* start;
983
int err;
984
985
start = state->_span_pos0;
986
state->_span_pos0 = NULL;
987
err = llpkgc__key_span(state, start, p);
988
if (err != 0) {
989
state->error = err;
990
state->error_pos = (const char*) p;
991
state->_current = (void*) (intptr_t) s_n_llpkgc__internal__n_expect_sep;
992
return s_error;
993
}
994
goto s_n_llpkgc__internal__n_expect_sep;
995
/* UNREACHABLE */;
996
abort();
997
}
998
s_n_llpkgc__internal__n_error_16: {
999
state->error = 0x4;
1000
state->reason = "Invalid key character";
1001
state->error_pos = (const char*) p;
1002
state->_current = (void*) (intptr_t) s_error;
1003
return s_error;
1004
/* UNREACHABLE */;
1005
abort();
1006
}
1007
s_n_llpkgc__internal__n_error: {
1008
state->error = 0x63;
1009
state->reason = "Line start error";
1010
state->error_pos = (const char*) p;
1011
state->_current = (void*) (intptr_t) s_error;
1012
return s_error;
1013
/* UNREACHABLE */;
1014
abort();
1015
}
1016
s_n_llpkgc__internal__n_invoke_llpkgc__line_begin: {
1017
switch (llpkgc__line_begin(state, p, endp)) {
1018
case 0:
1019
goto s_n_llpkgc__internal__n_span_start_llpkgc__key_span;
1020
default:
1021
goto s_n_llpkgc__internal__n_error;
1022
}
1023
/* UNREACHABLE */;
1024
abort();
1025
}
1026
s_n_llpkgc__internal__n_error_17: {
1027
state->error = 0x2;
1028
state->reason = "Expected key";
1029
state->error_pos = (const char*) p;
1030
state->_current = (void*) (intptr_t) s_error;
1031
return s_error;
1032
/* UNREACHABLE */;
1033
abort();
1034
}
1035
}
1036
1037
int llpkgc__internal_execute(llpkgc__internal_t* state, const char* p, const char* endp) {
1038
llparse_state_t next;
1039
1040
/* check lingering errors */
1041
if (state->error != 0) {
1042
return state->error;
1043
}
1044
1045
/* restart spans */
1046
if (state->_span_pos0 != NULL) {
1047
state->_span_pos0 = (void*) p;
1048
}
1049
1050
next = llpkgc__internal__run(state, (const unsigned char*) p, (const unsigned char*) endp);
1051
if (next == s_error) {
1052
return state->error;
1053
}
1054
state->_current = (void*) (intptr_t) next;
1055
1056
/* execute spans */
1057
if (state->_span_pos0 != NULL) {
1058
int error;
1059
1060
error = ((llpkgc__internal__span_cb) state->_span_cb0)(state, state->_span_pos0, (const char*) endp);
1061
if (error != 0) {
1062
state->error = error;
1063
state->error_pos = endp;
1064
return error;
1065
}
1066
}
1067
1068
return 0;
1069
}
1070
1071