forked from GitHub/gf-rgl
259 lines
5.1 KiB
Plaintext
Executable File
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 ;
|
|
|
|
}
|