From cac651cd88f8da1e5957b0cc13fa25d79e1887fc Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Tue, 23 Aug 2016 20:58:50 +0200 Subject: Many things - two-letter AST union members - AST_QUOTED - AST_LAMBDA - an interpreter that works - function registering in the interpreter - some builtins --- interpreter.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'interpreter.h') 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 -- cgit v1.2.3-54-g00ecf