fix: fix parser/generator issues

This commit is contained in:
samsonium
2026-11-05 03:46:16 +03:00
parent bd8272abc7
commit 66f31ab865
23 changed files with 264 additions and 1721 deletions
+9 -8
View File
@@ -1,3 +1,4 @@
#include <compiler/fzl_gen.h>
#include <compiler/fzl_writer.h>
#include <compiler/utils/fzl_const_pool.h>
#include <stddef.h>
@@ -22,9 +23,9 @@ fzl_writer_t *fzl_mkwriter(const char *filepath)
return writer;
}
int fzl_write(fzl_writer_t *writer, fzl_walker_t *walker)
int fzl_write(fzl_writer_t *writer, fzl_gen_t *gen)
{
if (!writer || !walker)
if (!writer || !gen)
return -1;
FILE *fp = fopen(writer->filepath, "wb");
@@ -37,12 +38,12 @@ int fzl_write(fzl_writer_t *writer, fzl_walker_t *walker)
const char hdr[5] = {'F', 'Z', 'L', 0x0, 0x1};
fwrite(hdr, sizeof(char), 5, fp);
fwrite(&walker->consts->size, sizeof(size_t), 1, fp);
fwrite(&walker->op_count, sizeof(size_t), 1, fp);
fwrite(&gen->consts->size, sizeof(size_t), 1, fp);
fwrite(&gen->ops_count, sizeof(size_t), 1, fp);
for (size_t i = 0; i < walker->consts->size; i++)
for (size_t i = 0; i < gen->consts->size; i++)
{
fzl_const_t c = walker->consts->array[i];
fzl_const_t c = gen->consts->array[i];
fwrite(&c.type, sizeof(fzl_consttype_t), 1, fp);
if (c.type == FZL_CONSTTYPE_STRING)
@@ -53,8 +54,8 @@ int fzl_write(fzl_writer_t *writer, fzl_walker_t *walker)
}
}
if (walker->op_count > 0)
fwrite(walker->ops, sizeof(uint64_t), walker->op_count, fp);
if (gen->ops_count > 0)
fwrite(gen->ops, sizeof(uint64_t), gen->ops_count, fp);
fclose(fp);