diff options
| author | krasimir <krasimir@chalmers.se> | 2008-05-30 13:07:11 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2008-05-30 13:07:11 +0000 |
| commit | 150940b8704a6a61ed08c6bbd99ba4b05a42c59c (patch) | |
| tree | 277a97a4a3ba770e49e51a5526cf2e46bc2c6e1a /src-3.0/PGF | |
| parent | 8bb0c32a9cf2cbad0375ab5886b7f2be37109477 (diff) | |
cleaned up and documented PGF API
Diffstat (limited to 'src-3.0/PGF')
| -rw-r--r-- | src-3.0/PGF/CId.hs | 4 | ||||
| -rw-r--r-- | src-3.0/PGF/Data.hs | 2 | ||||
| -rw-r--r-- | src-3.0/PGF/Parsing/FCFG.hs | 23 | ||||
| -rw-r--r-- | src-3.0/PGF/Raw/Convert.hs | 1 |
4 files changed, 18 insertions, 12 deletions
diff --git a/src-3.0/PGF/CId.hs b/src-3.0/PGF/CId.hs index 8853d3d5b..161529308 100644 --- a/src-3.0/PGF/CId.hs +++ b/src-3.0/PGF/CId.hs @@ -2,13 +2,17 @@ module PGF.CId (CId(..), wildCId, mkCId, prCId) where import Data.ByteString.Char8 as BS +-- | An abstract data type that represents +-- function identifier in PGF. newtype CId = CId BS.ByteString deriving (Eq,Ord,Show) wildCId :: CId wildCId = CId (BS.singleton '_') +-- | Creates a new identifier from 'String' mkCId :: String -> CId mkCId s = CId (BS.pack s) +-- | Renders the identifier as 'String' prCId :: CId -> String prCId (CId x) = BS.unpack x diff --git a/src-3.0/PGF/Data.hs b/src-3.0/PGF/Data.hs index 8c836c893..95ea2e1a7 100644 --- a/src-3.0/PGF/Data.hs +++ b/src-3.0/PGF/Data.hs @@ -10,6 +10,8 @@ import Data.Array -- internal datatypes for PGF +-- | An abstract data type representing multilingual grammar +-- in Portable Grammar Format. data PGF = PGF { absname :: CId , cncnames :: [CId] , diff --git a/src-3.0/PGF/Parsing/FCFG.hs b/src-3.0/PGF/Parsing/FCFG.hs index 81fc6a3e4..a7453fff8 100644 --- a/src-3.0/PGF/Parsing/FCFG.hs +++ b/src-3.0/PGF/Parsing/FCFG.hs @@ -28,16 +28,17 @@ import qualified Data.Map as Map -- main parsing function -parseFCF :: - String -> -- ^ parsing strategy - ParserInfo -> -- ^ compiled grammar (fcfg) - CId -> -- ^ starting category - [String] -> -- ^ input tokens - Err [Exp] -- ^ resulting GF terms +parseFCF :: String -- ^ parsing strategy + -> ParserInfo -- ^ compiled grammar (fcfg) + -> CId -- ^ starting category + -> [String] -- ^ input tokens + -> Err [Exp] -- ^ resulting GF terms parseFCF strategy pinfo startCat inString = do let inTokens = input inString - startCats <- Map.lookup startCat (startupCats pinfo) - fcfParser <- {- trace lctree $ -} parseFCF strategy + startCats <- case Map.lookup startCat (startupCats pinfo) of + Just cats -> return cats + Nothing -> fail $ "Unknown startup category: " ++ prCId startCat + fcfParser <- parseFCF strategy let chart = fcfParser pinfo startCats inTokens (i,j) = inputBounds inTokens finalEdges = [makeFinalEdge cat i j | cat <- startCats] @@ -46,6 +47,6 @@ parseFCF strategy pinfo startCat inString = return $ nubsort $ filteredForests >>= forest2exps where parseFCF :: String -> Err (FCFParser) - parseFCF "bottomup" = Ok $ parse "b" - parseFCF "topdown" = Ok $ parse "t" - parseFCF strat = Bad $ "FCFG parsing strategy not defined: " ++ strat + parseFCF "bottomup" = return $ parse "b" + parseFCF "topdown" = return $ parse "t" + parseFCF strat = fail $ "FCFG parsing strategy not defined: " ++ strat diff --git a/src-3.0/PGF/Raw/Convert.hs b/src-3.0/PGF/Raw/Convert.hs index 3caa07aec..a8398093b 100644 --- a/src-3.0/PGF/Raw/Convert.hs +++ b/src-3.0/PGF/Raw/Convert.hs @@ -181,7 +181,6 @@ fromExp e = case e of EMeta _ -> AMet ---- EEq eqs -> App "Eq" [App "E" (map fromExp (v:ps)) | Equ ps v <- eqs] - _ -> error $ "exp " ++ show e fromTerm :: Term -> RExp fromTerm e = case e of |
