Modules
ADT Database GTK2 GUI IP PiJAX Public Sql Stdio Subversion System Tools Xosd lua v4l2 wx
Recent Changes
Public.Parser.XML2 1.50
Public.ZeroMQ 1.1
Public.Template.Mustache 1.0
Public.Protocols.XMPP 1.4
Sql.Provider.jdbc 1.0
Popular Downloads
Public.Parser.JSON2 1.0
Public.Parser.JSON 0.2
GTK2 2.23
Public.Web.FCGI 1.8
Public.Parser.XML2 1.48
|
Module Information
Public.Parser.JSON2
Viewing contents of Public_Parser_JSON2-0.10/json_mapping.c
#line 1 "src/json_mapping.rl"
// vim:syntax=ragel
#line 53 "src/json_mapping.rl"
static p_wchar2 *_parse_JSON_mapping(p_wchar2 *p, p_wchar2 *pe, struct parser_state *state) {
p_wchar2 *i = p;
struct mapping *m;
int cs;
int c = 0;
#line 16 "work/json_mapping.c"
static const int JSON_mapping_start = 1;
static const int JSON_mapping_first_final = 6;
static const int JSON_mapping_error = 0;
static const int JSON_mapping_en_main = 1;
#line 62 "src/json_mapping.rl"
if (!state->validate) {
m = debug_allocate_mapping(5);
}
#line 30 "work/json_mapping.c"
{
cs = JSON_mapping_start;
}
#line 68 "src/json_mapping.rl"
#line 36 "work/json_mapping.c"
{
if ( p == pe )
goto _out;
switch ( cs )
{
case 1:
if ( (*p) == 123 )
goto st2;
goto st0;
st0:
goto _out0;
st2:
if ( ++p == pe )
goto _out2;
case 2:
switch( (*p) ) {
case 13: goto st2;
case 32: goto st2;
case 34: goto tr2;
case 125: goto st6;
}
if ( 9 <= (*p) && (*p) <= 10 )
goto st2;
goto st0;
tr2:
#line 24 "src/json_mapping.rl"
{
state->level++;
i = _parse_JSON_string(p, pe, state);
state->level--;
if (i == NULL) {
goto failure;
}
c++;
{p = (( i))-1;}
}
goto st3;
st3:
if ( ++p == pe )
goto _out3;
case 3:
#line 80 "work/json_mapping.c"
switch( (*p) ) {
case 13: goto st3;
case 32: goto st3;
case 58: goto st4;
}
if ( 9 <= (*p) && (*p) <= 10 )
goto st3;
goto st0;
st4:
if ( ++p == pe )
goto _out4;
case 4:
switch( (*p) ) {
case 13: goto st4;
case 32: goto st4;
case 34: goto tr6;
case 43: goto tr6;
case 91: goto tr6;
case 102: goto tr6;
case 110: goto tr6;
case 116: goto tr6;
case 123: goto tr6;
}
if ( (*p) < 45 ) {
if ( 9 <= (*p) && (*p) <= 10 )
goto st4;
} else if ( (*p) > 46 ) {
if ( 48 <= (*p) && (*p) <= 57 )
goto tr6;
} else
goto tr6;
goto st0;
tr6:
#line 8 "src/json_mapping.rl"
{
state->level++;
i = _parse_JSON(p, pe, state);
state->level--;
if (i == NULL) {
goto failure;
} else if (!state->validate) {
mapping_insert(m, &(Pike_sp[-2]), &(Pike_sp[-1]));
pop_2_elems();
}
c++;
{p = (( i))-1;}
}
goto st5;
st5:
if ( ++p == pe )
goto _out5;
case 5:
#line 135 "work/json_mapping.c"
switch( (*p) ) {
case 13: goto st5;
case 32: goto st5;
case 44: goto st2;
case 125: goto st6;
}
if ( 9 <= (*p) && (*p) <= 10 )
goto st5;
goto st0;
st6:
if ( ++p == pe )
goto _out6;
case 6:
#line 52 "src/json_mapping.rl"
{ goto _out6; }
#line 151 "work/json_mapping.c"
goto st0;
}
_out0: cs = 0; goto _out;
_out2: cs = 2; goto _out;
_out3: cs = 3; goto _out;
_out4: cs = 4; goto _out;
_out5: cs = 5; goto _out;
_out6: cs = 6; goto _out;
_out: {}
}
#line 69 "src/json_mapping.rl"
if (cs >= JSON_mapping_first_final) {
if (!state->validate) {
push_mapping(m);
}
return p;
}
push_int((INT_TYPE)p);
failure:
if (!state->validate) {
if (c & 1) stack_pop_keep_top(); // remove key
free_mapping(m);
}
return NULL;
}
|
|
|