-//\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
-/** Implements the parenthesis pattern subelement.*/\r
-class OrMark\r
- extends Or\r
-{\r
- SubMark sm = new SubMark();\r
- int id;\r
- OrMark(int i)\r
- {\r
- sm.om = this;\r
- id = i;\r
- }\r
-\r
- String leftForm()\r
- {\r
- return "(";\r
- }\r
-\r
- public Pattern getNext()\r
- {\r
- return sm;\r
- }\r
-\r
- public int matchInternal(int pos, Pthings pt)\r
- {\r
- sm.next = super.getNext();\r
- if (pt.marks == null)\r
- {\r
- int n2 = 2 * pt.nMarks + 2;\r
- pt.marks = new int[n2];\r
- for (int i = 0; i < n2; i++)\r
- {\r
- pt.marks[i] = -1;\r
- }\r
- }\r
- pt.marks[id] = pos;\r
- int ret = super.matchInternal(pos, pt);\r
- if (ret < 0)\r
- {\r
- pt.marks[id] = -1;\r
- }\r
- else if (pt.marks[id] > pt.marks[id + pt.nMarks])\r
- {\r
- int swap = pt.marks[id];\r
- pt.marks[id] = pt.marks[id + pt.nMarks] + 1;\r
- pt.marks[id + pt.nMarks] = swap + 1;\r
- }\r
- return ret;\r
- }\r
-\r
- public Pattern clone1(Hashtable h)\r
- {\r
- OrMark om = new OrMark(id);\r
- h.put(om, om);\r
- h.put(this, om);\r
- for (int i = 0; i < v.size(); i++)\r
- {\r
- om.v.addElement( ( (Pattern) v.elementAt(i)).clone(h));\r
- }\r
- return om;\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;
+
+/** Implements the parenthesis pattern subelement. */
+class OrMark extends Or
+{
+ SubMark sm = new SubMark();
+
+ int id;
+
+ OrMark(int i)
+ {
+ sm.om = this;
+ id = i;
+ }
+
+ String leftForm()
+ {
+ return "(";
+ }
+
+ public Pattern getNext()
+ {
+ return sm;
+ }
+
+ public int matchInternal(int pos, Pthings pt)
+ {
+ sm.next = super.getNext();
+ if (pt.marks == null)
+ {
+ int n2 = 2 * pt.nMarks + 2;
+ pt.marks = new int[n2];
+ for (int i = 0; i < n2; i++)
+ {
+ pt.marks[i] = -1;
+ }
+ }
+ pt.marks[id] = pos;
+ int ret = super.matchInternal(pos, pt);
+ if (ret < 0)
+ {
+ pt.marks[id] = -1;
+ }
+ else if (pt.marks[id] > pt.marks[id + pt.nMarks])
+ {
+ int swap = pt.marks[id];
+ pt.marks[id] = pt.marks[id + pt.nMarks] + 1;
+ pt.marks[id + pt.nMarks] = swap + 1;
+ }
+ return ret;
+ }
+
+ public Pattern clone1(Hashtable h)
+ {
+ OrMark om = new OrMark(id);
+ h.put(om, om);
+ h.put(this, om);
+ for (int i = 0; i < v.size(); i++)
+ {
+ om.v.addElement(((Pattern) v.elementAt(i)).clone(h));
+ }
+ return om;
+ }
+};