fixes double pinyin parser
authorPeng Wu <alexepico@gmail.com>
Fri, 2 Dec 2011 03:08:09 +0000 (11:08 +0800)
committerPeng Wu <alexepico@gmail.com>
Fri, 2 Dec 2011 03:08:09 +0000 (11:08 +0800)
src/storage/pinyin_parser2.cpp
tests/storage/test_parser2.cpp

index 568380c..7e98b4d 100644 (file)
@@ -23,6 +23,7 @@
 #include "pinyin_parser2.h"
 #include <ctype.h>
 #include <assert.h>
+#include <stdio.h>
 #include <string.h>
 #include "stl_lite.h"
 #include "pinyin_phrase2.h"
@@ -528,7 +529,8 @@ int DoublePinyinParser2::parse(pinyin_option_t options, ChewingKeyVector & keys,
     int maximum_len = 0; int i;
     /* probe the longest possible double pinyin string. */
     for (i = 0; i < len; ++i) {
-        if (!IS_KEY(str[i]))
+        const char ch = str[i];
+        if (!(IS_KEY(ch) || ('0' < ch && ch <= '5')))
             break;
     }
     maximum_len = i;
index 3748338..f42db49 100644 (file)
@@ -56,7 +56,7 @@ int main(int argc, char * argv[]) {
     ChewingKeyVector keys = g_array_new(FALSE, FALSE, sizeof(ChewingKey));
     ChewingKeyRestVector key_rests =
         g_array_new(FALSE, FALSE, sizeof(ChewingKeyRest));
-    pinyin_option_t options = PINYIN_CORRECT_ALL | USE_RESPLIT_TABLE;
+    pinyin_option_t options = PINYIN_CORRECT_ALL | USE_TONE | USE_RESPLIT_TABLE;
 
     int i = 1;
     while(i < argc) {