diff options
author | sbrandt <sbrandt@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2013-04-03 19:12:46 +0000 |
---|---|---|
committer | sbrandt <sbrandt@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2013-04-03 19:12:46 +0000 |
commit | a3cb4c5d02f0ee75094fc27814c71f8a025d034b (patch) | |
tree | 1dd1af38bf8ad0318f07dd2c8ae00216e942efb0 /src/piraha/Multi.cc | |
parent | 069e8f1d570cc373c843673be0acf7bc4dd10b6e (diff) |
Add the basic grammar files, and the changes
to the piraha code necessary to parse all
of Cactus.
git-svn-id: http://svn.cactuscode.org/flesh/trunk@4990 17b73243-c579-4c4c-a9d2-2d5706c11dac
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; } |