Added optional comment stripping.
This commit is contained in:
parent
d2dd27dc3b
commit
cb6b2faab1
@ -1185,12 +1185,46 @@ scan_number_done:
|
|||||||
|
|
||||||
token_type scan()
|
token_type scan()
|
||||||
{
|
{
|
||||||
|
#ifndef JSON_STRIP_COMMENTS
|
||||||
// read next character and ignore whitespace
|
// read next character and ignore whitespace
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
get();
|
get();
|
||||||
}
|
}
|
||||||
while (current == ' ' or current == '\t' or current == '\n' or current == '\r');
|
while (current == ' ' or current == '\t' or current == '\n' or current == '\r');
|
||||||
|
#else
|
||||||
|
// skip white space and comments if comment stripping enabled
|
||||||
|
while(true) {
|
||||||
|
// first skip any whitespace
|
||||||
|
do {
|
||||||
|
get();
|
||||||
|
}
|
||||||
|
while (current == ' ' || current == '\t' || current == '\n' || current == '\r');
|
||||||
|
|
||||||
|
// next, skip any comment
|
||||||
|
if(current == '/') {
|
||||||
|
get();
|
||||||
|
// really a comment?
|
||||||
|
if (current == '/') {
|
||||||
|
// skip to the end of line/file
|
||||||
|
do {
|
||||||
|
get();
|
||||||
|
} while (! (current == '\n' ||
|
||||||
|
current == '\r' ||
|
||||||
|
current == std::char_traits<char>::eof()));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// not a comment, leave it up to the rest of the code to deal with the '/'
|
||||||
|
unget();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// not a comment at all, break out of the loop
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
switch (current)
|
switch (current)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user