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 --- parse.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'parse.c') diff --git a/parse.c b/parse.c index b056077..b0f6892 100644 --- a/parse.c +++ b/parse.c @@ -47,6 +47,13 @@ Parser* parser_new(Token* tokens) { p->enums = calloc(16, sizeof(AstNode)); p->typedefs = calloc(64, sizeof(AstNode)); p->str_literals = calloc(1024, sizeof(char*)); + + p->funcs[p->n_funcs].name.data = "va_start"; + p->funcs[p->n_funcs].name.len = strlen("va_start"); + p->funcs[p->n_funcs].ty = calloc(1, sizeof(Type)); + p->funcs[p->n_funcs].ty->kind = TypeKind_void; + ++p->n_funcs; + return p; } @@ -174,7 +181,7 @@ AstNode* parse_primary_expr(Parser* p) { e = parse_expr(p); expect(p, TokenKind_paren_r); return e; - } else if (t->kind == TokenKind_ident) { + } else if (t->kind == TokenKind_ident || t->kind == TokenKind_va_start) { String* name = &t->raw; if (peek_token(p)->kind == TokenKind_paren_l) { -- cgit v1.2.3-70-g09d2