added pidgin rules

This commit is contained in:
Krasimir Angelov
2026-04-11 15:33:05 +02:00
parent 323e4b4cdf
commit ae9b7d4d45
11 changed files with 560 additions and 30 deletions

View File

@@ -1,4 +1,21 @@
concrete AdjectiveMkd of Adjective = CatMkd ** open Prelude,ResMkd in {
lin AdAP a ap = {s = \\s,g => a.s ++ ap.s ! s ! g;
isPre = ap.isPre} ;
lin AdjOrd o = {s = \\s,g => o.s; isPre = False} ;
lin AdvAP ap a = {s = \\s,g => ap.s ! s ! g ++ a.s;
isPre = ap.isPre} ;
lin CAdvAP c ap np = {s = \\s,g => c.s
++ ap.s ! s ! g ++ np.s ! RSubj;
isPre = ap.isPre} ;
lin ComparA a np = {s = \\s,g => a.s ! s ! g ++ np.s ! RSubj;
isPre = False} ;
lin ComplA2 a2 np = {s = \\s,g => a2.s ! s ! g ++ np.s ! RSubj;
isPre = False} ;
lin PositA a = a ** {isPre = True} ;
lin ReflA2 a2 = {s = \\s,g => a2.s ! s ! g; isPre = False} ;
lin SentAP ap sc = {s = \\s,g => ap.s ! s ! g ++ sc.s;
isPre = ap.isPre} ;
lin UseA2 a2 = {s = \\s,g => a2.s ! s ! g; isPre = False} ;
lin UseComparA a = {s = \\s,g => a.s ! s ! g; isPre = False} ;
}

View File

@@ -1,3 +1,12 @@
concrete AdverbMkd of Adverb = CatMkd ** open Prelude,ResMkd in {
lin AdAdv a a2 = {s = a.s ++ a2.s} ;
lin AdnCAdv c = {s = c.s} ;
lin ComparAdvAdj c a np = {s = c.s
++ 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 PositAdvAdj a = {s = a.s ! Indef ! GSg Masc} ;
lin PrepNP p np = {s = p.s ++ np.s ! RPrep} ;
lin SubjS s s2 = {s = s.s ++ s2.s} ;
}

View File

@@ -1,2 +1,2 @@
concrete GrammarMkd of Grammar = VerbMkd,SentenceMkd,QuestionMkd,NounMkd,AdverbMkd,AdjectiveMkd,IdiomMkd,NumeralMkd,PhraseMkd,RelativeMkd,TextMkd,StructuralMkd,TenseMkd ** {
concrete GrammarMkd of Grammar = NamesMkd,VerbMkd,SentenceMkd,QuestionMkd,NounMkd,AdverbMkd,AdjectiveMkd,IdiomMkd,NumeralMkd,PhraseMkd,RelativeMkd,TextMkd,StructuralMkd,TenseMkd ** {
}

View File

@@ -1,5 +1,19 @@
concrete IdiomMkd of Idiom = CatMkd ** open Prelude,ResMkd in {
lin CleftAdv a s = {s = \\t,a2,p,o => a.s ++ s.s} ;
lin CleftNP np rs = {s = \\t,a,p,o => np.s ! RSubj
++ rs.s ! np.a.g} ;
lin ExistIP ip = {s = \\t,a,p => ip.s} ;
lin ExistIPAdv ip a = {s = \\t,a2,p => ip.s ++ a.s} ;
lin ExistNP np = {s = \\t,a,p,o => np.s ! RSubj} ;
lin ExistNPAdv np a = {s = \\t,a2,p,o => np.s ! RSubj ++ a.s} ;
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} ;
lin ImpersCl vp = {s = \\t,a,p,o => vp.present ! Imperfective ! Sg
! P1} ;
lin ProgrVP vp = vp ** {
present = \\a,n,p => vp.present ! Imperfective ! n ! p ;
imperfect = \\a,n,p => vp.imperfect ! Imperfective ! n ! p ;
@@ -11,4 +25,28 @@ lin ProgrVP vp = vp ** {
adverbial = vp.participle.adverbial}
} ;
lin SelfAdVVP vp = {present = \\a,n,p => vp.present ! a ! n ! p;
aorist = \\n,p => vp.aorist ! n ! p;
imperfect = \\a,n,p => vp.imperfect ! a ! n ! p;
imperative = \\a,n => vp.imperative ! a ! n;
participle = {aorist = \\a,g => vp.participle.aorist ! a ! g;
imperfect = \\a,g => vp.participle.imperfect ! a ! g;
perfect = \\a => vp.participle.perfect ! a;
adjectival = \\a => vp.participle.adjectival ! a;
adverbial = vp.participle.adverbial};
noun_from_verb = vp.noun_from_verb; vtype = vp.vtype;
compl = \\v => vp.compl ! {g = GSg Masc; p = P1}} ;
lin SelfAdvVP vp = {present = \\a,n,p => vp.present ! a ! n ! p;
aorist = \\n,p => vp.aorist ! n ! p;
imperfect = \\a,n,p => vp.imperfect ! a ! n ! p;
imperative = \\a,n => vp.imperative ! a ! n;
participle = {aorist = \\a,g => vp.participle.aorist ! a ! g;
imperfect = \\a,g => vp.participle.imperfect ! a ! g;
perfect = \\a => vp.participle.perfect ! a;
adjectival = \\a => vp.participle.adjectival ! a;
adverbial = vp.participle.adverbial};
noun_from_verb = vp.noun_from_verb; vtype = vp.vtype;
compl = \\v => vp.compl ! {g = GSg Masc; p = P1}} ;
lin SelfNP np = {s = \\r => np.s ! r; vocative = np.vocative;
a = {g = np.a.g; p = np.a.p}} ;
}

View File

@@ -0,0 +1,20 @@
concrete NamesMkd of Names = CatMkd ** open Prelude,ResMkd in {
flags
coding = "UTF-8" ;
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}} ;
lin FullName gn sn = {s = \\r => gn.s ++ sn.s;
vocative = gn.s ++ sn.s; a = {g = GSg Masc; p = P1}} ;
lin GivenName gn = {s = \\r => gn.s; vocative = gn.s;
a = {g = GSg Masc; p = P1}} ;
lin InLN ln = {s = ln.s} ;
lin MaleSurname sn = {s = \\r => sn.s; vocative = sn.s;
a = {g = GSg Masc; p = P1}} ;
lin PlSurname sn = {s = \\r => sn.s; vocative = sn.s;
a = {g = GSg Masc; p = P1}} ;
lin PlainLN ln = {s = \\r => ln.s; vocative = ln.s;
a = {g = GSg Masc; p = P1}} ;
lin UseLN ln = {s = \\r => ln.s; vocative = ln.s;
a = {g = GSg Masc; p = P1}} ;
}

View File

@@ -1,4 +1,5 @@
concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in {
lin AdNum a c = {s = a.s ++ c.s} ;
lin AdjCN ap cn = {
s = case ap.isPre of {
True => \\s,n => ap.s ! s
@@ -21,12 +22,30 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in {
} ++
cn.vocative ! n;
count_form = ap.s ! Indef ! GPl ++ cn.count_form; g = cn.g} ;
lin AdjDAP d ap = {s = d.s ++ ap.s ! Indef ! GSg Masc} ;
lin AdvCN cn adv = {
s = \\s,n => cn.s ! s ! n ++ adv.s;
count_form = cn.count_form ++ adv.s;
vocative = \\n => cn.vocative ! n ++ adv.s;
g = cn.g
} ;
lin AdvNP np a = {s = \\r => np.s ! r ++ a.s;
vocative = np.vocative ++ a.s; a = {g = np.a.g; p = np.a.p}} ;
lin ApposCN cn np = {s = \\s,n => cn.s ! s ! n ++ np.s ! RSubj;
count_form = cn.count_form ++ np.s ! RSubj;
vocative = \\n => cn.vocative ! n ++ np.vocative; g = cn.g} ;
lin ComplN2 n2 np = {s = \\s,n => n2.s ! s ! n ++ np.s ! RSubj;
count_form = n2.count_form ++ np.s ! RSubj;
vocative = \\n => n2.vocative ! n ++ np.vocative; g = n2.g} ;
lin ComplN3 n3 np = {s = \\s,n => n3.s ! s ! n ++ np.s ! RSubj;
count_form = n3.count_form ++ np.s ! RSubj;
vocative = \\n => n3.vocative ! n ++ np.vocative;
rel = \\s,g => n3.rel ! s ! g ++ np.s ! RSubj;
relType = n3.relType; g = n3.g;
c2 = {s = n3.c2.s ++ np.s ! RSubj; c = n3.c2.c}} ;
lin CountNP d np = {s = \\r => d.s ! Masc ++ np.s ! r;
vocative = d.s ! Masc ++ np.vocative;
a = {g = np.a.g; p = np.a.p}} ;
lin DefArt = {s = \\_=>[]; sp = Def Unspecified} ;
lin DetCN det cn = {
s = \\r => case det.n of {
@@ -37,10 +56,23 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in {
a = {g = genNum cn.g (nnum2num det.n) ;
p = P3};
} ;
lin DetDAP d = {s = d.s ! Masc} ;
lin DetNP d = {s = \\r => d.s ! Masc; vocative = d.s ! Masc;
a = {g = GSg Masc; p = P1}} ;
lin DetQuant q num = {s = \\g => q.s ! genNum g (nnum2num num.n) ++ num.s;
n = num.n;
sp = q.sp} ;
lin DetQuantOrd q n o = {s = \\g => q.s ! GSg Masc ++ n.s ++ o.s;
n = n.n; sp = q.sp} ;
lin ExtAdvNP np a = {s = \\r => np.s ! r ++ a.s;
vocative = np.vocative ++ a.s; a = {g = np.a.g; p = np.a.p}} ;
lin IndefArt = {s = \\_=>[]; sp = Indef} ;
lin MassNP cn = {s = \\r => cn.s ! Indef ! Sg;
vocative = cn.vocative ! Sg; a = {g = GSg Masc; p = P1}} ;
lin NumCard c = {s = c.s; n = NNum Sg} ;
lin NumDecimal d = {s = d.s} ;
lin NumDigits d = {s = d.s} ;
lin NumNumeral n = {s = n.s} ;
lin NumPl = {s = []; n = NNum Pl} ;
lin NumSg = {s = []; n = NNum Sg} ;
lin UseN s = s ;
@@ -51,10 +83,45 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in {
vocative = np.vocative ++ rs.s ! np.a.g ;
a = np.a;
} ;
lin OrdDigits d = {s = d.s} ;
lin OrdNumeral n = {s = n.s} ;
lin OrdNumeralSuperl n a = {s = n.s ++ a.s ! Indef ! GSg Masc} ;
lin OrdSuperl a = {s = a.s ! Indef ! GSg Masc} ;
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;
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;
vocative = \\n => cn.vocative ! n ++ np.vocative; g = cn.g} ;
lin PossNP cn np = {s = \\s,n => cn.s ! s ! n ++ np.s ! RSubj;
count_form = cn.count_form ++ np.s ! RSubj;
vocative = \\n => cn.vocative ! n ++ np.vocative; g = cn.g} ;
lin PossPron p = {s = \\g => p.s ! RSubj; sp = Indef} ;
lin PredetNP p np = {s = \\r => p.s ++ np.s ! r;
vocative = p.s ++ np.vocative; a = {g = np.a.g; p = np.a.p}} ;
lin QuantityNP d mu = {s = \\r => d.s ++ mu.s;
vocative = d.s ++ mu.s; a = {g = GSg Masc; p = P1}} ;
lin RelCN cn rs = {
s = \\sp,n => cn.s ! sp ! n ++ rs.s ! genNum cn.g n ;
count_form = cn.count_form ++ rs.s ! GPl ;
vocative = \\n => cn.vocative ! n ++ rs.s ! genNum cn.g n ;
g = cn.g;
} ;
lin SentCN cn sc = {s = \\s,n => cn.s ! s ! n ++ sc.s;
count_form = cn.count_form ++ sc.s;
vocative = \\n => cn.vocative ! n ++ sc.s; g = cn.g} ;
lin Use2N3 n3 = {s = \\s,n => n3.s ! s ! n;
count_form = n3.count_form; vocative = \\n => n3.vocative ! n;
rel = \\s,g => n3.rel ! s ! g; relType = n3.relType; g = n3.g;
c2 = {s = n3.c2.s; c = n3.c2.c}} ;
lin Use3N3 n3 = {s = \\s,n => n3.s ! s ! n;
count_form = n3.count_form; vocative = \\n => n3.vocative ! n;
rel = \\s,g => n3.rel ! s ! g; relType = n3.relType; g = n3.g;
c2 = {s = n3.c2.s; c = n3.c2.c}} ;
lin UseN2 n2 = {s = \\s,n => n2.s ! s ! n;
count_form = n2.count_form; vocative = \\n => n2.vocative ! n;
g = n2.g} ;
lin UsePN pn = {s = \\r => pn.s; vocative = pn.s;
a = {g = GSg Masc; p = P1}} ;
}

View File

@@ -1,15 +1,21 @@
concrete PhraseMkd of Phrase = CatMkd ** open Prelude, ResMkd in {
lin
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
UttS s = s ;
UttQS s = s ;
UttInterj i = i ;
NoPConj = {s = []} ;
NoVoc = {s = []} ;
VocNP np = {s = SOFT_BIND++"," ++ np.vocative} ;
lin NoPConj = {s : Str = []} ;
lin NoVoc = {s : Str = []} ;
lin PConjConj c = {s = c.s} ;
lin PhrUtt pconj utt voc = {s : Str = pconj.s ++ utt.s ++ voc.s} ;
lin UttAP ap = {s = ap.s ! Indef ! GSg Masc} ;
lin UttAdv a = {s = a.s} ;
lin UttCN cn = {s = cn.s ! Indef ! Sg} ;
lin UttCard c = {s = c.s} ;
lin UttIAdv i = {s = i.s} ;
lin UttIP ip = {s = ip.s} ;
lin UttImpPl p i = {s = p.s ++ i.s} ;
lin UttImpPol p i = {s = p.s ++ i.s} ;
lin UttImpSg p i = {s = p.s ++ i.s} ;
lin UttInterj i = i ;
lin UttNP np = {s = np.s ! RSubj} ;
lin UttQS s = s ;
lin UttS s = s ;
lin UttVP vp = {s = vp.present ! Imperfective ! Sg ! P1} ;
lin VocNP np = {s : Str = SOFT_BIND ++ "," ++ np.vocative} ;
}

View File

@@ -1,3 +1,19 @@
concrete QuestionMkd of Question = CatMkd ** open Prelude,ResMkd in {
lin AdvIAdv i a = {s = i.s ++ a.s} ;
lin AdvIP ip a = {s = ip.s ++ a.s; g = ip.g} ;
lin CompIAdv i = {s = i.s} ;
lin CompIP ip = {s = ip.s} ;
lin IdetCN i cn = {s = i.s ! cn.g ++ cn.s ! Indef ! i.n;
g = GSg Masc} ;
lin IdetIP i = {s = i.s ! Masc; g = GSg Masc} ;
lin IdetQuant i n = {s = \\g => i.s ! GSg Masc ++ n.s; n = Sg} ;
lin PrepIP p ip = {s = p.s ++ ip.s} ;
lincat QVP = {s : Str} ;
lin QuestCl cl = {s = \\t,a,p => cl.s ! t ! a ! p ! Quest} ;
lin QuestIAdv i cl = {s = \\t,a,p => i.s
++ cl.s ! t ! a ! p ! Main} ;
lin QuestIComp i np = {s = \\t,a,p => i.s ++ np.s ! RSubj} ;
lin QuestSlash ip c = {s = \\t,a,p => ip.s ++ c.s} ;
lin QuestVP ip vp = {s = \\t,a,p => ip.s
++ vp.present ! Imperfective ! Sg ! P1} ;
}

View File

@@ -1,4 +1,5 @@
concrete RelativeMkd of Relative = CatMkd ** open Prelude,ResMkd in {
lin FunRP p np rp = {s = \\g => p.s ++ np.s ! RSubj ++ rp.s ! g} ;
lin IdRP = {s = table {
GSg Masc => "кој" ;
GSg Fem => "која" ;
@@ -6,6 +7,8 @@ concrete RelativeMkd of Relative = CatMkd ** open Prelude,ResMkd in {
GPl => "кои"
}
} ;
lin RelCl cl = {s = \\g,t,a,p => cl.s ! t ! a ! p ! Main} ;
lin RelSlash rp c = {s = \\g,t,a,p => rp.s ! g ++ c.s} ;
lin RelVP rp vp = {
s = \\gn,t,a,p => mkClause (rp.s ! gn) {g=gn; p=P3} vp ! t ! a ! p ! Main
} ;

View File

@@ -1,15 +1,25 @@
concrete SentenceMkd of Sentence = CatMkd ** open Prelude,ResMkd in {
lin AdvImp a i = {s = a.s ++ i.s} ;
lin AdvS a s = {s = a.s ++ s.s} ;
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 ! Imperfective ! Sg ! P1} ;
lin ExtAdvS a s = {s = a.s ++ s.s} ;
lin ImpVP vp = {s = vp.present ! Imperfective ! Sg ! P1} ;
lin PredSCVP sc vp = {s = \\t,a,p,o => sc.s
++ vp.present ! Imperfective ! Sg ! P1} ;
lin PredVP np vp = {s = mkClause (np.s ! RSubj) np.a vp} ;
UseCl t p cl = {
s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! Main
} ;
UseQCl t p cl = {
s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p
} ;
UseRCl t p cl = {
s = \\gn => t.s ++ p.s ++ cl.s ! gn ! t.t ! t.a ! p.p
} ;
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 ! VPresent ! Simul ! Pos ! Main
++ p.s} ;
lin SlashVP np v = {s = np.s ! RSubj
++ v.present ! Imperfective ! Sg ! np.a.p} ;
lin SlashVS np vs s = {s = np.s ! RSubj
++ vs.present ! Imperfective ! Sg ! np.a.p ++ s.s} ;
lin UseCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! Main} ;
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 UseSlash t p c = {s = t.s ++ p.s ++ c.s} ;
}

View File

@@ -1,7 +1,351 @@
concrete VerbMkd of Verb = CatMkd ** open Prelude,ResMkd in {
lin UseV v = v ** {compl = \\_ => []};
lin AdVVP a vp = {present = \\a2,n,p => a.s
++ 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;
compl = \\v => a.s ++ vp.compl ! {g = GSg Masc; p = P1}} ;
lin AdVVPSlash a v = {present = \\a2,n,p => a.s
++ 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;
compl = \\v2 => a.s ++ v.compl ! {g = GSg Masc; p = P1};
c2 = {s = a.s ++ v.c2.s; c = v.c2.c}} ;
lin AdvVP vp a = {present = \\a2,n,p => vp.present ! a2 ! n ! p
++ a.s;
aorist = \\n,p => vp.aorist ! n ! p ++ a.s;
imperfect = \\a2,n,p => vp.imperfect ! a2 ! n ! p ++ a.s;
imperative = \\a2,n => vp.imperative ! a2 ! n ++ a.s;
participle = {aorist = \\a2,g => vp.participle.aorist ! a2 ! g
++ a.s;
imperfect = \\a2,g => vp.participle.imperfect ! a2 ! g ++ a.s;
perfect = \\a2 => vp.participle.perfect ! a2 ++ a.s;
adjectival = \\a2 => vp.participle.adjectival ! a2 ++ a.s;
adverbial = vp.participle.adverbial ++ a.s};
noun_from_verb = vp.noun_from_verb ++ a.s; vtype = vp.vtype;
compl = \\v => vp.compl ! {g = GSg Masc; p = P1} ++ a.s} ;
lin AdvVPSlash v a = {present = \\a2,n,p => v.present ! a2 ! n ! p
++ a.s;
aorist = \\n,p => v.aorist ! n ! p ++ a.s;
imperfect = \\a2,n,p => v.imperfect ! a2 ! n ! p ++ a.s;
imperative = \\a2,n => v.imperative ! a2 ! n ++ a.s;
participle = {aorist = \\a2,g => v.participle.aorist ! a2 ! g
++ a.s;
imperfect = \\a2,g => v.participle.imperfect ! a2 ! g ++ a.s;
perfect = \\a2 => v.participle.perfect ! a2 ++ a.s;
adjectival = \\a2 => v.participle.adjectival ! a2 ++ a.s;
adverbial = v.participle.adverbial ++ a.s};
noun_from_verb = v.noun_from_verb ++ a.s; vtype = v.vtype;
compl = \\v2 => v.compl ! {g = GSg Masc; p = P1} ++ a.s;
c2 = {s = v.c2.s ++ a.s; c = v.c2.c}} ;
lin CompAP ap = {s = ap.s ! Indef ! GSg Masc} ;
lin CompAdv a = {s = a.s} ;
lin CompCN cn = {s = cn.s ! Indef ! Sg} ;
lin CompNP np = {s = np.s ! RSubj} ;
lin ComplSlash vp np = vp ** {compl = \\a => vp.compl ! a ++ vp.c2.s ++ np.s ! RObj vp.c2.c} ;
lin ComplVA va ap = {present = \\a,n,p => va.present ! a ! n ! p
++ ap.s ! Indef ! GSg Masc;
aorist = \\n,p => va.aorist ! n ! p ++ ap.s ! Indef ! GSg Masc;
imperfect = \\a,n,p => va.imperfect ! a ! n ! p
++ ap.s ! Indef ! GSg Masc;
imperative = \\a,n => va.imperative ! a ! n
++ ap.s ! Indef ! GSg Masc;
participle = {aorist = \\a,g => va.participle.aorist ! a ! g
++ ap.s ! Indef ! g;
imperfect = \\a,g => va.participle.imperfect ! a ! g
++ ap.s ! Indef ! g;
perfect = \\a => va.participle.perfect ! a
++ ap.s ! Indef ! GSg Masc;
adjectival = \\a => va.participle.adjectival ! a
++ ap.s ! Indef ! GSg Masc;
adverbial = va.participle.adverbial
++ ap.s ! Indef ! GSg Masc};
noun_from_verb = va.noun_from_verb ++ ap.s ! Indef ! GSg Masc;
vtype = va.vtype;
compl = \\v => va.present ! Imperfective ! Sg ! v.p
++ ap.s ! Indef ! v.g} ;
lin ComplVQ vq qs = {present = \\a,n,p => vq.present ! a ! n ! p
++ qs.s;
aorist = \\n,p => vq.aorist ! n ! p ++ qs.s;
imperfect = \\a,n,p => vq.imperfect ! a ! n ! p ++ qs.s;
imperative = \\a,n => vq.imperative ! a ! n ++ qs.s;
participle = {aorist = \\a,g => vq.participle.aorist ! a ! g
++ qs.s;
imperfect = \\a,g => vq.participle.imperfect ! a ! g ++ qs.s;
perfect = \\a => vq.participle.perfect ! a ++ qs.s;
adjectival = \\a => vq.participle.adjectival ! a ++ qs.s;
adverbial = vq.participle.adverbial ++ qs.s};
noun_from_verb = vq.noun_from_verb ++ qs.s; vtype = vq.vtype;
compl = \\v => vq.present ! Imperfective ! Sg ! v.p ++ qs.s} ;
lin ComplVS vs s = {present = \\a,n,p => vs.present ! a ! n ! p
++ s.s;
aorist = \\n,p => vs.aorist ! n ! p ++ s.s;
imperfect = \\a,n,p => vs.imperfect ! a ! n ! p ++ s.s;
imperative = \\a,n => vs.imperative ! a ! n ++ s.s;
participle = {aorist = \\a,g => vs.participle.aorist ! a ! g
++ s.s;
imperfect = \\a,g => vs.participle.imperfect ! a ! g ++ s.s;
perfect = \\a => vs.participle.perfect ! a ++ s.s;
adjectival = \\a => vs.participle.adjectival ! a ++ s.s;
adverbial = vs.participle.adverbial ++ s.s};
noun_from_verb = vs.noun_from_verb ++ s.s; vtype = vs.vtype;
compl = \\v => vs.present ! Imperfective ! Sg ! v.p ++ s.s} ;
lin ComplVV vv vp = {present = \\a,n,p => vv.present ! a ! n ! p
++ vp.present ! a ! n ! p;
aorist = \\n,p => vv.aorist ! n ! p ++ vp.aorist ! n ! p;
imperfect = \\a,n,p => vv.imperfect ! a ! n ! p
++ vp.imperfect ! a ! n ! p;
imperative = \\a,n => vv.imperative ! a ! n
++ vp.imperative ! a ! n;
participle = {aorist = \\a,g => vv.participle.aorist ! a ! g
++ vp.participle.aorist ! a ! g;
imperfect = \\a,g => vv.participle.imperfect ! a ! g
++ vp.participle.imperfect ! a ! g;
perfect = \\a => vv.participle.perfect ! a
++ vp.participle.perfect ! a;
adjectival = \\a => vv.participle.adjectival ! a
++ vp.participle.adjectival ! a;
adverbial = vv.participle.adverbial
++ vp.participle.adverbial};
noun_from_verb = vv.noun_from_verb ++ vp.noun_from_verb;
vtype = vp.vtype;
compl = \\v => vv.present ! Imperfective ! Sg ! v.p
++ vp.compl ! {g = GSg Masc; p = P1}} ;
lin ExtAdvVP vp a = {present = \\a2,n,p => vp.present ! a2 ! n ! p
++ a.s;
aorist = \\n,p => vp.aorist ! n ! p ++ a.s;
imperfect = \\a2,n,p => vp.imperfect ! a2 ! n ! p ++ a.s;
imperative = \\a2,n => vp.imperative ! a2 ! n ++ a.s;
participle = {aorist = \\a2,g => vp.participle.aorist ! a2 ! g
++ a.s;
imperfect = \\a2,g => vp.participle.imperfect ! a2 ! g ++ a.s;
perfect = \\a2 => vp.participle.perfect ! a2 ++ a.s;
adjectival = \\a2 => vp.participle.adjectival ! a2 ++ a.s;
adverbial = vp.participle.adverbial ++ a.s};
noun_from_verb = vp.noun_from_verb ++ a.s; vtype = vp.vtype;
compl = \\v => vp.compl ! {g = GSg Masc; p = P1} ++ a.s} ;
lin PassV2 v2 = {present = \\a,n,p => v2.present ! a ! n ! p;
aorist = \\n,p => v2.aorist ! n ! p;
imperfect = \\a,n,p => v2.imperfect ! a ! n ! p;
imperative = \\a,n => v2.imperative ! a ! n;
participle = {aorist = \\a,g => v2.participle.aorist ! a ! g;
imperfect = \\a,g => v2.participle.imperfect ! a ! g;
perfect = \\a => v2.participle.perfect ! a;
adjectival = \\a => v2.participle.adjectival ! a;
adverbial = v2.participle.adverbial};
noun_from_verb = v2.noun_from_verb; vtype = v2.vtype;
compl = \\v => v2.present ! Imperfective ! Sg ! v.p} ;
lin ReflVP v = {present = \\a,n,p => v.present ! a ! n ! p;
aorist = \\n,p => v.aorist ! n ! p;
imperfect = \\a,n,p => v.imperfect ! a ! n ! p;
imperative = \\a,n => v.imperative ! a ! n;
participle = {aorist = \\a,g => v.participle.aorist ! a ! g;
imperfect = \\a,g => v.participle.imperfect ! a ! g;
perfect = \\a => v.participle.perfect ! a;
adjectival = \\a => v.participle.adjectival ! a;
adverbial = v.participle.adverbial};
noun_from_verb = v.noun_from_verb; vtype = v.vtype;
compl = \\v2 => v.compl ! {g = GSg Masc; p = P1}} ;
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 SlashV2A v ap = {present = \\a,n,p => v.present ! a ! n ! p
++ ap.s ! Indef ! GSg Masc;
aorist = \\n,p => v.aorist ! n ! p ++ ap.s ! Indef ! GSg Masc;
imperfect = \\a,n,p => v.imperfect ! a ! n ! p
++ ap.s ! Indef ! GSg Masc;
imperative = \\a,n => v.imperative ! a ! n
++ ap.s ! Indef ! GSg Masc;
participle = {aorist = \\a,g => v.participle.aorist ! a ! g
++ ap.s ! Indef ! g;
imperfect = \\a,g => v.participle.imperfect ! a ! g
++ ap.s ! Indef ! g;
perfect = \\a => v.participle.perfect ! a
++ ap.s ! Indef ! GSg Masc;
adjectival = \\a => v.participle.adjectival ! a
++ ap.s ! Indef ! GSg Masc;
adverbial = v.participle.adverbial ++ ap.s ! Indef ! GSg Masc};
noun_from_verb = v.noun_from_verb ++ ap.s ! Indef ! GSg Masc;
vtype = v.vtype;
compl = \\v2 => v.present ! Imperfective ! Sg ! v2.p
++ ap.s ! Indef ! v2.g;
c2 = {s = v.c2.s ++ ap.s ! Indef ! GSg Masc; c = v.c2.c}} ;
lin SlashV2Q v qs = {present = \\a,n,p => v.present ! a ! n ! p
++ qs.s;
aorist = \\n,p => v.aorist ! n ! p ++ qs.s;
imperfect = \\a,n,p => v.imperfect ! a ! n ! p ++ qs.s;
imperative = \\a,n => v.imperative ! a ! n ++ qs.s;
participle = {aorist = \\a,g => v.participle.aorist ! a ! g
++ qs.s;
imperfect = \\a,g => v.participle.imperfect ! a ! g ++ qs.s;
perfect = \\a => v.participle.perfect ! a ++ qs.s;
adjectival = \\a => v.participle.adjectival ! a ++ qs.s;
adverbial = v.participle.adverbial ++ qs.s};
noun_from_verb = v.noun_from_verb ++ qs.s; vtype = v.vtype;
compl = \\v2 => v.present ! Imperfective ! Sg ! v2.p ++ qs.s;
c2 = {s = v.c2.s ++ qs.s; c = v.c2.c}} ;
lin SlashV2S v s = {present = \\a,n,p => v.present ! a ! n ! p
++ s.s;
aorist = \\n,p => v.aorist ! n ! p ++ s.s;
imperfect = \\a,n,p => v.imperfect ! a ! n ! p ++ s.s;
imperative = \\a,n => v.imperative ! a ! n ++ s.s;
participle = {aorist = \\a,g => v.participle.aorist ! a ! g ++ s.s;
imperfect = \\a,g => v.participle.imperfect ! a ! g ++ s.s;
perfect = \\a => v.participle.perfect ! a ++ s.s;
adjectival = \\a => v.participle.adjectival ! a ++ s.s;
adverbial = v.participle.adverbial ++ s.s};
noun_from_verb = v.noun_from_verb ++ s.s; vtype = v.vtype;
compl = \\v2 => v.present ! Imperfective ! Sg ! v2.p ++ s.s;
c2 = {s = v.c2.s ++ s.s; c = v.c2.c}} ;
lin SlashV2V v vp = {present = \\a,n,p => v.present ! a ! n ! p
++ vp.present ! a ! n ! p;
aorist = \\n,p => v.aorist ! n ! p ++ vp.aorist ! n ! p;
imperfect = \\a,n,p => v.imperfect ! a ! n ! p
++ vp.imperfect ! a ! n ! p;
imperative = \\a,n => v.imperative ! a ! n
++ vp.imperative ! a ! n;
participle = {aorist = \\a,g => v.participle.aorist ! a ! g
++ vp.participle.aorist ! a ! g;
imperfect = \\a,g => v.participle.imperfect ! a ! g
++ vp.participle.imperfect ! a ! g;
perfect = \\a => v.participle.perfect ! a
++ vp.participle.perfect ! a;
adjectival = \\a => v.participle.adjectival ! a
++ vp.participle.adjectival ! a;
adverbial = v.participle.adverbial ++ vp.participle.adverbial};
noun_from_verb = v.noun_from_verb ++ vp.noun_from_verb;
vtype = vp.vtype;
compl = \\v2 => v.present ! Imperfective ! Sg ! v2.p
++ vp.compl ! {g = GSg Masc; p = P1};
c2 = {s = v.c2.s ++ vp.present ! Imperfective ! Sg ! P1;
c = v.c2.c}} ;
lin SlashV2VNP v np v2 = {present = \\a,n,p => v.present ! a ! n
! p
++ np.s ! RSubj ++ v2.present ! a ! n ! p;
aorist = \\n,p => v.aorist ! n ! p
++ np.s ! RSubj ++ v2.aorist ! n ! p;
imperfect = \\a,n,p => v.imperfect ! a ! n ! p
++ np.s ! RSubj ++ v2.imperfect ! a ! n ! p;
imperative = \\a,n => v.imperative ! a ! n
++ np.s ! RSubj ++ v2.imperative ! a ! n;
participle = {aorist = \\a,g => v.participle.aorist ! a ! g
++ np.s ! RSubj
++ v2.participle.aorist ! a ! g;
imperfect = \\a,g => v.participle.imperfect ! a ! g
++ np.s ! RSubj
++ v2.participle.imperfect ! a
! g;
perfect = \\a => v.participle.perfect ! a
++ np.s ! RSubj
++ v2.participle.perfect ! a;
adjectival = \\a => v.participle.adjectival ! a
++ np.s ! RSubj
++ v2.participle.adjectival
! a;
adverbial = v.participle.adverbial
++ np.s ! RSubj ++ v2.participle.adverbial};
noun_from_verb = v.noun_from_verb
++ np.s ! RSubj ++ v2.noun_from_verb;
vtype = v2.vtype;
compl = \\v3 => v.present ! Imperfective ! Sg ! v3.p
++ np.s ! RSubj ++ v2.compl ! {g = GSg Masc; p = P1};
c2 = {s = v.c2.s ++ np.s ! RSubj ++ v2.c2.s; c = v2.c2.c}} ;
lin SlashV2a v = v ** {compl = \\_ => []} ;
lin SlashVV vv v = {present = \\a,n,p => vv.present ! a ! n ! p
++ v.present ! a ! n ! p;
aorist = \\n,p => vv.aorist ! n ! p ++ v.aorist ! n ! p;
imperfect = \\a,n,p => vv.imperfect ! a ! n ! p
++ v.imperfect ! a ! n ! p;
imperative = \\a,n => vv.imperative ! a ! n
++ v.imperative ! a ! n;
participle = {aorist = \\a,g => vv.participle.aorist ! a ! g
++ v.participle.aorist ! a ! g;
imperfect = \\a,g => vv.participle.imperfect ! a ! g
++ v.participle.imperfect ! a ! g;
perfect = \\a => vv.participle.perfect ! a
++ v.participle.perfect ! a;
adjectival = \\a => vv.participle.adjectival ! a
++ v.participle.adjectival ! a;
adverbial = vv.participle.adverbial ++ v.participle.adverbial};
noun_from_verb = vv.noun_from_verb ++ v.noun_from_verb;
vtype = v.vtype;
compl = \\v2 => vv.present ! Imperfective ! Sg ! v2.p
++ v.compl ! {g = GSg Masc; p = P1};
c2 = {s = vv.present ! Imperfective ! Sg ! P1 ++ v.c2.s;
c = v.c2.c}} ;
lin UseComp c = {present = \\a,n,p => c.s; aorist = \\n,p => c.s;
imperfect = \\a,n,p => c.s; imperative = \\a,n => c.s;
participle = {aorist = \\a,g => c.s; imperfect = \\a,g => c.s;
perfect = \\a => c.s; adjectival = \\a => c.s; adverbial = c.s};
noun_from_verb = c.s; vtype = VNormal; compl = \\v => c.s} ;
lin UseCopula = {present = \\a,n,p => []; aorist = \\n,p => [];
imperfect = \\a,n,p => []; imperative = \\a,n => [];
participle = {aorist = \\a,g => []; imperfect = \\a,g => [];
perfect = \\a => []; adjectival = \\a => []; adverbial = []};
noun_from_verb = []; vtype = VNormal; compl = \\v => []} ;
lin UseV v = v ** {compl = \\_ => []} ;
lin VPSlashPrep vp p = {present = \\a,n,p2 => vp.present ! a ! n
! p2
++ p.s;
aorist = \\n,p2 => vp.aorist ! n ! p2 ++ p.s;
imperfect = \\a,n,p2 => vp.imperfect ! a ! n ! p2 ++ p.s;
imperative = \\a,n => vp.imperative ! a ! n ++ p.s;
participle = {aorist = \\a,g => vp.participle.aorist ! a ! g
++ p.s;
imperfect = \\a,g => vp.participle.imperfect ! a ! g ++ p.s;
perfect = \\a => vp.participle.perfect ! a ++ p.s;
adjectival = \\a => vp.participle.adjectival ! a ++ p.s;
adverbial = vp.participle.adverbial ++ p.s};
noun_from_verb = vp.noun_from_verb ++ p.s; vtype = vp.vtype;
compl = \\v => vp.compl ! {g = GSg Masc; p = P1} ++ p.s;
c2 = {s = vp.present ! Imperfective ! Sg ! P1 ++ p.s; c = p.c}} ;
}