--- stack/stack.c 2002/02/02 14:50:44 1.19 +++ stack/stack.c 2002/02/02 15:12:56 1.20 @@ -312,6 +312,7 @@ int itemp; size_t inlength= strlen(in_line)+1; int convert= 0; + static int non_eval_flag= 0; temp= malloc(inlength); rest= malloc(inlength); @@ -341,13 +342,25 @@ /* If single char */ if((convert= sscanf(in_line, "%c%[^\n\r]", temp, rest))) { if(*temp==';') { - eval(stack_head); /* Evaluate top element */ + if(non_eval_flag) { + eval(stack_head); /* Evaluate top element */ + break; + } + + push_ref(stack_head, in_hash, ";"); break; } if(*temp==']') { push_ref(stack_head, in_hash, "["); pack(stack_head); + non_eval_flag--; + break; + } + + if(*temp=='[') { + push_ref(stack_head, in_hash, "["); + non_eval_flag++; break; } }