2003/11/05 06:22:11
authormegacz <megacz@xwt.org>
Fri, 30 Jan 2004 07:41:02 +0000 (07:41 +0000)
committermegacz <megacz@xwt.org>
Fri, 30 Jan 2004 07:41:02 +0000 (07:41 +0000)
darcs-hash:20040130074102-2ba56-6826e73884c369cfbbe45a9e1715815a6291f63b.gz

src/org/xwt/util/Preprocessor.java

index 7e80f7f..2309257 100644 (file)
@@ -87,9 +87,9 @@ public class Preprocessor {
 
                 for(int i=0; i<255; i++) {
                     if (byLength[i] == null) continue;
-                    System.out.println("case " + i + ": {");
+                    System.out.println("case " + i + ": { switch(neverUseThis.charAt(0)) {");
                     buildTrie("", byLength[i]);
-                    System.out.println("break; }");
+                    System.out.println("}; break; }");
                 }
                 System.out.println("} //switch");
 
@@ -110,23 +110,21 @@ public class Preprocessor {
             } } );
             
             for(int i=0; i<keys.size(); i++) {
+                if (!((String)keys.elementAt(i)).startsWith(prefix)) continue;
                 String prefixPlusOne = ((String)keys.elementAt(i)).substring(0, prefix.length() + 1);
                 if (i<keys.size()-1 && prefixPlusOne.equals((((String)keys.elementAt(i + 1)).substring(0, prefix.length() + 1)))) {
                     System.out.println("case \'" + prefixPlusOne.charAt(prefixPlusOne.length() - 1) + "\': {");
                     System.out.println("switch(neverUseThis.charAt(" + prefix.length() + ")) {");
                     buildTrie(prefixPlusOne, cases);
                     System.out.println("} break; }");
-                    while(i<keys.size()-1 &&
-                          prefixPlusOne.equals(((String)keys.elementAt(i + 1)).substring(0, prefix.length() + 1))) {
-                        i++;
-                        prefixPlusOne = ((String)keys.elementAt(i)).substring(0, prefix.length() + 1);
-                    }
-                    i--;
+                    while(i<keys.size() && prefixPlusOne.equals(((String)keys.elementAt(i)).substring(0, prefix.length() + 1))) i++;
+                    if (i<keys.size()) { i--; continue; }
                 } else {
+                    System.out.println("case \'" + prefixPlusOne.charAt(prefixPlusOne.length() - 1) + "\':");
                     String code = (String)cases.get(keys.elementAt(i));
                     code = code.substring(0, code.length() - 1);
                     String key = (String)keys.elementAt(i);
-                    System.out.println("if (\""+key+"\".equals(neverUseThis)) { " + code + " } ");
+                    System.out.println("if (\""+key+"\".equals(neverUseThis)) { " + code + " } break; ");
                 }
             }
         }