| 206 | } |
| 207 | |
| 208 | Token TokenStream::num_st(std::string value) |
| 209 | { |
| 210 | char ch{}; |
| 211 | while (_istream.get(ch)) |
| 212 | { |
| 213 | advance(_lookahead_pos, ch); |
| 214 | if (ch == '.') |
| 215 | { |
| 216 | return float_after_dp_st(value + ch); |
| 217 | } |
| 218 | else if (!std::isdigit(ch)) |
| 219 | { |
| 220 | if (!is_delim(ch) && !std::isspace(ch)) |
| 221 | { |
| 222 | rewind(_lookahead_pos); |
| 223 | _istream.unget(); |
| 224 | } |
| 225 | break; |
| 226 | } |
| 227 | value += ch; |
| 228 | } |
| 229 | return Token{TokenType::Int, value, _lookahead_pos}; |
| 230 | } |
| 231 | |
| 232 | Token TokenStream::float_after_dp_st(std::string value) |
| 233 | { |