Files
gf-rgl/src/zulu/ParadigmsZul.gf
Krasimir Angelov 1c775791b4 make Zulu compile
2023-08-21 17:31:40 +02:00

190 lines
6.8 KiB
Plaintext
Executable File

--# -path=.:../abstract:../../prelude:../common
--1 English Lexical Paradigms
--
-- Aarne Ranta 2003--2005
--
-- This is an API for the user of the resource grammar
-- for adding lexical items. It gives functions for forming
-- expressions of open categories: nouns, adjectives, verbs.
--
-- Closed categories (determiners, pronouns, conjunctions) are
-- accessed through the resource syntax API, $Structural.gf$.
--
-- The main difference with $MorphoZul.gf$ is that the types
-- referred to are compiled resource grammar types. We have moreover
-- had the design principle of always having existing forms, rather
-- than stems, as string arguments of the paradigms.
--
-- The structure of functions for each word class $C$ is the following:
-- first we give a handful of patterns that aim to cover all
-- regular cases. Then we give a worst-case function $mkC$, which serves as an
-- escape to construct the most irregular words of type $C$.
-- However, this function should only seldom be needed: we have a
-- separate module [``IrregZul`` ../../english/IrregZul.gf],
-- which covers irregular verbss.
resource ParadigmsZul = open
(Predef=Predef),
Prelude,
-- MorphoZul,
ResZul,
CatZul,
CatExtZul,
ParamX
in {
--2 Parameters
--
-- -- To abstract over gender names, we define the following identifiers.
--
-- oper
-- Gender : Type ;
--
-- human : Gender ;
-- nonhuman : Gender ;
-- masculine : Gender ; --%
-- feminine : Gender ; --%
--
-- -- To abstract over number names, we define the following.
--
-- Number : Type ;
--
-- singular : Number ;
-- plural : Number ;
--
-- -- To abstract over case names, we define the following.
--
-- Case : Type ; --%
--
-- nominative : Case ; --%
-- genitive : Case ; --%
--
-- -- Prepositions are used in many-argument functions for rection.
-- -- The resource category $Prep$ is used.
--
-- -- The number of a noun phrase can be extracted with the following
-- -- function.
--
-- npNumber : NP -> Number ; -- exctract the number of a noun phrase
--
--
-- --2 Nouns
oper
mkN = overload {
mkN : (ngane : Str) -> ClassGender -> N = \n,c -> lin N (regNoun n c) ; -- "thing" nouns
mkN : (khaya, khaya : Str) -> ClassGender -> N = \n,n2,c -> lin N (mkELocN n c) ; -- "thing" nouns
mkN : (nyaka,onyakeni,eminyakeni : Str) -> ClassGender -> N = \n,ls,lp,c -> lin N (semiRegNoun n ls lp c) ;
mkN : (iso,amehlo,esweni,emehlweni : Str) -> ClassGender -> N = \ns,np,ls,lp,c -> lin N (mkNoun ns np ls lp c) ;
} ;
mkPN = overload {
mkPN : (John : Str) -> N = \n -> lin N (regNoun n C1a_2a) ;
mkPN : (John : Str) -> ClassGender -> N = \n,c -> lin N (regNoun n c) ; -- "thing" nouns
mkPN : (nyaka,onyakeni,eminyakeni : Str) -> ClassGender -> N = \n,ls,lp,c -> lin N (semiRegNoun n ls lp c) ;
mkPN : (iso,amehlo,esweni,emehlweni : Str) -> ClassGender -> N = \ns,np,ls,lp,c -> lin N (mkNoun ns np ls lp c) ;
} ;
mkKwaPN = overload {
mkKwaPN : (Zulu : Str) -> ClassGender -> PN = \n,c -> lin PN (kwaProperName n c) ;
} ;
mkAdA = overload {
mkAdA : (kakhulu : Str ) -> AdA = \a -> lin AdA (ss a) ;
} ;
mkA = overload {
mkA : (kahle : Str) -> A = \a -> lin A (regAdj a) ; -- regular adjective
} ;
mkRelA = overload {
mkRelA : (mnandi : Str) -> A = \a -> lin A (relAdj a) ; -- relative stem "adjective"
} ;
-- mkEnumA = overload {
-- mkEnumA : (mbe : Str) -> A = \a -> lin A (enumAdj a) ; -- relative stem "adjective"
-- } ;
mkV = overload {
mkV : (hamb : Str) -> V = \hamb -> lin V (regVerb hamb) ;
mkV : (th,thi : Str) -> V = \th,thi -> lin V (th_Verb th thi) ;
mkV : (guqubal,guqubala,guqubele : Str) -> V = \guqubal,guqubala,guqubele -> lin V (three_Verb guqubal guqubala guqubele) ;
mkV : (dlal,dlala,dlalile,dlale : Str) -> V = \dlal,dlala,dlalile,dlale -> lin V (four_Verb dlal dlala dlalile dlale) ;
} ;
passV = overload {
passV: Str -> V = \fakw -> lin V (passiveVerb fakw) ;
} ;
passV2 = overload {
passV2: Str -> V2 = \fakw -> lin V2 (passiveVerb fakw) ;
} ;
mkV2 = overload {
mkV2 : (hamb : Str) -> V2 = \hamb -> lin V2 (regVerb hamb) ;
mkV2 : (th,thi : Str) -> V2 = \th,thi -> lin V2 (th_Verb th thi) ;
mkV2 : (guqubal,guqubala,guqubele : Str) -> V2 = \guqubal,guqubala,guqubele -> lin V2 (three_Verb guqubal guqubala guqubele) ;
mkV2 : (guqubal,guqubala,guqubele,guqubele_2 : Str) -> V2 = \guqubal,guqubala,guqubele,guqubele_2 -> lin V2 (four_Verb guqubal guqubala guqubele guqubele_2) ;
} ;
mkV3 = overload {
mkV3 : (hamb : Str) -> V3 = \hamb -> lin V3 (regVerb hamb) ;
mkV3 : (th,thi : Str) -> V3 = \th,thi -> lin V3 (th_Verb th thi) ;
mkV3 : (guqubal,guqubala,guqubele : Str) -> V3 = \guqubal,guqubala,guqubele -> lin V3 (three_Verb guqubal guqubala guqubele) ;
mkV3 : (guqubal,guqubala,guqubele,guqubele_2 : Str) -> V3 = \guqubal,guqubala,guqubele,guqubele_2 -> lin V3 (four_Verb guqubal guqubala guqubele guqubele_2) ;
} ;
-- mkV2V = overload {
-- mkV2V : (hamb : Str) -> V2V = \hamb -> lin V2V (regVerb hamb) ;
-- mkV2V : (th,thi : Str) -> V2V = \th,thi -> lin V2V (th_Verb th thi) ;
-- mkV2V : (guqubal,guqubala,guqubele : Str) -> V2V = \guqubal,guqubala,guqubele -> lin V2V (three_Verb guqubal guqubala guqubele) ;
-- mkV2V : (guqubal,guqubala,guqubele,guqubele_2 : Str) -> V2V = \guqubal,guqubala,guqubele,guqubele_2 -> lin V2V (four_Verb guqubal guqubala guqubele guqubele_2) ;
-- } ;
mkVA = overload {
mkVA : (b : Str) -> VA = \b -> lin VA (regVerb b) ;
} ;
mkVV = overload {
mkVV : (f : Str) -> VV = \f -> lin VV (regVerb f)
} ;
-- mkVS = overload {
-- mkVS : (cel : Str) -> SType -> VS = \cel,st -> lin VS ((regVerb cel) ** { s_type = st } ) ;
-- mkVS : (az,azi : Str) -> SType -> VS = \az,azi,st -> lin VS ((th_Verb az azi) ** { s_type = st } ) ;
-- } ;
-- yourPl_Det = overload {
-- yourPl_Det : Det = lin Det { s = "jou" ; n = Pl ; p = TPos } ;
-- } ;
--
-- mkSgDet = overload {
-- mkSgDet : Str -> Det = \s -> lin Det { s = s ; n = Sg ; p = TPos } ;
-- } ;
-- mkPlDet = overload {
-- mkPlDet : Str -> Det = \s -> lin Det { s = s ; n = Pl ; qdef = Article Def } ;
-- } ;
-- -- mkVS = overload {
-- -- mkVS : V -> VS = \weet -> lin VS { v = weet ; c = "dat" } ;
-- -- } ;
-- --
-- -- mkVQ = overload {
-- -- mkVQ : V -> VS = \wonder -> lin VS { v = wonder ; c = "of" } ;
-- -- } ;
mkAdv = overload {
mkAdv : Str -> Adv = \adv -> lin Adv (regAdv adv) ;
-- mkAdv : Str -> Aspect -> Adv = \adv,asp -> lin Adv (aspAdv adv asp) ;
} ;
mkIAdv = overload {
mkIAdv : Str -> Bool -> IAdv = \adv,b -> lin IAdv { s = "ingabe" ; postIAdv = b } ;
-- mkAdv : Str -> Aspect -> Adv = \adv,asp -> lin Adv (aspAdv adv asp) ;
} ;
-- mkPredet = overload {
-- mkPredet : Str -> Predet = \predet -> lin Predet { s = predet ; p = TPos } ;
-- } ;
} ;