bool escaped = false;
while (true) {
- const int c = getLexerImpl(lexer)->source_->getChar();
+ const int c = getLexerImpl(lexer)->skipComment(
+ getLexerImpl(lexer)->source_->getChar(), escaped);
if (getLexerImpl(lexer)->isTokenEnd(c, escaped)) {
getLexerImpl(lexer)->source_->ungetChar();
if (digits_only) {
ss << "005 "; // Leading zeroes are ignored
ss << "-1 "; // Negative numbers are interpreted
// as strings (unsigned integers only)
- ss << "123abc456"; // 'Numbers' containing non-digits should
+ ss << "123abc456 "; // 'Numbers' containing non-digits should
// be interpreted as strings
+ ss << "42;asdf\n"; // Number with comment
+ ss << "37"; // Simple number again, here to make
+ // sure none of the above messed up
+ // the tokenizer
lexer.pushSource(ss);
EXPECT_EQ(&s_number, State::start(lexer, common_options));
EXPECT_EQ(s_null, s_string.handle(lexer));
stringTokenCheck("123abc456", s_string.getToken(lexer), false);
+
+ EXPECT_EQ(&s_number, State::start(lexer, common_options));
+ EXPECT_EQ(s_null, s_number.handle(lexer));
+ EXPECT_EQ(42, s_number.getToken(lexer).getNumber());
+
+ EXPECT_EQ(s_null, State::start(lexer, common_options));
+ EXPECT_TRUE(s_crlf.wasLastEOL(lexer));
+ EXPECT_EQ(Token::END_OF_LINE, s_crlf.getToken(lexer).getType());
+
+ EXPECT_EQ(&s_number, State::start(lexer, common_options));
+ EXPECT_EQ(s_null, s_number.handle(lexer));
+ EXPECT_EQ(37, s_number.getToken(lexer).getNumber());
+
+ // If we continue we'll simply see the EOF
+ EXPECT_EQ(s_null, State::start(lexer, options));
+ EXPECT_EQ(Token::END_OF_FILE, s_crlf.getToken(lexer).getType());
}
}