blob: 96a2f8e778263f72a0a229ae750d7c1d3b23d555 [file] [log] [blame]
#include "compiler.h"
#include "gc.h"
#include "lisp.h"
#include "plat/plat.h"
int main(int argc, char **argv)
{
gc_push_segment(NULL, 0);
if (argc < 2)
{
puts("pass the program you want to run as the first argument please");
return 1;
}
bool ok;
struct environment *env = NULL;
struct error compile_error;
if (!IS_OKAY((compile_error = compile_file(argv[1], &env))))
{
ereport(compile_error);
goto done;
}
struct function *lisp_main_f = find_function(env, "main");
if (lisp_main_f)
{
value_t (*lisp_main)() = lisp_main_f->def0;
gc_prepare_call(0);
lisp_main();
}
else
{
fprintf(stderr, "No MAIN function defined! nothing to do\n");
}
done:
free_all();
if (env)
del_env(env);
gc_pop_segment();
}