feat: implement objects and classes
This commit is contained in:
@@ -5,10 +5,20 @@
|
||||
#include <common/fzl_types.h>
|
||||
#include <compiler/fzl_parser.h>
|
||||
#include <compiler/utils/fzl_const_pool.h>
|
||||
#include <compiler/utils/fzl_ctable.h>
|
||||
#include <compiler/utils/fzl_symtable.h>
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
|
||||
// Type of context
|
||||
typedef enum
|
||||
{
|
||||
FZL_WALK_CTX_TYPE_GLOBAL,
|
||||
FZL_WALK_CTX_TYPE_FN,
|
||||
FZL_WALK_CTX_TYPE_CLASS,
|
||||
FZL_WALK_CTX_TYPE_ASSIGN
|
||||
} fzl_walk_ctx_type_t;
|
||||
|
||||
// Internal walk function result
|
||||
typedef struct
|
||||
{
|
||||
@@ -16,11 +26,16 @@ typedef struct
|
||||
|
||||
char *error_msg;
|
||||
bool error;
|
||||
|
||||
char *classname;
|
||||
} fzl_walk_res_t;
|
||||
|
||||
// Function context descriptor
|
||||
typedef struct
|
||||
typedef struct fzl_walk_ctx
|
||||
{
|
||||
fzl_walk_ctx_type_t type;
|
||||
struct fzl_walk_ctx *parent;
|
||||
|
||||
fzl_node_t *fn;
|
||||
size_t initial_env_lvl;
|
||||
} fzl_walk_ctx_t;
|
||||
@@ -39,6 +54,9 @@ typedef struct
|
||||
size_t sym_top;
|
||||
|
||||
fzl_walk_ctx_t *ctx;
|
||||
|
||||
fzl_ctable_t *classes[64];
|
||||
size_t classes_count;
|
||||
} fzl_walker_t;
|
||||
|
||||
// Allocate new walker
|
||||
|
||||
Reference in New Issue
Block a user