comparison regexParser/subsetConstraction.cc @ 211:bc596e357a52

delete conditional branch in charClassMerge() (pattern 12)
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Mon, 28 Dec 2015 15:43:27 +0900
parents 959f8c00da17
children b0ae5273925c
comparison
equal deleted inserted replaced
210:e8aa8a1ea749 211:bc596e357a52
86 if (begin == cc->cond.range.begin) { // 8 86 if (begin == cc->cond.range.begin) { // 8
87 CharClassPtr cc1 = mergeCCTree(cc->right,cc->cond.range.end+1,end,nextState); 87 CharClassPtr cc1 = mergeCCTree(cc->right,cc->cond.range.end+1,end,nextState);
88 return createCharClassRange(cc->cond.range.begin,cc->cond.range.end, 88 return createCharClassRange(cc->cond.range.begin,cc->cond.range.end,
89 cc->nextState.bitContainer | nextState.bitContainer,cc->left,cc1); 89 cc->nextState.bitContainer | nextState.bitContainer,cc->left,cc1);
90 } 90 }
91 if (begin > cc->cond.range.begin) { // 11 91 if (begin > cc->cond.range.begin) { // 11,12
92 CharClassPtr cc1 = mergeCCTree(cc->right,cc->cond.range.end+1,end,nextState); 92 CharClassPtr cc1 = mergeCCTree(cc->right,cc->cond.range.end+1,end,nextState);
93 CharClassPtr cc3 = createCharClassRange(cc->cond.range.begin,begin-1,cc->nextState.bitContainer,cc->left,NULL); 93 CharClassPtr cc3 = createCharClassRange(cc->cond.range.begin,begin-1,cc->nextState.bitContainer,cc->left,NULL);
94 return createCharClassRange(begin,cc->cond.range.end,cc->nextState.bitContainer | nextState.bitContainer,cc3,cc1); 94 return createCharClassRange(begin,cc->cond.range.end,cc->nextState.bitContainer | nextState.bitContainer,cc3,cc1);
95 } 95 }
96 }
97 // begin != end && end != cc->cond.range.end
98 if (begin == cc->cond.range.end) { // 12
99 CharClassPtr cc1 = mergeCCTree(cc->right,begin+1,end,nextState);
100 if (cc->cond.range.begin == cc->cond.range.end) {
101 return createCharClassRange(cc->cond.range.begin,cc->cond.range.end,cc->nextState.bitContainer | nextState.bitContainer,cc1,cc->right);
102 }
103 CharClassPtr cc3 = createCharClassRange(cc->cond.range.begin,cc->cond.range.end-1,cc->nextState.bitContainer,cc->left,NULL);
104 return createCharClassRange(cc->cond.range.end,cc->cond.range.end,cc->nextState.bitContainer | nextState.bitContainer,cc1,cc3);
105 } 96 }
106 } else if (begin < cc->cond.range.begin) { // 5 97 } else if (begin < cc->cond.range.begin) { // 5
107 CharClassPtr cc1 = mergeCCTree(cc->left,begin,cc->cond.range.begin-1,nextState); 98 CharClassPtr cc1 = mergeCCTree(cc->left,begin,cc->cond.range.begin-1,nextState);
108 CharClassPtr cc3 = mergeCCTree(cc->right,cc->cond.range.end+1,end,nextState); 99 CharClassPtr cc3 = mergeCCTree(cc->right,cc->cond.range.end+1,end,nextState);
109 return createCharClassRange(cc->cond.range.begin,cc->cond.range.end,cc->nextState.bitContainer | nextState.bitContainer,cc1,cc3); 100 return createCharClassRange(cc->cond.range.begin,cc->cond.range.end,cc->nextState.bitContainer | nextState.bitContainer,cc1,cc3);