#pragma once #include "ast.h" typedef struct InterRet{ // Exactly one of ast and errstr is non-NULL. The non-NULL member // needs to be free'd. AST *ast; char *errstr; } InterRet; InterRet ir_ast(AST *ast); InterRet ir_err(char *errstr); InterRet ir_err_c(const char *errstr); typedef struct InterState InterState; InterState* inter_make(void); void inter_destroy(InterState *is); void inter_assign(InterState *is,const char *name,AST *ast); //ast is not copied void inter_register(InterState *is,const char *name,lambdafunc_t cfunc); void inter_register_prelude(InterState *is); InterRet inter_runcode(InterState *is,AST *ast); //updates symbol id's