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