diff options
Diffstat (limited to 'ext/syck/bytecode.c')
-rw-r--r-- | ext/syck/bytecode.c | 708 |
1 files changed, 533 insertions, 175 deletions
diff --git a/ext/syck/bytecode.c b/ext/syck/bytecode.c index efc9890c4d..848f69f918 100644 --- a/ext/syck/bytecode.c +++ b/ext/syck/bytecode.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.5 on Tue Oct 14 15:44:30 2003 */ +/* Generated by re2c 0.5 on Fri Oct 17 12:13:58 2003 */ #line 1 "bytecode.re" /* * bytecode.re @@ -63,6 +63,11 @@ char *get_inline( SyckParser *parser ); YYPOS(0); \ return '-'; \ \ + case syck_lvl_map: \ + lvl->ncount++; \ + ADD_LEVEL(len, s); \ + break; \ + \ case syck_lvl_open: \ lvl->status = s; \ break; \ @@ -139,7 +144,7 @@ sycklex_bytecode_utf8( YYSTYPE *sycklval, SyckParser *parser ) return t; } -#line 163 +#line 168 lvl = CURRENT_LEVEL(); @@ -160,19 +165,24 @@ yy1: ++YYCURSOR; yy0: if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; - if(yych <= '\000') goto yy2; - if(yych == 'D') goto yy3; - goto yy5; + switch(yych){ + case '\000': goto yy2; + case 'D': goto yy3; + default: goto yy5; + } yy2: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy4; } yy3: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == '\n') goto yy6; - if(yych == '\r') goto yy8; + switch(yych){ + case '\n': goto yy6; + case '\r': goto yy8; + default: goto yy4; + } yy4: -#line 189 +#line 194 { YYPOS(0); goto Document; } @@ -180,7 +190,7 @@ yy5: yych = *++YYCURSOR; goto yy4; yy6: yych = *++YYCURSOR; yy7: -#line 177 +#line 182 { if ( lvl->status == syck_lvl_header ) { goto Directive; @@ -193,10 +203,12 @@ yy7: } } yy8: yych = *++YYCURSOR; - if(yych == '\n') goto yy6; - goto yy2; + switch(yych){ + case '\n': goto yy6; + default: goto yy2; + } } -#line 193 +#line 198 lvl->status = syck_lvl_doc; @@ -219,71 +231,61 @@ yy10: ++YYCURSOR; yy9: if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; - if(yych <= 'E'){ - if(yych <= '\r'){ - if(yych <= '\t'){ - if(yych <= '\000') goto yy30; - } else { - if(yych <= '\n') goto yy27; - if(yych >= '\r') goto yy29; - } - } else { - if(yych <= 'A'){ - if(yych >= 'A') goto yy19; - } else { - if(yych <= 'C') goto yy11; - if(yych <= 'D') goto yy12; - goto yy16; - } - } - } else { - if(yych <= 'Q'){ - if(yych <= 'M'){ - if(yych >= 'M') goto yy14; - } else { - if(yych <= 'O') goto yy11; - if(yych <= 'P') goto yy13; - goto yy15; - } - } else { - if(yych <= 'T'){ - if(yych <= 'R') goto yy21; - if(yych <= 'S') goto yy17; - goto yy23; - } else { - if(yych == 'c') goto yy25; - } - } + switch(yych){ + case '\000': goto yy30; + case '\n': goto yy27; + case '\r': goto yy29; + case 'A': goto yy19; + case 'D': goto yy12; + case 'E': goto yy16; + case 'M': goto yy14; + case 'P': goto yy13; + case 'Q': goto yy15; + case 'R': goto yy21; + case 'S': goto yy17; + case 'T': goto yy23; + case 'c': goto yy25; + default: goto yy11; } yy11:yy12: yych = *++YYCURSOR; - if(yych == '\n') goto yy41; - if(yych == '\r') goto yy44; - goto yy11; + switch(yych){ + case '\n': goto yy41; + case '\r': goto yy44; + default: goto yy11; + } yy13: yych = *++YYCURSOR; - if(yych == '\n') goto yy41; - if(yych == '\r') goto yy43; - goto yy11; + switch(yych){ + case '\n': goto yy41; + case '\r': goto yy43; + default: goto yy11; + } yy14: yych = *++YYCURSOR; - if(yych == '\n') goto yy38; - if(yych == '\r') goto yy40; - goto yy11; + switch(yych){ + case '\n': goto yy38; + case '\r': goto yy40; + default: goto yy11; + } yy15: yych = *++YYCURSOR; - if(yych == '\n') goto yy35; - if(yych == '\r') goto yy37; - goto yy11; + switch(yych){ + case '\n': goto yy35; + case '\r': goto yy37; + default: goto yy11; + } yy16: yych = *++YYCURSOR; - if(yych == '\n') goto yy32; - if(yych == '\r') goto yy34; - goto yy11; + switch(yych){ + case '\n': goto yy32; + case '\r': goto yy34; + default: goto yy11; + } yy17: yych = *++YYCURSOR; yy18: -#line 243 +#line 282 { ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_str); goto Scalar; } yy19: yych = *++YYCURSOR; yy20: -#line 247 +#line 286 { ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_open); sycklval->name = get_inline( parser ); syck_hdlr_remove_anchor( parser, sycklval->name ); @@ -291,7 +293,7 @@ yy20: } yy21: yych = *++YYCURSOR; yy22: -#line 253 +#line 292 { ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_str); sycklval->name = get_inline( parser ); POP_LEVEL(); @@ -300,8 +302,10 @@ yy22: } yy23: yych = *++YYCURSOR; yy24: -#line 260 - { char *qstr = get_inline( parser ); +#line 299 + { char *qstr; + ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_open); + qstr = get_inline( parser ); if ( qstr[0] == '!' ) { int qidx = strlen( qstr ); @@ -347,6 +351,7 @@ yy24: else { sycklval->name = S_ALLOC_N( char, strlen( qstr ) ); + sycklval->name[0] = '\0'; S_MEMCPY( sycklval->name, qstr + 1, char, strlen( qstr ) ); free( qstr ); } @@ -358,37 +363,53 @@ yy24: } yy25: yych = *++YYCURSOR; yy26: -#line 316 +#line 358 { goto Comment; } yy27: yych = *++YYCURSOR; yy28: -#line 318 +#line 360 { if ( lvl->status == syck_lvl_seq ) { return YAML_INDENT; } else if ( lvl->status == syck_lvl_map ) { - lvl->ncount++; if ( lvl->ncount % 2 == 1 ) return ':'; else return YAML_INDENT; } goto Document; } yy29: yych = *++YYCURSOR; - if(yych == '\n') goto yy27; - goto yy11; + switch(yych){ + case '\n': goto yy27; + default: goto yy11; + } yy30: yych = *++YYCURSOR; yy31: -#line 331 +#line 372 { ENSURE_YAML_IEND(lvl, -1); YYPOS(0); return 0; } yy32: yych = *++YYCURSOR; yy33: -#line 222 - { POP_LEVEL(); +#line 247 + { if ( lvl->status == syck_lvl_seq && lvl->ncount == 0 ) + { + lvl->ncount++; + YYPOS(0); + FORCE_NEXT_TOKEN( ']' ); + return '['; + } + else if ( lvl->status == syck_lvl_map && lvl->ncount == 0 ) + { + lvl->ncount++; + YYPOS(0); + FORCE_NEXT_TOKEN( '}' ); + return '{'; + } + + POP_LEVEL(); lvl = CURRENT_LEVEL(); if ( lvl->status == syck_lvl_seq ) { @@ -396,7 +417,6 @@ yy33: } else if ( lvl->status == syck_lvl_map ) { - lvl->ncount++; if ( lvl->ncount % 2 == 1 ) { FORCE_NEXT_TOKEN(':'); @@ -409,41 +429,71 @@ yy33: return YAML_IEND; } yy34: yych = *++YYCURSOR; - if(yych == '\n') goto yy32; - goto yy11; + switch(yych){ + case '\n': goto yy32; + default: goto yy11; + } yy35: yych = *++YYCURSOR; yy36: -#line 218 - { ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_seq); +#line 233 + { int complex = 0; + if ( lvl->ncount % 2 == 0 && ( lvl->status == syck_lvl_map || lvl->status == syck_lvl_seq ) ) + { + complex = 1; + } + ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_seq); + if ( complex ) + { + FORCE_NEXT_TOKEN( YAML_IOPEN ); + return '?'; + } return YAML_IOPEN; } yy37: yych = *++YYCURSOR; - if(yych == '\n') goto yy35; - goto yy11; + switch(yych){ + case '\n': goto yy35; + default: goto yy11; + } yy38: yych = *++YYCURSOR; yy39: -#line 214 - { ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_map); +#line 219 + { int complex = 0; + if ( lvl->ncount % 2 == 0 && ( lvl->status == syck_lvl_map || lvl->status == syck_lvl_seq ) ) + { + complex = 1; + } + ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_map); + if ( complex ) + { + FORCE_NEXT_TOKEN( YAML_IOPEN ); + return '?'; + } return YAML_IOPEN; } yy40: yych = *++YYCURSOR; - if(yych == '\n') goto yy38; - goto yy11; + switch(yych){ + case '\n': goto yy38; + default: goto yy11; + } yy41: yych = *++YYCURSOR; yy42: -#line 209 +#line 214 { ENSURE_YAML_IEND(lvl, -1); YYPOS(0); return 0; } yy43: yych = *++YYCURSOR; - if(yych == '\n') goto yy41; - goto yy11; + switch(yych){ + case '\n': goto yy41; + default: goto yy11; + } yy44: yych = *++YYCURSOR; - if(yych == '\n') goto yy41; - goto yy11; + switch(yych){ + case '\n': goto yy41; + default: goto yy11; + } } -#line 336 +#line 377 } @@ -460,20 +510,97 @@ yy46: ++YYCURSOR; yy45: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if(yych <= '\000') goto yy47; - if(yych == 'V') goto yy48; - goto yy50; + switch(yych){ + case '\000': goto yy47; + case 'V': goto yy48; + default: goto yy50; + } yy47: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy49; } yy48: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '-') goto yy49; - if(yych == '`') goto yy49; - if(yych <= 'z') goto yy51; + 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 yy51; + default: goto yy49; + } yy49: -#line 348 +#line 389 { YYCURSOR = YYTOKTMP; return YAML_DOCSEP; } @@ -482,44 +609,256 @@ yy50: yych = *++YYCURSOR; yy51: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy52: if(yych <= ':'){ - if(yych <= '-') goto yy47; - if(yych <= '9') goto yy51; - } else { - if(yych == '`') goto yy47; - if(yych <= 'z') goto yy51; - goto yy47; +yy52: 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 yy51; + case ':': goto yy53; + default: goto yy47; } yy53: yych = *++YYCURSOR; - if(yych <= '-') goto yy47; - if(yych == '`') goto yy47; - if(yych >= '{') goto yy47; + 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 yy54; + default: goto yy47; + } yy54: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy55: if(yych <= '\r'){ - if(yych == '\n') goto yy56; - if(yych <= '\f') goto yy47; - goto yy58; - } else { - if(yych <= '_'){ - if(yych <= '-') goto yy47; - goto yy54; - } else { - if(yych <= '`') goto yy47; - if(yych <= 'z') goto yy54; - goto yy47; - } +yy55: switch(yych){ + case '\n': goto yy56; + case '\r': goto yy58; + 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 yy54; + default: goto yy47; } yy56: yych = *++YYCURSOR; yy57: -#line 346 +#line 387 { goto Directive; } yy58: yych = *++YYCURSOR; - if(yych == '\n') goto yy56; - goto yy47; + switch(yych){ + case '\n': goto yy56; + default: goto yy47; + } } -#line 351 +#line 392 } @@ -536,29 +875,30 @@ yy60: ++YYCURSOR; yy59: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if(yych <= '\n'){ - if(yych <= '\000') goto yy61; - if(yych <= '\t') goto yy66; - goto yy62; - } else { - if(yych == '\r') goto yy64; - goto yy66; + switch(yych){ + case '\000': goto yy61; + case '\n': goto yy62; + case '\r': goto yy64; + default: goto yy66; } yy61:yy62: yych = *++YYCURSOR; yy63: -#line 361 +#line 402 { goto Document; } yy64: yych = *++YYCURSOR; - if(yych == '\n') goto yy67; + switch(yych){ + case '\n': goto yy67; + default: goto yy65; + } yy65: -#line 363 +#line 404 { goto Comment; } yy66: yych = *++YYCURSOR; goto yy65; yy67: yych = *++YYCURSOR; goto yy63; } -#line 365 +#line 406 } @@ -570,6 +910,8 @@ Scalar: char *str = S_ALLOC_N( char, cap ); char *tok; + str[0] = '\0'; + Scalar2: tok = YYCURSOR; @@ -581,59 +923,71 @@ yy69: ++YYCURSOR; yy68: if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; - if(yych <= '\n'){ - if(yych <= '\000') goto yy74; - if(yych <= '\t') goto yy76; - } else { - if(yych == '\r') goto yy72; - goto yy76; + switch(yych){ + case '\000': goto yy74; + case '\n': goto yy70; + case '\r': goto yy72; + default: goto yy76; } yy70: yych = *++YYCURSOR; - if(yych <= 'M'){ - if(yych == 'C') goto yy78; - } else { - if(yych <= 'N') goto yy80; - if(yych == 'Z') goto yy83; + switch(yych){ + case 'C': goto yy78; + case 'N': goto yy80; + case 'Z': goto yy83; + default: goto yy71; } yy71: -#line 404 +#line 447 { YYCURSOR = tok; goto ScalarEnd; } yy72: yych = *++YYCURSOR; - if(yych == '\n') goto yy77; + switch(yych){ + case '\n': goto yy77; + default: goto yy73; + } yy73: -#line 412 +#line 455 { CAT(str, cap, idx, tok[0]); goto Scalar2; } yy74: yych = *++YYCURSOR; yy75: -#line 408 +#line 451 { YYCURSOR = tok; goto ScalarEnd; } yy76: yych = *++YYCURSOR; goto yy73; yy77: yych = *++YYCURSOR; - if(yych <= 'M'){ - if(yych != 'C') goto yy71; - } else { - if(yych <= 'N') goto yy80; - if(yych == 'Z') goto yy83; - goto yy71; + switch(yych){ + case 'C': goto yy78; + case 'N': goto yy80; + case 'Z': goto yy83; + default: goto yy71; } yy78: yych = *++YYCURSOR; yy79: -#line 381 +#line 424 { goto Scalar2; } yy80: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy81: if(yych <= '/') goto yy82; - if(yych <= '9') goto yy80; +yy81: switch(yych){ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy80; + default: goto yy82; + } yy82: -#line 383 +#line 426 { if ( tok + 2 < YYCURSOR ) { char *count = tok + 2; @@ -652,12 +1006,12 @@ yy82: } yy83: yych = *++YYCURSOR; yy84: -#line 400 +#line 443 { CAT(str, cap, idx, '\0'); goto Scalar2; } } -#line 416 +#line 459 ScalarEnd: @@ -685,6 +1039,8 @@ get_inline( SyckParser *parser ) char *str = S_ALLOC_N( char, cap ); char *tok; + str[0] = '\0'; + Inline: { tok = YYCURSOR; @@ -697,27 +1053,29 @@ yy86: ++YYCURSOR; yy85: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if(yych <= '\n'){ - if(yych <= '\000') goto yy91; - if(yych <= '\t') goto yy93; - } else { - if(yych == '\r') goto yy89; - goto yy93; + switch(yych){ + case '\000': goto yy91; + case '\n': goto yy87; + case '\r': goto yy89; + default: goto yy93; } yy87: yych = *++YYCURSOR; yy88: -#line 449 +#line 494 { return str; } yy89: yych = *++YYCURSOR; - if(yych == '\n') goto yy94; + switch(yych){ + case '\n': goto yy94; + default: goto yy90; + } yy90: -#line 455 +#line 500 { CAT(str, cap, idx, tok[0]); goto Inline; } yy91: yych = *++YYCURSOR; yy92: -#line 451 +#line 496 { YYCURSOR = tok; return str; } @@ -726,7 +1084,7 @@ yy93: yych = *++YYCURSOR; yy94: yych = *++YYCURSOR; goto yy88; } -#line 459 +#line 504 } |