KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > kawa > lang > VarListPat


1 package kawa.lang;
2 import gnu.lists.*;
3 import gnu.text.Printable;
4
5 /** A Pattern that will match a list of a given minimum length. */
6
7 public class VarListPat extends Pattern {
8   /** Minimun length of list that will match. */
9   int min_length;
10
11   public VarListPat (int min) { min_length = min; }
12
13   /** Succeeds of obj is a list with at least min_length elements.
14    * @param obj the object to match against
15    * @return true if the match succeeded.
16    * The elements vars[start_vars .. start_vars + min_length] contain
17    * the first min_length elements of obj followed by the
18    * min_length'th cdr of obj. */

19   public boolean match (Object JavaDoc obj, Object JavaDoc[] vars, int start_vars)
20   {
21     int i;
22     for (i = 0; i < min_length; i++)
23       {
24     if (obj instanceof Pair)
25       {
26         Pair p = (Pair)obj;
27         vars[start_vars + i] = p.car;
28         obj = p.cdr;
29       }
30     else
31       return false;
32       }
33     vars [start_vars + i] = obj;
34     return true;
35   }
36
37   public int varCount () { return min_length + 1; }
38
39   public void print (Consumer out)
40   {
41     out.write("#<varlist-pattern min:");
42     out.writeInt(min_length);
43     out.write('>');
44   }
45 }
46
Popular Tags