more macros

This commit is contained in:
2024-12-23 21:52:35 +02:00
parent dcf7e86ba7
commit ef3ef64abd
7 changed files with 61 additions and 20 deletions

26
ast.c
View File

@@ -9,6 +9,32 @@
#define N 1024
void astNodeListEnsureCapacity(AstNodeList* list, uint32_t additional)
{
const uint32_t new_len = list->len + additional;
if (new_len <= list->cap) {
return;
}
const uint32_t new_cap = new_len > list->cap * 2 ? new_len : list->cap * 2;
list->tags = realloc(list->tags, new_cap * sizeof(AstNodeTag));
list->main_tokens = realloc(list->main_tokens, new_cap * sizeof(AstTokenIndex));
list->datas = realloc(list->datas, new_cap * sizeof(AstData));
if (!list->tags || !list->main_tokens || !list->datas)
exit(1);
list->cap = new_cap;
}
void astNodeListAppend(AstNodeList* list, AstNodeTag tag,
AstTokenIndex main_token, AstData data)
{
astNodeListEnsureCapacity(list, 1);
list->tags[list->len] = tag;
list->main_tokens[list->len] = main_token;
list->datas[list->len] = data;
list->len++;
}
Ast astParse(const char* source, const uint32_t len)
{
uint32_t estimated_token_count = len / 8;