KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gnu > regexp > REToken


1 /*
2  * gnu/regexp/REToken.java
3  * Copyright (C) 1998-2001 Wes Biggs
4  *
5  * This library is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU Lesser General Public License as published
7  * by the Free Software Foundation; either version 2.1 of the License, or
8  * (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */

19
20 package gnu.regexp;
21 import java.io.Serializable JavaDoc;
22
23 abstract class REToken implements Serializable JavaDoc {
24
25   protected REToken next = null;
26   protected REToken uncle = null;
27   protected int subIndex;
28
29   protected REToken(int subIndex) {
30       this.subIndex = subIndex;
31   }
32
33   int getMinimumLength() {
34     return 0;
35   }
36
37   void setUncle(REToken anUncle) {
38     uncle = anUncle;
39   }
40
41     /** Returns true if the match succeeded, false if it failed. */
42     abstract boolean match(CharIndexed input, REMatch mymatch);
43   
44     /** Returns true if the rest of the tokens match, false if they fail. */
45     protected boolean next(CharIndexed input, REMatch mymatch) {
46     if (next == null) {
47         if (uncle == null) {
48         return true;
49         } else {
50         return uncle.match(input, mymatch);
51         }
52     } else {
53         return next.match(input, mymatch);
54     }
55     }
56   
57   boolean chain(REToken token) {
58       next = token;
59       return true; // Token was accepted
60
}
61
62     abstract void dump(StringBuffer JavaDoc os);
63
64   void dumpAll(StringBuffer JavaDoc os) {
65     dump(os);
66     if (next != null) next.dumpAll(os);
67   }
68 }
69
Popular Tags