aboutsummaryrefslogtreecommitdiffhomepage
path: root/tokenize.c
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-07-31 01:57:36 +0900
committernsfisis <nsfisis@gmail.com>2025-08-15 10:04:46 +0900
commit021b726b518a907ae023f40131d58964dbceea01 (patch)
treefe3ab2918ffe1513a6fedb9f5ec36acee0095052 /tokenize.c
parent3ae75a0dec8cfb66ee53cbfaa6598d7fbf2f14d8 (diff)
downloadducc-021b726b518a907ae023f40131d58964dbceea01.tar.gz
ducc-021b726b518a907ae023f40131d58964dbceea01.tar.zst
ducc-021b726b518a907ae023f40131d58964dbceea01.zip
feat: support macros that are expanded to multiple tokens
Diffstat (limited to 'tokenize.c')
-rw-r--r--tokenize.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/tokenize.c b/tokenize.c
index 4d4ed8d..9359efd 100644
--- a/tokenize.c
+++ b/tokenize.c
@@ -184,8 +184,9 @@ const char* token_kind_stringify(TokenKind k) {
const char* token_stringify(Token* t) {
TokenKind k = t->kind;
if (k == TokenKind_ident || k == TokenKind_literal_int || k == TokenKind_literal_str) {
- char* buf = calloc(t->raw.len + 1, sizeof(char));
- sprintf(buf, "%.*s (%s)", t->raw.len, t->raw.data, token_kind_stringify(k));
+ const char* kind_str = token_kind_stringify(k);
+ char* buf = calloc(t->raw.len + strlen(kind_str) + 3 + 1, sizeof(char));
+ sprintf(buf, "%.*s (%s)", t->raw.len, t->raw.data, kind_str);
return buf;
} else {
return token_kind_stringify(k);