Sexpr* c_quote(Sexpr* b, Sexpr* rest, Sexpr* env) {
if(CORE_QUOTE_ARGS != u64_get_num_args(b))
return cons(b, rest);
- //return car(b->value.b.args);
Sexpr* arg = clone(car(b->value.b.args));
sexpr_free(b);
return cons(from_quote(arg), rest);
#include "eval.h"
#include "builtins.h"
+void run_eval_test(char* str) {
+ Sexpr* env = init_dict();
+ env = load_env(env);
+ Sexpr* parsed = parse(str);
+ Sexpr* val = eval(parsed, env);
+ char* out = sprint_sexpr(val);
+ printf(" -> %s\n", out);
+ free(out);
+ //sexpr_free(parsed);
+ sexpr_free(val);
+ sexpr_free(env);
+}
+
void test_basics() {
printf("testing basics...\n");
printf("uh\n");
sexpr_free(val);
printf("um\n");
+
+
+ parsed = parse("((+ 4) 6)");
+ val = eval(clone(car(parsed)), env);
+ out = sprint_sexpr(val);
+ printf(" - %s\n", out);
+ free(out);
+ free(parsed);
+ free(val);
+
sexpr_free(env);
}
+
+
+
+void eval_tests() {
+ run_eval_test("(quote abcd)");
+ run_eval_test("(+ 3 6)");
+ run_eval_test("((+ 3) 7)");
+}
+
+
void run_tests(){
- memtest_eval();
+ eval_tests();
+ //memtest_eval();
//mem_testing();
//mem_parser();
//memtest_dict();