1 /*******************************************************************************
2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $(date) The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
20 *******************************************************************************/
22 // This software is now distributed according to
23 // the Lesser Gnu Public License. Please see
24 // http://www.gnu.org/copyleft/lesser.txt for
26 // -- Happy Computing!
28 package com.stevesoft.pat;
30 import java.util.Hashtable;
32 /** Thrown when one encounters things like [z-a] */
33 class BadRangeArgs extends RegSyntax
38 * Implments a subelement (ranges) of the [] pattern element. For example,
39 * [a-z023] is implemented using a range and tree oneChar classes.
44 class Range extends Pattern
46 char lo, hi, altlo, althi;
48 boolean printBrackets = false;
50 public String toString()
52 String s = protect("" + lo, PROTECT_THESE, ESC) + "-"
53 + protect("" + hi, PROTECT_THESE, ESC);
61 Range(char loi, char hii) throws RegSyntax
68 // throw new BadRangeArgs();
69 RegSyntaxError.endItAll("Badly formed []'s : " + lo + " >= " + hi);
77 public int matchInternal(int pos, Pthings pt)
79 if (pos >= pt.src.length())
87 char c = pt.src.charAt(pos);
88 if (lo <= c && c <= hi || (pt.ignoreCase && (altlo <= c && c <= althi)))
90 return nextMatch(pos + 1, pt);
95 public patInt minChars()
100 public patInt maxChars()
102 return new patInt(1);
105 public Pattern clone1(Hashtable h)
109 Range r = new Range(lo, hi);
110 r.printBrackets = printBrackets;
112 } catch (RegSyntax rs)