diff options
author | Jakub Zelenka <bukka@php.net> | 2017-06-18 18:28:54 +0100 |
---|---|---|
committer | Jakub Zelenka <bukka@php.net> | 2017-06-18 18:28:54 +0100 |
commit | bfa9362d430eae38fc101fddc747b7fe185f6d55 (patch) | |
tree | 5421b1ddbcb8c037d3f292fda8dc2cb11cb7d1ed | |
parent | 7275084388b504d23a1b9ae11ea9a94970cbe526 (diff) | |
parent | 887fabe78f61d338dde9a1d485ac8aff8b7d89e9 (diff) | |
download | php-git-bfa9362d430eae38fc101fddc747b7fe185f6d55.tar.gz |
Merge branch 'PHP-7.0' into PHP-7.1
-rw-r--r-- | ext/json/README | 2 | ||||
-rw-r--r-- | ext/json/json_scanner.c | 1317 | ||||
-rw-r--r-- | ext/json/php_json_scanner_defs.h | 2 |
3 files changed, 626 insertions, 695 deletions
diff --git a/ext/json/README b/ext/json/README index 4daa800ff3..491e62964d 100644 --- a/ext/json/README +++ b/ext/json/README @@ -8,7 +8,7 @@ data-interchange format as specified in RFC 7159 The parser is implemented using re2c and Bison. The used versions of both tools for generating files in the repository are following: -re2c 0.14.3 +re2c 0.16 Bison 3.0.4 It is recommended to do all contributions to the JSON extension diff --git a/ext/json/json_scanner.c b/ext/json/json_scanner.c index 81b79bde6d..7104c3ea61 100644 --- a/ext/json/json_scanner.c +++ b/ext/json/json_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 */ +/* Generated by re2c 0.16 */ /* +----------------------------------------------------------------------+ | PHP Version 7 | @@ -115,13 +115,13 @@ yyc_JS: { static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 0, 0, 0, 128, 0, 0, + 0, 64, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, + 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -147,47 +147,46 @@ yyc_JS: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - yych = *YYCURSOR; if (yych <= ']') { if (yych <= '"') { if (yych <= '\f') { if (yych <= 0x08) { - if (yych >= 0x01) goto yy4; + if (yych >= 0x01) goto yy5; } else { - if (yych <= '\t') goto yy6; - if (yych <= '\n') goto yy8; - goto yy4; + if (yych <= '\t') goto yy7; + if (yych <= '\n') goto yy10; + goto yy5; } } else { if (yych <= 0x1F) { - if (yych <= '\r') goto yy9; - goto yy4; + if (yych <= '\r') goto yy11; + goto yy5; } else { - if (yych <= ' ') goto yy10; - if (yych <= '!') goto yy11; - goto yy13; + if (yych <= ' ') goto yy7; + if (yych <= '!') goto yy12; + goto yy14; } } } else { if (yych <= '0') { if (yych <= ',') { - if (yych <= '+') goto yy11; - goto yy15; + if (yych <= '+') goto yy12; + goto yy16; } else { - if (yych <= '-') goto yy17; - if (yych <= '/') goto yy11; - goto yy18; + if (yych <= '-') goto yy18; + if (yych <= '/') goto yy12; + goto yy19; } } else { if (yych <= 'Z') { - if (yych <= '9') goto yy20; - if (yych <= ':') goto yy21; - goto yy11; + if (yych <= '9') goto yy21; + if (yych <= ':') goto yy23; + goto yy12; } else { - if (yych <= '[') goto yy23; - if (yych <= '\\') goto yy11; - goto yy25; + if (yych <= '[') goto yy25; + if (yych <= '\\') goto yy12; + goto yy27; } } } @@ -195,41 +194,41 @@ yyc_JS: if (yych <= '}') { if (yych <= 's') { if (yych <= 'f') { - if (yych <= 'e') goto yy11; - goto yy27; + if (yych <= 'e') goto yy12; + goto yy29; } else { - if (yych == 'n') goto yy28; - goto yy11; + if (yych == 'n') goto yy30; + goto yy12; } } else { if (yych <= 'z') { - if (yych <= 't') goto yy29; - goto yy11; + if (yych <= 't') goto yy31; + goto yy12; } else { - if (yych <= '{') goto yy30; - if (yych <= '|') goto yy11; - goto yy32; + if (yych <= '{') goto yy32; + if (yych <= '|') goto yy12; + goto yy34; } } } else { if (yych <= 0xEC) { if (yych <= 0xC1) { - if (yych <= 0x7F) goto yy11; - goto yy34; + if (yych <= 0x7F) goto yy12; + goto yy36; } else { - if (yych <= 0xDF) goto yy36; - if (yych <= 0xE0) goto yy37; - goto yy38; + if (yych <= 0xDF) goto yy38; + if (yych <= 0xE0) goto yy39; + goto yy40; } } else { if (yych <= 0xF0) { - if (yych <= 0xED) goto yy39; + if (yych <= 0xED) goto yy41; if (yych <= 0xEF) goto yy40; - goto yy41; + goto yy42; } else { - if (yych <= 0xF3) goto yy42; - if (yych <= 0xF4) goto yy43; - goto yy34; + if (yych <= 0xF3) goto yy43; + if (yych <= 0xF4) goto yy44; + goto yy36; } } } @@ -243,36 +242,36 @@ yyc_JS: return PHP_JSON_T_ERROR; } } -yy4: +yy5: ++YYCURSOR; { s->errcode = PHP_JSON_ERROR_CTRL_CHAR; return PHP_JSON_T_ERROR; } -yy6: +yy7: ++YYCURSOR; yych = *YYCURSOR; - goto yy81; -yy7: - { goto std; } yy8: - yych = *++YYCURSOR; - goto yy7; + if (yybm[0+yych] & 64) { + goto yy7; + } yy9: - yych = *++YYCURSOR; - if (yych == '\n') goto yy82; - goto yy81; + { goto std; } yy10: yych = *++YYCURSOR; - goto yy81; + goto yy9; yy11: - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '\n') goto yy10; + goto yy8; yy12: + ++YYCURSOR; +yy13: { s->errcode = PHP_JSON_ERROR_SYNTAX; return PHP_JSON_T_ERROR; } -yy13: +yy14: ++YYCURSOR; { s->str_start = s->cursor; @@ -280,25 +279,25 @@ yy13: PHP_JSON_CONDITION_SET(STR_P1); PHP_JSON_CONDITION_GOTO(STR_P1); } -yy15: +yy16: ++YYCURSOR; { return ','; } -yy17: - yych = *++YYCURSOR; - if (yych <= '/') goto yy12; - if (yych <= '0') goto yy79; - if (yych <= '9') goto yy69; - goto yy12; yy18: + yych = *++YYCURSOR; + if (yych <= '/') goto yy13; + if (yych <= '0') goto yy19; + if (yych <= '9') goto yy21; + goto yy13; +yy19: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == '.') goto yy71; + if (yych == '.') goto yy45; } else { - if (yych <= 'E') goto yy72; - if (yych == 'e') goto yy72; + if (yych <= 'E') goto yy47; + if (yych == 'e') goto yy47; } -yy19: +yy20: { zend_bool bigint = 0, negative = s->token[0] == '-'; size_t digits = (size_t) (s->cursor - s->token - negative); @@ -323,305 +322,248 @@ yy19: return PHP_JSON_T_DOUBLE; } } -yy20: - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - goto yy70; yy21: + yyaccept = 0; + YYMARKER = ++YYCURSOR; + yych = *YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy21; + } + if (yych <= 'D') { + if (yych == '.') goto yy45; + goto yy20; + } else { + if (yych <= 'E') goto yy47; + if (yych == 'e') goto yy47; + goto yy20; + } +yy23: ++YYCURSOR; { return ':'; } -yy23: +yy25: ++YYCURSOR; { return '['; } -yy25: +yy27: ++YYCURSOR; { return ']'; } -yy27: +yy29: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'a') goto yy64; - goto yy12; -yy28: + if (yych == 'a') goto yy48; + goto yy13; +yy30: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'u') goto yy60; - goto yy12; -yy29: + if (yych == 'u') goto yy49; + goto yy13; +yy31: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'r') goto yy56; - goto yy12; -yy30: + if (yych == 'r') goto yy50; + goto yy13; +yy32: ++YYCURSOR; { return '{'; } -yy32: +yy34: ++YYCURSOR; { return '}'; } -yy34: +yy36: ++YYCURSOR; -yy35: +yy37: { s->errcode = PHP_JSON_ERROR_UTF8; return PHP_JSON_T_ERROR; } -yy36: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy35; - if (yych <= 0xBF) goto yy47; - goto yy35; -yy37: - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x9F) goto yy35; - if (yych <= 0xBF) goto yy55; - goto yy35; yy38: - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy35; - if (yych <= 0xBF) goto yy54; - goto yy35; + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy37; + if (yych <= 0xBF) goto yy12; + goto yy37; yy39: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy35; - if (yych <= 0x9F) goto yy53; - goto yy35; + if (yych <= 0x9F) goto yy37; + if (yych <= 0xBF) goto yy51; + goto yy37; yy40: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy35; - if (yych <= 0xBF) goto yy52; - goto yy35; + if (yych <= 0x7F) goto yy37; + if (yych <= 0xBF) goto yy51; + goto yy37; yy41: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x8F) goto yy35; - if (yych <= 0xBF) goto yy50; - goto yy35; + if (yych <= 0x7F) goto yy37; + if (yych <= 0x9F) goto yy51; + goto yy37; yy42: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy35; - if (yych <= 0xBF) goto yy48; - goto yy35; + if (yych <= 0x8F) goto yy37; + if (yych <= 0xBF) goto yy52; + goto yy37; yy43: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy35; - if (yych >= 0x90) goto yy35; - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy45; - if (yych <= 0xBF) goto yy46; + if (yych <= 0x7F) goto yy37; + if (yych <= 0xBF) goto yy52; + goto yy37; +yy44: + yyaccept = 2; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x7F) goto yy37; + if (yych <= 0x8F) goto yy52; + goto yy37; yy45: + yych = *++YYCURSOR; + if (yych <= '/') goto yy46; + if (yych <= '9') goto yy53; +yy46: YYCURSOR = YYMARKER; if (yyaccept <= 1) { - if (yyaccept <= 0) { - goto yy19; + if (yyaccept == 0) { + goto yy20; } else { - goto yy12; + goto yy13; } } else { - if (yyaccept <= 2) { - goto yy35; + if (yyaccept == 2) { + goto yy37; } else { - goto yy76; + goto yy55; } } -yy46: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy45; - if (yych >= 0xC0) goto yy45; yy47: yych = *++YYCURSOR; - goto yy12; + if (yych <= ',') { + if (yych == '+') goto yy56; + goto yy46; + } else { + if (yych <= '-') goto yy56; + if (yych <= '/') goto yy46; + if (yych <= '9') goto yy57; + goto yy46; + } yy48: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy45; - if (yych >= 0xC0) goto yy45; + if (yych == 'l') goto yy59; + goto yy46; +yy49: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy45; - if (yych <= 0xBF) goto yy47; - goto yy45; + if (yych == 'l') goto yy60; + goto yy46; yy50: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy45; - if (yych >= 0xC0) goto yy45; + if (yych == 'u') goto yy61; + goto yy46; +yy51: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy45; - if (yych <= 0xBF) goto yy47; - goto yy45; + if (yych <= 0x7F) goto yy46; + if (yych <= 0xBF) goto yy12; + goto yy46; yy52: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy45; - if (yych <= 0xBF) goto yy47; - goto yy45; + if (yych <= 0x7F) goto yy46; + if (yych <= 0xBF) goto yy51; + goto yy46; yy53: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy45; - if (yych <= 0xBF) goto yy47; - goto yy45; -yy54: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy45; - if (yych <= 0xBF) goto yy47; - goto yy45; + yyaccept = 3; + YYMARKER = ++YYCURSOR; + yych = *YYCURSOR; + if (yych <= 'D') { + if (yych <= '/') goto yy55; + if (yych <= '9') goto yy53; + } else { + if (yych <= 'E') goto yy47; + if (yych == 'e') goto yy47; + } yy55: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy45; - if (yych <= 0xBF) goto yy47; - goto yy45; + { + ZVAL_DOUBLE(&s->value, zend_strtod((char *) s->token, NULL)); + return PHP_JSON_T_DOUBLE; + } yy56: yych = *++YYCURSOR; - if (yych != 'u') goto yy45; - yych = *++YYCURSOR; - if (yych != 'e') goto yy45; + if (yych <= '/') goto yy46; + if (yych >= ':') goto yy46; +yy57: ++YYCURSOR; - { - ZVAL_TRUE(&s->value); - return PHP_JSON_T_TRUE; - } + yych = *YYCURSOR; + if (yych <= '/') goto yy55; + if (yych <= '9') goto yy57; + goto yy55; +yy59: + yych = *++YYCURSOR; + if (yych == 's') goto yy62; + goto yy46; yy60: yych = *++YYCURSOR; - if (yych != 'l') goto yy45; + if (yych == 'l') goto yy63; + goto yy46; +yy61: + yych = *++YYCURSOR; + if (yych == 'e') goto yy65; + goto yy46; +yy62: yych = *++YYCURSOR; - if (yych != 'l') goto yy45; + if (yych == 'e') goto yy67; + goto yy46; +yy63: ++YYCURSOR; { ZVAL_NULL(&s->value); return PHP_JSON_T_NUL; } -yy64: - yych = *++YYCURSOR; - if (yych != 'l') goto yy45; - yych = *++YYCURSOR; - if (yych != 's') goto yy45; - yych = *++YYCURSOR; - if (yych != 'e') goto yy45; +yy65: ++YYCURSOR; { - ZVAL_FALSE(&s->value); - return PHP_JSON_T_FALSE; + ZVAL_TRUE(&s->value); + return PHP_JSON_T_TRUE; } -yy69: - yyaccept = 0; - YYMARKER = ++YYCURSOR; - yych = *YYCURSOR; -yy70: - if (yybm[0+yych] & 64) { - goto yy69; - } - if (yych <= 'D') { - if (yych != '.') goto yy19; - } else { - if (yych <= 'E') goto yy72; - if (yych == 'e') goto yy72; - goto yy19; - } -yy71: - yych = *++YYCURSOR; - if (yych <= '/') goto yy45; - if (yych <= '9') goto yy77; - goto yy45; -yy72: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych <= '-') goto yy73; - if (yych <= '/') goto yy45; - if (yych <= '9') goto yy74; - goto yy45; - } -yy73: - yych = *++YYCURSOR; - if (yych <= '/') goto yy45; - if (yych >= ':') goto yy45; -yy74: +yy67: ++YYCURSOR; - yych = *YYCURSOR; - if (yych <= '/') goto yy76; - if (yych <= '9') goto yy74; -yy76: { - ZVAL_DOUBLE(&s->value, zend_strtod((char *) s->token, NULL)); - return PHP_JSON_T_DOUBLE; + ZVAL_FALSE(&s->value); + return PHP_JSON_T_FALSE; } -yy77: - yyaccept = 3; - YYMARKER = ++YYCURSOR; - yych = *YYCURSOR; - if (yych <= 'D') { - if (yych <= '/') goto yy76; - if (yych <= '9') goto yy77; - goto yy76; - } else { - if (yych <= 'E') goto yy72; - if (yych == 'e') goto yy72; - goto yy76; - } -yy79: - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych == '.') goto yy71; - goto yy19; - } else { - if (yych <= 'E') goto yy72; - if (yych == 'e') goto yy72; - goto yy19; - } -yy80: - ++YYCURSOR; - yych = *YYCURSOR; -yy81: - if (yybm[0+yych] & 128) { - goto yy80; - } - goto yy7; -yy82: - ++YYCURSOR; - yych = *YYCURSOR; - goto yy7; } /* *********************************** */ yyc_STR_P1: yych = *YYCURSOR; if (yych <= 0xDF) { if (yych <= '[') { - if (yych <= 0x1F) goto yy85; - if (yych == '"') goto yy89; - goto yy87; + if (yych <= 0x1F) goto yy71; + if (yych == '"') goto yy75; + goto yy73; } else { - if (yych <= '\\') goto yy91; - if (yych <= 0x7F) goto yy87; - if (yych <= 0xC1) goto yy93; - goto yy95; + if (yych <= '\\') goto yy77; + if (yych <= 0x7F) goto yy73; + if (yych <= 0xC1) goto yy79; + goto yy81; } } else { if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy96; - if (yych <= 0xEC) goto yy97; - if (yych <= 0xED) goto yy98; - goto yy99; + if (yych <= 0xE0) goto yy82; + if (yych == 0xED) goto yy84; + goto yy83; } else { - if (yych <= 0xF0) goto yy100; - if (yych <= 0xF3) goto yy101; - if (yych <= 0xF4) goto yy102; - goto yy93; + if (yych <= 0xF0) goto yy85; + if (yych <= 0xF3) goto yy86; + if (yych <= 0xF4) goto yy87; + goto yy79; } } -yy85: +yy71: ++YYCURSOR; { s->errcode = PHP_JSON_ERROR_CTRL_CHAR; return PHP_JSON_T_ERROR; } -yy87: +yy73: ++YYCURSOR; -yy88: { PHP_JSON_CONDITION_GOTO(STR_P1); } -yy89: +yy75: ++YYCURSOR; { zend_string *str; @@ -645,416 +587,391 @@ yy89: return PHP_JSON_T_STRING; } } -yy91: +yy77: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'e') { if (yych <= '/') { - if (yych == '"') goto yy115; - if (yych >= '/') goto yy115; + if (yych == '"') goto yy88; + if (yych >= '/') goto yy88; } else { if (yych <= '\\') { - if (yych >= '\\') goto yy115; + if (yych >= '\\') goto yy88; } else { - if (yych == 'b') goto yy115; + if (yych == 'b') goto yy88; } } } else { if (yych <= 'q') { - if (yych <= 'f') goto yy115; - if (yych == 'n') goto yy115; + if (yych <= 'f') goto yy88; + if (yych == 'n') goto yy88; } else { if (yych <= 's') { - if (yych <= 'r') goto yy115; + if (yych <= 'r') goto yy88; } else { - if (yych <= 't') goto yy115; - if (yych <= 'u') goto yy117; + if (yych <= 't') goto yy88; + if (yych <= 'u') goto yy90; } } } -yy92: +yy78: { s->errcode = PHP_JSON_ERROR_SYNTAX; return PHP_JSON_T_ERROR; } -yy93: +yy79: ++YYCURSOR; -yy94: +yy80: { s->errcode = PHP_JSON_ERROR_UTF8; return PHP_JSON_T_ERROR; } -yy95: +yy81: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy94; - if (yych <= 0xBF) goto yy106; - goto yy94; -yy96: + if (yych <= 0x7F) goto yy80; + if (yych <= 0xBF) goto yy73; + goto yy80; +yy82: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x9F) goto yy94; - if (yych <= 0xBF) goto yy114; - goto yy94; -yy97: + if (yych <= 0x9F) goto yy80; + if (yych <= 0xBF) goto yy92; + goto yy80; +yy83: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy94; - if (yych <= 0xBF) goto yy113; - goto yy94; -yy98: + if (yych <= 0x7F) goto yy80; + if (yych <= 0xBF) goto yy92; + goto yy80; +yy84: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy94; - if (yych <= 0x9F) goto yy112; - goto yy94; -yy99: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy94; - if (yych <= 0xBF) goto yy111; - goto yy94; -yy100: + if (yych <= 0x7F) goto yy80; + if (yych <= 0x9F) goto yy92; + goto yy80; +yy85: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x8F) goto yy94; - if (yych <= 0xBF) goto yy109; - goto yy94; -yy101: + if (yych <= 0x8F) goto yy80; + if (yych <= 0xBF) goto yy93; + goto yy80; +yy86: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy94; - if (yych <= 0xBF) goto yy107; - goto yy94; -yy102: + if (yych <= 0x7F) goto yy80; + if (yych <= 0xBF) goto yy93; + goto yy80; +yy87: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy94; - if (yych >= 0x90) goto yy94; - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy104; - if (yych <= 0xBF) goto yy105; -yy104: - YYCURSOR = YYMARKER; - if (yyaccept <= 1) { - if (yyaccept <= 0) { - goto yy92; - } else { - goto yy94; - } - } else { - goto yy126; - } -yy105: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy104; - if (yych >= 0xC0) goto yy104; -yy106: - yych = *++YYCURSOR; - goto yy88; -yy107: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy104; - if (yych >= 0xC0) goto yy104; - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy104; - if (yych <= 0xBF) goto yy106; - goto yy104; -yy109: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy104; - if (yych >= 0xC0) goto yy104; - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy104; - if (yych <= 0xBF) goto yy106; - goto yy104; -yy111: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy104; - if (yych <= 0xBF) goto yy106; - goto yy104; -yy112: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy104; - if (yych <= 0xBF) goto yy106; - goto yy104; -yy113: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy104; - if (yych <= 0xBF) goto yy106; - goto yy104; -yy114: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy104; - if (yych <= 0xBF) goto yy106; - goto yy104; -yy115: + if (yych <= 0x7F) goto yy80; + if (yych <= 0x8F) goto yy93; + goto yy80; +yy88: ++YYCURSOR; { s->str_esc++; PHP_JSON_CONDITION_GOTO(STR_P1); } -yy117: +yy90: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= '9') { - if (yych <= '/') goto yy104; - if (yych >= '1') goto yy119; + if (yych <= '/') goto yy91; + if (yych <= '0') goto yy94; + goto yy95; } else { - if (yych <= '@') goto yy104; - if (yych <= 'C') goto yy119; - goto yy120; + if (yych <= '@') goto yy91; + if (yych <= 'C') goto yy95; + goto yy96; } } else { if (yych <= 'c') { - if (yych <= 'F') goto yy119; - if (yych <= '`') goto yy104; - goto yy119; + if (yych <= 'F') goto yy95; + if (yych >= 'a') goto yy95; } else { - if (yych <= 'd') goto yy120; - if (yych <= 'f') goto yy119; - goto yy104; + if (yych <= 'd') goto yy96; + if (yych <= 'f') goto yy95; } } +yy91: + YYCURSOR = YYMARKER; + if (yyaccept <= 1) { + if (yyaccept == 0) { + goto yy78; + } else { + goto yy80; + } + } else { + goto yy114; + } +yy92: + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy91; + if (yych <= 0xBF) goto yy73; + goto yy91; +yy93: + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy91; + if (yych <= 0xBF) goto yy92; + goto yy91; +yy94: yych = *++YYCURSOR; if (yych <= '9') { - if (yych <= '/') goto yy104; - if (yych <= '0') goto yy139; - if (yych <= '7') goto yy140; - goto yy121; + if (yych <= '/') goto yy91; + if (yych <= '0') goto yy97; + if (yych <= '7') goto yy98; + goto yy99; } else { if (yych <= 'F') { - if (yych <= '@') goto yy104; - goto yy121; + if (yych <= '@') goto yy91; + goto yy99; } else { - if (yych <= '`') goto yy104; - if (yych <= 'f') goto yy121; - goto yy104; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy99; + goto yy91; } } -yy119: +yy95: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy104; - if (yych <= '9') goto yy121; - goto yy104; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy99; + goto yy91; } else { - if (yych <= 'F') goto yy121; - if (yych <= '`') goto yy104; - if (yych <= 'f') goto yy121; - goto yy104; + if (yych <= 'F') goto yy99; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy99; + goto yy91; } -yy120: +yy96: yych = *++YYCURSOR; if (yych <= 'B') { if (yych <= '7') { - if (yych <= '/') goto yy104; + if (yych <= '/') goto yy91; + goto yy99; } else { - if (yych <= '9') goto yy122; - if (yych <= '@') goto yy104; - goto yy122; + if (yych <= '9') goto yy100; + if (yych <= '@') goto yy91; + goto yy100; } } else { if (yych <= '`') { - if (yych <= 'F') goto yy123; - goto yy104; + if (yych <= 'F') goto yy101; + goto yy91; } else { - if (yych <= 'b') goto yy122; - if (yych <= 'f') goto yy123; - goto yy104; + if (yych <= 'b') goto yy100; + if (yych <= 'f') goto yy101; + goto yy91; } } -yy121: +yy97: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy104; - if (yych <= '9') goto yy136; - goto yy104; + if (yych <= '/') goto yy91; + if (yych <= '7') goto yy102; + if (yych <= '9') goto yy103; + goto yy91; } else { - if (yych <= 'F') goto yy136; - if (yych <= '`') goto yy104; - if (yych <= 'f') goto yy136; - goto yy104; + if (yych <= 'F') goto yy103; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy103; + goto yy91; } -yy122: +yy98: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy104; - if (yych <= '9') goto yy127; - goto yy104; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy103; + goto yy91; } else { - if (yych <= 'F') goto yy127; - if (yych <= '`') goto yy104; - if (yych <= 'f') goto yy127; - goto yy104; + if (yych <= 'F') goto yy103; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy103; + goto yy91; } -yy123: +yy99: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy104; - if (yych >= ':') goto yy104; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy104; + goto yy91; } else { - if (yych <= 'F') goto yy124; - if (yych <= '`') goto yy104; - if (yych >= 'g') goto yy104; + if (yych <= 'F') goto yy104; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy104; + goto yy91; } -yy124: +yy100: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy104; - if (yych >= ':') goto yy104; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy105; + goto yy91; } else { - if (yych <= 'F') goto yy125; - if (yych <= '`') goto yy104; - if (yych >= 'g') goto yy104; + if (yych <= 'F') goto yy105; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy105; + goto yy91; } -yy125: - ++YYCURSOR; -yy126: - { - s->errcode = PHP_JSON_ERROR_UTF16; - return PHP_JSON_T_ERROR; - } -yy127: +yy101: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy104; - if (yych >= ':') goto yy104; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy106; + goto yy91; } else { - if (yych <= 'F') goto yy128; - if (yych <= '`') goto yy104; - if (yych >= 'g') goto yy104; + if (yych <= 'F') goto yy106; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy106; + goto yy91; } -yy128: - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych != '\\') goto yy126; +yy102: yych = *++YYCURSOR; - if (yych != 'u') goto yy104; + if (yych <= '@') { + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy107; + goto yy91; + } else { + if (yych <= 'F') goto yy107; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy107; + goto yy91; + } +yy103: yych = *++YYCURSOR; - if (yych == 'D') goto yy131; - if (yych != 'd') goto yy104; -yy131: + if (yych <= '@') { + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy109; + goto yy91; + } else { + if (yych <= 'F') goto yy109; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy109; + goto yy91; + } +yy104: yych = *++YYCURSOR; - if (yych <= 'B') goto yy104; - if (yych <= 'F') goto yy132; - if (yych <= 'b') goto yy104; - if (yych >= 'g') goto yy104; -yy132: + if (yych <= '@') { + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy111; + goto yy91; + } else { + if (yych <= 'F') goto yy111; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy111; + goto yy91; + } +yy105: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy104; - if (yych >= ':') goto yy104; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy113; + goto yy91; } else { - if (yych <= 'F') goto yy133; - if (yych <= '`') goto yy104; - if (yych >= 'g') goto yy104; + if (yych <= 'F') goto yy113; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy113; + goto yy91; } -yy133: +yy106: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy104; - if (yych >= ':') goto yy104; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy115; + goto yy91; } else { - if (yych <= 'F') goto yy134; - if (yych <= '`') goto yy104; - if (yych >= 'g') goto yy104; + if (yych <= 'F') goto yy115; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy115; + goto yy91; } -yy134: +yy107: ++YYCURSOR; { - s->str_esc += 8; + s->str_esc += 5; PHP_JSON_CONDITION_GOTO(STR_P1); } -yy136: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy104; - if (yych >= ':') goto yy104; - } else { - if (yych <= 'F') goto yy137; - if (yych <= '`') goto yy104; - if (yych >= 'g') goto yy104; - } -yy137: +yy109: + ++YYCURSOR; + { + s->str_esc += 4; + PHP_JSON_CONDITION_GOTO(STR_P1); + } +yy111: ++YYCURSOR; { s->str_esc += 3; PHP_JSON_CONDITION_GOTO(STR_P1); } -yy139: +yy113: + yyaccept = 2; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '\\') goto yy116; +yy114: + { + s->errcode = PHP_JSON_ERROR_UTF16; + return PHP_JSON_T_ERROR; + } +yy115: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy104; - if (yych <= '7') goto yy144; - if (yych <= '9') goto yy141; - goto yy104; - } else { - if (yych <= 'F') goto yy141; - if (yych <= '`') goto yy104; - if (yych <= 'f') goto yy141; - goto yy104; - } -yy140: + goto yy114; +yy116: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy104; - if (yych >= ':') goto yy104; - } else { - if (yych <= 'F') goto yy141; - if (yych <= '`') goto yy104; - if (yych >= 'g') goto yy104; - } -yy141: + if (yych != 'u') goto yy91; + yych = *++YYCURSOR; + if (yych == 'D') goto yy118; + if (yych != 'd') goto yy91; +yy118: + yych = *++YYCURSOR; + if (yych <= 'B') goto yy91; + if (yych <= 'F') goto yy119; + if (yych <= 'b') goto yy91; + if (yych >= 'g') goto yy91; +yy119: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy104; - if (yych >= ':') goto yy104; + if (yych <= '/') goto yy91; + if (yych >= ':') goto yy91; } else { - if (yych <= 'F') goto yy142; - if (yych <= '`') goto yy104; - if (yych >= 'g') goto yy104; + if (yych <= 'F') goto yy120; + if (yych <= '`') goto yy91; + if (yych >= 'g') goto yy91; } -yy142: - ++YYCURSOR; - { - s->str_esc += 4; - PHP_JSON_CONDITION_GOTO(STR_P1); - } -yy144: +yy120: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy104; - if (yych >= ':') goto yy104; + if (yych <= '/') goto yy91; + if (yych >= ':') goto yy91; } else { - if (yych <= 'F') goto yy145; - if (yych <= '`') goto yy104; - if (yych >= 'g') goto yy104; + if (yych <= 'F') goto yy121; + if (yych <= '`') goto yy91; + if (yych >= 'g') goto yy91; } -yy145: +yy121: ++YYCURSOR; { - s->str_esc += 5; + s->str_esc += 8; PHP_JSON_CONDITION_GOTO(STR_P1); } /* *********************************** */ yyc_STR_P2: yych = *YYCURSOR; - if (yych == '"') goto yy151; - if (yych == '\\') goto yy153; + if (yych == '"') goto yy127; + if (yych == '\\') goto yy129; ++YYCURSOR; { PHP_JSON_CONDITION_GOTO(STR_P2); } -yy151: +yy127: ++YYCURSOR; YYSETCONDITION(yycJS); { PHP_JSON_SCANNER_COPY_ESC(); return PHP_JSON_T_STRING; } -yy153: - yyaccept = 0; +yy129: yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'u') goto yy155; -yy154: + if (yych == 'u') goto yy131; +yy130: { char esc; PHP_JSON_SCANNER_COPY_ESC(); @@ -1088,206 +1005,179 @@ yy154: s->str_start = s->cursor; PHP_JSON_CONDITION_GOTO(STR_P2); } -yy155: +yy131: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= '9') { - if (yych <= '/') goto yy156; - if (yych <= '0') goto yy157; - goto yy158; + if (yych <= '/') goto yy132; + if (yych <= '0') goto yy133; + goto yy134; } else { - if (yych <= '@') goto yy156; - if (yych <= 'C') goto yy158; - goto yy159; + if (yych <= '@') goto yy132; + if (yych <= 'C') goto yy134; + goto yy135; } } else { if (yych <= 'c') { - if (yych <= 'F') goto yy158; - if (yych >= 'a') goto yy158; + if (yych <= 'F') goto yy134; + if (yych >= 'a') goto yy134; } else { - if (yych <= 'd') goto yy159; - if (yych <= 'f') goto yy158; + if (yych <= 'd') goto yy135; + if (yych <= 'f') goto yy134; } } -yy156: +yy132: YYCURSOR = YYMARKER; - goto yy154; -yy157: + goto yy130; +yy133: yych = *++YYCURSOR; if (yych <= '9') { - if (yych <= '/') goto yy156; - if (yych <= '0') goto yy174; - if (yych <= '7') goto yy175; - goto yy161; + if (yych <= '/') goto yy132; + if (yych <= '0') goto yy136; + if (yych <= '7') goto yy137; + goto yy138; } else { if (yych <= 'F') { - if (yych <= '@') goto yy156; - goto yy161; + if (yych <= '@') goto yy132; + goto yy138; } else { - if (yych <= '`') goto yy156; - if (yych <= 'f') goto yy161; - goto yy156; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy138; + goto yy132; } } -yy158: +yy134: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy156; - if (yych <= '9') goto yy161; - goto yy156; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy138; + goto yy132; } else { - if (yych <= 'F') goto yy161; - if (yych <= '`') goto yy156; - if (yych <= 'f') goto yy161; - goto yy156; + if (yych <= 'F') goto yy138; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy138; + goto yy132; } -yy159: +yy135: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy156; - if (yych <= '7') goto yy161; - if (yych >= ':') goto yy156; + if (yych <= '/') goto yy132; + if (yych <= '7') goto yy138; + if (yych <= '9') goto yy139; + goto yy132; } else { - if (yych <= 'B') goto yy160; - if (yych <= '`') goto yy156; - if (yych >= 'c') goto yy156; + if (yych <= 'B') goto yy139; + if (yych <= '`') goto yy132; + if (yych <= 'b') goto yy139; + goto yy132; } -yy160: +yy136: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy156; - if (yych <= '9') goto yy165; - goto yy156; + if (yych <= '/') goto yy132; + if (yych <= '7') goto yy140; + if (yych <= '9') goto yy141; + goto yy132; } else { - if (yych <= 'F') goto yy165; - if (yych <= '`') goto yy156; - if (yych <= 'f') goto yy165; - goto yy156; + if (yych <= 'F') goto yy141; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy141; + goto yy132; } -yy161: +yy137: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy156; - if (yych >= ':') goto yy156; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy141; + goto yy132; } else { - if (yych <= 'F') goto yy162; - if (yych <= '`') goto yy156; - if (yych >= 'g') goto yy156; + if (yych <= 'F') goto yy141; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy141; + goto yy132; } -yy162: +yy138: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy156; - if (yych >= ':') goto yy156; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy142; + goto yy132; } else { - if (yych <= 'F') goto yy163; - if (yych <= '`') goto yy156; - if (yych >= 'g') goto yy156; - } -yy163: - ++YYCURSOR; - { - int utf16 = php_json_ucs2_to_int(s, 4); - PHP_JSON_SCANNER_COPY_UTF(); - *(s->pstr++) = (char) (0xe0 | (utf16 >> 12)); - *(s->pstr++) = (char) (0x80 | ((utf16 >> 6) & 0x3f)); - *(s->pstr++) = (char) (0x80 | (utf16 & 0x3f)); - s->str_start = s->cursor; - PHP_JSON_CONDITION_GOTO(STR_P2); - } -yy165: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy156; - if (yych >= ':') goto yy156; - } else { - if (yych <= 'F') goto yy166; - if (yych <= '`') goto yy156; - if (yych >= 'g') goto yy156; + if (yych <= 'F') goto yy142; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy142; + goto yy132; } -yy166: - yych = *++YYCURSOR; - if (yych != '\\') goto yy156; - yych = *++YYCURSOR; - if (yych != 'u') goto yy156; - yych = *++YYCURSOR; - if (yych == 'D') goto yy169; - if (yych != 'd') goto yy156; -yy169: - yych = *++YYCURSOR; - if (yych <= 'B') goto yy156; - if (yych <= 'F') goto yy170; - if (yych <= 'b') goto yy156; - if (yych >= 'g') goto yy156; -yy170: +yy139: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy156; - if (yych >= ':') goto yy156; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy143; + goto yy132; } else { - if (yych <= 'F') goto yy171; - if (yych <= '`') goto yy156; - if (yych >= 'g') goto yy156; + if (yych <= 'F') goto yy143; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy143; + goto yy132; } -yy171: +yy140: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy156; - if (yych >= ':') goto yy156; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy144; + goto yy132; } else { - if (yych <= 'F') goto yy172; - if (yych <= '`') goto yy156; - if (yych >= 'g') goto yy156; + if (yych <= 'F') goto yy144; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy144; + goto yy132; } -yy172: - ++YYCURSOR; - { - int utf32, utf16_hi, utf16_lo; - utf16_hi = php_json_ucs2_to_int(s, 4); - utf16_lo = php_json_ucs2_to_int_ex(s, 4, 7); - utf32 = ((utf16_lo & 0x3FF) << 10) + (utf16_hi & 0x3FF) + 0x10000; - PHP_JSON_SCANNER_COPY_UTF_SP(); - *(s->pstr++) = (char) (0xf0 | (utf32 >> 18)); - *(s->pstr++) = (char) (0x80 | ((utf32 >> 12) & 0x3f)); - *(s->pstr++) = (char) (0x80 | ((utf32 >> 6) & 0x3f)); - *(s->pstr++) = (char) (0x80 | (utf32 & 0x3f)); - s->str_start = s->cursor; - PHP_JSON_CONDITION_GOTO(STR_P2); - } -yy174: +yy141: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy156; - if (yych <= '7') goto yy179; - if (yych <= '9') goto yy176; - goto yy156; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy146; + goto yy132; } else { - if (yych <= 'F') goto yy176; - if (yych <= '`') goto yy156; - if (yych <= 'f') goto yy176; - goto yy156; + if (yych <= 'F') goto yy146; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy146; + goto yy132; } -yy175: +yy142: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy156; - if (yych >= ':') goto yy156; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy148; + goto yy132; } else { - if (yych <= 'F') goto yy176; - if (yych <= '`') goto yy156; - if (yych >= 'g') goto yy156; + if (yych <= 'F') goto yy148; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy148; + goto yy132; } -yy176: +yy143: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy156; - if (yych >= ':') goto yy156; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy150; + goto yy132; } else { - if (yych <= 'F') goto yy177; - if (yych <= '`') goto yy156; - if (yych >= 'g') goto yy156; + if (yych <= 'F') goto yy150; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy150; + goto yy132; } -yy177: +yy144: + ++YYCURSOR; + { + int utf16 = php_json_ucs2_to_int(s, 2); + PHP_JSON_SCANNER_COPY_UTF(); + *(s->pstr++) = (char) utf16; + s->str_start = s->cursor; + PHP_JSON_CONDITION_GOTO(STR_P2); + } +yy146: ++YYCURSOR; { int utf16 = php_json_ucs2_to_int(s, 3); @@ -1297,22 +1187,63 @@ yy177: s->str_start = s->cursor; PHP_JSON_CONDITION_GOTO(STR_P2); } -yy179: +yy148: + ++YYCURSOR; + { + int utf16 = php_json_ucs2_to_int(s, 4); + PHP_JSON_SCANNER_COPY_UTF(); + *(s->pstr++) = (char) (0xe0 | (utf16 >> 12)); + *(s->pstr++) = (char) (0x80 | ((utf16 >> 6) & 0x3f)); + *(s->pstr++) = (char) (0x80 | (utf16 & 0x3f)); + s->str_start = s->cursor; + PHP_JSON_CONDITION_GOTO(STR_P2); + } +yy150: + yych = *++YYCURSOR; + if (yych != '\\') goto yy132; + yych = *++YYCURSOR; + if (yych != 'u') goto yy132; + yych = *++YYCURSOR; + if (yych == 'D') goto yy153; + if (yych != 'd') goto yy132; +yy153: + yych = *++YYCURSOR; + if (yych <= 'B') goto yy132; + if (yych <= 'F') goto yy154; + if (yych <= 'b') goto yy132; + if (yych >= 'g') goto yy132; +yy154: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy156; - if (yych >= ':') goto yy156; + if (yych <= '/') goto yy132; + if (yych >= ':') goto yy132; } else { - if (yych <= 'F') goto yy180; - if (yych <= '`') goto yy156; - if (yych >= 'g') goto yy156; + if (yych <= 'F') goto yy155; + if (yych <= '`') goto yy132; + if (yych >= 'g') goto yy132; } -yy180: +yy155: + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych <= '/') goto yy132; + if (yych >= ':') goto yy132; + } else { + if (yych <= 'F') goto yy156; + if (yych <= '`') goto yy132; + if (yych >= 'g') goto yy132; + } +yy156: ++YYCURSOR; { - int utf16 = php_json_ucs2_to_int(s, 2); - PHP_JSON_SCANNER_COPY_UTF(); - *(s->pstr++) = (char) utf16; + int utf32, utf16_hi, utf16_lo; + utf16_hi = php_json_ucs2_to_int(s, 4); + utf16_lo = php_json_ucs2_to_int_ex(s, 4, 7); + utf32 = ((utf16_lo & 0x3FF) << 10) + (utf16_hi & 0x3FF) + 0x10000; + PHP_JSON_SCANNER_COPY_UTF_SP(); + *(s->pstr++) = (char) (0xf0 | (utf32 >> 18)); + *(s->pstr++) = (char) (0x80 | ((utf32 >> 12) & 0x3f)); + *(s->pstr++) = (char) (0x80 | ((utf32 >> 6) & 0x3f)); + *(s->pstr++) = (char) (0x80 | (utf32 & 0x3f)); s->str_start = s->cursor; PHP_JSON_CONDITION_GOTO(STR_P2); } diff --git a/ext/json/php_json_scanner_defs.h b/ext/json/php_json_scanner_defs.h index b3867433a7..d62dd9137a 100644 --- a/ext/json/php_json_scanner_defs.h +++ b/ext/json/php_json_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 */ +/* Generated by re2c 0.16 */ enum YYCONDTYPE { yycJS, |