summaryrefslogtreecommitdiff
path: root/ext/syck/token.c
diff options
context:
space:
mode:
authorwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-05-09 21:25:50 +0000
committerwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-05-09 21:25:50 +0000
commit55f4dc4c9a5345c28d0da750d1ee00fbb0870885 (patch)
tree904359659b75882365348decb2ca0789ca1ac803 /ext/syck/token.c
parent605adb86e2c2889c13e07cadf328f8032eebae7c (diff)
Initial checkin of YAML substances.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3772 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/syck/token.c')
-rw-r--r--ext/syck/token.c1638
1 files changed, 1638 insertions, 0 deletions
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);
+}
+