checkpoint
authoradam <adam@megacz.com>
Sun, 27 May 2007 21:02:19 +0000 (14:02 -0700)
committeradam <adam@megacz.com>
Sun, 27 May 2007 21:02:19 +0000 (14:02 -0700)
darcs-hash:20070527210219-5007d-6cdddd978d6022300e871409d9431baba1153988.gz

Makefile
src/Doc.lhs
src/FromTree.lhs
src/Html.lhs
src/SBP.lhs [deleted file]
src/Wix.lhs

index 007ac4b..9966c34 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,9 @@
+sbp     = $(shell pwd)/sbp/
+
+lambdavm_jars  = $(ghcroot)/rts/HSrts.jar
+lambdavm_jars += $(ghcroot)/libraries/base/HSbase.jar
+lambdavm_jars += $(ghcroot)/libraries/stm/HSstm.jar
+
 ghcroot = /usr/local/brian/ghc
 pwd     = $(shell pwd)
 ghc     = $(ghcroot)/compiler/ghc-inplace -fallow-undecidable-instances -fallow-overlapping-instances
 ghcroot = /usr/local/brian/ghc
 pwd     = $(shell pwd)
 ghc     = $(ghcroot)/compiler/ghc-inplace -fallow-undecidable-instances -fallow-overlapping-instances
@@ -5,7 +11,13 @@ ghc    += -fglasgow-exts -cpp -hidir $(pwd)/build/hi -i$(pwd)/build/hi -odir $(p
 ghclibs = $(ghcroot)/rts/HSrts.jar:$(ghcroot)/libraries/base/HSbase.jar:$(ghcroot)/libraries/stm/HSstm.jar
 
 java =  java -Xmx800m
 ghclibs = $(ghcroot)/rts/HSrts.jar:$(ghcroot)/libraries/base/HSbase.jar:$(ghcroot)/libraries/stm/HSstm.jar
 
 java =  java -Xmx800m
-java += $(profile) -cp $(ghclibs):lib/edu.berkeley.sbp.jar:build/class
+java += $(profile) -cp $(ghclibs):$(sbp)/edu.berkeley.sbp.jar:build/class
+
+$(sbp):
+       darcs get --repo-name=$@ http://research.cs.berkeley.edu/project/sbp/edu.berkeley.sbp 
+
+$(sbp)/edu.berkeley.sbp.jar: $(sbp)
+       cd $(sbp); make edu.berkeley.sbp.jar
 
 run: build/class/Main.class build/class/Tib.class
        $(java) HaskellHelper xt html
 
 run: build/class/Main.class build/class/Tib.class
        $(java) HaskellHelper xt html
@@ -30,23 +42,24 @@ docs:
 debug: build/class/Main.class build/class/Tib.class
        $(java) -Dsbp.verbose=true HaskellHelper xt html
 
 debug: build/class/Main.class build/class/Tib.class
        $(java) -Dsbp.verbose=true HaskellHelper xt html
 
-wix.jar: build/class/Main.class build/class/Tib.class
+wix.jar: build/class/Main.class build/class/Tib.class $(sbp)/edu.berkeley.sbp.jar
        rm -rf tmp
        mkdir tmp
        rm -rf tmp
        mkdir tmp
-       cd build/class; for A in $(ghcroot)/rts/HSrts.jar $(ghcroot)/libraries/base/HSbase.jar $(ghcroot)/libraries/stm/HSstm.jar ../../lib/edu.berkeley.sbp.jar; \
+       cd build/class; for A in $(lambdavm_jars) ../../$(sbp)/edu.berkeley.sbp.jar; \
          do jar xvf $$A; done
        echo 'Main-Class: HaskellHelper' > build/manifest
        cd build/class; jar cvmf ../manifest ../../wix.jar .
 
          do jar xvf $$A; done
        echo 'Main-Class: HaskellHelper' > build/manifest
        cd build/class; jar cvmf ../manifest ../../wix.jar .
 
-build/class/Tib.class: $(shell find src -name \*.java)
-       javac -d build/class -cp lib/edu.berkeley.sbp.jar $(shell find src -name \*.java)
+build/class/Tib.class: $(shell find src -name \*.java) $(sbp)/edu.berkeley.sbp.jar
+       javac -d build/class -cp $(sbp)/edu.berkeley.sbp.jar $(shell find src -name \*.java)
 
 
-build/class/Main.class: $(shell find src -name \*.lhs)
+build/class/Main.class: $(shell find src -name \*.lhs) $(sbp)/edu.berkeley.sbp.jar
        mkdir -p build/class/Text/PrettyPrint
        mkdir -p build/class/Text/PrettyPrint
+       mkdir -p build/class/Edu/Berkeley/SBP/Haskell/
        mkdir -p build/hi
        cd src; $(ghc) -c -java Util.lhs
        cd src; $(ghc) -c -java Text/PrettyPrint/Leijen.hs
        mkdir -p build/hi
        cd src; $(ghc) -c -java Util.lhs
        cd src; $(ghc) -c -java Text/PrettyPrint/Leijen.hs
-       cd src; $(ghc) -c -java SBP.lhs
+       cd src; $(ghc) -c -java $(sbp)/src/edu/berkeley/sbp/haskell/SBP.lhs
        cd src; $(ghc) -c -java FromTree.lhs
        cd src; $(ghc) -c -java Doc.lhs
        cd src; $(ghc) -c -java Html.lhs
        cd src; $(ghc) -c -java FromTree.lhs
        cd src; $(ghc) -c -java Doc.lhs
        cd src; $(ghc) -c -java Html.lhs
index a36d367..5890439 100644 (file)
@@ -4,7 +4,7 @@ where
 import Numeric
 import Data.Bits
 import Data.Char
 import Numeric
 import Data.Bits
 import Data.Char
-import SBP
+import Edu.Berkeley.Sbp.Haskell.SBP
 import Util
 import FromTree
 import qualified Text.PrettyPrint.Leijen as PP
 import Util
 import FromTree
 import qualified Text.PrettyPrint.Leijen as PP
index aca7ef6..9b7066e 100644 (file)
@@ -1,7 +1,7 @@
 \begin{code}
 module FromTree
 where
 \begin{code}
 module FromTree
 where
-import SBP
+import Edu.Berkeley.Sbp.Haskell.SBP
 
 class FromTree a where
  fromTree  :: Tree   -> a
 
 class FromTree a where
  fromTree  :: Tree   -> a
index e244bca..5d7a8c6 100644 (file)
@@ -1,7 +1,7 @@
 \begin{code}
 module Html
 where
 \begin{code}
 module Html
 where
-import SBP
+import Edu.Berkeley.Sbp.Haskell.SBP
 import FromTree
 import Doc
 import List(isSuffixOf,isPrefixOf)
 import FromTree
 import Doc
 import List(isSuffixOf,isPrefixOf)
diff --git a/src/SBP.lhs b/src/SBP.lhs
deleted file mode 100644 (file)
index de32f62..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-\begin{code}
---
--- These bindings are highly experimental and subject to change
--- without notice.  You've been warned.
---
-module SBP(Tree(Tree),Location(Location),Region(Region),parseFile,prettyPrintTree,coalesceFlatHeadlessNodes)
-where
-
-#if defined(java_HOST_OS)
-import Foreign
-import Foreign.Java
-#define CONCAT(x,y) x/**/y
-#define DEFINE_OBJECT(s,name) \
-data CONCAT(name,_); \
-type name = JObject CONCAT(name,_); \
-foreign import jvm s CONCAT(_,name) :: JClass; \
-instance JType_ CONCAT(name,_) where jClass_ _ = CONCAT(_,name);
-#else
-import Header_Java;
-import Class_HaskellHelper;
-import Class_java_lang_Object;
-import Class_java_lang_Class;
-import Class_java_lang_String;
-import Class_edu_berkeley_sbp_Tree;
-import Header_edu_berkeley_sbp_Tree;
-import JVM_HaskellHelper;
-import Header_HaskellHelper;
-import TypedString;
-import JVMBridge;
-import JavaText;
-import JavaTypes;
-import Data.Int;
-import Invocation;
-#endif
---import Text.PrettyPrint.HughesPJ
-import Text.PrettyPrint.Leijen
-
-data Location = Location Int Int
-data Region   = Region Location Location
-
-data Tree     = Tree String [Tree] Region
-instance Show Tree
- where
-  show t@(Tree _ _ _) = show $ prettyPrintTree $ t
-
-coalesceFlatHeadlessNodes t@(Tree s children r)
-  | s==[], flat t = Tree (concat $ map (\(Tree s _ _) -> s) children) [] r
-  | otherwise     = Tree s (map coalesceFlatHeadlessNodes children) r
- where
-  flat (Tree _ children _) = not (any id $ map notFlatComponent children)
-  notFlatComponent (Tree _ [] _) = False
-  notFlatComponent (Tree _ _  _) = True
-
-fsep = fillSep
-prettyPrintTree (Tree "" []       _) = empty
-prettyPrintTree (Tree s  []       _) = text s
-prettyPrintTree (Tree [] children _) = prettyPrintTreeList children
-prettyPrintTree (Tree s  children _) = (text (s++":")) <$$> (prettyPrintTreeList children)
-prettyPrintTreeList []               = text "{}"
-prettyPrintTreeList children   
-    | allsingles children = text $ "\"" ++ (concatMap (\(Tree s _ _) -> s) children) ++ "\""
-    | otherwise           = hang 2 $
-                            (text "{")
-                            <+> 
-                               (group
-                                ((fsep $ map (group . prettyPrintTree) children)
-                                 <+>
-                                 (text "}")))
-allsingles = all (\(Tree s c _) -> (length s)==1 && (length c)==0)
-
-nullRegion = (Region (Location 0 0) (Location 0 0))
-
-
-
-------------------------------------------------------------------------------
-#if defined(java_HOST_OS)
-foreign import jvm type "edu.berkeley.sbp.Tree" JTree#
-data JTree = JTree JTree#
-foreign import jvm type "java.lang.Object" Object#
-data Object = Object Object#
-foreign import jvm safe "edu.berkeley.sbp.misc.RegressionTests.main" regressionTests :: IO ()
-foreign import jvm safe "HaskellHelper.help" haskellHelper :: JString -> IO JTree
-foreign import jvm safe "HaskellHelper.isNull" isNull :: Object -> IO Bool
-foreign import jvm safe "getHead" getHead :: JTree -> IO Object
-foreign import jvm safe "child" getChild :: JTree -> Int32 -> IO JTree
-foreign import jvm safe "size" size :: JTree -> IO Int32
-foreign import jvm safe "toString" jtoString :: Object -> IO JString
-
-toString o  = do isn <- isNull o
-                 if isn then return ""
-                        else do str <- jtoString o
-                                return (unpackJString str)
-
-         
-haskify :: JTree -> IO Tree
-haskify t =
-  do head <- getHead t
-     str  <- toString head
-     numChildren <- size t
-     children    <- if numChildren == 0
-                        then do return []
-                        else do children <- mapM (\i -> getChild t i)
-                                              $ take (fromIntegral numChildren)
-                                                $ iterate (+1) 0
-                                h        <- mapM haskify children
-                                return h
-     return $ Tree str children nullRegion
-
-parseFile ::
- String   ->   -- file to be parsed
- IO Tree
-
-parseFile f = do f' <- packJString f
-                 tree <- haskellHelper f'
-                 x <- haskify tree
-                 return x
-
-------------------------------------------------------------------------------
-#else
-  -- Why do I need this?
-  instance SubJavaClassMarker
-      Header_edu_berkeley_sbp_Tree.Class_Jedu_berkeley_sbp_Tree
-      Header_HaskellHelper.Class_Jedu_berkeley_sbp_Tree
-
-  parseFile ::
-   [String] ->   -- class path
-   String   ->   -- grammar *.g file
-   String   ->   -- file to be parsed
-   IO Tree
-
-  parseFile classPath grammarFile inputFile =
-     runJVM classPath
-        ((do class_JHaskellHelper
-             s1   <- new_JString_ArrayJchar $ toJavaString grammarFile
-             s2   <- new_JString_ArrayJchar $ toJavaString inputFile
-             tree <- main_JHaskellHelper_JString_JString (s1, s2)
-             t <- haskifyTree tree
-             return t
-          ) :: JVM Tree)
-
-  haskifyTree t = 
-    ((do class_JHaskellHelper
-         class_JTree
-         head <- getHead_JTree t ()
-         isNull <- getIsNothing head
-         str  <- if isNull then (return "") else (toString_JObject ((castTLRef head) :: Jjava_lang_Object) () >>= getStringUTF >>= \x -> return (showUTF8 x))
-         numChildren <- size_JTree t()
-         children    <- if numChildren == 0
-                        then do return []
-                        else do children <- mapM (\i -> child_JTree_Jint t ((fromIntegral i)::Int32))
-                                              $ take (fromIntegral numChildren)
-                                                $ iterate (+1) 0
-                                h        <- mapM (\c -> haskifyTree (castTLRef c)) children
-                                return h
-         return $ Tree str children nullRegion
-      ) :: JVM Tree)
-
-#endif
-\end{code}
index e969aab..f71a715 100644 (file)
@@ -1,7 +1,7 @@
 \begin{code}
 module Wix(main')
 where
 \begin{code}
 module Wix(main')
 where
-import SBP
+import Edu.Berkeley.Sbp.Haskell.SBP
 import FromTree
 import Doc
 import Html
 import FromTree
 import Doc
 import Html