forked from GitHub/gf-core
fetching DictFin words by Paradigms functions
This commit is contained in:
35312
lib/src/finnish/DictCompFin.gf
Normal file
35312
lib/src/finnish/DictCompFin.gf
Normal file
File diff suppressed because it is too large
Load Diff
35305
lib/src/finnish/DictCompFinAbs.gf
Normal file
35305
lib/src/finnish/DictCompFinAbs.gf
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
resource Kotus = open MorphoFin, Prelude in {
|
resource Kotus = open MorphoFin, Prelude in {
|
||||||
|
|
||||||
|
-- interpretations of paradigms in KOTUS word list, used in DictFin.
|
||||||
|
|
||||||
oper vowelHarmony = vowHarmony ;
|
oper vowelHarmony = vowHarmony ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
@@ -292,10 +294,10 @@ oper
|
|||||||
= c56A ; ----
|
= c56A ; ----
|
||||||
c78A : Str -> VForms -- 1 tuikkaa
|
c78A : Str -> VForms -- 1 tuikkaa
|
||||||
= c56A ; ----
|
= c56A ; ----
|
||||||
c99 : Str -> {s : Str} -- 5453 öykkärimäisesti
|
c99 : Str -> Str -- 5453 öykkärimäisesti
|
||||||
= \s -> {s = s} ;
|
= \s -> s ;
|
||||||
|
|
||||||
c101 : Str -> {s : Str} -- pronouns etc
|
c101 : Str -> Str -- pronouns etc
|
||||||
= c99 ; -- dummy
|
= c99 ; -- dummy
|
||||||
|
|
||||||
-- compound nouns, latter part inflected
|
-- compound nouns, latter part inflected
|
||||||
@@ -69,6 +69,11 @@ oper
|
|||||||
postGenPrep : Str -> Prep ; -- genitive postposition, e.g. "takana"
|
postGenPrep : Str -> Prep ; -- genitive postposition, e.g. "takana"
|
||||||
casePrep : Case -> Prep ; -- just case, e.g. adessive
|
casePrep : Case -> Prep ; -- just case, e.g. adessive
|
||||||
|
|
||||||
|
NK : Type ; -- Noun from DictFin (Kotus)
|
||||||
|
AK : Type ; -- Adjective from DictFin (Kotus)
|
||||||
|
VK : Type ; -- Verb from DictFin (Kotus)
|
||||||
|
AdvK : Type ; -- Adverb from DictFin (Kotus)
|
||||||
|
|
||||||
--2 Nouns
|
--2 Nouns
|
||||||
|
|
||||||
-- The worst case gives ten forms.
|
-- The worst case gives ten forms.
|
||||||
@@ -97,6 +102,7 @@ oper
|
|||||||
mkN : (olo,n,a,na,oon,jen,ja,ina,issa,ihin : Str) -> N ; -- worst case, 10 forms
|
mkN : (olo,n,a,na,oon,jen,ja,ina,issa,ihin : Str) -> N ; -- worst case, 10 forms
|
||||||
mkN : (pika : Str) -> (juna : N) -> N ; -- compound with invariable prefix
|
mkN : (pika : Str) -> (juna : N) -> N ; -- compound with invariable prefix
|
||||||
mkN : (oma : N) -> (tunto : N) -> N ; -- compound with inflecting prefix
|
mkN : (oma : N) -> (tunto : N) -> N ; -- compound with inflecting prefix
|
||||||
|
mkN : NK -> N ; -- noun from DictFin (Kotus)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Nouns used as functions need a case, of which the default is
|
-- Nouns used as functions need a case, of which the default is
|
||||||
@@ -131,6 +137,7 @@ oper
|
|||||||
mkA : N -> A ; -- any noun made into adjective
|
mkA : N -> A ; -- any noun made into adjective
|
||||||
mkA : N -> (kivempi,kivin : Str) -> A ; -- deviating comparison forms
|
mkA : N -> (kivempi,kivin : Str) -> A ; -- deviating comparison forms
|
||||||
mkA : (hyva,prmpi,pras : N) -> (hyvin,pmmin,prhten : Str) -> A ; -- worst case adj
|
mkA : (hyva,prmpi,pras : N) -> (hyvin,pmmin,prhten : Str) -> A ; -- worst case adj
|
||||||
|
mkA : AK -> A ; -- adjective from DictFin (Kotus)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Two-place adjectives need a case for the second argument.
|
-- Two-place adjectives need a case for the second argument.
|
||||||
@@ -152,6 +159,7 @@ oper
|
|||||||
mkV : (huutaa,huusi : Str) -> V ; -- deviating past 3sg
|
mkV : (huutaa,huusi : Str) -> V ; -- deviating past 3sg
|
||||||
mkV : (huutaa,huudan,huusi : Str) -> V ; -- also deviating pres. 1sg
|
mkV : (huutaa,huudan,huusi : Str) -> V ; -- also deviating pres. 1sg
|
||||||
mkV : (huutaa,dan,taa,tavat,takaa,detaan,sin,si,sisi,tanut,dettu,tanee : Str) -> V ; -- worst-case verb
|
mkV : (huutaa,dan,taa,tavat,takaa,detaan,sin,si,sisi,tanut,dettu,tanee : Str) -> V ; -- worst-case verb
|
||||||
|
mkV : VK -> V ; -- verb from DictFin (Kotus)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- All the patterns above have $nominative$ as subject case.
|
-- All the patterns above have $nominative$ as subject case.
|
||||||
@@ -253,6 +261,12 @@ oper
|
|||||||
\c -> {c = NPCase c ; s = [] ; isPre = True ; lock_Prep = <>} ;
|
\c -> {c = NPCase c ; s = [] ; isPre = True ; lock_Prep = <>} ;
|
||||||
accPrep = {c = NPAcc ; s = [] ; isPre = True ; lock_Prep = <>} ;
|
accPrep = {c = NPAcc ; s = [] ; isPre = True ; lock_Prep = <>} ;
|
||||||
|
|
||||||
|
NK = {s : NForms ; lock_NK : {}} ;
|
||||||
|
AK = {s : NForms ; lock_AK : {}} ;
|
||||||
|
VK = {s : VForms ; lock_VK : {}} ;
|
||||||
|
AdvK = {s : Str ; lock_AdvK : {}} ;
|
||||||
|
|
||||||
|
|
||||||
mkN = overload {
|
mkN = overload {
|
||||||
mkN : (talo : Str) -> N = mk1N ;
|
mkN : (talo : Str) -> N = mk1N ;
|
||||||
-- \s -> nForms2N (nForms1 s) ;
|
-- \s -> nForms2N (nForms1 s) ;
|
||||||
@@ -267,6 +281,7 @@ oper
|
|||||||
: Str) -> N = mk10N ;
|
: Str) -> N = mk10N ;
|
||||||
mkN : (sora : Str) -> (tie : N) -> N = mkStrN ;
|
mkN : (sora : Str) -> (tie : N) -> N = mkStrN ;
|
||||||
mkN : (oma,tunto : N) -> N = mkNN ;
|
mkN : (oma,tunto : N) -> N = mkNN ;
|
||||||
|
mkN : (sana : NK) -> N = \w -> nForms2N w.s ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mk1A : Str -> A = \jalo -> aForms2A (nforms2aforms (nForms1 jalo)) ;
|
mk1A : Str -> A = \jalo -> aForms2A (nforms2aforms (nForms1 jalo)) ;
|
||||||
@@ -446,6 +461,8 @@ oper
|
|||||||
mkA : Str -> A = mkA_1 ;
|
mkA : Str -> A = mkA_1 ;
|
||||||
mkA : N -> A = \n -> noun2adjDeg n ** {lock_A = <>} ;
|
mkA : N -> A = \n -> noun2adjDeg n ** {lock_A = <>} ;
|
||||||
mkA : N -> (kivempaa,kivinta : Str) -> A = regAdjective ;
|
mkA : N -> (kivempaa,kivinta : Str) -> A = regAdjective ;
|
||||||
|
mkA : (sana : AK) -> A = \w -> noun2adjDeg (nForms2N w.s) ;
|
||||||
|
|
||||||
-- mkA : (hyva,parempi,paras : N) -> (hyvin,paremmin,parhaiten : Str) -> A ;
|
-- mkA : (hyva,parempi,paras : N) -> (hyvin,paremmin,parhaiten : Str) -> A ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -483,6 +500,7 @@ oper
|
|||||||
mkV : (
|
mkV : (
|
||||||
huutaa,huudan,huutaa,huutavat,huutakaa,huudetaan,
|
huutaa,huudan,huutaa,huutavat,huutakaa,huudetaan,
|
||||||
huusin,huusi,huusisi,huutanut,huudettu,huutanee : Str) -> V = mk12V ;
|
huusin,huusi,huusisi,huutanut,huudettu,huutanee : Str) -> V = mk12V ;
|
||||||
|
mkV : (sana : VK) -> V = \w -> vforms2V w.s ** {sc = NPCase Nom ; lock_V = <>} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mk1V : Str -> V = \s ->
|
mk1V : Str -> V = \s ->
|
||||||
@@ -566,7 +584,10 @@ oper
|
|||||||
caseV2 : V -> Case -> V2 = \v,c -> mk2V2 v (casePrep c) ;
|
caseV2 : V -> Case -> V2 = \v,c -> mk2V2 v (casePrep c) ;
|
||||||
dirV2 v = mk2V2 v accPrep ;
|
dirV2 v = mk2V2 v accPrep ;
|
||||||
|
|
||||||
mkAdv : Str -> Adv = \s -> {s = s ; lock_Adv = <>} ;
|
mkAdv = overload {
|
||||||
|
mkAdv : Str -> Adv = \s -> {s = s ; lock_Adv = <>} ;
|
||||||
|
mkAdv : AdvK -> Adv = \s -> {s = s.s ; lock_Adv = <>} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
mkV2 = overload {
|
mkV2 = overload {
|
||||||
mkV2 : Str -> V2 = \s -> dirV2 (mk1V s) ;
|
mkV2 : Str -> V2 = \s -> dirV2 (mk1V s) ;
|
||||||
|
|||||||
@@ -1,11 +1,19 @@
|
|||||||
main = interact (unlines . map mkOne . lines)
|
main = interact (unlines . concatMap (prEntry . mkOne) . lines)
|
||||||
|
|
||||||
|
prEntry (f,c,w) = [
|
||||||
|
unwords [f, ":", c]
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
mkOne line = case words line of
|
mkOne line = case words line of
|
||||||
_:_:_:w:c0:_ -> let c = cat c0 in unwords [mkId w ++ "_" ++ c, ":", c]
|
_:_:_:w:c0:_ -> let c = mkCat c0 in (mkFun w c, c, w, mkLin c)
|
||||||
_ -> []
|
_ -> []
|
||||||
|
|
||||||
cat c = case c of
|
mkCat = fst . catlin
|
||||||
"(adjektiivi)" -> "A"
|
mkLin = snd . catlin
|
||||||
|
|
||||||
|
catlin c = case c of
|
||||||
|
"(adjektiivi)" -> "A",
|
||||||
"(adverbi)" -> "Adv"
|
"(adverbi)" -> "Adv"
|
||||||
"(erisnimi)" -> "PN"
|
"(erisnimi)" -> "PN"
|
||||||
"(interjektio)" -> "Interj"
|
"(interjektio)" -> "Interj"
|
||||||
@@ -18,6 +26,7 @@ cat c = case c of
|
|||||||
"(verbi)" -> "V"
|
"(verbi)" -> "V"
|
||||||
_ -> "Junk"
|
_ -> "Junk"
|
||||||
|
|
||||||
|
mkFun w c = mkId w ++ "_" ++ c
|
||||||
|
|
||||||
mkId = concatMap trim where
|
mkId = concatMap trim where
|
||||||
trim c = case fromEnum c of
|
trim c = case fromEnum c of
|
||||||
|
|||||||
@@ -113,8 +113,8 @@ mkRules e = do
|
|||||||
|
|
||||||
mkFun fun cat = unwords ["fun",fun,":",cat,";"]
|
mkFun fun cat = unwords ["fun",fun,":",cat,";"]
|
||||||
mkLin fun par w = case words par of
|
mkLin fun par w = case words par of
|
||||||
f@"compoundNK":p:v:_ -> unwords ["lin",fun,"=",f,v,"("++ p,quoted w ++")",";"]
|
f@"compoundNK":p:v:_ -> unwords ["lin",fun,"=","{s","=",f,v,"("++ p,quoted w ++")}",";"]
|
||||||
_ -> unwords ["lin",fun,"=",par,quoted w,";"]
|
_ -> unwords ["lin",fun,"=","{s","=",par,quoted w ++"}",";"]
|
||||||
|
|
||||||
mkId = concatMap trim where
|
mkId = concatMap trim where
|
||||||
trim c = case fromEnum c of
|
trim c = case fromEnum c of
|
||||||
|
|||||||
@@ -7,5 +7,5 @@ concrete DictFin of DictFinAbs = open MorphoFin, Kotus, Prelude in {
|
|||||||
|
|
||||||
flags coding = utf8 ;
|
flags coding = utf8 ;
|
||||||
|
|
||||||
lincat NK = NForms ; AK = NForms ; VK = VForms ; AdvK = SS ;
|
lincat NK = {s : NForms} ; AK = {s : NForms} ; VK = {s : VForms} ; AdvK = {s : Str} ;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user