#include // Identifier lookup gen_res_t gen_identifier(fzl_gen_t *gen, fzl_node_t *node) { if (!gen || !node) return gen_error; fzl_sym_t sym; bool exists = false; ssize_t i = gen->syms_top - 1; for (; i >= 0; i--) if ((exists = fzl_symt_get(gen->syms[i], node->token->value, &sym))) break; if (!exists) return gen_error; if (!sym.slot_set) return gen_error; size_t depth = gen->syms_top - 1 - i; gen_op(gen, FZL_OPCODE_LOAD_LOCAL); gen_word(gen, depth); gen_word(gen, sym.slot); return (gen_res_t){ .error = false, .type = sym.type, .classname = sym.classname}; }