1
0
forked from GitHub/gf-rgl
Files
gf-rgl/src/zulu/grammar_ext/NguniSyntax.gf
T
Laurette Marais 8b05843585 zulu inclusion
2022-04-28 08:53:37 +02:00

259 lines
5.1 KiB
Plaintext
Executable File

incomplete resource NguniSyntax =
open Grammar,ExtraZulAbs,Backward,TempAbs
in {
oper
mkUtt = overload {
mkUtt : S -> Utt
= UttS ;
mkUtt : QS -> Utt
= UttQS ;
mkUtt : Pol -> Imp -> Utt
= UttImpSg ;
mkUtt : Imp -> Utt
= UttImpSg PPos
} ;
mkImp = overload {
mkImp : VP -> Imp
= ImpVP ;
} ;
mkS = overload {
mkS : Temp -> Pol -> Cl -> S
= UseCl ;
mkS : Pol -> Cl -> S
= UseCl TPresTemp ;
mkS : Temp -> Cl -> S
= \t -> UseCl t PPos ;
mkS : Cl -> S
= UseCl TPresTemp PPos
} ;
mkQS = overload {
mkQS : Temp -> Pol -> QCl -> QS
= UseQCl ;
mkQS : Pol -> QCl -> QS
= UseQCl TPresTemp ;
mkQS : Temp -> QCl -> QS
= \t -> UseQCl t PPos ;
mkQS : QCl -> QS
= UseQCl TPresTemp PPos -- ;
-- mkQS : Adv -> QS -> QS
-- = AdvQS ;
} ;
potQS = overload {
potQS : Pol -> QCl -> QS
= PotQS
} ;
positivePol : Pol
= PPos ;
negativePol : Pol
= PNeg ;
presentTense : Temp
= TPresTemp ;
perfectTense : Temp
= TPerfTemp ;
pastTense : Temp
= TPastTemp ;
futureTense : Temp
= TFutTemp ;
mkCl = overload {
mkCl : NP -> VP -> Cl
= PredVP ;
mkCl : NP -> V -> Cl
= \np,v -> PredVP np (UseV v) ;
mkCl : NP -> V2 -> NP -> Cl
= \np,v,obj -> PredVP np (ComplV2 v obj) ;
-- mkCl : NP -> AP -> Cl
-- = \np,ap -> PredVP np (UseAP ap) ;
-- mkCl : NP -> A -> Cl
-- = \np,a -> PredVP np (UseAP (PositA a)) ;
mkCl : NP -> Cl
= PredNP
} ;
mkQCl = overload {
mkQCl : Cl -> QCl
= QuestCl ;
-- mkQCl : NP -> IAdv -> QCl
-- = IAdvQCl ;
mkQCl : IAdv -> Cl -> QCl
= QuestIAdv
-- mkQCl : Adv -> QCl -> QCl
-- = AdvQCl
} ;
mkVP = overload {
mkVP : V -> VP
= UseV ;
mkVP : V2 -> NP -> VP
= ComplV2 ;
mkVP : V3 -> NP -> NP -> VP
= ComplV3 ;
mkVP : NP -> VP
= \np -> UseComp (CompNP np) ;
mkVP : Adv -> VP
= \adv -> UseComp (CompAdv adv) ;
mkVP : AP -> VP
= \ap -> UseComp (CompAP ap) ;
mkVP : VP -> Adv -> VP
= AdvVP ;
mkVP : VA -> AP -> VP
= ComplVA ;
mkVP : VS -> S -> VP
= ComplVS ;
mkVP : VAux -> VP -> VP
= ComplVAux
} ;
assocVP = overload {
assocVP : NP -> VP
= AssocCop
} ;
eqVP = overload {
eqVP : NP -> VP
= EqCop
} ;
-- progVP = overload {
-- progVP : VP -> VP
-- = ProgVP
-- } ;
mkNP = overload {
mkNP : Det -> CN -> NP
= DetCN ;
mkNP : Det -> N -> NP
= \det,n -> DetCN det (UseN n) ;
mkNP : Pron -> NP
= UsePron ;
mkNP : CN -> NP
= \cn -> DetCN (DetQuant IndefArt NumSg) cn ;
mkNP : N -> NP
= \n -> DetCN (DetQuant IndefArt NumSg) (UseN n) ;
-- mkNP : NP -> Conj -> NP -> NP
-- = \np1,conj,np2 -> ConjNP np1 conj np2 ;
mkNP : QuantStem -> CN -> NP
= QuantCN ;
mkNP : NP -> Adv -> NP
= AdvNP
} ;
i_NP : NP
= UsePron i_Pron ;
you_NP : NP
= UsePron youSg_Pron ;
-- he_NP : NP
-- = UsePron he_Pron ;
-- she_NP : NP
-- = UsePron she_Pron ;
mkCN = overload {
mkCN : N -> CN
= UseN ;
mkCN : AP -> CN -> CN
= AdjCN ;
mkCN : A -> N -> CN
= \a,n -> AdjCN (PositA a) (UseN n) ;
mkCN : A -> CN -> CN
= \a,cn -> AdjCN (PositA a) cn ;
mkCN : Adv -> CN -> CN
= \adv,cn -> AdvCN cn adv ;
mkCN : CN -> RS -> CN
= RelCN ;
mkCN : CN -> NP -> CN
= PossNP ;
mkCN : N -> NP -> CN
= \n,np -> PossNP (UseN n) np
-- mkCN : CN -> Pron -> CN
-- = PossPron ;
} ;
numCN = overload {
numCN : CN -> A -> CN
= NumAdjCN ;
} ;
-- descrCN : CN -> NP -> CN = DescrNP ;
mkAP = overload {
mkAP : A -> AP
= PositA ;
mkAP : AdA -> AP -> AP
= AdAP
} ;
mkAdv = overload {
mkAdv : NP -> Adv
= \np -> LocNPAdv np ;
-- mkAdv : ConjN -> S -> Adv
-- = \conj,s -> ConjAdv conj s ;
mkAdv : Subj -> S -> Adv
= SubjS ;
mkAdv : A -> Adv
= PositAdvAdj
} ;
instrAdv = overload {
instrAdv : NP -> Adv
= \np -> InstrNPAdv np ;
instrAdv : Adv -> NP -> Adv
= InstrAdvNPAdv
} ;
locAdv = overload {
locAdv : NP -> Adv
= \np -> LocNPAdv np ;
locAdv : Adv -> NP -> Adv
= \adv,np -> LocAdvNPAdv adv np
} ;
kwaAdv = overload {
kwaAdv : Adv -> NP -> Adv
= \adv,np -> KwaNPAdv adv np
} ;
kuAdv = overload {
kuAdv : NP -> Adv
= \np -> KuNPAdv np ;
-- kuAdv : Adv -> NP -> Adv
-- = \adv,np -> KuAdvNPAdv adv np
} ;
assocAdv = overload {
assocAdv : NP -> Adv
= NaNPAdv
} ;
relAdv = overload {
relAdv : Adv -> RS
= \adv -> RelAdv adv
} ;
mkRS = overload {
mkRS : QuantStem -> RS
= QuantRS ;
mkRS : RelStem -> RS
= RelRS ;
mkRS : Temp -> Pol -> VP -> RS
= \t,p,vp -> UseRCl t p (RelVP IdRP vp) ;
mkRS : VP -> RS
= \vp -> UseRCl TPresTemp PPos (RelVP IdRP vp)
} ;
aPl_Det : Det
= DetQuant IndefArt NumPl ;
-- mkSymb : Symb
-- = MkSymb ;
}