Changeset 182 for trunk/thune/eval.c

Show
Ignore:
Timestamp:
06/11/06 04:56:12 (3 years ago)
Author:
krobillard
Message:

Thune - Added 'forever & 'break.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/thune/eval.c

    r179 r182  
    528528            case CC_EVAL: 
    529529            case CC_EVAL_RUNNING: 
     530            case CC_FOREVER: 
    530531            case CC_REDUCE: 
    531532                 toc -= CC_LEN_EVAL; 
     
    783784                        break; 
    784785 
     786                    case OP_FOREVER:        // (block! -- ) 
     787                        PUSHC_EVAL( blkN, start, pc + 1 ); 
     788                        UR_TOC->eval.code = CC_FOREVER; 
     789                        UR_TOC->eval.n    = UR_TOS->series.n; 
     790                        UR_TOC->eval.it   = UR_TOS->series.it; 
     791                        UR_C_GROW; 
     792                        UR_S_DROP; 
     793                        goto control; 
     794 
    785795                    //case OP_END: 
    786796                    //    goto finish; 
     
    987997            goto control; 
    988998 
     999        case CC_FOREVER: 
     1000            SET_BLK_PC( UR_TOC->eval.n, UR_TOC->eval.it ); 
     1001            UR_C_GROW; 
     1002            goto execute; 
     1003 
    9891004        case CC_REDUCE: 
    9901005        { 
     
    10791094                break; 
    10801095 
     1096            case CC_FOREVER: 
     1097                UR_C_DECN( CC_LEN_FOREVER ); 
     1098check_break: 
     1099                if( ur_is(UR_TOS, UT_LITWORD) && 
     1100                    ur_atom(UR_TOS) == UR_ATOM_BREAK ) 
     1101                { 
     1102                    UR_S_DROP; 
     1103                    goto control; 
     1104                } 
     1105                break; 
     1106 
    10811107            case CC_ITER: 
    10821108                UR_C_DECN( CC_LEN_ITER ); 
    1083                 break; 
     1109                goto check_break; 
    10841110 
    10851111            case CC_CATCH: