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;
+ }
};