fixed string definition

This commit is contained in:
Niels 2015-05-09 15:09:52 +02:00
parent 1f381d496d
commit 2b4e461702
3 changed files with 8 additions and 21 deletions

View file

@ -3630,8 +3630,8 @@ class basic_json
unsigned int yyaccept = 0;
static const unsigned char yybm[] =
{
0, 64, 64, 64, 64, 64, 64, 64,
64, 32, 32, 64, 64, 32, 64, 64,
0, 0, 0, 0, 0, 0, 0, 0,
0, 32, 32, 0, 0, 32, 0, 0,
64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64,
96, 64, 0, 64, 64, 64, 64, 64,
@ -3914,26 +3914,11 @@ basic_json_parser_25:
basic_json_parser_26:
yyaccept = 0;
yych = *(m_marker = ++m_cursor);
if (yych <= '\n')
if (yych <= 0x0F)
{
if (yych <= 0x00)
{
goto basic_json_parser_19;
}
if (yych <= 0x08)
{
goto basic_json_parser_31;
}
goto basic_json_parser_19;
}
else
{
if (yych == '\r')
{
goto basic_json_parser_19;
}
goto basic_json_parser_31;
}
goto basic_json_parser_31;
basic_json_parser_27:
++m_cursor;
{
@ -3954,7 +3939,7 @@ basic_json_parser_31:
{
goto basic_json_parser_30;
}
if (yych <= '\r')
if (yych <= 0x0F)
{
goto basic_json_parser_32;
}

View file

@ -3669,7 +3669,7 @@ class basic_json
// string
quotation_mark = [\"];
escape = [\\];
unescaped = [^\"\\\000\t\n\r];
unescaped = [^\"\\\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F];
single_escaped = [\"\\/bfnrt];
unicode_escaped = [u][0-9a-fA-F]{4};
escaped = escape (single_escaped | unicode_escaped);

View file

@ -7384,6 +7384,8 @@ TEST_CASE("parser class")
// error: newline in string
CHECK_THROWS_AS(json::parser("\"\n\"").parse(), std::invalid_argument);
CHECK_THROWS_AS(json::parser("\"\r\"").parse(), std::invalid_argument);
// error: backspace in string
CHECK_THROWS_AS(json::parser("\"\b\"").parse(), std::invalid_argument);
}
SECTION("escaped")