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