Files
gf-rgl/src/malay/ExtendMay.gf

131 lines
4.3 KiB
Plaintext

--# -path=.:../common:../abstract
concrete ExtendMay of Extend = CatMay
** ExtendFunctor - [
VPS -- finite VP's with tense and polarity
, ListVPS, BaseVPS, ConsVPS, ConjVPS
, VPI, MkVPI, ComplVPIVV
, ListVPI -- infinitive VP's (TODO: with anteriority and polarity)
, MkVPS
, PredVPS, RelVPS, QuestVPS, SQuestVPS
, PassVPSlash, PassAgentVPSlash
-- excluded because RGL funs needed for them not implemented yet
, PredAPVP
,PresPartAP, PastPartAP
,GenModNP, GenNP, GenRP
,CompoundN
,GerundNP, GerundAdv
,ByVP
-- VPS2 ; -- have loved (binary version of VPS)
-- [VPS2] {2} ; -- has loved, hates"
-- VPI2 ; -- to love (binary version of VPI)
-- [VPI2] {2} ; -- to love, to hate
]
with (Grammar=GrammarMay)
** open Prelude, Coordination, ResMay, NounMay in {
lincat
VPS, VPI = SS ;
ListVPS, ListVPI = ListX ;
lin
-- MkVPS : Temp -> Pol -> VP -> VPS ; -- hasn't slept
MkVPS t p vp = {
s = t.s ++ p.s ++ vp.s ! Active ! p.p;
} ;
-- BaseVPS : VPS -> VPS -> ListVPS ;
BaseVPS = twoSS ;
-- ConsVPS : VPS -> ListVPS -> ListVPS ;
ConsVPS = consrSS ",";
-- ConjVPS : Conj -> [VPS] -> VPS ; -- has walked and won't sleep
ConjVPS = conjunctDistrSS ;
-- PredVPS : NP -> VPS -> S ; -- she [has walked and won't sleep]
PredVPS np vps = {
s = np.s ! Bare ++ vps.s ;
} ;
-- SQuestVPS : NP -> VPS -> QS ; -- has she walked
SQuestVPS np vps = {s = "adakah" ++ np.s ! Bare ++ vps.s} ;
-- QuestVPS : IP -> VPS -> QS ; -- who has walked
QuestVPS ip vps = {s = ip.s ! Bare ++ vps.s} ;
-- RelVPS : RP -> VPS -> RS ; -- which won't sleep
RelVPS rp vps = {s = \\person => rp.s ++ vps.s} ;
-- MkVPI : VP -> VPI ; -- to sleep (TODO: Ant and Pol)
MkVPI vp = {s = linVP vp} ;
-- BaseVPI : VPI -> VPI -> ListVPI ;
BaseVPI vpi vpi2 = twoSS vpi vpi2 ;
-- ConsVPI : VPI -> ListVPI -> ListVPI ;
ConsVPI str listvpi vpi = consSS "," listvpi vpi ;
-- ConjVPI : Conj -> [VPI] -> VPI ; -- to sleep and to walk
-- ComplVPIVV : VV -> VPI -> VP ; -- must sleep and walk
ComplVPIVV vv vpi = useV {
s = \\vf => vv.s ++ vpi.s
} ;
-- PresPartAP : VP -> AP ; -- (the man) looking at Mary
PresPartAP vp = {
s = linVP vp
} ;
PastPartAP vp = {
s = linVP vp
} ;
-- GenModNP : Num -> NP -> CN -> NP ; -- this man's car(s)
GenModNP n np cn = variants {};
-- GenNP : NP -> Quant ; -- this man's
GenNP np = variants {};
-- GenRP : Num -> CN -> RP ; -- whose car
GenRP n cn = variants {};
-- CompoundN : N -> N -> N ; -- control system / controls system / control-system
CompoundN n1 n2 = n2 ** {
s = \\nf => n1.s ! NF Sg Bare ++ n2.s ! nf
} ;
-- GerundNP : VP -> NP ; -- publishing the document (by nature definite)
GerundNP vp = emptyNP ** {
s = \\_ => linVP vp
} ;
GerundAdv vp = ss (linVP vp) ;
ByVP vp = cc2 by8means_Prep (GerundAdv vp) ;
-- PassVPSlash : VPS -> VP ;
-- be begged to sleep
PassVPSlash vps = vps ** {
s = \\vf,pol => vps.s ! Passive ! pol ++ vps.adjCompl;
};
-- PassAgentVPSlash : VPSlash -> NP -> VP ; -- be begged by her to go
PassAgentVPSlash vps np = {
s = \\vf,pol => vps.s ! Passive ! pol ++ vps.adjCompl ++ (applyPrep by8agent_Prep np);
};
-- PassAgentVPSlash vps np = {
-- s = \\vf,pol => vps.s ! Passive ! pol ++ (applyPrep by8agent_Prep np) ;
-- };
-- MkVPS2 : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved
-- ConjVPS2 : Conj -> [VPS2] -> VPS2 ; -- has loved and now hates
-- ComplVPS2 : VPS2 -> NP -> VPS ; -- has loved and now hates that person
-- ReflVPS2 : VPS2 -> RNP -> VPS ; -- have loved and now hate myself and my car
-- MkVPI2 : VPSlash -> VPI2 ; -- to love
-- ConjVPI2 : Conj -> [VPI2] -> VPI2 ; -- to love and hate
-- ComplVPI2 : VPI2 -> NP -> VPI ; -- to love and hate that person
} ;