Files
samsonium 62ae05b4cd wip: working on analyzer
- Feat: now symbols table store node on PUT
- Feat: call analyzer with callee resolving and arguments validate
- Feat: identifier analyzer
- Feat: analyzer utils (types compat, tok-to-type, type-to-string)
2026-10-26 20:47:24 +03:00

56 lines
1.2 KiB
C

#ifndef FZL_SYMTABLE_H
#define FZL_SYMTABLE_H
#include <common/fzl_types.h>
#include <compiler/fzl_parser.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
typedef enum
{
FZL_SYMTABLE_RESULT_OK,
FZL_SYMTABLE_RESULT_ERR,
FZL_SYMTABLE_RESULT_EXISTS,
FZL_SYMTABLE_RESULT_NOT_OBJECT
} fzl_symtable_res_t;
// Symbols table entry descriptor
typedef struct
{
char *name;
fzl_type_t type;
fzl_node_t *node;
size_t ip;
char *classname;
} 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, fzl_node_t *node,
char *name, fzl_type_t type, uint64_t ip);
// Assign class name to object type
fzl_symtable_res_t fzl_symt_setobjclass(fzl_symtable_t *symt, char *name,
char *classname);
// 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