diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-07-21 20:48:01 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-08-15 10:04:32 +0900 |
| commit | 0c9dc7318361c93e837c8f4bc5c29869076c36cd (patch) | |
| tree | a0998f947324fb42885338d0bd729d02d4309f40 /parse.c | |
| parent | 1c48d0fe728c263bbe946a5d3adebaa29323ddff (diff) | |
| download | ducc-0c9dc7318361c93e837c8f4bc5c29869076c36cd.tar.gz ducc-0c9dc7318361c93e837c8f4bc5c29869076c36cd.tar.zst ducc-0c9dc7318361c93e837c8f4bc5c29869076c36cd.zip | |
feat: implement va_*() functions
Diffstat (limited to 'parse.c')
| -rw-r--r-- | parse.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -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) { |
