X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fcom%2Fstevesoft%2Fpat%2FStrPos.java;h=d9383dd7eb20a5ce18d9ce63ce5539fdad005c65;hb=7bc226b58110fa26d9dbd3f0c78095d06909ffc3;hp=4a9f287d01913d05d2bc631a9f1ec2a9690fd66e;hpb=c40cf903f740a72ab63dd1abc10fa33450ce660d;p=jalview.git diff --git a/src/com/stevesoft/pat/StrPos.java b/src/com/stevesoft/pat/StrPos.java index 4a9f287..d9383dd 100755 --- a/src/com/stevesoft/pat/StrPos.java +++ b/src/com/stevesoft/pat/StrPos.java @@ -6,112 +6,170 @@ // -- Happy Computing! // package com.stevesoft.pat; -/** + +/** Shareware: package pat Copyright 2001, Steven R. Brandt -*/ /** -StrPos is used internally by regex to parse the regular expression. */ -public class StrPos { - String s; - int pos; - /** Return the position in the string pointed to */ - public int pos() { return pos; } + */ +/** + StrPos is used internally by regex to parse the regular expression. */ +public class StrPos +{ + String s; + int pos; + /** Return the position in the string pointed to */ + public int pos() + { + return pos; + } + + /** This contains the escape character, which is \ by default. */ + public char esc = Pattern.ESC; + char c; + /** Returns the current, possibly escaped, character. */ + public char thisChar() + { + return c; + } + + boolean dontMatch, eos; - /** This contains the escape character, which is \ by default. */ - public char esc=Pattern.ESC; - char c; - /** Returns the current, possibly escaped, character. */ - public char thisChar() { return c; } + /** tell whether we are at end of string */ + public boolean eos() + { + return eos; + } - boolean dontMatch,eos; + /** initialize a StrPos from another StrPos. */ + public StrPos(StrPos sp) + { + dup(sp); + } - /** tell whether we are at end of string */ - public boolean eos() { return eos; } - /** initialize a StrPos from another StrPos. */ - public StrPos(StrPos sp) { - dup(sp); + /** copy a StrPos from sp to this. */ + public void dup(StrPos sp) + { + s = sp.s; + pos = sp.pos; + c = sp.c; + dontMatch = sp.dontMatch; + eos = sp.eos; + } + + /** Initialize a StrPos by giving it a String, and a + position within the String. */ + public StrPos(String s, int pos) + { + this.s = s; + this.pos = pos - 1; + inc(); + } + + /** Advance the place where StrPos points within the String. + Counts a backslash as part of the next character. */ + public StrPos inc() + { + pos++; + if (pos >= s.length()) + { + eos = true; + return this; } - /** copy a StrPos from sp to this. */ - public void dup(StrPos sp) { - s = sp.s; - pos = sp.pos; - c = sp.c; - dontMatch = sp.dontMatch; - eos = sp.eos; + eos = false; + c = s.charAt(pos); + if (c == esc && pos + 1 < s.length()) + { + pos++; + c = s.charAt(pos); + if (c != esc) + { + dontMatch = true; + } + else + { + dontMatch = false; + } } - /** Initialize a StrPos by giving it a String, and a - position within the String. */ - public StrPos(String s,int pos) { - this.s=s; - this.pos=pos-1; - inc(); + else + { + dontMatch = false; } - /** Advance the place where StrPos points within the String. - Counts a backslash as part of the next character. */ - public StrPos inc() { - pos++; - if(pos >= s.length()) { - eos = true; - return this; - } - eos = false; - c = s.charAt(pos); - if(c == esc && pos+1st that matches a non-escaped + character. */ + public boolean incMatch(String st) + { + StrPos sp = new StrPos(this); + int i; + for (i = 0; i < st.length(); i++) + { + if (!sp.match(st.charAt(i))) + { + return false; + } + sp.inc(); } + dup(sp); + return true; + } - /** Returns true if the current - character is escaped (preceeded by "\"). */ - public boolean escaped() { return dontMatch; } - /** Increment the string pointer by each character in -
st
that matches a non-escaped - character. */ - public boolean incMatch(String st) { - StrPos sp = new StrPos(this); - int i; - for(i=0;i= '0' && sp.c <= '9';i++) { - cnt = 10*cnt+sp.c-'0'; - sp.inc(); - } - if(i==0) return null; - dup(sp); - return new patInt(cnt); + int i, cnt = 0; + StrPos sp = new StrPos(this); + for (i = 0; !sp.eos && sp.c >= '0' && sp.c <= '9'; i++) + { + cnt = 10 * cnt + sp.c - '0'; + sp.inc(); } - /** get the string that we are processing. */ - public String getString() { return s; } + if (i == 0) + { + return null; + } + dup(sp); + return new patInt(cnt); + } + + /** get the string that we are processing. */ + public String getString() + { + return s; + } };