mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-12 00:20:11 -06:00
70 lines
2.1 KiB
Plaintext
70 lines
2.1 KiB
Plaintext
concrete SentencePes of Sentence = CatPes ** open Prelude, ResPes,Predef in {
|
|
|
|
flags optimize=all_subs ;
|
|
coding = utf8;
|
|
|
|
lin
|
|
|
|
PredVP np vp = mkClause np vp ;
|
|
|
|
PredSCVP sc vp = mkSClause sc.s defaultAgr vp ;
|
|
|
|
ImpVP vp = {
|
|
s = \\pol,n =>
|
|
let agr = Ag n P2 ;
|
|
vps = vp.prefix ++ vp.s ! VImp pol n
|
|
in case vp.vvtype of {
|
|
NoVV => vp.ad ++ vp.comp ! agr ! OV ++ vp.obj ++ vp.vComp ! agr ! VVPres ++ vps ++ vp.embComp ;
|
|
_ => vps ++ vp.ad ++ vp.comp ! agr ! OV {-TODO check if legit-} ++ vp.obj ++ vp.vComp ! agr ! VVPres ++ vp.embComp }
|
|
} ;
|
|
|
|
SlashVP np vp =
|
|
mkSlClause np vp ** {c2 = vp.c2} ;
|
|
|
|
AdvSlash slash adv = slash ** {
|
|
vp = \\t,p,o => adv.s ++ slash.vp ! t ! p ! o ;
|
|
} ;
|
|
|
|
SlashPrep cl prep = {
|
|
subj = [] ; ---- AR 18/9/2017 this can destroy SOV ; Cl should be made discont
|
|
vp = cl.s ;
|
|
c2 = prep ** {ra = []}
|
|
} ;
|
|
|
|
SlashVS np vs slash =
|
|
mkSlClause np
|
|
(embComp (conjThat ++ slash.s ! Indic) (predV vs)) **
|
|
{c2 = slash.c2} ;
|
|
|
|
EmbedS s = {s = conjThat ++ s.s ! Indic} ;
|
|
EmbedQS qs = qs ;
|
|
EmbedVP vp = {s = infVP vp} ; --- agr
|
|
|
|
|
|
UseCl temp p cl = {
|
|
s = \\vvf => temp.s ++ p.s ++ case vvf of {
|
|
Indic => cl.s ! Ind temp.t temp.a ! p.p ! ODir ;
|
|
Subj => cl.s ! Sub temp.a ! p.p ! ODir }
|
|
} ;
|
|
|
|
UseQCl temp p qcl = let vt = Ind temp.t temp.a in {
|
|
s = temp.s ++ p.s ++ qcl.s ! vt ! p.p ;
|
|
} ;
|
|
|
|
UseRCl temp p rcl = let vt = Ind temp.t temp.a in rcl ** {
|
|
s = \\a => temp.s ++ p.s ++ rcl.s ! vt ! p.p ! a
|
|
} ;
|
|
|
|
UseSlash temp p cls = cls ** {
|
|
s = \\vvf => temp.s ++ p.s ++ cls.subj ++ case vvf of {
|
|
Indic => cls.vp ! Ind temp.t temp.a ! p.p ! ODir ;
|
|
Subj => cls.vp ! Sub temp.a ! p.p ! ODir }
|
|
} ;
|
|
|
|
AdvS a s = {s = \\vvf => a.s ++ s.s ! vvf} ;
|
|
|
|
RelS s r = {s = \\vvf => s.s ! vvf ++ rs2str Ke (agrP3 Sg) r} ;
|
|
SSubjS s1 sj s2 = {s = \\vvf => s1.s ! vvf ++ sj.s ++ s2.s ! sj.compl};
|
|
|
|
}
|