diff --git a/src/macedonian/CatMkd.gf b/src/macedonian/CatMkd.gf index 6d5c1301..052af507 100644 --- a/src/macedonian/CatMkd.gf +++ b/src/macedonian/CatMkd.gf @@ -46,5 +46,6 @@ lincat IP = {s : Str; g : GenNum} ; lincat IQuant = {s : GenNum => Str} ; lincat IDet = {s : Gender => Str; n : Number} ; lincat Subj = {s : Str} ; +lincat Imp = {s : Polarity => GenNum => Str} ; } diff --git a/src/macedonian/PhraseMkd.gf b/src/macedonian/PhraseMkd.gf index e88bc653..eaf51a2a 100644 --- a/src/macedonian/PhraseMkd.gf +++ b/src/macedonian/PhraseMkd.gf @@ -9,9 +9,9 @@ concrete PhraseMkd of Phrase = CatMkd ** open Prelude, ResMkd in { lin UttCard c = {s = c.s} ; lin UttIAdv i = {s = i.s} ; lin UttIP ip = {s = ip.s} ; - lin UttImpPl p i = {s = p.s ++ i.s} ; - lin UttImpPol p i = {s = p.s ++ i.s} ; - lin UttImpSg p i = {s = p.s ++ i.s} ; + lin UttImpPl p i = {s = p.s ++ i.s ! p.p ! GPl} ; + lin UttImpPol p i = {s = p.s ++ i.s ! p.p ! GPl} ; + lin UttImpSg p i = {s = p.s ++ i.s ! p.p ! GSg Masc} ; lin UttInterj i = i ; lin UttNP np = {s = np.s ! RSubj} ; lin UttQS s = s ; diff --git a/src/macedonian/ResMkd.gf b/src/macedonian/ResMkd.gf index 83ba99de..f492fd75 100644 --- a/src/macedonian/ResMkd.gf +++ b/src/macedonian/ResMkd.gf @@ -187,6 +187,12 @@ nnum2num : NNumber -> Number = \n -> NCountable => Pl } ; +genNum2num : GenNum -> Number = \gn -> + case gn of { + GSg _ => Sg ; + GPl => Pl + } ; + auxBe = { present : Number => Person => Str = table { diff --git a/src/macedonian/SentenceMkd.gf b/src/macedonian/SentenceMkd.gf index cfe0a256..0391ef6f 100644 --- a/src/macedonian/SentenceMkd.gf +++ b/src/macedonian/SentenceMkd.gf @@ -1,12 +1,18 @@ concrete SentenceMkd of Sentence = CatMkd ** open Prelude,ResMkd in { - lin AdvImp a i = {s = a.s ++ i.s} ; + lin AdvImp a i = {s = \\p,gn => a.s ++ i.s ! p ! gn} ; lin AdvS a s = {s = a.s ++ s.s} ; lin AdvSlash c a = {s = c.s ++ a.s} ; lin EmbedQS qs = {s = qs.s} ; lin EmbedS s = {s = s.s} ; - lin EmbedVP vp = {s = vp.present ! Imperfective ! Sg ! P1} ; + lin EmbedVP vp = {s = vp.present ! Perfective ! Sg ! P1} ; lin ExtAdvS a s = {s = a.s ++ s.s} ; - lin ImpVP vp = {s = vp.present ! Imperfective ! Sg ! P1} ; + lin ImpVP vp = { + s = \\p,gn=>case p of { + Pos => vp.imperative ! Perfective ! genNum2num gn ; + Neg => "не" ++ vp.imperative ! Imperfective ! genNum2num gn + } ++ + vp.compl ! {g=gn; p=P2} + } ; lin PredSCVP sc vp = {s = \\t,a,p,o => sc.s ++ vp.present ! Imperfective ! Sg ! P1} ; lin PredVP np vp = {s = mkClause (np.s ! RSubj) np.a vp} ;