Mercurial > hg > Applications > Grep
comparison c/regexParser/regexParser.cc @ 152:1c9e8ba64f6a pairPro
add implement charclassMerge (not working)
author | masa |
---|---|
date | Wed, 16 Dec 2015 17:28:53 +0900 |
parents | 6ba059ce9109 |
children |
comparison
equal
deleted
inserted
replaced
151:6ba059ce9109 | 152:1c9e8ba64f6a |
---|---|
86 | 86 |
87 */ | 87 */ |
88 CharClassPtr insertCharClass(CharClassPtr cc, unsigned long begin, unsigned long end) { | 88 CharClassPtr insertCharClass(CharClassPtr cc, unsigned long begin, unsigned long end) { |
89 | 89 |
90 if (end < cc->cond.range.begin ) { // 1 | 90 if (end < cc->cond.range.begin ) { // 1 |
91 CharClassPtr cc1 = createCharClassRange(cc->cond.range.begin,cc->cond.range.end,cc->left,cc->right); | |
92 if (cc->left) { | 91 if (cc->left) { |
93 cc1->left = insertCharClass(cc->left,begin,end); | 92 cc->left = insertCharClass(cc->left,begin,end); |
94 return cc1; | 93 } else { |
95 } else { | 94 cc->left = createCharClassRange(begin,end,0,0); |
96 CharClassPtr cc2 = createCharClassRange(begin,end,0,0); | 95 } |
97 cc1->left = cc2; | 96 return cc; |
98 return cc1; | |
99 } | |
100 } else if (end == cc->cond.range.begin ) { // 2 | 97 } else if (end == cc->cond.range.begin ) { // 2 |
101 cc->cond.range.begin = begin; | 98 cc->cond.range.begin = begin; |
102 return cc; | 99 return cc; |
103 } else if (end <= cc->cond.range.end) { // 3,4,6,7,9,10 | 100 } else if (end <= cc->cond.range.end) { // 3,4,6,7,9,10 |
104 if (begin < cc->cond.range.begin) { // 3,4 | 101 if (begin < cc->cond.range.begin) { // 3,4 |