From 96e9ee9994200e43431ab1d49be5f119e9707583 Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Fri, 18 Sep 2026 09:14:07 +0200 Subject: [PATCH] move possessives as part of the pronoun --- src/albanian/CatSqi.gf | 7 ++++- src/albanian/NounSqi.gf | 20 +----------- src/albanian/ParadigmsSqi.gf | 7 +++-- src/albanian/StructuralSqi.gf | 59 ++++++++++++++++++++++++++++++----- 4 files changed, 63 insertions(+), 30 deletions(-) diff --git a/src/albanian/CatSqi.gf b/src/albanian/CatSqi.gf index 1d7393ab..e72ec9a0 100644 --- a/src/albanian/CatSqi.gf +++ b/src/albanian/CatSqi.gf @@ -42,7 +42,12 @@ concrete CatSqi of Cat = CommonX ** open ParamX,Prelude,ResSqi in { lincat Ord = {s : Case => Gender => Number => Str} ; lincat PN = {s : Str} ; lincat Predet = {s : Str} ; - lincat Pron = {s: Case => Str; acc_clit, dat_clit : Str; a : Agr} ; + lincat Pron = { + s: Case => Str; + acc_clit, dat_clit : Str; + poss : Case => Gender => Number => Str; + a : Agr + } ; lincat QCl = {s : ParamX.Tense => Anteriority => Polarity => Str} ; lincat QS = {s : Str} ; lincat Quant = { diff --git a/src/albanian/NounSqi.gf b/src/albanian/NounSqi.gf index fabaea18..ebdc4c63 100644 --- a/src/albanian/NounSqi.gf +++ b/src/albanian/NounSqi.gf @@ -92,25 +92,7 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi, Prelude in { CountNP det np = {s=\\c=>det.s ! c ! Masc ++ "nga" ++ np.s ! Ablat; a=agrgP3 Masc det.n} ; PossPron p = { - s=\\c,g,n=>case of { - => case c of {Nom=>"im"; _=>"tim"}; - => case c of {Nom=>"ime"; Acc=>"time"; _=>"sime"}; - => case c of {Nom=>"yt"; _=>"tënd"}; - => case c of {Nom=>"jote"; Acc=>"tënde"; _=>"sate"}; - => link_clitic!Def!c!g!n++"tij"; - => link_clitic!Def!c!g!n++"saj"; - => link_clitic!Def!c!g!n++"tyre"; - => link_clitic!Def!c!g!n++"mi"; - => link_clitic!Def!c!g!n++"mia"; - => link_clitic!Def!c!g!n++"tu"; - => link_clitic!Def!c!g!n++"tua"; - => case c of {Nom=>"ynë"; _=>"tonë"}; - => case c of {Nom=>"jonë"; Acc=>"tonë"; _=>"sonë"}; - => "tanë"; - => "tona"; - => case c of {Nom=>"juaj"; _=>"tuaj"}; - => "tuaj" - }; + s=p.poss; sp=Def; isPoss=True } ; diff --git a/src/albanian/ParadigmsSqi.gf b/src/albanian/ParadigmsSqi.gf index a795ae7e..107f6fdc 100644 --- a/src/albanian/ParadigmsSqi.gf +++ b/src/albanian/ParadigmsSqi.gf @@ -1420,11 +1420,14 @@ mkDet = overload { mkConj : Str -> Conj = \s -> lin Conj {s=s} ; mkPConj : Str -> PConj = \s -> lin PConj {s=s} ; -mkPron : (nom,acc,dat,ablat,acc_clit,dat_clit : Str) -> GenNum -> Person -> Pron = - \nom,acc,dat,ablat,acc_clit,dat_clit,gn,p -> lin Pron +mkPron : (nom,acc,dat,ablat,acc_clit,dat_clit : Str) -> + (Case => Gender => Number => Str) -> + GenNum -> Person -> Pron = + \nom,acc,dat,ablat,acc_clit,dat_clit,poss,gn,p -> lin Pron {s = table Case [nom; acc; dat; ablat]; acc_clit = acc_clit; dat_clit = dat_clit; + poss = poss; a = {gn=gn; p=p} } ; diff --git a/src/albanian/StructuralSqi.gf b/src/albanian/StructuralSqi.gf index 51f51cf6..fb039ee2 100644 --- a/src/albanian/StructuralSqi.gf +++ b/src/albanian/StructuralSqi.gf @@ -1,13 +1,56 @@ concrete StructuralSqi of Structural = CatSqi ** open ResSqi, ParadigmsSqi in { -lin i_Pron = mkPron "unë" "mua" "mua" "meje" "më" "më" (GSg Masc) P1 ; -lin youSg_Pron = mkPron "ti" "ty" "ty" "teje" "të" "të" (GSg Masc) P2 ; -lin he_Pron = mkPron "ai" "atë" "atij" "atij" "e" "i" (GSg Masc) P3 ; -lin she_Pron = mkPron "ajo" "atë" "asaj" "asaj" "e" "i" (GSg Fem) P3 ; -lin it_Pron = mkPron "ai" "atë" "atij" "atij" "e" "i" (GSg Masc) P3 ; -lin we_Pron = mkPron "ne" "ne" "neve" "nesh" "na" "na" GPl P1 ; -lin youPl_Pron = mkPron "ju" "ju" "juve" "jush" "ju" "ju" GPl P2 ; -lin they_Pron = mkPron "ata" "ata" "atyre" "atyre" "i" "u" GPl P3 ; +lin i_Pron = mkPron "unë" "mua" "mua" "meje" "më" "më" + (\\c,g,n => case of { + => "im"; + <_ ,Masc,Sg> => "tim"; + => "ime"; + => "time"; + <_ ,Fem, Sg> => "sime"; + <_ ,Masc,Pl> => link_clitic!Def!c!g!n++"mi"; + <_ ,Fem, Pl> => link_clitic!Def!c!g!n++"mia" + }) + (GSg Masc) P1 ; +lin youSg_Pron = mkPron "ti" "ty" "ty" "teje" "të" "të" + (\\c,g,n => case of { + => "yt"; + <_ ,Masc,Sg> => "tënd"; + => "jote"; + => "tënde"; + <_ ,Fem, Sg> => "sate"; + <_ ,Masc,Pl> => link_clitic!Def!c!g!n++"tu"; + <_ ,Fem, Pl> => link_clitic!Def!c!g!n++"tua" + }) + (GSg Masc) P2 ; +lin he_Pron = mkPron "ai" "atë" "atij" "atij" "e" "i" + (\\c,g,n => link_clitic!Def!c!g!n++"tij") + (GSg Masc) P3 ; +lin she_Pron = mkPron "ajo" "atë" "asaj" "asaj" "e" "i" + (\\c,g,n => link_clitic!Def!c!g!n++"saj") + (GSg Fem) P3 ; +lin it_Pron = mkPron "ai" "atë" "atij" "atij" "e" "i" + (\\c,g,n => link_clitic!Def!c!g!n++"tij") + (GSg Masc) P3 ; +lin we_Pron = mkPron "ne" "ne" "neve" "nesh" "na" "na" + (\\c,g,n => case of { + => "ynë"; + <_ ,Masc,Sg> => "tonë"; + => "jonë"; + => "tonë"; + <_ ,Fem, Sg> => "sonë"; + <_ ,Masc,Pl> => "tanë"; + <_ ,Fem ,Pl> => "tona" + }) + GPl P1 ; +lin youPl_Pron = mkPron "ju" "ju" "juve" "jush" "ju" "ju" + (\\c,g,n => case of { + => "juaj"; + _ => "tuaj" + }) + GPl P2 ; +lin they_Pron = mkPron "ata" "ata" "atyre" "atyre" "i" "u" + (\\c,g,n => link_clitic!Def!c!g!n++"tyre") + GPl P3 ; lin this_Quant = mkQuant "ky" "këta" "kjo" "këto" "këtë" "këtyre" "këtë" "këtyre" "këtij" "këtyre" "kësaj" "këtyre"