diff options
author | c | 2024-04-16 15:19:57 -0400 |
---|---|---|
committer | c | 2024-04-16 15:19:57 -0400 |
commit | c26ffc484d30dce65754c0081baa5402346c703a (patch) | |
tree | 0c8c98eed4ba68fac761e26ef63fce8d660bdf55 /src/doer.c | |
parent | 2e6d3b3343f8e51bc2f3749017ee8a22d7e8b2f6 (diff) |
One may now add and subtract integers.
Diffstat (limited to 'src/doer.c')
-rw-r--r-- | src/doer.c | 23 |
1 files changed, 21 insertions, 2 deletions
@@ -229,9 +229,9 @@ tree_t* blin_add(doer_t* doer) { tree_t* arg1 = args; tree_t* arg2 = arg1->data.carg.nxt; - doer->tree = arg1; + doer->tree = arg1->data.carg.val; int a = doer_eval_lint(doer); - doer->tree = arg2; + doer->tree = arg2->data.carg.val; int b = doer_eval_lint(doer); tree_t* newt = tree_init(TREE_TYPE_LINT, tree->parent); @@ -241,6 +241,25 @@ tree_t* blin_add(doer_t* doer) { return newt; } +tree_t* blin_sub(doer_t* doer) { + tree_t* tree = doer->tree; + + tree_t* args = tree->data.call.arg; + tree_t* arg1 = args; + tree_t* arg2 = arg1->data.carg.nxt; + + doer->tree = arg1->data.carg.val; + int a = doer_eval_lint(doer); + doer->tree = arg2->data.carg.val; + int b = doer_eval_lint(doer); + + tree_t* newt = tree_init(TREE_TYPE_LINT, tree->parent); + + newt->data.lint.val = a - b; + + return newt; +} + void doer_do_block(doer_t* doer) { if (!doer->tree) return; |