Files
comp-syntax-gu-mlt/old-labs/lab2/grammar/api/MiniSyntax.gf
Arianna Masciolini 3d9659d987 cp labs to old-labs
2025-03-21 11:39:09 +01:00

148 lines
2.9 KiB
Plaintext

incomplete resource MiniSyntax =
open MiniGrammar
in {
oper
mkUtt = overload {
mkUtt : S -> Utt
= UttS ;
mkUtt : QS -> Utt
= UttQS ;
mkUtt : NP -> Utt
= UttNP ;
mkUtt : Adv -> Utt
= UttAdv ;
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 TSim ;
mkS : Temp -> Cl -> S
= \t -> UseCl t PPos ;
mkS : Cl -> S
= UseCl TSim PPos ;
mkS : Conj -> S -> S -> S
= CoordS ;
} ;
mkQS = overload {
mkQS : Temp -> Pol -> QCl -> QS
= UseQCl ;
mkQS : Pol -> QCl -> QS
= UseQCl TSim ;
mkQS : Temp -> QCl -> QS
= \t -> UseQCl t PPos ;
mkQS : QCl -> QS
= UseQCl TSim PPos ;
} ;
positivePol : Pol
= PPos ;
negativePol : Pol
= PNeg ;
simultaneousAnt : Temp
= TSim ;
anteriorAnt : Temp
= TAnt ;
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 -> VS -> S -> Cl
= \np,v,obj -> PredVP np (ComplVS v obj) ;
mkCl : NP -> VV -> VP -> Cl
= \np,v,obj -> PredVP np (ComplVV v obj) ;
mkCl : NP -> AP -> Cl
= \np,ap -> PredVP np (UseComp (CompAP ap)) ;
mkCl : NP -> A -> Cl
= \np,a -> PredVP np (UseComp (CompAP (PositA a))) ;
} ;
mkQCl = overload {
mkQCl : Cl -> QCl
= QuestCl ;
mkQCl : IP -> VP -> QCl
= QuestVP ;
} ;
mkVP = overload {
mkVP : V -> VP
= UseV ;
mkVP : V2 -> NP -> VP
= ComplV2 ;
mkVP : AP -> VP
= \ap -> UseComp (CompAP ap) ;
mkVP : A -> VP
= \a -> UseComp (CompAP (PositA a)) ;
mkVP : NP -> VP
= \np -> UseComp (CompNP np) ;
mkVP : Adv -> VP
= \adv -> UseComp (CompAdv adv) ;
mkVP : VP -> Adv -> VP
= AdvVP ;
} ;
mkNP = overload {
mkNP : Det -> CN -> NP
= DetCN ;
mkNP : Det -> N -> NP
= \det,n -> DetCN det (UseN n) ;
mkNP : Pron -> NP
= UsePron ;
mkNP : PN -> NP
= UsePN ;
mkNP : CN -> NP
= MassNP ;
mkNP : N -> NP
= \n -> MassNP (UseN n) ;
} ;
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 ;
} ;
mkAP = overload {
mkAP : A -> AP
= PositA ;
} ;
mkAdv = overload {
mkAdv : Prep -> NP -> Adv
= PrepNP ;
} ;
}