585 |
extern void swap(environment *env) |
extern void swap(environment *env) |
586 |
{ |
{ |
587 |
value *temp= env->head; |
value *temp= env->head; |
588 |
|
|
589 |
if(env->head->type == empty || CDR(env->head)->type == empty) { |
switch(check_args(env, unknown, unknown, empty)) { |
590 |
|
case 1: |
591 |
printerr(env, "Too Few Arguments"); |
printerr(env, "Too Few Arguments"); |
|
env->err=1; |
|
592 |
return; |
return; |
593 |
|
case 2: |
594 |
|
printerr(env, "Bad Argument Type"); |
595 |
|
return; |
596 |
|
default: |
597 |
|
break; |
598 |
} |
} |
599 |
|
|
600 |
env->head= CDR(env->head); |
env->head= CDR(env->head); |
601 |
CDR(temp)= CDR(env->head); |
CDR(temp)= CDR(env->head); |
602 |
CDR(env->head)= temp; |
CDR(env->head)= temp; |
608 |
{ |
{ |
609 |
value *val; |
value *val; |
610 |
|
|
611 |
if(env->head->type==empty) { |
switch(check_args(env, symb, empty)) { |
612 |
|
case 1: |
613 |
printerr(env, "Too Few Arguments"); |
printerr(env, "Too Few Arguments"); |
|
env->err= 1; |
|
614 |
return; |
return; |
615 |
} |
case 2: |
|
|
|
|
if(CAR(env->head)->type!=symb) { |
|
616 |
printerr(env, "Bad Argument Type"); |
printerr(env, "Bad Argument Type"); |
|
env->err= 2; |
|
617 |
return; |
return; |
618 |
|
default: |
619 |
|
break; |
620 |
} |
} |
621 |
|
|
622 |
val= CAR(env->head)->content.sym->val; |
val= CAR(env->head)->content.sym->val; |
645 |
|
|
646 |
gc_maybe(env); |
gc_maybe(env); |
647 |
|
|
648 |
if(env->head->type==empty) { |
switch(check_args(env, unknown, empty)) { |
649 |
|
case 1: |
650 |
printerr(env, "Too Few Arguments"); |
printerr(env, "Too Few Arguments"); |
|
env->err= 1; |
|
651 |
return; |
return; |
652 |
|
case 2: |
653 |
|
printerr(env, "Bad Argument Type"); |
654 |
|
return; |
655 |
|
default: |
656 |
|
break; |
657 |
} |
} |
658 |
|
|
659 |
switch(CAR(env->head)->type) { |
switch(CAR(env->head)->type) { |
768 |
} |
} |
769 |
|
|
770 |
if(myenv.interactive) |
if(myenv.interactive) |
771 |
printf(start_message); |
puts(start_message); |
772 |
|
|
773 |
while(1) { |
while(1) { |
774 |
if(myenv.in_string==NULL) { |
if(myenv.in_string==NULL) { |
863 |
{ |
{ |
864 |
value *old_head, *new_head, *item; |
value *old_head, *new_head, *item; |
865 |
|
|
|
if(env->head->type==empty) { |
|
|
printerr(env, "Too Few Arguments"); |
|
|
env->err= 1; |
|
|
return; |
|
|
} |
|
|
|
|
866 |
if(CAR(env->head)->type==empty) |
if(CAR(env->head)->type==empty) |
867 |
return; /* Don't reverse an empty list */ |
return; /* Don't reverse an empty list */ |
868 |
|
|
869 |
if(CAR(env->head)->type!=tcons) { |
switch(check_args(env, tcons, empty)) { |
870 |
|
case 1: |
871 |
|
printerr(env, "Too Few Arguments"); |
872 |
|
return; |
873 |
|
case 2: |
874 |
printerr(env, "Bad Argument Type"); |
printerr(env, "Bad Argument Type"); |
|
env->err= 2; |
|
875 |
return; |
return; |
876 |
|
default: |
877 |
|
break; |
878 |
} |
} |
879 |
|
|
880 |
old_head= CAR(env->head); |
old_head= CAR(env->head); |