Changeset 2337


Ignore:
Timestamp:
Feb 5, 2007, 9:52:43 PM (14 years ago)
Author:
orlov
Message:
  • New function List.Separate.
Location:
to-imperative/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/java/org/refal/plus/library/List.java

    r2187 r2337  
    510510  }
    511511
     512  static public void Separate (Expr _ve_sep, Expr _ve_list, Result _v_res1) throws RefalException
     513  {
     514    Expr _ge_list__0 = _ve_list;
     515    Expr _ve_ll = Expr.empty;
     516    _exit__iter1: for ( ; ; )
     517    {
     518      _iter1: {
     519        if ((_ge_list__0.getLen () != 0))
     520        {
     521          break _iter1;
     522        }
     523        _v_res1.assign (_ve_ll);
     524        break _exit__iter1;
     525      }
     526      _block1: {
     527        _block1__branch1: {
     528          if ((_ge_list__0.getLen () < _ve_sep.getLen ()))
     529          {
     530            break _block1__branch1;
     531          }
     532          Expr.SplitIterator _va_5 = _ge_list__0.leftSplit(0);
     533          _exit1: _continue1: for ( ; ; _va_5.next ())
     534          {
     535            Expr _ve_1 = _va_5.getLeft();
     536            Expr _v_lsplit__list__0 = _va_5.getRight();
     537            if (!_va_5.isValid ())
     538            {
     539              break _block1__branch1;
     540            }
     541            int _v_len1 = _v_lsplit__list__0.getLen ();
     542            int _v_len2 = _ve_sep.getLen ();
     543            if ((_v_len1 < _v_len2))
     544            {
     545              break _block1__branch1;
     546            }
     547            int _v_len__2 = (_v_len1 - _v_len2);
     548            if (!_ve_sep.eq (_v_lsplit__list__0, 0))
     549            {
     550              continue _continue1;
     551            }
     552            Expr _ve_2 = new Expr (_v_lsplit__list__0, (0 + _ve_sep.getLen ()), _v_len__2);
     553            _ge_list__0 = _ve_2;
     554            _ve_ll = new Expr (_ve_ll, new Expr(_ve_1));
     555            break _exit1;
     556          }
     557          break _block1;
     558        }
     559        _ve_ll = new Expr (_ve_ll, new Expr(_ge_list__0));
     560        _ge_list__0 = Expr.empty;
     561      }
     562    }
     563  }
     564
    512565  static public void Nub (Expr _ve_expr, Result _v_res1) throws RefalException
    513566  {
     
    539592            break _block2__branch1;
    540593          }
    541           Expr.SplitIterator _va_5 = _ve_selected.leftSplit(0);
    542           _exit1: _continue1: for ( ; ; _va_5.next ())
    543           {
    544             Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_108_m_21 = _va_5.getLeft();
    545             Expr _v_lsplit__selected = _va_5.getRight();
    546             if (!_va_5.isValid ())
     594          Expr.SplitIterator _va_6 = _ve_selected.leftSplit(0);
     595          _exit1: _continue1: for ( ; ; _va_6.next ())
     596          {
     597            Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_116_m_21 = _va_6.getLeft();
     598            Expr _v_lsplit__selected = _va_6.getRight();
     599            if (!_va_6.isValid ())
    547600            {
    548601              break _block2__branch1;
     
    554607              break _block2__branch1;
    555608            }
    556             int _v_len___e__e_tmp_m__s_lib_s_Listrf_m_108_m_28 = (_v_len3 - _v_len4);
     609            int _v_len___e__e_tmp_m__s_lib_s_Listrf_m_116_m_28 = (_v_len3 - _v_len4);
    557610            if (!_vt_erm.eq (_v_lsplit__selected, 0))
    558611            {
    559612              continue _continue1;
    560613            }
    561             Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_108_m_28 = new Expr (_v_lsplit__selected, (0 + 1), _v_len___e__e_tmp_m__s_lib_s_Listrf_m_108_m_28);
     614            Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_116_m_28 = new Expr (_v_lsplit__selected, (0 + 1), _v_len___e__e_tmp_m__s_lib_s_Listrf_m_116_m_28);
    562615            _ge_expr__0 = _ve_rest;
    563616            break _exit1;
     
    621674            break _block2__branch1;
    622675          }
    623           Expr.SplitIterator _va_6 = _ge_list1__0.leftSplit(0);
    624           _exit1: _continue1: for ( ; ; _va_6.next ())
    625           {
    626             Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_140_m_20 = _va_6.getLeft();
    627             Expr _v_lsplit__list1__0 = _va_6.getRight();
    628             if (!_va_6.isValid ())
     676          Expr.SplitIterator _va_7 = _ge_list1__0.leftSplit(0);
     677          _exit1: _continue1: for ( ; ; _va_7.next ())
     678          {
     679            Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_148_m_20 = _va_7.getLeft();
     680            Expr _v_lsplit__list1__0 = _va_7.getRight();
     681            if (!_va_7.isValid ())
    629682            {
    630683              break _block2__branch1;
     
    636689              break _block2__branch1;
    637690            }
    638             int _v_len___e__e_tmp_m__s_lib_s_Listrf_m_140_m_27 = (_v_len3 - _v_len4);
     691            int _v_len___e__e_tmp_m__s_lib_s_Listrf_m_148_m_27 = (_v_len3 - _v_len4);
    639692            if (!_vt_erm.eq (_v_lsplit__list1__0, 0))
    640693            {
    641694              continue _continue1;
    642695            }
    643             Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_140_m_27 = new Expr (_v_lsplit__list1__0, (0 + 1), _v_len___e__e_tmp_m__s_lib_s_Listrf_m_140_m_27);
     696            Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_148_m_27 = new Expr (_v_lsplit__list1__0, (0 + 1), _v_len___e__e_tmp_m__s_lib_s_Listrf_m_148_m_27);
    644697            _ge_list2__0 = _ve_rest;
    645698            break _exit1;
     
    682735            break _block2__branch1;
    683736          }
    684           Expr.SplitIterator _va_7 = _ve_list2.leftSplit(0);
    685           _exit1: _continue1: for ( ; ; _va_7.next ())
    686           {
    687             Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_154_m_20 = _va_7.getLeft();
    688             Expr _v_lsplit__list2 = _va_7.getRight();
    689             if (!_va_7.isValid ())
     737          Expr.SplitIterator _va_8 = _ve_list2.leftSplit(0);
     738          _exit1: _continue1: for ( ; ; _va_8.next ())
     739          {
     740            Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_162_m_20 = _va_8.getLeft();
     741            Expr _v_lsplit__list2 = _va_8.getRight();
     742            if (!_va_8.isValid ())
    690743            {
    691744              break _block2__branch1;
     
    697750              break _block2__branch1;
    698751            }
    699             int _v_len___e__e_tmp_m__s_lib_s_Listrf_m_154_m_27 = (_v_len3 - _v_len4);
     752            int _v_len___e__e_tmp_m__s_lib_s_Listrf_m_162_m_27 = (_v_len3 - _v_len4);
    700753            if (!_vt_erm.eq (_v_lsplit__list2, 0))
    701754            {
    702755              continue _continue1;
    703756            }
    704             Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_154_m_27 = new Expr (_v_lsplit__list2, (0 + 1), _v_len___e__e_tmp_m__s_lib_s_Listrf_m_154_m_27);
     757            Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_162_m_27 = new Expr (_v_lsplit__list2, (0 + 1), _v_len___e__e_tmp_m__s_lib_s_Listrf_m_162_m_27);
    705758            _ge_list1__0 = _ve_rest;
    706759            _ve_and = new Expr (_ve_and, _vt_erm);
     
    743796            break _block2__branch1;
    744797          }
    745           Expr.SplitIterator _va_8 = _ve_list2.leftSplit(0);
    746           _exit1: _continue1: for ( ; ; _va_8.next ())
    747           {
    748             Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_168_m_20 = _va_8.getLeft();
    749             Expr _v_lsplit__list2 = _va_8.getRight();
    750             if (!_va_8.isValid ())
     798          Expr.SplitIterator _va_9 = _ve_list2.leftSplit(0);
     799          _exit1: _continue1: for ( ; ; _va_9.next ())
     800          {
     801            Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_176_m_20 = _va_9.getLeft();
     802            Expr _v_lsplit__list2 = _va_9.getRight();
     803            if (!_va_9.isValid ())
    751804            {
    752805              break _block2__branch1;
     
    758811              break _block2__branch1;
    759812            }
    760             int _v_len___e__e_tmp_m__s_lib_s_Listrf_m_168_m_27 = (_v_len3 - _v_len4);
     813            int _v_len___e__e_tmp_m__s_lib_s_Listrf_m_176_m_27 = (_v_len3 - _v_len4);
    761814            if (!_vt_erm.eq (_v_lsplit__list2, 0))
    762815            {
    763816              continue _continue1;
    764817            }
    765             Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_168_m_27 = new Expr (_v_lsplit__list2, (0 + 1), _v_len___e__e_tmp_m__s_lib_s_Listrf_m_168_m_27);
     818            Expr _ve__e__e_tmp_m__s_lib_s_Listrf_m_176_m_27 = new Expr (_v_lsplit__list2, (0 + 1), _v_len___e__e_tmp_m__s_lib_s_Listrf_m_176_m_27);
    766819            _ge_list1__0 = _ve_rest;
    767820            break _exit1;
  • to-imperative/trunk/lib/List.rf

    r2187 r2337  
    103103};
    104104
     105Separate (e.sep) e.list =
     106  e.list (/*e.ll*/) $iter {
     107    e.list : e1 e.sep e2 = e2 (e.ll (e1));
     108    (e.ll (e.list));
     109  } :: e.list (e.ll),
     110  e.list : /*empty*/ =
     111  e.ll;
     112
    105113Nub e.expr =
    106114  e.expr () $iter {
  • to-imperative/trunk/lib/List.rfi

    r2187 r2337  
    3131$func Intersperse (e.sep) e.list = e.new-list;
    3232
     33$func Separate (e.sep) e.list = e.list-of-lists;
     34
    3335$func Nub e.expr = e.selected;
    3436
Note: See TracChangeset for help on using the changeset viewer.