Changeset 465

Show
Ignore:
Timestamp:
08/29/07 21:14:57 (13 months ago)
Author:
krobillard
Message:

parse now throws all exceptions from evaluated parens.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/thune/parse.c

    r458 r465  
    2525 
    2626 
    27 #define _errorThrown    ur_is(ut->tos, UT_ERROR) 
     27/* 
     28#define BREAK_EXCEPTION \ 
     29    (ur_is(UR_TOS, UT_WORD) && (ur_atom(UR_TOS) == UR_ATOM_BREAK)) 
     30*/ 
     31 
    2832#define PARSE_EX        ut, UR_EX_SCRIPT 
    2933 
     
    374378 
    375379            case UT_PAREN: 
    376                 ur_eval( ut, rit->series.n, rit->series.it ); 
    377                 if( _errorThrown ) 
    378                 { 
    379                     //UR_CALL_OP = OP_THROW; 
    380                     ut->callOp = OP_THROW; 
    381  
     380                if( UR_EVAL_ERROR == 
     381                    ur_eval( ut, rit->series.n, rit->series.it ) ) 
     382                { 
     383                    UR_CALL_OP = OP_THROW; 
    382384                    pe->error = PARSE_EX_ERROR; 
    383385                    return 0; 
     
    892894 
    893895            case UT_PAREN: 
    894                 ur_eval( ut, rit->series.n, rit->series.it ); 
    895                 if( _errorThrown ) 
    896                 { 
    897                     //UR_CALL_OP = OP_THROW; 
    898                     ut->callOp = OP_THROW; 
    899  
     896                if( UR_EVAL_ERROR == 
     897                    ur_eval( ut, rit->series.n, rit->series.it ) ) 
     898                { 
     899                    UR_CALL_OP = OP_THROW; 
    900900                    pe->error = PARSE_EX_ERROR; 
    901901                    return 0; 
     
    10851085            rules = (UCell*) _parseStr( ut, &pe, rit, rend, &pe.input.it ); 
    10861086            if( pe.error == PARSE_EX_ERROR ) 
    1087                 return; 
     1087            { 
     1088                //if( ! BREAK_EXCEPTION ) 
     1089                    return; 
     1090            } 
    10881091 
    10891092            UR_S_DROP; 
     
    11291132            rules = (UCell*) _parseBlock( ut, &pe, rit, rend, &pe.input.it ); 
    11301133            if( pe.error == PARSE_EX_ERROR ) 
    1131                 return; 
     1134            { 
     1135                //if( ! BREAK_EXCEPTION ) 
     1136                    return; 
     1137            } 
    11321138 
    11331139            UR_S_DROP;