Files
gf-core/lib/src/latin/SentenceLat.gf

80 lines
2.7 KiB
Plaintext

concrete SentenceLat of Sentence = CatLat,TenseX ** open Prelude, ResLat in {
flags optimize=all_subs ;
lin
PredVP np vp = -- NP -> VP -> Cl
{
s = \\tense,anter,pol,order =>
case order of {
SVO => np.s ! Nom ++ negation pol ++ vp.adj ! Ag np.g Sg Nom ++ vp.fin ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ++ vp.obj ;
VSO => negation pol ++ vp.adj ! Ag np.g Sg Nom ++ vp.fin ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ++ np.s ! Nom ++ vp.obj ;
VOS => negation pol ++ vp.adj ! Ag np.g Sg Nom ++ vp.fin ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ++ vp.obj ++ np.s ! Nom ;
OSV => vp.obj ++ np.s ! Nom ++ negation pol ++ vp.adj ! Ag np.g Sg Nom ++ vp.fin ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ;
OVS => vp.obj ++ negation pol ++ vp.adj ! Ag np.g Sg Nom ++ vp.fin ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ++ np.s ! Nom ;
SOV => np.s ! Nom ++ vp.obj ++ negation pol ++ vp.adj ! Ag np.g Sg Nom ++ vp.fin ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p
}
} ;
--
-- PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ;
--
-- ImpVP vp = {
-- s = \\pol,n =>
-- let
-- agr = AgP2 (numImp n) ;
-- verb = infVP True vp agr ;
-- dont = case pol of {
-- CNeg True => "don't" ;
-- CNeg False => "do" ++ "not" ;
-- _ => []
-- }
-- in
-- dont ++ verb
-- } ;
--
-- SlashVP np vp =
-- mkClause (np.s ! Nom) np.a vp ** {c2 = vp.c2} ;
--
-- AdvSlash slash adv = {
-- s = \\t,a,b,o => slash.s ! t ! a ! b ! o ++ adv.s ;
-- c2 = slash.c2
-- } ;
--
-- SlashPrep cl prep = cl ** {c2 = prep.s} ;
--
-- SlashVS np vs slash =
-- mkClause (np.s ! Nom) np.a
-- (insertObj (\\_ => conjThat ++ slash.s) (predV vs)) **
-- {c2 = slash.c2} ;
--
-- EmbedS s = {s = conjThat ++ s.s} ;
-- EmbedQS qs = {s = qs.s ! QIndir} ;
-- EmbedVP vp = {s = infVP False vp (agrP3 Sg)} ; --- agr
--
UseCl t p cl = -- Temp -> Pol-> Cl -> S
{
s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! SOV
} ;
-- UseQCl t p cl = {
-- s = \\q => t.s ++ p.s ++ cl.s ! t.t ! t.a ! ctr p.p ! q
-- } ;
-- UseRCl t p cl = {
-- s = \\r => t.s ++ p.s ++ cl.s ! t.t ! t.a ! ctr p.p ! r ;
-- c = cl.c
-- } ;
-- UseSlash t p cl = {
-- s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! ctr p.p ! ODir ;
-- c2 = cl.c2
-- } ;
--
-- AdvS a s = {s = a.s ++ "," ++ s.s} ;
--
-- RelS s r = {s = s.s ++ "," ++ r.s ! agrP3 Sg} ;
--
-- oper
-- ctr = contrNeg True ; -- contracted negations
--
}