Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
json
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
json
Commits
a8136c57
Commit
a8136c57
authored
Oct 29, 2016
by
Niels
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed BOM handling #344
parent
b820bb3b
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
184 additions
and
217 deletions
+184
-217
json.hpp
src/json.hpp
+174
-211
json.hpp.re2c
src/json.hpp.re2c
+8
-4
unit-unicode.cpp
test/src/unit-unicode.cpp
+2
-2
No files found.
src/json.hpp
View file @
a8136c57
...
...
@@ -7620,6 +7620,14 @@ class basic_json
{
// fill buffer
fill_line_buffer
();
// skip UTF-8 byte-order mark
if
(
m_line_buffer
.
size
()
>=
3
and
m_line_buffer
.
substr
(
0
,
3
)
==
"
\xEF\xBB\xBF
"
)
{
m_line_buffer
[
0
]
=
' '
;
m_line_buffer
[
1
]
=
' '
;
m_line_buffer
[
2
]
=
' '
;
}
}
// switch off unwanted functions (due to pointer members)
...
...
@@ -7826,7 +7834,7 @@ class basic_json
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
};
if
((
m_limit
-
m_cursor
)
<
6
)
if
((
m_limit
-
m_cursor
)
<
5
)
{
fill_line_buffer
();
}
...
...
@@ -7835,7 +7843,7 @@ class basic_json
{
goto
basic_json_parser_6
;
}
if
(
yych
<=
'
\\
'
)
if
(
yych
<=
'
[
'
)
{
if
(
yych
<=
'-'
)
{
...
...
@@ -7884,62 +7892,58 @@ class basic_json
{
goto
basic_json_parser_17
;
}
if
(
yych
==
'[
'
)
if
(
yych
<=
'Z
'
)
{
goto
basic_json_parser_
19
;
goto
basic_json_parser_
4
;
}
goto
basic_json_parser_
4
;
goto
basic_json_parser_
19
;
}
}
}
else
{
if
(
yych
<=
'
t
'
)
if
(
yych
<=
'
n
'
)
{
if
(
yych
<=
'
f
'
)
if
(
yych
<=
'
e
'
)
{
if
(
yych
<
=
']'
)
if
(
yych
=
=
']'
)
{
goto
basic_json_parser_21
;
}
if
(
yych
<=
'e'
)
{
goto
basic_json_parser_4
;
}
goto
basic_json_parser_23
;
goto
basic_json_parser_4
;
}
else
{
if
(
yych
==
'n
'
)
if
(
yych
<=
'f
'
)
{
goto
basic_json_parser_2
4
;
goto
basic_json_parser_2
3
;
}
if
(
yych
<=
'
s
'
)
if
(
yych
<=
'
m
'
)
{
goto
basic_json_parser_4
;
}
goto
basic_json_parser_2
5
;
goto
basic_json_parser_2
4
;
}
}
else
{
if
(
yych
<=
'
|
'
)
if
(
yych
<=
'
z
'
)
{
if
(
yych
==
'
{
'
)
if
(
yych
==
'
t
'
)
{
goto
basic_json_parser_2
6
;
goto
basic_json_parser_2
5
;
}
goto
basic_json_parser_4
;
}
else
{
if
(
yych
<=
'
}
'
)
if
(
yych
<=
'
{
'
)
{
goto
basic_json_parser_2
8
;
goto
basic_json_parser_2
6
;
}
if
(
yych
==
0xC3
)
if
(
yych
==
'}'
)
{
goto
basic_json_parser_
30
;
goto
basic_json_parser_
28
;
}
goto
basic_json_parser_4
;
}
...
...
@@ -7981,7 +7985,7 @@ basic_json_parser_9:
}
if
(
yych
<=
0x7F
)
{
goto
basic_json_parser_3
2
;
goto
basic_json_parser_3
1
;
}
if
(
yych
<=
0xC1
)
{
...
...
@@ -7989,7 +7993,7 @@ basic_json_parser_9:
}
if
(
yych
<=
0xF4
)
{
goto
basic_json_parser_3
2
;
goto
basic_json_parser_3
1
;
}
goto
basic_json_parser_5
;
basic_json_parser_10
:
...
...
@@ -8020,18 +8024,18 @@ basic_json_parser_13:
{
if
(
yych
==
'.'
)
{
goto
basic_json_parser_4
4
;
goto
basic_json_parser_4
3
;
}
}
else
{
if
(
yych
<=
'E'
)
{
goto
basic_json_parser_4
5
;
goto
basic_json_parser_4
4
;
}
if
(
yych
==
'e'
)
{
goto
basic_json_parser_4
5
;
goto
basic_json_parser_4
4
;
}
}
basic_json_parser_14
:
...
...
@@ -8055,7 +8059,7 @@ basic_json_parser_15:
{
if
(
yych
==
'.'
)
{
goto
basic_json_parser_4
4
;
goto
basic_json_parser_4
3
;
}
goto
basic_json_parser_14
;
}
...
...
@@ -8063,11 +8067,11 @@ basic_json_parser_15:
{
if
(
yych
<=
'E'
)
{
goto
basic_json_parser_4
5
;
goto
basic_json_parser_4
4
;
}
if
(
yych
==
'e'
)
{
goto
basic_json_parser_4
5
;
goto
basic_json_parser_4
4
;
}
goto
basic_json_parser_14
;
}
...
...
@@ -8094,7 +8098,7 @@ basic_json_parser_23:
yych
=
*
(
m_marker
=
++
m_cursor
);
if
(
yych
==
'a'
)
{
goto
basic_json_parser_4
6
;
goto
basic_json_parser_4
5
;
}
goto
basic_json_parser_5
;
basic_json_parser_24
:
...
...
@@ -8102,7 +8106,7 @@ basic_json_parser_24:
yych
=
*
(
m_marker
=
++
m_cursor
);
if
(
yych
==
'u'
)
{
goto
basic_json_parser_4
7
;
goto
basic_json_parser_4
6
;
}
goto
basic_json_parser_5
;
basic_json_parser_25
:
...
...
@@ -8110,7 +8114,7 @@ basic_json_parser_25:
yych
=
*
(
m_marker
=
++
m_cursor
);
if
(
yych
==
'r'
)
{
goto
basic_json_parser_4
8
;
goto
basic_json_parser_4
7
;
}
goto
basic_json_parser_5
;
basic_json_parser_26
:
...
...
@@ -8126,24 +8130,16 @@ basic_json_parser_28:
break
;
}
basic_json_parser_30
:
yyaccept
=
0
;
yych
=
*
(
m_marker
=
++
m_cursor
);
if
(
yych
==
0xAF
)
{
goto
basic_json_parser_49
;
}
goto
basic_json_parser_5
;
basic_json_parser_31
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
fill_line_buffer
();
}
yych
=
*
m_cursor
;
basic_json_parser_3
2
:
basic_json_parser_3
1
:
if
(
yybm
[
0
+
yych
]
&
128
)
{
goto
basic_json_parser_3
1
;
goto
basic_json_parser_3
0
;
}
if
(
yych
<=
0xE0
)
{
...
...
@@ -8151,25 +8147,25 @@ basic_json_parser_32:
{
if
(
yych
<=
0x1F
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
'"'
)
{
goto
basic_json_parser_3
4
;
goto
basic_json_parser_3
3
;
}
goto
basic_json_parser_3
6
;
goto
basic_json_parser_3
5
;
}
else
{
if
(
yych
<=
0xC1
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
0xDF
)
{
goto
basic_json_parser_3
7
;
goto
basic_json_parser_3
6
;
}
goto
basic_json_parser_3
8
;
goto
basic_json_parser_3
7
;
}
}
else
...
...
@@ -8178,27 +8174,27 @@ basic_json_parser_32:
{
if
(
yych
==
0xED
)
{
goto
basic_json_parser_
40
;
goto
basic_json_parser_
39
;
}
goto
basic_json_parser_3
9
;
goto
basic_json_parser_3
8
;
}
else
{
if
(
yych
<=
0xF0
)
{
goto
basic_json_parser_4
1
;
goto
basic_json_parser_4
0
;
}
if
(
yych
<=
0xF3
)
{
goto
basic_json_parser_4
2
;
goto
basic_json_parser_4
1
;
}
if
(
yych
<=
0xF4
)
{
goto
basic_json_parser_4
3
;
goto
basic_json_parser_4
2
;
}
}
}
basic_json_parser_3
3
:
basic_json_parser_3
2
:
m_cursor
=
m_marker
;
if
(
yyaccept
==
0
)
{
...
...
@@ -8208,13 +8204,13 @@ basic_json_parser_33:
{
goto
basic_json_parser_14
;
}
basic_json_parser_3
4
:
basic_json_parser_3
3
:
++
m_cursor
;
{
last_token_type
=
token_type
::
value_string
;
break
;
}
basic_json_parser_3
6
:
basic_json_parser_3
5
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
...
...
@@ -8227,13 +8223,13 @@ basic_json_parser_36:
{
if
(
yych
==
'"'
)
{
goto
basic_json_parser_3
1
;
goto
basic_json_parser_3
0
;
}
if
(
yych
<=
'.'
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
goto
basic_json_parser_3
1
;
goto
basic_json_parser_3
0
;
}
else
{
...
...
@@ -8241,17 +8237,17 @@ basic_json_parser_36:
{
if
(
yych
<=
'['
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
goto
basic_json_parser_3
1
;
goto
basic_json_parser_3
0
;
}
else
{
if
(
yych
==
'b'
)
{
goto
basic_json_parser_3
1
;
goto
basic_json_parser_3
0
;
}
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
}
}
...
...
@@ -8261,13 +8257,13 @@ basic_json_parser_36:
{
if
(
yych
<=
'f'
)
{
goto
basic_json_parser_3
1
;
goto
basic_json_parser_3
0
;
}
if
(
yych
==
'n'
)
{
goto
basic_json_parser_3
1
;
goto
basic_json_parser_3
0
;
}
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
else
{
...
...
@@ -8275,25 +8271,25 @@ basic_json_parser_36:
{
if
(
yych
<=
'r'
)
{
goto
basic_json_parser_3
1
;
goto
basic_json_parser_3
0
;
}
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
else
{
if
(
yych
<=
't'
)
{
goto
basic_json_parser_3
1
;
goto
basic_json_parser_3
0
;
}
if
(
yych
<=
'u'
)
{
goto
basic_json_parser_
50
;
goto
basic_json_parser_
48
;
}
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
}
}
basic_json_parser_3
7
:
basic_json_parser_3
6
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
...
...
@@ -8302,14 +8298,14 @@ basic_json_parser_37:
yych
=
*
m_cursor
;
if
(
yych
<=
0x7F
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
0xBF
)
{
goto
basic_json_parser_3
1
;
goto
basic_json_parser_3
0
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_3
8
:
goto
basic_json_parser_3
2
;
basic_json_parser_3
7
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
...
...
@@ -8318,14 +8314,14 @@ basic_json_parser_38:
yych
=
*
m_cursor
;
if
(
yych
<=
0x9F
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
0xBF
)
{
goto
basic_json_parser_3
7
;
goto
basic_json_parser_3
6
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_3
9
:
goto
basic_json_parser_3
2
;
basic_json_parser_3
8
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
...
...
@@ -8334,14 +8330,14 @@ basic_json_parser_39:
yych
=
*
m_cursor
;
if
(
yych
<=
0x7F
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
0xBF
)
{
goto
basic_json_parser_3
7
;
goto
basic_json_parser_3
6
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_
40
:
goto
basic_json_parser_3
2
;
basic_json_parser_
39
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
...
...
@@ -8350,14 +8346,14 @@ basic_json_parser_40:
yych
=
*
m_cursor
;
if
(
yych
<=
0x7F
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
0x9F
)
{
goto
basic_json_parser_3
7
;
goto
basic_json_parser_3
6
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_4
1
:
goto
basic_json_parser_3
2
;
basic_json_parser_4
0
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
...
...
@@ -8366,14 +8362,14 @@ basic_json_parser_41:
yych
=
*
m_cursor
;
if
(
yych
<=
0x8F
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
0xBF
)
{
goto
basic_json_parser_3
9
;
goto
basic_json_parser_3
8
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_4
2
:
goto
basic_json_parser_3
2
;
basic_json_parser_4
1
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
...
...
@@ -8382,14 +8378,14 @@ basic_json_parser_42:
yych
=
*
m_cursor
;
if
(
yych
<=
0x7F
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
0xBF
)
{
goto
basic_json_parser_3
9
;
goto
basic_json_parser_3
8
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_4
3
:
goto
basic_json_parser_3
2
;
basic_json_parser_4
2
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
...
...
@@ -8398,79 +8394,72 @@ basic_json_parser_43:
yych
=
*
m_cursor
;
if
(
yych
<=
0x7F
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
0x8F
)
{
goto
basic_json_parser_3
9
;
goto
basic_json_parser_3
8
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_4
4
:
goto
basic_json_parser_3
2
;
basic_json_parser_4
3
:
yych
=
*++
m_cursor
;
if
(
yych
<=
'/'
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
'9'
)
{
goto
basic_json_parser_
51
;
goto
basic_json_parser_
49
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_4
5
:
goto
basic_json_parser_3
2
;
basic_json_parser_4
4
:
yych
=
*++
m_cursor
;
if
(
yych
<=
','
)
{
if
(
yych
==
'+'
)
{
goto
basic_json_parser_5
3
;
goto
basic_json_parser_5
1
;
}
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
else
{
if
(
yych
<=
'-'
)
{
goto
basic_json_parser_5
3
;
goto
basic_json_parser_5
1
;
}
if
(
yych
<=
'/'
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
'9'
)
{
goto
basic_json_parser_5
4
;
goto
basic_json_parser_5
2
;
}
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
basic_json_parser_4
6
:
basic_json_parser_4
5
:
yych
=
*++
m_cursor
;
if
(
yych
==
'l'
)
{
goto
basic_json_parser_5
6
;
goto
basic_json_parser_5
4
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_4
7
:
goto
basic_json_parser_3
2
;
basic_json_parser_4
6
:
yych
=
*++
m_cursor
;
if
(
yych
==
'l'
)
{
goto
basic_json_parser_5
7
;
goto
basic_json_parser_5
5
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_4
8
:
goto
basic_json_parser_3
2
;
basic_json_parser_4
7
:
yych
=
*++
m_cursor
;
if
(
yych
==
'u'
)
{
goto
basic_json_parser_58
;
}
goto
basic_json_parser_33
;
basic_json_parser_49
:
yych
=
*++
m_cursor
;
if
(
yych
==
0xC2
)
{
goto
basic_json_parser_59
;
goto
basic_json_parser_56
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_
50
:
goto
basic_json_parser_3
2
;
basic_json_parser_
48
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
...
...
@@ -8481,31 +8470,31 @@ basic_json_parser_50:
{
if
(
yych
<=
'/'
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
'9'
)
{
goto
basic_json_parser_
60
;
goto
basic_json_parser_
57
;
}
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
else
{
if
(
yych
<=
'F'
)
{
goto
basic_json_parser_
60
;
goto
basic_json_parser_
57
;
}
if
(
yych
<=
'`'
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
'f'
)
{
goto
basic_json_parser_
60
;
goto
basic_json_parser_
57
;
}
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
basic_json_parser_
51
:
basic_json_parser_
49
:
yyaccept
=
1
;
m_marker
=
++
m_cursor
;
if
((
m_limit
-
m_cursor
)
<
3
)
...
...
@@ -8521,7 +8510,7 @@ basic_json_parser_51:
}
if
(
yych
<=
'9'
)
{
goto
basic_json_parser_
51
;
goto
basic_json_parser_
49
;
}
goto
basic_json_parser_14
;
}
...
...
@@ -8529,25 +8518,25 @@ basic_json_parser_51:
{
if
(
yych
<=
'E'
)
{
goto
basic_json_parser_4
5
;
goto
basic_json_parser_4
4
;
}
if
(
yych
==
'e'
)
{
goto
basic_json_parser_4
5
;
goto
basic_json_parser_4
4
;
}
goto
basic_json_parser_14
;
}
basic_json_parser_5
3
:
basic_json_parser_5
1
:
yych
=
*++
m_cursor
;
if
(
yych
<=
'/'
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
>=
':'
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
basic_json_parser_5
4
:
basic_json_parser_5
2
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
...
...
@@ -8560,38 +8549,31 @@ basic_json_parser_54:
}
if
(
yych
<=
'9'
)
{
goto
basic_json_parser_5
4
;
goto
basic_json_parser_5
2
;
}
goto
basic_json_parser_14
;
basic_json_parser_5
6
:
basic_json_parser_5
4
:
yych
=
*++
m_cursor
;
if
(
yych
==
's'
)
{
goto
basic_json_parser_
61
;
goto
basic_json_parser_
58
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_5
7
:
goto
basic_json_parser_3
2
;
basic_json_parser_5
5
:
yych
=
*++
m_cursor
;
if
(
yych
==
'l'
)
{
goto
basic_json_parser_
62
;
goto
basic_json_parser_
59
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_5
8
:
goto
basic_json_parser_3
2
;
basic_json_parser_5
6
:
yych
=
*++
m_cursor
;
if
(
yych
==
'e'
)
{
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_61
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_
60
:
goto
basic_json_parser_3
2
;
basic_json_parser_
57
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
...
...
@@ -8602,57 +8584,50 @@ basic_json_parser_60:
{
if
(
yych
<=
'/'
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
'9'
)
{
goto
basic_json_parser_6
7
;
goto
basic_json_parser_6
3
;
}
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
else
{
if
(
yych
<=
'F'
)
{
goto
basic_json_parser_6
7
;
goto
basic_json_parser_6
3
;
}
if
(
yych
<=
'`'
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
'f'
)
{
goto
basic_json_parser_6
7
;
goto
basic_json_parser_6
3
;
}
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
basic_json_parser_
61
:
basic_json_parser_
58
:
yych
=
*++
m_cursor
;
if
(
yych
==
'e'
)
{
goto
basic_json_parser_6
8
;
goto
basic_json_parser_6
4
;
}
goto
basic_json_parser_3
3
;
basic_json_parser_
62
:
goto
basic_json_parser_3
2
;
basic_json_parser_
59
:
++
m_cursor
;
{
last_token_type
=
token_type
::
literal_null
;
break
;
}
basic_json_parser_6
4
:
basic_json_parser_6
1
:
++
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
:
basic_json_parser_63
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
...
...
@@ -8663,44 +8638,37 @@ basic_json_parser_67:
{
if
(
yych
<=
'/'
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
'9'
)
{
goto
basic_json_parser_
71
;
goto
basic_json_parser_
66
;
}
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
else
{
if
(
yych
<=
'F'
)
{
goto
basic_json_parser_
71
;
goto
basic_json_parser_
66
;
}
if
(
yych
<=
'`'
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
'f'
)
{
goto
basic_json_parser_
71
;
goto
basic_json_parser_
66
;
}
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
basic_json_parser_6
8
:
basic_json_parser_6
4
:
++
m_cursor
;
{
last_token_type
=
token_type
::
literal_false
;
break
;
}
basic_json_parser_70
:
yych
=
*++
m_cursor
;
if
(
yych
==
0xBF
)
{
goto
basic_json_parser_72
;
}
goto
basic_json_parser_33
;
basic_json_parser_71
:
basic_json_parser_66
:
++
m_cursor
;
if
(
m_limit
<=
m_cursor
)
{
...
...
@@ -8711,34 +8679,29 @@ basic_json_parser_71:
{
if
(
yych
<=
'/'
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
'9'
)
{
goto
basic_json_parser_3
1
;
goto
basic_json_parser_3
0
;
}
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
else
{
if
(
yych
<=
'F'
)
{
goto
basic_json_parser_3
1
;
goto
basic_json_parser_3
0
;
}
if
(
yych
<=
'`'
)
{
goto
basic_json_parser_3
3
;
goto
basic_json_parser_3
2
;
}
if
(
yych
<=
'f'
)
{
goto
basic_json_parser_3
1
;
goto
basic_json_parser_3
0
;
}
goto
basic_json_parser_33
;
}
basic_json_parser_72
:
++
m_cursor
;
{
continue
;
goto
basic_json_parser_32
;
}
}
...
...
src/json.hpp.re2c
View file @
a8136c57
...
...
@@ -7620,6 +7620,14 @@ class basic_json
{
// fill buffer
fill_line_buffer();
// skip UTF-8 byte-order mark
if (m_line_buffer.size() >= 3 and m_line_buffer.substr(0, 3) == "\xEF\xBB\xBF")
{
m_line_buffer[0] = ' ';
m_line_buffer[1] = ' ';
m_line_buffer[2] = ' ';
}
}
// switch off unwanted functions (due to pointer members)
...
...
@@ -7802,10 +7810,6 @@ class basic_json
ws = [ \t\n\r]+;
ws { continue; }
// ignore byte-order-mark
bom = "\xEF\xBB\xBF";
bom { continue; }
// structural characters
"[" { last_token_type = token_type::begin_array; break; }
"]" { last_token_type = token_type::end_array; break; }
...
...
test/src/unit-unicode.cpp
View file @
a8136c57
...
...
@@ -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
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment