From 0c9dc7318361c93e837c8f4bc5c29869076c36cd Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 21 Jul 2025 20:48:01 +0900 Subject: feat: implement va_*() functions --- tokenize.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'tokenize.c') diff --git a/tokenize.c b/tokenize.c index 71427d0..f177d82 100644 --- a/tokenize.c +++ b/tokenize.c @@ -53,6 +53,9 @@ enum TokenKind { TokenKind_semicolon, TokenKind_slash, TokenKind_star, + + // va_start() is currently implemented as a special form due to the current limitation of #define macro. + TokenKind_va_start, }; typedef enum TokenKind TokenKind; @@ -169,6 +172,8 @@ const char* token_kind_stringify(TokenKind k) { return "/"; else if (k == TokenKind_star) return "*"; + else if (k == TokenKind_va_start) + return "va_start"; else unreachable(); } @@ -247,6 +252,8 @@ void tokenize_all(Lexer* l) { tok->kind = TokenKind_keyword_void; } else if (string_equals_cstr(&pp_tok->raw, "while")) { tok->kind = TokenKind_keyword_while; + } else if (string_equals_cstr(&pp_tok->raw, "va_start")) { + tok->kind = TokenKind_va_start; } else { tok->kind = TokenKind_ident; } -- cgit v1.2.3-70-g09d2