mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
e44e2ef2e8
* ext/syck/token.c: fix for transfer methods on same indentation as nested mapping * lib/yaml/rubytypes.rb: all type names in lowercase git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1648 lines
44 KiB
C
1648 lines
44 KiB
C
/* Generated by re2c 0.5 on Sat May 10 19:31:12 2003 */
|
|
#line 1 "token.re"
|
|
//
|
|
// token.re
|
|
//
|
|
// $Author$
|
|
// $Date$
|
|
//
|
|
// Copyright (C) 2003 why the lucky stiff
|
|
//
|
|
|
|
#include "syck.h"
|
|
#include "gram.h"
|
|
|
|
//
|
|
// Allocate quoted strings in chunks
|
|
//
|
|
#define QUOTELEN 1024
|
|
|
|
//
|
|
// They do my bidding...
|
|
//
|
|
#define YYCTYPE char
|
|
#define YYCURSOR parser->cursor
|
|
#define YYMARKER parser->marker
|
|
#define YYLIMIT parser->limit
|
|
#define YYTOKEN parser->token
|
|
#define YYTOKTMP parser->toktmp
|
|
#define YYLINEPTR parser->lineptr
|
|
#define YYLINE parser->linect
|
|
#define YYFILL(n) syck_parser_read(parser)
|
|
|
|
//
|
|
// Repositions the cursor at `n' offset from the token start.
|
|
// Only works in `Header' and `Document' sections.
|
|
//
|
|
#define YYPOS(n) YYCURSOR = YYTOKEN + n
|
|
|
|
//
|
|
// Track line numbers
|
|
//
|
|
#define NEWLINE(ptr) YYLINE++; YYLINEPTR = ptr + 1
|
|
|
|
//
|
|
// I like seeing the level operations as macros...
|
|
//
|
|
#define ADD_LEVEL(len, status) syck_parser_add_level( parser, len, status )
|
|
#define POP_LEVEL() syck_parser_pop_level( parser )
|
|
#define CURRENT_LEVEL() syck_parser_current_level( parser )
|
|
|
|
//
|
|
// Force a token next time around yylex()
|
|
//
|
|
#define FORCE_NEXT_TOKEN(tok) parser->force_token = tok;
|
|
|
|
//
|
|
// Nice little macro to ensure we're IOPENed to the current level.
|
|
// * Only use this macro in the "Document" section *
|
|
//
|
|
#define ENSURE_IOPEN(last_lvl, to_len, reset) \
|
|
if ( last_lvl->spaces < to_len ) \
|
|
{ \
|
|
if ( last_lvl->status == syck_lvl_inline ) \
|
|
{ \
|
|
goto Document; \
|
|
} \
|
|
else \
|
|
{ \
|
|
ADD_LEVEL( to_len, syck_lvl_doc ); \
|
|
if ( reset == 1 ) YYPOS(0); \
|
|
return IOPEN; \
|
|
} \
|
|
}
|
|
|
|
//
|
|
// Nice little macro to ensure closure of levels.
|
|
// * Only use this macro in the "Document" section *
|
|
//
|
|
#define ENSURE_IEND(last_lvl, to_len) \
|
|
if ( last_lvl->spaces > to_len ) \
|
|
{ \
|
|
syck_parser_pop_level( parser ); \
|
|
YYPOS(0); \
|
|
return IEND; \
|
|
}
|
|
|
|
//
|
|
// Concatenates quoted string items and manages allocation
|
|
// to the quoted string
|
|
//
|
|
#define QUOTECAT(s, c, i, l) \
|
|
{ \
|
|
if ( i + 1 >= c ) \
|
|
{ \
|
|
c += QUOTELEN; \
|
|
S_REALLOC_N( s, char, c ); \
|
|
} \
|
|
s[i++] = l; \
|
|
s[i] = '\0'; \
|
|
}
|
|
|
|
//
|
|
// Tags a plain scalar with a transfer method
|
|
// * Use only in "Plain" section *
|
|
//
|
|
#define RETURN_IMPLICIT(fold) \
|
|
{ \
|
|
SyckLevel *i_lvl = CURRENT_LEVEL(); \
|
|
YYCURSOR = YYTOKTMP; \
|
|
yylval->nodeData = syck_new_str2( YYTOKEN, YYCURSOR - YYTOKEN ); \
|
|
if ( fold ) { \
|
|
syck_fold_format( yylval->nodeData->data.str, BLOCK_PLAIN, i_lvl->spaces, NL_CHOMP ); \
|
|
} \
|
|
if ( parser->implicit_typing == 1 ) \
|
|
{ \
|
|
try_tag_implicit( yylval->nodeData, parser->taguri_expansion ); \
|
|
} \
|
|
return PLAIN; \
|
|
}
|
|
|
|
//
|
|
// Handles newlines, calculates indent
|
|
//
|
|
#define GOBBLE_UP_INDENT( ict, start ) \
|
|
char *indent = start; \
|
|
NEWLINE(indent); \
|
|
while ( indent < YYCURSOR ) \
|
|
{ \
|
|
if ( *(++indent) == '\n' ) \
|
|
{ \
|
|
NEWLINE(indent); \
|
|
} \
|
|
} \
|
|
ict = 0; \
|
|
if ( *YYCURSOR == '\0' ) \
|
|
{ \
|
|
ict = -1; \
|
|
start = YYCURSOR; \
|
|
} \
|
|
else if ( *YYLINEPTR == ' ' ) \
|
|
{ \
|
|
ict = YYCURSOR - YYLINEPTR; \
|
|
}
|
|
|
|
//
|
|
// If an indent exists at the current level, back up.
|
|
//
|
|
#define GET_TRUE_INDENT(indt_len) \
|
|
{ \
|
|
SyckLevel *lvl_deep = CURRENT_LEVEL(); \
|
|
indt_len = lvl_deep->spaces; \
|
|
if ( indt_len == YYTOKEN - YYLINEPTR ) \
|
|
{ \
|
|
SyckLevel *lvl_over; \
|
|
parser->lvl_idx--; \
|
|
lvl_over = CURRENT_LEVEL(); \
|
|
indt_len = lvl_over->spaces; \
|
|
parser->lvl_idx++; \
|
|
} \
|
|
}
|
|
|
|
//
|
|
// Argjh! I hate globals! Here for yyerror() only!
|
|
//
|
|
SyckParser *syck_parser_ptr = NULL;
|
|
|
|
//
|
|
// Accessory funcs later in this file.
|
|
//
|
|
void eat_comments( SyckParser * );
|
|
|
|
//
|
|
// My own re-entrant yylex() using re2c.
|
|
// You really get used to the limited regexp.
|
|
// It's really nice to not rely on backtracking and such.
|
|
//
|
|
int
|
|
yylex( YYSTYPE *yylval, SyckParser *parser )
|
|
{
|
|
syck_parser_ptr = parser;
|
|
if ( YYCURSOR == NULL )
|
|
{
|
|
syck_parser_read( parser );
|
|
}
|
|
|
|
if ( parser->force_token != 0 )
|
|
{
|
|
int t = parser->force_token;
|
|
parser->force_token = 0;
|
|
return t;
|
|
}
|
|
|
|
#line 206
|
|
|
|
|
|
if ( YYLINEPTR != YYCURSOR )
|
|
{
|
|
goto Document;
|
|
}
|
|
|
|
Header:
|
|
|
|
YYTOKEN = YYCURSOR;
|
|
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 96, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
192, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy0;
|
|
yy1: ++YYCURSOR;
|
|
yy0:
|
|
if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '"'){
|
|
if(yych <= '\000') goto yy6;
|
|
if(yych == '\n') goto yy8;
|
|
goto yy10;
|
|
} else {
|
|
if(yych <= '#') goto yy4;
|
|
if(yych != '-') goto yy10;
|
|
}
|
|
yy2: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yych == '-') goto yy15;
|
|
yy3:
|
|
#line 247
|
|
{ YYPOS(0);
|
|
goto Document;
|
|
}
|
|
yy4: yych = *++YYCURSOR;
|
|
yy5:
|
|
#line 233
|
|
{ eat_comments( parser );
|
|
goto Header;
|
|
}
|
|
yy6: yych = *++YYCURSOR;
|
|
yy7:
|
|
#line 237
|
|
{ SyckLevel *lvl = CURRENT_LEVEL();
|
|
ENSURE_IEND(lvl, -1);
|
|
return 0;
|
|
}
|
|
yy8: yych = *++YYCURSOR;
|
|
goto yy12;
|
|
yy9:
|
|
#line 242
|
|
{ int indt_len;
|
|
GOBBLE_UP_INDENT( indt_len, YYTOKEN );
|
|
goto Header;
|
|
}
|
|
yy10: yych = *++YYCURSOR;
|
|
goto yy3;
|
|
yy11: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy12: if(yybm[0+yych] & 32) goto yy11;
|
|
if(yych != ' ') goto yy9;
|
|
yy13: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy14: if(yybm[0+yych] & 64) goto yy13;
|
|
goto yy9;
|
|
yy15: yych = *++YYCURSOR;
|
|
if(yych == '-') goto yy17;
|
|
yy16: YYCURSOR = YYMARKER;
|
|
switch(yyaccept){
|
|
case 0: goto yy3;
|
|
}
|
|
yy17: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 128) goto yy18;
|
|
if(yych == '\n') goto yy21;
|
|
goto yy16;
|
|
yy18: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy19: if(yybm[0+yych] & 128) goto yy18;
|
|
yy20:
|
|
#line 219
|
|
{ SyckLevel *lvl = CURRENT_LEVEL();
|
|
if ( lvl->status == syck_lvl_header )
|
|
{
|
|
YYPOS(3);
|
|
goto Directive;
|
|
}
|
|
else
|
|
{
|
|
ENSURE_IEND(lvl, -1);
|
|
YYPOS(0);
|
|
return 0;
|
|
}
|
|
}
|
|
yy21: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy22: if(yych == '\n') goto yy21;
|
|
goto yy20;
|
|
}
|
|
#line 251
|
|
|
|
|
|
Document:
|
|
{
|
|
SyckLevel *lvl = CURRENT_LEVEL();
|
|
if ( lvl->status == syck_lvl_header )
|
|
{
|
|
lvl->status = syck_lvl_doc;
|
|
}
|
|
|
|
YYTOKEN = YYCURSOR;
|
|
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 160, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
136, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 16, 0, 16, 64, 64,
|
|
80, 80, 80, 80, 80, 80, 80, 80,
|
|
80, 80, 64, 64, 64, 64, 64, 64,
|
|
64, 64, 64, 64, 64, 64, 64, 64,
|
|
64, 64, 64, 64, 64, 64, 64, 64,
|
|
64, 64, 64, 64, 64, 64, 64, 64,
|
|
64, 64, 64, 64, 64, 64, 64, 64,
|
|
0, 64, 64, 64, 64, 64, 64, 64,
|
|
64, 64, 64, 64, 64, 64, 64, 64,
|
|
64, 64, 64, 64, 64, 64, 64, 64,
|
|
64, 64, 64, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy23;
|
|
yy24: ++YYCURSOR;
|
|
yy23:
|
|
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = *YYCURSOR;
|
|
if(yych <= ','){
|
|
if(yych <= '"'){
|
|
if(yych <= '\n'){
|
|
if(yych <= '\000') goto yy47;
|
|
if(yych <= '\t') goto yy49;
|
|
} else {
|
|
if(yych <= '\037') goto yy49;
|
|
if(yych <= ' ') goto yy45;
|
|
if(yych <= '!') goto yy36;
|
|
goto yy40;
|
|
}
|
|
} else {
|
|
if(yych <= '\''){
|
|
if(yych <= '#') goto yy43;
|
|
if(yych <= '%') goto yy49;
|
|
if(yych <= '&') goto yy34;
|
|
goto yy38;
|
|
} else {
|
|
if(yych == '*') goto yy35;
|
|
if(yych <= '+') goto yy49;
|
|
goto yy31;
|
|
}
|
|
}
|
|
} else {
|
|
if(yych <= 'Z'){
|
|
if(yych <= ':'){
|
|
if(yych <= '-') goto yy33;
|
|
if(yych <= '9') goto yy49;
|
|
goto yy31;
|
|
} else {
|
|
if(yych <= '=') goto yy49;
|
|
if(yych <= '>') goto yy42;
|
|
if(yych <= '?') goto yy33;
|
|
goto yy49;
|
|
}
|
|
} else {
|
|
if(yych <= 'z'){
|
|
if(yych <= '[') goto yy27;
|
|
if(yych == ']') goto yy29;
|
|
goto yy49;
|
|
} else {
|
|
if(yych <= '{') goto yy27;
|
|
if(yych <= '|') goto yy42;
|
|
if(yych <= '}') goto yy29;
|
|
goto yy49;
|
|
}
|
|
}
|
|
}
|
|
yy25: yych = *++YYCURSOR;
|
|
goto yy77;
|
|
yy26:
|
|
#line 265
|
|
{ // Isolate spaces
|
|
int indt_len;
|
|
GOBBLE_UP_INDENT( indt_len, YYTOKEN );
|
|
lvl = CURRENT_LEVEL();
|
|
|
|
// Check for open indent
|
|
ENSURE_IEND(lvl, indt_len);
|
|
ENSURE_IOPEN(lvl, indt_len, 0);
|
|
if ( indt_len == -1 )
|
|
{
|
|
return 0;
|
|
}
|
|
return INDENT;
|
|
}
|
|
yy27: yych = *++YYCURSOR;
|
|
yy28:
|
|
#line 280
|
|
{ ENSURE_IOPEN(lvl, 0, 1);
|
|
lvl = CURRENT_LEVEL();
|
|
ADD_LEVEL(lvl->spaces + 1, syck_lvl_inline);
|
|
return YYTOKEN[0];
|
|
}
|
|
yy29: yych = *++YYCURSOR;
|
|
yy30:
|
|
#line 286
|
|
{ POP_LEVEL();
|
|
return YYTOKEN[0];
|
|
}
|
|
yy31: yych = *++YYCURSOR;
|
|
if(yych == '\n') goto yy74;
|
|
if(yych == ' ') goto yy71;
|
|
yy32:
|
|
#line 335
|
|
{ ENSURE_IOPEN(lvl, 0, 1);
|
|
goto Plain;
|
|
}
|
|
yy33: yych = *++YYCURSOR;
|
|
if(yych == '\n') goto yy69;
|
|
if(yych == ' ') goto yy66;
|
|
goto yy32;
|
|
yy34: yych = *++YYCURSOR;
|
|
if(yych <= '-') goto yy32;
|
|
if(yych == '`') goto yy32;
|
|
if(yych <= 'z') goto yy63;
|
|
goto yy32;
|
|
yy35: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 64) goto yy60;
|
|
goto yy32;
|
|
yy36: yych = *++YYCURSOR;
|
|
yy37:
|
|
#line 312
|
|
{ goto TransferMethod; }
|
|
yy38: yych = *++YYCURSOR;
|
|
yy39:
|
|
#line 314
|
|
{ goto SingleQuote; }
|
|
yy40: yych = *++YYCURSOR;
|
|
yy41:
|
|
#line 316
|
|
{ goto DoubleQuote; }
|
|
yy42: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yybm[0+yych] & 32) goto yy58;
|
|
if(yych <= '+'){
|
|
if(yych == ' ') goto yy55;
|
|
if(yych <= '*') goto yy32;
|
|
goto yy52;
|
|
} else {
|
|
if(yych <= '-'){
|
|
if(yych <= ',') goto yy32;
|
|
goto yy52;
|
|
} else {
|
|
if(yych <= '/') goto yy32;
|
|
if(yych <= '9') goto yy52;
|
|
goto yy32;
|
|
}
|
|
}
|
|
yy43: yych = *++YYCURSOR;
|
|
yy44:
|
|
#line 325
|
|
{ eat_comments( parser );
|
|
goto Document;
|
|
}
|
|
yy45: yych = *++YYCURSOR;
|
|
goto yy51;
|
|
yy46:
|
|
#line 329
|
|
{ goto Document; }
|
|
yy47: yych = *++YYCURSOR;
|
|
yy48:
|
|
#line 331
|
|
{ ENSURE_IEND(lvl, -1);
|
|
return 0;
|
|
}
|
|
yy49: yych = *++YYCURSOR;
|
|
goto yy32;
|
|
yy50: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy51: if(yybm[0+yych] & 8) goto yy50;
|
|
goto yy46;
|
|
yy52: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy53: if(yybm[0+yych] & 32) goto yy58;
|
|
if(yych <= '+'){
|
|
if(yych == ' ') goto yy55;
|
|
if(yych >= '+') goto yy52;
|
|
} else {
|
|
if(yych <= '-'){
|
|
if(yych >= '-') goto yy52;
|
|
} else {
|
|
if(yych <= '/') goto yy54;
|
|
if(yych <= '9') goto yy52;
|
|
}
|
|
}
|
|
yy54: YYCURSOR = YYMARKER;
|
|
switch(yyaccept){
|
|
case 0: goto yy32;
|
|
}
|
|
yy55: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy56: if(yych == ' ') goto yy55;
|
|
yy57:
|
|
#line 318
|
|
{ if ( *( YYCURSOR - 1 ) == '\n' )
|
|
{
|
|
YYCURSOR--;
|
|
}
|
|
goto ScalarBlock;
|
|
}
|
|
yy58: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy59: if(yybm[0+yych] & 32) goto yy58;
|
|
goto yy57;
|
|
yy60: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy61: if(yybm[0+yych] & 64) goto yy60;
|
|
yy62:
|
|
#line 308
|
|
{ yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
|
|
return ALIAS;
|
|
}
|
|
yy63: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy64: if(yych <= '-') goto yy65;
|
|
if(yych == '`') goto yy65;
|
|
if(yych <= 'z') goto yy63;
|
|
yy65:
|
|
#line 304
|
|
{ yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
|
|
return ANCHOR;
|
|
}
|
|
yy66: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy67: if(yych == ' ') goto yy66;
|
|
yy68:
|
|
#line 294
|
|
{ ENSURE_IOPEN(lvl, YYTOKEN - YYLINEPTR, 1);
|
|
FORCE_NEXT_TOKEN(IOPEN);
|
|
if ( *( YYCURSOR - 1 ) == '\n' )
|
|
{
|
|
YYCURSOR--;
|
|
}
|
|
ADD_LEVEL(YYCURSOR - YYLINEPTR, syck_lvl_doc);
|
|
return YYTOKEN[0];
|
|
}
|
|
yy69: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy70: if(yych == '\n') goto yy69;
|
|
goto yy68;
|
|
yy71: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy72: if(yych == ' ') goto yy71;
|
|
yy73:
|
|
#line 290
|
|
{ YYPOS(1);
|
|
return YYTOKEN[0];
|
|
}
|
|
yy74: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy75: if(yych == '\n') goto yy74;
|
|
goto yy73;
|
|
yy76: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy77: if(yych == '\n') goto yy76;
|
|
if(yych != ' ') goto yy26;
|
|
yy78: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy79: if(yybm[0+yych] & 128) goto yy78;
|
|
goto yy26;
|
|
}
|
|
#line 339
|
|
|
|
}
|
|
|
|
Directive:
|
|
{
|
|
YYTOKTMP = YYCURSOR;
|
|
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
32, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 128, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
0, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 192, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy80;
|
|
yy81: ++YYCURSOR;
|
|
yy80:
|
|
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = *YYCURSOR;
|
|
if(yych <= ' '){
|
|
if(yych <= '\000') goto yy82;
|
|
if(yych <= '\037') goto yy87;
|
|
goto yy85;
|
|
} else {
|
|
if(yych == '%') goto yy83;
|
|
goto yy87;
|
|
}
|
|
yy82: YYCURSOR = YYMARKER;
|
|
switch(yyaccept){
|
|
case 0: goto yy84;
|
|
}
|
|
yy83: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yych <= '-') goto yy84;
|
|
if(yych == '`') goto yy84;
|
|
if(yych <= 'z') goto yy90;
|
|
yy84:
|
|
#line 352
|
|
{ YYCURSOR = YYTOKTMP;
|
|
return DOCSEP;
|
|
}
|
|
yy85: yych = *++YYCURSOR;
|
|
goto yy89;
|
|
yy86:
|
|
#line 350
|
|
{ goto Directive; }
|
|
yy87: yych = *++YYCURSOR;
|
|
goto yy84;
|
|
yy88: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy89: if(yybm[0+yych] & 32) goto yy88;
|
|
goto yy86;
|
|
yy90: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy91: if(yybm[0+yych] & 64) goto yy90;
|
|
if(yych != ':') goto yy82;
|
|
yy92: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 128) goto yy93;
|
|
goto yy82;
|
|
yy93: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy94: if(yybm[0+yych] & 128) goto yy93;
|
|
yy95:
|
|
#line 348
|
|
{ goto Directive; }
|
|
}
|
|
#line 355
|
|
|
|
|
|
}
|
|
|
|
Plain:
|
|
{
|
|
SyckLevel *plvl;
|
|
int parentIndent;
|
|
int multiLine = 0;
|
|
YYCURSOR = YYTOKEN;
|
|
plvl = CURRENT_LEVEL();
|
|
GET_TRUE_INDENT(parentIndent);
|
|
|
|
Plain2:
|
|
YYTOKTMP = YYCURSOR;
|
|
|
|
Plain3:
|
|
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 192, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
160, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy96;
|
|
yy97: ++YYCURSOR;
|
|
yy96:
|
|
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = *YYCURSOR;
|
|
if(yych <= ','){
|
|
if(yych <= '\n'){
|
|
if(yych <= '\000') goto yy105;
|
|
if(yych <= '\t') goto yy109;
|
|
} else {
|
|
if(yych == ' ') goto yy107;
|
|
if(yych <= '+') goto yy109;
|
|
goto yy104;
|
|
}
|
|
} else {
|
|
if(yych <= '\\'){
|
|
if(yych == ':') goto yy100;
|
|
goto yy109;
|
|
} else {
|
|
if(yych <= ']') goto yy102;
|
|
if(yych == '}') goto yy102;
|
|
goto yy109;
|
|
}
|
|
}
|
|
yy98: yych = *++YYCURSOR;
|
|
goto yy122;
|
|
yy99:
|
|
#line 375
|
|
{ int indt_len;
|
|
SyckLevel *lvl;
|
|
char *tok = YYTOKTMP;
|
|
GOBBLE_UP_INDENT( indt_len, tok );
|
|
lvl = CURRENT_LEVEL();
|
|
|
|
if ( indt_len <= parentIndent )
|
|
{
|
|
RETURN_IMPLICIT(multiLine);
|
|
}
|
|
|
|
multiLine = 1;
|
|
goto Plain2;
|
|
}
|
|
yy100: yych = *++YYCURSOR;
|
|
if(yych == '\n') goto yy119;
|
|
if(yych == ' ') goto yy116;
|
|
yy101:
|
|
#line 404
|
|
{ goto Plain2; }
|
|
yy102: yych = *++YYCURSOR;
|
|
yy103:
|
|
#line 392
|
|
{ if ( plvl->status != syck_lvl_inline ) goto Plain2;
|
|
RETURN_IMPLICIT(multiLine);
|
|
}
|
|
yy104: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 64) goto yy114;
|
|
if(yych == ' ') goto yy112;
|
|
goto yy101;
|
|
yy105: yych = *++YYCURSOR;
|
|
yy106:
|
|
#line 396
|
|
{ RETURN_IMPLICIT(multiLine); }
|
|
yy107: yych = *++YYCURSOR;
|
|
if(yych == '#') goto yy110;
|
|
yy108:
|
|
#line 402
|
|
{ goto Plain3; }
|
|
yy109: yych = *++YYCURSOR;
|
|
goto yy101;
|
|
yy110: yych = *++YYCURSOR;
|
|
yy111:
|
|
#line 398
|
|
{ eat_comments( parser );
|
|
RETURN_IMPLICIT(multiLine);
|
|
}
|
|
yy112: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy113: if(yybm[0+yych] & 32) goto yy112;
|
|
goto yy103;
|
|
yy114: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy115: if(yybm[0+yych] & 64) goto yy114;
|
|
goto yy103;
|
|
yy116: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy117: if(yych == ' ') goto yy116;
|
|
yy118:
|
|
#line 390
|
|
{ RETURN_IMPLICIT(multiLine); }
|
|
yy119: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy120: if(yych == '\n') goto yy119;
|
|
goto yy118;
|
|
yy121: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy122: if(yych == '\n') goto yy121;
|
|
if(yych != ' ') goto yy99;
|
|
yy123: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy124: if(yybm[0+yych] & 128) goto yy123;
|
|
goto yy99;
|
|
}
|
|
#line 406
|
|
|
|
}
|
|
|
|
SingleQuote:
|
|
{
|
|
int qidx = 0;
|
|
int qcapa = 100;
|
|
char *qstr = S_ALLOC_N( char, qcapa );
|
|
|
|
SingleQuote2:
|
|
YYTOKTMP = YYCURSOR;
|
|
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 192, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
128, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy125;
|
|
yy126: ++YYCURSOR;
|
|
yy125:
|
|
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '\n'){
|
|
if(yych <= '\000') goto yy131;
|
|
if(yych <= '\t') goto yy132;
|
|
} else {
|
|
if(yych == '\'') goto yy129;
|
|
goto yy132;
|
|
}
|
|
yy127: yych = *++YYCURSOR;
|
|
goto yy137;
|
|
yy128:
|
|
#line 420
|
|
{ int indt_len;
|
|
int nl_count = 0;
|
|
SyckLevel *lvl;
|
|
GOBBLE_UP_INDENT( indt_len, YYTOKTMP );
|
|
lvl = CURRENT_LEVEL();
|
|
|
|
if ( lvl->status != syck_lvl_str )
|
|
{
|
|
ADD_LEVEL( indt_len, syck_lvl_str );
|
|
}
|
|
else if ( indt_len < lvl->spaces )
|
|
{
|
|
// Error!
|
|
}
|
|
|
|
while ( YYTOKTMP < YYCURSOR )
|
|
{
|
|
if ( *YYTOKTMP++ == '\n' )
|
|
nl_count++;
|
|
}
|
|
if ( nl_count <= 1 )
|
|
{
|
|
QUOTECAT(qstr, qcapa, qidx, ' ');
|
|
}
|
|
else
|
|
{
|
|
int i;
|
|
for ( i = 0; i < nl_count - 1; i++ )
|
|
{
|
|
QUOTECAT(qstr, qcapa, qidx, '\n');
|
|
}
|
|
}
|
|
|
|
goto SingleQuote2;
|
|
}
|
|
yy129: yych = *++YYCURSOR;
|
|
if(yych == '\'') goto yy134;
|
|
yy130:
|
|
#line 460
|
|
{ SyckLevel *lvl;
|
|
SyckNode *n = syck_alloc_str();
|
|
lvl = CURRENT_LEVEL();
|
|
|
|
if ( lvl->status == syck_lvl_str )
|
|
{
|
|
POP_LEVEL();
|
|
}
|
|
n->data.str->ptr = qstr;
|
|
n->data.str->len = qidx;
|
|
yylval->nodeData = n;
|
|
return PLAIN;
|
|
}
|
|
yy131: yych = *++YYCURSOR;
|
|
goto yy130;
|
|
yy132: yych = *++YYCURSOR;
|
|
yy133:
|
|
#line 474
|
|
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
|
|
goto SingleQuote2;
|
|
}
|
|
yy134: yych = *++YYCURSOR;
|
|
yy135:
|
|
#line 456
|
|
{ QUOTECAT(qstr, qcapa, qidx, '\'');
|
|
goto SingleQuote2;
|
|
}
|
|
yy136: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy137: if(yybm[0+yych] & 64) goto yy136;
|
|
if(yych != ' ') goto yy128;
|
|
yy138: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy139: if(yybm[0+yych] & 128) goto yy138;
|
|
goto yy128;
|
|
}
|
|
#line 478
|
|
|
|
|
|
}
|
|
|
|
|
|
DoubleQuote:
|
|
{
|
|
int keep_nl = 1;
|
|
int qidx = 0;
|
|
int qcapa = 100;
|
|
char *qstr = S_ALLOC_N( char, qcapa );
|
|
|
|
DoubleQuote2:
|
|
YYTOKTMP = YYCURSOR;
|
|
|
|
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 192, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
160, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy140;
|
|
yy141: ++YYCURSOR;
|
|
yy140:
|
|
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '!'){
|
|
if(yych <= '\000') goto yy146;
|
|
if(yych != '\n') goto yy149;
|
|
} else {
|
|
if(yych <= '"') goto yy148;
|
|
if(yych == '\\') goto yy144;
|
|
goto yy149;
|
|
}
|
|
yy142: yych = *++YYCURSOR;
|
|
goto yy158;
|
|
yy143:
|
|
#line 496
|
|
{ int indt_len;
|
|
int nl_count = 0;
|
|
SyckLevel *lvl;
|
|
GOBBLE_UP_INDENT( indt_len, YYTOKTMP );
|
|
lvl = CURRENT_LEVEL();
|
|
|
|
if ( lvl->status != syck_lvl_str )
|
|
{
|
|
ADD_LEVEL( indt_len, syck_lvl_str );
|
|
}
|
|
else if ( indt_len < lvl->spaces )
|
|
{
|
|
// Error!
|
|
}
|
|
|
|
if ( keep_nl == 1 )
|
|
{
|
|
while ( YYTOKTMP < YYCURSOR )
|
|
{
|
|
if ( *YYTOKTMP++ == '\n' )
|
|
nl_count++;
|
|
}
|
|
if ( nl_count <= 1 )
|
|
{
|
|
QUOTECAT(qstr, qcapa, qidx, ' ');
|
|
}
|
|
else
|
|
{
|
|
int i;
|
|
for ( i = 0; i < nl_count - 1; i++ )
|
|
{
|
|
QUOTECAT(qstr, qcapa, qidx, '\n');
|
|
}
|
|
}
|
|
}
|
|
|
|
keep_nl = 1;
|
|
goto DoubleQuote2;
|
|
}
|
|
yy144: yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
if(yybm[0+yych] & 32) goto yy150;
|
|
if(yych <= 'd'){
|
|
if(yych <= '"'){
|
|
if(yych == '\n') goto yy153;
|
|
if(yych >= '"') goto yy155;
|
|
} else {
|
|
if(yych <= '\\'){
|
|
if(yych >= '\\') goto yy155;
|
|
} else {
|
|
if(yych <= '`') goto yy145;
|
|
if(yych <= 'b') goto yy155;
|
|
}
|
|
}
|
|
} else {
|
|
if(yych <= 'r'){
|
|
if(yych <= 'm'){
|
|
if(yych <= 'f') goto yy155;
|
|
} else {
|
|
if(yych <= 'n') goto yy155;
|
|
if(yych >= 'r') goto yy155;
|
|
}
|
|
} else {
|
|
if(yych <= 't'){
|
|
if(yych >= 't') goto yy155;
|
|
} else {
|
|
if(yych == 'v') goto yy155;
|
|
}
|
|
}
|
|
}
|
|
yy145:
|
|
#line 571
|
|
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
|
|
goto DoubleQuote2;
|
|
}
|
|
yy146: yych = *++YYCURSOR;
|
|
yy147:
|
|
#line 557
|
|
{ SyckLevel *lvl;
|
|
SyckNode *n = syck_alloc_str();
|
|
lvl = CURRENT_LEVEL();
|
|
|
|
if ( lvl->status == syck_lvl_str )
|
|
{
|
|
POP_LEVEL();
|
|
}
|
|
n->data.str->ptr = qstr;
|
|
n->data.str->len = qidx;
|
|
yylval->nodeData = n;
|
|
return PLAIN;
|
|
}
|
|
yy148: yych = *++YYCURSOR;
|
|
goto yy147;
|
|
yy149: yych = *++YYCURSOR;
|
|
goto yy145;
|
|
yy150: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy151: if(yybm[0+yych] & 32) goto yy150;
|
|
if(yych == '\n') goto yy153;
|
|
yy152: YYCURSOR = YYMARKER;
|
|
switch(yyaccept){
|
|
case 0: goto yy145;
|
|
}
|
|
yy153: yych = *++YYCURSOR;
|
|
yy154:
|
|
#line 552
|
|
{ keep_nl = 0;
|
|
YYCURSOR--;
|
|
goto DoubleQuote2;
|
|
}
|
|
yy155: yych = *++YYCURSOR;
|
|
yy156:
|
|
#line 536
|
|
{ char ch = *( YYCURSOR - 1 );
|
|
switch ( ch )
|
|
{
|
|
case 'a': ch = '\a'; break;
|
|
case 'b': ch = '\b'; break;
|
|
case 'e': ch = '\e'; break;
|
|
case 'f': ch = '\f'; break;
|
|
case 'n': ch = '\n'; break;
|
|
case 'r': ch = '\r'; break;
|
|
case 't': ch = '\t'; break;
|
|
case 'v': ch = '\v'; break;
|
|
}
|
|
QUOTECAT(qstr, qcapa, qidx, ch);
|
|
goto DoubleQuote2;
|
|
}
|
|
yy157: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy158: if(yybm[0+yych] & 64) goto yy157;
|
|
if(yych != ' ') goto yy143;
|
|
yy159: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy160: if(yybm[0+yych] & 128) goto yy159;
|
|
goto yy143;
|
|
}
|
|
#line 575
|
|
|
|
}
|
|
|
|
TransferMethod:
|
|
{
|
|
YYTOKTMP = YYCURSOR;
|
|
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 64, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
128, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy161;
|
|
yy162: ++YYCURSOR;
|
|
yy161:
|
|
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '\n'){
|
|
if(yych <= '\000') goto yy163;
|
|
if(yych <= '\t') goto yy167;
|
|
goto yy166;
|
|
} else {
|
|
if(yych == ' ') goto yy164;
|
|
goto yy167;
|
|
}
|
|
yy163:yy164: yych = *++YYCURSOR;
|
|
goto yy172;
|
|
yy165:
|
|
#line 584
|
|
{ SyckLevel *lvl;
|
|
YYCURSOR = YYTOKTMP;
|
|
if ( YYCURSOR == YYTOKEN + 1 )
|
|
{
|
|
return ITRANSFER;
|
|
}
|
|
|
|
lvl = CURRENT_LEVEL();
|
|
|
|
//
|
|
// URL Prefixing
|
|
//
|
|
if ( *(YYTOKEN + 1) == '^' )
|
|
{
|
|
yylval->name = S_ALLOC_N( char, YYCURSOR - YYTOKEN + strlen( lvl->domain ) );
|
|
yylval->name[0] = '\0';
|
|
strcat( yylval->name, lvl->domain );
|
|
strncat( yylval->name, YYTOKEN + 2, YYCURSOR - YYTOKEN - 2 );
|
|
}
|
|
else
|
|
{
|
|
char *carat = YYTOKEN + 1;
|
|
while ( (++carat) < YYCURSOR )
|
|
{
|
|
if ( *carat == '^' )
|
|
break;
|
|
}
|
|
|
|
if ( carat < YYCURSOR )
|
|
{
|
|
lvl->domain = syck_strndup( YYTOKEN + 1, carat - YYTOKEN - 1 );
|
|
yylval->name = S_ALLOC_N( char, YYCURSOR - carat + strlen( lvl->domain ) );
|
|
yylval->name[0] = '\0';
|
|
strcat( yylval->name, lvl->domain );
|
|
strncat( yylval->name, carat + 1, YYCURSOR - carat - 1 );
|
|
}
|
|
else
|
|
{
|
|
yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
|
|
}
|
|
}
|
|
|
|
if ( *YYCURSOR == '\n' )
|
|
{
|
|
FORCE_NEXT_TOKEN(IOPEN);
|
|
ADD_LEVEL(lvl->spaces, syck_lvl_doc);
|
|
}
|
|
return TRANSFER;
|
|
}
|
|
yy166: yych = *++YYCURSOR;
|
|
goto yy170;
|
|
yy167: yych = *++YYCURSOR;
|
|
yy168:
|
|
#line 634
|
|
{ goto TransferMethod; }
|
|
yy169: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy170: if(yybm[0+yych] & 64) goto yy169;
|
|
goto yy165;
|
|
yy171: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy172: if(yybm[0+yych] & 128) goto yy171;
|
|
goto yy165;
|
|
}
|
|
#line 636
|
|
|
|
}
|
|
|
|
ScalarBlock:
|
|
{
|
|
int blockType = 0;
|
|
int nlDoWhat = 0;
|
|
int forceIndent = -1;
|
|
char *yyt = YYTOKEN;
|
|
SyckLevel *lvl = CURRENT_LEVEL();
|
|
int parentIndent;
|
|
GET_TRUE_INDENT(parentIndent);
|
|
|
|
switch ( *yyt )
|
|
{
|
|
case '|': blockType = BLOCK_LIT; break;
|
|
case '>': blockType = BLOCK_FOLD; break;
|
|
}
|
|
|
|
while ( ++yyt <= YYCURSOR )
|
|
{
|
|
if ( *yyt == '-' )
|
|
{
|
|
nlDoWhat = NL_CHOMP;
|
|
}
|
|
else if ( *yyt == '+' )
|
|
{
|
|
nlDoWhat = NL_KEEP;
|
|
}
|
|
else if ( isdigit( *yyt ) )
|
|
{
|
|
forceIndent = strtol( yyt, NULL, 10 ) + parentIndent;
|
|
}
|
|
}
|
|
|
|
YYTOKEN = YYCURSOR;
|
|
|
|
ScalarBlock2:
|
|
YYTOKTMP = YYCURSOR;
|
|
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 192, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
128, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy173;
|
|
yy174: ++YYCURSOR;
|
|
yy173:
|
|
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '\n'){
|
|
if(yych <= '\000') goto yy177;
|
|
if(yych <= '\t') goto yy181;
|
|
} else {
|
|
if(yych == '#') goto yy179;
|
|
goto yy181;
|
|
}
|
|
yy175: yych = *++YYCURSOR;
|
|
goto yy184;
|
|
yy176:
|
|
#line 678
|
|
{ int indt_len;
|
|
GOBBLE_UP_INDENT( indt_len, YYTOKTMP );
|
|
lvl = CURRENT_LEVEL();
|
|
|
|
if ( indt_len > parentIndent && lvl->status != syck_lvl_block )
|
|
{
|
|
ADD_LEVEL( forceIndent > 0 ? forceIndent : indt_len, syck_lvl_block );
|
|
}
|
|
|
|
lvl = CURRENT_LEVEL();
|
|
if ( lvl->status != syck_lvl_block )
|
|
{
|
|
yylval->nodeData = syck_new_str2( YYTOKEN, 0 );
|
|
YYCURSOR = YYTOKTMP;
|
|
return BLOCK;
|
|
}
|
|
else if ( indt_len < lvl->spaces )
|
|
{
|
|
YYCURSOR--;
|
|
yylval->nodeData = syck_new_str2( YYTOKEN, YYCURSOR - YYTOKEN );
|
|
syck_fold_format( yylval->nodeData->data.str, blockType, lvl->spaces, nlDoWhat );
|
|
if ( lvl->status == syck_lvl_block )
|
|
{
|
|
POP_LEVEL();
|
|
}
|
|
YYCURSOR = YYTOKTMP;
|
|
return BLOCK;
|
|
}
|
|
goto ScalarBlock2;
|
|
}
|
|
yy177: yych = *++YYCURSOR;
|
|
yy178:
|
|
#line 710
|
|
{ lvl = CURRENT_LEVEL();
|
|
YYCURSOR--;
|
|
yylval->nodeData = syck_new_str2( YYTOKEN, YYCURSOR - YYTOKEN );
|
|
syck_fold_format( yylval->nodeData->data.str, blockType, lvl->spaces, nlDoWhat );
|
|
POP_LEVEL();
|
|
return BLOCK;
|
|
}
|
|
yy179: yych = *++YYCURSOR;
|
|
yy180:
|
|
#line 718
|
|
{ lvl = CURRENT_LEVEL();
|
|
if ( lvl->status != syck_lvl_block )
|
|
{
|
|
eat_comments( parser );
|
|
YYTOKEN = YYCURSOR;
|
|
}
|
|
goto ScalarBlock2;
|
|
}
|
|
yy181: yych = *++YYCURSOR;
|
|
yy182:
|
|
#line 727
|
|
{ goto ScalarBlock2; }
|
|
yy183: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy184: if(yybm[0+yych] & 64) goto yy183;
|
|
if(yych != ' ') goto yy176;
|
|
yy185: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy186: if(yybm[0+yych] & 128) goto yy185;
|
|
goto yy176;
|
|
}
|
|
#line 729
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
eat_comments( SyckParser *parser )
|
|
{
|
|
char *tok;
|
|
|
|
Comment:
|
|
{
|
|
tok = YYCURSOR;
|
|
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept;
|
|
static unsigned char yybm[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 128, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
goto yy187;
|
|
yy188: ++YYCURSOR;
|
|
yy187:
|
|
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = *YYCURSOR;
|
|
if(yych <= '\000') goto yy189;
|
|
if(yych == '\n') goto yy191;
|
|
goto yy192;
|
|
yy189: yych = *++YYCURSOR;
|
|
yy190:
|
|
#line 745
|
|
{ SyckLevel *lvl = CURRENT_LEVEL();
|
|
YYCURSOR = tok;
|
|
return;
|
|
}
|
|
yy191: yych = *++YYCURSOR;
|
|
goto yy195;
|
|
yy192: yych = *++YYCURSOR;
|
|
yy193:
|
|
#line 750
|
|
{ goto Comment;
|
|
}
|
|
yy194: ++YYCURSOR;
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
|
yych = *YYCURSOR;
|
|
yy195: if(yybm[0+yych] & 128) goto yy194;
|
|
goto yy190;
|
|
}
|
|
#line 753
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
int
|
|
yywrap()
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
void
|
|
yyerror( char *msg )
|
|
{
|
|
if ( syck_parser_ptr->error_handler == NULL )
|
|
syck_parser_ptr->error_handler = syck_default_error_handler;
|
|
|
|
syck_parser_ptr->root = NULL;
|
|
(syck_parser_ptr->error_handler)(syck_parser_ptr, msg);
|
|
}
|
|
|