diff options
| author | aarne <unknown> | 2003-11-10 07:55:45 +0000 |
|---|---|---|
| committer | aarne <unknown> | 2003-11-10 07:55:45 +0000 |
| commit | 249d506f58a8b5f8ef87295ab3dde2d13ddd3885 (patch) | |
| tree | 658679a324c4f360901c38637464e8f63b59515d /src/GF/Canon | |
| parent | 4c99687f217ce258f821d55e68f5403233f6dea7 (diff) | |
Morphological analysis and glueing.
Diffstat (limited to 'src/GF/Canon')
| -rw-r--r-- | src/GF/Canon/CMacros.hs | 12 | ||||
| -rw-r--r-- | src/GF/Canon/MkGFC.hs | 3 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/GF/Canon/CMacros.hs b/src/GF/Canon/CMacros.hs index 17433e48b..d32f639b4 100644 --- a/src/GF/Canon/CMacros.hs +++ b/src/GF/Canon/CMacros.hs @@ -152,3 +152,15 @@ redirectIdent n f@(CIQ _ c) = CIQ n c ciq n f = CIQ n f +wordsInTerm :: Term -> [String] +wordsInTerm trm = filter (not . null) $ case trm of + K (KS s) -> [s] + S c _ -> wo c + R rs -> concat [wo t | Ass _ t <- rs] + T _ cs -> concat [wo t | Cas _ t <- cs] + C s t -> wo s ++ wo t + FV ts -> concatMap wo ts + K (KP ss vs) -> ss ++ concat [s ++ t | Var s t <- vs] + P t _ -> wo t --- not needed ? + _ -> [] + where wo = wordsInTerm diff --git a/src/GF/Canon/MkGFC.hs b/src/GF/Canon/MkGFC.hs index 7547280a9..8f1e46b21 100644 --- a/src/GF/Canon/MkGFC.hs +++ b/src/GF/Canon/MkGFC.hs @@ -12,6 +12,9 @@ import qualified Modules as M prCanonModInfo :: CanonModule -> String prCanonModInfo = prt . info2mod +prCanon :: CanonGrammar -> String +prCanon = unlines . map prCanonModInfo . M.modules + canon2grammar :: Canon -> CanonGrammar canon2grammar (Gr modules) = M.MGrammar $ map mod2info modules where mod2info m = case m of |
