a few tweaks to the Haskell interface
[sbp.git] / src / edu / berkeley / sbp / haskell / SBP.lhs
index c1d3efb..4cc3d26 100644 (file)
@@ -17,6 +17,7 @@ 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;
@@ -32,8 +33,16 @@ import JavaText;
 import JavaTypes;
 import Data.Int;
 import Invocation;
+-}
+import Foreign.JavaVM.Lib.Class_java_lang_System;
+import Foreign.JavaVM.Lib.Class_java_lang_String;
+import TestCallback_JVM;
+import Foreign.JavaVM;
+import Platform.JavaVM;
+import Data.Witness;
+import Control.Concurrent;
+import System.IO;
 #endif
---import Text.PrettyPrint.HughesPJ
 import Text.PrettyPrint.Leijen
 
 data Location = Location Int Int
@@ -119,17 +128,17 @@ parseFile f = do f' <- packJString f
 ------------------------------------------------------------------------------
 #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
+instance SubJavaClassMarker
+    Header_edu_berkeley_sbp_Tree.Class_Jedu_berkeley_sbp_Tree
+    Header_HaskellHelper.Class_Jedu_berkeley_sbp_Tree
 
-  parseFile ::
+parseFile ::
    [String] ->   -- class path
    String   ->   -- grammar *.g file
    String   ->   -- file to be parsed
    IO Tree
 
-  parseFile classPath grammarFile inputFile =
+parseFile classPath grammarFile inputFile =
      runJVM classPath
         ((do class_JHaskellHelper
              s1   <- new_JString_ArrayJchar $ toJavaString grammarFile
@@ -139,12 +148,15 @@ parseFile f = do f' <- packJString f
              return t
           ) :: JVM Tree)
 
-  haskifyTree t = 
+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))
+         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 []