]> granicus.if.org Git - php/commitdiff
Improve json parser code
authorJakub Zelenka <bukka@php.net>
Sun, 7 Jun 2015 14:22:09 +0000 (15:22 +0100)
committerJakub Zelenka <bukka@php.net>
Sun, 7 Jun 2015 14:22:09 +0000 (15:22 +0100)
ext/json/json_parser.tab.c
ext/json/json_parser.y

index a5f5c6fb095b70ffec273421e21388c1e3cb761f..45a982bbccc0f85957c605f9cd621530c08236b2 100644 (file)
@@ -514,10 +514,10 @@ static const yytype_uint8 yytranslate[] =
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint8 yyrline[] =
 {
-       0,    92,    92,    93,    97,    97,   101,   102,   106,   107,
-     111,   112,   113,   117,   118,   122,   122,   126,   127,   131,
-     132,   136,   137,   138,   142,   143,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   160
+       0,    92,    92,    98,   105,   105,   113,   114,   123,   126,
+     130,   135,   140,   147,   152,   159,   159,   167,   168,   177,
+     180,   184,   189,   194,   201,   202,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   219
 };
 #endif
 
@@ -1447,13 +1447,19 @@ yyreduce:
     {
         case 2:
 
-    { ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-1].value)); ZVAL_COPY_VALUE(parser->return_value, &(yyvsp[-1].value)); PHP_JSON_USE((yyvsp[0].value)); YYACCEPT; }
+    {
+                               ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-1].value));
+                               ZVAL_COPY_VALUE(parser->return_value, &(yyvsp[-1].value));
+                               PHP_JSON_USE((yyvsp[0].value)); YYACCEPT;
+                       }
 
     break;
 
   case 3:
 
-    { PHP_JSON_USE_2((yyval.value), (yyvsp[-1].value), (yyvsp[0].value)); }
+    {
+                               PHP_JSON_USE_2((yyval.value), (yyvsp[-1].value), (yyvsp[0].value));
+                       }
 
     break;
 
@@ -1465,49 +1471,70 @@ yyreduce:
 
   case 5:
 
-    { PHP_JSON_DEPTH_DEC; (yyval.value) = (yyvsp[-1].value); }
+    {
+                               PHP_JSON_DEPTH_DEC;
+                               (yyval.value) = (yyvsp[-1].value);
+                       }
 
     break;
 
   case 7:
 
-    { parser->scanner.errcode = PHP_JSON_ERROR_STATE_MISMATCH; YYERROR; }
+    {
+                               parser->scanner.errcode = PHP_JSON_ERROR_STATE_MISMATCH;
+                               YYERROR;
+                       }
 
     break;
 
   case 8:
 
-    { php_json_parser_object_init(parser, &(yyval.value)); }
+    {
+                               php_json_parser_object_init(parser, &(yyval.value));
+                       }
 
     break;
 
   case 10:
 
-    { php_json_parser_object_init(parser, &(yyval.value)); php_json_parser_object_update(parser, &(yyval.value), (yyvsp[0].pair).key, &(yyvsp[0].pair).val); }
+    {
+                               php_json_parser_object_init(parser, &(yyval.value));
+                               php_json_parser_object_update(parser, &(yyval.value), (yyvsp[0].pair).key, &(yyvsp[0].pair).val);
+                       }
 
     break;
 
   case 11:
 
-    { php_json_parser_object_update(parser, &(yyvsp[-2].value), (yyvsp[0].pair).key, &(yyvsp[0].pair).val); ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-2].value)); }
+    {
+                               php_json_parser_object_update(parser, &(yyvsp[-2].value), (yyvsp[0].pair).key, &(yyvsp[0].pair).val);
+                               ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-2].value));
+                       }
 
     break;
 
   case 12:
 
-    { PHP_JSON_USE_2((yyval.value), (yyvsp[-1].value), (yyvsp[0].value)); }
+    {
+                               PHP_JSON_USE_2((yyval.value), (yyvsp[-1].value), (yyvsp[0].value));
+                       }
 
     break;
 
   case 13:
 
-    { (yyval.pair).key = Z_STR((yyvsp[-2].value)); ZVAL_COPY_VALUE(&(yyval.pair).val, &(yyvsp[0].value)); }
+    {
+                               (yyval.pair).key = Z_STR((yyvsp[-2].value));
+                               ZVAL_COPY_VALUE(&(yyval.pair).val, &(yyvsp[0].value));
+                       }
 
     break;
 
   case 14:
 
-    { PHP_JSON_USE_2((yyval.pair), (yyvsp[-1].value), (yyvsp[0].value)); }
+    {
+                               PHP_JSON_USE_2((yyval.pair), (yyvsp[-1].value), (yyvsp[0].value));
+                       }
 
     break;
 
@@ -1519,43 +1546,62 @@ yyreduce:
 
   case 16:
 
-    { PHP_JSON_DEPTH_DEC; ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-1].value)); }
+    {
+                               PHP_JSON_DEPTH_DEC;
+                               ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-1].value));
+                       }
 
     break;
 
   case 18:
 
-    { parser->scanner.errcode = PHP_JSON_ERROR_STATE_MISMATCH; YYERROR; }
+    {
+                               parser->scanner.errcode = PHP_JSON_ERROR_STATE_MISMATCH;
+                               YYERROR;
+                       }
 
     break;
 
   case 19:
 
-    { php_json_parser_array_init(&(yyval.value)); }
+    {
+                               php_json_parser_array_init(&(yyval.value));
+                       }
 
     break;
 
   case 21:
 
-    { php_json_parser_array_init(&(yyval.value)); php_json_parser_array_append(&(yyval.value), &(yyvsp[0].value)); }
+    {
+                               php_json_parser_array_init(&(yyval.value));
+                               php_json_parser_array_append(&(yyval.value), &(yyvsp[0].value));
+                       }
 
     break;
 
   case 22:
 
-    { php_json_parser_array_append(&(yyvsp[-2].value), &(yyvsp[0].value)); ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-2].value)); }
+    {
+                               php_json_parser_array_append(&(yyvsp[-2].value), &(yyvsp[0].value));
+                               ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-2].value));
+                       }
 
     break;
 
   case 23:
 
-    { PHP_JSON_USE_2((yyval.value), (yyvsp[-1].value), (yyvsp[0].value)); }
+    {
+                               PHP_JSON_USE_2((yyval.value), (yyvsp[-1].value), (yyvsp[0].value));
+                       }
 
     break;
 
   case 36:
 
-    { PHP_JSON_USE_1((yyval.value), (yyvsp[0].value)); YYERROR; }
+    {
+                               PHP_JSON_USE_1((yyval.value), (yyvsp[0].value));
+                               YYERROR;
+                       }
 
     break;
 
index 044b82eb510981b91fd9fb57b92ce7ddbab208bc..500a0ff11d07cb73a9448b11fb7903837cf0cbf0 100644 (file)
@@ -89,53 +89,112 @@ void php_json_parser_array_append(zval *array, zval *zvalue);
 %% /* Rules */
 
 start:
-               value PHP_JSON_T_EOI    { ZVAL_COPY_VALUE(&$$, &$1); ZVAL_COPY_VALUE(parser->return_value, &$1); PHP_JSON_USE($2); YYACCEPT; }
-       |       value errlex            { PHP_JSON_USE_2($$, $1, $2); }
+               value PHP_JSON_T_EOI
+                       {
+                               ZVAL_COPY_VALUE(&$$, &$1);
+                               ZVAL_COPY_VALUE(parser->return_value, &$1);
+                               PHP_JSON_USE($2); YYACCEPT;
+                       }
+       |       value errlex
+                       {
+                               PHP_JSON_USE_2($$, $1, $2);
+                       }
 ;
 
 object:
-               '{' { PHP_JSON_DEPTH_INC; } members object_end { PHP_JSON_DEPTH_DEC; $$ = $3; }
+               '{' { PHP_JSON_DEPTH_INC; } members object_end
+                       {
+                               PHP_JSON_DEPTH_DEC;
+                               $$ = $3;
+                       }
 ;
 
 object_end:
                '}'
-       |       ']'                     { parser->scanner.errcode = PHP_JSON_ERROR_STATE_MISMATCH; YYERROR; }
+       |       ']'
+                       {
+                               parser->scanner.errcode = PHP_JSON_ERROR_STATE_MISMATCH;
+                               YYERROR;
+                       }
 ;
 
 members:
-               /* empty */             { php_json_parser_object_init(parser, &$$); }
+               /* empty */
+                       {
+                               php_json_parser_object_init(parser, &$$);
+                       }
        |       member
 ;
 
 member:
-               pair                    { php_json_parser_object_init(parser, &$$); php_json_parser_object_update(parser, &$$, $1.key, &$1.val); }
-       |       member ',' pair         { php_json_parser_object_update(parser, &$1, $3.key, &$3.val); ZVAL_COPY_VALUE(&$$, &$1); }
-       |       member errlex           { PHP_JSON_USE_2($$, $1, $2); }
+               pair
+                       {
+                               php_json_parser_object_init(parser, &$$);
+                               php_json_parser_object_update(parser, &$$, $1.key, &$1.val);
+                       }
+       |       member ',' pair
+                       {
+                               php_json_parser_object_update(parser, &$1, $3.key, &$3.val);
+                               ZVAL_COPY_VALUE(&$$, &$1);
+                       }
+       |       member errlex
+                       {
+                               PHP_JSON_USE_2($$, $1, $2);
+                       }
 ;
 
 pair:
-               key ':' value           { $$.key = Z_STR($1); ZVAL_COPY_VALUE(&$$.val, &$3); }
-       |       key errlex              { PHP_JSON_USE_2($$, $1, $2); }
+               key ':' value
+                       {
+                               $$.key = Z_STR($1);
+                               ZVAL_COPY_VALUE(&$$.val, &$3);
+                       }
+       |       key errlex
+                       {
+                               PHP_JSON_USE_2($$, $1, $2);
+                       }
 ;
 
 array:
-               '[' { PHP_JSON_DEPTH_INC; } elements array_end { PHP_JSON_DEPTH_DEC; ZVAL_COPY_VALUE(&$$, &$3); }
+               '[' { PHP_JSON_DEPTH_INC; } elements array_end
+                       {
+                               PHP_JSON_DEPTH_DEC;
+                               ZVAL_COPY_VALUE(&$$, &$3);
+                       }
 ;
 
 array_end:
                ']'
-       |       '}'                     { parser->scanner.errcode = PHP_JSON_ERROR_STATE_MISMATCH; YYERROR; }
+       |       '}'
+                       {
+                               parser->scanner.errcode = PHP_JSON_ERROR_STATE_MISMATCH;
+                               YYERROR;
+                       }
 ;
 
 elements:
-               /* empty */             { php_json_parser_array_init(&$$); }
+               /* empty */
+                       {
+                               php_json_parser_array_init(&$$);
+                       }
        |       element
 ;
 
 element:
-               value                   { php_json_parser_array_init(&$$); php_json_parser_array_append(&$$, &$1); }
-       |       element ',' value       { php_json_parser_array_append(&$1, &$3); ZVAL_COPY_VALUE(&$$, &$1); }
-       |       element errlex          { PHP_JSON_USE_2($$, $1, $2); }
+               value
+                       {
+                               php_json_parser_array_init(&$$);
+                               php_json_parser_array_append(&$$, &$1);
+                       }
+       |       element ',' value
+                       {
+                               php_json_parser_array_append(&$1, &$3);
+                               ZVAL_COPY_VALUE(&$$, &$1);
+                       }
+       |       element errlex
+                       {
+                               PHP_JSON_USE_2($$, $1, $2);
+                       }
 ;
 
 key:
@@ -157,7 +216,11 @@ value:
 ;
 
 errlex:
-               PHP_JSON_T_ERROR             { PHP_JSON_USE_1($$, $1); YYERROR; }
+               PHP_JSON_T_ERROR
+                       {
+                               PHP_JSON_USE_1($$, $1);
+                               YYERROR;
+                       }
 ;
        
 %% /* Functions */