diff options
Diffstat (limited to 'interpreter.h')
-rw-r--r-- | interpreter.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/interpreter.h b/interpreter.h index e643494..4434de2 100644 --- a/interpreter.h +++ b/interpreter.h @@ -3,8 +3,22 @@ #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_runcode(InterState *is,AST *ast); //updates symbol id's +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 |