summaryrefslogtreecommitdiff
path: root/src-3.0/PGF.hs
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2008-05-30 11:15:33 +0000
committerkrasimir <krasimir@chalmers.se>2008-05-30 11:15:33 +0000
commit8bb0c32a9cf2cbad0375ab5886b7f2be37109477 (patch)
tree2290b07d391a1da4e94ee367b445a6b2f64ca2cd /src-3.0/PGF.hs
parent1172539a9544ed999c565053b79cf6a30ec14de4 (diff)
replace GFCC with PGF in (almost) all places
Diffstat (limited to 'src-3.0/PGF.hs')
-rw-r--r--src-3.0/PGF.hs60
1 files changed, 27 insertions, 33 deletions
diff --git a/src-3.0/PGF.hs b/src-3.0/PGF.hs
index 9e4ed7aab..9e0a6007e 100644
--- a/src-3.0/PGF.hs
+++ b/src-3.0/PGF.hs
@@ -13,7 +13,7 @@
-- embedded GF systems. AR 19/9/2007
-----------------------------------------------------------------------------
-module PGF where
+module PGF(module PGF, PGF, emptyPGF) where
import PGF.CId
import PGF.Linearize
@@ -43,51 +43,46 @@ import qualified Text.ParserCombinators.ReadP as RP
-- Interface
---------------------------------------------------
-data MultiGrammar = MultiGrammar {gfcc :: GFCC}
type Language = String
type Category = String
type Tree = Exp
-file2grammar :: FilePath -> IO MultiGrammar
+file2pgf :: FilePath -> IO PGF
-linearize :: MultiGrammar -> Language -> Tree -> String
-parse :: MultiGrammar -> Language -> Category -> String -> [Tree]
+linearize :: PGF -> Language -> Tree -> String
+parse :: PGF -> Language -> Category -> String -> [Tree]
-linearizeAll :: MultiGrammar -> Tree -> [String]
-linearizeAllLang :: MultiGrammar -> Tree -> [(Language,String)]
+linearizeAll :: PGF -> Tree -> [String]
+linearizeAllLang :: PGF -> Tree -> [(Language,String)]
-parseAll :: MultiGrammar -> Category -> String -> [[Tree]]
-parseAllLang :: MultiGrammar -> Category -> String -> [(Language,[Tree])]
+parseAll :: PGF -> Category -> String -> [[Tree]]
+parseAllLang :: PGF -> Category -> String -> [(Language,[Tree])]
-generateAll :: MultiGrammar -> Category -> [Tree]
-generateRandom :: MultiGrammar -> Category -> IO [Tree]
-generateAllDepth :: MultiGrammar -> Category -> Maybe Int -> [Tree]
+generateAll :: PGF -> Category -> [Tree]
+generateRandom :: PGF -> Category -> IO [Tree]
+generateAllDepth :: PGF -> Category -> Maybe Int -> [Tree]
readTree :: String -> Tree
showTree :: Tree -> String
-languages :: MultiGrammar -> [Language]
-categories :: MultiGrammar -> [Category]
+languages :: PGF -> [Language]
+categories :: PGF -> [Category]
-startCat :: MultiGrammar -> Category
+startCat :: PGF -> Category
---------------------------------------------------
-- Implementation
---------------------------------------------------
-file2grammar f = do
- gfcc <- file2gfcc f
- return (MultiGrammar gfcc)
-
-file2gfcc f = do
+file2pgf f = do
s <- readFileIf f
g <- parseGrammar s
- return $ toGFCC g
+ return $! toPGF g
-linearize mgr lang = PGF.Linearize.linearize (gfcc mgr) (mkCId lang)
+linearize pgf lang = PGF.Linearize.linearize pgf (mkCId lang)
-parse mgr lang cat s =
- case lookParser (gfcc mgr) (mkCId lang) of
+parse pgf lang cat s =
+ case lookParser pgf (mkCId lang) of
Nothing -> error "no parser"
Just pinfo -> case parseFCF "bottomup" pinfo (mkCId cat) (words s) of
Ok x -> x
@@ -102,12 +97,12 @@ 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
+generateRandom pgf cat = do
gen <- newStdGen
- return $ genRandom gen (gfcc mgr) (mkCId cat)
+ return $ genRandom gen pgf (mkCId cat)
-generateAll mgr cat = generate (gfcc mgr) (mkCId cat) Nothing
-generateAllDepth mgr cat = generate (gfcc mgr) (mkCId cat)
+generateAll pgf cat = generate pgf (mkCId cat) Nothing
+generateAllDepth pgf cat = generate pgf (mkCId cat)
readTree s = case RP.readP_to_S (pExp False) s of
[(x,"")] -> x
@@ -158,15 +153,14 @@ ppExp isNested (EVar id) = PP.text (prCId id)
ppParens True = PP.parens
ppParens False = id
-abstractName mgr = prCId (absname (gfcc mgr))
+abstractName pgf = prCId (absname pgf)
-languages mgr = [prCId l | l <- cncnames (gfcc mgr)]
+languages pgf = [prCId l | l <- cncnames pgf]
-categories mgr = [prCId c | c <- Map.keys (cats (abstract (gfcc mgr)))]
+categories pgf = [prCId c | c <- Map.keys (cats (abstract pgf))]
-startCat mgr = lookStartCat (gfcc mgr)
+startCat pgf = lookStartCat pgf
-emptyMultiGrammar = MultiGrammar emptyGFCC
------------ for internal use only