Skip to content

Commit

Permalink
verbose debugging
Browse files Browse the repository at this point in the history
  • Loading branch information
eloraiby committed Jun 14, 2015
1 parent 217d6ce commit 199431d
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 60 deletions.
21 changes: 13 additions & 8 deletions json-parser/lexer.c
Original file line number Diff line number Diff line change
Expand Up @@ -245,24 +245,27 @@ json_parse(const char* str)

parser_.root = NULL;
parser_.error_code = 0;
parser_.token_start = ts;
parser_.token_end = te;
parser_.token_line = line;

yyparser = parser_alloc(malloc);

memset(tmp, 0, sizeof(tmp));


#line 255 "/home/aifu/Projects/json-parser/json-parser/lexer.c"
#line 258 "/home/aifu/Projects/json-parser/json-parser/lexer.c"
{
cs = scanner_start;
ts = 0;
te = 0;
act = 0;
}

#line 188 "/home/aifu/Projects/json-parser/json-parser/lexer.rl"
#line 191 "/home/aifu/Projects/json-parser/json-parser/lexer.rl"


#line 266 "/home/aifu/Projects/json-parser/json-parser/lexer.c"
#line 269 "/home/aifu/Projects/json-parser/json-parser/lexer.c"
{
int _klen;
unsigned int _trans;
Expand All @@ -283,7 +286,7 @@ json_parse(const char* str)
#line 1 "NONE"
{ts = p;}
break;
#line 287 "/home/aifu/Projects/json-parser/json-parser/lexer.c"
#line 290 "/home/aifu/Projects/json-parser/json-parser/lexer.c"
}
}

Expand Down Expand Up @@ -501,7 +504,7 @@ json_parse(const char* str)
}
}
break;
#line 505 "/home/aifu/Projects/json-parser/json-parser/lexer.c"
#line 508 "/home/aifu/Projects/json-parser/json-parser/lexer.c"
}
}

Expand All @@ -514,7 +517,7 @@ json_parse(const char* str)
#line 1 "NONE"
{ts = 0;}
break;
#line 518 "/home/aifu/Projects/json-parser/json-parser/lexer.c"
#line 521 "/home/aifu/Projects/json-parser/json-parser/lexer.c"
}
}

Expand All @@ -534,18 +537,20 @@ json_parse(const char* str)
_out: {}
}

#line 190 "/home/aifu/Projects/json-parser/json-parser/lexer.rl"
#line 193 "/home/aifu/Projects/json-parser/json-parser/lexer.rl"

/* Check if we failed. */
if ( cs == scanner_error ) {
/* Machine failed before finding a token. */
// printf("PARSE ERROR\n");
printf("PARSE ERROR\n");
parser_free(yyparser, free);
return parser_.root; /* failed! */
}

parser_advance(yyparser, 0, NULL, &parser_);

if( parser_.error_code != 0 ) {
parser_free(yyparser, free);
return NULL;
}

Expand Down
7 changes: 6 additions & 1 deletion json-parser/lexer.rl
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,9 @@ json_parse(const char* str)

parser_.root = NULL;
parser_.error_code = 0;
parser_.token_start = ts;
parser_.token_end = te;
parser_.token_line = line;

yyparser = parser_alloc(malloc);

Expand All @@ -191,13 +194,15 @@ json_parse(const char* str)
/* Check if we failed. */
if ( cs == scanner_error ) {
/* Machine failed before finding a token. */
// printf("PARSE ERROR\n");
printf("PARSE ERROR\n");
parser_free(yyparser, free);
return parser_.root; /* failed! */
}

parser_advance(yyparser, 0, NULL, &parser_);

if( parser_.error_code != 0 ) {
parser_free(yyparser, free);
return NULL;
}

Expand Down
37 changes: 21 additions & 16 deletions json-parser/parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -394,14 +394,14 @@ static void yy_destructor(
case 9: /* JSON_TOK_BOOLEAN */
case 10: /* JSON_TOK_NONE */
{
#line 60 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 63 "/home/aifu/Projects/json-parser/json-parser/parser.y"
json_free((yypminor->yy0));
#line 400 "/home/aifu/Projects/json-parser/json-parser/parser.c"
}
break;
case 12: /* pair */
{
#line 51 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 56 "/home/aifu/Projects/json-parser/json-parser/parser.y"
free((yypminor->yy37).key); json_free((yypminor->yy37).value);
#line 407 "/home/aifu/Projects/json-parser/json-parser/parser.c"
}
Expand All @@ -411,14 +411,14 @@ static void yy_destructor(
case 16: /* array */
case 17: /* value */
{
#line 53 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 58 "/home/aifu/Projects/json-parser/json-parser/parser.y"
json_free((yypminor->yy28));
#line 417 "/home/aifu/Projects/json-parser/json-parser/parser.c"
}
break;
case 18: /* members */
{
#line 52 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 57 "/home/aifu/Projects/json-parser/json-parser/parser.y"
json_free((yypminor->yy0));
#line 424 "/home/aifu/Projects/json-parser/json-parser/parser.c"
}
Expand Down Expand Up @@ -731,62 +731,62 @@ static void yy_reduce(
*/
case 0: /* root ::= object */
case 1: /* root ::= array */ yytestcase(yyruleno==1);
#line 65 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 71 "/home/aifu/Projects/json-parser/json-parser/parser.y"
{ pret->root = yymsp[0].minor.yy28; }
#line 737 "/home/aifu/Projects/json-parser/json-parser/parser.c"
break;
case 2: /* pair ::= JSON_TOK_STRING JSON_TOK_COL value */
#line 69 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 75 "/home/aifu/Projects/json-parser/json-parser/parser.y"
{ yygotominor.yy37 = json_pair(yymsp[-2].minor.yy0->value.string, yymsp[0].minor.yy28); free(yymsp[-2].minor.yy0); yy_destructor(yypParser,2,&yymsp[-1].minor);
}
#line 743 "/home/aifu/Projects/json-parser/json-parser/parser.c"
break;
case 3: /* members ::= pair */
#line 71 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 77 "/home/aifu/Projects/json-parser/json-parser/parser.y"
{ yygotominor.yy0 = json_object(); json_add_pair(yymsp[0].minor.yy37, yygotominor.yy0); }
#line 748 "/home/aifu/Projects/json-parser/json-parser/parser.c"
break;
case 4: /* members ::= members JSON_TOK_COMMA pair */
#line 72 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 78 "/home/aifu/Projects/json-parser/json-parser/parser.y"
{ yygotominor.yy0 = json_add_pair(yymsp[0].minor.yy37, yymsp[-2].minor.yy0); yy_destructor(yypParser,3,&yymsp[-1].minor);
}
#line 754 "/home/aifu/Projects/json-parser/json-parser/parser.c"
break;
case 5: /* object ::= JSON_TOK_LBRACK JSON_TOK_RBRACK */
#line 74 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 80 "/home/aifu/Projects/json-parser/json-parser/parser.y"
{ yygotominor.yy28 = json_object(); yy_destructor(yypParser,4,&yymsp[-1].minor);
yy_destructor(yypParser,5,&yymsp[0].minor);
}
#line 761 "/home/aifu/Projects/json-parser/json-parser/parser.c"
break;
case 6: /* object ::= JSON_TOK_LBRACK members JSON_TOK_RBRACK */
#line 75 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 81 "/home/aifu/Projects/json-parser/json-parser/parser.y"
{ yygotominor.yy28 = yymsp[-1].minor.yy0; yy_destructor(yypParser,4,&yymsp[-2].minor);
yy_destructor(yypParser,5,&yymsp[0].minor);
}
#line 768 "/home/aifu/Projects/json-parser/json-parser/parser.c"
break;
case 7: /* array ::= JSON_TOK_LSQB JSON_TOK_RSQB */
#line 77 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 83 "/home/aifu/Projects/json-parser/json-parser/parser.y"
{ yygotominor.yy28 = json_array(); yy_destructor(yypParser,6,&yymsp[-1].minor);
yy_destructor(yypParser,7,&yymsp[0].minor);
}
#line 775 "/home/aifu/Projects/json-parser/json-parser/parser.c"
break;
case 8: /* array ::= JSON_TOK_LSQB elements JSON_TOK_RSQB */
#line 78 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 84 "/home/aifu/Projects/json-parser/json-parser/parser.y"
{ yygotominor.yy28 = yymsp[-1].minor.yy28; yy_destructor(yypParser,6,&yymsp[-2].minor);
yy_destructor(yypParser,7,&yymsp[0].minor);
}
#line 782 "/home/aifu/Projects/json-parser/json-parser/parser.c"
break;
case 9: /* elements ::= value */
#line 80 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 86 "/home/aifu/Projects/json-parser/json-parser/parser.y"
{ yygotominor.yy28 = json_array(); json_add_element(yymsp[0].minor.yy28, yygotominor.yy28); }
#line 787 "/home/aifu/Projects/json-parser/json-parser/parser.c"
break;
case 10: /* elements ::= elements JSON_TOK_COMMA value */
#line 81 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 87 "/home/aifu/Projects/json-parser/json-parser/parser.y"
{ yygotominor.yy28 = json_add_element(yymsp[0].minor.yy28, yymsp[-2].minor.yy28); yy_destructor(yypParser,3,&yymsp[-1].minor);
}
#line 793 "/home/aifu/Projects/json-parser/json-parser/parser.c"
Expand All @@ -795,13 +795,13 @@ static void yy_reduce(
case 12: /* value ::= JSON_TOK_NUMBER */ yytestcase(yyruleno==12);
case 13: /* value ::= JSON_TOK_BOOLEAN */ yytestcase(yyruleno==13);
case 14: /* value ::= JSON_TOK_NONE */ yytestcase(yyruleno==14);
#line 83 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 89 "/home/aifu/Projects/json-parser/json-parser/parser.y"
{ yygotominor.yy28 = yymsp[0].minor.yy0; }
#line 801 "/home/aifu/Projects/json-parser/json-parser/parser.c"
break;
case 15: /* value ::= object */
case 16: /* value ::= array */ yytestcase(yyruleno==16);
#line 87 "/home/aifu/Projects/json-parser/json-parser/parser.y"
#line 93 "/home/aifu/Projects/json-parser/json-parser/parser.y"
{ yygotominor.yy28 = yymsp[0].minor.yy28; }
#line 807 "/home/aifu/Projects/json-parser/json-parser/parser.c"
break;
Expand Down Expand Up @@ -870,6 +870,11 @@ static void yy_syntax_error(
){
parserARG_FETCH;
#define TOKEN (yyminor.yy0)
#line 44 "/home/aifu/Projects/json-parser/json-parser/parser.y"

fprintf(stderr, "error starting @: %s", pret->token_start);
pret->error_code = 1;
#line 878 "/home/aifu/Projects/json-parser/json-parser/parser.c"
parserARG_STORE; /* Suppress warning about unused %extra_argument variable */
}

Expand Down
8 changes: 7 additions & 1 deletion json-parser/parser.y
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@
pret->error_code = 1;
}

%syntax_error {
fprintf(stderr, "error starting @: %s", pret->token_start);
pret->error_code = 1;
}

%type pair { json_pair_t }
%type memnbers { json_value_t* }
%type elements { json_value_t* }
Expand All @@ -55,9 +60,10 @@
%destructor object { json_free($$); }
%destructor value { json_free($$); }

%token_destructor { json_free($$); }

%token_type { json_value_t* }

%token_destructor { json_free($$); }

%start_symbol root

Expand Down
68 changes: 34 additions & 34 deletions test/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,39 +128,39 @@ test_citm_catalog() {

static char*
fail_tests[] = {
"jsonchecker/fail01_EXCLUDE.json",
"jsonchecker/fail02.json",
"jsonchecker/fail03.json",
"jsonchecker/fail04.json",
"jsonchecker/fail05.json",
// "jsonchecker/fail01_EXCLUDE.json",
// "jsonchecker/fail02.json",
// "jsonchecker/fail03.json",
// "jsonchecker/fail04.json",
// "jsonchecker/fail05.json",
"jsonchecker/fail06.json",
"jsonchecker/fail07.json",
"jsonchecker/fail08.json",
"jsonchecker/fail09.json",
"jsonchecker/fail10.json",
"jsonchecker/fail11.json",
"jsonchecker/fail12.json",
"jsonchecker/fail13.json",
"jsonchecker/fail14.json",
"jsonchecker/fail15.json",
"jsonchecker/fail16.json",
"jsonchecker/fail17.json",
"jsonchecker/fail18_EXCLUDE.json",
"jsonchecker/fail19.json",
"jsonchecker/fail20.json",
"jsonchecker/fail21.json",
"jsonchecker/fail22.json",
"jsonchecker/fail23.json",
"jsonchecker/fail24.json",
"jsonchecker/fail25.json",
"jsonchecker/fail26.json",
"jsonchecker/fail27.json",
"jsonchecker/fail28.json",
"jsonchecker/fail29.json",
"jsonchecker/fail30.json",
"jsonchecker/fail31.json",
"jsonchecker/fail32.json",
"jsonchecker/fail33.json",
// "jsonchecker/fail07.json",
// "jsonchecker/fail08.json",
// "jsonchecker/fail09.json",
// "jsonchecker/fail10.json",
// "jsonchecker/fail11.json",
// "jsonchecker/fail12.json",
// "jsonchecker/fail13.json",
// "jsonchecker/fail14.json",
// "jsonchecker/fail15.json",
// "jsonchecker/fail16.json",
// "jsonchecker/fail17.json",
// "jsonchecker/fail18_EXCLUDE.json",
// "jsonchecker/fail19.json",
// "jsonchecker/fail20.json",
// "jsonchecker/fail21.json",
// "jsonchecker/fail22.json",
// "jsonchecker/fail23.json",
// "jsonchecker/fail24.json",
// "jsonchecker/fail25.json",
// "jsonchecker/fail26.json",
// "jsonchecker/fail27.json",
// "jsonchecker/fail28.json",
// "jsonchecker/fail29.json",
// "jsonchecker/fail30.json",
// "jsonchecker/fail31.json",
// "jsonchecker/fail32.json",
// "jsonchecker/fail33.json",

};

Expand All @@ -180,8 +180,8 @@ test_fail() {

int
main(int argc, char* argv[]) {
test_simple_object();
test_simple_object2();
// test_simple_object();
// test_simple_object2();
// test_twitter();
// test_canada();
// test_citm_catalog();
Expand Down

0 comments on commit 199431d

Please sign in to comment.