mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 08:58:55 -06:00
134 lines
5.1 KiB
Plaintext
134 lines
5.1 KiB
Plaintext
concrete ExtraLat of ExtraLatAbs =
|
|
CatLat, ConjunctionLat **
|
|
open ResLat, ParadigmsLat, RelativeLat, NounLat, Prelude in {
|
|
lincat CS = SAdvPos => AdvPos => DetPos => VPos => ComplPos => Order => Str ;
|
|
TestRS = { s : Gender => Number => SAdvPos => AdvPos => DetPos => VPos => ComplPos => Order => Str } ;
|
|
lin
|
|
useS s = combineSentence s ;
|
|
-- PastPartAP : VPSlash -> AP ; -- lost (opportunity) ; (opportunity) lost in space
|
|
-- PastPartAP vp = { s = vp.part ! VPassPerf } ;
|
|
|
|
-- UsePronNonDrop p = -- Pron -> NP
|
|
-- p.pers **
|
|
-- {
|
|
-- p = p.p ;
|
|
-- s = \\_ => p.pers.s ! PronNonDrop ! PronNonRefl ;
|
|
-- adv = "" ;
|
|
-- preap, postap = { s = \\_ => "" } ;
|
|
-- det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = p.pers.n } ;
|
|
-- } ;
|
|
|
|
AdjCNPre ap cn = -- AP -> CN -> CN
|
|
addAdjToCN (lin AP ap) (lin CN cn) Post ;
|
|
|
|
-- -- ConjNP : Conj -> ListNP -> NP ; -- she or we
|
|
-- ConjNPque conj nps =
|
|
-- {
|
|
-- s = case conj.c of {
|
|
-- Et => case nps.isBase of {
|
|
-- False => \\cse => coord conj.c {init = (nps.s ! Et).init ! cse ; last = (nps.s ! Et).last ! cse } ;-- (conjunctDistrTable Case conj (nps.s ! Et)).s ;
|
|
-- True => \\cse => (nps.s ! Et).init ! cse ++ (nps.s ! Et).last ! cse ++ BIND ++ "que"
|
|
-- } ;
|
|
-- c => \\cse => coord conj.c {init = (nps.s ! c).init ! cse ; last = (nps.s ! c).last ! cse } -- (conjunctDistrTable Case conj (nps.l ! Et)).s
|
|
-- } ;
|
|
-- n = case conj.c of { Et => Pl ; _ => nps.n } ;
|
|
-- g = nps.g ;
|
|
-- p = nps.p ;
|
|
-- adv = nps.adv ;
|
|
-- preap = nps.preap ;
|
|
-- postap = nps.postap ;
|
|
-- det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = nps.n };
|
|
-- } ;
|
|
|
|
everybodyFem_NP = regNP "quisque" "quemque" "cuiusque" "cuique" "quoque" "quisque" Fem Sg ;-- regNP "quisquae" Sg ; -- L...
|
|
somebodyFem_NP = regNP "aliquis" "aliquem" "alicuius" "clicui" "aliquo" "aliquis" Fem Sg ; -- Bayer-Lindauer 60.1
|
|
nobodyFem_NP = regNP "nemo" "neminem" "neminis" "nemini" "nemine" "nemo" Fem Sg ; -- Bayer Lindauer 60.4
|
|
|
|
Nom_Prep = mkPrep "" Nom ;
|
|
Gen_Prep = mkPrep "" Gen ;
|
|
Acc_Prep = mkPrep "" Acc ;
|
|
Dat_Prep = mkPrep "" Dat ;
|
|
Abl_Prep = mkPrep "" Abl ;
|
|
inAbl_Prep = mkPrep "in" Abl ;
|
|
onAbl_Prep = mkPrep "in" Abl ; -- L...
|
|
|
|
-- UttS_SVO : S -> Utt
|
|
UttS_SVO s = { s = defaultSentence s ! SVO };
|
|
-- UttS_VInS : S -> Utt
|
|
UttS_VInS s = { s = combineSentence s ! SAPreS ! APreV ! DPostN ! VInS ! CPostV ! SVO } ;
|
|
|
|
TestRCl t p cl = {
|
|
s = \\g,n => combineSentence (combineClause (t.s++p.s) (cl.s ! g ! n) t.t t.a p.p VQFalse) ;
|
|
} ;
|
|
|
|
-- UseRCl_OSV : Temp -> Pol -> RCl -> RS ;
|
|
UseRCl_OSV t p cl = {
|
|
s = \\g,n => combineSentence (combineClause (t.s++p.s) (cl.s ! g ! n) t.t t.a p.p VQFalse) ! SAPreO ! APreV ! DPreN ! VReg ! CPostV ! OSV ;
|
|
} ;
|
|
-- UseRCl_OVS : Temp -> Pol -> RCl -> RS ;
|
|
UseRCl_OVS t p cl = {
|
|
s = \\g,n => combineSentence (combineClause (t.s++p.s) (cl.s ! g ! n) t.t t.a p.p VQFalse) ! SAPreO ! APreV ! DPreN ! VReg ! CPostV ! OVS ; -- SAPreO APreV DPreN VReg CPostV OVS
|
|
} ;
|
|
-- UseRCl_SOV : Temp -> Pol -> RCl -> RS ;
|
|
UseRCl_SOV t p cl = {
|
|
s = \\g,n => combineSentence (combineClause (t.s++p.s) (cl.s ! g ! n) t.t t.a p.p VQFalse) ! SAPreS ! APreV ! DPreN ! VReg ! CPostV ! SOV ;
|
|
} ;
|
|
-- UseRCl_SVO : Temp -> Pol -> RCl -> RS ;
|
|
UseRCl_SVO t p cl = {
|
|
s = \\g,n => combineSentence (combineClause (t.s++p.s) (cl.s ! g ! n) t.t t.a p.p VQFalse) ! SAPreS ! APreV ! DPreN ! VReg ! CPostV ! SVO ;
|
|
} ;
|
|
-- PrepNP_DPostN : Prep -> NP -> Adv ; -- in the house
|
|
PrepNP_DPostN prep np =
|
|
mkAdv (prep.s ++ (combineNounPhrase np) ! PronNonDrop ! APostN ! DPostN ! prep.c ) ;
|
|
|
|
-- ApposCN_DPostN : CN -> NP -> CN
|
|
ApposCN_DPostN cn np =
|
|
cn **
|
|
{
|
|
s = \\n,c => cn.s ! n ! c ++ (combineNounPhrase np) ! PronNonDrop ! APostN ! DPostN ! c ;
|
|
} ; -- massable = cn.massable } ;
|
|
|
|
-- CompNP_DPostN : NP -> Comp ; -- (be) the man
|
|
CompNP np = {s = \\_ =>
|
|
(combineNounPhrase np) ! PronNonDrop ! DPostN ! Nom
|
|
} ;
|
|
|
|
-- DetNP_Fem : Det -> NP ; -- these five
|
|
DetNP_Fem det = {
|
|
s = \\_ => det.s ! Fem ;
|
|
g = Fem ;
|
|
n = det.n ;
|
|
p = P3 ;
|
|
adv = "" ;
|
|
preap, postap = { s = \\_ => "" } ;
|
|
det = { s,sp = \\_ => "" ; n = det.n } ;
|
|
} ;
|
|
|
|
-- AdjAsNP_Fem : AP -> NP ; -- green (is good)
|
|
AdjAsNP_Fem ap = {
|
|
s = \\_,c => ap.s ! (Ag Fem Sg c) ;
|
|
adv = "" ;
|
|
det = { s, sp = \\_ => "" } ;
|
|
g = Fem ;
|
|
n = Sg ;
|
|
p = P3 ;
|
|
postap = { s = \\_ => "" } ;
|
|
preap = { s = \\_ => "" } ;
|
|
} ;
|
|
|
|
-- PredVP_VP_Ellipsis : NP -> VP -> Cl
|
|
PredVP_VP_Ellipsis np =
|
|
mkClause np emptyVP ;
|
|
|
|
-- SlashVP_VP_Ellipsis : NP -> VPSlash -> ClSlash ; -- (whom) he sees
|
|
SlashVP_VP_Ellipsis np =
|
|
mkClause np emptyVP ;
|
|
|
|
-- FunRP_RP_Ellipsis : Prep -> NP -> RP ;
|
|
FunRP_RP_Ellipsis p np = FunRP p np (lin RP { s = \\_ => "" }) ;
|
|
|
|
RelNP_NP_Ellipsis rs = RelNP emptyNP rs ;
|
|
|
|
comma_Conj = mkConj "" "," "" Pl Comma ;
|
|
}
|