more updates from Codex

This commit is contained in:
Krasimir Angelov
2026-09-18 11:54:03 +02:00
parent eb24170d3a
commit 22559fe681
11 changed files with 153 additions and 148 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ concrete AdverbMkd of Adverb = CatMkd ** open Prelude,ResMkd in {
++ a.s ! Indef ! np.a.g ++ np.s ! RSubj} ;
lin ComparAdvAdjS c a s = {s = c.s
++ a.s ! Indef ! GSg Masc ++ s.s} ;
lin PositAdAAdj a = {s = a.s ! Indef ! GSg Masc} ;
lin PositAdAAdj a = {s = a.adverb} ;
lin PositAdvAdj a = {s = a.adverb} ;
lin PrepNP p np = {s = p.s ++ np.s ! RPrep} ;
lin SubjS s s2 = {s = s.s ++ s2.s} ;
+23 -9
View File
@@ -11,6 +11,15 @@ lincat
RNP = {s : Agr => Role => Str; a : Agr; isPron : Bool} ;
RNPList = {s : Agr => Ints 4 => Role => Str; a : Agr} ;
oper
partAdj : Str -> GenNum -> Str = \base,gn ->
case gn of {
GSg Masc => base ;
GSg Fem => base ++ BIND ++ "а" ;
GSg Neuter => base ++ BIND ++ "о" ;
GPl => base ++ BIND ++ "и"
} ;
lin
GenModNP num np cn = DetCN (DetQuant DefArt num) (PossNP cn np) ;
@@ -51,13 +60,13 @@ lin
} ;
PastPartAP vps = {
s = \\_,gn => vps.participle.adjectival ! Perfective ++
s = \\_,gn => partAdj (vps.participle.adjectival ! Perfective) gn ++
vps.compl ! {g = gn; p = P3} ;
isPre = False
} ;
PastPartAgentAP vps np = {
s = \\_,gn => vps.participle.adjectival ! Perfective ++
s = \\_,gn => partAdj (vps.participle.adjectival ! Perfective) gn ++
vps.compl ! {g = gn; p = P3} ++
"од" ++ np.s ! RPrep ;
isPre = False
@@ -73,8 +82,9 @@ lin
perfect = \\_ => nonExist ;
adjectival = \\_ => nonExist ;
adverbial = nonExist} ;
noun_from_verb = nonExist ;
compl = \\agr => vps.participle.adjectival ! Perfective ++ vps.compl ! agr ;
noun_from_verb = "бидување" ;
compl = \\agr => partAdj (vps.participle.adjectival ! Perfective) agr.g ++
vps.compl ! agr ;
vtype = VNormal
} ;
@@ -88,8 +98,9 @@ lin
perfect = \\_ => nonExist ;
adjectival = \\_ => nonExist ;
adverbial = nonExist} ;
noun_from_verb = nonExist ;
compl = \\agr => vps.participle.adjectival ! Perfective ++ vps.compl ! agr ++
noun_from_verb = "бидување" ;
compl = \\agr => partAdj (vps.participle.adjectival ! Perfective) agr.g ++
vps.compl ! agr ++
"од" ++ np.s ! RPrep ;
vtype = VNormal
} ;
@@ -140,14 +151,16 @@ lin
vp.compl ! {g = GSg Neuter; p = P3}} ;
WithoutVP vp = {s = "без" ++ vp.noun_from_verb ++ BIND ++ "то" ++
vp.compl ! {g = GSg Neuter; p = P3}} ;
InOrderToVP vp = {s = "за да" ++ vp.present ! Perfective ! Sg ! P3 ++
InOrderToVP vp = {s = "за да" ++ medialClitic vp.vtype ++
vp.present ! Perfective ! Sg ! P3 ++
vp.compl ! {g = GSg Masc; p = P3}} ;
ComplBareVS vs s = vs ** {compl = \\_ => s.s} ;
ComplSlashPartLast = ComplSlash ;
UttVPShort vp = {
s = vp.imperative ! Perfective ! Sg ++ vp.compl ! {g = GSg Masc; p = P2}
s = vp.imperative ! Perfective ! Sg ++ medialClitic vp.vtype ++
vp.compl ! {g = GSg Masc; p = P2}
} ;
BaseVPS x y = {s = \\a => table {4 => y.s ! a; _ => x.s ! a}} ;
@@ -174,7 +187,8 @@ lin
}
} ;
MkVPI vp = {
s = \\agr => "да" ++ vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ vp.compl ! agr
s = \\agr => "да" ++ medialClitic vp.vtype ++
vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ vp.compl ! agr
} ;
ConjVPI conj vpi = {
s = \\agr => linCoord [] ! conj.sep ++
+6 -2
View File
@@ -24,8 +24,12 @@ concrete IdiomMkd of Idiom = CatMkd ** open Prelude,ResMkd,MorphoMkd in {
lin GenericCl vp = {s = \\t,a,p,o => vp.present ! Imperfective ! Sg
! P1} ;
lin ImpP3 np vp = {s = np.s ! RSubj
++ vp.present ! Imperfective ! Sg ! np.a.p} ;
lin ImpPl1 vp = {s = vp.present ! Imperfective ! Sg ! P1} ;
++ "нека" ++ medialClitic vp.vtype ++
vp.present ! Perfective ! genNum2num np.a.g ! P3
++ vp.compl ! np.a} ;
lin ImpPl1 vp = {s = "да" ++ medialClitic vp.vtype ++
vp.present ! Perfective ! Pl ! P1
++ vp.compl ! {g = GPl; p = P1}} ;
lin ImpersCl vp = {s = \\t,a,p,o => vp.present ! Imperfective ! Sg
! P1} ;
lin ProgrVP vp = vp ** {
+41 -41
View File
@@ -407,15 +407,15 @@ mkN013 base_1 =
Pl => base_1+"и"
} ;
Def Unspecified => table {
Sg => base_1+"та" ; --guessed
Sg => base_1+"от" ;
Pl => base_1+"ите" --guessed
} ;
Def Proximal => table {
Sg => base_1+"ва" ; --guessed
Sg => base_1+"ов" ;
Pl => base_1+"иве" --guessed
} ;
Def Distal => table {
Sg => base_1+"на" ; --guessed
Sg => base_1+"он" ;
Pl => base_1+"ине" --guessed
}
} ;
@@ -4999,22 +4999,22 @@ mkN152 base =
Pl => base_1+"а"
} ;
Def Unspecified => table {
Sg => nonExist ;
Pl => nonExist
Sg => base_1+"ото" ;
Pl => base_1+"ата"
} ;
Def Proximal => table {
Sg => nonExist ;
Pl => nonExist
Sg => base_1+"ово" ;
Pl => base_1+"ава"
} ;
Def Distal => table {
Sg => nonExist ;
Pl => nonExist
Sg => base_1+"оно" ;
Pl => base_1+"ана"
}
} ;
count_form = base_1+"а" ;
vocative = table {
Sg => nonExist ;
Pl => nonExist
Sg => base_1+"о" ;
Pl => base_1+"а"
} ;
rel = \\_,_ => base_1 ;
relType = Pref ;
@@ -13800,7 +13800,7 @@ mkA002 base_1 =
GPl => base_1+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"е"
} ;
mkA003 : Str -> A ;
@@ -14104,7 +14104,7 @@ mkA011 base =
GPl => base_1+"а"+base_2+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"а"+base_2+"о"
};
_ => error "Can't apply paradigm mkA011"
} ;
@@ -14174,7 +14174,7 @@ mkA013 base =
GPl => base_1+"т"+base_2+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"т"+base_2+"о"
};
_ => error "Can't apply paradigm mkA013"
} ;
@@ -14209,7 +14209,7 @@ mkA014 base =
GPl => nonExist
}
} ;
adverb = nonExist
adverb = base_1+"оа"
};
_ => error "Can't apply paradigm mkA014"
} ;
@@ -14244,7 +14244,7 @@ mkA015 base =
GPl => base_1+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"е"
};
_ => error "Can't apply paradigm mkA015"
} ;
@@ -14279,7 +14279,7 @@ mkA016 base =
GPl => nonExist
}
} ;
adverb = nonExist
adverb = base_1+"е"
};
_ => error "Can't apply paradigm mkA016"
} ;
@@ -14314,7 +14314,7 @@ mkA017 base =
GPl => nonExist
}
} ;
adverb = nonExist
adverb = base_1+"а"
};
_ => error "Can't apply paradigm mkA017"
} ;
@@ -14489,7 +14489,7 @@ mkA022 base =
GPl => base_1+"да"+base_2+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"да"+base_2+"о"
};
_ => error "Can't apply paradigm mkA022"
} ;
@@ -14558,7 +14558,7 @@ mkA024 base_1 =
GPl => base_1+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"ѐ"
} ;
mkA025 : Str -> A ;
@@ -14626,7 +14626,7 @@ mkA026 base =
GPl => base_1+"с"+base_2+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"с"+base_2+"о"
};
_ => error "Can't apply paradigm mkA026"
} ;
@@ -14731,7 +14731,7 @@ mkA029 base =
GPl => nonExist
}
} ;
adverb = nonExist
adverb = base_1+"е"+base_2
};
_ => error "Can't apply paradigm mkA029"
} ;
@@ -14765,7 +14765,7 @@ mkA030 base_1 =
GPl => base_1+"ине" --guessed
}
} ;
adverb = nonExist
adverb = base_1+"о"
} ;
mkA031 : Str -> A ;
@@ -14798,7 +14798,7 @@ mkA031 base =
GPl => base_1+base_2+base_3+"ине"
}
} ;
adverb = nonExist
adverb = base_1+base_2+base_3+"о"
};
_ => error "Can't apply paradigm mkA031"
} ;
@@ -14868,7 +14868,7 @@ mkA033 base =
GPl => base_1+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"о"
};
_ => error "Can't apply paradigm mkA033"
} ;
@@ -14938,7 +14938,7 @@ mkA035 base =
GPl => ""+base_1+"ине"
}
} ;
adverb = nonExist
adverb = ""+base_1+"о"
};
_ => error "Can't apply paradigm mkA035"
} ;
@@ -14973,7 +14973,7 @@ mkA036 base =
GPl => base_1+"по"+base_2+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"по"+base_2+"о"
};
_ => error "Can't apply paradigm mkA036"
} ;
@@ -15008,7 +15008,7 @@ mkA037 base =
GPl => base_1+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"о"
};
_ => error "Can't apply paradigm mkA037"
} ;
@@ -15043,7 +15043,7 @@ mkA038 base =
GPl => base_1+"о"+base_2+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"о"+base_2+"о"
};
_ => error "Can't apply paradigm mkA038"
} ;
@@ -15078,7 +15078,7 @@ mkA039 base =
GPl => base_1+"о"+base_2+base_3+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"о"+base_2+base_3+"о"
};
_ => error "Can't apply paradigm mkA039"
} ;
@@ -15113,7 +15113,7 @@ mkA040 base =
GPl => base_1+base_2+"а"+base_3+"ине"
}
} ;
adverb = nonExist
adverb = base_1+base_2+"а"+base_3+"о"
};
_ => error "Can't apply paradigm mkA040"
} ;
@@ -15148,7 +15148,7 @@ mkA041 base =
GPl => base_1+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"о"
};
_ => error "Can't apply paradigm mkA041"
} ;
@@ -15183,7 +15183,7 @@ mkA042 base =
GPl => base_1+"ч"+base_2+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"ч"+base_2+"о"
};
_ => error "Can't apply paradigm mkA042"
} ;
@@ -15218,7 +15218,7 @@ mkA043 base =
GPl => base_1+"а"+base_2+base_3+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"а"+base_2+base_3+"о"
};
_ => error "Can't apply paradigm mkA043"
} ;
@@ -15253,7 +15253,7 @@ mkA044 base =
GPl => base_1+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"о"
};
_ => error "Can't apply paradigm mkA044"
} ;
@@ -15288,7 +15288,7 @@ mkA045 base =
GPl => base_1+"т"+base_2+base_3+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"т"+base_2+base_3+"о"
};
_ => error "Can't apply paradigm mkA045"
} ;
@@ -15323,7 +15323,7 @@ mkA046 base =
GPl => base_1+"д"+base_2+base_3+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"д"+base_2+base_3+"о"
};
_ => error "Can't apply paradigm mkA046"
} ;
@@ -15358,7 +15358,7 @@ mkA047 base =
GPl => "б"+base_1+"р"+base_2+"ине"
}
} ;
adverb = nonExist
adverb = "б"+base_1+"р"+base_2+"о"
};
_ => error "Can't apply paradigm mkA047"
} ;
@@ -15393,7 +15393,7 @@ mkA048 base =
GPl => base_1+"ине"
}
} ;
adverb = nonExist
adverb = base_1+"о"
};
_ => error "Can't apply paradigm mkA048"
} ;
@@ -15428,7 +15428,7 @@ mkA049 base =
GPl => "дир"+base_1+"кт"+base_2+"р"+base_3+"ине"
}
} ;
adverb = nonExist
adverb = "дир"+base_1+"кт"+base_2+"р"+base_3+"о"
};
_ => error "Can't apply paradigm mkA049"
} ;
@@ -15463,7 +15463,7 @@ mkA050 base =
GPl => "р"+base_1+"з"+base_2+"ине"
}
} ;
adverb = nonExist
adverb = "р"+base_1+"з"+base_2+"о"
};
_ => error "Can't apply paradigm mkA050"
} ;
+7 -7
View File
@@ -1,18 +1,18 @@
concrete NamesMkd of Names = CatMkd ** open Prelude,ResMkd in {
lin AdjLN ap ln = {s = ap.s ! Indef ! GSg Masc ++ ln.s} ;
lin FemaleSurname sn = {s = \\r => sn.s; vocative = sn.s;
a = {g = GSg Masc; p = P1}} ;
a = {g = GSg Fem; p = P3}} ;
lin FullName gn sn = {s = \\r => gn.s ++ sn.s;
vocative = gn.s ++ sn.s; a = {g = GSg Masc; p = P1}} ;
vocative = gn.s ++ sn.s; a = {g = GSg Masc; p = P3}} ;
lin GivenName gn = {s = \\r => gn.s; vocative = gn.s;
a = {g = GSg Masc; p = P1}} ;
a = {g = GSg Masc; p = P3}} ;
lin InLN ln = {s = "во" ++ ln.s} ;
lin MaleSurname sn = {s = \\r => sn.s; vocative = sn.s;
a = {g = GSg Masc; p = P1}} ;
a = {g = GSg Masc; p = P3}} ;
lin PlSurname sn = {s = \\r => sn.s; vocative = sn.s;
a = {g = GSg Masc; p = P1}} ;
a = {g = GPl; p = P3}} ;
lin PlainLN ln = {s = \\r => ln.s; vocative = ln.s;
a = {g = GSg Masc; p = P1}} ;
a = {g = GSg Masc; p = P3}} ;
lin UseLN ln = {s = \\r => ln.s; vocative = ln.s;
a = {g = GSg Masc; p = P1}} ;
a = {g = GSg Masc; p = P3}} ;
}
+21 -10
View File
@@ -15,13 +15,24 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in {
Pl => GPl
}
};
vocative = \\n => ap.s ! Indef
! case n of {
Sg => GSg cn.g;
Pl => GPl
} ++
cn.vocative ! n;
count_form = ap.s ! Indef ! GPl ++ cn.count_form; g = cn.g} ;
vocative = \\n => case ap.isPre of {
True => ap.s ! Indef
! case n of {
Sg => GSg cn.g;
Pl => GPl
} ++ cn.vocative ! n ;
False => cn.vocative ! n ++
ap.s ! Indef
! case n of {
Sg => GSg cn.g;
Pl => GPl
}
} ;
count_form = case ap.isPre of {
True => ap.s ! Indef ! GPl ++ cn.count_form ;
False => cn.count_form ++ ap.s ! Indef ! GPl
} ;
g = cn.g} ;
lin AdjDAP d ap = {
s = \\g => d.s ! g ++ ap.s ! Indef ! genNum g (nnum2num d.n) ;
n = d.n ;
@@ -64,7 +75,7 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in {
} ;
lin DetDAP d = d ;
lin DetNP d = {s = \\r => d.s ! Masc; vocative = d.s ! Masc;
a = {g = GSg Masc; p = P1}} ;
a = {g = genNum Masc (nnum2num d.n); p = P3}} ;
lin DetQuant q num = {s = \\g => q.s ! genNum g (nnum2num num.n) ++ num.s;
n = num.n;
sp = q.sp} ;
@@ -105,8 +116,8 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in {
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;
++ v2.present ! Imperfective ! genNum2num np.a.g ! np.a.p;
vocative = np.vocative ++ v2.present ! Imperfective ! genNum2num np.a.g ! np.a.p;
a = {g = np.a.g; p = np.a.p}} ;
lin PartNP cn np = {s = \\s,n => cn.s ! s ! n ++ np.s ! RSubj;
count_form = cn.count_form ++ np.s ! RSubj;
+2 -2
View File
@@ -1078,8 +1078,8 @@ dualV : V -> V -> V = \impf,perf -> lin V
Perfective => perf.participle.imperfect ! Perfective
} ;
perfect = table {
Imperfective => impf.participle.perfect ! Imperfective ;
Perfective => perf.participle.perfect ! Perfective
Imperfective => impf.participle.adjectival ! Imperfective ++ BIND ++ "о" ;
Perfective => perf.participle.adjectival ! Perfective ++ BIND ++ "о"
} ;
adjectival = table {
Imperfective => impf.participle.adjectival ! Imperfective ;
+3 -1
View File
@@ -16,6 +16,8 @@ concrete PhraseMkd of Phrase = CatMkd ** open Prelude, ResMkd in {
lin UttNP np = {s = np.s ! RSubj} ;
lin UttQS s = s ;
lin UttS s = s ;
lin UttVP vp = {s = "да" ++ vp.present ! Perfective ! Sg ! P3 ++ vp.compl ! {g=GSg Masc; p=P3}} ;
lin UttVP vp = {s = "да" ++ medialClitic vp.vtype ++
vp.present ! Perfective ! Sg ! P3 ++
vp.compl ! {g=GSg Masc; p=P3}} ;
lin VocNP np = {s : Str = SOFT_BIND ++ "," ++ np.vocative} ;
}
+8 -5
View File
@@ -199,6 +199,13 @@ genNum2num : GenNum -> Number = \gn ->
GPl => Pl
} ;
medialClitic : VType -> Str = \vtype ->
case vtype of {
VNormal => [] ;
VMedial Acc => "се" ;
VMedial Dat => "си"
} ;
auxBe = {
present : Number => Person => Str
= table {
@@ -328,11 +335,7 @@ mkClause : Str -> Agr -> Verb ** {compl : Agr => Str} -> Order => Tense => Anter
Main => "" ;
Quest => "ли"
} ;
se = case vp.vtype of {
VNormal => "" ;
VMedial Acc => "се" ;
VMedial Dat => "си"
}
se = medialClitic vp.vtype
} ;
linCoord : Str -> Ints 4 => Str ;
+11 -6
View File
@@ -4,26 +4,31 @@ concrete SentenceMkd of Sentence = CatMkd ** open Prelude,ResMkd in {
lin AdvSlash c a = {s = c.s ++ a.s} ;
lin EmbedQS qs = {s = qs.s} ;
lin EmbedS s = {s = s.s} ;
lin EmbedVP vp = {s = "да" ++ vp.present ! Perfective ! Sg ! P3 ++ vp.compl ! {g=GSg Masc; p=P3}} ;
lin EmbedVP vp = {s = "да" ++ medialClitic vp.vtype ++
vp.present ! Perfective ! Sg ! P3 ++
vp.compl ! {g=GSg Masc; p=P3}} ;
lin ExtAdvS a s = {s = a.s ++ s.s} ;
lin ImpVP vp = {
s = \\p,gn=>case p of {
Pos => vp.imperative ! Perfective ! genNum2num gn ;
Neg => "не" ++ vp.imperative ! Imperfective ! genNum2num gn
Pos => vp.imperative ! Perfective ! genNum2num gn ++ medialClitic vp.vtype ;
Neg => "не" ++ medialClitic vp.vtype ++ vp.imperative ! Imperfective ! genNum2num gn
} ++
vp.compl ! {g=gn; p=P2}
} ;
lin PredSCVP sc vp = {s = \\t,a,p,o => sc.s
++ vp.present ! Imperfective ! Sg ! P1} ;
++ vp.present ! Imperfective ! Sg ! P3
++ vp.compl ! {g = GSg Neuter; p = P3}} ;
lin PredVP np vp = {s = mkClause (np.s ! RSubj) np.a vp} ;
lin RelS s rs = {s = s.s ++ rs.s ! GSg Masc} ;
lin SSubjS s s2 s3 = {s = s.s ++ s2.s ++ s3.s} ;
lin SlashPrep cl p = {s = cl.s ! Main ! VPresent ! Simul ! Pos
++ p.s} ;
lin SlashVP np v = {s = np.s ! RSubj
++ v.present ! Imperfective ! Sg ! np.a.p} ;
++ v.present ! Imperfective ! genNum2num np.a.g ! np.a.p
++ v.compl ! np.a} ;
lin SlashVS np vs s = {s = np.s ! RSubj
++ vs.present ! Imperfective ! Sg ! np.a.p ++ s.s} ;
++ vs.present ! Imperfective ! genNum2num np.a.g ! np.a.p
++ s.s} ;
lin UseCl t p cl = {s = t.s ++ p.s ++ cl.s ! Main ! t.t ! t.a ! p.p} ;
lin UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ;
lin UseRCl t p cl = {s = \\gn => t.s ++ p.s ++ cl.s ! gn ! t.t ! t.a ! p.p} ;
+30 -64
View File
@@ -1,32 +1,22 @@
concrete VerbMkd of Verb = CatMkd ** open Prelude,ResMkd in {
lin AdVVP a vp = {present = \\a2,n,p => a.s
lin AdVVP a vp = {present = \\a2,n,p => a.s ++ medialClitic vp.vtype
++ vp.present ! a2 ! n ! p;
aorist = \\n,p => a.s ++ vp.aorist ! n ! p;
imperfect = \\a2,n,p => a.s ++ vp.imperfect ! a2 ! n ! p;
imperative = \\a2,n => a.s ++ vp.imperative ! a2 ! n;
participle = {aorist = \\a2,g => a.s
++ vp.participle.aorist ! a2 ! g;
imperfect = \\a2,g => a.s ++ vp.participle.imperfect ! a2 ! g;
perfect = \\a2 => a.s ++ vp.participle.perfect ! a2;
adjectival = \\a2 => a.s ++ vp.participle.adjectival ! a2;
adverbial = a.s ++ vp.participle.adverbial};
noun_from_verb = a.s ++ vp.noun_from_verb;
vtype = vp.vtype;
aorist = \\n,p => a.s ++ medialClitic vp.vtype ++ vp.aorist ! n ! p;
imperfect = \\a2,n,p => a.s ++ medialClitic vp.vtype ++ vp.imperfect ! a2 ! n ! p;
imperative = \\a2,n => a.s ++ medialClitic vp.vtype ++ vp.imperative ! a2 ! n;
participle = vp.participle;
noun_from_verb = vp.noun_from_verb;
vtype = VNormal;
compl = vp.compl} ;
lin AdVVPSlash a v = {present = \\a2,n,p => a.s
lin AdVVPSlash a v = {present = \\a2,n,p => a.s ++ medialClitic v.vtype
++ v.present ! a2 ! n ! p;
aorist = \\n,p => a.s ++ v.aorist ! n ! p;
imperfect = \\a2,n,p => a.s ++ v.imperfect ! a2 ! n ! p;
imperative = \\a2,n => a.s ++ v.imperative ! a2 ! n;
participle = {aorist = \\a2,g => a.s
++ v.participle.aorist ! a2 ! g;
imperfect = \\a2,g => a.s ++ v.participle.imperfect ! a2 ! g;
perfect = \\a2 => a.s ++ v.participle.perfect ! a2;
adjectival = \\a2 => a.s ++ v.participle.adjectival ! a2;
adverbial = a.s ++ v.participle.adverbial};
noun_from_verb = a.s ++ v.noun_from_verb;
vtype = v.vtype;
aorist = \\n,p => a.s ++ medialClitic v.vtype ++ v.aorist ! n ! p;
imperfect = \\a2,n,p => a.s ++ medialClitic v.vtype ++ v.imperfect ! a2 ! n ! p;
imperative = \\a2,n => a.s ++ medialClitic v.vtype ++ v.imperative ! a2 ! n;
participle = v.participle;
noun_from_verb = v.noun_from_verb;
vtype = VNormal;
compl = v.compl;
c2 = v.c2} ;
lin AdvVP vp adv = vp ** {compl = \\a => vp.compl ! a ++ adv.s} ;
@@ -39,48 +29,24 @@ concrete VerbMkd of Verb = CatMkd ** open Prelude,ResMkd in {
lin ComplVA va ap = va ** {compl = \\agr => ap.s ! Indef ! agr.g} ;
lin ComplVQ vq qs = vq ** {compl = \\_ => qs.s} ;
lin ComplVS vs s = vs ** {compl = \\_ => s.s} ;
lin ComplVV vv vp = vv ** {compl = \\agr => "да" ++ vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ vp.compl ! agr} ;
lin ComplVV vv vp = vv ** {compl = \\agr => "да" ++ medialClitic vp.vtype ++
vp.present ! Perfective ! genNum2num agr.g ! agr.p ++
vp.compl ! agr} ;
lin ExtAdvVP vp a = vp ** {compl = \\agr => vp.compl ! agr ++ SOFT_BIND++"," ++ a.s} ;
lin Slash2V3 v3 np = {present = \\a,n,p => v3.present ! a ! n ! p
++ np.s ! RSubj;
aorist = \\n,p => v3.aorist ! n ! p ++ np.s ! RSubj;
imperfect = \\a,n,p => v3.imperfect ! a ! n ! p ++ np.s ! RSubj;
imperative = \\a,n => v3.imperative ! a ! n ++ np.s ! RSubj;
participle = {aorist = \\a,g => v3.participle.aorist ! a ! g
++ np.s ! RSubj;
imperfect = \\a,g => v3.participle.imperfect ! a ! g
++ np.s ! RSubj;
perfect = \\a => v3.participle.perfect ! a ++ np.s ! RSubj;
adjectival = \\a => v3.participle.adjectival ! a
++ np.s ! RSubj;
adverbial = v3.participle.adverbial ++ np.s ! RSubj};
noun_from_verb = v3.noun_from_verb ++ np.s ! RSubj;
vtype = v3.vtype;
compl = \\v => v3.present ! Imperfective ! Sg ! v.p
++ np.s ! RSubj;
c2 = {s = v3.c2.s ++ np.s ! RSubj; c = v3.c2.c}} ;
lin Slash3V3 v3 np = {present = \\a,n,p => v3.present ! a ! n ! p
++ np.s ! RSubj;
aorist = \\n,p => v3.aorist ! n ! p ++ np.s ! RSubj;
imperfect = \\a,n,p => v3.imperfect ! a ! n ! p ++ np.s ! RSubj;
imperative = \\a,n => v3.imperative ! a ! n ++ np.s ! RSubj;
participle = {aorist = \\a,g => v3.participle.aorist ! a ! g
++ np.s ! RSubj;
imperfect = \\a,g => v3.participle.imperfect ! a ! g
++ np.s ! RSubj;
perfect = \\a => v3.participle.perfect ! a ++ np.s ! RSubj;
adjectival = \\a => v3.participle.adjectival ! a
++ np.s ! RSubj;
adverbial = v3.participle.adverbial ++ np.s ! RSubj};
noun_from_verb = v3.noun_from_verb ++ np.s ! RSubj;
vtype = v3.vtype;
compl = \\v => v3.present ! Imperfective ! Sg ! v.p
++ np.s ! RSubj;
c2 = {s = v3.c2.s ++ np.s ! RSubj; c = v3.c2.c}} ;
lin Slash2V3 v3 np = v3 ** {
compl = \\_ => v3.c2.s ++ np.s ! RObj v3.c2.c ;
c2 = v3.c3
} ;
lin Slash3V3 v3 np = v3 ** {
compl = \\_ => v3.c3.s ++ np.s ! RObj v3.c3.c ;
c2 = v3.c2
} ;
lin SlashV2A v ap = v ** {compl = \\agr => ap.s ! Indef ! agr.g} ;
lin SlashV2Q v qs = v ** {compl = \\_ => qs.s} ;
lin SlashV2S v s = v ** {compl = \\_ => s.s} ;
lin SlashV2V v vp = v ** {compl = \\agr => "да" ++ vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ vp.compl ! agr};
lin SlashV2V v vp = v ** {compl = \\agr => "да" ++ medialClitic vp.vtype ++
vp.present ! Perfective ! genNum2num agr.g ! agr.p ++
vp.compl ! agr};
lin SlashV2a v = v ** {compl = \\_ => []} ;
lin UseComp comp = {
@@ -93,7 +59,7 @@ concrete VerbMkd of Verb = CatMkd ** open Prelude,ResMkd in {
perfect = \\_=>nonExist ;
adjectival = \\_=>nonExist ;
adverbial = nonExist} ;
noun_from_verb = nonExist ;
noun_from_verb = "бидување" ;
compl = \\agr=>comp.s ! agr.g ;
vtype=VNormal
} ;
@@ -108,7 +74,7 @@ concrete VerbMkd of Verb = CatMkd ** open Prelude,ResMkd in {
perfect = \\_=>nonExist ;
adjectival = \\_=>nonExist ;
adverbial = nonExist} ;
noun_from_verb = nonExist ;
noun_from_verb = "бидување" ;
compl = \\_=>[] ;
vtype=VNormal
} ;