Volksdata 1.0b10
RDF library
Loading...
Searching...
No Matches
parser_nq.c
Go to the documentation of this file.
1/* Generated by re2c 4.5.1 on Sun Jul 5 01:01:35 2026 */
2#line 1 "lexer_nq.re"
3// vim:ft=c
6
7#line 1 "../../include/volksdata/codec/parser_common.h"
13#ifndef VOLK_PARSER_COMMON_H
14#define VOLK_PARSER_COMMON_H
15
17
18
26#define YYCTYPE uint8_t
27#define YYCURSOR it->cur
28#define YYMARKER it->mar
29#define YYLIMIT it->lim
30#define YYFILL fill(it) == 0
31
32
33typedef struct parse_it_t {
34 FILE * fh;
35 const char * sh;
36 size_t buf_size;
38 * lim,
40 * cur,
41 * mar,
42 * tok,
43 * bol;
45 unsigned line;
46 unsigned ct;
47 bool eof;
48
49#line 50 "parser_nq.c"
51#line 41 "../../include/volksdata/codec/parser_common.h"
52
54
55
56static inline void newline (ParseIterator *it) {
57 it->line ++;
58 it->bol = YYCURSOR;
59 log_trace ("New line: #%u.", it->line);
60}
61
62
63static int fill(ParseIterator *it);
64
65
75static void parse_init (ParseIterator *it, FILE *fh, const char *sh)
76{
77 if(fh) {
78 // Stream handling. It engages YYFILL and reads by chunks.
79 it->fh = fh;
80 it->sh = NULL;
81 it->buf_size = CHUNK_SIZE;
82 it->buf = malloc(it->buf_size);
83 if (!it->buf) log_error ("Error allocating lexer buffer.");
84 it->cur = it->mar = it->tok = it->lim = it->buf + it->buf_size - 1;
85 it->bol = it->buf;
86 it->eof = false;
87 it->lim[0] = 0;
88 } else {
89 // String handling. Uses the provided string as the buffer.
90 it->fh = NULL;
91 it->sh = sh;
92 it->buf_size = strlen(sh) + 1;
93 it->buf = NULL;
94 it->cur = it->tok = (YYCTYPE*)it->sh;
95 it->lim = it->mar = it->cur + it->buf_size - 1;
96 it->bol = it->cur;
97 it->eof = true;
98 }
99 it->line = 1;
100 it->ct = 0;
101
102#line 103 "parser_nq.c"
103it->yyt1 = NULL; it->yyt2 = NULL; it->yyt3 = NULL;
104#line 90 "../../include/volksdata/codec/parser_common.h"
105
106}
107
108
109int
110fill(ParseIterator *it)
111{
112 log_debug ("Filling codec buffer @ %p.", it->buf);
113 if (it->eof) return 1;
114
115 size_t shift = it->tok - it->buf;
116 size_t used = it->lim - it->tok;
117
118 // If buffer is too small for the lexeme, double the capacity.
119 if (shift < 1) {
120 shift += it->buf_size;
121 it->buf_size *= 2;
122 // Store offsets to reapply to moved buffer.
123 size_t
124 cur_off = it->cur - it->buf,
125 tok_off = it->tok - it->buf,
126 lim_off = it->lim - it->buf,
127 mar_off = it->mar - it->buf;
128
129 log_debug ("Reallocating buffer to %zu bytes.", it->buf_size);
130 YYCTYPE *tmp = realloc (it->buf, it->buf_size);
131 if (!tmp) {
132 log_error ("Memory allocation error.");
133 return -1;
134 }
135 it->buf = tmp;
136 // Move all relative points if address changed.
137 it->cur = it->buf + cur_off;
138 it->tok = it->buf + tok_off;
139 it->lim = it->buf + lim_off;
140 it->mar = it->buf + mar_off;
141 } else {
142 log_debug ("Shifting bytes: %zu", shift);
143 memmove (it->buf, it->tok, used);
144 log_trace ("Limit offset before reading data: %zu", it->lim - it->tok);
145 it->lim -= shift;
146 it->cur -= shift;
147 it->mar -= shift;
148 it->tok -= shift;
149 }
150 it->lim += fread (it->lim, 1, it->buf_size - used - 1, it->fh);
151
152#line 153 "parser_nq.c"
153if (it->yyt1) it->yyt1 -= shift; if (it->yyt2) it->yyt2 -= shift; if (it->yyt3) it->yyt3 -= shift;
154#line 136 "../../include/volksdata/codec/parser_common.h"
155
156 log_trace ("Cursor offset from last token: %zu", it->cur - it->tok);
157 log_trace ("Limit offset from last token: %zu", it->lim - it->tok);
158 it->lim[0] = 0;
159 it->eof = it->lim < it->buf + it->buf_size - 1;
160 return 0;
161}
162
163
164#endif // VOLK_PARSER_COMMON_H
165#line 5 "lexer_nq.re"
166
167
168
169// Parser interface. Required here to silence linters.
171void NQParse();
173#ifdef VOLK_CODEC_DEBUG
174void NQParseTrace();
175#endif
176
177// Lexer.
178
179static int lex (ParseIterator *it, VOLK_Term **term)
180{
181 const YYCTYPE *lit_data_e, *dtype_s, *lang_s;
182
183loop:
184 it->tok = it->cur;
185 *term = NULL;
186
187
188#line 189 "parser_nq.c"
189{
190 YYCTYPE yych;
191 unsigned int yyaccept = 0;
192yyFillLabel0:
193 yych = *YYCURSOR;
194 switch (yych) {
195 case '\t':
196 case ' ': goto yy3;
197 case '\n':
198 case '\r': goto yy5;
199 case '"': goto yy7;
200 case '#': goto yy8;
201 case '.': goto yy10;
202 case '<': goto yy11;
203 case '_': goto yy12;
204 default:
205 if (YYLIMIT <= YYCURSOR) {
206 if (YYFILL) goto yyFillLabel0;
207 goto yy110;
208 }
209 goto yy1;
210 }
211yy1:
212 ++YYCURSOR;
213yy2:
214#line 134 "nt_def.re.inc"
215 {
216 log_error (
217 "Invalid token @ %p: %s (\\x%x)",
218 YYCURSOR - it->buf - 1, it->tok, *it->tok);
219
220 return -1;
221}
222#line 223 "parser_nq.c"
223yy3:
224 ++YYCURSOR;
225yyFillLabel1:
226 yych = *YYCURSOR;
227 switch (yych) {
228 case '\t':
229 case ' ': goto yy3;
230 default:
231 if (YYLIMIT <= YYCURSOR) {
232 if (YYFILL) goto yyFillLabel1;
233 }
234 goto yy4;
235 }
236yy4:
237#line 117 "nt_def.re.inc"
238 {
239 log_debug ("Separator.");
240
241 return T_WS;
242}
243#line 244 "parser_nq.c"
244yy5:
245 ++YYCURSOR;
246yyFillLabel2:
247 yych = *YYCURSOR;
248 switch (yych) {
249 case '\t' ... '\n':
250 case '\r':
251 case ' ': goto yy5;
252 default:
253 if (YYLIMIT <= YYCURSOR) {
254 if (YYFILL) goto yyFillLabel2;
255 }
256 goto yy6;
257 }
258yy6:
259#line 33 "nt_def.re.inc"
260 {
261 it->line ++;
262 it->bol = YYCURSOR;
263 log_debug ("New line: #%u.", it->line);
264 return T_EOL;
265}
266#line 267 "parser_nq.c"
267yy7:
268 yyaccept = 0;
269 YYMARKER = ++YYCURSOR;
270yyFillLabel3:
271 yych = *YYCURSOR;
272 switch (yych) {
273 case 0x00:
274 if (YYLIMIT <= YYCURSOR) {
275 if (YYFILL) goto yyFillLabel3;
276 goto yy2;
277 }
278 goto yy13;
279 case 0x01 ... '\t':
280 case '\v' ... '\f':
281 case 0x0E ... 0x7F:
282 case 0xC2 ... 0xF4: goto yy14;
283 default: goto yy2;
284 }
285yy8:
286 yyaccept = 1;
287 YYMARKER = ++YYCURSOR;
288yyFillLabel4:
289 yych = *YYCURSOR;
290 switch (yych) {
291 case 0x00:
292 case 0x01 ... '\t':
293 case '\v' ... 0x7F:
294 if (YYLIMIT <= YYCURSOR) {
295 if (YYFILL) goto yyFillLabel4;
296 goto yy9;
297 }
298 goto yy8;
299 case 0xC2 ... 0xDF: goto yy25;
300 case 0xE0: goto yy26;
301 case 0xE1 ... 0xEF: goto yy27;
302 case 0xF0: goto yy28;
303 case 0xF1 ... 0xF3: goto yy29;
304 case 0xF4: goto yy30;
305 default: goto yy9;
306 }
307yy9:
308#line 123 "nt_def.re.inc"
309 {
310 size_t size = YYCURSOR - it->tok + 1;
311 YYCTYPE *data = malloc (size);
312 memcpy (data, it->tok, size);
313 data [size - 1] = '\0';
314 log_debug ("Comment: `%s`", data);
315 free (data);
316
317 goto loop;
318}
319#line 320 "parser_nq.c"
320yy10:
321 ++YYCURSOR;
322#line 110 "nt_def.re.inc"
323 {
324 log_debug ("End of triple.");
325 it->ct ++;
326
327 return T_DOT;
328}
329#line 330 "parser_nq.c"
330yy11:
331 yyaccept = 0;
332 YYMARKER = ++YYCURSOR;
333yyFillLabel5:
334 yych = *YYCURSOR;
335 switch (yych) {
336 case '!':
337 case '#' ... ';':
338 case '=' ... ']':
339 case '_':
340 case 'a' ... 'z':
341 case '~' ... 0x7F:
342 case 0xC2 ... 0xF4: goto yy32;
343 default:
344 if (YYLIMIT <= YYCURSOR) {
345 if (YYFILL) goto yyFillLabel5;
346 }
347 goto yy2;
348 }
349yy12:
350 yyaccept = 0;
351 YYMARKER = ++YYCURSOR;
352yyFillLabel6:
353 yych = *YYCURSOR;
354 switch (yych) {
355 case ':': goto yy41;
356 default:
357 if (YYLIMIT <= YYCURSOR) {
358 if (YYFILL) goto yyFillLabel6;
359 }
360 goto yy2;
361 }
362yy13:
363 ++YYCURSOR;
364yyFillLabel7:
365 yych = *YYCURSOR;
366yy14:
367 switch (yych) {
368 case 0x00:
369 case 0x01 ... '\t':
370 case '\v' ... '\f':
371 case 0x0E ... '!':
372 case '#' ... '[':
373 case ']' ... 0x7F:
374 if (YYLIMIT <= YYCURSOR) {
375 if (YYFILL) goto yyFillLabel7;
376 goto yy15;
377 }
378 goto yy13;
379 case '"': goto yy16;
380 case '\\': goto yy18;
381 case 0xC2 ... 0xDF: goto yy19;
382 case 0xE0: goto yy20;
383 case 0xE1 ... 0xEF: goto yy21;
384 case 0xF0: goto yy22;
385 case 0xF1 ... 0xF3: goto yy23;
386 case 0xF4: goto yy24;
387 default: goto yy15;
388 }
389yy15:
391 switch (yyaccept) {
392 case 0: goto yy2;
393 case 1: goto yy9;
394 case 2:
395 it->yyt1 = YYCURSOR;
396 it->yyt2 = NULL;
397 it->yyt3 = NULL;
398 goto yy17;
399 case 3:
400 it->yyt2 = NULL;
401 it->yyt3 = NULL;
402 goto yy17;
403 case 4: goto yy51;
404 default:
405 it->yyt2 = NULL;
406 goto yy17;
407 }
408yy16:
409 yyaccept = 2;
410 YYMARKER = ++YYCURSOR;
411yyFillLabel8:
412 yych = *YYCURSOR;
413 switch (yych) {
414 case '\t':
415 case ' ':
416 it->yyt1 = YYCURSOR;
417 goto yy42;
418 case '@':
419 it->yyt1 = YYCURSOR;
420 it->yyt3 = YYCURSOR;
421 goto yy43;
422 case '^':
423 it->yyt1 = YYCURSOR;
424 goto yy44;
425 default:
426 if (YYLIMIT <= YYCURSOR) {
427 if (YYFILL) goto yyFillLabel8;
428 }
429 it->yyt1 = YYCURSOR;
430 it->yyt2 = NULL;
431 it->yyt3 = NULL;
432 goto yy17;
433 }
434yy17:
435 lit_data_e = it->yyt1;
436 dtype_s = it->yyt2;
437 lang_s = it->yyt3;
438#line 57 "nt_def.re.inc"
439 {
440 // Only unescape Unicode from data.
441 size_t size = lit_data_e - it->tok - 2;
442 YYCTYPE *data = unescape_unicode (it->tok + 1, size);
443 log_trace ("Literal data: %s", data);
444
445 char *metadata = NULL;
446 const YYCTYPE *md_marker;
448
449 if (dtype_s) {
450 md_marker = dtype_s;
451 size = YYCURSOR - md_marker - 1;
452 } else if (lang_s) {
454 md_marker = lang_s;
455 size = YYCURSOR - md_marker;
456 } else md_marker = NULL;
457
458 if (md_marker) {
459 metadata = malloc (size);
460 memcpy (metadata, md_marker + 1, size);
461 metadata [size - 1] = '\0';
462 log_trace ("metadata: %s", metadata);
463 }
464
465 if (type == VOLK_TERM_LITERAL) {
466 VOLK_Term *dtype;
467 dtype = (metadata ? VOLK_iriref_new ((char *) metadata) : NULL);
468
469 *term = VOLK_literal_new ((char *) data, dtype);
470
471 } else *term = VOLK_lt_literal_new ((char *) data, (char *) metadata);
472
473 free (data);
474 free (metadata);
475
476 if (UNLIKELY (!term)) return -1;
477 return T_LITERAL;
478}
479#line 480 "parser_nq.c"
480yy18:
481 ++YYCURSOR;
482yyFillLabel9:
483 yych = *YYCURSOR;
484 switch (yych) {
485 case '"':
486 case '\'':
487 case '\\':
488 case 'b':
489 case 'f':
490 case 'n':
491 case 'r':
492 case 't': goto yy13;
493 case 'U': goto yy45;
494 case 'u': goto yy46;
495 default:
496 if (YYLIMIT <= YYCURSOR) {
497 if (YYFILL) goto yyFillLabel9;
498 }
499 goto yy15;
500 }
501yy19:
502 ++YYCURSOR;
503yyFillLabel10:
504 yych = *YYCURSOR;
505 switch (yych) {
506 case 0x80 ... 0xBF: goto yy13;
507 default:
508 if (YYLIMIT <= YYCURSOR) {
509 if (YYFILL) goto yyFillLabel10;
510 }
511 goto yy15;
512 }
513yy20:
514 ++YYCURSOR;
515yyFillLabel11:
516 yych = *YYCURSOR;
517 switch (yych) {
518 case 0xA0 ... 0xBF: goto yy19;
519 default:
520 if (YYLIMIT <= YYCURSOR) {
521 if (YYFILL) goto yyFillLabel11;
522 }
523 goto yy15;
524 }
525yy21:
526 ++YYCURSOR;
527yyFillLabel12:
528 yych = *YYCURSOR;
529 switch (yych) {
530 case 0x80 ... 0xBF: goto yy19;
531 default:
532 if (YYLIMIT <= YYCURSOR) {
533 if (YYFILL) goto yyFillLabel12;
534 }
535 goto yy15;
536 }
537yy22:
538 ++YYCURSOR;
539yyFillLabel13:
540 yych = *YYCURSOR;
541 switch (yych) {
542 case 0x90 ... 0xBF: goto yy21;
543 default:
544 if (YYLIMIT <= YYCURSOR) {
545 if (YYFILL) goto yyFillLabel13;
546 }
547 goto yy15;
548 }
549yy23:
550 ++YYCURSOR;
551yyFillLabel14:
552 yych = *YYCURSOR;
553 switch (yych) {
554 case 0x80 ... 0xBF: goto yy21;
555 default:
556 if (YYLIMIT <= YYCURSOR) {
557 if (YYFILL) goto yyFillLabel14;
558 }
559 goto yy15;
560 }
561yy24:
562 ++YYCURSOR;
563yyFillLabel15:
564 yych = *YYCURSOR;
565 switch (yych) {
566 case 0x80 ... 0x8F: goto yy21;
567 default:
568 if (YYLIMIT <= YYCURSOR) {
569 if (YYFILL) goto yyFillLabel15;
570 }
571 goto yy15;
572 }
573yy25:
574 ++YYCURSOR;
575yyFillLabel16:
576 yych = *YYCURSOR;
577 switch (yych) {
578 case 0x80 ... 0xBF: goto yy8;
579 default:
580 if (YYLIMIT <= YYCURSOR) {
581 if (YYFILL) goto yyFillLabel16;
582 }
583 goto yy15;
584 }
585yy26:
586 ++YYCURSOR;
587yyFillLabel17:
588 yych = *YYCURSOR;
589 switch (yych) {
590 case 0xA0 ... 0xBF: goto yy25;
591 default:
592 if (YYLIMIT <= YYCURSOR) {
593 if (YYFILL) goto yyFillLabel17;
594 }
595 goto yy15;
596 }
597yy27:
598 ++YYCURSOR;
599yyFillLabel18:
600 yych = *YYCURSOR;
601 switch (yych) {
602 case 0x80 ... 0xBF: goto yy25;
603 default:
604 if (YYLIMIT <= YYCURSOR) {
605 if (YYFILL) goto yyFillLabel18;
606 }
607 goto yy15;
608 }
609yy28:
610 ++YYCURSOR;
611yyFillLabel19:
612 yych = *YYCURSOR;
613 switch (yych) {
614 case 0x90 ... 0xBF: goto yy27;
615 default:
616 if (YYLIMIT <= YYCURSOR) {
617 if (YYFILL) goto yyFillLabel19;
618 }
619 goto yy15;
620 }
621yy29:
622 ++YYCURSOR;
623yyFillLabel20:
624 yych = *YYCURSOR;
625 switch (yych) {
626 case 0x80 ... 0xBF: goto yy27;
627 default:
628 if (YYLIMIT <= YYCURSOR) {
629 if (YYFILL) goto yyFillLabel20;
630 }
631 goto yy15;
632 }
633yy30:
634 ++YYCURSOR;
635yyFillLabel21:
636 yych = *YYCURSOR;
637 switch (yych) {
638 case 0x80 ... 0x8F: goto yy27;
639 default:
640 if (YYLIMIT <= YYCURSOR) {
641 if (YYFILL) goto yyFillLabel21;
642 }
643 goto yy15;
644 }
645yy31:
646 ++YYCURSOR;
647yyFillLabel22:
648 yych = *YYCURSOR;
649yy32:
650 switch (yych) {
651 case '!':
652 case '#' ... ';':
653 case '=':
654 case '?' ... '[':
655 case ']':
656 case '_':
657 case 'a' ... 'z':
658 case '~' ... 0x7F: goto yy31;
659 case '>': goto yy33;
660 case '\\': goto yy34;
661 case 0xC2 ... 0xDF: goto yy35;
662 case 0xE0: goto yy36;
663 case 0xE1 ... 0xEF: goto yy37;
664 case 0xF0: goto yy38;
665 case 0xF1 ... 0xF3: goto yy39;
666 case 0xF4: goto yy40;
667 default:
668 if (YYLIMIT <= YYCURSOR) {
669 if (YYFILL) goto yyFillLabel22;
670 }
671 goto yy15;
672 }
673yy33:
674 ++YYCURSOR;
675#line 45 "nt_def.re.inc"
676 {
677 YYCTYPE *data = unescape_unicode (it->tok + 1, YYCURSOR - it->tok - 2);
678
679 log_debug ("URI data: %s", data);
680
681 *term = VOLK_iriref_new ((char*)data);
682 free (data);
683
684 if (UNLIKELY (!term)) return -1;
685 return T_IRIREF;
686}
687#line 688 "parser_nq.c"
688yy34:
689 ++YYCURSOR;
690yyFillLabel23:
691 yych = *YYCURSOR;
692 switch (yych) {
693 case 'U': goto yy47;
694 case 'u': goto yy48;
695 default:
696 if (YYLIMIT <= YYCURSOR) {
697 if (YYFILL) goto yyFillLabel23;
698 }
699 goto yy15;
700 }
701yy35:
702 ++YYCURSOR;
703yyFillLabel24:
704 yych = *YYCURSOR;
705 switch (yych) {
706 case 0x80 ... 0xBF: goto yy31;
707 default:
708 if (YYLIMIT <= YYCURSOR) {
709 if (YYFILL) goto yyFillLabel24;
710 }
711 goto yy15;
712 }
713yy36:
714 ++YYCURSOR;
715yyFillLabel25:
716 yych = *YYCURSOR;
717 switch (yych) {
718 case 0xA0 ... 0xBF: goto yy35;
719 default:
720 if (YYLIMIT <= YYCURSOR) {
721 if (YYFILL) goto yyFillLabel25;
722 }
723 goto yy15;
724 }
725yy37:
726 ++YYCURSOR;
727yyFillLabel26:
728 yych = *YYCURSOR;
729 switch (yych) {
730 case 0x80 ... 0xBF: goto yy35;
731 default:
732 if (YYLIMIT <= YYCURSOR) {
733 if (YYFILL) goto yyFillLabel26;
734 }
735 goto yy15;
736 }
737yy38:
738 ++YYCURSOR;
739yyFillLabel27:
740 yych = *YYCURSOR;
741 switch (yych) {
742 case 0x90 ... 0xBF: goto yy37;
743 default:
744 if (YYLIMIT <= YYCURSOR) {
745 if (YYFILL) goto yyFillLabel27;
746 }
747 goto yy15;
748 }
749yy39:
750 ++YYCURSOR;
751yyFillLabel28:
752 yych = *YYCURSOR;
753 switch (yych) {
754 case 0x80 ... 0xBF: goto yy37;
755 default:
756 if (YYLIMIT <= YYCURSOR) {
757 if (YYFILL) goto yyFillLabel28;
758 }
759 goto yy15;
760 }
761yy40:
762 ++YYCURSOR;
763yyFillLabel29:
764 yych = *YYCURSOR;
765 switch (yych) {
766 case 0x80 ... 0x8F: goto yy37;
767 default:
768 if (YYLIMIT <= YYCURSOR) {
769 if (YYFILL) goto yyFillLabel29;
770 }
771 goto yy15;
772 }
773yy41:
774 ++YYCURSOR;
775yyFillLabel30:
776 yych = *YYCURSOR;
777 switch (yych) {
778 case '0' ... ':':
779 case 'A' ... 'Z':
780 case '_':
781 case 'a' ... 'z':
782 case 0xC3 ... 0xCB:
783 case 0xCE ... 0xE1:
784 case 0xE3 ... 0xED:
785 case 0xEF ... 0xF3: goto yy50;
786 case 0xCD: goto yy54;
787 case 0xE2: goto yy57;
788 default:
789 if (YYLIMIT <= YYCURSOR) {
790 if (YYFILL) goto yyFillLabel30;
791 }
792 goto yy15;
793 }
794yy42:
795 yyaccept = 3;
796 YYMARKER = ++YYCURSOR;
797yyFillLabel31:
798 yych = *YYCURSOR;
799 switch (yych) {
800 case '\t':
801 case ' ': goto yy42;
802 case '@':
803 it->yyt3 = YYCURSOR;
804 goto yy43;
805 case '^': goto yy44;
806 default:
807 if (YYLIMIT <= YYCURSOR) {
808 if (YYFILL) goto yyFillLabel31;
809 }
810 it->yyt2 = NULL;
811 it->yyt3 = NULL;
812 goto yy17;
813 }
814yy43:
815 ++YYCURSOR;
816yyFillLabel32:
817 yych = *YYCURSOR;
818 switch (yych) {
819 case 'A' ... 'Z':
820 case 'a' ... 'z': goto yy64;
821 default:
822 if (YYLIMIT <= YYCURSOR) {
823 if (YYFILL) goto yyFillLabel32;
824 }
825 goto yy15;
826 }
827yy44:
828 ++YYCURSOR;
829yyFillLabel33:
830 yych = *YYCURSOR;
831 switch (yych) {
832 case '^': goto yy65;
833 default:
834 if (YYLIMIT <= YYCURSOR) {
835 if (YYFILL) goto yyFillLabel33;
836 }
837 goto yy15;
838 }
839yy45:
840 ++YYCURSOR;
841yyFillLabel34:
842 yych = *YYCURSOR;
843 switch (yych) {
844 case '0' ... '9':
845 case 'A' ... 'F':
846 case 'a' ... 'f': goto yy66;
847 default:
848 if (YYLIMIT <= YYCURSOR) {
849 if (YYFILL) goto yyFillLabel34;
850 }
851 goto yy15;
852 }
853yy46:
854 ++YYCURSOR;
855yyFillLabel35:
856 yych = *YYCURSOR;
857 switch (yych) {
858 case '0' ... '9':
859 case 'A' ... 'F':
860 case 'a' ... 'f': goto yy67;
861 default:
862 if (YYLIMIT <= YYCURSOR) {
863 if (YYFILL) goto yyFillLabel35;
864 }
865 goto yy15;
866 }
867yy47:
868 ++YYCURSOR;
869yyFillLabel36:
870 yych = *YYCURSOR;
871 switch (yych) {
872 case '0' ... '9':
873 case 'A' ... 'F':
874 case 'a' ... 'f': goto yy68;
875 default:
876 if (YYLIMIT <= YYCURSOR) {
877 if (YYFILL) goto yyFillLabel36;
878 }
879 goto yy15;
880 }
881yy48:
882 ++YYCURSOR;
883yyFillLabel37:
884 yych = *YYCURSOR;
885 switch (yych) {
886 case '0' ... '9':
887 case 'A' ... 'F':
888 case 'a' ... 'f': goto yy69;
889 default:
890 if (YYLIMIT <= YYCURSOR) {
891 if (YYFILL) goto yyFillLabel37;
892 }
893 goto yy15;
894 }
895yy49:
896 yyaccept = 4;
897 YYMARKER = ++YYCURSOR;
898yyFillLabel38:
899 yych = *YYCURSOR;
900yy50:
901 switch (yych) {
902 case '-':
903 case '0' ... ':':
904 case 'A' ... 'Z':
905 case '_':
906 case 'a' ... 'z': goto yy49;
907 case '.': goto yy70;
908 case 0xC2: goto yy71;
909 case 0xC3: goto yy52;
910 case 0xC4 ... 0xCC:
911 case 0xCE ... 0xDF: goto yy53;
912 case 0xCD: goto yy72;
913 case 0xE0: goto yy55;
914 case 0xE1:
915 case 0xE4 ... 0xEC: goto yy56;
916 case 0xE2: goto yy73;
917 case 0xE3: goto yy58;
918 case 0xED: goto yy59;
919 case 0xEF: goto yy60;
920 case 0xF0: goto yy61;
921 case 0xF1 ... 0xF2: goto yy62;
922 case 0xF3: goto yy63;
923 default:
924 if (YYLIMIT <= YYCURSOR) {
925 if (YYFILL) goto yyFillLabel38;
926 }
927 goto yy51;
928 }
929yy51:
930#line 98 "nt_def.re.inc"
931 {
932 YYCTYPE *data = unescape_unicode (it->tok + 2, YYCURSOR - it->tok - 2);
933
934 log_debug ("BNode data: %s", data);
935
936 *term = VOLK_term_new (VOLK_TERM_BNODE, (char*)data, NULL);
937 free (data);
938
939 if (UNLIKELY (!term)) return -1;
940 return T_BNODE;
941}
942#line 943 "parser_nq.c"
943yy52:
944 ++YYCURSOR;
945yyFillLabel39:
946 yych = *YYCURSOR;
947 switch (yych) {
948 case 0x80 ... 0x96:
949 case 0x98 ... 0xB6:
950 case 0xB8 ... 0xBF: goto yy49;
951 default:
952 if (YYLIMIT <= YYCURSOR) {
953 if (YYFILL) goto yyFillLabel39;
954 }
955 goto yy15;
956 }
957yy53:
958 ++YYCURSOR;
959yyFillLabel40:
960 yych = *YYCURSOR;
961 switch (yych) {
962 case 0x80 ... 0xBF: goto yy49;
963 default:
964 if (YYLIMIT <= YYCURSOR) {
965 if (YYFILL) goto yyFillLabel40;
966 }
967 goto yy15;
968 }
969yy54:
970 ++YYCURSOR;
971yyFillLabel41:
972 yych = *YYCURSOR;
973 switch (yych) {
974 case 0xB0 ... 0xBD:
975 case 0xBF: goto yy49;
976 default:
977 if (YYLIMIT <= YYCURSOR) {
978 if (YYFILL) goto yyFillLabel41;
979 }
980 goto yy15;
981 }
982yy55:
983 ++YYCURSOR;
984yyFillLabel42:
985 yych = *YYCURSOR;
986 switch (yych) {
987 case 0xA0 ... 0xBF: goto yy53;
988 default:
989 if (YYLIMIT <= YYCURSOR) {
990 if (YYFILL) goto yyFillLabel42;
991 }
992 goto yy15;
993 }
994yy56:
995 ++YYCURSOR;
996yyFillLabel43:
997 yych = *YYCURSOR;
998 switch (yych) {
999 case 0x80 ... 0xBF: goto yy53;
1000 default:
1001 if (YYLIMIT <= YYCURSOR) {
1002 if (YYFILL) goto yyFillLabel43;
1003 }
1004 goto yy15;
1005 }
1006yy57:
1007 ++YYCURSOR;
1008yyFillLabel44:
1009 yych = *YYCURSOR;
1010 switch (yych) {
1011 case 0x80: goto yy74;
1012 case 0x81: goto yy75;
1013 case 0x82 ... 0x85:
1014 case 0xB0 ... 0xBE: goto yy53;
1015 case 0x86: goto yy76;
1016 case 0xBF: goto yy77;
1017 default:
1018 if (YYLIMIT <= YYCURSOR) {
1019 if (YYFILL) goto yyFillLabel44;
1020 }
1021 goto yy15;
1022 }
1023yy58:
1024 ++YYCURSOR;
1025yyFillLabel45:
1026 yych = *YYCURSOR;
1027 switch (yych) {
1028 case 0x80: goto yy78;
1029 case 0x81 ... 0xBF: goto yy53;
1030 default:
1031 if (YYLIMIT <= YYCURSOR) {
1032 if (YYFILL) goto yyFillLabel45;
1033 }
1034 goto yy15;
1035 }
1036yy59:
1037 ++YYCURSOR;
1038yyFillLabel46:
1039 yych = *YYCURSOR;
1040 switch (yych) {
1041 case 0x80 ... 0x9F: goto yy53;
1042 default:
1043 if (YYLIMIT <= YYCURSOR) {
1044 if (YYFILL) goto yyFillLabel46;
1045 }
1046 goto yy15;
1047 }
1048yy60:
1049 ++YYCURSOR;
1050yyFillLabel47:
1051 yych = *YYCURSOR;
1052 switch (yych) {
1053 case 0xA4 ... 0xB6:
1054 case 0xB8 ... 0xBE: goto yy53;
1055 case 0xB7: goto yy79;
1056 case 0xBF: goto yy80;
1057 default:
1058 if (YYLIMIT <= YYCURSOR) {
1059 if (YYFILL) goto yyFillLabel47;
1060 }
1061 goto yy15;
1062 }
1063yy61:
1064 ++YYCURSOR;
1065yyFillLabel48:
1066 yych = *YYCURSOR;
1067 switch (yych) {
1068 case 0x90 ... 0xBF: goto yy56;
1069 default:
1070 if (YYLIMIT <= YYCURSOR) {
1071 if (YYFILL) goto yyFillLabel48;
1072 }
1073 goto yy15;
1074 }
1075yy62:
1076 ++YYCURSOR;
1077yyFillLabel49:
1078 yych = *YYCURSOR;
1079 switch (yych) {
1080 case 0x80 ... 0xBF: goto yy56;
1081 default:
1082 if (YYLIMIT <= YYCURSOR) {
1083 if (YYFILL) goto yyFillLabel49;
1084 }
1085 goto yy15;
1086 }
1087yy63:
1088 ++YYCURSOR;
1089yyFillLabel50:
1090 yych = *YYCURSOR;
1091 switch (yych) {
1092 case 0x80 ... 0xAF: goto yy56;
1093 default:
1094 if (YYLIMIT <= YYCURSOR) {
1095 if (YYFILL) goto yyFillLabel50;
1096 }
1097 goto yy15;
1098 }
1099yy64:
1100 yyaccept = 5;
1101 YYMARKER = ++YYCURSOR;
1102yyFillLabel51:
1103 yych = *YYCURSOR;
1104 switch (yych) {
1105 case '-': goto yy81;
1106 case 'A' ... 'Z':
1107 case 'a' ... 'z': goto yy64;
1108 default:
1109 if (YYLIMIT <= YYCURSOR) {
1110 if (YYFILL) goto yyFillLabel51;
1111 }
1112 it->yyt2 = NULL;
1113 goto yy17;
1114 }
1115yy65:
1116 ++YYCURSOR;
1117yyFillLabel52:
1118 yych = *YYCURSOR;
1119 switch (yych) {
1120 case '\t':
1121 case ' ': goto yy65;
1122 case '<':
1123 it->yyt2 = YYCURSOR;
1124 goto yy82;
1125 default:
1126 if (YYLIMIT <= YYCURSOR) {
1127 if (YYFILL) goto yyFillLabel52;
1128 }
1129 goto yy15;
1130 }
1131yy66:
1132 ++YYCURSOR;
1133yyFillLabel53:
1134 yych = *YYCURSOR;
1135 switch (yych) {
1136 case '0' ... '9':
1137 case 'A' ... 'F':
1138 case 'a' ... 'f': goto yy83;
1139 default:
1140 if (YYLIMIT <= YYCURSOR) {
1141 if (YYFILL) goto yyFillLabel53;
1142 }
1143 goto yy15;
1144 }
1145yy67:
1146 ++YYCURSOR;
1147yyFillLabel54:
1148 yych = *YYCURSOR;
1149 switch (yych) {
1150 case '0' ... '9':
1151 case 'A' ... 'F':
1152 case 'a' ... 'f': goto yy84;
1153 default:
1154 if (YYLIMIT <= YYCURSOR) {
1155 if (YYFILL) goto yyFillLabel54;
1156 }
1157 goto yy15;
1158 }
1159yy68:
1160 ++YYCURSOR;
1161yyFillLabel55:
1162 yych = *YYCURSOR;
1163 switch (yych) {
1164 case '0' ... '9':
1165 case 'A' ... 'F':
1166 case 'a' ... 'f': goto yy85;
1167 default:
1168 if (YYLIMIT <= YYCURSOR) {
1169 if (YYFILL) goto yyFillLabel55;
1170 }
1171 goto yy15;
1172 }
1173yy69:
1174 ++YYCURSOR;
1175yyFillLabel56:
1176 yych = *YYCURSOR;
1177 switch (yych) {
1178 case '0' ... '9':
1179 case 'A' ... 'F':
1180 case 'a' ... 'f': goto yy86;
1181 default:
1182 if (YYLIMIT <= YYCURSOR) {
1183 if (YYFILL) goto yyFillLabel56;
1184 }
1185 goto yy15;
1186 }
1187yy70:
1188 ++YYCURSOR;
1189yyFillLabel57:
1190 yych = *YYCURSOR;
1191 switch (yych) {
1192 case '-':
1193 case '0' ... ':':
1194 case 'A' ... 'Z':
1195 case '_':
1196 case 'a' ... 'z': goto yy49;
1197 case '.': goto yy70;
1198 case 0xC2: goto yy71;
1199 case 0xC3: goto yy52;
1200 case 0xC4 ... 0xCC:
1201 case 0xCE ... 0xDF: goto yy53;
1202 case 0xCD: goto yy72;
1203 case 0xE0: goto yy55;
1204 case 0xE1:
1205 case 0xE4 ... 0xEC: goto yy56;
1206 case 0xE2: goto yy73;
1207 case 0xE3: goto yy58;
1208 case 0xED: goto yy59;
1209 case 0xEF: goto yy60;
1210 case 0xF0: goto yy61;
1211 case 0xF1 ... 0xF2: goto yy62;
1212 case 0xF3: goto yy63;
1213 default:
1214 if (YYLIMIT <= YYCURSOR) {
1215 if (YYFILL) goto yyFillLabel57;
1216 }
1217 goto yy15;
1218 }
1219yy71:
1220 ++YYCURSOR;
1221yyFillLabel58:
1222 yych = *YYCURSOR;
1223 switch (yych) {
1224 case 0xB7: goto yy49;
1225 default:
1226 if (YYLIMIT <= YYCURSOR) {
1227 if (YYFILL) goto yyFillLabel58;
1228 }
1229 goto yy15;
1230 }
1231yy72:
1232 ++YYCURSOR;
1233yyFillLabel59:
1234 yych = *YYCURSOR;
1235 switch (yych) {
1236 case 0x80 ... 0xBD:
1237 case 0xBF: goto yy49;
1238 default:
1239 if (YYLIMIT <= YYCURSOR) {
1240 if (YYFILL) goto yyFillLabel59;
1241 }
1242 goto yy15;
1243 }
1244yy73:
1245 ++YYCURSOR;
1246yyFillLabel60:
1247 yych = *YYCURSOR;
1248 switch (yych) {
1249 case 0x80: goto yy87;
1250 case 0x81: goto yy88;
1251 case 0x82 ... 0x85:
1252 case 0xB0 ... 0xBE: goto yy53;
1253 case 0x86: goto yy76;
1254 case 0xBF: goto yy77;
1255 default:
1256 if (YYLIMIT <= YYCURSOR) {
1257 if (YYFILL) goto yyFillLabel60;
1258 }
1259 goto yy15;
1260 }
1261yy74:
1262 ++YYCURSOR;
1263yyFillLabel61:
1264 yych = *YYCURSOR;
1265 switch (yych) {
1266 case 0x8C ... 0x8D: goto yy49;
1267 default:
1268 if (YYLIMIT <= YYCURSOR) {
1269 if (YYFILL) goto yyFillLabel61;
1270 }
1271 goto yy15;
1272 }
1273yy75:
1274 ++YYCURSOR;
1275yyFillLabel62:
1276 yych = *YYCURSOR;
1277 switch (yych) {
1278 case 0xB0 ... 0xBF: goto yy49;
1279 default:
1280 if (YYLIMIT <= YYCURSOR) {
1281 if (YYFILL) goto yyFillLabel62;
1282 }
1283 goto yy15;
1284 }
1285yy76:
1286 ++YYCURSOR;
1287yyFillLabel63:
1288 yych = *YYCURSOR;
1289 switch (yych) {
1290 case 0x80 ... 0x8F: goto yy49;
1291 default:
1292 if (YYLIMIT <= YYCURSOR) {
1293 if (YYFILL) goto yyFillLabel63;
1294 }
1295 goto yy15;
1296 }
1297yy77:
1298 ++YYCURSOR;
1299yyFillLabel64:
1300 yych = *YYCURSOR;
1301 switch (yych) {
1302 case 0x80 ... 0xAF: goto yy49;
1303 default:
1304 if (YYLIMIT <= YYCURSOR) {
1305 if (YYFILL) goto yyFillLabel64;
1306 }
1307 goto yy15;
1308 }
1309yy78:
1310 ++YYCURSOR;
1311yyFillLabel65:
1312 yych = *YYCURSOR;
1313 switch (yych) {
1314 case 0x81 ... 0xBF: goto yy49;
1315 default:
1316 if (YYLIMIT <= YYCURSOR) {
1317 if (YYFILL) goto yyFillLabel65;
1318 }
1319 goto yy15;
1320 }
1321yy79:
1322 ++YYCURSOR;
1323yyFillLabel66:
1324 yych = *YYCURSOR;
1325 switch (yych) {
1326 case 0x80 ... 0x8F:
1327 case 0xB0 ... 0xBF: goto yy49;
1328 default:
1329 if (YYLIMIT <= YYCURSOR) {
1330 if (YYFILL) goto yyFillLabel66;
1331 }
1332 goto yy15;
1333 }
1334yy80:
1335 ++YYCURSOR;
1336yyFillLabel67:
1337 yych = *YYCURSOR;
1338 switch (yych) {
1339 case 0x80 ... 0xBD: goto yy49;
1340 default:
1341 if (YYLIMIT <= YYCURSOR) {
1342 if (YYFILL) goto yyFillLabel67;
1343 }
1344 goto yy15;
1345 }
1346yy81:
1347 ++YYCURSOR;
1348yyFillLabel68:
1349 yych = *YYCURSOR;
1350 switch (yych) {
1351 case '0' ... '9':
1352 case 'A' ... 'Z':
1353 case 'a' ... 'z': goto yy89;
1354 default:
1355 if (YYLIMIT <= YYCURSOR) {
1356 if (YYFILL) goto yyFillLabel68;
1357 }
1358 goto yy15;
1359 }
1360yy82:
1361 ++YYCURSOR;
1362yyFillLabel69:
1363 yych = *YYCURSOR;
1364 switch (yych) {
1365 case '!':
1366 case '#' ... ';':
1367 case '=':
1368 case '?' ... '[':
1369 case ']':
1370 case '_':
1371 case 'a' ... 'z':
1372 case '~' ... 0x7F: goto yy82;
1373 case '>': goto yy90;
1374 case '\\': goto yy91;
1375 case 0xC2 ... 0xDF: goto yy92;
1376 case 0xE0: goto yy93;
1377 case 0xE1 ... 0xEF: goto yy94;
1378 case 0xF0: goto yy95;
1379 case 0xF1 ... 0xF3: goto yy96;
1380 case 0xF4: goto yy97;
1381 default:
1382 if (YYLIMIT <= YYCURSOR) {
1383 if (YYFILL) goto yyFillLabel69;
1384 }
1385 goto yy15;
1386 }
1387yy83:
1388 ++YYCURSOR;
1389yyFillLabel70:
1390 yych = *YYCURSOR;
1391 switch (yych) {
1392 case '0' ... '9':
1393 case 'A' ... 'F':
1394 case 'a' ... 'f': goto yy98;
1395 default:
1396 if (YYLIMIT <= YYCURSOR) {
1397 if (YYFILL) goto yyFillLabel70;
1398 }
1399 goto yy15;
1400 }
1401yy84:
1402 ++YYCURSOR;
1403yyFillLabel71:
1404 yych = *YYCURSOR;
1405 switch (yych) {
1406 case '0' ... '9':
1407 case 'A' ... 'F':
1408 case 'a' ... 'f': goto yy99;
1409 default:
1410 if (YYLIMIT <= YYCURSOR) {
1411 if (YYFILL) goto yyFillLabel71;
1412 }
1413 goto yy15;
1414 }
1415yy85:
1416 ++YYCURSOR;
1417yyFillLabel72:
1418 yych = *YYCURSOR;
1419 switch (yych) {
1420 case '0' ... '9':
1421 case 'A' ... 'F':
1422 case 'a' ... 'f': goto yy100;
1423 default:
1424 if (YYLIMIT <= YYCURSOR) {
1425 if (YYFILL) goto yyFillLabel72;
1426 }
1427 goto yy15;
1428 }
1429yy86:
1430 ++YYCURSOR;
1431yyFillLabel73:
1432 yych = *YYCURSOR;
1433 switch (yych) {
1434 case '0' ... '9':
1435 case 'A' ... 'F':
1436 case 'a' ... 'f': goto yy101;
1437 default:
1438 if (YYLIMIT <= YYCURSOR) {
1439 if (YYFILL) goto yyFillLabel73;
1440 }
1441 goto yy15;
1442 }
1443yy87:
1444 ++YYCURSOR;
1445yyFillLabel74:
1446 yych = *YYCURSOR;
1447 switch (yych) {
1448 case 0x8C ... 0x8D:
1449 case 0xBF: goto yy49;
1450 default:
1451 if (YYLIMIT <= YYCURSOR) {
1452 if (YYFILL) goto yyFillLabel74;
1453 }
1454 goto yy15;
1455 }
1456yy88:
1457 ++YYCURSOR;
1458yyFillLabel75:
1459 yych = *YYCURSOR;
1460 switch (yych) {
1461 case 0x80:
1462 case 0xB0 ... 0xBF: goto yy49;
1463 default:
1464 if (YYLIMIT <= YYCURSOR) {
1465 if (YYFILL) goto yyFillLabel75;
1466 }
1467 goto yy15;
1468 }
1469yy89:
1470 yyaccept = 5;
1471 YYMARKER = ++YYCURSOR;
1472yyFillLabel76:
1473 yych = *YYCURSOR;
1474 switch (yych) {
1475 case '-': goto yy81;
1476 case '0' ... '9':
1477 case 'A' ... 'Z':
1478 case 'a' ... 'z': goto yy89;
1479 default:
1480 if (YYLIMIT <= YYCURSOR) {
1481 if (YYFILL) goto yyFillLabel76;
1482 }
1483 it->yyt2 = NULL;
1484 goto yy17;
1485 }
1486yy90:
1487 ++YYCURSOR;
1488 it->yyt3 = NULL;
1489 goto yy17;
1490yy91:
1491 ++YYCURSOR;
1492yyFillLabel77:
1493 yych = *YYCURSOR;
1494 switch (yych) {
1495 case 'U': goto yy102;
1496 case 'u': goto yy103;
1497 default:
1498 if (YYLIMIT <= YYCURSOR) {
1499 if (YYFILL) goto yyFillLabel77;
1500 }
1501 goto yy15;
1502 }
1503yy92:
1504 ++YYCURSOR;
1505yyFillLabel78:
1506 yych = *YYCURSOR;
1507 switch (yych) {
1508 case 0x80 ... 0xBF: goto yy82;
1509 default:
1510 if (YYLIMIT <= YYCURSOR) {
1511 if (YYFILL) goto yyFillLabel78;
1512 }
1513 goto yy15;
1514 }
1515yy93:
1516 ++YYCURSOR;
1517yyFillLabel79:
1518 yych = *YYCURSOR;
1519 switch (yych) {
1520 case 0xA0 ... 0xBF: goto yy92;
1521 default:
1522 if (YYLIMIT <= YYCURSOR) {
1523 if (YYFILL) goto yyFillLabel79;
1524 }
1525 goto yy15;
1526 }
1527yy94:
1528 ++YYCURSOR;
1529yyFillLabel80:
1530 yych = *YYCURSOR;
1531 switch (yych) {
1532 case 0x80 ... 0xBF: goto yy92;
1533 default:
1534 if (YYLIMIT <= YYCURSOR) {
1535 if (YYFILL) goto yyFillLabel80;
1536 }
1537 goto yy15;
1538 }
1539yy95:
1540 ++YYCURSOR;
1541yyFillLabel81:
1542 yych = *YYCURSOR;
1543 switch (yych) {
1544 case 0x90 ... 0xBF: goto yy94;
1545 default:
1546 if (YYLIMIT <= YYCURSOR) {
1547 if (YYFILL) goto yyFillLabel81;
1548 }
1549 goto yy15;
1550 }
1551yy96:
1552 ++YYCURSOR;
1553yyFillLabel82:
1554 yych = *YYCURSOR;
1555 switch (yych) {
1556 case 0x80 ... 0xBF: goto yy94;
1557 default:
1558 if (YYLIMIT <= YYCURSOR) {
1559 if (YYFILL) goto yyFillLabel82;
1560 }
1561 goto yy15;
1562 }
1563yy97:
1564 ++YYCURSOR;
1565yyFillLabel83:
1566 yych = *YYCURSOR;
1567 switch (yych) {
1568 case 0x80 ... 0x8F: goto yy94;
1569 default:
1570 if (YYLIMIT <= YYCURSOR) {
1571 if (YYFILL) goto yyFillLabel83;
1572 }
1573 goto yy15;
1574 }
1575yy98:
1576 ++YYCURSOR;
1577yyFillLabel84:
1578 yych = *YYCURSOR;
1579 switch (yych) {
1580 case '0' ... '9':
1581 case 'A' ... 'F':
1582 case 'a' ... 'f': goto yy46;
1583 default:
1584 if (YYLIMIT <= YYCURSOR) {
1585 if (YYFILL) goto yyFillLabel84;
1586 }
1587 goto yy15;
1588 }
1589yy99:
1590 ++YYCURSOR;
1591yyFillLabel85:
1592 yych = *YYCURSOR;
1593 switch (yych) {
1594 case '0' ... '9':
1595 case 'A' ... 'F':
1596 case 'a' ... 'f': goto yy13;
1597 default:
1598 if (YYLIMIT <= YYCURSOR) {
1599 if (YYFILL) goto yyFillLabel85;
1600 }
1601 goto yy15;
1602 }
1603yy100:
1604 ++YYCURSOR;
1605yyFillLabel86:
1606 yych = *YYCURSOR;
1607 switch (yych) {
1608 case '0' ... '9':
1609 case 'A' ... 'F':
1610 case 'a' ... 'f': goto yy48;
1611 default:
1612 if (YYLIMIT <= YYCURSOR) {
1613 if (YYFILL) goto yyFillLabel86;
1614 }
1615 goto yy15;
1616 }
1617yy101:
1618 ++YYCURSOR;
1619yyFillLabel87:
1620 yych = *YYCURSOR;
1621 switch (yych) {
1622 case '0' ... '9':
1623 case 'A' ... 'F':
1624 case 'a' ... 'f': goto yy31;
1625 default:
1626 if (YYLIMIT <= YYCURSOR) {
1627 if (YYFILL) goto yyFillLabel87;
1628 }
1629 goto yy15;
1630 }
1631yy102:
1632 ++YYCURSOR;
1633yyFillLabel88:
1634 yych = *YYCURSOR;
1635 switch (yych) {
1636 case '0' ... '9':
1637 case 'A' ... 'F':
1638 case 'a' ... 'f': goto yy104;
1639 default:
1640 if (YYLIMIT <= YYCURSOR) {
1641 if (YYFILL) goto yyFillLabel88;
1642 }
1643 goto yy15;
1644 }
1645yy103:
1646 ++YYCURSOR;
1647yyFillLabel89:
1648 yych = *YYCURSOR;
1649 switch (yych) {
1650 case '0' ... '9':
1651 case 'A' ... 'F':
1652 case 'a' ... 'f': goto yy105;
1653 default:
1654 if (YYLIMIT <= YYCURSOR) {
1655 if (YYFILL) goto yyFillLabel89;
1656 }
1657 goto yy15;
1658 }
1659yy104:
1660 ++YYCURSOR;
1661yyFillLabel90:
1662 yych = *YYCURSOR;
1663 switch (yych) {
1664 case '0' ... '9':
1665 case 'A' ... 'F':
1666 case 'a' ... 'f': goto yy106;
1667 default:
1668 if (YYLIMIT <= YYCURSOR) {
1669 if (YYFILL) goto yyFillLabel90;
1670 }
1671 goto yy15;
1672 }
1673yy105:
1674 ++YYCURSOR;
1675yyFillLabel91:
1676 yych = *YYCURSOR;
1677 switch (yych) {
1678 case '0' ... '9':
1679 case 'A' ... 'F':
1680 case 'a' ... 'f': goto yy107;
1681 default:
1682 if (YYLIMIT <= YYCURSOR) {
1683 if (YYFILL) goto yyFillLabel91;
1684 }
1685 goto yy15;
1686 }
1687yy106:
1688 ++YYCURSOR;
1689yyFillLabel92:
1690 yych = *YYCURSOR;
1691 switch (yych) {
1692 case '0' ... '9':
1693 case 'A' ... 'F':
1694 case 'a' ... 'f': goto yy108;
1695 default:
1696 if (YYLIMIT <= YYCURSOR) {
1697 if (YYFILL) goto yyFillLabel92;
1698 }
1699 goto yy15;
1700 }
1701yy107:
1702 ++YYCURSOR;
1703yyFillLabel93:
1704 yych = *YYCURSOR;
1705 switch (yych) {
1706 case '0' ... '9':
1707 case 'A' ... 'F':
1708 case 'a' ... 'f': goto yy109;
1709 default:
1710 if (YYLIMIT <= YYCURSOR) {
1711 if (YYFILL) goto yyFillLabel93;
1712 }
1713 goto yy15;
1714 }
1715yy108:
1716 ++YYCURSOR;
1717yyFillLabel94:
1718 yych = *YYCURSOR;
1719 switch (yych) {
1720 case '0' ... '9':
1721 case 'A' ... 'F':
1722 case 'a' ... 'f': goto yy103;
1723 default:
1724 if (YYLIMIT <= YYCURSOR) {
1725 if (YYFILL) goto yyFillLabel94;
1726 }
1727 goto yy15;
1728 }
1729yy109:
1730 ++YYCURSOR;
1731yyFillLabel95:
1732 yych = *YYCURSOR;
1733 switch (yych) {
1734 case '0' ... '9':
1735 case 'A' ... 'F':
1736 case 'a' ... 'f': goto yy82;
1737 default:
1738 if (YYLIMIT <= YYCURSOR) {
1739 if (YYFILL) goto yyFillLabel95;
1740 }
1741 goto yy15;
1742 }
1743yy110:
1744#line 40 "nt_def.re.inc"
1745 {
1746 log_debug ("End of buffer.");
1747 return T_EOF;
1748}
1749#line 1750 "parser_nq.c"
1750}
1751#line 28 "lexer_nq.re"
1752
1753}
1754
1755
1756VOLK_rc
1757nq_parse_doc (FILE *fh, const char *sh, VOLK_Dataset *ds, void *txn)
1758{
1759 if (!fh && !sh) {
1760 log_error ("Neither file handle nor string input provided.");
1761 return VOLK_VALUE_ERR;
1762 }
1763
1764 NQParserState *state = calloc (1, sizeof (*state));
1765 NLRCCK (state, VOLK_MEM_ERR);
1766 state->ds = ds;
1767
1768 ParseIterator *parse_it = malloc (sizeof (*parse_it));
1769 NLRCCK (parse_it, VOLK_MEM_ERR);
1770 parse_init (parse_it, fh, sh);
1771 void *parser = NQParseAlloc (malloc);
1772
1773#ifdef VOLK_CODEC_DEBUG
1774 NQParseTrace (stderr, "NQ Parser > ");
1775#endif
1776
1777 VOLK_rc rc;
1778 VOLK_Term *term = NULL;
1779
1780 for (;;) {
1781 int ttype = lex (parse_it, &term);
1782
1783 if (ttype == -1) {
1784 log_error (
1785 "Lexical error near token `%s[…]` at line %u, character %ld.",
1786 parse_it->tok, parse_it->line, parse_it->cur - parse_it->bol
1787 );
1788 rc = state->rc = VOLK_PARSE_ERR;
1789
1790 goto finally;
1791 }
1792
1793 NQParse (parser, ttype, term, state);
1794
1795 if (ttype == T_EOF) break;
1796 };
1797
1798 rc = parse_it->ct > 0 ? VOLK_OK : VOLK_NORESULT;
1799
1800finally: ;
1801 NQParse (parser, 0, NULL, state);
1802 NQParseFree (parser, free);
1803
1804 free (parse_it->buf);
1805 free (parse_it);
1806
1807 VOLK_term_free (term);
1808
1809 return rc;
1810}
1811
Codec interface definition and basic elements common to all codecs.
#define UNLIKELY(x)
Definition core.h:39
#define T_IRIREF
Definition grammar_nq.c:19
#define T_EOF
Lemon parser grammar for N-Quads.
Definition grammar_nq.c:17
#define T_WS
Definition grammar_nq.c:23
#define T_LITERAL
Definition grammar_nq.c:21
void NQParseTrace(FILE *TraceFILE, char *zTracePrompt)
Definition grammar_nq.c:310
#define T_BNODE
Definition grammar_nq.c:20
#define T_EOL
Definition grammar_nq.c:22
#define T_DOT
Definition grammar_nq.c:18
#define log_debug(...)
Definition core.h:294
#define NLRCCK(exp, _rc)
Return rc return code if exp is NULL.
Definition core.h:370
#define log_trace(...)
Definition core.h:296
#define VOLK_VALUE_ERR
An invalid input value was provided.
Definition core.h:141
#define VOLK_MEM_ERR
Memory allocation error.
Definition core.h:156
#define VOLK_NORESULT
No result yielded.
Definition core.h:112
#define VOLK_OK
Generic success return code.
Definition core.h:95
#define VOLK_PARSE_ERR
Codec parser error.
Definition core.h:138
int VOLK_rc
Return code.
Definition core.h:91
VOLK_Term * VOLK_lt_literal_new(const char *data, char *lang)
Shortcut to create a language-tagged literal term.
Definition term.h:317
VOLK_Term * VOLK_iriref_new(const char *data)
Create an IRI reference.
Definition term.h:191
VOLK_TermType
Term type.
Definition term.h:30
VOLK_Term * VOLK_literal_new(const char *data, VOLK_Term *datatype)
Shortcut to create a literal term.
Definition term.h:266
void VOLK_term_free(VOLK_Term *term)
Definition term.c:392
VOLK_Term * VOLK_term_new(VOLK_TermType type, const char *data, void *metadata)
Create a new term.
Definition term.c:157
@ VOLK_TERM_LT_LITERAL
Language-tagged string literal.
Definition term.h:36
@ VOLK_TERM_LITERAL
Literal without language tag.
Definition term.h:35
@ VOLK_TERM_BNODE
Blank node.
Definition term.h:37
#define CHUNK_SIZE
uint8_t * unescape_unicode(const uint8_t *esc_str, size_t size)
Replace \uxxxx and \Uxxxxxxxx with Unicode bytes.
VOLK_rc nq_parse_doc(FILE *fh, const char *sh, VOLK_Dataset *ds, void *txn)
Parse an RDF document in NQuads format.
Definition parser_nq.c:1757
#define YYCTYPE
TTL is UTF-8 encoded.
#define YYCURSOR
Definition parser_nq.c:27
void * NQParseAlloc()
#define YYLIMIT
Definition parser_nq.c:29
void NQParseFree()
#define YYFILL
Definition parser_nq.c:30
#define YYMARKER
Definition parser_nq.c:28
#define YYCTYPE
TTL is UTF-8 encoded.
Definition parser_nq.c:26
void NQParse()
Parser state.
Definition parser_nq.h:13
VOLK_Dataset * ds
Dataset to write to.
Definition parser_nq.h:14
VOLK_rc rc
Internal return code.
Definition parser_nq.h:18
FILE * fh
Input file handle.
Definition parser_nq.c:34
size_t buf_size
Initial allocation for buffer.
Definition parser_nq.c:36
uint8_t * buf
Start of buffer.
Definition parser_nq.c:37
unsigned line
Current line no. (for debugging).
Definition parser_nq.c:45
uint8_t * cur
Next input character to be read (YYCURSOR).
Definition parser_nq.c:40
uint8_t * bol
Definition parser_nq.c:43
uint8_t * tok
Start of current token.
Definition parser_nq.c:42
const char * sh
Input string. Exclusive with fh.
Definition parser_nq.c:35
uint8_t * lim
Definition parser_nq.c:39
uint8_t * yyt1
Definition parser_nq.c:50
bool eof
if we have reached EOF.
Definition parser_nq.c:47
uint8_t * yyt2
Definition parser_nq.c:50
unsigned ct
Number of statements parsed.
Definition parser_nq.c:46
uint8_t * yyt3
Definition parser_nq.c:50
uint8_t * mar
Most recent match (YYMARKER).
Definition parser_nq.c:41
RDF Dataset type.
Definition dataset.h:26
RDF term.
Definition term.h:61