
Contents of /Public_Parser_JSON2-0.8/json_number_utf8.c:
#line 1 "src/json_number_utf8.rl"
// vim:syntax=ragel
#include <stdio.h>
#line 20 "src/json_number_utf8.rl"
char *_parse_JSON_number_utf8(char *p, char *pe, struct parser_state *state) {
char *i = p;
int cs;
int d = 0;
double f;
#line 17 "work/json_number_utf8.c"
static const int JSON_number_start = 1;
static const int JSON_number_first_final = 6;
static const int JSON_number_error = 0;
static const int JSON_number_en_main = 1;
#line 29 "src/json_number_utf8.rl"
#line 27 "work/json_number_utf8.c"
{
cs = JSON_number_start;
}
#line 31 "src/json_number_utf8.rl"
#line 33 "work/json_number_utf8.c"
{
if ( p == pe )
goto _out;
switch ( cs )
{
case 1:
switch( (*p) ) {
case 45: goto st2;
case 46: goto tr2;
case 48: goto st6;
}
if ( 49 <= (*p) && (*p) <= 57 )
goto st10;
goto st0;
st0:
goto _out0;
st2:
if ( ++p == pe )
goto _out2;
case 2:
if ( (*p) == 48 )
goto st6;
if ( 49 <= (*p) && (*p) <= 57 )
goto st10;
goto st0;
st6:
if ( ++p == pe )
goto _out6;
case 6:
switch( (*p) ) {
case 13: goto tr8;
case 32: goto tr8;
case 44: goto tr8;
case 46: goto tr2;
case 58: goto tr8;
case 69: goto tr9;
case 93: goto tr8;
case 101: goto tr9;
case 125: goto tr8;
}
if ( 9 <= (*p) && (*p) <= 10 )
goto tr8;
goto st0;
tr8:
#line 11 "src/json_number_utf8.rl"
{
goto _out7;
}
goto st7;
st7:
if ( ++p == pe )
goto _out7;
case 7:
#line 87 "work/json_number_utf8.c"
goto st0;
tr2:
#line 18 "src/json_number_utf8.rl"
{d = 1;}
goto st3;
st3:
if ( ++p == pe )
goto _out3;
case 3:
#line 97 "work/json_number_utf8.c"
if ( 48 <= (*p) && (*p) <= 57 )
goto st8;
goto st0;
st8:
if ( ++p == pe )
goto _out8;
case 8:
switch( (*p) ) {
case 13: goto tr8;
case 32: goto tr8;
case 44: goto tr8;
case 58: goto tr8;
case 69: goto tr9;
case 93: goto tr8;
case 101: goto tr9;
case 125: goto tr8;
}
if ( (*p) > 10 ) {
if ( 48 <= (*p) && (*p) <= 57 )
goto st8;
} else if ( (*p) >= 9 )
goto tr8;
goto st0;
tr9:
#line 17 "src/json_number_utf8.rl"
{d = 1;}
goto st4;
st4:
if ( ++p == pe )
goto _out4;
case 4:
#line 129 "work/json_number_utf8.c"
switch( (*p) ) {
case 43: goto st5;
case 45: goto st5;
}
if ( 48 <= (*p) && (*p) <= 57 )
goto st9;
goto st0;
st5:
if ( ++p == pe )
goto _out5;
case 5:
if ( 48 <= (*p) && (*p) <= 57 )
goto st9;
goto st0;
st9:
if ( ++p == pe )
goto _out9;
case 9:
switch( (*p) ) {
case 13: goto tr8;
case 32: goto tr8;
case 44: goto tr8;
case 58: goto tr8;
case 93: goto tr8;
case 125: goto tr8;
}
if ( (*p) > 10 ) {
if ( 48 <= (*p) && (*p) <= 57 )
goto st9;
} else if ( (*p) >= 9 )
goto tr8;
goto st0;
st10:
if ( ++p == pe )
goto _out10;
case 10:
switch( (*p) ) {
case 13: goto tr8;
case 32: goto tr8;
case 44: goto tr8;
case 46: goto tr2;
case 58: goto tr8;
case 69: goto tr9;
case 93: goto tr8;
case 101: goto tr9;
case 125: goto tr8;
}
if ( (*p) > 10 ) {
if ( 48 <= (*p) && (*p) <= 57 )
goto st10;
} else if ( (*p) >= 9 )
goto tr8;
goto st0;
}
_out0: cs = 0; goto _out;
_out2: cs = 2; goto _out;
_out6: cs = 6; goto _out;
_out7: cs = 7; goto _out;
_out3: cs = 3; goto _out;
_out8: cs = 8; goto _out;
_out4: cs = 4; goto _out;
_out5: cs = 5; goto _out;
_out9: cs = 9; goto _out;
_out10: cs = 10; goto _out;
_out: {}
}
#line 32 "src/json_number_utf8.rl"
if (cs >= JSON_number_first_final) {
if (!state->validate) {
char temp = *p;
*p = 0;
if (d) {
if (1 != sscanf(i, "%lf", &f)) {
*p = temp;
push_int((int)i);
return NULL;
}
push_float(f);
} else {
if (1 != sscanf(i, "%d", &d)) {
*p = temp;
push_int((int)i);
return NULL;
}
push_int(d);
}
*p = temp;
}
return p;
}
push_int((int)p);
return NULL; // make gcc happy
}