Пример #1
0
void addNumberTest(Lexer& lexr)
{
    // TODO: add support for decimal point and negative sign
    lexr.addTest(
        [] (Scanner& sc) {
            std::cout << "Running Number test...\n";
            
            char c = sc.getCurrentChar();
            if (NUMBER_CHARS.find(c) != std::string::npos) {
                int lineNumber = sc.getLineNumber();
                int columnNumber = sc.getColumnNumber();
                std::string tokenString(1, c);
                
                while (NUMBER_CHARS.find(sc.fetchNextChar()) != std::string::npos) {
                    tokenString += sc.moveToNextChar();
                }
                
                return Token(lineNumber, columnNumber, tokenString, TType::Values::Number);
            }
            
            return Token();
        }
    );
}