mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-20 08:46:20 -06:00
190 lines
6.8 KiB
Plaintext
Executable File
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 } ;
|
|
-- } ;
|
|
} ;
|