Added commands for printing to console and error generation.

Errors now print to stderr
This commit is contained in:
2014-06-21 23:06:18 +01:00
parent f2c8dc167c
commit 437e1d21da
5 changed files with 31 additions and 11 deletions

View File

@@ -43,6 +43,7 @@ void lenv_add_builtin_funcs(lenv* env) {
lenv_add_builtin(env, "head", builtin_head);
lenv_add_builtin(env, "tail", builtin_tail);
lenv_add_builtin(env, "if", builtin_if);
lenv_add_builtin(env, "print", builtin_print);
//ENV Functions
lenv_add_builtin(env, "def", builtin_def);
@@ -53,6 +54,7 @@ void lenv_add_builtin_funcs(lenv* env) {
lenv_add_builtin(env, "\\", builtin_lambda);
lenv_add_builtin(env, "load", builtin_load);
lenv_add_builtin(env, "loadonce", builtin_loadonce);
lenv_add_builtin(env, "error", builtin_error);
}
char* builtin_op_strname(BUILTIN_OP_TYPE op) {
@@ -360,6 +362,14 @@ lval* builtin_if(lenv* env, lval* val) {
return result;
}
lval* builtin_print(lenv* env, lval* val) {
for(int i = 0; i < val->cell_count; i++) {
lval_print(val->cell_list[i]);
putchar(' ');
}
putchar('\n');
return lval_ok();
}
//End List/Util functions
//Start ENV Functions
@@ -512,4 +522,12 @@ lval* builtin_do_load(lenv* env, lval* val, BOOL loadonce) {
return err;
}
}
lval* builtin_error(lenv* env, lval* val) {
LASSERT_ARG_COUNT("error", val, val, 1);
LASSERT_TYPE("error", val, val->cell_list[0], LVAL_STR);
lval* errorVal = lval_err_detail(LERR_USER, "%s", val->cell_list[0]->data.str);
lval_delete(val);
return errorVal;
}
//End ENV Functions