summaryrefslogtreecommitdiff
path: root/src/piraha/Multi.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/piraha/Multi.cc')
-rw-r--r--src/piraha/Multi.cc21
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;
}