2 // This software is now distributed according to
\r
3 // the Lesser Gnu Public License. Please see
\r
4 // http://www.gnu.org/copyleft/lesser.txt for
\r
6 // -- Happy Computing!
\r
8 package com.stevesoft.pat;
\r
12 /** Thrown when one encounters things like [z-a] */
\r
17 /** Implments a subelement (ranges) of the [] pattern element.
\r
18 For example, [a-z023] is implemented using a range and tree oneChar
\r
26 char lo, hi, altlo, althi;
\r
27 boolean printBrackets = false;
\r
28 public String toString()
\r
30 String s = protect("" + lo, PROTECT_THESE, ESC) + "-"
\r
31 + protect("" + hi, PROTECT_THESE, ESC);
\r
36 return "[" + s + "]";
\r
39 Range(char loi, char hii)
\r
47 //throw new BadRangeArgs();
\r
48 RegSyntaxError.endItAll("Badly formed []'s : " + lo + " >= " + hi);
\r
50 o = new oneChar(lo);
\r
52 o = new oneChar(hi);
\r
56 public int matchInternal(int pos, Pthings pt)
\r
58 if (pos >= pt.src.length())
\r
62 if (Masked(pos, pt))
\r
66 char c = pt.src.charAt(pos);
\r
67 if (lo <= c && c <= hi ||
\r
68 (pt.ignoreCase && (altlo <= c && c <= althi)))
\r
70 return nextMatch(pos + 1, pt);
\r
75 public patInt minChars()
\r
77 return new patInt(1);
\r
80 public patInt maxChars()
\r
82 return new patInt(1);
\r
85 public Pattern clone1(Hashtable h)
\r
89 Range r = new Range(lo, hi);
\r
90 r.printBrackets = printBrackets;
\r
93 catch (RegSyntax rs)
\r