projects
/
muddle-interpreter.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Define UVECTOR and ATOM
[muddle-interpreter.git]
/
src
/
eval.c
diff --git
a/src/eval.c
b/src/eval.c
index e563fdfd3acd91eab0048e537b7d7a1aba039b7f..f322946410a159bb45490395529367dde5520722 100644
(file)
--- a/
src/eval.c
+++ b/
src/eval.c
@@
-111,25
+111,25
@@
eval_rest ()
// store result of previous call
pool_object *prev_res = as_pool (&ret);
list_object *tail = as_list (&cf->locals[1]);
// store result of previous call
pool_object *prev_res = as_pool (&ret);
list_object *tail = as_list (&cf->locals[1]);
- *POOL_OBJECT (tail->head) = (pool_object)
+ *POOL_OBJECT (tail->
val.
head) = (pool_object)
{
{
- .type = prev_res->type,.rest = tail->head + 1,.val = prev_res->val};
+ .type = prev_res->type,.rest = tail->
val.
head + 1,.val = prev_res->val};
// advance input and output
assert (cf->args.len == 1);
list_object *args = as_list (&cf->args.body[0]);
// advance input and output
assert (cf->args.len == 1);
list_object *args = as_list (&cf->args.body[0]);
- assert (args->head);
- args->
head = POOL_OBJECT (args->
head)->rest;
- if (!args->head)
+ assert (args->
val.
head);
+ args->
val.head = POOL_OBJECT (args->val.
head)->rest;
+ if (!args->
val.
head)
{
{
- POOL_OBJECT (tail->head)->rest = 0;
+ POOL_OBJECT (tail->
val.
head)->rest = 0;
RETURN (cf->locals[0]);
}
RETURN (cf->locals[0]);
}
- tail->head++;
+ tail->
val.
head++;
// eval next element
END_LOCALS ();
// eval next element
END_LOCALS ();
- CALL_THEN (eval, new_tuple ((object *) POOL_OBJECT (args->head), 1),
+ CALL_THEN (eval, new_tuple ((object *) POOL_OBJECT (args->
val.
head), 1),
eval_rest);
}
eval_rest);
}
@@
-145,7
+145,7
@@
eval ()
case EVALTYPE_LIST:
// Handle `head` now; then iterate on `.rest`.
case EVALTYPE_LIST:
// Handle `head` now; then iterate on `.rest`.
- if (!cf->args.body[0].list.head)
+ if (!cf->args.body[0].list.
val.
head)
RETURN (cf->args.body[0]);
// locals: { list_object list, list_object tail }
cst += 2;
RETURN (cf->args.body[0]);
// locals: { list_object list, list_object tail }
cst += 2;
@@
-157,11
+157,11
@@
eval ()
END_LOCALS ();
CALL_THEN (eval,
new_tuple ((object *)
END_LOCALS ();
CALL_THEN (eval,
new_tuple ((object *)
- POOL_OBJECT (cf->args.body[0].list.head), 1),
+ POOL_OBJECT (cf->args.body[0].list.
val.
head), 1),
eval_rest);
case EVALTYPE_FORM:
// `<>` is a special case.
eval_rest);
case EVALTYPE_FORM:
// `<>` is a special case.
- if (!cf->args.body[0].list.head)
+ if (!cf->args.body[0].list.
val.
head)
{
cf->args.body[0].type = EVALTYPE_FALSE;
RETURN (cf->args.body[0]);
{
cf->args.body[0].type = EVALTYPE_FALSE;
RETURN (cf->args.body[0]);
@@
-170,7
+170,7
@@
eval ()
END_LOCALS ();
CALL_THEN (eval,
new_tuple ((object *)
END_LOCALS ();
CALL_THEN (eval,
new_tuple ((object *)
- POOL_OBJECT (cf->args.body[0].list.head), 1),
+ POOL_OBJECT (cf->args.body[0].list.
val.
head), 1),
call);
/*
case EVALTYPE_VECTOR: TAILCALL(eval_vector);
call);
/*
case EVALTYPE_VECTOR: TAILCALL(eval_vector);