hets.hs revision 005e0f0c6b0cc898003b03801158c208f3071fc5
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder{-# LANGUAGE CPP #-}
c63ebf815c8a874525cf18670ad74847f7fc7b26Christian Maeder{- |
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederModule : $Id$
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederCopyright : (c) Uni Bremen 2003-2005
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederMaintainer : Christian.Maeder@dfki.de
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederStability : provisional
43b4c41fbb07705c9df321221ab9cb9832460407Christian MaederPortability : non-portable (imports Logic.Logic)
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
f4a2a20e49f41b2afa657e5e64d9e349c7faa091Christian MaederThe Main module of the Heterogeneous Tool Set.
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian Maeder It provides the main function to call (and not much more).
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maeder
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maeder-}
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder-- for interactice purposes use Test.hs
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maedermodule Main where
a1ed34933c266ce85066acb0d7b20c90cb8eb213Christian Maeder
c0c2380bced8159ff0297ece14eba948bd236471Christian Maederimport System.Environment (getArgs)
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich
b1f59a4ea7c96f4c03a4d7cfcb9c5e66871cfbbbChristian Maederimport Driver.Options
ad270004874ce1d0697fb30d7309f180553bb315Christian Maederimport Driver.AnaLib
4d56f2fa72e4aec20eb827c11ed49c8cbb7014bdChristian Maederimport Driver.WriteFn
4cb215739e9ab13447fa21162482ebe485b47455Christian Maeder
8ef75f1cc0437656bf622cec5ac9e8ea221da8f2Christian Maederimport Static.DevGraph
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder#ifndef NOOWLLOGIC
74eed04be26f549d2f7ca35c370e1c03879b28b1Christian Maederimport OWL.OWLAnalysis
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder#endif
3e8b136f23ed57d40ee617f49bcac37830b58cabChristian Maeder
ef9e8535c168d3f774d9e74368a2317a9eda5826Christian Maeder#ifdef UNI_PACKAGE
3e8b136f23ed57d40ee617f49bcac37830b58cabChristian Maederimport GUI.ShowGraph
ef9e8535c168d3f774d9e74368a2317a9eda5826Christian Maeder#else
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederimport Control.Monad ( when )
e593b89bfd4952698dc37feced21cefe869d87a2Christian Maeder#endif
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder#ifdef PROGRAMATICA
7cc09dd93962a2155c34d209d1d4cd7d7b838264Christian Maederimport Haskell.Haskell2DG
1aee4aaddde105264c1faf394d88e302c05094ffChristian Maeder#endif
1aee4aaddde105264c1faf394d88e302c05094ffChristian Maeder
51d769d55d88dfa88bdf54bee78d8fa85a2deba8Christian Maederimport Common.LibName
f041c9a6bda23de33a38490e35b831ae18d96b45Christian Maederimport Interfaces.DataTypes
7cc09dd93962a2155c34d209d1d4cd7d7b838264Christian Maederimport CMDL.ProcessScript
51d769d55d88dfa88bdf54bee78d8fa85a2deba8Christian Maederimport CMDL.DataTypes
1aee4aaddde105264c1faf394d88e302c05094ffChristian Maederimport PGIP.XMLparsing
1aee4aaddde105264c1faf394d88e302c05094ffChristian Maederimport PGIP.XMLstate (isRemote)
c3053d57f642ca507cdf79512e604437c4546cb9Christian Maeder
dcbd32289a7bdf1e6edd06c6ab0698c6a9dbf37aChristian Maederimport Maude.Maude2DG (anaMaudeFile)
f4a2a20e49f41b2afa657e5e64d9e349c7faa091Christian Maederimport LF.Twelf2DG (anaTwelfFile)
f4a2a20e49f41b2afa657e5e64d9e349c7faa091Christian Maederimport OMDoc.Import (anaOMDocFile)
dcbd32289a7bdf1e6edd06c6ab0698c6a9dbf37aChristian Maeder
05a62e84edac8c64de04f8349dee418598d216b9Christian Maedermain :: IO ()
05a62e84edac8c64de04f8349dee418598d216b9Christian Maedermain =
1aee4aaddde105264c1faf394d88e302c05094ffChristian Maeder getArgs >>= hetcatsOpts >>= \ opts ->
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder if isRemote opts || interactive opts
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder then cmdlRun opts >>= displayGraph "" opts . getMaybeLib . intState
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder else do
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder putIfVerbose opts 3 $ "Options: " ++ show opts
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder mapM_ (processFile opts) (infiles opts)
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederprocessFile :: HetcatsOpts -> FilePath -> IO ()
d54cd08a4cfa26256c38d8ed12c343adbfe1a0e3Christian MaederprocessFile opts file = do
23b4e542dca35852f58d1fb3f7d9078c1de5ab06Christian Maeder putIfVerbose opts 3 ("Processing input: " ++ file)
8a78868bae2ec6838c87366c35c57e109154c51eChristian Maeder res <- case guess file (intype opts) of
8cacad2a09782249243b80985f28e9387019fe40Christian Maeder#ifdef PROGRAMATICA
363939beade943a02b31004cea09dec34fa8a6d9Christian Maeder HaskellIn -> anaHaskellFile opts file
a7c27282e71cf4505026645f96d4f5cb8a284e32Christian Maeder#endif
363939beade943a02b31004cea09dec34fa8a6d9Christian Maeder#ifndef NOOWLLOGIC
014dc30f64ec25e4790cca987d4d1e6635430510Christian Maeder OWLIn -> parseOWL file >>= structureAna file opts
f04e8f3ff56405901be968fd4c6e9769239f1a9bKlaus Luettich#endif
6aea82c63ba1d2efc0329bc784a14e521469ec20Christian Maeder PrfIn -> anaLibReadPrfs opts file
6aea82c63ba1d2efc0329bc784a14e521469ec20Christian Maeder ProofCommand -> do
431d34c7007a787331c4e5ec997badb0f8190fc7Christian Maeder st <- cmdlProcessFile opts file
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder return . getMaybeLib $ intState st
498aa48bdb931ab50990d3b74318a5db2312186cChristian Maeder MaudeIn -> anaMaudeFile opts file
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder TwelfIn -> anaTwelfFile opts file
6dc9bc98d0854fe2e3dd3bfc4275096a0c28ee1cChristian Maeder OmdocIn -> anaOMDocFile opts file
6dc9bc98d0854fe2e3dd3bfc4275096a0c28ee1cChristian Maeder CommonLogicIn -> anaLibExt (opts { defLogic = "CommonLogic" }) file
6dc9bc98d0854fe2e3dd3bfc4275096a0c28ee1cChristian Maeder emptyLibEnv emptyDG
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder _ -> anaLib opts file
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder case res of
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder Just (ln, nEnv) ->
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder writeSpecFiles opts file nEnv ln $ lookupDGraph ln nEnv
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder _ -> return ()
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder displayGraph file opts res
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederdisplayGraph :: FilePath -> HetcatsOpts -> Maybe (LibName, LibEnv) -> IO ()
9e748851c150e1022fb952bab3315e869aaf0214Christian Maeder#ifdef UNI_PACKAGE
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian MaederdisplayGraph file opts res = case guiType opts of
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder NoGui -> return ()
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder UseGui -> showGraph file opts res
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder#else
ca074a78b8dcccbb8c419586787882f98d0c6163Christian MaederdisplayGraph _ opts _ = when (guiType opts == UseGui)
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder $ fail $ "No graph display interface; \n"
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder ++ "UNI_PACKAGE option has been "
a5e5b8c3e5c11177e5034ef2423813a5d28979edChristian Maeder ++ "disabled during compilation of Hets"
bc8cbf12aa172bf5673b92a9e7a0151d4aa4c315Christian Maeder#endif
2d130d212db7208777ca896a7ecad619a8944971Christian Maeder