diff options
| author | aarne <aarne@cs.chalmers.se> | 2008-02-13 17:47:54 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2008-02-13 17:47:54 +0000 |
| commit | c399f4f80ae8960de7004d9771400020fafe3805 (patch) | |
| tree | 2f201d14d96f03c3a42734f83c5b023b8cec057a /examples/uusisuomi/kotus | |
| parent | 0fc72dda4407f98aeb8f80bab18181861341b09d (diff) | |
kotus experiments; bindings in gfcc
Diffstat (limited to 'examples/uusisuomi/kotus')
| -rw-r--r-- | examples/uusisuomi/kotus/Kotus.hs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/examples/uusisuomi/kotus/Kotus.hs b/examples/uusisuomi/kotus/Kotus.hs index 694465782..ad63a1e14 100644 --- a/examples/uusisuomi/kotus/Kotus.hs +++ b/examples/uusisuomi/kotus/Kotus.hs @@ -5,19 +5,19 @@ kotus = "sanat.xxmmll" main = do ss <- readFile kotus >>= return . lines - let ws = map analyse ss + let ws = [w | Just w <- map analyse ss] writeFile "kotus.gf" $ unlines $ treat ws -- mapM putStrLn $ treat ws treat = map mkLin . entries -entries = zip [10000..] . filter isNoun +entries = zip [10001..] . filter isNoun isNoun x = ((<5) . read . take 1 . fst) x && (all isAlpha . snd) x mkLin (n,(pa,ex)) = "fun n" ++ show n ++ "_" ++ ex ++ " : N ;\n" ++ - "lin n" ++ show n ++ "_" ++ ex ++ " = d" ++ pa ++ " \"" ++ ex ++ "\" ;" + "lin n" ++ show n ++ "_" ++ ex ++ " = ud d" ++ pa ++ " \"" ++ ex ++ "\" ;" -- treat = map mkRule . paradigms @@ -45,8 +45,11 @@ analyse s = lst = drop 6 $ dropWhile (/='t') end (num,gr) = span isDigit lst para = (replicate (2 - length num) '0' ++ num) ++ ['A' | isPrefixOf "av" (drop 6 gr)] - in - (para,word) + in case num of + "" -> Nothing + "0" -> Nothing + _ | length num > 2 -> Nothing + _ -> if last word == 't' then Nothing else Just (para,word) sub cs s = isPrefixOf cs s || isPrefixOf cs (drop 1 s) |
