add Region to Scala representation of Tree
authorAdam Megacz <megacz@cs.berkeley.edu>
Sun, 23 Jan 2011 02:31:05 +0000 (18:31 -0800)
committerAdam Megacz <megacz@cs.berkeley.edu>
Sun, 23 Jan 2011 02:31:05 +0000 (18:31 -0800)
src/edu/berkeley/sbp/scala/SBP.scala

index c231646..f9afe4f 100644 (file)
@@ -1,21 +1,17 @@
 package edu.berkeley.sbp.scala
 package edu.berkeley.sbp.scala
+import edu.berkeley.sbp.Input.Location
+import edu.berkeley.sbp.Input.Region
 
 
-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*/) {
+case class Tree(val label:String, val children:IndexedSeq[Tree], val region:Option[Region[_]]) {
 
   def childrenFlat : Boolean =
     children.map((t:Tree) => children.length == 0).foldLeft(true)(_ && _)
 
   def coalesceFlatHeadlessNodes : Tree =
    if (label.equals("") && childrenFlat)
 
   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)
+      new Tree(children.map((t:Tree) => t.label).foldLeft("")(_ + _), Tree.emptyChildren, region)
    else
    else
-      new Tree(label, (children.map((t:Tree) => t.coalesceFlatHeadlessNodes)))
+      new Tree(label, (children.map((t:Tree) => t.coalesceFlatHeadlessNodes)), region)
 }
 
 object Tree {
 }
 
 object Tree {
@@ -30,7 +26,8 @@ object SBP {
         yield mkTree(t.child(i)))
       : _*
     )
         yield mkTree(t.child(i)))
       : _*
     )
-    return new Tree(t.getHead.toString, children)
+    val region = t.getRegion
+    return new Tree(t.getHead.toString, children, if (region==null) None else Some(region))
   }
 
 }
   }
 
 }