X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain.c;h=5ecbcd8352344a389080641efa68a3063ec79775;hb=4b917a1f5fe2af0245454fe6be14710b2c24a475;hp=0819cc9abd0cea517935ad69c786fc8779a9a747;hpb=3eadff410d2d08246d6f195ef209ed9d88c99be5;p=muddle-interpreter.git
diff --git a/src/main.c b/src/main.c
index 0819cc9..5ecbcd8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -16,10 +16,12 @@ License along with this file. If not, see
.
*/
+#include "atom.h"
#include "read.h"
#include "eval.h"
#include "print.h"
#include "object.h"
+#include "oblist.h"
#include
#include
@@ -30,6 +32,10 @@ pool_object *pool;
pool_ptr ptop;
object *vhp_base;
heap_ptr vhp;
+vector_object globals;
+
+// oblists (move to ASOCs once implemented)
+uvector_object root;
// TODO: store these in current PROCESS
frame *cf;
@@ -50,6 +56,8 @@ enum
READER_OBJCT = 64
};
+void init_standard_env ();
+
int
main ()
{
@@ -81,11 +89,14 @@ main ()
// Entire toplevel becomes `for (;;) cf->cont.fn();`
char buf[512];
ssize_t n;
+ // no GC (leak everything)
+ ptop = 1;
+ vhp = 1;
+ root = oblist_create (13);
+ globals = vector_create (64);
+ init_standard_env ();
while ((n = read (STDIN_FILENO, buf, sizeof (buf))) > 0)
{
- // mock GC (no object persistence)
- ptop = 1;
- vhp = 1;
// terminate input
assert (buf[n - 1] == '\n');
buf[n - 1] = '\0';
@@ -105,13 +116,18 @@ main ()
// Eval the thing
cf->prevcst = cst;
push_frame (eval, new_tuple (st.pos, 1), 0);
- while (cf->cont.fn)
+ while (cf->cont.val.fn)
{
- cf->cont.fn ();
+ cf->cont.val.fn ();
}
// Print the thing
print_object (&ret);
printf ("\n");
+ /*
+ // debugging oblists...
+ print_object ((object*) &root);
+ printf ("\n");
+ */
// Loop!
}