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