(sep >> identifier >>= (return . (\ tv -> (tv,Klifted))))
coreCdefs :: Parser [Cdef]
-coreCdefs = sepBy1 coreCdef (symbol ";")
+coreCdefs = sepBy coreCdef (symbol ";")
coreCdef :: Parser Cdef
coreCdef = do
conAlt :: Parser Alt
conAlt = do
conName <- coreQualifiedCon
- tBinds <- many (parens coreAtTbind)
- whiteSpace -- necessary b/c otherwise we parse the next list as empty
- vBinds <- many (parens lambdaBind)
whiteSpace
+ (tBinds, vBinds) <- caseVarBinds
try (symbol "->")
rhs <- try coreFullExp
return $ Acon conName tBinds vBinds rhs
+caseVarBinds :: Parser ([Tbind], [Vbind])
+caseVarBinds = do
+ maybeFirstTbind <- optionMaybe coreAtTbind
+ case maybeFirstTbind of
+ Just tb -> do
+ (tbs,vbs) <- caseVarBinds
+ return (tb:tbs, vbs)
+ Nothing -> do
+ vbs <- many (parens lambdaBind)
+ return ([], vbs)
+
litAlt :: Parser Alt
litAlt = do
l <- parens coreLiteral
-{-# OPTIONS -Werror -Wall -fno-warn-missing-signatures #-}
+{-# OPTIONS -Wall -fno-warn-missing-signatures #-}
module Language.Core.Printer where
\begin{code}
{-# OPTIONS -Wall #-}
+import Control.Exception
import Control.Monad
-import Data.List
import Distribution.PackageDescription
import Distribution.Simple
import Distribution.Simple.LocalBuildInfo
main :: IO ()
main = do
- let hooks = defaultUserHooks {
+ let hooks = simpleUserHooks {
buildHook = build_primitive_sources
- $ buildHook defaultUserHooks
+ $ buildHook simpleUserHooks
}
defaultMainWithHooks hooks
\end{code}
r <- rawSystem "cmp" ["-s" {-quiet-}, source, target]
case r of
ExitSuccess -> removeFile source
- ExitFailure _ -> do try (removeFile target); renameFile source target
+ ExitFailure _ -> do (try :: IO () -> IO (Either IOException ())) (removeFile target); renameFile source target
\end{code}
\ No newline at end of file
author: Andrew Tolmach, Tim Chevalier, The GHC Team
maintainer: chevalier@alum.wellesley.edu
stability: alpha
-build-depends: base, containers, directory, filepath, mtl, parsec, pretty
+build-depends: base, containers, directory, filepath, mtl, parsec, pretty, syb
exposed-modules: Language.Core.Check, Language.Core.Dependencies, Language.Core.Core, Language.Core.Interp, Language.Core.Overrides, Language.Core.ParsecParser, Language.Core.Prep, Language.Core.Prims, Language.Core.Printer, Language.Core.Merge, Language.Core.ElimDeadCode, Language.Core.Encoding, Language.Core.Env
other-modules: Language.Core.PrimCoercions, Language.Core.PrimEnv, Language.Core.Utils, Language.Core.CoreUtils, Language.Core.Environments
-extensions: DeriveDataTypeable PatternGuards PatternSignatures
+extensions: DeriveDataTypeable PatternGuards RankNTypes ScopedTypeVariables
ghc-options: -Wall -O2
tested-with: GHC ==6.8.2
data-files: README
all: Handle.hs IO.hs Unicode.hs
- ../../../../compiler/ghc-inplace -c -fext-core -package-name base-extcore Handle.hs IO.hs Unicode.hs -cpp -i../
+ ghc -c -fext-core -package-name base-extcore Handle.hs IO.hs Unicode.hs -cpp -i../
clean:
rm -f *.hcr *.hi *.o