forked from GitHub/gf-rgl
added kikamba language based on Bantu functor
This commit is contained in:
1
src/kikamba/AdjectiveKam.gf
Normal file
1
src/kikamba/AdjectiveKam.gf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
concrete AdjectiveKam of Adjective = CatKam **AdjectiveBantu with (ResBantu = ResKam) ;
|
||||||
2
src/kikamba/AdverbKam.gf
Normal file
2
src/kikamba/AdverbKam.gf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
concrete AdverbKam of Adverb = CatKam **AdverbBantu with
|
||||||
|
(ResBantu = ResKam);
|
||||||
2
src/kikamba/CatKam.gf
Normal file
2
src/kikamba/CatKam.gf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
concrete CatKam of Cat = CommonX - [Pol]
|
||||||
|
** CatBantu with (ResBantu = ResKam);
|
||||||
2
src/kikamba/ConjunctionKam.gf
Normal file
2
src/kikamba/ConjunctionKam.gf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
concrete ConjunctionKam of Conjunction = CatKam ** ConjunctionBantu with
|
||||||
|
(ResBantu = ResKam);
|
||||||
198
src/kikamba/DiffKam.gf
Normal file
198
src/kikamba/DiffKam.gf
Normal file
@@ -0,0 +1,198 @@
|
|||||||
|
instance DiffKam of DiffBantu = open CommonBantu, Prelude in {
|
||||||
|
|
||||||
|
param
|
||||||
|
GenderKam = G1 | G2 | G3 | G4 | G5 | G6 | G7| G8 | G9 |G10 ;
|
||||||
|
oper
|
||||||
|
Gender = GenderKam ;
|
||||||
|
firstGender = G1 ; secondGender = G2 ;
|
||||||
|
|
||||||
|
conjGender : Gender -> Gender -> Gender = \m,n ->
|
||||||
|
case m of { G1 => n ; _ => G2 } ;
|
||||||
|
|
||||||
|
ProunSgprefix : Gender -> Str = \g ->
|
||||||
|
case g of {
|
||||||
|
G1 | G2|G8 |G9 => "w" ;
|
||||||
|
G3 | G7 => "y" ;
|
||||||
|
G4 => "ky" ;
|
||||||
|
G5 => "k";
|
||||||
|
G10 => "kw";
|
||||||
|
G6 => "v"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ProunPlprefix : Gender -> Str = \g ->
|
||||||
|
case g of {
|
||||||
|
G1 | G3 |G8 |G10 => "m" ;
|
||||||
|
G2 => "y" ;
|
||||||
|
G4 | G7 |G9 => "sy" ;
|
||||||
|
G5 => "tw" ;
|
||||||
|
G6 => "kw"
|
||||||
|
} ;
|
||||||
|
Allpredetprefix : Gender -> Str = \g ->
|
||||||
|
case <g> of {
|
||||||
|
<G1> |<G3> |<G8> |<G10> => "" ;
|
||||||
|
<G2> => "y" ;
|
||||||
|
<G4> | <G7> | <G9> => "sy" ;
|
||||||
|
<G5> => "two" ;
|
||||||
|
<G6> => "kwo"
|
||||||
|
} ;
|
||||||
|
Mostpredetprefix : Gender -> Str = \g ->
|
||||||
|
case <g> of {
|
||||||
|
<G1> => "ala a" ;
|
||||||
|
<G2> => "ila m" ;
|
||||||
|
<G3> | <G10> => "ala ma" ;
|
||||||
|
<G4> | <G8> => "ila mb" ;
|
||||||
|
<G5> => "tula twi" ;
|
||||||
|
<G6> => "kula kwi" ;
|
||||||
|
<G7> | <G9> => "ila mb"
|
||||||
|
|
||||||
|
} ;
|
||||||
|
ConsonantAdjprefix: Gender -> Number -> Str = \n,g ->
|
||||||
|
case <n,g> of {
|
||||||
|
<G1,Sg> => "mu" ;
|
||||||
|
<G1,Pl> => "a" ;
|
||||||
|
<G2,Sg> => "mu" ;
|
||||||
|
<G2,Pl> => "mi" ;
|
||||||
|
<G3,Sg> => "i" ;
|
||||||
|
<G3,Pl> => "ma" ;
|
||||||
|
<G4,Sg> => "ki" ;
|
||||||
|
<G4,Pl> => "" ;
|
||||||
|
<G5,Sg> => "ka" ;
|
||||||
|
<G5,Pl> => "tu" ;
|
||||||
|
<G6,Sg> => "va" ;
|
||||||
|
<G6,Pl> => "ku" ;
|
||||||
|
<G7,n> => "" ;
|
||||||
|
<G8,Sg> => "mu" ;
|
||||||
|
<G8,Pl> => "ma" ;
|
||||||
|
<G9,Sg> => "mu" ;
|
||||||
|
<G9,Pl> => "" ;
|
||||||
|
<G10,Sg> => "ku" ;
|
||||||
|
<G10,Pl> => "ma"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
VowelAdjprefix: Gender -> Number -> Str = \n,g ->
|
||||||
|
case <n,g> of {
|
||||||
|
<G1,Sg> => "mw" ;
|
||||||
|
<G1,Pl> => "a" ;
|
||||||
|
<G2,Sg> => "mw" ;
|
||||||
|
<G2,Pl> => "mi" ;
|
||||||
|
<G3,Sg> => "y" ;
|
||||||
|
<G3,Pl> => "ma" ;
|
||||||
|
<G4,Sg> => "ky" ;
|
||||||
|
<G4,Pl> => "sy" ;
|
||||||
|
<G5,Sg> => "ka" ;
|
||||||
|
<G5,Pl> => "tw" ;
|
||||||
|
<G6,Sg> => "va" ;
|
||||||
|
<G6,Pl> => "kw" ;
|
||||||
|
<G7,n> => "sy" ;
|
||||||
|
<G8,Sg> => "mw" ;
|
||||||
|
<_,_> => "ma"
|
||||||
|
} ;
|
||||||
|
Adjpprefix : Gender -> Number -> Str = \n,g ->
|
||||||
|
case <n,g> of {
|
||||||
|
<G1,Sg> => "wi" ;
|
||||||
|
<G1,Pl> => "me" ;
|
||||||
|
<G2,Sg> => "wi" ;
|
||||||
|
<G2,Pl> => "yi" ;
|
||||||
|
<G3,Sg> => "yi" ;
|
||||||
|
<G3,Pl> => "me" ;
|
||||||
|
<G4,Sg> => "ki" ;
|
||||||
|
<G4,Pl> => "syi" ;
|
||||||
|
<G5,Sg> => "ke" ;
|
||||||
|
<G5,Pl> => "twi" ;
|
||||||
|
<G6,Sg> => "ve" ;
|
||||||
|
<G6,Pl> => "kwi" ;
|
||||||
|
<G7,Sg> => "yi" ;
|
||||||
|
<G7,Pl> => "syi";
|
||||||
|
<_,_> => ""
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PrefixPlNom : Gender -> Str = \g ->
|
||||||
|
case <g> of {
|
||||||
|
<G1> => "a" ;
|
||||||
|
<G2> => "mi" ;
|
||||||
|
<G4> => "i" ;
|
||||||
|
<G5> => "tu";
|
||||||
|
<G6> => "ku" ;
|
||||||
|
<G7> => [] ;
|
||||||
|
<G9> => "mb" ;
|
||||||
|
_ => "ma"
|
||||||
|
|
||||||
|
} ;
|
||||||
|
mkprefix,Ordprefix : Gender -> Str = \g ->
|
||||||
|
case <g> of {
|
||||||
|
<G1> | <G2> | <G8> | <G9> => "wa" ;
|
||||||
|
<G3> | <G7> => "ya" ;
|
||||||
|
<G4> => "kya" ;
|
||||||
|
<G5> => "ka";
|
||||||
|
<G10> => "kwa";
|
||||||
|
<G6> => "va"
|
||||||
|
} ;
|
||||||
|
Cardprefix : Gender -> Str = \g ->
|
||||||
|
case <g> of {
|
||||||
|
<G1>|<G3> |<G10> => "a" ;
|
||||||
|
<G2>| <G7>|<G4> |<G8> |<G9> => "i" ;
|
||||||
|
<G5> => "tu" ;
|
||||||
|
<G6> => "ku"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Cardoneprefix : Gender -> Str = \g ->
|
||||||
|
case <g> of {
|
||||||
|
<G1>|<G2> |<G8> |<G9> => "u" ;
|
||||||
|
<G4> => "ki" ;
|
||||||
|
<G10> => "ku" ;
|
||||||
|
<G3> => "yi" ;
|
||||||
|
<G5> => "ka" ;
|
||||||
|
<G6> => "va";
|
||||||
|
<G7> => "i"
|
||||||
|
} ;
|
||||||
|
Cardtwoprefix : Gender -> Str = \g ->
|
||||||
|
case <g> of {
|
||||||
|
<G1>|<G3> |<G8> |<G10> => "e" ;
|
||||||
|
<G2> |<G4> | <G7> |<G9> => "i" ;
|
||||||
|
<G5> => "twi" ;
|
||||||
|
<G6> => "kwi"
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Detprefix : Gender -> Str = \g ->
|
||||||
|
case <g> of {
|
||||||
|
<G1> | <G8> => "a" ;
|
||||||
|
<G2> => "mi" ;
|
||||||
|
<G3> | <G10> => "ma" ;
|
||||||
|
<G4> | <G7> | <G9> => "" ;
|
||||||
|
<G5> => "tu" ;
|
||||||
|
<G6> => "ku"
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
oper
|
||||||
|
conjThan = "kuvita" ;
|
||||||
|
conjThat = "kuvita" ;
|
||||||
|
|
||||||
|
reflPron : Agr => Str = \\ag=> case ag of {
|
||||||
|
Ag G1 Sg P1 => "nyie" ;
|
||||||
|
Ag G1 Sg P2 => "we" ;
|
||||||
|
Ag G1 Sg P3 => "we" ;
|
||||||
|
Ag _ Sg P3 => "yo" ;
|
||||||
|
Ag G1 Pl P1 => "ithyi" ;
|
||||||
|
Ag G1 Pl P2 => "nyui" ;
|
||||||
|
Ag G1 Pl P3 => "mo" ;
|
||||||
|
Ag _ _ _ => ""
|
||||||
|
};
|
||||||
|
|
||||||
|
superVery ="vyu";
|
||||||
|
|
||||||
|
param
|
||||||
|
VForm = VInf
|
||||||
|
| VPres Gender Number Person
|
||||||
|
| VPast Gender Number Person
|
||||||
|
| VFut Gender Number Person
|
||||||
|
-- | notpresent
|
||||||
|
;
|
||||||
|
|
||||||
|
DForm = unit | teen | ten | hund ;
|
||||||
|
AForm = AAdj Gender Number | AComp Gender Number ;
|
||||||
|
}
|
||||||
30
src/kikamba/GrammarKam.gf
Normal file
30
src/kikamba/GrammarKam.gf
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
--# -path=.:../abstract:../common:prelude
|
||||||
|
|
||||||
|
concrete GrammarKam of Grammar =
|
||||||
|
NounKam,
|
||||||
|
VerbKam,
|
||||||
|
AdjectiveKam,
|
||||||
|
AdverbKam,
|
||||||
|
NumeralKam,
|
||||||
|
SentenceKam,
|
||||||
|
QuestionKam,
|
||||||
|
RelativeKam,
|
||||||
|
ConjunctionKam,
|
||||||
|
PhraseKam,
|
||||||
|
TextX - [Pol,PPos,PNeg,Pres],
|
||||||
|
StructuralKam,
|
||||||
|
IdiomKam,
|
||||||
|
TenseX - [Pol,PPos,PNeg,Pres]
|
||||||
|
** {
|
||||||
|
|
||||||
|
flags startcat = Phr ; unlexer = text ; lexer = text;
|
||||||
|
|
||||||
|
--lin
|
||||||
|
--PPos = {s = [] ; p = CPos} ;
|
||||||
|
-- PNeg = {s = [] ; p = CNeg True} ; -- contracted: don't
|
||||||
|
--PPos = {s = [] ; b = True} ;
|
||||||
|
-- PNeg = {s = [] ; b = False} ;
|
||||||
|
-- TPres = {s = [] ; t = ResKam.Pres} ;
|
||||||
|
-- TPast = {s = [] ; t = ResKam.Past };
|
||||||
|
-- TFut = {s = [] ; t = ResKam.Fut };
|
||||||
|
} ;
|
||||||
48
src/kikamba/IdiomKam.gf
Normal file
48
src/kikamba/IdiomKam.gf
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
concrete IdiomKam of Idiom = CatKam ** open Prelude, ResKam in {
|
||||||
|
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
{-
|
||||||
|
lin
|
||||||
|
ImpersCl vp = mkClause "it" (agrP3 Sg) vp ;
|
||||||
|
GenericCl vp = mkClause "one" (agrP3 Sg) vp ;
|
||||||
|
|
||||||
|
CleftNP np rs = mkClause "it" (agrP3 Sg)
|
||||||
|
(insertObj (\\_ => rs.s ! np.a)
|
||||||
|
(insertObj (\\_ => np.s ! rs.c) (predAux auxBe))) ;
|
||||||
|
|
||||||
|
CleftAdv ad s = mkClause "it" (agrP3 Sg)
|
||||||
|
(insertObj (\\_ => conjThat ++ s.s)
|
||||||
|
(insertObj (\\_ => ad.s) (predAux auxBe))) ;
|
||||||
|
|
||||||
|
ExistNP np =
|
||||||
|
mkClause "there" (agrP3 (fromAgr np.a).n)
|
||||||
|
(insertObj (\\_ => np.s ! NPAcc) (predAux auxBe)) ;
|
||||||
|
|
||||||
|
ExistIP ip =
|
||||||
|
mkQuestion (ss (ip.s ! npNom))
|
||||||
|
(mkClause "there" (agrP3 ip.n) (predAux auxBe)) ;
|
||||||
|
|
||||||
|
ExistNPAdv np adv =
|
||||||
|
mkClause "there" (agrP3 (fromAgr np.a).n)
|
||||||
|
(insertObj (\\_ => np.s ! NPAcc ++ adv.s) (predAux auxBe)) ;
|
||||||
|
|
||||||
|
ExistIPAdv ip adv =
|
||||||
|
mkQuestion (ss (ip.s ! npNom))
|
||||||
|
(mkClause "there" (agrP3 ip.n) (insertObj (\\_ => adv.s) (predAux auxBe))) ;
|
||||||
|
|
||||||
|
ProgrVP vp = insertObj (\\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a) (predAux auxBe) ;
|
||||||
|
|
||||||
|
ImpPl1 vp = {s = "let's" ++ infVP VVAux vp Simul CPos (AgP1 Pl)} ;
|
||||||
|
|
||||||
|
ImpP3 np vp = {s = "let" ++ np.s ! NPAcc ++ infVP VVAux vp Simul CPos np.a} ;
|
||||||
|
|
||||||
|
SelfAdvVP vp = insertObj reflPron vp ;
|
||||||
|
SelfAdVVP vp = insertAdVAgr reflPron vp ;
|
||||||
|
SelfNP np = {
|
||||||
|
s = \\c => np.s ! c ++ reflPron ! np.a ;
|
||||||
|
a = np.a
|
||||||
|
} ;
|
||||||
|
} -}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
11
src/kikamba/LangKam.gf
Normal file
11
src/kikamba/LangKam.gf
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
--# -path=.:../abstract:../common:../api
|
||||||
|
|
||||||
|
concrete LangKam of Lang =
|
||||||
|
GrammarKam,
|
||||||
|
LexiconKam
|
||||||
|
-- ,ConstructionKam
|
||||||
|
** {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} ;
|
||||||
388
src/kikamba/LexiconKam.gf
Normal file
388
src/kikamba/LexiconKam.gf
Normal file
@@ -0,0 +1,388 @@
|
|||||||
|
--# -path=.:prelude
|
||||||
|
|
||||||
|
concrete LexiconKam of Lexicon = CatKam **
|
||||||
|
open ParadigmsKam,StructuralKam, Prelude in {
|
||||||
|
|
||||||
|
flags
|
||||||
|
optimize=values ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
add_V3=regV "ongela" ;
|
||||||
|
already_Adv= mkAdv "tenange" ;
|
||||||
|
animal_N=regN "nyamu" n_n ;
|
||||||
|
answer_V2S=regV "sungia" ;
|
||||||
|
ashes_N=regN "muu" mu_mi ;
|
||||||
|
ask_V2Q=regV "kulya" ;
|
||||||
|
back_N=regN "muongo" mu_mi;
|
||||||
|
bark_N=regN "ikonde" i_ma ;
|
||||||
|
become_VA=regV "ithiwa" ;
|
||||||
|
beg_V2V=regV "voya" ;
|
||||||
|
belly_N=regN "ivu" i_ma ;
|
||||||
|
bite_V2=regV "uma" ;
|
||||||
|
blood_N=regN "nthakame" n_n ;
|
||||||
|
blow_V=regV "uutana" ;
|
||||||
|
bone_N=regN "ivindi" i_ma ;
|
||||||
|
break_V2=regV "vunzya" ;
|
||||||
|
breast_N=regN "nondo" n_n;
|
||||||
|
breathe_V=regV "veva" ;
|
||||||
|
burn_V=regV "vya" ;
|
||||||
|
close_V2=regV "vinga" ;
|
||||||
|
cloud_N=regN "ithweo" i_ma ;
|
||||||
|
come_V=regV "uka" ;
|
||||||
|
count_V2=regV "tala" ;
|
||||||
|
cut_V2=regV "tema" ;
|
||||||
|
day_N=regN "muthenya" mu_mi;
|
||||||
|
die_V=regV "kw'a" ;
|
||||||
|
dig_V=regV "inza" ;
|
||||||
|
do_V2=regV "ika" ;
|
||||||
|
drink_V2=regV "nyw'a" ;
|
||||||
|
dull_A=regA "tuku" ; --- check the actual translation
|
||||||
|
dust_N=regN "kitoo" ki_i;
|
||||||
|
ear_N=regN "kutu" ku_ma;
|
||||||
|
earth_N=regN "nthi" n_n;
|
||||||
|
--easy_A2V=regV "vuthu" ;
|
||||||
|
eat_V2=regV "ya" ;
|
||||||
|
egg_N=regN "itumbi" i_ma;
|
||||||
|
fall_V=regV "valuka" ;
|
||||||
|
far_Adv=mkAdv"kuasa" ;
|
||||||
|
fat_N=regN "mauta" i_ma ;
|
||||||
|
fear_V2=regV "kia" ;
|
||||||
|
fear_VS=regV "kia" ;
|
||||||
|
feather_N=regN "iwia" i_ma ;
|
||||||
|
fight_V2=regV "ukita" ;
|
||||||
|
find_V2=regV "ona" ;
|
||||||
|
fingernail_N=regN "waa" u_n;
|
||||||
|
fire_N=regN "mwaki" mu_mi;
|
||||||
|
float_V=regV "lela" ;
|
||||||
|
flow_V=regV "nyunyuluka" ;
|
||||||
|
flower_N=regN "ilaa" i_ma;
|
||||||
|
fly_V=regV "uluka" ;
|
||||||
|
fog_N=regN "muumbi" mu_mi;
|
||||||
|
foot_N=regN "kuu" ku_ma ;
|
||||||
|
forest_N=regN "kitheka" ki_i ;
|
||||||
|
forget_V2=regV "ulwa" ;
|
||||||
|
freeze_V=regV "thitha" ;
|
||||||
|
--fun_AV=regV "uthekan'yo" ;
|
||||||
|
give_V3=regV "nengane" ;
|
||||||
|
go_V=regV "thi" ;
|
||||||
|
grass_N=regN "nyeki" n_n ;
|
||||||
|
guts_N=regN "muluku" mu_mi;
|
||||||
|
hair_N=regN "nzwii" n_n;
|
||||||
|
hand_N=iregN "kw'oko" "moko" ku_ma;
|
||||||
|
hate_V2=regV "mena" ;
|
||||||
|
head_N=regN "mutw'e" mu_mi ;
|
||||||
|
hear_V2=regV "iw'a" ;
|
||||||
|
heart_N=regN "ngoo" n_n;
|
||||||
|
hit_V2=regV "kima" ;
|
||||||
|
hold_V2=regV "kwata" ;
|
||||||
|
hope_VS=regV "ikwatye" ;
|
||||||
|
horn_N=iregN "uvya" "mbvya" u_n;
|
||||||
|
hunt_V2=regV "syima" ;
|
||||||
|
husband_N=regN "muume" mu_a ;
|
||||||
|
ice_N=iregN "ia" "maia" i_ma;
|
||||||
|
industry_N= regN "kiwanda" ki_i ;
|
||||||
|
jump_V=regV "thaanyaku" ;
|
||||||
|
kill_V2=regV "uua" ;
|
||||||
|
knee_N=regN "iu" i_ma;
|
||||||
|
know_V2=regV "manya" ;
|
||||||
|
know_VQ=regV "manya" ;
|
||||||
|
know_VS=regV "manya" ;
|
||||||
|
laugh_V=regV "theka" ;
|
||||||
|
leaf_N=regN "itu" i_ma;
|
||||||
|
learn_V2=regV "soma" ;
|
||||||
|
leather_N=regN "kithuma" ki_i;
|
||||||
|
leave_V2=regV "tia" ;
|
||||||
|
lie_V=regV "kenga" ;
|
||||||
|
like_V2=regV "enda" ;
|
||||||
|
listen_V2=regV "ithukisye" ;
|
||||||
|
live_V=regV "ithiwa thayu" ;
|
||||||
|
liver_N=regN "itema" i_ma;
|
||||||
|
lose_V2=regV "asya" ;
|
||||||
|
louse_N=regN "ndaa" n_n;
|
||||||
|
love_N=regN "wende" u_ma;
|
||||||
|
love_V2=regV "enda" ;
|
||||||
|
meat_N=regN "nyama" n_n ;
|
||||||
|
milk_N=regN "iia" i_ma;
|
||||||
|
moon_N=regN "mwei" mu_mi;
|
||||||
|
mountain_N=regN "kiima" ki_i ;
|
||||||
|
mouth_N=regN "munuka" mu_mi;
|
||||||
|
music_N=regN "wini" u_ma ;
|
||||||
|
name_N=regN "isyitwa" i_ma;
|
||||||
|
neck_N=regN "ngingo" n_n ;
|
||||||
|
newspaper_N=regN "ikaseti" i_ma ;
|
||||||
|
night_N=regN "utuku" u_ma;
|
||||||
|
nose_N=regN "inyuu" i_ma;
|
||||||
|
now_Adv=mkAdv "yuyu" ;
|
||||||
|
number_N=regN "utalo" u_ma ;
|
||||||
|
oil_N=regN "iuta" i_ma ;
|
||||||
|
open_V2=regV "vingua" ;
|
||||||
|
paint_V2A=regV "vaka langi" ;
|
||||||
|
paper_N=regN "ikalatasi" i_ma ;
|
||||||
|
peace_N=regN "muuo" mu_mi;
|
||||||
|
pen_N=regN "kiandiki" ki_i;
|
||||||
|
planet_N=regN "pulaneti" n_n;
|
||||||
|
plastic_N=regN "pulasitiki" n_n;
|
||||||
|
play_V=regV "thauka" ;
|
||||||
|
play_V2=regV "thauka" ;
|
||||||
|
policeman_N=regN "musikali wa volisi" mu_a ;
|
||||||
|
priest_N=regN "muthembi" mu_a ;
|
||||||
|
--probable_AS=regV "" ;
|
||||||
|
pull_V2=regV "kusya" ;
|
||||||
|
push_V2=regV "sukuma" ;
|
||||||
|
put_V2=regV "ikia" ;
|
||||||
|
queen_N=regN "kiveti kya musumbi" mu_a;
|
||||||
|
radio_N=regN "rendio" n_n;
|
||||||
|
rain_N=regN "mbua" n_n ;
|
||||||
|
rain_V0=regV "ua" ;
|
||||||
|
read_V2=regV "soma" ;
|
||||||
|
religion_N=regN "ndini" n_n ;
|
||||||
|
restaurant_N=regN "uteli" n_n ;
|
||||||
|
river_N=regN "usi" u_n ;
|
||||||
|
road_N=regN "nzia" n_n ;
|
||||||
|
rock_N=regN "ivia" i_ma;
|
||||||
|
roof_N=regN "kiala" ki_i ;
|
||||||
|
root_N=regN "mui" mu_mi ;
|
||||||
|
rope_N=regN "mukwa" mu_mi;
|
||||||
|
rub_V2=regV "kiitha" ;
|
||||||
|
rubber_N=regN "kivuti" ki_i ;
|
||||||
|
run_V=regV "sema" ;
|
||||||
|
salt_N=regN "munyu" mu_mi;
|
||||||
|
sand_N=regN "kithangathi" ki_i;
|
||||||
|
say_VS=regV "asya" ;
|
||||||
|
school_N=regN "sukulu" n_n;
|
||||||
|
science_N=regN "sayasi" n_n ;
|
||||||
|
scratch_V2=regV "thua" ;
|
||||||
|
sea_N=regN "ukanga" u_ma;
|
||||||
|
see_V2=regV "ona" ;
|
||||||
|
seed_N=regN "mbeu" n_n ;
|
||||||
|
seek_V2=regV "mantha" ;
|
||||||
|
sell_V3=regV "thoosya" ;
|
||||||
|
send_V3=regV "tuma" ;
|
||||||
|
sew_V=regV "tuma" ;
|
||||||
|
sheep_N=regN "ilondu" i_ma;
|
||||||
|
ship_N=regN "ngalawa" n_n ;
|
||||||
|
shoe_N=regN "kiatu" ki_i;
|
||||||
|
shop_N=regN "nduka" n_n ;
|
||||||
|
silver_N=iregN "vetha" "vetha" u_n;
|
||||||
|
sing_V=regV "ina" ;
|
||||||
|
sister_N=regN "mwiitu-a-inya" mu_a;
|
||||||
|
sit_V=regV "ikala" ;
|
||||||
|
skin_N=regN "kikonde" i_ma;
|
||||||
|
sky_N=regN "yayaya" i_ma ;
|
||||||
|
sleep_V=regV "koma" ;
|
||||||
|
smell_V=regV "nyunga" ;
|
||||||
|
smoke_N=regN "syuki" i_ma;
|
||||||
|
snake_N=regN "nzoka" n_n ;
|
||||||
|
snow_N=iregN "ia""maia" i_ma;
|
||||||
|
sock_N=regN "sokisi" n_n;
|
||||||
|
song_N=iregN "wathi" "mbathi" u_n;
|
||||||
|
speak_V2=regV "neena" ;
|
||||||
|
spit_V=regV "tw'ila" ;
|
||||||
|
split_V2=regV "tilany'a" ;
|
||||||
|
squeeze_V2=regV "mitua" ;
|
||||||
|
stab_V2=regV "tonya" ;
|
||||||
|
stand_V=regV "ungama" ;
|
||||||
|
star_N=regN "ndata" n_n;
|
||||||
|
steel_N=regN "kiaa" ki_i;
|
||||||
|
stick_N=regN "munzyu" mu_mi ;
|
||||||
|
stone_N=regN "ivia" i_ma;
|
||||||
|
stop_V=regV "ungama" ;
|
||||||
|
stove_N=iregN "iko" "maiko" i_ma;
|
||||||
|
student_N=regN "musomi" mu_a ;
|
||||||
|
suck_V2=regV "mumunya" ;
|
||||||
|
sun_N=regN "syua" i_ma;
|
||||||
|
swell_V=regV "imba" ;
|
||||||
|
swim_V=regV "thambia" ;
|
||||||
|
switch8off_V2=regV "vosya" ;
|
||||||
|
switch8on_V2=regV "kwatya" ;
|
||||||
|
table_N=regN "mesa" n_n ;
|
||||||
|
tail_N=regN "mwithe" mu_mi ;
|
||||||
|
talk_V3=regV "neena" ;
|
||||||
|
teacher_N=regN "mumanyisya" mu_a ;
|
||||||
|
television_N=regN "televesini" n_n ;
|
||||||
|
think_V=regV "suania" ;
|
||||||
|
tie_V2=regV "ova" ;
|
||||||
|
tongue_N=regN "uimi" u_ma ;
|
||||||
|
train_N=iregN "ngali ya mwaki" "ngali sya mwaki" n_n ;
|
||||||
|
travel_V=regV "thi" ;
|
||||||
|
turn_V=regV "alyula" ;
|
||||||
|
understand_V2=regV "elewa" ;
|
||||||
|
university_N=regN "nyunivasiti" n_n;
|
||||||
|
village_N=regN "ndua" n_n ;
|
||||||
|
vomit_V=regV "tavika" ;
|
||||||
|
wait_V2=regV "eteela" ;
|
||||||
|
walk_V=regV "tembea" ;
|
||||||
|
war_N=regN "kau" u_ma;
|
||||||
|
wash_V2=regV"thamba" ;
|
||||||
|
watch_V2=regV "syaiisya" ;
|
||||||
|
water_N=regN "kiwu" ki_i;
|
||||||
|
wide_A=regA "aamu" ;
|
||||||
|
win_V2=regV "shinda" ;
|
||||||
|
wind_N=regN "kiseve" ki_i;
|
||||||
|
window_N=regN "mbuthi" n_n;
|
||||||
|
wine_N=regN "mbinyu" n_n ;
|
||||||
|
wing_N=regN "uthwau" u_ma;
|
||||||
|
leg_N = regN "kuu" ku_ma;
|
||||||
|
wipe_V2=regV "vangula" ;
|
||||||
|
wonder_VQ=regV "senga" ;
|
||||||
|
wood_N=iregN "uku" "nguku" u_n;
|
||||||
|
write_V2=regV "andika" ;
|
||||||
|
year_N=regN "mwaka" mu_mi;
|
||||||
|
hill_N =regN "kiima" ki_i;
|
||||||
|
king_N= regN "musumbi" mu_a;
|
||||||
|
brother_N2 = mkN2 (mkN "mwana inya" mu_a) ;
|
||||||
|
father_N2 = mkN2 (mkN "nau" "nau"mu_a) mkPrepof ;
|
||||||
|
mother_N2 = mkN2 (mkN "mwaitu" mu_a) mkPrepof;
|
||||||
|
person_N = regN "mundu" mu_a ;
|
||||||
|
woman_N =regN "kiveti" ki_i ;
|
||||||
|
house_N = regN "nyumba" n_n ;
|
||||||
|
tree_N = regN "muti" mu_mi ;
|
||||||
|
big_A = regA "nene" ;
|
||||||
|
beautiful_A = regA "nake" ;
|
||||||
|
black_A = regA "iu" ;
|
||||||
|
|
||||||
|
broad_A = regA "amu" ;
|
||||||
|
brown_A = cregA " kaki" ;
|
||||||
|
clean_A = regA "theu" ;
|
||||||
|
clever_A = regA "ui" ;
|
||||||
|
cold_A = regA "thithu" ;
|
||||||
|
correct_A = regA "seo" ;
|
||||||
|
dry_A = regA "nyau" ;
|
||||||
|
full_A = regA "usuu" ;
|
||||||
|
good_A = regA "seo" ;
|
||||||
|
heavy_A = regA "ito" ;
|
||||||
|
important_A = regA "vata" ;
|
||||||
|
long_A = regA "asa" ;
|
||||||
|
narrow_A = regA "theke" ;
|
||||||
|
near_A = regA "kuvi" ;
|
||||||
|
new_A = regA "sau" ;
|
||||||
|
old_A = regA "kuu" ;
|
||||||
|
red_A = regA "tune" ;
|
||||||
|
rotten_A = regA "oou" ;
|
||||||
|
round_A = regA "thyululu" ;
|
||||||
|
sharp_A = regA "ui" ;
|
||||||
|
short_A = regA "kuvi";
|
||||||
|
smooth_A = regA "mbinyu" ;
|
||||||
|
straight_A = regA "laini" ;
|
||||||
|
stupid_A = regA "tumanu" ;
|
||||||
|
thick_A = regA "amu" ;
|
||||||
|
thin_A = regA "theke" ;
|
||||||
|
ugly_A = regA "thuku" ;
|
||||||
|
warm_A = regA "utea" ;
|
||||||
|
wet_A = regA "iu" ;
|
||||||
|
white_A = regA "eu" ;
|
||||||
|
yellow_A = cregA "nyelo" ;
|
||||||
|
young_A = regA "nini";
|
||||||
|
|
||||||
|
small_A = regA "nini" ;
|
||||||
|
shirt_N= iregN "sati" "sati" n_n;
|
||||||
|
cow_N = regN "ngombe" n_n ;
|
||||||
|
doctor_N = regN "muiiti" mu_a ;
|
||||||
|
dog_N = regN "ngiti" n_n ;
|
||||||
|
door_N = regN " muomo" mu_mi ;
|
||||||
|
enemy_N = regN "muthiny'a" mu_a ;
|
||||||
|
fish_N = regN "ikuyu" i_ma ;
|
||||||
|
friend_N = regN "munyanya" mu_a ;
|
||||||
|
garden_N = regN "muunda" mu_mi ;
|
||||||
|
girl_N = regN "mwiitu" mu_a ;
|
||||||
|
lamp_N = iregN "taa" "taa" n_n ;
|
||||||
|
man_N = regN " muume" mu_a ;
|
||||||
|
eye_N = regN "iitho" i_ma ;
|
||||||
|
tooth_N = regN "ieo" i_ma ;
|
||||||
|
wife_N = regN "muka" mu_a ;
|
||||||
|
left_Ord = mkOrd "kwoko kwa aka" ;
|
||||||
|
right_Ord = mkOrd "lungalu" |mkOrd "ailu" ;
|
||||||
|
grammar_N = regN "ngulama" n_n ;
|
||||||
|
language_N = regN "kithiomo" ki_i ;
|
||||||
|
rule_N = regN "mwiao" mu_mi ;
|
||||||
|
married_A2 = mkA2 (regA "twae") "ni" ;
|
||||||
|
airplane_N = regN "ndeke" n_n;
|
||||||
|
alas_Interj = ss "asi" ;
|
||||||
|
answer_V2S = regV "sungia" ;
|
||||||
|
apartment_N = regN "nyumba" n_n;
|
||||||
|
apple_N = regN "avuu" i_ma ;
|
||||||
|
art_N = regN "ithaa" i_ma ;
|
||||||
|
ask_V2Q = regV "kulya" ;
|
||||||
|
baby_N = regN "kana" ka_tu;
|
||||||
|
bad_A = regA "thuku" ;
|
||||||
|
bank_N = regN "vengi" n_n ;
|
||||||
|
beer_N = regN "nzovi" n_n ;
|
||||||
|
big_A = regA "nene" ;
|
||||||
|
bike_N = regN "kisululu" ki_i ;
|
||||||
|
bird_N = regN "nyunyi" n_n;
|
||||||
|
black_A = regA "iu" ;
|
||||||
|
blue_A = cregA "waiyu" ;
|
||||||
|
boat_N = regN "italu" i_ma;
|
||||||
|
book_N = regN "ivuku" i_ma ;
|
||||||
|
boot_N = regN "mbuti" n_n ;
|
||||||
|
boss_N = regN "munene" mu_a ;
|
||||||
|
boy_N = regN "kivisi" ki_i ;
|
||||||
|
bread_N = regN "mukate" mu_mi ;
|
||||||
|
butter_N = regN "kimoesyo" ki_i ;
|
||||||
|
buy_V2 = regV "ua" ;
|
||||||
|
camera_N = regN "kamela" n_n;
|
||||||
|
cap_N = regN "kakovila" ka_tu ;
|
||||||
|
car_N = regN "mutokaa" mu_mi ;
|
||||||
|
carpet_N = regN "mukeka" mu_mi ;
|
||||||
|
cat_N = regN "mbaka" n_n ;
|
||||||
|
ceiling_N = regN "kisumba" ki_i ;
|
||||||
|
chair_N = regN "kivila" ki_i ;
|
||||||
|
cheese_N = regN "iuta" i_ma ;
|
||||||
|
child_N = iregN "mwana" "syana" mu_a ;
|
||||||
|
church_N = regN "ikanisa" i_ma;
|
||||||
|
city_N = regN "musyi" mu_mi;
|
||||||
|
clean_A = regA "theu" ;
|
||||||
|
clever_A = regA "ui" ;
|
||||||
|
coat_N = regN "ikoti" i_ma;
|
||||||
|
computer_N = regN "kombyuta" n_n ;
|
||||||
|
country_N = regN "nthi" n_n;
|
||||||
|
cousin_N = regN "mwendw'asa" mu_a | regN "mwana a mwendya" mu_a ;
|
||||||
|
dirty_A = iregA "kiko" "kiko" ;
|
||||||
|
dog_N = regN "ngiti" n_n;
|
||||||
|
empty_A = regA "thei" ;
|
||||||
|
factory_N = regN "kithii" ki_i ;
|
||||||
|
fish_N = regN "ikuyu" i_ma ;
|
||||||
|
floor_N = iregN "nginyo" "nginyo" n_n ;
|
||||||
|
fridge_N = regN "frinji" n_n ;
|
||||||
|
friend_N = regN "munyanya"mu_a ;
|
||||||
|
fruit_N = regN "itunda" i_ma ;
|
||||||
|
--fun_AV = mkAV (regA "fun") ;
|
||||||
|
garden_N = regN "muunda" mu_mi;
|
||||||
|
girl_N = regN "mwiitu" mu_a ;
|
||||||
|
glove_N = regN "ngloovu" n_n;
|
||||||
|
gold_N = regN "thaavu" n_n;
|
||||||
|
good_A = regA "seo" ;
|
||||||
|
green_A = cregA "matu" ;
|
||||||
|
harbour_N = regN "kilindi" ki_i ;
|
||||||
|
hat_N = regN "ngovia" n_n;
|
||||||
|
hill_N = regN "kiima" ki_i;
|
||||||
|
horse_N = regN "mbalasi" n_n ;
|
||||||
|
hot_A = regA "latiku" ;
|
||||||
|
house_N = regN "nyumba" n_n;
|
||||||
|
important_A = regA "vata" ;--check
|
||||||
|
iron_N = regN "kyuma" ki_i ;
|
||||||
|
lake_N = regN "ia" i_ma;
|
||||||
|
teach_V2 = regV "somethya";
|
||||||
|
throw_V2 = regV "isya";
|
||||||
|
|
||||||
|
|
||||||
|
-- added 4/6/2007
|
||||||
|
paris_PN = regPN "Paris" va_ku ; -- this is alreay name of place avoid kwa
|
||||||
|
john_PN = regPN "Yoana" mu_a ;
|
||||||
|
question_N = regN "Ikulyo" i_ma ;
|
||||||
|
ready_A = regA "ready" ;
|
||||||
|
reason_N = regN "kitumi" ki_i ;
|
||||||
|
today_Adv = mkAdv "umuthi" ;
|
||||||
|
uncertain_A = regA "uncertain" ;
|
||||||
|
distance_N3 = mkN3 (mkN "muendo" mu_mi ) fromP toP ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
aboutP = mkPrep "undu wa" ;
|
||||||
|
atP = mkPrep "vala ve" ;
|
||||||
|
forP = mkPrep "for" ;
|
||||||
|
fromP = mkPrep "kuma" ;
|
||||||
|
inP = mkPrep "thini" ;
|
||||||
|
onP = mkPrep "iulu" ;
|
||||||
|
toP = mkPrep "kuvika" ;
|
||||||
|
-- ofp = possess_Prep.sp ;
|
||||||
|
} ;
|
||||||
434
src/kikamba/MorphoKam.gf
Normal file
434
src/kikamba/MorphoKam.gf
Normal file
@@ -0,0 +1,434 @@
|
|||||||
|
--# -path=.:../../prelude
|
||||||
|
|
||||||
|
--Kikamba Resource Morphology
|
||||||
|
--
|
||||||
|
-- Benson Kituku 2017 -- 2018
|
||||||
|
|
||||||
|
resource MorphoKam = CommonBantu ,ResKam ** open Prelude, Predef
|
||||||
|
in {
|
||||||
|
|
||||||
|
flags optimize=all ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
mkDet: (i, mine : Str) -> Number -> {s : DetForm => Str ; n : Number} =
|
||||||
|
\i,mine, m ->
|
||||||
|
{ s = table {
|
||||||
|
Sub => i;
|
||||||
|
Obj g => Detprefix g + mine} ;
|
||||||
|
n = m } ;
|
||||||
|
|
||||||
|
|
||||||
|
Detsomesgprefix : Gender -> Str = \g ->
|
||||||
|
case <g> of {
|
||||||
|
<G1> |<G2> |<G8> |<G9> => "u" ;
|
||||||
|
<G3> => "yi" ;
|
||||||
|
<G4> => "ki" ;
|
||||||
|
<G5> => "ka" ;
|
||||||
|
<G10> => "ku" ;
|
||||||
|
<G6> => "va" ;
|
||||||
|
<G7> => "i"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Detsomeplprefix : Gender -> Str = \g ->
|
||||||
|
case <g> of {
|
||||||
|
<G1> |<G3> |<G8> |<G10> => "a" ;
|
||||||
|
<G2> => "i" ;
|
||||||
|
<G4> => "i" ;
|
||||||
|
<G5> => "tu" ;
|
||||||
|
<G6> => "ku" ;
|
||||||
|
<G7> | <G9> => "i"
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mkNum : Str -> Str -> Str -> Str -> {s : DForm => CardOrd => Gender => Str} =
|
||||||
|
\two, twelve, twenty, second ->
|
||||||
|
{s = table {
|
||||||
|
unit => table {NCard =>\\g => Cardprefix g + two ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ second} ;
|
||||||
|
teen => table {NCard =>\\g =>"ikumi na" ++ twelve ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ "ikumi na" ++ twelve} ;
|
||||||
|
ten => table {NCard =>\\g =>"miongo " ++ twelve ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ "miongo" ++ twelve};
|
||||||
|
hund => table {NCard =>\\g =>"maana " ++ twenty ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ "maana" ++ twenty}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkNumn : Str -> Str -> Str -> Str -> {s : DForm => CardOrd => Gender => Str} =
|
||||||
|
\two, twelve, twenty, second ->
|
||||||
|
{s = table {
|
||||||
|
unit => table {NCard =>\\g => Cardtwoprefix g + two ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ second} ;
|
||||||
|
teen => table {NCard =>\\g =>"ikumi na" ++ twelve ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ "ikumi na" ++ twelve} ;
|
||||||
|
ten => table {NCard =>\\g =>"miongo " ++ twelve ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ "miongo" ++ twelve};
|
||||||
|
hund => table {NCard =>\\g =>"maana " ++ twenty ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ "maana" ++ twenty}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkNume : Str -> Str -> Str -> {s : DForm => CardOrd => Gender => Str} =
|
||||||
|
\two, twenty, second ->
|
||||||
|
{s = table {
|
||||||
|
unit => table {NCard =>\\g => Cardoneprefix g + two ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ second} ;
|
||||||
|
teen => table {NCard =>\\g =>"ikumi na" ++ Cardoneprefix g + two ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ "ikumi na" ++ Cardoneprefix g + two} ;
|
||||||
|
ten => table {NCard =>\\g =>"ikumi" ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ "ikumi"};
|
||||||
|
hund => table {NCard =>\\g =>"yiana " ++ twenty ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ "yiana" ++ twenty}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
regNum : Str -> {s : DForm => CardOrd => Gender => Str} =
|
||||||
|
\six -> {s = table {
|
||||||
|
unit => table {NCard =>\\g => six ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ six} ;
|
||||||
|
teen => table {NCard =>\\g =>"ikumi na" ++ six ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ "ikumi na" ++ six} ;
|
||||||
|
ten => table {NCard =>\\g =>"miongo " ++ six ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ "miongo" ++ six};
|
||||||
|
hund => table {NCard =>\\g =>"maana " ++ six ;
|
||||||
|
NOrd => \\g => Ordprefix g ++ "maana" ++ six}
|
||||||
|
} } ;
|
||||||
|
|
||||||
|
|
||||||
|
regCardOrd : Str -> {s : CardOrd => Gender => Str} = \ten ->
|
||||||
|
{s = table {NCard => \\g => ten ;
|
||||||
|
NOrd =>\\g => Ordprefix g ++ ten } } ;
|
||||||
|
|
||||||
|
regCardone : Str -> Str -> {s : CardOrd => Gender => Str} = \ten,one ->
|
||||||
|
{s = table {NCard => \\g => ten ++ Cardoneprefix g + one ;
|
||||||
|
NOrd =>\\g => Ordprefix g ++ ten ++ Cardoneprefix g + one } } ;
|
||||||
|
|
||||||
|
mkCard : CardOrd -> Str -> Gender => Str = \o,ten ->
|
||||||
|
(regCardOrd ten).s ! o ;
|
||||||
|
|
||||||
|
|
||||||
|
regN : Str ->Gender -> Noun = \w, g -> let wpl = case g of {
|
||||||
|
G1=>case w of {
|
||||||
|
"mwa" + _ => Predef.drop 2 w ;
|
||||||
|
"mwi" + _ => "e" + Predef.drop 3 w ;
|
||||||
|
_ => PrefixPlNom G1 + Predef.drop 2 w };
|
||||||
|
|
||||||
|
G2=>case w of {
|
||||||
|
"mw" + _ => "my" + Predef.drop 2 w ;
|
||||||
|
_ => PrefixPlNom G2 + Predef.drop 2 w };
|
||||||
|
G3 => PrefixPlNom G3 + Predef.drop 1 w;
|
||||||
|
G4=> case w of {
|
||||||
|
"ky" + _ => "sy" + Predef.drop 2 w ;
|
||||||
|
_ => PrefixPlNom G4 + Predef.drop 2 w };
|
||||||
|
G5 => PrefixPlNom G5 + Predef.drop 2 w;
|
||||||
|
G6 => PrefixPlNom G6 + Predef.drop 2 w;
|
||||||
|
G8 => PrefixPlNom G8 + w;
|
||||||
|
G9 => PrefixPlNom G9 + w ;
|
||||||
|
G10 => PrefixPlNom G10 + Predef.drop 2 w;
|
||||||
|
G7 => w };
|
||||||
|
in iregN w wpl g ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
iregN :Str-> Str ->Gender -> Noun= \man,men,g -> { -- for irregular noun
|
||||||
|
s = table{Sg => table{Nom => man ;
|
||||||
|
Loc=> man + "ni" | men + "ni" };
|
||||||
|
Pl => table{Nom => men ; Loc=> ""}} ;
|
||||||
|
g = g
|
||||||
|
} ;
|
||||||
|
regA:Str -> {s : AForm => Str} = \seo -> {s = table {
|
||||||
|
AAdj G1 Sg=>case Predef.take 1 seo of {
|
||||||
|
"a"|"e"|"i"|"o" => "mw" + seo;
|
||||||
|
"u" => "m" + seo;
|
||||||
|
_ => ConsonantAdjprefix G1 Sg + seo };
|
||||||
|
AAdj G1 Pl =>case Predef.take 1 seo of {
|
||||||
|
"u" => "o" + Predef.drop 1 seo;
|
||||||
|
_ => ConsonantAdjprefix G1 Pl + seo };
|
||||||
|
|
||||||
|
AAdj G2 Sg=>case Predef.take 1 seo of {
|
||||||
|
"i" => "mw" + seo;
|
||||||
|
"a" => "my" + seo;
|
||||||
|
"u" => "m" + seo;
|
||||||
|
_ => ConsonantAdjprefix G2 Sg + seo };
|
||||||
|
AAdj G2 Pl =>case Predef.take 1 seo of {
|
||||||
|
"u" => "my" + seo;
|
||||||
|
"i" => "m" + seo;
|
||||||
|
_ => ConsonantAdjprefix G2 Pl + seo };
|
||||||
|
|
||||||
|
AAdj G3 Sg=>case Predef.take 1 seo of {
|
||||||
|
"i"|"u" => "y" + seo;
|
||||||
|
"a" => "yi" + seo;
|
||||||
|
_ => ConsonantAdjprefix G3 Sg + seo };
|
||||||
|
AAdj G3 Pl =>case Predef.take 1 seo of {
|
||||||
|
"u" => "mo"+ Predef.drop 1 seo;
|
||||||
|
_ => ConsonantAdjprefix G3 Pl + seo };
|
||||||
|
|
||||||
|
|
||||||
|
AAdj G4 Sg=>case Predef.take 1 seo of {
|
||||||
|
"i" => "k" + seo;
|
||||||
|
"u" |"a" => "ky" + seo;
|
||||||
|
_ => ConsonantAdjprefix G4 Sg + seo };
|
||||||
|
AAdj G4 Pl =>case Predef.take 1 seo of {
|
||||||
|
"u" => "mb"+ seo;
|
||||||
|
"i" => "sy" + seo;
|
||||||
|
"a" => "nd" + seo;
|
||||||
|
_ => ConsonantAdjprefix G4 Pl + seo };
|
||||||
|
AAdj G5 Sg=>case Predef.take 1 seo of {
|
||||||
|
"u" => "ko" + Predef.drop 1 seo;
|
||||||
|
_ => ConsonantAdjprefix G5 Sg + seo };
|
||||||
|
AAdj G5 Pl =>case Predef.take 1 seo of {
|
||||||
|
"u" => "t"+ seo;
|
||||||
|
"a" | "i" => "tw" + seo;
|
||||||
|
_ => ConsonantAdjprefix G5 Pl + seo };
|
||||||
|
|
||||||
|
AAdj G6 Sg=>case Predef.take 1 seo of {
|
||||||
|
"u" => "vo" + Predef.drop 1 seo;
|
||||||
|
_ => ConsonantAdjprefix G6 Sg + seo };
|
||||||
|
AAdj G6 Pl =>case Predef.take 1 seo of {
|
||||||
|
"u" => "k" + seo;
|
||||||
|
"i"|"a" => "kw" + seo;
|
||||||
|
_ => ConsonantAdjprefix G6 Pl + seo };
|
||||||
|
|
||||||
|
AAdj G7 n =>case Predef.take 1 seo of {
|
||||||
|
"s" |"i" => "nz" + seo;
|
||||||
|
"v" | "u" => "mb" + seo;
|
||||||
|
"k" => "ng" + seo;
|
||||||
|
"t" | "a" => "nd" + Predef.drop 1 seo;
|
||||||
|
_ => ConsonantAdjprefix G7 n + seo };
|
||||||
|
|
||||||
|
AAdj G9 Pl =>case Predef.take 1 seo of {
|
||||||
|
"s" |"i" => "nz" + seo;
|
||||||
|
"v" | "u" => "mb" + seo;
|
||||||
|
"k" => "ng" + seo;
|
||||||
|
"t" | "a" => "nd" + Predef.drop 1 seo;
|
||||||
|
_ => ConsonantAdjprefix G9 Pl + seo };
|
||||||
|
AAdj G10 Sg =>case Predef.take 1 seo of {
|
||||||
|
"u" => "k" + seo;
|
||||||
|
"i"|"a" => "kw" + seo;
|
||||||
|
_ => ConsonantAdjprefix G10 Sg + seo };
|
||||||
|
|
||||||
|
AAdj g Pl =>case Predef.take 1 seo of {
|
||||||
|
"u" => "mo" + Predef.drop 1 seo;
|
||||||
|
_ => ConsonantAdjprefix g Pl + seo };
|
||||||
|
AAdj g Sg=>case Predef.take 1 seo of {
|
||||||
|
"i" => "mw" + seo;
|
||||||
|
"a" => "my" + seo;
|
||||||
|
"u" => "m" + seo;
|
||||||
|
_ => ConsonantAdjprefix g Sg + seo };
|
||||||
|
AComp G1 Sg=>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"a"|"e"|"i"|"o" => "mw" + seo;
|
||||||
|
"u" => "m" + seo;
|
||||||
|
_ => ConsonantAdjprefix G1 Sg + seo };
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
AComp G1 Pl =>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"u" => "o" + Predef.drop 1 seo;
|
||||||
|
_ => ConsonantAdjprefix G1 Pl + seo }
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
|
||||||
|
|
||||||
|
AComp G2 Sg=>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"i" => "mw" + seo;
|
||||||
|
"a" => "my" + seo;
|
||||||
|
"u" => "m" + seo;
|
||||||
|
_ => ConsonantAdjprefix G2 Sg + seo };
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
AComp G2 Pl =>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"u" => "my" + seo;
|
||||||
|
"i" => "m" + seo;
|
||||||
|
_ => ConsonantAdjprefix G2 Pl + seo }
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
|
||||||
|
AComp G3 Sg=>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"i"|"u" => "y" + seo;
|
||||||
|
"a" => "yi" + seo;
|
||||||
|
_ => ConsonantAdjprefix G3 Sg + seo };
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
AComp G3 Pl =>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"u" => "mo"+ Predef.drop 1 seo;
|
||||||
|
_ => ConsonantAdjprefix G3 Pl + seo }
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
|
||||||
|
AComp G4 Sg=>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"i" => "k" + seo;
|
||||||
|
"u" => "ky" + seo;
|
||||||
|
_ => ConsonantAdjprefix G4 Sg + seo };
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
AComp G4 Pl =>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"u" => "mb"+ seo;
|
||||||
|
"i" => "sy" + seo;
|
||||||
|
"a" => "nd" + seo;
|
||||||
|
_ => ConsonantAdjprefix G4 Pl + seo }
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
AComp G5 Sg=>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"u" => "ko" + Predef.drop 1 seo;
|
||||||
|
_ => ConsonantAdjprefix G5 Sg + seo };
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
AComp G5 Pl =>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"u" => "t"+ seo;
|
||||||
|
"a" | "i" => "tw" + seo;
|
||||||
|
_ => ConsonantAdjprefix G5 Pl + seo }
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
|
||||||
|
AComp G6 Sg=>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"u" => "vo" + Predef.drop 1 seo;
|
||||||
|
_ => ConsonantAdjprefix G6 Sg + seo };
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
AComp G6 Pl =>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"u" => "k" + seo;
|
||||||
|
"i"|"a" => "kw" + seo;
|
||||||
|
_ => ConsonantAdjprefix G6 Pl + seo }
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
|
||||||
|
AComp G7 n =>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"s" |"i" => "nz" + seo;
|
||||||
|
"v" | "u" => "mb" + seo;
|
||||||
|
"k" => "ng" + seo;
|
||||||
|
"t" | "a" => "nd" + seo;
|
||||||
|
_ => ConsonantAdjprefix G7 n + seo };
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
|
||||||
|
AComp G9 Pl =>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"s" |"i" => "nz" + seo;
|
||||||
|
"v" | "u" => "mb" + seo;
|
||||||
|
"k" => "ng" + seo;
|
||||||
|
"t" | "a" => "nd" + seo;
|
||||||
|
_ => ConsonantAdjprefix G9 Pl + seo };
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
AComp G10 Sg =>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"u" => "k" + seo;
|
||||||
|
"i"|"a" => "kw" + seo;
|
||||||
|
_ => ConsonantAdjprefix G10 Sg + seo }
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
AComp g Pl => let af : Str = case Predef.take 1 seo of {
|
||||||
|
"u" => "mo" + Predef.drop 1 seo;
|
||||||
|
_ => ConsonantAdjprefix g Pl + seo }
|
||||||
|
in init af + "ang" + last af;
|
||||||
|
|
||||||
|
AComp g Sg=>let af : Str = case Predef.take 1 seo of {
|
||||||
|
"i" => "mw" + seo;
|
||||||
|
"a" => "my" + seo;
|
||||||
|
"u" => "m" + seo;
|
||||||
|
_ => ConsonantAdjprefix g Sg + seo };
|
||||||
|
in init af + "ang" + last af
|
||||||
|
|
||||||
|
} };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
iregA : Str-> Str -> {s : AForm => Str} = \seo,seoo -> {
|
||||||
|
s = table {
|
||||||
|
AAdj g Sg => seo;
|
||||||
|
AAdj g Pl=> seoo ;
|
||||||
|
AComp g Sg => init seo + "ang" + last seo;
|
||||||
|
AComp g Pl => init seoo + "ang" + last seoo}
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|
||||||
|
--regular expression for adjective colours
|
||||||
|
cregA : Str-> {s : AForm => Str} = \seo -> {
|
||||||
|
s = table {
|
||||||
|
AAdj g Sg => ProunSgprefix g + "a" ++"langi" ++"wa" ++ seo;
|
||||||
|
AAdj g Pl=> ProunPlprefix g + "a" ++"langi" ++"wa" ++ seo;
|
||||||
|
AComp g n => ""} } ;
|
||||||
|
|
||||||
|
regV : Str -> Verb =
|
||||||
|
\vika -> {
|
||||||
|
s = table{ True => table{
|
||||||
|
VInf => vika;
|
||||||
|
VPres g n p => Verbprefix g n p + vika;
|
||||||
|
VPast g n p => Verbprefix g n p + init vika + "ie" ;
|
||||||
|
VFut g n p => Verbfutureprefix g n p + vika
|
||||||
|
} ;
|
||||||
|
False =>table {
|
||||||
|
VInf => "ndi" + vika;
|
||||||
|
VPres g n p => neg (Ag g n p) False Pres + "na" + vika ;
|
||||||
|
VPast g n p => neg (Ag g n p) False Past + "ne" + vika ;
|
||||||
|
VFut g n p => neg (Ag g n p) False Fut + "ka" + vika
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
neg : Agr -> Bool ->Tense -> Str = \a,b,t -> let
|
||||||
|
g = getGender a;
|
||||||
|
n=getNumber a;
|
||||||
|
p=getPerson a
|
||||||
|
in case b of {True => [] ; False => negprefix g n t p} ;
|
||||||
|
|
||||||
|
negprefix : Gender -> Number -> Tense -> Person -> Str =\g,n,t,p-> case <g,n,t,p> of {
|
||||||
|
<G1,Sg,_,P1> => "ndi";
|
||||||
|
<G1,Sg,_,P2> => "ndu";
|
||||||
|
<G1,Sg,_,P3> => "ndu";
|
||||||
|
<G1,Pl,_,P1> => "twi";
|
||||||
|
<G1,Pl,_,P2> => "mwi";
|
||||||
|
<G1,Pl,_,P3> => "mai";
|
||||||
|
<G2,Sg,_,_> => "ndu";
|
||||||
|
<G2,Pl,_,_> => "i";
|
||||||
|
<G3,Sg,_,_> => "i";
|
||||||
|
<G3,Pl,_,_> => "mai";
|
||||||
|
<G4,Sg,_,_> => "ki";
|
||||||
|
<G4,Pl,_,_> => "i";
|
||||||
|
<G5,Sg,_,_> => "kai";
|
||||||
|
<G5,Pl,_,_> => "tui";
|
||||||
|
<G6,Sg,_,_> => "vai";
|
||||||
|
<G6,Pl,_,_> => "kui";
|
||||||
|
<G7,Sg,_,_> => "i";
|
||||||
|
<_,_,_,_> => "syi"
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Verbprefix : Gender -> Number -> Person -> Str = \g, n, p ->
|
||||||
|
case <g,n,p> of {
|
||||||
|
<G1,Sg,P1> => "na" ;
|
||||||
|
<G1,Sg,P2> => "wa" ;
|
||||||
|
<G1,Sg,P3> => "wa" ;
|
||||||
|
<G1,Pl,P1> => "twa" ;
|
||||||
|
<G1,Pl,P2> => "mwa" ;
|
||||||
|
<G1,Pl,P3> => "ma" ;
|
||||||
|
<G2,Sg,_> => "wa" ;
|
||||||
|
<G2,Pl, _> => "ya" ;
|
||||||
|
<G4,Sg,_> => "kya" ;
|
||||||
|
<G4,Pl,_> => "sya" ;
|
||||||
|
<G3,Sg,_> => "ya" ;
|
||||||
|
<G3,Pl,_> => "ma" ;
|
||||||
|
<G5,Sg,_> => "ka" ;
|
||||||
|
<G5,Pl,_> => "twa" ;
|
||||||
|
<G6,Sg,_> => "va" ;
|
||||||
|
<G6,Pl,_> => "kwa" ;
|
||||||
|
<_,Sg,_> => "ya" ;
|
||||||
|
<_,Pl,_> => "sya"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Verbfutureprefix : Gender -> Number -> Person -> Str = \g, n, p ->
|
||||||
|
case <g,n,p> of {
|
||||||
|
<G1,Sg,P1> => "nga" ;
|
||||||
|
<G1,Sg,P2> => "uka" ;
|
||||||
|
<G1,Sg,P3> => "uka" ;
|
||||||
|
<G1,Pl,P1> => "tuka" ;
|
||||||
|
<G1,Pl,P2> => "muka" ;
|
||||||
|
<G1,Pl,P3> => "maka" ;
|
||||||
|
<G2,Sg,_> => "uka" ;
|
||||||
|
<G2,Pl, _> => "ika" ;
|
||||||
|
<G4,Sg,_> => "kika" ;
|
||||||
|
<G4,Pl,_> => "ika" ;
|
||||||
|
<G3,Sg,_> => "ika" ;
|
||||||
|
<G3,Pl,_> => "maka" ;
|
||||||
|
<G5,Sg,_> => "kaka" ;
|
||||||
|
<G5,Pl,_> => "tuka" ;
|
||||||
|
<G6,Sg,_> => "vaka" ;
|
||||||
|
<G6,Pl,_> => "kuka" ;
|
||||||
|
<_,Sg,_> => "ika" ;
|
||||||
|
<_,Pl,_> => "ika"
|
||||||
|
} ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
2
src/kikamba/NounKam.gf
Normal file
2
src/kikamba/NounKam.gf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
concrete NounKam of Noun = CatKam **
|
||||||
|
NounBantu with (Structural = StructuralKam), (ResBantu = ResKam) ;
|
||||||
85
src/kikamba/NumeralKam.gf
Normal file
85
src/kikamba/NumeralKam.gf
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
concrete NumeralKam of Numeral = CatKam [Numeral,Digits] ** open Prelude,CommonBantu,DiffKam, MorphoKam in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
Digit = {s : DForm => CardOrd => Gender => Str} ;
|
||||||
|
Sub10 = {s : DForm => CardOrd => Gender => Str ; n : Number} ;
|
||||||
|
Sub100 = {s : CardOrd => Gender => Str ; n : Number} ;
|
||||||
|
Sub1000 = {s : CardOrd => Gender => Str ; n : Number} ;
|
||||||
|
Sub1000000 = {s : CardOrd => Gender => Str ; n : Number} ;
|
||||||
|
|
||||||
|
lin num x = x ;
|
||||||
|
lin n2 = mkNumn "li" "ili" "eli" "keli" ;
|
||||||
|
lin n3 = mkNum "tatu" "itatu" " atatu" "katatu" ;
|
||||||
|
lin n4 = mkNum "nya" "ina" "ana" "kana" ;
|
||||||
|
lin n5 = mkNum "tano" "itano" "atano" "katano" ;
|
||||||
|
lin n6 = regNum "nthathatu" ;
|
||||||
|
lin n7 = regNum "muonza" ;
|
||||||
|
lin n8 = regNum "nyanya" ;
|
||||||
|
lin n9 = regNum "kenda" ;
|
||||||
|
|
||||||
|
lin pot01 = mkNume "mwe" " yimwe" "mbee" ** {n = Sg} ;
|
||||||
|
lin pot0 d = d ** {n = Pl} ;
|
||||||
|
lin pot110 = regCardOrd "ikumi" ** {n = Pl} ;
|
||||||
|
lin pot111 = regCardone "ikumi na" "mwe" ** {n = Pl} ;
|
||||||
|
lin pot1to19 d = {s = d.s ! teen} ** {n = Pl} ;
|
||||||
|
lin pot0as1 n = {s = n.s ! unit} ** {n = n.n} ;
|
||||||
|
lin pot1 d = {s = d.s ! ten} ** {n = Pl} ;
|
||||||
|
lin pot1plus d e = { s = table {
|
||||||
|
NCard => \\g => d.s ! ten ! NCard ! g ++ "na"++ e.s ! unit ! NCard ! g ;
|
||||||
|
NOrd => \\g =>Ordprefix g++ d.s ! ten ! NCard ! g ++ "na"++ e.s ! unit ! NCard ! g } ;
|
||||||
|
n = Pl} ;
|
||||||
|
lin pot1as2 n = n ;
|
||||||
|
lin pot2 d = {s = d.s ! hund} ** {n = Pl} ;
|
||||||
|
lin pot2plus d e = {s = table {
|
||||||
|
NCard => \\g => d.s ! hund ! NCard ! g ++ "na" ++ e.s !NCard ! g ;
|
||||||
|
NOrd => \\g =>Ordprefix g++ d.s ! hund ! NCard ! g ++ "na" ++ e.s ! NCard ! g } ;
|
||||||
|
n = Pl} ;
|
||||||
|
lin pot2as3 n = n ;
|
||||||
|
lin pot3 n = { s = table {
|
||||||
|
NCard => \\g => mkCard NCard "ngili" ! g ++ n.s ! NCard ! g ;
|
||||||
|
NOrd => \\g =>Ordprefix g++ mkCard NCard "ngili" ! g ++ n.s ! NCard ! g } ;
|
||||||
|
n = Pl} ;
|
||||||
|
lin pot3plus n m = { s = table {
|
||||||
|
NCard => \\g => "ngili" ++ n.s ! NCard !g ++ m.s ! NCard ! g ;
|
||||||
|
NOrd => \\g =>Ordprefix g++ "ngili" ++ n.s ! NCard !g ++ m.s ! NCard ! g} ;
|
||||||
|
n = Pl} ;
|
||||||
|
|
||||||
|
-- numerals as sequences of digits0'
|
||||||
|
|
||||||
|
lincat
|
||||||
|
Dig = TDigit ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
IDig d = d ;
|
||||||
|
|
||||||
|
IIDig d i = {
|
||||||
|
s = table {NCard => \\g => d.s! NCard ! g ++ BIND ++ i.s ! NCard ! g ;
|
||||||
|
NOrd => \\g => d.s! NOrd! g ++ BIND ++ i.s !NCard! g } ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
D_0 = mkDig "0" ;
|
||||||
|
D_1 = mk3Dig "1" "1" Sg ;
|
||||||
|
D_2 = mkDig "2" ;
|
||||||
|
D_3 = mkDig "3" ;
|
||||||
|
D_4 = mkDig "4" ;
|
||||||
|
D_5 = mkDig "5" ;
|
||||||
|
D_6 = mkDig "6" ;
|
||||||
|
D_7 = mkDig "7" ;
|
||||||
|
D_8 = mkDig "8" ;
|
||||||
|
D_9 = mkDig "9" ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
|
||||||
|
mkDig : Str -> TDigit = \c -> mk2Dig c (c ) ;
|
||||||
|
|
||||||
|
mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> {
|
||||||
|
s = table {NCard => \\g => c ; NOrd => \\g =>Ordprefix g ++ o} ; --Ordprefix g ++
|
||||||
|
n = n} ;
|
||||||
|
|
||||||
|
TDigit = {
|
||||||
|
n : Number ;
|
||||||
|
s : CardOrd => Gender => Str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
429
src/kikamba/ParadigmsKam.gf
Normal file
429
src/kikamba/ParadigmsKam.gf
Normal file
@@ -0,0 +1,429 @@
|
|||||||
|
--# -path=.:../abstract:../../prelude:../common
|
||||||
|
|
||||||
|
resource ParadigmsKam = open
|
||||||
|
(Predef=Predef),
|
||||||
|
Prelude,
|
||||||
|
MorphoKam,
|
||||||
|
ResKam,
|
||||||
|
CatKam
|
||||||
|
in {
|
||||||
|
|
||||||
|
oper
|
||||||
|
Gender : Type ;
|
||||||
|
mu_a : Gender ;
|
||||||
|
mu_mi : Gender ;
|
||||||
|
i_ma : Gender ;
|
||||||
|
ki_i : Gender ;
|
||||||
|
ka_tu : Gender ;
|
||||||
|
va_ku : Gender ;
|
||||||
|
n_n : Gender ;
|
||||||
|
u_ma : Gender ;
|
||||||
|
u_n : Gender ;
|
||||||
|
ku_ma : Gender ;
|
||||||
|
|
||||||
|
Number : Type ;
|
||||||
|
singular : Number ;
|
||||||
|
plural : Number ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Case : Type ;
|
||||||
|
|
||||||
|
nominative : Case ;
|
||||||
|
locative : Case ;
|
||||||
|
npNumber : NP -> Number ; -- exctract the number of a noun phrase
|
||||||
|
|
||||||
|
|
||||||
|
--2 Nouns
|
||||||
|
|
||||||
|
mkN : overload {
|
||||||
|
mkN : (flash : Str) -> Gender -> N ; --regular plural
|
||||||
|
mkN : (man,men : Str) ->Gender -> N ; -- irregular plural
|
||||||
|
mkN : Str -> N -> N
|
||||||
|
} ;
|
||||||
|
|
||||||
|
--3 Relational nouns
|
||||||
|
mkN2 : overload {
|
||||||
|
mkN2 : N -> Prep -> N2 ;
|
||||||
|
mkN2 : N -> Str -> N2 ;
|
||||||
|
mkN2 : N -> N2 ;
|
||||||
|
mkN2 : N -> (Gender => Number => Str)-> N2 ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper dfltGender : Gender = G1 ;
|
||||||
|
dfltNumber : Number = Sg ;
|
||||||
|
|
||||||
|
-- Three-place relational nouns ("the connection from x to y") need two prepositions.
|
||||||
|
|
||||||
|
mkN3 : N -> Prep -> Prep -> N3 ; -- e.g. connection from x to y
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--3 Proper names and noun phrases
|
||||||
|
--
|
||||||
|
-- Proper names, with a regular genitive, are formed from strings.
|
||||||
|
|
||||||
|
mkPN : overload {
|
||||||
|
|
||||||
|
mkPN : Str ->Gender -> PN ;
|
||||||
|
|
||||||
|
-- Sometimes a common noun can be reused as a proper name, e.g. "Bank"
|
||||||
|
|
||||||
|
mkPN : N -> PN --%
|
||||||
|
} ;
|
||||||
|
|
||||||
|
--3 Determiners
|
||||||
|
|
||||||
|
mkOrd : Str -> Ord ; --%
|
||||||
|
|
||||||
|
--2 Adjectives
|
||||||
|
|
||||||
|
mkA : overload {
|
||||||
|
mkA : (happy : Str) -> A ;
|
||||||
|
mkA : (fat,fatter : Str) -> A ; -- irreg.
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
--3 Two-place adjectives
|
||||||
|
|
||||||
|
mkA2 : overload {
|
||||||
|
mkA2 : A -> Prep -> A2 ;
|
||||||
|
mkA2 : A -> Str -> A2 ;
|
||||||
|
mkA2 : Str -> Prep -> A2 ;
|
||||||
|
mkA2 : Str -> Str -> A2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
--2 Adverbs
|
||||||
|
|
||||||
|
-- Adverbs are not inflected. Most lexical ones have position
|
||||||
|
-- after the verb. Some can be preverbal (e.g. "always").
|
||||||
|
|
||||||
|
mkAdv : Str -> Adv ; -- e.g. umuthi
|
||||||
|
mkAdV : Str -> AdV ; -- e.g. lila
|
||||||
|
|
||||||
|
-- Adverbs modifying adjectives and sentences can also be formed.
|
||||||
|
|
||||||
|
mkAdA : Str -> AdA ; -- e.g. pi
|
||||||
|
|
||||||
|
-- Adverbs modifying numerals
|
||||||
|
|
||||||
|
mkAdN : Str -> AdN ; -- e.g. approximately
|
||||||
|
|
||||||
|
--2 Prepositions
|
||||||
|
|
||||||
|
mkPrep : overload {
|
||||||
|
mkPrep : Str -> Prep ;
|
||||||
|
mkPrep : (Gender => Number => Str) -> Prep ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noPrep : Prep ; -- no preposition
|
||||||
|
|
||||||
|
--2 Conjunctions
|
||||||
|
--
|
||||||
|
|
||||||
|
mkConj : overload {
|
||||||
|
mkConj : Str -> Conj ; -- and (plural agreement) --%
|
||||||
|
mkConj : Str -> Number -> Conj ; -- or (agrement number given as argument) --%
|
||||||
|
mkConj : Str -> Str -> Conj ; -- both ... and (plural) --%
|
||||||
|
mkConj : Str -> Str -> Number -> Conj ; -- either ... or (agrement number given as argument) --%
|
||||||
|
} ;
|
||||||
|
|
||||||
|
--2 Verbs
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Verbs are constructed by the function $mkV$, which takes a varying
|
||||||
|
-- number of arguments.
|
||||||
|
|
||||||
|
mkV : overload {
|
||||||
|
mkV : (cry : Str) -> V ; -- regular, incl. cry-cries, kiss-kisses etc
|
||||||
|
mkV : Str -> V -> V ; -- fix compound, e.g. under+take
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--3 Two-place verbs
|
||||||
|
--
|
||||||
|
-- Two-place verbs need a preposition, except the special case with direct object.
|
||||||
|
-- (transitive verbs). Notice that a particle comes from the $V$.-}
|
||||||
|
|
||||||
|
mkV2 : overload {
|
||||||
|
mkV2 : Str -> V2 ; -- kill --%
|
||||||
|
mkV2 : V -> V2 ; -- transitive, e.g. hit
|
||||||
|
mkV2 : V -> Prep -> V2 ; -- with preposiiton, e.g. believe in
|
||||||
|
mkV2 : V -> Str -> V2 ; -- believe in --%
|
||||||
|
mkV2 : Str -> Prep -> V2 ; -- believe in --%
|
||||||
|
mkV2 : Str -> Str -> V2 -- believe in --%
|
||||||
|
};
|
||||||
|
|
||||||
|
--3 Three-place verbs
|
||||||
|
--
|
||||||
|
-- Three-place (ditransitive) verbs need two prepositions, of which
|
||||||
|
-- the first one or both can be absent.
|
||||||
|
|
||||||
|
mkV3 : overload {
|
||||||
|
mkV3 : V -> V3 ; -- ditransitive, e.g. give,_,_
|
||||||
|
mkV3 : V -> Prep -> Prep -> V3 ; -- two prepositions, e.g. speak, with, about
|
||||||
|
mkV3 : V -> Prep -> V3 ; -- give,_,to --%
|
||||||
|
mkV3 : V -> Str -> V3 ; -- give,_,to --%
|
||||||
|
mkV3 : Str -> Str -> V3 ; -- give,_,to --%
|
||||||
|
mkV3 : Str -> V3 ; -- give,_,_ --%
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
--2 Other categories
|
||||||
|
|
||||||
|
mkSubj : Str -> Subj = \s -> lin Subj {s = s} ; --%
|
||||||
|
mkInterj : Str -> Interj
|
||||||
|
= \s -> lin Interj (ss s) ;
|
||||||
|
|
||||||
|
--.
|
||||||
|
--2 Definitions of paradigms
|
||||||
|
--
|
||||||
|
-- The definitions should not bother the user of the API. So they are
|
||||||
|
-- hidden from the document.
|
||||||
|
|
||||||
|
Gender = MorphoKam.Gender ;
|
||||||
|
Number = MorphoKam.Number ;
|
||||||
|
Case = MorphoKam.NPCase ;
|
||||||
|
mu_a = G1 ;--%
|
||||||
|
mu_mi = G2 ;
|
||||||
|
i_ma = G3 ;
|
||||||
|
ki_i = G4 ;
|
||||||
|
ka_tu = G5 ;
|
||||||
|
va_ku = G6 ;
|
||||||
|
n_n = G7 ;
|
||||||
|
u_ma = G8;
|
||||||
|
u_n =G9 ;
|
||||||
|
ku_ma = G10 ;
|
||||||
|
singular = Sg ;
|
||||||
|
plural = Pl ;
|
||||||
|
nominative = npNom ;
|
||||||
|
locative = npLoc ;
|
||||||
|
|
||||||
|
npNumber np = (agrFeatures np.a).n ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
regN = MorphoKam.regN ;
|
||||||
|
iregN = MorphoKam.iregN ;
|
||||||
|
|
||||||
|
|
||||||
|
compoundN s n = lin N {s = \\x,y => s ++ n.s ! x ! y ; g=n.g} ;
|
||||||
|
|
||||||
|
mkPN = overload {
|
||||||
|
mkPN : Str -> Gender -> PN = regPN;
|
||||||
|
mkPN : N -> PN = nounPN
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
mkN2 = overload {
|
||||||
|
mkN2 : N -> Prep -> N2 = prepN2 ;
|
||||||
|
mkN2 : N -> Str -> N2 = \n,s -> prepN2 n (mkPrep s);
|
||||||
|
mkN2 : N -> N2 = \n -> prepN2 n (mkPrep mkPrepof ) ;
|
||||||
|
mkN2 : N -> (Number =>Gender => Str)-> N2= \n,s -> prepN2 n (mkPrep mkPrepof) ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
prepN2 = \n,p -> lin N2 (n ** {c2 = p}) ;
|
||||||
|
regN2 = \n -> (prepN2 n (mkPrep mkPrepof )) ;
|
||||||
|
mkN3 = \n,p,q -> lin N3 (n ** {c2 = p ; c3 = q}) ;
|
||||||
|
mkPrepof : Number => Gender => Str =
|
||||||
|
table Number { Sg => table {
|
||||||
|
G3| G7 => "ya" ;
|
||||||
|
G4 => "kya" ;
|
||||||
|
G5 => "ka" ;
|
||||||
|
G6 => "va" ;
|
||||||
|
G10 => "kwa";
|
||||||
|
_ => "wa" } ;
|
||||||
|
|
||||||
|
Pl => table { G1|G3| G8 | G10 => "ma" ;
|
||||||
|
G4| G7 |G9 => "sya" ;
|
||||||
|
G2 => "ya" ;
|
||||||
|
G5 => "twa" ;
|
||||||
|
G6 => "kwa"} } ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--3 Relational common noun phrases
|
||||||
|
|
||||||
|
|
||||||
|
cnN2 : CN -> Prep -> N2 ;
|
||||||
|
cnN3 : CN -> Prep -> Prep -> N3 ;
|
||||||
|
|
||||||
|
|
||||||
|
cnN2 = \n,p -> lin N2 (n ** {c2 = p}) ;
|
||||||
|
cnN3 = \n,p,q -> lin N3 (n ** {c2 = p ; c3 = q}) ;
|
||||||
|
|
||||||
|
|
||||||
|
regPN n g = lin PN {s = table {Loc => "kwa" + n ; _ => n} ; g = g} ;
|
||||||
|
|
||||||
|
|
||||||
|
nounPN n = lin PN {s = n.s ! singular ; g = n.g} ;
|
||||||
|
|
||||||
|
mkOrd : Str -> Ord = \x -> lin Ord { s =\\g => x};
|
||||||
|
|
||||||
|
|
||||||
|
prepA2 a p = lin A2 (a ** {c2 = p.s!Sg!G1}) ;
|
||||||
|
|
||||||
|
mkAdv x = lin Adv (ss x) ;
|
||||||
|
mkAdV x = lin AdV (ss x) ;
|
||||||
|
mkAdA x = lin AdA (ss x) ;
|
||||||
|
mkAdN x = lin AdN (ss x) ;
|
||||||
|
|
||||||
|
mkPrep = overload {
|
||||||
|
mkPrep : Str -> Prep = \str -> lin Prep {s = \\n,g => str } ;
|
||||||
|
mkPrep : (Number => Gender => Str) -> Prep = \t ->lin Prep {s = t} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noPrep = mkPrep [] ;
|
||||||
|
{-} mkPrep : Str -> Str -> Prep = \p,q -> lin Prep
|
||||||
|
{s = table{Sg => table{G1 => p; _=> "" };
|
||||||
|
Pl => table{G1 => q; _=> ""}}} ;
|
||||||
|
prepV2 : V -> Prep -> V2 ;
|
||||||
|
prepV2 = \v,p -> lin V2 (v ** {c2 = p.s!Sg!G1}) ;
|
||||||
|
dirV2 : V -> V2 = \v -> prepV2 v noPrep ;
|
||||||
|
|
||||||
|
prepPrepV3 v p q = lin V3 (v ** {c2 = p ; c3 = q}) ;
|
||||||
|
dirV3 v p = prepPrepV3 v noPrep p ;
|
||||||
|
dirdirV3 v = dirV3 v noPrep ;
|
||||||
|
|
||||||
|
|
||||||
|
mkA2V : A -> Prep -> Prep -> A2V;
|
||||||
|
A2S, A2V : Type = A2 ;
|
||||||
|
mkA2V v p q = mkA2 v p ** {s3 = q.p2 ; c3 = q.p1 ; lock_A2V = <>} ;
|
||||||
|
|
||||||
|
|
||||||
|
mkAV v = v ** { lock_AV = <>} ;
|
||||||
|
mkAV : A -> AV ;
|
||||||
|
AS, AV : Type = A ;
|
||||||
|
|
||||||
|
mkAS : A -> AS ;
|
||||||
|
mkAS v = v ** {lock_AS = <>} ;
|
||||||
|
|
||||||
|
mkVS : V -> VS ;
|
||||||
|
mkVS v = v ** { lock_VS = <>} ;
|
||||||
|
|
||||||
|
mkVQ : V -> VQ ;
|
||||||
|
mkVQ v = v ** {lock_VQ = <>} ;
|
||||||
|
|
||||||
|
|
||||||
|
-- mkVV : V -> VV ;
|
||||||
|
-- mkVV v = v ** { lock_VV = <>} ;
|
||||||
|
|
||||||
|
mkVA : V -> VA ;
|
||||||
|
mkVA v = v ** {lock_VA = <>} ;
|
||||||
|
|
||||||
|
mkV2V : V -> Prep -> Prep -> V2V ;
|
||||||
|
mkV2V v p q = prepPrepV3 v p q ** {lock_V2V = <>} ;
|
||||||
|
|
||||||
|
mkV2S : V -> Prep -> V2S ;
|
||||||
|
mkV2S v p = prepV2 v p ** { lock_V2S = <>} ;
|
||||||
|
|
||||||
|
mkV2Q : V -> Prep -> V2Q ;
|
||||||
|
mkV2Q v p = prepV2 v p ** {lock_V2Q = <>} ;
|
||||||
|
|
||||||
|
mkV2A : V -> Prep -> Prep -> V2A ;
|
||||||
|
mkV2A v p q = prepPrepV3 v p q ** {lock_V2A = <>} ;
|
||||||
|
|
||||||
|
|
||||||
|
mkV0 : V -> V0 ;
|
||||||
|
V0 : Type ;
|
||||||
|
V0 : Type = V;
|
||||||
|
mkV0 v = v ** {lock_V0 = <>} ;
|
||||||
|
-}
|
||||||
|
-- pre-overload API and overload definitions
|
||||||
|
|
||||||
|
-- regN : Str ->Gender -> N ;
|
||||||
|
--iregN : (man,men : Str) ->Gender -> N ;
|
||||||
|
compoundN : Str -> N -> N ;
|
||||||
|
|
||||||
|
mkN = overload {
|
||||||
|
mkN : Str ->Gender -> N = \n, g -> lin N (regN n g );
|
||||||
|
mkN : (man,men : Str) ->Gender -> N = \s,p,g -> lin N ( iregN s p g) ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
prepN2 : N -> Prep -> N2 ;
|
||||||
|
|
||||||
|
-- The most common preposition is "of", and the following is a
|
||||||
|
-- shortcut for regular relational nouns with "of".
|
||||||
|
|
||||||
|
regN2 : N -> N2 ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
regA : Str -> A = \s -> lin A (MorphoKam.regA s) ;
|
||||||
|
cregA : Str -> A = \s -> lin A (MorphoKam.cregA s) ;
|
||||||
|
iregA : (fat,fatter : Str) -> A =\a,b -> lin A (MorphoKam.iregA a b);
|
||||||
|
|
||||||
|
mkA = overload {
|
||||||
|
mkA : Str -> A = \a -> lin A (regA a |cregA a);
|
||||||
|
mkA : (fat,fatter : Str) -> A =\a,b -> lin A (iregA a b );
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|
||||||
|
prepA2 : A -> Prep -> A2 ;
|
||||||
|
|
||||||
|
mkA2 = overload {
|
||||||
|
mkA2 : A -> Prep -> A2 = prepA2 ;
|
||||||
|
mkA2 : A -> Str -> A2 = \a,p -> prepA2 a (mkPrep p) ;
|
||||||
|
mkA2 : Str -> Prep -> A2 = \a,p -> prepA2 (regA a) p;
|
||||||
|
mkA2 : Str -> Str -> A2 = \a,p -> prepA2 (regA a) (mkPrep p);
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
regV=MorphoKam.regV ;
|
||||||
|
{-}
|
||||||
|
mkV = overload {
|
||||||
|
mkV : Str -> V =\v ->lin V(regV v) ;
|
||||||
|
mkV : Str -> V -> V = prefixV
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
prefixV : Str -> V -> V = \p,v -> lin V { s = \\b,vform => p + v.s! b ! vform } ;
|
||||||
|
mkV2 = overload {
|
||||||
|
mkV2 : V -> V2 = dirV2 ;
|
||||||
|
mkV2 : Str -> V2 = \s -> dirV2 (regV s) ;
|
||||||
|
mkV2 : V -> Prep -> V2 = prepV2;
|
||||||
|
mkV2 : V -> Str -> V2 = \v,p -> prepV2 v (mkPrep p) ;
|
||||||
|
mkV2 : Str -> Prep -> V2 = \v,p -> prepV2 (regV v) p ;
|
||||||
|
mkV2 : Str -> Str -> V2 = \v,p -> prepV2 (regV v) (mkPrep p)
|
||||||
|
};
|
||||||
|
|
||||||
|
prepPrepV3 : V -> Prep -> Prep -> V3 ;
|
||||||
|
dirV3 : V -> Prep -> V3 ;
|
||||||
|
dirdirV3 : V -> V3 ;
|
||||||
|
|
||||||
|
mkV3 = overload {
|
||||||
|
mkV3 : V -> Prep -> Prep -> V3 = prepPrepV3 ;
|
||||||
|
mkV3 : V -> Prep -> V3 = dirV3 ;
|
||||||
|
mkV3 : V -> Str -> V3 = \v,s -> dirV3 v (mkPrep s);
|
||||||
|
mkV3 : Str -> Str -> V3 = \v,s -> dirV3 (regV v) (mkPrep s);
|
||||||
|
mkV3 : V -> V3 = dirdirV3 ;
|
||||||
|
mkV3 : Str -> V3 = \v -> dirdirV3 (regV v) ;
|
||||||
|
} ;
|
||||||
|
-}
|
||||||
|
mkConj = overload {
|
||||||
|
mkConj : Str -> Conj = \y -> mk2Conj [] y plural ;
|
||||||
|
mkConj : Str -> Number -> Conj = \y,n -> mk2Conj [] y n ;
|
||||||
|
mkConj : Str -> Str -> Conj = \x,y -> mk2Conj x y plural ;
|
||||||
|
mkConj : Str -> Str -> Number -> Conj = mk2Conj ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mk2Conj : Str -> Str -> Number -> Conj = \x,y,n ->
|
||||||
|
lin Conj (sd2 x y ** {n = n}) ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
regPN : Str ->Gender -> PN ;
|
||||||
|
|
||||||
|
|
||||||
|
nounPN : N -> PN ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
3
src/kikamba/PhraseKam.gf
Normal file
3
src/kikamba/PhraseKam.gf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
concrete PhraseKam of Phrase = CatKam ** PhraseBantu with
|
||||||
|
(ResBantu = ResKam);
|
||||||
|
|
||||||
2
src/kikamba/QuestionKam.gf
Normal file
2
src/kikamba/QuestionKam.gf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
concrete QuestionKam of Question = CatKam ** QuestionBantu with
|
||||||
|
(ResBantu = ResKam);
|
||||||
2
src/kikamba/RelativeKam.gf
Normal file
2
src/kikamba/RelativeKam.gf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
concrete RelativeKam of Relative = CatKam ** RelativeBantu with
|
||||||
|
(ResBantu = ResKam);
|
||||||
7
src/kikamba/ResKam.gf
Normal file
7
src/kikamba/ResKam.gf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
--# -path=.:../abstract:../common:../../prelude
|
||||||
|
|
||||||
|
|
||||||
|
instance ResKam of ResBantu = DiffKam, CommonBantu ** open Prelude in {
|
||||||
|
|
||||||
|
|
||||||
|
} ;
|
||||||
3
src/kikamba/SentenceKam.gf
Normal file
3
src/kikamba/SentenceKam.gf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
concrete SentenceKam of Sentence = CatKam ** SentenceBantu with
|
||||||
|
(ResBantu = ResKam);
|
||||||
|
|
||||||
231
src/kikamba/StructuralKam.gf
Normal file
231
src/kikamba/StructuralKam.gf
Normal file
@@ -0,0 +1,231 @@
|
|||||||
|
concrete StructuralKam of Structural = CatKam **
|
||||||
|
open MorphoKam, ParadigmsKam,
|
||||||
|
(C = ConstructX), Prelude in {
|
||||||
|
|
||||||
|
flags optimize=all ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
above_Prep = mkPrep "iulu" ;
|
||||||
|
after_Prep = mkPrep "itina" ;
|
||||||
|
all_Predet = {s = \\g => MorphoKam.Allpredetprefix g + "onthe"} ;
|
||||||
|
almost_AdA = mkAdA "vakuvi " ;
|
||||||
|
almost_AdN = mkAdN "vakuvi " ;
|
||||||
|
although_Subj = ss "ona kau" ;
|
||||||
|
always_AdV = mkAdV "mavinda onthe" ;
|
||||||
|
and_Conj = mkConj "na" ;
|
||||||
|
because_Subj = ss "nundu" | ss "ni kwithiwa" ;
|
||||||
|
before_Prep = mkPrep "mbee" ;
|
||||||
|
behind_Prep = mkPrep "itina" ;
|
||||||
|
between_Prep = mkPrep "kati" ;
|
||||||
|
both7and_DConj = mkConj "eli" "na";
|
||||||
|
but_PConj = ss "ndi" ;
|
||||||
|
by8agent_Prep = mkPrep "kwa" ;
|
||||||
|
by8means_Prep = mkPrep "kwa" ;
|
||||||
|
|
||||||
|
{-} can8know_VV, can_VV = {
|
||||||
|
s = table {
|
||||||
|
VVF VInf => ["be able to"] ;
|
||||||
|
VVF VPres => "can" ;
|
||||||
|
VVF VPPart => ["been able to"] ;
|
||||||
|
VVF VPresPart => ["being able to"] ;
|
||||||
|
VVF VPast => "could" ; --# notpresent
|
||||||
|
VVPastNeg => "couldn't" ; --# notpresent
|
||||||
|
VVPresNeg => "can't" -- | "cannot" ---- shouldn't be a variant, but replace "can not"
|
||||||
|
} ;
|
||||||
|
p = [] ;
|
||||||
|
typ = VVAux
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
VVF VInf => ["be able to"] ;
|
||||||
|
VVF VPres => "can" ;
|
||||||
|
VVF VPPart => ["been able to"] ;
|
||||||
|
VVF VPresPart => ["being able to"] ;
|
||||||
|
VVF VPast => "could" ; --# notpresent
|
||||||
|
VVPastNeg => "couldn't" ; --# notpresent
|
||||||
|
VVPresNeg => "cannot" ---- shouldn't be a variant, but replace "can not"
|
||||||
|
} ;
|
||||||
|
p = [] ;
|
||||||
|
typ = VVAux
|
||||||
|
} ; -}
|
||||||
|
during_Prep = mkPrep "during" ;
|
||||||
|
either7or_DConj = mkConj "kana" singular ;
|
||||||
|
everybody_NP = regNP "kila umwe" mu_a singular ;
|
||||||
|
every_Det = mkDet "kila" [] Sg ;
|
||||||
|
everything_NP = regNP "kila kindu" ki_i singular ;
|
||||||
|
everywhere_Adv = mkAdv "kila vandu" ;
|
||||||
|
few_Det = mkDet [] "nini" Pl;
|
||||||
|
for_Prep = mkPrep nonExist ;
|
||||||
|
from_Prep = mkPrep "kuma" ;
|
||||||
|
he_Pron = mkPron "we" "ake" G1 Sg P3 ;
|
||||||
|
here_Adv = mkAdv "vaa" ;
|
||||||
|
here7to_Adv = mkAdv ["kuvika vaa"] ;
|
||||||
|
here7from_Adv = mkAdv ["kuma vaa"] ;
|
||||||
|
how_IAdv = ss "ata" | ss "nzia myau" ;
|
||||||
|
how8much_IAdv = ss "mala meana" ;
|
||||||
|
--how8many_IDet = mkDeterminer plural ["mala meana"] ;
|
||||||
|
if_Subj = ss "enthwa" ;
|
||||||
|
in8front_Prep = mkPrep ["mbee wa"] ;
|
||||||
|
i_Pron =mkPron "nyie" "akwa" G1 Sg P1 ;
|
||||||
|
in_Prep = mkPrep "in" ;
|
||||||
|
it_Pron ={ s=\\c=>"yo"; poss=\\n,g=> ""; a=Ag G4 Sg P3};
|
||||||
|
|
||||||
|
less_CAdv = C.mkCAdv "ninangi" "kwi" ;
|
||||||
|
much_Det, many_Det =mkDet [] "ingi" Pl;
|
||||||
|
more_CAdv = C.mkCAdv "mbeange" "kwi" ;
|
||||||
|
most_Predet = {s = \\g => MorphoKam.Mostpredetprefix g + "ingi"} ;
|
||||||
|
|
||||||
|
{-} must_VV = {
|
||||||
|
s = table {
|
||||||
|
VVF VInf => ["have to"] ;
|
||||||
|
VVF VPres => "must" ;
|
||||||
|
VVF VPPart => ["had to"] ;
|
||||||
|
VVF VPres2Part => ["having to"] ;
|
||||||
|
VVF VPast => ["had to"] ; --# notpresent
|
||||||
|
VVPastNeg => ["hadn't to"] ; --# notpresent
|
||||||
|
VVPresNeg => "mustn't"
|
||||||
|
} ;
|
||||||
|
p = [] ;
|
||||||
|
typ = VVAux
|
||||||
|
|
||||||
|
} ; -}
|
||||||
|
---b no_Phr = ss "no" ;
|
||||||
|
no_Utt = ss "aeee" ;
|
||||||
|
on_Prep = mkPrep "iulu wa" ;
|
||||||
|
---- one_Quant = mkDeterminer singular "one" ; -- DEPRECATED
|
||||||
|
only_Predet = {s = \\g => "tu" } ;
|
||||||
|
or_Conj = mkConj "kana" singular ;
|
||||||
|
otherwise_PConj = ss "otherwise" ;
|
||||||
|
please_Voc = ss "ame" ;
|
||||||
|
part_Prep, possess_Prep = let
|
||||||
|
questo : ParadigmsKam.Number => MorphoKam.Gender => Str = table {
|
||||||
|
Sg => \\g=> case <g> of {
|
||||||
|
<G2 > |<G9> |<G8 > | <G1 > => "wa";
|
||||||
|
<G4 > => "kya";
|
||||||
|
<G5 > => "ka";
|
||||||
|
<G6 > => "va";
|
||||||
|
<G10 > => "kwa";
|
||||||
|
_ => "ya"
|
||||||
|
};
|
||||||
|
|
||||||
|
Pl => \\g=> case <g> of{
|
||||||
|
<G2 > => "ya";
|
||||||
|
<G5 > => "twa";
|
||||||
|
<G6 > => "kwa";
|
||||||
|
<G7> |<G9>|<G4 > => "sya";
|
||||||
|
_ => "ma"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
in { s= questo} ;
|
||||||
|
quite_Adv = mkAdv "o muno" ;
|
||||||
|
she_Pron = mkPron "we" "ake" G1 Sg P3 ;
|
||||||
|
|
||||||
|
so_AdA = mkAdA "so" ;
|
||||||
|
somebody_NP = regNP " o mundu " mu_a singular ;
|
||||||
|
someSg_Det = mkDet [] "mwe" Sg;
|
||||||
|
somePl_Det = mkDet [] "mwe" Pl;
|
||||||
|
something_NP = regNP "o kindu" ki_i singular ;
|
||||||
|
somewhere_Adv = mkAdv "o vandu" ;
|
||||||
|
that_Quant = let
|
||||||
|
questo : ParadigmsKam.Number => MorphoKam.Gender => Str = table {
|
||||||
|
Sg => \\g=> case <g> of {
|
||||||
|
<G2 > => "iya";
|
||||||
|
<G3 > => "yiya";
|
||||||
|
<G4 > => "kiya";
|
||||||
|
<G5 > => "kaya";
|
||||||
|
<G10 > => "kuya";
|
||||||
|
<G6 > => "vaya";
|
||||||
|
<G1> |<G8> |<G9> => "uya" ;
|
||||||
|
_ => "iya"
|
||||||
|
};
|
||||||
|
|
||||||
|
Pl => \\g=> case <g> of{
|
||||||
|
<G2 > => "iya";
|
||||||
|
<G4 > => "iya";
|
||||||
|
<G5 > => "tuya";
|
||||||
|
<G6 > => "kuya";
|
||||||
|
<G7> |<G9> => "iya";
|
||||||
|
_ => "aya"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
in {
|
||||||
|
s = questo ;
|
||||||
|
} ;
|
||||||
|
there_Adv = mkAdv "vau" ;
|
||||||
|
there7to_Adv = mkAdv "vau" ;
|
||||||
|
there7from_Adv = mkAdv ["kuma vau"] ;
|
||||||
|
therefore_PConj = ss "kwoou" ;
|
||||||
|
they_Pron =mkPron "mo" "oo" G1 Pl P3 ;
|
||||||
|
|
||||||
|
this_Quant = let
|
||||||
|
questo : ParadigmsKam.Number => MorphoKam.Gender => Str = table {
|
||||||
|
Sg => \\g=> case <g> of {
|
||||||
|
<G3 > => "yii";
|
||||||
|
<G4 > => "kii";
|
||||||
|
<G5 > => "kaa";
|
||||||
|
<G6 > => "vaa";
|
||||||
|
<G7> => "ii";
|
||||||
|
<G10 > => "kuu";
|
||||||
|
_ => "uu"
|
||||||
|
};
|
||||||
|
|
||||||
|
Pl => \\g=> case <g> of{
|
||||||
|
<G5 > => "tuu";
|
||||||
|
<G6 > => "kuu";
|
||||||
|
<G2> | <G4> | <G7> | <G9>=> "ii";
|
||||||
|
_ => "aa"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
in {
|
||||||
|
s = questo ;
|
||||||
|
} ;
|
||||||
|
through_Prep = mkPrep "kuvitila" ;
|
||||||
|
too_AdA = mkAdA "too" ;
|
||||||
|
to_Prep = mkPrep "kuvika" ;
|
||||||
|
under_Prep = mkPrep "itheo" ;
|
||||||
|
very_AdA = mkAdA "muno" ;
|
||||||
|
-- want_VV = mkVV (regV "enda") ;
|
||||||
|
we_Pron =mkPron "ithyi" "itu" G1 Pl P1 ;
|
||||||
|
|
||||||
|
--whatPl_IP = mkIP "ata" "ata" plural ;
|
||||||
|
-- whatSg_IP = mkIP "ata" "ata" singular ;
|
||||||
|
when_IAdv = ss "when" ;
|
||||||
|
when_Subj = ss "when" ;
|
||||||
|
where_IAdv = ss "where" ;
|
||||||
|
which_IQuant = {s = \\_ => "which"} ;
|
||||||
|
---b whichPl_IDet = mkDeterminer plural ["which"] ;
|
||||||
|
---b whichSg_IDet = mkDeterminer singular ["which"] ;
|
||||||
|
-- whoPl_IP = mkIP "uu" "whom" "whose" plural ;
|
||||||
|
-- whoSg_IP = mkIP "who" "whom" "whose" singular ;
|
||||||
|
why_IAdv = ss "why" ;
|
||||||
|
without_Prep = mkPrep "nza" ;
|
||||||
|
with_Prep = mkPrep "vamwe na" ;
|
||||||
|
--yes_Phr = ss "ii" ;
|
||||||
|
yes_Utt = ss "ii" ;
|
||||||
|
youSg_Pron = mkPron "we" "aku" G1 Sg P2 ;
|
||||||
|
|
||||||
|
youPol_Pron,youPl_Pron = mkPron "inyui" "enyu" G1 Pl P3 ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
not_Predet = {s = \\g => "nongi"} ;
|
||||||
|
no_Quant = {s = \\g,n => nonExist} ;
|
||||||
|
if_then_Conj = mkConj "ethiwa" "indi" singular ;
|
||||||
|
nobody_NP = regNP "vai mundu" mu_a singular ;
|
||||||
|
nothing_NP = regNP "vathei" va_ku singular ;
|
||||||
|
|
||||||
|
at_least_AdN = mkAdN "muvaka" ;
|
||||||
|
at_most_AdN = mkAdN "nginya" ;
|
||||||
|
|
||||||
|
except_Prep = mkPrep "ate o" ;
|
||||||
|
|
||||||
|
as_CAdv = C.mkCAdv "nundu" "ta" ;
|
||||||
|
|
||||||
|
-- have_V2 = dirV2 (mk5V "have" "has" "had" "had" "having") ;
|
||||||
|
that_Subj = ss "ati" ;
|
||||||
|
lin language_title_Utt = ss "kikamba" ;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
2
src/kikamba/VerbKam.gf
Normal file
2
src/kikamba/VerbKam.gf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
concrete VerbKam of Verb = CatKam ** VerbBantu with
|
||||||
|
(ResBantu = ResKam);
|
||||||
Reference in New Issue
Block a user