diff --git a/src/english/NounEng.gf b/src/english/NounEng.gf index 760460e9..4122341e 100644 --- a/src/english/NounEng.gf +++ b/src/english/NounEng.gf @@ -39,9 +39,9 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in { DetQuant quant num = { s = quant.s ! num.hasCard ! num.n ++ num.s ! quant.isDef ! Nom; - sp = \\g,hasAdj,c => case of { - => quant.sp ! g ! hasAdj ! num.n ! c ++ num.s ! quant.isDef ! Nom ; - _ => quant.s ! True ! num.n ++ num.sp ! quant.isDef ! npcase2case c + sp = \\g,hasAdj,c => case num.hasCard of { + False => quant.sp ! g ! hasAdj ! num.n ! c ++ num.s ! quant.isDef ! Nom ; + _ => quant.s ! True ! num.n ++ num.sp ! quant.isDef ! npcase2case c } ; n = num.n ; hasNum = num.hasCard diff --git a/src/macedonian/AdjectiveMkd.gf b/src/macedonian/AdjectiveMkd.gf index 2f59be84..460121d0 100644 --- a/src/macedonian/AdjectiveMkd.gf +++ b/src/macedonian/AdjectiveMkd.gf @@ -2,7 +2,7 @@ concrete AdjectiveMkd of Adjective = CatMkd ** open Prelude,ResMkd in { lin AdAP a ap = {s = \\s,g => a.s ++ ap.s ! s ! g; isPre = ap.isPre} ; - lin AdjOrd o = {s = \\s,g => o.s; isPre = False} ; + lin AdjOrd o = {s = o.s; isPre = False} ; lin AdvAP ap adv = { s = \\s,g => ap.s ! s ! g ++ adv.s; isPre = False diff --git a/src/macedonian/CatMkd.gf b/src/macedonian/CatMkd.gf index 7c4f367d..6a92fd06 100644 --- a/src/macedonian/CatMkd.gf +++ b/src/macedonian/CatMkd.gf @@ -32,6 +32,7 @@ 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 : GenNum => Str; sp : Species} ; +lincat Ord = {s : Species => GenNum => Str} ; lincat Det, DAP = {s : Gender => Str; n : NNumber; sp : Species} ; lincat VP = Verb ** {compl : Agr => Str} ; diff --git a/src/macedonian/NounMkd.gf b/src/macedonian/NounMkd.gf index a2082e2e..6c9a84d3 100644 --- a/src/macedonian/NounMkd.gf +++ b/src/macedonian/NounMkd.gf @@ -68,8 +68,11 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in { lin DetQuant q num = {s = \\g => q.s ! genNum g (nnum2num num.n) ++ num.s; n = num.n; sp = q.sp} ; - lin DetQuantOrd q n o = {s = \\g => q.s ! GSg Masc ++ n.s ++ o.s; - n = n.n; sp = q.sp} ; + lin DetQuantOrd q n o = { + s = \\g => q.s ! GSg Masc ++ n.s ++ o.s ! q.sp ! genNum g (nnum2num n.n); + n = n.n; + sp = Indef + } ; lin ExtAdvNP np a = { s = \\r => np.s ! r ++ SOFT_BIND++"," ++ a.s; vocative = np.vocative ++ SOFT_BIND++"," ++ a.s; @@ -93,10 +96,10 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in { vocative = np.vocative ++ rs.s ! np.a.g ; a = np.a; } ; - lin OrdDigits d = {s = d.s} ; - lin OrdNumeral n = {s = n.s} ; - lin OrdNumeralSuperl n a = {s = n.s ++ "нај" ++ BIND ++ a.s ! Indef ! GSg Masc} ; - lin OrdSuperl a = {s = "нај" ++ BIND ++ a.s ! Indef ! GSg Masc} ; + lin OrdDigits d = {s = \\s,gn => d.s} ; + lin OrdNumeral n = {s = \\s,gn => n.s} ; + 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;