X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fcom%2Fstevesoft%2Fpat%2FStrPos.java;fp=src%2Fcom%2Fstevesoft%2Fpat%2FStrPos.java;h=4a9f287d01913d05d2bc631a9f1ec2a9690fd66e;hb=c40cf903f740a72ab63dd1abc10fa33450ce660d;hp=0000000000000000000000000000000000000000;hpb=5bcae030b489e670c6983aa97eb9b6d8a6bbbbd5;p=jalview.git
diff --git a/src/com/stevesoft/pat/StrPos.java b/src/com/stevesoft/pat/StrPos.java
new file mode 100755
index 0000000..4a9f287
--- /dev/null
+++ b/src/com/stevesoft/pat/StrPos.java
@@ -0,0 +1,117 @@
+//
+// 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;
+/**
+ 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; }
+
+ /** 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;
+
+ /** 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;
+ }
+ 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= '0' && sp.c <= '9';i++) {
+ cnt = 10*cnt+sp.c-'0';
+ sp.inc();
+ }
+ if(i==0) return null;
+ dup(sp);
+ return new patInt(cnt);
+ }
+ /** get the string that we are processing. */
+ public String getString() { return s; }
+};