2 // This software is now distributed according to
3 // the Lesser Gnu Public License. Please see
4 // http://www.gnu.org/copyleft/lesser.txt for
8 package com.stevesoft.pat;
13 * This class implements the (?: ... ) extended Pattern. It provides a base
14 * class from which we derive the [ ... ], ( ... ), (?! ... ), and (?= ... )
17 class Or extends Pattern
43 public Or addOr(Pattern p)
51 public String toString()
54 StringBuffer sb = new StringBuffer();
55 sb.append(leftForm());
58 sb.append(((Pattern) v.elementAt(0)).toString());
60 for (i = 1; i < v.size(); i++)
63 sb.append(((Pattern) v.elementAt(i)).toString());
65 sb.append(rightForm());
66 sb.append(nextString());
70 public int matchInternal(int pos, Pthings pt)
74 pv = new Pattern[v.size()];
77 for (int i = 0; i < v.size(); i++)
79 Pattern p = pv[i]; // (Pattern)v.elementAt(i);
80 int r = p.matchInternal(pos, pt);
89 public patInt minChars()
95 patInt m = ((Pattern) v.elementAt(0)).countMinChars();
96 for (int i = 1; i < v.size(); i++)
98 Pattern p = (Pattern) v.elementAt(i);
99 m.mineq(p.countMinChars());
104 public patInt maxChars()
108 return new patInt(0);
110 patInt m = ((Pattern) v.elementAt(0)).countMaxChars();
111 for (int i = 1; i < v.size(); i++)
113 Pattern p = (Pattern) v.elementAt(i);
114 m.maxeq(p.countMaxChars());
119 Pattern clone1(Hashtable h)
124 for (int i = 0; i < v.size(); i++)
126 o.v.addElement(((Pattern) v.elementAt(i)).clone(h));