#ifndef FZL_WALKER_H #define FZL_WALKER_H #include #include #include #include #include #include #include // Internal walk function result typedef struct { fzl_type_t type; char *error_msg; bool error; } fzl_walk_res_t; // Walker descriptor typedef struct { fzl_node_t *root; fzl_const_hash_pool_t *consts; uint64_t *ops; size_t op_count; size_t op_remainder; fzl_symtable_t *syms[64]; size_t sym_top; size_t bp_table[64]; size_t bp_top; } fzl_walker_t; // Allocate new walker fzl_walker_t *fzl_mkwalker(fzl_node_t *root); // Walk throught the entire AST and build: // 1. Constants table // 2. Operations int fzl_walk(fzl_walker_t *walker); // Get last error message char *fzl_walker_geterror(); // Free walker void fzl_freewalker(fzl_walker_t *walker); #endif // FZL_WALKER_H