private static TokenType? unsignedNumber(Scanner s) { if (!s.isDigit()) return null; while (s.isDigit()) s.readChar(); if (s.isExponent()) return readExponent(s); if (s.peek() != '.') return TokenType.Integer; return remainingFloat(s); }