summaryrefslogtreecommitdiff
path: root/examples/uusisuomi/kotus
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-02-13 17:47:54 +0000
committeraarne <aarne@cs.chalmers.se>2008-02-13 17:47:54 +0000
commitc399f4f80ae8960de7004d9771400020fafe3805 (patch)
tree2f201d14d96f03c3a42734f83c5b023b8cec057a /examples/uusisuomi/kotus
parent0fc72dda4407f98aeb8f80bab18181861341b09d (diff)
kotus experiments; bindings in gfcc
Diffstat (limited to 'examples/uusisuomi/kotus')
-rw-r--r--examples/uusisuomi/kotus/Kotus.hs13
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)