diff options
Diffstat (limited to 'src/piraha/Multi.cc')
-rw-r--r-- | src/piraha/Multi.cc | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/src/piraha/Multi.cc b/src/piraha/Multi.cc index d0733618..ff03f7d9 100644 --- a/src/piraha/Multi.cc +++ b/src/piraha/Multi.cc @@ -4,24 +4,15 @@ using namespace piraha; bool Multi::match(Matcher *m) { - unsigned int save; - int iter = 0; vector<smart_ptr<Group> > chSave; - while(true) { - save = m->pos; + for(int i=0;i<maxv;i++) { + int save = m->pos; chSave = m->children; - if(!pattern->match(m)) { - m->children = chSave; + if(!pattern->match(m) || m->pos == save) { m->pos = save; - break; - } - if(save - m->pos == 0) { - std::cout << "ZERO ADVANCE IN MULTI!" << std::endl; - return minv <= iter && iter <= maxv; + m->children = chSave; + return i >= minv; } - iter++; - if(iter == maxv) - break; } - return minv <= iter && iter <= maxv; + return true; } |