mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-24 18:28:55 -06:00
resource = resource-1.0
This commit is contained in:
@@ -1,114 +1,306 @@
|
||||
--# -path=.:../abstract:../../prelude
|
||||
concrete StructuralFin of Structural = CatFin **
|
||||
open MorphoFin, ParadigmsFin, Prelude in {
|
||||
|
||||
--1 The Top-Level Finnish Resource Grammar: Structural Words
|
||||
--
|
||||
-- Aarne Ranta 2002 -- 2005
|
||||
--
|
||||
concrete StructuralFin of Structural =
|
||||
CategoriesFin, NumeralsFin ** open Prelude, SyntaxFin in {
|
||||
flags optimize=all ;
|
||||
|
||||
lin
|
||||
above_Prep = postGenPrep "yläpuolella" ;
|
||||
after_Prep = postGenPrep "jälkeen" ;
|
||||
|
||||
UseNumeral i = {s = \\np => i.s ! NCase Sg (npForm2Case Sg np) ; n = i.n ; isNum = True} ;
|
||||
|
||||
above_Prep = prepPostpGen "yläpuolella" ;
|
||||
after_Prep = prepPostpGen "jälkeen" ;
|
||||
all8mass_Det = mkDeterminer singular (kaikkiPron Sg) ;
|
||||
all_NDet = mkDeterminerNum (kaikkiPron Pl) ;
|
||||
almost_Adv = ss "melkein" ;
|
||||
although_Subj = ss "vaikka" ;
|
||||
all_Predet = {s = \\n,c =>
|
||||
let
|
||||
kaiket = caseTable n (nhn (sKorpi "kaikki" "kaiken" "kaikkena"))
|
||||
in
|
||||
case npform2case n c of {
|
||||
Nom => "kaikki" ;
|
||||
k => kaiket ! k
|
||||
}
|
||||
} ;
|
||||
almost_AdA, almost_AdN = ss "melkein" ;
|
||||
although_Subj = ss "vaikka" ;
|
||||
always_AdV = ss "aina" ;
|
||||
and_Conj = ss "ja" ** {n = Pl} ;
|
||||
because_Subj = ss "koska" ;
|
||||
before_Prep = prepPrep "ennen" Part ;
|
||||
behind_Prep = prepPostpGen "takana" ;
|
||||
between_Prep = prepPostpGen "välissä" ;
|
||||
both_AndConjD = sd2 "sekä" "että" ** {n = Pl} ;
|
||||
by8agent_Prep = prepPostpGen "toimesta" ;
|
||||
by8means_Prep = prepPostpGen "avulla" ;
|
||||
---- can8know_VV = nomVerbVerb (vOsata "osata") ;
|
||||
---- can_VV = nomVerbVerb (vJuoda "voida" "voi") ;
|
||||
during_Prep = prepPostpGen "aikana" ;
|
||||
either8or_ConjD = sd2 "joko" "tai" ** {n = Sg} ;
|
||||
everybody_NP = {
|
||||
s = \\f => kaikkiPron Pl ! (npForm2Case Pl f) ; -- näin kaikki
|
||||
n = Pl ;
|
||||
p = NP3
|
||||
} ;
|
||||
every_Det = jokainenDet ;
|
||||
everything_NP = {
|
||||
s = \\f => kaikkiPron Sg ! (npForm2Case Sg f) ; -- näin kaiken
|
||||
n = Sg ;
|
||||
p = NP3
|
||||
} ;
|
||||
before_Prep = prePrep partitive "ennen" ;
|
||||
behind_Prep = postGenPrep "takana" ;
|
||||
between_Prep = postGenPrep "välissä" ;
|
||||
both7and_DConj = sd2 "sekä" "että" ** {n = Pl} ;
|
||||
but_PConj = ss "mutta" ;
|
||||
by8agent_Prep = postGenPrep "toimesta" ;
|
||||
by8means_Prep = casePrep adessive ;
|
||||
can8know_VV = reg2V "osata" "osasi" ;
|
||||
can_VV = reg2V "voida" "voi" ;
|
||||
during_Prep = postGenPrep "aikana" ;
|
||||
either7or_DConj = sd2 "joko" "tai" ** {n = Sg} ;
|
||||
everybody_NP = mkNP (regN "jokainen") Sg ;
|
||||
every_Det = mkDet Sg (regN "jokainen") ;
|
||||
everything_NP = mkNP ((nhn (sKorpi "kaikki" "kaiken" "kaikkena")) **
|
||||
{lock_N = <>}) Sg ;
|
||||
everywhere_Adv = ss "kaikkialla" ;
|
||||
from_Prep = prepCase Elat ; --- ablat
|
||||
he_NP = pronNounPhrase pronHan ;
|
||||
how_IAdv = ss "kuinka" ;
|
||||
few_Det = mkDet Sg (regN "harva") ;
|
||||
first_Ord = {s = \\n,c => (regN "ensimmäinen").s ! NCase n c} ;
|
||||
from_Prep = casePrep elative ;
|
||||
he_Pron = mkPronoun "hän" "hänen" "häntä" "hänenä" "häneen" Sg P3 ;
|
||||
here_Adv = ss "täällä" ;
|
||||
here7to_Adv = ss "tänne" ;
|
||||
here7from_Adv = ss "täältä" ;
|
||||
how_IAdv = ss "miten" ;
|
||||
how8many_IDet =
|
||||
{s = \\c => "kuinka" ++ (reg2N "moni" "monia").s ! NCase Sg c ; n = Sg} ;
|
||||
if_Subj = ss "jos" ;
|
||||
in8front_Prep = prepPostpGen "edessä" ;
|
||||
i_NP = pronNounPhrase pronMina ;
|
||||
in_Prep = prepCase Iness ;
|
||||
it_NP = nameNounPhrase pronSe ;
|
||||
many_Det = mkDeterminer singular moniPron ;
|
||||
most8many_Det = useimmatDet ;
|
||||
most_Det = mkDeterminer singular (caseTable singular (nhn (sSuurin "enintä"))) ;
|
||||
much_Det = mkDeterminer singular (caseTable singular (nhn (sNauris "runsasta"))) ;
|
||||
---- must_VV = vHukkua "täytyä" "täydy" ** {c = CCase Gen} ;
|
||||
no_Phr = ss ("Ei" ++ stopPunct) ;
|
||||
on_Prep = prepCase Adess ;
|
||||
or_Conj = ss "tai" ** {n = Sg} ;
|
||||
otherwise_Adv = ss "muuten" ;
|
||||
part_Prep = prepCase Part ;
|
||||
possess_Prep = prepCase Gen ;
|
||||
quite_Adv = ss "aika" ;
|
||||
she_NP = pronNounPhrase pronHan ;
|
||||
so_Adv = ss "niin" ;
|
||||
somebody_NP = {
|
||||
s = \\f => jokuPron ! Sg ! (npForm2Case Sg f) ;
|
||||
n = Sg ;
|
||||
p = NP3
|
||||
in8front_Prep = postGenPrep "edessä" ;
|
||||
i_Pron = mkPronoun "minä" "minun" "minua" "minuna" "minuun" Sg P1 ;
|
||||
in_Prep = casePrep inessive ;
|
||||
it_Pron = {
|
||||
s = \\c => pronSe.s ! npform2case Sg c ;
|
||||
a = agrP3 Sg ;
|
||||
isPron = False
|
||||
} ;
|
||||
less_CAdv = ss "vähemmän" ;
|
||||
many_Det = mkDet Sg (reg2N "moni" "monia") ;
|
||||
more_CAdv = ss "enemmän" ;
|
||||
most_Predet = {s = \\n,c => (nhn (sSuurin "useinta")).s ! NCase n (npform2case n c)} ;
|
||||
much_Det = mkDet Sg {s = \\_ => "paljon"} ;
|
||||
must_VV = subjcaseV (regV "täytyä") genitive ;
|
||||
no_Phr = ss "ei" ;
|
||||
on_Prep = casePrep adessive ;
|
||||
one_Quant = mkDet Sg
|
||||
(nhn (mkSubst "ä" "yksi" "yhde" "yhte" "yhtä" "yhteen" "yksi" "yksi"
|
||||
"yksien" "yksiä" "yksiin")) ;
|
||||
only_Predet = {s = \\_,_ => "vain"} ;
|
||||
or_Conj = ss "tai" ** {n = Sg} ;
|
||||
otherwise_PConj = ss "muuten" ;
|
||||
part_Prep = casePrep partitive ;
|
||||
please_Voc = ss ["ole hyvä"] ; --- number
|
||||
possess_Prep = casePrep genitive ;
|
||||
quite_Adv = ss "melko" ;
|
||||
she_Pron = mkPronoun "hän" "hänen" "häntä" "hänenä" "häneen" Sg P3 ;
|
||||
so_AdA = ss "niin" ;
|
||||
somebody_NP = {
|
||||
s = \\c => jokuPron ! Sg ! npform2case Sg c ;
|
||||
a = agrP3 Sg ;
|
||||
isPron = False
|
||||
} ;
|
||||
someSg_Det = {
|
||||
s1 = jokuPron ! Sg ;
|
||||
s2 = [] ;
|
||||
isNum,isPoss = False ; isDef = True ; n = Sg
|
||||
} ;
|
||||
somePl_Det = {
|
||||
s1 = jokuPron ! Pl ;
|
||||
s2 = [] ; isNum,isPoss = False ; isDef = True ;
|
||||
n = Pl
|
||||
} ;
|
||||
some_Det = mkDeterminerGen Sg (jokinPron ! Sg) (jokuPron ! Sg) ;
|
||||
some_NDet = mkDeterminerGenNum (jokinPron ! Pl) (jokuPron ! Pl) ;
|
||||
something_NP = {
|
||||
s = \\f => jokinPron ! Sg ! (npForm2Case Sg f) ; -- näin kaiken
|
||||
n = Sg ;
|
||||
p = NP3
|
||||
s = \\c => jokinPron ! Sg ! npform2case Sg c ;
|
||||
a = agrP3 Sg ;
|
||||
isPron = False
|
||||
} ;
|
||||
somewhere_Adv = ss "jossain" ;
|
||||
that_Det = mkDeterminer Sg (\\c => pronTuo.s ! PCase c) ;
|
||||
that_NP = pronNounPhraseNP pronTuo ;
|
||||
therefore_Adv = ss "siksi" ;
|
||||
these_NDet = mkDeterminerNum (\\c => pronNama.s ! PCase c) ;
|
||||
they_NP = pronNounPhrase pronHe ; --- ne
|
||||
this_Det = mkDeterminer Sg (\\c => pronTama.s ! PCase c) ;
|
||||
this_NP = pronNounPhraseNP pronTama ;
|
||||
those_NDet = mkDeterminerNum (\\c => pronNuo.s ! PCase c) ;
|
||||
thou_NP = pronNounPhrase pronSina ;
|
||||
through_Prep = prepPostpGen "kautta" ;
|
||||
too_Adv = ss "liian" ;
|
||||
to_Prep = prepCase Illat ; --- allat
|
||||
under_Prep = prepPostpGen "alla" ;
|
||||
very_Adv = ss "hyvin" ;
|
||||
---- want_VV = nomVerbVerb (vOsata "haluta") ;
|
||||
we_NP = pronNounPhrase pronMe ;
|
||||
what8many_IP = intPronWhat Pl ;
|
||||
what8one_IP = intPronWhat Sg ;
|
||||
when_IAdv = ss "koska" ;
|
||||
that_Quant = {
|
||||
s1 = table Number [
|
||||
table Case {
|
||||
c => (mkPronoun "tuo" "tuon" "tuota" "tuona" "tuohon" Sg P3).s ! NPCase c
|
||||
} ;
|
||||
table Case {
|
||||
c => (mkPronoun "nuo" "noiden" "noita" "noina" "noihin" Sg P3).s ! NPCase c
|
||||
}
|
||||
] ;
|
||||
s2 = [] ; isNum,isPoss = False ; isDef = True ;
|
||||
} ;
|
||||
that_NP =
|
||||
mkDemPronoun "tuo" "tuon" "tuota" "tuona" "tuohon" Sg **
|
||||
{isPron = False} ;
|
||||
there_Adv = ss "siellä" ; --- tuolla
|
||||
there7to_Adv = ss "sinne" ;
|
||||
there7from_Adv = ss "sieltä" ;
|
||||
therefore_PConj = ss "siksi" ;
|
||||
these_NP =
|
||||
mkDemPronoun "nämä" "näiden" "näitä" "näinä" "näihin" Pl **
|
||||
{isPron = False} ;
|
||||
they_Pron = mkPronoun "he" "heidän" "heitä" "heinä" "heihin" Pl P3 ; --- ne
|
||||
this_Quant = {
|
||||
s1 = table Number [
|
||||
table Case {
|
||||
c => (mkPronoun "tämä" "tämän" "tätä" "tänä" "tähän" Sg P3).s ! NPCase c
|
||||
} ;
|
||||
table Case {
|
||||
c => (mkPronoun "nuo" "noiden" "noita" "noina" "noihin" Sg P3).s ! NPCase c
|
||||
}
|
||||
] ;
|
||||
s2 = [] ; isNum,isPoss = False ; isDef = True ;
|
||||
} ;
|
||||
this_NP =
|
||||
mkDemPronoun "tämä" "tämän" "tätä" "tänä" "tähän" Sg **
|
||||
{isPron = False} ;
|
||||
those_NP =
|
||||
mkDemPronoun "nuo" "noiden" "noita" "noina" "noihin" Pl **
|
||||
{isPron = False} ;
|
||||
through_Prep = postGenPrep "kautta" ;
|
||||
too_AdA = ss "liian" ;
|
||||
to_Prep = casePrep illative ; --- allative
|
||||
under_Prep = postGenPrep "alla" ;
|
||||
very_AdA = ss "erittäin" ;
|
||||
want_VV = regV "tahtoa" ;
|
||||
we_Pron = mkPronoun "me" "meidän" "meitä" "meinä" "meihin" Pl P1 ;
|
||||
whatPl_IP = {
|
||||
s = table {NPAcc => "mitkä" ; c => mikaInt ! Pl ! npform2case Pl c} ;
|
||||
n = Pl
|
||||
} ;
|
||||
whatSg_IP = {
|
||||
s = \\c => mikaInt ! Sg ! npform2case Sg c ;
|
||||
n = Sg
|
||||
} ;
|
||||
when_IAdv = ss "milloin" ;
|
||||
when_Subj = ss "kun" ;
|
||||
where_IAdv = ss "missä" ;
|
||||
which8one_IDet = mikaDet ;
|
||||
---- which8many_IDet n = mkDeterminerGenNum n (mikaInt ! Pl) (kukaInt ! Pl) ;
|
||||
who8many_IP = intPronWho Pl ;
|
||||
who8one_IP = intPronWho Sg ;
|
||||
|
||||
whichPl_IDet = {
|
||||
s = mikaInt ! Pl ;
|
||||
n = Pl
|
||||
} ;
|
||||
whichSg_IDet = {
|
||||
s = mikaInt ! Sg ;
|
||||
n = Sg
|
||||
} ;
|
||||
whoSg_IP = {
|
||||
s = table {NPAcc => "kenet" ; c => kukaInt ! Sg ! npform2case Sg c} ;
|
||||
n = Sg
|
||||
} ;
|
||||
whoPl_IP = {
|
||||
s = table {NPAcc => "ketkä" ; c => kukaInt ! Pl ! npform2case Pl c} ;
|
||||
n = Pl
|
||||
} ;
|
||||
why_IAdv = ss "miksi" ;
|
||||
without_Prep = prepPrep "ilman" Part ;
|
||||
with_Prep = prepPostpGen "kanssa" ;
|
||||
ye_NP = pronNounPhrase pronTe ;
|
||||
yes_Phr = ss ("Kyllä" ++ stopPunct) ;
|
||||
you_NP = pronNounPhrase pronTe ;
|
||||
without_Prep = prePrep partitive "ilman" ;
|
||||
with_Prep = postGenPrep "kanssa" ;
|
||||
yes_Phr = ss "kyllä" ;
|
||||
youSg_Pron = mkPronoun "sinä" "sinun" "sinua" "sinuna" "sinuun" Sg P2 ;
|
||||
youPl_Pron = mkPronoun "te" "teidän" "teitä" "teinä" "teihin" Pl P2 ;
|
||||
youPol_Pron = mkPronoun "te" "teidän" "teitä" "teinä" "teihin" Pl P2 ; --- Sg
|
||||
|
||||
|
||||
oper
|
||||
jokuPron : Number => Case => Str =
|
||||
let
|
||||
ku = nhn (sPuu "ku") ;
|
||||
kui = nhn (sPuu "kuu")
|
||||
in
|
||||
table {
|
||||
Sg => table {
|
||||
Nom => "joku" ;
|
||||
Gen => "jonkun" ;
|
||||
c => relPron ! Sg ! c + ku.s ! NCase Sg c
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => "jotkut" ;
|
||||
c => relPron ! Pl ! c + kui.s ! NCase Pl c
|
||||
}
|
||||
} ;
|
||||
|
||||
jokinPron : Number => Case => Str =
|
||||
table {
|
||||
Sg => table {
|
||||
Nom => "jokin" ;
|
||||
Gen => "jonkin" ;
|
||||
c => relPron ! Sg ! c + "kin"
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => "jotkin" ;
|
||||
c => relPron ! Pl ! c + "kin"
|
||||
}
|
||||
} ;
|
||||
|
||||
mikaInt : Number => Case => Str =
|
||||
let {
|
||||
mi = nhn (sSuo "mi")
|
||||
} in
|
||||
table {
|
||||
Sg => table {
|
||||
Nom => "mikä" ;
|
||||
Gen => "minkä" ;
|
||||
c => mi.s ! NCase Sg c
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => "mitkä" ;
|
||||
Gen => "mittenkä" ;
|
||||
c => mi.s ! NCase Sg c
|
||||
}
|
||||
} ;
|
||||
|
||||
kukaInt : Number => Case => Str =
|
||||
let {
|
||||
ku = nhn (sRae "kuka" "kenenä") ;
|
||||
ket = nhn (sRae "kuka" "keinä")} in
|
||||
table {
|
||||
Sg => table {
|
||||
Nom => "kuka" ;
|
||||
Part => "ketä" ;
|
||||
Illat => "keneen" ;
|
||||
c => ku.s ! NCase Sg c
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => "ketkä" ;
|
||||
Illat => "keihin" ;
|
||||
c => ket.s ! NCase Pl c
|
||||
}
|
||||
} ;
|
||||
mikaanPron : Number => Case => Str = \\n,c =>
|
||||
case <n,c> of {
|
||||
<Sg,Nom> => "mikään" ;
|
||||
<_,Part> => "mitään" ;
|
||||
<Sg,Gen> => "minkään" ;
|
||||
<Pl,Nom> => "mitkään" ;
|
||||
<Pl,Gen> => "mittenkään" ;
|
||||
<_,Ess> => "minään" ;
|
||||
<_,Iness> => "missään" ;
|
||||
<_,Elat> => "mistään" ;
|
||||
<_,Adess> => "millään" ;
|
||||
<_,Ablat> => "miltään" ;
|
||||
_ => mikaInt ! n ! c + "kään"
|
||||
} ;
|
||||
|
||||
kukaanPron : Number => Case => Str =
|
||||
table {
|
||||
Sg => table {
|
||||
Nom => "kukaan" ;
|
||||
Part => "ketään" ;
|
||||
Ess => "kenään" ;
|
||||
Iness => "kessään" ;
|
||||
Elat => "kestään" ;
|
||||
Illat => "kehenkään" ;
|
||||
Adess => "kellään" ;
|
||||
Ablat => "keltään" ;
|
||||
c => kukaInt ! Sg ! c + "kään"
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => "ketkään" ;
|
||||
Part => "keitään" ;
|
||||
Ess => "keinään" ;
|
||||
Iness => "keissään" ;
|
||||
Elat => "keistään" ;
|
||||
Adess => "keillään" ;
|
||||
Ablat => "keiltään" ;
|
||||
c => kukaInt ! Pl ! c + "kään"
|
||||
}
|
||||
} ;
|
||||
|
||||
pronSe : ProperName = {
|
||||
s = table {
|
||||
Nom => "se" ;
|
||||
Gen => "sen" ;
|
||||
Part => "sitä" ;
|
||||
Transl => "siksi" ;
|
||||
Ess => "sinä" ;
|
||||
Iness => "siinä" ;
|
||||
Elat => "siitä" ;
|
||||
Illat => "siihen" ;
|
||||
Adess => "sillä" ;
|
||||
Ablat => "siltä" ;
|
||||
Allat => "sille" ;
|
||||
Abess => "sittä"
|
||||
} ;
|
||||
} ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user