Scanner Solution
Scanner Solution
43e4
private void number() {
while (isDigit(peek())) {
advance();
}
if (peek() == '.' && isDigit(peekNext())) {
// Consume the "."
advance();
while (isDigit(peek())) {
advance();
}
if (peek() == 'e' && (peekNext() == '+' || peekNext() == '-') && isDigit(peekNextNext())) {
advance();
advance();
} else if (peek() == 'e' && isDigit(peekNext())) {
advance();
}
while (isDigit(peek())) {
advance();
}
}
String value = source.substring(start, current);
addToken(NUMBER, Double.parseDouble(value));
}
char peekNextNext()
{
if (current + 2 >= source.length()) {
return '\0';
}
return source.charAt(current + 2);
}
2- number have underscore (_) (only one underscore)
addToken(NUMBER,
Double.parseDouble(value));
}
3- ===asd test asd=== // multible line Comment
case '=':
multibleLineComment();
} else {
break;
void multibleLineComment() {
advance();
advance();
if (peek() == '\n')
line++;
advance();
if (isAtEnd())
return;
char peekNextNext()
return '\0';
}
4- String have escape Characters ➔ ➔ asd “test” asd
private void string() {
if (peek() == '\n') {
line++;
advance();
if (isAtEnd()) {
return;
advance();
addToken(STRING, value);
char previous()
return source.charAt(current-1);