diff --git a/src/macedonian/AdverbMkd.gf b/src/macedonian/AdverbMkd.gf index d57af769..77c36735 100644 --- a/src/macedonian/AdverbMkd.gf +++ b/src/macedonian/AdverbMkd.gf @@ -5,7 +5,7 @@ concrete AdverbMkd of Adverb = CatMkd ** open Prelude,ResMkd in { ++ a.s ! Indef ! np.a.g ++ np.s ! RSubj} ; lin ComparAdvAdjS c a s = {s = c.s ++ a.s ! Indef ! GSg Masc ++ s.s} ; - lin PositAdAAdj a = {s = a.s ! Indef ! GSg Masc} ; + lin PositAdAAdj a = {s = a.adverb} ; lin PositAdvAdj a = {s = a.adverb} ; lin PrepNP p np = {s = p.s ++ np.s ! RPrep} ; lin SubjS s s2 = {s = s.s ++ s2.s} ; diff --git a/src/macedonian/ExtendMkd.gf b/src/macedonian/ExtendMkd.gf index 56922a19..048cff29 100644 --- a/src/macedonian/ExtendMkd.gf +++ b/src/macedonian/ExtendMkd.gf @@ -11,6 +11,15 @@ lincat RNP = {s : Agr => Role => Str; a : Agr; isPron : Bool} ; RNPList = {s : Agr => Ints 4 => Role => Str; a : Agr} ; +oper + partAdj : Str -> GenNum -> Str = \base,gn -> + case gn of { + GSg Masc => base ; + GSg Fem => base ++ BIND ++ "а" ; + GSg Neuter => base ++ BIND ++ "о" ; + GPl => base ++ BIND ++ "и" + } ; + lin GenModNP num np cn = DetCN (DetQuant DefArt num) (PossNP cn np) ; @@ -51,13 +60,13 @@ lin } ; PastPartAP vps = { - s = \\_,gn => vps.participle.adjectival ! Perfective ++ + s = \\_,gn => partAdj (vps.participle.adjectival ! Perfective) gn ++ vps.compl ! {g = gn; p = P3} ; isPre = False } ; PastPartAgentAP vps np = { - s = \\_,gn => vps.participle.adjectival ! Perfective ++ + s = \\_,gn => partAdj (vps.participle.adjectival ! Perfective) gn ++ vps.compl ! {g = gn; p = P3} ++ "од" ++ np.s ! RPrep ; isPre = False @@ -73,8 +82,9 @@ lin perfect = \\_ => nonExist ; adjectival = \\_ => nonExist ; adverbial = nonExist} ; - noun_from_verb = nonExist ; - compl = \\agr => vps.participle.adjectival ! Perfective ++ vps.compl ! agr ; + noun_from_verb = "бидување" ; + compl = \\agr => partAdj (vps.participle.adjectival ! Perfective) agr.g ++ + vps.compl ! agr ; vtype = VNormal } ; @@ -88,8 +98,9 @@ lin perfect = \\_ => nonExist ; adjectival = \\_ => nonExist ; adverbial = nonExist} ; - noun_from_verb = nonExist ; - compl = \\agr => vps.participle.adjectival ! Perfective ++ vps.compl ! agr ++ + noun_from_verb = "бидување" ; + compl = \\agr => partAdj (vps.participle.adjectival ! Perfective) agr.g ++ + vps.compl ! agr ++ "од" ++ np.s ! RPrep ; vtype = VNormal } ; @@ -140,14 +151,16 @@ lin vp.compl ! {g = GSg Neuter; p = P3}} ; WithoutVP vp = {s = "без" ++ vp.noun_from_verb ++ BIND ++ "то" ++ vp.compl ! {g = GSg Neuter; p = P3}} ; - InOrderToVP vp = {s = "за да" ++ vp.present ! Perfective ! Sg ! P3 ++ + InOrderToVP vp = {s = "за да" ++ medialClitic vp.vtype ++ + vp.present ! Perfective ! Sg ! P3 ++ vp.compl ! {g = GSg Masc; p = P3}} ; ComplBareVS vs s = vs ** {compl = \\_ => s.s} ; ComplSlashPartLast = ComplSlash ; UttVPShort vp = { - s = vp.imperative ! Perfective ! Sg ++ vp.compl ! {g = GSg Masc; p = P2} + s = vp.imperative ! Perfective ! Sg ++ medialClitic vp.vtype ++ + vp.compl ! {g = GSg Masc; p = P2} } ; BaseVPS x y = {s = \\a => table {4 => y.s ! a; _ => x.s ! a}} ; @@ -174,7 +187,8 @@ lin } } ; MkVPI vp = { - s = \\agr => "да" ++ vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ vp.compl ! agr + s = \\agr => "да" ++ medialClitic vp.vtype ++ + vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ vp.compl ! agr } ; ConjVPI conj vpi = { s = \\agr => linCoord [] ! conj.sep ++ diff --git a/src/macedonian/IdiomMkd.gf b/src/macedonian/IdiomMkd.gf index a5541674..ead46f39 100644 --- a/src/macedonian/IdiomMkd.gf +++ b/src/macedonian/IdiomMkd.gf @@ -24,8 +24,12 @@ concrete IdiomMkd of Idiom = CatMkd ** open Prelude,ResMkd,MorphoMkd in { lin GenericCl vp = {s = \\t,a,p,o => vp.present ! Imperfective ! Sg ! P1} ; lin ImpP3 np vp = {s = np.s ! RSubj - ++ vp.present ! Imperfective ! Sg ! np.a.p} ; - lin ImpPl1 vp = {s = vp.present ! Imperfective ! Sg ! P1} ; + ++ "нека" ++ medialClitic vp.vtype ++ + vp.present ! Perfective ! genNum2num np.a.g ! P3 + ++ vp.compl ! np.a} ; + lin ImpPl1 vp = {s = "да" ++ medialClitic vp.vtype ++ + vp.present ! Perfective ! Pl ! P1 + ++ vp.compl ! {g = GPl; p = P1}} ; lin ImpersCl vp = {s = \\t,a,p,o => vp.present ! Imperfective ! Sg ! P1} ; lin ProgrVP vp = vp ** { diff --git a/src/macedonian/MorphoMkd.gf b/src/macedonian/MorphoMkd.gf index af72a311..9a9cf3c3 100644 --- a/src/macedonian/MorphoMkd.gf +++ b/src/macedonian/MorphoMkd.gf @@ -407,15 +407,15 @@ mkN013 base_1 = Pl => base_1+"и" } ; Def Unspecified => table { - Sg => base_1+"та" ; --guessed + Sg => base_1+"от" ; Pl => base_1+"ите" --guessed } ; Def Proximal => table { - Sg => base_1+"ва" ; --guessed + Sg => base_1+"ов" ; Pl => base_1+"иве" --guessed } ; Def Distal => table { - Sg => base_1+"на" ; --guessed + Sg => base_1+"он" ; Pl => base_1+"ине" --guessed } } ; @@ -4999,22 +4999,22 @@ mkN152 base = Pl => base_1+"а" } ; Def Unspecified => table { - Sg => nonExist ; - Pl => nonExist + Sg => base_1+"ото" ; + Pl => base_1+"ата" } ; Def Proximal => table { - Sg => nonExist ; - Pl => nonExist + Sg => base_1+"ово" ; + Pl => base_1+"ава" } ; Def Distal => table { - Sg => nonExist ; - Pl => nonExist + Sg => base_1+"оно" ; + Pl => base_1+"ана" } } ; count_form = base_1+"а" ; vocative = table { - Sg => nonExist ; - Pl => nonExist + Sg => base_1+"о" ; + Pl => base_1+"а" } ; rel = \\_,_ => base_1 ; relType = Pref ; @@ -13800,7 +13800,7 @@ mkA002 base_1 = GPl => base_1+"ине" } } ; - adverb = nonExist + adverb = base_1+"е" } ; mkA003 : Str -> A ; @@ -14104,7 +14104,7 @@ mkA011 base = GPl => base_1+"а"+base_2+"ине" } } ; - adverb = nonExist + adverb = base_1+"а"+base_2+"о" }; _ => error "Can't apply paradigm mkA011" } ; @@ -14174,7 +14174,7 @@ mkA013 base = GPl => base_1+"т"+base_2+"ине" } } ; - adverb = nonExist + adverb = base_1+"т"+base_2+"о" }; _ => error "Can't apply paradigm mkA013" } ; @@ -14209,7 +14209,7 @@ mkA014 base = GPl => nonExist } } ; - adverb = nonExist + adverb = base_1+"оа" }; _ => error "Can't apply paradigm mkA014" } ; @@ -14244,7 +14244,7 @@ mkA015 base = GPl => base_1+"ине" } } ; - adverb = nonExist + adverb = base_1+"е" }; _ => error "Can't apply paradigm mkA015" } ; @@ -14279,7 +14279,7 @@ mkA016 base = GPl => nonExist } } ; - adverb = nonExist + adverb = base_1+"е" }; _ => error "Can't apply paradigm mkA016" } ; @@ -14314,7 +14314,7 @@ mkA017 base = GPl => nonExist } } ; - adverb = nonExist + adverb = base_1+"а" }; _ => error "Can't apply paradigm mkA017" } ; @@ -14489,7 +14489,7 @@ mkA022 base = GPl => base_1+"да"+base_2+"ине" } } ; - adverb = nonExist + adverb = base_1+"да"+base_2+"о" }; _ => error "Can't apply paradigm mkA022" } ; @@ -14558,7 +14558,7 @@ mkA024 base_1 = GPl => base_1+"ине" } } ; - adverb = nonExist + adverb = base_1+"ѐ" } ; mkA025 : Str -> A ; @@ -14626,7 +14626,7 @@ mkA026 base = GPl => base_1+"с"+base_2+"ине" } } ; - adverb = nonExist + adverb = base_1+"с"+base_2+"о" }; _ => error "Can't apply paradigm mkA026" } ; @@ -14731,7 +14731,7 @@ mkA029 base = GPl => nonExist } } ; - adverb = nonExist + adverb = base_1+"е"+base_2 }; _ => error "Can't apply paradigm mkA029" } ; @@ -14765,7 +14765,7 @@ mkA030 base_1 = GPl => base_1+"ине" --guessed } } ; - adverb = nonExist + adverb = base_1+"о" } ; mkA031 : Str -> A ; @@ -14798,7 +14798,7 @@ mkA031 base = GPl => base_1+base_2+base_3+"ине" } } ; - adverb = nonExist + adverb = base_1+base_2+base_3+"о" }; _ => error "Can't apply paradigm mkA031" } ; @@ -14868,7 +14868,7 @@ mkA033 base = GPl => base_1+"ине" } } ; - adverb = nonExist + adverb = base_1+"о" }; _ => error "Can't apply paradigm mkA033" } ; @@ -14938,7 +14938,7 @@ mkA035 base = GPl => "‘"+base_1+"ине" } } ; - adverb = nonExist + adverb = "‘"+base_1+"о" }; _ => error "Can't apply paradigm mkA035" } ; @@ -14973,7 +14973,7 @@ mkA036 base = GPl => base_1+"по"+base_2+"ине" } } ; - adverb = nonExist + adverb = base_1+"по"+base_2+"о" }; _ => error "Can't apply paradigm mkA036" } ; @@ -15008,7 +15008,7 @@ mkA037 base = GPl => base_1+"ине" } } ; - adverb = nonExist + adverb = base_1+"о" }; _ => error "Can't apply paradigm mkA037" } ; @@ -15043,7 +15043,7 @@ mkA038 base = GPl => base_1+"о"+base_2+"ине" } } ; - adverb = nonExist + adverb = base_1+"о"+base_2+"о" }; _ => error "Can't apply paradigm mkA038" } ; @@ -15078,7 +15078,7 @@ mkA039 base = GPl => base_1+"о"+base_2+base_3+"ине" } } ; - adverb = nonExist + adverb = base_1+"о"+base_2+base_3+"о" }; _ => error "Can't apply paradigm mkA039" } ; @@ -15113,7 +15113,7 @@ mkA040 base = GPl => base_1+base_2+"а"+base_3+"ине" } } ; - adverb = nonExist + adverb = base_1+base_2+"а"+base_3+"о" }; _ => error "Can't apply paradigm mkA040" } ; @@ -15148,7 +15148,7 @@ mkA041 base = GPl => base_1+"ине" } } ; - adverb = nonExist + adverb = base_1+"о" }; _ => error "Can't apply paradigm mkA041" } ; @@ -15183,7 +15183,7 @@ mkA042 base = GPl => base_1+"ч"+base_2+"ине" } } ; - adverb = nonExist + adverb = base_1+"ч"+base_2+"о" }; _ => error "Can't apply paradigm mkA042" } ; @@ -15218,7 +15218,7 @@ mkA043 base = GPl => base_1+"а"+base_2+base_3+"ине" } } ; - adverb = nonExist + adverb = base_1+"а"+base_2+base_3+"о" }; _ => error "Can't apply paradigm mkA043" } ; @@ -15253,7 +15253,7 @@ mkA044 base = GPl => base_1+"ине" } } ; - adverb = nonExist + adverb = base_1+"о" }; _ => error "Can't apply paradigm mkA044" } ; @@ -15288,7 +15288,7 @@ mkA045 base = GPl => base_1+"т"+base_2+base_3+"ине" } } ; - adverb = nonExist + adverb = base_1+"т"+base_2+base_3+"о" }; _ => error "Can't apply paradigm mkA045" } ; @@ -15323,7 +15323,7 @@ mkA046 base = GPl => base_1+"д"+base_2+base_3+"ине" } } ; - adverb = nonExist + adverb = base_1+"д"+base_2+base_3+"о" }; _ => error "Can't apply paradigm mkA046" } ; @@ -15358,7 +15358,7 @@ mkA047 base = GPl => "б"+base_1+"р"+base_2+"ине" } } ; - adverb = nonExist + adverb = "б"+base_1+"р"+base_2+"о" }; _ => error "Can't apply paradigm mkA047" } ; @@ -15393,7 +15393,7 @@ mkA048 base = GPl => base_1+"ине" } } ; - adverb = nonExist + adverb = base_1+"о" }; _ => error "Can't apply paradigm mkA048" } ; @@ -15428,7 +15428,7 @@ mkA049 base = GPl => "дир"+base_1+"кт"+base_2+"р"+base_3+"ине" } } ; - adverb = nonExist + adverb = "дир"+base_1+"кт"+base_2+"р"+base_3+"о" }; _ => error "Can't apply paradigm mkA049" } ; @@ -15463,7 +15463,7 @@ mkA050 base = GPl => "р"+base_1+"з"+base_2+"ине" } } ; - adverb = nonExist + adverb = "р"+base_1+"з"+base_2+"о" }; _ => error "Can't apply paradigm mkA050" } ; diff --git a/src/macedonian/NamesMkd.gf b/src/macedonian/NamesMkd.gf index 93269761..7faab560 100644 --- a/src/macedonian/NamesMkd.gf +++ b/src/macedonian/NamesMkd.gf @@ -1,18 +1,18 @@ concrete NamesMkd of Names = CatMkd ** open Prelude,ResMkd in { lin AdjLN ap ln = {s = ap.s ! Indef ! GSg Masc ++ ln.s} ; lin FemaleSurname sn = {s = \\r => sn.s; vocative = sn.s; - a = {g = GSg Masc; p = P1}} ; + a = {g = GSg Fem; p = P3}} ; lin FullName gn sn = {s = \\r => gn.s ++ sn.s; - vocative = gn.s ++ sn.s; a = {g = GSg Masc; p = P1}} ; + vocative = gn.s ++ sn.s; a = {g = GSg Masc; p = P3}} ; lin GivenName gn = {s = \\r => gn.s; vocative = gn.s; - a = {g = GSg Masc; p = P1}} ; + a = {g = GSg Masc; p = P3}} ; lin InLN ln = {s = "во" ++ ln.s} ; lin MaleSurname sn = {s = \\r => sn.s; vocative = sn.s; - a = {g = GSg Masc; p = P1}} ; + a = {g = GSg Masc; p = P3}} ; lin PlSurname sn = {s = \\r => sn.s; vocative = sn.s; - a = {g = GSg Masc; p = P1}} ; + a = {g = GPl; p = P3}} ; lin PlainLN ln = {s = \\r => ln.s; vocative = ln.s; - a = {g = GSg Masc; p = P1}} ; + a = {g = GSg Masc; p = P3}} ; lin UseLN ln = {s = \\r => ln.s; vocative = ln.s; - a = {g = GSg Masc; p = P1}} ; + a = {g = GSg Masc; p = P3}} ; } diff --git a/src/macedonian/NounMkd.gf b/src/macedonian/NounMkd.gf index 12441594..df0c3136 100644 --- a/src/macedonian/NounMkd.gf +++ b/src/macedonian/NounMkd.gf @@ -15,13 +15,24 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in { Pl => GPl } }; - vocative = \\n => ap.s ! Indef - ! case n of { - Sg => GSg cn.g; - Pl => GPl - } ++ - cn.vocative ! n; - count_form = ap.s ! Indef ! GPl ++ cn.count_form; g = cn.g} ; + vocative = \\n => case ap.isPre of { + True => ap.s ! Indef + ! case n of { + Sg => GSg cn.g; + Pl => GPl + } ++ cn.vocative ! n ; + False => cn.vocative ! n ++ + ap.s ! Indef + ! case n of { + Sg => GSg cn.g; + Pl => GPl + } + } ; + count_form = case ap.isPre of { + True => ap.s ! Indef ! GPl ++ cn.count_form ; + False => cn.count_form ++ ap.s ! Indef ! GPl + } ; + g = cn.g} ; lin AdjDAP d ap = { s = \\g => d.s ! g ++ ap.s ! Indef ! genNum g (nnum2num d.n) ; n = d.n ; @@ -64,7 +75,7 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in { } ; lin DetDAP d = d ; lin DetNP d = {s = \\r => d.s ! Masc; vocative = d.s ! Masc; - a = {g = GSg Masc; p = P1}} ; + a = {g = genNum Masc (nnum2num d.n); p = P3}} ; lin DetQuant q num = {s = \\g => q.s ! genNum g (nnum2num num.n) ++ num.s; n = num.n; sp = q.sp} ; @@ -105,8 +116,8 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in { lin OrdNumeralSuperl n a = {s = \\s,gn => n.s ++ "нај" ++ BIND ++ a.s ! s ! gn} ; lin OrdSuperl a = {s = \\s,gn => "нај" ++ BIND ++ a.s ! s ! gn} ; lin PPartNP np v2 = {s = \\r => np.s ! r - ++ v2.present ! Imperfective ! Sg ! np.a.p; - vocative = np.vocative ++ v2.present ! Imperfective ! Sg ! np.a.p; + ++ v2.present ! Imperfective ! genNum2num np.a.g ! np.a.p; + vocative = np.vocative ++ v2.present ! Imperfective ! genNum2num np.a.g ! np.a.p; a = {g = np.a.g; p = np.a.p}} ; lin PartNP cn np = {s = \\s,n => cn.s ! s ! n ++ np.s ! RSubj; count_form = cn.count_form ++ np.s ! RSubj; diff --git a/src/macedonian/ParadigmsMkd.gf b/src/macedonian/ParadigmsMkd.gf index 52ff4150..31c71392 100644 --- a/src/macedonian/ParadigmsMkd.gf +++ b/src/macedonian/ParadigmsMkd.gf @@ -1078,8 +1078,8 @@ dualV : V -> V -> V = \impf,perf -> lin V Perfective => perf.participle.imperfect ! Perfective } ; perfect = table { - Imperfective => impf.participle.perfect ! Imperfective ; - Perfective => perf.participle.perfect ! Perfective + Imperfective => impf.participle.adjectival ! Imperfective ++ BIND ++ "о" ; + Perfective => perf.participle.adjectival ! Perfective ++ BIND ++ "о" } ; adjectival = table { Imperfective => impf.participle.adjectival ! Imperfective ; diff --git a/src/macedonian/PhraseMkd.gf b/src/macedonian/PhraseMkd.gf index fe3fe71f..75b11527 100644 --- a/src/macedonian/PhraseMkd.gf +++ b/src/macedonian/PhraseMkd.gf @@ -16,6 +16,8 @@ concrete PhraseMkd of Phrase = CatMkd ** open Prelude, ResMkd in { lin UttNP np = {s = np.s ! RSubj} ; lin UttQS s = s ; lin UttS s = s ; - lin UttVP vp = {s = "да" ++ vp.present ! Perfective ! Sg ! P3 ++ vp.compl ! {g=GSg Masc; p=P3}} ; + lin UttVP vp = {s = "да" ++ medialClitic vp.vtype ++ + vp.present ! Perfective ! Sg ! P3 ++ + vp.compl ! {g=GSg Masc; p=P3}} ; lin VocNP np = {s : Str = SOFT_BIND ++ "," ++ np.vocative} ; } diff --git a/src/macedonian/ResMkd.gf b/src/macedonian/ResMkd.gf index 80222e08..9fd9a2b2 100644 --- a/src/macedonian/ResMkd.gf +++ b/src/macedonian/ResMkd.gf @@ -199,6 +199,13 @@ genNum2num : GenNum -> Number = \gn -> GPl => Pl } ; +medialClitic : VType -> Str = \vtype -> + case vtype of { + VNormal => [] ; + VMedial Acc => "се" ; + VMedial Dat => "си" + } ; + auxBe = { present : Number => Person => Str = table { @@ -328,11 +335,7 @@ mkClause : Str -> Agr -> Verb ** {compl : Agr => Str} -> Order => Tense => Anter Main => "" ; Quest => "ли" } ; - se = case vp.vtype of { - VNormal => "" ; - VMedial Acc => "се" ; - VMedial Dat => "си" - } + se = medialClitic vp.vtype } ; linCoord : Str -> Ints 4 => Str ; diff --git a/src/macedonian/SentenceMkd.gf b/src/macedonian/SentenceMkd.gf index 668bd783..2384af93 100644 --- a/src/macedonian/SentenceMkd.gf +++ b/src/macedonian/SentenceMkd.gf @@ -4,26 +4,31 @@ concrete SentenceMkd of Sentence = CatMkd ** open Prelude,ResMkd in { 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 ! Perfective ! Sg ! P3 ++ vp.compl ! {g=GSg Masc; p=P3}} ; + lin EmbedVP vp = {s = "да" ++ medialClitic vp.vtype ++ + vp.present ! Perfective ! Sg ! P3 ++ + vp.compl ! {g=GSg Masc; p=P3}} ; lin ExtAdvS a s = {s = a.s ++ s.s} ; lin ImpVP vp = { s = \\p,gn=>case p of { - Pos => vp.imperative ! Perfective ! genNum2num gn ; - Neg => "не" ++ vp.imperative ! Imperfective ! genNum2num gn + Pos => vp.imperative ! Perfective ! genNum2num gn ++ medialClitic vp.vtype ; + Neg => "не" ++ medialClitic vp.vtype ++ 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} ; + ++ vp.present ! Imperfective ! Sg ! P3 + ++ vp.compl ! {g = GSg Neuter; p = P3}} ; lin PredVP np vp = {s = mkClause (np.s ! RSubj) np.a vp} ; lin RelS s rs = {s = s.s ++ rs.s ! GSg Masc} ; lin SSubjS s s2 s3 = {s = s.s ++ s2.s ++ s3.s} ; lin SlashPrep cl p = {s = cl.s ! Main ! VPresent ! Simul ! Pos ++ p.s} ; lin SlashVP np v = {s = np.s ! RSubj - ++ v.present ! Imperfective ! Sg ! np.a.p} ; + ++ v.present ! Imperfective ! genNum2num np.a.g ! np.a.p + ++ v.compl ! np.a} ; lin SlashVS np vs s = {s = np.s ! RSubj - ++ vs.present ! Imperfective ! Sg ! np.a.p ++ s.s} ; + ++ vs.present ! Imperfective ! genNum2num np.a.g ! np.a.p + ++ s.s} ; lin UseCl t p cl = {s = t.s ++ p.s ++ cl.s ! Main ! t.t ! t.a ! p.p} ; lin UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ; lin UseRCl t p cl = {s = \\gn => t.s ++ p.s ++ cl.s ! gn ! t.t ! t.a ! p.p} ; diff --git a/src/macedonian/VerbMkd.gf b/src/macedonian/VerbMkd.gf index 3365e586..d9e11005 100644 --- a/src/macedonian/VerbMkd.gf +++ b/src/macedonian/VerbMkd.gf @@ -1,32 +1,22 @@ concrete VerbMkd of Verb = CatMkd ** open Prelude,ResMkd in { - lin AdVVP a vp = {present = \\a2,n,p => a.s + lin AdVVP a vp = {present = \\a2,n,p => a.s ++ medialClitic vp.vtype ++ vp.present ! a2 ! n ! p; - aorist = \\n,p => a.s ++ vp.aorist ! n ! p; - imperfect = \\a2,n,p => a.s ++ vp.imperfect ! a2 ! n ! p; - imperative = \\a2,n => a.s ++ vp.imperative ! a2 ! n; - participle = {aorist = \\a2,g => a.s - ++ vp.participle.aorist ! a2 ! g; - imperfect = \\a2,g => a.s ++ vp.participle.imperfect ! a2 ! g; - perfect = \\a2 => a.s ++ vp.participle.perfect ! a2; - adjectival = \\a2 => a.s ++ vp.participle.adjectival ! a2; - adverbial = a.s ++ vp.participle.adverbial}; - noun_from_verb = a.s ++ vp.noun_from_verb; - vtype = vp.vtype; + aorist = \\n,p => a.s ++ medialClitic vp.vtype ++ vp.aorist ! n ! p; + imperfect = \\a2,n,p => a.s ++ medialClitic vp.vtype ++ vp.imperfect ! a2 ! n ! p; + imperative = \\a2,n => a.s ++ medialClitic vp.vtype ++ vp.imperative ! a2 ! n; + participle = vp.participle; + noun_from_verb = vp.noun_from_verb; + vtype = VNormal; compl = vp.compl} ; - lin AdVVPSlash a v = {present = \\a2,n,p => a.s + lin AdVVPSlash a v = {present = \\a2,n,p => a.s ++ medialClitic v.vtype ++ v.present ! a2 ! n ! p; - aorist = \\n,p => a.s ++ v.aorist ! n ! p; - imperfect = \\a2,n,p => a.s ++ v.imperfect ! a2 ! n ! p; - imperative = \\a2,n => a.s ++ v.imperative ! a2 ! n; - participle = {aorist = \\a2,g => a.s - ++ v.participle.aorist ! a2 ! g; - imperfect = \\a2,g => a.s ++ v.participle.imperfect ! a2 ! g; - perfect = \\a2 => a.s ++ v.participle.perfect ! a2; - adjectival = \\a2 => a.s ++ v.participle.adjectival ! a2; - adverbial = a.s ++ v.participle.adverbial}; - noun_from_verb = a.s ++ v.noun_from_verb; - vtype = v.vtype; + aorist = \\n,p => a.s ++ medialClitic v.vtype ++ v.aorist ! n ! p; + imperfect = \\a2,n,p => a.s ++ medialClitic v.vtype ++ v.imperfect ! a2 ! n ! p; + imperative = \\a2,n => a.s ++ medialClitic v.vtype ++ v.imperative ! a2 ! n; + participle = v.participle; + noun_from_verb = v.noun_from_verb; + vtype = VNormal; compl = v.compl; c2 = v.c2} ; lin AdvVP vp adv = vp ** {compl = \\a => vp.compl ! a ++ adv.s} ; @@ -39,48 +29,24 @@ concrete VerbMkd of Verb = CatMkd ** open Prelude,ResMkd in { lin ComplVA va ap = va ** {compl = \\agr => ap.s ! Indef ! agr.g} ; lin ComplVQ vq qs = vq ** {compl = \\_ => qs.s} ; lin ComplVS vs s = vs ** {compl = \\_ => s.s} ; - lin ComplVV vv vp = vv ** {compl = \\agr => "да" ++ vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ vp.compl ! agr} ; + lin ComplVV vv vp = vv ** {compl = \\agr => "да" ++ medialClitic vp.vtype ++ + vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ + vp.compl ! agr} ; lin ExtAdvVP vp a = vp ** {compl = \\agr => vp.compl ! agr ++ SOFT_BIND++"," ++ a.s} ; - lin Slash2V3 v3 np = {present = \\a,n,p => v3.present ! a ! n ! p - ++ np.s ! RSubj; - aorist = \\n,p => v3.aorist ! n ! p ++ np.s ! RSubj; - imperfect = \\a,n,p => v3.imperfect ! a ! n ! p ++ np.s ! RSubj; - imperative = \\a,n => v3.imperative ! a ! n ++ np.s ! RSubj; - participle = {aorist = \\a,g => v3.participle.aorist ! a ! g - ++ np.s ! RSubj; - imperfect = \\a,g => v3.participle.imperfect ! a ! g - ++ np.s ! RSubj; - perfect = \\a => v3.participle.perfect ! a ++ np.s ! RSubj; - adjectival = \\a => v3.participle.adjectival ! a - ++ np.s ! RSubj; - adverbial = v3.participle.adverbial ++ np.s ! RSubj}; - noun_from_verb = v3.noun_from_verb ++ np.s ! RSubj; - vtype = v3.vtype; - compl = \\v => v3.present ! Imperfective ! Sg ! v.p - ++ np.s ! RSubj; - c2 = {s = v3.c2.s ++ np.s ! RSubj; c = v3.c2.c}} ; - lin Slash3V3 v3 np = {present = \\a,n,p => v3.present ! a ! n ! p - ++ np.s ! RSubj; - aorist = \\n,p => v3.aorist ! n ! p ++ np.s ! RSubj; - imperfect = \\a,n,p => v3.imperfect ! a ! n ! p ++ np.s ! RSubj; - imperative = \\a,n => v3.imperative ! a ! n ++ np.s ! RSubj; - participle = {aorist = \\a,g => v3.participle.aorist ! a ! g - ++ np.s ! RSubj; - imperfect = \\a,g => v3.participle.imperfect ! a ! g - ++ np.s ! RSubj; - perfect = \\a => v3.participle.perfect ! a ++ np.s ! RSubj; - adjectival = \\a => v3.participle.adjectival ! a - ++ np.s ! RSubj; - adverbial = v3.participle.adverbial ++ np.s ! RSubj}; - noun_from_verb = v3.noun_from_verb ++ np.s ! RSubj; - vtype = v3.vtype; - compl = \\v => v3.present ! Imperfective ! Sg ! v.p - ++ np.s ! RSubj; - c2 = {s = v3.c2.s ++ np.s ! RSubj; c = v3.c2.c}} ; + lin Slash2V3 v3 np = v3 ** { + compl = \\_ => v3.c2.s ++ np.s ! RObj v3.c2.c ; + c2 = v3.c3 + } ; + lin Slash3V3 v3 np = v3 ** { + compl = \\_ => v3.c3.s ++ np.s ! RObj v3.c3.c ; + c2 = v3.c2 + } ; lin SlashV2A v ap = v ** {compl = \\agr => ap.s ! Indef ! agr.g} ; lin SlashV2Q v qs = v ** {compl = \\_ => qs.s} ; lin SlashV2S v s = v ** {compl = \\_ => s.s} ; - lin SlashV2V v vp = v ** {compl = \\agr => "да" ++ vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ vp.compl ! agr}; + lin SlashV2V v vp = v ** {compl = \\agr => "да" ++ medialClitic vp.vtype ++ + vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ + vp.compl ! agr}; lin SlashV2a v = v ** {compl = \\_ => []} ; lin UseComp comp = { @@ -93,7 +59,7 @@ concrete VerbMkd of Verb = CatMkd ** open Prelude,ResMkd in { perfect = \\_=>nonExist ; adjectival = \\_=>nonExist ; adverbial = nonExist} ; - noun_from_verb = nonExist ; + noun_from_verb = "бидување" ; compl = \\agr=>comp.s ! agr.g ; vtype=VNormal } ; @@ -108,7 +74,7 @@ concrete VerbMkd of Verb = CatMkd ** open Prelude,ResMkd in { perfect = \\_=>nonExist ; adjectival = \\_=>nonExist ; adverbial = nonExist} ; - noun_from_verb = nonExist ; + noun_from_verb = "бидување" ; compl = \\_=>[] ; vtype=VNormal } ;