//
// This software is now distributed according to
// the Lesser Gnu Public License. Please see
// http://www.gnu.org/copyleft/lesser.txt for
// the details.
// -- Happy Computing!
//
package com.stevesoft.ewe_pat;
import ewe.util.Vector;
import ewe.util.Hashtable;
/** The Bracket is a form of the Or class,
implements the pattern element [ ]. */
class Bracket extends Or {
boolean neg;
Bracket(boolean n) { neg = n; }
String leftForm() {
if(neg)
return "[^";
else
return "[";
}
String rightForm() { return "]"; }
String sepForm() { return ""; }
public int matchInternal(int pos,Pthings pt) {
if(pos >= pt.src.length()) return -1;
int r = super.matchInternal(pos,pt);
if((neg && r<0)||(!neg && r>=0))
return nextMatch(pos+1,pt);
return -1;
}
public patInt minChars() { return new patInt(1); }
public patInt maxChars() { return new patInt(1); }
public Or addOr(Pattern p) {
pv = null;
v.addElement(p);
p.setParent(null);
return this;
}
public Pattern clone1(Hashtable h) {
Bracket b = new Bracket(neg);
b.v = new Vector();
for(int i=0;i<v.size();i++)
b.v.addElement( ((Pattern)v.elementAt(i)).clone1(h) );
return b;
}
};