diff options
Diffstat (limited to 'src/PGF/Morphology.hs')
| -rw-r--r-- | src/PGF/Morphology.hs | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/src/PGF/Morphology.hs b/src/PGF/Morphology.hs index 2eb793d73..9eee71a97 100644 --- a/src/PGF/Morphology.hs +++ b/src/PGF/Morphology.hs @@ -1,4 +1,6 @@ -module PGF.Morphology where +module PGF.Morphology(Lemma,Analysis,Morpho, + buildMorpho, + lookupMorpho,fullFormLexicon) where import PGF.ShowLinearize (collectWords) import PGF.Data @@ -9,24 +11,16 @@ import Data.List (intersperse) -- these 4 definitions depend on the datastructure used -type Morpho = Map.Map String [(Lemma,Analysis)] - -lookupMorpho :: Morpho -> String -> [(Lemma,Analysis)] -lookupMorpho mo s = maybe noAnalysis id $ Map.lookup s mo - -buildMorpho :: PGF -> CId -> Morpho -buildMorpho pgf = Map.fromListWith (++) . collectWords pgf - -prFullFormLexicon :: Morpho -> String -prFullFormLexicon mo = - unlines [w ++ " : " ++ prMorphoAnalysis ts | (w,ts) <- Map.assocs mo] +type Lemma = CId +type Analysis = String -prMorphoAnalysis :: [(Lemma,Analysis)] -> String -prMorphoAnalysis lps = unlines [l ++ " " ++ p | (l,p) <- lps] +newtype Morpho = Morpho (Map.Map String [(Lemma,Analysis)]) -type Lemma = String -type Analysis = String +buildMorpho :: PGF -> Language -> Morpho +buildMorpho pgf lang = Morpho (Map.fromListWith (++) (collectWords pgf lang)) -noAnalysis :: [(Lemma,Analysis)] -noAnalysis = [] +lookupMorpho :: Morpho -> String -> [(Lemma,Analysis)] +lookupMorpho (Morpho mo) s = maybe [] id $ Map.lookup s mo +fullFormLexicon :: Morpho -> [(String,[(Lemma,Analysis)])] +fullFormLexicon (Morpho mo) = Map.toList mo |
