| 361 |
printf("%d", stack_head->item->content.val); |
printf("%d", stack_head->item->content.val); |
| 362 |
break; |
break; |
| 363 |
case string: |
case string: |
| 364 |
printf("\"%s\"", (char*)stack_head->item->content.ptr); |
printf("%s", (char*)stack_head->item->content.ptr); |
| 365 |
break; |
break; |
| 366 |
case symb: |
case symb: |
| 367 |
printf("%s", ((symbol *)(stack_head->item->content.ptr))->id); |
printf("%s", ((symbol *)(stack_head->item->content.ptr))->id); |
| 1088 |
|
|
| 1089 |
eval(env); |
eval(env); |
| 1090 |
} |
} |
| 1091 |
|
|
| 1092 |
|
/* while */ |
| 1093 |
|
extern void sx_7768696c65(environment *env) { |
| 1094 |
|
|
| 1095 |
|
int truth; |
| 1096 |
|
|
| 1097 |
|
if((env->head)==NULL || env->head->next==NULL) { |
| 1098 |
|
printerr("Too Few Arguments"); |
| 1099 |
|
env->err=1; |
| 1100 |
|
return; |
| 1101 |
|
} |
| 1102 |
|
|
| 1103 |
|
do { |
| 1104 |
|
swap(env); if(env->err) return; |
| 1105 |
|
dup(env); if(env->err) return; |
| 1106 |
|
eval(env); if(env->err) return; |
| 1107 |
|
|
| 1108 |
|
if(env->head->item->type != integer) { |
| 1109 |
|
printerr("Bad Argument Type"); |
| 1110 |
|
env->err=2; |
| 1111 |
|
return; |
| 1112 |
|
} |
| 1113 |
|
|
| 1114 |
|
truth= env->head->item->content.val; |
| 1115 |
|
|
| 1116 |
|
toss(env); if(env->err) return; |
| 1117 |
|
swap(env); if(env->err) return; |
| 1118 |
|
|
| 1119 |
|
if(truth) { |
| 1120 |
|
dup(env); |
| 1121 |
|
eval(env); |
| 1122 |
|
} else { |
| 1123 |
|
toss(env); |
| 1124 |
|
toss(env); |
| 1125 |
|
} |
| 1126 |
|
|
| 1127 |
|
} while(truth); |
| 1128 |
|
} |