+package edu.berkeley.sbp.scala
+
+class Location(val row:Int, val col:Int) {
+}
+
+class Region(val start:Location, val end:Location) {
+}
+
+case class Tree(val label:String, val children:IndexedSeq[Tree] /*, val region:Region*/) {
+
+ def childrenFlat : Boolean =
+ children.map((t:Tree) => children.length == 0).foldLeft(true)(_ && _)
+
+ def coalesceFlatHeadlessNodes : Tree =
+ if (label.equals("") && childrenFlat)
+ new Tree(children.map((t:Tree) => t.label).foldLeft("")(_ + _), Tree.emptyChildren)
+ else
+ new Tree(label, (children.map((t:Tree) => t.coalesceFlatHeadlessNodes)))
+}
+
+object Tree {
+ val emptyChildren = IndexedSeq[Tree]()
+}
+
+object SBP {
+
+ def mkTree(t:edu.berkeley.sbp.Tree[String]) : Tree = {
+ val children = scala.collection.immutable.IndexedSeq[Tree](
+ (for(i <- 0 until t.size())
+ yield mkTree(t.child(i)))
+ : _*
+ )
+ return new Tree(t.getHead.toString, children)
+ }
+
+}