result = (*parse->func)( parse, frame );
result = parse_evaluate( parse, frame );
compile_switch(    PARSE   *parse,    FRAME *frame ){    LIST    *nt = (*parse->left->func)( parse->left, frame );    LIST    *result = 0;    if( DEBUG_COMPILE )    {        debug_compile( 0, "switch" );        list_print( nt );        printf( "\n" );    }    /* Step through cases */    for( parse = parse->right; parse; parse = parse->right )    {        if( !glob( parse->left->string, nt ? nt->string : "" ) )        {        /* Get & exec parse tree for this case */        parse = parse->left->left;        result = (*parse->func)( parse, frame );        break;        }    }    list_free( nt );    return result;}