/* Generated by re2c 4.1 on Fri Aug 22 11:34:56 2025 */ #line 1 "lexer_ttl.re" #include "volksdata/codec/parser_ttl.h" #include "volksdata/codec/tokens_ttl.h" //#include "volksdata/codec/parser_common.h" /** BEGIN duplicate section * This section is bit-by-bit identical in NT and TTL lexers. The copy in * include/volksdata/codec/parser_common.h should be used, but some re2c tags * are not being parsed in that location. */ /** @brief TTL is UTF-8 encoded. * * @sa https://www.w3.org/TeamSubmission/turtle/#sec-grammar * * `char` should be considered to be UTF-8 throughout this library, however, * setting YYCTYPE to char generates case labels outside of the char range. */ #define YYCTYPE uint8_t #define YYCURSOR it->cur #define YYMARKER it->mar #define YYLIMIT it->lim #define YYFILL fill(it) == 0 typedef struct { FILE * fh; ///< Input file handle. const char * sh; ///< Input string. Exclusive with fh. size_t buf_size; ///< Initial allocation for buffer. YYCTYPE * buf, ///< Start of buffer. * lim, ///< Position after the last available ///< input character (YYLIMIT). * cur, ///< Next input character to be read (YYCURSOR) * mar, ///< Most recent match (YYMARKER) * tok, ///< Start of current token. * bol; ///< Address of the beginning of the ///< current line (for debugging). unsigned line; ///< Current line no. (for debugging). unsigned ct; ///< Number of statements parsed. bool eof; ///< if we have reached EOF. #line 44 "parser_ttl.c" YYCTYPE *yyt1; #line 40 "lexer_ttl.re" } ParseIterator; static int fill(ParseIterator *it) { if (it->eof) { return 1; } size_t shift = it->tok - it->buf; // If buffer is too small for the lexeme, double the capacity. while (shift < 1) { it->buf_size = 2 * it->buf_size; it->buf = realloc (it->buf, it->buf_size); if (!it->buf) { log_error ("Memory allocation error."); return -1; } shift = it->tok - it->buf; } LOG_DEBUG("Shifting bytes: %lu", shift); memmove (it->buf, it->tok, it->lim - it->tok); it->lim -= shift; it->cur -= shift; it->mar -= shift; it->tok -= shift; it->lim += fread (it->lim, 1, shift, it->fh); #line 76 "parser_ttl.c" if (it->yyt1) it->yyt1 -= shift; #line 68 "lexer_ttl.re" it->lim[0] = 0; it->eof |= it->lim < it->buf + CHUNK_SIZE - 1; return 0; } /** @brief Initialize parser. * * @param[in] it iterator handle to be initialized. * * @param[in] fh Open file handle to read from. This is exclusive with sh. If * both fh and sh are provided, fh has precedence. * * @param[in] sh String to read from. This is exclusive with fh. */ static void parse_init (ParseIterator *it, FILE *fh, const char *sh) { if(fh) { // Stream handling. It engages YYFILL and reads by chunks. #line 90 "lexer_ttl.re" it->fh = fh; it->sh = NULL; it->buf_size = CHUNK_SIZE; it->buf = malloc(it->buf_size); if (!it->buf) log_error ("Error allocating lexer buffer."); it->cur = it->mar = it->tok = it->lim = it->buf + it->buf_size - 1; it->bol = it->buf; it->eof = 0; } else { // String handling. Uses the provided string as the buffer. #line 103 "lexer_ttl.re" it->fh = NULL; it->sh = sh; it->buf_size = strlen(sh) + 1; it->buf = NULL; it->cur = it->tok = (YYCTYPE*)it->sh; it->lim = it->mar = it->cur + it->buf_size - 1; it->bol = it->cur; it->eof = 1; } it->line = 1; it->ct = 0; #line 125 "parser_ttl.c" it->yyt1 = NULL; #line 115 "lexer_ttl.re" if (it->fh) fill (it); } /** END duplicate section */ typedef struct { YYCTYPE * data; size_t size; } ParserToken; // Parser interface. Required here to silence linters. void *TTLParseAlloc(); void TTLParse(); void TTLParseFree(); #ifdef DEBUG void TTLParseTrace(); #endif static inline void newline (ParseIterator *it) { it->line ++; it->bol = YYCURSOR; LOG_TRACE("New line: #%u.", it->line); } // Lexer. static int lex (ParseIterator *it, YYCTYPE **token_p) { const YYCTYPE *pfx; #line 189 "lexer_ttl.re" loop: // Start new token. it->tok = it->cur; *token_p = NULL; #line 172 "parser_ttl.c" { YYCTYPE yych; unsigned int yyaccept = 0; yych = *YYCURSOR; switch (yych) { case '\t': case ' ': goto yy3; case '\n': case '\r': goto yy5; case '"': goto yy7; case '#': goto yy9; case '(': goto yy11; case ')': goto yy12; case '+': case '-': goto yy13; case ',': goto yy14; case '.': goto yy16; case '0' ... '9': goto yy18; case ':': goto yy20; case ';': goto yy22; case '<': goto yy24; case '@': goto yy25; case 'A' ... 'Z': case 'b' ... 'e': case 'g' ... 's': case 'u' ... 'z': goto yy26; case '[': goto yy27; case ']': goto yy29; case '^': goto yy30; case '_': goto yy31; case 'a': goto yy32; case 'f': goto yy34; case 't': goto yy35; case 0xC3: goto yy36; case 0xC4 ... 0xCB: case 0xCE ... 0xDF: goto yy37; case 0xCD: goto yy38; case 0xE0: goto yy39; case 0xE1: case 0xE4 ... 0xEC: goto yy40; case 0xE2: goto yy41; case 0xE3: goto yy42; case 0xED: goto yy43; case 0xEF: goto yy44; case 0xF0: goto yy45; case 0xF1 ... 0xF2: goto yy46; case 0xF3: goto yy47; default: if (YYLIMIT <= YYCURSOR) goto yy256; goto yy1; } yy1: ++YYCURSOR; yy2: #line 198 "lexer_ttl.re" { log_warn ( "Invalid token @ %lu: %s (\\x%x)", YYCURSOR - it->buf - 1, it->tok, *it->tok); return -1; } #line 235 "parser_ttl.c" yy3: yych = *++YYCURSOR; switch (yych) { case '\t' ... '\n': case '\r': case ' ': goto yy3; case '#': goto yy48; case ',': goto yy14; case '.': goto yy49; case ';': goto yy22; default: goto yy4; } yy4: #line 266 "lexer_ttl.re" { uint8_t *ws = uint8_ndup (it->tok, YYCURSOR - it->tok); LOG_TRACE("Whitespace: '%s'", ws); // Count newlines in mixed whitespace. // That's not great because it scans through the whole whitespace again // but it's the simplest and safest. for (size_t i = 0; i < strlen ((char *)ws); i++) if (ws[i] == '\n' || ws[i] == '\r') newline (it); free (ws); return T_WS; } #line 262 "parser_ttl.c" yy5: yych = *++YYCURSOR; switch (yych) { case '\t' ... '\n': case '\r': case ' ': goto yy3; case '#': goto yy48; case ',': goto yy14; case '.': goto yy49; case ';': goto yy22; default: goto yy6; } yy6: #line 211 "lexer_ttl.re" { newline (it); goto loop; } #line 281 "parser_ttl.c" yy7: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '"': goto yy50; default: goto yy8; } yy8: #line 218 "lexer_ttl.re" { goto schar; } #line 292 "parser_ttl.c" yy9: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case 0x01 ... '\t': case '\v' ... '\f': case 0x0E ... 0x7F: if (YYLIMIT <= YYCURSOR) goto yy10; goto yy9; case '\n': case '\r': goto yy3; case 0xC2 ... 0xDF: goto yy52; case 0xE0: goto yy53; case 0xE1 ... 0xEF: goto yy54; case 0xF0: goto yy55; case 0xF1 ... 0xF3: goto yy56; case 0xF4: goto yy57; default: goto yy10; } yy10: #line 261 "lexer_ttl.re" { LOG_TRACE("Comment: `%s`", it->tok); goto loop; } #line 319 "parser_ttl.c" yy11: ++YYCURSOR; #line 321 "lexer_ttl.re" { return T_LPAREN; } #line 324 "parser_ttl.c" yy12: ++YYCURSOR; #line 323 "lexer_ttl.re" { return T_RPAREN; } #line 329 "parser_ttl.c" yy13: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy58; case '0' ... '9': goto yy18; default: goto yy2; } yy14: yych = *++YYCURSOR; switch (yych) { case '\t' ... '\n': case '\r': case ' ': goto yy14; case '#': goto yy59; default: goto yy15; } yy15: #line 339 "lexer_ttl.re" { return T_COMMA; } #line 350 "parser_ttl.c" yy16: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': goto yy60; default: goto yy17; } yy17: #line 341 "lexer_ttl.re" { LOG_TRACE("End of statement #%u.", it->ct); it->ct++; return T_PERIOD; } #line 364 "parser_ttl.c" yy18: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy60; case '0' ... '9': goto yy18; case 'E': case 'e': goto yy62; default: goto yy19; } yy19: #line 286 "lexer_ttl.re" { // Normalize sign. size_t offset = *it->tok == '+' ? 1 : 0; *token_p = uint8_ndup (it->tok + offset, YYCURSOR - it->tok - offset); LOG_TRACE("Integer: %s", *token_p); return T_INTEGER; } #line 386 "parser_ttl.c" yy20: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '-': case '0' ... '9': case 0xC2: case 0xCC: goto yy21; case 0xCD: goto yy67; case 0xE2: goto yy70; default: goto yy64; } yy21: #line 247 "lexer_ttl.re" { *token_p = uint8_ndup (it->tok, YYCURSOR - it->tok); LOG_TRACE("ID name: %s", *token_p); return T_QNAME; } #line 408 "parser_ttl.c" yy22: yych = *++YYCURSOR; switch (yych) { case '\t' ... '\n': case '\r': case ' ': goto yy22; case '#': goto yy77; default: goto yy23; } yy23: #line 333 "lexer_ttl.re" { LOG_TRACE("End of object list."); return T_SEMICOLON; } #line 425 "parser_ttl.c" yy24: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ' ' ... 0x7F: case 0xC2 ... 0xF4: goto yy79; default: goto yy2; } yy25: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'B': goto yy89; case 'P': goto yy90; case 'a': case 'c' ... 'o': case 'q' ... 'z': goto yy91; case 'b': goto yy94; case 'p': goto yy95; default: goto yy2; } yy26: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '-': case '0' ... ':': case 'A' ... 'Z': case '_': case 'a' ... 'z': case 0xC2 ... 0xED: case 0xEF ... 0xF3: goto yy97; default: goto yy2; } yy27: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\t' ... '\n': case '\r': case ' ': goto yy111; case '#': goto yy112; case ']': goto yy113; default: goto yy28; } yy28: #line 327 "lexer_ttl.re" { return T_LBRACKET; } #line 474 "parser_ttl.c" yy29: ++YYCURSOR; #line 329 "lexer_ttl.re" { return T_RBRACKET; } #line 479 "parser_ttl.c" yy30: yych = *++YYCURSOR; switch (yych) { case '^': goto yy115; default: goto yy2; } yy31: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ':': goto yy116; default: goto yy2; } yy32: yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '-': case '0' ... ':': case 'A' ... 'Z': case '_': case 'a' ... 'z': case 0xC2 ... 0xED: case 0xEF ... 0xF3: goto yy97; default: goto yy33; } yy33: #line 349 "lexer_ttl.re" { LOG_TRACE("RDF type shorthand 'a'."); return T_RDF_TYPE; } #line 512 "parser_ttl.c" yy34: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '-': case '0' ... ':': case 'A' ... 'Z': case '_': case 'b' ... 'z': case 0xC2 ... 0xED: case 0xEF ... 0xF3: goto yy97; case 'a': goto yy117; default: goto yy2; } yy35: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '-': case '0' ... ':': case 'A' ... 'Z': case '_': case 'a' ... 'q': case 's' ... 'z': case 0xC2 ... 0xED: case 0xEF ... 0xF3: goto yy97; case 'r': goto yy118; default: goto yy2; } yy36: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80 ... 0x96: case 0x98 ... 0xB6: case 0xB8 ... 0xBF: goto yy96; default: goto yy2; } yy37: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80 ... 0xBF: goto yy96; default: goto yy2; } yy38: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0xB0 ... 0xBD: case 0xBF: goto yy96; default: goto yy2; } yy39: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0xA0 ... 0xBF: goto yy100; default: goto yy2; } yy40: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80 ... 0xBF: goto yy100; default: goto yy2; } yy41: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80: goto yy119; case 0x81: goto yy120; case 0x82 ... 0x85: case 0xB0 ... 0xBE: goto yy100; case 0x86: goto yy121; case 0xBF: goto yy122; default: goto yy2; } yy42: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80: goto yy123; case 0x81 ... 0xBF: goto yy100; default: goto yy2; } yy43: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80 ... 0x9F: goto yy100; default: goto yy2; } yy44: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0xA4 ... 0xB6: case 0xB8 ... 0xBE: goto yy100; case 0xB7: goto yy124; case 0xBF: goto yy125; default: goto yy2; } yy45: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x90 ... 0xBF: goto yy103; default: goto yy2; } yy46: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80 ... 0xBF: goto yy103; default: goto yy2; } yy47: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80 ... 0xAF: goto yy103; default: goto yy2; } yy48: yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case 0x01 ... '\t': case '\v' ... '\f': case 0x0E ... 0x7F: if (YYLIMIT <= YYCURSOR) goto yy4; goto yy48; case '\n': case '\r': goto yy3; case 0xC2 ... 0xDF: goto yy126; case 0xE0: goto yy127; case 0xE1 ... 0xEF: goto yy128; case 0xF0: goto yy129; case 0xF1 ... 0xF3: goto yy130; case 0xF4: goto yy131; default: goto yy4; } yy49: ++YYCURSOR; goto yy17; yy50: yych = *++YYCURSOR; switch (yych) { case '"': goto yy132; default: goto yy51; } yy51: YYCURSOR = YYMARKER; switch (yyaccept) { case 0: goto yy8; case 1: goto yy10; case 2: goto yy2; case 3: goto yy19; case 4: goto yy21; case 5: goto yy28; case 6: goto yy33; case 7: goto yy4; case 8: goto yy15; case 9: goto yy61; case 10: goto yy23; case 11: goto yy93; case 12: goto yy81; case 13: goto yy114; case 14: goto yy175; case 15: goto yy208; case 16: goto yy210; default: goto yy223; } yy52: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy9; default: goto yy51; } yy53: yych = *++YYCURSOR; switch (yych) { case 0xA0 ... 0xBF: goto yy52; default: goto yy51; } yy54: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy52; default: goto yy51; } yy55: yych = *++YYCURSOR; switch (yych) { case 0x90 ... 0xBF: goto yy54; default: goto yy51; } yy56: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy54; default: goto yy51; } yy57: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: goto yy54; default: goto yy51; } yy58: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': goto yy60; default: goto yy51; } yy59: yyaccept = 8; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case 0x01 ... '\t': case '\v' ... '\f': case 0x0E ... 0x7F: if (YYLIMIT <= YYCURSOR) goto yy15; goto yy59; case '\n': case '\r': goto yy14; case 0xC2 ... 0xDF: goto yy133; case 0xE0: goto yy134; case 0xE1 ... 0xEF: goto yy135; case 0xF0: goto yy136; case 0xF1 ... 0xF3: goto yy137; case 0xF4: goto yy138; default: goto yy15; } yy60: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0' ... '9': goto yy60; case 'E': case 'e': goto yy62; default: goto yy61; } yy61: #line 306 "lexer_ttl.re" { // Normalize sign. YYCTYPE offset = *it->tok == '+' ? 1 : 0; // Normalize trailing zeros in fractional part. size_t size = YYCURSOR - it->tok - offset; if (strchr ((char *)it->tok, '.')) for (YYCTYPE *i = YYCURSOR; *i == '0'; i--) size--; *token_p = uint8_ndup (it->tok + offset, size); LOG_TRACE("Integer: %s", *token_p); return T_DECIMAL; } #line 776 "parser_ttl.c" yy62: yych = *++YYCURSOR; switch (yych) { case '+': case '-': goto yy139; case '0' ... '9': goto yy140; default: goto yy51; } yy63: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); yy64: switch (yych) { case '-': case '0' ... '9': case 'A' ... 'Z': case '_': case 'a' ... 'z': goto yy63; case 0xC2: goto yy142; case 0xC3: goto yy65; case 0xC4 ... 0xCC: case 0xCE ... 0xDF: goto yy66; case 0xCD: goto yy143; case 0xE0: goto yy68; case 0xE1: case 0xE4 ... 0xEC: goto yy69; case 0xE2: goto yy144; case 0xE3: goto yy71; case 0xED: goto yy72; case 0xEF: goto yy73; case 0xF0: goto yy74; case 0xF1 ... 0xF2: goto yy75; case 0xF3: goto yy76; default: goto yy21; } yy65: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x96: case 0x98 ... 0xB6: case 0xB8 ... 0xBF: goto yy63; default: goto yy51; } yy66: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy63; default: goto yy51; } yy67: yych = *++YYCURSOR; switch (yych) { case 0xB0 ... 0xBD: case 0xBF: goto yy63; default: goto yy51; } yy68: yych = *++YYCURSOR; switch (yych) { case 0xA0 ... 0xBF: goto yy66; default: goto yy51; } yy69: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy66; default: goto yy51; } yy70: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy145; case 0x81: goto yy146; case 0x82 ... 0x85: case 0xB0 ... 0xBE: goto yy66; case 0x86: goto yy147; case 0xBF: goto yy148; default: goto yy51; } yy71: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy149; case 0x81 ... 0xBF: goto yy66; default: goto yy51; } yy72: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x9F: goto yy66; default: goto yy51; } yy73: yych = *++YYCURSOR; switch (yych) { case 0xA4 ... 0xB6: case 0xB8 ... 0xBE: goto yy66; case 0xB7: goto yy150; case 0xBF: goto yy151; default: goto yy51; } yy74: yych = *++YYCURSOR; switch (yych) { case 0x90 ... 0xBF: goto yy69; default: goto yy51; } yy75: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy69; default: goto yy51; } yy76: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xAF: goto yy69; default: goto yy51; } yy77: yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case 0x01 ... '\t': case '\v' ... '\f': case 0x0E ... 0x7F: if (YYLIMIT <= YYCURSOR) goto yy23; goto yy77; case '\n': case '\r': goto yy22; case 0xC2 ... 0xDF: goto yy152; case 0xE0: goto yy153; case 0xE1 ... 0xEF: goto yy154; case 0xF0: goto yy155; case 0xF1 ... 0xF3: goto yy156; case 0xF4: goto yy157; default: goto yy23; } yy78: yych = *++YYCURSOR; yy79: switch (yych) { case ' ' ... '=': case '?' ... '[': case ']' ... 0x7F: goto yy78; case '>': goto yy80; case '\\': goto yy82; case 0xC2 ... 0xDF: goto yy83; case 0xE0: goto yy84; case 0xE1 ... 0xEF: goto yy85; case 0xF0: goto yy86; case 0xF1 ... 0xF3: goto yy87; case 0xF4: goto yy88; default: goto yy51; } yy80: ++YYCURSOR; yy81: #line 227 "lexer_ttl.re" { *token_p = uint8_ndup (it->tok + 1, YYCURSOR - it->tok - 2); LOG_TRACE("URI data: %s", *token_p); return T_IRIREF; } #line 943 "parser_ttl.c" yy82: yych = *++YYCURSOR; switch (yych) { case ' ' ... '=': case '?' ... '[': case ']' ... 0x7F: goto yy78; case '>': goto yy158; case '\\': goto yy82; case 0xC2 ... 0xDF: goto yy83; case 0xE0: goto yy84; case 0xE1 ... 0xEF: goto yy85; case 0xF0: goto yy86; case 0xF1 ... 0xF3: goto yy87; case 0xF4: goto yy88; default: goto yy51; } yy83: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy78; default: goto yy51; } yy84: yych = *++YYCURSOR; switch (yych) { case 0xA0 ... 0xBF: goto yy83; default: goto yy51; } yy85: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy83; default: goto yy51; } yy86: yych = *++YYCURSOR; switch (yych) { case 0x90 ... 0xBF: goto yy85; default: goto yy51; } yy87: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy85; default: goto yy51; } yy88: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: goto yy85; default: goto yy51; } yy89: yych = *++YYCURSOR; switch (yych) { case 'A': case 'a': goto yy159; default: goto yy51; } yy90: yych = *++YYCURSOR; switch (yych) { case 'R': case 'r': goto yy160; default: goto yy51; } yy91: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); yy92: switch (yych) { case '-': goto yy161; case 'a' ... 'z': goto yy91; default: goto yy93; } yy93: #line 279 "lexer_ttl.re" { *token_p = uint8_ndup (it->tok + 1, YYCURSOR - it->tok - 1); LOG_TRACE("Lang tag: '%s'", *token_p); return T_LANGTAG; } #line 1027 "parser_ttl.c" yy94: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: goto yy93; case 'A': goto yy159; case 'a': goto yy162; default: goto yy92; } yy95: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: goto yy93; case 'R': goto yy160; case 'r': goto yy163; default: goto yy92; } yy96: yych = *++YYCURSOR; yy97: switch (yych) { case '-': case '0' ... '9': case 'A' ... 'Z': case '_': case 'a' ... 'z': goto yy96; case ':': goto yy20; case 0xC2: goto yy98; case 0xC3: goto yy99; case 0xC4 ... 0xCC: case 0xCE ... 0xDF: goto yy100; case 0xCD: goto yy101; case 0xE0: goto yy102; case 0xE1: case 0xE4 ... 0xEC: goto yy103; case 0xE2: goto yy104; case 0xE3: goto yy105; case 0xED: goto yy106; case 0xEF: goto yy107; case 0xF0: goto yy108; case 0xF1 ... 0xF2: goto yy109; case 0xF3: goto yy110; default: goto yy51; } yy98: yych = *++YYCURSOR; switch (yych) { case 0xB7: goto yy96; default: goto yy51; } yy99: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x96: case 0x98 ... 0xB6: case 0xB8 ... 0xBF: goto yy96; default: goto yy51; } yy100: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy96; default: goto yy51; } yy101: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBD: case 0xBF: goto yy96; default: goto yy51; } yy102: yych = *++YYCURSOR; switch (yych) { case 0xA0 ... 0xBF: goto yy100; default: goto yy51; } yy103: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy100; default: goto yy51; } yy104: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy164; case 0x81: goto yy165; case 0x82 ... 0x85: case 0xB0 ... 0xBE: goto yy100; case 0x86: goto yy121; case 0xBF: goto yy122; default: goto yy51; } yy105: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy123; case 0x81 ... 0xBF: goto yy100; default: goto yy51; } yy106: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x9F: goto yy100; default: goto yy51; } yy107: yych = *++YYCURSOR; switch (yych) { case 0xA4 ... 0xB6: case 0xB8 ... 0xBE: goto yy100; case 0xB7: goto yy124; case 0xBF: goto yy125; default: goto yy51; } yy108: yych = *++YYCURSOR; switch (yych) { case 0x90 ... 0xBF: goto yy103; default: goto yy51; } yy109: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy103; default: goto yy51; } yy110: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xAF: goto yy103; default: goto yy51; } yy111: yych = *++YYCURSOR; switch (yych) { case '\t' ... '\n': case '\r': case ' ': goto yy111; case '#': goto yy112; case ']': goto yy113; default: goto yy51; } yy112: yych = *++YYCURSOR; switch (yych) { case 0x00: case 0x01 ... '\t': case '\v' ... '\f': case 0x0E ... '\\': case '^' ... 0x7F: if (YYLIMIT <= YYCURSOR) goto yy51; goto yy112; case '\n': case '\r': goto yy111; case ']': goto yy166; case 0xC2 ... 0xDF: goto yy167; case 0xE0: goto yy168; case 0xE1 ... 0xEF: goto yy169; case 0xF0: goto yy170; case 0xF1 ... 0xF3: goto yy171; case 0xF4: goto yy172; default: goto yy51; } yy113: ++YYCURSOR; yy114: #line 325 "lexer_ttl.re" { return T_ANON; } #line 1199 "parser_ttl.c" yy115: ++YYCURSOR; #line 347 "lexer_ttl.re" { return T_DTYPE_MARKER; } #line 1204 "parser_ttl.c" yy116: yych = *++YYCURSOR; switch (yych) { case 'A' ... 'Z': case '_': case 'a' ... 'z': case 0xC3 ... 0xCB: case 0xCE ... 0xE1: case 0xE3 ... 0xED: case 0xEF ... 0xF3: goto yy174; case 0xCD: goto yy178; case 0xE2: goto yy181; default: goto yy51; } yy117: yych = *++YYCURSOR; switch (yych) { case 0x00: goto yy51; case 'l': goto yy188; default: goto yy97; } yy118: yych = *++YYCURSOR; switch (yych) { case 0x00: goto yy51; case 'u': goto yy189; default: goto yy97; } yy119: yych = *++YYCURSOR; switch (yych) { case 0x8C ... 0x8D: goto yy96; default: goto yy51; } yy120: yych = *++YYCURSOR; switch (yych) { case 0xB0 ... 0xBF: goto yy96; default: goto yy51; } yy121: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: goto yy96; default: goto yy51; } yy122: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xAF: goto yy96; default: goto yy51; } yy123: yych = *++YYCURSOR; switch (yych) { case 0x81 ... 0xBF: goto yy96; default: goto yy51; } yy124: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: case 0xB0 ... 0xBF: goto yy96; default: goto yy51; } yy125: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBD: goto yy96; default: goto yy51; } yy126: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy48; default: goto yy51; } yy127: yych = *++YYCURSOR; switch (yych) { case 0xA0 ... 0xBF: goto yy126; default: goto yy51; } yy128: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy126; default: goto yy51; } yy129: yych = *++YYCURSOR; switch (yych) { case 0x90 ... 0xBF: goto yy128; default: goto yy51; } yy130: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy128; default: goto yy51; } yy131: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: goto yy128; default: goto yy51; } yy132: ++YYCURSOR; #line 216 "lexer_ttl.re" { goto lchar; } #line 1316 "parser_ttl.c" yy133: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy59; default: goto yy51; } yy134: yych = *++YYCURSOR; switch (yych) { case 0xA0 ... 0xBF: goto yy133; default: goto yy51; } yy135: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy133; default: goto yy51; } yy136: yych = *++YYCURSOR; switch (yych) { case 0x90 ... 0xBF: goto yy135; default: goto yy51; } yy137: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy135; default: goto yy51; } yy138: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: goto yy135; default: goto yy51; } yy139: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': goto yy140; default: goto yy51; } yy140: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': goto yy140; default: goto yy141; } yy141: #line 296 "lexer_ttl.re" { // Normalize sign. size_t offset = *it->tok == '+' ? 1 : 0; *token_p = uint8_ndup (it->tok + offset, YYCURSOR - it->tok - offset); LOG_TRACE("Integer: %s", *token_p); return T_DOUBLE; } #line 1376 "parser_ttl.c" yy142: yych = *++YYCURSOR; switch (yych) { case 0xB7: goto yy63; default: goto yy51; } yy143: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBD: case 0xBF: goto yy63; default: goto yy51; } yy144: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy190; case 0x81: goto yy191; case 0x82 ... 0x85: case 0xB0 ... 0xBE: goto yy66; case 0x86: goto yy147; case 0xBF: goto yy148; default: goto yy51; } yy145: yych = *++YYCURSOR; switch (yych) { case 0x8C ... 0x8D: goto yy63; default: goto yy51; } yy146: yych = *++YYCURSOR; switch (yych) { case 0xB0 ... 0xBF: goto yy63; default: goto yy51; } yy147: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: goto yy63; default: goto yy51; } yy148: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xAF: goto yy63; default: goto yy51; } yy149: yych = *++YYCURSOR; switch (yych) { case 0x81 ... 0xBF: goto yy63; default: goto yy51; } yy150: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: case 0xB0 ... 0xBF: goto yy63; default: goto yy51; } yy151: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBD: goto yy63; default: goto yy51; } yy152: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy77; default: goto yy51; } yy153: yych = *++YYCURSOR; switch (yych) { case 0xA0 ... 0xBF: goto yy152; default: goto yy51; } yy154: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy152; default: goto yy51; } yy155: yych = *++YYCURSOR; switch (yych) { case 0x90 ... 0xBF: goto yy154; default: goto yy51; } yy156: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy154; default: goto yy51; } yy157: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: goto yy154; default: goto yy51; } yy158: yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ' ' ... '=': case '?' ... '[': case ']' ... 0x7F: goto yy78; case '>': goto yy80; case '\\': goto yy82; case 0xC2 ... 0xDF: goto yy83; case 0xE0: goto yy84; case 0xE1 ... 0xEF: goto yy85; case 0xF0: goto yy86; case 0xF1 ... 0xF3: goto yy87; case 0xF4: goto yy88; default: goto yy81; } yy159: yych = *++YYCURSOR; switch (yych) { case 'S': case 's': goto yy192; default: goto yy51; } yy160: yych = *++YYCURSOR; switch (yych) { case 'E': case 'e': goto yy193; default: goto yy51; } yy161: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'Z': case 'a' ... 'z': goto yy194; default: goto yy51; } yy162: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: goto yy93; case 'S': goto yy192; case 's': goto yy195; default: goto yy92; } yy163: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: goto yy93; case 'E': goto yy193; case 'e': goto yy196; default: goto yy92; } yy164: yych = *++YYCURSOR; switch (yych) { case 0x8C ... 0x8D: case 0xBF: goto yy96; default: goto yy51; } yy165: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0xB0 ... 0xBF: goto yy96; default: goto yy51; } yy166: yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case 0x01 ... '\t': case '\v' ... '\f': case 0x0E ... '\\': case '^' ... 0x7F: if (YYLIMIT <= YYCURSOR) goto yy114; goto yy112; case '\n': case '\r': goto yy111; case ']': goto yy166; case 0xC2 ... 0xDF: goto yy167; case 0xE0: goto yy168; case 0xE1 ... 0xEF: goto yy169; case 0xF0: goto yy170; case 0xF1 ... 0xF3: goto yy171; case 0xF4: goto yy172; default: goto yy114; } yy167: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy112; default: goto yy51; } yy168: yych = *++YYCURSOR; switch (yych) { case 0xA0 ... 0xBF: goto yy167; default: goto yy51; } yy169: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy167; default: goto yy51; } yy170: yych = *++YYCURSOR; switch (yych) { case 0x90 ... 0xBF: goto yy169; default: goto yy51; } yy171: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy169; default: goto yy51; } yy172: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: goto yy169; default: goto yy51; } yy173: yyaccept = 14; yych = *(YYMARKER = ++YYCURSOR); yy174: switch (yych) { case '-': case '0' ... '9': case 'A' ... 'Z': case '_': case 'a' ... 'z': goto yy173; case 0xC2: goto yy197; case 0xC3: goto yy176; case 0xC4 ... 0xCC: case 0xCE ... 0xDF: goto yy177; case 0xCD: goto yy198; case 0xE0: goto yy179; case 0xE1: case 0xE4 ... 0xEC: goto yy180; case 0xE2: goto yy199; case 0xE3: goto yy182; case 0xED: goto yy183; case 0xEF: goto yy184; case 0xF0: goto yy185; case 0xF1 ... 0xF2: goto yy186; case 0xF3: goto yy187; default: goto yy175; } yy175: #line 254 "lexer_ttl.re" { *token_p = uint8_ndup (it->tok + 2, YYCURSOR - it->tok - 2); LOG_TRACE("BNode name: %s", *token_p); return T_BNODE_ID; } #line 1644 "parser_ttl.c" yy176: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x96: case 0x98 ... 0xB6: case 0xB8 ... 0xBF: goto yy173; default: goto yy51; } yy177: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy173; default: goto yy51; } yy178: yych = *++YYCURSOR; switch (yych) { case 0xB0 ... 0xBD: case 0xBF: goto yy173; default: goto yy51; } yy179: yych = *++YYCURSOR; switch (yych) { case 0xA0 ... 0xBF: goto yy177; default: goto yy51; } yy180: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy177; default: goto yy51; } yy181: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy200; case 0x81: goto yy201; case 0x82 ... 0x85: case 0xB0 ... 0xBE: goto yy177; case 0x86: goto yy202; case 0xBF: goto yy203; default: goto yy51; } yy182: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy204; case 0x81 ... 0xBF: goto yy177; default: goto yy51; } yy183: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x9F: goto yy177; default: goto yy51; } yy184: yych = *++YYCURSOR; switch (yych) { case 0xA4 ... 0xB6: case 0xB8 ... 0xBE: goto yy177; case 0xB7: goto yy205; case 0xBF: goto yy206; default: goto yy51; } yy185: yych = *++YYCURSOR; switch (yych) { case 0x90 ... 0xBF: goto yy180; default: goto yy51; } yy186: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy180; default: goto yy51; } yy187: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xAF: goto yy180; default: goto yy51; } yy188: yych = *++YYCURSOR; switch (yych) { case 0x00: goto yy51; case 's': goto yy189; default: goto yy97; } yy189: yych = *++YYCURSOR; switch (yych) { case 0x00: goto yy51; case 'e': goto yy207; default: goto yy97; } yy190: yych = *++YYCURSOR; switch (yych) { case 0x8C ... 0x8D: case 0xBF: goto yy63; default: goto yy51; } yy191: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0xB0 ... 0xBF: goto yy63; default: goto yy51; } yy192: yych = *++YYCURSOR; switch (yych) { case 'E': case 'e': goto yy209; default: goto yy51; } yy193: yych = *++YYCURSOR; switch (yych) { case 'F': case 'f': goto yy211; default: goto yy51; } yy194: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '-': goto yy161; case '0' ... '9': case 'A' ... 'Z': case 'a' ... 'z': goto yy194; default: goto yy93; } yy195: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: goto yy93; case 'E': goto yy209; case 'e': goto yy212; default: goto yy92; } yy196: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: goto yy93; case 'F': goto yy211; case 'f': goto yy213; default: goto yy92; } yy197: yych = *++YYCURSOR; switch (yych) { case 0xB7: goto yy173; default: goto yy51; } yy198: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBD: case 0xBF: goto yy173; default: goto yy51; } yy199: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy214; case 0x81: goto yy215; case 0x82 ... 0x85: case 0xB0 ... 0xBE: goto yy177; case 0x86: goto yy202; case 0xBF: goto yy203; default: goto yy51; } yy200: yych = *++YYCURSOR; switch (yych) { case 0x8C ... 0x8D: goto yy173; default: goto yy51; } yy201: yych = *++YYCURSOR; switch (yych) { case 0xB0 ... 0xBF: goto yy173; default: goto yy51; } yy202: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: goto yy173; default: goto yy51; } yy203: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xAF: goto yy173; default: goto yy51; } yy204: yych = *++YYCURSOR; switch (yych) { case 0x81 ... 0xBF: goto yy173; default: goto yy51; } yy205: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: case 0xB0 ... 0xBF: goto yy173; default: goto yy51; } yy206: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBD: goto yy173; default: goto yy51; } yy207: yyaccept = 15; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '-': case '0' ... ':': case 'A' ... 'Z': case '_': case 'a' ... 'z': case 0xC2 ... 0xED: case 0xEF ... 0xF3: goto yy97; default: goto yy208; } yy208: #line 220 "lexer_ttl.re" { *token_p = uint8_ndup (it->tok, YYCURSOR - it->tok); LOG_TRACE("Boolean: %s", *token_p); return T_BOOLEAN; } #line 1887 "parser_ttl.c" yy209: ++YYCURSOR; yy210: #line 241 "lexer_ttl.re" { LOG_TRACE("'@base' keyword."); return T_BASE; } #line 1897 "parser_ttl.c" yy211: yych = *++YYCURSOR; switch (yych) { case 'I': case 'i': goto yy216; default: goto yy51; } yy212: yyaccept = 16; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '-': goto yy161; case 'a' ... 'z': goto yy91; default: goto yy210; } yy213: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: goto yy93; case 'I': goto yy216; case 'i': goto yy217; default: goto yy92; } yy214: yych = *++YYCURSOR; switch (yych) { case 0x8C ... 0x8D: case 0xBF: goto yy173; default: goto yy51; } yy215: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0xB0 ... 0xBF: goto yy173; default: goto yy51; } yy216: yych = *++YYCURSOR; switch (yych) { case 'X': case 'x': goto yy218; default: goto yy51; } yy217: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: goto yy93; case 'X': goto yy218; case 'x': goto yy219; default: goto yy92; } yy218: yych = *++YYCURSOR; switch (yych) { case '\t' ... '\n': case '\r': case ' ': goto yy220; case '#': goto yy221; default: goto yy51; } yy219: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: goto yy93; case '\t' ... '\n': case '\r': case ' ': goto yy220; case '#': goto yy221; default: goto yy92; } yy220: yych = *++YYCURSOR; switch (yych) { case '\t' ... '\n': case '\r': case ' ': goto yy220; case '#': goto yy221; case ':': it->yyt1 = YYCURSOR; goto yy222; case 'A' ... 'Z': case 'a' ... 'z': it->yyt1 = YYCURSOR; goto yy224; case 0xC3: it->yyt1 = YYCURSOR; goto yy225; case 0xC4 ... 0xCB: case 0xCE ... 0xDF: it->yyt1 = YYCURSOR; goto yy226; case 0xCD: it->yyt1 = YYCURSOR; goto yy227; case 0xE0: it->yyt1 = YYCURSOR; goto yy228; case 0xE1: case 0xE4 ... 0xEC: it->yyt1 = YYCURSOR; goto yy229; case 0xE2: it->yyt1 = YYCURSOR; goto yy230; case 0xE3: it->yyt1 = YYCURSOR; goto yy231; case 0xED: it->yyt1 = YYCURSOR; goto yy232; case 0xEF: it->yyt1 = YYCURSOR; goto yy233; case 0xF0: it->yyt1 = YYCURSOR; goto yy234; case 0xF1 ... 0xF2: it->yyt1 = YYCURSOR; goto yy235; case 0xF3: it->yyt1 = YYCURSOR; goto yy236; default: goto yy51; } yy221: yych = *++YYCURSOR; switch (yych) { case 0x00: case 0x01 ... '\t': case '\v' ... '\f': case 0x0E ... '9': case ';' ... 0x7F: if (YYLIMIT <= YYCURSOR) goto yy51; goto yy221; case '\n': case '\r': goto yy220; case ':': it->yyt1 = YYCURSOR; goto yy237; case 0xC2 ... 0xDF: goto yy238; case 0xE0: goto yy239; case 0xE1 ... 0xEF: goto yy240; case 0xF0: goto yy241; case 0xF1 ... 0xF3: goto yy242; case 0xF4: goto yy243; default: goto yy51; } yy222: ++YYCURSOR; yy223: pfx = it->yyt1; #line 234 "lexer_ttl.re" { *token_p = uint8_ndup (pfx, YYCURSOR - pfx - 1); LOG_TRACE("Prefix declaration: '%s'", *token_p); return T_PREFIX; } #line 2060 "parser_ttl.c" yy224: yych = *++YYCURSOR; switch (yych) { case '-': case '0' ... '9': case 'A' ... 'Z': case '_': case 'a' ... 'z': goto yy224; case ':': goto yy222; case 0xC2: goto yy244; case 0xC3: goto yy225; case 0xC4 ... 0xCC: case 0xCE ... 0xDF: goto yy226; case 0xCD: goto yy245; case 0xE0: goto yy228; case 0xE1: case 0xE4 ... 0xEC: goto yy229; case 0xE2: goto yy246; case 0xE3: goto yy231; case 0xED: goto yy232; case 0xEF: goto yy233; case 0xF0: goto yy234; case 0xF1 ... 0xF2: goto yy235; case 0xF3: goto yy236; default: goto yy51; } yy225: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x96: case 0x98 ... 0xB6: case 0xB8 ... 0xBF: goto yy224; default: goto yy51; } yy226: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy224; default: goto yy51; } yy227: yych = *++YYCURSOR; switch (yych) { case 0xB0 ... 0xBD: case 0xBF: goto yy224; default: goto yy51; } yy228: yych = *++YYCURSOR; switch (yych) { case 0xA0 ... 0xBF: goto yy226; default: goto yy51; } yy229: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy226; default: goto yy51; } yy230: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy247; case 0x81: goto yy248; case 0x82 ... 0x85: case 0xB0 ... 0xBE: goto yy226; case 0x86: goto yy249; case 0xBF: goto yy250; default: goto yy51; } yy231: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy251; case 0x81 ... 0xBF: goto yy226; default: goto yy51; } yy232: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x9F: goto yy226; default: goto yy51; } yy233: yych = *++YYCURSOR; switch (yych) { case 0xA4 ... 0xB6: case 0xB8 ... 0xBE: goto yy226; case 0xB7: goto yy252; case 0xBF: goto yy253; default: goto yy51; } yy234: yych = *++YYCURSOR; switch (yych) { case 0x90 ... 0xBF: goto yy229; default: goto yy51; } yy235: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy229; default: goto yy51; } yy236: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xAF: goto yy229; default: goto yy51; } yy237: yyaccept = 17; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case 0x01 ... '\t': case '\v' ... '\f': case 0x0E ... '9': case ';' ... 0x7F: if (YYLIMIT <= YYCURSOR) goto yy223; goto yy221; case '\n': case '\r': goto yy220; case ':': it->yyt1 = YYCURSOR; goto yy237; case 0xC2 ... 0xDF: goto yy238; case 0xE0: goto yy239; case 0xE1 ... 0xEF: goto yy240; case 0xF0: goto yy241; case 0xF1 ... 0xF3: goto yy242; case 0xF4: goto yy243; default: goto yy223; } yy238: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy221; default: goto yy51; } yy239: yych = *++YYCURSOR; switch (yych) { case 0xA0 ... 0xBF: goto yy238; default: goto yy51; } yy240: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy238; default: goto yy51; } yy241: yych = *++YYCURSOR; switch (yych) { case 0x90 ... 0xBF: goto yy240; default: goto yy51; } yy242: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy240; default: goto yy51; } yy243: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: goto yy240; default: goto yy51; } yy244: yych = *++YYCURSOR; switch (yych) { case 0xB7: goto yy224; default: goto yy51; } yy245: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBD: case 0xBF: goto yy224; default: goto yy51; } yy246: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy254; case 0x81: goto yy255; case 0x82 ... 0x85: case 0xB0 ... 0xBE: goto yy226; case 0x86: goto yy249; case 0xBF: goto yy250; default: goto yy51; } yy247: yych = *++YYCURSOR; switch (yych) { case 0x8C ... 0x8D: goto yy224; default: goto yy51; } yy248: yych = *++YYCURSOR; switch (yych) { case 0xB0 ... 0xBF: goto yy224; default: goto yy51; } yy249: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: goto yy224; default: goto yy51; } yy250: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xAF: goto yy224; default: goto yy51; } yy251: yych = *++YYCURSOR; switch (yych) { case 0x81 ... 0xBF: goto yy224; default: goto yy51; } yy252: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0x8F: case 0xB0 ... 0xBF: goto yy224; default: goto yy51; } yy253: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBD: goto yy224; default: goto yy51; } yy254: yych = *++YYCURSOR; switch (yych) { case 0x8C ... 0x8D: case 0xBF: goto yy224; default: goto yy51; } yy255: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0xB0 ... 0xBF: goto yy224; default: goto yy51; } yy256: #line 206 "lexer_ttl.re" { LOG_TRACE("End of document."); return T_EOF; } #line 2318 "parser_ttl.c" } #line 354 "lexer_ttl.re" schar: #line 2325 "parser_ttl.c" { YYCTYPE yych; unsigned int yyaccept = 0; yych = *YYCURSOR; switch (yych) { case ' ' ... '!': case '#' ... '[': case ']' ... 0x7F: goto yy260; case '"': goto yy262; case '\\': goto yy263; case 0xC2 ... 0xDF: goto yy264; case 0xE0: goto yy265; case 0xE1 ... 0xEF: goto yy266; case 0xF0: goto yy267; case 0xF1 ... 0xF3: goto yy268; case 0xF4: goto yy269; default: if (YYLIMIT <= YYCURSOR) goto yy281; goto yy258; } yy258: ++YYCURSOR; yy259: #line 359 "lexer_ttl.re" { log_warn ( "Invalid token in string @ %lu: %s (\\x%x)", YYCURSOR - it->buf - 1, it->tok, *it->tok); return -1; } #line 2357 "parser_ttl.c" yy260: ++YYCURSOR; yy261: #line 373 "lexer_ttl.re" { goto schar; } #line 2363 "parser_ttl.c" yy262: ++YYCURSOR; #line 375 "lexer_ttl.re" { *token_p = unescape_unicode (it->tok + 1, YYCURSOR - it->tok - 2); LOG_TRACE("String: %s", *token_p); return T_STRING; } #line 2373 "parser_ttl.c" yy263: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '"': goto yy260; case 'U': goto yy270; case 'u': goto yy272; default: goto yy261; } yy264: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy260; default: goto yy259; } yy265: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0xA0 ... 0xBF: goto yy273; default: goto yy259; } yy266: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80 ... 0xBF: goto yy273; default: goto yy259; } yy267: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x90 ... 0xBF: goto yy274; default: goto yy259; } yy268: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80 ... 0xBF: goto yy274; default: goto yy259; } yy269: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80 ... 0x8F: goto yy274; default: goto yy259; } yy270: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy275; default: goto yy271; } yy271: YYCURSOR = YYMARKER; if (yyaccept == 0) goto yy261; else goto yy259; yy272: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy276; default: goto yy271; } yy273: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy260; default: goto yy271; } yy274: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy273; default: goto yy271; } yy275: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy277; default: goto yy271; } yy276: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy278; default: goto yy271; } yy277: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy279; default: goto yy271; } yy278: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy280; default: goto yy271; } yy279: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy272; default: goto yy271; } yy280: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy260; default: goto yy271; } yy281: #line 367 "lexer_ttl.re" { log_warn ("Unterminated string!"); return -1; } #line 2503 "parser_ttl.c" } #line 382 "lexer_ttl.re" lchar: #line 2510 "parser_ttl.c" { YYCTYPE yych; unsigned int yyaccept = 0; yych = *YYCURSOR; switch (yych) { case '\t' ... '\n': case '\r': case ' ' ... '!': case '#' ... '[': case ']' ... 0x7F: goto yy285; case '"': goto yy287; case '\\': goto yy288; case 0xC2 ... 0xDF: goto yy289; case 0xE0: goto yy290; case 0xE1 ... 0xEF: goto yy291; case 0xF0: goto yy292; case 0xF1 ... 0xF3: goto yy293; case 0xF4: goto yy294; default: if (YYLIMIT <= YYCURSOR) goto yy308; goto yy283; } yy283: ++YYCURSOR; yy284: #line 402 "lexer_ttl.re" { log_warn ( "Invalid token in long string @ %lu: %s (\\x%x)", YYCURSOR - it->buf - 1, it->tok, *it->tok); return -1; } #line 2544 "parser_ttl.c" yy285: ++YYCURSOR; yy286: #line 393 "lexer_ttl.re" { goto lchar; } #line 2550 "parser_ttl.c" yy287: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '"': goto yy295; default: goto yy286; } yy288: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '"': case 'n': case 'r': case 't': goto yy285; case 'U': goto yy297; case 'u': goto yy298; default: goto yy286; } yy289: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy285; default: goto yy284; } yy290: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0xA0 ... 0xBF: goto yy299; default: goto yy284; } yy291: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80 ... 0xBF: goto yy299; default: goto yy284; } yy292: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x90 ... 0xBF: goto yy300; default: goto yy284; } yy293: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80 ... 0xBF: goto yy300; default: goto yy284; } yy294: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80 ... 0x8F: goto yy300; default: goto yy284; } yy295: yych = *++YYCURSOR; switch (yych) { case '"': goto yy301; default: goto yy296; } yy296: YYCURSOR = YYMARKER; if (yyaccept == 0) goto yy286; else goto yy284; yy297: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy302; default: goto yy296; } yy298: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy303; default: goto yy296; } yy299: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy285; default: goto yy296; } yy300: yych = *++YYCURSOR; switch (yych) { case 0x80 ... 0xBF: goto yy299; default: goto yy296; } yy301: ++YYCURSOR; #line 395 "lexer_ttl.re" { *token_p = unescape_unicode (it->tok + 3, YYCURSOR - it->tok - 6); LOG_TRACE("Long string: %s", it->tok); return T_STRING; } #line 2656 "parser_ttl.c" yy302: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy304; default: goto yy296; } yy303: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy305; default: goto yy296; } yy304: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy306; default: goto yy296; } yy305: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy307; default: goto yy296; } yy306: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy298; default: goto yy296; } yy307: yych = *++YYCURSOR; switch (yych) { case '0' ... '9': case 'A' ... 'F': goto yy285; default: goto yy296; } yy308: #line 387 "lexer_ttl.re" { log_warn ("Unterminated long string!"); return -1; } #line 2706 "parser_ttl.c" } #line 410 "lexer_ttl.re" } VOLK_rc VOLK_ttl_parse_doc ( FILE *fh, const char *sh, VOLK_Graph **gr_p, size_t *ct, char **err_p) { *err_p = NULL; *gr_p = NULL; if (!fh && !sh) { log_error ("Neither file handle nor string input provided."); return VOLK_VALUE_ERR; } VOLK_TTLParserState *state = calloc (1, sizeof (*state)); if (UNLIKELY (!state)) return VOLK_MEM_ERR; state->base = NULL; state->ct = 0; state->rc = VOLK_NORESULT; ParseIterator parse_it; parse_init (&parse_it, fh, sh); void *parser = TTLParseAlloc (malloc); // TODO add basic NS, critically xsd: and rdf: VOLK_Graph *gr = VOLK_graph_new (NULL, NULL); if (UNLIKELY (!gr)) return VOLK_MEM_ERR; state->it = VOLK_graph_add_init (gr); if (UNLIKELY (!state->it)) { VOLK_graph_free (gr); return VOLK_MEM_ERR; } YYCTYPE *token; #ifdef DEBUG TTLParseTrace (stdout, "TTL Parser > "); #endif for (;;) { int ttype = lex (&parse_it, &token); if (ttype == -1) { char err_token[16] = {'\0'}; strncpy (err_token, (const char *)parse_it.tok, 15); char *err_start = "Lexer error near token `"; char err_info [64]; sprintf( err_info, "[...]' at line %u, character %ld.\n", parse_it.line, parse_it.cur - parse_it.bol); size_t err_size = strlen (err_start) + 16 + strlen(err_info); char *err_str = malloc (err_size); sprintf (err_str, "%s%s%s", err_start, err_token, err_info); log_error (err_str); state->rc = VOLK_PARSE_ERR; *err_p = err_str; goto finally; } TTLParse (parser, ttype, token, state); if (ttype == T_EOF) break; }; if (ct) *ct = state->ct; log_info ("Parsed %u triples.", state->ct); LOG_DEBUG("Graph size: %lu", VOLK_graph_size (gr)); *gr_p = gr; finally: ; VOLK_rc rc = state->rc; LOG_TRACE("rc is %d", rc); free (parse_it.buf); TTLParseFree (parser, free); VOLK_graph_add_done (state->it); VOLK_term_free (state->base); free (state); if (rc < 0) VOLK_graph_free (gr); return rc; }