extensions by Codex

This commit is contained in:
Krasimir Angelov
2026-09-27 13:47:53 +02:00
parent 7e897f5c66
commit 9458f5c8e7
22 changed files with 5400 additions and 5323 deletions
+70
View File
@@ -0,0 +1,70 @@
concrete NounKaz of Noun = CatKaz ** open Prelude, ResKaz in {
lin
UseN n = n ;
AdjCN ap cn = cn ** {
s=\\c,n => ap.s ++ cn.s ! c ! n;
poss=\\o,p,n => ap.s ++ cn.poss ! o ! p ! n
} ;
AdvCN cn adv = cn ** {
s=\\c,n => adv.s ++ cn.s ! c ! n;
poss=\\o,p,n => adv.s ++ cn.poss ! o ! p ! n
} ;
RelCN cn rs = cn ** {
s=\\c,n => rs.s ++ cn.s ! c ! n;
poss=\\o,p,n => rs.s ++ cn.poss ! o ! p ! n
} ;
SentCN cn sc = cn ** {
s=\\c,n => sc.s ++ cn.s ! c ! n;
poss=\\o,p,n => sc.s ++ cn.poss ! o ! p ! n
} ;
ApposCN cn np = cn ** {
s=\\c,n => cn.s ! c ! n ++ np.s ! c;
poss=\\o,p,n => cn.poss ! o ! p ! n ++ np.s ! Nom
} ;
ComplN2 n np = n ** {
s=\\c,k => complNP n.c2 np ++ n.s ! c ! k;
poss=\\o,p,k => complNP n.c2 np ++ n.poss ! o ! p ! k
} ;
ComplN3 n np = n ** {
s=\\c,k => complNP n.c2 np ++ n.s ! c ! k;
poss=\\o,p,k => complNP n.c2 np ++ n.poss ! o ! p ! k; c2=n.c3
} ;
Use2N3 n = {
s=n.s;
poss=n.poss;
c2=n.c2
} ;
Use3N3 n = {
s=n.s;
poss=n.poss;
c2=n.c3
} ;
UseN2 n = {
s=n.s;
poss=n.poss
} ;
UsePN pn = {s=\\_ => pn.s;a=defaultAgr} ;
UsePron p = p ;
DetCN det cn = {s=\\c => det.s ++ case det.poss of {
NoPoss => cn.s ! c ! det.n; Poss p n => possForm cn n (nounPerson p) det.n};
a={p=P3;n=det.n}} ;
MassNP cn = {s=\\c => cn.s ! c ! Sg;a=defaultAgr} ;
DetQuant q num = {s=q.s ++ num.s;n=num.n;poss=q.poss} ;
DetQuantOrd q num ord = {s=q.s ++ num.s ++ ord.s;n=num.n;poss=q.poss} ;
DefArt = {s=[];poss=NoPoss} ; IndefArt = {s=[];poss=NoPoss} ;
PossPron p = {s=[];poss=Poss p.a.p p.a.n} ;
NumSg = {s=[];n=Sg} ; NumPl = {s=[];n=Pl} ;
NumCard c = {s=c.s;n=Sg} ; NumNumeral n = {s=n.s;n=Sg} ; NumDecimal n = {s=n.s;n=Sg} ;
AdNum a n = {s=a.s ++ n.s} ; OrdNumeral n = {s=n.s} ; OrdDigits n = {s=n.s} ;
OrdSuperl a = {s="ең" ++ a.s} ; OrdNumeralSuperl n a = {s=n.s ++ "ең" ++ a.s} ;
AdvNP np adv = {s=\\c => np.s ! c ++ adv.s;a=np.a} ;
ExtAdvNP np adv = {s=\\c => np.s ! c ++ "," ++ adv.s;a=np.a} ;
PredetNP p np = {s=\\c => p.s ++ np.s ! c;a=np.a} ;
PossNP cn np = cn ** {s=\\c,n => np.s ! Gen ++ possForm cn np.a.n (nounPerson np.a.p) n;
poss=\\o,p,n => np.s ! Gen ++ cn.poss ! o ! p ! n} ;
PartNP cn np = cn ** {s=\\c,n => np.s ! Ablat ++ cn.s ! c ! n;
poss=\\o,p,n => np.s ! Ablat ++ cn.poss ! o ! p ! n} ;
CountNP det np = {s=\\c => det.s ++ np.s ! c;a={p=P3;n=det.n}} ;
DetDAP det = {s=det.s} ; AdjDAP dap ap = {s=dap.s ++ ap.s} ;
QuantityNP dec mu = {s=\\_ => dec.s ++ mu.s;a={p=P3;n=Pl}} ;
}