#include "dat.h" #include "fn.h" GC *gc; static void SExprint(Object *obj) { if(obj == 0) return; switch(obj->type){ default: return; case OCELL: printf("("); SExprint(obj->car); printf(" . "); SExprint(obj->cdr); printf(")"); break; case OINT: printf("%ld", obj->num); break; case OIDENT: printf("%s", obj->beg); break; case OSTRING: printf("\"%s\"", obj->beg); break; case OBLTIN: case OSYMBOL: printf("%s", obj->beg); break; case OENV: printf(""); SExprint(obj->vars); break; case OMACRO: printf(""); goto func; case OFUNC: printf(""); func: printf("<"); SExprint(obj->params); SExprint(obj->body); printf(">"); break; } } void printexpr(Object *obj) { SExprint(obj); printf("\n"); } int main(int argc, char *argv[]) { *argv = "lib/lib.lisp"; gc = newgc(&argc, 12000); lispmain(argv); panic("unreachable"); }