// commonly used by state classes. It returns the corresponding "end-of"
// character in case it's a comment; otherwise it simply returns the
// current character.
- int skipComment(int c) {
- if (c == ';') {
+ int skipComment(int c, bool escaped = false) {
+ if (c == ';' && !escaped) {
while (true) {
c = source_->getChar();
if (c == '\n' || c == InputSource::END_OF_STREAM) {
bool escaped = false;
while (true) {
- int c = getLexerImpl(lexer)->source_->getChar();
- if (!escaped) {
- c = getLexerImpl(lexer)->skipComment(c);
- }
+ const int c = getLexerImpl(lexer)->skipComment(
+ getLexerImpl(lexer)->source_->getChar(), escaped);
if (getLexerImpl(lexer)->isTokenEnd(c, escaped)) {
getLexerImpl(lexer)->source_->ungetChar();