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
13 * This class implements the (?: ... ) extended Pattern. It provides a base
\r
14 * class from which we derive the [ ... ], ( ... ), (?! ... ), and (?= ... )
\r
17 class Or extends Pattern
\r
21 Pattern[] pv = null;
\r
43 public Or addOr(Pattern p)
\r
51 public String toString()
\r
54 javajs.util.SB sb = new javajs.util.SB();
\r
55 sb.append(leftForm());
\r
58 sb.append(((Pattern) v.elementAt(0)).toString());
\r
60 for (i = 1; i < v.size(); i++)
\r
62 sb.append(sepForm());
\r
63 sb.append(((Pattern) v.elementAt(i)).toString());
\r
65 sb.append(rightForm());
\r
66 sb.append(nextString());
\r
67 return sb.toString();
\r
70 public int matchInternal(int pos, Pthings pt)
\r
74 pv = new Pattern[v.size()];
\r
77 for (int i = 0; i < v.size(); i++)
\r
79 Pattern p = pv[i]; // (Pattern)v.elementAt(i);
\r
80 int r = p.matchInternal(pos, pt);
\r
89 public patInt minChars()
\r
93 return new patInt(0);
\r
95 patInt m = ((Pattern) v.elementAt(0)).countMinChars();
\r
96 for (int i = 1; i < v.size(); i++)
\r
98 Pattern p = (Pattern) v.elementAt(i);
\r
99 m.mineq(p.countMinChars());
\r
104 public patInt maxChars()
\r
108 return new patInt(0);
\r
110 patInt m = ((Pattern) v.elementAt(0)).countMaxChars();
\r
111 for (int i = 1; i < v.size(); i++)
\r
113 Pattern p = (Pattern) v.elementAt(i);
\r
114 m.maxeq(p.countMaxChars());
\r
119 Pattern clone1(Hashtable h)
\r
124 for (int i = 0; i < v.size(); i++)
\r
126 o.v.addElement(((Pattern) v.elementAt(i)).clone(h));
\r