Added optional comment stripping.

This commit is contained in:
Bruno Nicoletti 2018-03-26 16:13:25 +01:00
parent d2dd27dc3b
commit cb6b2faab1

View File

@ -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)
{ {