From b339f7c2fcc8d4da9eaedbb49e9d40dd4f9a4652 Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Fri, 10 Apr 2026 19:58:11 +0200 Subject: [PATCH] started with tenses --- src/macedonian/AllMkdAbs.gf | 3 +- src/macedonian/CatMkd.gf | 20 +- src/macedonian/DocumentationMkd.gf | 4 +- src/macedonian/ExtendMkd.gf | 23 ++- src/macedonian/GrammarMkd.gf | 2 +- src/macedonian/LexiconMkd.gf | 9 +- src/macedonian/MorphoMkd.gf | 302 +++++++++++++++++++---------- src/macedonian/ParadigmsMkd.gf | 7 +- src/macedonian/ResMkd.gf | 113 ++++++++++- src/macedonian/SentenceMkd.gf | 37 +++- src/macedonian/StructuralMkd.gf | 4 +- src/macedonian/VerbMkd.gf | 4 +- 12 files changed, 392 insertions(+), 136 deletions(-) diff --git a/src/macedonian/AllMkdAbs.gf b/src/macedonian/AllMkdAbs.gf index a05a7809..80702339 100644 --- a/src/macedonian/AllMkdAbs.gf +++ b/src/macedonian/AllMkdAbs.gf @@ -1,7 +1,8 @@ --# -path=.:../abstract:../common:prelude abstract AllMkdAbs = - Lang + Lang, + Extend ** { } ; diff --git a/src/macedonian/CatMkd.gf b/src/macedonian/CatMkd.gf index be434f61..0d7f183a 100644 --- a/src/macedonian/CatMkd.gf +++ b/src/macedonian/CatMkd.gf @@ -1,4 +1,8 @@ -concrete CatMkd of Cat = CommonX ** open ResMkd, Prelude in { +concrete CatMkd of Cat = CommonX - [Temp,Tense] ** open ParamX, ResMkd, Prelude in { + +lincat + Temp = {s : Str ; t : ResMkd.Tense ; a : Anteriority} ; + Tense = {s : Str ; t : ResMkd.Tense} ; lincat N = Noun ; lincat N2 = Noun ** {c2 : Compl} ; @@ -9,7 +13,7 @@ lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ; lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ; lincat A = Adj ; lincat A2 = Adj ** {c2 : Compl} ; -lincat Pron = Pron ; +lincat Pron = Pronoun ; lincat Prep = Compl ; lincat Decimal = {s : Str; n : Number; hasDot : Bool} ; lincat Digits = {s : Str; n : Number; tail : DTail} ; @@ -34,18 +38,18 @@ lincat VP = {present : Aspect => Number => Person => Str; aorist : Number => Person => Str; imperfect : Aspect => Number => Person => Str; imperative : Aspect => Number => Str; - participle : {aorist : Aspect => GenNum => Str; perfect : Aspect => Str}} ; + participle : {aorist : Aspect => GenNum => Str; + imperfect : Aspect => GenNum => Str; + perfect : Aspect => Str}} ; lincat VPSlash = {present : Aspect => Number => Person => Str; aorist : Number => Person => Str; imperfect : Aspect => Number => Person => Str; imperative : Aspect => Number => Str; participle : {aorist : Aspect => GenNum => Str; - imperfect : GenNum => Str; perfect : Aspect => Str; - adjectival : Aspect => Str; adverbial : Str}; + imperfect : Aspect => GenNum => Str; + perfect : Aspect => Str}; noun_from_verb : Str; vtype : VType; c2 : Compl} ; -lincat Cl = {present : Aspect => Str; - aorist : Str; - participle : {aorist : Aspect => Str; perfect : Aspect => Str}} ; +lincat Cl = {s : ResMkd.Tense => Anteriority => Polarity => Order => Str} ; lincat RP = {s : GenNum => Str} ; lincat IP = {s : Str} ; lincat Subj = {s : Str} ; diff --git a/src/macedonian/DocumentationMkd.gf b/src/macedonian/DocumentationMkd.gf index da47298c..470ea374 100644 --- a/src/macedonian/DocumentationMkd.gf +++ b/src/macedonian/DocumentationMkd.gf @@ -121,7 +121,7 @@ lin heading3 ("Партицип") ++ adjForms (v.participle.aorist ! Imperfective) ++ tag "br" ++ - adjForms v.participle.imperfect ++ + adjForms (v.participle.imperfect ! Imperfective) ++ heading2 ("Свършен вид") ++ heading3 ("Изявително наклонение") ++ heading4 ("Сегашно време") ++ @@ -134,6 +134,8 @@ lin imperative (v.imperative ! Perfective) ++ heading3 ("Партицип") ++ adjForms (v.participle.aorist ! Perfective) ++ + tag "br" ++ + adjForms (v.participle.imperfect ! Perfective) ++ heading1 ("Именка") ++ v.noun_from_verb ; s3= "" diff --git a/src/macedonian/ExtendMkd.gf b/src/macedonian/ExtendMkd.gf index c7bb2b62..de76c13a 100644 --- a/src/macedonian/ExtendMkd.gf +++ b/src/macedonian/ExtendMkd.gf @@ -1,5 +1,5 @@ --# -path=.:../abstract:../common:prelude -concrete ExtendMkd of Extend = CatMkd ** open ResMkd in { +concrete ExtendMkd of Extend = CatMkd ** open ResMkd, ParadigmsMkd, StructuralMkd in { lin CompoundN n1 n2 = @@ -10,11 +10,11 @@ lin AdvMod => n2.s ! sp ! n ++ n1.rel ! sp ! genNum n2.g n } ; voc : Number => Str - = \\n => ""{-case n1.relType of { - Pref => n1.rel ! Indef ! genNum n2.g n ++ n2.vocative ! n ; - AdjMod => n1.rel ! Indef ! genNum n2.g n ++ n2.vocative ! n ; - AdvMod => n2.vocative ! n ++ n1.rel ! Indef ! genNum n2.g n - }-} + = \\n => case n1.relType of { + Pref => n1.rel ! Indef ! genNum n2.g n ++ n2.vocative ! n ; + AdjMod => n1.rel ! Indef ! genNum n2.g n ++ n2.vocative ! n ; + AdvMod => n2.vocative ! n ++ n1.rel ! Indef ! genNum n2.g n + } in { s = comp ; count_form = comp ! Indef ! Pl ; @@ -23,5 +23,16 @@ lin g = n2.g } ; + iFem_Pron = mkPron "јас" "мене" "ме" "мене" "ми" "мене" "мој" "мојот" "моја" "мојата" "мое" "моето" "мои" "моите" "ми" (GSg Fem) P1 ; + youFem_Pron = mkPron "ти" "тебе" "те" "тебе" "ти" "тебе" "твој" "твојот" "твоја" "твојата" "твое" "твоето" "твои" "твоите" "ти" (GSg Fem) P2 ; + weFem_Pron = we_Pron ; + youPlFem_Pron = youPl_Pron ; + theyFem_Pron = they_Pron ; + youPolFem_Pron = mkPron "вие" "вас" "ве" "вам" "ви" "вас" "ваш" "вашиот" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" "ви" (GSg Fem) P2 ; + youPolPl_Pron = youPol_Pron ; + youPolPlFem_Pron = youPol_Pron ; + +lin TPastSimple = {s = []} ** {t = VPastSimple} ; --# notpresent + } diff --git a/src/macedonian/GrammarMkd.gf b/src/macedonian/GrammarMkd.gf index 1d39e8df..85b3eee8 100644 --- a/src/macedonian/GrammarMkd.gf +++ b/src/macedonian/GrammarMkd.gf @@ -1,2 +1,2 @@ -concrete GrammarMkd of Grammar = VerbMkd,SentenceMkd,NounMkd,AdverbMkd,AdjectiveMkd,NumeralMkd,PhraseMkd,RelativeMkd,TextX,StructuralMkd,TenseX ** { +concrete GrammarMkd of Grammar = VerbMkd,SentenceMkd,NounMkd,AdverbMkd,AdjectiveMkd,IdiomMkd,NumeralMkd,PhraseMkd,RelativeMkd,TextMkd,StructuralMkd,TenseMkd ** { } diff --git a/src/macedonian/LexiconMkd.gf b/src/macedonian/LexiconMkd.gf index eaf015a4..a6db6c86 100644 --- a/src/macedonian/LexiconMkd.gf +++ b/src/macedonian/LexiconMkd.gf @@ -5,7 +5,14 @@ lin airplane_N = mkN001 "авион" ; apple_N = mkN012 "јаболко" ; bad_A = mkA004 "лош" ; - good_A = mkA021 "добар" ; + close_V2 = mkV2 (dualV (mkV "затвара") (mkV "затвори")) ; die_V = dualV (mkV002 "умира") (mkV021 "умре") ; + door_N = mkN008 "врата" ; + factory_N = mkN008 "фабрика" ; + fish_N = mkN "риба" ; + good_A = mkA021 "добар" ; + play_V = mkV001 "игра" ; + man_N = mkN001 "маж" ; + woman_N = mkN "жена" ; } diff --git a/src/macedonian/MorphoMkd.gf b/src/macedonian/MorphoMkd.gf index 7b4db928..3ba71124 100644 --- a/src/macedonian/MorphoMkd.gf +++ b/src/macedonian/MorphoMkd.gf @@ -6864,13 +6864,14 @@ mkV001 base_1 = GSg Neuter => base_1+"ло" ; --guessed GPl => base_1+"ле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"л" ; GSg Fem => base_1+"ла" ; GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - perfect = \\_ => nonExist ; + perfect = \\_ => base_1+"но" ; adjectival = \\_ => base_1+"н" ; adverbial = base_1+"јќи" } ; @@ -6931,7 +6932,8 @@ mkV002 base_1 = GSg Neuter => base_1+"ло" ; --guessed GPl => base_1+"ле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"л" ; GSg Fem => base_1+"ла" ; GSg Neuter => base_1+"ло" ; @@ -6999,7 +7001,8 @@ mkV003 base = GSg Neuter => base_1+"ило" ; --guessed GPl => base_1+"иле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -7069,7 +7072,8 @@ mkV004 base = GSg Neuter => base_1+"ило" ; --guessed GPl => base_1+"иле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -7139,13 +7143,14 @@ mkV005 base = GSg Neuter => base_1+"ило" ; GPl => base_1+"иле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; GPl => base_1+"еле" } ; - perfect = \\_ => nonExist ; + perfect = \\_ => base_1+"ено" ; adjectival = \\_ => base_1+"ен" ; adverbial = base_1+"ејќи" --guessed } ; @@ -7209,7 +7214,8 @@ mkV006 base = GSg Neuter => base_1+"ело" ; --guessed GPl => base_1+"еле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -7279,7 +7285,8 @@ mkV007 base = GSg Neuter => base_1+"ало" ; GPl => base_1+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -7349,7 +7356,8 @@ mkV008 base = GSg Neuter => base_1+"ило" ; --guessed GPl => base_1+"иле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; --guessed GSg Fem => base_1+"ела" ; --guessed GSg Neuter => base_1+"ело" ; @@ -7418,7 +7426,8 @@ mkV009 base_1 = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"л" ; GSg Fem => base_1+"ла" ; GSg Neuter => base_1+"ло" ; @@ -7486,7 +7495,8 @@ mkV010 base = GSg Neuter => base_1+"ило" ; --guessed GPl => base_1+"иле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -7556,7 +7566,8 @@ mkV011 base = GSg Neuter => base_1+"ло" ; --guessed GPl => base_1+"ле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -7626,7 +7637,8 @@ mkV012 base = GSg Neuter => base_1+"ло" ; --guessed GPl => base_1+"ле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -7695,13 +7707,14 @@ mkV013 base_1 = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"л" ; GSg Fem => base_1+"ла" ; GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - perfect = \\_ => nonExist ; + perfect = \\_ => base_1+"но" ; adjectival = \\_ => base_1+"н" ; adverbial = base_1+"јќи" } ; @@ -7763,7 +7776,8 @@ mkV014 base = GSg Neuter => base_1+"ило" ; GPl => base_1+"иле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -7833,7 +7847,8 @@ mkV015 base = GSg Neuter => base_1+"ило" ; GPl => base_1+"иле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -7903,7 +7918,8 @@ mkV016 base = GSg Neuter => base_1+"ило" ; GPl => base_1+"иле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -7972,7 +7988,8 @@ mkV017 base_1 = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"л" ; GSg Fem => base_1+"ла" ; GSg Neuter => base_1+"ло" ; @@ -8040,7 +8057,8 @@ mkV018 base = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"дел" ; GSg Fem => base_1+"дела" ; GSg Neuter => base_1+"дело" ; @@ -8110,7 +8128,8 @@ mkV019 base = GSg Neuter => base_1+"гло" ; GPl => base_1+"гле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"зел" ; GSg Fem => base_1+"зела" ; GSg Neuter => base_1+"зело" ; @@ -8180,7 +8199,8 @@ mkV020 base = GSg Neuter => base_1+"ало" ; GPl => base_1+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -8250,7 +8270,8 @@ mkV021 base = GSg Neuter => base_1+"ело" ; GPl => base_1+"еле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -8320,7 +8341,8 @@ mkV022 base = GSg Neuter => base_1+"ло" ; --guessed GPl => base_1+"ле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -8390,7 +8412,8 @@ mkV023 base = GSg Neuter => base_1+"ало" ; --guessed GPl => base_1+"але" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -8460,7 +8483,8 @@ mkV024 base = GSg Neuter => base_1+"ело" ; GPl => base_1+"еле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -8530,7 +8554,8 @@ mkV025 base = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"сел" ; GSg Fem => base_1+"села" ; GSg Neuter => base_1+"село" ; @@ -8600,7 +8625,8 @@ mkV026 base = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"дел" ; GSg Fem => base_1+"дела" ; GSg Neuter => base_1+"дело" ; @@ -8670,7 +8696,8 @@ mkV027 base = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"тел" ; GSg Fem => base_1+"тела" ; GSg Neuter => base_1+"тело" ; @@ -8740,7 +8767,8 @@ mkV028 base = GSg Neuter => base_1+"ало" ; GPl => base_1+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -8810,7 +8838,8 @@ mkV029 base = GSg Neuter => base_1+"кло" ; GPl => base_1+"кле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"чел" ; GSg Fem => base_1+"чела" ; GSg Neuter => base_1+"чело" ; @@ -8880,7 +8909,8 @@ mkV030 base = GSg Neuter => base_1+"кло" ; GPl => base_1+"кле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"чеел" ; GSg Fem => base_1+"чеела" ; GSg Neuter => base_1+"чеело" ; @@ -8950,7 +8980,8 @@ mkV031 base = GSg Neuter => base_1+"ело" ; GPl => base_1+"еле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -9020,7 +9051,8 @@ mkV032 base = GSg Neuter => base_1+"ило" ; --guessed GPl => base_1+"иле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -9090,7 +9122,8 @@ mkV033 base = GSg Neuter => base_1+"ело" ; GPl => base_1+"еле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -9160,7 +9193,8 @@ mkV034 base = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -9230,7 +9264,8 @@ mkV035 base = GSg Neuter => base_1+"ало" ; --guessed GPl => base_1+"але" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -9300,7 +9335,8 @@ mkV036 base = GSg Neuter => base_1+"ало" ; GPl => base_1+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -9370,7 +9406,8 @@ mkV037 base = GSg Neuter => base_1+base_2+"ало" ; GPl => base_1+base_2+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"е"+base_2+"ел" ; GSg Fem => base_1+"е"+base_2+"ела" ; GSg Neuter => base_1+"е"+base_2+"ело" ; @@ -9440,7 +9477,8 @@ mkV038 base = GSg Neuter => base_1+"гло" ; GPl => base_1+"гле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"зел" ; GSg Fem => base_1+"зела" ; GSg Neuter => base_1+"зело" ; @@ -9510,7 +9548,8 @@ mkV039 base = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -9580,7 +9619,8 @@ mkV040 base = GSg Neuter => base_1+"ило" ; GPl => base_1+"иле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -9650,7 +9690,8 @@ mkV041 base = GSg Neuter => base_1+"ало" ; GPl => base_1+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -9720,7 +9761,8 @@ mkV042 base = GSg Neuter => base_1+base_2+"ало" ; GPl => base_1+base_2+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"о"+base_2+"ел" ; GSg Fem => base_1+"о"+base_2+"ела" ; GSg Neuter => base_1+"о"+base_2+"ело" ; @@ -9790,7 +9832,8 @@ mkV043 base = GSg Neuter => base_1+"ало" ; --guessed GPl => base_1+"але" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; --guessed GSg Fem => base_1+"ела" ; --guessed GSg Neuter => base_1+"ело" ; @@ -9859,7 +9902,8 @@ mkV044 base_1 = GSg Neuter => base_1+"ло" ; --guessed GPl => base_1+"ле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"л" ; GSg Fem => base_1+"ла" ; GSg Neuter => base_1+"ло" ; @@ -9927,7 +9971,8 @@ mkV045 base = GSg Neuter => base_1+"шло" ; GPl => base_1+"шле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"дел" ; GSg Fem => base_1+"дела" ; GSg Neuter => base_1+"дело" ; @@ -9997,7 +10042,8 @@ mkV046 base = GSg Neuter => nonExist ; GPl => nonExist } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -10067,7 +10113,8 @@ mkV047 base = GSg Neuter => base_1+"ало" ; --guessed GPl => base_1+"але" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; --guessed GSg Fem => base_1+"ела" ; --guessed GSg Neuter => base_1+"ело" ; @@ -10137,7 +10184,8 @@ mkV048 base = GSg Neuter => base_1+"ло" ; --guessed GPl => base_1+"ле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -10207,7 +10255,8 @@ mkV049 base = GSg Neuter => base_1+"јало" ; --guessed GPl => base_1+"јале" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -10277,7 +10326,8 @@ mkV050 base = GSg Neuter => base_1+base_2+"ло" ; GPl => base_1+base_2+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+base_2+"л" ; GSg Fem => base_1+base_2+"ла" ; GSg Neuter => base_1+base_2+"ло" ; @@ -10346,7 +10396,8 @@ mkV051 base_1 = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"л" ; GSg Fem => base_1+"ла" ; GSg Neuter => base_1+"ло" ; @@ -10414,7 +10465,8 @@ mkV052 base = GSg Neuter => base_1+"ало" ; GPl => base_1+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -10484,7 +10536,8 @@ mkV053 base = GSg Neuter => base_1+"ело" ; GPl => base_1+"еле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; --guessed GSg Fem => base_1+"ела" ; --guessed GSg Neuter => base_1+"ело" ; @@ -10554,7 +10607,8 @@ mkV054 base = GSg Neuter => base_1+"ело" ; GPl => base_1+"еле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -10623,7 +10677,8 @@ mkV055 base_1 = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"л" ; GSg Fem => base_1+"ла" ; GSg Neuter => base_1+"ло" ; @@ -10691,7 +10746,8 @@ mkV056 base = GSg Neuter => base_1+"шло" ; GPl => base_1+"шле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"јдел" ; GSg Fem => base_1+"јдела" ; GSg Neuter => base_1+"јдело" ; @@ -10761,7 +10817,8 @@ mkV057 base = GSg Neuter => base_1+"ило" ; --guessed GPl => base_1+"иле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -10831,7 +10888,8 @@ mkV058 base = GSg Neuter => base_1+"ало" ; GPl => base_1+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -10901,7 +10959,8 @@ mkV059 base = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"мел" ; GSg Fem => base_1+"мела" ; GSg Neuter => base_1+"мело" ; @@ -10971,7 +11030,8 @@ mkV060 base = GSg Neuter => base_1+"јало" ; GPl => base_1+"јале" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -11041,7 +11101,8 @@ mkV061 base = GSg Neuter => base_1+"ило" ; GPl => base_1+"иле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; --guessed GSg Fem => base_1+"ела" ; --guessed GSg Neuter => base_1+"ело" ; @@ -11111,7 +11172,8 @@ mkV062 base = GSg Neuter => base_1+"ело" ; GPl => base_1+"еле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -11181,7 +11243,8 @@ mkV063 base = GSg Neuter => base_1+"ило" ; GPl => base_1+"иле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -11251,7 +11314,8 @@ mkV064 base = GSg Neuter => base_1+"ало" ; GPl => base_1+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -11321,7 +11385,8 @@ mkV065 base = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -11391,7 +11456,8 @@ mkV066 base = GSg Neuter => base_1+"ало" ; GPl => base_1+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -11461,7 +11527,8 @@ mkV067 base = GSg Neuter => base_1+base_2+"ало" ; GPl => base_1+base_2+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"те"+base_2+"ел" ; GSg Fem => base_1+"те"+base_2+"ела" ; GSg Neuter => base_1+"те"+base_2+"ело" ; @@ -11531,7 +11598,8 @@ mkV068 base = GSg Neuter => base_1+"јало" ; GPl => base_1+"јале" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -11601,7 +11669,8 @@ mkV069 base = GSg Neuter => base_1+"шло" ; GPl => base_1+"шле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"јдел" ; GSg Fem => base_1+"јдела" ; GSg Neuter => base_1+"јдело" ; @@ -11671,7 +11740,8 @@ mkV070 base = GSg Neuter => base_1+"ело" ; GPl => base_1+"еле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -11741,7 +11811,8 @@ mkV071 base = GSg Neuter => base_1+"кало" ; GPl => base_1+"кале" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"чел" ; GSg Fem => base_1+"чела" ; GSg Neuter => base_1+"чело" ; @@ -11811,7 +11882,8 @@ mkV072 base = GSg Neuter => base_1+"кало" ; GPl => base_1+"кале" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"чел" ; GSg Fem => base_1+"чела" ; GSg Neuter => base_1+"чело" ; @@ -11881,7 +11953,8 @@ mkV073 base = GSg Neuter => base_1+"ало" ; GPl => base_1+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"иел" ; GSg Fem => base_1+"иела" ; GSg Neuter => base_1+"иело" ; @@ -11951,7 +12024,8 @@ mkV074 base = GSg Neuter => base_1+"ало" ; GPl => base_1+"але" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"иел" ; GSg Fem => base_1+"иела" ; GSg Neuter => base_1+"иело" ; @@ -12021,7 +12095,8 @@ mkV075 base = GSg Neuter => base_1+"ало" ; GPl => nonExist } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => nonExist ; GSg Fem => nonExist ; GSg Neuter => base_1+"ело" ; @@ -12091,7 +12166,8 @@ mkV076 base = GSg Neuter => base_1+"јало" ; GPl => base_1+"јале" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -12161,7 +12237,8 @@ mkV077 base = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -12231,7 +12308,8 @@ mkV078 base = GSg Neuter => base_1+"ело" ; GPl => base_1+"еле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"иел" ; GSg Fem => base_1+"иела" ; GSg Neuter => base_1+"иело" ; @@ -12301,7 +12379,8 @@ mkV079 base = GSg Neuter => base_1+"л"+base_2+"ло" ; GPl => base_1+"л"+base_2+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+base_2+"лел" ; GSg Fem => base_1+base_2+"лела" ; GSg Neuter => base_1+base_2+"лело" ; @@ -12371,7 +12450,8 @@ mkV080 base = GSg Neuter => base_1+"јало" ; GPl => base_1+"јале" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -12441,7 +12521,8 @@ mkV081 base = GSg Neuter => base_1+"ало" ; GPl => nonExist } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => nonExist ; GSg Fem => nonExist ; GSg Neuter => base_1+"ело" ; @@ -12511,7 +12592,8 @@ mkV082 base = GSg Neuter => base_1+"гло" ; GPl => base_1+"гле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"жел" ; GSg Fem => base_1+"жела" ; GSg Neuter => base_1+"жело" ; @@ -12581,7 +12663,8 @@ mkV083 base = GSg Neuter => base_1+"ило" ; GPl => base_1+"иле" --guessed } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; --guessed GSg Fem => base_1+"ела" ; --guessed GSg Neuter => base_1+"ело" ; @@ -12651,7 +12734,8 @@ mkV084 base = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -12721,7 +12805,8 @@ mkV085 base = GSg Neuter => base_1+"ило" ; GPl => base_1+"иле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -12791,7 +12876,8 @@ mkV086 base = GSg Neuter => base_1+"гло" ; GPl => base_1+"гле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"жел" ; GSg Fem => base_1+"жела" ; GSg Neuter => base_1+"жело" ; @@ -12861,7 +12947,8 @@ mkV087 base = GSg Neuter => base_1+"шло" ; GPl => base_1+"шле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"дел" ; GSg Fem => base_1+"дела" ; GSg Neuter => base_1+"дело" ; @@ -12931,7 +13018,8 @@ mkV088 base = GSg Neuter => base_1+"кло" ; GPl => base_1+"кле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"чел" ; GSg Fem => base_1+"чела" ; GSg Neuter => base_1+"чело" ; @@ -13001,7 +13089,8 @@ mkV089 base = GSg Neuter => base_1+base_2+"фи"+base_3+"ло" ; GPl => base_1+base_2+"фи"+base_3+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+base_2+"фи"+base_3+"л" ; GSg Fem => base_1+base_2+"фи"+base_3+"ла" ; GSg Neuter => base_1+base_2+"фи"+base_3+"ло" ; @@ -13070,7 +13159,8 @@ mkV090 base_1 = GSg Neuter => base_1+"ло" ; --guessed GPl => nonExist } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => nonExist ; GSg Fem => nonExist ; GSg Neuter => base_1+"ло" ; @@ -13137,7 +13227,8 @@ mkV091 base_1 = GSg Neuter => base_1+"ло" ; --guessed GPl => nonExist } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => nonExist ; GSg Fem => nonExist ; GSg Neuter => base_1+"ло" ; @@ -13205,7 +13296,8 @@ mkV092 base = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"тел" ; GSg Fem => base_1+"тела" ; GSg Neuter => base_1+"тело" ; @@ -13275,7 +13367,8 @@ mkV093 base = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => "и"+base_1+"тел" ; GSg Fem => "и"+base_1+"тела" ; GSg Neuter => "и"+base_1+"тело" ; @@ -13345,7 +13438,8 @@ mkV094 base = GSg Neuter => base_1+"ло" ; GPl => base_1+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -13415,7 +13509,8 @@ mkV097 base = GSg Neuter => base_1+"гало" ; GPl => base_1+"гале" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"жел" ; GSg Fem => base_1+"жела" ; GSg Neuter => base_1+"жело" ; @@ -13485,7 +13580,8 @@ mkV098 base = GSg Neuter => base_1+"и"+base_2+"ло" ; GPl => base_1+"и"+base_2+"ле" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"и"+base_2+"л" ; GSg Fem => base_1+"и"+base_2+"ла" ; GSg Neuter => base_1+"и"+base_2+"ло" ; @@ -13555,7 +13651,8 @@ mkV099 base = GSg Neuter => base_1+"јало" ; GPl => base_1+"јале" } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => base_1+"ел" ; GSg Fem => base_1+"ела" ; GSg Neuter => base_1+"ело" ; @@ -13624,7 +13721,8 @@ mkV101 base_1 = GSg Neuter => base_1+"ло" ; GPl => nonExist } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => nonExist ; GSg Fem => nonExist ; GSg Neuter => base_1+"ло" ; @@ -15376,7 +15474,7 @@ mkAdv base_1 = { s = base_1 } ; -mkPron : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> GenNum -> Person -> Pron = +mkPron : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> GenNum -> Person -> Pronoun = \f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,g,p -> { s = table { RSubj => f1 ; diff --git a/src/macedonian/ParadigmsMkd.gf b/src/macedonian/ParadigmsMkd.gf index 224bf14c..d5db051d 100644 --- a/src/macedonian/ParadigmsMkd.gf +++ b/src/macedonian/ParadigmsMkd.gf @@ -1073,7 +1073,10 @@ dualV : V -> V -> V = \impf,perf -> lin V Imperfective => impf.participle.aorist ! Imperfective ; Perfective => perf.participle.aorist ! Perfective } ; - imperfect = impf.participle.imperfect ; + imperfect = table { + Imperfective => impf.participle.imperfect ! Imperfective ; + Perfective => perf.participle.imperfect ! Perfective + } ; perfect = table { Imperfective => impf.participle.perfect ! Imperfective ; Perfective => perf.participle.perfect ! Perfective @@ -1095,7 +1098,7 @@ compoundV = overload { imperfect = \\a,n,p => v.imperfect ! a ! n ! p ++ s ; imperative = \\a,n => v.imperative ! a ! n ++ s ; participle = { aorist = \\a,gn => v.participle.aorist ! a ! gn ++ s ; - imperfect = \\gn => v.participle.imperfect ! gn ++ s ; + imperfect = \\a,gn => v.participle.imperfect ! a ! gn ++ s ; perfect = \\a => v.participle.perfect ! a ++ s ; adjectival = \\a => v.participle.adjectival ! a ++ s ; adverbial = v.participle.adverbial diff --git a/src/macedonian/ResMkd.gf b/src/macedonian/ResMkd.gf index 27f41990..34927986 100644 --- a/src/macedonian/ResMkd.gf +++ b/src/macedonian/ResMkd.gf @@ -1,10 +1,9 @@ -resource ResMkd = ParamX [DTail,T1,T2,T3,inc] ** open Prelude in { +resource ResMkd = ParamX - [Tense] ** open Prelude in { oper Compl = {s : Str} ; param Species = Indef | Def Distance ; param Distance = Unspecified | Distal | Proximal ; -param Number = Sg | Pl ; param NRelType = Pref | AdjMod | AdvMod ; 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 @@ -40,10 +39,18 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun = param Aspect = Imperfective | Perfective ; -param Person = P1 | P3 | P2 ; param GenNum = GSg Gender | GPl ; param VType = VNormal | VMedial Case ; -oper Verb = {present: Aspect => Number => Person => Str; aorist: Number => Person => Str; imperfect: Aspect => Number => Person => Str; imperative: Aspect => Number => Str; participle: {aorist: Aspect => GenNum => Str; imperfect: GenNum => Str; perfect: Aspect => Str; adjectival: Aspect => Str; adverbial: Str}; noun_from_verb: Str; vtype: VType} ; -- 8174 + Tense = VPresent + | VPastSimple --# notpresent + | VPastImperfect --# notpresent + | VFut --# notpresent + | VCond --# notpresent + ; + + Order = Main | Quest ; + +oper Verb = {present: Aspect => Number => Person => Str; aorist: Number => Person => Str; imperfect: Aspect => Number => Person => Str; imperative: Aspect => Number => Str; participle: {aorist: Aspect => GenNum => Str; imperfect: Aspect => GenNum => Str; perfect: Aspect => Str; adjectival: Aspect => Str; adverbial: Str}; noun_from_verb: Str; vtype: VType} ; -- 8174 oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb = \f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32 -> { present = \\_ => @@ -96,7 +103,8 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : GSg Neuter => f23 ; GPl => f24 } ; - imperfect = table { + imperfect = \\_ => + table { GSg Masc => f25 ; GSg Fem => f26 ; GSg Neuter => f27 ; @@ -154,7 +162,7 @@ oper mkAdv : Str -> Adv = param Case = Acc | Dat ; param Role = RSubj | RObj Case | RPrep ; -oper Pron = {s : Role => Str; clitic : Case => Str; g : GenNum; p : Person} ; +oper Pronoun = {s : Role => Str; clitic : Case => Str; g : GenNum; p : Person} ; genNum : Gender -> Number -> GenNum = \g,n -> case n of { @@ -162,4 +170,97 @@ genNum : Gender -> Number -> GenNum = \g,n -> Pl => GPl } ; +auxBe = { + present : Number => Person => Str + = table { + Sg => table { + P1 => "сум" ; + P2 => "си" ; + P3 => "е" + } ; + Pl => table { + P1 => "сме" ; + P2 => "сте" ; + P3 => "се" + } + } ; + imperfect : Number => Person => Str + = table { + Sg => table { + P1 => "бев" ; + P2 => "беше" ; + P3 => "беше" + } ; + Pl => table { + P1 => "бевме" ; + P2 => "бевте" ; + P3 => "беа" + } + } ; + imperative : Number => Str = + table { + Sg => "биди" ; + Pl => "бидете" + } ; + participle = { + aorist : GenNum => Str + = table { + GSg Masc => "бил" ; + GSg Fem => "била" ; + GSg Neuter => "било" ; + GPl => "биле" + } ; + imperfect : GenNum => Str + = table { + GSg Masc => "бидел" ; + GSg Fem => "бидела" ; + GSg Neuter => "бидело" ; + GPl => "биделе" + } + } +} ; + +auxHave = { + present : Number => Person => Str + = table { + Sg => table { + P1 => "имам" ; + P2 => "имаш" ; + P3 => "има" + } ; + Pl => table { + P1 => "имаме" ; + P2 => "имате" ; + P3 => "имаат" + } + } ; + imperfect : Number => Person => Str + = table { + Sg => table { + P1 => "имав" ; + P2 => "имаше" ; + P3 => "имаше" + } ; + Pl => table { + P1 => "имавме" ; + P2 => "имавте" ; + P3 => "имаа" + } + } ; + imperative : Number => Str = + table { + Sg => "имај" ; + Pl => "имајте" + } ; + participle = { + imperfect : GenNum => Str + = table { + GSg Masc => "имал" ; + GSg Fem => "имала" ; + GSg Neuter => "имало" ; + GPl => "имале" + } + } +} ; + } diff --git a/src/macedonian/SentenceMkd.gf b/src/macedonian/SentenceMkd.gf index 77129147..31e1a3b8 100644 --- a/src/macedonian/SentenceMkd.gf +++ b/src/macedonian/SentenceMkd.gf @@ -1,13 +1,40 @@ concrete SentenceMkd of Sentence = CatMkd ** open Prelude,ResMkd in { - lin PredVP np vp = +lin PredVP np vp = let n = case np.g of { GSg _ => Sg ; GPl => Pl } - in {present = \\a => np.s ! RSubj ++ vp.present ! a ! n ! np.p ; - aorist = np.s ! RSubj ++ vp.aorist ! n ! np.p ; - participle = {aorist = \\a => np.s ! RSubj ++ vp.participle.aorist ! a ! np.g; - perfect = \\a => np.s ! RSubj ++ vp.participle.perfect ! a}} ; + in {s = \\t,a,p,o => + case of { + => np.s ! RSubj ++ neg ++ vp.present ! Imperfective ! n ! np.p ; + => np.s ! RSubj ++ neg ++ auxBe.present ! n ! np.p ++ vp.participle.imperfect ! Perfective ! np.g ; + => np.s ! RSubj ++ neg ++ vp.aorist ! n ! np.p ; + => np.s ! RSubj ++ neg ++ auxBe.imperfect ! n ! np.p ++ vp.participle.imperfect ! Perfective ! np.g ; + => np.s ! RSubj ++ neg ++ vp.imperfect ! Perfective ! n ! np.p ; + => np.s ! RSubj ++ neg ++ auxBe.imperfect ! n ! np.p ++ vp.participle.imperfect ! Perfective ! np.g ; + => np.s ! RSubj ++ fut ++ vp.present ! Perfective ! n ! np.p ; + => np.s ! RSubj ++ fut ++ auxHave.present ! n ! np.p ++ vp.participle.perfect ! Perfective ; + => np.s ! RSubj ++ neg ++ "би" ++ vp.participle.imperfect ! Perfective ! np.g ; + => np.s ! RSubj ++ neg ++ "би" ++ auxHave.participle.imperfect ! np.g ++ vp.participle.perfect ! Perfective + } where { + neg = case p of { + Pos => "" ; + Neg => "не" + } ; + fut = case p of { + Pos => "ке" ; + Neg => "нема да" + } ; + li = case o of { + Main => "" ; + Quest => "ли" + } + } + } ; + + UseCl t p cl = { + s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! Main + } ; } diff --git a/src/macedonian/StructuralMkd.gf b/src/macedonian/StructuralMkd.gf index 0db5d8da..02a95db7 100644 --- a/src/macedonian/StructuralMkd.gf +++ b/src/macedonian/StructuralMkd.gf @@ -3,8 +3,8 @@ concrete StructuralMkd of Structural = CatMkd ** open ResMkd,MorphoMkd in { lin i_Pron = mkPron "јас" "мене" "ме" "мене" "ми" "мене" "мој" "мојот" "моја" "мојата" "мое" "моето" "мои" "моите" "ми" (GSg Masc) P1 ; lin youSg_Pron = mkPron "ти" "тебе" "те" "тебе" "ти" "тебе" "твој" "твојот" "твоја" "твојата" "твое" "твоето" "твои" "твоите" "ти" (GSg Masc) P2 ; lin he_Pron = mkPron "тој" "него" "го" "нему" "му" "него" "негов" "неговиот" "негова" "неговата" "негово" "неговото" "негови" "неговите" "му" (GSg Masc) P3 ; -lin she_Pron = mkPron "таа" "неа" "ја" "нејзе" "ѝ" "неа" "нејзин" "нејзиниот" "нејзина" "нејзината" "нејзино" "нејзиното" "нејзини" "нејзините" "ѝ" (GSg Masc) P3 ; -lin it_Pron = mkPron "тоа" "него" "го" "нему" "му" "него" "негов" "неговиот" "негова" "неговата" "негово" "неговото" "негови" "неговите" "му" (GSg Masc) P3 ; +lin she_Pron = mkPron "таа" "неа" "ја" "нејзе" "ѝ" "неа" "нејзин" "нејзиниот" "нејзина" "нејзината" "нејзино" "нејзиното" "нејзини" "нејзините" "ѝ" (GSg Fem) P3 ; +lin it_Pron = mkPron "тоа" "него" "го" "нему" "му" "него" "негов" "неговиот" "негова" "неговата" "негово" "неговото" "негови" "неговите" "му" (GSg Neuter) P3 ; lin we_Pron = mkPron "ние" "нас" "нѐ" "нам" "ни" "нас" "наш" "нашиот" "наша" "нашата" "наше" "нашето" "наши" "нашите" "ни" GPl P1 ; lin youPl_Pron = mkPron "вие" "вас" "ве" "вам" "ви" "вас" "ваш" "вашиот" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" "ви" GPl P2 ; lin youPol_Pron = mkPron "вие" "вас" "ве" "вам" "ви" "вас" "ваш" "вашиот" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" "ви" (GSg Masc) P2 ; diff --git a/src/macedonian/VerbMkd.gf b/src/macedonian/VerbMkd.gf index 5352a466..e989b00a 100644 --- a/src/macedonian/VerbMkd.gf +++ b/src/macedonian/VerbMkd.gf @@ -1,5 +1,6 @@ concrete VerbMkd of Verb = CatMkd ** open Prelude,ResMkd in { + lin UseV v = v ; lin ComplSlash vps np = {present = \\a,n,p => vps.present ! a ! n ! p ++ np.s ! RObj Acc ; @@ -7,7 +8,8 @@ concrete VerbMkd of Verb = CatMkd ** open Prelude,ResMkd in { imperfect = \\a,n,p => vps.imperfect ! a ! n ! p ++ np.s ! RObj Acc; imperative = \\a,n => vps.imperative ! a ! n ++ np.s ! RObj Acc; participle = {aorist = \\a,gn => vps.participle.aorist ! a ! gn ++ np.s ! RObj Acc; - perfect = \\a => vps.participle.perfect ! a ++ np.s ! RObj Acc}} ; + perfect = \\a => vps.participle.perfect ! a ++ np.s ! RObj Acc; + imperfect = \\a,gn => vps.participle.imperfect ! a ! gn ++ np.s ! RObj Acc}} ; lin SlashV2a v = v ; }