From: adam Date: Sun, 16 Jul 2006 07:42:25 +0000 (-0400) Subject: checkpoint X-Git-Tag: tag_for_25-Mar~122 X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=9b7ce1d3e4ac84ecd2d0f5f461b42c40f38e4783 checkpoint darcs-hash:20060716074225-5007d-a2ecb46e6c337998e5183c071c1fd1327bf81a1f.gz --- diff --git a/src/edu/berkeley/sbp/Forest.java b/src/edu/berkeley/sbp/Forest.java index 1c8fbc5..645850b 100644 --- a/src/edu/berkeley/sbp/Forest.java +++ b/src/edu/berkeley/sbp/Forest.java @@ -19,8 +19,8 @@ public abstract class Forest implements GraphViz.ToGraphViz { public void expand(HashSet> ht) { expand(ht, new HashSet>(), null); } /** create a new forest */ - public static Forest create(Input.Region loc, T head, Forest[] children, boolean unwrap) { - return new One(loc, head, children, unwrap); + public static Forest create(Input.Region loc, T head, Forest[] children, boolean lift) { + return new One(loc, head, children, lift); } // Package-Private ////////////////////////////////////////////////////////////////////////////// @@ -42,21 +42,21 @@ public abstract class Forest implements GraphViz.ToGraphViz { private final Forest[] children; /** if true, the last child's children are considered children of this node */ - private final boolean unwrap; + private final boolean lift; - private One(Input.Region loc, T head, Forest[] children, boolean unwrap) { + private One(Input.Region loc, T head, Forest[] children, boolean lift) { this.location = loc; this.head = head; this.children = children==null ? emptyForestArray : new Forest[children.length]; if (children != null) System.arraycopy(children, 0, this.children, 0, children.length); if (children != null) for(int i=0; i expand1() throws Ambiguous { Tree[] ret = new Tree[children.length]; for(int i=0; i(location, head, ret, unwrap); + return new Tree(location, head, ret, lift); } void gather(HashSet> hf) { @@ -69,7 +69,7 @@ public abstract class Forest implements GraphViz.ToGraphViz { } private void expand(final int i, Tree[] ta, HashSet> ht, HashSet> ignore, Tree bogus) { if (i==children.length) { - ht.add(new Tree(location, head, ta, unwrap)); + ht.add(new Tree(location, head, ta, lift)); } else { HashSet> ht2 = new HashSet>(); children[i].expand(ht2, ignore, bogus); @@ -98,7 +98,7 @@ public abstract class Forest implements GraphViz.ToGraphViz { if (edges) return; edges = true; for(int i=0; i public Tree(Input.Region loc, T head) { this(loc, head, null); } public Tree(Input.Region loc, T head, Tree[] children) { this(loc, head, children, false); } + + /** package-private constructor, allows setting the "lift" bit */ Tree(Input.Region loc, T head, Tree[] children, boolean lift) { this.location = loc; this.head = head; @@ -84,16 +86,11 @@ public class Tree if (gv.hasNode(this)) return gv.createNode(this); GraphViz.Node n = gv.createNode(this); n.label = head()==null ? "" : head().toString(); - //n.color = "red"; for(Tree t : this) n.edge(t, null); return n; } public boolean isTransparent() { return false; } public boolean isHidden() { return false; } - - // TreeFunctor ///////////////////////////////////////////////////////////////////////////// - - public static interface TreeFunctor extends Functor>, R> { } - + } diff --git a/src/edu/berkeley/sbp/bind/BindingFunctor.java b/src/edu/berkeley/sbp/bind/BindingFunctor.java index cfe324d..8a4d042 100644 --- a/src/edu/berkeley/sbp/bind/BindingFunctor.java +++ b/src/edu/berkeley/sbp/bind/BindingFunctor.java @@ -6,7 +6,7 @@ import java.io.*; import java.util.*; import java.lang.reflect.*; -public class BindingFunctor implements Tree.TreeFunctor, ToJava { +public class BindingFunctor implements TreeFunctor, ToJava { private Binding _binding; private String _toString; public String toString() { @@ -28,7 +28,7 @@ public class BindingFunctor implements Tree.TreeFunctor, ToJava { ArrayList ret = new ArrayList(); for(Tree tc : t) { if (tc.head() != null && tc.head() instanceof Functor) - ret.add(((Tree.TreeFunctor)tc.head()).invoke(tc.children())); + ret.add(((TreeFunctor)tc.head()).invoke(tc.children())); else if (tc.numChildren() == 0) ret.add(tc.head()); else { diff --git a/src/edu/berkeley/sbp/bind/RawBindingFunctor.java b/src/edu/berkeley/sbp/bind/RawBindingFunctor.java index a7c670f..52817d1 100644 --- a/src/edu/berkeley/sbp/bind/RawBindingFunctor.java +++ b/src/edu/berkeley/sbp/bind/RawBindingFunctor.java @@ -6,7 +6,7 @@ import java.io.*; import java.util.*; import java.lang.reflect.*; -public class RawBindingFunctor implements Tree.TreeFunctor, ToJava { +public class RawBindingFunctor implements TreeFunctor, ToJava { private Binding _binding; private String _toString; public RawBindingFunctor(String toString, Binding binding) { diff --git a/src/edu/berkeley/sbp/bind/TreeFunctor.java b/src/edu/berkeley/sbp/bind/TreeFunctor.java new file mode 100644 index 0000000..671901a --- /dev/null +++ b/src/edu/berkeley/sbp/bind/TreeFunctor.java @@ -0,0 +1,10 @@ +package edu.berkeley.sbp.bind; +import edu.berkeley.sbp.*; +import edu.berkeley.sbp.util.*; +import edu.berkeley.sbp.bind.*; +import java.io.*; +import java.util.*; +import java.lang.reflect.*; + +public interface TreeFunctor extends Functor>, R> { +} diff --git a/src/edu/berkeley/sbp/meta/ArrayBuildingTreeFunctor.java b/src/edu/berkeley/sbp/meta/ArrayBuildingTreeFunctor.java index f173e9c..f1477ed 100644 --- a/src/edu/berkeley/sbp/meta/ArrayBuildingTreeFunctor.java +++ b/src/edu/berkeley/sbp/meta/ArrayBuildingTreeFunctor.java @@ -10,7 +10,7 @@ import java.lang.annotation.*; import java.lang.reflect.*; import java.io.*; -public class ArrayBuildingTreeFunctor implements Tree.TreeFunctor, ToJava { +public class ArrayBuildingTreeFunctor implements TreeFunctor, ToJava { public void toJava(StringBuffer sb) { sb.append("new ArrayBuildingTreeFunctor()"); } public String toString() { return ""; } diff --git a/src/edu/berkeley/sbp/meta/Grammar.java b/src/edu/berkeley/sbp/meta/Grammar.java index d9462e0..a80ac28 100644 --- a/src/edu/berkeley/sbp/meta/Grammar.java +++ b/src/edu/berkeley/sbp/meta/Grammar.java @@ -19,7 +19,7 @@ public class Grammar { * @param gbr a GrammarBindingResolver that resolves grammatical reductions into tree-node-heads */ public static Union create(Tree t, String s, Grammar.Bindings gbr) { - Tree.TreeFunctor red = (Tree.TreeFunctor)t.head(); + TreeFunctor red = (TreeFunctor)t.head(); MetaGrammarBindings.GrammarNode g = (MetaGrammarBindings.GrammarNode)red.invoke(t.children()); return g.build(s, gbr); } diff --git a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java index e3299cb..8f322a5 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java @@ -92,7 +92,7 @@ public class MetaGrammarBindings extends AnnotationGrammarBindings { try { Tree t = new CharParser(MetaGrammar.newInstance()).parse(new FileInputStream("tests/"+fileName)).expand1(); - Tree.TreeFunctor red = (Tree.TreeFunctor)t.head(); + TreeFunctor red = (TreeFunctor)t.head(); String oldprefix = prefix; prefix = as; GrammarNode gn = (GrammarNode)red.invoke(t); @@ -394,7 +394,7 @@ public class MetaGrammarBindings extends AnnotationGrammarBindings { } public Context(Tree t, Grammar.Bindings rm) { this.rm = rm; - Tree.TreeFunctor red = (Tree.TreeFunctor)t.head(); + TreeFunctor red = (TreeFunctor)t.head(); this.grammar = (GrammarNode)red.invoke(t); } public Union peek(String name) { return map.get(name); } diff --git a/src/edu/berkeley/sbp/misc/Demo.java b/src/edu/berkeley/sbp/misc/Demo.java index b118bbf..a9601b9 100644 --- a/src/edu/berkeley/sbp/misc/Demo.java +++ b/src/edu/berkeley/sbp/misc/Demo.java @@ -46,7 +46,7 @@ public class Demo { Tree tree = mathParser.parse(new CharInput(new StringReader(s[1]))).expand1(); // below is ugly voodoo which will go away very soon. ignore it. - Tree.TreeFunctor tf = (Tree.TreeFunctor)tree.head(); + TreeFunctor tf = (TreeFunctor)tree.head(); Math.Expr e = (Math.Expr)tf.invoke(tree); // above is ugly voodoo which will go away very soon. ignore it. diff --git a/src/edu/berkeley/sbp/util/GraphViz.java b/src/edu/berkeley/sbp/util/GraphViz.java index b3132d7..b6db224 100644 --- a/src/edu/berkeley/sbp/util/GraphViz.java +++ b/src/edu/berkeley/sbp/util/GraphViz.java @@ -145,9 +145,9 @@ public class GraphViz { } public static interface ToGraphViz { - public Node toGraphViz(GraphViz gv); - public boolean isTransparent(); - public boolean isHidden(); + Node toGraphViz(GraphViz gv); + boolean isTransparent(); + boolean isHidden(); } public void show() throws IOException {