From dd08b39ac5fc2eeb555bf40596279487fcea5f95 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Tue, 26 Aug 2025 21:57:09 +0900 Subject: feat: improve handling of non-directive preprocessing directives --- src/token.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/token.c') diff --git a/src/token.c b/src/token.c index 71eabaf..e08e07f 100644 --- a/src/token.c +++ b/src/token.c @@ -44,6 +44,8 @@ const char* token_kind_stringify(TokenKind k) { return "#include"; else if (k == TokenKind_pp_directive_line) return "#line"; + else if (k == TokenKind_pp_directive_non_directive) + return "#"; else if (k == TokenKind_pp_directive_nop) return "#"; else if (k == TokenKind_pp_directive_pragma) @@ -272,7 +274,11 @@ const char* token_kind_stringify(TokenKind k) { const char* token_stringify(Token* t) { TokenKind k = t->kind; - if (k == TokenKind_literal_int) { + if (k == TokenKind_pp_directive_non_directive) { + char* buf = calloc(strlen(t->value.string) + 1 + 1, sizeof(char)); + sprintf(buf, "#%s", t->value.string); + return buf; + } else if (k == TokenKind_literal_int) { const char* kind_str = token_kind_stringify(k); char* buf = calloc(10 + strlen(kind_str) + 3 + 1, sizeof(char)); sprintf(buf, "%d (%s)", t->value.integer, kind_str); -- cgit v1.2.3-70-g09d2