parent
b03bbe724d
commit
b820bb3b1f
5 changed files with 334 additions and 145 deletions
2
Makefile
2
Makefile
|
@ -75,7 +75,7 @@ clang_sanitize: clean
|
|||
|
||||
# create scanner with re2c
|
||||
re2c: src/json.hpp.re2c
|
||||
$(RE2C) -W --bit-vectors --nested-ifs --no-debug-info $< | $(SED) '1d' > src/json.hpp
|
||||
$(RE2C) -W --utf-8 --encoding-policy fail --bit-vectors --nested-ifs --no-debug-info $< | $(SED) '1d' > src/json.hpp
|
||||
|
||||
# pretty printer
|
||||
pretty:
|
||||
|
|
457
src/json.hpp
457
src/json.hpp
|
@ -7809,24 +7809,24 @@ class basic_json
|
|||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 128, 128, 128, 128, 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, 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, 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, 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,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
if ((m_limit - m_cursor) < 5)
|
||||
if ((m_limit - m_cursor) < 6)
|
||||
{
|
||||
fill_line_buffer();
|
||||
}
|
||||
|
@ -7937,7 +7937,7 @@ class basic_json
|
|||
{
|
||||
goto basic_json_parser_28;
|
||||
}
|
||||
if (yych == 0xEF)
|
||||
if (yych == 0xC3)
|
||||
{
|
||||
goto basic_json_parser_30;
|
||||
}
|
||||
|
@ -7979,7 +7979,19 @@ basic_json_parser_9:
|
|||
{
|
||||
goto basic_json_parser_5;
|
||||
}
|
||||
goto basic_json_parser_32;
|
||||
if (yych <= 0x7F)
|
||||
{
|
||||
goto basic_json_parser_32;
|
||||
}
|
||||
if (yych <= 0xC1)
|
||||
{
|
||||
goto basic_json_parser_5;
|
||||
}
|
||||
if (yych <= 0xF4)
|
||||
{
|
||||
goto basic_json_parser_32;
|
||||
}
|
||||
goto basic_json_parser_5;
|
||||
basic_json_parser_10:
|
||||
++m_cursor;
|
||||
{
|
||||
|
@ -8008,18 +8020,18 @@ basic_json_parser_13:
|
|||
{
|
||||
if (yych == '.')
|
||||
{
|
||||
goto basic_json_parser_37;
|
||||
goto basic_json_parser_44;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (yych <= 'E')
|
||||
{
|
||||
goto basic_json_parser_38;
|
||||
goto basic_json_parser_45;
|
||||
}
|
||||
if (yych == 'e')
|
||||
{
|
||||
goto basic_json_parser_38;
|
||||
goto basic_json_parser_45;
|
||||
}
|
||||
}
|
||||
basic_json_parser_14:
|
||||
|
@ -8043,7 +8055,7 @@ basic_json_parser_15:
|
|||
{
|
||||
if (yych == '.')
|
||||
{
|
||||
goto basic_json_parser_37;
|
||||
goto basic_json_parser_44;
|
||||
}
|
||||
goto basic_json_parser_14;
|
||||
}
|
||||
|
@ -8051,11 +8063,11 @@ basic_json_parser_15:
|
|||
{
|
||||
if (yych <= 'E')
|
||||
{
|
||||
goto basic_json_parser_38;
|
||||
goto basic_json_parser_45;
|
||||
}
|
||||
if (yych == 'e')
|
||||
{
|
||||
goto basic_json_parser_38;
|
||||
goto basic_json_parser_45;
|
||||
}
|
||||
goto basic_json_parser_14;
|
||||
}
|
||||
|
@ -8082,7 +8094,7 @@ basic_json_parser_23:
|
|||
yych = *(m_marker = ++m_cursor);
|
||||
if (yych == 'a')
|
||||
{
|
||||
goto basic_json_parser_39;
|
||||
goto basic_json_parser_46;
|
||||
}
|
||||
goto basic_json_parser_5;
|
||||
basic_json_parser_24:
|
||||
|
@ -8090,7 +8102,7 @@ basic_json_parser_24:
|
|||
yych = *(m_marker = ++m_cursor);
|
||||
if (yych == 'u')
|
||||
{
|
||||
goto basic_json_parser_40;
|
||||
goto basic_json_parser_47;
|
||||
}
|
||||
goto basic_json_parser_5;
|
||||
basic_json_parser_25:
|
||||
|
@ -8098,7 +8110,7 @@ basic_json_parser_25:
|
|||
yych = *(m_marker = ++m_cursor);
|
||||
if (yych == 'r')
|
||||
{
|
||||
goto basic_json_parser_41;
|
||||
goto basic_json_parser_48;
|
||||
}
|
||||
goto basic_json_parser_5;
|
||||
basic_json_parser_26:
|
||||
|
@ -8116,9 +8128,9 @@ basic_json_parser_28:
|
|||
basic_json_parser_30:
|
||||
yyaccept = 0;
|
||||
yych = *(m_marker = ++m_cursor);
|
||||
if (yych == 0xBB)
|
||||
if (yych == 0xAF)
|
||||
{
|
||||
goto basic_json_parser_42;
|
||||
goto basic_json_parser_49;
|
||||
}
|
||||
goto basic_json_parser_5;
|
||||
basic_json_parser_31:
|
||||
|
@ -8133,15 +8145,59 @@ basic_json_parser_32:
|
|||
{
|
||||
goto basic_json_parser_31;
|
||||
}
|
||||
if (yych <= 0x1F)
|
||||
if (yych <= 0xE0)
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
if (yych <= '\\')
|
||||
{
|
||||
if (yych <= 0x1F)
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
if (yych <= '"')
|
||||
{
|
||||
goto basic_json_parser_34;
|
||||
}
|
||||
goto basic_json_parser_36;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (yych <= 0xC1)
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
if (yych <= 0xDF)
|
||||
{
|
||||
goto basic_json_parser_37;
|
||||
}
|
||||
goto basic_json_parser_38;
|
||||
}
|
||||
}
|
||||
if (yych <= '"')
|
||||
else
|
||||
{
|
||||
goto basic_json_parser_34;
|
||||
if (yych <= 0xEF)
|
||||
{
|
||||
if (yych == 0xED)
|
||||
{
|
||||
goto basic_json_parser_40;
|
||||
}
|
||||
goto basic_json_parser_39;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (yych <= 0xF0)
|
||||
{
|
||||
goto basic_json_parser_41;
|
||||
}
|
||||
if (yych <= 0xF3)
|
||||
{
|
||||
goto basic_json_parser_42;
|
||||
}
|
||||
if (yych <= 0xF4)
|
||||
{
|
||||
goto basic_json_parser_43;
|
||||
}
|
||||
}
|
||||
}
|
||||
goto basic_json_parser_36;
|
||||
basic_json_parser_33:
|
||||
m_cursor = m_marker;
|
||||
if (yyaccept == 0)
|
||||
|
@ -8231,13 +8287,125 @@ basic_json_parser_36:
|
|||
}
|
||||
if (yych <= 'u')
|
||||
{
|
||||
goto basic_json_parser_43;
|
||||
goto basic_json_parser_50;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
}
|
||||
}
|
||||
basic_json_parser_37:
|
||||
++m_cursor;
|
||||
if (m_limit <= m_cursor)
|
||||
{
|
||||
fill_line_buffer();
|
||||
}
|
||||
yych = *m_cursor;
|
||||
if (yych <= 0x7F)
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
if (yych <= 0xBF)
|
||||
{
|
||||
goto basic_json_parser_31;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_38:
|
||||
++m_cursor;
|
||||
if (m_limit <= m_cursor)
|
||||
{
|
||||
fill_line_buffer();
|
||||
}
|
||||
yych = *m_cursor;
|
||||
if (yych <= 0x9F)
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
if (yych <= 0xBF)
|
||||
{
|
||||
goto basic_json_parser_37;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_39:
|
||||
++m_cursor;
|
||||
if (m_limit <= m_cursor)
|
||||
{
|
||||
fill_line_buffer();
|
||||
}
|
||||
yych = *m_cursor;
|
||||
if (yych <= 0x7F)
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
if (yych <= 0xBF)
|
||||
{
|
||||
goto basic_json_parser_37;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_40:
|
||||
++m_cursor;
|
||||
if (m_limit <= m_cursor)
|
||||
{
|
||||
fill_line_buffer();
|
||||
}
|
||||
yych = *m_cursor;
|
||||
if (yych <= 0x7F)
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
if (yych <= 0x9F)
|
||||
{
|
||||
goto basic_json_parser_37;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_41:
|
||||
++m_cursor;
|
||||
if (m_limit <= m_cursor)
|
||||
{
|
||||
fill_line_buffer();
|
||||
}
|
||||
yych = *m_cursor;
|
||||
if (yych <= 0x8F)
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
if (yych <= 0xBF)
|
||||
{
|
||||
goto basic_json_parser_39;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_42:
|
||||
++m_cursor;
|
||||
if (m_limit <= m_cursor)
|
||||
{
|
||||
fill_line_buffer();
|
||||
}
|
||||
yych = *m_cursor;
|
||||
if (yych <= 0x7F)
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
if (yych <= 0xBF)
|
||||
{
|
||||
goto basic_json_parser_39;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_43:
|
||||
++m_cursor;
|
||||
if (m_limit <= m_cursor)
|
||||
{
|
||||
fill_line_buffer();
|
||||
}
|
||||
yych = *m_cursor;
|
||||
if (yych <= 0x7F)
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
if (yych <= 0x8F)
|
||||
{
|
||||
goto basic_json_parser_39;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_44:
|
||||
yych = *++m_cursor;
|
||||
if (yych <= '/')
|
||||
{
|
||||
|
@ -8245,16 +8413,16 @@ basic_json_parser_37:
|
|||
}
|
||||
if (yych <= '9')
|
||||
{
|
||||
goto basic_json_parser_44;
|
||||
goto basic_json_parser_51;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_38:
|
||||
basic_json_parser_45:
|
||||
yych = *++m_cursor;
|
||||
if (yych <= ',')
|
||||
{
|
||||
if (yych == '+')
|
||||
{
|
||||
goto basic_json_parser_46;
|
||||
goto basic_json_parser_53;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
|
@ -8262,7 +8430,7 @@ basic_json_parser_38:
|
|||
{
|
||||
if (yych <= '-')
|
||||
{
|
||||
goto basic_json_parser_46;
|
||||
goto basic_json_parser_53;
|
||||
}
|
||||
if (yych <= '/')
|
||||
{
|
||||
|
@ -8270,39 +8438,39 @@ basic_json_parser_38:
|
|||
}
|
||||
if (yych <= '9')
|
||||
{
|
||||
goto basic_json_parser_47;
|
||||
goto basic_json_parser_54;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
basic_json_parser_39:
|
||||
basic_json_parser_46:
|
||||
yych = *++m_cursor;
|
||||
if (yych == 'l')
|
||||
{
|
||||
goto basic_json_parser_49;
|
||||
goto basic_json_parser_56;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_40:
|
||||
basic_json_parser_47:
|
||||
yych = *++m_cursor;
|
||||
if (yych == 'l')
|
||||
{
|
||||
goto basic_json_parser_50;
|
||||
goto basic_json_parser_57;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_41:
|
||||
basic_json_parser_48:
|
||||
yych = *++m_cursor;
|
||||
if (yych == 'u')
|
||||
{
|
||||
goto basic_json_parser_51;
|
||||
goto basic_json_parser_58;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_42:
|
||||
basic_json_parser_49:
|
||||
yych = *++m_cursor;
|
||||
if (yych == 0xBF)
|
||||
if (yych == 0xC2)
|
||||
{
|
||||
goto basic_json_parser_52;
|
||||
goto basic_json_parser_59;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_43:
|
||||
basic_json_parser_50:
|
||||
++m_cursor;
|
||||
if (m_limit <= m_cursor)
|
||||
{
|
||||
|
@ -8317,7 +8485,7 @@ basic_json_parser_43:
|
|||
}
|
||||
if (yych <= '9')
|
||||
{
|
||||
goto basic_json_parser_54;
|
||||
goto basic_json_parser_60;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
|
@ -8325,7 +8493,7 @@ basic_json_parser_43:
|
|||
{
|
||||
if (yych <= 'F')
|
||||
{
|
||||
goto basic_json_parser_54;
|
||||
goto basic_json_parser_60;
|
||||
}
|
||||
if (yych <= '`')
|
||||
{
|
||||
|
@ -8333,11 +8501,11 @@ basic_json_parser_43:
|
|||
}
|
||||
if (yych <= 'f')
|
||||
{
|
||||
goto basic_json_parser_54;
|
||||
goto basic_json_parser_60;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
basic_json_parser_44:
|
||||
basic_json_parser_51:
|
||||
yyaccept = 1;
|
||||
m_marker = ++m_cursor;
|
||||
if ((m_limit - m_cursor) < 3)
|
||||
|
@ -8353,7 +8521,7 @@ basic_json_parser_44:
|
|||
}
|
||||
if (yych <= '9')
|
||||
{
|
||||
goto basic_json_parser_44;
|
||||
goto basic_json_parser_51;
|
||||
}
|
||||
goto basic_json_parser_14;
|
||||
}
|
||||
|
@ -8361,15 +8529,15 @@ basic_json_parser_44:
|
|||
{
|
||||
if (yych <= 'E')
|
||||
{
|
||||
goto basic_json_parser_38;
|
||||
goto basic_json_parser_45;
|
||||
}
|
||||
if (yych == 'e')
|
||||
{
|
||||
goto basic_json_parser_38;
|
||||
goto basic_json_parser_45;
|
||||
}
|
||||
goto basic_json_parser_14;
|
||||
}
|
||||
basic_json_parser_46:
|
||||
basic_json_parser_53:
|
||||
yych = *++m_cursor;
|
||||
if (yych <= '/')
|
||||
{
|
||||
|
@ -8379,7 +8547,7 @@ basic_json_parser_46:
|
|||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
basic_json_parser_47:
|
||||
basic_json_parser_54:
|
||||
++m_cursor;
|
||||
if (m_limit <= m_cursor)
|
||||
{
|
||||
|
@ -8392,89 +8560,37 @@ basic_json_parser_47:
|
|||
}
|
||||
if (yych <= '9')
|
||||
{
|
||||
goto basic_json_parser_47;
|
||||
goto basic_json_parser_54;
|
||||
}
|
||||
goto basic_json_parser_14;
|
||||
basic_json_parser_49:
|
||||
basic_json_parser_56:
|
||||
yych = *++m_cursor;
|
||||
if (yych == 's')
|
||||
{
|
||||
goto basic_json_parser_55;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_50:
|
||||
yych = *++m_cursor;
|
||||
if (yych == 'l')
|
||||
{
|
||||
goto basic_json_parser_56;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_51:
|
||||
yych = *++m_cursor;
|
||||
if (yych == 'e')
|
||||
{
|
||||
goto basic_json_parser_58;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_52:
|
||||
++m_cursor;
|
||||
{
|
||||
continue;
|
||||
}
|
||||
basic_json_parser_54:
|
||||
++m_cursor;
|
||||
if (m_limit <= m_cursor)
|
||||
{
|
||||
fill_line_buffer();
|
||||
}
|
||||
yych = *m_cursor;
|
||||
if (yych <= '@')
|
||||
{
|
||||
if (yych <= '/')
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
if (yych <= '9')
|
||||
{
|
||||
goto basic_json_parser_60;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (yych <= 'F')
|
||||
{
|
||||
goto basic_json_parser_60;
|
||||
}
|
||||
if (yych <= '`')
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
if (yych <= 'f')
|
||||
{
|
||||
goto basic_json_parser_60;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
basic_json_parser_55:
|
||||
yych = *++m_cursor;
|
||||
if (yych == 'e')
|
||||
{
|
||||
goto basic_json_parser_61;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_56:
|
||||
++m_cursor;
|
||||
basic_json_parser_57:
|
||||
yych = *++m_cursor;
|
||||
if (yych == 'l')
|
||||
{
|
||||
last_token_type = token_type::literal_null;
|
||||
break;
|
||||
goto basic_json_parser_62;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_58:
|
||||
++m_cursor;
|
||||
yych = *++m_cursor;
|
||||
if (yych == 'e')
|
||||
{
|
||||
last_token_type = token_type::literal_true;
|
||||
break;
|
||||
goto basic_json_parser_64;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_59:
|
||||
yych = *++m_cursor;
|
||||
if (yych == 0xBB)
|
||||
{
|
||||
goto basic_json_parser_66;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_60:
|
||||
++m_cursor;
|
||||
if (m_limit <= m_cursor)
|
||||
|
@ -8490,7 +8606,7 @@ basic_json_parser_60:
|
|||
}
|
||||
if (yych <= '9')
|
||||
{
|
||||
goto basic_json_parser_63;
|
||||
goto basic_json_parser_67;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
|
@ -8498,7 +8614,7 @@ basic_json_parser_60:
|
|||
{
|
||||
if (yych <= 'F')
|
||||
{
|
||||
goto basic_json_parser_63;
|
||||
goto basic_json_parser_67;
|
||||
}
|
||||
if (yych <= '`')
|
||||
{
|
||||
|
@ -8506,17 +8622,85 @@ basic_json_parser_60:
|
|||
}
|
||||
if (yych <= 'f')
|
||||
{
|
||||
goto basic_json_parser_63;
|
||||
goto basic_json_parser_67;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
basic_json_parser_61:
|
||||
yych = *++m_cursor;
|
||||
if (yych == 'e')
|
||||
{
|
||||
goto basic_json_parser_68;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_62:
|
||||
++m_cursor;
|
||||
{
|
||||
last_token_type = token_type::literal_null;
|
||||
break;
|
||||
}
|
||||
basic_json_parser_64:
|
||||
++m_cursor;
|
||||
{
|
||||
last_token_type = token_type::literal_true;
|
||||
break;
|
||||
}
|
||||
basic_json_parser_66:
|
||||
yych = *++m_cursor;
|
||||
if (yych == 0xC2)
|
||||
{
|
||||
goto basic_json_parser_70;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_67:
|
||||
++m_cursor;
|
||||
if (m_limit <= m_cursor)
|
||||
{
|
||||
fill_line_buffer();
|
||||
}
|
||||
yych = *m_cursor;
|
||||
if (yych <= '@')
|
||||
{
|
||||
if (yych <= '/')
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
if (yych <= '9')
|
||||
{
|
||||
goto basic_json_parser_71;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (yych <= 'F')
|
||||
{
|
||||
goto basic_json_parser_71;
|
||||
}
|
||||
if (yych <= '`')
|
||||
{
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
if (yych <= 'f')
|
||||
{
|
||||
goto basic_json_parser_71;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
basic_json_parser_68:
|
||||
++m_cursor;
|
||||
{
|
||||
last_token_type = token_type::literal_false;
|
||||
break;
|
||||
}
|
||||
basic_json_parser_63:
|
||||
basic_json_parser_70:
|
||||
yych = *++m_cursor;
|
||||
if (yych == 0xBF)
|
||||
{
|
||||
goto basic_json_parser_72;
|
||||
}
|
||||
goto basic_json_parser_33;
|
||||
basic_json_parser_71:
|
||||
++m_cursor;
|
||||
if (m_limit <= m_cursor)
|
||||
{
|
||||
|
@ -8551,6 +8735,11 @@ basic_json_parser_63:
|
|||
}
|
||||
goto basic_json_parser_33;
|
||||
}
|
||||
basic_json_parser_72:
|
||||
++m_cursor;
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -7848,7 +7848,7 @@ class basic_json
|
|||
"\000" { last_token_type = token_type::end_of_input; break; }
|
||||
|
||||
// anything else is an error
|
||||
. { last_token_type = token_type::parse_error; break; }
|
||||
* { last_token_type = token_type::parse_error; break; }
|
||||
*/
|
||||
}
|
||||
|
||||
|
|
|
@ -671,7 +671,7 @@ TEST_CASE("nst's JSONTestSuite")
|
|||
"test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1x.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_UTF-16_incomplete_surrogate.json",
|
||||
//"test/data/nst_json_testsuite/test_parsing/n_string_UTF8_surrogate_U+D800.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_UTF8_surrogate_U+D800.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_accentuated_char_no_quotes.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_backslash_00.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_escape_x.json",
|
||||
|
@ -684,15 +684,15 @@ TEST_CASE("nst's JSONTestSuite")
|
|||
"test/data/nst_json_testsuite/test_parsing/n_string_invalid-utf-8-in-escape.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_invalid_backslash_esc.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_invalid_unicode_escape.json",
|
||||
//"test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf-8.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf-8.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf8_after_escape.json",
|
||||
//"test/data/nst_json_testsuite/test_parsing/n_string_iso_latin_1.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_iso_latin_1.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_leading_uescaped_thinspace.json",
|
||||
//"test/data/nst_json_testsuite/test_parsing/n_string_lone_utf8_continuation_byte.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_lone_utf8_continuation_byte.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_no_quotes_with_bad_escape.json",
|
||||
//"test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_2_bytes.json",
|
||||
//"test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes.json",
|
||||
//"test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes_null.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_2_bytes.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes_null.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_single_doublequote.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_single_quote.json",
|
||||
"test/data/nst_json_testsuite/test_parsing/n_string_single_string_no_double_quotes.json",
|
||||
|
|
|
@ -159,7 +159,7 @@ TEST_CASE("Unicode", "[hide]")
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
SECTION("ignore byte-order-mark")
|
||||
{
|
||||
// read a file with a UTF-8 BOM
|
||||
|
@ -167,7 +167,7 @@ TEST_CASE("Unicode", "[hide]")
|
|||
json j;
|
||||
CHECK_NOTHROW(j << f);
|
||||
}
|
||||
|
||||
*/
|
||||
SECTION("error for incomplete/wrong BOM")
|
||||
{
|
||||
CHECK_THROWS_AS(json::parse("\xef\xbb"), std::invalid_argument);
|
||||
|
|
Loading…
Reference in a new issue