From dcdbbeaf293f5c07c27f7ebcd229eb60d3b8a217 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Tue, 6 Jan 2026 07:37:29 +0900 Subject: feat: support octal/hexadecimal number literals --- src/tokenize.c | 2 +- tests/number_literals.sh | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 tests/number_literals.sh diff --git a/src/tokenize.c b/src/tokenize.c index 57a5c61..0b40f2f 100644 --- a/src/tokenize.c +++ b/src/tokenize.c @@ -348,7 +348,7 @@ static void do_tokenize_all(Lexer* l) { infile_next_char(l->src); } tok->kind = TokenKind_literal_int; - tok->value.integer = atoi(builder.buf); + tok->value.integer = strtol(builder.buf, NULL, 0); } else if (isalpha(c) || c == '_') { StrBuilder builder; strbuilder_init(&builder); diff --git a/tests/number_literals.sh b/tests/number_literals.sh new file mode 100644 index 0000000..e96308a --- /dev/null +++ b/tests/number_literals.sh @@ -0,0 +1,10 @@ +test_exit_code 0 <<'EOF' +#include "../../helpers.h" + +int main() { + ASSERT_EQ(0, 0); + ASSERT_EQ(291, 0x123); + ASSERT_EQ(3405691582, 0xcafebabe); + ASSERT_EQ(436, 0664); +} +EOF -- cgit v1.2.3-70-g09d2