/[cvs]/stack/stack.c
ViewVC logotype

Diff of /stack/stack.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.114 by teddy, Sun Mar 17 02:15:01 2002 UTC revision 1.115 by teddy, Sun Mar 17 11:26:35 2002 UTC
# Line 165  inline void gc_maybe(environment *env) Line 165  inline void gc_maybe(environment *env)
165  extern void gc_init(environment *env)  extern void gc_init(environment *env)
166  {  {
167    stackitem *new_head= NULL, *titem;    stackitem *new_head= NULL, *titem;
168    cons *iterator;    pair *iterator;
169    symbol *tsymb;    symbol *tsymb;
170    int i;    int i;
171    
# Line 285  void push_val(environment *env, value *v Line 285  void push_val(environment *env, value *v
285  {  {
286    value *new_value= new_val(env);    value *new_value= new_val(env);
287    
288    new_value->content.c= malloc(sizeof(cons));    new_value->content.c= malloc(sizeof(pair));
289    assert(new_value->content.c!=NULL);    assert(new_value->content.c!=NULL);
290    new_value->type= tcons;    new_value->type= tcons;
291    CAR(new_value)= val;    CAR(new_value)= val;
# Line 1332  value *copy_val(environment *env, value Line 1332  value *copy_val(environment *env, value
1332      break;      break;
1333    case tcons:    case tcons:
1334    
1335      new_value->content.c= malloc(sizeof(cons));      new_value->content.c= malloc(sizeof(pair));
1336      assert(new_value->content.c!=NULL);      assert(new_value->content.c!=NULL);
1337    
1338      CAR(new_value)= copy_val(env, CAR(old_value)); /* recurse */      CAR(new_value)= copy_val(env, CAR(old_value)); /* recurse */
# Line 2353  extern void cdr(environment *env) Line 2353  extern void cdr(environment *env)
2353    
2354    CAR(env->head)=CDR(CAR(env->head));    CAR(env->head)=CDR(CAR(env->head));
2355  }  }
2356    
2357    extern void cons(environment *env)
2358    {
2359      value *val;
2360    
2361      if(env->head->type==empty || CDR(env->head)->type==empty) {
2362        printerr("Too Few Arguments");
2363        env->err= 1;
2364        return;
2365      }
2366    
2367      val=new_val(env);
2368      val->content.c= malloc(sizeof(pair));
2369      assert(val->content.c!=NULL);
2370      val->type=tcons;
2371    
2372      CAR(val)= CAR(CDR(env->head));
2373      CDR(val)= CAR(env->head);
2374    
2375      push_val(env, val);
2376    
2377      swap(env); if(env->err) return;
2378      toss(env); if(env->err) return;
2379      swap(env); if(env->err) return;
2380      toss(env); if(env->err) return;
2381    }

Legend:
Removed from v.1.114  
changed lines
  Added in v.1.115

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26