From 55f4dc4c9a5345c28d0da750d1ee00fbb0870885 Mon Sep 17 00:00:00 2001 From: why Date: Fri, 9 May 2003 21:25:50 +0000 Subject: Initial checkin of YAML substances. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3772 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/syck/token.c | 1638 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1638 insertions(+) create mode 100644 ext/syck/token.c (limited to 'ext/syck/token.c') diff --git a/ext/syck/token.c b/ext/syck/token.c new file mode 100644 index 0000000000..17ca2d21eb --- /dev/null +++ b/ext/syck/token.c @@ -0,0 +1,1638 @@ +/* Generated by re2c 0.5 on Thu May 8 08:06:37 2003 */ +#line 1 "token.re" +// +// token.re +// +// $Author$ +// $Date$ +// +// Copyright (C) 2003 why the lucky stiff +// + +#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 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) YYLINE++; YYLINEPTR = ptr + 1 + +// +// 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 yylex() +// +#define FORCE_NEXT_TOKEN(tok) parser->force_token = tok; + +// +// Nice little macro to ensure we're IOPENed to the current level. +// * Only use this macro in the "Document" section * +// +#define ENSURE_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 IOPEN; \ + } \ + } + +// +// Nice little macro to ensure closure of levels. +// * Only use this macro in the "Document" section * +// +#define ENSURE_IEND(last_lvl, to_len) \ + if ( last_lvl->spaces > to_len ) \ + { \ + syck_parser_pop_level( parser ); \ + YYPOS(0); \ + return 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'; \ + } + +// +// Tags a plain scalar with a transfer method +// * Use only in "Plain" section * +// +#define RETURN_IMPLICIT(fold) \ + { \ + SyckLevel *i_lvl = CURRENT_LEVEL(); \ + YYCURSOR = YYTOKTMP; \ + yylval->nodeData = syck_new_str2( YYTOKEN, YYCURSOR - YYTOKEN ); \ + if ( fold ) { \ + syck_fold_format( yylval->nodeData->data.str, BLOCK_PLAIN, i_lvl->spaces, NL_CHOMP ); \ + } \ + if ( parser->implicit_typing == 1 ) \ + { \ + try_tag_implicit( yylval->nodeData, parser->taguri_expansion ); \ + } \ + return PLAIN; \ + } + +// +// Handles newlines, calculates indent +// +#define GOBBLE_UP_INDENT( ict, start ) \ + char *indent = start; \ + NEWLINE(indent); \ + while ( indent < YYCURSOR ) \ + { \ + if ( *(++indent) == '\n' ) \ + { \ + NEWLINE(indent); \ + } \ + } \ + ict = 0; \ + if ( *YYCURSOR == '\0' ) \ + { \ + ict = -1; \ + start = YYCURSOR; \ + } \ + else if ( *YYLINEPTR == ' ' ) \ + { \ + ict = YYCURSOR - YYLINEPTR; \ + } + +// +// If an indent exists at the current level, back up. +// +#define GET_TRUE_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 yyerror() only! +// +SyckParser *syck_parser_ptr = NULL; + +// +// Accessory funcs later in this file. +// +void eat_comments( SyckParser * ); + +// +// My own re-entrant yylex() using re2c. +// You really get used to the limited regexp. +// It's really nice to not rely on backtracking and such. +// +int +yylex( YYSTYPE *yylval, SyckParser *parser ) +{ + 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 206 + + + 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, 96, 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) < 4) YYFILL(4); + yych = *YYCURSOR; + if(yych <= '"'){ + if(yych <= '\000') goto yy6; + if(yych == '\n') goto yy8; + goto yy10; + } else { + if(yych <= '#') goto yy4; + if(yych != '-') goto yy10; + } +yy2: yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if(yych == '-') goto yy15; +yy3: +#line 247 + { YYPOS(0); + goto Document; + } +yy4: yych = *++YYCURSOR; +yy5: +#line 233 + { eat_comments( parser ); + goto Header; + } +yy6: yych = *++YYCURSOR; +yy7: +#line 237 + { SyckLevel *lvl = CURRENT_LEVEL(); + ENSURE_IEND(lvl, -1); + return 0; + } +yy8: yych = *++YYCURSOR; + goto yy12; +yy9: +#line 242 + { int indt_len; + GOBBLE_UP_INDENT( indt_len, YYTOKEN ); + goto Header; + } +yy10: yych = *++YYCURSOR; + goto yy3; +yy11: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy12: if(yybm[0+yych] & 32) goto yy11; + if(yych != ' ') goto yy9; +yy13: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy14: if(yybm[0+yych] & 64) goto yy13; + goto yy9; +yy15: yych = *++YYCURSOR; + if(yych == '-') goto yy17; +yy16: YYCURSOR = YYMARKER; + switch(yyaccept){ + case 0: goto yy3; + } +yy17: yych = *++YYCURSOR; + if(yybm[0+yych] & 128) goto yy18; + if(yych == '\n') goto yy21; + goto yy16; +yy18: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy19: if(yybm[0+yych] & 128) goto yy18; +yy20: +#line 219 + { SyckLevel *lvl = CURRENT_LEVEL(); + if ( lvl->status == syck_lvl_header ) + { + YYPOS(3); + goto Directive; + } + else + { + ENSURE_IEND(lvl, -1); + YYPOS(0); + return 0; + } + } +yy21: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy22: if(yych == '\n') goto yy21; + goto yy20; +} +#line 251 + + +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, 160, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 136, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 16, 64, 64, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 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, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 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 yy23; +yy24: ++YYCURSOR; +yy23: + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if(yych <= ','){ + if(yych <= '"'){ + if(yych <= '\n'){ + if(yych <= '\000') goto yy47; + if(yych <= '\t') goto yy49; + } else { + if(yych <= '\037') goto yy49; + if(yych <= ' ') goto yy45; + if(yych <= '!') goto yy36; + goto yy40; + } + } else { + if(yych <= '\''){ + if(yych <= '#') goto yy43; + if(yych <= '%') goto yy49; + if(yych <= '&') goto yy34; + goto yy38; + } else { + if(yych == '*') goto yy35; + if(yych <= '+') goto yy49; + goto yy31; + } + } + } else { + if(yych <= 'Z'){ + if(yych <= ':'){ + if(yych <= '-') goto yy33; + if(yych <= '9') goto yy49; + goto yy31; + } else { + if(yych <= '=') goto yy49; + if(yych <= '>') goto yy42; + if(yych <= '?') goto yy33; + goto yy49; + } + } else { + if(yych <= 'z'){ + if(yych <= '[') goto yy27; + if(yych == ']') goto yy29; + goto yy49; + } else { + if(yych <= '{') goto yy27; + if(yych <= '|') goto yy42; + if(yych <= '}') goto yy29; + goto yy49; + } + } + } +yy25: yych = *++YYCURSOR; + goto yy77; +yy26: +#line 265 + { // Isolate spaces + int indt_len; + GOBBLE_UP_INDENT( indt_len, YYTOKEN ); + lvl = CURRENT_LEVEL(); + + // Check for open indent + ENSURE_IEND(lvl, indt_len); + ENSURE_IOPEN(lvl, indt_len, 0); + return INDENT; + } +yy27: yych = *++YYCURSOR; +yy28: +#line 276 + { ENSURE_IOPEN(lvl, 0, 1); + lvl = CURRENT_LEVEL(); + ADD_LEVEL(lvl->spaces + 1, syck_lvl_inline); + return YYTOKEN[0]; + } +yy29: yych = *++YYCURSOR; +yy30: +#line 282 + { POP_LEVEL(); + return YYTOKEN[0]; + } +yy31: yych = *++YYCURSOR; + if(yych == '\n') goto yy74; + if(yych == ' ') goto yy71; +yy32: +#line 331 + { ENSURE_IOPEN(lvl, 0, 1); + goto Plain; + } +yy33: yych = *++YYCURSOR; + if(yych == '\n') goto yy69; + if(yych == ' ') goto yy66; + goto yy32; +yy34: yych = *++YYCURSOR; + if(yych <= '-') goto yy32; + if(yych == '`') goto yy32; + if(yych <= 'z') goto yy63; + goto yy32; +yy35: yych = *++YYCURSOR; + if(yybm[0+yych] & 64) goto yy60; + goto yy32; +yy36: yych = *++YYCURSOR; +yy37: +#line 308 + { goto TransferMethod; } +yy38: yych = *++YYCURSOR; +yy39: +#line 310 + { goto SingleQuote; } +yy40: yych = *++YYCURSOR; +yy41: +#line 312 + { goto DoubleQuote; } +yy42: yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if(yybm[0+yych] & 32) goto yy58; + if(yych <= '+'){ + if(yych == ' ') goto yy55; + if(yych <= '*') goto yy32; + goto yy52; + } else { + if(yych <= '-'){ + if(yych <= ',') goto yy32; + goto yy52; + } else { + if(yych <= '/') goto yy32; + if(yych <= '9') goto yy52; + goto yy32; + } + } +yy43: yych = *++YYCURSOR; +yy44: +#line 321 + { eat_comments( parser ); + goto Document; + } +yy45: yych = *++YYCURSOR; + goto yy51; +yy46: +#line 325 + { goto Document; } +yy47: yych = *++YYCURSOR; +yy48: +#line 327 + { ENSURE_IEND(lvl, -1); + return 0; + } +yy49: yych = *++YYCURSOR; + goto yy32; +yy50: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy51: if(yybm[0+yych] & 8) goto yy50; + goto yy46; +yy52: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy53: if(yybm[0+yych] & 32) goto yy58; + if(yych <= '+'){ + if(yych == ' ') goto yy55; + if(yych >= '+') goto yy52; + } else { + if(yych <= '-'){ + if(yych >= '-') goto yy52; + } else { + if(yych <= '/') goto yy54; + if(yych <= '9') goto yy52; + } + } +yy54: YYCURSOR = YYMARKER; + switch(yyaccept){ + case 0: goto yy32; + } +yy55: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy56: if(yych == ' ') goto yy55; +yy57: +#line 314 + { if ( *( YYCURSOR - 1 ) == '\n' ) + { + YYCURSOR--; + } + goto ScalarBlock; + } +yy58: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy59: if(yybm[0+yych] & 32) goto yy58; + goto yy57; +yy60: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy61: if(yybm[0+yych] & 64) goto yy60; +yy62: +#line 304 + { yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 ); + return ALIAS; + } +yy63: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy64: if(yych <= '-') goto yy65; + if(yych == '`') goto yy65; + if(yych <= 'z') goto yy63; +yy65: +#line 300 + { yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 ); + return ANCHOR; + } +yy66: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy67: if(yych == ' ') goto yy66; +yy68: +#line 290 + { ENSURE_IOPEN(lvl, YYTOKEN - YYLINEPTR, 1); + FORCE_NEXT_TOKEN(IOPEN); + if ( *( YYCURSOR - 1 ) == '\n' ) + { + YYCURSOR--; + } + ADD_LEVEL(YYCURSOR - YYLINEPTR, syck_lvl_doc); + return YYTOKEN[0]; + } +yy69: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy70: if(yych == '\n') goto yy69; + goto yy68; +yy71: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy72: if(yych == ' ') goto yy71; +yy73: +#line 286 + { YYPOS(1); + return YYTOKEN[0]; + } +yy74: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy75: if(yych == '\n') goto yy74; + goto yy73; +yy76: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy77: if(yych == '\n') goto yy76; + if(yych != ' ') goto yy26; +yy78: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy79: if(yybm[0+yych] & 128) goto yy78; + goto yy26; +} +#line 335 + + } + +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 yy80; +yy81: ++YYCURSOR; +yy80: + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if(yych <= ' '){ + if(yych <= '\000') goto yy82; + if(yych <= '\037') goto yy87; + goto yy85; + } else { + if(yych == '%') goto yy83; + goto yy87; + } +yy82: YYCURSOR = YYMARKER; + switch(yyaccept){ + case 0: goto yy84; + } +yy83: yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if(yych <= '-') goto yy84; + if(yych == '`') goto yy84; + if(yych <= 'z') goto yy90; +yy84: +#line 348 + { YYCURSOR = YYTOKTMP; + return DOCSEP; + } +yy85: yych = *++YYCURSOR; + goto yy89; +yy86: +#line 346 + { goto Directive; } +yy87: yych = *++YYCURSOR; + goto yy84; +yy88: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy89: if(yybm[0+yych] & 32) goto yy88; + goto yy86; +yy90: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy91: if(yybm[0+yych] & 64) goto yy90; + if(yych != ':') goto yy82; +yy92: yych = *++YYCURSOR; + if(yybm[0+yych] & 128) goto yy93; + goto yy82; +yy93: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy94: if(yybm[0+yych] & 128) goto yy93; +yy95: +#line 344 + { goto Directive; } +} +#line 351 + + + } + +Plain: + { + SyckLevel *plvl; + int parentIndent; + int multiLine = 0; + YYCURSOR = YYTOKEN; + plvl = CURRENT_LEVEL(); + GET_TRUE_INDENT(parentIndent); + +Plain2: + YYTOKTMP = YYCURSOR; + +Plain3: + +{ + YYCTYPE yych; + unsigned int yyaccept; + static unsigned char yybm[] = { + 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, + 160, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 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 yy96; +yy97: ++YYCURSOR; +yy96: + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if(yych <= ','){ + if(yych <= '\n'){ + if(yych <= '\000') goto yy105; + if(yych <= '\t') goto yy109; + } else { + if(yych == ' ') goto yy107; + if(yych <= '+') goto yy109; + goto yy104; + } + } else { + if(yych <= '\\'){ + if(yych == ':') goto yy100; + goto yy109; + } else { + if(yych <= ']') goto yy102; + if(yych == '}') goto yy102; + goto yy109; + } + } +yy98: yych = *++YYCURSOR; + goto yy122; +yy99: +#line 371 + { int indt_len; + SyckLevel *lvl; + char *tok = YYTOKTMP; + GOBBLE_UP_INDENT( indt_len, tok ); + lvl = CURRENT_LEVEL(); + + if ( indt_len <= parentIndent ) + { + RETURN_IMPLICIT(multiLine); + } + + multiLine = 1; + goto Plain2; + } +yy100: yych = *++YYCURSOR; + if(yych == '\n') goto yy119; + if(yych == ' ') goto yy116; +yy101: +#line 400 + { goto Plain2; } +yy102: yych = *++YYCURSOR; +yy103: +#line 388 + { if ( plvl->status != syck_lvl_inline ) goto Plain2; + RETURN_IMPLICIT(multiLine); + } +yy104: yych = *++YYCURSOR; + if(yybm[0+yych] & 64) goto yy114; + if(yych == ' ') goto yy112; + goto yy101; +yy105: yych = *++YYCURSOR; +yy106: +#line 392 + { RETURN_IMPLICIT(multiLine); } +yy107: yych = *++YYCURSOR; + if(yych == '#') goto yy110; +yy108: +#line 398 + { goto Plain3; } +yy109: yych = *++YYCURSOR; + goto yy101; +yy110: yych = *++YYCURSOR; +yy111: +#line 394 + { eat_comments( parser ); + RETURN_IMPLICIT(multiLine); + } +yy112: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy113: if(yybm[0+yych] & 32) goto yy112; + goto yy103; +yy114: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy115: if(yybm[0+yych] & 64) goto yy114; + goto yy103; +yy116: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy117: if(yych == ' ') goto yy116; +yy118: +#line 386 + { RETURN_IMPLICIT(multiLine); } +yy119: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy120: if(yych == '\n') goto yy119; + goto yy118; +yy121: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy122: if(yych == '\n') goto yy121; + if(yych != ' ') goto yy99; +yy123: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy124: if(yybm[0+yych] & 128) goto yy123; + goto yy99; +} +#line 402 + + } + +SingleQuote: + { + int qidx = 0; + int qcapa = 100; + char *qstr = S_ALLOC_N( char, qcapa ); + +SingleQuote2: + YYTOKTMP = YYCURSOR; + +{ + YYCTYPE yych; + unsigned int yyaccept; + static unsigned char yybm[] = { + 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, + 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 yy125; +yy126: ++YYCURSOR; +yy125: + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if(yych <= '\n'){ + if(yych <= '\000') goto yy131; + if(yych <= '\t') goto yy132; + } else { + if(yych == '\'') goto yy129; + goto yy132; + } +yy127: yych = *++YYCURSOR; + goto yy137; +yy128: +#line 416 + { int indt_len; + int nl_count = 0; + SyckLevel *lvl; + GOBBLE_UP_INDENT( indt_len, YYTOKTMP ); + lvl = CURRENT_LEVEL(); + + if ( lvl->status != syck_lvl_str ) + { + ADD_LEVEL( indt_len, syck_lvl_str ); + } + else if ( indt_len < lvl->spaces ) + { + // Error! + } + + while ( YYTOKTMP < YYCURSOR ) + { + if ( *YYTOKTMP++ == '\n' ) + nl_count++; + } + 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; + } +yy129: yych = *++YYCURSOR; + if(yych == '\'') goto yy134; +yy130: +#line 456 + { SyckLevel *lvl; + SyckNode *n = syck_alloc_str(); + lvl = CURRENT_LEVEL(); + + if ( lvl->status == syck_lvl_str ) + { + POP_LEVEL(); + } + n->data.str->ptr = qstr; + n->data.str->len = qidx; + yylval->nodeData = n; + return PLAIN; + } +yy131: yych = *++YYCURSOR; + goto yy130; +yy132: yych = *++YYCURSOR; +yy133: +#line 470 + { QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1)); + goto SingleQuote2; + } +yy134: yych = *++YYCURSOR; +yy135: +#line 452 + { QUOTECAT(qstr, qcapa, qidx, '\''); + goto SingleQuote2; + } +yy136: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy137: if(yybm[0+yych] & 64) goto yy136; + if(yych != ' ') goto yy128; +yy138: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy139: if(yybm[0+yych] & 128) goto yy138; + goto yy128; +} +#line 474 + + + } + + +DoubleQuote: + { + int keep_nl = 1; + int qidx = 0; + int qcapa = 100; + char *qstr = S_ALLOC_N( char, qcapa ); + +DoubleQuote2: + YYTOKTMP = YYCURSOR; + + +{ + YYCTYPE yych; + unsigned int yyaccept; + static unsigned char yybm[] = { + 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, + 160, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 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 yy140; +yy141: ++YYCURSOR; +yy140: + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if(yych <= '!'){ + if(yych <= '\000') goto yy146; + if(yych != '\n') goto yy149; + } else { + if(yych <= '"') goto yy148; + if(yych == '\\') goto yy144; + goto yy149; + } +yy142: yych = *++YYCURSOR; + goto yy158; +yy143: +#line 492 + { int indt_len; + int nl_count = 0; + SyckLevel *lvl; + GOBBLE_UP_INDENT( indt_len, YYTOKTMP ); + lvl = CURRENT_LEVEL(); + + if ( lvl->status != syck_lvl_str ) + { + ADD_LEVEL( indt_len, syck_lvl_str ); + } + else if ( indt_len < lvl->spaces ) + { + // Error! + } + + if ( keep_nl == 1 ) + { + while ( YYTOKTMP < YYCURSOR ) + { + if ( *YYTOKTMP++ == '\n' ) + nl_count++; + } + 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; + } +yy144: yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if(yybm[0+yych] & 32) goto yy150; + if(yych <= 'd'){ + if(yych <= '"'){ + if(yych == '\n') goto yy153; + if(yych >= '"') goto yy155; + } else { + if(yych <= '\\'){ + if(yych >= '\\') goto yy155; + } else { + if(yych <= '`') goto yy145; + if(yych <= 'b') goto yy155; + } + } + } else { + if(yych <= 'r'){ + if(yych <= 'm'){ + if(yych <= 'f') goto yy155; + } else { + if(yych <= 'n') goto yy155; + if(yych >= 'r') goto yy155; + } + } else { + if(yych <= 't'){ + if(yych >= 't') goto yy155; + } else { + if(yych == 'v') goto yy155; + } + } + } +yy145: +#line 567 + { QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1)); + goto DoubleQuote2; + } +yy146: yych = *++YYCURSOR; +yy147: +#line 553 + { SyckLevel *lvl; + SyckNode *n = syck_alloc_str(); + lvl = CURRENT_LEVEL(); + + if ( lvl->status == syck_lvl_str ) + { + POP_LEVEL(); + } + n->data.str->ptr = qstr; + n->data.str->len = qidx; + yylval->nodeData = n; + return PLAIN; + } +yy148: yych = *++YYCURSOR; + goto yy147; +yy149: yych = *++YYCURSOR; + goto yy145; +yy150: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy151: if(yybm[0+yych] & 32) goto yy150; + if(yych == '\n') goto yy153; +yy152: YYCURSOR = YYMARKER; + switch(yyaccept){ + case 0: goto yy145; + } +yy153: yych = *++YYCURSOR; +yy154: +#line 548 + { keep_nl = 0; + YYCURSOR--; + goto DoubleQuote2; + } +yy155: yych = *++YYCURSOR; +yy156: +#line 532 + { char ch = *( YYCURSOR - 1 ); + switch ( ch ) + { + case 'a': ch = '\a'; break; + case 'b': ch = '\b'; break; + case 'e': ch = '\e'; break; + case 'f': ch = '\f'; break; + case 'n': ch = '\n'; break; + case 'r': ch = '\r'; break; + case 't': ch = '\t'; break; + case 'v': ch = '\v'; break; + } + QUOTECAT(qstr, qcapa, qidx, ch); + goto DoubleQuote2; + } +yy157: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy158: if(yybm[0+yych] & 64) goto yy157; + if(yych != ' ') goto yy143; +yy159: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy160: if(yybm[0+yych] & 128) goto yy159; + goto yy143; +} +#line 571 + + } + +TransferMethod: + { + YYTOKTMP = YYCURSOR; + +{ + YYCTYPE yych; + unsigned int yyaccept; + static unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 64, 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 yy161; +yy162: ++YYCURSOR; +yy161: + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if(yych <= '\n'){ + if(yych <= '\000') goto yy163; + if(yych <= '\t') goto yy167; + goto yy166; + } else { + if(yych == ' ') goto yy164; + goto yy167; + } +yy163:yy164: yych = *++YYCURSOR; + goto yy172; +yy165: +#line 580 + { SyckLevel *lvl; + YYCURSOR = YYTOKTMP; + if ( YYCURSOR == YYTOKEN + 1 ) + { + return ITRANSFER; + } + + lvl = CURRENT_LEVEL(); + + // + // URL Prefixing + // + if ( *(YYTOKEN + 1) == '^' ) + { + yylval->name = S_ALLOC_N( char, YYCURSOR - YYTOKEN + strlen( lvl->domain ) ); + yylval->name[0] = '\0'; + strcat( yylval->name, lvl->domain ); + strncat( yylval->name, YYTOKEN + 2, YYCURSOR - YYTOKEN - 2 ); + } + else + { + char *carat = YYTOKEN + 1; + while ( (++carat) < YYCURSOR ) + { + if ( *carat == '^' ) + break; + } + + if ( carat < YYCURSOR ) + { + lvl->domain = syck_strndup( YYTOKEN + 1, carat - YYTOKEN - 1 ); + yylval->name = S_ALLOC_N( char, YYCURSOR - carat + strlen( lvl->domain ) ); + yylval->name[0] = '\0'; + strcat( yylval->name, lvl->domain ); + strncat( yylval->name, carat + 1, YYCURSOR - carat - 1 ); + } + else + { + yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 ); + } + } + return TRANSFER; + } +yy166: yych = *++YYCURSOR; + goto yy170; +yy167: yych = *++YYCURSOR; +yy168: +#line 624 + { goto TransferMethod; } +yy169: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy170: if(yybm[0+yych] & 64) goto yy169; + goto yy165; +yy171: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy172: if(yybm[0+yych] & 128) goto yy171; + goto yy165; +} +#line 626 + + } + +ScalarBlock: + { + int blockType = 0; + int nlDoWhat = 0; + int forceIndent = -1; + char *yyt = YYTOKEN; + SyckLevel *lvl = CURRENT_LEVEL(); + int parentIndent; + GET_TRUE_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; + } + } + + YYTOKEN = YYCURSOR; + +ScalarBlock2: + YYTOKTMP = YYCURSOR; + +{ + YYCTYPE yych; + unsigned int yyaccept; + static unsigned char yybm[] = { + 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, + 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 yy173; +yy174: ++YYCURSOR; +yy173: + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if(yych <= '\n'){ + if(yych <= '\000') goto yy177; + if(yych <= '\t') goto yy181; + } else { + if(yych == '#') goto yy179; + goto yy181; + } +yy175: yych = *++YYCURSOR; + goto yy184; +yy176: +#line 668 + { int indt_len; + GOBBLE_UP_INDENT( indt_len, YYTOKTMP ); + lvl = CURRENT_LEVEL(); + + if ( indt_len > parentIndent && lvl->status != syck_lvl_block ) + { + ADD_LEVEL( forceIndent > 0 ? forceIndent : indt_len, syck_lvl_block ); + } + + lvl = CURRENT_LEVEL(); + if ( lvl->status != syck_lvl_block ) + { + yylval->nodeData = syck_new_str2( YYTOKEN, 0 ); + YYCURSOR = YYTOKTMP; + return BLOCK; + } + else if ( indt_len < lvl->spaces ) + { + YYCURSOR--; + yylval->nodeData = syck_new_str2( YYTOKEN, YYCURSOR - YYTOKEN ); + syck_fold_format( yylval->nodeData->data.str, blockType, lvl->spaces, nlDoWhat ); + if ( lvl->status == syck_lvl_block ) + { + POP_LEVEL(); + } + YYCURSOR = YYTOKTMP; + return BLOCK; + } + goto ScalarBlock2; + } +yy177: yych = *++YYCURSOR; +yy178: +#line 700 + { lvl = CURRENT_LEVEL(); + YYCURSOR--; + yylval->nodeData = syck_new_str2( YYTOKEN, YYCURSOR - YYTOKEN ); + syck_fold_format( yylval->nodeData->data.str, blockType, lvl->spaces, nlDoWhat ); + POP_LEVEL(); + return BLOCK; + } +yy179: yych = *++YYCURSOR; +yy180: +#line 708 + { lvl = CURRENT_LEVEL(); + if ( lvl->status != syck_lvl_block ) + { + eat_comments( parser ); + YYTOKEN = YYCURSOR; + } + goto ScalarBlock2; + } +yy181: yych = *++YYCURSOR; +yy182: +#line 717 + { goto ScalarBlock2; } +yy183: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy184: if(yybm[0+yych] & 64) goto yy183; + if(yych != ' ') goto yy176; +yy185: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy186: if(yybm[0+yych] & 128) goto yy185; + goto yy176; +} +#line 719 + + } + +} + +void +eat_comments( SyckParser *parser ) +{ + char *tok; + +Comment: + { + tok = 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 yy187; +yy188: ++YYCURSOR; +yy187: + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if(yych <= '\000') goto yy189; + if(yych == '\n') goto yy191; + goto yy192; +yy189: yych = *++YYCURSOR; +yy190: +#line 735 + { SyckLevel *lvl = CURRENT_LEVEL(); + YYCURSOR = tok; + return; + } +yy191: yych = *++YYCURSOR; + goto yy195; +yy192: yych = *++YYCURSOR; +yy193: +#line 740 + { goto Comment; + } +yy194: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy195: if(yybm[0+yych] & 128) goto yy194; + goto yy190; +} +#line 743 + + + } + +} + +int +yywrap() +{ + return 1; +} + +void +yyerror( char *msg ) +{ + if ( syck_parser_ptr->error_handler == NULL ) + syck_parser_ptr->error_handler = syck_default_error_handler; + + syck_parser_ptr->root = NULL; + (syck_parser_ptr->error_handler)(syck_parser_ptr, msg); +} + -- cgit v1.2.1