| 201 | } |
| 202 | |
| 203 | Token Lexer::number() |
| 204 | { |
| 205 | Utils::IStringStreamClassicLocale iss; |
| 206 | iss.str(m_buf.data() + m_tokPos); |
| 207 | double v = 0; |
| 208 | const auto start = iss.tellg(); |
| 209 | iss >> v; |
| 210 | int len = (int)(m_buf.size() - m_tokPos); |
| 211 | if (!iss.eof()) |
| 212 | len = (int)(iss.tellg() - start); |
| 213 | m_pos = m_tokPos + len; |
| 214 | return Token(TokenType::Number, m_tokPos, m_pos, m_buf.substr(m_tokPos, len), v); |
| 215 | } |
| 216 | |
| 217 | Token Lexer::letter() |
| 218 | { |