From 9e402cb608dcc7a7e0eebebde90ec98c51ac8062 Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Sat, 11 Apr 2026 08:58:08 +0200 Subject: [PATCH] prepare for numerals with countable forms --- src/macedonian/CatMkd.gf | 4 ++-- src/macedonian/NounMkd.gf | 18 ++++++++++++------ src/macedonian/ParadigmsMkd.gf | 10 +++++----- src/macedonian/ResMkd.gf | 4 ++++ 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/macedonian/CatMkd.gf b/src/macedonian/CatMkd.gf index 0d7f183a..bb4bbbcd 100644 --- a/src/macedonian/CatMkd.gf +++ b/src/macedonian/CatMkd.gf @@ -30,9 +30,9 @@ linref A, A2 = \a -> a.s ! Indef ! GSg Masc ; lincat AP = {s : Species => GenNum => Str; isPre : Bool} ; lincat NP = {s : Role => Str; vocative: Str; g : GenNum; p : Person} ; -lincat Num = {s : Str; n : Number} ; +lincat Num = {s : Str; n : NNumber} ; lincat Quant = {s : Str; sp : Species} ; -lincat Det = {s : Str; n : Number; sp : Species} ; +lincat Det = {s : Str; n : NNumber; sp : Species} ; lincat VP = {present : Aspect => Number => Person => Str; aorist : Number => Person => Str; diff --git a/src/macedonian/NounMkd.gf b/src/macedonian/NounMkd.gf index f79cca6f..a805c40b 100644 --- a/src/macedonian/NounMkd.gf +++ b/src/macedonian/NounMkd.gf @@ -29,19 +29,25 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in { } ; lin DefArt = {s = []; sp = Def Unspecified} ; lin DetCN det cn = { - s = \\r => det.s ++ cn.s ! det.sp ! det.n; - vocative = det.s ++ cn.vocative ! det.n; + s = \\r => case det.n of { + NNum n => det.s ++ cn.s ! det.sp ! n; + NCountable => det.s ++ cn.count_form + } ; + vocative = case det.n of { + NNum Sg => det.s ++ cn.vocative ! Sg; + _ => det.s ++ cn.vocative ! Pl + } ; g = case det.n of { - Sg => GSg cn.g; - Pl => GPl + NNum Sg => GSg cn.g; + _ => GPl } ; p = P3; } ; lin DetQuant det num = {s = det.s ++ num.s; n = num.n; sp = det.sp} ; lin IndefArt = {s = []; sp = Indef} ; - lin NumPl = {s = []; n = Pl} ; - lin NumSg = {s = []; n = Sg} ; + lin NumPl = {s = []; n = NNum Pl} ; + lin NumSg = {s = []; n = NNum Sg} ; lin UseN s = s ; lin UsePron p = p ** {vocative=p.s ! RSubj} ; } diff --git a/src/macedonian/ParadigmsMkd.gf b/src/macedonian/ParadigmsMkd.gf index d5db051d..a283505a 100644 --- a/src/macedonian/ParadigmsMkd.gf +++ b/src/macedonian/ParadigmsMkd.gf @@ -1124,13 +1124,13 @@ mkV2V = overload { } ; mkV2S = overload { - mkV2S : V -> V2S = \v -> lin V2S v ** {c2,c3=noPrep} ; - mkV2S : V -> Prep -> Prep -> V2S = \v,p2,p3 -> lin V2S v ** {c2=p2; c3=p3} ; + mkV2S : V -> V2S = \v -> lin V2S v ** {c2=noPrep} ; + mkV2S : V -> Prep -> V2S = \v,p2 -> lin V2S v ** {c2=p2} ; } ; mkV2Q = overload { - mkV2Q : V -> V2Q = \v -> lin V2Q v ** {c2,c3=noPrep} ; - mkV2Q : V -> Prep -> Prep -> V2Q = \v,p2,p3 -> lin V2Q v ** {c2=p2; c3=p3} ; + mkV2Q : V -> V2Q = \v -> lin V2Q v ** {c2=noPrep} ; + mkV2Q : V -> Prep -> V2Q = \v,p2 -> lin V2Q v ** {c2=p2} ; } ; mkV2A = overload { @@ -1171,7 +1171,7 @@ 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=Sg; sp=Indef} ; +mkDet : Str -> Det = \s -> lin Det {s=s; 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 460f688f..dbea0b90 100644 --- a/src/macedonian/ResMkd.gf +++ b/src/macedonian/ResMkd.gf @@ -5,6 +5,10 @@ oper Compl = {s : Str} ; param Species = Indef | Def Distance ; param Distance = Unspecified | Distal | Proximal ; param NRelType = Pref | AdjMod | AdvMod ; + NNumber = + NNum Number + | NCountable + ; param Gender = Masc | Fem | Neuter ; oper Noun = {s: Species => Number => Str; count_form: Str; vocative: Number => Str; rel: Species => GenNum => Str; relType : NRelType; g: Gender} ; -- 24855 oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =