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