From ca9ab1c993ab4c1c6d3f7b1cf37b61637007ce69 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 10 Feb 2015 15:59:33 +0100 Subject: [PATCH] better alignment + support size_t --- ext/json/json_scanner.c | 919 +++++++++++++++---------------- ext/json/json_scanner.re | 2 +- ext/json/php_json_scanner.h | 6 +- ext/json/php_json_scanner_defs.h | 2 +- 4 files changed, 464 insertions(+), 465 deletions(-) diff --git a/ext/json/json_scanner.c b/ext/json/json_scanner.c index d4e6cf293c..c75a1e02e8 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.13.6 */ /* +----------------------------------------------------------------------+ | PHP Version 5 | @@ -82,7 +82,7 @@ static int php_json_ucs2_to_int(php_json_scanner *s, int size) return php_json_ucs2_to_int_ex(s, size, 1); } -void php_json_scanner_init(php_json_scanner *s, char *str, int str_len, long options) +void php_json_scanner_init(php_json_scanner *s, char *str, size_t str_len, int options) { s->cursor = (php_json_ctype *) str; s->limit = (php_json_ctype *) str + str_len; @@ -147,56 +147,55 @@ yyc_JS: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - yych = *YYCURSOR; if (yych <= '9') { if (yych <= ' ') { if (yych <= '\n') { - if (yych <= 0x00) goto yy2; - if (yych <= 0x08) goto yy4; - if (yych <= '\t') goto yy6; - goto yy8; + if (yych <= 0x00) goto yy3; + if (yych <= 0x08) goto yy5; + if (yych <= '\t') goto yy7; + goto yy9; } else { - if (yych == '\r') goto yy9; - if (yych <= 0x1F) goto yy4; - goto yy6; + if (yych == '\r') goto yy10; + if (yych <= 0x1F) goto yy5; + goto yy7; } } else { if (yych <= ',') { - if (yych == '"') goto yy10; - if (yych <= '+') goto yy4; - goto yy12; + if (yych == '"') goto yy11; + if (yych <= '+') goto yy5; + goto yy13; } else { - if (yych <= '-') goto yy14; - if (yych <= '/') goto yy4; - if (yych <= '0') goto yy15; - goto yy17; + if (yych <= '-') goto yy15; + if (yych <= '/') goto yy5; + if (yych <= '0') goto yy16; + goto yy18; } } } else { if (yych <= 'm') { if (yych <= '\\') { - if (yych <= ':') goto yy18; - if (yych == '[') goto yy20; - goto yy4; + if (yych <= ':') goto yy19; + if (yych == '[') goto yy21; + goto yy5; } else { - if (yych <= ']') goto yy22; - if (yych == 'f') goto yy24; - goto yy4; + if (yych <= ']') goto yy23; + if (yych == 'f') goto yy25; + goto yy5; } } else { if (yych <= 'z') { - if (yych <= 'n') goto yy25; - if (yych == 't') goto yy26; - goto yy4; + if (yych <= 'n') goto yy26; + if (yych == 't') goto yy27; + goto yy5; } else { - if (yych <= '{') goto yy27; - if (yych == '}') goto yy29; - goto yy4; + if (yych <= '{') goto yy28; + if (yych == '}') goto yy30; + goto yy5; } } } -yy2: +yy3: ++YYCURSOR; { if (s->limit < s->cursor) { @@ -206,27 +205,27 @@ yy2: return PHP_JSON_T_ERROR; } } -yy4: - ++YYCURSOR; yy5: + ++YYCURSOR; +yy6: { s->errcode = PHP_JSON_ERROR_SYNTAX; return PHP_JSON_T_ERROR; } -yy6: +yy7: ++YYCURSOR; yych = *YYCURSOR; - goto yy57; -yy7: - { goto std; } + goto yy58; yy8: - yych = *++YYCURSOR; - goto yy7; + { goto std; } yy9: yych = *++YYCURSOR; - if (yych == '\n') goto yy58; - goto yy57; + goto yy8; yy10: + yych = *++YYCURSOR; + if (yych == '\n') goto yy59; + goto yy58; +yy11: ++YYCURSOR; { s->str_start = s->cursor; @@ -234,25 +233,25 @@ yy10: PHP_JSON_CONDITION_SET(STR_P1); PHP_JSON_CONDITION_GOTO(STR_P1); } -yy12: +yy13: ++YYCURSOR; { return ','; } -yy14: - yych = *++YYCURSOR; - if (yych <= '/') goto yy5; - if (yych <= '0') goto yy55; - if (yych <= '9') goto yy45; - goto yy5; yy15: + yych = *++YYCURSOR; + if (yych <= '/') goto yy6; + if (yych <= '0') goto yy56; + if (yych <= '9') goto yy46; + goto yy6; +yy16: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == '.') goto yy47; + if (yych == '.') goto yy48; } else { - if (yych <= 'E') goto yy48; - if (yych == 'e') goto yy48; + if (yych <= 'E') goto yy49; + if (yych == 'e') goto yy49; } -yy16: +yy17: { zend_bool bigint = 0, negative = s->token[0] == '-'; size_t digits = (size_t) (s->cursor - s->token - negative); @@ -277,203 +276,203 @@ yy16: return PHP_JSON_T_DOUBLE; } } -yy17: +yy18: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - goto yy46; -yy18: + goto yy47; +yy19: ++YYCURSOR; { return ':'; } -yy20: +yy21: ++YYCURSOR; { return '['; } -yy22: +yy23: ++YYCURSOR; { return ']'; } -yy24: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'a') goto yy40; - goto yy5; yy25: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'u') goto yy36; - goto yy5; + if (yych == 'a') goto yy41; + goto yy6; yy26: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'r') goto yy31; - goto yy5; + if (yych == 'u') goto yy37; + goto yy6; yy27: + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'r') goto yy32; + goto yy6; +yy28: ++YYCURSOR; { return '{'; } -yy29: +yy30: ++YYCURSOR; { return '}'; } -yy31: - yych = *++YYCURSOR; - if (yych == 'u') goto yy33; yy32: + yych = *++YYCURSOR; + if (yych == 'u') goto yy34; +yy33: YYCURSOR = YYMARKER; if (yyaccept <= 1) { - if (yyaccept <= 0) { - goto yy16; + if (yyaccept == 0) { + goto yy17; } else { - goto yy5; + goto yy6; } } else { - goto yy52; + goto yy53; } -yy33: +yy34: yych = *++YYCURSOR; - if (yych != 'e') goto yy32; + if (yych != 'e') goto yy33; ++YYCURSOR; { ZVAL_TRUE(&s->value); return PHP_JSON_T_TRUE; } -yy36: +yy37: yych = *++YYCURSOR; - if (yych != 'l') goto yy32; + if (yych != 'l') goto yy33; yych = *++YYCURSOR; - if (yych != 'l') goto yy32; + if (yych != 'l') goto yy33; ++YYCURSOR; { ZVAL_NULL(&s->value); return PHP_JSON_T_NUL; } -yy40: +yy41: yych = *++YYCURSOR; - if (yych != 'l') goto yy32; + if (yych != 'l') goto yy33; yych = *++YYCURSOR; - if (yych != 's') goto yy32; + if (yych != 's') goto yy33; yych = *++YYCURSOR; - if (yych != 'e') goto yy32; + if (yych != 'e') goto yy33; ++YYCURSOR; { ZVAL_FALSE(&s->value); return PHP_JSON_T_FALSE; } -yy45: +yy46: yyaccept = 0; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; -yy46: +yy47: if (yybm[0+yych] & 64) { - goto yy45; + goto yy46; } if (yych <= 'D') { - if (yych != '.') goto yy16; + if (yych != '.') goto yy17; } else { - if (yych <= 'E') goto yy48; - if (yych == 'e') goto yy48; - goto yy16; + if (yych <= 'E') goto yy49; + if (yych == 'e') goto yy49; + goto yy17; } -yy47: - yych = *++YYCURSOR; - if (yych <= '/') goto yy32; - if (yych <= '9') goto yy53; - goto yy32; yy48: + yych = *++YYCURSOR; + if (yych <= '/') goto yy33; + if (yych <= '9') goto yy54; + goto yy33; +yy49: yych = *++YYCURSOR; if (yych <= ',') { - if (yych != '+') goto yy32; + if (yych != '+') goto yy33; } else { - if (yych <= '-') goto yy49; - if (yych <= '/') goto yy32; - if (yych <= '9') goto yy50; - goto yy32; + if (yych <= '-') goto yy50; + if (yych <= '/') goto yy33; + if (yych <= '9') goto yy51; + goto yy33; } -yy49: - yych = *++YYCURSOR; - if (yych <= '/') goto yy32; - if (yych >= ':') goto yy32; yy50: + yych = *++YYCURSOR; + if (yych <= '/') goto yy33; + if (yych >= ':') goto yy33; +yy51: ++YYCURSOR; yych = *YYCURSOR; - if (yych <= '/') goto yy52; - if (yych <= '9') goto yy50; -yy52: + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy51; +yy53: { ZVAL_DOUBLE(&s->value, zend_strtod((char *) s->token, NULL)); return PHP_JSON_T_DOUBLE; } -yy53: +yy54: yyaccept = 2; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; if (yych <= 'D') { - if (yych <= '/') goto yy52; - if (yych <= '9') goto yy53; - goto yy52; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy54; + goto yy53; } else { - if (yych <= 'E') goto yy48; - if (yych == 'e') goto yy48; - goto yy52; + if (yych <= 'E') goto yy49; + if (yych == 'e') goto yy49; + goto yy53; } -yy55: +yy56: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == '.') goto yy47; - goto yy16; + if (yych == '.') goto yy48; + goto yy17; } else { - if (yych <= 'E') goto yy48; - if (yych == 'e') goto yy48; - goto yy16; + if (yych <= 'E') goto yy49; + if (yych == 'e') goto yy49; + goto yy17; } -yy56: +yy57: ++YYCURSOR; yych = *YYCURSOR; -yy57: +yy58: if (yybm[0+yych] & 128) { - goto yy56; + goto yy57; } - goto yy7; -yy58: + goto yy8; +yy59: ++YYCURSOR; yych = *YYCURSOR; - goto yy7; + goto yy8; } /* *********************************** */ yyc_STR_P1: yych = *YYCURSOR; if (yych <= 0xDF) { if (yych <= '[') { - if (yych <= 0x1F) goto yy61; - if (yych == '"') goto yy65; - goto yy63; + if (yych <= 0x1F) goto yy62; + if (yych == '"') goto yy66; + goto yy64; } else { - if (yych <= '\\') goto yy67; - if (yych <= 0x7F) goto yy63; - if (yych <= 0xC1) goto yy69; - goto yy71; + if (yych <= '\\') goto yy68; + if (yych <= 0x7F) goto yy64; + if (yych <= 0xC1) goto yy70; + goto yy72; } } else { if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy72; - if (yych <= 0xEC) goto yy73; - if (yych <= 0xED) goto yy74; - goto yy75; + if (yych <= 0xE0) goto yy73; + if (yych <= 0xEC) goto yy74; + if (yych <= 0xED) goto yy75; + goto yy76; } else { - if (yych <= 0xF0) goto yy76; - if (yych <= 0xF3) goto yy77; - if (yych <= 0xF4) goto yy78; - goto yy69; + if (yych <= 0xF0) goto yy77; + if (yych <= 0xF3) goto yy78; + if (yych <= 0xF4) goto yy79; + goto yy70; } } -yy61: +yy62: ++YYCURSOR; { s->errcode = PHP_JSON_ERROR_CTRL_CHAR; return PHP_JSON_T_ERROR; } -yy63: - ++YYCURSOR; yy64: - { PHP_JSON_CONDITION_GOTO(STR_P1); } + ++YYCURSOR; yy65: + { PHP_JSON_CONDITION_GOTO(STR_P1); } +yy66: ++YYCURSOR; { zend_string *str; @@ -497,361 +496,361 @@ yy65: return PHP_JSON_T_STRING; } } -yy67: +yy68: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'e') { if (yych <= '/') { - if (yych == '"') goto yy91; - if (yych >= '/') goto yy91; + if (yych == '"') goto yy92; + if (yych >= '/') goto yy92; } else { if (yych <= '\\') { - if (yych >= '\\') goto yy91; + if (yych >= '\\') goto yy92; } else { - if (yych == 'b') goto yy91; + if (yych == 'b') goto yy92; } } } else { if (yych <= 'q') { - if (yych <= 'f') goto yy91; - if (yych == 'n') goto yy91; + if (yych <= 'f') goto yy92; + if (yych == 'n') goto yy92; } else { if (yych <= 's') { - if (yych <= 'r') goto yy91; + if (yych <= 'r') goto yy92; } else { - if (yych <= 't') goto yy91; - if (yych <= 'u') goto yy93; + if (yych <= 't') goto yy92; + if (yych <= 'u') goto yy94; } } } -yy68: +yy69: { s->errcode = PHP_JSON_ERROR_SYNTAX; return PHP_JSON_T_ERROR; } -yy69: - ++YYCURSOR; yy70: + ++YYCURSOR; +yy71: { s->errcode = PHP_JSON_ERROR_UTF8; return PHP_JSON_T_ERROR; } -yy71: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy70; - if (yych <= 0xBF) goto yy82; - goto yy70; yy72: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x9F) goto yy70; - if (yych <= 0xBF) goto yy90; - goto yy70; + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy71; + if (yych <= 0xBF) goto yy83; + goto yy71; yy73: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy70; - if (yych <= 0xBF) goto yy89; - goto yy70; + if (yych <= 0x9F) goto yy71; + if (yych <= 0xBF) goto yy91; + goto yy71; yy74: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy70; - if (yych <= 0x9F) goto yy88; - goto yy70; + if (yych <= 0x7F) goto yy71; + if (yych <= 0xBF) goto yy90; + goto yy71; yy75: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy70; - if (yych <= 0xBF) goto yy87; - goto yy70; + if (yych <= 0x7F) goto yy71; + if (yych <= 0x9F) goto yy89; + goto yy71; yy76: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x8F) goto yy70; - if (yych <= 0xBF) goto yy85; - goto yy70; + if (yych <= 0x7F) goto yy71; + if (yych <= 0xBF) goto yy88; + goto yy71; yy77: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy70; - if (yych <= 0xBF) goto yy83; - goto yy70; + if (yych <= 0x8F) goto yy71; + if (yych <= 0xBF) goto yy86; + goto yy71; yy78: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy70; - if (yych >= 0x90) goto yy70; + if (yych <= 0x7F) goto yy71; + if (yych <= 0xBF) goto yy84; + goto yy71; +yy79: + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x7F) goto yy71; + if (yych >= 0x90) goto yy71; yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy80; - if (yych <= 0xBF) goto yy81; -yy80: + if (yych <= 0x7F) goto yy81; + if (yych <= 0xBF) goto yy82; +yy81: YYCURSOR = YYMARKER; if (yyaccept <= 1) { - if (yyaccept <= 0) { - goto yy68; + if (yyaccept == 0) { + goto yy69; } else { - goto yy70; + goto yy71; } } else { - goto yy100; + goto yy101; } -yy81: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy80; - if (yych >= 0xC0) goto yy80; yy82: yych = *++YYCURSOR; - goto yy64; + if (yych <= 0x7F) goto yy81; + if (yych >= 0xC0) goto yy81; yy83: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy80; - if (yych >= 0xC0) goto yy80; + goto yy65; +yy84: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy80; - if (yych <= 0xBF) goto yy82; - goto yy80; -yy85: + if (yych <= 0x7F) goto yy81; + if (yych >= 0xC0) goto yy81; yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy80; - if (yych >= 0xC0) goto yy80; + if (yych <= 0x7F) goto yy81; + if (yych <= 0xBF) goto yy83; + goto yy81; +yy86: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy80; - if (yych <= 0xBF) goto yy82; - goto yy80; -yy87: + if (yych <= 0x7F) goto yy81; + if (yych >= 0xC0) goto yy81; yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy80; - if (yych <= 0xBF) goto yy82; - goto yy80; + if (yych <= 0x7F) goto yy81; + if (yych <= 0xBF) goto yy83; + goto yy81; yy88: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy80; - if (yych <= 0xBF) goto yy82; - goto yy80; + if (yych <= 0x7F) goto yy81; + if (yych <= 0xBF) goto yy83; + goto yy81; yy89: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy80; - if (yych <= 0xBF) goto yy82; - goto yy80; + if (yych <= 0x7F) goto yy81; + if (yych <= 0xBF) goto yy83; + goto yy81; yy90: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy80; - if (yych <= 0xBF) goto yy82; - goto yy80; + if (yych <= 0x7F) goto yy81; + if (yych <= 0xBF) goto yy83; + goto yy81; yy91: + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy81; + if (yych <= 0xBF) goto yy83; + goto yy81; +yy92: ++YYCURSOR; { s->str_esc++; PHP_JSON_CONDITION_GOTO(STR_P1); } -yy93: +yy94: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= '9') { - if (yych <= '/') goto yy80; - if (yych >= '1') goto yy96; + if (yych <= '/') goto yy81; + if (yych >= '1') goto yy97; } else { - if (yych <= '@') goto yy80; - if (yych <= 'C') goto yy96; - goto yy95; + if (yych <= '@') goto yy81; + if (yych <= 'C') goto yy97; + goto yy96; } } else { if (yych <= 'c') { - if (yych <= 'F') goto yy96; - if (yych <= '`') goto yy80; - goto yy96; + if (yych <= 'F') goto yy97; + if (yych <= '`') goto yy81; + goto yy97; } else { - if (yych <= 'd') goto yy95; - if (yych <= 'f') goto yy96; - goto yy80; + if (yych <= 'd') goto yy96; + if (yych <= 'f') goto yy97; + goto yy81; } } yych = *++YYCURSOR; if (yych <= '9') { - if (yych <= '/') goto yy80; - if (yych <= '0') goto yy111; - if (yych <= '7') goto yy112; - goto yy97; + if (yych <= '/') goto yy81; + if (yych <= '0') goto yy112; + if (yych <= '7') goto yy113; + goto yy98; } else { if (yych <= 'F') { - if (yych <= '@') goto yy80; - goto yy97; + if (yych <= '@') goto yy81; + goto yy98; } else { - if (yych <= '`') goto yy80; - if (yych <= 'f') goto yy97; - goto yy80; + if (yych <= '`') goto yy81; + if (yych <= 'f') goto yy98; + goto yy81; } } -yy95: +yy96: yych = *++YYCURSOR; if (yych <= 'B') { if (yych <= '7') { - if (yych <= '/') goto yy80; - goto yy97; + if (yych <= '/') goto yy81; + goto yy98; } else { - if (yych <= '9') goto yy101; - if (yych <= '@') goto yy80; - goto yy101; + if (yych <= '9') goto yy102; + if (yych <= '@') goto yy81; + goto yy102; } } else { if (yych <= '`') { - if (yych <= 'F') goto yy97; - goto yy80; + if (yych <= 'F') goto yy98; + goto yy81; } else { - if (yych <= 'b') goto yy101; - if (yych <= 'f') goto yy97; - goto yy80; + if (yych <= 'b') goto yy102; + if (yych <= 'f') goto yy98; + goto yy81; } } -yy96: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy80; - if (yych >= ':') goto yy80; - } else { - if (yych <= 'F') goto yy97; - if (yych <= '`') goto yy80; - if (yych >= 'g') goto yy80; - } yy97: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy80; - if (yych >= ':') goto yy80; + if (yych <= '/') goto yy81; + if (yych >= ':') goto yy81; } else { if (yych <= 'F') goto yy98; - if (yych <= '`') goto yy80; - if (yych >= 'g') goto yy80; + if (yych <= '`') goto yy81; + if (yych >= 'g') goto yy81; } yy98: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy80; - if (yych >= ':') goto yy80; + if (yych <= '/') goto yy81; + if (yych >= ':') goto yy81; } else { if (yych <= 'F') goto yy99; - if (yych <= '`') goto yy80; - if (yych >= 'g') goto yy80; + if (yych <= '`') goto yy81; + if (yych >= 'g') goto yy81; } yy99: - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych <= '/') goto yy81; + if (yych >= ':') goto yy81; + } else { + if (yych <= 'F') goto yy100; + if (yych <= '`') goto yy81; + if (yych >= 'g') goto yy81; + } yy100: + ++YYCURSOR; +yy101: { s->str_esc += 3; PHP_JSON_CONDITION_GOTO(STR_P1); } -yy101: +yy102: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy80; - if (yych >= ':') goto yy80; + if (yych <= '/') goto yy81; + if (yych >= ':') goto yy81; } else { - if (yych <= 'F') goto yy102; - if (yych <= '`') goto yy80; - if (yych >= 'g') goto yy80; + if (yych <= 'F') goto yy103; + if (yych <= '`') goto yy81; + if (yych >= 'g') goto yy81; } -yy102: +yy103: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy80; - if (yych >= ':') goto yy80; + if (yych <= '/') goto yy81; + if (yych >= ':') goto yy81; } else { - if (yych <= 'F') goto yy103; - if (yych <= '`') goto yy80; - if (yych >= 'g') goto yy80; + if (yych <= 'F') goto yy104; + if (yych <= '`') goto yy81; + if (yych >= 'g') goto yy81; } -yy103: +yy104: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych != '\\') goto yy100; - yych = *++YYCURSOR; - if (yych != 'u') goto yy80; + if (yych != '\\') goto yy101; yych = *++YYCURSOR; - if (yych == 'D') goto yy106; - if (yych != 'd') goto yy80; -yy106: + if (yych != 'u') goto yy81; yych = *++YYCURSOR; - if (yych <= 'B') goto yy80; - if (yych <= 'F') goto yy107; - if (yych <= 'b') goto yy80; - if (yych >= 'g') goto yy80; + if (yych == 'D') goto yy107; + if (yych != 'd') goto yy81; yy107: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy80; - if (yych >= ':') goto yy80; - } else { - if (yych <= 'F') goto yy108; - if (yych <= '`') goto yy80; - if (yych >= 'g') goto yy80; - } + if (yych <= 'B') goto yy81; + if (yych <= 'F') goto yy108; + if (yych <= 'b') goto yy81; + if (yych >= 'g') goto yy81; yy108: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy80; - if (yych >= ':') goto yy80; + if (yych <= '/') goto yy81; + if (yych >= ':') goto yy81; } else { if (yych <= 'F') goto yy109; - if (yych <= '`') goto yy80; - if (yych >= 'g') goto yy80; + if (yych <= '`') goto yy81; + if (yych >= 'g') goto yy81; } yy109: + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych <= '/') goto yy81; + if (yych >= ':') goto yy81; + } else { + if (yych <= 'F') goto yy110; + if (yych <= '`') goto yy81; + if (yych >= 'g') goto yy81; + } +yy110: ++YYCURSOR; { s->str_esc += 8; PHP_JSON_CONDITION_GOTO(STR_P1); } -yy111: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy80; - if (yych <= '7') goto yy116; - if (yych <= '9') goto yy113; - goto yy80; - } else { - if (yych <= 'F') goto yy113; - if (yych <= '`') goto yy80; - if (yych <= 'f') goto yy113; - goto yy80; - } yy112: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy80; - if (yych >= ':') goto yy80; + if (yych <= '/') goto yy81; + if (yych <= '7') goto yy117; + if (yych <= '9') goto yy114; + goto yy81; } else { - if (yych <= 'F') goto yy113; - if (yych <= '`') goto yy80; - if (yych >= 'g') goto yy80; + if (yych <= 'F') goto yy114; + if (yych <= '`') goto yy81; + if (yych <= 'f') goto yy114; + goto yy81; } yy113: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy80; - if (yych >= ':') goto yy80; + if (yych <= '/') goto yy81; + if (yych >= ':') goto yy81; } else { if (yych <= 'F') goto yy114; - if (yych <= '`') goto yy80; - if (yych >= 'g') goto yy80; + if (yych <= '`') goto yy81; + if (yych >= 'g') goto yy81; } yy114: + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych <= '/') goto yy81; + if (yych >= ':') goto yy81; + } else { + if (yych <= 'F') goto yy115; + if (yych <= '`') goto yy81; + if (yych >= 'g') goto yy81; + } +yy115: ++YYCURSOR; { s->str_esc += 4; PHP_JSON_CONDITION_GOTO(STR_P1); } -yy116: +yy117: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy80; - if (yych >= ':') goto yy80; + if (yych <= '/') goto yy81; + if (yych >= ':') goto yy81; } else { - if (yych <= 'F') goto yy117; - if (yych <= '`') goto yy80; - if (yych >= 'g') goto yy80; + if (yych <= 'F') goto yy118; + if (yych <= '`') goto yy81; + if (yych >= 'g') goto yy81; } -yy117: +yy118: ++YYCURSOR; { s->str_esc += 5; @@ -860,22 +859,22 @@ yy117: /* *********************************** */ yyc_STR_P2: yych = *YYCURSOR; - if (yych == '"') goto yy123; - if (yych == '\\') goto yy125; + if (yych == '"') goto yy124; + if (yych == '\\') goto yy126; ++YYCURSOR; { PHP_JSON_CONDITION_GOTO(STR_P2); } -yy123: +yy124: ++YYCURSOR; YYSETCONDITION(yycJS); { PHP_JSON_SCANNER_COPY_ESC(); return PHP_JSON_T_STRING; } -yy125: +yy126: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'u') goto yy127; -yy126: + if (yych == 'u') goto yy128; +yy127: { char esc; PHP_JSON_SCANNER_COPY_ESC(); @@ -909,105 +908,105 @@ yy126: s->str_start = s->cursor; PHP_JSON_CONDITION_GOTO(STR_P2); } -yy127: +yy128: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= '9') { - if (yych <= '/') goto yy128; - if (yych <= '0') goto yy129; - goto yy131; + if (yych <= '/') goto yy129; + if (yych <= '0') goto yy130; + goto yy132; } else { - if (yych <= '@') goto yy128; - if (yych <= 'C') goto yy131; - goto yy130; + if (yych <= '@') goto yy129; + if (yych <= 'C') goto yy132; + goto yy131; } } else { if (yych <= 'c') { - if (yych <= 'F') goto yy131; - if (yych >= 'a') goto yy131; + if (yych <= 'F') goto yy132; + if (yych >= 'a') goto yy132; } else { - if (yych <= 'd') goto yy130; - if (yych <= 'f') goto yy131; + if (yych <= 'd') goto yy131; + if (yych <= 'f') goto yy132; } } -yy128: +yy129: YYCURSOR = YYMARKER; - if (yyaccept <= 0) { - goto yy126; + if (yyaccept == 0) { + goto yy127; } else { - goto yy135; + goto yy136; } -yy129: +yy130: yych = *++YYCURSOR; if (yych <= '9') { - if (yych <= '/') goto yy128; - if (yych <= '0') goto yy146; - if (yych <= '7') goto yy147; - goto yy132; + if (yych <= '/') goto yy129; + if (yych <= '0') goto yy147; + if (yych <= '7') goto yy148; + goto yy133; } else { if (yych <= 'F') { - if (yych <= '@') goto yy128; - goto yy132; + if (yych <= '@') goto yy129; + goto yy133; } else { - if (yych <= '`') goto yy128; - if (yych <= 'f') goto yy132; - goto yy128; + if (yych <= '`') goto yy129; + if (yych <= 'f') goto yy133; + goto yy129; } } -yy130: +yy131: yych = *++YYCURSOR; if (yych <= 'B') { if (yych <= '7') { - if (yych <= '/') goto yy128; - goto yy132; + if (yych <= '/') goto yy129; + goto yy133; } else { - if (yych <= '9') goto yy136; - if (yych <= '@') goto yy128; - goto yy136; + if (yych <= '9') goto yy137; + if (yych <= '@') goto yy129; + goto yy137; } } else { if (yych <= '`') { - if (yych <= 'F') goto yy132; - goto yy128; + if (yych <= 'F') goto yy133; + goto yy129; } else { - if (yych <= 'b') goto yy136; - if (yych <= 'f') goto yy132; - goto yy128; + if (yych <= 'b') goto yy137; + if (yych <= 'f') goto yy133; + goto yy129; } } -yy131: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy128; - if (yych >= ':') goto yy128; - } else { - if (yych <= 'F') goto yy132; - if (yych <= '`') goto yy128; - if (yych >= 'g') goto yy128; - } yy132: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy128; - if (yych >= ':') goto yy128; + if (yych <= '/') goto yy129; + if (yych >= ':') goto yy129; } else { if (yych <= 'F') goto yy133; - if (yych <= '`') goto yy128; - if (yych >= 'g') goto yy128; + if (yych <= '`') goto yy129; + if (yych >= 'g') goto yy129; } yy133: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy128; - if (yych >= ':') goto yy128; + if (yych <= '/') goto yy129; + if (yych >= ':') goto yy129; } else { if (yych <= 'F') goto yy134; - if (yych <= '`') goto yy128; - if (yych >= 'g') goto yy128; + if (yych <= '`') goto yy129; + if (yych >= 'g') goto yy129; } yy134: - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych <= '/') goto yy129; + if (yych >= ':') goto yy129; + } else { + if (yych <= 'F') goto yy135; + if (yych <= '`') goto yy129; + if (yych >= 'g') goto yy129; + } yy135: + ++YYCURSOR; +yy136: { int utf16 = php_json_ucs2_to_int(s, 4); PHP_JSON_SCANNER_COPY_UTF(); @@ -1017,62 +1016,62 @@ yy135: s->str_start = s->cursor; PHP_JSON_CONDITION_GOTO(STR_P2); } -yy136: +yy137: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy128; - if (yych >= ':') goto yy128; + if (yych <= '/') goto yy129; + if (yych >= ':') goto yy129; } else { - if (yych <= 'F') goto yy137; - if (yych <= '`') goto yy128; - if (yych >= 'g') goto yy128; + if (yych <= 'F') goto yy138; + if (yych <= '`') goto yy129; + if (yych >= 'g') goto yy129; } -yy137: +yy138: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy128; - if (yych >= ':') goto yy128; + if (yych <= '/') goto yy129; + if (yych >= ':') goto yy129; } else { - if (yych <= 'F') goto yy138; - if (yych <= '`') goto yy128; - if (yych >= 'g') goto yy128; + if (yych <= 'F') goto yy139; + if (yych <= '`') goto yy129; + if (yych >= 'g') goto yy129; } -yy138: +yy139: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych != '\\') goto yy135; - yych = *++YYCURSOR; - if (yych != 'u') goto yy128; + if (yych != '\\') goto yy136; yych = *++YYCURSOR; - if (yych == 'D') goto yy141; - if (yych != 'd') goto yy128; -yy141: + if (yych != 'u') goto yy129; yych = *++YYCURSOR; - if (yych <= 'B') goto yy128; - if (yych <= 'F') goto yy142; - if (yych <= 'b') goto yy128; - if (yych >= 'g') goto yy128; + if (yych == 'D') goto yy142; + if (yych != 'd') goto yy129; yy142: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy128; - if (yych >= ':') goto yy128; - } else { - if (yych <= 'F') goto yy143; - if (yych <= '`') goto yy128; - if (yych >= 'g') goto yy128; - } + if (yych <= 'B') goto yy129; + if (yych <= 'F') goto yy143; + if (yych <= 'b') goto yy129; + if (yych >= 'g') goto yy129; yy143: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy128; - if (yych >= ':') goto yy128; + if (yych <= '/') goto yy129; + if (yych >= ':') goto yy129; } else { if (yych <= 'F') goto yy144; - if (yych <= '`') goto yy128; - if (yych >= 'g') goto yy128; + if (yych <= '`') goto yy129; + if (yych >= 'g') goto yy129; } yy144: + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych <= '/') goto yy129; + if (yych >= ':') goto yy129; + } else { + if (yych <= 'F') goto yy145; + if (yych <= '`') goto yy129; + if (yych >= 'g') goto yy129; + } +yy145: ++YYCURSOR; { int utf32, utf16_hi, utf16_lo; @@ -1087,40 +1086,40 @@ yy144: s->str_start = s->cursor; PHP_JSON_CONDITION_GOTO(STR_P2); } -yy146: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy128; - if (yych <= '7') goto yy151; - if (yych <= '9') goto yy148; - goto yy128; - } else { - if (yych <= 'F') goto yy148; - if (yych <= '`') goto yy128; - if (yych <= 'f') goto yy148; - goto yy128; - } yy147: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy128; - if (yych >= ':') goto yy128; + if (yych <= '/') goto yy129; + if (yych <= '7') goto yy152; + if (yych <= '9') goto yy149; + goto yy129; } else { - if (yych <= 'F') goto yy148; - if (yych <= '`') goto yy128; - if (yych >= 'g') goto yy128; + if (yych <= 'F') goto yy149; + if (yych <= '`') goto yy129; + if (yych <= 'f') goto yy149; + goto yy129; } yy148: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy128; - if (yych >= ':') goto yy128; + if (yych <= '/') goto yy129; + if (yych >= ':') goto yy129; } else { if (yych <= 'F') goto yy149; - if (yych <= '`') goto yy128; - if (yych >= 'g') goto yy128; + if (yych <= '`') goto yy129; + if (yych >= 'g') goto yy129; } yy149: + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych <= '/') goto yy129; + if (yych >= ':') goto yy129; + } else { + if (yych <= 'F') goto yy150; + if (yych <= '`') goto yy129; + if (yych >= 'g') goto yy129; + } +yy150: ++YYCURSOR; { int utf16 = php_json_ucs2_to_int(s, 3); @@ -1130,17 +1129,17 @@ yy149: s->str_start = s->cursor; PHP_JSON_CONDITION_GOTO(STR_P2); } -yy151: +yy152: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy128; - if (yych >= ':') goto yy128; + if (yych <= '/') goto yy129; + if (yych >= ':') goto yy129; } else { - if (yych <= 'F') goto yy152; - if (yych <= '`') goto yy128; - if (yych >= 'g') goto yy128; + if (yych <= 'F') goto yy153; + if (yych <= '`') goto yy129; + if (yych >= 'g') goto yy129; } -yy152: +yy153: ++YYCURSOR; { int utf16 = php_json_ucs2_to_int(s, 2); diff --git a/ext/json/json_scanner.re b/ext/json/json_scanner.re index cbbfa41e5a..c18d8779b6 100644 --- a/ext/json/json_scanner.re +++ b/ext/json/json_scanner.re @@ -81,7 +81,7 @@ static int php_json_ucs2_to_int(php_json_scanner *s, int size) return php_json_ucs2_to_int_ex(s, size, 1); } -void php_json_scanner_init(php_json_scanner *s, char *str, int str_len, long options) +void php_json_scanner_init(php_json_scanner *s, char *str, size_t str_len, int options) { s->cursor = (php_json_ctype *) str; s->limit = (php_json_ctype *) str + str_len; diff --git a/ext/json/php_json_scanner.h b/ext/json/php_json_scanner.h index 4b031a4f12..f515ff55cd 100644 --- a/ext/json/php_json_scanner.h +++ b/ext/json/php_json_scanner.h @@ -32,15 +32,15 @@ typedef struct _php_json_scanner { php_json_ctype *ctxmarker; /* marker position for context backtracking */ php_json_ctype *str_start; /* start position of the string */ php_json_ctype *pstr; /* string pointer for escapes conversion */ + zval value; /* value */ int str_esc; /* number of extra characters for escaping */ int state; /* condition state */ - zval value; /* value */ - long options; /* options */ + int options; /* options */ php_json_error_code errcode; /* error type if there is an error */ } php_json_scanner; -void php_json_scanner_init(php_json_scanner *scanner, char *str, int str_len, long options); +void php_json_scanner_init(php_json_scanner *scanner, char *str, size_t str_len, int options); int php_json_scan(php_json_scanner *s); #endif /* PHP_JSON_SCANNER_H */ diff --git a/ext/json/php_json_scanner_defs.h b/ext/json/php_json_scanner_defs.h index b3867433a7..e1a5824dd3 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.13.6 */ enum YYCONDTYPE { yycJS, -- 2.50.1