prepare for numerals with countable forms

This commit is contained in:
Krasimir Angelov
2026-04-11 08:58:08 +02:00
parent 401ac1f954
commit 9e402cb608
4 changed files with 23 additions and 13 deletions

View File

@@ -30,9 +30,9 @@ linref A, A2 = \a -> a.s ! Indef ! GSg Masc ;
lincat AP = {s : Species => GenNum => Str; isPre : Bool} ; lincat AP = {s : Species => GenNum => Str; isPre : Bool} ;
lincat NP = {s : Role => Str; vocative: Str; g : GenNum; p : Person} ; lincat NP = {s : Role => Str; vocative: Str; g : GenNum; p : Person} ;
lincat Num = {s : Str; n : Number} ; lincat Num = {s : Str; n : NNumber} ;
lincat Quant = {s : Str; sp : Species} ; lincat Quant = {s : Str; sp : Species} ;
lincat Det = {s : Str; n : Number; sp : Species} ; lincat Det = {s : Str; n : NNumber; sp : Species} ;
lincat VP = {present : Aspect => Number => Person => Str; lincat VP = {present : Aspect => Number => Person => Str;
aorist : Number => Person => Str; aorist : Number => Person => Str;

View File

@@ -29,19 +29,25 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in {
} ; } ;
lin DefArt = {s = []; sp = Def Unspecified} ; lin DefArt = {s = []; sp = Def Unspecified} ;
lin DetCN det cn = { lin DetCN det cn = {
s = \\r => det.s ++ cn.s ! det.sp ! det.n; s = \\r => case det.n of {
vocative = det.s ++ cn.vocative ! det.n; NNum n => det.s ++ cn.s ! det.sp ! n;
NCountable => det.s ++ cn.count_form
} ;
vocative = case det.n of {
NNum Sg => det.s ++ cn.vocative ! Sg;
_ => det.s ++ cn.vocative ! Pl
} ;
g = case det.n of { g = case det.n of {
Sg => GSg cn.g; NNum Sg => GSg cn.g;
Pl => GPl _ => GPl
} ; } ;
p = P3; p = P3;
} ; } ;
lin DetQuant det num = {s = det.s ++ num.s; n = num.n; lin DetQuant det num = {s = det.s ++ num.s; n = num.n;
sp = det.sp} ; sp = det.sp} ;
lin IndefArt = {s = []; sp = Indef} ; lin IndefArt = {s = []; sp = Indef} ;
lin NumPl = {s = []; n = Pl} ; lin NumPl = {s = []; n = NNum Pl} ;
lin NumSg = {s = []; n = Sg} ; lin NumSg = {s = []; n = NNum Sg} ;
lin UseN s = s ; lin UseN s = s ;
lin UsePron p = p ** {vocative=p.s ! RSubj} ; lin UsePron p = p ** {vocative=p.s ! RSubj} ;
} }

View File

@@ -1124,13 +1124,13 @@ mkV2V = overload {
} ; } ;
mkV2S = overload { mkV2S = overload {
mkV2S : V -> V2S = \v -> lin V2S v ** {c2,c3=noPrep} ; mkV2S : V -> V2S = \v -> lin V2S v ** {c2=noPrep} ;
mkV2S : V -> Prep -> Prep -> V2S = \v,p2,p3 -> lin V2S v ** {c2=p2; c3=p3} ; mkV2S : V -> Prep -> V2S = \v,p2 -> lin V2S v ** {c2=p2} ;
} ; } ;
mkV2Q = overload { mkV2Q = overload {
mkV2Q : V -> V2Q = \v -> lin V2Q v ** {c2,c3=noPrep} ; mkV2Q : V -> V2Q = \v -> lin V2Q v ** {c2=noPrep} ;
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p2,p3 -> lin V2Q v ** {c2=p2; c3=p3} ; mkV2Q : V -> Prep -> V2Q = \v,p2 -> lin V2Q v ** {c2=p2} ;
} ; } ;
mkV2A = overload { mkV2A = overload {
@@ -1171,7 +1171,7 @@ mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre = False} ; mkMU : Str -> MU = \s -> lin MU {s=s; isPre = False} ;
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ; mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
mkQuant : Str -> Quant = \s -> lin Quant {s=s; sp=Indef} ; mkQuant : Str -> Quant = \s -> lin Quant {s=s; sp=Indef} ;
mkDet : Str -> Det = \s -> lin Det {s=s; n=Sg; sp=Indef} ; mkDet : Str -> Det = \s -> lin Det {s=s; n=NNum Sg; sp=Indef} ;
mkConj : Str -> Conj = \s -> lin Conj {s=s} ; mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ; mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ; mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;

View File

@@ -5,6 +5,10 @@ oper Compl = {s : Str} ;
param Species = Indef | Def Distance ; param Species = Indef | Def Distance ;
param Distance = Unspecified | Distal | Proximal ; param Distance = Unspecified | Distal | Proximal ;
param NRelType = Pref | AdjMod | AdvMod ; param NRelType = Pref | AdjMod | AdvMod ;
NNumber =
NNum Number
| NCountable
;
param Gender = Masc | Fem | Neuter ; 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 oper Noun = {s: Species => Number => Str; count_form: Str; vocative: Number => Str; rel: Species => GenNum => Str; relType : NRelType; g: Gender} ; -- 24855
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun = oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =