parseHex method
Similar to parseNumber but only allows hex digits.
Implementation
Token parseHex() {
String lexeme = '';
int offset = 0;
StreamChar start = peek();
String next = start.lexeme;
while (hex.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('Malformed hex number.');
}
final hx = int.tryParse(lexeme, radix: 16);
if(hx == null) {
addError('Failed to convert $lexeme to number.');
}
return start.toToken(TokenType.kNumber, lexeme: hx.toString());
}