mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-11 20:22:51 -06:00
Estonian - the 29th complete RGL language. Copied from Kaarel Kaljurand's and Inari Listenmaa's repository in https://github.com/GF-Estonian/GF-Estonian, where later developments will continue to take place.
This commit is contained in:
612
lib/src/estonian/MorphoEst.gf
Normal file
612
lib/src/estonian/MorphoEst.gf
Normal file
@@ -0,0 +1,612 @@
|
||||
--1 A Simple Estonian Resource Morphology
|
||||
--
|
||||
-- Inari Listenmaa, Kaarel Kaljurand, based on Aarne Ranta's Finnish grammar
|
||||
--
|
||||
-- This resource morphology contains definitions needed in the resource
|
||||
-- syntax. To build a lexicon, it is better to use $ParadigmsEst$, which
|
||||
-- gives a higher-level access to this module.
|
||||
|
||||
resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in {
|
||||
|
||||
flags optimize=all ; coding=utf8;
|
||||
|
||||
oper
|
||||
|
||||
----------------------
|
||||
-- morph. paradigms --
|
||||
----------------------
|
||||
|
||||
--Noun paradigms in HjkEst
|
||||
|
||||
--Comparative adjectives
|
||||
--(could just use hjk_type_IVb_audit "suurem" "a")
|
||||
-- Comparative adjectives inflect in the same way
|
||||
-- TODO: confirm this
|
||||
dSuurempi : Str -> NForms = \suurem ->
|
||||
let
|
||||
suurema = suurem + "a" ;
|
||||
in nForms6
|
||||
suurem (suurema) (suurema + "t") (suurema + "sse")
|
||||
(suurema + "te") (suurema + "id") ;
|
||||
|
||||
-- Superlatives follow the exact same pattern as comparatives
|
||||
-- TODO: confirm this
|
||||
dSuurin : Str -> NForms = \suurim -> dSuurempi suurim ;
|
||||
|
||||
--Verb paradigms
|
||||
|
||||
|
||||
-- TS 49
|
||||
-- d in da, takse, dud ; imperfect 3sg ends in i
|
||||
cSaama : (_ : Str) -> VForms = \saama ->
|
||||
let
|
||||
saa = Predef.tk 2 saama ;
|
||||
sa = init saa ;
|
||||
sai = sa + "i" ;
|
||||
in vForms8
|
||||
saama
|
||||
(saa + "da")
|
||||
(saa + "b")
|
||||
(saa + "dakse")
|
||||
(saa + "ge") -- Imper Pl
|
||||
sai
|
||||
(saa + "nud")
|
||||
(saa + "dud") ;
|
||||
|
||||
-- TS 49
|
||||
-- no d/t in da, takse ; imperfect 3sg ends in s
|
||||
cKaima : (_ : Str) -> VForms = \kaima ->
|
||||
let
|
||||
kai = Predef.tk 2 kaima ;
|
||||
in vForms8
|
||||
kaima
|
||||
(kai + "a")
|
||||
(kai + "b")
|
||||
(kai + "akse")
|
||||
(kai + "ge")
|
||||
(kai + "s")
|
||||
(kai + "nud")
|
||||
(kai + "dud") ;
|
||||
|
||||
-- TS 49
|
||||
-- vowel changes in da, takse, no d/t ; imperfect 3sg ends in i
|
||||
cJooma : (_ : Str) -> VForms = \jooma ->
|
||||
let
|
||||
j = Predef.tk 4 jooma ;
|
||||
joo = Predef.tk 2 jooma;
|
||||
o = last joo ;
|
||||
u = case o of {
|
||||
"o" => "u" ;
|
||||
"ö" => "ü" ;
|
||||
_ => o
|
||||
} ;
|
||||
q = case o of {
|
||||
("o"|"ö") => "õ" ;
|
||||
_ => o
|
||||
} ;
|
||||
juua = j + u + u + "a" ;
|
||||
j6i = j + q + "i" ;
|
||||
in vForms8
|
||||
jooma
|
||||
juua
|
||||
(joo + "b")
|
||||
(juua + "kse")
|
||||
(joo + "ge")
|
||||
j6i
|
||||
(joo + "nud")
|
||||
(joo + "dud") ;
|
||||
|
||||
-- TS 50-52 (elama, muutuma, kirjutama), 53 (tegelema) alt forms
|
||||
-- t in takse, tud; no cons.grad
|
||||
cElama : (_ : Str) -> VForms = \elama ->
|
||||
let
|
||||
ela = Predef.tk 2 elama;
|
||||
in vForms8
|
||||
elama
|
||||
(ela + "da")
|
||||
(ela + "b")
|
||||
(ela + "takse")
|
||||
(ela + "ge") -- Imperative P1 Pl
|
||||
(ela + "s") -- Imperfect P3 Sg
|
||||
(ela + "nud")
|
||||
(ela + "tud") ;
|
||||
|
||||
-- TS 53 (tegelema)
|
||||
-- d in takse, tud; g in ge; consonant stem in takse, tud, nud, ge; no cons.grad
|
||||
cTegelema : (_ : Str) -> VForms = \tegelema ->
|
||||
let
|
||||
tegele = Predef.tk 2 tegelema ;
|
||||
tegel = init tegele ;
|
||||
in vForms8
|
||||
tegelema
|
||||
(tegel + "da")
|
||||
(tegele + "b")
|
||||
(tegel + "dakse")
|
||||
(tegel + "ge") -- Imperative P1 Pl
|
||||
(tegele + "s") -- Imperfect P3 Sg
|
||||
(tegel + "nud")
|
||||
(tegel + "dud") ;
|
||||
|
||||
-- TS 54 (tulema)
|
||||
-- consonant assimilation (l,r,n) in da, takse
|
||||
-- d in tud, g in ge
|
||||
-- imperfect 3sg ends in i
|
||||
cTulema : (_ : Str) -> VForms = \tulema ->
|
||||
let
|
||||
tul = Predef.tk 3 tulema ;
|
||||
l = last tul ;
|
||||
tull = tul + l ;
|
||||
in
|
||||
vForms8
|
||||
tulema
|
||||
(tull + "a")
|
||||
(tul + "eb")
|
||||
(tull + "akse")
|
||||
(tul + "ge")
|
||||
(tul + "i")
|
||||
(tul + "nud")
|
||||
(tul + "dud") ;
|
||||
|
||||
-- TS 55-56 (õppima, sündima)
|
||||
-- t in takse, tud ; consonant gradation on stem
|
||||
cLeppima : (_ : Str) -> VForms = \leppima ->
|
||||
let
|
||||
leppi = Predef.tk 2 leppima ;
|
||||
i = last leppi ;
|
||||
lepp = init leppi ;
|
||||
lepi = (weaker lepp) + i
|
||||
in vForms8
|
||||
leppima
|
||||
(leppi + "da")
|
||||
(lepi + "b")
|
||||
(lepi + "takse")
|
||||
(leppi + "ge") -- Imperative P1 Pl
|
||||
(leppi + "s") -- Imperfect P3 Sg
|
||||
(leppi + "nud")
|
||||
(lepi + "tud") ;
|
||||
|
||||
-- TS 57 (lugema)
|
||||
-- Like 55-56 but irregular gradation patterns, that shouldn't be in HjkEst.weaker
|
||||
--including also marssima,valssima
|
||||
cLugema : (_ : Str) -> VForms = \lugema ->
|
||||
let
|
||||
luge = Predef.tk 2 lugema ;
|
||||
lug = init luge ;
|
||||
l = Predef.tk 3 luge ;
|
||||
e = last luge ;
|
||||
loe = case luge of {
|
||||
_ + ("aju"|"adu"|"agu") => l + "ao" ;
|
||||
_ + "adi" => l + "ae" ;
|
||||
"haudu" => "hau" ;
|
||||
_ + ("idu"|"igu") => l + "eo" ;
|
||||
_ + "ida" => l + "ea" ;
|
||||
_ + "udu" => l + "oo" ;
|
||||
_ + ("uge"|"ude") => l + "oe" ;
|
||||
|
||||
_ + #c + "ssi" => (init lug) + e;
|
||||
_ => (weaker lug) + e
|
||||
} ;
|
||||
in vForms8
|
||||
lugema
|
||||
(luge + "da")
|
||||
(loe + "b")
|
||||
(loe + "takse")
|
||||
(luge + "ge") -- Imperative P1 Pl
|
||||
(luge + "s") -- Imperfect P3 Sg
|
||||
(luge + "nud")
|
||||
(loe + "tud") ;
|
||||
|
||||
|
||||
-- TS 58 muutma, saatma,
|
||||
-- like laskma (TS 62, 64), but no reduplication of stem consonant (muutma~muuta, not *muutta)
|
||||
-- like andma (TS 63) but different takse (muudetakse vs. antakse)
|
||||
cMuutma : (_ : Str) -> VForms = \muutma ->
|
||||
let
|
||||
muut = Predef.tk 2 muutma ;
|
||||
muud = weaker muut ;
|
||||
in vForms8
|
||||
muutma
|
||||
(muut + "a")
|
||||
(muud + "ab")
|
||||
(muud + "etakse") -- always e?
|
||||
(muut + "ke")
|
||||
(muut + "is")
|
||||
(muut + "nud")
|
||||
(muud + "etud") ; -- always e?
|
||||
|
||||
-- TS 59-60 (petma~petetakse, jätma~jäetakse)
|
||||
-- takse given as second argument
|
||||
cPetma : (_,_ : Str) -> VForms = \petma,jaetakse ->
|
||||
let
|
||||
pet = Predef.tk 2 petma ;
|
||||
pett = stronger pet ;
|
||||
jaet = Predef.tk 4 jaetakse ;
|
||||
jaetud = jaet + "ud"
|
||||
in vForms8
|
||||
petma
|
||||
(pett + "a")
|
||||
(pet + "ab")
|
||||
jaetakse
|
||||
(pet + "ke")
|
||||
(pett + "is")
|
||||
(pet + "nud")
|
||||
jaetud ;
|
||||
|
||||
{- -- TS 60 (jatma)
|
||||
-- weak stem in ma, strong in da ; irregular takse, tud
|
||||
cJatma : (_ : Str) -> VForms = \jatma ->
|
||||
let
|
||||
jat = Predef.tk 2 jatma ;
|
||||
jatt = stronger jat ;
|
||||
ko = (weaker (weaker jat))
|
||||
--weaker jät = jäd ; weaker (weaker jät) = jä
|
||||
--weaker küt = kö ; weaker (weaker küt) = kö
|
||||
--HjkEst.weaker takes care of kütma->köetud
|
||||
in vForms8
|
||||
jatma
|
||||
(jatt + "a")
|
||||
(jat + "ab")
|
||||
(ko + "etakse") --always e?
|
||||
(jat + "ke")
|
||||
(jatt + "is")
|
||||
(jat + "nud")
|
||||
(ko + "etud") ;
|
||||
-}
|
||||
|
||||
-- TS 61 (laulma)
|
||||
--vowel (a/e) given with the second argument
|
||||
--veenma,naerma
|
||||
cKuulma : (_,_ : Str) -> VForms = \kuulma,kuuleb ->
|
||||
let
|
||||
kuul = Predef.tk 2 kuulma ;
|
||||
in vForms8
|
||||
kuulma
|
||||
(kuul + "da")
|
||||
kuuleb
|
||||
(kuul + "dakse")
|
||||
(kuul + "ge")
|
||||
(kuul + "is")
|
||||
(kuul + "nud")
|
||||
(kuul + "dud") ;
|
||||
|
||||
-- TS 62 (tõusma), 64 (mõksma)
|
||||
-- vowel (a/e) given with the second argument
|
||||
-- doesn't give alt. forms joosta, joostes
|
||||
cLaskma : (_,_ : Str) -> VForms = \laskma,laseb ->
|
||||
let
|
||||
lask = Predef.tk 2 laskma ;
|
||||
las = weaker lask ; --no effect on tõusma
|
||||
in vForms8
|
||||
laskma
|
||||
(las + "ta")
|
||||
laseb
|
||||
(las + "takse")
|
||||
(las + "ke")
|
||||
(lask + "is")
|
||||
(lask + "nud")
|
||||
(las + "tud") ;
|
||||
|
||||
-- TS 62 alt forms
|
||||
cJooksma : (_ : Str) -> VForms = \jooksma ->
|
||||
let
|
||||
jooks = Predef.tk 2 jooksma ;
|
||||
joos = (Predef.tk 2 jooks) + "s" ;
|
||||
in vForms8
|
||||
jooksma
|
||||
(joos + "ta")
|
||||
(jooks + "eb")
|
||||
(joos + "takse")
|
||||
(joos + "ke")
|
||||
(jooks + "is")
|
||||
(jooks + "nud")
|
||||
(joos + "tud") ;
|
||||
|
||||
-- TS 63 (andma, murdma, hoidma)
|
||||
-- vowel given in second arg (andma~annab; tundma~tunneb)
|
||||
cAndma : (_,_ : Str) -> VForms = \andma,annab ->
|
||||
let
|
||||
and = Predef.tk 2 andma ; --murd(ma), hoid(ma)
|
||||
an = init and ; --mur(d), hoi(d)
|
||||
ann = weaker and ; --murr, hoi
|
||||
te = case (last ann) of { --to prevent teadma~teaab
|
||||
"a" => init ann ;
|
||||
_ => ann
|
||||
} ;
|
||||
in vForms8
|
||||
andma
|
||||
(and + "a")
|
||||
annab
|
||||
(an + "takse")
|
||||
(and + "ke")
|
||||
(and + "is")
|
||||
(and + "nud")
|
||||
(an + "tud") ;
|
||||
|
||||
-- TS 65 (pesema)
|
||||
-- a consonant stem verb in disguise
|
||||
cPesema : (_ : Str) -> VForms = \pesema ->
|
||||
let
|
||||
pese = Predef.tk 2 pesema ;
|
||||
pes = init pese ;
|
||||
in vForms8
|
||||
pesema
|
||||
(pes + "ta")
|
||||
(pese + "b")
|
||||
(pes + "takse")
|
||||
(pes + "ke")
|
||||
(pes + "i")
|
||||
(pes + "nud")
|
||||
(pes + "tud") ;
|
||||
|
||||
-- TS 66 (nägema)
|
||||
-- näg, näh and näi stems
|
||||
cNagema : (_ : Str) -> VForms = \nagema ->
|
||||
let
|
||||
nage = Predef.tk 2 nagema ;
|
||||
nag = init nage ;
|
||||
na = init nag ;
|
||||
nah = na + "h" ;
|
||||
nai = na + "i" ;
|
||||
in vForms8
|
||||
nagema
|
||||
(nah + "a")
|
||||
(na + "eb")
|
||||
(nah + "akse")
|
||||
(nah + "ke")
|
||||
(nag + "i")
|
||||
(nai + "nud")
|
||||
(nah + "tud") ;
|
||||
|
||||
|
||||
-- TS 67-68 (hüppama, tõmbama)
|
||||
-- strong stem in ma, b, s
|
||||
-- weak stem in da, takse, ge, nud, tud
|
||||
-- t in da, takse; k in ge
|
||||
cHyppama : (_ : Str) -> VForms = \hyppama ->
|
||||
let
|
||||
hyppa = Predef.tk 2 hyppama ;
|
||||
hypp = init hyppa ;
|
||||
a = last hyppa ;
|
||||
hypa = (weaker hypp) + a
|
||||
in vForms8
|
||||
hyppama
|
||||
(hypa + "ta")
|
||||
(hyppa + "b")
|
||||
(hypa + "takse") -- Passive
|
||||
(hypa + "ke") -- Imperative P1 Pl
|
||||
(hyppa + "s") -- Imperfect Sg P3
|
||||
(hypa + "nud") -- PastPartAct
|
||||
(hypa + "tud") ; -- PastPartPass
|
||||
|
||||
-- TS 69 (õmblema)
|
||||
cOmblema : (_ : Str) -> VForms = \omblema ->
|
||||
let
|
||||
omble = Predef.tk 2 omblema ;
|
||||
e = last omble ;
|
||||
l = last (init omble) ;
|
||||
omb = Predef.tk 2 omble ;
|
||||
omm = case omb of {
|
||||
"mõt" => "mõe" ; --some "double weak" patterns; however weaker (weaker omb) makes the coverage worse
|
||||
_ => weaker omb
|
||||
} ;
|
||||
ommel = omm + e + l ;
|
||||
in vForms8
|
||||
omblema
|
||||
(ommel + "da")
|
||||
(omble + "b")
|
||||
(ommel + "dakse") -- Passive
|
||||
(ommel + "ge") -- Imperative P1 Pl
|
||||
(omble + "s") -- Imperfect Sg P3
|
||||
(ommel + "nud") -- PastPartAct
|
||||
(ommel + "dud") ; -- PastPartPass
|
||||
|
||||
-- 2-arg paradigm to distinguish between 50-52 and 55-57
|
||||
cSattumaPettuma : (_,_ : Str) -> VForms = \pettuma,satub ->
|
||||
let
|
||||
pettu = Predef.tk 2 pettuma ;
|
||||
satu = init satub ;
|
||||
in vForms8
|
||||
pettuma
|
||||
(pettu + "da")
|
||||
(satu + "b")
|
||||
(satu + "takse") -- Passive
|
||||
(pettu + "ge") -- Imperative P1 Pl
|
||||
(pettu + "s") -- Imperfect Sg P3
|
||||
(pettu + "nud") -- PastPartAct
|
||||
(satu + "tud") ; -- PastPartPass
|
||||
|
||||
|
||||
|
||||
-----------------
|
||||
-- auxiliaries --
|
||||
-----------------
|
||||
|
||||
|
||||
{- Noun internal opers moved to ResEst
|
||||
|
||||
These used to be here:
|
||||
NForms : Type = Predef.Ints 5 => Str ;
|
||||
Noun : Type = {s: NForm => Str } ;
|
||||
nForms6 : (x1,_,_,_,_,x6 : Str) -> NForms ;
|
||||
n2nforms : Noun -> NForms ;
|
||||
nForms2N : NForms -> Noun ;
|
||||
|
||||
-}
|
||||
|
||||
-- Adjective forms
|
||||
|
||||
AForms : Type = {
|
||||
posit : NForms ;
|
||||
compar : NForms ;
|
||||
superl : NForms ;
|
||||
adv_posit, adv_compar, adv_superl : Str ;
|
||||
} ;
|
||||
|
||||
aForms2A : AForms -> Adjective = \afs -> {
|
||||
s = table {
|
||||
Posit => table {
|
||||
AN n => (nForms2N afs.posit).s ! n ;
|
||||
AAdv => afs.adv_posit
|
||||
} ;
|
||||
Compar => table {
|
||||
AN n => (nForms2N afs.compar).s ! n ;
|
||||
AAdv => afs.adv_compar
|
||||
} ;
|
||||
Superl => table {
|
||||
AN n => (nForms2N afs.superl).s ! n ;
|
||||
AAdv => afs.adv_superl
|
||||
}
|
||||
} ;
|
||||
lock_A = <>
|
||||
} ;
|
||||
|
||||
nforms2aforms : NForms -> AForms = \nforms ->
|
||||
let
|
||||
suure = init (nforms ! 1) ;
|
||||
suur = Predef.tk 4 (nforms ! 8) ;
|
||||
in {
|
||||
posit = nforms ;
|
||||
compar = dSuurempi (suure ++ "m") ;
|
||||
superl = dSuurin (suur ++ "im") ;
|
||||
adv_posit = suure + "sti" ;
|
||||
adv_compar = suure + "mmin" ;
|
||||
adv_superl = suur + "immin" ;
|
||||
} ;
|
||||
|
||||
{- Verb internal opers moved to ResEst
|
||||
|
||||
These used to be here:
|
||||
VForms : Type = Predef.Ints 7 => Str ;
|
||||
vForms8 : (x1,_,_,_,_,_,_,x8 : Str) -> VForms ;
|
||||
regVForms : (x1,_,_,x4 : Str) -> VForms ;
|
||||
vforms2V : VForms -> Verb ;
|
||||
-}
|
||||
|
||||
|
||||
-----------------------
|
||||
-- for Structural
|
||||
-----------------------
|
||||
|
||||
caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
|
||||
\\c => cn.s ! NCase n c ;
|
||||
|
||||
mkDet : Number -> CommonNoun -> {
|
||||
s,sp : Case => Str ; -- minun kolme
|
||||
n : Number ; -- Pl (agreement feature for verb)
|
||||
isNum : Bool ; -- True (a numeral is present)
|
||||
isDef : Bool -- True (verb agrees in Pl, Nom is not Part)
|
||||
} = \n, noun -> heavyDet {
|
||||
s = \\c => noun.s ! NCase n c ;
|
||||
n = n ;
|
||||
isNum = False ;
|
||||
isDef = True --- does this hold for all new dets?
|
||||
} ;
|
||||
|
||||
-- Here we define personal and relative pronouns.
|
||||
|
||||
-- input forms: Nom, Gen, Part
|
||||
-- Note that the Fin version required 5 input forms, the
|
||||
-- Est pronouns thus seem to be much simpler.
|
||||
-- TODO: remove NPAcc?
|
||||
-- I: keep NPAcc; see appCompl in ResEst, it takes care of finding a right case for various types of complements; incl. when pronouns get different treatment than nouns (PassVP).
|
||||
mkPronoun : (_,_,_ : Str) -> Number -> Person ->
|
||||
{s : NPForm => Str ; a : Agr} =
|
||||
\mina, minu, mind, n, p ->
|
||||
let {
|
||||
minu_short = ie_to_i minu
|
||||
} in
|
||||
{s = table {
|
||||
NPCase Nom => mina ;
|
||||
NPCase Gen => minu ;
|
||||
NPCase Part => mind ;
|
||||
NPCase Transl => minu + "ks" ;
|
||||
NPCase Ess => minu + "na" ;
|
||||
NPCase Iness => minu_short + "s" ;
|
||||
NPCase Elat => minu_short + "st" ;
|
||||
NPCase Illat => minu_short + "sse" ;
|
||||
NPCase Adess => minu_short + "l" ;
|
||||
NPCase Ablat => minu_short + "lt" ;
|
||||
NPCase Allat => minu_short + "le" ;
|
||||
NPCase Abess => minu + "ta" ;
|
||||
NPCase Comit => minu + "ga" ;
|
||||
NPCase Termin => minu + "ni" ;
|
||||
NPAcc => mind
|
||||
} ;
|
||||
a = Ag n p
|
||||
} ;
|
||||
|
||||
-- meiesse/teiesse -> meisse/teisse
|
||||
ie_to_i : Str -> Str ;
|
||||
ie_to_i x =
|
||||
case x of {
|
||||
x1 + "ie" + x2 => x1 + "i" + x2 ;
|
||||
_ => x
|
||||
} ;
|
||||
|
||||
-- TODO: this does not seem to be called from anyway
|
||||
mkDemPronoun : (_,_,_,_,_ : Str) -> Number ->
|
||||
{s : NPForm => Str ; a : Agr} =
|
||||
\tuo, tuon, tuota, tuona, tuohon, n ->
|
||||
let pro = mkPronoun tuo tuon tuota n P3
|
||||
in {
|
||||
s = table {
|
||||
NPAcc => tuo ;
|
||||
c => pro.s ! c
|
||||
} ;
|
||||
a = pro.a
|
||||
} ;
|
||||
|
||||
-- The relative pronoun, "joka", is inflected in case and number,
|
||||
-- like common nouns, but it does not take possessive suffixes.
|
||||
-- The inflextion shows a surprising similarity with "suo".
|
||||
|
||||
oper
|
||||
-- TODO: fix: Nom => kelled
|
||||
-- TODO: mis
|
||||
relPron : Number => Case => Str =
|
||||
let kes = nForms2N (nForms6 "kes" "kelle" "keda" "kellesse" "kelle" "keda") in
|
||||
\\n,c => kes.s ! NCase n c ;
|
||||
|
||||
ProperName = {s : Case => Str} ;
|
||||
|
||||
-- TODO: generate using mkPronoun
|
||||
pronSe : ProperName = {
|
||||
s = table {
|
||||
Nom => "see" ;
|
||||
Gen => "selle" ;
|
||||
Part => "seda" ;
|
||||
Transl => "selleks" ;
|
||||
Ess => "sellena" ;
|
||||
Iness => "selles" ;
|
||||
Elat => "sellest" ;
|
||||
Illat => "sellesse" ;
|
||||
Adess => "sellel" ;
|
||||
Ablat => "sellelt" ;
|
||||
Allat => "sellele" ;
|
||||
Abess => "selleta" ;
|
||||
Comit => "sellega" ;
|
||||
Termin => "selleni"
|
||||
} ;
|
||||
} ;
|
||||
|
||||
-- TODO: generate using mkPronoun
|
||||
pronNe : ProperName = {
|
||||
s = table {
|
||||
Nom => "need" ;
|
||||
Gen => "nende" ;
|
||||
Part => "neid" ;
|
||||
Transl => "nendeks" ;
|
||||
Ess => "nendena" ;
|
||||
Iness => "nendes" ;
|
||||
Elat => "nendest" ;
|
||||
Illat => "nendesse" ;
|
||||
Adess => "nendel" ;
|
||||
Ablat => "nendelt" ;
|
||||
Allat => "nendele" ;
|
||||
Abess => "nendeta" ;
|
||||
Comit => "nendega" ;
|
||||
Termin => "nendeni"
|
||||
} ;
|
||||
} ;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user