X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fcom%2Fstevesoft%2Fpat%2FBracket.java;h=adbcded91bf4e431edd50c5370c80cd4d3fdad57;hb=cfe83544e2e75debc9ae23b8b15072f3cc632f88;hp=9f60179bb13030c3020656ef66ba52e9799a2e9d;hpb=c40cf903f740a72ab63dd1abc10fa33450ce660d;p=jalview.git diff --git a/src/com/stevesoft/pat/Bracket.java b/src/com/stevesoft/pat/Bracket.java index 9f60179..adbcded 100755 --- a/src/com/stevesoft/pat/Bracket.java +++ b/src/com/stevesoft/pat/Bracket.java @@ -1,48 +1,89 @@ -// -// 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.pat; -import java.util.Vector; -import java.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= 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; + } +};