From 289de06edf7f00dfb0bcaf14136ef4c61505fa6c Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Mon, 1 May 2023 19:54:32 -0400 Subject: [PATCH] feat: get working version! The main bug I was having was infinite recursion! --- mumble | Bin 99568 -> 103664 bytes src/mumble.c | 58 +++++++-------------------------------------------- 2 files changed, 8 insertions(+), 50 deletions(-) diff --git a/mumble b/mumble index e3d2a884ea75eee437f1f0c15c5d276ba55f7326..ea890fa0f58c675f0e98e79f015ff2187b707362 100755 GIT binary patch delta 26513 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 delta 25744 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 Sl+6X0r->nOWHlD3uKy1x=_s23 diff --git a/src/mumble.c b/src/mumble.c index e530a1e..4a43387 100644 --- a/src/mumble.c +++ b/src/mumble.c @@ -169,7 +169,7 @@ void print_lispval_parenthesis(lispval* v) printf("%li ", v->num); break; case LISPVAL_ERR: - printf("[Error: %s] ", v->err); + printf("%s ", v->err); break; case LISPVAL_SYM: printf("%s ", v->sym); @@ -228,7 +228,6 @@ lispval* take_lispval(lispval* v, int i){ delete_lispval(v); return x; } -/* lispval* builtin_op(char* op, lispval* v){ // For now, ensure all args are numbers for(int i=0; icount; i++){ @@ -240,7 +239,7 @@ lispval* builtin_op(char* op, lispval* v){ if(v->count == 0){ return lispval_err("Error: No numbers on which to operate!"); } else if(v->count == 1) { - if(strcmp(op, "-")){ + if(strcmp(op, "-") == 0){ return lispval_num(-v->cell[0]->num); }else { return lispval_err("Error: Non minus unary operation"); @@ -271,56 +270,15 @@ lispval* builtin_op(char* op, lispval* v){ return lispval_err("Error: Incorrect number of args. Perhaps a lispval->count was wrongly initialized?"); } } -*/ -lispval* builtin_op(lispval* a, char* op) { - return lispval_num(1); - /* Ensure all arguments are numbers */ - for (int i = 0; i < a->count; i++) { - if (a->cell[i]->type != LISPVAL_NUM) { - // delete_lispval(a); - return lispval_err("Cannot operate on non-number!"); - } - } - - /* Pop the first element */ - lispval* x = pop_lispval(a, 0); - - /* If no arguments and sub then perform unary negation */ - if ((strcmp(op, "-") == 0) && a->count == 0) { - x->num = -x->num; - } - - /* While there are still elements remaining */ - while (a->count > 0) { - - /* Pop the next element */ - lispval* y = pop_lispval(a, 0); - - if (strcmp(op, "+") == 0) { x->num += y->num; } - if (strcmp(op, "-") == 0) { x->num -= y->num; } - if (strcmp(op, "*") == 0) { x->num *= y->num; } - if (strcmp(op, "/") == 0) { - if (y->num == 0) { - delete_lispval(x); delete_lispval(y); - return lispval_err("Division By Zero!"); - } - x->num /= y->num; - } - - delete_lispval(y); - } - - delete_lispval(a); return x; -} - lispval* evaluate_lispval(lispval* l) { - // Evaluate the children + // Evaluate the children if needed for(int i=0; icount; i++){ - l->cell[i] = evaluate_lispval(l->cell[i]); - + if(l->cell[i]->type == LISPVAL_SEXPR){ + l->cell[i] = evaluate_lispval(l->cell[i]); + } } // Check if any are errors. for(int i=0; icount; i++){ @@ -332,7 +290,7 @@ lispval* evaluate_lispval(lispval* l) // Check if the first element is an operation. if(l->count >=2 && ( (l->cell[0])->type == LISPVAL_SYM)){ lispval* op = pop_lispval(l, 0); - lispval* result = builtin_op(l, op->sym); + lispval* result = builtin_op(op->sym, l); return result; } return l; @@ -394,7 +352,7 @@ int main(int argc, char** argv) print_lispval_parenthesis(l); } lispval* result = evaluate_lispval(l); - print_lispval_parenthesis(result); + printf("\n"); print_lispval_parenthesis(result); delete_lispval(l); } else { /* Otherwise Print the Error */