forked from GitHub/gf-core
finnish updates
This commit is contained in:
@@ -21,6 +21,10 @@ nouns:
|
||||
cat all-diff-* >all-differences
|
||||
cat all-differences
|
||||
|
||||
CSC:
|
||||
export LEX=NCSC ; make -e tests
|
||||
cat all-diff-NCSC
|
||||
|
||||
gf-files:
|
||||
runghc MkLex.hs 0 $(CAT) $(LEX) > $(LEX)Abs.gf
|
||||
runghc MkLex.hs 1 $(CAT) $(LEX) > $(LEX)1.gf
|
||||
|
||||
@@ -38,7 +38,23 @@ initiate tgt cat i = mapM_ putStrLn [
|
||||
]
|
||||
|
||||
nums = map prt [1 ..] where
|
||||
prt i = (if i < 10 then "0" else "") ++ show i ++ ". "
|
||||
---- prt i = (if i < 10 then "0" else "") ++ show i ++ ". "
|
||||
prt i = let n = show i in replicate (4-length n) '0' ++ n ++ ". "
|
||||
|
||||
-- W is the flag for mixed-class word lists
|
||||
mkLex "W" 0 line = case words line of
|
||||
num:cat:sana:_ -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "fun " ++ nimi ++ "_" ++ cat ++ " : " ++ cat ++ " ;"
|
||||
_ -> return ()
|
||||
|
||||
mkLex "W" 1 line = case words line of
|
||||
num:cat:sanat@(sana:_) -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "lin " ++ nimi ++
|
||||
"_" ++ cat ++ " = mk" ++ cat ++ " " ++
|
||||
unwords (map prQuoted sanat) ++" ;"
|
||||
_ -> return ()
|
||||
|
||||
mkLex cat 0 line = case words line of
|
||||
num:sana:_ -> do
|
||||
@@ -68,6 +84,7 @@ mkLex "N" 2 line = case words line of
|
||||
_ -> return ()
|
||||
|
||||
mkLex "N" 3 line = case words line of
|
||||
---- num:sana:sanan:sanoja:_ -> do
|
||||
num:sana:sanan:_:_:_:_:sanoja:_ -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "lin " ++ nimi ++
|
||||
@@ -82,7 +99,6 @@ mkLex "N" 4 line = case words line of
|
||||
"\" \"" ++ sanoja ++ "\" \"" ++ sanaa ++ "\" ;"
|
||||
_ -> return ()
|
||||
|
||||
|
||||
-- to initiate from a noun list that has compounds
|
||||
|
||||
mkLex "N" 11 line = case words line of
|
||||
@@ -94,6 +110,8 @@ mkLex "N" 11 line = case words line of
|
||||
putStrLn $ "lin " ++ nimi ++ "_N = mkN \"" ++ sana ++ "\" ;"
|
||||
_ -> return ()
|
||||
|
||||
prQuoted s = concat ["\"",s,"\""]
|
||||
|
||||
-- from sora+tie to tie
|
||||
|
||||
uncompound = reverse . takeWhile (/= '+') . reverse
|
||||
|
||||
@@ -44,6 +44,9 @@ resource Nominal = ResFin ** open MorphoFin,Declensions,CatFin,Prelude in {
|
||||
-- \s,t,u -> nForms2N (nForms3 s t u) ;
|
||||
mkN : (talo,talon,taloja,taloa : Str) -> N = mk4N ;
|
||||
-- \s,t,u,v -> nForms2N (nForms4 s t u v) ;
|
||||
mkN :
|
||||
(talo,talon,taloa,talona,taloon,talojen,taloja,taloina,taloissa,taloihin
|
||||
: Str) -> N = mk10N ;
|
||||
mkN : (sora : Str) -> (tie : N) -> N = mkStrN ;
|
||||
mkN : (oma,tunto : N) -> N = mkNN ;
|
||||
} ;
|
||||
@@ -56,6 +59,11 @@ resource Nominal = ResFin ** open MorphoFin,Declensions,CatFin,Prelude in {
|
||||
mk3N : (talo,talon,taloja : Str) -> N = \s,t,u -> nForms2N (nForms3 s t u) ;
|
||||
mk4N : (talo,talon,taloa,taloja : Str) -> N = \s,t,u,v ->
|
||||
nForms2N (nForms4 s t u v) ;
|
||||
mk10N :
|
||||
(talo,talon,taloa,talona,taloon,talojen,taloja,taloina,taloissa,taloihin
|
||||
: Str) -> N = \a,b,c,d,e,f,g,h,i,j ->
|
||||
nForms2N (nForms10 a b c d e f g h i j) ;
|
||||
|
||||
mkStrN : Str -> N -> N = \sora,tie -> {
|
||||
s = \\c => sora + tie.s ! c ; lock_N = <>
|
||||
} ;
|
||||
@@ -68,6 +76,7 @@ resource Nominal = ResFin ** open MorphoFin,Declensions,CatFin,Prelude in {
|
||||
ukk = init ukko ;
|
||||
uko = weakGrade ukko ;
|
||||
ukon = uko + "n" ;
|
||||
o = case last ukko of {"ä" => "ö" ; "a" => "o"} ; -- only used then
|
||||
renka = Declensions.strongGrade (init ukko) ;
|
||||
rake = Declensions.strongGrade ukko ;
|
||||
in
|
||||
@@ -83,14 +92,29 @@ resource Nominal = ResFin ** open MorphoFin,Declensions,CatFin,Prelude in {
|
||||
_ + "e" => dRae ukko (rake + "en") ;
|
||||
_ + ("ut" | "yt") => dRae ukko (ukk + "en") ;
|
||||
_ + ("as" | "äs") => dRae ukko (renka + last renka + "n") ;
|
||||
_ + ("uus" | "yys") => dLujuus ukko ;
|
||||
_ + ("uus" | "yys" | "eus" | "eys") => dLujuus ukko ;
|
||||
_ + "s" => dJalas ukko ;
|
||||
_ + ("a" | "e" | "i") + C_ + _ + "aja" => -- opettaja correct autom.
|
||||
|
||||
{- heuristics for 3-syllable nouns ending a/ä
|
||||
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + C_ +
|
||||
_ + "i" + C_ + a@("a" | "ä") =>
|
||||
dSilakka ukko (ukko + "n") (ukk + o + "it" + a) ;
|
||||
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + C_ + _ +
|
||||
("a" | "e" | "o" | "u" | "y" | "ä" | "ö") +
|
||||
("l" | "r" | "n") + a@("a" | "ä") =>
|
||||
dSilakka ukko (ukko + "n") (ukk + o + "it" + a) ;
|
||||
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + C_ + _ +
|
||||
("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") +
|
||||
("n" | "k" | "s") + "k" + a@("a" | "ä") =>
|
||||
dSilakka ukko (uko + "n") (init uko + o + "it" + a) ;
|
||||
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + C_ + _ +
|
||||
("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") +
|
||||
("n" | "t" | "s") + "t" + a@("a" | "ä") =>
|
||||
dSilakka ukko (uko + "n") (ukk + o + "j" + a) ;
|
||||
_ + ("a" | "e" | "i" | "o" | "u") + C_ + _ +
|
||||
("a" | "e" | "o" | "u") + C_ + "a" =>
|
||||
dSilakka ukko (ukko + "n") (ukk + "ia") ;
|
||||
_ + ("a" | "e" | "i" | "o" | "u") + C_ + _ + "ija" =>
|
||||
dSilakka ukko (ukko + "n") (ukk + "oita") ;
|
||||
_ + ("e" | "i" | "y" | "ä" | "ö") + C_ + _ + "ijä" =>
|
||||
dSilakka ukko (ukko + "n") (ukk + "öitä") ;
|
||||
-}
|
||||
_ + "i" +o@("o"|"ö") => dSilakka ukko (ukko+"n") (ukko+"it"+getHarmony o);
|
||||
_ + "i" + "a" => dSilakka ukko (ukko + "n") (ukk + "oita") ;
|
||||
_ + "i" + "ä" => dSilakka ukko (ukko + "n") (ukk + "öitä") ;
|
||||
|
||||
@@ -10,6 +10,9 @@ resource Verbal = ResFin **
|
||||
mkV = overload {
|
||||
mkV : (huutaa : Str) -> V = mk1V ;
|
||||
mkV : (huutaa,huusi : Str) -> V = mk2V ;
|
||||
mkV : (
|
||||
huutaa,huudan,huutaa,huutavat,huutakaa,huudetaan,
|
||||
huusin,huusi,huusisi,huutanut,huudettu,huutanee : Str) -> V = mk12V ;
|
||||
} ;
|
||||
|
||||
showV : V -> Utt = \v -> ss (
|
||||
@@ -29,6 +32,12 @@ resource Verbal = ResFin **
|
||||
mk1V : Str -> V = \s -> vforms2V (vForms1 s) ;
|
||||
mk2V : (_,_ : Str) -> V = \s,t -> vforms2V (vForms2 s t) ;
|
||||
|
||||
mk12V : (
|
||||
huutaa,huudan,huutaa,huutavat,huutakaa,huudetaan,
|
||||
huusin,huusi,huusisi,huutanut,huudettu,huutanee : Str) -> V =
|
||||
\a,b,c,d,e,f,g,h,i,j,k,l ->
|
||||
vforms2V (vForms12 a b c d e f g h i j k l) ;
|
||||
|
||||
vForms1 : Str -> VForms = \ottaa ->
|
||||
let
|
||||
a = last ottaa ;
|
||||
|
||||
@@ -5,7 +5,7 @@ concrete LangAra of Lang =
|
||||
LexiconAra
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ; coding = utf8 ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user