fix ordinals

This commit is contained in:
Krasimir Angelov
2026-04-15 07:37:33 +02:00
parent 15df5ed37e
commit 26abc63953
4 changed files with 14 additions and 10 deletions

View File

@@ -39,9 +39,9 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
DetQuant quant num = { DetQuant quant num = {
s = quant.s ! num.hasCard ! num.n ++ num.s ! quant.isDef ! Nom; s = quant.s ! num.hasCard ! num.n ++ num.s ! quant.isDef ! Nom;
sp = \\g,hasAdj,c => case <num.hasCard,num.n> of { sp = \\g,hasAdj,c => case num.hasCard of {
<False,Sg> => quant.sp ! g ! hasAdj ! num.n ! c ++ num.s ! quant.isDef ! Nom ; False => quant.sp ! g ! hasAdj ! num.n ! c ++ num.s ! quant.isDef ! Nom ;
_ => quant.s ! True ! num.n ++ num.sp ! quant.isDef ! npcase2case c _ => quant.s ! True ! num.n ++ num.sp ! quant.isDef ! npcase2case c
} ; } ;
n = num.n ; n = num.n ;
hasNum = num.hasCard hasNum = num.hasCard

View File

@@ -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; lin AdAP a ap = {s = \\s,g => a.s ++ ap.s ! s ! g;
isPre = ap.isPre} ; 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 = { lin AdvAP ap adv = {
s = \\s,g => ap.s ! s ! g ++ adv.s; s = \\s,g => ap.s ! s ! g ++ adv.s;
isPre = False isPre = False

View File

@@ -32,6 +32,7 @@ lincat AP = {s : Species => GenNum => Str; isPre : Bool} ;
lincat NP = {s : Role => Str; vocative: Str; a : Agr} ; lincat NP = {s : Role => Str; vocative: Str; a : Agr} ;
lincat Num = {s : Str; n : NNumber} ; lincat Num = {s : Str; n : NNumber} ;
lincat Quant = {s : GenNum => Str; sp : Species} ; lincat Quant = {s : GenNum => Str; sp : Species} ;
lincat Ord = {s : Species => GenNum => Str} ;
lincat Det, DAP = {s : Gender => Str; n : NNumber; sp : Species} ; lincat Det, DAP = {s : Gender => Str; n : NNumber; sp : Species} ;
lincat VP = Verb ** {compl : Agr => Str} ; lincat VP = Verb ** {compl : Agr => Str} ;

View File

@@ -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; lin DetQuant q num = {s = \\g => q.s ! genNum g (nnum2num num.n) ++ num.s;
n = num.n; n = num.n;
sp = q.sp} ; sp = q.sp} ;
lin DetQuantOrd q n o = {s = \\g => q.s ! GSg Masc ++ n.s ++ o.s; lin DetQuantOrd q n o = {
n = n.n; sp = q.sp} ; 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 = { lin ExtAdvNP np a = {
s = \\r => np.s ! r ++ SOFT_BIND++"," ++ a.s; s = \\r => np.s ! r ++ SOFT_BIND++"," ++ a.s;
vocative = np.vocative ++ 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 ; vocative = np.vocative ++ rs.s ! np.a.g ;
a = np.a; a = np.a;
} ; } ;
lin OrdDigits d = {s = d.s} ; lin OrdDigits d = {s = \\s,gn => d.s} ;
lin OrdNumeral n = {s = n.s} ; lin OrdNumeral n = {s = \\s,gn => n.s} ;
lin OrdNumeralSuperl n a = {s = n.s ++ "нај" ++ BIND ++ a.s ! Indef ! GSg Masc} ; lin OrdNumeralSuperl n a = {s = \\s,gn => n.s ++ "нај" ++ BIND ++ a.s ! s ! gn} ;
lin OrdSuperl a = {s = "нај" ++ BIND ++ a.s ! Indef ! GSg Masc} ; lin OrdSuperl a = {s = \\s,gn => "нај" ++ BIND ++ a.s ! s ! gn} ;
lin PPartNP np v2 = {s = \\r => np.s ! r lin PPartNP np v2 = {s = \\r => np.s ! r
++ v2.present ! Imperfective ! Sg ! np.a.p; ++ v2.present ! Imperfective ! Sg ! np.a.p;
vocative = np.vocative ++ v2.present ! Imperfective ! Sg ! np.a.p; vocative = np.vocative ++ v2.present ! Imperfective ! Sg ! np.a.p;