# HG changeset patch # User Masataka Kohagura # Date 1449066648 -32400 # Node ID fb4c8adf3a80c1a2e491f90a2cdbddeb6a788675 # Parent a436526756b9925baf4478e81ce8b7cd4e90cf76 fix include '|' in regex diff -r a436526756b9 -r fb4c8adf3a80 c/regexParser/main.cc --- a/c/regexParser/main.cc Wed Dec 02 18:01:32 2015 +0900 +++ b/c/regexParser/main.cc Wed Dec 02 23:30:48 2015 +0900 @@ -12,6 +12,7 @@ { RegexInfoPtr ri = (RegexInfoPtr)malloc(sizeof(RegexInfo)); ri->nodeNumber = 1; + ri->orFlag = 0; for (int i = 1; i < argc; i++) { if (strcmp(argv[i],"-regex") == 0) { diff -r a436526756b9 -r fb4c8adf3a80 c/regexParser/regexParser.cc --- a/c/regexParser/regexParser.cc Wed Dec 02 18:01:32 2015 +0900 +++ b/c/regexParser/regexParser.cc Wed Dec 02 23:30:48 2015 +0900 @@ -132,7 +132,7 @@ ri->ptr++; ri->tokenType = '|'; ri->tokenValue = NULL; - ri->orFlag = true; + ri->orFlag++; return; } else if (ri->ptr[0] == '*'){ ri->ptr++; @@ -187,15 +187,15 @@ NodePtr n1 = regex(ri); n = createNode(ri,'|',n,n1); } else if (ri->tokenType == ')') { - if (ri->orFlag == true) { - ri->ptr--; - ri->orFlag = false; + if (ri->orFlag != 0) { + if (ri->ptr[0] != ')') ri->ptr--; + ri->orFlag--; } return n; } else { // return NULL NodePtr n1 = regex(ri); - n = createNode(ri,'a',n,n1); + n = createNode(ri,'+',n,n1); } } return n; }