From: Adam Megacz Date: Sun, 23 Jan 2011 02:31:05 +0000 (-0800) Subject: add Region to Scala representation of Tree X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=6e0fb74d680ddcb870b5cb25f6677a05ae05b0f3 add Region to Scala representation of Tree --- diff --git a/src/edu/berkeley/sbp/scala/SBP.scala b/src/edu/berkeley/sbp/scala/SBP.scala index c231646..f9afe4f 100644 --- a/src/edu/berkeley/sbp/scala/SBP.scala +++ b/src/edu/berkeley/sbp/scala/SBP.scala @@ -1,21 +1,17 @@ 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) - new Tree(children.map((t:Tree) => t.label).foldLeft("")(_ + _), Tree.emptyChildren) + new Tree(children.map((t:Tree) => t.label).foldLeft("")(_ + _), Tree.emptyChildren, region) else - new Tree(label, (children.map((t:Tree) => t.coalesceFlatHeadlessNodes))) + new Tree(label, (children.map((t:Tree) => t.coalesceFlatHeadlessNodes)), region) } object Tree { @@ -30,7 +26,8 @@ object SBP { 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)) } }