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 |
|
} |