Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

2726 lines (2607 sloc) 59.067 kb
/* Generated by re2c 0.9.10 on Tue Sep 20 17:46:17 2005 */
#line 1 "token.re"
/*
* token.re
*
* $Author: shyouhei $
* $Date: 2007-02-12 15:01:19 -0800 (Mon, 12 Feb 2007) $
*
* 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_iseq || last_lvl->status == syck_lvl_imap ) \
{ \
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; \
}
/* concat the inline characters to the plain scalar */
#define PLAIN_NOT_INL() \
if ( *(YYCURSOR - 1) == ' ' || is_newline( YYCURSOR - 1 ) ) \
{ \
YYCURSOR--; \
} \
QUOTECATS(qstr, qcapa, qidx, YYTOKEN, YYCURSOR - YYTOKEN); \
goto Plain2;
/* trim spaces off the end in case of indent */
#define PLAIN_IS_INL() \
char *walker = qstr + qidx - 1; \
while ( walker > qstr && ( *walker == '\n' || *walker == ' ' || *walker == '\t' ) ) \
{ \
qidx--; \
walker[0] = '\0'; \
walker--; \
}
/*
* Keep or chomp block?
* * Use only in "ScalarBlock" section *
*/
#define RETURN_YAML_BLOCK() \
{ \
SyckNode *n = syck_alloc_str(); \
if ( ((SyckParser *)parser)->taguri_expansion == 1 ) \
{ \
n->type_id = syck_taguri( YAML_DOMAIN, "str", 3 ); \
} \
else \
{ \
n->type_id = syck_strndup( "str", 3 ); \
} \
n->data.str->ptr = qstr; \
n->data.str->len = qidx; \
if ( blockType == BLOCK_LIT ) { \
n->data.str->style = scalar_literal; \
} else { \
n->data.str->style = scalar_fold; \
} \
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 ( lvl_deep->status == syck_lvl_seq || ( indt_len == YYCURSOR - YYLINEPTR && lvl_deep->status != syck_lvl_map ) ) \
{ \
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 );
}
return YAML_DOCSEP;
}
/*
* 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 315 "token.re"
if ( YYLINEPTR != YYCURSOR )
{
goto Document;
}
Header:
YYTOKEN = YYCURSOR;
#line 307 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy0;
++YYCURSOR;
yy0:
if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
yych = *YYCURSOR;
switch(yych){
case 0x00: goto yy7;
case 0x09: case ' ': goto yy12;
case 0x0A: goto yy9;
case 0x0D: goto yy11;
case '#': goto yy5;
case '-': goto yy2;
case '.': goto yy4;
default: goto yy14;
}
yy2: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
case '-': goto yy28;
default: goto yy3;
}
yy3:
#line 374 "token.re"
{ YYPOS(0);
goto Document;
}
#line 337 "<stdout>"
yy4: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
case '.': goto yy21;
default: goto yy3;
}
yy5: ++YYCURSOR;
goto yy6;
yy6:
#line 356 "token.re"
{ eat_comments( parser );
goto Header;
}
#line 351 "<stdout>"
yy7: ++YYCURSOR;
goto yy8;
yy8:
#line 360 "token.re"
{ SyckLevel *lvl = CURRENT_LEVEL();
ENSURE_YAML_IEND(lvl, -1);
YYPOS(0);
return 0;
}
#line 361 "<stdout>"
yy9: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
goto yy18;
yy10:
#line 366 "token.re"
{ GOBBLE_UP_YAML_INDENT( doc_level, YYTOKEN );
goto Header;
}
#line 370 "<stdout>"
yy11: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy17;
default: goto yy3;
}
yy12: ++YYCURSOR;
yych = *YYCURSOR;
goto yy16;
yy13:
#line 370 "token.re"
{ doc_level = YYCURSOR - YYLINEPTR;
goto Header;
}
#line 384 "<stdout>"
yy14: yych = *++YYCURSOR;
goto yy3;
yy15: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy16;
yy16: switch(yych){
case 0x09: case ' ': goto yy15;
default: goto yy13;
}
yy17: yyaccept = 1;
YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy18;
yy18: switch(yych){
case 0x0A: case ' ': goto yy17;
case 0x0D: goto yy19;
default: goto yy10;
}
yy19: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
switch(yych){
case 0x0A: goto yy17;
default: goto yy20;
}
yy20: YYCURSOR = YYMARKER;
switch(yyaccept){
case 1: goto yy10;
case 0: goto yy3;
}
yy21: yych = *++YYCURSOR;
switch(yych){
case '.': goto yy22;
default: goto yy20;
}
yy22: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy23;
case 0x0D: goto yy27;
case ' ': goto yy25;
default: goto yy20;
}
yy23: ++YYCURSOR;
goto yy24;
yy24:
#line 342 "token.re"
{ SyckLevel *lvl = CURRENT_LEVEL();
if ( lvl->status == syck_lvl_header )
{
goto Header;
}
else
{
ENSURE_YAML_IEND(lvl, -1);
YYPOS(0);
return 0;
}
return 0;
}
#line 446 "<stdout>"
yy25: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy26;
yy26: switch(yych){
case ' ': goto yy25;
default: goto yy24;
}
yy27: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy23;
default: goto yy20;
}
yy28: yych = *++YYCURSOR;
switch(yych){
case '-': goto yy29;
default: goto yy20;
}
yy29: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy30;
case 0x0D: goto yy34;
case ' ': goto yy32;
default: goto yy20;
}
yy30: ++YYCURSOR;
goto yy31;
yy31:
#line 328 "token.re"
{ SyckLevel *lvl = CURRENT_LEVEL();
if ( lvl->status == syck_lvl_header )
{
YYPOS(3);
goto Directive;
}
else
{
ENSURE_YAML_IEND(lvl, -1);
YYPOS(0);
return 0;
}
}
#line 489 "<stdout>"
yy32: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy33;
yy33: switch(yych){
case ' ': goto yy32;
default: goto yy31;
}
yy34: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case 0x0A: goto yy30;
default: goto yy20;
}
}
#line 378 "token.re"
Document:
{
SyckLevel *lvl = CURRENT_LEVEL();
if ( lvl->status == syck_lvl_header )
{
lvl->status = syck_lvl_doc;
}
YYTOKEN = YYCURSOR;
#line 518 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy35;
++YYCURSOR;
yy35:
if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
switch(yych){
case 0x00: goto yy62;
case 0x09: case ' ': goto yy60;
case 0x0A: goto yy37;
case 0x0D: goto yy39;
case '!': goto yy51;
case '"': goto yy55;
case '#': goto yy58;
case '&': goto yy49;
case '\'': goto yy53;
case '*': goto yy50;
case ',': case ':': goto yy47;
case '-': case '?': goto yy48;
case '>': case '|': goto yy57;
case '[': goto yy41;
case ']': case '}': goto yy45;
case '{': goto yy43;
default: goto yy64;
}
yy37: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy92;
yy38:
#line 392 "token.re"
{ /* Isolate spaces */
int indt_len;
GOBBLE_UP_YAML_INDENT( indt_len, YYTOKEN );
lvl = CURRENT_LEVEL();
doc_level = 0;
/* XXX: Comment lookahead */
if ( *YYCURSOR == '#' )
{
goto Document;
}
/* Ignore indentation inside inlines */
if ( lvl->status == syck_lvl_iseq || lvl->status == syck_lvl_imap )
{
goto Document;
}
/* Check for open indent */
ENSURE_YAML_IEND(lvl, indt_len);
ENSURE_YAML_IOPEN(lvl, indt_len, 0);
if ( indt_len == -1 )
{
return 0;
}
return YAML_INDENT;
}
#line 578 "<stdout>"
yy39: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case 0x0A: goto yy91;
default: goto yy40;
}
yy40:
#line 497 "token.re"
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
goto Plain;
}
#line 589 "<stdout>"
yy41: ++YYCURSOR;
goto yy42;
yy42:
#line 420 "token.re"
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
lvl = CURRENT_LEVEL();
ADD_LEVEL(lvl->spaces + 1, syck_lvl_iseq);
return YYTOKEN[0];
}
#line 599 "<stdout>"
yy43: ++YYCURSOR;
goto yy44;
yy44:
#line 426 "token.re"
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
lvl = CURRENT_LEVEL();
ADD_LEVEL(lvl->spaces + 1, syck_lvl_imap);
return YYTOKEN[0];
}
#line 609 "<stdout>"
yy45: ++YYCURSOR;
goto yy46;
yy46:
#line 432 "token.re"
{ POP_LEVEL();
return YYTOKEN[0];
}
#line 617 "<stdout>"
yy47: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
case 0x0A: goto yy86;
case 0x0D: goto yy90;
case ' ': goto yy88;
default: goto yy40;
}
yy48: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
case 0x0A: goto yy81;
case 0x0D: goto yy85;
case ' ': goto yy83;
default: goto yy40;
}
yy49: yych = *++YYCURSOR;
switch(yych){
case '-': case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z': case '_': case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z': goto yy78;
default: goto yy40;
}
yy50: yych = *++YYCURSOR;
switch(yych){
case '-': case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z': case '_': case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z': goto yy75;
default: goto yy40;
}
yy51: ++YYCURSOR;
goto yy52;
yy52:
#line 471 "token.re"
{ goto TransferMethod; }
#line 767 "<stdout>"
yy53: ++YYCURSOR;
goto yy54;
yy54:
#line 473 "token.re"
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
goto SingleQuote; }
#line 774 "<stdout>"
yy55: ++YYCURSOR;
goto yy56;
yy56:
#line 476 "token.re"
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
goto DoubleQuote; }
#line 781 "<stdout>"
yy57: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
case 0x0A: goto yy70;
case 0x0D: goto yy74;
case ' ': goto yy72;
case '+': case '-': case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': goto yy67;
default: goto yy40;
}
yy58: ++YYCURSOR;
goto yy59;
yy59:
#line 486 "token.re"
{ eat_comments( parser );
goto Document;
}
#line 807 "<stdout>"
yy60: ++YYCURSOR;
yych = *YYCURSOR;
goto yy66;
yy61:
#line 490 "token.re"
{ goto Document; }
#line 814 "<stdout>"
yy62: ++YYCURSOR;
goto yy63;
yy63:
#line 492 "token.re"
{ ENSURE_YAML_IEND(lvl, -1);
YYPOS(0);
return 0;
}
#line 823 "<stdout>"
yy64: yych = *++YYCURSOR;
goto yy40;
yy65: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy66;
yy66: switch(yych){
case 0x09: case ' ': goto yy65;
default: goto yy61;
}
yy67: ++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
goto yy68;
yy68: switch(yych){
case 0x0A: goto yy70;
case 0x0D: goto yy74;
case ' ': goto yy72;
case '+': case '-': case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': goto yy67;
default: goto yy69;
}
yy69: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy38;
case 1: goto yy40;
}
yy70: ++YYCURSOR;
goto yy71;
yy71:
#line 479 "token.re"
{ if ( is_newline( YYCURSOR - 1 ) )
{
YYCURSOR--;
}
goto ScalarBlock;
}
#line 869 "<stdout>"
yy72: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy73;
yy73: switch(yych){
case ' ': goto yy72;
default: goto yy71;
}
yy74: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy70;
default: goto yy69;
}
yy75: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy76;
yy76: switch(yych){
case '-': case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z': case '_': case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z': goto yy75;
default: goto yy77;
}
yy77:
#line 466 "token.re"
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
return YAML_ALIAS;
}
#line 956 "<stdout>"
yy78: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy79;
yy79: switch(yych){
case '-': case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z': case '_': case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z': goto yy78;
default: goto yy80;
}
yy80:
#line 455 "token.re"
{ sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
/*
* Remove previous anchors of the same name. Since the parser will likely
* construct deeper nodes first, we want those nodes to be placed in the
* queue for matching at a higher level of indentation.
*/
syck_hdlr_remove_anchor(parser, sycklval->name);
return YAML_ANCHOR;
}
#line 1036 "<stdout>"
yy81: ++YYCURSOR;
goto yy82;
yy82:
#line 441 "token.re"
{ ENSURE_YAML_IOPEN(lvl, YYTOKEN - YYLINEPTR, 1);
FORCE_NEXT_TOKEN(YAML_IOPEN);
if ( *YYCURSOR == '#' || is_newline( YYCURSOR ) || is_newline( YYCURSOR - 1 ) )
{
YYCURSOR--;
ADD_LEVEL((YYTOKEN + 1) - YYLINEPTR, syck_lvl_seq);
}
else /* spaces followed by content uses the space as indentation */
{
ADD_LEVEL(YYCURSOR - YYLINEPTR, syck_lvl_seq);
}
return YYTOKEN[0];
}
#line 1054 "<stdout>"
yy83: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy84;
yy84: switch(yych){
case ' ': goto yy83;
default: goto yy82;
}
yy85: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy81;
default: goto yy69;
}
yy86: ++YYCURSOR;
goto yy87;
yy87:
#line 436 "token.re"
{ if ( *YYTOKEN == ':' && lvl->status != syck_lvl_imap ) lvl->status = syck_lvl_map;
YYPOS(1);
return YYTOKEN[0];
}
#line 1076 "<stdout>"
yy88: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy89;
yy89: switch(yych){
case ' ': goto yy88;
default: goto yy87;
}
yy90: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy86;
default: goto yy69;
}
yy91: yyaccept = 0;
YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy92;
yy92: switch(yych){
case 0x0A: case ' ': goto yy91;
case 0x0D: goto yy93;
default: goto yy38;
}
yy93: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
switch(yych){
case 0x0A: goto yy91;
default: goto yy69;
}
}
#line 501 "token.re"
}
Directive:
{
YYTOKTMP = YYCURSOR;
#line 1117 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy94;
++YYCURSOR;
yy94:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
switch(yych){
case 0x00: goto yy96;
case 0x09: case ' ': goto yy99;
case '%': goto yy97;
default: goto yy101;
}
yy96: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy98;
}
yy97: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
case '.':
case '/':
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case ':':
case ';':
case '<':
case '=':
case '>':
case '?':
case '@':
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z':
case '[':
case '\\':
case ']':
case '^':
case '_': case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z': goto yy104;
default: goto yy98;
}
yy98:
#line 514 "token.re"
{ YYCURSOR = YYTOKTMP;
return YAML_DOCSEP;
}
#line 1221 "<stdout>"
yy99: ++YYCURSOR;
yych = *YYCURSOR;
goto yy103;
yy100:
#line 512 "token.re"
{ goto Directive; }
#line 1228 "<stdout>"
yy101: yych = *++YYCURSOR;
goto yy98;
yy102: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy103;
yy103: switch(yych){
case 0x09: case ' ': goto yy102;
default: goto yy100;
}
yy104: ++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
goto yy105;
yy105: switch(yych){
case '.':
case '/':
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': case ';':
case '<':
case '=':
case '>':
case '?':
case '@':
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z':
case '[':
case '\\':
case ']':
case '^':
case '_': case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z': goto yy104;
case ':': goto yy106;
default: goto yy96;
}
yy106: yych = *++YYCURSOR;
switch(yych){
case '.':
case '/':
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case ':':
case ';':
case '<':
case '=':
case '>':
case '?':
case '@':
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z':
case '[':
case '\\':
case ']':
case '^':
case '_': case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z': goto yy107;
default: goto yy96;
}
yy107: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy108;
yy108: switch(yych){
case '.':
case '/':
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case ':':
case ';':
case '<':
case '=':
case '>':
case '?':
case '@':
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z':
case '[':
case '\\':
case ']':
case '^':
case '_': case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z': goto yy107;
default: goto yy109;
}
yy109:
#line 510 "token.re"
{ goto Directive; }
#line 1484 "<stdout>"
}
#line 517 "token.re"
}
Plain:
{
int qidx = 0;
int qcapa = 100;
char *qstr = S_ALLOC_N( char, qcapa );
SyckLevel *plvl;
int parentIndent;
YYCURSOR = YYTOKEN;
plvl = CURRENT_LEVEL();
GET_TRUE_YAML_INDENT(parentIndent);
Plain2:
YYTOKEN = YYCURSOR;
Plain3:
#line 1509 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy110;
++YYCURSOR;
yy110:
if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
switch(yych){
case 0x00: goto yy124;
case 0x09: goto yy126;
case 0x0A: goto yy112;
case 0x0D: goto yy114;
case ' ': goto yy122;
case ',': goto yy117;
case ':': goto yy116;
case ']': goto yy120;
case '}': goto yy118;
default: goto yy127;
}
yy112: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy142;
yy113:
#line 540 "token.re"
{ int indt_len, nl_count = 0;
SyckLevel *lvl;
char *tok = YYTOKEN;
GOBBLE_UP_YAML_INDENT( indt_len, tok );
lvl = CURRENT_LEVEL();
if ( indt_len <= parentIndent )
{
RETURN_IMPLICIT();
}
while ( YYTOKEN < YYCURSOR )
{
int nl_len = newline_len( YYTOKEN++ );
if ( nl_len )
{
nl_count++;
YYTOKEN += nl_len - 1;
}
}
if ( nl_count <= 1 )
{
QUOTECAT(qstr, qcapa, qidx, ' ');
}
else
{
int i;
for ( i = 0; i < nl_count - 1; i++ )
{
QUOTECAT(qstr, qcapa, qidx, '\n');
}
}
goto Plain2;
}
#line 1570 "<stdout>"
yy114: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case 0x0A: goto yy141;
default: goto yy115;
}
yy115:
#line 627 "token.re"
{ QUOTECATS(qstr, qcapa, qidx, YYTOKEN, YYCURSOR - YYTOKEN);
goto Plain2;
}
#line 1581 "<stdout>"
yy116: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
case 0x0A: goto yy136;
case 0x0D: goto yy140;
case ' ': goto yy138;
default: goto yy115;
}
yy117: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
case 0x0A: goto yy130;
case 0x0D: goto yy134;
case ' ': goto yy132;
default: goto yy115;
}
yy118: ++YYCURSOR;
goto yy119;
yy119:
#line 589 "token.re"
{ if ( plvl->status != syck_lvl_imap )
{
PLAIN_NOT_INL();
}
else
{
PLAIN_IS_INL();
}
RETURN_IMPLICIT();
}
#line 1612 "<stdout>"
yy120: ++YYCURSOR;
goto yy121;
yy121:
#line 600 "token.re"
{ if ( plvl->status != syck_lvl_iseq )
{
PLAIN_NOT_INL();
}
else
{
PLAIN_IS_INL();
}
RETURN_IMPLICIT();
}
#line 1627 "<stdout>"
yy122: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case '#': goto yy128;
default: goto yy123;
}
yy123:
#line 617 "token.re"
{ if ( qidx == 0 )
{
goto Plain2;
}
else
{
goto Plain3;
}
}
#line 1644 "<stdout>"
yy124: ++YYCURSOR;
goto yy125;
yy125:
#line 615 "token.re"
{ RETURN_IMPLICIT(); }
#line 1650 "<stdout>"
yy126: yych = *++YYCURSOR;
goto yy123;
yy127: yych = *++YYCURSOR;
goto yy115;
yy128: ++YYCURSOR;
goto yy129;
yy129:
#line 611 "token.re"
{ eat_comments( parser );
RETURN_IMPLICIT();
}
#line 1662 "<stdout>"
yy130: ++YYCURSOR;
goto yy131;
yy131:
#line 578 "token.re"
{ if ( plvl->status != syck_lvl_iseq && plvl->status != syck_lvl_imap )
{
PLAIN_NOT_INL();
}
else
{
PLAIN_IS_INL();
}
RETURN_IMPLICIT();
}
#line 1677 "<stdout>"
yy132: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy133;
yy133: switch(yych){
case ' ': goto yy132;
default: goto yy131;
}
yy134: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy130;
default: goto yy135;
}
yy135: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy113;
case 1: goto yy115;
}
yy136: ++YYCURSOR;
goto yy137;
yy137:
#line 576 "token.re"
{ RETURN_IMPLICIT(); }
#line 1701 "<stdout>"
yy138: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy139;
yy139: switch(yych){
case ' ': goto yy138;
default: goto yy137;
}
yy140: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy136;
default: goto yy135;
}
yy141: yyaccept = 0;
YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy142;
yy142: switch(yych){
case 0x0A: case ' ': goto yy141;
case 0x0D: goto yy143;
default: goto yy113;
}
yy143: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
switch(yych){
case 0x0A: goto yy141;
default: goto yy135;
}
}
#line 631 "token.re"
}
SingleQuote:
{
int qidx = 0;
int qcapa = 100;
char *qstr = S_ALLOC_N( char, qcapa );
SingleQuote2:
YYTOKEN = YYCURSOR;
#line 1747 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy144;
++YYCURSOR;
yy144:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
switch(yych){
case 0x00: goto yy152;
case 0x0A: goto yy146;
case 0x0D: goto yy148;
case '\'': goto yy150;
default: goto yy153;
}
yy146: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy157;
yy147:
#line 645 "token.re"
{ int indt_len;
int nl_count = 0;
SyckLevel *lvl;
GOBBLE_UP_YAML_INDENT( indt_len, YYTOKEN );
lvl = CURRENT_LEVEL();
if ( lvl->status != syck_lvl_str )
{
ADD_LEVEL( indt_len, syck_lvl_str );
}
else if ( indt_len < lvl->spaces )
{
/* Error! */
}
while ( YYTOKEN < YYCURSOR )
{
int nl_len = newline_len( YYTOKEN++ );
if ( nl_len )
{
nl_count++;
YYTOKEN += nl_len - 1;
}
}
if ( nl_count <= 1 )
{
QUOTECAT(qstr, qcapa, qidx, ' ');
}
else
{
int i;
for ( i = 0; i < nl_count - 1; i++ )
{
QUOTECAT(qstr, qcapa, qidx, '\n');
}
}
goto SingleQuote2;
}
#line 1807 "<stdout>"
yy148: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case 0x0A: goto yy156;
default: goto yy149;
}
yy149:
#line 712 "token.re"
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
goto SingleQuote2;
}
#line 1818 "<stdout>"
yy150: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case '\'': goto yy154;
default: goto yy151;
}
yy151:
#line 689 "token.re"
{ SyckLevel *lvl;
SyckNode *n = syck_alloc_str();
lvl = CURRENT_LEVEL();
if ( lvl->status == syck_lvl_str )
{
POP_LEVEL();
}
if ( ((SyckParser *)parser)->taguri_expansion == 1 )
{
n->type_id = syck_taguri( YAML_DOMAIN, "str", 3 );
}
else
{
n->type_id = syck_strndup( "str", 3 );
}
n->data.str->ptr = qstr;
n->data.str->len = qidx;
n->data.str->style = scalar_1quote;
sycklval->nodeData = n;
return YAML_PLAIN;
}
#line 1848 "<stdout>"
yy152: yych = *++YYCURSOR;
goto yy151;
yy153: yych = *++YYCURSOR;
goto yy149;
yy154: ++YYCURSOR;
goto yy155;
yy155:
#line 685 "token.re"
{ QUOTECAT(qstr, qcapa, qidx, '\'');
goto SingleQuote2;
}
#line 1860 "<stdout>"
yy156: yyaccept = 0;
YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy157;
yy157: switch(yych){
case 0x0A: case ' ': goto yy156;
case 0x0D: goto yy158;
default: goto yy147;
}
yy158: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
switch(yych){
case 0x0A: goto yy156;
default: goto yy159;
}
yy159: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy147;
}
}
#line 716 "token.re"
}
DoubleQuote:
{
int keep_nl = 1;
int qidx = 0;
int qcapa = 100;
char *qstr = S_ALLOC_N( char, qcapa );
DoubleQuote2:
YYTOKEN = YYCURSOR;
#line 1901 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy160;
++YYCURSOR;
yy160:
if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
yych = *YYCURSOR;
switch(yych){
case 0x00: goto yy167;
case 0x0A: goto yy162;
case 0x0D: goto yy164;
case '"': goto yy169;
case '\\': goto yy166;
default: goto yy170;
}
yy162: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy184;
yy163:
#line 734 "token.re"
{ int indt_len;
int nl_count = 0;
SyckLevel *lvl;
GOBBLE_UP_YAML_INDENT( indt_len, YYTOKEN );
lvl = CURRENT_LEVEL();
if ( lvl->status != syck_lvl_str )
{
ADD_LEVEL( indt_len, syck_lvl_str );
}
else if ( indt_len < lvl->spaces )
{
/* FIXME */
}
if ( keep_nl == 1 )
{
while ( YYTOKEN < YYCURSOR )
{
int nl_len = newline_len( YYTOKEN++ );
if ( nl_len )
{
nl_count++;
YYTOKEN += nl_len - 1;
}
}
if ( nl_count <= 1 )
{
QUOTECAT(qstr, qcapa, qidx, ' ');
}
else
{
int i;
for ( i = 0; i < nl_count - 1; i++ )
{
QUOTECAT(qstr, qcapa, qidx, '\n');
}
}
}
keep_nl = 1;
goto DoubleQuote2;
}
#line 1966 "<stdout>"
yy164: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case 0x0A: goto yy183;
default: goto yy165;
}
yy165:
#line 820 "token.re"
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
goto DoubleQuote2;
}
#line 1977 "<stdout>"
yy166: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
case 0x0A: goto yy174;
case 0x0D: goto yy176;
case ' ': goto yy171;
case '"': case '0': case '\\': case 'a':
case 'b': case 'e':
case 'f': case 'n': case 'r': case 't': case 'v': goto yy178;
case 'x': goto yy177;
default: goto yy165;
}
yy167: ++YYCURSOR;
goto yy168;
yy168:
#line 797 "token.re"
{ SyckLevel *lvl;
SyckNode *n = syck_alloc_str();
lvl = CURRENT_LEVEL();
if ( lvl->status == syck_lvl_str )
{
POP_LEVEL();
}
if ( ((SyckParser *)parser)->taguri_expansion == 1 )
{
n->type_id = syck_taguri( YAML_DOMAIN, "str", 3 );
}
else
{
n->type_id = syck_strndup( "str", 3 );
}
n->data.str->ptr = qstr;
n->data.str->len = qidx;
n->data.str->style = scalar_2quote;
sycklval->nodeData = n;
return YAML_PLAIN;
}
#line 2016 "<stdout>"
yy169: yych = *++YYCURSOR;
goto yy168;
yy170: yych = *++YYCURSOR;
goto yy165;
yy171: ++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
goto yy172;
yy172: switch(yych){
case 0x0A: goto yy174;
case 0x0D: goto yy176;
case ' ': goto yy171;
default: goto yy173;
}
yy173: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy163;
case 1: goto yy165;
}
yy174: ++YYCURSOR;
goto yy175;
yy175:
#line 792 "token.re"
{ keep_nl = 0;
YYCURSOR--;
goto DoubleQuote2;
}
#line 2044 "<stdout>"
yy176: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy174;
default: goto yy173;
}
yy177: yych = *++YYCURSOR;
switch(yych){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F': case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f': goto yy180;
default: goto yy173;
}
yy178: ++YYCURSOR;
goto yy179;
yy179:
#line 778 "token.re"
{ char ch = *( YYCURSOR - 1 );
QUOTECAT(qstr, qcapa, qidx, escape_seq( ch ));
goto DoubleQuote2;
}
#line 2082 "<stdout>"
yy180: yych = *++YYCURSOR;
switch(yych){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F': case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f': goto yy181;
default: goto yy173;
}
yy181: ++YYCURSOR;
goto yy182;
yy182:
#line 783 "token.re"
{ long ch;
char *chr_text = syck_strndup( YYTOKEN, 4 );
chr_text[0] = '0';
ch = strtol( chr_text, NULL, 16 );
free( chr_text );
QUOTECAT(qstr, qcapa, qidx, ch);
goto DoubleQuote2;
}
#line 2119 "<stdout>"
yy183: yyaccept = 0;
YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy184;
yy184: switch(yych){
case 0x0A: case ' ': goto yy183;
case 0x0D: goto yy185;
default: goto yy163;
}
yy185: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
switch(yych){
case 0x0A: goto yy183;
default: goto yy173;
}
}
#line 824 "token.re"
}
TransferMethod:
{
int qidx = 0;
int qcapa = 100;
char *qstr = S_ALLOC_N( char, qcapa );
TransferMethod2:
YYTOKTMP = YYCURSOR;
#line 2152 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy186;
++YYCURSOR;
yy186:
if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
yych = *YYCURSOR;
switch(yych){
case 0x00: goto yy188;
case 0x0A: goto yy190;
case 0x0D: goto yy192;
case ' ': goto yy191;
case '\\': goto yy194;
default: goto yy195;
}
yy188: ++YYCURSOR;
goto yy189;
yy189:
#line 838 "token.re"
{ SyckLevel *lvl;
YYCURSOR = YYTOKTMP;
if ( YYCURSOR == YYTOKEN + 1 )
{
free( qstr );
return YAML_ITRANSFER;
}
lvl = CURRENT_LEVEL();
/*
* URL Prefixing
*/
if ( *qstr == '^' )
{
sycklval->name = S_ALLOC_N( char, qidx + strlen( lvl->domain ) );
sycklval->name[0] = '\0';
strcat( sycklval->name, lvl->domain );
strncat( sycklval->name, qstr + 1, qidx - 1 );
free( qstr );
}
else
{
char *carat = qstr;
char *qend = qstr + qidx;
while ( (++carat) < qend )
{
if ( *carat == '^' )
break;
}
if ( carat < qend )
{
free( lvl->domain );
lvl->domain = syck_strndup( qstr, carat - qstr );
sycklval->name = S_ALLOC_N( char, ( qend - carat ) + strlen( lvl->domain ) );
sycklval->name[0] = '\0';
strcat( sycklval->name, lvl->domain );
strncat( sycklval->name, carat + 1, ( qend - carat ) - 1 );
free( qstr );
}
else
{
sycklval->name = qstr;
}
}
return YAML_TRANSFER;
}
#line 2222 "<stdout>"
yy190: yych = *++YYCURSOR;
goto yy189;
yy191: yych = *++YYCURSOR;
goto yy204;
yy192: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case 0x0A: goto yy188;
default: goto yy193;
}
yy193:
#line 905 "token.re"
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
goto TransferMethod2;
}
#line 2237 "<stdout>"
yy194: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
case '"': case '0': case '\\': case 'a':
case 'b': case 'e':
case 'f': case 'n': case 'r': case 't': case 'v': goto yy198;
case 'x': goto yy196;
default: goto yy193;
}
yy195: yych = *++YYCURSOR;
goto yy193;
yy196: yych = *++YYCURSOR;
switch(yych){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F': case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f': goto yy200;
default: goto yy197;
}
yy197: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy193;
}
yy198: ++YYCURSOR;
goto yy199;
yy199:
#line 891 "token.re"
{ char ch = *( YYCURSOR - 1 );
QUOTECAT(qstr, qcapa, qidx, escape_seq( ch ));
goto TransferMethod2;
}
#line 2285 "<stdout>"
yy200: yych = *++YYCURSOR;
switch(yych){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F': case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f': goto yy201;
default: goto yy197;
}
yy201: ++YYCURSOR;
goto yy202;
yy202:
#line 896 "token.re"
{ long ch;
char *chr_text = syck_strndup( YYTOKTMP, 4 );
chr_text[0] = '0';
ch = strtol( chr_text, NULL, 16 );
free( chr_text );
QUOTECAT(qstr, qcapa, qidx, ch);
goto TransferMethod2;
}
#line 2322 "<stdout>"
yy203: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy204;
yy204: switch(yych){
case ' ': goto yy203;
default: goto yy189;
}
}
#line 910 "token.re"
}
ScalarBlock:
{
int qidx = 0;
int qcapa = 100;
char *qstr = S_ALLOC_N( char, qcapa );
int blockType = 0;
int nlDoWhat = 0;
int lastIndent = 0;
int forceIndent = -1;
char *yyt = YYTOKEN;
SyckLevel *lvl = CURRENT_LEVEL();
int parentIndent = -1;
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 );
}
}
qstr[0] = '\0';
YYTOKEN = YYCURSOR;
ScalarBlock2:
YYTOKEN = YYCURSOR;
#line 2378 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy205;
++YYCURSOR;
yy205:
if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
yych = *YYCURSOR;
switch(yych){
case 0x00: goto yy213;
case 0x0A: goto yy207;
case 0x0D: goto yy209;
case '#': goto yy211;
case '-': goto yy215;
default: goto yy216;
}
yy207: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy226;
yy208:
#line 956 "token.re"
{ char *pacer;
char *tok = YYTOKEN;
int indt_len = 0, nl_count = 0, fold_nl = 0, nl_begin = 0;
GOBBLE_UP_YAML_INDENT( indt_len, tok );
lvl = CURRENT_LEVEL();
if ( lvl->status != syck_lvl_block )
{
GET_TRUE_YAML_INDENT(parentIndent);
if ( forceIndent > 0 ) forceIndent += parentIndent;
if ( indt_len > parentIndent )
{
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
{
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 = newline_len( pacer++ );
if ( nl_len )
{
nl_count++;
pacer += nl_len - 1;
}
}
if ( fold_nl == 1 || nl_begin == 1 )
{
nl_count--;
}
if ( nl_count < 1 && nl_begin == 0 )
{
QUOTECAT(qstr, qcapa, qidx, ' ');
}
else
{
int i;
for ( i = 0; i < nl_count; i++ )
{
QUOTECAT(qstr, qcapa, qidx, '\n');
}
}
lastIndent = indt_len - lvl->spaces;
YYCURSOR -= lastIndent;
if ( indt_len < lvl->spaces )
{
POP_LEVEL();
YYCURSOR = YYTOKEN;
RETURN_YAML_BLOCK();
}
goto ScalarBlock2;
}
#line 2474 "<stdout>"
yy209: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case 0x0A: goto yy225;
default: goto yy210;
}
yy210:
#line 1070 "token.re"
{ QUOTECAT(qstr, qcapa, qidx, *YYTOKEN);
goto ScalarBlock2;
}
#line 2485 "<stdout>"
yy211: ++YYCURSOR;
goto yy212;
yy212:
#line 1032 "token.re"
{ lvl = CURRENT_LEVEL();
if ( lvl->status != syck_lvl_block )
{
eat_comments( parser );
YYTOKEN = YYCURSOR;
}
else
{
QUOTECAT(qstr, qcapa, qidx, *YYTOKEN);
}
goto ScalarBlock2;
}
#line 2502 "<stdout>"
yy213: ++YYCURSOR;
goto yy214;
yy214:
#line 1046 "token.re"
{ YYCURSOR--;
POP_LEVEL();
RETURN_YAML_BLOCK();
}
#line 2511 "<stdout>"
yy215: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
case '-': goto yy217;
default: goto yy210;
}
yy216: yych = *++YYCURSOR;
goto yy210;
yy217: yych = *++YYCURSOR;
switch(yych){
case '-': goto yy219;
default: goto yy218;
}
yy218: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy208;
case 1: goto yy210;
}
yy219: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy220;
case 0x0D: goto yy224;
case ' ': goto yy222;
default: goto yy218;
}
yy220: ++YYCURSOR;
goto yy221;
yy221:
#line 1051 "token.re"
{ if ( YYTOKEN == YYLINEPTR )
{
if ( blockType == BLOCK_FOLD && qidx > 0 )
{
qidx -= 1;
}
QUOTECAT(qstr, qcapa, qidx, '\n');
POP_LEVEL();
YYCURSOR = YYTOKEN;
RETURN_YAML_BLOCK();
}
else
{
QUOTECAT(qstr, qcapa, qidx, *YYTOKEN);
YYCURSOR = YYTOKEN + 1;
goto ScalarBlock2;
}
}
#line 2559 "<stdout>"
yy222: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy223;
yy223: switch(yych){
case ' ': goto yy222;
default: goto yy221;
}
yy224: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy220;
default: goto yy218;
}
yy225: yyaccept = 0;
YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy226;
yy226: switch(yych){
case 0x0A: case ' ': goto yy225;
case 0x0D: goto yy227;
default: goto yy208;
}
yy227: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
switch(yych){
case 0x0A: goto yy225;
default: goto yy218;
}
}
#line 1075 "token.re"
}
return 0;
}
void
eat_comments( SyckParser *parser )
{
Comment:
{
YYTOKEN = YYCURSOR;
#line 2607 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy228;
++YYCURSOR;
yy228:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
switch(yych){
case 0x00: goto yy230;
case 0x0A: goto yy232;
case 0x0D: goto yy233;
default: goto yy235;
}
yy230: ++YYCURSOR;
goto yy231;
yy231:
#line 1091 "token.re"
{ YYCURSOR = YYTOKEN;
return;
}
#line 2629 "<stdout>"
yy232: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy237;
yy233: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case 0x0A: goto yy236;
default: goto yy234;
}
yy234:
#line 1095 "token.re"
{ goto Comment;
}
#line 2642 "<stdout>"
yy235: yych = *++YYCURSOR;
goto yy234;
yy236: yyaccept = 0;
YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy237;
yy237: switch(yych){
case 0x0A: goto yy236;
case 0x0D: goto yy238;
default: goto yy231;
}
yy238: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
switch(yych){
case 0x0A: goto yy236;
default: goto yy239;
}
yy239: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy231;
}
}
#line 1098 "token.re"
}
}
char
escape_seq( char ch )
{
switch ( ch )
{
case '0': return '\0';
case 'a': return 7;
case 'b': return '\010';
case 'e': return '\033';
case 'f': return '\014';
case 'n': return '\n';
case 'r': return '\015';
case 't': return '\t';
case 'v': return '\013';
default: return ch;
}
}
int
is_newline( char *ptr )
{
return newline_len( ptr );
}
int
newline_len( char *ptr )
{
if ( *ptr == '\n' )
return 1;
if ( *ptr == '\r' && *( ptr + 1 ) == '\n' )
return 2;
return 0;
}
int
syckwrap()
{
return 1;
}
void
syckerror( char *msg )
{
if ( syck_parser_ptr->error_handler == NULL )
syck_parser_ptr->error_handler = syck_default_error_handler;
syck_parser_ptr->root = syck_parser_ptr->root_on_error;
(syck_parser_ptr->error_handler)(syck_parser_ptr, msg);
}
Jump to Line
Something went wrong with that request. Please try again.