summaryrefslogtreecommitdiff
path: root/src/PGF/Data.hs
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2009-02-07 23:31:22 +0000
committerkrasimir <krasimir@chalmers.se>2009-02-07 23:31:22 +0000
commit5c2ce87cde2dee9f6af65ed5e63ee7d9f072f399 (patch)
tree3e0dd3ea1537b34657ec1c2bdc6223ed7ebfb10a /src/PGF/Data.hs
parent14c13cb08077290643cb19538c7d0b3b50dc6df0 (diff)
PMCFG pretty printer
Diffstat (limited to 'src/PGF/Data.hs')
-rw-r--r--src/PGF/Data.hs56
1 files changed, 2 insertions, 54 deletions
diff --git a/src/PGF/Data.hs b/src/PGF/Data.hs
index 047b5ec46..5aba8cdfa 100644
--- a/src/PGF/Data.hs
+++ b/src/PGF/Data.hs
@@ -1,15 +1,14 @@
-module PGF.Data (module PGF.Data, module PGF.Expr, module PGF.Type) where
+module PGF.Data (module PGF.Data, module PGF.Expr, module PGF.Type, module PGF.PMCFG) where
import PGF.CId
import PGF.Expr hiding (Value, Env)
import PGF.Type
+import PGF.PMCFG
import qualified Data.Map as Map
import qualified Data.Set as Set
import qualified Data.IntMap as IntMap
import Data.List
-import Data.Array
-import Data.Array.Unboxed
-- internal datatypes for PGF
@@ -54,59 +53,8 @@ data Term =
| TM String
deriving (Eq,Ord,Show)
-data Tokn =
- KS String
- | KP [String] [Alternative]
- deriving (Eq,Ord,Show)
-
-data Alternative =
- Alt [String] [String]
- deriving (Eq,Ord,Show)
-
-
-type FCat = Int
-type FIndex = Int
-type FPointPos = Int
-data FSymbol
- = FSymCat {-# UNPACK #-} !Int {-# UNPACK #-} !FIndex
- | FSymLit {-# UNPACK #-} !Int {-# UNPACK #-} !FIndex
- | FSymTok Tokn
- deriving (Eq,Ord,Show)
-type Profile = [Int]
-data Production
- = FApply {-# UNPACK #-} !FunId [FCat]
- | FCoerce {-# UNPACK #-} !FCat
- | FConst Tree String
- deriving (Eq,Ord,Show)
-data FFun = FFun CId [Profile] {-# UNPACK #-} !(UArray FIndex SeqId) deriving (Eq,Ord,Show)
-type FSeq = Array FPointPos FSymbol
-type FunId = Int
-type SeqId = Int
-
-data ParserInfo
- = ParserInfo { functions :: Array FunId FFun
- , sequences :: Array SeqId FSeq
- , productions :: IntMap.IntMap (Set.Set Production)
- , startCats :: Map.Map CId [FCat]
- , totalCats :: {-# UNPACK #-} !FCat
- }
-
-
-fcatString, fcatInt, fcatFloat, fcatVar :: Int
-fcatString = (-1)
-fcatInt = (-2)
-fcatFloat = (-3)
-fcatVar = (-4)
-
--- print statistics
-statGFCC :: PGF -> String
-statGFCC pgf = unlines [
- "Abstract\t" ++ prCId (absname pgf),
- "Concretes\t" ++ unwords (map prCId (cncnames pgf)),
- "Categories\t" ++ unwords (map prCId (Map.keys (cats (abstract pgf))))
- ]
-- merge two GFCCs; fails is differens absnames; priority to second arg