diff --git a/lib/src/slovenian/CatSlv.gf b/lib/src/slovenian/CatSlv.gf index b549f2261..1e4a9568c 100644 --- a/lib/src/slovenian/CatSlv.gf +++ b/lib/src/slovenian/CatSlv.gf @@ -20,12 +20,12 @@ lincat CN = {s : Species => Case => Number => Str; g : Gender} ; NP = {s : Case => Str ; a : Agr} ; - Pron = {s : Case => Str; poss : Str; a : Agr} ; + Pron = {s : Case => Str; poss : Gender => Case => Number => Str; a : Agr} ; Det = {s : Gender => Case => Str; spec : Species; n : NumAgr} ; Num = {s : Gender => Case => Str ; n : NumAgr} ; Card = {s : Gender => Case => Str ; n : NumAgr} ; - Quant = {s : Str; spec : Species} ; + Quant = {s : Gender => Case => Number => Str; spec : Species} ; -- Numeral Numeral = {s : Gender => Case => Str ; n : NumAgr} ; diff --git a/lib/src/slovenian/NounSlv.gf b/lib/src/slovenian/NounSlv.gf index 4d5acb602..871f73d10 100644 --- a/lib/src/slovenian/NounSlv.gf +++ b/lib/src/slovenian/NounSlv.gf @@ -19,7 +19,7 @@ concrete NounSlv of Noun = CatSlv ** open ResSlv in { UsePron p = p ; DetQuant quant num = { - s = \\c,g => quant.s ++ num.s ! c ! g; + s = \\g,c => quant.s ! g ! c ! (numAgr2num ! num.n) ++ num.s ! g ! c; spec = quant.spec ; n = num.n ; } ; @@ -42,12 +42,12 @@ concrete NounSlv of Noun = CatSlv ** open ResSlv in { NumNumeral numeral = {s = numeral.s; n = numeral.n} ; DefArt = { - s = "" ; + s = \\_,_,_ => "" ; spec = Def } ; IndefArt = { - s = "" ; + s = \\_,_,_ => "" ; spec = Indef } ; diff --git a/lib/src/slovenian/ParadigmsSlv.gf b/lib/src/slovenian/ParadigmsSlv.gf index a9a1bd066..35605abaa 100644 --- a/lib/src/slovenian/ParadigmsSlv.gf +++ b/lib/src/slovenian/ParadigmsSlv.gf @@ -289,19 +289,85 @@ oper mkAdA : Str -> AdA = \s -> lin AdA {s=s} ; - mkPron : (_,_,_,_,_,_,_ : Str) -> Gender -> Number -> Person -> Pron = - \nom,acc,gen,dat,loc,instr,poss,g,n,p -> - lin Pron {s = table { - Nom => nom; + mkPron : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Number -> Person -> Pron = + \nom,acc,gen,dat,loc,instr, + mSgNom,mSgGen,mSgDat,mSgAcc,mSgLoc,mSgInstr, + mDlNom,mDlGen,mDlDat,mDlAcc,mDlLoc,mDlInstr, + mPlNom,mPlGen,mPlDat,mPlAcc,mPlLoc,mPlInstr, + fSgNom,fSgGen,fSgDat,fSgAcc,fSgLoc,fSgInstr, + fDlNom,fDlGen,fDlDat,fDlAcc,fDlLoc,fDlInstr, + fPlNom,fPlGen,fPlDat,fPlAcc,fPlLoc,fPlInstr, + nSgNom,nSgGen,nSgDat,nSgAcc,nSgLoc,nSgInstr, + nDlNom,nDlGen,nDlDat,nDlAcc,nDlLoc,nDlInstr, + nPlNom,nPlGen,nPlDat,nPlAcc,nPlLoc,nPlInstr,g,n,p -> lin Pron { + s = table { Nom => nom; Acc => acc; Gen => gen; Dat => dat; Loc => loc; Instr=>instr } ; - poss = poss ; - a = {g=g; n=n; p=p} - } ; + poss = table { + Masc => table {Nom => table Number [mSgNom; mDlNom; mPlNom]; + Gen => table Number [mSgGen; mDlGen; mPlGen]; + Dat => table Number [mSgDat; mDlDat; mPlDat]; + Acc => table Number [mSgAcc; mDlAcc; mPlAcc]; + Loc => table Number [mSgLoc; mDlLoc; mPlLoc]; + Instr => table Number [mSgInstr; mDlInstr; mPlInstr] + }; + Fem => table {Nom => table Number [fSgNom; fDlNom; fPlNom]; + Gen => table Number [fSgGen; fDlGen; fPlGen]; + Dat => table Number [fSgDat; fDlDat; fPlDat]; + Acc => table Number [fSgAcc; fDlAcc; fPlAcc]; + Loc => table Number [fSgLoc; fDlLoc; fPlLoc]; + Instr => table Number [fSgInstr; fDlInstr; fPlInstr] + }; + Neut => table {Nom => table Number [nSgNom; nDlNom; nPlNom]; + Gen => table Number [nSgGen; nDlGen; nPlGen]; + Dat => table Number [nSgDat; nDlDat; nPlDat]; + Acc => table Number [nSgAcc; nDlAcc; nPlAcc]; + Loc => table Number [nSgLoc; nDlLoc; nPlLoc]; + Instr => table Number [nSgInstr; nDlInstr; nPlInstr] + } + } ; + a = {g=g; n=n; p=p} + } ; + + mkQuant : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Species -> Quant = + \mSgNom,mSgGen,mSgDat,mSgAcc,mSgLoc,mSgInstr, + mDlNom,mDlGen,mDlDat,mDlAcc,mDlLoc,mDlInstr, + mPlNom,mPlGen,mPlDat,mPlAcc,mPlLoc,mPlInstr, + fSgNom,fSgGen,fSgDat,fSgAcc,fSgLoc,fSgInstr, + fDlNom,fDlGen,fDlDat,fDlAcc,fDlLoc,fDlInstr, + fPlNom,fPlGen,fPlDat,fPlAcc,fPlLoc,fPlInstr, + nSgNom,nSgGen,nSgDat,nSgAcc,nSgLoc,nSgInstr, + nDlNom,nDlGen,nDlDat,nDlAcc,nDlLoc,nDlInstr, + nPlNom,nPlGen,nPlDat,nPlAcc,nPlLoc,nPlInstr,spec -> lin Quant { + s = table { + Masc => table {Nom => table Number [mSgNom; mDlNom; mPlNom]; + Gen => table Number [mSgGen; mDlGen; mPlGen]; + Dat => table Number [mSgDat; mDlDat; mPlDat]; + Acc => table Number [mSgAcc; mDlAcc; mPlAcc]; + Loc => table Number [mSgLoc; mDlLoc; mPlLoc]; + Instr => table Number [mSgInstr; mDlInstr; mPlInstr] + }; + Fem => table {Nom => table Number [fSgNom; fDlNom; fPlNom]; + Gen => table Number [fSgGen; fDlGen; fPlGen]; + Dat => table Number [fSgDat; fDlDat; fPlDat]; + Acc => table Number [fSgAcc; fDlAcc; fPlAcc]; + Loc => table Number [fSgLoc; fDlLoc; fPlLoc]; + Instr => table Number [fSgInstr; fDlInstr; fPlInstr] + }; + Neut => table {Nom => table Number [nSgNom; nDlNom; nPlNom]; + Gen => table Number [nSgGen; nDlGen; nPlGen]; + Dat => table Number [nSgDat; nDlDat; nPlDat]; + Acc => table Number [nSgAcc; nDlAcc; nPlAcc]; + Loc => table Number [nSgLoc; nDlLoc; nPlLoc]; + Instr => table Number [nSgInstr; nDlInstr; nPlInstr] + } + } ; + spec = spec + }; mkNP : (_,_,_,_,_,_ : Str) -> Gender -> Number -> NP = \nom,acc,gen,dat,loc,instr,g,n -> diff --git a/lib/src/slovenian/ResSlv.gf b/lib/src/slovenian/ResSlv.gf index daba9ecd9..4acab39d3 100644 --- a/lib/src/slovenian/ResSlv.gf +++ b/lib/src/slovenian/ResSlv.gf @@ -96,5 +96,8 @@ oper insertObj : (Agr => Str) -> VP -> VP = \obj,vp -> vp ** { s2 = \\a => vp.s2 ! a ++ obj ! a ; } ; + + numAgr2num : NumAgr => Number = + table {UseNum n => n; UseGen => Pl} ; } diff --git a/lib/src/slovenian/StructuralSlv.gf b/lib/src/slovenian/StructuralSlv.gf index f809fa8da..2a71a66ff 100644 --- a/lib/src/slovenian/StructuralSlv.gf +++ b/lib/src/slovenian/StructuralSlv.gf @@ -2,17 +2,116 @@ concrete StructuralSlv of Structural = CatSlv ** open ResSlv, ParadigmsSlv in { lin and_Conj = mkConj "in" ; - he_Pron = mkPron "òn" "njêga" "njêga" "njêmu" "njêm" "njím" "njegôv" Masc Sg P3 ; - i_Pron = mkPron "jàz" "méne" "méne" "méni" "méni" ("menój"|"máno") "mój" Masc Sg P1 ; - it_Pron = mkPron "ôno" "njêga" "njêga" "njêmu" "njêm" "njím" ("njegôv"|"njegòv") Neut Sg P3 ; - she_Pron = variants {mkPron "ôna" "njó" "njé" "njéj" "njéj" "njó" "njén" Fem Sg P3 ; - mkPron "ôna" "njó" "njé" "njèj" "njèj" "njó" "njén" Fem Sg P3 ; - mkPron "ôna" "njó" "njé" "njì" "njì" "njó" "njén" Fem Sg P3 } ; - they_Pron = mkPron "ôni" "njìh" "njìh" "njìm" "njìh" "njími" "njíhov" Masc Pl P3 ; - we_Pron = mkPron "mí" "nàs" "nàs" "nàm" "nàs" "nàmi" "nàš" Masc Pl P1 ; - youSg_Pron = mkPron "tí" "tébe" "tébe" "tébi" "tébi" ("tebój"|"tábo") "tvój" Masc Sg P2 ; - youPl_Pron = mkPron "ví" "vàs" "vàs" "vàm" "vàs" "vàmi" "vàš" Masc Pl P2 ; - youPol_Pron = mkPron "ví" "vàs" "vàs" "vàm" "vàs" "vàmi" "vàš" Masc Pl P2 ; + he_Pron = mkPron "òn" "njêga" "njêga" "njêmu" "njêm" "njím" + "njegôv" "njegôvega" "njegôvemu" ("njegôv"|"njegôvega") "njegôvem" "njegôvim" + "njegôva" "njegôvih" "njegôvima" "njegôva" "njegôvih" "njegôvima" + "njegôvi" "njegôvih" "njegôvim" "njegôve" "njegôvih" "njegôvimi" + "njegôva" "njegôve" "njegôvi" "njegôvo" "njegôvi" "njegôvo" + "njegôvi" "njegôvih" "njegôvima" "njegôvi" "njegôvih" "njegôvima" + "njegôve" "njegôvih" "njegôvim" "njegôve" "njegôvih" "njegôvimi" + "njegôve" "njegôvega" "njegôvemu" "njegôvo" "njegôvem" "njegôvim" + "njegôvi" "njegôvih" "njegôvima" "njegôvi" "njegôvih" "njegôvima" + "njegôva" "njegôvih" "njegôvim" "njegôva" "njegôvih" "njegôvimi" Masc Sg P3 ; + i_Pron = mkPron "jàz" "méne" "méne" "méni" "méni" ("menój"|"máno") + "mój" "mòjega" "mòjemu" ("mòj"|"mòjega") "mòjem" "mòjim" + "mòja" "mòjih" "mòjima" "mòja" "mòjih" "mòjima" + "mòji" "mòjih" "mòjim" "mòje" "mòjih" "mòjimi" + "mòja" "mòje" "mòji" "mòjo" "mòji" "mòjo" + "mòji" "mòjih" "mòjima" "mòji" "mòjih" "mòjima" + "mòje" "mòjih" "mòjim" "mòje" "mòjih" "mòjimi" + "mòje" "mòjega" "mòjemu" "mòjo" "mòjem" "mòjim" + "mòji" "mòjih" "mòjima" "mòji" "mòjih" "mòjima" + "mòja" "mòjih" "mòjim" "mòja" "mòjih" "mòjimi" Masc Sg P1 ; + it_Pron = mkPron "ôno" "njêga" "njêga" "njêmu" "njêm" "njím" + ("njegôv"|"njegòv") "njegôvega" "njegôvemu" ("njegôv"|"njegôvega") "njegôvem" "njegôvim" + "njegôva" "njegôvih" "njegôvima" "njegôva" "njegôvih" "njegôvima" + "njegôvi" "njegôvih" "njegôvim" "njegôve" "njegôvih" "njegôvimi" + "njegôva" "njegôve" "njegôvi" "njegôvo" "njegôvi" "njegôvo" + "njegôvi" "njegôvih" "njegôvima" "njegôvi" "njegôvih" "njegôvima" + "njegôve" "njegôvih" "njegôvim" "njegôve" "njegôvih" "njegôvimi" + "njegôve" "njegôvega" "njegôvemu" "njegôvo" "njegôvem" "njegôvim" + "njegôvi" "njegôvih" "njegôvima" "njegôvi" "njegôvih" "njegôvima" + "njegôva" "njegôvih" "njegôvim" "njegôva" "njegôvih" "njegôvimi" Neut Sg P3 ; + she_Pron = variants {mkPron "ôna" "njó" "njé" "njéj" "njéj" "njó" ; + mkPron "ôna" "njó" "njé" "njèj" "njèj" "njó" ; + mkPron "ôna" "njó" "njé" "njì" "njì" "njó"} + "njén" "njénega" "njénemu" ("njéni"|"njénega") "njénem" "njénim" + "njéna" "njénih" "njénima" "njéna" "njénih" "njénima" + "njéni" "njénih" "njénim" "njéne" "njénih" "njénimi" + "njéna" "njéne" "njéni" "njéno" "njéni" "njéno" + "njéni" "njénih" "njénima" "njéni" "njénih" "njénima" + "njéne" "njénih" "njénim" "njéne" "njénih" "njénimi" + "njéno" "njénega" "njénemu" "njéne" "njénem" "njénim" + "njéni" "njénih" "njénima" "njéni" "njénih" "njénima" + "njéna" "njénih" "njénim" "njéna" "njénih" "njénimi" Fem Sg P3 ; + that_Quant = mkQuant "tîsti" "tîstega" "tîstemu" ("tîsti"|"tîstega") "tîstem" "tîstim" + "tîstȃ" "tîstih" "tîstima" "tîstȃ" "tîstih" "tîstima" + "tîsti" "tîstih" "tîstim" "tîste" "tîstih" "tîstimi" + "tîsta" "tîste" "tîsti" "tîsto" "tîsti" "tîsto" + "tîsti" "tîstih" "tîstima" "tîsti" "tîstih" "tîstima" + "tîste" "tîstih" "tîstim" "tîste" "tîstih" "tîstimi" + "tîsto" "tîstega" "tîstemu" "tîsto" "tîstem" "tîstim" + "tîsti" "tîstih" "tîstima" "tîsti" "tîstih" "tîstima" + "tîsta" "tîstih" "tîstim" "tîsta" "tîstih" "tîstimi" Def ; + they_Pron = mkPron "ôni" "njìh" "njìh" "njìm" "njìh" "njími" + "njíhov" "njíhovega" "njíhovemu" ("njíhov"|"njíhovega") "njíhovem" "njíhovim" + "njíhova" "njíhovih" "njíhovima" "njíhova" "njíhovih" "njíhovima" + "njíhovi" "njíhovih" "njíhovim" "njíhove" "njíhovih" "njíhovimi" + "njíhova" "njíhove" "njíhovi" "njíhovo" "njíhovi" "njíhovo" + "njíhovi" "njíhovih" "njíhovima" "njíhovi" "njíhovih" "njíhovima" + "njíhove" "njíhovih" "njíhovim" "njíhove" "njíhovih" "njíhovimi" + "njíhove" "njíhovega" "njíhovemu" "njíhovo" "njíhovem" "njíhovim" + "njíhovi" "njíhovih" "njíhovima" "njíhovi" "njíhovih" "njíhovima" + "njíhova" "njíhovih" "njíhovim" "njíhova" "njíhovih" "njíhovimi" Masc Pl P3 ; + this_Quant = mkQuant "tȃ" "tȇga" "tȇmu" ("tȃ"|"tȇga") "tȇm" "tȇm" + "tȃ" "tȇh" "tȇma" "tȃ" "tȇh" "tȇma" + "tî" "tȇh" "tȇm" "tȇ" "tȇh" "tȇmi" + "tȃ" "té" "tȇj" "tȏ" "tȇj" "tȏ" + "tî" "tȇh" "tȇma" "tî" "tȇh" "tȇma" + "tȇ" "tȇh" "tȇm" "tȇ" "tȇh" "tȇmi" + "tȏ" "tȇga" "tȇmu" "tȏ" "tȇm" "tȇm" + "tî" "tȇh" "tȇma" "tî" "tȇh" "tȇma" + "tȃ" "tȇh" "tȇm" "tȃ" "tȇh" "tȇmi" Def ; + we_Pron = mkPron "mí" "nàs" "nàs" "nàm" "nàs" "nàmi" + "nàš" "nášega" "nášemu" ("náši"|"nášega") "nášem" "nášim" + "náša" "náših" "nášima" "náša" "náših" "nášima" + "náši" "náših" "nášim" "náše" "náših" "nášimi" + "náša" "náše" "náši" "nášo" "náši" "nášo" + "náši" "náših" "nášima" "náši" "náših" "nášima" + "náše" "náših" "nášim" "náše" "náših" "nášimi" + "náše" "nášega" "nášemu" "náše" "nášem" "nášim" + "náši" "náših" "nášima" "náši" "náših" "nášima" + "náša" "náših" "nášim" "náša" "náših" "nášimi" Masc Pl P1 ; + youSg_Pron = mkPron "tí" "tébe" "tébe" "tébi" "tébi" ("tebój"|"tábo") + "tvój" "tvòjega" "tvòjemu" ("tvòj"|"tvòjega") "tvòjem" "tvòjim" + "tvòja" "tvòjih" "tvòjima" "tvòja" "tvòjih" "tvòjima" + "tvòji" "tvòjih" "tvòjim" "tvòje" "tvòjih" "tvòjimi" + "tvòja" "tvòje" "tvòji" "tvòjo" "tvòji" "tvòjo" + "tvòji" "tvòjih" "tvòjima" "tvòji" "tvòjih" "tvòjima" + "tvòje" "tvòjih" "tvòjim" "tvòje" "tvòjih" "tvòjimi" + "tvòje" "tvòjega" "tvòjemu" "tvòjo" "tvòjem" "tvòjim" + "tvòji" "tvòjih" "tvòjima" "tvòji" "tvòjih" "tvòjima" + "tvòja" "tvòjih" "tvòjim" "tvòja" "tvòjih" "tvòjimi" Masc Sg P2 ; + youPl_Pron = mkPron "ví" "vàs" "vàs" "vàm" "vàs" "vàmi" + "vàš" "vášega" "vášemu" ("váši"|"vášega") "vášem" "vášim" + "váša" "váših" "vášima" "váša" "váših" "vášima" + "váši" "váših" "vášim" "váše" "váših" "vášimi" + "váša" "váše" "váši" "vášo" "váši" "vášo" + "váši" "váših" "vášima" "váši" "váših" "vášima" + "váše" "váših" "vášim" "váše" "váših" "vášimi" + "váše" "vášega" "vášemu" "váše" "vášem" "vášim" + "váši" "váših" "vášima" "váši" "váših" "vášima" + "váša" "váših" "vášim" "váša" "váših" "vášimi" Masc Pl P2 ; + youPol_Pron = mkPron "ví" "vàs" "vàs" "vàm" "vàs" "vàmi" + "vàš" "vášega" "vášemu" ("váši"|"vášega") "vášem" "vášim" + "váša" "váših" "vášima" "váša" "váših" "vášima" + "váši" "váših" "vášim" "váše" "váših" "vášimi" + "váša" "váše" "váši" "vášo" "váši" "vášo" + "váši" "váših" "vášima" "váši" "váših" "vášima" + "váše" "váših" "vášim" "váše" "váših" "vášimi" + "váše" "vášega" "vášemu" "váše" "vášem" "vášim" + "váši" "váših" "vášima" "váši" "váših" "vášima" + "váša" "váših" "vášim" "váša" "váših" "vášimi" Masc Pl P2 ; somebody_NP = mkNP "nekdo" "nekóga" "nekóga" "nekómu" "nekóm" "nekóm" Masc Sg ; something_NP = mkNP "nekaj" "nekaj" "nečésa" "nečému" "nečém" "nečīm" Neut Sg ; nobody_NP = mkNP "nihčè" "nikȏgar" "nikȏgar" "nikȏmur" "nikȏmer" "nikȏmer" Masc Sg ;