mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Improve tokenizing wrong number literals
This commit is contained in:
+11
-1
@@ -718,7 +718,17 @@ gb_internal ExactValue exact_value_from_token(AstFile *f, Token const &token) {
|
|||||||
}
|
}
|
||||||
ExactValue value = exact_value_from_basic_literal(token.kind, s);
|
ExactValue value = exact_value_from_basic_literal(token.kind, s);
|
||||||
if (value.kind == ExactValue_Invalid) {
|
if (value.kind == ExactValue_Invalid) {
|
||||||
syntax_error(token, "Invalid token literal");
|
switch (token.kind) {
|
||||||
|
case Token_Integer:
|
||||||
|
syntax_error(token, "Invalid integer literal");
|
||||||
|
break;
|
||||||
|
case Token_Float:
|
||||||
|
syntax_error(token, "Invalid float literal");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
syntax_error(token, "Invalid token literal");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -433,6 +433,7 @@ gb_internal gb_inline i32 digit_value(Rune r) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
gb_internal gb_inline void scan_mantissa(Tokenizer *t, i32 base) {
|
gb_internal gb_inline void scan_mantissa(Tokenizer *t, i32 base) {
|
||||||
|
base = 16; // always check for any possible letter
|
||||||
while (digit_value(t->curr_rune) < base || t->curr_rune == '_') {
|
while (digit_value(t->curr_rune) < base || t->curr_rune == '_') {
|
||||||
advance_to_next_rune(t);
|
advance_to_next_rune(t);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user