| 1231 |
free_val(loop); |
free_val(loop); |
| 1232 |
free_val(foo); |
free_val(foo); |
| 1233 |
} |
} |
| 1234 |
|
|
| 1235 |
|
/* 'to' */ |
| 1236 |
|
extern void to(environment *env) { |
| 1237 |
|
int i, start, ending; |
| 1238 |
|
|
| 1239 |
|
if((env->head)==NULL || env->head->next==NULL) { |
| 1240 |
|
printerr("Too Few Arguments"); |
| 1241 |
|
env->err=1; |
| 1242 |
|
return; |
| 1243 |
|
} |
| 1244 |
|
|
| 1245 |
|
if(env->head->item->type!=integer |
| 1246 |
|
|| env->head->next->item->type!=integer) { |
| 1247 |
|
printerr("Bad Argument Type"); |
| 1248 |
|
env->err=2; |
| 1249 |
|
return; |
| 1250 |
|
} |
| 1251 |
|
|
| 1252 |
|
ending= env->head->item->content.val; |
| 1253 |
|
toss(env); if(env->err) return; |
| 1254 |
|
start= env->head->item->content.val; |
| 1255 |
|
toss(env); if(env->err) return; |
| 1256 |
|
|
| 1257 |
|
push_sym(env, "["); |
| 1258 |
|
|
| 1259 |
|
if(ending>=start) { |
| 1260 |
|
for(i= start; i<=ending; i++) |
| 1261 |
|
push_int(&(env->head), i); |
| 1262 |
|
} else { |
| 1263 |
|
for(i= start; i>=ending; i--) |
| 1264 |
|
push_int(&(env->head), i); |
| 1265 |
|
} |
| 1266 |
|
|
| 1267 |
|
push_sym(env, "["); |
| 1268 |
|
pack(env); if(env->err) return; |
| 1269 |
|
} |