feat: finished variables declaration / assign

This commit is contained in:
samsonium
2026-10-14 01:00:01 +03:00
parent 7e52c671aa
commit c0dc14a0c7
11 changed files with 419 additions and 32 deletions
+4
View File
@@ -5,6 +5,7 @@
#include <common/fzl_types.h>
#include <compiler/fzl_parser.h>
#include <compiler/utils/fzl_const_pool.h>
#include <compiler/utils/fzl_symtable.h>
#include <stdbool.h>
#include <stddef.h>
@@ -26,6 +27,9 @@ typedef struct
uint64_t *ops;
size_t op_count;
size_t op_remainder;
fzl_symtable_t *syms[64];
size_t sym_top;
} fzl_walker_t;
// Allocate new walker
+44
View File
@@ -0,0 +1,44 @@
#ifndef FZL_SYMTABLE_H
#define FZL_SYMTABLE_H
#include <common/fzl_types.h>
#include <stdbool.h>
#include <stddef.h>
typedef enum
{
FZL_SYMTABLE_RESULT_OK,
FZL_SYMTABLE_RESULT_ERR,
FZL_SYMTABLE_RESULT_EXISTS
} fzl_symtable_res_t;
// Symbols table entry descriptor
typedef struct
{
char *name;
fzl_type_t type;
} fzl_sym_t;
// Symbols table descriptor
typedef struct
{
size_t size;
size_t remainder;
fzl_sym_t *symbols;
} fzl_symtable_t;
// Allocate new symbtable
fzl_symtable_t *fzl_mksymt();
// Put new entry into symtable
fzl_symtable_res_t fzl_symt_put(fzl_symtable_t *symt, char *name,
fzl_type_t type);
// Get entry from specified symtable
bool fzl_symt_get(fzl_symtable_t *symt, char *name, fzl_sym_t *res);
// Free symbtable
void fzl_freesymt(fzl_symtable_t *symt);
#endif // FZL_SYMTABLE_H