# HG changeset patch # User Shinji KONO # Date 1454922268 -32400 # Node ID 058c87665213600925fb2787d0cb1995514c2c69 # Parent 1188debbef10df124fe85e7a1527244d2e591762 small fix diff -r 1188debbef10 -r 058c87665213 regexParser/CharClass.cc --- a/regexParser/CharClass.cc Mon Feb 08 12:45:45 2016 +0900 +++ b/regexParser/CharClass.cc Mon Feb 08 18:04:28 2016 +0900 @@ -10,10 +10,20 @@ #include "CharClass.h" +CharClassPtr createCharClassRange(unsigned long begin, unsigned long end,unsigned long state, CharClassPtr left, CharClassPtr right) { + CharClassPtr cc = NEW(CharClass); + cc->cond.range.begin = begin; + cc->cond.range.end = end; + cc->cond.w.word = NULL; + cc->cond.w.length = 0; + cc->left = left; + cc->right = right; + cc->nextState.bitContainer = state; + return cc; +} CharClassPtr createCharClassWord(RegexInfoPtr ri) { CharClassPtr cc = NEW(CharClass); - cc->type = 'a'; cc->left = NULL; cc->right = NULL; cc->cond.w.word = ri->tokenValue; @@ -96,18 +106,6 @@ } -CharClassPtr createCharClassRange(unsigned long begin, unsigned long end,unsigned long state, CharClassPtr left, CharClassPtr right) { - CharClassPtr cc = NEW(CharClass); - cc->type = 'r'; - cc->cond.range.begin = begin; - cc->cond.range.end = end; - cc->cond.w.word = NULL; - cc->cond.w.length = 0; - cc->left = left; - cc->right = right; - cc->nextState.bitContainer = state; - return cc; -} CharClassPtr charClassMerge(CharClassPtr cc,unsigned long begin, unsigned long end, BitVector nextState) ; diff -r 1188debbef10 -r 058c87665213 regexParser/node.cc --- a/regexParser/node.cc Mon Feb 08 12:45:45 2016 +0900 +++ b/regexParser/node.cc Mon Feb 08 18:04:28 2016 +0900 @@ -2,19 +2,27 @@ #include "regexParser.h" #include "node.h" +static void printCharClassWord(CharClassPtr cc) { + for (int i = 0; i < cc->cond.w.length; i++) { + putchar(cc->cond.w.word[i]); + } +} + void printCharacterClass(CharClassPtr cc, long nodeNumber,int d) { if (!cc) return; - if (cc->type == 'a' || cc->type == 'r') { - if (cc->left) { - printCharacterClass(cc->left,nodeNumber,d+1); - } - printf("%*c",d*4, ' '); + if (cc->left) { + printCharacterClass(cc->left,nodeNumber,d+1); + } + printf("%*c",d*4, ' '); + if (cc->cond.w.word) { + printCharClassWord(cc); + } else { RangeList range = cc->cond.range; printf("[%c-%c] ",(unsigned char)range.begin,(unsigned char)range.end); - printf("(%lx)\n",cc->nextState.bitContainer); - if (cc->right) { - printCharacterClass(cc->right,nodeNumber,d+1); - } + } + printf("(0x%lx)\n",cc->nextState.bitContainer); + if (cc->right) { + printCharacterClass(cc->right,nodeNumber,d+1); } } @@ -24,13 +32,11 @@ } if (n->tokenType == 'a') { printf("%*c",d*4, ' '); - for (int i = 0; i < n->cc->cond.w.length; i++) { - putchar(n->cc->cond.w.word[i]); - } + printCharClassWord(n->cc); if (n->state && n->nextState) { - printf("(%ld)->(%ld)\n",n->state->bitState.bitContainer,n->nextState->bitState.bitContainer); + printf("(0x%lx)->(0x%lx)\n",n->state->bitState.bitContainer,n->nextState->bitState.bitContainer); } else if (n->state) { - printf("(%ld)\n",n->state->bitState.bitContainer); + printf("(0x%lx)\n",n->state->bitState.bitContainer); } else { printf("\n"); } diff -r 1188debbef10 -r 058c87665213 regexParser/regexParser.h --- a/regexParser/regexParser.h Mon Feb 08 12:45:45 2016 +0900 +++ b/regexParser/regexParser.h Mon Feb 08 18:04:28 2016 +0900 @@ -27,7 +27,6 @@ } Condition, *ConditionList; typedef struct charClass { - unsigned char type; struct charClass *left; struct charClass *right; Condition cond;