source: to-imperative/branches/alternative_call_macros/samples/select.cc @ 472

Last change on this file since 472 was 472, checked in by anonymous, 18 years ago

This commit was manufactured by cvs2svn to create branch
'alternative_call_macros'.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.7 KB
Line 
1#include <rf_core.hh>
2#include <refal/StdIO.hh>
3
4namespace refal
5{
6
7using namespace rfrt;
8
9namespace select
10{
11
12RF_DECL (Main);
13
14RF_DECL (MkArg);
15
16RF_DECL (Select);
17
18RF_DECL (OneOf);
19
20}
21
22namespace select
23{
24
25RF_FUNC (Main, (), (RF_RES _v_res1))
26  Expr _v_MkArg1;
27  RF_CALL_NOFAIL (MkArg, ("1234567890a"), (_v_MkArg1));
28  Expr _v_ePrefixes;
29  _v_ePrefixes = _v_MkArg1;
30  RF_CALL_NOFAIL (StdIO::PrintLN, (_v_ePrefixes), ());
31  Expr _v_Select1;
32  RF_CALL_NOFAIL (Select, (empty, _v_ePrefixes), (_v_Select1));
33  Expr _v_eXs_m_or_m_sFail;
34  _v_eXs_m_or_m_sFail = _v_Select1;
35  RF_CALL_NOFAIL (StdIO::PrintLN, (_v_eXs_m_or_m_sFail), ());
36  _v_res1 = empty;
37  return true;
38RF_END
39
40RF_FUNC (MkArg, (RF_ARG _v_eString), (RF_RES _v_res1))
41  {
42    {
43      int _v_leneString_m__m_;
44      _v_leneString_m__m_ = (((int) _v_eString.get_len ()) - (1));
45      if (((_v_leneString_m__m_) >= (((1) * (0)))) && !((_v_leneString_m__m_) % (1)))
46      {
47        if (_v_eString.symbol_at (((_v_leneString_m__m_) / (1))))
48        {
49          Expr _v_eString_m__m_ (_v_eString, 0, ((_v_leneString_m__m_) / (1)));
50          Expr _v_s_e__e_tmp_m_selectrf_m_18_m_19 (_v_eString, ((_v_leneString_m__m_) / (1)), 1);
51          Expr _v_MkArg1;
52          RF_CALL_NOFAIL (MkArg, (_v_eString_m__m_), (_v_MkArg1));
53          _v_res1 = _v_eString () + _v_MkArg1;
54          return true;
55        }
56      }
57      goto LBranch1;
58    }
59  LBranch1: {}
60    {
61      if ((((int) _v_eString.get_len ()) == (0)))
62      {
63        _v_res1 = empty;
64        return true;
65      }
66      goto LBranch2;
67    }
68  LBranch2: {}
69    error ("Unexpected fail");
70  }
71LBlock1: {}
72  return true;
73RF_END
74
75RF_FUNC (Select, (RF_ARG _v_eXs, _v_eSets), (RF_RES _v_res1))
76  {
77    {
78      if ((((int) _v_eSets.get_len ()) == (0)))
79      {
80        _v_res1 = _v_eXs ();
81        return true;
82      }
83      goto LBranch1;
84    }
85  LBranch1: {}
86    {
87      int _v_leneSets_m__m_;
88      _v_leneSets_m__m_ = (((int) _v_eSets.get_len ()) - (1));
89      if (((_v_leneSets_m__m_) >= (((1) * (0)))) && !((_v_leneSets_m__m_) % (1)))
90      {
91        if (!_v_eSets.symbol_at (0))
92        {
93          Expr _v_lderefeSets1 (_v_eSets, 0);
94          int _v_leneSet;
95          _v_leneSet = (((int) _v_lderefeSets1.get_len ()) - (0));
96          if (((_v_leneSet) >= (((1) * (0)))) && !((_v_leneSet) % (1)))
97          {
98            int _v_mine_e__e_tmp_m_selectrf_m_27_m_17;
99            _v_mine_e__e_tmp_m_selectrf_m_27_m_17 = pxx_max (0, ((((((_v_leneSet) / (1))) - (1 + ((((((_v_leneSet) / (1))) - (1 + 0))) / (1))))) / (1)));
100            if (((_v_mine_e__e_tmp_m_selectrf_m_27_m_17) <= (((((((_v_leneSet) / (1))) - (1 + 0))) / (1)))))
101            {
102              int _v_mine_e__e_tmp_m_selectrf_m_27_m_22;
103              _v_mine_e__e_tmp_m_selectrf_m_27_m_22 = pxx_max (0, ((((((_v_leneSet) / (1))) - (1 + ((((((_v_leneSet) / (1))) - (1 + 0))) / (1))))) / (1)));
104              if (((_v_mine_e__e_tmp_m_selectrf_m_27_m_22) <= (((((((_v_leneSet) / (1))) - (1 + 0))) / (1)))))
105              {
106                Expr _v_eSet (_v_lderefeSets1, 0, ((_v_leneSet) / (1)));
107                lsplit (_v_eSet, _v_mine_e__e_tmp_m_selectrf_m_27_m_17, _v_e_e__e_tmp_m_selectrf_m_27_m_17, _v_lspliteSet1);
108                {
109                  for ( ; ; iter(_v_eSet)++)
110                  {
111                    int _v_lene_e__e_tmp_m_selectrf_m_27_m_22;
112                    _v_lene_e__e_tmp_m_selectrf_m_27_m_22 = (((int) _v_lspliteSet1.get_len ()) - (1));
113                    if (((_v_lene_e__e_tmp_m_selectrf_m_27_m_22) >= (((1) * (0)))) && !((_v_lene_e__e_tmp_m_selectrf_m_27_m_22) % (1)))
114                    {
115                      if (_v_lspliteSet1.symbol_at (0))
116                      {
117                        Expr _v_eSets_m__m_ (_v_eSets, 1, ((_v_leneSets_m__m_) / (1)));
118                        Expr _v_sX (_v_lspliteSet1, 0, 1);
119                        Expr _v_e_e__e_tmp_m_selectrf_m_27_m_22 (_v_lspliteSet1, 1, ((_v_lene_e__e_tmp_m_selectrf_m_27_m_22) / (1)));
120                        Expr _v_OneOf1;
121                        RF_CALL_NOFAIL (OneOf, (_v_eXs, _v_sX), (_v_OneOf1));
122                        if (((1) == (1)))
123                        {
124                          if (_v_OneOf1.symbol_at (0))
125                          {
126                            Expr _v_constwordF ("F");
127                            if (Expr::flat_eq (_v_constwordF, 0, _v_OneOf1, 0, 1))
128                            {
129                              Expr _v_Select1;
130                              RF_CALL_NOFAIL (Select, (_v_eXs + _v_sX, _v_eSets_m__m_), (_v_Select1));
131                              if ((((int) _v_Select1.get_len ()) == (1)))
132                              {
133                                if (!_v_Select1.symbol_at (0))
134                                {
135                                  Expr _v_lderefSelect11 (_v_Select1, 0);
136                                  int _v_leneXs_m_;
137                                  _v_leneXs_m_ = (((int) _v_lderefSelect11.get_len ()) - (0));
138                                  if (((_v_leneXs_m_) >= (((1) * (0)))) && !((_v_leneXs_m_) % (1)))
139                                  {
140                                    Expr _v_eXs_m_ (_v_lderefSelect11, 0, ((_v_leneXs_m_) / (1)));
141                                    _v_res1 = _v_eXs_m_ ();
142                                    return true;
143                                  }
144                                }
145                              }
146                              goto LForCont1;
147                            }
148                          }
149                        }
150                        goto LForCont1;
151                      }
152                      goto LForCont1;
153                    }
154                    goto LForBreak1;
155                LForCont1: {}
156                  }
157                }
158              LForBreak1: {}
159              }
160            }
161          }
162        }
163      }
164      goto LBranch2;
165    }
166  LBranch2: {}
167    {
168      int _v_lene_e__e_tmp_m_selectrf_m_31_m_6;
169      _v_lene_e__e_tmp_m_selectrf_m_31_m_6 = (((int) _v_eSets.get_len ()) - (0));
170      if (((_v_lene_e__e_tmp_m_selectrf_m_31_m_6) >= (((1) * (0)))) && !((_v_lene_e__e_tmp_m_selectrf_m_31_m_6) % (1)))
171      {
172        Expr _v_e_e__e_tmp_m_selectrf_m_31_m_6 (_v_eSets, 0, ((_v_lene_e__e_tmp_m_selectrf_m_31_m_6) / (1)));
173        Expr _v_constchars_p_ ("+");
174        _v_res1 = _v_constchars_p_;
175        return true;
176      }
177      goto LBranch3;
178    }
179  LBranch3: {}
180    error ("Unexpected fail");
181  }
182LBlock1: {}
183  return true;
184RF_END
185
186RF_FUNC (OneOf, (RF_ARG _v_eXs, _v_sX), (RF_RES _v_res1))
187  {
188    {
189      int _v_mine_e__e_tmp_m_selectrf_m_36_m_6;
190      _v_mine_e__e_tmp_m_selectrf_m_36_m_6 = pxx_max (0, (((((int) _v_eXs.get_len ()) - (1 + (((((int) _v_eXs.get_len ()) - (1 + 0))) / (1))))) / (1)));
191      if (((_v_mine_e__e_tmp_m_selectrf_m_36_m_6) <= ((((((int) _v_eXs.get_len ()) - (1 + 0))) / (1)))))
192      {
193        int _v_mine_e__e_tmp_m_selectrf_m_36_m_11;
194        _v_mine_e__e_tmp_m_selectrf_m_36_m_11 = pxx_max (0, (((((int) _v_eXs.get_len ()) - (1 + (((((int) _v_eXs.get_len ()) - (1 + 0))) / (1))))) / (1)));
195        if (((_v_mine_e__e_tmp_m_selectrf_m_36_m_11) <= ((((((int) _v_eXs.get_len ()) - (1 + 0))) / (1)))))
196        {
197          lsplit (_v_eXs, _v_mine_e__e_tmp_m_selectrf_m_36_m_6, _v_e_e__e_tmp_m_selectrf_m_36_m_6, _v_lspliteXs1);
198          {
199            for ( ; ; iter(_v_eXs)++)
200            {
201              int _v_lene_e__e_tmp_m_selectrf_m_36_m_11;
202              _v_lene_e__e_tmp_m_selectrf_m_36_m_11 = (((int) _v_lspliteXs1.get_len ()) - (1));
203              if (((_v_lene_e__e_tmp_m_selectrf_m_36_m_11) >= (((1) * (0)))) && !((_v_lene_e__e_tmp_m_selectrf_m_36_m_11) % (1)))
204              {
205                if (_v_lspliteXs1.symbol_at (0))
206                {
207                  if (Expr::flat_eq (_v_sX, 0, _v_lspliteXs1, 0, 1))
208                  {
209                    Expr _v_e_e__e_tmp_m_selectrf_m_36_m_11 (_v_lspliteXs1, 1, ((_v_lene_e__e_tmp_m_selectrf_m_36_m_11) / (1)));
210                    Expr _v_constwordT ("T");
211                    _v_res1 = _v_constwordT;
212                    return true;
213                  }
214                }
215                goto LForCont1;
216              }
217              goto LForBreak1;
218          LForCont1: {}
219            }
220          }
221        LForBreak1: {}
222        }
223      }
224      goto LBranch1;
225    }
226  LBranch1: {}
227    {
228      int _v_lene_e__e_tmp_m_selectrf_m_38_m_6;
229      _v_lene_e__e_tmp_m_selectrf_m_38_m_6 = (((int) _v_eXs.get_len ()) - (0));
230      if (((_v_lene_e__e_tmp_m_selectrf_m_38_m_6) >= (((1) * (0)))) && !((_v_lene_e__e_tmp_m_selectrf_m_38_m_6) % (1)))
231      {
232        Expr _v_e_e__e_tmp_m_selectrf_m_38_m_6 (_v_eXs, 0, ((_v_lene_e__e_tmp_m_selectrf_m_38_m_6) / (1)));
233        Expr _v_constwordF ("F");
234        _v_res1 = _v_constwordF;
235        return true;
236      }
237      goto LBranch2;
238    }
239  LBranch2: {}
240    error ("Unexpected fail");
241  }
242LBlock1: {}
243  return true;
244RF_END
245
246}
247
248rfrt::Entry rf_entry (select::Main);
249
250}
Note: See TracBrowser for help on using the repository browser.