/* Generated by re2c 0.5 on Fri Aug 6 11:22:27 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 if ( YYLINEPTR != YYCURSOR ) { goto Document; } Header: YYTOKEN = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; static unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; goto yy0; yy1: ++YYCURSOR; yy0: if((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; if(yych <= '\037'){ if(yych <= '\n'){ if(yych <= '\000') goto yy7; if(yych <= '\t') goto yy14; goto yy9; } else { if(yych == '\r') goto yy11; goto yy14; } } else { if(yych <= '#'){ if(yych <= ' ') goto yy12; if(yych <= '"') goto yy14; goto yy5; } else { if(yych <= ',') goto yy14; if(yych <= '-') goto yy2; if(yych <= '.') goto yy4; goto yy14; } } yy2: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if(yych == '-') goto yy28; yy3: #line 338 { YYPOS(0); goto Document; } yy4: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if(yych == '.') goto yy21; goto yy3; yy5: yych = *++YYCURSOR; yy6: #line 320 { eat_comments( parser ); goto Header; } yy7: yych = *++YYCURSOR; yy8: #line 324 { SyckLevel *lvl = CURRENT_LEVEL(); ENSURE_YAML_IEND(lvl, -1); YYPOS(0); return 0; } yy9: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); goto yy18; yy10: #line 330 { GOBBLE_UP_YAML_INDENT( doc_level, YYTOKEN ); goto Header; } yy11: yych = *++YYCURSOR; if(yych == '\n') goto yy17; goto yy3; yy12: yych = *++YYCURSOR; goto yy16; yy13: #line 334 { doc_level = YYCURSOR - YYLINEPTR; goto Header; } yy14: yych = *++YYCURSOR; goto yy3; yy15: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy16: if(yybm[0+yych] & 64) goto yy15; goto yy13; yy17: yyaccept = 1; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy18: if(yybm[0+yych] & 128) goto yy17; if(yych != '\r') goto yy10; yy19: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych == '\n') goto yy17; yy20: YYCURSOR = YYMARKER; switch(yyaccept){ case 1: goto yy10; case 0: goto yy3; } yy21: yych = *++YYCURSOR; if(yych != '.') goto yy20; yy22: yych = *++YYCURSOR; if(yych <= '\f'){ if(yych != '\n') goto yy20; } else { if(yych <= '\r') goto yy27; if(yych == ' ') goto yy25; goto yy20; } yy23: yych = *++YYCURSOR; yy24: #line 306 { SyckLevel *lvl = CURRENT_LEVEL(); if ( lvl->status == syck_lvl_header ) { goto Header; } else { ENSURE_YAML_IEND(lvl, -1); YYPOS(0); return 0; } return 0; } yy25: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy26: if(yych == ' ') goto yy25; goto yy24; yy27: yych = *++YYCURSOR; if(yych == '\n') goto yy23; goto yy20; yy28: yych = *++YYCURSOR; if(yych != '-') goto yy20; yy29: yych = *++YYCURSOR; if(yych <= '\f'){ if(yych != '\n') goto yy20; } else { if(yych <= '\r') goto yy34; if(yych == ' ') goto yy32; goto yy20; } yy30: yych = *++YYCURSOR; yy31: #line 292 { SyckLevel *lvl = CURRENT_LEVEL(); if ( lvl->status == syck_lvl_header ) { YYPOS(3); goto Directive; } else { ENSURE_YAML_IEND(lvl, -1); YYPOS(0); return 0; } } yy32: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy33: if(yych == ' ') goto yy32; goto yy31; yy34: yych = *++YYCURSOR; if(yych == '\n') goto yy30; goto yy20; } #line 342 Document: { SyckLevel *lvl = CURRENT_LEVEL(); if ( lvl->status == syck_lvl_header ) { lvl->status = syck_lvl_doc; } YYTOKEN = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; static unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 96, 0, 0, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 0, 0, 0, 64, 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; goto yy35; yy36: ++YYCURSOR; yy35: if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if(yych <= '+'){ if(yych <= '!'){ if(yych <= '\f'){ if(yych <= '\000') goto yy60; if(yych != '\n') goto yy62; } else { if(yych <= '\r') goto yy39; if(yych <= '\037') goto yy62; if(yych <= ' ') goto yy58; goto yy49; } } else { if(yych <= '&'){ if(yych <= '"') goto yy53; if(yych <= '#') goto yy56; if(yych <= '%') goto yy62; goto yy47; } else { if(yych <= '\'') goto yy51; if(yych == '*') goto yy48; goto yy62; } } } else { if(yych <= 'Z'){ if(yych <= ':'){ if(yych <= ',') goto yy45; if(yych <= '-') goto yy46; if(yych <= '9') goto yy62; goto yy45; } else { if(yych <= '=') goto yy62; if(yych <= '>') goto yy55; if(yych <= '?') goto yy46; goto yy62; } } else { if(yych <= 'z'){ if(yych <= '[') goto yy41; if(yych == ']') goto yy43; goto yy62; } else { if(yych <= '{') goto yy41; if(yych <= '|') goto yy55; if(yych <= '}') goto yy43; goto yy62; } } } yy37: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy90; yy38: #line 356 { /* 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; } yy39: yych = *++YYCURSOR; if(yych == '\n') goto yy89; yy40: #line 454 { ENSURE_YAML_IOPEN(lvl, doc_level, 1); goto Plain; } yy41: yych = *++YYCURSOR; yy42: #line 384 { ENSURE_YAML_IOPEN(lvl, doc_level, 1); lvl = CURRENT_LEVEL(); ADD_LEVEL(lvl->spaces + 1, syck_lvl_inline); return YYTOKEN[0]; } yy43: yych = *++YYCURSOR; yy44: #line 390 { POP_LEVEL(); return YYTOKEN[0]; } yy45: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych <= '\f'){ if(yych == '\n') goto yy84; goto yy40; } else { if(yych <= '\r') goto yy88; if(yych == ' ') goto yy86; goto yy40; } yy46: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych <= '\f'){ if(yych == '\n') goto yy79; goto yy40; } else { if(yych <= '\r') goto yy83; if(yych == ' ') goto yy81; goto yy40; } yy47: yych = *++YYCURSOR; if(yych <= '@'){ if(yych <= '-'){ if(yych <= ',') goto yy40; goto yy76; } else { if(yych <= '/') goto yy40; if(yych <= '9') goto yy76; goto yy40; } } else { if(yych <= '_'){ if(yych <= 'Z') goto yy76; if(yych <= '^') goto yy40; goto yy76; } else { if(yych <= '`') goto yy40; if(yych <= 'z') goto yy76; goto yy40; } } yy48: yych = *++YYCURSOR; if(yybm[0+yych] & 64) goto yy73; goto yy40; yy49: yych = *++YYCURSOR; yy50: #line 428 { goto TransferMethod; } yy51: yych = *++YYCURSOR; yy52: #line 430 { ENSURE_YAML_IOPEN(lvl, doc_level, 1); goto SingleQuote; } yy53: yych = *++YYCURSOR; yy54: #line 433 { ENSURE_YAML_IOPEN(lvl, doc_level, 1); goto DoubleQuote; } yy55: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yybm[0+yych] & 32) goto yy65; if(yych <= '\f'){ if(yych == '\n') goto yy68; goto yy40; } else { if(yych <= '\r') goto yy72; if(yych == ' ') goto yy70; goto yy40; } yy56: yych = *++YYCURSOR; yy57: #line 443 { eat_comments( parser ); goto Document; } yy58: yych = *++YYCURSOR; goto yy64; yy59: #line 447 { goto Document; } yy60: yych = *++YYCURSOR; yy61: #line 449 { ENSURE_YAML_IEND(lvl, -1); YYPOS(0); return 0; } yy62: yych = *++YYCURSOR; goto yy40; yy63: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy64: if(yybm[0+yych] & 16) goto yy63; goto yy59; yy65: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy66: if(yybm[0+yych] & 32) goto yy65; if(yych <= '\f'){ if(yych == '\n') goto yy68; } else { if(yych <= '\r') goto yy72; if(yych == ' ') goto yy70; } yy67: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy38; case 1: goto yy40; } yy68: yych = *++YYCURSOR; yy69: #line 436 { if ( is_newline( YYCURSOR - 1 ) ) { YYCURSOR--; } goto ScalarBlock; } yy70: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy71: if(yych == ' ') goto yy70; goto yy69; yy72: yych = *++YYCURSOR; if(yych == '\n') goto yy68; goto yy67; yy73: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy74: if(yybm[0+yych] & 64) goto yy73; yy75: #line 423 { ENSURE_YAML_IOPEN(lvl, doc_level, 1); sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 ); return YAML_ALIAS; } yy76: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy77: if(yych <= '@'){ if(yych <= '-'){ if(yych >= '-') goto yy76; } else { if(yych <= '/') goto yy78; if(yych <= '9') goto yy76; } } else { if(yych <= '_'){ if(yych <= 'Z') goto yy76; if(yych >= '_') goto yy76; } else { if(yych <= '`') goto yy78; if(yych <= 'z') goto yy76; } } yy78: #line 412 { 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; } yy79: yych = *++YYCURSOR; yy80: #line 398 { 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]; } yy81: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy82: if(yych == ' ') goto yy81; goto yy80; yy83: yych = *++YYCURSOR; if(yych == '\n') goto yy79; goto yy67; yy84: yych = *++YYCURSOR; yy85: #line 394 { YYPOS(1); return YYTOKEN[0]; } yy86: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy87: if(yych == ' ') goto yy86; goto yy85; yy88: yych = *++YYCURSOR; if(yych == '\n') goto yy84; goto yy67; yy89: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy90: if(yybm[0+yych] & 128) goto yy89; if(yych != '\r') goto yy38; yy91: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych == '\n') goto yy89; goto yy67; } #line 458 } Directive: { YYTOKTMP = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; static unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 128, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 0, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; goto yy92; yy93: ++YYCURSOR; yy92: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yych <= ' '){ if(yych <= '\000') goto yy94; if(yych <= '\037') goto yy99; goto yy97; } else { if(yych == '%') goto yy95; goto yy99; } yy94: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy96; } yy95: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if(yych <= '-') goto yy96; if(yych == '`') goto yy96; if(yych <= 'z') goto yy102; yy96: #line 471 { YYCURSOR = YYTOKTMP; return YAML_DOCSEP; } yy97: yych = *++YYCURSOR; goto yy101; yy98: #line 469 { goto Directive; } yy99: yych = *++YYCURSOR; goto yy96; yy100: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy101: if(yybm[0+yych] & 32) goto yy100; goto yy98; yy102: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy103: if(yybm[0+yych] & 64) goto yy102; if(yych != ':') goto yy94; yy104: yych = *++YYCURSOR; if(yybm[0+yych] & 128) goto yy105; goto yy94; yy105: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy106: if(yybm[0+yych] & 128) goto yy105; yy107: #line 467 { goto Directive; } } #line 474 } 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: { YYCTYPE yych; unsigned int yyaccept; static unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; goto yy108; yy109: ++YYCURSOR; yy108: if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if(yych <= '+'){ if(yych <= '\f'){ if(yych <= '\000') goto yy120; if(yych != '\n') goto yy122; } else { if(yych <= '\r') goto yy112; if(yych == ' ') goto yy118; goto yy122; } } else { if(yych <= '\\'){ if(yych <= ',') goto yy117; if(yych == ':') goto yy114; goto yy122; } else { if(yych <= ']') goto yy115; if(yych == '}') goto yy115; goto yy122; } } yy110: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy136; yy111: #line 497 { 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; } yy112: yych = *++YYCURSOR; if(yych == '\n') goto yy135; yy113: #line 566 { QUOTECATS(qstr, qcapa, qidx, YYTOKEN, YYCURSOR - YYTOKEN); goto Plain2; } yy114: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych <= '\f'){ if(yych == '\n') goto yy130; goto yy113; } else { if(yych <= '\r') goto yy134; if(yych == ' ') goto yy132; goto yy113; } yy115: yych = *++YYCURSOR; yy116: #line 535 { 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(); } yy117: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yybm[0+yych] & 64) goto yy126; if(yych == '\n') goto yy125; if(yych == '\r') goto yy128; goto yy113; yy118: yych = *++YYCURSOR; if(yych == '#') goto yy123; yy119: #line 564 { goto Plain3; } yy120: yych = *++YYCURSOR; yy121: #line 562 { RETURN_IMPLICIT(); } yy122: yych = *++YYCURSOR; goto yy113; yy123: yych = *++YYCURSOR; yy124: #line 558 { eat_comments( parser ); RETURN_IMPLICIT(); } yy125: yych = *++YYCURSOR; goto yy116; yy126: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy127: if(yybm[0+yych] & 64) goto yy126; goto yy116; yy128: yych = *++YYCURSOR; if(yych == '\n') goto yy125; yy129: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy111; case 1: goto yy113; } yy130: yych = *++YYCURSOR; yy131: #line 533 { RETURN_IMPLICIT(); } yy132: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy133: if(yych == ' ') goto yy132; goto yy131; yy134: yych = *++YYCURSOR; if(yych == '\n') goto yy130; goto yy129; yy135: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy136: if(yybm[0+yych] & 128) goto yy135; if(yych != '\r') goto yy111; yy137: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych == '\n') goto yy135; goto yy129; } #line 570 } SingleQuote: { int qidx = 0; int qcapa = 100; char *qstr = S_ALLOC_N( char, qcapa ); SingleQuote2: YYTOKEN = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; static unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; goto yy138; yy139: ++YYCURSOR; yy138: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yych <= '\f'){ if(yych <= '\000') goto yy146; if(yych != '\n') goto yy147; } else { if(yych <= '\r') goto yy142; if(yych == '\'') goto yy144; goto yy147; } yy140: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy151; yy141: #line 584 { 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; } yy142: yych = *++YYCURSOR; if(yych == '\n') goto yy150; yy143: #line 644 { QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1)); goto SingleQuote2; } yy144: yych = *++YYCURSOR; if(yych == '\'') goto yy148; yy145: #line 628 { 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; } yy146: yych = *++YYCURSOR; goto yy145; yy147: yych = *++YYCURSOR; goto yy143; yy148: yych = *++YYCURSOR; yy149: #line 624 { QUOTECAT(qstr, qcapa, qidx, '\''); goto SingleQuote2; } yy150: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy151: if(yybm[0+yych] & 128) goto yy150; if(yych != '\r') goto yy141; yy152: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych == '\n') goto yy150; yy153: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy141; } } #line 648 } DoubleQuote: { int keep_nl = 1; int qidx = 0; int qcapa = 100; char *qstr = S_ALLOC_N( char, qcapa ); DoubleQuote2: YYTOKEN = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; static unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; goto yy154; yy155: ++YYCURSOR; yy154: if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; if(yych <= '\r'){ if(yych <= '\t'){ if(yych <= '\000') goto yy161; goto yy164; } else { if(yych <= '\n') goto yy156; if(yych <= '\f') goto yy164; goto yy158; } } else { if(yych <= '"'){ if(yych <= '!') goto yy164; goto yy163; } else { if(yych == '\\') goto yy160; goto yy164; } } yy156: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy178; yy157: #line 666 { 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; } yy158: yych = *++YYCURSOR; if(yych == '\n') goto yy177; yy159: #line 745 { QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1)); goto DoubleQuote2; } yy160: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yybm[0+yych] & 64) goto yy165; if(yych <= 'b'){ if(yych <= '"'){ if(yych <= '\f'){ if(yych == '\n') goto yy168; goto yy159; } else { if(yych <= '\r') goto yy170; if(yych <= '!') goto yy159; goto yy172; } } else { if(yych <= '['){ if(yych == '0') goto yy172; goto yy159; } else { if(yych <= '\\') goto yy172; if(yych <= '`') goto yy159; goto yy172; } } } else { if(yych <= 'r'){ if(yych <= 'm'){ if(yych <= 'd') goto yy159; if(yych <= 'f') goto yy172; goto yy159; } else { if(yych <= 'n') goto yy172; if(yych <= 'q') goto yy159; goto yy172; } } else { if(yych <= 'u'){ if(yych == 't') goto yy172; goto yy159; } else { if(yych <= 'v') goto yy172; if(yych == 'x') goto yy171; goto yy159; } } } yy161: yych = *++YYCURSOR; yy162: #line 729 { 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; } yy163: yych = *++YYCURSOR; goto yy162; yy164: yych = *++YYCURSOR; goto yy159; yy165: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy166: if(yybm[0+yych] & 64) goto yy165; if(yych == '\n') goto yy168; if(yych == '\r') goto yy170; yy167: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy157; case 1: goto yy159; } yy168: yych = *++YYCURSOR; yy169: #line 724 { keep_nl = 0; YYCURSOR--; goto DoubleQuote2; } yy170: yych = *++YYCURSOR; if(yych == '\n') goto yy168; goto yy167; yy171: yych = *++YYCURSOR; if(yych <= '@'){ if(yych <= '/') goto yy167; if(yych <= '9') goto yy174; goto yy167; } else { if(yych <= 'F') goto yy174; if(yych <= '`') goto yy167; if(yych <= 'f') goto yy174; goto yy167; } yy172: yych = *++YYCURSOR; yy173: #line 710 { char ch = *( YYCURSOR - 1 ); QUOTECAT(qstr, qcapa, qidx, escape_seq( ch )); goto DoubleQuote2; } yy174: yych = *++YYCURSOR; if(yych <= '@'){ if(yych <= '/') goto yy167; if(yych >= ':') goto yy167; } else { if(yych <= 'F') goto yy175; if(yych <= '`') goto yy167; if(yych >= 'g') goto yy167; } yy175: yych = *++YYCURSOR; yy176: #line 715 { 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; } yy177: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy178: if(yybm[0+yych] & 128) goto yy177; if(yych != '\r') goto yy157; yy179: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych == '\n') goto yy177; goto yy167; } #line 749 } TransferMethod: { int qidx = 0; int qcapa = 100; char *qstr = S_ALLOC_N( char, qcapa ); TransferMethod2: YYTOKTMP = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; static unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; goto yy180; yy181: ++YYCURSOR; yy180: if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; if(yych <= '\r'){ if(yych <= '\t'){ if(yych >= '\001') goto yy189; } else { if(yych <= '\n') goto yy183; if(yych <= '\f') goto yy189; goto yy186; } } else { if(yych <= ' '){ if(yych <= '\037') goto yy189; goto yy185; } else { if(yych == '\\') goto yy188; goto yy189; } } yy182: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy187; } yy183: yych = *++YYCURSOR; yy184: #line 763 { 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; } yy185: yych = *++YYCURSOR; goto yy198; yy186: yych = *++YYCURSOR; if(yych == '\n') goto yy196; yy187: #line 830 { QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1)); goto TransferMethod2; } yy188: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if(yych <= 'f'){ if(yych <= '['){ if(yych <= '"'){ if(yych <= '!') goto yy187; goto yy191; } else { if(yych == '0') goto yy191; goto yy187; } } else { if(yych <= '`'){ if(yych <= '\\') goto yy191; goto yy187; } else { if(yych <= 'b') goto yy191; if(yych <= 'd') goto yy187; goto yy191; } } } else { if(yych <= 's'){ if(yych <= 'n'){ if(yych <= 'm') goto yy187; goto yy191; } else { if(yych == 'r') goto yy191; goto yy187; } } else { if(yych <= 'v'){ if(yych == 'u') goto yy187; goto yy191; } else { if(yych == 'x') goto yy190; goto yy187; } } } yy189: yych = *++YYCURSOR; goto yy187; yy190: yych = *++YYCURSOR; if(yych <= '@'){ if(yych <= '/') goto yy182; if(yych <= '9') goto yy193; goto yy182; } else { if(yych <= 'F') goto yy193; if(yych <= '`') goto yy182; if(yych <= 'f') goto yy193; goto yy182; } yy191: yych = *++YYCURSOR; yy192: #line 816 { char ch = *( YYCURSOR - 1 ); QUOTECAT(qstr, qcapa, qidx, escape_seq( ch )); goto TransferMethod2; } yy193: yych = *++YYCURSOR; if(yych <= '@'){ if(yych <= '/') goto yy182; if(yych >= ':') goto yy182; } else { if(yych <= 'F') goto yy194; if(yych <= '`') goto yy182; if(yych >= 'g') goto yy182; } yy194: yych = *++YYCURSOR; yy195: #line 821 { 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; } yy196: yych = *++YYCURSOR; goto yy184; yy197: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy198: if(yybm[0+yych] & 128) goto yy197; goto yy184; } #line 835 } 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; { YYCTYPE yych; unsigned int yyaccept; static unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; goto yy199; yy200: ++YYCURSOR; yy199: if((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; if(yych <= '\r'){ if(yych <= '\t'){ if(yych <= '\000') goto yy207; goto yy210; } else { if(yych <= '\n') goto yy201; if(yych <= '\f') goto yy210; goto yy203; } } else { if(yych <= '#'){ if(yych <= '"') goto yy210; goto yy205; } else { if(yych == '-') goto yy209; goto yy210; } } yy201: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy220; yy202: #line 882 { 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; } yy203: yych = *++YYCURSOR; if(yych == '\n') goto yy219; yy204: #line 991 { QUOTECAT(qstr, qcapa, qidx, *YYTOKEN); goto ScalarBlock2; } yy205: yych = *++YYCURSOR; yy206: #line 953 { lvl = CURRENT_LEVEL(); if ( lvl->status != syck_lvl_block ) { eat_comments( parser ); YYTOKEN = YYCURSOR; } else { QUOTECAT(qstr, qcapa, qidx, *YYTOKEN); } goto ScalarBlock2; } yy207: yych = *++YYCURSOR; yy208: #line 967 { YYCURSOR--; POP_LEVEL(); RETURN_YAML_BLOCK(); } yy209: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych == '-') goto yy211; goto yy204; yy210: yych = *++YYCURSOR; goto yy204; yy211: yych = *++YYCURSOR; if(yych == '-') goto yy213; yy212: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy202; case 1: goto yy204; } yy213: yych = *++YYCURSOR; if(yybm[0+yych] & 64) goto yy216; if(yych == '\n') goto yy214; if(yych == '\r') goto yy218; goto yy212; yy214: yych = *++YYCURSOR; yy215: #line 972 { 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; } } yy216: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy217: if(yybm[0+yych] & 64) goto yy216; goto yy215; yy218: yych = *++YYCURSOR; if(yych == '\n') goto yy214; goto yy212; yy219: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy220: if(yybm[0+yych] & 128) goto yy219; if(yych != '\r') goto yy202; yy221: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych == '\n') goto yy219; goto yy212; } #line 996 } return 0; } void eat_comments( SyckParser *parser ) { Comment: { YYTOKEN = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; static unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; goto yy222; yy223: ++YYCURSOR; yy222: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yych <= '\n'){ if(yych <= '\000') goto yy224; if(yych <= '\t') goto yy229; goto yy226; } else { if(yych == '\r') goto yy227; goto yy229; } yy224: yych = *++YYCURSOR; yy225: #line 1012 { YYCURSOR = YYTOKEN; return; } yy226: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy231; yy227: yych = *++YYCURSOR; if(yybm[0+yych] & 128) goto yy230; yy228: #line 1016 { goto Comment; } yy229: yych = *++YYCURSOR; goto yy228; yy230: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy231: if(yybm[0+yych] & 128) goto yy230; if(yych != '\r') goto yy225; yy232: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yybm[0+yych] & 128) goto yy230; yy233: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy225; } } #line 1019 } } 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); }