From 6d4850e38be1fbacf48e5d2a95a5d741b68e4820 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Sun, 30 Apr 2023 12:27:27 -0400 Subject: [PATCH] step: add error checking --- mumble | Bin 102908 -> 105332 bytes src/mumble.c | 45 +++++++++++++++++++++++++-------------------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/mumble b/mumble index 2d7ac87911f28b235fe1ff0285e2811acbcf763e..c7c913b1433e175062fffaf36dcc66f3f62525ac 100755 GIT binary patch delta 34306 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 JlUx$=e*oYeZ;}82 delta 30119 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, "number")) { if (VERBOSE) printf("\nCase #1, %s", t->contents); - return atoi(t->contents); + errno = 0; + long x = strtol(t->contents, NULL, 10); + return errno != ERANGE ? lispval_num(x) : lispval_err(LISPERR_BAD_NUM); } // Base case #2: It's a number inputted into the REPL // note: strcmp returns a 0 if both chars* have the same contents. if (t->children_num == 2 && strstr(t->children[0]->tag, "number") && !strcmp(t->children[1]->tag, "regex")) { if (VERBOSE) - printf("\nCase #2, %s", t->children[0]->contents); - return atoi(t->children[0]->contents); + printf("\nCase #2, top level num"); + return evaluate_ast(t->children[0]); } // Base case #3: Top level parenthesis @@ -129,7 +134,7 @@ long evaluate_ast(mpc_ast_t* t) } // "Real" cases - long x; + lispval x; char* operation; // Case #4: Unary operations case @@ -150,7 +155,7 @@ long evaluate_ast(mpc_ast_t* t) int i = 3; while ((i < t->children_num) && strstr(t->children[i]->tag, "expr")) { // note that when reaching a closing parenthesis, ^ returns false - long y = evaluate_ast(t->children[i]); + lispval y = evaluate_ast(t->children[i]); x = evaluate_operation(operation, x, y); i++; } @@ -204,8 +209,8 @@ int main(int argc, char** argv) // Evaluate the AST if(VERBOSE) printf("\n\nEvaluating the AST"); - long result = evaluate_ast(ast); - printf("\nResult: %li\n", result); + lispval result = evaluate_ast(ast); + print_lispval(result); } else { /* Otherwise Print the Error */ mpc_err_print(result.error);