../src/edu/berkeley/sbp/meta/meta.g \
edu.berkeley.sbp.meta.MetaGrammar
-edu.berkeley.sbp.jar: $(shell find src -name \*.java)
+edu.berkeley.sbp.jar: $(shell find src -name \*.java -or -name \*.scala)
+ rm -rf bin
mkdir -p bin
- javac -cp javax.servlet.jar -d bin -sourcepath src $^
+ javac -cp javax.servlet.jar -d bin -sourcepath src `find src -name \*.java`
+ scalac -d bin -sourcepath src `find src -name \*.scala`
echo 'Main-Class: edu.berkeley.sbp.misc.CommandLine' > bin/manifest
cd bin; jar cmf manifest ../$@ .
#-Xlint:unchecked
+
javadoc:
rm -rf doc/api
mkdir -p doc/api
-- These bindings are highly experimental and subject to change
-- without notice. You've been warned.
--
+-- Warning: this is no longer maintained. It stopped working in mid-2009.
+--
module Edu_Berkeley_Sbp_Haskell_SBP(
Tree(Tree),Location(Location),Region(Region),parseFile,prettyPrintTree,coalesceFlatHeadlessNodes)
where
--- /dev/null
+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)
+ }
+
+}