From b44694ed8b01d4e5bbd50301477516443e82d90f Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Tue, 2 May 2023 01:34:46 -0400 Subject: [PATCH] feat: get "eval" function working over bracket lists. --- mumble | Bin 111636 -> 111956 bytes src/mumble.c | 16 ++++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/mumble b/mumble index 8a7507a5b8363ba44a2728b4abd356bd87d0d3df..705ede559e3d0e8c3e54f5ab851a9db2314311ed 100755 GIT binary patch delta 30388 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 delta 31863 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 diff --git a/src/mumble.c b/src/mumble.c index b86ad7f..145de75 100644 --- a/src/mumble.c +++ b/src/mumble.c @@ -412,12 +412,15 @@ lispval* builtin_eval(lispval* v){ } lispval* builtin_join(lispval* l){ - return lispval_err("Error: Join not ready yet."); + // return lispval_err("Error: Join not ready yet."); // join { {1 2} {3 4} } - LISPVAL_ASSERT(l->type == LISPVAL_QEXPR, "Error: function join not passed q-expression"); + print_lispval_parenthesis(l); + LISPVAL_ASSERT(l->count ==1, "Error: function join passed too many arguments"); + lispval* old = l->cell[0]; + LISPVAL_ASSERT(old->type == LISPVAL_QEXPR, "Error: function join not passed q-expression"); lispval* result = lispval_qexpr(); - for(int i=0; icount; i++){ - lispval* temp = l->cell[i]; + for(int i=0; icount; i++){ + lispval* temp = old->cell[i]; LISPVAL_ASSERT(temp->type == LISPVAL_QEXPR, "Error: function join not passed a q expression with other q-expressions"); for(int j=0; jcount; j++){ @@ -485,7 +488,7 @@ lispval* builtin_functions(char* func, lispval* v) if (strcmp("list", func) == 0) { return builtin_list(v); } else if (strcmp("head", func) == 0) { return builtin_head(v); } else if (strcmp("tail", func) == 0) { return builtin_tail(v); } - // else if (strcmp("j", func) == 0) { return builtin_join(v); } + else if (strcmp("join", func) == 0) { return builtin_join(v); } else if (strcmp("eval", func) == 0) { return builtin_eval(v); } else if (strstr("+-/*", func)) { return builtin_math_ops(func, v); } else { @@ -538,7 +541,8 @@ int main(int argc, char** argv) /* Define them with the following Language */ mpca_lang(MPCA_LANG_DEFAULT, " \ number : /-?[0-9]+\\.?([0-9]+)?/ ; \ - symbol : \"list\" | \"head\" | \"tail\" | \"eval\" \ + symbol : \"list\" | \"head\" | \"tail\" \ + | \"eval\" | \"join\" \ | '+' | '-' | '*' | '/' ; \ sexpr : '(' * ')' ; \ qexpr : '{' * '}' ; \