diff options
author | Jakub Zelenka <bukka@php.net> | 2017-06-18 18:26:48 +0100 |
---|---|---|
committer | Jakub Zelenka <bukka@php.net> | 2017-06-18 18:26:48 +0100 |
commit | 887fabe78f61d338dde9a1d485ac8aff8b7d89e9 (patch) | |
tree | c94eea8c5fdeca89ef04d257c6e97d738094751a | |
parent | 4a39d33ee54c23fdd187ca9316f71fa51797a63e (diff) | |
download | php-git-887fabe78f61d338dde9a1d485ac8aff8b7d89e9.tar.gz |
Regenerate and bump re2c version to 0.16
It also matches the re2c version for Zend language scanner
-rw-r--r-- | ext/json/README | 2 | ||||
-rw-r--r-- | ext/json/json_scanner.c | 1212 | ||||
-rw-r--r-- | ext/json/php_json_scanner_defs.h | 2 |
3 files changed, 574 insertions, 642 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 f9f2ad7919..7104c3ea61 100644 --- a/ext/json/json_scanner.c +++ b/ext/json/json_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.14.3 */ +/* 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, @@ -155,15 +155,15 @@ yyc_JS: if (yych >= 0x01) goto yy5; } else { if (yych <= '\t') goto yy7; - if (yych <= '\n') goto yy9; + if (yych <= '\n') goto yy10; goto yy5; } } else { if (yych <= 0x1F) { - if (yych <= '\r') goto yy10; + if (yych <= '\r') goto yy11; goto yy5; } else { - if (yych <= ' ') goto yy11; + if (yych <= ' ') goto yy7; if (yych <= '!') goto yy12; goto yy14; } @@ -181,12 +181,12 @@ yyc_JS: } else { if (yych <= 'Z') { if (yych <= '9') goto yy21; - if (yych <= ':') goto yy22; + if (yych <= ':') goto yy23; goto yy12; } else { - if (yych <= '[') goto yy24; + if (yych <= '[') goto yy25; if (yych <= '\\') goto yy12; - goto yy26; + goto yy27; } } } @@ -195,40 +195,40 @@ yyc_JS: if (yych <= 's') { if (yych <= 'f') { if (yych <= 'e') goto yy12; - goto yy28; + goto yy29; } else { - if (yych == 'n') goto yy29; + if (yych == 'n') goto yy30; goto yy12; } } else { if (yych <= 'z') { - if (yych <= 't') goto yy30; + if (yych <= 't') goto yy31; goto yy12; } else { - if (yych <= '{') goto yy31; + if (yych <= '{') goto yy32; if (yych <= '|') goto yy12; - goto yy33; + goto yy34; } } } else { if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x7F) goto yy12; - goto yy35; + goto yy36; } else { - if (yych <= 0xDF) goto yy37; - if (yych <= 0xE0) goto yy38; - goto yy39; + if (yych <= 0xDF) goto yy38; + if (yych <= 0xE0) goto yy39; + goto yy40; } } else { if (yych <= 0xF0) { - if (yych <= 0xED) goto yy40; - if (yych <= 0xEF) goto yy41; + if (yych <= 0xED) goto yy41; + if (yych <= 0xEF) goto yy40; goto yy42; } else { if (yych <= 0xF3) goto yy43; if (yych <= 0xF4) goto yy44; - goto yy35; + goto yy36; } } } @@ -251,19 +251,19 @@ yy5: yy7: ++YYCURSOR; yych = *YYCURSOR; - goto yy82; yy8: - { goto std; } + if (yybm[0+yych] & 64) { + goto yy7; + } yy9: - yych = *++YYCURSOR; - goto yy8; + { goto std; } yy10: yych = *++YYCURSOR; - if (yych == '\n') goto yy83; - goto yy82; + goto yy9; yy11: yych = *++YYCURSOR; - goto yy82; + if (yych == '\n') goto yy10; + goto yy8; yy12: ++YYCURSOR; yy13: @@ -285,17 +285,17 @@ yy16: yy18: yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '0') goto yy80; - if (yych <= '9') goto yy70; + if (yych <= '0') goto yy19; + if (yych <= '9') goto yy21; goto yy13; yy19: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == '.') goto yy72; + if (yych == '.') goto yy45; } else { - if (yych <= 'E') goto yy73; - if (yych == 'e') goto yy73; + if (yych <= 'E') goto yy47; + if (yych == 'e') goto yy47; } yy20: { @@ -324,94 +324,101 @@ yy20: } yy21: yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - goto yy71; -yy22: + 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 ':'; } -yy24: +yy25: ++YYCURSOR; { return '['; } -yy26: +yy27: ++YYCURSOR; { return ']'; } -yy28: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'a') goto yy65; - goto yy13; yy29: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'u') goto yy61; + if (yych == 'a') goto yy48; goto yy13; yy30: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'r') goto yy57; + if (yych == 'u') goto yy49; goto yy13; yy31: + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'r') goto yy50; + goto yy13; +yy32: ++YYCURSOR; { return '{'; } -yy33: +yy34: ++YYCURSOR; { return '}'; } -yy35: - ++YYCURSOR; yy36: + ++YYCURSOR; +yy37: { s->errcode = PHP_JSON_ERROR_UTF8; return PHP_JSON_T_ERROR; } -yy37: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy36; - if (yych <= 0xBF) goto yy48; - goto yy36; yy38: - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x9F) goto yy36; - if (yych <= 0xBF) goto yy56; - goto yy36; + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy37; + if (yych <= 0xBF) goto yy12; + goto yy37; yy39: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy36; - if (yych <= 0xBF) goto yy55; - goto yy36; + if (yych <= 0x9F) goto yy37; + if (yych <= 0xBF) goto yy51; + goto yy37; yy40: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy36; - if (yych <= 0x9F) goto yy54; - goto yy36; + if (yych <= 0x7F) goto yy37; + if (yych <= 0xBF) goto yy51; + goto yy37; yy41: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy36; - if (yych <= 0xBF) goto yy53; - goto yy36; + if (yych <= 0x7F) goto yy37; + if (yych <= 0x9F) goto yy51; + goto yy37; yy42: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x8F) goto yy36; - if (yych <= 0xBF) goto yy51; - goto yy36; + if (yych <= 0x8F) goto yy37; + if (yych <= 0xBF) goto yy52; + goto yy37; yy43: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy36; - if (yych <= 0xBF) goto yy49; - goto yy36; + if (yych <= 0x7F) goto yy37; + if (yych <= 0xBF) goto yy52; + goto yy37; yy44: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy36; - if (yych >= 0x90) goto yy36; + if (yych <= 0x7F) goto yy37; + if (yych <= 0x8F) goto yy52; + goto yy37; +yy45: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy46; - if (yych <= 0xBF) goto yy47; + if (yych <= '/') goto yy46; + if (yych <= '9') goto yy53; yy46: YYCURSOR = YYMARKER; if (yyaccept <= 1) { @@ -422,205 +429,141 @@ yy46: } } else { if (yyaccept == 2) { - goto yy36; + goto yy37; } else { - goto yy77; + goto yy55; } } yy47: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy46; - if (yych >= 0xC0) goto yy46; + 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; - goto yy13; + if (yych == 'l') goto yy59; + goto yy46; yy49: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy46; - if (yych >= 0xC0) goto yy46; - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy46; - if (yych <= 0xBF) goto yy48; + if (yych == 'l') goto yy60; goto yy46; -yy51: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy46; - if (yych >= 0xC0) goto yy46; +yy50: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy46; - if (yych <= 0xBF) goto yy48; + if (yych == 'u') goto yy61; goto yy46; -yy53: +yy51: yych = *++YYCURSOR; if (yych <= 0x7F) goto yy46; - if (yych <= 0xBF) goto yy48; + if (yych <= 0xBF) goto yy12; goto yy46; -yy54: +yy52: yych = *++YYCURSOR; if (yych <= 0x7F) goto yy46; - if (yych <= 0xBF) goto yy48; + if (yych <= 0xBF) goto yy51; goto yy46; +yy53: + 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 yy46; - if (yych <= 0xBF) goto yy48; - goto yy46; + { + ZVAL_DOUBLE(&s->value, zend_strtod((char *) s->token, NULL)); + return PHP_JSON_T_DOUBLE; + } yy56: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy46; - if (yych <= 0xBF) goto yy48; - goto yy46; + if (yych <= '/') goto yy46; + if (yych >= ':') goto yy46; yy57: + ++YYCURSOR; + yych = *YYCURSOR; + if (yych <= '/') goto yy55; + if (yych <= '9') goto yy57; + goto yy55; +yy59: yych = *++YYCURSOR; - if (yych != 'u') goto yy46; + if (yych == 's') goto yy62; + goto yy46; +yy60: yych = *++YYCURSOR; - if (yych != 'e') goto yy46; - ++YYCURSOR; - { - ZVAL_TRUE(&s->value); - return PHP_JSON_T_TRUE; - } + if (yych == 'l') goto yy63; + goto yy46; yy61: yych = *++YYCURSOR; - if (yych != 'l') goto yy46; + if (yych == 'e') goto yy65; + goto yy46; +yy62: yych = *++YYCURSOR; - if (yych != 'l') goto yy46; + if (yych == 'e') goto yy67; + goto yy46; +yy63: ++YYCURSOR; { ZVAL_NULL(&s->value); return PHP_JSON_T_NUL; } yy65: - yych = *++YYCURSOR; - if (yych != 'l') goto yy46; - yych = *++YYCURSOR; - if (yych != 's') goto yy46; - yych = *++YYCURSOR; - if (yych != 'e') goto yy46; ++YYCURSOR; { - ZVAL_FALSE(&s->value); - return PHP_JSON_T_FALSE; + ZVAL_TRUE(&s->value); + return PHP_JSON_T_TRUE; } -yy70: - yyaccept = 0; - YYMARKER = ++YYCURSOR; - yych = *YYCURSOR; -yy71: - if (yybm[0+yych] & 64) { - goto yy70; - } - if (yych <= 'D') { - if (yych != '.') goto yy20; - } else { - if (yych <= 'E') goto yy73; - if (yych == 'e') goto yy73; - goto yy20; - } -yy72: - yych = *++YYCURSOR; - if (yych <= '/') goto yy46; - if (yych <= '9') goto yy78; - goto yy46; -yy73: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych != '+') goto yy46; - } else { - if (yych <= '-') goto yy74; - if (yych <= '/') goto yy46; - if (yych <= '9') goto yy75; - goto yy46; - } -yy74: - yych = *++YYCURSOR; - if (yych <= '/') goto yy46; - if (yych >= ':') goto yy46; -yy75: +yy67: ++YYCURSOR; - yych = *YYCURSOR; - if (yych <= '/') goto yy77; - if (yych <= '9') goto yy75; -yy77: { - ZVAL_DOUBLE(&s->value, zend_strtod((char *) s->token, NULL)); - return PHP_JSON_T_DOUBLE; + ZVAL_FALSE(&s->value); + return PHP_JSON_T_FALSE; } -yy78: - yyaccept = 3; - YYMARKER = ++YYCURSOR; - yych = *YYCURSOR; - if (yych <= 'D') { - if (yych <= '/') goto yy77; - if (yych <= '9') goto yy78; - goto yy77; - } else { - if (yych <= 'E') goto yy73; - if (yych == 'e') goto yy73; - goto yy77; - } -yy80: - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych == '.') goto yy72; - goto yy20; - } else { - if (yych <= 'E') goto yy73; - if (yych == 'e') goto yy73; - goto yy20; - } -yy81: - ++YYCURSOR; - yych = *YYCURSOR; -yy82: - if (yybm[0+yych] & 128) { - goto yy81; - } - goto yy8; -yy83: - ++YYCURSOR; - yych = *YYCURSOR; - goto yy8; } /* *********************************** */ yyc_STR_P1: yych = *YYCURSOR; if (yych <= 0xDF) { if (yych <= '[') { - if (yych <= 0x1F) goto yy86; - if (yych == '"') goto yy90; - goto yy88; + if (yych <= 0x1F) goto yy71; + if (yych == '"') goto yy75; + goto yy73; } else { - if (yych <= '\\') goto yy92; - if (yych <= 0x7F) goto yy88; - if (yych <= 0xC1) goto yy94; - goto yy96; + if (yych <= '\\') goto yy77; + if (yych <= 0x7F) goto yy73; + if (yych <= 0xC1) goto yy79; + goto yy81; } } else { if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy97; - if (yych <= 0xEC) goto yy98; - if (yych <= 0xED) goto yy99; - goto yy100; + if (yych <= 0xE0) goto yy82; + if (yych == 0xED) goto yy84; + goto yy83; } else { - if (yych <= 0xF0) goto yy101; - if (yych <= 0xF3) goto yy102; - if (yych <= 0xF4) goto yy103; - goto yy94; + if (yych <= 0xF0) goto yy85; + if (yych <= 0xF3) goto yy86; + if (yych <= 0xF4) goto yy87; + goto yy79; } } -yy86: +yy71: ++YYCURSOR; { s->errcode = PHP_JSON_ERROR_CTRL_CHAR; return PHP_JSON_T_ERROR; } -yy88: +yy73: ++YYCURSOR; -yy89: { PHP_JSON_CONDITION_GOTO(STR_P1); } -yy90: +yy75: ++YYCURSOR; { zend_string *str; @@ -644,416 +587,391 @@ yy90: return PHP_JSON_T_STRING; } } -yy92: +yy77: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'e') { if (yych <= '/') { - if (yych == '"') goto yy116; - if (yych >= '/') goto yy116; + if (yych == '"') goto yy88; + if (yych >= '/') goto yy88; } else { if (yych <= '\\') { - if (yych >= '\\') goto yy116; + if (yych >= '\\') goto yy88; } else { - if (yych == 'b') goto yy116; + if (yych == 'b') goto yy88; } } } else { if (yych <= 'q') { - if (yych <= 'f') goto yy116; - if (yych == 'n') goto yy116; + if (yych <= 'f') goto yy88; + if (yych == 'n') goto yy88; } else { if (yych <= 's') { - if (yych <= 'r') goto yy116; + if (yych <= 'r') goto yy88; } else { - if (yych <= 't') goto yy116; - if (yych <= 'u') goto yy118; + if (yych <= 't') goto yy88; + if (yych <= 'u') goto yy90; } } } -yy93: +yy78: { s->errcode = PHP_JSON_ERROR_SYNTAX; return PHP_JSON_T_ERROR; } -yy94: +yy79: ++YYCURSOR; -yy95: +yy80: { s->errcode = PHP_JSON_ERROR_UTF8; return PHP_JSON_T_ERROR; } -yy96: +yy81: yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy95; - if (yych <= 0xBF) goto yy107; - goto yy95; -yy97: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x9F) goto yy95; - if (yych <= 0xBF) goto yy115; - goto yy95; -yy98: + if (yych <= 0x7F) goto yy80; + if (yych <= 0xBF) goto yy73; + goto yy80; +yy82: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy95; - if (yych <= 0xBF) goto yy114; - goto yy95; -yy99: + if (yych <= 0x9F) goto yy80; + if (yych <= 0xBF) goto yy92; + goto yy80; +yy83: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy95; - if (yych <= 0x9F) goto yy113; - goto yy95; -yy100: + if (yych <= 0x7F) goto yy80; + if (yych <= 0xBF) goto yy92; + goto yy80; +yy84: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy95; - if (yych <= 0xBF) goto yy112; - goto yy95; -yy101: + if (yych <= 0x7F) goto yy80; + if (yych <= 0x9F) goto yy92; + goto yy80; +yy85: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x8F) goto yy95; - if (yych <= 0xBF) goto yy110; - goto yy95; -yy102: + if (yych <= 0x8F) goto yy80; + if (yych <= 0xBF) goto yy93; + goto yy80; +yy86: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy95; - if (yych <= 0xBF) goto yy108; - goto yy95; -yy103: + if (yych <= 0x7F) goto yy80; + if (yych <= 0xBF) goto yy93; + goto yy80; +yy87: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy95; - if (yych >= 0x90) goto yy95; - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy105; - if (yych <= 0xBF) goto yy106; -yy105: - YYCURSOR = YYMARKER; - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy93; - } else { - goto yy95; - } - } else { - goto yy127; - } -yy106: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy105; - if (yych >= 0xC0) goto yy105; -yy107: - yych = *++YYCURSOR; - goto yy89; -yy108: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy105; - if (yych >= 0xC0) goto yy105; - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy105; - if (yych <= 0xBF) goto yy107; - goto yy105; -yy110: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy105; - if (yych >= 0xC0) goto yy105; - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy105; - if (yych <= 0xBF) goto yy107; - goto yy105; -yy112: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy105; - if (yych <= 0xBF) goto yy107; - goto yy105; -yy113: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy105; - if (yych <= 0xBF) goto yy107; - goto yy105; -yy114: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy105; - if (yych <= 0xBF) goto yy107; - goto yy105; -yy115: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy105; - if (yych <= 0xBF) goto yy107; - goto yy105; -yy116: + if (yych <= 0x7F) goto yy80; + if (yych <= 0x8F) goto yy93; + goto yy80; +yy88: ++YYCURSOR; { s->str_esc++; PHP_JSON_CONDITION_GOTO(STR_P1); } -yy118: +yy90: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= '9') { - if (yych <= '/') goto yy105; - if (yych >= '1') goto yy120; + if (yych <= '/') goto yy91; + if (yych <= '0') goto yy94; + goto yy95; } else { - if (yych <= '@') goto yy105; - if (yych <= 'C') goto yy120; - goto yy121; + if (yych <= '@') goto yy91; + if (yych <= 'C') goto yy95; + goto yy96; } } else { if (yych <= 'c') { - if (yych <= 'F') goto yy120; - if (yych <= '`') goto yy105; - goto yy120; + if (yych <= 'F') goto yy95; + if (yych >= 'a') goto yy95; } else { - if (yych <= 'd') goto yy121; - if (yych <= 'f') goto yy120; - goto yy105; + 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 yy105; - if (yych <= '0') goto yy140; - if (yych <= '7') goto yy141; - goto yy122; + if (yych <= '/') goto yy91; + if (yych <= '0') goto yy97; + if (yych <= '7') goto yy98; + goto yy99; } else { if (yych <= 'F') { - if (yych <= '@') goto yy105; - goto yy122; + if (yych <= '@') goto yy91; + goto yy99; } else { - if (yych <= '`') goto yy105; - if (yych <= 'f') goto yy122; - goto yy105; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy99; + goto yy91; } } -yy120: +yy95: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy105; - if (yych <= '9') goto yy122; - goto yy105; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy99; + goto yy91; } else { - if (yych <= 'F') goto yy122; - if (yych <= '`') goto yy105; - if (yych <= 'f') goto yy122; - goto yy105; + if (yych <= 'F') goto yy99; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy99; + goto yy91; } -yy121: +yy96: yych = *++YYCURSOR; if (yych <= 'B') { if (yych <= '7') { - if (yych <= '/') goto yy105; + if (yych <= '/') goto yy91; + goto yy99; } else { - if (yych <= '9') goto yy123; - if (yych <= '@') goto yy105; - goto yy123; + if (yych <= '9') goto yy100; + if (yych <= '@') goto yy91; + goto yy100; } } else { if (yych <= '`') { - if (yych <= 'F') goto yy124; - goto yy105; + if (yych <= 'F') goto yy101; + goto yy91; } else { - if (yych <= 'b') goto yy123; - if (yych <= 'f') goto yy124; - goto yy105; + if (yych <= 'b') goto yy100; + if (yych <= 'f') goto yy101; + goto yy91; } } -yy122: +yy97: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy105; - if (yych <= '9') goto yy137; - goto yy105; + if (yych <= '/') goto yy91; + if (yych <= '7') goto yy102; + if (yych <= '9') goto yy103; + goto yy91; } else { - if (yych <= 'F') goto yy137; - if (yych <= '`') goto yy105; - if (yych <= 'f') goto yy137; - goto yy105; + if (yych <= 'F') goto yy103; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy103; + goto yy91; } -yy123: +yy98: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy105; - if (yych <= '9') goto yy128; - goto yy105; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy103; + goto yy91; } else { - if (yych <= 'F') goto yy128; - if (yych <= '`') goto yy105; - if (yych <= 'f') goto yy128; - goto yy105; + if (yych <= 'F') goto yy103; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy103; + goto yy91; } -yy124: +yy99: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy105; - if (yych >= ':') goto yy105; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy104; + goto yy91; } else { - if (yych <= 'F') goto yy125; - if (yych <= '`') goto yy105; - if (yych >= 'g') goto yy105; + if (yych <= 'F') goto yy104; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy104; + goto yy91; } -yy125: +yy100: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy105; - if (yych >= ':') goto yy105; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy105; + goto yy91; } else { - if (yych <= 'F') goto yy126; - if (yych <= '`') goto yy105; - if (yych >= 'g') goto yy105; + if (yych <= 'F') goto yy105; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy105; + goto yy91; } -yy126: - ++YYCURSOR; -yy127: - { - s->errcode = PHP_JSON_ERROR_UTF16; - return PHP_JSON_T_ERROR; - } -yy128: +yy101: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy105; - if (yych >= ':') goto yy105; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy106; + goto yy91; } else { - if (yych <= 'F') goto yy129; - if (yych <= '`') goto yy105; - if (yych >= 'g') goto yy105; + if (yych <= 'F') goto yy106; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy106; + goto yy91; } -yy129: - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych != '\\') goto yy127; +yy102: yych = *++YYCURSOR; - if (yych != 'u') goto yy105; + 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 yy132; - if (yych != 'd') goto yy105; -yy132: + 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 yy105; - if (yych <= 'F') goto yy133; - if (yych <= 'b') goto yy105; - if (yych >= 'g') goto yy105; -yy133: + 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 yy105; - if (yych >= ':') goto yy105; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy113; + goto yy91; } else { - if (yych <= 'F') goto yy134; - if (yych <= '`') goto yy105; - if (yych >= 'g') goto yy105; + if (yych <= 'F') goto yy113; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy113; + goto yy91; } -yy134: +yy106: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy105; - if (yych >= ':') goto yy105; + if (yych <= '/') goto yy91; + if (yych <= '9') goto yy115; + goto yy91; } else { - if (yych <= 'F') goto yy135; - if (yych <= '`') goto yy105; - if (yych >= 'g') goto yy105; + if (yych <= 'F') goto yy115; + if (yych <= '`') goto yy91; + if (yych <= 'f') goto yy115; + goto yy91; } -yy135: +yy107: ++YYCURSOR; { - s->str_esc += 8; + s->str_esc += 5; PHP_JSON_CONDITION_GOTO(STR_P1); } -yy137: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy105; - if (yych >= ':') goto yy105; - } else { - if (yych <= 'F') goto yy138; - if (yych <= '`') goto yy105; - if (yych >= 'g') goto yy105; - } -yy138: +yy109: + ++YYCURSOR; + { + s->str_esc += 4; + PHP_JSON_CONDITION_GOTO(STR_P1); + } +yy111: ++YYCURSOR; { s->str_esc += 3; PHP_JSON_CONDITION_GOTO(STR_P1); } -yy140: +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 yy105; - if (yych <= '7') goto yy145; - if (yych <= '9') goto yy142; - goto yy105; - } else { - if (yych <= 'F') goto yy142; - if (yych <= '`') goto yy105; - if (yych <= 'f') goto yy142; - goto yy105; - } -yy141: + goto yy114; +yy116: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy105; - if (yych >= ':') goto yy105; - } else { - if (yych <= 'F') goto yy142; - if (yych <= '`') goto yy105; - if (yych >= 'g') goto yy105; - } -yy142: + 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 yy105; - if (yych >= ':') goto yy105; + if (yych <= '/') goto yy91; + if (yych >= ':') goto yy91; } else { - if (yych <= 'F') goto yy143; - if (yych <= '`') goto yy105; - if (yych >= 'g') goto yy105; + if (yych <= 'F') goto yy120; + if (yych <= '`') goto yy91; + if (yych >= 'g') goto yy91; } -yy143: - ++YYCURSOR; - { - s->str_esc += 4; - PHP_JSON_CONDITION_GOTO(STR_P1); - } -yy145: +yy120: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy105; - if (yych >= ':') goto yy105; + if (yych <= '/') goto yy91; + if (yych >= ':') goto yy91; } else { - if (yych <= 'F') goto yy146; - if (yych <= '`') goto yy105; - if (yych >= 'g') goto yy105; + if (yych <= 'F') goto yy121; + if (yych <= '`') goto yy91; + if (yych >= 'g') goto yy91; } -yy146: +yy121: ++YYCURSOR; { - s->str_esc += 5; + s->str_esc += 8; PHP_JSON_CONDITION_GOTO(STR_P1); } /* *********************************** */ yyc_STR_P2: yych = *YYCURSOR; - if (yych == '"') goto yy152; - if (yych == '\\') goto yy154; + if (yych == '"') goto yy127; + if (yych == '\\') goto yy129; ++YYCURSOR; { PHP_JSON_CONDITION_GOTO(STR_P2); } -yy152: +yy127: ++YYCURSOR; YYSETCONDITION(yycJS); { PHP_JSON_SCANNER_COPY_ESC(); return PHP_JSON_T_STRING; } -yy154: - yyaccept = 0; +yy129: yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'u') goto yy156; -yy155: + if (yych == 'u') goto yy131; +yy130: { char esc; PHP_JSON_SCANNER_COPY_ESC(); @@ -1087,206 +1005,179 @@ yy155: s->str_start = s->cursor; PHP_JSON_CONDITION_GOTO(STR_P2); } -yy156: +yy131: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= '9') { - if (yych <= '/') goto yy157; - if (yych <= '0') goto yy158; - goto yy159; + if (yych <= '/') goto yy132; + if (yych <= '0') goto yy133; + goto yy134; } else { - if (yych <= '@') goto yy157; - if (yych <= 'C') goto yy159; - goto yy160; + if (yych <= '@') goto yy132; + if (yych <= 'C') goto yy134; + goto yy135; } } else { if (yych <= 'c') { - if (yych <= 'F') goto yy159; - if (yych >= 'a') goto yy159; + if (yych <= 'F') goto yy134; + if (yych >= 'a') goto yy134; } else { - if (yych <= 'd') goto yy160; - if (yych <= 'f') goto yy159; + if (yych <= 'd') goto yy135; + if (yych <= 'f') goto yy134; } } -yy157: +yy132: YYCURSOR = YYMARKER; - goto yy155; -yy158: + goto yy130; +yy133: yych = *++YYCURSOR; if (yych <= '9') { - if (yych <= '/') goto yy157; - if (yych <= '0') goto yy175; - if (yych <= '7') goto yy176; - goto yy162; + if (yych <= '/') goto yy132; + if (yych <= '0') goto yy136; + if (yych <= '7') goto yy137; + goto yy138; } else { if (yych <= 'F') { - if (yych <= '@') goto yy157; - goto yy162; + if (yych <= '@') goto yy132; + goto yy138; } else { - if (yych <= '`') goto yy157; - if (yych <= 'f') goto yy162; - goto yy157; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy138; + goto yy132; } } -yy159: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy157; - if (yych <= '9') goto yy162; - goto yy157; - } else { - if (yych <= 'F') goto yy162; - if (yych <= '`') goto yy157; - if (yych <= 'f') goto yy162; - goto yy157; - } -yy160: +yy134: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy157; - if (yych <= '7') goto yy162; - if (yych >= ':') goto yy157; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy138; + goto yy132; } else { - if (yych <= 'B') goto yy161; - if (yych <= '`') goto yy157; - if (yych >= 'c') goto yy157; + if (yych <= 'F') goto yy138; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy138; + goto yy132; } -yy161: +yy135: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy157; - if (yych <= '9') goto yy166; - goto yy157; + if (yych <= '/') goto yy132; + if (yych <= '7') goto yy138; + if (yych <= '9') goto yy139; + goto yy132; } else { - if (yych <= 'F') goto yy166; - if (yych <= '`') goto yy157; - if (yych <= 'f') goto yy166; - goto yy157; + if (yych <= 'B') goto yy139; + if (yych <= '`') goto yy132; + if (yych <= 'b') goto yy139; + goto yy132; } -yy162: +yy136: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy157; - if (yych >= ':') goto yy157; + if (yych <= '/') goto yy132; + if (yych <= '7') goto yy140; + if (yych <= '9') goto yy141; + goto yy132; } else { - if (yych <= 'F') goto yy163; - if (yych <= '`') goto yy157; - if (yych >= 'g') goto yy157; + if (yych <= 'F') goto yy141; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy141; + goto yy132; } -yy163: +yy137: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy157; - if (yych >= ':') goto yy157; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy141; + goto yy132; } else { - if (yych <= 'F') goto yy164; - if (yych <= '`') goto yy157; - if (yych >= 'g') goto yy157; + if (yych <= 'F') goto yy141; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy141; + goto yy132; } -yy164: - ++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); - } -yy166: +yy138: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy157; - if (yych >= ':') goto yy157; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy142; + goto yy132; } else { - if (yych <= 'F') goto yy167; - if (yych <= '`') goto yy157; - if (yych >= 'g') goto yy157; + if (yych <= 'F') goto yy142; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy142; + goto yy132; } -yy167: - yych = *++YYCURSOR; - if (yych != '\\') goto yy157; - yych = *++YYCURSOR; - if (yych != 'u') goto yy157; - yych = *++YYCURSOR; - if (yych == 'D') goto yy170; - if (yych != 'd') goto yy157; -yy170: - yych = *++YYCURSOR; - if (yych <= 'B') goto yy157; - if (yych <= 'F') goto yy171; - if (yych <= 'b') goto yy157; - if (yych >= 'g') goto yy157; -yy171: +yy139: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy157; - if (yych >= ':') goto yy157; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy143; + goto yy132; } else { - if (yych <= 'F') goto yy172; - if (yych <= '`') goto yy157; - if (yych >= 'g') goto yy157; + if (yych <= 'F') goto yy143; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy143; + goto yy132; } -yy172: +yy140: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy157; - if (yych >= ':') goto yy157; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy144; + goto yy132; } else { - if (yych <= 'F') goto yy173; - if (yych <= '`') goto yy157; - if (yych >= 'g') goto yy157; + if (yych <= 'F') goto yy144; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy144; + goto yy132; } -yy173: - ++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); - } -yy175: +yy141: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy157; - if (yych <= '7') goto yy180; - if (yych <= '9') goto yy177; - goto yy157; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy146; + goto yy132; } else { - if (yych <= 'F') goto yy177; - if (yych <= '`') goto yy157; - if (yych <= 'f') goto yy177; - goto yy157; + if (yych <= 'F') goto yy146; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy146; + goto yy132; } -yy176: +yy142: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy157; - if (yych >= ':') goto yy157; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy148; + goto yy132; } else { - if (yych <= 'F') goto yy177; - if (yych <= '`') goto yy157; - if (yych >= 'g') goto yy157; + if (yych <= 'F') goto yy148; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy148; + goto yy132; } -yy177: +yy143: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy157; - if (yych >= ':') goto yy157; + if (yych <= '/') goto yy132; + if (yych <= '9') goto yy150; + goto yy132; } else { - if (yych <= 'F') goto yy178; - if (yych <= '`') goto yy157; - if (yych >= 'g') goto yy157; + if (yych <= 'F') goto yy150; + if (yych <= '`') goto yy132; + if (yych <= 'f') goto yy150; + goto yy132; } -yy178: +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); @@ -1296,22 +1187,63 @@ yy178: s->str_start = s->cursor; PHP_JSON_CONDITION_GOTO(STR_P2); } -yy180: +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 yy157; - if (yych >= ':') goto yy157; + if (yych <= '/') goto yy132; + if (yych >= ':') goto yy132; } else { - if (yych <= 'F') goto yy181; - if (yych <= '`') goto yy157; - if (yych >= 'g') goto yy157; + if (yych <= 'F') goto yy155; + if (yych <= '`') goto yy132; + if (yych >= 'g') goto yy132; } -yy181: +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 a75e766a65..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.14.3 */ +/* Generated by re2c 0.16 */ enum YYCONDTYPE { yycJS, |