diff --git a/src/macedonian/CatMkd.gf b/src/macedonian/CatMkd.gf index 419e750d..bfacb3d5 100644 --- a/src/macedonian/CatMkd.gf +++ b/src/macedonian/CatMkd.gf @@ -31,8 +31,8 @@ linref A, A2 = \a -> a.s ! Indef ! GSg Masc ; lincat AP = {s : Species => GenNum => Str; isPre : Bool} ; lincat NP = {s : Role => Str; vocative: Str; a : Agr} ; lincat Num = {s : Str; n : NNumber} ; -lincat Quant = {s : Str; sp : Species} ; -lincat Det = {s : Str; n : NNumber; sp : Species} ; +lincat Quant = {s : GenNum => Str; sp : Species} ; +lincat Det = {s : Gender => Str; n : NNumber; sp : Species} ; lincat VP = Verb ** {compl : Agr => Str} ; lincat VPSlash = Verb ** {compl : Agr => Str; c2 : Compl} ; diff --git a/src/macedonian/NounMkd.gf b/src/macedonian/NounMkd.gf index bbca43c7..db435390 100644 --- a/src/macedonian/NounMkd.gf +++ b/src/macedonian/NounMkd.gf @@ -27,25 +27,20 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in { vocative = \\n => cn.vocative ! n ++ adv.s; g = cn.g } ; - lin DefArt = {s = []; sp = Def Unspecified} ; + lin DefArt = {s = \\_=>[]; sp = Def Unspecified} ; lin DetCN det cn = { s = \\r => case det.n of { - NNum n => det.s ++ cn.s ! det.sp ! n; - NCountable => det.s ++ cn.count_form + NNum n => det.s ! cn.g ++ cn.s ! det.sp ! n; + NCountable => det.s ! cn.g ++ cn.count_form } ; - vocative = case det.n of { - NNum Sg => det.s ++ cn.vocative ! Sg; - _ => det.s ++ cn.vocative ! Pl - } ; - a = {g = case det.n of { - NNum Sg => GSg cn.g; - _ => GPl - } ; + vocative = det.s ! cn.g ++ cn.vocative ! nnum2num det.n ; + a = {g = genNum cn.g (nnum2num det.n) ; p = P3}; } ; - lin DetQuant det num = {s = det.s ++ num.s; n = num.n; - sp = det.sp} ; - lin IndefArt = {s = []; sp = Indef} ; + lin DetQuant q num = {s = \\g => q.s ! genNum g (nnum2num num.n) ++ num.s; + n = num.n; + sp = q.sp} ; + lin IndefArt = {s = \\_=>[]; sp = Indef} ; lin NumPl = {s = []; n = NNum Pl} ; lin NumSg = {s = []; n = NNum Sg} ; lin UseN s = s ; diff --git a/src/macedonian/ParadigmsMkd.gf b/src/macedonian/ParadigmsMkd.gf index c10c1ebb..cf6bdaaf 100644 --- a/src/macedonian/ParadigmsMkd.gf +++ b/src/macedonian/ParadigmsMkd.gf @@ -1170,8 +1170,31 @@ mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ; mkIDet : Str -> IDet = \s -> lin IDet {s=s} ; mkMU : Str -> MU = \s -> lin MU {s=s; isPre = False} ; mkSubj : Str -> Subj = \s -> lin Subj {s=s} ; -mkQuant : Str -> Quant = \s -> lin Quant {s=s; sp=Indef} ; -mkDet : Str -> Det = \s -> lin Det {s=s; n=NNum Sg; sp=Indef} ; +mkQuant : Str -> Str -> Str -> Str -> Quant = \m,f,n,pl -> + lin Quant { + s=table { + GSg Masc => m; + GSg Fem => f; + GSg Neuter => n; + GPl => pl + } ; + sp=Indef + } ; + +mkDet = overload { + mkDet : Str -> Det = \s -> lin Det {s=\\_=>s; n=NNum Pl; sp=Indef} ; + mkDet : Str -> Str -> Str -> Det = \m,f,n -> + lin Det { + s=table { + Masc => m ; + Fem => f ; + Neuter => n + } ; + n=NNum Sg; + sp=Indef + } ; +} ; + mkConj : Str -> Conj = \s -> lin Conj {s=s} ; mkPConj : Str -> PConj = \s -> lin PConj {s=s} ; mkPredet : Str -> Predet = \s -> lin Predet {s=s} ; diff --git a/src/macedonian/ResMkd.gf b/src/macedonian/ResMkd.gf index e3f3efc0..83ba99de 100644 --- a/src/macedonian/ResMkd.gf +++ b/src/macedonian/ResMkd.gf @@ -180,6 +180,12 @@ genNum : Gender -> Number -> GenNum = \g,n -> Sg => GSg g ; Pl => GPl } ; + +nnum2num : NNumber -> Number = \n -> + case n of { + NNum n => n ; + NCountable => Pl + } ; auxBe = { present : Number => Person => Str diff --git a/src/macedonian/StructuralMkd.gf b/src/macedonian/StructuralMkd.gf index 02a95db7..ad79fbdd 100644 --- a/src/macedonian/StructuralMkd.gf +++ b/src/macedonian/StructuralMkd.gf @@ -1,4 +1,4 @@ -concrete StructuralMkd of Structural = CatMkd ** open ResMkd,MorphoMkd in { +concrete StructuralMkd of Structural = CatMkd ** open ResMkd,MorphoMkd,ParadigmsMkd in { lin i_Pron = mkPron "јас" "мене" "ме" "мене" "ми" "мене" "мој" "мојот" "моја" "мојата" "мое" "моето" "мои" "моите" "ми" (GSg Masc) P1 ; lin youSg_Pron = mkPron "ти" "тебе" "те" "тебе" "ти" "тебе" "твој" "твојот" "твоја" "твојата" "твое" "твоето" "твои" "твоите" "ти" (GSg Masc) P2 ; @@ -9,5 +9,7 @@ lin we_Pron = mkPron "ние" "нас" "нѐ" "нам" "ни" "нас" "наш" lin youPl_Pron = mkPron "вие" "вас" "ве" "вам" "ви" "вас" "ваш" "вашиот" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" "ви" GPl P2 ; lin youPol_Pron = mkPron "вие" "вас" "ве" "вам" "ви" "вас" "ваш" "вашиот" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" "ви" (GSg Masc) P2 ; lin they_Pron = mkPron "тие" "нив" "ги" "ним" "им" "нив" "нивен" "нивниот" "нивна" "нивната" "нивно" "нивното" "нивни" "нивните" "им" GPl P3 ; +lin this_Quant = mkQuant "овој" "оваа" "ова" "овие" ; +lin that_Quant = mkQuant "тој" "таа" "тоа" "тие" ; }