#ifndef EVAL_H #define EVAL_H #include "parser.h" #include "hashtbl.h" typedef struct eval *eval_t; // struct symdata { // enum symbol_type { // SYMBOL_VALUE, // SYMBOL_FUNC, // SYMBOL_FUNC_BUILTIN // } type; // // union { // value_t value; // ast_t func; // builtin_func_t builtin; // }; // }; // // struct symtbl { // hashtbl_t table; // struct symtbl *parent; // }; struct eval { // struct symtbl root; // struct symtbl *cur; // ... }; // TODO: add options for the evaluation eval_t eval_create(); void eval_destroy(eval_t eval); int eval_ast(eval_t eval, ast_t *ast); #endif