1149 |
extern void sx_7768696c65(environment *env) { |
extern void sx_7768696c65(environment *env) { |
1150 |
|
|
1151 |
int truth; |
int truth; |
1152 |
|
value *loop, *test; |
1153 |
|
|
1154 |
if((env->head)==NULL || env->head->next==NULL) { |
if((env->head)==NULL || env->head->next==NULL) { |
1155 |
printerr("Too Few Arguments"); |
printerr("Too Few Arguments"); |
1157 |
return; |
return; |
1158 |
} |
} |
1159 |
|
|
1160 |
|
loop= env->head->item; |
1161 |
|
loop->refcount++; |
1162 |
|
toss(env); if(env->err) return; |
1163 |
|
|
1164 |
|
test= env->head->item; |
1165 |
|
test->refcount++; |
1166 |
|
toss(env); if(env->err) return; |
1167 |
|
|
1168 |
do { |
do { |
1169 |
swap(env); if(env->err) return; |
push_val(&(env->head), test); |
1170 |
dup(env); if(env->err) return; |
eval(env); |
|
eval(env); if(env->err) return; |
|
1171 |
|
|
1172 |
if(env->head->item->type != integer) { |
if(env->head->item->type != integer) { |
1173 |
printerr("Bad Argument Type"); |
printerr("Bad Argument Type"); |
1176 |
} |
} |
1177 |
|
|
1178 |
truth= env->head->item->content.val; |
truth= env->head->item->content.val; |
|
|
|
1179 |
toss(env); if(env->err) return; |
toss(env); if(env->err) return; |
|
swap(env); if(env->err) return; |
|
1180 |
|
|
1181 |
if(truth) { |
if(truth) { |
1182 |
dup(env); |
push_val(&(env->head), loop); |
1183 |
eval(env); |
eval(env); |
1184 |
} else { |
} else { |
1185 |
toss(env); |
toss(env); |
|
toss(env); |
|
1186 |
} |
} |
1187 |
|
|
1188 |
} while(truth); |
} while(truth); |
1189 |
|
|
1190 |
|
free_val(test); |
1191 |
|
free_val(loop); |
1192 |
} |
} |