#line 1 "ext/dtext/dtext.rl"
// situationally print newlines to make the generated html
// easier to read
#define PRETTY_PRINT 0
#include
#include
#include
#include
#include
#include
typedef struct StateMachine {
size_t top;
int cs;
int act;
const char * p;
const char * pb;
const char * pe;
const char * eof;
const char * ts;
const char * te;
const char * a1;
const char * a2;
const char * b1;
const char * b2;
bool f_inline;
bool f_strip;
bool f_mentions;
bool list_mode;
bool header_mode;
GString * output;
GArray * stack;
GQueue * dstack;
int list_nest;
int d;
int b;
int quote;
} StateMachine;
static const size_t MAX_STACK_DEPTH = 512;
static const int BLOCK_P = 1;
static const int INLINE_SPOILER = 2;
static const int BLOCK_SPOILER = 3;
static const int BLOCK_QUOTE = 4;
static const int BLOCK_EXPAND = 5;
static const int BLOCK_NODTEXT = 6;
static const int BLOCK_CODE = 7;
static const int BLOCK_TD = 8;
static const int INLINE_NODTEXT = 9;
static const int INLINE_B = 10;
static const int INLINE_I = 11;
static const int INLINE_U = 12;
static const int INLINE_S = 13;
static const int INLINE_TN = 14;
static const int BLOCK_TN = 15;
static const int BLOCK_TABLE = 16;
static const int BLOCK_THEAD = 17;
static const int BLOCK_TBODY = 18;
static const int BLOCK_TR = 19;
static const int BLOCK_UL = 20;
static const int BLOCK_LI = 21;
static const int BLOCK_TH = 22;
static const int BLOCK_H1 = 23;
static const int BLOCK_H2 = 24;
static const int BLOCK_H3 = 25;
static const int BLOCK_H4 = 26;
static const int BLOCK_H5 = 27;
static const int BLOCK_H6 = 28;
#line 1056 "ext/dtext/dtext.rl"
#line 80 "ext/dtext/dtext.c"
static const short _dtext_to_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 60, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 60, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 60,
0, 60, 0, 60, 0, 60, 0, 0,
0, 0, 0
};
static const short _dtext_from_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 61, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 61, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 61,
0, 61, 0, 61, 0, 61, 0, 0,
0, 0, 0
};
static const int dtext_start = 266;
static const int dtext_first_final = 266;
static const int dtext_error = -1;
static const int dtext_en_inline = 282;
static const int dtext_en_code = 319;
static const int dtext_en_nodtext = 321;
static const int dtext_en_table = 323;
static const int dtext_en_list = 325;
static const int dtext_en_main = 266;
#line 1059 "ext/dtext/dtext.rl"
static inline void underscore_string(char * str, size_t len) {
for (size_t i=0; idstack, (gpointer)element);
}
static inline int * dstack_pop(StateMachine * sm) {
return g_queue_pop_tail(sm->dstack);
}
static inline int * dstack_peek(StateMachine * sm) {
return g_queue_peek_tail(sm->dstack);
}
static inline bool dstack_search(StateMachine * sm, const int * element) {
return g_queue_find(sm->dstack, (gconstpointer)element);
}
static inline bool dstack_check(StateMachine * sm, int expected_element) {
int * top = dstack_peek(sm);
return top && *top == expected_element;
}
static inline bool dstack_check2(StateMachine * sm, int expected_element) {
int * top2 = NULL;
if (sm->dstack->length < 2) {
return false;
}
top2 = g_queue_peek_nth(sm->dstack, sm->dstack->length - 2);
return top2 && *top2 == expected_element;
}
static inline void append(StateMachine * sm, bool is_markup, const char * s) {
if (!(is_markup && sm->f_strip)) {
sm->output = g_string_append(sm->output, s);
}
}
static inline void append_c(StateMachine * sm, char s) {
sm->output = g_string_append_c(sm->output, s);
}
static inline void append_c_html_escaped(StateMachine * sm, char s) {
switch (s) {
case '<':
sm->output = g_string_append(sm->output, "<");
break;
case '>':
sm->output = g_string_append(sm->output, ">");
break;
case '&':
sm->output = g_string_append(sm->output, "&");
break;
case '"':
sm->output = g_string_append(sm->output, """);
break;
default:
sm->output = g_string_append_c(sm->output, s);
break;
}
}
static inline void append_segment(StateMachine * sm, bool is_markup, const char * a, const char * b) {
if (!(is_markup && sm->f_strip)) {
sm->output = g_string_append_len(sm->output, a, b - a + 1);
}
}
static inline void append_segment_uri_escaped(StateMachine * sm, const char * a, const char * b) {
if (sm->f_strip) {
return;
}
char * segment1 = NULL;
char * segment2 = NULL;
GString * segment_string = g_string_new_len(a, b - a + 1);
segment1 = g_uri_escape_string(segment_string->str, NULL, TRUE);
segment2 = g_markup_escape_text(segment1, -1);
sm->output = g_string_append(sm->output, segment2);
g_string_free(segment_string, TRUE);
g_free(segment1);
g_free(segment2);
}
static inline void append_segment_html_escaped(StateMachine * sm, const char * a, const char * b) {
gchar * segment = g_markup_escape_text(a, b - a + 1);
sm->output = g_string_append(sm->output, segment);
g_free(segment);
}
static inline void append_block(StateMachine * sm, const char * s) {
if (sm->f_inline) {
// sm->output = g_string_append_c(sm->output, ' ');
} else if (sm->f_strip) {
// do nothing
} else {
sm->output = g_string_append(sm->output, s);
}
}
static void append_closing_p(StateMachine * sm) {
size_t i = sm->output->len;
if (i > 4 && !strncmp(sm->output->str + i - 4, "
", 4)) {
sm->output = g_string_truncate(sm->output, sm->output->len - 4);
}
if (i > 3 && !strncmp(sm->output->str + i - 3, "", 3)) {
sm->output = g_string_truncate(sm->output, sm->output->len - 3);
return;
}
append_block(sm, "
");
}
static void append_closing_p_if(StateMachine * sm) {
if (!dstack_check(sm, BLOCK_P)) {
return;
}
dstack_pop(sm);
append_closing_p(sm);
}
static void dstack_rewind(StateMachine * sm) {
int * element = dstack_pop(sm);
if (element == NULL) {
return;
}
if (*element == BLOCK_P) {
append_closing_p(sm);
} else if (*element == INLINE_SPOILER) {
append(sm, true, "");
} else if (*element == BLOCK_SPOILER) {
append_block(sm, "");
} else if (*element == BLOCK_QUOTE) {
append_block(sm, "");
} else if (*element == BLOCK_EXPAND) {
append_block(sm, "");
} else if (*element == BLOCK_NODTEXT) {
append_closing_p(sm);
} else if (*element == BLOCK_CODE) {
append_block(sm, "");
} else if (*element == BLOCK_TD) {
append_block(sm, "");
} else if (*element == INLINE_NODTEXT) {
} else if (*element == INLINE_B) {
append(sm, true, "");
} else if (*element == INLINE_I) {
append(sm, true, "");
} else if (*element == INLINE_U) {
append(sm, true, "");
} else if (*element == INLINE_S) {
append(sm, true, "");
} else if (*element == INLINE_TN) {
append(sm, true, "");
} else if (*element == BLOCK_TN) {
append_closing_p(sm);
} else if (*element == BLOCK_TABLE) {
append_block(sm, "");
} else if (*element == BLOCK_THEAD) {
append_block(sm, "");
} else if (*element == BLOCK_TBODY) {
append_block(sm, "");
} else if (*element == BLOCK_TR) {
append_block(sm, "");
} else if (*element == BLOCK_UL) {
append_block(sm, "");
} else if (*element == BLOCK_LI) {
append_block(sm, "");
} else if (*element == BLOCK_H6) {
append_block(sm, "");
} else if (*element == BLOCK_H5) {
append_block(sm, "");
} else if (*element == BLOCK_H4) {
append_block(sm, "");
} else if (*element == BLOCK_H3) {
append_block(sm, "");
} else if (*element == BLOCK_H2) {
append_block(sm, "");
} else if (*element == BLOCK_H1) {
append_block(sm, "");
}
}
static void dstack_close_before_block(StateMachine * sm) {
while (1) {
if (dstack_check(sm, BLOCK_P)) {
dstack_pop(sm);
append_closing_p(sm);
} else if (dstack_check(sm, BLOCK_LI) || dstack_check(sm, BLOCK_UL)) {
dstack_rewind(sm);
} else {
return;
}
}
}
static void dstack_close(StateMachine * sm) {
while (dstack_peek(sm) != NULL) {
dstack_rewind(sm);
}
}
static void dstack_close_list(StateMachine * sm) {
while (dstack_check(sm, BLOCK_LI) || dstack_check(sm, BLOCK_UL)) {
dstack_rewind(sm);
}
sm->list_mode = false;
sm->list_nest = 0;
}
static inline bool is_boundary_c(char c) {
switch (c) {
case ':':
case ';':
case '.':
case ',':
case '!':
case '?':
case ')':
case ']':
case '<':
case '>':
return true;
}
return false;
}
static bool print_machine(StateMachine * sm) {
printf("p=%c\n", *sm->p);
return true;
}
static void init_machine(StateMachine * sm, const char * src, size_t len) {
size_t output_length = 0;
sm->p = src;
sm->pb = sm->p;
sm->pe = sm->p + len;
sm->eof = sm->pe;
sm->ts = NULL;
sm->te = NULL;
sm->cs = 0;
sm->act = 0;
sm->top = 0;
output_length = len;
if (output_length < (INT16_MAX / 2)) {
output_length *= 2;
}
sm->output = g_string_sized_new(output_length);
sm->a1 = NULL;
sm->a2 = NULL;
sm->b1 = NULL;
sm->b2 = NULL;
sm->f_inline = false;
sm->f_strip = false;
sm->f_mentions = true;
sm->stack = g_array_sized_new(FALSE, TRUE, sizeof(int), 16);
sm->dstack = g_queue_new();
sm->list_nest = 0;
sm->list_mode = false;
sm->header_mode = false;
sm->d = 0;
sm->b = 0;
sm->quote = 0;
}
static void free_machine(StateMachine * sm) {
g_string_free(sm->output, TRUE);
g_array_free(sm->stack, FALSE);
g_queue_free(sm->dstack);
g_free(sm);
}
static StateMachine * parse_helper(const char * src, size_t len, bool f_strip, bool f_inline, bool f_mentions) {
StateMachine * sm = NULL;
StateMachine * link_content_sm = NULL;
sm = (StateMachine *)g_malloc0(sizeof(StateMachine));
init_machine(sm, src, len);
sm->f_strip = f_strip;
sm->f_inline = f_inline;
sm->f_mentions = f_mentions;
#line 513 "ext/dtext/dtext.c"
{
sm->cs = dtext_start;
( sm->top) = 0;
( sm->ts) = 0;
( sm->te) = 0;
( sm->act) = 0;
}
#line 1388 "ext/dtext/dtext.rl"
#line 524 "ext/dtext/dtext.c"
{
if ( ( sm->p) == ( sm->pe) )
goto _test_eof;
_resume:
switch ( _dtext_from_state_actions[ sm->cs] ) {
case 61:
#line 1 "NONE"
{( sm->ts) = ( sm->p);}
break;
#line 534 "ext/dtext/dtext.c"
}
switch ( sm->cs ) {
case 266:
switch( (*( sm->p)) ) {
case 0: goto tr319;
case 10: goto tr320;
case 13: goto tr321;
case 42: goto tr322;
case 72: goto tr323;
case 91: goto tr324;
case 104: goto tr323;
}
goto tr318;
case 267:
switch( (*( sm->p)) ) {
case 10: goto tr1;
case 13: goto tr325;
}
goto tr0;
case 0:
if ( (*( sm->p)) == 10 )
goto tr1;
goto tr0;
case 268:
if ( (*( sm->p)) == 10 )
goto tr320;
goto tr326;
case 269:
switch( (*( sm->p)) ) {
case 9: goto tr5;
case 32: goto tr5;
case 42: goto tr6;
}
goto tr326;
case 1:
switch( (*( sm->p)) ) {
case 0: goto tr2;
case 9: goto tr4;
case 10: goto tr2;
case 13: goto tr2;
case 32: goto tr4;
}
goto tr3;
case 270:
switch( (*( sm->p)) ) {
case 0: goto tr327;
case 10: goto tr327;
case 13: goto tr327;
}
goto tr328;
case 271:
switch( (*( sm->p)) ) {
case 0: goto tr327;
case 9: goto tr4;
case 10: goto tr327;
case 13: goto tr327;
case 32: goto tr4;
}
goto tr3;
case 2:
switch( (*( sm->p)) ) {
case 9: goto tr5;
case 32: goto tr5;
case 42: goto tr6;
}
goto tr2;
case 272:
if ( 49 <= (*( sm->p)) && (*( sm->p)) <= 54 )
goto tr329;
goto tr326;
case 3:
switch( (*( sm->p)) ) {
case 35: goto tr7;
case 46: goto tr8;
}
goto tr2;
case 4:
if ( (*( sm->p)) == 33 )
goto tr9;
if ( (*( sm->p)) > 45 ) {
if ( 47 <= (*( sm->p)) && (*( sm->p)) <= 126 )
goto tr9;
} else if ( (*( sm->p)) >= 35 )
goto tr9;
goto tr2;
case 5:
switch( (*( sm->p)) ) {
case 33: goto tr10;
case 46: goto tr11;
}
if ( 35 <= (*( sm->p)) && (*( sm->p)) <= 126 )
goto tr10;
goto tr2;
case 273:
switch( (*( sm->p)) ) {
case 9: goto tr331;
case 32: goto tr331;
}
goto tr330;
case 274:
switch( (*( sm->p)) ) {
case 9: goto tr333;
case 32: goto tr333;
}
goto tr332;
case 275:
switch( (*( sm->p)) ) {
case 47: goto tr334;
case 67: goto tr335;
case 69: goto tr336;
case 78: goto tr337;
case 81: goto tr338;
case 83: goto tr339;
case 84: goto tr340;
case 99: goto tr335;
case 101: goto tr336;
case 110: goto tr337;
case 113: goto tr338;
case 115: goto tr339;
case 116: goto tr340;
}
goto tr326;
case 6:
switch( (*( sm->p)) ) {
case 83: goto tr12;
case 115: goto tr12;
}
goto tr2;
case 7:
switch( (*( sm->p)) ) {
case 80: goto tr13;
case 112: goto tr13;
}
goto tr2;
case 8:
switch( (*( sm->p)) ) {
case 79: goto tr14;
case 111: goto tr14;
}
goto tr2;
case 9:
switch( (*( sm->p)) ) {
case 73: goto tr15;
case 105: goto tr15;
}
goto tr2;
case 10:
switch( (*( sm->p)) ) {
case 76: goto tr16;
case 108: goto tr16;
}
goto tr2;
case 11:
switch( (*( sm->p)) ) {
case 69: goto tr17;
case 101: goto tr17;
}
goto tr2;
case 12:
switch( (*( sm->p)) ) {
case 82: goto tr18;
case 114: goto tr18;
}
goto tr2;
case 13:
switch( (*( sm->p)) ) {
case 83: goto tr19;
case 93: goto tr20;
case 115: goto tr19;
}
goto tr2;
case 14:
if ( (*( sm->p)) == 93 )
goto tr20;
goto tr2;
case 15:
switch( (*( sm->p)) ) {
case 79: goto tr21;
case 111: goto tr21;
}
goto tr2;
case 16:
switch( (*( sm->p)) ) {
case 68: goto tr22;
case 100: goto tr22;
}
goto tr2;
case 17:
switch( (*( sm->p)) ) {
case 69: goto tr23;
case 101: goto tr23;
}
goto tr2;
case 18:
if ( (*( sm->p)) == 93 )
goto tr24;
goto tr2;
case 276:
if ( (*( sm->p)) == 32 )
goto tr24;
if ( 9 <= (*( sm->p)) && (*( sm->p)) <= 13 )
goto tr24;
goto tr341;
case 19:
switch( (*( sm->p)) ) {
case 88: goto tr25;
case 120: goto tr25;
}
goto tr2;
case 20:
switch( (*( sm->p)) ) {
case 80: goto tr26;
case 112: goto tr26;
}
goto tr2;
case 21:
switch( (*( sm->p)) ) {
case 65: goto tr27;
case 97: goto tr27;
}
goto tr2;
case 22:
switch( (*( sm->p)) ) {
case 78: goto tr28;
case 110: goto tr28;
}
goto tr2;
case 23:
switch( (*( sm->p)) ) {
case 68: goto tr29;
case 100: goto tr29;
}
goto tr2;
case 24:
switch( (*( sm->p)) ) {
case 61: goto tr30;
case 93: goto tr31;
}
goto tr2;
case 25:
if ( (*( sm->p)) == 93 )
goto tr2;
goto tr32;
case 26:
if ( (*( sm->p)) == 93 )
goto tr34;
goto tr33;
case 277:
if ( (*( sm->p)) == 32 )
goto tr343;
if ( 9 <= (*( sm->p)) && (*( sm->p)) <= 13 )
goto tr343;
goto tr342;
case 278:
if ( (*( sm->p)) == 32 )
goto tr31;
if ( 9 <= (*( sm->p)) && (*( sm->p)) <= 13 )
goto tr31;
goto tr344;
case 27:
switch( (*( sm->p)) ) {
case 79: goto tr35;
case 111: goto tr35;
}
goto tr2;
case 28:
switch( (*( sm->p)) ) {
case 68: goto tr36;
case 100: goto tr36;
}
goto tr2;
case 29:
switch( (*( sm->p)) ) {
case 84: goto tr37;
case 116: goto tr37;
}
goto tr2;
case 30:
switch( (*( sm->p)) ) {
case 69: goto tr38;
case 101: goto tr38;
}
goto tr2;
case 31:
switch( (*( sm->p)) ) {
case 88: goto tr39;
case 120: goto tr39;
}
goto tr2;
case 32:
switch( (*( sm->p)) ) {
case 84: goto tr40;
case 116: goto tr40;
}
goto tr2;
case 33:
if ( (*( sm->p)) == 93 )
goto tr41;
goto tr2;
case 279:
if ( (*( sm->p)) == 32 )
goto tr41;
if ( 9 <= (*( sm->p)) && (*( sm->p)) <= 13 )
goto tr41;
goto tr345;
case 34:
switch( (*( sm->p)) ) {
case 85: goto tr42;
case 117: goto tr42;
}
goto tr2;
case 35:
switch( (*( sm->p)) ) {
case 79: goto tr43;
case 111: goto tr43;
}
goto tr2;
case 36:
switch( (*( sm->p)) ) {
case 84: goto tr44;
case 116: goto tr44;
}
goto tr2;
case 37:
switch( (*( sm->p)) ) {
case 69: goto tr45;
case 101: goto tr45;
}
goto tr2;
case 38:
if ( (*( sm->p)) == 93 )
goto tr46;
goto tr2;
case 280:
if ( (*( sm->p)) == 32 )
goto tr46;
if ( 9 <= (*( sm->p)) && (*( sm->p)) <= 13 )
goto tr46;
goto tr346;
case 39:
switch( (*( sm->p)) ) {
case 80: goto tr47;
case 112: goto tr47;
}
goto tr2;
case 40:
switch( (*( sm->p)) ) {
case 79: goto tr48;
case 111: goto tr48;
}
goto tr2;
case 41:
switch( (*( sm->p)) ) {
case 73: goto tr49;
case 105: goto tr49;
}
goto tr2;
case 42:
switch( (*( sm->p)) ) {
case 76: goto tr50;
case 108: goto tr50;
}
goto tr2;
case 43:
switch( (*( sm->p)) ) {
case 69: goto tr51;
case 101: goto tr51;
}
goto tr2;
case 44:
switch( (*( sm->p)) ) {
case 82: goto tr52;
case 114: goto tr52;
}
goto tr2;
case 45:
switch( (*( sm->p)) ) {
case 83: goto tr53;
case 93: goto tr54;
case 115: goto tr53;
}
goto tr2;
case 46:
if ( (*( sm->p)) == 93 )
goto tr54;
goto tr2;
case 281:
if ( (*( sm->p)) == 32 )
goto tr54;
if ( 9 <= (*( sm->p)) && (*( sm->p)) <= 13 )
goto tr54;
goto tr347;
case 47:
switch( (*( sm->p)) ) {
case 65: goto tr55;
case 78: goto tr56;
case 97: goto tr55;
case 110: goto tr56;
}
goto tr2;
case 48:
switch( (*( sm->p)) ) {
case 66: goto tr57;
case 98: goto tr57;
}
goto tr2;
case 49:
switch( (*( sm->p)) ) {
case 76: goto tr58;
case 108: goto tr58;
}
goto tr2;
case 50:
switch( (*( sm->p)) ) {
case 69: goto tr59;
case 101: goto tr59;
}
goto tr2;
case 51:
if ( (*( sm->p)) == 93 )
goto tr60;
goto tr2;
case 52:
if ( (*( sm->p)) == 93 )
goto tr61;
goto tr2;
case 282:
switch( (*( sm->p)) ) {
case 0: goto tr349;
case 10: goto tr350;
case 13: goto tr351;
case 34: goto tr352;
case 64: goto tr353;
case 65: goto tr354;
case 67: goto tr355;
case 70: goto tr356;
case 72: goto tr357;
case 73: goto tr358;
case 80: goto tr359;
case 84: goto tr360;
case 85: goto tr361;
case 91: goto tr362;
case 97: goto tr354;
case 99: goto tr355;
case 102: goto tr356;
case 104: goto tr363;
case 105: goto tr358;
case 112: goto tr359;
case 116: goto tr360;
case 117: goto tr361;
case 123: goto tr364;
}
goto tr348;
case 283:
switch( (*( sm->p)) ) {
case 10: goto tr63;
case 13: goto tr366;
case 42: goto tr367;
}
goto tr365;
case 284:
switch( (*( sm->p)) ) {
case 10: goto tr63;
case 13: goto tr366;
}
goto tr368;
case 53:
if ( (*( sm->p)) == 10 )
goto tr63;
goto tr62;
case 54:
switch( (*( sm->p)) ) {
case 9: goto tr65;
case 32: goto tr65;
case 42: goto tr66;
}
goto tr64;
case 55:
switch( (*( sm->p)) ) {
case 0: goto tr64;
case 9: goto tr68;
case 10: goto tr64;
case 13: goto tr64;
case 32: goto tr68;
}
goto tr67;
case 285:
switch( (*( sm->p)) ) {
case 0: goto tr369;
case 10: goto tr369;
case 13: goto tr369;
}
goto tr370;
case 286:
switch( (*( sm->p)) ) {
case 0: goto tr369;
case 9: goto tr68;
case 10: goto tr369;
case 13: goto tr369;
case 32: goto tr68;
}
goto tr67;
case 287:
if ( (*( sm->p)) == 10 )
goto tr350;
goto tr371;
case 288:
if ( (*( sm->p)) == 34 )
goto tr372;
goto tr373;
case 56:
if ( (*( sm->p)) == 34 )
goto tr71;
goto tr70;
case 57:
if ( (*( sm->p)) == 58 )
goto tr72;
goto tr69;
case 58:
switch( (*( sm->p)) ) {
case 47: goto tr73;
case 91: goto tr74;
case 104: goto tr75;
}
goto tr69;
case 59:
if ( (*( sm->p)) < -32 ) {
if ( -62 <= (*( sm->p)) && (*( sm->p)) <= -33 )
goto tr76;
} else if ( (*( sm->p)) > -17 ) {
if ( (*( sm->p)) > -12 ) {
if ( 33 <= (*( sm->p)) && (*( sm->p)) <= 126 )
goto tr79;
} else if ( (*( sm->p)) >= -16 )
goto tr78;
} else
goto tr77;
goto tr69;
case 60:
if ( (*( sm->p)) <= -65 )
goto tr79;
goto tr62;
case 289:
if ( (*( sm->p)) < -32 ) {
if ( -62 <= (*( sm->p)) && (*( sm->p)) <= -33 )
goto tr76;
} else if ( (*( sm->p)) > -17 ) {
if ( (*( sm->p)) > -12 ) {
if ( 33 <= (*( sm->p)) && (*( sm->p)) <= 126 )
goto tr79;
} else if ( (*( sm->p)) >= -16 )
goto tr78;
} else
goto tr77;
goto tr374;
case 61:
if ( (*( sm->p)) <= -65 )
goto tr76;
goto tr62;
case 62:
if ( (*( sm->p)) <= -65 )
goto tr77;
goto tr62;
case 63:
switch( (*( sm->p)) ) {
case 47: goto tr80;
case 104: goto tr81;
}
goto tr69;
case 64:
if ( (*( sm->p)) < -32 ) {
if ( -62 <= (*( sm->p)) && (*( sm->p)) <= -33 )
goto tr82;
} else if ( (*( sm->p)) > -17 ) {
if ( (*( sm->p)) > -12 ) {
if ( 33 <= (*( sm->p)) && (*( sm->p)) <= 126 )
goto tr85;
} else if ( (*( sm->p)) >= -16 )
goto tr84;
} else
goto tr83;
goto tr69;
case 65:
if ( (*( sm->p)) <= -65 )
goto tr85;
goto tr69;
case 66:
if ( (*( sm->p)) == 93 )
goto tr86;
if ( (*( sm->p)) < -32 ) {
if ( -62 <= (*( sm->p)) && (*( sm->p)) <= -33 )
goto tr82;
} else if ( (*( sm->p)) > -17 ) {
if ( (*( sm->p)) > -12 ) {
if ( 33 <= (*( sm->p)) && (*( sm->p)) <= 126 )
goto tr85;
} else if ( (*( sm->p)) >= -16 )
goto tr84;
} else
goto tr83;
goto tr69;
case 67:
if ( (*( sm->p)) <= -65 )
goto tr82;
goto tr69;
case 68:
if ( (*( sm->p)) <= -65 )
goto tr83;
goto tr69;
case 69:
if ( (*( sm->p)) == 116 )
goto tr87;
goto tr69;
case 70:
if ( (*( sm->p)) == 116 )
goto tr88;
goto tr69;
case 71:
if ( (*( sm->p)) == 112 )
goto tr89;
goto tr69;
case 72:
switch( (*( sm->p)) ) {
case 58: goto tr90;
case 115: goto tr91;
}
goto tr69;
case 73:
if ( (*( sm->p)) == 47 )
goto tr92;
goto tr69;
case 74:
if ( (*( sm->p)) == 47 )
goto tr93;
goto tr69;
case 75:
if ( (*( sm->p)) == 58 )
goto tr90;
goto tr69;
case 76:
if ( (*( sm->p)) == 116 )
goto tr94;
goto tr69;
case 77:
if ( (*( sm->p)) == 116 )
goto tr95;
goto tr69;
case 78:
if ( (*( sm->p)) == 112 )
goto tr96;
goto tr69;
case 79:
switch( (*( sm->p)) ) {
case 58: goto tr97;
case 115: goto tr98;
}
goto tr69;
case 80:
if ( (*( sm->p)) == 47 )
goto tr99;
goto tr69;
case 81:
if ( (*( sm->p)) == 47 )
goto tr100;
goto tr69;
case 82:
if ( (*( sm->p)) == 58 )
goto tr97;
goto tr69;
case 290:
if ( (*( sm->p)) < -32 ) {
if ( -62 <= (*( sm->p)) && (*( sm->p)) <= -33 )
goto tr375;
} else if ( (*( sm->p)) > -17 ) {
if ( (*( sm->p)) > -12 ) {
if ( 33 <= (*( sm->p)) && (*( sm->p)) <= 126 )
goto tr378;
} else if ( (*( sm->p)) >= -16 )
goto tr377;
} else
goto tr376;
goto tr372;
case 83:
if ( (*( sm->p)) <= -65 )
goto tr101;
goto tr62;
case 291:
if ( (*( sm->p)) < -32 ) {
if ( -62 <= (*( sm->p)) && (*( sm->p)) <= -33 )
goto tr102;
} else if ( (*( sm->p)) > -17 ) {
if ( (*( sm->p)) > -12 ) {
if ( 33 <= (*( sm->p)) && (*( sm->p)) <= 126 )
goto tr101;
} else if ( (*( sm->p)) >= -16 )
goto tr380;
} else
goto tr103;
goto tr379;
case 84:
if ( (*( sm->p)) <= -65 )
goto tr102;
goto tr62;
case 85:
if ( (*( sm->p)) <= -65 )
goto tr103;
goto tr62;
case 292:
if ( (*( sm->p)) == 64 )
goto tr382;
if ( (*( sm->p)) < -32 ) {
if ( -62 <= (*( sm->p)) && (*( sm->p)) <= -33 )
goto tr102;
} else if ( (*( sm->p)) > -17 ) {
if ( (*( sm->p)) > -12 ) {
if ( 33 <= (*( sm->p)) && (*( sm->p)) <= 126 )
goto tr101;
} else if ( (*( sm->p)) >= -16 )
goto tr380;
} else
goto tr103;
goto tr381;
case 293:
switch( (*( sm->p)) ) {
case 82: goto tr383;
case 114: goto tr383;
}
goto tr372;
case 86:
switch( (*( sm->p)) ) {
case 84: goto tr104;
case 116: goto tr104;
}
goto tr69;
case 87:
switch( (*( sm->p)) ) {
case 73: goto tr105;
case 105: goto tr105;
}
goto tr69;
case 88:
switch( (*( sm->p)) ) {
case 83: goto tr106;
case 115: goto tr106;
}
goto tr69;
case 89:
switch( (*( sm->p)) ) {
case 84: goto tr107;
case 116: goto tr107;
}
goto tr69;
case 90:
if ( (*( sm->p)) == 32 )
goto tr108;
goto tr69;
case 91:
if ( (*( sm->p)) == 35 )
goto tr109;
goto tr69;
case 92:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr110;
goto tr69;
case 294:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr385;
goto tr384;
case 295:
switch( (*( sm->p)) ) {
case 79: goto tr386;
case 111: goto tr386;
}
goto tr372;
case 93:
switch( (*( sm->p)) ) {
case 77: goto tr111;
case 109: goto tr111;
}
goto tr69;
case 94:
switch( (*( sm->p)) ) {
case 77: goto tr112;
case 109: goto tr112;
}
goto tr69;
case 95:
switch( (*( sm->p)) ) {
case 69: goto tr113;
case 101: goto tr113;
}
goto tr69;
case 96:
switch( (*( sm->p)) ) {
case 78: goto tr114;
case 110: goto tr114;
}
goto tr69;
case 97:
switch( (*( sm->p)) ) {
case 84: goto tr115;
case 116: goto tr115;
}
goto tr69;
case 98:
if ( (*( sm->p)) == 32 )
goto tr116;
goto tr69;
case 99:
if ( (*( sm->p)) == 35 )
goto tr117;
goto tr69;
case 100:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr118;
goto tr69;
case 296:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr388;
goto tr387;
case 297:
switch( (*( sm->p)) ) {
case 79: goto tr389;
case 111: goto tr389;
}
goto tr372;
case 101:
switch( (*( sm->p)) ) {
case 82: goto tr119;
case 114: goto tr119;
}
goto tr69;
case 102:
switch( (*( sm->p)) ) {
case 85: goto tr120;
case 117: goto tr120;
}
goto tr69;
case 103:
switch( (*( sm->p)) ) {
case 77: goto tr121;
case 109: goto tr121;
}
goto tr69;
case 104:
if ( (*( sm->p)) == 32 )
goto tr122;
goto tr69;
case 105:
if ( (*( sm->p)) == 35 )
goto tr123;
goto tr69;
case 106:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr124;
goto tr69;
case 298:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr391;
goto tr390;
case 299:
if ( 49 <= (*( sm->p)) && (*( sm->p)) <= 54 )
goto tr392;
goto tr372;
case 107:
switch( (*( sm->p)) ) {
case 35: goto tr125;
case 46: goto tr126;
}
goto tr69;
case 108:
if ( (*( sm->p)) == 33 )
goto tr127;
if ( (*( sm->p)) > 45 ) {
if ( 47 <= (*( sm->p)) && (*( sm->p)) <= 126 )
goto tr127;
} else if ( (*( sm->p)) >= 35 )
goto tr127;
goto tr69;
case 109:
switch( (*( sm->p)) ) {
case 33: goto tr128;
case 46: goto tr129;
}
if ( 35 <= (*( sm->p)) && (*( sm->p)) <= 126 )
goto tr128;
goto tr69;
case 300:
switch( (*( sm->p)) ) {
case 9: goto tr394;
case 32: goto tr394;
}
goto tr393;
case 301:
switch( (*( sm->p)) ) {
case 9: goto tr396;
case 32: goto tr396;
}
goto tr395;
case 302:
switch( (*( sm->p)) ) {
case 83: goto tr397;
case 115: goto tr397;
}
goto tr372;
case 110:
switch( (*( sm->p)) ) {
case 83: goto tr130;
case 115: goto tr130;
}
goto tr69;
case 111:
switch( (*( sm->p)) ) {
case 85: goto tr131;
case 117: goto tr131;
}
goto tr69;
case 112:
switch( (*( sm->p)) ) {
case 69: goto tr132;
case 101: goto tr132;
}
goto tr69;
case 113:
if ( (*( sm->p)) == 32 )
goto tr133;
goto tr69;
case 114:
if ( (*( sm->p)) == 35 )
goto tr134;
goto tr69;
case 115:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr135;
goto tr69;
case 303:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr399;
goto tr398;
case 304:
switch( (*( sm->p)) ) {
case 73: goto tr400;
case 79: goto tr401;
case 105: goto tr400;
case 111: goto tr401;
}
goto tr372;
case 116:
switch( (*( sm->p)) ) {
case 88: goto tr136;
case 120: goto tr136;
}
goto tr69;
case 117:
switch( (*( sm->p)) ) {
case 73: goto tr137;
case 105: goto tr137;
}
goto tr69;
case 118:
switch( (*( sm->p)) ) {
case 86: goto tr138;
case 118: goto tr138;
}
goto tr69;
case 119:
if ( (*( sm->p)) == 32 )
goto tr139;
goto tr69;
case 120:
if ( (*( sm->p)) == 35 )
goto tr140;
goto tr69;
case 121:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr141;
goto tr69;
case 305:
if ( (*( sm->p)) == 47 )
goto tr403;
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr404;
goto tr402;
case 122:
if ( (*( sm->p)) == 112 )
goto tr143;
goto tr142;
case 123:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr144;
goto tr142;
case 306:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr406;
goto tr405;
case 124:
switch( (*( sm->p)) ) {
case 79: goto tr145;
case 83: goto tr146;
case 111: goto tr145;
case 115: goto tr146;
}
goto tr69;
case 125:
switch( (*( sm->p)) ) {
case 76: goto tr147;
case 108: goto tr147;
}
goto tr69;
case 126:
if ( (*( sm->p)) == 32 )
goto tr148;
goto tr69;
case 127:
if ( (*( sm->p)) == 35 )
goto tr149;
goto tr69;
case 128:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr150;
goto tr69;
case 307:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr408;
goto tr407;
case 129:
switch( (*( sm->p)) ) {
case 84: goto tr151;
case 116: goto tr151;
}
goto tr69;
case 130:
if ( (*( sm->p)) == 32 )
goto tr152;
goto tr69;
case 131:
if ( (*( sm->p)) == 35 )
goto tr153;
goto tr69;
case 132:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr154;
goto tr69;
case 308:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr410;
goto tr409;
case 309:
switch( (*( sm->p)) ) {
case 79: goto tr411;
case 111: goto tr411;
}
goto tr372;
case 133:
switch( (*( sm->p)) ) {
case 80: goto tr155;
case 112: goto tr155;
}
goto tr69;
case 134:
switch( (*( sm->p)) ) {
case 73: goto tr156;
case 105: goto tr156;
}
goto tr69;
case 135:
switch( (*( sm->p)) ) {
case 67: goto tr157;
case 99: goto tr157;
}
goto tr69;
case 136:
if ( (*( sm->p)) == 32 )
goto tr158;
goto tr69;
case 137:
if ( (*( sm->p)) == 35 )
goto tr159;
goto tr69;
case 138:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr160;
goto tr69;
case 310:
if ( (*( sm->p)) == 47 )
goto tr413;
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr414;
goto tr412;
case 139:
if ( (*( sm->p)) == 112 )
goto tr162;
goto tr161;
case 140:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr163;
goto tr161;
case 311:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr416;
goto tr415;
case 312:
switch( (*( sm->p)) ) {
case 83: goto tr417;
case 115: goto tr417;
}
goto tr372;
case 141:
switch( (*( sm->p)) ) {
case 69: goto tr164;
case 101: goto tr164;
}
goto tr69;
case 142:
switch( (*( sm->p)) ) {
case 82: goto tr165;
case 114: goto tr165;
}
goto tr69;
case 143:
if ( (*( sm->p)) == 32 )
goto tr166;
goto tr69;
case 144:
if ( (*( sm->p)) == 35 )
goto tr167;
goto tr69;
case 145:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr168;
goto tr69;
case 313:
if ( 48 <= (*( sm->p)) && (*( sm->p)) <= 57 )
goto tr419;
goto tr418;
case 314:
switch( (*( sm->p)) ) {
case 47: goto tr420;
case 66: goto tr421;
case 69: goto tr422;
case 73: goto tr423;
case 78: goto tr424;
case 81: goto tr425;
case 83: goto tr426;
case 84: goto tr427;
case 85: goto tr428;
case 91: goto tr429;
case 98: goto tr421;
case 101: goto tr422;
case 105: goto tr423;
case 110: goto tr424;
case 113: goto tr425;
case 115: goto tr426;
case 116: goto tr427;
case 117: goto tr428;
}
goto tr372;
case 146:
switch( (*( sm->p)) ) {
case 66: goto tr169;
case 69: goto tr170;
case 73: goto tr171;
case 81: goto tr172;
case 83: goto tr173;
case 84: goto tr174;
case 85: goto tr175;
case 98: goto tr169;
case 101: goto tr170;
case 105: goto tr171;
case 113: goto tr172;
case 115: goto tr173;
case 116: goto tr174;
case 117: goto tr175;
}
goto tr69;
case 147:
if ( (*( sm->p)) == 93 )
goto tr176;
goto tr69;
case 148:
switch( (*( sm->p)) ) {
case 88: goto tr177;
case 120: goto tr177;
}
goto tr69;
case 149:
switch( (*( sm->p)) ) {
case 80: goto tr178;
case 112: goto tr178;
}
goto tr69;
case 150:
switch( (*( sm->p)) ) {
case 65: goto tr179;
case 97: goto tr179;
}
goto tr69;
case 151:
switch( (*( sm->p)) ) {
case 78: goto tr180;
case 110: goto tr180;
}
goto tr69;
case 152:
switch( (*( sm->p)) ) {
case 68: goto tr181;
case 100: goto tr181;
}
goto tr69;
case 153:
if ( (*( sm->p)) == 93 )
goto tr182;
goto tr69;
case 154:
if ( (*( sm->p)) == 93 )
goto tr183;
goto tr69;
case 155:
switch( (*( sm->p)) ) {
case 85: goto tr184;
case 117: goto tr184;
}
goto tr69;
case 156:
switch( (*( sm->p)) ) {
case 79: goto tr185;
case 111: goto tr185;
}
goto tr69;
case 157:
switch( (*( sm->p)) ) {
case 84: goto tr186;
case 116: goto tr186;
}
goto tr69;
case 158:
switch( (*( sm->p)) ) {
case 69: goto tr187;
case 101: goto tr187;
}
goto tr69;
case 159:
if ( (*( sm->p)) == 93 )
goto tr188;
goto tr69;
case 315:
if ( (*( sm->p)) == 32 )
goto tr188;
if ( 9 <= (*( sm->p)) && (*( sm->p)) <= 13 )
goto tr188;
goto tr430;
case 160:
switch( (*( sm->p)) ) {
case 80: goto tr189;
case 93: goto tr190;
case 112: goto tr189;
}
goto tr69;
case 161:
switch( (*( sm->p)) ) {
case 79: goto tr191;
case 111: goto tr191;
}
goto tr69;
case 162:
switch( (*( sm->p)) ) {
case 73: goto tr192;
case 105: goto tr192;
}
goto tr69;
case 163:
switch( (*( sm->p)) ) {
case 76: goto tr193;
case 108: goto tr193;
}
goto tr69;
case 164:
switch( (*( sm->p)) ) {
case 69: goto tr194;
case 101: goto tr194;
}
goto tr69;
case 165:
switch( (*( sm->p)) ) {
case 82: goto tr195;
case 114: goto tr195;
}
goto tr69;
case 166:
switch( (*( sm->p)) ) {
case 83: goto tr196;
case 93: goto tr197;
case 115: goto tr196;
}
goto tr69;
case 167:
if ( (*( sm->p)) == 93 )
goto tr197;
goto tr69;
case 168:
switch( (*( sm->p)) ) {
case 68: goto tr198;
case 72: goto tr199;
case 78: goto tr200;
case 100: goto tr198;
case 104: goto tr199;
case 110: goto tr200;
}
goto tr69;
case 169:
if ( (*( sm->p)) == 93 )
goto tr201;
goto tr69;
case 170:
if ( (*( sm->p)) == 93 )
goto tr202;
goto tr69;
case 171:
if ( (*( sm->p)) == 93 )
goto tr203;
goto tr69;
case 172:
if ( (*( sm->p)) == 93 )
goto tr204;
goto tr69;
case 173:
if ( (*( sm->p)) == 93 )
goto tr205;
goto tr69;
case 174:
switch( (*( sm->p)) ) {
case 88: goto tr206;
case 120: goto tr206;
}
goto tr69;
case 175:
switch( (*( sm->p)) ) {
case 80: goto tr207;
case 112: goto tr207;
}
goto tr69;
case 176:
switch( (*( sm->p)) ) {
case 65: goto tr208;
case 97: goto tr208;
}
goto tr69;
case 177:
switch( (*( sm->p)) ) {
case 78: goto tr209;
case 110: goto tr209;
}
goto tr69;
case 178:
switch( (*( sm->p)) ) {
case 68: goto tr210;
case 100: goto tr210;
}
goto tr69;
case 179:
if ( (*( sm->p)) == 93 )
goto tr211;
goto tr69;
case 180:
if ( (*( sm->p)) == 93 )
goto tr212;
goto tr69;
case 181:
switch( (*( sm->p)) ) {
case 79: goto tr213;
case 111: goto tr213;
}
goto tr69;
case 182:
switch( (*( sm->p)) ) {
case 68: goto tr214;
case 100: goto tr214;
}
goto tr69;
case 183:
switch( (*( sm->p)) ) {
case 84: goto tr215;
case 116: goto tr215;
}
goto tr69;
case 184:
switch( (*( sm->p)) ) {
case 69: goto tr216;
case 101: goto tr216;
}
goto tr69;
case 185:
switch( (*( sm->p)) ) {
case 88: goto tr217;
case 120: goto tr217;
}
goto tr69;
case 186:
switch( (*( sm->p)) ) {
case 84: goto tr218;
case 116: goto tr218;
}
goto tr69;
case 187:
if ( (*( sm->p)) == 93 )
goto tr219;
goto tr69;
case 188:
switch( (*( sm->p)) ) {
case 85: goto tr220;
case 117: goto tr220;
}
goto tr69;
case 189:
switch( (*( sm->p)) ) {
case 79: goto tr221;
case 111: goto tr221;
}
goto tr69;
case 190:
switch( (*( sm->p)) ) {
case 84: goto tr222;
case 116: goto tr222;
}
goto tr69;
case 191:
switch( (*( sm->p)) ) {
case 69: goto tr223;
case 101: goto tr223;
}
goto tr69;
case 192:
if ( (*( sm->p)) == 93 )
goto tr224;
goto tr69;
case 193:
switch( (*( sm->p)) ) {
case 80: goto tr225;
case 93: goto tr226;
case 112: goto tr225;
}
goto tr69;
case 194:
switch( (*( sm->p)) ) {
case 79: goto tr227;
case 111: goto tr227;
}
goto tr69;
case 195:
switch( (*( sm->p)) ) {
case 73: goto tr228;
case 105: goto tr228;
}
goto tr69;
case 196:
switch( (*( sm->p)) ) {
case 76: goto tr229;
case 108: goto tr229;
}
goto tr69;
case 197:
switch( (*( sm->p)) ) {
case 69: goto tr230;
case 101: goto tr230;
}
goto tr69;
case 198:
switch( (*( sm->p)) ) {
case 82: goto tr231;
case 114: goto tr231;
}
goto tr69;
case 199:
switch( (*( sm->p)) ) {
case 83: goto tr232;
case 93: goto tr233;
case 115: goto tr232;
}
goto tr69;
case 200:
if ( (*( sm->p)) == 93 )
goto tr233;
goto tr69;
case 201:
switch( (*( sm->p)) ) {
case 78: goto tr234;
case 110: goto tr234;
}
goto tr69;
case 202:
if ( (*( sm->p)) == 93 )
goto tr235;
goto tr69;
case 203:
if ( (*( sm->p)) == 93 )
goto tr236;
goto tr69;
case 204:
switch( (*( sm->p)) ) {
case 93: goto tr69;
case 124: goto tr238;
}
goto tr237;
case 205:
switch( (*( sm->p)) ) {
case 93: goto tr240;
case 124: goto tr241;
}
goto tr239;
case 206:
if ( (*( sm->p)) == 93 )
goto tr242;
goto tr69;
case 207:
switch( (*( sm->p)) ) {
case 93: goto tr69;
case 124: goto tr69;
}
goto tr243;
case 208:
switch( (*( sm->p)) ) {
case 93: goto tr245;
case 124: goto tr69;
}
goto tr244;
case 209:
if ( (*( sm->p)) == 93 )
goto tr246;
goto tr69;
case 210:
switch( (*( sm->p)) ) {
case 93: goto tr240;
case 124: goto tr69;
}
goto tr247;
case 316:
if ( (*( sm->p)) == 116 )
goto tr431;
if ( 49 <= (*( sm->p)) && (*( sm->p)) <= 54 )
goto tr392;
goto tr372;
case 211:
if ( (*( sm->p)) == 116 )
goto tr248;
goto tr69;
case 212:
if ( (*( sm->p)) == 112 )
goto tr249;
goto tr69;
case 213:
switch( (*( sm->p)) ) {
case 58: goto tr250;
case 115: goto tr251;
}
goto tr69;
case 214:
if ( (*( sm->p)) == 47 )
goto tr252;
goto tr69;
case 215:
if ( (*( sm->p)) == 47 )
goto tr253;
goto tr69;
case 216:
if ( (*( sm->p)) < -32 ) {
if ( -62 <= (*( sm->p)) && (*( sm->p)) <= -33 )
goto tr254;
} else if ( (*( sm->p)) > -17 ) {
if ( (*( sm->p)) > -12 ) {
if ( 33 <= (*( sm->p)) && (*( sm->p)) <= 126 )
goto tr257;
} else if ( (*( sm->p)) >= -16 )
goto tr256;
} else
goto tr255;
goto tr69;
case 217:
if ( (*( sm->p)) <= -65 )
goto tr257;
goto tr62;
case 317:
if ( (*( sm->p)) < -32 ) {
if ( -62 <= (*( sm->p)) && (*( sm->p)) <= -33 )
goto tr254;
} else if ( (*( sm->p)) > -17 ) {
if ( (*( sm->p)) > -12 ) {
if ( 33 <= (*( sm->p)) && (*( sm->p)) <= 126 )
goto tr257;
} else if ( (*( sm->p)) >= -16 )
goto tr256;
} else
goto tr255;
goto tr432;
case 218:
if ( (*( sm->p)) <= -65 )
goto tr254;
goto tr62;
case 219:
if ( (*( sm->p)) <= -65 )
goto tr255;
goto tr62;
case 220:
if ( (*( sm->p)) == 58 )
goto tr250;
goto tr69;
case 318:
if ( (*( sm->p)) == 123 )
goto tr433;
goto tr372;
case 221:
if ( (*( sm->p)) == 125 )
goto tr69;
goto tr258;
case 222:
if ( (*( sm->p)) == 125 )
goto tr260;
goto tr259;
case 223:
if ( (*( sm->p)) == 125 )
goto tr261;
goto tr69;
case 319:
switch( (*( sm->p)) ) {
case 0: goto tr435;
case 91: goto tr436;
}
goto tr434;
case 320:
if ( (*( sm->p)) == 47 )
goto tr438;
goto tr437;
case 224:
switch( (*( sm->p)) ) {
case 67: goto tr263;
case 99: goto tr263;
}
goto tr262;
case 225:
switch( (*( sm->p)) ) {
case 79: goto tr264;
case 111: goto tr264;
}
goto tr262;
case 226:
switch( (*( sm->p)) ) {
case 68: goto tr265;
case 100: goto tr265;
}
goto tr262;
case 227:
switch( (*( sm->p)) ) {
case 69: goto tr266;
case 101: goto tr266;
}
goto tr262;
case 228:
if ( (*( sm->p)) == 93 )
goto tr267;
goto tr262;
case 321:
switch( (*( sm->p)) ) {
case 0: goto tr440;
case 91: goto tr441;
}
goto tr439;
case 322:
if ( (*( sm->p)) == 47 )
goto tr443;
goto tr442;
case 229:
switch( (*( sm->p)) ) {
case 78: goto tr269;
case 110: goto tr269;
}
goto tr268;
case 230:
switch( (*( sm->p)) ) {
case 79: goto tr270;
case 111: goto tr270;
}
goto tr268;
case 231:
switch( (*( sm->p)) ) {
case 68: goto tr271;
case 100: goto tr271;
}
goto tr268;
case 232:
switch( (*( sm->p)) ) {
case 84: goto tr272;
case 116: goto tr272;
}
goto tr268;
case 233:
switch( (*( sm->p)) ) {
case 69: goto tr273;
case 101: goto tr273;
}
goto tr268;
case 234:
switch( (*( sm->p)) ) {
case 88: goto tr274;
case 120: goto tr274;
}
goto tr268;
case 235:
switch( (*( sm->p)) ) {
case 84: goto tr275;
case 116: goto tr275;
}
goto tr268;
case 236:
if ( (*( sm->p)) == 93 )
goto tr276;
goto tr268;
case 323:
switch( (*( sm->p)) ) {
case 0: goto tr445;
case 91: goto tr446;
}
goto tr444;
case 324:
switch( (*( sm->p)) ) {
case 47: goto tr448;
case 84: goto tr449;
case 116: goto tr449;
}
goto tr447;
case 237:
switch( (*( sm->p)) ) {
case 84: goto tr278;
case 116: goto tr278;
}
goto tr277;
case 238:
switch( (*( sm->p)) ) {
case 65: goto tr279;
case 66: goto tr280;
case 72: goto tr281;
case 82: goto tr282;
case 97: goto tr279;
case 98: goto tr280;
case 104: goto tr281;
case 114: goto tr282;
}
goto tr277;
case 239:
switch( (*( sm->p)) ) {
case 66: goto tr283;
case 98: goto tr283;
}
goto tr277;
case 240:
switch( (*( sm->p)) ) {
case 76: goto tr284;
case 108: goto tr284;
}
goto tr277;
case 241:
switch( (*( sm->p)) ) {
case 69: goto tr285;
case 101: goto tr285;
}
goto tr277;
case 242:
if ( (*( sm->p)) == 93 )
goto tr286;
goto tr277;
case 243:
switch( (*( sm->p)) ) {
case 79: goto tr287;
case 111: goto tr287;
}
goto tr277;
case 244:
switch( (*( sm->p)) ) {
case 68: goto tr288;
case 100: goto tr288;
}
goto tr277;
case 245:
switch( (*( sm->p)) ) {
case 89: goto tr289;
case 121: goto tr289;
}
goto tr277;
case 246:
if ( (*( sm->p)) == 93 )
goto tr290;
goto tr277;
case 247:
switch( (*( sm->p)) ) {
case 69: goto tr291;
case 101: goto tr291;
}
goto tr277;
case 248:
switch( (*( sm->p)) ) {
case 65: goto tr292;
case 97: goto tr292;
}
goto tr277;
case 249:
switch( (*( sm->p)) ) {
case 68: goto tr293;
case 100: goto tr293;
}
goto tr277;
case 250:
if ( (*( sm->p)) == 93 )
goto tr294;
goto tr277;
case 251:
if ( (*( sm->p)) == 93 )
goto tr295;
goto tr277;
case 252:
switch( (*( sm->p)) ) {
case 66: goto tr296;
case 68: goto tr297;
case 72: goto tr298;
case 82: goto tr299;
case 98: goto tr296;
case 100: goto tr297;
case 104: goto tr298;
case 114: goto tr299;
}
goto tr277;
case 253:
switch( (*( sm->p)) ) {
case 79: goto tr300;
case 111: goto tr300;
}
goto tr277;
case 254:
switch( (*( sm->p)) ) {
case 68: goto tr301;
case 100: goto tr301;
}
goto tr277;
case 255:
switch( (*( sm->p)) ) {
case 89: goto tr302;
case 121: goto tr302;
}
goto tr277;
case 256:
if ( (*( sm->p)) == 93 )
goto tr303;
goto tr277;
case 257:
if ( (*( sm->p)) == 93 )
goto tr304;
goto tr277;
case 258:
switch( (*( sm->p)) ) {
case 69: goto tr305;
case 93: goto tr306;
case 101: goto tr305;
}
goto tr277;
case 259:
switch( (*( sm->p)) ) {
case 65: goto tr307;
case 97: goto tr307;
}
goto tr277;
case 260:
switch( (*( sm->p)) ) {
case 68: goto tr308;
case 100: goto tr308;
}
goto tr277;
case 261:
if ( (*( sm->p)) == 93 )
goto tr309;
goto tr277;
case 262:
if ( (*( sm->p)) == 93 )
goto tr310;
goto tr277;
case 325:
switch( (*( sm->p)) ) {
case 0: goto tr451;
case 10: goto tr452;
case 13: goto tr453;
case 42: goto tr454;
}
goto tr450;
case 326:
switch( (*( sm->p)) ) {
case 10: goto tr312;
case 13: goto tr455;
}
goto tr311;
case 263:
if ( (*( sm->p)) == 10 )
goto tr312;
goto tr311;
case 327:
if ( (*( sm->p)) == 10 )
goto tr452;
goto tr456;
case 328:
switch( (*( sm->p)) ) {
case 9: goto tr316;
case 32: goto tr316;
case 42: goto tr317;
}
goto tr456;
case 264:
switch( (*( sm->p)) ) {
case 0: goto tr313;
case 9: goto tr315;
case 10: goto tr313;
case 13: goto tr313;
case 32: goto tr315;
}
goto tr314;
case 329:
switch( (*( sm->p)) ) {
case 0: goto tr457;
case 10: goto tr457;
case 13: goto tr457;
}
goto tr458;
case 330:
switch( (*( sm->p)) ) {
case 0: goto tr457;
case 9: goto tr315;
case 10: goto tr457;
case 13: goto tr457;
case 32: goto tr315;
}
goto tr314;
case 265:
switch( (*( sm->p)) ) {
case 9: goto tr316;
case 32: goto tr316;
case 42: goto tr317;
}
goto tr313;
}
tr325: sm->cs = 0; goto _again;
tr5: sm->cs = 1; goto f4;
tr6: sm->cs = 2; goto _again;
tr329: sm->cs = 3; goto f7;
tr7: sm->cs = 4; goto f4;
tr10: sm->cs = 5; goto _again;
tr9: sm->cs = 5; goto f3;
tr334: sm->cs = 6; goto _again;
tr12: sm->cs = 7; goto _again;
tr13: sm->cs = 8; goto _again;
tr14: sm->cs = 9; goto _again;
tr15: sm->cs = 10; goto _again;
tr16: sm->cs = 11; goto _again;
tr17: sm->cs = 12; goto _again;
tr18: sm->cs = 13; goto _again;
tr19: sm->cs = 14; goto _again;
tr335: sm->cs = 15; goto _again;
tr21: sm->cs = 16; goto _again;
tr22: sm->cs = 17; goto _again;
tr23: sm->cs = 18; goto _again;
tr336: sm->cs = 19; goto _again;
tr25: sm->cs = 20; goto _again;
tr26: sm->cs = 21; goto _again;
tr27: sm->cs = 22; goto _again;
tr28: sm->cs = 23; goto _again;
tr29: sm->cs = 24; goto _again;
tr30: sm->cs = 25; goto _again;
tr33: sm->cs = 26; goto _again;
tr32: sm->cs = 26; goto f7;
tr337: sm->cs = 27; goto _again;
tr35: sm->cs = 28; goto _again;
tr36: sm->cs = 29; goto _again;
tr37: sm->cs = 30; goto _again;
tr38: sm->cs = 31; goto _again;
tr39: sm->cs = 32; goto _again;
tr40: sm->cs = 33; goto _again;
tr338: sm->cs = 34; goto _again;
tr42: sm->cs = 35; goto _again;
tr43: sm->cs = 36; goto _again;
tr44: sm->cs = 37; goto _again;
tr45: sm->cs = 38; goto _again;
tr339: sm->cs = 39; goto _again;
tr47: sm->cs = 40; goto _again;
tr48: sm->cs = 41; goto _again;
tr49: sm->cs = 42; goto _again;
tr50: sm->cs = 43; goto _again;
tr51: sm->cs = 44; goto _again;
tr52: sm->cs = 45; goto _again;
tr53: sm->cs = 46; goto _again;
tr340: sm->cs = 47; goto _again;
tr55: sm->cs = 48; goto _again;
tr57: sm->cs = 49; goto _again;
tr58: sm->cs = 50; goto _again;
tr59: sm->cs = 51; goto _again;
tr56: sm->cs = 52; goto _again;
tr366: sm->cs = 53; goto _again;
tr66: sm->cs = 54; goto _again;
tr367: sm->cs = 54; goto f7;
tr65: sm->cs = 55; goto f4;
tr70: sm->cs = 56; goto _again;
tr373: sm->cs = 56; goto f7;
tr71: sm->cs = 57; goto f4;
tr72: sm->cs = 58; goto _again;
tr100: sm->cs = 59; goto _again;
tr73: sm->cs = 59; goto f3;
tr76: sm->cs = 60; goto _again;
tr77: sm->cs = 61; goto _again;
tr78: sm->cs = 62; goto _again;
tr74: sm->cs = 63; goto _again;
tr93: sm->cs = 64; goto _again;
tr80: sm->cs = 64; goto f3;
tr82: sm->cs = 65; goto _again;
tr85: sm->cs = 66; goto _again;
tr83: sm->cs = 67; goto _again;
tr84: sm->cs = 68; goto _again;
tr81: sm->cs = 69; goto f3;
tr87: sm->cs = 70; goto _again;
tr88: sm->cs = 71; goto _again;
tr89: sm->cs = 72; goto _again;
tr90: sm->cs = 73; goto _again;
tr92: sm->cs = 74; goto _again;
tr91: sm->cs = 75; goto _again;
tr75: sm->cs = 76; goto f3;
tr94: sm->cs = 77; goto _again;
tr95: sm->cs = 78; goto _again;
tr96: sm->cs = 79; goto _again;
tr97: sm->cs = 80; goto _again;
tr99: sm->cs = 81; goto _again;
tr98: sm->cs = 82; goto _again;
tr102: sm->cs = 83; goto _again;
tr375: sm->cs = 83; goto f7;
tr103: sm->cs = 84; goto _again;
tr376: sm->cs = 84; goto f7;
tr380: sm->cs = 85; goto _again;
tr377: sm->cs = 85; goto f7;
tr383: sm->cs = 86; goto _again;
tr104: sm->cs = 87; goto _again;
tr105: sm->cs = 88; goto _again;
tr106: sm->cs = 89; goto _again;
tr107: sm->cs = 90; goto _again;
tr108: sm->cs = 91; goto _again;
tr109: sm->cs = 92; goto _again;
tr386: sm->cs = 93; goto _again;
tr111: sm->cs = 94; goto _again;
tr112: sm->cs = 95; goto _again;
tr113: sm->cs = 96; goto _again;
tr114: sm->cs = 97; goto _again;
tr115: sm->cs = 98; goto _again;
tr116: sm->cs = 99; goto _again;
tr117: sm->cs = 100; goto _again;
tr389: sm->cs = 101; goto _again;
tr119: sm->cs = 102; goto _again;
tr120: sm->cs = 103; goto _again;
tr121: sm->cs = 104; goto _again;
tr122: sm->cs = 105; goto _again;
tr123: sm->cs = 106; goto _again;
tr392: sm->cs = 107; goto f7;
tr125: sm->cs = 108; goto f4;
tr128: sm->cs = 109; goto _again;
tr127: sm->cs = 109; goto f3;
tr397: sm->cs = 110; goto _again;
tr130: sm->cs = 111; goto _again;
tr131: sm->cs = 112; goto _again;
tr132: sm->cs = 113; goto _again;
tr133: sm->cs = 114; goto _again;
tr134: sm->cs = 115; goto _again;
tr400: sm->cs = 116; goto _again;
tr136: sm->cs = 117; goto _again;
tr137: sm->cs = 118; goto _again;
tr138: sm->cs = 119; goto _again;
tr139: sm->cs = 120; goto _again;
tr140: sm->cs = 121; goto _again;
tr403: sm->cs = 122; goto f4;
tr143: sm->cs = 123; goto _again;
tr401: sm->cs = 124; goto _again;
tr145: sm->cs = 125; goto _again;
tr147: sm->cs = 126; goto _again;
tr148: sm->cs = 127; goto _again;
tr149: sm->cs = 128; goto _again;
tr146: sm->cs = 129; goto _again;
tr151: sm->cs = 130; goto _again;
tr152: sm->cs = 131; goto _again;
tr153: sm->cs = 132; goto _again;
tr411: sm->cs = 133; goto _again;
tr155: sm->cs = 134; goto _again;
tr156: sm->cs = 135; goto _again;
tr157: sm->cs = 136; goto _again;
tr158: sm->cs = 137; goto _again;
tr159: sm->cs = 138; goto _again;
tr413: sm->cs = 139; goto f4;
tr162: sm->cs = 140; goto _again;
tr417: sm->cs = 141; goto _again;
tr164: sm->cs = 142; goto _again;
tr165: sm->cs = 143; goto _again;
tr166: sm->cs = 144; goto _again;
tr167: sm->cs = 145; goto _again;
tr420: sm->cs = 146; goto _again;
tr169: sm->cs = 147; goto _again;
tr170: sm->cs = 148; goto _again;
tr177: sm->cs = 149; goto _again;
tr178: sm->cs = 150; goto _again;
tr179: sm->cs = 151; goto _again;
tr180: sm->cs = 152; goto _again;
tr181: sm->cs = 153; goto _again;
tr171: sm->cs = 154; goto _again;
tr172: sm->cs = 155; goto _again;
tr184: sm->cs = 156; goto _again;
tr185: sm->cs = 157; goto _again;
tr186: sm->cs = 158; goto _again;
tr187: sm->cs = 159; goto _again;
tr173: sm->cs = 160; goto _again;
tr189: sm->cs = 161; goto _again;
tr191: sm->cs = 162; goto _again;
tr192: sm->cs = 163; goto _again;
tr193: sm->cs = 164; goto _again;
tr194: sm->cs = 165; goto _again;
tr195: sm->cs = 166; goto _again;
tr196: sm->cs = 167; goto _again;
tr174: sm->cs = 168; goto _again;
tr198: sm->cs = 169; goto _again;
tr199: sm->cs = 170; goto _again;
tr200: sm->cs = 171; goto _again;
tr175: sm->cs = 172; goto _again;
tr421: sm->cs = 173; goto _again;
tr422: sm->cs = 174; goto _again;
tr206: sm->cs = 175; goto _again;
tr207: sm->cs = 176; goto _again;
tr208: sm->cs = 177; goto _again;
tr209: sm->cs = 178; goto _again;
tr210: sm->cs = 179; goto _again;
tr423: sm->cs = 180; goto _again;
tr424: sm->cs = 181; goto _again;
tr213: sm->cs = 182; goto _again;
tr214: sm->cs = 183; goto _again;
tr215: sm->cs = 184; goto _again;
tr216: sm->cs = 185; goto _again;
tr217: sm->cs = 186; goto _again;
tr218: sm->cs = 187; goto _again;
tr425: sm->cs = 188; goto _again;
tr220: sm->cs = 189; goto _again;
tr221: sm->cs = 190; goto _again;
tr222: sm->cs = 191; goto _again;
tr223: sm->cs = 192; goto _again;
tr426: sm->cs = 193; goto _again;
tr225: sm->cs = 194; goto _again;
tr227: sm->cs = 195; goto _again;
tr228: sm->cs = 196; goto _again;
tr229: sm->cs = 197; goto _again;
tr230: sm->cs = 198; goto _again;
tr231: sm->cs = 199; goto _again;
tr232: sm->cs = 200; goto _again;
tr427: sm->cs = 201; goto _again;
tr234: sm->cs = 202; goto _again;
tr428: sm->cs = 203; goto _again;
tr429: sm->cs = 204; goto _again;
tr239: sm->cs = 205; goto _again;
tr237: sm->cs = 205; goto f7;
tr240: sm->cs = 206; goto f4;
tr241: sm->cs = 207; goto f4;
tr244: sm->cs = 208; goto _again;
tr243: sm->cs = 208; goto f3;
tr245: sm->cs = 209; goto f5;
tr247: sm->cs = 210; goto _again;
tr238: sm->cs = 210; goto f7;
tr431: sm->cs = 211; goto _again;
tr248: sm->cs = 212; goto _again;
tr249: sm->cs = 213; goto _again;
tr250: sm->cs = 214; goto _again;
tr252: sm->cs = 215; goto _again;
tr253: sm->cs = 216; goto _again;
tr254: sm->cs = 217; goto _again;
tr255: sm->cs = 218; goto _again;
tr256: sm->cs = 219; goto _again;
tr251: sm->cs = 220; goto _again;
tr433: sm->cs = 221; goto _again;
tr259: sm->cs = 222; goto _again;
tr258: sm->cs = 222; goto f7;
tr260: sm->cs = 223; goto f4;
tr438: sm->cs = 224; goto _again;
tr263: sm->cs = 225; goto _again;
tr264: sm->cs = 226; goto _again;
tr265: sm->cs = 227; goto _again;
tr266: sm->cs = 228; goto _again;
tr443: sm->cs = 229; goto _again;
tr269: sm->cs = 230; goto _again;
tr270: sm->cs = 231; goto _again;
tr271: sm->cs = 232; goto _again;
tr272: sm->cs = 233; goto _again;
tr273: sm->cs = 234; goto _again;
tr274: sm->cs = 235; goto _again;
tr275: sm->cs = 236; goto _again;
tr448: sm->cs = 237; goto _again;
tr278: sm->cs = 238; goto _again;
tr279: sm->cs = 239; goto _again;
tr283: sm->cs = 240; goto _again;
tr284: sm->cs = 241; goto _again;
tr285: sm->cs = 242; goto _again;
tr280: sm->cs = 243; goto _again;
tr287: sm->cs = 244; goto _again;
tr288: sm->cs = 245; goto _again;
tr289: sm->cs = 246; goto _again;
tr281: sm->cs = 247; goto _again;
tr291: sm->cs = 248; goto _again;
tr292: sm->cs = 249; goto _again;
tr293: sm->cs = 250; goto _again;
tr282: sm->cs = 251; goto _again;
tr449: sm->cs = 252; goto _again;
tr296: sm->cs = 253; goto _again;
tr300: sm->cs = 254; goto _again;
tr301: sm->cs = 255; goto _again;
tr302: sm->cs = 256; goto _again;
tr297: sm->cs = 257; goto _again;
tr298: sm->cs = 258; goto _again;
tr305: sm->cs = 259; goto _again;
tr307: sm->cs = 260; goto _again;
tr308: sm->cs = 261; goto _again;
tr299: sm->cs = 262; goto _again;
tr455: sm->cs = 263; goto _again;
tr316: sm->cs = 264; goto f4;
tr317: sm->cs = 265; goto _again;
tr0: sm->cs = 266; goto f0;
tr2: sm->cs = 266; goto f2;
tr20: sm->cs = 266; goto f6;
tr60: sm->cs = 266; goto f8;
tr61: sm->cs = 266; goto f9;
tr318: sm->cs = 266; goto f61;
tr319: sm->cs = 266; goto f62;
tr326: sm->cs = 266; goto f65;
tr327: sm->cs = 266; goto f66;
tr330: sm->cs = 266; goto f67;
tr332: sm->cs = 266; goto f68;
tr341: sm->cs = 266; goto f69;
tr342: sm->cs = 266; goto f70;
tr344: sm->cs = 266; goto f71;
tr345: sm->cs = 266; goto f72;
tr346: sm->cs = 266; goto f73;
tr347: sm->cs = 266; goto f74;
tr1: sm->cs = 267; goto f1;
tr320: sm->cs = 267; goto f63;
tr321: sm->cs = 268; goto _again;
tr322: sm->cs = 269; goto f17;
tr328: sm->cs = 270; goto _again;
tr3: sm->cs = 270; goto f3;
tr4: sm->cs = 271; goto f3;
tr323: sm->cs = 272; goto f64;
tr331: sm->cs = 273; goto _again;
tr11: sm->cs = 273; goto f5;
tr333: sm->cs = 274; goto _again;
tr8: sm->cs = 274; goto f4;
tr324: sm->cs = 275; goto f64;
tr24: sm->cs = 276; goto _again;
tr343: sm->cs = 277; goto _again;
tr34: sm->cs = 277; goto f4;
tr31: sm->cs = 278; goto _again;
tr41: sm->cs = 279; goto _again;
tr46: sm->cs = 280; goto _again;
tr54: sm->cs = 281; goto _again;
tr62: sm->cs = 282; goto f10;
tr64: sm->cs = 282; goto f12;
tr69: sm->cs = 282; goto f13;
tr86: sm->cs = 282; goto f15;
tr142: sm->cs = 282; goto f18;
tr161: sm->cs = 282; goto f19;
tr176: sm->cs = 282; goto f20;
tr182: sm->cs = 282; goto f21;
tr183: sm->cs = 282; goto f22;
tr190: sm->cs = 282; goto f23;
tr197: sm->cs = 282; goto f24;
tr201: sm->cs = 282; goto f25;
tr202: sm->cs = 282; goto f26;
tr203: sm->cs = 282; goto f27;
tr204: sm->cs = 282; goto f28;
tr205: sm->cs = 282; goto f29;
tr211: sm->cs = 282; goto f30;
tr212: sm->cs = 282; goto f31;
tr219: sm->cs = 282; goto f32;
tr224: sm->cs = 282; goto f33;
tr226: sm->cs = 282; goto f34;
tr233: sm->cs = 282; goto f35;
tr235: sm->cs = 282; goto f36;
tr236: sm->cs = 282; goto f37;
tr242: sm->cs = 282; goto f38;
tr246: sm->cs = 282; goto f39;
tr261: sm->cs = 282; goto f41;
tr348: sm->cs = 282; goto f75;
tr349: sm->cs = 282; goto f76;
tr365: sm->cs = 282; goto f79;
tr368: sm->cs = 282; goto f80;
tr369: sm->cs = 282; goto f81;
tr371: sm->cs = 282; goto f82;
tr372: sm->cs = 282; goto f83;
tr374: sm->cs = 282; goto f84;
tr379: sm->cs = 282; goto f86;
tr381: sm->cs = 282; goto f87;
tr384: sm->cs = 282; goto f89;
tr387: sm->cs = 282; goto f90;
tr390: sm->cs = 282; goto f91;
tr393: sm->cs = 282; goto f92;
tr395: sm->cs = 282; goto f93;
tr398: sm->cs = 282; goto f94;
tr402: sm->cs = 282; goto f95;
tr405: sm->cs = 282; goto f96;
tr407: sm->cs = 282; goto f97;
tr409: sm->cs = 282; goto f98;
tr412: sm->cs = 282; goto f99;
tr415: sm->cs = 282; goto f100;
tr418: sm->cs = 282; goto f101;
tr430: sm->cs = 282; goto f102;
tr432: sm->cs = 282; goto f103;
tr350: sm->cs = 283; goto f77;
tr63: sm->cs = 284; goto f11;
tr370: sm->cs = 285; goto _again;
tr67: sm->cs = 285; goto f3;
tr68: sm->cs = 286; goto f3;
tr351: sm->cs = 287; goto _again;
tr352: sm->cs = 288; goto f78;
tr79: sm->cs = 289; goto f14;
tr353: sm->cs = 290; goto f78;
tr101: sm->cs = 291; goto f16;
tr382: sm->cs = 291; goto f88;
tr378: sm->cs = 292; goto f85;
tr354: sm->cs = 293; goto f64;
tr385: sm->cs = 294; goto _again;
tr110: sm->cs = 294; goto f7;
tr355: sm->cs = 295; goto f64;
tr388: sm->cs = 296; goto _again;
tr118: sm->cs = 296; goto f7;
tr356: sm->cs = 297; goto f64;
tr391: sm->cs = 298; goto _again;
tr124: sm->cs = 298; goto f7;
tr357: sm->cs = 299; goto f64;
tr394: sm->cs = 300; goto _again;
tr129: sm->cs = 300; goto f5;
tr396: sm->cs = 301; goto _again;
tr126: sm->cs = 301; goto f4;
tr358: sm->cs = 302; goto f64;
tr399: sm->cs = 303; goto _again;
tr135: sm->cs = 303; goto f7;
tr359: sm->cs = 304; goto f64;
tr141: sm->cs = 305; goto f17;
tr404: sm->cs = 305; goto f64;
tr406: sm->cs = 306; goto _again;
tr144: sm->cs = 306; goto f3;
tr408: sm->cs = 307; goto _again;
tr150: sm->cs = 307; goto f7;
tr410: sm->cs = 308; goto _again;
tr154: sm->cs = 308; goto f7;
tr360: sm->cs = 309; goto f64;
tr160: sm->cs = 310; goto f17;
tr414: sm->cs = 310; goto f64;
tr416: sm->cs = 311; goto _again;
tr163: sm->cs = 311; goto f3;
tr361: sm->cs = 312; goto f64;
tr419: sm->cs = 313; goto _again;
tr168: sm->cs = 313; goto f7;
tr362: sm->cs = 314; goto f64;
tr188: sm->cs = 315; goto _again;
tr363: sm->cs = 316; goto f78;
tr257: sm->cs = 317; goto f40;
tr364: sm->cs = 318; goto f64;
tr262: sm->cs = 319; goto f42;
tr267: sm->cs = 319; goto f43;
tr434: sm->cs = 319; goto f104;
tr435: sm->cs = 319; goto f105;
tr437: sm->cs = 319; goto f106;
tr436: sm->cs = 320; goto f64;
tr268: sm->cs = 321; goto f44;
tr276: sm->cs = 321; goto f45;
tr439: sm->cs = 321; goto f107;
tr440: sm->cs = 321; goto f108;
tr442: sm->cs = 321; goto f109;
tr441: sm->cs = 322; goto f64;
tr277: sm->cs = 323; goto f46;
tr286: sm->cs = 323; goto f47;
tr290: sm->cs = 323; goto f48;
tr294: sm->cs = 323; goto f49;
tr295: sm->cs = 323; goto f50;
tr303: sm->cs = 323; goto f51;
tr304: sm->cs = 323; goto f52;
tr306: sm->cs = 323; goto f53;
tr309: sm->cs = 323; goto f54;
tr310: sm->cs = 323; goto f55;
tr444: sm->cs = 323; goto f110;
tr445: sm->cs = 323; goto f111;
tr447: sm->cs = 323; goto f112;
tr446: sm->cs = 324; goto f64;
tr311: sm->cs = 325; goto f56;
tr313: sm->cs = 325; goto f58;
tr450: sm->cs = 325; goto f113;
tr451: sm->cs = 325; goto f114;
tr456: sm->cs = 325; goto f116;
tr457: sm->cs = 325; goto f117;
tr312: sm->cs = 326; goto f57;
tr452: sm->cs = 326; goto f115;
tr453: sm->cs = 327; goto _again;
tr454: sm->cs = 328; goto f17;
tr458: sm->cs = 329; goto _again;
tr314: sm->cs = 329; goto f3;
tr315: sm->cs = 330; goto f3;
f7:
#line 98 "ext/dtext/dtext.rl"
{
sm->a1 = sm->p;
}
goto _again;
f4:
#line 102 "ext/dtext/dtext.rl"
{
sm->a2 = sm->p;
}
goto _again;
f3:
#line 106 "ext/dtext/dtext.rl"
{
sm->b1 = sm->p;
}
goto _again;
f5:
#line 110 "ext/dtext/dtext.rl"
{
sm->b2 = sm->p;
}
goto _again;
f64:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
goto _again;
f41:
#line 272 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "\">");
append_segment_html_escaped(sm, sm->a1, sm->a2 - 1);
append(sm, true, "");
}}
goto _again;
f38:
#line 280 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
GString * segment = g_string_new_len(sm->a1, sm->a2 - sm->a1);
GString * lowercase_segment = NULL;
underscore_string(segment->str, segment->len);
if (g_utf8_validate(segment->str, -1, NULL)) {
lowercase_segment = g_string_new(g_utf8_strdown(segment->str, -1));
} else {
lowercase_segment = g_string_new(g_ascii_strdown(segment->str, -1));
}
append(sm, true, "str, lowercase_segment->str + lowercase_segment->len - 1);
append(sm, true, "\">");
append_segment_html_escaped(sm, sm->a1, sm->a2 - 1);
append(sm, true, "");
g_string_free(lowercase_segment, TRUE);
g_string_free(segment, TRUE);
}}
goto _again;
f39:
#line 301 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
GString * segment = g_string_new_len(sm->a1, sm->a2 - sm->a1);
GString * lowercase_segment = NULL;
underscore_string(segment->str, segment->len);
if (g_utf8_validate(segment->str, -1, NULL)) {
lowercase_segment = g_string_new(g_utf8_strdown(segment->str, -1));
} else {
lowercase_segment = g_string_new(g_ascii_strdown(segment->str, -1));
}
append(sm, true, "str, lowercase_segment->str + lowercase_segment->len - 1);
append(sm, true, "\">");
append_segment_html_escaped(sm, sm->b1, sm->b2 - 1);
append(sm, true, "");
g_string_free(lowercase_segment, TRUE);
g_string_free(segment, TRUE);
}}
goto _again;
f29:
#line 425 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_push(sm, &INLINE_B);
append(sm, true, "");
}}
goto _again;
f20:
#line 430 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
if (dstack_check(sm, INLINE_B)) {
dstack_pop(sm);
append(sm, true, "");
} else {
append(sm, true, "[/b]");
}
}}
goto _again;
f31:
#line 439 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_push(sm, &INLINE_I);
append(sm, true, "");
}}
goto _again;
f22:
#line 444 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
if (dstack_check(sm, INLINE_I)) {
dstack_pop(sm);
append(sm, true, "");
} else {
append(sm, true, "[/i]");
}
}}
goto _again;
f34:
#line 453 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_push(sm, &INLINE_S);
append(sm, true, "");
}}
goto _again;
f23:
#line 458 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
if (dstack_check(sm, INLINE_S)) {
dstack_pop(sm);
append(sm, true, "");
} else {
append(sm, true, "[/s]");
}
}}
goto _again;
f37:
#line 467 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_push(sm, &INLINE_U);
append(sm, true, "");
}}
goto _again;
f28:
#line 472 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
if (dstack_check(sm, INLINE_U)) {
dstack_pop(sm);
append(sm, true, "");
} else {
append(sm, true, "[/u]");
}
}}
goto _again;
f36:
#line 481 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_push(sm, &INLINE_TN);
append(sm, true, "");
}}
goto _again;
f27:
#line 486 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_close_before_block(sm);
if (dstack_check(sm, BLOCK_TN)) {
dstack_pop(sm);
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
} else if (dstack_check(sm, INLINE_TN)) {
dstack_pop(sm);
append(sm, true, "");
} else {
append_block(sm, "[/tn]");
}
}}
goto _again;
f33:
#line 514 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
g_debug("inline [quote]");
dstack_close_before_block(sm);
{( sm->p) = (( sm->ts))-1;}
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f35:
#line 537 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
g_debug("inline [spoiler]");
g_debug(" push ");
dstack_push(sm, &INLINE_SPOILER);
append(sm, true, "");
}}
goto _again;
f24:
#line 544 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
g_debug("inline [/spoiler]");
dstack_close_before_block(sm);
if (dstack_check(sm, INLINE_SPOILER)) {
g_debug(" pop dstack");
g_debug(" print ");
dstack_pop(sm);
append(sm, true, "");
} else if (dstack_check(sm, BLOCK_SPOILER)) {
g_debug(" pop dstack");
g_debug(" print ");
g_debug(" return");
dstack_pop(sm);
append_block(sm, "");
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
} else {
append_block(sm, "[/spoiler]");
}
}}
goto _again;
f30:
#line 565 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
g_debug("inline [expand]");
dstack_rewind(sm);
{( sm->p) = (((sm->p - 7)))-1;}
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f21:
#line 572 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_close_before_block(sm);
if (dstack_check(sm, BLOCK_EXPAND)) {
append_block(sm, "");
dstack_pop(sm);
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
} else {
append_block(sm, "[/expand]");
}
}}
goto _again;
f32:
#line 584 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_push(sm, &INLINE_NODTEXT);
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 321; goto _again;}}
}}
goto _again;
f26:
#line 589 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
if (dstack_check(sm, BLOCK_TH)) {
dstack_pop(sm);
append_block(sm, "");
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
} else {
append_block(sm, "[/th]");
}
}}
goto _again;
f25:
#line 599 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
if (dstack_check(sm, BLOCK_TD)) {
dstack_pop(sm);
append_block(sm, "");
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
} else {
append_block(sm, "[/td]");
}
}}
goto _again;
f76:
#line 609 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
g_debug("inline 0");
g_debug(" return");
( sm->p)--;
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f75:
#line 645 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
g_debug("inline char: %c", (*( sm->p)));
append_c_html_escaped(sm, (*( sm->p)));
}}
goto _again;
f103:
#line 353 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
if (is_boundary_c((*( sm->p)))) {
sm->b = true;
sm->d = 2;
} else {
sm->b = false;
sm->d = 1;
}
append(sm, true, "ts, sm->te - sm->d);
append(sm, true, "\">");
append_segment_html_escaped(sm, sm->ts, sm->te - sm->d);
append(sm, true, "");
if (sm->b) {
append_c_html_escaped(sm, (*( sm->p)));
}
}}
goto _again;
f93:
#line 502 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
dstack_rewind(sm);
{( sm->p) = (( sm->a1 - 1))-1;}
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f92:
#line 508 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
dstack_rewind(sm);
{( sm->p) = (( sm->a1 - 1))-1;}
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f102:
#line 521 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
g_debug("inline [/quote]");
dstack_close_before_block(sm);
if (dstack_check(sm, BLOCK_LI)) {
dstack_close_list(sm);
}
if (dstack_check(sm, BLOCK_QUOTE)) {
dstack_rewind(sm);
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
} else {
append_block(sm, "[/quote]");
}
}}
goto _again;
f80:
#line 617 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
g_debug("inline newline2");
g_debug(" return");
if (sm->list_mode) {
dstack_close_list(sm);
}
{( sm->p) = (( sm->ts))-1;}
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f79:
#line 629 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
g_debug("inline newline");
if (sm->header_mode) {
sm->header_mode = false;
dstack_rewind(sm);
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
} else {
append(sm, true, "
");
}
}}
goto _again;
f82:
#line 641 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append_c(sm, ' ');
}}
goto _again;
f83:
#line 645 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
g_debug("inline char: %c", (*( sm->p)));
append_c_html_escaped(sm, (*( sm->p)));
}}
goto _again;
f19:
#line 183 "ext/dtext/dtext.rl"
{{( sm->p) = ((( sm->te)))-1;}{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "\">");
append(sm, false, "topic #");
append_segment(sm, false, sm->a1, sm->a2 - 1);
append(sm, true, "");
}}
goto _again;
f18:
#line 250 "ext/dtext/dtext.rl"
{{( sm->p) = ((( sm->te)))-1;}{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "\">");
append(sm, false, "pixiv #");
append_segment(sm, false, sm->a1, sm->a2 - 1);
append(sm, true, "");
}}
goto _again;
f12:
#line 629 "ext/dtext/dtext.rl"
{{( sm->p) = ((( sm->te)))-1;}{
g_debug("inline newline");
if (sm->header_mode) {
sm->header_mode = false;
dstack_rewind(sm);
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
} else {
append(sm, true, "
");
}
}}
goto _again;
f13:
#line 645 "ext/dtext/dtext.rl"
{{( sm->p) = ((( sm->te)))-1;}{
g_debug("inline char: %c", (*( sm->p)));
append_c_html_escaped(sm, (*( sm->p)));
}}
goto _again;
f10:
#line 1 "NONE"
{ switch( ( sm->act) ) {
case 15:
{{( sm->p) = ((( sm->te)))-1;}
if (is_boundary_c((*( sm->p)))) {
sm->d = 2;
sm->b = true;
} else {
sm->d = 1;
sm->b = false;
}
append(sm, true, "b1, sm->b2 - sm->d);
append(sm, true, "\">");
link_content_sm = parse_helper(sm->a1, sm->a2 - sm->a1, false, true, false);
append(sm, true, link_content_sm->output->str);
free_machine(link_content_sm);
link_content_sm = NULL;
append(sm, true, "");
if (sm->b) {
append_c_html_escaped(sm, (*( sm->p)));
}
}
break;
case 17:
{{( sm->p) = ((( sm->te)))-1;}
if (is_boundary_c((*( sm->p)))) {
sm->b = true;
sm->d = 2;
} else {
sm->b = false;
sm->d = 1;
}
append(sm, true, "ts, sm->te - sm->d);
append(sm, true, "\">");
append_segment_html_escaped(sm, sm->ts, sm->te - sm->d);
append(sm, true, "");
if (sm->b) {
append_c_html_escaped(sm, (*( sm->p)));
}
}
break;
case 18:
{{( sm->p) = ((( sm->te)))-1;}
append_segment_html_escaped(sm, sm->ts, sm->te - 1);
}
break;
case 19:
{{( sm->p) = ((( sm->te)))-1;}
if (!sm->f_mentions || (sm->a1 > sm->pb && sm->a1 - 1 > sm->pb && sm->a1[-2] != ' ' && sm->a1[-2] != '\r' && sm->a1[-2] != '\n')) {
// handle emails
append_c(sm, '@');
append_segment_html_escaped(sm, sm->a1, sm->a2 - 1);
} else {
if (is_boundary_c((*( sm->p)))) {
sm->b = true;
sm->d = 2;
} else {
sm->b = false;
sm->d = 1;
}
append(sm, true, "a1, sm->a2 - sm->d);
append(sm, true, "\">");
append_c(sm, '@');
append_segment_html_escaped(sm, sm->a1, sm->a2 - sm->d);
append(sm, true, "");
if (sm->b) {
append_c_html_escaped(sm, (*( sm->p)));
}
}
}
break;
case 43:
{{( sm->p) = ((( sm->te)))-1;}
g_debug("inline newline2");
g_debug(" return");
if (sm->list_mode) {
dstack_close_list(sm);
}
{( sm->p) = (( sm->ts))-1;}
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}
break;
case 44:
{{( sm->p) = ((( sm->te)))-1;}
g_debug("inline newline");
if (sm->header_mode) {
sm->header_mode = false;
dstack_rewind(sm);
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
} else {
append(sm, true, "
");
}
}
break;
case 46:
{{( sm->p) = ((( sm->te)))-1;}
g_debug("inline char: %c", (*( sm->p)));
append_c_html_escaped(sm, (*( sm->p)));
}
break;
}
}
goto _again;
f43:
#line 652 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
if (dstack_check(sm, BLOCK_CODE)) {
dstack_rewind(sm);
} else {
append(sm, true, "[/code]");
}
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f105:
#line 661 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
( sm->p)--;
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f104:
#line 666 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
append_c_html_escaped(sm, (*( sm->p)));
}}
goto _again;
f106:
#line 666 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append_c_html_escaped(sm, (*( sm->p)));
}}
goto _again;
f42:
#line 666 "ext/dtext/dtext.rl"
{{( sm->p) = ((( sm->te)))-1;}{
append_c_html_escaped(sm, (*( sm->p)));
}}
goto _again;
f45:
#line 672 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
if (dstack_check(sm, BLOCK_NODTEXT)) {
dstack_pop(sm);
append_block(sm, "
");
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
} else if (dstack_check(sm, INLINE_NODTEXT)) {
dstack_pop(sm);
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
} else {
append(sm, true, "[/nodtext]");
}
}}
goto _again;
f108:
#line 685 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
( sm->p)--;
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f107:
#line 690 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
append_c_html_escaped(sm, (*( sm->p)));
}}
goto _again;
f109:
#line 690 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append_c_html_escaped(sm, (*( sm->p)));
}}
goto _again;
f44:
#line 690 "ext/dtext/dtext.rl"
{{( sm->p) = ((( sm->te)))-1;}{
append_c_html_escaped(sm, (*( sm->p)));
}}
goto _again;
f54:
#line 696 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_push(sm, &BLOCK_THEAD);
append_block(sm, "");
}}
goto _again;
f49:
#line 701 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
if (dstack_check(sm, BLOCK_THEAD)) {
dstack_pop(sm);
append_block(sm, "");
} else {
append(sm, true, "[/thead]");
}
}}
goto _again;
f51:
#line 710 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_push(sm, &BLOCK_TBODY);
append_block(sm, "");
}}
goto _again;
f48:
#line 715 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
if (dstack_check(sm, BLOCK_TBODY)) {
dstack_pop(sm);
append_block(sm, "");
} else {
append(sm, true, "[/tbody]");
}
}}
goto _again;
f53:
#line 724 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_push(sm, &BLOCK_TH);
append_block(sm, "");
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 282; goto _again;}}
}}
goto _again;
f55:
#line 730 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_push(sm, &BLOCK_TR);
append_block(sm, " | ");
}}
goto _again;
f50:
#line 735 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
if (dstack_check(sm, BLOCK_TR)) {
dstack_pop(sm);
append_block(sm, "
");
} else {
append(sm, true, "[/tr]");
}
}}
goto _again;
f52:
#line 744 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_push(sm, &BLOCK_TD);
append_block(sm, "");
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 282; goto _again;}}
}}
goto _again;
f47:
#line 750 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
if (dstack_check(sm, BLOCK_TABLE)) {
dstack_pop(sm);
append_block(sm, "");
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
} else {
append(sm, true, "[/table]");
}
}}
goto _again;
f111:
#line 760 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
( sm->p)--;
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f110:
#line 765 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;}
goto _again;
f112:
#line 765 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;}
goto _again;
f46:
#line 765 "ext/dtext/dtext.rl"
{{( sm->p) = ((( sm->te)))-1;}}
goto _again;
f114:
#line 808 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_close_list(sm);
{( sm->p) = (( sm->ts))-1;}
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f113:
#line 816 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_rewind(sm);
( sm->p)--;
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f116:
#line 816 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
dstack_rewind(sm);
( sm->p)--;
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f58:
#line 816 "ext/dtext/dtext.rl"
{{( sm->p) = ((( sm->te)))-1;}{
dstack_rewind(sm);
( sm->p)--;
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}}
goto _again;
f56:
#line 1 "NONE"
{ switch( ( sm->act) ) {
case 65:
{{( sm->p) = ((( sm->te)))-1;}
dstack_close_list(sm);
{( sm->p) = (( sm->ts))-1;}
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}
break;
default:
{{( sm->p) = ((( sm->te)))-1;}}
break;
}
}
goto _again;
f6:
#line 948 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
g_debug("block [/spoiler]");
dstack_close_before_block(sm);
if (dstack_check(sm, BLOCK_SPOILER)) {
g_debug(" rewind");
dstack_rewind(sm);
}
}}
goto _again;
f8:
#line 995 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_close_before_block(sm);
dstack_push(sm, &BLOCK_TABLE);
append_block(sm, "");
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 323; goto _again;}}
}}
goto _again;
f9:
#line 1002 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
dstack_push(sm, &BLOCK_TN);
append_block(sm, "");
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 282; goto _again;}}
}}
goto _again;
f62:
#line 1018 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
g_debug("block 0");
g_debug(" close dstack");
dstack_close(sm);
}}
goto _again;
f61:
#line 1041 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
g_debug("block char: %c", (*( sm->p)));
( sm->p)--;
if (g_queue_is_empty(sm->dstack) || dstack_check(sm, BLOCK_QUOTE) || dstack_check(sm, BLOCK_SPOILER) || dstack_check(sm, BLOCK_EXPAND)) {
g_debug(" push p");
g_debug(" print ");
dstack_push(sm, &BLOCK_P);
append_block(sm, " ");
}
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 282; goto _again;}}
}}
goto _again;
f67:
#line 824 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
char header = *sm->a1;
GString * id_name = g_string_new_len(sm->b1, sm->b2 - sm->b1);
id_name = g_string_prepend(id_name, "dtext-");
if (sm->f_inline) {
header = '6';
}
if (!sm->f_strip) {
switch (header) {
case '1':
dstack_push(sm, &BLOCK_H1);
append_block(sm, " str);
append_block(sm, "\">");
break;
case '2':
dstack_push(sm, &BLOCK_H2);
append_block(sm, "str);
append_block(sm, "\">");
break;
case '3':
dstack_push(sm, &BLOCK_H3);
append_block(sm, "str);
append_block(sm, "\">");
break;
case '4':
dstack_push(sm, &BLOCK_H4);
append_block(sm, "str);
append_block(sm, "\">");
break;
case '5':
dstack_push(sm, &BLOCK_H5);
append_block(sm, "str);
append_block(sm, "\">");
break;
case '6':
dstack_push(sm, &BLOCK_H6);
append_block(sm, "str);
append_block(sm, "\">");
break;
}
}
sm->header_mode = true;
g_string_free(id_name, false);
id_name = NULL;
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 282; goto _again;}}
}}
goto _again;
f68:
#line 885 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
char header = *sm->a1;
if (sm->f_inline) {
header = '6';
}
if (!sm->f_strip) {
switch (header) {
case '1':
dstack_push(sm, &BLOCK_H1);
append_block(sm, "");
break;
case '2':
dstack_push(sm, &BLOCK_H2);
append_block(sm, "");
break;
case '3':
dstack_push(sm, &BLOCK_H3);
append_block(sm, "");
break;
case '4':
dstack_push(sm, &BLOCK_H4);
append_block(sm, "");
break;
case '5':
dstack_push(sm, &BLOCK_H5);
append_block(sm, "");
break;
case '6':
dstack_push(sm, &BLOCK_H6);
append_block(sm, "");
break;
}
}
sm->header_mode = true;
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 282; goto _again;}}
}}
goto _again;
f73:
#line 930 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
g_debug("block [quote]");
g_debug(" push quote");
g_debug(" print ");
dstack_close_before_block(sm);
dstack_push(sm, &BLOCK_QUOTE);
append_block(sm, "");
}}
goto _again;
f74:
#line 939 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
g_debug("block [spoiler]");
g_debug(" push spoiler");
g_debug(" print ");
dstack_close_before_block(sm);
dstack_push(sm, &BLOCK_SPOILER);
append_block(sm, " ");
}}
goto _again;
f69:
#line 957 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
g_debug("block [code]");
dstack_close_before_block(sm);
dstack_push(sm, &BLOCK_CODE);
append_block(sm, " ");
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 319; goto _again;}}
}}
goto _again;
f71:
#line 965 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
g_debug("block [expand]");
dstack_close_before_block(sm);
dstack_push(sm, &BLOCK_EXPAND);
append_block(sm, "");
append_block(sm, " ");
append_block(sm, " ");
}}
goto _again;
f70:
#line 974 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
g_debug("block [expand=]");
dstack_close_before_block(sm);
dstack_push(sm, &BLOCK_EXPAND);
append_block(sm, " ");
append(sm, true, "");
append_segment_html_escaped(sm, sm->a1, sm->a2 - 1);
append(sm, true, "");
append_block(sm, " ");
append_block(sm, " ");
}}
goto _again;
f72:
#line 986 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
g_debug("block [nodtext]");
dstack_close_before_block(sm);
dstack_push(sm, &BLOCK_NODTEXT);
dstack_push(sm, &BLOCK_P);
append_block(sm, " ");
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 321; goto _again;}}
}}
goto _again;
f65:
#line 1041 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
g_debug("block char: %c", (*( sm->p)));
( sm->p)--;
if (g_queue_is_empty(sm->dstack) || dstack_check(sm, BLOCK_QUOTE) || dstack_check(sm, BLOCK_SPOILER) || dstack_check(sm, BLOCK_EXPAND)) {
g_debug(" push p");
g_debug(" print ");
dstack_push(sm, &BLOCK_P);
append_block(sm, " ");
}
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 282; goto _again;}}
}}
goto _again;
f2:
#line 1041 "ext/dtext/dtext.rl"
{{( sm->p) = ((( sm->te)))-1;}{
g_debug("block char: %c", (*( sm->p)));
( sm->p)--;
if (g_queue_is_empty(sm->dstack) || dstack_check(sm, BLOCK_QUOTE) || dstack_check(sm, BLOCK_SPOILER) || dstack_check(sm, BLOCK_EXPAND)) {
g_debug(" push p");
g_debug(" print ");
dstack_push(sm, &BLOCK_P);
append_block(sm, " ");
}
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 282; goto _again;}}
}}
goto _again;
f0:
#line 1 "NONE"
{ switch( ( sm->act) ) {
case 81:
{{( sm->p) = ((( sm->te)))-1;}
g_debug("block newline2");
if (sm->header_mode) {
sm->header_mode = false;
dstack_rewind(sm);
} else if (sm->list_mode) {
dstack_close_list(sm);
} else {
dstack_close_before_block(sm);
}
}
break;
case 82:
{{( sm->p) = ((( sm->te)))-1;}
g_debug("block newline");
}
break;
}
}
goto _again;
f98:
#line 102 "ext/dtext/dtext.rl"
{
sm->a2 = sm->p;
}
#line 165 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "\">");
append(sm, false, "post #");
append_segment(sm, false, sm->a1, sm->a2 - 1);
append(sm, true, "");
}}
goto _again;
f91:
#line 102 "ext/dtext/dtext.rl"
{
sm->a2 = sm->p;
}
#line 174 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "\">");
append(sm, false, "forum #");
append_segment(sm, false, sm->a1, sm->a2 - 1);
append(sm, true, "");
}}
goto _again;
f99:
#line 102 "ext/dtext/dtext.rl"
{
sm->a2 = sm->p;
}
#line 183 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "\">");
append(sm, false, "topic #");
append_segment(sm, false, sm->a1, sm->a2 - 1);
append(sm, true, "");
}}
goto _again;
f90:
#line 102 "ext/dtext/dtext.rl"
{
sm->a2 = sm->p;
}
#line 205 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "\">");
append(sm, false, "comment #");
append_segment(sm, false, sm->a1, sm->a2 - 1);
append(sm, true, "");
}}
goto _again;
f97:
#line 102 "ext/dtext/dtext.rl"
{
sm->a2 = sm->p;
}
#line 214 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "\">");
append(sm, false, "pool #");
append_segment(sm, false, sm->a1, sm->a2 - 1);
append(sm, true, "");
}}
goto _again;
f101:
#line 102 "ext/dtext/dtext.rl"
{
sm->a2 = sm->p;
}
#line 223 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "\">");
append(sm, false, "user #");
append_segment(sm, false, sm->a1, sm->a2 - 1);
append(sm, true, "");
}}
goto _again;
f89:
#line 102 "ext/dtext/dtext.rl"
{
sm->a2 = sm->p;
}
#line 232 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "\">");
append(sm, false, "artist #");
append_segment(sm, false, sm->a1, sm->a2 - 1);
append(sm, true, "");
}}
goto _again;
f94:
#line 102 "ext/dtext/dtext.rl"
{
sm->a2 = sm->p;
}
#line 241 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "\">");
append(sm, false, "issue #");
append_segment(sm, false, sm->a1, sm->a2 - 1);
append(sm, true, "");
}}
goto _again;
f95:
#line 102 "ext/dtext/dtext.rl"
{
sm->a2 = sm->p;
}
#line 250 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "\">");
append(sm, false, "pixiv #");
append_segment(sm, false, sm->a1, sm->a2 - 1);
append(sm, true, "");
}}
goto _again;
f87:
#line 102 "ext/dtext/dtext.rl"
{
sm->a2 = sm->p;
}
#line 378 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
if (!sm->f_mentions || (sm->a1 > sm->pb && sm->a1 - 1 > sm->pb && sm->a1[-2] != ' ' && sm->a1[-2] != '\r' && sm->a1[-2] != '\n')) {
// handle emails
append_c(sm, '@');
append_segment_html_escaped(sm, sm->a1, sm->a2 - 1);
} else {
if (is_boundary_c((*( sm->p)))) {
sm->b = true;
sm->d = 2;
} else {
sm->b = false;
sm->d = 1;
}
append(sm, true, "a1, sm->a2 - sm->d);
append(sm, true, "\">");
append_c(sm, '@');
append_segment_html_escaped(sm, sm->a1, sm->a2 - sm->d);
append(sm, true, "");
if (sm->b) {
append_c_html_escaped(sm, (*( sm->p)));
}
}
}}
goto _again;
f86:
#line 102 "ext/dtext/dtext.rl"
{
sm->a2 = sm->p;
}
#line 1 "NONE"
{ switch( ( sm->act) ) {
case 15:
{{( sm->p) = ((( sm->te)))-1;}
if (is_boundary_c((*( sm->p)))) {
sm->d = 2;
sm->b = true;
} else {
sm->d = 1;
sm->b = false;
}
append(sm, true, "b1, sm->b2 - sm->d);
append(sm, true, "\">");
link_content_sm = parse_helper(sm->a1, sm->a2 - sm->a1, false, true, false);
append(sm, true, link_content_sm->output->str);
free_machine(link_content_sm);
link_content_sm = NULL;
append(sm, true, "");
if (sm->b) {
append_c_html_escaped(sm, (*( sm->p)));
}
}
break;
case 17:
{{( sm->p) = ((( sm->te)))-1;}
if (is_boundary_c((*( sm->p)))) {
sm->b = true;
sm->d = 2;
} else {
sm->b = false;
sm->d = 1;
}
append(sm, true, "ts, sm->te - sm->d);
append(sm, true, "\">");
append_segment_html_escaped(sm, sm->ts, sm->te - sm->d);
append(sm, true, "");
if (sm->b) {
append_c_html_escaped(sm, (*( sm->p)));
}
}
break;
case 18:
{{( sm->p) = ((( sm->te)))-1;}
append_segment_html_escaped(sm, sm->ts, sm->te - 1);
}
break;
case 19:
{{( sm->p) = ((( sm->te)))-1;}
if (!sm->f_mentions || (sm->a1 > sm->pb && sm->a1 - 1 > sm->pb && sm->a1[-2] != ' ' && sm->a1[-2] != '\r' && sm->a1[-2] != '\n')) {
// handle emails
append_c(sm, '@');
append_segment_html_escaped(sm, sm->a1, sm->a2 - 1);
} else {
if (is_boundary_c((*( sm->p)))) {
sm->b = true;
sm->d = 2;
} else {
sm->b = false;
sm->d = 1;
}
append(sm, true, "a1, sm->a2 - sm->d);
append(sm, true, "\">");
append_c(sm, '@');
append_segment_html_escaped(sm, sm->a1, sm->a2 - sm->d);
append(sm, true, "");
if (sm->b) {
append_c_html_escaped(sm, (*( sm->p)));
}
}
}
break;
case 43:
{{( sm->p) = ((( sm->te)))-1;}
g_debug("inline newline2");
g_debug(" return");
if (sm->list_mode) {
dstack_close_list(sm);
}
{( sm->p) = (( sm->ts))-1;}
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
}
break;
case 44:
{{( sm->p) = ((( sm->te)))-1;}
g_debug("inline newline");
if (sm->header_mode) {
sm->header_mode = false;
dstack_rewind(sm);
{ sm->cs = ( ((int *)sm->stack->data))[--( sm->top)];goto _again;}
} else {
append(sm, true, " ");
}
}
break;
case 46:
{{( sm->p) = ((( sm->te)))-1;}
g_debug("inline char: %c", (*( sm->p)));
append_c_html_escaped(sm, (*( sm->p)));
}
break;
}
}
goto _again;
f15:
#line 110 "ext/dtext/dtext.rl"
{
sm->b2 = sm->p;
}
#line 345 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p)+1;{
append(sm, true, "b1, sm->b2 - 1);
append(sm, true, "\">");
append_segment_html_escaped(sm, sm->a1, sm->a2 - 1);
append(sm, true, "");
}}
goto _again;
f100:
#line 110 "ext/dtext/dtext.rl"
{
sm->b2 = sm->p;
}
#line 192 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "?page=");
append_segment(sm, true, sm->b1, sm->b2 - 1);
append(sm, true, "\">");
append(sm, false, "topic #");
append_segment(sm, false, sm->a1, sm->a2 - 1);
append(sm, false, "/p");
append_segment(sm, false, sm->b1, sm->b2 - 1);
append(sm, true, "");
}}
goto _again;
f96:
#line 110 "ext/dtext/dtext.rl"
{
sm->b2 = sm->p;
}
#line 259 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
append(sm, true, "a1, sm->a2 - 1);
append(sm, true, "&page=");
append_segment(sm, true, sm->b1, sm->b2 - 1);
append(sm, true, "\">");
append(sm, false, "pixiv #");
append_segment(sm, false, sm->a1, sm->a2 - 1);
append(sm, false, "/p");
append_segment(sm, false, sm->b1, sm->b2 - 1);
append(sm, true, "");
}}
goto _again;
f84:
#line 110 "ext/dtext/dtext.rl"
{
sm->b2 = sm->p;
}
#line 322 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
if (is_boundary_c((*( sm->p)))) {
sm->d = 2;
sm->b = true;
} else {
sm->d = 1;
sm->b = false;
}
append(sm, true, "b1, sm->b2 - sm->d);
append(sm, true, "\">");
link_content_sm = parse_helper(sm->a1, sm->a2 - sm->a1, false, true, false);
append(sm, true, link_content_sm->output->str);
free_machine(link_content_sm);
link_content_sm = NULL;
append(sm, true, "");
if (sm->b) {
append_c_html_escaped(sm, (*( sm->p)));
}
}}
goto _again;
f81:
#line 110 "ext/dtext/dtext.rl"
{
sm->b2 = sm->p;
}
#line 406 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
g_debug("inline list");
if (dstack_check(sm, BLOCK_LI)) {
g_debug(" rewind li");
dstack_rewind(sm);
} else if (dstack_check(sm, BLOCK_P)) {
g_debug(" rewind p");
dstack_rewind(sm);
} else if (sm->header_mode) {
g_debug(" rewind header");
dstack_rewind(sm);
}
g_debug(" next list");
{( sm->p) = (( sm->ts + 1))-1;}
sm->cs = 325;
}}
goto _again;
f117:
#line 110 "ext/dtext/dtext.rl"
{
sm->b2 = sm->p;
}
#line 769 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
int prev_nest = sm->list_nest;
append_closing_p_if(sm);
g_debug("list start");
sm->list_mode = true;
sm->list_nest = sm->a2 - sm->a1;
{( sm->p) = (( sm->b1))-1;}
if (sm->list_nest > prev_nest) {
int i=0;
for (i=prev_nest; ilist_nest; ++i) {
g_debug(" dstack push ul");
g_debug(" print ");
append_block(sm, "");
dstack_push(sm, &BLOCK_UL);
}
} else if (sm->list_nest < prev_nest) {
int i=0;
for (i=sm->list_nest; i");
dstack_pop(sm);
append_block(sm, " ");
}
}
}
append_block(sm, "- ");
dstack_push(sm, &BLOCK_LI);
g_debug(" print
- ");
g_debug(" push li");
g_debug(" call inline");
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 282; goto _again;}}
}}
goto _again;
f66:
#line 110 "ext/dtext/dtext.rl"
{
sm->b2 = sm->p;
}
#line 1008 "ext/dtext/dtext.rl"
{( sm->te) = ( sm->p);( sm->p)--;{
g_debug("block list");
g_debug(" call list");
sm->list_nest = 0;
sm->list_mode = true;
append_closing_p_if(sm);
{( sm->p) = (( sm->ts))-1;}
{
size_t len = sm->stack->len;
if (len > MAX_STACK_DEPTH) {
free_machine(sm);
rb_raise(rb_eSyntaxError, "too many nested elements");
}
if (sm->top >= len) {
sm->stack = g_array_set_size(sm->stack, len + 16);
}
{( ((int *)sm->stack->data))[( sm->top)++] = sm->cs; sm->cs = 325; goto _again;}}
}}
goto _again;
f17:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
#line 98 "ext/dtext/dtext.rl"
{
sm->a1 = sm->p;
}
goto _again;
f14:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
#line 322 "ext/dtext/dtext.rl"
{( sm->act) = 15;}
goto _again;
f40:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
#line 353 "ext/dtext/dtext.rl"
{( sm->act) = 17;}
goto _again;
f88:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
#line 374 "ext/dtext/dtext.rl"
{( sm->act) = 18;}
goto _again;
f16:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
#line 378 "ext/dtext/dtext.rl"
{( sm->act) = 19;}
goto _again;
f11:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
#line 617 "ext/dtext/dtext.rl"
{( sm->act) = 43;}
goto _again;
f77:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
#line 629 "ext/dtext/dtext.rl"
{( sm->act) = 44;}
goto _again;
f78:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
#line 645 "ext/dtext/dtext.rl"
{( sm->act) = 46;}
goto _again;
f57:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
#line 808 "ext/dtext/dtext.rl"
{( sm->act) = 65;}
goto _again;
f115:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
#line 814 "ext/dtext/dtext.rl"
{( sm->act) = 66;}
goto _again;
f1:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
#line 1024 "ext/dtext/dtext.rl"
{( sm->act) = 81;}
goto _again;
f63:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
#line 1037 "ext/dtext/dtext.rl"
{( sm->act) = 82;}
goto _again;
f85:
#line 1 "NONE"
{( sm->te) = ( sm->p)+1;}
#line 98 "ext/dtext/dtext.rl"
{
sm->a1 = sm->p;
}
#line 378 "ext/dtext/dtext.rl"
{( sm->act) = 19;}
goto _again;
_again:
switch ( _dtext_to_state_actions[ sm->cs] ) {
case 60:
#line 1 "NONE"
{( sm->ts) = 0;}
break;
#line 4701 "ext/dtext/dtext.c"
}
if ( ++( sm->p) != ( sm->pe) )
goto _resume;
_test_eof: {}
if ( ( sm->p) == ( sm->eof) )
{
switch ( sm->cs ) {
case 267: goto tr0;
case 0: goto tr0;
case 268: goto tr326;
case 269: goto tr326;
case 1: goto tr2;
case 270: goto tr327;
case 271: goto tr327;
case 2: goto tr2;
case 272: goto tr326;
case 3: goto tr2;
case 4: goto tr2;
case 5: goto tr2;
case 273: goto tr330;
case 274: goto tr332;
case 275: goto tr326;
case 6: goto tr2;
case 7: goto tr2;
case 8: goto tr2;
case 9: goto tr2;
case 10: goto tr2;
case 11: goto tr2;
case 12: goto tr2;
case 13: goto tr2;
case 14: goto tr2;
case 15: goto tr2;
case 16: goto tr2;
case 17: goto tr2;
case 18: goto tr2;
case 276: goto tr341;
case 19: goto tr2;
case 20: goto tr2;
case 21: goto tr2;
case 22: goto tr2;
case 23: goto tr2;
case 24: goto tr2;
case 25: goto tr2;
case 26: goto tr2;
case 277: goto tr342;
case 278: goto tr344;
case 27: goto tr2;
case 28: goto tr2;
case 29: goto tr2;
case 30: goto tr2;
case 31: goto tr2;
case 32: goto tr2;
case 33: goto tr2;
case 279: goto tr345;
case 34: goto tr2;
case 35: goto tr2;
case 36: goto tr2;
case 37: goto tr2;
case 38: goto tr2;
case 280: goto tr346;
case 39: goto tr2;
case 40: goto tr2;
case 41: goto tr2;
case 42: goto tr2;
case 43: goto tr2;
case 44: goto tr2;
case 45: goto tr2;
case 46: goto tr2;
case 281: goto tr347;
case 47: goto tr2;
case 48: goto tr2;
case 49: goto tr2;
case 50: goto tr2;
case 51: goto tr2;
case 52: goto tr2;
case 283: goto tr365;
case 284: goto tr368;
case 53: goto tr62;
case 54: goto tr64;
case 55: goto tr64;
case 285: goto tr369;
case 286: goto tr369;
case 287: goto tr371;
case 288: goto tr372;
case 56: goto tr69;
case 57: goto tr69;
case 58: goto tr69;
case 59: goto tr69;
case 60: goto tr62;
case 289: goto tr374;
case 61: goto tr62;
case 62: goto tr62;
case 63: goto tr69;
case 64: goto tr69;
case 65: goto tr69;
case 66: goto tr69;
case 67: goto tr69;
case 68: goto tr69;
case 69: goto tr69;
case 70: goto tr69;
case 71: goto tr69;
case 72: goto tr69;
case 73: goto tr69;
case 74: goto tr69;
case 75: goto tr69;
case 76: goto tr69;
case 77: goto tr69;
case 78: goto tr69;
case 79: goto tr69;
case 80: goto tr69;
case 81: goto tr69;
case 82: goto tr69;
case 290: goto tr372;
case 83: goto tr62;
case 291: goto tr379;
case 84: goto tr62;
case 85: goto tr62;
case 292: goto tr381;
case 293: goto tr372;
case 86: goto tr69;
case 87: goto tr69;
case 88: goto tr69;
case 89: goto tr69;
case 90: goto tr69;
case 91: goto tr69;
case 92: goto tr69;
case 294: goto tr384;
case 295: goto tr372;
case 93: goto tr69;
case 94: goto tr69;
case 95: goto tr69;
case 96: goto tr69;
case 97: goto tr69;
case 98: goto tr69;
case 99: goto tr69;
case 100: goto tr69;
case 296: goto tr387;
case 297: goto tr372;
case 101: goto tr69;
case 102: goto tr69;
case 103: goto tr69;
case 104: goto tr69;
case 105: goto tr69;
case 106: goto tr69;
case 298: goto tr390;
case 299: goto tr372;
case 107: goto tr69;
case 108: goto tr69;
case 109: goto tr69;
case 300: goto tr393;
case 301: goto tr395;
case 302: goto tr372;
case 110: goto tr69;
case 111: goto tr69;
case 112: goto tr69;
case 113: goto tr69;
case 114: goto tr69;
case 115: goto tr69;
case 303: goto tr398;
case 304: goto tr372;
case 116: goto tr69;
case 117: goto tr69;
case 118: goto tr69;
case 119: goto tr69;
case 120: goto tr69;
case 121: goto tr69;
case 305: goto tr402;
case 122: goto tr142;
case 123: goto tr142;
case 306: goto tr405;
case 124: goto tr69;
case 125: goto tr69;
case 126: goto tr69;
case 127: goto tr69;
case 128: goto tr69;
case 307: goto tr407;
case 129: goto tr69;
case 130: goto tr69;
case 131: goto tr69;
case 132: goto tr69;
case 308: goto tr409;
case 309: goto tr372;
case 133: goto tr69;
case 134: goto tr69;
case 135: goto tr69;
case 136: goto tr69;
case 137: goto tr69;
case 138: goto tr69;
case 310: goto tr412;
case 139: goto tr161;
case 140: goto tr161;
case 311: goto tr415;
case 312: goto tr372;
case 141: goto tr69;
case 142: goto tr69;
case 143: goto tr69;
case 144: goto tr69;
case 145: goto tr69;
case 313: goto tr418;
case 314: goto tr372;
case 146: goto tr69;
case 147: goto tr69;
case 148: goto tr69;
case 149: goto tr69;
case 150: goto tr69;
case 151: goto tr69;
case 152: goto tr69;
case 153: goto tr69;
case 154: goto tr69;
case 155: goto tr69;
case 156: goto tr69;
case 157: goto tr69;
case 158: goto tr69;
case 159: goto tr69;
case 315: goto tr430;
case 160: goto tr69;
case 161: goto tr69;
case 162: goto tr69;
case 163: goto tr69;
case 164: goto tr69;
case 165: goto tr69;
case 166: goto tr69;
case 167: goto tr69;
case 168: goto tr69;
case 169: goto tr69;
case 170: goto tr69;
case 171: goto tr69;
case 172: goto tr69;
case 173: goto tr69;
case 174: goto tr69;
case 175: goto tr69;
case 176: goto tr69;
case 177: goto tr69;
case 178: goto tr69;
case 179: goto tr69;
case 180: goto tr69;
case 181: goto tr69;
case 182: goto tr69;
case 183: goto tr69;
case 184: goto tr69;
case 185: goto tr69;
case 186: goto tr69;
case 187: goto tr69;
case 188: goto tr69;
case 189: goto tr69;
case 190: goto tr69;
case 191: goto tr69;
case 192: goto tr69;
case 193: goto tr69;
case 194: goto tr69;
case 195: goto tr69;
case 196: goto tr69;
case 197: goto tr69;
case 198: goto tr69;
case 199: goto tr69;
case 200: goto tr69;
case 201: goto tr69;
case 202: goto tr69;
case 203: goto tr69;
case 204: goto tr69;
case 205: goto tr69;
case 206: goto tr69;
case 207: goto tr69;
case 208: goto tr69;
case 209: goto tr69;
case 210: goto tr69;
case 316: goto tr372;
case 211: goto tr69;
case 212: goto tr69;
case 213: goto tr69;
case 214: goto tr69;
case 215: goto tr69;
case 216: goto tr69;
case 217: goto tr62;
case 317: goto tr432;
case 218: goto tr62;
case 219: goto tr62;
case 220: goto tr69;
case 318: goto tr372;
case 221: goto tr69;
case 222: goto tr69;
case 223: goto tr69;
case 320: goto tr437;
case 224: goto tr262;
case 225: goto tr262;
case 226: goto tr262;
case 227: goto tr262;
case 228: goto tr262;
case 322: goto tr442;
case 229: goto tr268;
case 230: goto tr268;
case 231: goto tr268;
case 232: goto tr268;
case 233: goto tr268;
case 234: goto tr268;
case 235: goto tr268;
case 236: goto tr268;
case 324: goto tr447;
case 237: goto tr277;
case 238: goto tr277;
case 239: goto tr277;
case 240: goto tr277;
case 241: goto tr277;
case 242: goto tr277;
case 243: goto tr277;
case 244: goto tr277;
case 245: goto tr277;
case 246: goto tr277;
case 247: goto tr277;
case 248: goto tr277;
case 249: goto tr277;
case 250: goto tr277;
case 251: goto tr277;
case 252: goto tr277;
case 253: goto tr277;
case 254: goto tr277;
case 255: goto tr277;
case 256: goto tr277;
case 257: goto tr277;
case 258: goto tr277;
case 259: goto tr277;
case 260: goto tr277;
case 261: goto tr277;
case 262: goto tr277;
case 326: goto tr311;
case 263: goto tr311;
case 327: goto tr456;
case 328: goto tr456;
case 264: goto tr313;
case 329: goto tr457;
case 330: goto tr457;
case 265: goto tr313;
}
}
}
#line 1389 "ext/dtext/dtext.rl"
dstack_close(sm);
return sm;
}
static VALUE parse(int argc, VALUE * argv, VALUE self) {
VALUE input;
VALUE input0;
VALUE options;
VALUE opt_inline;
VALUE opt_strip;
VALUE opt_mentions;
VALUE ret;
rb_encoding * encoding = NULL;
StateMachine * sm = NULL;
bool f_strip = false;
bool f_inline = false;
bool f_mentions = true;
g_debug("start\n");
if (argc == 0) {
rb_raise(rb_eArgError, "wrong number of arguments (0 for 1)");
}
input = argv[0];
if (NIL_P(input)) {
return Qnil;
}
input0 = rb_str_dup(input);
input0 = rb_str_cat(input0, "\0", 1);
if (argc > 1) {
options = argv[1];
if (!NIL_P(options)) {
opt_strip = rb_hash_aref(options, ID2SYM(rb_intern("strip")));
if (RTEST(opt_strip)) {
f_strip = true;
}
opt_inline = rb_hash_aref(options, ID2SYM(rb_intern("inline")));
if (RTEST(opt_inline)) {
f_inline = true;
}
opt_mentions = rb_hash_aref(options, ID2SYM(rb_intern("disable_mentions")));
if (RTEST(opt_mentions)) {
f_mentions = false;
}
}
}
sm = parse_helper(RSTRING_PTR(input0), RSTRING_LEN(input0), f_strip, f_inline, f_mentions);
encoding = rb_enc_find("utf-8");
ret = rb_enc_str_new(sm->output->str, sm->output->len, encoding);
free_machine(sm);
return ret;
}
void Init_dtext() {
VALUE mDTextRagel = rb_define_module("DTextRagel");
rb_define_singleton_method(mDTextRagel, "parse", parse, -1);
}
|