1
0
forked from GitHub/gf-rgl

Hrv: copulas and personal pronouns

This commit is contained in:
Aarne Ranta
2022-09-27 09:58:03 +02:00
parent 7a0b1eed34
commit b5ea76dd79
2 changed files with 103 additions and 145 deletions

View File

@@ -465,14 +465,15 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
-- just an example of a traditional paradigm
---- TODO other traditional paradigms
aeiVerbForms : Str -> VerbForms = \citati ->
aeiVerbForms : Str -> Str -> Str -> VerbForms = \citati, citam, citao ->
let
cita = Predef.tk 2 citati ;
cita = init citam ;
u = case last cita of {
"a" => "aju" ;
"e" => "u" ;
"i" => "e"
} ;
cital = init citao + "l" ;
in table {
VInf => citati ;
VPres Sg P1 => cita + "m" ;
@@ -481,176 +482,131 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
VPres Pl P1 => cita + "mo" ;
VPres Pl P2 => cita + "te" ;
VPres pl P3 => init cita + u ;
VPastPart (Masc _) Sg => cita + "o" ;
VPastPart Fem Sg => cita + "la" ;
VPastPart Neutr Sg => cita + "lo" ;
VPastPart (Masc _) Pl => cita + "li" ;
VPastPart Fem Pl => cita + "le" ;
VPastPart Neutr Pl => cita + "la"
VPastPart (Masc _) Sg => citao ;
VPastPart Fem Sg => cital + "a" ;
VPastPart Neutr Sg => cital + "o" ;
VPastPart (Masc _) Pl => cital + "i" ;
VPastPart Fem Pl => cital + "e" ;
VPastPart Neutr Pl => cital + "a"
} ;
{-
-- copula
jesam_Copula : {short, long, negative : Number => Person => Str} =
let
sam : Number => Person => Str = table {
Sg => table {
P1 => "sam" ;
P2 => "si" ;
P3 => "je"
} ;
Pl => table {
P1 => "smo" ;
P2 => "ste" ;
P3 => "su"
}
}
in {
short = sam ;
long = \\n,p => case <n,p> of {
<Sg,P3> => "jeste" ; --- wiki: jest(e)
_ => sam ! n ! p
} ;
negative = \\n,p => "ni" + sam ! n ! p
} ;
biti_VerbForms : VerbForms = aeiVerbForms "biti" "budem" "bio" ;
imati_VerbForms : VerbForms = aeiVerbForms "imati" "imam" "imao" ;
---------------------------
-- Pronouns
PronForms : Type = {
nom, cnom, -- cnom is the pro-drop subject
gen, cgen,pgen, -- bare, clitic, prepositional
acc, cacc,pacc,
dat, cdat,pdat,
loc,
ins,pins : Str ;
nom,
gen, cgen, -- bare, clitic (also as Acc)
dat, cdat, -- also as Loc
ins : Str ;
a : Agr
} ;
---- TODO: possessives
personalPron : Agr -> PronForms = \a ->
{a = a ; cnom = []} **
case a of {
Ag _ Sg P1 => {
nom = "ja" ;
gen,acc,pgen,pacc = "mňa" ;
cgen,cacc = "ma" ;
dat,pdat,loc = "mne" ;
gen = "mene" ;
cgen = "ma" ;
dat = "meni" ;
cdat = "mi" ;
ins,pins = "mnou"
ins = "mnom"
} ;
Ag _ Sg P2 => {
nom = "ty" ;
gen,acc,pgen,pacc = "teba" ;
cgen,cacc = "ťa" ;
dat,pdat,loc = "tebe" ;
nom = "ti" ;
gen = "tebe" ;
cgen = "te" ;
dat = "tebi" ;
cdat = "ti" ;
ins,pins = "tebou"
} ;
Ag (Masc _) Sg P3 => {
nom = "on" ;
gen,acc = "jeho" ;
cgen,cacc = "ho" ;
pgen,pacc = "neho" ;
---- pgen = "ňho"; ---- bind, only with prepositions "do", "u"
---- pgen = "ň"; ---- bind, only with preposition "do", "u"
dat = "jemu" ;
---- pacc = "eň" ; ---- bind, only with preposition "cez"
---- pacc = "ňho" ; ---- bind, only with prepositions "na", "pre", "za"
---- pacc = "ň" ; ---- bind, only with preposition "na", "pre", "za"
cdat = "mu" ;
pdat = "nemu" ;
loc = "ňom" ;
ins,pins = "ním" ;
ins = "tobom"
} ;
Ag Fem Sg P3 => {
nom = "ona" ;
gen,cgen,pgen,acc,cacc,pacc = "ju" ;
cdat = "jej" ;
dat,pdat,loc = "nej" ;
ins,pins = "" ;
gen = "nje" ;
cgen = "je" ;
dat = "njoj" ;
cdat = "joj" ;
ins = "njom"
} ;
Ag Neutr Sg P3 => {
nom = "ono" ;
gen, acc = "jeho" ;
cgen,cacc = "ho" ;
pgen = "neho" ;
---- pgen = "ňho"; ---- bind, only with prepositions "do", "u"
---- pgen = "ň"; ---- bind, only with preposition "do", "u"
dat = "jemu" ;
---- pacc = "eň" ; ---- bind, only with preposition "cez"
---- pacc = "ňho" ; ---- bind, only with prepositions "na", "pre", "za"
---- pacc = "ň" ; ---- bind, only with preposition "na", "pre", "za"
pacc = "jeho"; ---- doublecheck
Ag g Sg P3 => {
nom = case g of {
Masc _ => "on" ;
_ => "ono"
} ;
gen = "njega" ;
cgen = "ga" ;
dat = "njemu" ;
cdat = "mu" ;
pdat = "nemu" ;
loc = "ňom" ;
ins,pins = "ním" ;
ins = "njim"
} ;
Ag _ Pl P1 => {
nom = "my" ;
gen,acc,
cgen,cacc,
pgen,pacc,
loc = "nás" ;
dat,cdat,pdat = "nám" ;
ins,pins = "nami" ;
nom = "mi" ;
gen, cgen = "nas" ;
dat, ins = "nama" ;
cdat = "nam"
} ;
Ag _ Pl P2 => {
nom = "vy" ;
gen,acc,
cgen,cacc,
pgen,pacc,
loc = "vás" ;
dat,cdat,pdat = "vám" ;
ins,pins = "vami" ;
nom = "vi" ;
gen, cgen = "vas" ;
dat, ins = "vama" ;
cdat = "vam"
} ;
Ag (Masc Anim) Pl P3 => {
nom = "oni" ;
gen,cgen,acc,cacc = "ich" ;
pgen,pacc = "nich" ;
dat,cdat = "im" ;
pdat = "nim" ;
loc = "nich" ;
ins,pins = "nimi" ;
Ag g Pl P3 => {
nom = case g of {
Masc _ => "oni" ;
Fem => "one" ;
Neutr => "ona"
} ;
Ag _ Pl P3 => {
nom = "ony" ;
gen,cgen,acc,cacc = "ich" ;
pgen,pacc = "ne" ;
dat,cdat = "im" ;
pdat = "nim" ;
loc = "nich" ;
ins,pins = "nimi" ;
gen = "njih" ;
cgen = "ih" ;
dat, ins = "njima" ;
cdat = "im"
}
} ;
possessivePron : Agr -> DemPronForms = \a -> case a of {
Ag _ Sg P1 => otcovA "moj" ** {
msnom = "môj" ; msgen = "môjho" ; msdat = "môjmu" ;
msins = "mojím" ;
ampnom = "moji" ;
nsnom, fpnom = "moje" ;
pgen = "mojich" ;
pdat = "mojim" ;
pins = "mojimi" ;
} ;
Ag _ Sg P2 => otcovA "tvoj" ** {
msnom = "tvoj" ; msgen = "tvojho" ; msdat = "tvojmu" ;
msins = "tvojím" ;
ampnom = "tvoji" ;
nsnom, fpnom = "tvoje" ;
pgen = "tvojich" ;
pdat = "tvojim" ;
pins = "tvojimi" ;
} ;
Ag _ Pl P1 => otcovA "naš" ** {
msnom = "náš" ; msgen = "nášho" ; msdat = "nášmu" ;
msins = "naším" ;
ampnom = "naši" ;
nsnom, fpnom = "naše" ;
pgen = "našich" ;
pdat = "našim" ;
pins = "našimi" ;
} ;
Ag _ Pl P2 => otcovA "vaš" ** {
msnom = "váš" ; msgen = "vášho" ; msdat = "vášmu" ;
msins = "vaším" ;
ampnom = "vaši" ;
nsnom, fpnom = "vaše" ;
pgen = "vašich" ;
pdat = "vašim" ;
pins = "vašimi" ;
} ;
Ag (Masc _ | Neutr) Sg P3 => invarDemPronForms "jeho" ** {pdat = "jeho"} ;
Ag Fem Sg P3 => invarDemPronForms "jej" ** {pdat = "jej"} ;
Ag _ Pl P3 => invarDemPronForms "ich" ** {pdat = "ich"}
possessivePron : Agr -> AdjForms = \a -> case a of {
Ag _ Sg P1 => velikA "moj" ;
Ag _ Sg P2 => velikA "tvoj" ;
Ag (Masc _) Sg P3 => velikA "njegov" ;
Ag (Fem|Neutr) Sg P3 => velikA "njezin" ; -- BCMS: Hrv: otherwise njen
Ag _ Pl P1 => velikA "naš" ;
Ag _ Pl P2 => velikA "vaš" ;
Ag _ Pl P3 => velikA "njihov"
} ;
{-
reflPossessivePron : DemPronForms = otcovA "svoj" ** {
msnom = "svoj" ; msgen = "svojho" ; msdat = "svojmu" ;
msins = "svojím" ;
@@ -660,10 +616,12 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
pdat = "svojim" ;
pins = "svojimi" ;
} ;
-}
mkPron : Agr -> PronForms ** {poss : DemPronForms} = \a ->
mkPron : Agr -> PronForms ** {poss : AdjForms} = \a ->
personalPron a ** {poss = possessivePron a} ;
{-
--------------------------------
-- demonstrative pronouns, used for Quant and Det

View File

@@ -28,6 +28,6 @@ cc -table -unqual adjFormsAdjective (velikA "mastan")
cc -table -unqual adjFormsAdjective (velikA "gladan")
cc -table -unqual adjFormsAdjective (velikA "nizak")
cc -table -unqual aeiVerbForms ("čitati")
cc -table -unqual aeiVerbForms ("raditi")
cc -table -unqual aeiVerbForms "čitati" "čitam" "čitao"
cc -table -unqual aeiVerbForms "raditi" "radem" "radio"