parseNumber method

Token parseNumber()

Implementation

Token parseNumber() {
  String lexeme = '';
  int offset = 0;

  StreamChar start = peek();
  String next = start.lexeme;

  while (number.hasMatch(next)) {
    lexeme = next;

    final rawChar = peek(offset: ++offset).lexeme;
    next += rawChar;

    if (rawChar == '.') {
      next += peek(offset: ++offset).lexeme;
    } else if (rawChar == '') {
      break;
    }
  }

  if (lexeme.isNotEmpty) {
    curr += lexeme.length;
  } else {
    addError('Expected number but was empty.');
  }

  return start.toToken(TokenType.kNumber, lexeme: lexeme);
}