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