1 package kawa.lang; 2 import gnu.lists.*; 3 import gnu.text.Printable; 4 5 6 7 public class VarListPat extends Pattern { 8 9 int min_length; 10 11 public VarListPat (int min) { min_length = min; } 12 13 19 public boolean match (Object obj, Object [] 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 |