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

Diff of /stack/stack.c

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

revision 1.72 by masse, Tue Feb 12 22:13:12 2002 UTC revision 1.73 by masse, Tue Feb 12 23:16:56 2002 UTC
# Line 574  extern void rev(environment *env){ Line 574  extern void rev(environment *env){
574  /* Make a list. */  /* Make a list. */
575  extern void pack(environment *env)  extern void pack(environment *env)
576  {  {
   void* delimiter;  
577    stackitem *iterator, *temp;    stackitem *iterator, *temp;
578    value *pack;    value *pack;
579    
   delimiter= env->head->item->content.ptr; /* Get delimiter */  
   toss(env);  
   
580    iterator= env->head;    iterator= env->head;
581    
582    if(iterator==NULL || iterator->item->content.ptr==delimiter) {    if(iterator==NULL
583         || (iterator->item->type==symb
584         && ((symbol*)(iterator->item->content.ptr))->id[0]=='[')) {
585      temp= NULL;      temp= NULL;
586      toss(env);      toss(env);
587    } else {    } else {
588      /* Search for first delimiter */      /* Search for first delimiter */
589      while(iterator->next!=NULL      while(iterator->next!=NULL
590            && iterator->next->item->content.ptr!=delimiter)            && (iterator->next->item->type!=symb
591              || ((symbol*)(iterator->next->item->content.ptr))->id[0]!='['))
592        iterator= iterator->next;        iterator= iterator->next;
593            
594      /* Extract list */      /* Extract list */
# Line 1174  extern void to(environment *env) { Line 1173  extern void to(environment *env) {
1173        push_int(env, i);        push_int(env, i);
1174    }    }
1175    
   push_sym(env, "[");  
1176    pack(env); if(env->err) return;    pack(env); if(env->err) return;
1177  }  }
1178    
# Line 1222  extern void read(environment *env) { Line 1220  extern void read(environment *env) {
1220    } else if(sscanf(env->in_string, symbform, match, rest) > 0) {    } else if(sscanf(env->in_string, symbform, match, rest) > 0) {
1221      push_sym(env, match);      push_sym(env, match);
1222    } else if(sscanf(env->in_string, ebrackform, rest) > 0) {    } else if(sscanf(env->in_string, ebrackform, rest) > 0) {
     push_sym(env, "[");  
1223      pack(env); if(env->err) return;      pack(env); if(env->err) return;
1224      if(depth!=0) depth--;      if(depth!=0) depth--;
1225    } else if(sscanf(env->in_string, semicform, rest) > 0) {    } else if(sscanf(env->in_string, semicform, rest) > 0) {

Legend:
Removed from v.1.72  
changed lines
  Added in v.1.73

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26