Cabalize ext-core tools
[ghc-hetmet.git] / utils / ext-core / Language / Core / ParsecParser.hs
similarity index 95%
rename from utils/ext-core/ParsecParser.hs
rename to utils/ext-core/Language/Core/ParsecParser.hs
index 41a18a5..3fd3f17 100644 (file)
@@ -1,16 +1,17 @@
 {-# OPTIONS -Wall -fno-warn-missing-signatures #-}
 
-module ParsecParser (parseCore) where
+module Language.Core.ParsecParser (parseCore) where
 
-import Core
-import ParseGlue
-import Check
-import PrimCoercions
+import Language.Core.Core
+import Language.Core.Check
+import Language.Core.Encoding
+import Language.Core.PrimCoercions
 
 import Text.ParserCombinators.Parsec
 import qualified Text.ParserCombinators.Parsec.Token as P
 import Text.ParserCombinators.Parsec.Language
 import Data.Char
+import Data.List
 import Data.Ratio
 
 parseCore :: FilePath -> IO (Either ParseError Module)
@@ -491,6 +492,21 @@ defaultAlt = do
   rhs <- coreFullExp
   return $ Adefault rhs
 ----------------
+-- ugh
+splitModuleName mn = 
+   let decoded = zDecodeString mn
+       -- Triple ugh.
+       -- We re-encode the individual parts so that:
+       -- main:Foo_Bar.Quux.baz
+       -- prints as:
+       -- main:FoozuBarziQuux.baz
+       -- and not:
+       -- main:Foo_BarziQuux.baz
+       parts   = map zEncodeString $ filter (notElem '.') $ groupBy 
+                   (\ c1 c2 -> c1 /= '.' && c2 /= '.') 
+                 decoded in
+     (take (length parts - 1) parts, last parts)
+----------------
 extCore = P.makeTokenParser extCoreDef
 
 parens          = P.parens extCore