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"