diff c/regexParser/regexParser.cc @ 145:50217a0545e8 pairPro

fix charClass()
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Mon, 14 Dec 2015 19:39:16 +0900
parents d8a4922eceae
children 84d32375383a
line wrap: on
line diff
--- a/c/regexParser/regexParser.cc	Mon Dec 14 17:14:33 2015 +0900
+++ b/c/regexParser/regexParser.cc	Mon Dec 14 19:39:16 2015 +0900
@@ -63,22 +63,23 @@
     RangeListPtr rangeList = &cc->cond.range;
     rangeList->begin = (unsigned long)*ri->ptr;
     rangeList->end = (unsigned long)*ri->ptr;
+    rangeList->next = NULL;
 
     for (ri->ptr++; *ri->ptr && *ri->ptr != ']'; ri->ptr++) {
         if (*ri->ptr == '-') {
-            rangeList->end = (unsigned long)(ri->ptr + 1);
+            rangeList->end = (unsigned long)*(ri->ptr + 1);
             ri->ptr++;
             continue;
         }
         if (ri->ptr[0] == 0 || ri->ptr[0] == ']') break;
         if (ri->ptr[0] == rangeList->end + 1) {
-            rangeList->end = (unsigned long)ri->ptr;
+            rangeList->end = (unsigned long)*ri->ptr;
             continue;
         }
         rangeList->next = NEW(RangeList);
         rangeList = rangeList->next;
-        rangeList->begin = (unsigned long)ri->ptr;
-        rangeList->end = (unsigned long)ri->ptr;
+        rangeList->begin = (unsigned long)*ri->ptr;
+        rangeList->end = (unsigned long)*ri->ptr;
         rangeList->next = NULL;
     }
     // TODO literal support
@@ -119,7 +120,6 @@
             ri->ptr++;
             ri->tokenType = '|';
             ri->tokenValue = NULL;
-            ri->orNum++;
             return;
         } else if (ri->ptr[0] == '*'){
             ri->ptr++;