projects
/
sbp.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
373f281
)
checkpoint
author
adam
<adam@megacz.com>
Thu, 12 Jan 2006 07:26:44 +0000
(
02:26
-0500)
committer
adam
<adam@megacz.com>
Thu, 12 Jan 2006 07:26:44 +0000
(
02:26
-0500)
darcs-hash:
20060112072644
-5007d-
f797bb6aae249f450d10db56b6aa8cf838c85c28
.gz
src/edu/berkeley/sbp/misc/ReflectiveWalker.java
patch
|
blob
|
history
src/edu/berkeley/sbp/misc/StringWalker.java
patch
|
blob
|
history
src/edu/berkeley/sbp/tib/TibDoc.java
patch
|
blob
|
history
src/edu/berkeley/sbp/util/Reflection.java
patch
|
blob
|
history
diff --git
a/src/edu/berkeley/sbp/misc/ReflectiveWalker.java
b/src/edu/berkeley/sbp/misc/ReflectiveWalker.java
index
f22f4b8
..
c99a463
100644
(file)
--- 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);
}
*/
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;
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
(file)
--- 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<String> {
import java.lang.reflect.*;
public abstract class StringWalker extends TreeWalker<String> {
- public Object walk(Tree<String> tree) { return super.walk(tree); }
+ public void walk(String tag) { }
+ public Object walk(Tree<String> 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;
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
(file)
--- 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.*;
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]);
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));
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<String> walk(Tree<String> tree) {
+ public Tree<String> walk(Tree<String> tree) {
String head = tree.head();
if ("stringify".equals(head)) {
String head = tree.head();
if ("stringify".equals(head)) {
- String ret = "";
- for(Tree<String> t : tree.child(0)) ret += t;
- return new Tree<String>(null, ret);
+ StringBuffer ret = new StringBuffer();
+ for(Tree<String> t : tree.child(0)) ret.append(t);
+ return new Tree<String>(null, ret.toString());
}
Tree<String>[] children = new Tree[tree.numChildren()];
for(int i=0; i<children.length; i++) children[i] = walk(tree.child(i));
}
Tree<String>[] children = new Tree[tree.numChildren()];
for(int i=0; i<children.length; i++) children[i] = walk(tree.child(i));
diff --git
a/src/edu/berkeley/sbp/util/Reflection.java
b/src/edu/berkeley/sbp/util/Reflection.java
index
fea79e3
..
beb8d41
100644
(file)
--- a/
src/edu/berkeley/sbp/util/Reflection.java
+++ b/
src/edu/berkeley/sbp/util/Reflection.java
@@
-78,6
+78,7
@@
public final class Reflection {
}
}
}
}
+ public static Object fuzzyInvoke(Object o, Member m) { return fuzzyInvoke(o, m, new Object[0]); }
/** invoke method/constructor m on object o with arguments args, and perform reasonable coercions as needed */
public static Object fuzzyInvoke(Object o, Member m, Object[] args) {
try {
/** invoke method/constructor m on object o with arguments args, and perform reasonable coercions as needed */
public static Object fuzzyInvoke(Object o, Member m, Object[] args) {
try {