/* Generated by re2c 0.9.3 on Fri Aug 13 11:47:50 2004 */ #line 1 "token.re" /* * token.re * * $Author$ * $Date$ * * Copyright (C) 2003 why the lucky stiff */ #include "ruby.h" #include "syck.h" #include "gram.h" /* * Allocate quoted strings in chunks */ #define QUOTELEN 1024 /* * They do my bidding... */ #define YYCTYPE char #define YYCURSOR parser->cursor #define YYMARKER parser->marker #define YYLIMIT parser->limit #define YYTOKEN parser->token #define YYTOKTMP parser->toktmp #define YYLINEPTR parser->lineptr #define YYLINECTPTR parser->linectptr #define YYLINE parser->linect #define YYFILL(n) syck_parser_read(parser) /* * Repositions the cursor at `n' offset from the token start. * Only works in `Header' and `Document' sections. */ #define YYPOS(n) YYCURSOR = YYTOKEN + n /* * Track line numbers */ #define NEWLINE(ptr) YYLINEPTR = ptr + newline_len(ptr); if ( YYLINEPTR > YYLINECTPTR ) { YYLINE++; YYLINECTPTR = YYLINEPTR; } /* * I like seeing the level operations as macros... */ #define ADD_LEVEL(len, status) syck_parser_add_level( parser, len, status ) #define POP_LEVEL() syck_parser_pop_level( parser ) #define CURRENT_LEVEL() syck_parser_current_level( parser ) /* * Force a token next time around sycklex() */ #define FORCE_NEXT_TOKEN(tok) parser->force_token = tok; /* * Nice little macro to ensure we're YAML_IOPENed to the current level. * * Only use this macro in the "Document" section * */ #define ENSURE_YAML_IOPEN(last_lvl, to_len, reset) \ if ( last_lvl->spaces < to_len ) \ { \ if ( last_lvl->status == syck_lvl_inline ) \ { \ goto Document; \ } \ else \ { \ ADD_LEVEL( to_len, syck_lvl_doc ); \ if ( reset == 1 ) YYPOS(0); \ return YAML_IOPEN; \ } \ } /* * Nice little macro to ensure closure of levels. * * Only use this macro in the "Document" section * */ #define ENSURE_YAML_IEND(last_lvl, to_len) \ if ( last_lvl->spaces > to_len ) \ { \ syck_parser_pop_level( parser ); \ YYPOS(0); \ return YAML_IEND; \ } /* * Concatenates quoted string items and manages allocation * to the quoted string */ #define QUOTECAT(s, c, i, l) \ { \ if ( i + 1 >= c ) \ { \ c += QUOTELEN; \ S_REALLOC_N( s, char, c ); \ } \ s[i++] = l; \ s[i] = '\0'; \ } #define QUOTECATS(s, c, i, cs, cl) \ { \ while ( i + cl >= c ) \ { \ c += QUOTELEN; \ S_REALLOC_N( s, char, c ); \ } \ S_MEMCPY( s + i, cs, char, cl ); \ i += cl; \ s[i] = '\0'; \ } /* * Tags a plain scalar with a transfer method * * Use only in "Plain" section * */ #define RETURN_IMPLICIT() \ { \ SyckNode *n = syck_alloc_str(); \ YYCURSOR = YYTOKEN; \ n->data.str->ptr = qstr; \ n->data.str->len = qidx; \ n->data.str->style = scalar_plain; \ sycklval->nodeData = n; \ if ( parser->implicit_typing == 1 ) \ { \ try_tag_implicit( sycklval->nodeData, parser->taguri_expansion ); \ } \ return YAML_PLAIN; \ } /* * Keep or chomp block? * * Use only in "ScalarBlock" section * */ #define RETURN_YAML_BLOCK() \ { \ SyckNode *n = syck_alloc_str(); \ n->type_id = syck_strndup( "str", 3 ); \ n->data.str->ptr = qstr; \ n->data.str->len = qidx; \ n->data.str->style = scalar_block; \ if ( qidx > 0 ) \ { \ if ( nlDoWhat != NL_KEEP ) \ { \ char *fc = n->data.str->ptr + n->data.str->len - 1; \ while ( is_newline( fc ) ) fc--; \ if ( nlDoWhat != NL_CHOMP && fc < n->data.str->ptr + n->data.str->len - 1 ) \ fc += 1; \ n->data.str->len = fc - n->data.str->ptr + 1; \ } \ } \ sycklval->nodeData = n; \ return YAML_BLOCK; \ } /* * Handles newlines, calculates indent */ #define GOBBLE_UP_YAML_INDENT( ict, start ) \ char *indent = start; \ NEWLINE(indent); \ while ( indent < YYCURSOR ) \ { \ if ( is_newline( ++indent ) ) \ { \ NEWLINE(indent); \ } \ } \ ict = 0; \ if ( *YYCURSOR == '\0' ) \ { \ ict = -1; \ start = YYCURSOR - 1; \ } \ else if ( *YYLINEPTR == ' ' ) \ { \ ict = YYCURSOR - YYLINEPTR; \ } /* * If an indent exists at the current level, back up. */ #define GET_TRUE_YAML_INDENT(indt_len) \ { \ SyckLevel *lvl_deep = CURRENT_LEVEL(); \ indt_len = lvl_deep->spaces; \ if ( indt_len == YYTOKEN - YYLINEPTR ) \ { \ SyckLevel *lvl_over; \ parser->lvl_idx--; \ lvl_over = CURRENT_LEVEL(); \ indt_len = lvl_over->spaces; \ parser->lvl_idx++; \ } \ } /* * Argjh! I hate globals! Here for syckerror() only! */ SyckParser *syck_parser_ptr = NULL; /* * Accessory funcs later in this file. */ void eat_comments( SyckParser * ); char escape_seq( char ); int is_newline( char *ptr ); int newline_len( char *ptr ); int sycklex_yaml_utf8( YYSTYPE *, SyckParser * ); int sycklex_bytecode_utf8( YYSTYPE *, SyckParser * ); int syckwrap(); /* * My own re-entrant sycklex() using re2c. * You really get used to the limited regexp. * It's really nice to not rely on backtracking and such. */ int sycklex( YYSTYPE *sycklval, SyckParser *parser ) { switch ( parser->input_type ) { case syck_yaml_utf8: return sycklex_yaml_utf8( sycklval, parser ); case syck_yaml_utf16: syckerror( "UTF-16 is not currently supported in Syck.\nPlease contribute code to help this happen!" ); break; case syck_yaml_utf32: syckerror( "UTF-32 is not currently supported in Syck.\nPlease contribute code to help this happen!" ); break; case syck_bytecode_utf8: return sycklex_bytecode_utf8( sycklval, parser ); } } /* * Parser for standard YAML [UTF-8] */ int sycklex_yaml_utf8( YYSTYPE *sycklval, SyckParser *parser ) { int doc_level = 0; syck_parser_ptr = parser; if ( YYCURSOR == NULL ) { syck_parser_read( parser ); } if ( parser->force_token != 0 ) { int t = parser->force_token; parser->force_token = 0; return t; } #line 279 "token.re" if ( YYLINEPTR != YYCURSOR ) { goto Document; } Header: YYTOKEN = YYCURSOR; #line 7 "" { YYCTYPE yych; unsigned int yyaccept; goto yy0; yy1: ++YYCURSOR; yy0: if((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; switch(yych){ case '\000': goto yy7; case '\n': goto yy9; case '\r': goto yy11; case ' ': goto yy12; case '#': goto yy5; case '-': goto yy2; case '.': goto yy4; default: goto yy14; } yy2: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch(yych){ case '-': goto yy28; default: goto yy3; } yy3: #line 338 "token.re" { YYPOS(0); goto Document; } #line 37 "" yy4: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch(yych){ case '.': goto yy21; default: goto yy3; } yy5: ++YYCURSOR; goto yy6; yy6: #line 320 "token.re" { eat_comments( parser ); goto Header; } #line 51 "" yy7: ++YYCURSOR; goto yy8; yy8: #line 324 "token.re" { SyckLevel *lvl = CURRENT_LEVEL(); ENSURE_YAML_IEND(lvl, -1); YYPOS(0); return 0; } #line 61 "" yy9: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); goto yy18; yy10: #line 330 "token.re" { GOBBLE_UP_YAML_INDENT( doc_level, YYTOKEN ); goto Header; } #line 70 "" yy11: yych = *++YYCURSOR; switch(yych){ case '\n': goto yy17; default: goto yy3; } yy12: ++YYCURSOR; yych = *YYCURSOR; goto yy16; yy13: #line 334 "token.re" { doc_level = YYCURSOR - YYLINEPTR; goto Header; } #line 83 "" yy14: yych = *++YYCURSOR; goto yy3; yy15: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy16; yy16: switch(yych){ case ' ': goto yy15; default: goto yy13; } yy17: yyaccept = 1; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy18; yy18: switch(yych){ case '\n': case ' ': goto yy17; case '\r': goto yy19; default: goto yy10; } yy19: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych){ case '\n': goto yy17; default: goto yy20; } yy20: YYCURSOR = YYMARKER; switch(yyaccept){ case 1: goto yy10; case 0: goto yy3; } yy21: yych = *++YYCURSOR; switch(yych){ case '.': goto yy22; default: goto yy20; } yy22: yych = *++YYCURSOR; switch(yych){ case '\n': goto yy23; case '\r': goto yy27; case ' ': goto yy25; default: goto yy20; } yy23: ++YYCURSOR; goto yy24; yy24: #line 306 "token.re" { SyckLevel *lvl = CURRENT_LEVEL(); if ( lvl->status == syck_lvl_header ) { goto Header; } else { ENSURE_YAML_IEND(lvl, -1); YYPOS(0); return 0; } return 0; } #line 147 "" yy25: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy26; yy26: switch(yych){ case ' ': goto yy25; default: goto yy24; } yy27: yych = *++YYCURSOR; switch(yych){ case '\n': goto yy23; default: goto yy20; } yy28: yych = *++YYCURSOR; switch(yych){ case '-': goto yy29; default: goto yy20; } yy29: yych = *++YYCURSOR; switch(yych){ case '\n': goto yy30; case '\r': goto yy34; case ' ': goto yy32; default: goto yy20; } yy30: ++YYCURSOR; goto yy31; yy31: #line 292 "token.re" { SyckLevel *lvl = CURRENT_LEVEL(); if ( lvl->status == syck_lvl_header ) { YYPOS(3); goto Directive; } else { ENSURE_YAML_IEND(lvl, -1); YYPOS(0); return 0; } } #line 191 "" yy32: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy33; yy33: switch(yych){ case ' ': goto yy32; default: goto yy31; } yy34: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '\n': goto yy30; default: goto yy20; } } #line 342 "token.re" Document: { SyckLevel *lvl = CURRENT_LEVEL(); if ( lvl->status == syck_lvl_header ) { lvl->status = syck_lvl_doc; } YYTOKEN = YYCURSOR; #line 209 "" { YYCTYPE yych; unsigned int yyaccept; goto yy35; yy36: ++YYCURSOR; yy35: if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; switch(yych){ case '\000': goto yy60; case '\n': goto yy37; case '\r': goto yy39; case ' ': goto yy58; case '!': goto yy49; case '"': goto yy53; case '#': goto yy56; case '&': goto yy47; case '\'': goto yy51; case '*': goto yy48; case ',': case ':': goto yy45; case '-': case '?': goto yy46; case '>': case '|': goto yy55; case '[': case '{': goto yy41; case ']': case '}': goto yy43; default: goto yy62; } yy37: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy90; yy38: #line 356 "token.re" { /* Isolate spaces */ int indt_len; GOBBLE_UP_YAML_INDENT( indt_len, YYTOKEN ); lvl = CURRENT_LEVEL(); doc_level = 0; /* XXX: Comment lookahead */ if ( *YYCURSOR == '#' ) { goto Document; } /* Ignore indentation inside inlines */ if ( lvl->status == syck_lvl_inline ) { goto Document; } /* Check for open indent */ ENSURE_YAML_IEND(lvl, indt_len); ENSURE_YAML_IOPEN(lvl, indt_len, 0); if ( indt_len == -1 ) { return 0; } return YAML_INDENT; } #line 268 "" yy39: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '\n': goto yy89; default: goto yy40; } yy40: #line 454 "token.re" { ENSURE_YAML_IOPEN(lvl, doc_level, 1); goto Plain; } #line 279 "" yy41: ++YYCURSOR; goto yy42; yy42: #line 384 "token.re" { ENSURE_YAML_IOPEN(lvl, doc_level, 1); lvl = CURRENT_LEVEL(); ADD_LEVEL(lvl->spaces + 1, syck_lvl_inline); return YYTOKEN[0]; } #line 289 "" yy43: ++YYCURSOR; goto yy44; yy44: #line 390 "token.re" { POP_LEVEL(); return YYTOKEN[0]; } #line 297 "" yy45: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch(yych){ case '\n': goto yy84; case '\r': goto yy88; case ' ': goto yy86; default: goto yy40; } yy46: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch(yych){ case '\n': goto yy79; case '\r': goto yy83; case ' ': goto yy81; default: goto yy40; } yy47: yych = *++YYCURSOR; switch(yych){ case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy76; default: goto yy40; } yy48: yych = *++YYCURSOR; switch(yych){ case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy73; default: goto yy40; } yy49: ++YYCURSOR; goto yy50; yy50: #line 428 "token.re" { goto TransferMethod; } #line 447 "" yy51: ++YYCURSOR; goto yy52; yy52: #line 430 "token.re" { ENSURE_YAML_IOPEN(lvl, doc_level, 1); goto SingleQuote; } #line 454 "" yy53: ++YYCURSOR; goto yy54; yy54: #line 433 "token.re" { ENSURE_YAML_IOPEN(lvl, doc_level, 1); goto DoubleQuote; } #line 461 "" yy55: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch(yych){ case '\n': goto yy68; case '\r': goto yy72; case ' ': goto yy70; case '+': case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy65; default: goto yy40; } yy56: ++YYCURSOR; goto yy57; yy57: #line 443 "token.re" { eat_comments( parser ); goto Document; } #line 487 "" yy58: ++YYCURSOR; yych = *YYCURSOR; goto yy64; yy59: #line 447 "token.re" { goto Document; } #line 493 "" yy60: ++YYCURSOR; goto yy61; yy61: #line 449 "token.re" { ENSURE_YAML_IEND(lvl, -1); YYPOS(0); return 0; } #line 502 "" yy62: yych = *++YYCURSOR; goto yy40; yy63: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy64; yy64: switch(yych){ case ' ': goto yy63; default: goto yy59; } yy65: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy66; yy66: switch(yych){ case '\n': goto yy68; case '\r': goto yy72; case ' ': goto yy70; case '+': case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy65; default: goto yy67; } yy67: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy38; case 1: goto yy40; } yy68: ++YYCURSOR; goto yy69; yy69: #line 436 "token.re" { if ( is_newline( YYCURSOR - 1 ) ) { YYCURSOR--; } goto ScalarBlock; } #line 550 "" yy70: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy71; yy71: switch(yych){ case ' ': goto yy70; default: goto yy69; } yy72: yych = *++YYCURSOR; switch(yych){ case '\n': goto yy68; default: goto yy67; } yy73: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy74; yy74: switch(yych){ case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy73; default: goto yy75; } yy75: #line 423 "token.re" { ENSURE_YAML_IOPEN(lvl, doc_level, 1); sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 ); return YAML_ALIAS; } #line 639 "" yy76: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy77; yy77: switch(yych){ case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy76; default: goto yy78; } yy78: #line 412 "token.re" { sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 ); /* * Remove previous anchors of the same name. Since the parser will likely * construct deeper nodes first, we want those nodes to be placed in the * queue for matching at a higher level of indentation. */ syck_hdlr_remove_anchor(parser, sycklval->name); return YAML_ANCHOR; } #line 720 "" yy79: ++YYCURSOR; goto yy80; yy80: #line 398 "token.re" { ENSURE_YAML_IOPEN(lvl, YYTOKEN - YYLINEPTR, 1); FORCE_NEXT_TOKEN(YAML_IOPEN); if ( *YYCURSOR == '#' || is_newline( YYCURSOR ) || is_newline( YYCURSOR - 1 ) ) { YYCURSOR--; ADD_LEVEL((YYTOKEN + 1) - YYLINEPTR, syck_lvl_doc); } else /* spaces followed by content uses the space as indentation */ { ADD_LEVEL(YYCURSOR - YYLINEPTR, syck_lvl_doc); } return YYTOKEN[0]; } #line 738 "" yy81: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy82; yy82: switch(yych){ case ' ': goto yy81; default: goto yy80; } yy83: yych = *++YYCURSOR; switch(yych){ case '\n': goto yy79; default: goto yy67; } yy84: ++YYCURSOR; goto yy85; yy85: #line 394 "token.re" { YYPOS(1); return YYTOKEN[0]; } #line 760 "" yy86: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy87; yy87: switch(yych){ case ' ': goto yy86; default: goto yy85; } yy88: yych = *++YYCURSOR; switch(yych){ case '\n': goto yy84; default: goto yy67; } yy89: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy90; yy90: switch(yych){ case '\n': case ' ': goto yy89; case '\r': goto yy91; default: goto yy38; } yy91: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych){ case '\n': goto yy89; default: goto yy67; } } #line 458 "token.re" } Directive: { YYTOKTMP = YYCURSOR; #line 796 "" { YYCTYPE yych; unsigned int yyaccept; goto yy92; yy93: ++YYCURSOR; yy92: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch(yych){ case '\000': goto yy94; case ' ': goto yy97; case '%': goto yy95; default: goto yy99; } yy94: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy96; } yy95: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch(yych){ case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case ';': case '<': case '=': case '>': case '?': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '[': case '\\': case ']': case '^': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy102; default: goto yy96; } yy96: #line 471 "token.re" { YYCURSOR = YYTOKTMP; return YAML_DOCSEP; } #line 900 "" yy97: ++YYCURSOR; yych = *YYCURSOR; goto yy101; yy98: #line 469 "token.re" { goto Directive; } #line 906 "" yy99: yych = *++YYCURSOR; goto yy96; yy100: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy101; yy101: switch(yych){ case ' ': goto yy100; default: goto yy98; } yy102: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy103; yy103: switch(yych){ case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ';': case '<': case '=': case '>': case '?': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '[': case '\\': case ']': case '^': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy102; case ':': goto yy104; default: goto yy94; } yy104: yych = *++YYCURSOR; switch(yych){ case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case ';': case '<': case '=': case '>': case '?': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '[': case '\\': case ']': case '^': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy105; default: goto yy94; } yy105: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy106; yy106: switch(yych){ case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case ';': case '<': case '=': case '>': case '?': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '[': case '\\': case ']': case '^': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy105; default: goto yy107; } yy107: #line 467 "token.re" { goto Directive; } #line 1165 "" } #line 474 "token.re" } Plain: { int qidx = 0; int qcapa = 100; char *qstr = S_ALLOC_N( char, qcapa ); SyckLevel *plvl; int parentIndent; YYCURSOR = YYTOKEN; plvl = CURRENT_LEVEL(); GET_TRUE_YAML_INDENT(parentIndent); Plain2: YYTOKEN = YYCURSOR; Plain3: #line 1169 "" { YYCTYPE yych; unsigned int yyaccept; goto yy108; yy109: ++YYCURSOR; yy108: if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; switch(yych){ case '\000': goto yy120; case '\n': goto yy110; case '\r': goto yy112; case ' ': goto yy118; case ',': goto yy117; case ':': goto yy114; case ']': case '}': goto yy115; default: goto yy122; } yy110: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy136; yy111: #line 497 "token.re" { int indt_len, nl_count = 0; SyckLevel *lvl; char *tok = YYTOKEN; GOBBLE_UP_YAML_INDENT( indt_len, tok ); lvl = CURRENT_LEVEL(); if ( indt_len <= parentIndent ) { RETURN_IMPLICIT(); } while ( YYTOKEN < YYCURSOR ) { int nl_len = 0; if ( nl_len = newline_len( YYTOKEN++ ) ) { nl_count++; YYTOKEN += nl_len - 1; } } if ( nl_count <= 1 ) { QUOTECAT(qstr, qcapa, qidx, ' '); } else { int i; for ( i = 0; i < nl_count - 1; i++ ) { QUOTECAT(qstr, qcapa, qidx, '\n'); } } goto Plain2; } #line 1228 "" yy112: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '\n': goto yy135; default: goto yy113; } yy113: #line 566 "token.re" { QUOTECATS(qstr, qcapa, qidx, YYTOKEN, YYCURSOR - YYTOKEN); goto Plain2; } #line 1239 "" yy114: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch(yych){ case '\n': goto yy130; case '\r': goto yy134; case ' ': goto yy132; default: goto yy113; } yy115: ++YYCURSOR; goto yy116; yy116: #line 535 "token.re" { if ( plvl->status != syck_lvl_inline ) { if ( *(YYCURSOR - 1) == ' ' || is_newline( YYCURSOR - 1 ) ) { YYCURSOR--; } QUOTECATS(qstr, qcapa, qidx, YYTOKEN, YYCURSOR - YYTOKEN); goto Plain2; } else { /* trim spaces off the end in case of indent */ char *walker = qstr + qidx - 1; while ( walker > qstr && ( *walker == '\n' || *walker == ' ' ) ) { qidx--; walker[0] = '\0'; walker--; } } RETURN_IMPLICIT(); } #line 1274 "" yy117: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch(yych){ case '\n': goto yy125; case '\r': goto yy128; case ' ': goto yy126; default: goto yy113; } yy118: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '#': goto yy123; default: goto yy119; } yy119: #line 564 "token.re" { goto Plain3; } #line 1291 "" yy120: ++YYCURSOR; goto yy121; yy121: #line 562 "token.re" { RETURN_IMPLICIT(); } #line 1297 "" yy122: yych = *++YYCURSOR; goto yy113; yy123: ++YYCURSOR; goto yy124; yy124: #line 558 "token.re" { eat_comments( parser ); RETURN_IMPLICIT(); } #line 1307 "" yy125: yych = *++YYCURSOR; goto yy116; yy126: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy127; yy127: switch(yych){ case ' ': goto yy126; default: goto yy116; } yy128: yych = *++YYCURSOR; switch(yych){ case '\n': goto yy125; default: goto yy129; } yy129: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy111; case 1: goto yy113; } yy130: ++YYCURSOR; goto yy131; yy131: #line 533 "token.re" { RETURN_IMPLICIT(); } #line 1334 "" yy132: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy133; yy133: switch(yych){ case ' ': goto yy132; default: goto yy131; } yy134: yych = *++YYCURSOR; switch(yych){ case '\n': goto yy130; default: goto yy129; } yy135: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy136; yy136: switch(yych){ case '\n': case ' ': goto yy135; case '\r': goto yy137; default: goto yy111; } yy137: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych){ case '\n': goto yy135; default: goto yy129; } } #line 570 "token.re" } SingleQuote: { int qidx = 0; int qcapa = 100; char *qstr = S_ALLOC_N( char, qcapa ); SingleQuote2: YYTOKEN = YYCURSOR; #line 1370 "" { YYCTYPE yych; unsigned int yyaccept; goto yy138; yy139: ++YYCURSOR; yy138: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch(yych){ case '\000': goto yy146; case '\n': goto yy140; case '\r': goto yy142; case '\'': goto yy144; default: goto yy147; } yy140: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy151; yy141: #line 584 "token.re" { int indt_len; int nl_count = 0; SyckLevel *lvl; GOBBLE_UP_YAML_INDENT( indt_len, YYTOKEN ); lvl = CURRENT_LEVEL(); if ( lvl->status != syck_lvl_str ) { ADD_LEVEL( indt_len, syck_lvl_str ); } else if ( indt_len < lvl->spaces ) { /* Error! */ } while ( YYTOKEN < YYCURSOR ) { int nl_len = 0; if ( nl_len = newline_len( YYTOKEN++ ) ) { nl_count++; YYTOKEN += nl_len - 1; } } if ( nl_count <= 1 ) { QUOTECAT(qstr, qcapa, qidx, ' '); } else { int i; for ( i = 0; i < nl_count - 1; i++ ) { QUOTECAT(qstr, qcapa, qidx, '\n'); } } goto SingleQuote2; } #line 1430 "" yy142: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '\n': goto yy150; default: goto yy143; } yy143: #line 644 "token.re" { QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1)); goto SingleQuote2; } #line 1441 "" yy144: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '\'': goto yy148; default: goto yy145; } yy145: #line 628 "token.re" { SyckLevel *lvl; SyckNode *n = syck_alloc_str(); lvl = CURRENT_LEVEL(); if ( lvl->status == syck_lvl_str ) { POP_LEVEL(); } n->type_id = syck_strndup( "str", 3 ); n->data.str->ptr = qstr; n->data.str->len = qidx; n->data.str->style = scalar_1quote; sycklval->nodeData = n; return YAML_PLAIN; } #line 1464 "" yy146: yych = *++YYCURSOR; goto yy145; yy147: yych = *++YYCURSOR; goto yy143; yy148: ++YYCURSOR; goto yy149; yy149: #line 624 "token.re" { QUOTECAT(qstr, qcapa, qidx, '\''); goto SingleQuote2; } #line 1476 "" yy150: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy151; yy151: switch(yych){ case '\n': case ' ': goto yy150; case '\r': goto yy152; default: goto yy141; } yy152: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych){ case '\n': goto yy150; default: goto yy153; } yy153: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy141; } } #line 648 "token.re" } DoubleQuote: { int keep_nl = 1; int qidx = 0; int qcapa = 100; char *qstr = S_ALLOC_N( char, qcapa ); DoubleQuote2: YYTOKEN = YYCURSOR; #line 1502 "" { YYCTYPE yych; unsigned int yyaccept; goto yy154; yy155: ++YYCURSOR; yy154: if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; switch(yych){ case '\000': goto yy161; case '\n': goto yy156; case '\r': goto yy158; case '"': goto yy163; case '\\': goto yy160; default: goto yy164; } yy156: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy178; yy157: #line 666 "token.re" { int indt_len; int nl_count = 0; SyckLevel *lvl; GOBBLE_UP_YAML_INDENT( indt_len, YYTOKEN ); lvl = CURRENT_LEVEL(); if ( lvl->status != syck_lvl_str ) { ADD_LEVEL( indt_len, syck_lvl_str ); } else if ( indt_len < lvl->spaces ) { /* FIXME */ } if ( keep_nl == 1 ) { while ( YYTOKEN < YYCURSOR ) { int nl_len = 0; if ( nl_len = newline_len( YYTOKEN++ ) ) { nl_count++; YYTOKEN += nl_len - 1; } } if ( nl_count <= 1 ) { QUOTECAT(qstr, qcapa, qidx, ' '); } else { int i; for ( i = 0; i < nl_count - 1; i++ ) { QUOTECAT(qstr, qcapa, qidx, '\n'); } } } keep_nl = 1; goto DoubleQuote2; } #line 1567 "" yy158: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '\n': goto yy177; default: goto yy159; } yy159: #line 745 "token.re" { QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1)); goto DoubleQuote2; } #line 1578 "" yy160: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch(yych){ case '\n': goto yy168; case '\r': goto yy170; case ' ': goto yy165; case '"': case '0': case '\\': case 'a': case 'b': case 'e': case 'f': case 'n': case 'r': case 't': case 'v': goto yy172; case 'x': goto yy171; default: goto yy159; } yy161: ++YYCURSOR; goto yy162; yy162: #line 729 "token.re" { SyckLevel *lvl; SyckNode *n = syck_alloc_str(); lvl = CURRENT_LEVEL(); if ( lvl->status == syck_lvl_str ) { POP_LEVEL(); } n->type_id = syck_strndup( "str", 3 ); n->data.str->ptr = qstr; n->data.str->len = qidx; n->data.str->style = scalar_2quote; sycklval->nodeData = n; return YAML_PLAIN; } #line 1610 "" yy163: yych = *++YYCURSOR; goto yy162; yy164: yych = *++YYCURSOR; goto yy159; yy165: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy166; yy166: switch(yych){ case '\n': goto yy168; case '\r': goto yy170; case ' ': goto yy165; default: goto yy167; } yy167: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy157; case 1: goto yy159; } yy168: ++YYCURSOR; goto yy169; yy169: #line 724 "token.re" { keep_nl = 0; YYCURSOR--; goto DoubleQuote2; } #line 1639 "" yy170: yych = *++YYCURSOR; switch(yych){ case '\n': goto yy168; default: goto yy167; } yy171: yych = *++YYCURSOR; switch(yych){ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy174; default: goto yy167; } yy172: ++YYCURSOR; goto yy173; yy173: #line 710 "token.re" { char ch = *( YYCURSOR - 1 ); QUOTECAT(qstr, qcapa, qidx, escape_seq( ch )); goto DoubleQuote2; } #line 1677 "" yy174: yych = *++YYCURSOR; switch(yych){ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy175; default: goto yy167; } yy175: ++YYCURSOR; goto yy176; yy176: #line 715 "token.re" { long ch; char *chr_text = syck_strndup( YYTOKEN, 4 ); chr_text[0] = '0'; ch = strtol( chr_text, NULL, 16 ); free( chr_text ); QUOTECAT(qstr, qcapa, qidx, ch); goto DoubleQuote2; } #line 1714 "" yy177: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy178; yy178: switch(yych){ case '\n': case ' ': goto yy177; case '\r': goto yy179; default: goto yy157; } yy179: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych){ case '\n': goto yy177; default: goto yy167; } } #line 749 "token.re" } TransferMethod: { int qidx = 0; int qcapa = 100; char *qstr = S_ALLOC_N( char, qcapa ); TransferMethod2: YYTOKTMP = YYCURSOR; #line 1736 "" { YYCTYPE yych; unsigned int yyaccept; goto yy180; yy181: ++YYCURSOR; yy180: if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; switch(yych){ case '\000': goto yy182; case '\n': goto yy183; case '\r': goto yy186; case ' ': goto yy185; case '\\': goto yy188; default: goto yy189; } yy182: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy187; } yy183: ++YYCURSOR; goto yy184; yy184: #line 763 "token.re" { SyckLevel *lvl; YYCURSOR = YYTOKTMP; if ( YYCURSOR == YYTOKEN + 1 ) { free( qstr ); return YAML_ITRANSFER; } lvl = CURRENT_LEVEL(); /* * URL Prefixing */ if ( *qstr == '^' ) { sycklval->name = S_ALLOC_N( char, qidx + strlen( lvl->domain ) ); sycklval->name[0] = '\0'; strcat( sycklval->name, lvl->domain ); strncat( sycklval->name, qstr + 1, qidx - 1 ); free( qstr ); } else { char *carat = qstr; char *qend = qstr + qidx; while ( (++carat) < qend ) { if ( *carat == '^' ) break; } if ( carat < qend ) { free( lvl->domain ); lvl->domain = syck_strndup( qstr, carat - qstr ); sycklval->name = S_ALLOC_N( char, ( qend - carat ) + strlen( lvl->domain ) ); sycklval->name[0] = '\0'; strcat( sycklval->name, lvl->domain ); strncat( sycklval->name, carat + 1, ( qend - carat ) - 1 ); free( qstr ); } else { sycklval->name = qstr; } } return YAML_TRANSFER; } #line 1810 "" yy185: yych = *++YYCURSOR; goto yy198; yy186: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '\n': goto yy196; default: goto yy187; } yy187: #line 830 "token.re" { QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1)); goto TransferMethod2; } #line 1823 "" yy188: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch(yych){ case '"': case '0': case '\\': case 'a': case 'b': case 'e': case 'f': case 'n': case 'r': case 't': case 'v': goto yy191; case 'x': goto yy190; default: goto yy187; } yy189: yych = *++YYCURSOR; goto yy187; yy190: yych = *++YYCURSOR; switch(yych){ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy193; default: goto yy182; } yy191: ++YYCURSOR; goto yy192; yy192: #line 816 "token.re" { char ch = *( YYCURSOR - 1 ); QUOTECAT(qstr, qcapa, qidx, escape_seq( ch )); goto TransferMethod2; } #line 1867 "" yy193: yych = *++YYCURSOR; switch(yych){ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy194; default: goto yy182; } yy194: ++YYCURSOR; goto yy195; yy195: #line 821 "token.re" { long ch; char *chr_text = syck_strndup( YYTOKTMP, 4 ); chr_text[0] = '0'; ch = strtol( chr_text, NULL, 16 ); free( chr_text ); QUOTECAT(qstr, qcapa, qidx, ch); goto TransferMethod2; } #line 1904 "" yy196: yych = *++YYCURSOR; goto yy184; yy197: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy198; yy198: switch(yych){ case ' ': goto yy197; default: goto yy184; } } #line 835 "token.re" } ScalarBlock: { int qidx = 0; int qcapa = 100; char *qstr = S_ALLOC_N( char, qcapa ); int blockType = 0; int nlDoWhat = 0; int lastIndent = 0; int forceIndent = -1; char *yyt = YYTOKEN; SyckLevel *lvl = CURRENT_LEVEL(); int parentIndent; GET_TRUE_YAML_INDENT(parentIndent); switch ( *yyt ) { case '|': blockType = BLOCK_LIT; break; case '>': blockType = BLOCK_FOLD; break; } while ( ++yyt <= YYCURSOR ) { if ( *yyt == '-' ) { nlDoWhat = NL_CHOMP; } else if ( *yyt == '+' ) { nlDoWhat = NL_KEEP; } else if ( isdigit( *yyt ) ) { forceIndent = strtol( yyt, NULL, 10 ) + parentIndent; } } qstr[0] = '\0'; YYTOKEN = YYCURSOR; ScalarBlock2: YYTOKEN = YYCURSOR; #line 1919 "" { YYCTYPE yych; unsigned int yyaccept; goto yy199; yy200: ++YYCURSOR; yy199: if((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; switch(yych){ case '\000': goto yy207; case '\n': goto yy201; case '\r': goto yy203; case '#': goto yy205; case '-': goto yy209; default: goto yy210; } yy201: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy220; yy202: #line 882 "token.re" { char *pacer; char *tok = YYTOKEN; int indt_len = 0, nl_count = 0, fold_nl = 0, nl_begin = 0; GOBBLE_UP_YAML_INDENT( indt_len, tok ); lvl = CURRENT_LEVEL(); if ( indt_len > parentIndent && lvl->status != syck_lvl_block ) { int new_spaces = forceIndent > 0 ? forceIndent : indt_len; ADD_LEVEL( new_spaces, syck_lvl_block ); lastIndent = indt_len - new_spaces; nl_begin = 1; lvl = CURRENT_LEVEL(); } else if ( lvl->status != syck_lvl_block ) { YYCURSOR = YYTOKEN; RETURN_YAML_BLOCK(); } /* * Fold only in the event of two lines being on the leftmost * indentation. */ if ( blockType == BLOCK_FOLD && lastIndent == 0 && ( indt_len - lvl->spaces ) == 0 ) { fold_nl = 1; } pacer = YYTOKEN; while ( pacer < YYCURSOR ) { int nl_len = 0; if ( nl_len = newline_len( pacer++ ) ) { nl_count++; pacer += nl_len - 1; } } if ( fold_nl == 1 || nl_begin == 1 ) { nl_count--; } if ( nl_count < 1 && nl_begin == 0 ) { QUOTECAT(qstr, qcapa, qidx, ' '); } else { int i; for ( i = 0; i < nl_count; i++ ) { QUOTECAT(qstr, qcapa, qidx, '\n'); } } lastIndent = indt_len - lvl->spaces; YYCURSOR -= lastIndent; if ( indt_len < lvl->spaces ) { POP_LEVEL(); YYCURSOR = YYTOKEN; RETURN_YAML_BLOCK(); } goto ScalarBlock2; } #line 2010 "" yy203: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '\n': goto yy219; default: goto yy204; } yy204: #line 991 "token.re" { QUOTECAT(qstr, qcapa, qidx, *YYTOKEN); goto ScalarBlock2; } #line 2021 "" yy205: ++YYCURSOR; goto yy206; yy206: #line 953 "token.re" { lvl = CURRENT_LEVEL(); if ( lvl->status != syck_lvl_block ) { eat_comments( parser ); YYTOKEN = YYCURSOR; } else { QUOTECAT(qstr, qcapa, qidx, *YYTOKEN); } goto ScalarBlock2; } #line 2038 "" yy207: ++YYCURSOR; goto yy208; yy208: #line 967 "token.re" { YYCURSOR--; POP_LEVEL(); RETURN_YAML_BLOCK(); } #line 2047 "" yy209: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch(yych){ case '-': goto yy211; default: goto yy204; } yy210: yych = *++YYCURSOR; goto yy204; yy211: yych = *++YYCURSOR; switch(yych){ case '-': goto yy213; default: goto yy212; } yy212: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy202; case 1: goto yy204; } yy213: yych = *++YYCURSOR; switch(yych){ case '\n': goto yy214; case '\r': goto yy218; case ' ': goto yy216; default: goto yy212; } yy214: ++YYCURSOR; goto yy215; yy215: #line 972 "token.re" { if ( YYTOKEN == YYLINEPTR ) { if ( blockType == BLOCK_FOLD && qidx > 0 ) { qidx -= 1; } QUOTECAT(qstr, qcapa, qidx, '\n'); POP_LEVEL(); YYCURSOR = YYTOKEN; RETURN_YAML_BLOCK(); } else { QUOTECAT(qstr, qcapa, qidx, *YYTOKEN); YYCURSOR = YYTOKEN + 1; goto ScalarBlock2; } } #line 2095 "" yy216: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy217; yy217: switch(yych){ case ' ': goto yy216; default: goto yy215; } yy218: yych = *++YYCURSOR; switch(yych){ case '\n': goto yy214; default: goto yy212; } yy219: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy220; yy220: switch(yych){ case '\n': case ' ': goto yy219; case '\r': goto yy221; default: goto yy202; } yy221: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych){ case '\n': goto yy219; default: goto yy212; } } #line 996 "token.re" } return 0; } void eat_comments( SyckParser *parser ) { Comment: { YYTOKEN = YYCURSOR; #line 2131 "" { YYCTYPE yych; unsigned int yyaccept; goto yy222; yy223: ++YYCURSOR; yy222: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch(yych){ case '\000': goto yy224; case '\n': goto yy226; case '\r': goto yy227; default: goto yy229; } yy224: ++YYCURSOR; goto yy225; yy225: #line 1012 "token.re" { YYCURSOR = YYTOKEN; return; } #line 2153 "" yy226: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy231; yy227: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '\n': goto yy230; default: goto yy228; } yy228: #line 1016 "token.re" { goto Comment; } #line 2166 "" yy229: yych = *++YYCURSOR; goto yy228; yy230: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; goto yy231; yy231: switch(yych){ case '\n': goto yy230; case '\r': goto yy232; default: goto yy225; } yy232: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych){ case '\n': goto yy230; default: goto yy233; } yy233: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy225; } } #line 1019 "token.re" } } char escape_seq( char ch ) { switch ( ch ) { case '0': return '\0'; case 'a': return 7; case 'b': return '\010'; case 'e': return '\033'; case 'f': return '\014'; case 'n': return '\n'; case 'r': return '\015'; case 't': return '\t'; case 'v': return '\013'; default: return ch; } } int is_newline( char *ptr ) { return newline_len( ptr ); } int newline_len( char *ptr ) { if ( *ptr == '\n' ) return 1; if ( *ptr == '\r' && *( ptr + 1 ) == '\n' ) return 2; return 0; } int syckwrap() { return 1; } void syckerror( char *msg ) { if ( syck_parser_ptr->error_handler == NULL ) syck_parser_ptr->error_handler = syck_default_error_handler; syck_parser_ptr->root = syck_parser_ptr->root_on_error; (syck_parser_ptr->error_handler)(syck_parser_ptr, msg); }