Fixed some expression mishandling.
This commit is contained in:
parent
4b9f269938
commit
58554e8727
@ -1,5 +1,6 @@
|
|||||||
#include "include/builtin.h"
|
#include "include/builtin.h"
|
||||||
#include "include/ast.h"
|
#include "include/ast.h"
|
||||||
|
#include "include/exec.h"
|
||||||
#include "include/util.h"
|
#include "include/util.h"
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -9,7 +10,7 @@ AST* builtin_sum(size_t argc, AST** argv) {
|
|||||||
ASTNumData total = 0;
|
ASTNumData total = 0;
|
||||||
|
|
||||||
for (int i = 0; i < argc; i++) {
|
for (int i = 0; i < argc; i++) {
|
||||||
AST* arg = argv[i];
|
AST* arg = exec_exp(argv[i]);
|
||||||
if (arg->type != AST_TYPE_NUM)
|
if (arg->type != AST_TYPE_NUM)
|
||||||
return ast_init(
|
return ast_init(
|
||||||
AST_TYPE_EXC,
|
AST_TYPE_EXC,
|
||||||
@ -24,7 +25,7 @@ AST* builtin_sum(size_t argc, AST** argv) {
|
|||||||
|
|
||||||
AST* builtin_sub(size_t argc, AST** argv) {
|
AST* builtin_sub(size_t argc, AST** argv) {
|
||||||
log_dbg("Got here");
|
log_dbg("Got here");
|
||||||
AST* first = *argv;
|
AST* first = exec_exp(*argv);
|
||||||
if (first->type != AST_TYPE_NUM)
|
if (first->type != AST_TYPE_NUM)
|
||||||
return ast_init(
|
return ast_init(
|
||||||
AST_TYPE_EXC, ast_exc_data_init("Can't subtract non-num arguments.")
|
AST_TYPE_EXC, ast_exc_data_init("Can't subtract non-num arguments.")
|
||||||
@ -33,7 +34,7 @@ AST* builtin_sub(size_t argc, AST** argv) {
|
|||||||
ASTNumData total = *(ASTNumData*)first->data;
|
ASTNumData total = *(ASTNumData*)first->data;
|
||||||
|
|
||||||
for (int i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
AST* arg = argv[i];
|
AST* arg = exec_exp(argv[i]);
|
||||||
if (arg->type != AST_TYPE_NUM)
|
if (arg->type != AST_TYPE_NUM)
|
||||||
return ast_init(
|
return ast_init(
|
||||||
AST_TYPE_EXC,
|
AST_TYPE_EXC,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user