Formatting
[jalview.git] / src / com / stevesoft / pat / Multi_stage2.java
index 41afa39..990b0e6 100755 (executable)
 //    -- Happy Computing!\r
 //\r
 package com.stevesoft.pat;\r
-import java.util.Hashtable;\r
+\r
+import java.util.*;\r
 \r
 /** If Multi were not split into a second stage, then\r
  a nested Multi would try to re-use the same count\r
  variable and the whole thing would break. */\r
-class Multi_stage2 extends PatternSub {\r
-    Pattern nextRet;\r
-    patInt count;\r
-    patInt matchMin,matchMax;\r
-    public boolean matchFewest = false;\r
-    public String toString() {\r
-        String ret = "";\r
-        ret += sub.toString();\r
-        ret += "{"+matchMin+","+matchMax+"}";\r
-        if(matchFewest) ret += "?";\r
-        ret += parent.nextString();\r
-        return ret;\r
+class Multi_stage2\r
+    extends PatternSub\r
+{\r
+  Pattern nextRet;\r
+  patInt count;\r
+  patInt matchMin, matchMax;\r
+  public boolean matchFewest = false;\r
+  public String toString()\r
+  {\r
+    String ret = "";\r
+    ret += sub.toString();\r
+    ret += "{" + matchMin + "," + matchMax + "}";\r
+    if (matchFewest)\r
+    {\r
+      ret += "?";\r
     }\r
-    Multi_stage2(patInt a,patInt b,Pattern p) throws RegSyntax {\r
-        if(p == null) RegSyntaxError.endItAll(\r
-                "Multiple match of Null pattern requested.");\r
-        sub = p;\r
-        nextRet = this;\r
-        sub.setParent(this);\r
-        matchMin = a;\r
-        matchMax = b;\r
-        count = new patInt(0);\r
-        // we must have b > a > -1 for this\r
-        // to make sense.\r
-        if(!a.lessEq(b))\r
-            //throw new BadMultiArgs();\r
-            RegSyntaxError.endItAll("Bad Multi Args: "+a+">"+b);\r
-        patInt i = new patInt(-1);\r
-        if(a.lessEq(i))\r
-            //throw new BadMultiArgs();\r
-            RegSyntaxError.endItAll("Bad Multi Args: "+a+"< 0");\r
+    ret += parent.nextString();\r
+    return ret;\r
+  }\r
+\r
+  Multi_stage2(patInt a, patInt b, Pattern p)\r
+      throws RegSyntax\r
+  {\r
+    if (p == null)\r
+    {\r
+      RegSyntaxError.endItAll(\r
+          "Multiple match of Null pattern requested.");\r
     }\r
-    public Pattern getNext() {\r
-        return nextRet;\r
+    sub = p;\r
+    nextRet = this;\r
+    sub.setParent(this);\r
+    matchMin = a;\r
+    matchMax = b;\r
+    count = new patInt(0);\r
+    // we must have b > a > -1 for this\r
+    // to make sense.\r
+    if (!a.lessEq(b))\r
+    {\r
+      //throw new BadMultiArgs();\r
+      RegSyntaxError.endItAll("Bad Multi Args: " + a + ">" + b);\r
     }\r
-    int pos_old = -1;\r
-    public int matchInternal(int pos,Pthings pt) {\r
-        sub.setParent(this);\r
+    patInt i = new patInt( -1);\r
+    if (a.lessEq(i))\r
+    {\r
+      //throw new BadMultiArgs();\r
+      RegSyntaxError.endItAll("Bad Multi Args: " + a + "< 0");\r
+    }\r
+  }\r
 \r
-        int canUse = -1;\r
+  public Pattern getNext()\r
+  {\r
+    return nextRet;\r
+  }\r
 \r
-        // check for some forms of infinite recursion...\r
-        if(pos_old >= 0 && pos == pos_old) {\r
-            return -1;\r
-        }\r
-        pos_old = pos;\r
+  int pos_old = -1;\r
+  public int matchInternal(int pos, Pthings pt)\r
+  {\r
+    sub.setParent(this);\r
 \r
-        if(matchMin.lessEq(count))\r
-            canUse = pos;\r
-        if(!count.lessEq(matchMax) || pos > pt.src.length())\r
-            return -1;\r
+    int canUse = -1;\r
 \r
-        if((matchFewest||count.equals(matchMax)) && canUse >= 0) {\r
-            Pattern n = super.getNext();\r
-            if(n == null)\r
-                return canUse;\r
-            int ret = testMatch(n,pos,pt);\r
-            if(ret >= 0) {\r
-               return ret;\r
-            }\r
-            else canUse = -1;\r
-        }\r
+    // check for some forms of infinite recursion...\r
+    if (pos_old >= 0 && pos == pos_old)\r
+    {\r
+      return -1;\r
+    }\r
+    pos_old = pos;\r
 \r
-        count.inc();\r
-        try {\r
-            if(count.lessEq(matchMax)) {\r
-                int r = testMatch(sub,pos,pt);\r
-                if(r >= 0)\r
-                    return r;\r
-            }\r
-        } finally { count.dec(); }\r
+    if (matchMin.lessEq(count))\r
+    {\r
+      canUse = pos;\r
+    }\r
+    if (!count.lessEq(matchMax) || pos > pt.src.length())\r
+    {\r
+      return -1;\r
+    }\r
 \r
-        if(!matchFewest && canUse >= 0) {\r
-            Pattern n = super.getNext();\r
-            if(n == null)\r
-                return canUse;\r
-            int ret = testMatch(n,pos,pt);\r
-            return ret;\r
-        } else return canUse;\r
+    if ( (matchFewest || count.equals(matchMax)) && canUse >= 0)\r
+    {\r
+      Pattern n = super.getNext();\r
+      if (n == null)\r
+      {\r
+        return canUse;\r
+      }\r
+      int ret = testMatch(n, pos, pt);\r
+      if (ret >= 0)\r
+      {\r
+        return ret;\r
+      }\r
+      else\r
+      {\r
+        canUse = -1;\r
+      }\r
     }\r
-    public Pattern clone1(Hashtable h) {\r
-        try {\r
-            Multi_stage2 m = new Multi_stage2(matchMin,matchMax,sub.clone(h));\r
-            m.matchFewest = matchFewest;\r
-            return m;\r
-        } catch(RegSyntax rs) {\r
-            return null;\r
+\r
+    count.inc();\r
+    try\r
+    {\r
+      if (count.lessEq(matchMax))\r
+      {\r
+        int r = testMatch(sub, pos, pt);\r
+        if (r >= 0)\r
+        {\r
+          return r;\r
         }\r
+      }\r
+    }\r
+    finally\r
+    {\r
+      count.dec();\r
+    }\r
+\r
+    if (!matchFewest && canUse >= 0)\r
+    {\r
+      Pattern n = super.getNext();\r
+      if (n == null)\r
+      {\r
+        return canUse;\r
+      }\r
+      int ret = testMatch(n, pos, pt);\r
+      return ret;\r
+    }\r
+    else\r
+    {\r
+      return canUse;\r
+    }\r
+  }\r
+\r
+  public Pattern clone1(Hashtable h)\r
+  {\r
+    try\r
+    {\r
+      Multi_stage2 m = new Multi_stage2(matchMin, matchMax, sub.clone(h));\r
+      m.matchFewest = matchFewest;\r
+      return m;\r
+    }\r
+    catch (RegSyntax rs)\r
+    {\r
+      return null;\r
     }\r
+  }\r
 };\r