Files
gf-core/lib/src/greek/SentenceGre.gf

103 lines
3.1 KiB
Plaintext

concrete SentenceGre of Sentence = CatGre ** open Prelude, ResGre,ParadigmsGre in {
flags coding= utf8;
lin
PredVP np vp = predVPPol np.isNeg ((np.s ! Nom).comp) np.a vp ;
---- PredVP np vp = predVPPol np.isNeg ((np.s ! Nom).comp | [] ) np.a vp ; -- AR removed empty subject variant
PredSCVP sc vp = predVP sc.s (agrP3 Neut Sg) vp ;
SlashVP np v2 = {s = \\agr =>
let
vp = v2
in
(predVP (np.s ! Nom).comp np.a vp).s ;n3 = v2.n3 ; c2 = v2.c2 };
AdvSlash slash adv = {
s = \\ag,o,m,t,a,p => slash.s !ag ! o ! m ! t! a ! p ++ adv.s ;
n3 = slash.n3 ;
c2 = slash.c2
} ;
SlashPrep cl prep = {
s = \\_ => cl.s ;
n3 = \\_ => [] ;
c2 = {s = prep.s ; c = prep.c ; isDir = False}
} ;
SlashVS np vs slash = {
s = \\ag =>
(predVP
(np.s ! Nom).comp np.a
(insertComplement (\\b => conjThat ++ slash.s ! ag ! Ind)
(predV vs))).s
} ** {n3 = slash.n3 ; c2 = slash.c2};
ImpVP vp = {
s = \\pol,n,aspect=>
let
a = Ag Masc Sg P2 ;
a2 = Ag Masc Pl P2 ;
in
case <pol,n,aspect> of {
<Pos,Sg,Perf> => vp.v.s ! VImperative Perf Sg Active ++ vp.clit ++ vp.clit2 ++ vp.comp ! a ;
<Pos,Pl,Perf> => vp.v.s ! VImperative Perf Pl Active ++ vp.clit ++ vp.clit2 ++vp.comp ! a2 ;
<Pos,Sg,Imperf> => vp.v.s ! VImperative Imperf Sg Active ++ vp.clit ++ vp.clit2 ++ vp.comp ! a ;
<Pos,Pl,Imperf> => vp.v.s ! VImperative Imperf Pl Active ++ vp.clit ++ vp.clit2 ++vp.comp ! a2 ;
<Neg,Sg,Perf> => "μην" ++ vp.clit ++ vp.clit2 ++ vp.v.s ! VPres Con Sg P2 Active Perf++ vp.comp ! a ;
<Neg,Pl,Perf> => "μην" ++ vp.clit ++ vp.clit2++ vp.v.s ! VPres Con Pl P2 Active Perf++ vp.comp ! a2;
<Neg,Sg,Imperf> => "μην" ++ vp.clit ++ vp.clit2 ++ vp.v.s ! VPres Ind Sg P2 Active Perf++ vp.comp ! a ;
<Neg,Pl,Imperf> => "μην" ++ vp.clit ++ vp.clit2++ vp.v.s ! VPres Ind Pl P2 Active Perf++ vp.comp ! a2
} ;
} ;
EmbedS s = {s = conjThat ++ s.s ! Ind} ;
EmbedQS qs = {s = qs.s ! QIndir} ;
EmbedVP vp = {s = (predVP [] (Ag Masc Sg P3) vp).s ! Main ! TPres ! Simul ! Pos !Con};
UseCl t p cl = {s = \\o => t.s ++ p.s ++ cl.s !Main ! t.t !t.a! p.p ! t.m } ;
UseQCl t p cl = {
s = \\q => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! q
} ;
UseRCl t p cl = {
s = \\r,ag => t.s ++ p.s ++ cl.s ! ag ! t.t ! t.a ! p.p ! r ;
c = cl.c
} ;
UseSlash t p cl = {
s = \\ag,m =>
t.s ++ p.s ++ cl.s ! ag ! Main ! t.t ! t.a ! p.p ! m ;
n3 = cl.n3 ;
c2 = cl.c2
} ;
AdvS a s ={s = \\m => a.s ++ s.s ! m} ;
ExtAdvS a s ={s = \\m => a.s ++ "," ++ s.s ! m} ;
SSubjS a s b = {
s = \\m => a.s !m ++ s.s ++ b.s ! s.m
} ;
RelS s r = {
s = \\o => s.s ! o ++ "," ++ r.s ! Ind ! agrP3 Neut Sg
} ;
}