| 496 |
return; |
return; |
| 497 |
} |
} |
| 498 |
|
|
| 499 |
|
eval_start: |
| 500 |
|
|
| 501 |
switch(env->head->item->type) { |
switch(env->head->item->type) { |
| 502 |
/* if it's a symbol */ |
/* if it's a symbol */ |
| 503 |
case symb: |
case symb: |
| 504 |
rcl(env); /* get its contents */ |
rcl(env); /* get its contents */ |
| 505 |
if(env->err) return; |
if(env->err) return; |
| 506 |
if(env->head->item->type!=symb){ /* don't recurse symbols */ |
if(env->head->item->type!=symb){ /* don't recurse symbols */ |
| 507 |
return eval(env); /* evaluate the value */ |
goto eval_start; |
| 508 |
} |
} |
| 509 |
return; |
return; |
| 510 |
|
|
| 530 |
if(env->err) return; |
if(env->err) return; |
| 531 |
if(iterator->next == NULL){ |
if(iterator->next == NULL){ |
| 532 |
free_val(temp_val); |
free_val(temp_val); |
| 533 |
return eval(env); |
goto eval_start; |
| 534 |
} |
} |
| 535 |
eval(env); |
eval(env); |
| 536 |
if(env->err) return; |
if(env->err) return; |
| 553 |
strcat(temp_string, " ]"); |
strcat(temp_string, " ]"); |
| 554 |
stack_read(env, temp_string); |
stack_read(env, temp_string); |
| 555 |
free(temp_string); |
free(temp_string); |
| 556 |
return eval(env); |
goto eval_start; |
| 557 |
|
|
| 558 |
case integer: |
case integer: |
| 559 |
return; |
return; |
| 1192 |
free_val(test); |
free_val(test); |
| 1193 |
free_val(loop); |
free_val(loop); |
| 1194 |
} |
} |
| 1195 |
|
|
| 1196 |
|
/* For-loop */ |
| 1197 |
|
extern void sx_666f72(environment *env) { |
| 1198 |
|
|
| 1199 |
|
value *loop, *foo; |
| 1200 |
|
stackitem *iterator; |
| 1201 |
|
|
| 1202 |
|
if((env->head)==NULL || env->head->next==NULL) { |
| 1203 |
|
printerr("Too Few Arguments"); |
| 1204 |
|
env->err=1; |
| 1205 |
|
return; |
| 1206 |
|
} |
| 1207 |
|
|
| 1208 |
|
if(env->head->next->item->type != list) { |
| 1209 |
|
printerr("Bad Argument Type"); |
| 1210 |
|
env->err=2; |
| 1211 |
|
return; |
| 1212 |
|
} |
| 1213 |
|
|
| 1214 |
|
loop= env->head->item; |
| 1215 |
|
loop->refcount++; |
| 1216 |
|
toss(env); if(env->err) return; |
| 1217 |
|
|
| 1218 |
|
foo= env->head->item; |
| 1219 |
|
foo->refcount++; |
| 1220 |
|
toss(env); if(env->err) return; |
| 1221 |
|
|
| 1222 |
|
iterator= foo->content.ptr; |
| 1223 |
|
|
| 1224 |
|
while(iterator!=NULL) { |
| 1225 |
|
push_val(&(env->head), iterator->item); |
| 1226 |
|
push_val(&(env->head), loop); |
| 1227 |
|
eval(env); if(env->err) return; |
| 1228 |
|
iterator= iterator->next; |
| 1229 |
|
} |
| 1230 |
|
|
| 1231 |
|
free_val(loop); |
| 1232 |
|
free_val(foo); |
| 1233 |
|
} |