X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fcom%2Fstevesoft%2Fpat%2FMulti.java;h=7798d1272acdc276f8c8aafaf69ce761ec025d00;hb=4d7f98a6dd54d9863ba449ec79dcd95d25ed863d;hp=2960b75b2241b2f59d67dd8601f082f077ccbbb3;hpb=c40cf903f740a72ab63dd1abc10fa33450ce660d;p=jalview.git diff --git a/src/com/stevesoft/pat/Multi.java b/src/com/stevesoft/pat/Multi.java index 2960b75..7798d12 100755 --- a/src/com/stevesoft/pat/Multi.java +++ b/src/com/stevesoft/pat/Multi.java @@ -1,60 +1,90 @@ -// -// 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.Hashtable; - -/** Matches any number of instances of sub Pattern - this was the hardest method to write. It implements - '+', '*', '?', "{0,10}", "{5,}", "{5}", etc. - @see pat.Multi_stage2 - @see pat.MultiMin - */ -class Multi extends PatternSub { - patInt a,b; - public patInt minChars() { return a.mul(p.countMinChars()); } - public patInt maxChars() { return b.mul(p.countMaxChars()); } - Pattern p; - Multi_stage2 st2; - public boolean matchFewest = false; - /** - @param a The fewest number of times the sub pattern can match. - @param b The maximum number of times the sub pattern can match. - @param p The sub pattern. - @see Multi_stage2 - @see MultiMin - */ - public Multi(patInt a,patInt b,Pattern p) throws RegSyntax { - this.a = a; - this.b = b; - this.p = p; - st2 = new Multi_stage2(a,b,p); - st2.parent = this; - sub = st2.sub; - } - public String toString() { - st2.matchFewest = matchFewest; - return st2.toString(); - } - public int matchInternal(int pos,Pthings pt) { - try { - st2 = new Multi_stage2(a,b,p); - } catch(RegSyntax r__) {} - st2.matchFewest = matchFewest; - st2.parent = this; - return st2.matchInternal(pos,pt); - } - public Pattern clone1(Hashtable h) { - try { - Multi m = new Multi(a,b,((Pattern)p).clone(h)); - m.matchFewest = matchFewest; - return m; - } catch(RegSyntax rs) { - return null; - } - } -}; +// +// 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.Hashtable; + +/** + * Matches any number of instances of sub Pattern this was the hardest method to + * write. It implements '+', '*', '?', "{0,10}", "{5,}", "{5}", etc. + * + * @see pat.Multi_stage2 + * @see pat.MultiMin + */ +class Multi extends PatternSub +{ + patInt a, b; + + public patInt minChars() + { + return a.mul(p.countMinChars()); + } + + public patInt maxChars() + { + return b.mul(p.countMaxChars()); + } + + Pattern p; + + Multi_stage2 st2; + + public boolean matchFewest = false; + + /** + * @param a + * The fewest number of times the sub pattern can match. + * @param b + * The maximum number of times the sub pattern can match. + * @param p + * The sub pattern. + * @see Multi_stage2 + * @see MultiMin + */ + public Multi(patInt a, patInt b, Pattern p) throws RegSyntax + { + this.a = a; + this.b = b; + this.p = p; + st2 = new Multi_stage2(a, b, p); + st2.parent = this; + sub = st2.sub; + } + + public String toString() + { + st2.matchFewest = matchFewest; + return st2.toString(); + } + + public int matchInternal(int pos, Pthings pt) + { + try + { + st2 = new Multi_stage2(a, b, p); + } catch (RegSyntax r__) + { + } + st2.matchFewest = matchFewest; + st2.parent = this; + return st2.matchInternal(pos, pt); + } + + public Pattern clone1(Hashtable h) + { + try + { + Multi m = new Multi(a, b, ((Pattern) p).clone(h)); + m.matchFewest = matchFewest; + return m; + } catch (RegSyntax rs) + { + return null; + } + } +};