Compare commits
2 Commits
b102a32999
...
7c08e8da4d
Author | SHA1 | Date | |
---|---|---|---|
7c08e8da4d | |||
fdf526750d |
14
src/exec.c
14
src/exec.c
@@ -70,8 +70,9 @@ AST* exec_call(AST* ast, Scope* parent) {
|
||||
|
||||
switch (exp->type) {
|
||||
case AST_TYPE_BIF:
|
||||
ASTBIFData bifdata = exp->data;
|
||||
return bifdata(calldata->argc, calldata->argv, parent);
|
||||
return ((ASTBIFData) exp->data)(
|
||||
calldata->argc, calldata->argv, parent
|
||||
);
|
||||
case AST_TYPE_LAMBDA:
|
||||
return exec_lambda(calldata->argc, calldata->argv, exp, parent);
|
||||
default:
|
||||
@@ -114,15 +115,6 @@ AST* exec_vref(AST* ast, Scope* parent) {
|
||||
return found;
|
||||
}
|
||||
|
||||
AST* exec_fdef(AST* ast, Scope* parent) {
|
||||
ast->scope = scope_init(parent);
|
||||
ASTFDefData* fdef = (ASTFDefData*)ast->data;
|
||||
AST* val = ast;
|
||||
char* key = fdef->name;
|
||||
scope_add(parent, key, val);
|
||||
return fdef->body; // Function definitions return function body.
|
||||
}
|
||||
|
||||
AST* exec_lambda(size_t argc, AST** argv, AST* exp, Scope* parent) {
|
||||
Scope* callscope = scope_init(parent);
|
||||
ASTLambdaData* lambda = (ASTLambdaData*)exp->data;
|
||||
|
@@ -2,6 +2,7 @@
|
||||
#define GC_H
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
// The type a GC can refer to.
|
||||
typedef enum {
|
||||
|
Reference in New Issue
Block a user