aboutsummaryrefslogtreecommitdiff
path: root/src/doer.c
diff options
context:
space:
mode:
authorc2024-03-09 11:01:23 -0500
committerc2024-03-09 11:01:23 -0500
commit099fd363f7972ad7e1c48f5fd9ab83aa38a40ea2 (patch)
tree7a2b81f5fba6630ec5d1da469135539007c16f3c /src/doer.c
parent9a7e88e33213135da7c8fa3607ca455d997f4a39 (diff)
Introduced mortality.
Diffstat (limited to 'src/doer.c')
-rw-r--r--src/doer.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/doer.c b/src/doer.c
index 11aaeac..995fcc5 100644
--- a/src/doer.c
+++ b/src/doer.c
@@ -4,7 +4,6 @@
target_t* target_init(char* name, tree_t* tree) {
target_t* target = emalloc(sizeof(target_t));
- target->name = name;
target->tree = tree;
target->nxt = NULL;
return target;
@@ -13,7 +12,6 @@ target_t* target_init(char* name, tree_t* tree) {
void target_destroy(target_t* target) {
if (target) {
target_destroy(target->nxt);
- free(target->name);
free(target);
}
}
@@ -51,6 +49,10 @@ void doer_add_target(doer_t* doer, target_t* target) {
else doer->ltarget->nxt = target;
}
+void blin_die(doer_t* doer) {
+ DIE(":(\nYour PC ran into a\n");
+}
+
void blin_print(doer_t* doer) {
printf(
"%s",
@@ -80,7 +82,6 @@ void doer_do_block(doer_t* doer) {
void doer_do_expr(doer_t* doer) {
switch (doer->tree->type) {
case TREE_TYPE_CALL:
- /* Assume only call is `print` for now. */
doer_do_call(doer);
break;
case TREE_TYPE_DEF:
@@ -109,7 +110,7 @@ void doer_do_call(doer_t* doer) {
for (int i = 0; i < sizeof(blinfs) / sizeof(blinf_t); i++) {
if (!strcmp(blinfs[i].name, doer->tree->data.call.target)) {
(blinfs[i].fp)(doer);
- break;
+ return;
}
}
}