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
12 /** This class implements the (?: ... ) extended Pattern.
\r
13 It provides a base class from which we derive the
\r
14 [ ... ], ( ... ), (?! ... ), and (?= ... ) patterns. */
\r
19 Pattern[] pv = null;
\r
40 public Or addOr(Pattern p)
\r
48 public String toString()
\r
51 StringBuffer sb = new StringBuffer();
\r
52 sb.append(leftForm());
\r
55 sb.append( ( (Pattern) v.elementAt(0)).toString());
\r
57 for (i = 1; i < v.size(); i++)
\r
59 sb.append(sepForm());
\r
60 sb.append( ( (Pattern) v.elementAt(i)).toString());
\r
62 sb.append(rightForm());
\r
63 sb.append(nextString());
\r
64 return sb.toString();
\r
67 public int matchInternal(int pos, Pthings pt)
\r
71 pv = new Pattern[v.size()];
\r
74 for (int i = 0; i < v.size(); i++)
\r
76 Pattern p = pv[i]; //(Pattern)v.elementAt(i);
\r
77 int r = p.matchInternal(pos, pt);
\r
86 public patInt minChars()
\r
90 return new patInt(0);
\r
92 patInt m = ( (Pattern) v.elementAt(0)).countMinChars();
\r
93 for (int i = 1; i < v.size(); i++)
\r
95 Pattern p = (Pattern) v.elementAt(i);
\r
96 m.mineq(p.countMinChars());
\r
101 public patInt maxChars()
\r
105 return new patInt(0);
\r
107 patInt m = ( (Pattern) v.elementAt(0)).countMaxChars();
\r
108 for (int i = 1; i < v.size(); i++)
\r
110 Pattern p = (Pattern) v.elementAt(i);
\r
111 m.maxeq(p.countMaxChars());
\r
116 Pattern clone1(Hashtable h)
\r
121 for (int i = 0; i < v.size(); i++)
\r
123 o.v.addElement( ( (Pattern) v.elementAt(i)).clone(h));
\r