summaryrefslogtreecommitdiff
path: root/src/GF/GFCC/API.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-06-25 16:43:48 +0000
committeraarne <aarne@cs.chalmers.se>2008-06-25 16:43:48 +0000
commitb96b36f43de3e2f8b58d5f539daa6f6d47f25870 (patch)
tree0992334be13cec6538a1dea22fbbf26ad6bdf224 /src/GF/GFCC/API.hs
parentfe367412e0aeb4ad5c02de68e6eca382e0f96984 (diff)
removed src for 2.9
Diffstat (limited to 'src/GF/GFCC/API.hs')
-rw-r--r--src/GF/GFCC/API.hs140
1 files changed, 0 insertions, 140 deletions
diff --git a/src/GF/GFCC/API.hs b/src/GF/GFCC/API.hs
deleted file mode 100644
index c266a5553..000000000
--- a/src/GF/GFCC/API.hs
+++ /dev/null
@@ -1,140 +0,0 @@
-----------------------------------------------------------------------
--- |
--- Module : GFCCAPI
--- Maintainer : Aarne Ranta
--- Stability : (stable)
--- Portability : (portable)
---
--- > CVS $Date:
--- > CVS $Author:
--- > CVS $Revision:
---
--- Reduced Application Programmer's Interface to GF, meant for
--- embedded GF systems. AR 19/9/2007
------------------------------------------------------------------------------
-
-module GF.GFCC.API where
-
-import GF.GFCC.Linearize
-import GF.GFCC.Generate
-import GF.GFCC.Macros
-import GF.GFCC.DataGFCC
-import GF.GFCC.CId
-import GF.GFCC.Raw.ConvertGFCC
-import GF.GFCC.Raw.ParGFCCRaw
-import GF.Command.PPrTree
-
-import GF.Data.ErrM
-
-import GF.Parsing.FCFG
-
---import GF.Data.Operations
---import GF.Infra.UseIO
-import qualified Data.Map as Map
-import System.Random (newStdGen)
-import System.Directory (doesFileExist)
-
-
--- This API is meant to be used when embedding GF grammars in Haskell
--- programs. The embedded system is supposed to use the
--- .gfcc grammar format, which is first produced by the gf program.
-
----------------------------------------------------
--- Interface
----------------------------------------------------
-
-data MultiGrammar = MultiGrammar {gfcc :: GFCC}
-type Language = String
-type Category = String
-type Tree = Exp
-
-file2grammar :: FilePath -> IO MultiGrammar
-
-linearize :: MultiGrammar -> Language -> Tree -> String
-parse :: MultiGrammar -> Language -> Category -> String -> [Tree]
-
-linearizeAll :: MultiGrammar -> Tree -> [String]
-linearizeAllLang :: MultiGrammar -> Tree -> [(Language,String)]
-
-parseAll :: MultiGrammar -> Category -> String -> [[Tree]]
-parseAllLang :: MultiGrammar -> Category -> String -> [(Language,[Tree])]
-
-generateAll :: MultiGrammar -> Category -> [Tree]
-generateRandom :: MultiGrammar -> Category -> IO [Tree]
-generateAllDepth :: MultiGrammar -> Category -> Maybe Int -> [Tree]
-
-readTree :: MultiGrammar -> String -> Tree
-showTree :: Tree -> String
-
-languages :: MultiGrammar -> [Language]
-categories :: MultiGrammar -> [Category]
-
-startCat :: MultiGrammar -> Category
-
----------------------------------------------------
--- Implementation
----------------------------------------------------
-
-file2grammar f = do
- gfcc <- file2gfcc f
- return (MultiGrammar gfcc)
-
-file2gfcc f = do
- s <- readFileIf f
- g <- parseGrammar s
- return $ toGFCC g
-
-linearize mgr lang = GF.GFCC.Linearize.linearize (gfcc mgr) (CId lang)
-
-parse mgr lang cat s =
- case lookParser (gfcc mgr) (CId lang) of
- Nothing -> error "no parser"
- Just pinfo -> case parseFCF "bottomup" pinfo (CId cat) (words s) of
- Ok x -> x
- Bad s -> error s
-
-linearizeAll mgr = map snd . linearizeAllLang mgr
-linearizeAllLang mgr t =
- [(lang,linearThis mgr lang t) | lang <- languages mgr]
-
-parseAll mgr cat = map snd . parseAllLang mgr cat
-
-parseAllLang mgr cat s =
- [(lang,ts) | lang <- languages mgr, let ts = parse mgr lang cat s, not (null ts)]
-
-generateRandom mgr cat = do
- gen <- newStdGen
- return $ genRandom gen (gfcc mgr) (CId cat)
-
-generateAll mgr cat = generate (gfcc mgr) (CId cat) Nothing
-generateAllDepth mgr cat = generate (gfcc mgr) (CId cat)
-
-readTree _ = pTree
-
-showTree = prExp
-
-prIdent :: CId -> String
-prIdent (CId s) = s
-
-abstractName mgr = prIdent (absname (gfcc mgr))
-
-languages mgr = [l | CId l <- cncnames (gfcc mgr)]
-
-categories mgr = [c | CId c <- Map.keys (cats (abstract (gfcc mgr)))]
-
-startCat mgr = lookStartCat (gfcc mgr)
-
-emptyMultiGrammar = MultiGrammar emptyGFCC
-
------------- for internal use only
-
-linearThis = GF.GFCC.API.linearize
-
-err f g ex = case ex of
- Ok x -> g x
- Bad s -> f s
-
-readFileIf f = do
- b <- doesFileExist f
- if b then readFile f
- else putStrLn ("file " ++ f ++ " not found") >> return ""