From 197c866f6a1c4adbcb4c299258af1ecc3178aa13 Mon Sep 17 00:00:00 2001 From: adam Date: Thu, 12 Jan 2006 02:33:18 -0500 Subject: [PATCH] checkpoint darcs-hash:20060112073318-5007d-58bd3c6b586bb83efccf09b6e0d114817c1fe3c0.gz --- src/edu/berkeley/sbp/misc/ReflectiveWalker.java | 3 ++- src/edu/berkeley/sbp/tib/TibDoc.java | 12 ++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/edu/berkeley/sbp/misc/ReflectiveWalker.java b/src/edu/berkeley/sbp/misc/ReflectiveWalker.java index c99a463..c838a5e 100644 --- a/src/edu/berkeley/sbp/misc/ReflectiveWalker.java +++ b/src/edu/berkeley/sbp/misc/ReflectiveWalker.java @@ -68,6 +68,7 @@ public class ReflectiveWalker extends StringWalker { } */ public void walk(String tag) { + if (tag==null) return; Member m = member(normalize(tag), 0, false); if (m!=null) Reflection.fuzzyInvoke(target, m); } @@ -75,7 +76,7 @@ public class ReflectiveWalker extends StringWalker { if (argo.length==0) return super.walk(tag, argo); if (argo==null) return tag; if (tag==null || "".equals(tag)) return argo; - Member m = member(normalize(tag), argo.length, argo.length>0); + Member m = tag==null ? null : member(normalize(tag), argo.length, argo.length>0); if (m==null) return super.walk(tag, argo); //System.out.println("preparing to invoke method " + (m==null ? "null" : (m.toString())) + " for sequence " + (owner()+"."+tag)); if (m != null) return Reflection.fuzzyInvoke(target, m, argo); diff --git a/src/edu/berkeley/sbp/tib/TibDoc.java b/src/edu/berkeley/sbp/tib/TibDoc.java index c3b7871..e753933 100644 --- a/src/edu/berkeley/sbp/tib/TibDoc.java +++ b/src/edu/berkeley/sbp/tib/TibDoc.java @@ -7,6 +7,7 @@ package edu.berkeley.sbp.tib; //import org.ibex.io.*; import edu.berkeley.sbp.*; import edu.berkeley.sbp.misc.*; +import edu.berkeley.sbp.util.*; import java.util.*; import java.io.*; @@ -26,16 +27,15 @@ public class TibDoc extends ReflectiveWalker { System.out.println(((Tree)new TibDoc().walk(f.expand1())).toPrettyString()); } - public Tree walk(Tree tree) { - String head = tree.head(); + //public void header() { throw new Error(); } + public Object walk(String head, Object[] children) { if ("stringify".equals(head)) { StringBuffer ret = new StringBuffer(); - for(Tree t : tree.child(0)) ret.append(t); + for(Tree t : (Tree)children[0]) ret.append(t); return new Tree(null, ret.toString()); } - Tree[] children = new Tree[tree.numChildren()]; - for(int i=0; i(null, head, children); + if (children.length==0) return new Tree(null, head, new Tree[0]); + return new Tree(null, head, (Tree[])Reflection.lub(children)); } -- 1.7.10.4