mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
45942bdbc6
YAML.object_maker. [ruby-core:03080] * ext/syck/token.c (sycklex_yaml_utf8): using newline_len to handline CR-LFs. "\000" was showing up on folded blocks which stopped at EOF. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6725 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2408 lines
62 KiB
C
2408 lines
62 KiB
C
/* Generated by re2c 0.9.3 on Fri Jul 30 13:48:10 2004 */
|
|
#line 1 "token.re"
|
|
/*
|
|
* token.re
|
|
*
|
|
* $Author$
|
|
* $Date$
|
|
*
|
|
* Copyright (C) 2003 why the lucky stiff
|
|
*/
|
|
#include "ruby.h"
|
|
#include "syck.h"
|
|
#include "gram.h"
|
|
|
|
/*
|
|
* Allocate quoted strings in chunks
|
|
*/
|
|
#define QUOTELEN 1024
|
|
|
|
/*
|
|
* They do my bidding...
|
|
*/
|
|
#define YYCTYPE char
|
|
#define YYCURSOR parser->cursor
|
|
#define YYMARKER parser->marker
|
|
#define YYLIMIT parser->limit
|
|
#define YYTOKEN parser->token
|
|
#define YYTOKTMP parser->toktmp
|
|
#define YYLINEPTR parser->lineptr
|
|
#define YYLINECTPTR parser->linectptr
|
|
#define YYLINE parser->linect
|
|
#define YYFILL(n) syck_parser_read(parser)
|
|
|
|
/*
|
|
* Repositions the cursor at `n' offset from the token start.
|
|
* Only works in `Header' and `Document' sections.
|
|
*/
|
|
#define YYPOS(n) YYCURSOR = YYTOKEN + n
|
|
|
|
/*
|
|
* Track line numbers
|
|
*/
|
|
#define NEWLINE(ptr) YYLINEPTR = ptr + newline_len(ptr); if ( YYLINEPTR > YYLINECTPTR ) { YYLINE++; YYLINECTPTR = YYLINEPTR; }
|
|
|
|
/*
|
|
* I like seeing the level operations as macros...
|
|
*/
|
|
#define ADD_LEVEL(len, status) syck_parser_add_level( parser, len, status )
|
|
#define POP_LEVEL() syck_parser_pop_level( parser )
|
|
#define CURRENT_LEVEL() syck_parser_current_level( parser )
|
|
|
|
/*
|
|
* Force a token next time around sycklex()
|
|
*/
|
|
#define FORCE_NEXT_TOKEN(tok) parser->force_token = tok;
|
|
|
|
/*
|
|
* Nice little macro to ensure we're YAML_IOPENed to the current level.
|
|
* * Only use this macro in the "Document" section *
|
|
*/
|
|
#define ENSURE_YAML_IOPEN(last_lvl, to_len, reset) \
|
|
if ( last_lvl->spaces < to_len ) \
|
|
{ \
|
|
if ( last_lvl->status == syck_lvl_inline ) \
|
|
{ \
|
|
goto Document; \
|
|
} \
|
|
else \
|
|
{ \
|
|
ADD_LEVEL( to_len, syck_lvl_doc ); \
|
|
if ( reset == 1 ) YYPOS(0); \
|
|
return YAML_IOPEN; \
|
|
} \
|
|
}
|
|
|
|
/*
|
|
* Nice little macro to ensure closure of levels.
|
|
* * Only use this macro in the "Document" section *
|
|
*/
|
|
#define ENSURE_YAML_IEND(last_lvl, to_len) \
|
|
if ( last_lvl->spaces > to_len ) \
|
|
{ \
|
|
syck_parser_pop_level( parser ); \
|
|
YYPOS(0); \
|
|
return YAML_IEND; \
|
|
}
|
|
|
|
/*
|
|
* Concatenates quoted string items and manages allocation
|
|
* to the quoted string
|
|
*/
|
|
#define QUOTECAT(s, c, i, l) \
|
|
{ \
|
|
if ( i + 1 >= c ) \
|
|
{ \
|
|
c += QUOTELEN; \
|
|
S_REALLOC_N( s, char, c ); \
|
|
} \
|
|
s[i++] = l; \
|
|
s[i] = '\0'; \
|
|
}
|
|
|
|
#define QUOTECATS(s, c, i, cs, cl) \
|
|
{ \
|
|
while ( i + cl >= c ) \
|
|
{ \
|
|
c += QUOTELEN; \
|
|
S_REALLOC_N( s, char, c ); \
|
|
} \
|
|
S_MEMCPY( s + i, cs, char, cl ); \
|
|
i += cl; \
|
|
s[i] = '\0'; \
|
|
}
|
|
|
|
/*
|
|
* Tags a plain scalar with a transfer method
|
|
* * Use only in "Plain" section *
|
|
*/
|
|
#define RETURN_IMPLICIT() \
|
|
{ \
|
|
SyckNode *n = syck_alloc_str(); \
|
|
YYCURSOR = YYTOKEN; \
|
|
n->data.str->ptr = qstr; \
|
|
n->data.str->len = qidx; \
|
|
n->data.str->style = scalar_plain; \
|
|
sycklval->nodeData = n; \
|
|
if ( parser->implicit_typing == 1 ) \
|
|
{ \
|
|
try_tag_implicit( sycklval->nodeData, parser->taguri_expansion ); \
|
|
} \
|
|
return YAML_PLAIN; \
|
|
}
|
|
|
|
/*
|
|
* Keep or chomp block?
|
|
* * Use only in "ScalarBlock" section *
|
|
*/
|
|
#define RETURN_YAML_BLOCK() \
|
|
{ \
|
|
SyckNode *n = syck_alloc_str(); \
|
|
n->type_id = syck_strndup( "str", 3 ); \
|
|
n->data.str->ptr = qstr; \
|
|
n->data.str->len = qidx; \
|
|
n->data.str->style = scalar_block; \
|
|
if ( qidx > 0 ) \
|
|
{ \
|
|
if ( nlDoWhat != NL_KEEP ) \
|
|
{ \
|
|
char *fc = n->data.str->ptr + n->data.str->len - 1; \
|
|
while ( is_newline( fc ) ) fc--; \
|
|
if ( nlDoWhat != NL_CHOMP && fc < n->data.str->ptr + n->data.str->len - 1 ) \
|
|
fc += 1; \
|
|
n->data.str->len = fc - n->data.str->ptr + 1; \
|
|
} \
|
|
} \
|
|
sycklval->nodeData = n; \
|
|
return YAML_BLOCK; \
|
|
}
|
|
|
|
/*
|
|
* Handles newlines, calculates indent
|
|
*/
|
|
#define GOBBLE_UP_YAML_INDENT( ict, start ) \
|
|
char *indent = start; \
|
|
NEWLINE(indent); \
|
|
while ( indent < YYCURSOR ) \
|
|
{ \
|
|
if ( is_newline( ++indent ) ) \
|
|
{ \
|
|
NEWLINE(indent); \
|
|
} \
|
|
} \
|
|
ict = 0; \
|
|
if ( *YYCURSOR == '\0' ) \
|
|
{ \
|
|
ict = -1; \
|
|
start = YYCURSOR - 1; \
|
|
} \
|
|
else if ( *YYLINEPTR == ' ' ) \
|
|
{ \
|
|
ict = YYCURSOR - YYLINEPTR; \
|
|
}
|
|
|
|
/*
|
|
* If an indent exists at the current level, back up.
|
|
*/
|
|
#define GET_TRUE_YAML_INDENT(indt_len) \
|
|
{ \
|
|
SyckLevel *lvl_deep = CURRENT_LEVEL(); \
|
|
indt_len = lvl_deep->spaces; \
|
|
if ( indt_len == YYTOKEN - YYLINEPTR ) \
|
|
{ \
|
|
SyckLevel *lvl_over; \
|
|
parser->lvl_idx--; \
|
|
lvl_over = CURRENT_LEVEL(); \
|
|
indt_len = lvl_over->spaces; \
|
|
parser->lvl_idx++; \
|
|
} \
|
|
}
|
|
|
|
/*
|
|
* Argjh! I hate globals! Here for syckerror() only!
|
|
*/
|
|
SyckParser *syck_parser_ptr = NULL;
|
|
|
|
/*
|
|
* Accessory funcs later in this file.
|
|
*/
|
|
void eat_comments( SyckParser * );
|
|
char escape_seq( char );
|
|
int is_newline( char *ptr );
|
|
int newline_len( char *ptr );
|
|
int sycklex_yaml_utf8( YYSTYPE *, SyckParser * );
|
|
int sycklex_bytecode_utf8( YYSTYPE *, SyckParser * );
|
|
int syckwrap();
|
|
|
|
/*
|
|
* My own re-entrant sycklex() using re2c.
|
|
* You really get used to the limited regexp.
|
|
* It's really nice to not rely on backtracking and such.
|
|
*/
|
|
int
|
|
sycklex( YYSTYPE *sycklval, SyckParser *parser )
|
|
{
|
|
switch ( parser->input_type )
|
|
{
|
|
case syck_yaml_utf8:
|
|
return sycklex_yaml_utf8( sycklval, parser );
|
|
|
|
case syck_yaml_utf16:
|
|
syckerror( "UTF-16 is not currently supported in Syck.\nPlease contribute code to help this happen!" );
|
|
break;
|
|
|
|
case syck_yaml_utf32:
|
|
syckerror( "UTF-32 is not currently supported in Syck.\nPlease contribute code to help this happen!" );
|
|
break;
|
|
|
|
case syck_bytecode_utf8:
|
|
return sycklex_bytecode_utf8( sycklval, parser );
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Parser for standard YAML [UTF-8]
|
|
*/
|
|
int
|
|
sycklex_yaml_utf8( YYSTYPE *sycklval, SyckParser *parser )
|
|
{
|
|
int doc_level = 0;
|
|
syck_parser_ptr = parser;
|
|
if ( YYCURSOR == NULL )
|
|
{
|
|
syck_parser_read( parser );
|
|
}
|
|
|
|
if ( parser->force_token != 0 )
|
|
{
|
|
int t = parser->force_token;
|
|
parser->force_token = 0;
|
|
return t;
|
|
}
|
|
|
|
#line 279 "token.re"
|
|
|
|
|
|
if ( YYLINEPTR != YYCURSOR )
|
|
{
|
|
goto Document;
|
|
}
|
|
|
|
Header:
|
|
|
|
YYTOKEN = YYCURSOR;
|
|
|
|
|
|
#line 7 "<stdout>"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 128, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
192, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy0;
|
|
yy1: ++YYCURSOR;
|
|
yy0:
|
|
if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '\037'){
|
|
if(yych <= '\n'){
|
|
if(yych <= '\000') goto yy7;
|
|
if(yych <= '\t') goto yy14;
|
|
goto yy9;
|
|
} else {
|
|
if(yych == '\r') goto yy11;
|
|
goto yy14;
|
|
}
|
|
} else {
|
|
if(yych <= '#'){
|
|
if(yych <= ' ') goto yy12;
|
|
if(yych <= '"') goto yy14;
|
|
goto yy5;
|
|
} else {
|
|
if(yych <= ',') goto yy14;
|
|
if(yych <= '-') goto yy2;
|
|
if(yych <= '.') goto yy4;
|
|
goto yy14;
|
|
}
|
|
}
|
|
yy2: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yych == '-') goto yy28;
|
|
goto yy3;
|
|
yy3:
|
|
#line 338 "token.re"
|
|
{ YYPOS(0);
|
|
goto Document;
|
|
}
|
|
#line 80 "<stdout>"
|
|
yy4: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yych == '.') goto yy21;
|
|
goto yy3;
|
|
yy5: ++YYCURSOR;
|
|
goto yy6;
|
|
yy6:
|
|
#line 320 "token.re"
|
|
{ eat_comments( parser );
|
|
goto Header;
|
|
}
|
|
#line 92 "<stdout>"
|
|
yy7: ++YYCURSOR;
|
|
goto yy8;
|
|
yy8:
|
|
#line 324 "token.re"
|
|
{ SyckLevel *lvl = CURRENT_LEVEL();
|
|
ENSURE_YAML_IEND(lvl, -1);
|
|
YYPOS(0);
|
|
return 0;
|
|
}
|
|
#line 102 "<stdout>"
|
|
yy9: yyaccept = 1;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
goto yy18;
|
|
yy10:
|
|
#line 330 "token.re"
|
|
{ GOBBLE_UP_YAML_INDENT( doc_level, YYTOKEN );
|
|
goto Header;
|
|
}
|
|
#line 111 "<stdout>"
|
|
yy11: yych = *++YYCURSOR;
|
|
if(yych == '\n') goto yy17;
|
|
goto yy3;
|
|
yy12: ++YYCURSOR;
|
|
yych = *YYCURSOR;
|
|
goto yy16;
|
|
yy13:
|
|
#line 334 "token.re"
|
|
{ doc_level = YYCURSOR - YYLINEPTR;
|
|
goto Header;
|
|
}
|
|
#line 122 "<stdout>"
|
|
yy14: yych = *++YYCURSOR;
|
|
goto yy3;
|
|
yy15: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy16;
|
|
yy16: if(yybm[0+yych] & 64) goto yy15;
|
|
goto yy13;
|
|
yy17: yyaccept = 1;
|
|
YYMARKER = ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy18;
|
|
yy18: if(yybm[0+yych] & 128) goto yy17;
|
|
if(yych != '\r') goto yy10;
|
|
goto yy19;
|
|
yy19: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
if(yych == '\n') goto yy17;
|
|
goto yy20;
|
|
yy20: YYCURSOR = YYMARKER;
|
|
switch(yyaccept){
|
|
case 1: goto yy10;
|
|
case 0: goto yy3;
|
|
}
|
|
yy21: yych = *++YYCURSOR;
|
|
if(yych != '.') goto yy20;
|
|
goto yy22;
|
|
yy22: yych = *++YYCURSOR;
|
|
if(yych <= '\f'){
|
|
if(yych != '\n') goto yy20;
|
|
goto yy23;
|
|
} else {
|
|
if(yych <= '\r') goto yy27;
|
|
if(yych == ' ') goto yy25;
|
|
goto yy20;
|
|
}
|
|
yy23: ++YYCURSOR;
|
|
goto yy24;
|
|
yy24:
|
|
#line 306 "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 180 "<stdout>"
|
|
yy25: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy26;
|
|
yy26: if(yych == ' ') goto yy25;
|
|
goto yy24;
|
|
yy27: yych = *++YYCURSOR;
|
|
if(yych == '\n') goto yy23;
|
|
goto yy20;
|
|
yy28: yych = *++YYCURSOR;
|
|
if(yych != '-') goto yy20;
|
|
goto yy29;
|
|
yy29: yych = *++YYCURSOR;
|
|
if(yych <= '\f'){
|
|
if(yych != '\n') goto yy20;
|
|
goto yy30;
|
|
} else {
|
|
if(yych <= '\r') goto yy34;
|
|
if(yych == ' ') goto yy32;
|
|
goto yy20;
|
|
}
|
|
yy30: ++YYCURSOR;
|
|
goto yy31;
|
|
yy31:
|
|
#line 292 "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 220 "<stdout>"
|
|
yy32: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy33;
|
|
yy33: if(yych == ' ') goto yy32;
|
|
goto yy31;
|
|
yy34: ++YYCURSOR;
|
|
if((yych = *YYCURSOR) == '\n') goto yy30;
|
|
goto yy20;
|
|
}
|
|
#line 342 "token.re"
|
|
|
|
|
|
Document:
|
|
{
|
|
SyckLevel *lvl = CURRENT_LEVEL();
|
|
if ( lvl->status == syck_lvl_header )
|
|
{
|
|
lvl->status = syck_lvl_doc;
|
|
}
|
|
|
|
YYTOKEN = YYCURSOR;
|
|
|
|
|
|
#line 234 "<stdout>"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 128, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
144, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 32, 0, 96, 0, 0,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 0, 0, 0, 0, 0, 0,
|
|
0, 64, 64, 64, 64, 64, 64, 64,
|
|
64, 64, 64, 64, 64, 64, 64, 64,
|
|
64, 64, 64, 64, 64, 64, 64, 64,
|
|
64, 64, 64, 0, 0, 0, 0, 64,
|
|
0, 64, 64, 64, 64, 64, 64, 64,
|
|
64, 64, 64, 64, 64, 64, 64, 64,
|
|
64, 64, 64, 64, 64, 64, 64, 64,
|
|
64, 64, 64, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy35;
|
|
yy36: ++YYCURSOR;
|
|
yy35:
|
|
if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '+'){
|
|
if(yych <= '!'){
|
|
if(yych <= '\f'){
|
|
if(yych <= '\000') goto yy60;
|
|
if(yych != '\n') goto yy62;
|
|
goto yy37;
|
|
} else {
|
|
if(yych <= '\r') goto yy39;
|
|
if(yych <= '\037') goto yy62;
|
|
if(yych <= ' ') goto yy58;
|
|
goto yy49;
|
|
}
|
|
} else {
|
|
if(yych <= '&'){
|
|
if(yych <= '"') goto yy53;
|
|
if(yych <= '#') goto yy56;
|
|
if(yych <= '%') goto yy62;
|
|
goto yy47;
|
|
} else {
|
|
if(yych <= '\'') goto yy51;
|
|
if(yych == '*') goto yy48;
|
|
goto yy62;
|
|
}
|
|
}
|
|
} else {
|
|
if(yych <= 'Z'){
|
|
if(yych <= ':'){
|
|
if(yych <= ',') goto yy45;
|
|
if(yych <= '-') goto yy46;
|
|
if(yych <= '9') goto yy62;
|
|
goto yy45;
|
|
} else {
|
|
if(yych <= '=') goto yy62;
|
|
if(yych <= '>') goto yy55;
|
|
if(yych <= '?') goto yy46;
|
|
goto yy62;
|
|
}
|
|
} else {
|
|
if(yych <= 'z'){
|
|
if(yych <= '[') goto yy41;
|
|
if(yych == ']') goto yy43;
|
|
goto yy62;
|
|
} else {
|
|
if(yych <= '{') goto yy41;
|
|
if(yych <= '|') goto yy55;
|
|
if(yych <= '}') goto yy43;
|
|
goto yy62;
|
|
}
|
|
}
|
|
}
|
|
yy37: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
goto yy90;
|
|
yy38:
|
|
#line 356 "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;
|
|
}
|
|
|
|
/* 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 353 "<stdout>"
|
|
yy39: ++YYCURSOR;
|
|
if((yych = *YYCURSOR) == '\n') goto yy89;
|
|
goto yy40;
|
|
yy40:
|
|
#line 448 "token.re"
|
|
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
|
|
goto Plain;
|
|
}
|
|
#line 362 "<stdout>"
|
|
yy41: ++YYCURSOR;
|
|
goto yy42;
|
|
yy42:
|
|
#line 378 "token.re"
|
|
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
|
|
lvl = CURRENT_LEVEL();
|
|
ADD_LEVEL(lvl->spaces + 1, syck_lvl_inline);
|
|
return YYTOKEN[0];
|
|
}
|
|
#line 372 "<stdout>"
|
|
yy43: ++YYCURSOR;
|
|
goto yy44;
|
|
yy44:
|
|
#line 384 "token.re"
|
|
{ POP_LEVEL();
|
|
return YYTOKEN[0];
|
|
}
|
|
#line 380 "<stdout>"
|
|
yy45: yyaccept = 1;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yych <= '\f'){
|
|
if(yych == '\n') goto yy84;
|
|
goto yy40;
|
|
} else {
|
|
if(yych <= '\r') goto yy88;
|
|
if(yych == ' ') goto yy86;
|
|
goto yy40;
|
|
}
|
|
yy46: yyaccept = 1;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yych <= '\f'){
|
|
if(yych == '\n') goto yy79;
|
|
goto yy40;
|
|
} else {
|
|
if(yych <= '\r') goto yy83;
|
|
if(yych == ' ') goto yy81;
|
|
goto yy40;
|
|
}
|
|
yy47: yych = *++YYCURSOR;
|
|
if(yych <= '@'){
|
|
if(yych <= '-'){
|
|
if(yych <= ',') goto yy40;
|
|
goto yy76;
|
|
} else {
|
|
if(yych <= '/') goto yy40;
|
|
if(yych <= '9') goto yy76;
|
|
goto yy40;
|
|
}
|
|
} else {
|
|
if(yych <= '_'){
|
|
if(yych <= 'Z') goto yy76;
|
|
if(yych <= '^') goto yy40;
|
|
goto yy76;
|
|
} else {
|
|
if(yych <= '`') goto yy40;
|
|
if(yych <= 'z') goto yy76;
|
|
goto yy40;
|
|
}
|
|
}
|
|
yy48: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 64) goto yy73;
|
|
goto yy40;
|
|
yy49: ++YYCURSOR;
|
|
goto yy50;
|
|
yy50:
|
|
#line 422 "token.re"
|
|
{ goto TransferMethod; }
|
|
#line 430 "<stdout>"
|
|
yy51: ++YYCURSOR;
|
|
goto yy52;
|
|
yy52:
|
|
#line 424 "token.re"
|
|
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
|
|
goto SingleQuote; }
|
|
#line 437 "<stdout>"
|
|
yy53: ++YYCURSOR;
|
|
goto yy54;
|
|
yy54:
|
|
#line 427 "token.re"
|
|
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
|
|
goto DoubleQuote; }
|
|
#line 444 "<stdout>"
|
|
yy55: yyaccept = 1;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yybm[0+yych] & 32) goto yy65;
|
|
if(yych <= '\f'){
|
|
if(yych == '\n') goto yy68;
|
|
goto yy40;
|
|
} else {
|
|
if(yych <= '\r') goto yy72;
|
|
if(yych == ' ') goto yy70;
|
|
goto yy40;
|
|
}
|
|
yy56: ++YYCURSOR;
|
|
goto yy57;
|
|
yy57:
|
|
#line 437 "token.re"
|
|
{ eat_comments( parser );
|
|
goto Document;
|
|
}
|
|
#line 463 "<stdout>"
|
|
yy58: ++YYCURSOR;
|
|
yych = *YYCURSOR;
|
|
goto yy64;
|
|
yy59:
|
|
#line 441 "token.re"
|
|
{ goto Document; }
|
|
#line 469 "<stdout>"
|
|
yy60: ++YYCURSOR;
|
|
goto yy61;
|
|
yy61:
|
|
#line 443 "token.re"
|
|
{ ENSURE_YAML_IEND(lvl, -1);
|
|
YYPOS(0);
|
|
return 0;
|
|
}
|
|
#line 478 "<stdout>"
|
|
yy62: yych = *++YYCURSOR;
|
|
goto yy40;
|
|
yy63: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy64;
|
|
yy64: if(yybm[0+yych] & 16) goto yy63;
|
|
goto yy59;
|
|
yy65: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy66;
|
|
yy66: if(yybm[0+yych] & 32) goto yy65;
|
|
if(yych <= '\f'){
|
|
if(yych == '\n') goto yy68;
|
|
goto yy67;
|
|
} else {
|
|
if(yych <= '\r') goto yy72;
|
|
if(yych == ' ') goto yy70;
|
|
goto yy67;
|
|
}
|
|
yy67: YYCURSOR = YYMARKER;
|
|
switch(yyaccept){
|
|
case 0: goto yy38;
|
|
case 1: goto yy40;
|
|
}
|
|
yy68: ++YYCURSOR;
|
|
goto yy69;
|
|
yy69:
|
|
#line 430 "token.re"
|
|
{ if ( is_newline( YYCURSOR - 1 ) )
|
|
{
|
|
YYCURSOR--;
|
|
}
|
|
goto ScalarBlock;
|
|
}
|
|
#line 517 "<stdout>"
|
|
yy70: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy71;
|
|
yy71: if(yych == ' ') goto yy70;
|
|
goto yy69;
|
|
yy72: yych = *++YYCURSOR;
|
|
if(yych == '\n') goto yy68;
|
|
goto yy67;
|
|
yy73: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy74;
|
|
yy74: if(yybm[0+yych] & 64) goto yy73;
|
|
goto yy75;
|
|
yy75:
|
|
#line 417 "token.re"
|
|
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
|
|
sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
|
|
return YAML_ALIAS;
|
|
}
|
|
#line 541 "<stdout>"
|
|
yy76: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy77;
|
|
yy77: if(yych <= '@'){
|
|
if(yych <= '-'){
|
|
if(yych >= '-') goto yy76;
|
|
goto yy78;
|
|
} else {
|
|
if(yych <= '/') goto yy78;
|
|
if(yych <= '9') goto yy76;
|
|
goto yy78;
|
|
}
|
|
} else {
|
|
if(yych <= '_'){
|
|
if(yych <= 'Z') goto yy76;
|
|
if(yych >= '_') goto yy76;
|
|
goto yy78;
|
|
} else {
|
|
if(yych <= '`') goto yy78;
|
|
if(yych <= 'z') goto yy76;
|
|
goto yy78;
|
|
}
|
|
}
|
|
yy78:
|
|
#line 406 "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 579 "<stdout>"
|
|
yy79: ++YYCURSOR;
|
|
goto yy80;
|
|
yy80:
|
|
#line 392 "token.re"
|
|
{ ENSURE_YAML_IOPEN(lvl, YYTOKEN - YYLINEPTR, 1);
|
|
FORCE_NEXT_TOKEN(YAML_IOPEN);
|
|
if ( is_newline( YYCURSOR ) || is_newline( YYCURSOR - 1 ) )
|
|
{
|
|
YYCURSOR--;
|
|
ADD_LEVEL((YYTOKEN + 1) - YYLINEPTR, syck_lvl_doc);
|
|
}
|
|
else
|
|
{
|
|
ADD_LEVEL(YYCURSOR - YYLINEPTR, syck_lvl_doc);
|
|
}
|
|
return YYTOKEN[0];
|
|
}
|
|
#line 597 "<stdout>"
|
|
yy81: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy82;
|
|
yy82: if(yych == ' ') goto yy81;
|
|
goto yy80;
|
|
yy83: yych = *++YYCURSOR;
|
|
if(yych == '\n') goto yy79;
|
|
goto yy67;
|
|
yy84: ++YYCURSOR;
|
|
goto yy85;
|
|
yy85:
|
|
#line 388 "token.re"
|
|
{ YYPOS(1);
|
|
return YYTOKEN[0];
|
|
}
|
|
#line 615 "<stdout>"
|
|
yy86: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy87;
|
|
yy87: if(yych == ' ') goto yy86;
|
|
goto yy85;
|
|
yy88: yych = *++YYCURSOR;
|
|
if(yych == '\n') goto yy84;
|
|
goto yy67;
|
|
yy89: yyaccept = 0;
|
|
YYMARKER = ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy90;
|
|
yy90: if(yybm[0+yych] & 128) goto yy89;
|
|
if(yych != '\r') goto yy38;
|
|
goto yy91;
|
|
yy91: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
if(yych == '\n') goto yy89;
|
|
goto yy67;
|
|
}
|
|
#line 452 "token.re"
|
|
|
|
}
|
|
|
|
Directive:
|
|
{
|
|
YYTOKTMP = YYCURSOR;
|
|
|
|
|
|
#line 643 "<stdout>"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
32, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 128, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
0, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy92;
|
|
yy93: ++YYCURSOR;
|
|
yy92:
|
|
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = *YYCURSOR;
|
|
if(yych <= ' '){
|
|
if(yych <= '\000') goto yy94;
|
|
if(yych <= '\037') goto yy99;
|
|
goto yy97;
|
|
} else {
|
|
if(yych == '%') goto yy95;
|
|
goto yy99;
|
|
}
|
|
yy94: YYCURSOR = YYMARKER;
|
|
switch(yyaccept){
|
|
case 0: goto yy96;
|
|
}
|
|
yy95: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yych <= '-') goto yy96;
|
|
if(yych == '`') goto yy96;
|
|
if(yych <= 'z') goto yy102;
|
|
goto yy96;
|
|
yy96:
|
|
#line 465 "token.re"
|
|
{ YYCURSOR = YYTOKTMP;
|
|
return YAML_DOCSEP;
|
|
}
|
|
#line 709 "<stdout>"
|
|
yy97: ++YYCURSOR;
|
|
yych = *YYCURSOR;
|
|
goto yy101;
|
|
yy98:
|
|
#line 463 "token.re"
|
|
{ goto Directive; }
|
|
#line 715 "<stdout>"
|
|
yy99: yych = *++YYCURSOR;
|
|
goto yy96;
|
|
yy100: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy101;
|
|
yy101: if(yybm[0+yych] & 32) goto yy100;
|
|
goto yy98;
|
|
yy102: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy103;
|
|
yy103: if(yybm[0+yych] & 64) goto yy102;
|
|
if(yych != ':') goto yy94;
|
|
goto yy104;
|
|
yy104: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 128) goto yy105;
|
|
goto yy94;
|
|
yy105: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy106;
|
|
yy106: if(yybm[0+yych] & 128) goto yy105;
|
|
goto yy107;
|
|
yy107:
|
|
#line 461 "token.re"
|
|
{ goto Directive; }
|
|
#line 746 "<stdout>"
|
|
}
|
|
#line 468 "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 750 "<stdout>"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 128, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
192, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy108;
|
|
yy109: ++YYCURSOR;
|
|
yy108:
|
|
if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '+'){
|
|
if(yych <= '\f'){
|
|
if(yych <= '\000') goto yy120;
|
|
if(yych != '\n') goto yy122;
|
|
goto yy110;
|
|
} else {
|
|
if(yych <= '\r') goto yy112;
|
|
if(yych == ' ') goto yy118;
|
|
goto yy122;
|
|
}
|
|
} else {
|
|
if(yych <= '\\'){
|
|
if(yych <= ',') goto yy117;
|
|
if(yych == ':') goto yy114;
|
|
goto yy122;
|
|
} else {
|
|
if(yych <= ']') goto yy115;
|
|
if(yych == '}') goto yy115;
|
|
goto yy122;
|
|
}
|
|
}
|
|
yy110: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
goto yy136;
|
|
yy111:
|
|
#line 491 "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 = 0;
|
|
if ( nl_len = newline_len( YYTOKEN++ ) )
|
|
{
|
|
nl_count++;
|
|
YYTOKEN += nl_len - 1;
|
|
}
|
|
}
|
|
if ( nl_count <= 1 )
|
|
{
|
|
QUOTECAT(qstr, qcapa, qidx, ' ');
|
|
}
|
|
else
|
|
{
|
|
int i;
|
|
for ( i = 0; i < nl_count - 1; i++ )
|
|
{
|
|
QUOTECAT(qstr, qcapa, qidx, '\n');
|
|
}
|
|
}
|
|
|
|
goto Plain2;
|
|
}
|
|
#line 854 "<stdout>"
|
|
yy112: ++YYCURSOR;
|
|
if((yych = *YYCURSOR) == '\n') goto yy135;
|
|
goto yy113;
|
|
yy113:
|
|
#line 549 "token.re"
|
|
{ QUOTECATS(qstr, qcapa, qidx, YYTOKEN, YYCURSOR - YYTOKEN);
|
|
goto Plain2;
|
|
}
|
|
#line 863 "<stdout>"
|
|
yy114: yyaccept = 1;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yych <= '\f'){
|
|
if(yych == '\n') goto yy130;
|
|
goto yy113;
|
|
} else {
|
|
if(yych <= '\r') goto yy134;
|
|
if(yych == ' ') goto yy132;
|
|
goto yy113;
|
|
}
|
|
yy115: ++YYCURSOR;
|
|
goto yy116;
|
|
yy116:
|
|
#line 529 "token.re"
|
|
{ if ( plvl->status != syck_lvl_inline )
|
|
{
|
|
if ( *(YYCURSOR - 1) == ' ' || is_newline( YYCURSOR - 1 ) )
|
|
{
|
|
YYCURSOR--;
|
|
}
|
|
QUOTECATS(qstr, qcapa, qidx, YYTOKEN, YYCURSOR - YYTOKEN);
|
|
goto Plain2;
|
|
}
|
|
RETURN_IMPLICIT();
|
|
}
|
|
#line 889 "<stdout>"
|
|
yy117: yyaccept = 1;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yybm[0+yych] & 64) goto yy126;
|
|
if(yych == '\n') goto yy125;
|
|
if(yych == '\r') goto yy128;
|
|
goto yy113;
|
|
yy118: ++YYCURSOR;
|
|
if((yych = *YYCURSOR) == '#') goto yy123;
|
|
goto yy119;
|
|
yy119:
|
|
#line 547 "token.re"
|
|
{ goto Plain3; }
|
|
#line 902 "<stdout>"
|
|
yy120: ++YYCURSOR;
|
|
goto yy121;
|
|
yy121:
|
|
#line 545 "token.re"
|
|
{ RETURN_IMPLICIT(); }
|
|
#line 908 "<stdout>"
|
|
yy122: yych = *++YYCURSOR;
|
|
goto yy113;
|
|
yy123: ++YYCURSOR;
|
|
goto yy124;
|
|
yy124:
|
|
#line 541 "token.re"
|
|
{ eat_comments( parser );
|
|
RETURN_IMPLICIT();
|
|
}
|
|
#line 918 "<stdout>"
|
|
yy125: yych = *++YYCURSOR;
|
|
goto yy116;
|
|
yy126: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy127;
|
|
yy127: if(yybm[0+yych] & 64) goto yy126;
|
|
goto yy116;
|
|
yy128: yych = *++YYCURSOR;
|
|
if(yych == '\n') goto yy125;
|
|
goto yy129;
|
|
yy129: YYCURSOR = YYMARKER;
|
|
switch(yyaccept){
|
|
case 0: goto yy111;
|
|
case 1: goto yy113;
|
|
}
|
|
yy130: ++YYCURSOR;
|
|
goto yy131;
|
|
yy131:
|
|
#line 527 "token.re"
|
|
{ RETURN_IMPLICIT(); }
|
|
#line 941 "<stdout>"
|
|
yy132: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy133;
|
|
yy133: if(yych == ' ') goto yy132;
|
|
goto yy131;
|
|
yy134: yych = *++YYCURSOR;
|
|
if(yych == '\n') goto yy130;
|
|
goto yy129;
|
|
yy135: yyaccept = 0;
|
|
YYMARKER = ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy136;
|
|
yy136: if(yybm[0+yych] & 128) goto yy135;
|
|
if(yych != '\r') goto yy111;
|
|
goto yy137;
|
|
yy137: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
if(yych == '\n') goto yy135;
|
|
goto yy129;
|
|
}
|
|
#line 553 "token.re"
|
|
|
|
}
|
|
|
|
SingleQuote:
|
|
{
|
|
int qidx = 0;
|
|
int qcapa = 100;
|
|
char *qstr = S_ALLOC_N( char, qcapa );
|
|
|
|
SingleQuote2:
|
|
YYTOKEN = YYCURSOR;
|
|
|
|
|
|
#line 969 "<stdout>"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 128, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
128, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy138;
|
|
yy139: ++YYCURSOR;
|
|
yy138:
|
|
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '\f'){
|
|
if(yych <= '\000') goto yy146;
|
|
if(yych != '\n') goto yy147;
|
|
goto yy140;
|
|
} else {
|
|
if(yych <= '\r') goto yy142;
|
|
if(yych == '\'') goto yy144;
|
|
goto yy147;
|
|
}
|
|
yy140: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
goto yy151;
|
|
yy141:
|
|
#line 567 "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 = 0;
|
|
if ( nl_len = newline_len( YYTOKEN++ ) )
|
|
{
|
|
nl_count++;
|
|
YYTOKEN += nl_len - 1;
|
|
}
|
|
}
|
|
if ( nl_count <= 1 )
|
|
{
|
|
QUOTECAT(qstr, qcapa, qidx, ' ');
|
|
}
|
|
else
|
|
{
|
|
int i;
|
|
for ( i = 0; i < nl_count - 1; i++ )
|
|
{
|
|
QUOTECAT(qstr, qcapa, qidx, '\n');
|
|
}
|
|
}
|
|
|
|
goto SingleQuote2;
|
|
}
|
|
#line 1065 "<stdout>"
|
|
yy142: ++YYCURSOR;
|
|
if((yych = *YYCURSOR) == '\n') goto yy150;
|
|
goto yy143;
|
|
yy143:
|
|
#line 627 "token.re"
|
|
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
|
|
goto SingleQuote2;
|
|
}
|
|
#line 1074 "<stdout>"
|
|
yy144: ++YYCURSOR;
|
|
if((yych = *YYCURSOR) == '\'') goto yy148;
|
|
goto yy145;
|
|
yy145:
|
|
#line 611 "token.re"
|
|
{ SyckLevel *lvl;
|
|
SyckNode *n = syck_alloc_str();
|
|
lvl = CURRENT_LEVEL();
|
|
|
|
if ( lvl->status == syck_lvl_str )
|
|
{
|
|
POP_LEVEL();
|
|
}
|
|
n->type_id = syck_strndup( "str", 3 );
|
|
n->data.str->ptr = qstr;
|
|
n->data.str->len = qidx;
|
|
n->data.str->style = scalar_1quote;
|
|
sycklval->nodeData = n;
|
|
return YAML_PLAIN;
|
|
}
|
|
#line 1095 "<stdout>"
|
|
yy146: yych = *++YYCURSOR;
|
|
goto yy145;
|
|
yy147: yych = *++YYCURSOR;
|
|
goto yy143;
|
|
yy148: ++YYCURSOR;
|
|
goto yy149;
|
|
yy149:
|
|
#line 607 "token.re"
|
|
{ QUOTECAT(qstr, qcapa, qidx, '\'');
|
|
goto SingleQuote2;
|
|
}
|
|
#line 1107 "<stdout>"
|
|
yy150: yyaccept = 0;
|
|
YYMARKER = ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy151;
|
|
yy151: if(yybm[0+yych] & 128) goto yy150;
|
|
if(yych != '\r') goto yy141;
|
|
goto yy152;
|
|
yy152: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
if(yych == '\n') goto yy150;
|
|
goto yy153;
|
|
yy153: YYCURSOR = YYMARKER;
|
|
switch(yyaccept){
|
|
case 0: goto yy141;
|
|
}
|
|
}
|
|
#line 631 "token.re"
|
|
|
|
|
|
}
|
|
|
|
|
|
DoubleQuote:
|
|
{
|
|
int keep_nl = 1;
|
|
int qidx = 0;
|
|
int qcapa = 100;
|
|
char *qstr = S_ALLOC_N( char, qcapa );
|
|
|
|
DoubleQuote2:
|
|
YYTOKEN = YYCURSOR;
|
|
|
|
|
|
|
|
#line 1129 "<stdout>"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 128, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
192, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy154;
|
|
yy155: ++YYCURSOR;
|
|
yy154:
|
|
if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '\r'){
|
|
if(yych <= '\t'){
|
|
if(yych <= '\000') goto yy161;
|
|
goto yy164;
|
|
} else {
|
|
if(yych <= '\n') goto yy156;
|
|
if(yych <= '\f') goto yy164;
|
|
goto yy158;
|
|
}
|
|
} else {
|
|
if(yych <= '"'){
|
|
if(yych <= '!') goto yy164;
|
|
goto yy163;
|
|
} else {
|
|
if(yych == '\\') goto yy160;
|
|
goto yy164;
|
|
}
|
|
}
|
|
yy156: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
goto yy178;
|
|
yy157:
|
|
#line 649 "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 = 0;
|
|
if ( nl_len = newline_len( YYTOKEN++ ) )
|
|
{
|
|
nl_count++;
|
|
YYTOKEN += nl_len - 1;
|
|
}
|
|
}
|
|
if ( nl_count <= 1 )
|
|
{
|
|
QUOTECAT(qstr, qcapa, qidx, ' ');
|
|
}
|
|
else
|
|
{
|
|
int i;
|
|
for ( i = 0; i < nl_count - 1; i++ )
|
|
{
|
|
QUOTECAT(qstr, qcapa, qidx, '\n');
|
|
}
|
|
}
|
|
}
|
|
|
|
keep_nl = 1;
|
|
goto DoubleQuote2;
|
|
}
|
|
#line 1238 "<stdout>"
|
|
yy158: ++YYCURSOR;
|
|
if((yych = *YYCURSOR) == '\n') goto yy177;
|
|
goto yy159;
|
|
yy159:
|
|
#line 728 "token.re"
|
|
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
|
|
goto DoubleQuote2;
|
|
}
|
|
#line 1247 "<stdout>"
|
|
yy160: yyaccept = 1;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yybm[0+yych] & 64) goto yy165;
|
|
if(yych <= 'b'){
|
|
if(yych <= '"'){
|
|
if(yych <= '\f'){
|
|
if(yych == '\n') goto yy168;
|
|
goto yy159;
|
|
} else {
|
|
if(yych <= '\r') goto yy170;
|
|
if(yych <= '!') goto yy159;
|
|
goto yy172;
|
|
}
|
|
} else {
|
|
if(yych <= '['){
|
|
if(yych == '0') goto yy172;
|
|
goto yy159;
|
|
} else {
|
|
if(yych <= '\\') goto yy172;
|
|
if(yych <= '`') goto yy159;
|
|
goto yy172;
|
|
}
|
|
}
|
|
} else {
|
|
if(yych <= 'r'){
|
|
if(yych <= 'm'){
|
|
if(yych <= 'd') goto yy159;
|
|
if(yych <= 'f') goto yy172;
|
|
goto yy159;
|
|
} else {
|
|
if(yych <= 'n') goto yy172;
|
|
if(yych <= 'q') goto yy159;
|
|
goto yy172;
|
|
}
|
|
} else {
|
|
if(yych <= 'u'){
|
|
if(yych == 't') goto yy172;
|
|
goto yy159;
|
|
} else {
|
|
if(yych <= 'v') goto yy172;
|
|
if(yych == 'x') goto yy171;
|
|
goto yy159;
|
|
}
|
|
}
|
|
}
|
|
yy161: ++YYCURSOR;
|
|
goto yy162;
|
|
yy162:
|
|
#line 712 "token.re"
|
|
{ SyckLevel *lvl;
|
|
SyckNode *n = syck_alloc_str();
|
|
lvl = CURRENT_LEVEL();
|
|
|
|
if ( lvl->status == syck_lvl_str )
|
|
{
|
|
POP_LEVEL();
|
|
}
|
|
n->type_id = syck_strndup( "str", 3 );
|
|
n->data.str->ptr = qstr;
|
|
n->data.str->len = qidx;
|
|
n->data.str->style = scalar_2quote;
|
|
sycklval->nodeData = n;
|
|
return YAML_PLAIN;
|
|
}
|
|
#line 1312 "<stdout>"
|
|
yy163: yych = *++YYCURSOR;
|
|
goto yy162;
|
|
yy164: yych = *++YYCURSOR;
|
|
goto yy159;
|
|
yy165: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy166;
|
|
yy166: if(yybm[0+yych] & 64) goto yy165;
|
|
if(yych == '\n') goto yy168;
|
|
if(yych == '\r') goto yy170;
|
|
goto yy167;
|
|
yy167: YYCURSOR = YYMARKER;
|
|
switch(yyaccept){
|
|
case 0: goto yy157;
|
|
case 1: goto yy159;
|
|
}
|
|
yy168: ++YYCURSOR;
|
|
goto yy169;
|
|
yy169:
|
|
#line 707 "token.re"
|
|
{ keep_nl = 0;
|
|
YYCURSOR--;
|
|
goto DoubleQuote2;
|
|
}
|
|
#line 1339 "<stdout>"
|
|
yy170: yych = *++YYCURSOR;
|
|
if(yych == '\n') goto yy168;
|
|
goto yy167;
|
|
yy171: yych = *++YYCURSOR;
|
|
if(yych <= '@'){
|
|
if(yych <= '/') goto yy167;
|
|
if(yych <= '9') goto yy174;
|
|
goto yy167;
|
|
} else {
|
|
if(yych <= 'F') goto yy174;
|
|
if(yych <= '`') goto yy167;
|
|
if(yych <= 'f') goto yy174;
|
|
goto yy167;
|
|
}
|
|
yy172: ++YYCURSOR;
|
|
goto yy173;
|
|
yy173:
|
|
#line 693 "token.re"
|
|
{ char ch = *( YYCURSOR - 1 );
|
|
QUOTECAT(qstr, qcapa, qidx, escape_seq( ch ));
|
|
goto DoubleQuote2;
|
|
}
|
|
#line 1362 "<stdout>"
|
|
yy174: yych = *++YYCURSOR;
|
|
if(yych <= '@'){
|
|
if(yych <= '/') goto yy167;
|
|
if(yych >= ':') goto yy167;
|
|
goto yy175;
|
|
} else {
|
|
if(yych <= 'F') goto yy175;
|
|
if(yych <= '`') goto yy167;
|
|
if(yych >= 'g') goto yy167;
|
|
goto yy175;
|
|
}
|
|
yy175: ++YYCURSOR;
|
|
goto yy176;
|
|
yy176:
|
|
#line 698 "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 1386 "<stdout>"
|
|
yy177: yyaccept = 0;
|
|
YYMARKER = ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy178;
|
|
yy178: if(yybm[0+yych] & 128) goto yy177;
|
|
if(yych != '\r') goto yy157;
|
|
goto yy179;
|
|
yy179: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
if(yych == '\n') goto yy177;
|
|
goto yy167;
|
|
}
|
|
#line 732 "token.re"
|
|
|
|
}
|
|
|
|
TransferMethod:
|
|
{
|
|
int qidx = 0;
|
|
int qcapa = 100;
|
|
char *qstr = S_ALLOC_N( char, qcapa );
|
|
|
|
TransferMethod2:
|
|
YYTOKTMP = YYCURSOR;
|
|
|
|
|
|
#line 1404 "<stdout>"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
128, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy180;
|
|
yy181: ++YYCURSOR;
|
|
yy180:
|
|
if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '\r'){
|
|
if(yych <= '\t'){
|
|
if(yych >= '\001') goto yy189;
|
|
goto yy182;
|
|
} else {
|
|
if(yych <= '\n') goto yy183;
|
|
if(yych <= '\f') goto yy189;
|
|
goto yy186;
|
|
}
|
|
} else {
|
|
if(yych <= ' '){
|
|
if(yych <= '\037') goto yy189;
|
|
goto yy185;
|
|
} else {
|
|
if(yych == '\\') goto yy188;
|
|
goto yy189;
|
|
}
|
|
}
|
|
yy182: YYCURSOR = YYMARKER;
|
|
switch(yyaccept){
|
|
case 0: goto yy187;
|
|
}
|
|
yy183: ++YYCURSOR;
|
|
goto yy184;
|
|
yy184:
|
|
#line 746 "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 1522 "<stdout>"
|
|
yy185: yych = *++YYCURSOR;
|
|
goto yy198;
|
|
yy186: ++YYCURSOR;
|
|
if((yych = *YYCURSOR) == '\n') goto yy196;
|
|
goto yy187;
|
|
yy187:
|
|
#line 813 "token.re"
|
|
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
|
|
goto TransferMethod2;
|
|
}
|
|
#line 1533 "<stdout>"
|
|
yy188: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yych <= 'f'){
|
|
if(yych <= '['){
|
|
if(yych <= '"'){
|
|
if(yych <= '!') goto yy187;
|
|
goto yy191;
|
|
} else {
|
|
if(yych == '0') goto yy191;
|
|
goto yy187;
|
|
}
|
|
} else {
|
|
if(yych <= '`'){
|
|
if(yych <= '\\') goto yy191;
|
|
goto yy187;
|
|
} else {
|
|
if(yych <= 'b') goto yy191;
|
|
if(yych <= 'd') goto yy187;
|
|
goto yy191;
|
|
}
|
|
}
|
|
} else {
|
|
if(yych <= 's'){
|
|
if(yych <= 'n'){
|
|
if(yych <= 'm') goto yy187;
|
|
goto yy191;
|
|
} else {
|
|
if(yych == 'r') goto yy191;
|
|
goto yy187;
|
|
}
|
|
} else {
|
|
if(yych <= 'v'){
|
|
if(yych == 'u') goto yy187;
|
|
goto yy191;
|
|
} else {
|
|
if(yych == 'x') goto yy190;
|
|
goto yy187;
|
|
}
|
|
}
|
|
}
|
|
yy189: yych = *++YYCURSOR;
|
|
goto yy187;
|
|
yy190: yych = *++YYCURSOR;
|
|
if(yych <= '@'){
|
|
if(yych <= '/') goto yy182;
|
|
if(yych <= '9') goto yy193;
|
|
goto yy182;
|
|
} else {
|
|
if(yych <= 'F') goto yy193;
|
|
if(yych <= '`') goto yy182;
|
|
if(yych <= 'f') goto yy193;
|
|
goto yy182;
|
|
}
|
|
yy191: ++YYCURSOR;
|
|
goto yy192;
|
|
yy192:
|
|
#line 799 "token.re"
|
|
{ char ch = *( YYCURSOR - 1 );
|
|
QUOTECAT(qstr, qcapa, qidx, escape_seq( ch ));
|
|
goto TransferMethod2;
|
|
}
|
|
#line 1595 "<stdout>"
|
|
yy193: yych = *++YYCURSOR;
|
|
if(yych <= '@'){
|
|
if(yych <= '/') goto yy182;
|
|
if(yych >= ':') goto yy182;
|
|
goto yy194;
|
|
} else {
|
|
if(yych <= 'F') goto yy194;
|
|
if(yych <= '`') goto yy182;
|
|
if(yych >= 'g') goto yy182;
|
|
goto yy194;
|
|
}
|
|
yy194: ++YYCURSOR;
|
|
goto yy195;
|
|
yy195:
|
|
#line 804 "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 1619 "<stdout>"
|
|
yy196: yych = *++YYCURSOR;
|
|
goto yy184;
|
|
yy197: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy198;
|
|
yy198: if(yybm[0+yych] & 128) goto yy197;
|
|
goto yy184;
|
|
}
|
|
#line 818 "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;
|
|
GET_TRUE_YAML_INDENT(parentIndent);
|
|
|
|
switch ( *yyt )
|
|
{
|
|
case '|': blockType = BLOCK_LIT; break;
|
|
case '>': blockType = BLOCK_FOLD; break;
|
|
}
|
|
|
|
while ( ++yyt <= YYCURSOR )
|
|
{
|
|
if ( *yyt == '-' )
|
|
{
|
|
nlDoWhat = NL_CHOMP;
|
|
}
|
|
else if ( *yyt == '+' )
|
|
{
|
|
nlDoWhat = NL_KEEP;
|
|
}
|
|
else if ( isdigit( *yyt ) )
|
|
{
|
|
forceIndent = strtol( yyt, NULL, 10 ) + parentIndent;
|
|
}
|
|
}
|
|
|
|
qstr[0] = '\0';
|
|
YYTOKEN = YYCURSOR;
|
|
|
|
ScalarBlock2:
|
|
YYTOKEN = YYCURSOR;
|
|
|
|
|
|
#line 1632 "<stdout>"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 128, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
192, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy199;
|
|
yy200: ++YYCURSOR;
|
|
yy199:
|
|
if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '\r'){
|
|
if(yych <= '\t'){
|
|
if(yych <= '\000') goto yy207;
|
|
goto yy210;
|
|
} else {
|
|
if(yych <= '\n') goto yy201;
|
|
if(yych <= '\f') goto yy210;
|
|
goto yy203;
|
|
}
|
|
} else {
|
|
if(yych <= '#'){
|
|
if(yych <= '"') goto yy210;
|
|
goto yy205;
|
|
} else {
|
|
if(yych == '-') goto yy209;
|
|
goto yy210;
|
|
}
|
|
}
|
|
yy201: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
goto yy220;
|
|
yy202:
|
|
#line 865 "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 ( indt_len > parentIndent && lvl->status != syck_lvl_block )
|
|
{
|
|
int new_spaces = forceIndent > 0 ? forceIndent : indt_len;
|
|
ADD_LEVEL( new_spaces, syck_lvl_block );
|
|
lastIndent = indt_len - new_spaces;
|
|
nl_begin = 1;
|
|
lvl = CURRENT_LEVEL();
|
|
}
|
|
else if ( lvl->status != syck_lvl_block )
|
|
{
|
|
YYCURSOR = YYTOKEN;
|
|
RETURN_YAML_BLOCK();
|
|
}
|
|
|
|
/*
|
|
* Fold only in the event of two lines being on the leftmost
|
|
* indentation.
|
|
*/
|
|
if ( blockType == BLOCK_FOLD && lastIndent == 0 && ( indt_len - lvl->spaces ) == 0 )
|
|
{
|
|
fold_nl = 1;
|
|
}
|
|
|
|
pacer = YYTOKEN;
|
|
while ( pacer < YYCURSOR )
|
|
{
|
|
int nl_len = 0;
|
|
if ( nl_len = newline_len( pacer++ ) )
|
|
{
|
|
nl_count++;
|
|
pacer += nl_len - 1;
|
|
}
|
|
}
|
|
|
|
if ( fold_nl == 1 || nl_begin == 1 )
|
|
{
|
|
nl_count--;
|
|
}
|
|
|
|
if ( nl_count < 1 && nl_begin == 0 )
|
|
{
|
|
QUOTECAT(qstr, qcapa, qidx, ' ');
|
|
}
|
|
else
|
|
{
|
|
int i;
|
|
for ( i = 0; i < nl_count; i++ )
|
|
{
|
|
QUOTECAT(qstr, qcapa, qidx, '\n');
|
|
}
|
|
}
|
|
|
|
lastIndent = indt_len - lvl->spaces;
|
|
YYCURSOR -= lastIndent;
|
|
|
|
if ( indt_len < lvl->spaces )
|
|
{
|
|
POP_LEVEL();
|
|
YYCURSOR = YYTOKEN;
|
|
RETURN_YAML_BLOCK();
|
|
}
|
|
goto ScalarBlock2;
|
|
}
|
|
#line 1767 "<stdout>"
|
|
yy203: ++YYCURSOR;
|
|
if((yych = *YYCURSOR) == '\n') goto yy219;
|
|
goto yy204;
|
|
yy204:
|
|
#line 974 "token.re"
|
|
{ QUOTECAT(qstr, qcapa, qidx, *YYTOKEN);
|
|
goto ScalarBlock2;
|
|
}
|
|
#line 1776 "<stdout>"
|
|
yy205: ++YYCURSOR;
|
|
goto yy206;
|
|
yy206:
|
|
#line 936 "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 1793 "<stdout>"
|
|
yy207: ++YYCURSOR;
|
|
goto yy208;
|
|
yy208:
|
|
#line 950 "token.re"
|
|
{ YYCURSOR--;
|
|
POP_LEVEL();
|
|
RETURN_YAML_BLOCK();
|
|
}
|
|
#line 1802 "<stdout>"
|
|
yy209: yyaccept = 1;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yych == '-') goto yy211;
|
|
goto yy204;
|
|
yy210: yych = *++YYCURSOR;
|
|
goto yy204;
|
|
yy211: yych = *++YYCURSOR;
|
|
if(yych == '-') goto yy213;
|
|
goto yy212;
|
|
yy212: YYCURSOR = YYMARKER;
|
|
switch(yyaccept){
|
|
case 0: goto yy202;
|
|
case 1: goto yy204;
|
|
}
|
|
yy213: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 64) goto yy216;
|
|
if(yych == '\n') goto yy214;
|
|
if(yych == '\r') goto yy218;
|
|
goto yy212;
|
|
yy214: ++YYCURSOR;
|
|
goto yy215;
|
|
yy215:
|
|
#line 955 "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 1844 "<stdout>"
|
|
yy216: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy217;
|
|
yy217: if(yybm[0+yych] & 64) goto yy216;
|
|
goto yy215;
|
|
yy218: yych = *++YYCURSOR;
|
|
if(yych == '\n') goto yy214;
|
|
goto yy212;
|
|
yy219: yyaccept = 0;
|
|
YYMARKER = ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy220;
|
|
yy220: if(yybm[0+yych] & 128) goto yy219;
|
|
if(yych != '\r') goto yy202;
|
|
goto yy221;
|
|
yy221: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
if(yych == '\n') goto yy219;
|
|
goto yy212;
|
|
}
|
|
#line 979 "token.re"
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
void
|
|
eat_comments( SyckParser *parser )
|
|
{
|
|
Comment:
|
|
{
|
|
YYTOKEN = YYCURSOR;
|
|
|
|
|
|
#line 1872 "<stdout>"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 128, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy222;
|
|
yy223: ++YYCURSOR;
|
|
yy222:
|
|
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '\n'){
|
|
if(yych <= '\000') goto yy224;
|
|
if(yych <= '\t') goto yy229;
|
|
goto yy226;
|
|
} else {
|
|
if(yych == '\r') goto yy227;
|
|
goto yy229;
|
|
}
|
|
yy224: ++YYCURSOR;
|
|
goto yy225;
|
|
yy225:
|
|
#line 995 "token.re"
|
|
{ YYCURSOR = YYTOKEN;
|
|
return;
|
|
}
|
|
#line 1930 "<stdout>"
|
|
yy226: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
goto yy231;
|
|
yy227: ++YYCURSOR;
|
|
if(yybm[0+(yych = *YYCURSOR)] & 128) yych = *YYCURSOR;
|
|
goto yy230;
|
|
goto yy228;
|
|
yy228:
|
|
#line 999 "token.re"
|
|
{ goto Comment;
|
|
}
|
|
#line 1941 "<stdout>"
|
|
yy229: yych = *++YYCURSOR;
|
|
goto yy228;
|
|
yy230: yyaccept = 0;
|
|
YYMARKER = ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
goto yy231;
|
|
yy231: if(yybm[0+yych] & 128) goto yy230;
|
|
if(yych != '\r') goto yy225;
|
|
goto yy232;
|
|
yy232: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
if(yybm[0+yych] & 128) goto yy230;
|
|
goto yy233;
|
|
yy233: YYCURSOR = YYMARKER;
|
|
switch(yyaccept){
|
|
case 0: goto yy225;
|
|
}
|
|
}
|
|
#line 1002 "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);
|
|
}
|
|
|