2 // This software is now distributed according to
\r
3 // the Lesser Gnu Public License. Please see
\r
4 // http://www.gnu.org/copyleft/lesser.txt for
\r
6 // -- Happy Computing!
\r
8 package com.stevesoft.pat;
\r
9 import java.util.Hashtable;
\r
10 import java.util.Vector;
\r
12 /** Implements the parenthesis pattern subelement.*/
\r
13 class OrMark extends Or {
\r
14 SubMark sm = new SubMark();
\r
20 String leftForm() { return "("; }
\r
21 public Pattern getNext() {
\r
24 public int matchInternal(int pos,Pthings pt) {
\r
25 sm.next = super.getNext();
\r
26 if(pt.marks == null) {
\r
27 int n2 = 2 * pt.nMarks+2;
\r
28 pt.marks = new int[n2];
\r
29 for(int i=0;i<n2;i++)
\r
33 int ret = super.matchInternal(pos,pt);
\r
36 else if(pt.marks[id] > pt.marks[id+pt.nMarks]) {
\r
37 int swap = pt.marks[id];
\r
38 pt.marks[id] = pt.marks[id+pt.nMarks]+1;
\r
39 pt.marks[id+pt.nMarks] = swap+1;
\r
43 public Pattern clone1(Hashtable h) {
\r
44 OrMark om = new OrMark(id);
\r
47 for(int i=0;i<v.size();i++)
\r
48 om.v.addElement( ((Pattern)v.elementAt(i)).clone(h) );
\r