From 0db242407cbae04f1a55086bf2bd31f5ae1bb7a8 Mon Sep 17 00:00:00 2001 From: adam Date: Thu, 12 Jan 2006 02:26:44 -0500 Subject: [PATCH] checkpoint darcs-hash:20060112072644-5007d-f797bb6aae249f450d10db56b6aa8cf838c85c28.gz --- src/edu/berkeley/sbp/misc/ReflectiveWalker.java | 4 ++++ src/edu/berkeley/sbp/misc/StringWalker.java | 6 +++++- src/edu/berkeley/sbp/tib/TibDoc.java | 12 ++++++------ src/edu/berkeley/sbp/util/Reflection.java | 1 + 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/edu/berkeley/sbp/misc/ReflectiveWalker.java b/src/edu/berkeley/sbp/misc/ReflectiveWalker.java index f22f4b8..c99a463 100644 --- a/src/edu/berkeley/sbp/misc/ReflectiveWalker.java +++ b/src/edu/berkeley/sbp/misc/ReflectiveWalker.java @@ -67,6 +67,10 @@ public class ReflectiveWalker extends StringWalker { return super.walk(tree); } */ + public void walk(String tag) { + Member m = member(normalize(tag), 0, false); + if (m!=null) Reflection.fuzzyInvoke(target, m); + } public Object walk(String tag, Object[] argo) { if (argo.length==0) return super.walk(tag, argo); if (argo==null) return tag; diff --git a/src/edu/berkeley/sbp/misc/StringWalker.java b/src/edu/berkeley/sbp/misc/StringWalker.java index 923c639..ae150e6 100644 --- a/src/edu/berkeley/sbp/misc/StringWalker.java +++ b/src/edu/berkeley/sbp/misc/StringWalker.java @@ -6,7 +6,11 @@ import java.util.*; import java.lang.reflect.*; public abstract class StringWalker extends TreeWalker { - public Object walk(Tree tree) { return super.walk(tree); } + public void walk(String tag) { } + public Object walk(Tree tree) { + walk(tree.head()); + return super.walk(tree); + } public Object walk(String tag, Object[] tokens) { if (tokens.length==0) return tag; if (tag==null) return null; diff --git a/src/edu/berkeley/sbp/tib/TibDoc.java b/src/edu/berkeley/sbp/tib/TibDoc.java index a823b36..c3b7871 100644 --- a/src/edu/berkeley/sbp/tib/TibDoc.java +++ b/src/edu/berkeley/sbp/tib/TibDoc.java @@ -10,7 +10,7 @@ import edu.berkeley.sbp.misc.*; import java.util.*; import java.io.*; -public class TibDoc { +public class TibDoc extends ReflectiveWalker { public static void main(String[] s) throws Exception { System.out.println("parsing " + s[0]); @@ -23,15 +23,15 @@ public class TibDoc { Forest f = new CharToken.CharToStringParser(mg).parse(new Tib(new FileInputStream(s[1]))); System.out.println(f); //System.out.println(((Tree)walk(f.expand1())).toString(0, 0, 120)); - System.out.println(((Tree)walk(f.expand1())).toPrettyString()); + System.out.println(((Tree)new TibDoc().walk(f.expand1())).toPrettyString()); } - public static Tree walk(Tree tree) { + public Tree walk(Tree tree) { String head = tree.head(); if ("stringify".equals(head)) { - String ret = ""; - for(Tree t : tree.child(0)) ret += t; - return new Tree(null, ret); + StringBuffer ret = new StringBuffer(); + for(Tree t : tree.child(0)) ret.append(t); + return new Tree(null, ret.toString()); } Tree[] children = new Tree[tree.numChildren()]; for(int i=0; i