-//\r
-// This software is now distributed according to\r
-// the Lesser Gnu Public License. Please see\r
-// http://www.gnu.org/copyleft/lesser.txt for\r
-// the details.\r
-// -- Happy Computing!\r
-//\r
-package com.stevesoft.pat;\r
-\r
-import java.util.*;\r
-\r
-/** Matches any number of instances of sub Pattern\r
- this was the hardest method to write. It implements\r
- '+', '*', '?', "{0,10}", "{5,}", "{5}", etc.\r
- @see pat.Multi_stage2\r
- @see pat.MultiMin\r
- */\r
-class Multi\r
- extends PatternSub\r
-{\r
- patInt a, b;\r
- public patInt minChars()\r
- {\r
- return a.mul(p.countMinChars());\r
- }\r
-\r
- public patInt maxChars()\r
- {\r
- return b.mul(p.countMaxChars());\r
- }\r
-\r
- Pattern p;\r
- Multi_stage2 st2;\r
- public boolean matchFewest = false;\r
- /**\r
- @param a The fewest number of times the sub pattern can match.\r
- @param b The maximum number of times the sub pattern can match.\r
- @param p The sub pattern.\r
- @see Multi_stage2\r
- @see MultiMin\r
- */\r
- public Multi(patInt a, patInt b, Pattern p)\r
- throws RegSyntax\r
- {\r
- this.a = a;\r
- this.b = b;\r
- this.p = p;\r
- st2 = new Multi_stage2(a, b, p);\r
- st2.parent = this;\r
- sub = st2.sub;\r
- }\r
-\r
- public String toString()\r
- {\r
- st2.matchFewest = matchFewest;\r
- return st2.toString();\r
- }\r
-\r
- public int matchInternal(int pos, Pthings pt)\r
- {\r
- try\r
- {\r
- st2 = new Multi_stage2(a, b, p);\r
- }\r
- catch (RegSyntax r__)\r
- {}\r
- st2.matchFewest = matchFewest;\r
- st2.parent = this;\r
- return st2.matchInternal(pos, pt);\r
- }\r
-\r
- public Pattern clone1(Hashtable h)\r
- {\r
- try\r
- {\r
- Multi m = new Multi(a, b, ( (Pattern) p).clone(h));\r
- m.matchFewest = matchFewest;\r
- return m;\r
- }\r
- catch (RegSyntax rs)\r
- {\r
- return null;\r
- }\r
- }\r
-};\r
+//
+// This software is now distributed according to
+// the Lesser Gnu Public License. Please see
+// http://www.gnu.org/copyleft/lesser.txt for
+// the details.
+// -- Happy Computing!
+//
+package com.stevesoft.pat;
+
+import java.util.Hashtable;
+
+/**
+ * Matches any number of instances of sub Pattern this was the hardest method to
+ * write. It implements '+', '*', '?', "{0,10}", "{5,}", "{5}", etc.
+ *
+ * @see pat.Multi_stage2
+ * @see pat.MultiMin
+ */
+class Multi extends PatternSub
+{
+ patInt a, b;
+
+ public patInt minChars()
+ {
+ return a.mul(p.countMinChars());
+ }
+
+ public patInt maxChars()
+ {
+ return b.mul(p.countMaxChars());
+ }
+
+ Pattern p;
+
+ Multi_stage2 st2;
+
+ public boolean matchFewest = false;
+
+ /**
+ * @param a
+ * The fewest number of times the sub pattern can match.
+ * @param b
+ * The maximum number of times the sub pattern can match.
+ * @param p
+ * The sub pattern.
+ * @see Multi_stage2
+ * @see MultiMin
+ */
+ public Multi(patInt a, patInt b, Pattern p) throws RegSyntax
+ {
+ this.a = a;
+ this.b = b;
+ this.p = p;
+ st2 = new Multi_stage2(a, b, p);
+ st2.parent = this;
+ sub = st2.sub;
+ }
+
+ public String toString()
+ {
+ st2.matchFewest = matchFewest;
+ return st2.toString();
+ }
+
+ public int matchInternal(int pos, Pthings pt)
+ {
+ try
+ {
+ st2 = new Multi_stage2(a, b, p);
+ } catch (RegSyntax r__)
+ {
+ }
+ st2.matchFewest = matchFewest;
+ st2.parent = this;
+ return st2.matchInternal(pos, pt);
+ }
+
+ public Pattern clone1(Hashtable h)
+ {
+ try
+ {
+ Multi m = new Multi(a, b, ((Pattern) p).clone(h));
+ m.matchFewest = matchFewest;
+ return m;
+ } catch (RegSyntax rs)
+ {
+ return null;
+ }
+ }
+};