# HG changeset patch # User masa # Date 1440754514 -32400 # Node ID b11dfc48f698ee0f4c8fe544cd64d2a89ac93fbe # Parent 0a5dd7486bb2f1267ff88b7ac9dd14de47ee4940 fix grouping function diff -r 0a5dd7486bb2 -r b11dfc48f698 c/regexParser/main.cc --- a/c/regexParser/main.cc Thu Aug 27 16:57:28 2015 +0900 +++ b/c/regexParser/main.cc Fri Aug 28 18:35:14 2015 +0900 @@ -90,7 +90,7 @@ if (*ptr == ')') { n = createNode('(',n,0); } else { - n = regex(); + n = createNode('+', regex(),0); } return n; } @@ -99,7 +99,7 @@ void token() { while (*ptr != '\0') { - if ((*ptr == '(') || (*ptr == ')')) { + if (*ptr == '('){ ptr++; tokenType = '('; tokenValue = 0; @@ -107,6 +107,11 @@ ptr++; } return; + } else if (*ptr == ')') { + ptr++; + tokenType = ')'; + tokenValue = *ptr; + return; } else if (*ptr == '[') { ptr++; tokenType = '['; @@ -168,6 +173,8 @@ } else if (tokenType == '|') { NodePtr n1 = regex(); n = createNode('|',n,n1); + } else if (tokenType == ')') { + return n; } else { NodePtr n1 = regex(); n = createNode('+',n,n1);