Work on functions
This commit is contained in:
+11
-2
@@ -1,22 +1,31 @@
|
||||
#include "lisp.h"
|
||||
#include "read.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
DEFUN(print, "print", (LispVal * v), "(v)", "") {
|
||||
debug_obj_info(stdout, v);
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
int main(int argc, const char **argv) {
|
||||
FILE *in = fopen(argv[1], "r");
|
||||
fseek(in, 0, SEEK_END);
|
||||
off_t src_len = ftello(in);
|
||||
char *src = malloc(src_len);
|
||||
rewind(in);
|
||||
fread(src, 1, src_len, in);
|
||||
fclose(in);
|
||||
lisp_init();
|
||||
REGISTER_GLOBAL_FUNCTION(print);
|
||||
push_stack_frame(Qnil, Qnil, Qnil);
|
||||
ReadStream s;
|
||||
const char BUF[] = "(let ((a 1)) (print a))";
|
||||
read_stream_init(&s, BUF, sizeof(BUF) - 1);
|
||||
read_stream_init(&s, src, src_len);
|
||||
LispVal *l = read(&s);
|
||||
Feval(l, Qnil);
|
||||
lisp_gc_now(NULL);
|
||||
pop_stack_frame();
|
||||
lisp_shutdown();
|
||||
free(src);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user