mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-02 07:42:50 -06:00
See https://github.com/daherb/GF orhttps://gitlab.cip.ifi.lmu.de/langeh/gf for full git commit history
80 lines
2.7 KiB
Plaintext
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
|
|
--
|
|
}
|
|
|