1
0
forked from GitHub/gf-rgl

added Kazakh morphology

This commit is contained in:
Krasimir Angelov
2024-11-10 19:49:50 +01:00
parent 164cf81477
commit d77c8fa23c
9 changed files with 16234 additions and 0 deletions

View File

@@ -25,6 +25,7 @@ Ice,Icelandic,icelandic,,,,,,n,,y
Ina,Interlingua,interlingua,,,y,,n,n,,n
Ita,Italian,italian,Romance,,y,,,,y,y
Jpn,Japanese,japanese,,,,,,,,y
Kaz,Kazakh,kazakh,,,,y,n,n,n,y
Kor,Korean,korean,,,n,y,y,y,n,n
Lat,Latin,latin,,,,,y,y,n,y
Lav,Latvian,latvian,,,,,,,y,y
1 Code Name Directory Functor Unlexer Present All Try Symbolic Compatibility Synopsis
25 Ina Interlingua interlingua y n n n
26 Ita Italian italian Romance y y y
27 Jpn Japanese japanese y
28 Kaz Kazakh kazakh y n n n y
29 Kor Korean korean n y y y n n
30 Lat Latin latin y y n y
31 Lav Latvian latvian y y

4
src/kazakh/AllKaz.gf Normal file
View File

@@ -0,0 +1,4 @@
concrete AllKaz of AllKazAbs =
LangKaz
**
{} ;

5
src/kazakh/AllKazAbs.gf Normal file
View File

@@ -0,0 +1,5 @@
--# -path=.:../abstract:../common:prelude
abstract AllKazAbs =
Lang
** {} ;

15
src/kazakh/CatKaz.gf Normal file
View File

@@ -0,0 +1,15 @@
concrete CatKaz of Cat = CommonX ** open ResKaz in {
lincat N = Noun ;
lincat N2 = Noun ** {c2 : Compl} ;
lincat N3 = Noun ** {c2,c3 : Compl} ;
lincat V, VA, VV, VS, VQ = Verb ;
lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
lincat A = {s : Str} ;
lincat A2 = A ** {c2 : Compl} ;
lincat Prep = Compl ;
lincat Interj = {s : Str} ;
lincat Voc = {s : Str} ;
}

4
src/kazakh/LangKaz.gf Normal file
View File

@@ -0,0 +1,4 @@
concrete LangKaz of Lang =
LexiconKaz
** {
} ;

2
src/kazakh/LexiconKaz.gf Normal file
View File

@@ -0,0 +1,2 @@
concrete LexiconKaz of Lexicon = open ParadigmsKaz in {
}

15454
src/kazakh/MorphoKaz.gf Normal file

File diff suppressed because it is too large Load Diff

458
src/kazakh/ParadigmsKaz.gf Normal file
View File

@@ -0,0 +1,458 @@
resource ParadigmsKaz = MorphoKaz ** open Prelude, CatKaz, ResKaz in {
oper
regN : Str -> N
= \form -> case form of {
_ + "пап" => mkN001 form;
_ + "нып" => mkN028 form;
_ + "ірт" => mkN007 form;
_ + "ілт" => mkN007 form;
_ + "ент" => mkN007 form;
_ + "рық" => mkN013 form;
_ + "уық" => mkN013 form;
_ + "қық" => mkN013 form;
_ + "йық" => mkN013 form;
_ + "бық" => mkN013 form;
_ + "зық" => mkN013 form;
_ + "ңеш" => mkN036 form;
_ + "дам" => mkN002 form;
_ + "шам" => mkN002 form;
_ + "нам" => mkN004 form;
_ + "ным" => mkN032 form;
_ + "тым" => mkN032 form;
_ + "мар" => mkN004 form;
_ + "ңір" => mkN011 form;
_ + "діл" => mkN011 form;
_ + "тіл" => mkN011 form;
_ + "ріл" => mkN011 form;
_ + "иыл" => mkN010 form;
_ + "рік" => mkN023 form;
_ + "сік" => mkN023 form;
_ + "шік" => mkN023 form;
_ + "пік" => mkN023 form;
_ + "зік" => mkN023 form;
_ + "біз" => mkN008 form;
_ + "сөз" => mkN008 form;
_ + "іру" => mkN011 form;
_ + "ьша" => mkN056 form;
_ + "ыша" => mkN056 form;
_ + "опа" => mkN056 form;
_ + "нші" => mkN022 form;
_ + "кші" => mkN022 form;
_ + "зші" => mkN022 form;
_ + "иші" => mkN022 form;
_ + "лші" => mkN022 form;
_ + "пші" => mkN022 form;
_ + "ңкі" => mkN022 form;
_ + "кте" => mkN022 form;
_ + "рпе" => mkN022 form;
_ + "кше" => mkN022 form;
_ + "йде" => mkN022 form;
_ + "еде" => mkN055 form;
_ + "өбе" => mkN022 form;
_ + "ңге" => mkN055 form;
_ + "іс" => mkN007 form;
_ + "ес" => mkN007 form;
_ + "үс" => mkN007 form;
_ + "өс" => mkN007 form;
_ + "ап" => mkN028 form;
_ + "оп" => mkN001 form;
_ + "ып" => mkN001 form;
_ + "ит" => mkN007 form;
_ + "өт" => mkN007 form;
_ + "ет" => mkN007 form;
_ + "үт" => mkN007 form;
_ + "іт" => mkN007 form;
_ + "ст" => mkN007 form;
_ + "ақ" => mkN013 form;
_ + "яқ" => mkN013 form;
_ + "еш" => mkN007 form;
_ + "іш" => mkN007 form;
_ + "үш" => mkN007 form;
_ + "ам" => mkN032 form;
_ + "ым" => mkN002 form;
_ + "ұм" => mkN002 form;
_ + "ән" => mkN014 form;
_ + "ін" => mkN014 form;
_ + "ен" => mkN014 form;
_ + "үн" => mkN014 form;
_ + "өң" => mkN014 form;
_ + "ең" => mkN014 form;
_ + "ің" => mkN014 form;
_ + "үң" => mkN014 form;
_ + "вр" => mkN004 form;
_ + "ір" => mkN024 form;
_ + "ер" => mkN024 form;
_ + "үр" => mkN024 form;
_ + "өр" => mkN024 form;
_ + "әр" => mkN024 form;
_ + "ел" => mkN025 form;
_ + "іл" => mkN025 form;
_ + "өл" => mkN025 form;
_ + "үл" => mkN025 form;
_ + "ек" => mkN023 form;
_ + "із" => mkN016 form;
_ + "өз" => mkN016 form;
_ + "үз" => mkN016 form;
_ + "ез" => mkN016 form;
_ + "ий" => mkN011 form;
_ + "ей" => mkN011 form;
_ + "еу" => mkN024 form;
_ + "ва" => mkN056 form;
_ + "уа" => mkN056 form;
_ + "йы" => mkN056 form;
_ + "ия" => mkN056 form;
_ + "ні" => mkN022 form;
_ + "рі" => mkN022 form;
_ + "сі" => mkN022 form;
_ + "ке" => mkN022 form;
_ + "ме" => mkN022 form;
_ + "зе" => mkN022 form;
_ + "же" => mkN022 form;
_ + "пе" => mkN055 form;
_ + "с" => mkN001 form;
_ + "п" => mkN007 form;
_ + "т" => mkN001 form;
_ + "д" => mkN001 form;
_ + "қ" => mkN001 form;
_ + "ш" => mkN001 form;
_ + "х" => mkN001 form;
_ + "м" => mkN014 form;
_ + "н" => mkN002 form;
_ + "ң" => mkN002 form;
_ + "р" => mkN010 form;
_ + "л" => mkN015 form;
_ + "к" => mkN007 form;
_ + "з" => mkN012 form;
_ + "и" => mkN010 form;
_ + "й" => mkN010 form;
_ + "ю" => mkN010 form;
_ + "у" => mkN010 form;
_ + "ж" => mkN012 form;
_ + "а" => mkN017 form;
_ + "ы" => mkN017 form;
_ + "я" => mkN017 form;
_ + "і" => mkN057 form;
_ + "е" => mkN057 form;
_ + "ә" => mkN057 form
} ;
reg2N : Str -> Str -> N
= \form1, form2 -> case <form1, form2> of {
<_ + "пап", _> => mkN001 form1;
<_ + "нып", _> => mkN028 form1;
<_ + "ірт", _> => mkN007 form1;
<_ + "ілт", _> => mkN007 form1;
<_ + "ент", _> => mkN007 form1;
<_ + "рық", _> => mkN013 form1;
<_ + "уық", _> => mkN013 form1;
<_ + "қық", _> => mkN013 form1;
<_ + "йық", _> => mkN013 form1;
<_ + "бық", _> => mkN013 form1;
<_ + "зық", _> => mkN013 form1;
<_ + "ңеш", _> => mkN036 form1;
<_ + "дам", _> => mkN002 form1;
<_ + "шам", _> => mkN002 form1;
<_ + "нам", _> => mkN004 form1;
<_ + "ным", _> => mkN032 form1;
<_ + "тым", _> => mkN032 form1;
<_ + "мар", _> => mkN004 form1;
<_ + "ңір", _> => mkN011 form1;
<_ + "діл", _> => mkN011 form1;
<_ + "тіл", _> => mkN011 form1;
<_ + "ріл", _> => mkN011 form1;
<_ + "иыл", _> => mkN010 form1;
<_ + "рік", _> => mkN023 form1;
<_ + "сік", _> => mkN023 form1;
<_ + "шік", _> => mkN023 form1;
<_ + "пік", _> => mkN023 form1;
<_ + "зік", _> => mkN023 form1;
<_ + "біз", _> => mkN008 form1;
<_ + "сөз", _> => mkN008 form1;
<_ + "іру", _> => mkN011 form1;
<_ + "ьша", _> => mkN056 form1;
<_ + "ыша", _> => mkN056 form1;
<_ + "опа", _> => mkN056 form1;
<_ + "нші", _> => mkN022 form1;
<_ + "кші", _> => mkN022 form1;
<_ + "зші", _> => mkN022 form1;
<_ + "иші", _> => mkN022 form1;
<_ + "лші", _> => mkN022 form1;
<_ + "пші", _> => mkN022 form1;
<_ + "ңкі", _> => mkN022 form1;
<_ + "кте", _> => mkN022 form1;
<_ + "рпе", _> => mkN022 form1;
<_ + "кше", _> => mkN022 form1;
<_ + "йде", _> => mkN022 form1;
<_ + "еде", _> => mkN055 form1;
<_ + "өбе", _> => mkN022 form1;
<_ + "ңге", _> => mkN055 form1;
<_ + "іс", _> => mkN007 form1;
<_ + "ес", _> => mkN007 form1;
<_ + "үс", _> => mkN007 form1;
<_ + "өс", _> => mkN007 form1;
<_ + "ап", _> => mkN028 form1;
<_ + "оп", _> => mkN001 form1;
<_ + "ып", _> => mkN001 form1;
<_ + "ит", _> => mkN007 form1;
<_ + "өт", _> => mkN007 form1;
<_ + "ет", _> => mkN007 form1;
<_ + "үт", _> => mkN007 form1;
<_ + "іт", _> => mkN007 form1;
<_ + "ст", _> => mkN007 form1;
<_ + "ақ", _> => mkN013 form1;
<_ + "яқ", _> => mkN013 form1;
<_ + "еш", _> => mkN007 form1;
<_ + "іш", _> => mkN007 form1;
<_ + "үш", _> => mkN007 form1;
<_ + "ам", _> => mkN032 form1;
<_ + "ым", _> => mkN002 form1;
<_ + "ұм", _> => mkN002 form1;
<_ + "ән", _> => mkN014 form1;
<_ + "ін", _> => mkN014 form1;
<_ + "ен", _> => mkN014 form1;
<_ + "үн", _> => mkN014 form1;
<_ + "өң", _> => mkN014 form1;
<_ + "ең", _> => mkN014 form1;
<_ + "ің", _> => mkN014 form1;
<_ + "үң", _> => mkN014 form1;
<_ + "вр", _> => mkN004 form1;
<_ + "ір", _> => mkN024 form1;
<_ + "ер", _> => mkN024 form1;
<_ + "үр", _> => mkN024 form1;
<_ + "өр", _> => mkN024 form1;
<_ + "әр", _> => mkN024 form1;
<_ + "ел", _> => mkN025 form1;
<_ + "іл", _> => mkN025 form1;
<_ + "өл", _> => mkN025 form1;
<_ + "үл", _> => mkN025 form1;
<_ + "ек", _> => mkN023 form1;
<_ + "із", _> => mkN016 form1;
<_ + "өз", _> => mkN016 form1;
<_ + "үз", _> => mkN016 form1;
<_ + "ез", _> => mkN016 form1;
<_ + "ий", _> => mkN011 form1;
<_ + "ей", _> => mkN011 form1;
<_ + "еу", _> => mkN024 form1;
<_ + "ва", _> => mkN056 form1;
<_ + "уа", _> => mkN056 form1;
<_ + "йы", _> => mkN056 form1;
<_ + "ия", _> => mkN056 form1;
<_ + "ні", _> => mkN022 form1;
<_ + "рі", _> => mkN022 form1;
<_ + "сі", _> => mkN022 form1;
<_ + "ке", _> => mkN022 form1;
<_ + "ме", _> => mkN022 form1;
<_ + "зе", _> => mkN022 form1;
<_ + "же", _> => mkN022 form1;
<_ + "пе", _> => mkN055 form1;
<_ + "с", _> => mkN001 form1;
<_ + "п", _> => mkN007 form1;
<_ + "т", _> => mkN001 form1;
<_ + "д", _> => mkN001 form1;
<_ + "қ", _> => mkN001 form1;
<_ + "ш", _> => mkN001 form1;
<_ + "х", _> => mkN001 form1;
<_ + "м", _> => mkN014 form1;
<_ + "н", _> => mkN002 form1;
<_ + "ң", _> => mkN002 form1;
<_ + "р", _> => mkN010 form1;
<_ + "л", _> => mkN015 form1;
<_ + "к", _> => mkN007 form1;
<_ + "з", _> => mkN012 form1;
<_ + "и", _> => mkN010 form1;
<_ + "й", _> => mkN010 form1;
<_ + "ю", _> => mkN010 form1;
<_ + "у", _> => mkN010 form1;
<_ + "ж", _> => mkN012 form1;
<_ + "а", _> => mkN017 form1;
<_ + "ы", _> => mkN017 form1;
<_ + "я", _> => mkN017 form1;
<_ + "і", _> => mkN057 form1;
<_ + "е", _> => mkN057 form1;
<_ + "ә", _> => mkN057 form1
} ;
regV : Str -> V
= \form -> case form of {
_ + "лту" => mkV005 form;
_ + "рту" => mkV007 form;
_ + "ету" => mkV007 form;
_ + "iту" => mkV007 form;
_ + "үту" => mkV010 form;
_ + "тау" => mkV006 form;
_ + "сау" => mkV006 form;
_ + "нау" => mkV011 form;
_ + "қау" => mkV011 form;
_ + "рау" => mkV026 form;
_ + "ару" => mkV003 form;
_ + "ыру" => mkV003 form;
_ + "iру" => mkV023 form;
_ + "ту" => mkV001 form;
_ + "ау" => mkV002 form;
_ + "лу" => mkV033 form;
_ + "шу" => mkV010 form;
_ + "уу" => mkV006 form;
_ + "еу" => mkV009 form;
_ + "су" => mkV010 form;
_ + "бу" => mkV020 form;
_ + "ңу" => mkV023 form;
_ + "у" => mkV016 form
} ;
reg2V : Str -> Str -> V
= \form1, form2 -> case <form1, form2> of {
<_ + "лту", _> => mkV005 form1;
<_ + "рту", _> => mkV007 form1;
<_ + "ету", _> => mkV007 form1;
<_ + "iту", _> => mkV007 form1;
<_ + "үту", _> => mkV010 form1;
<_ + "тау", _> => mkV006 form1;
<_ + "сау", _> => mkV006 form1;
<_ + "нау", _> => mkV011 form1;
<_ + "қау", _> => mkV011 form1;
<_ + "рау", _> => mkV026 form1;
<_ + "ару", _> => mkV003 form1;
<_ + "ыру", _> => mkV003 form1;
<_ + "iру", _> => mkV023 form1;
<_ + "ау", _ + "iн"> => mkV011 form1;
<_ + "ту", _> => mkV001 form1;
<_ + "ау", _> => mkV002 form1;
<_ + "лу", _> => mkV033 form1;
<_ + "шу", _> => mkV010 form1;
<_ + "уу", _> => mkV006 form1;
<_ + "еу", _> => mkV009 form1;
<_ + "су", _> => mkV010 form1;
<_ + "бу", _> => mkV020 form1;
<_ + "ңу", _> => mkV023 form1;
<_ + "у", _> => mkV016 form1
} ;
reg3V : Str -> Str -> Str -> V
= \form1, form2, form3 -> case <form1, form2, form3> of {
<_ + "лту", _, _> => mkV005 form1;
<_ + "рту", _, _> => mkV007 form1;
<_ + "ету", _, _> => mkV007 form1;
<_ + "iту", _, _> => mkV007 form1;
<_ + "үту", _, _> => mkV010 form1;
<_ + "тау", _, _> => mkV006 form1;
<_ + "сау", _, _> => mkV006 form1;
<_ + "нау", _, _> => mkV011 form1;
<_ + "қау", _, _> => mkV011 form1;
<_ + "рау", _, _> => mkV026 form1;
<_ + "ару", _, _> => mkV003 form1;
<_ + "ыру", _, _> => mkV003 form1;
<_ + "iру", _, _> => mkV023 form1;
<_ + "ау", _ + "iн", _> => mkV011 form1;
<_ + "ту", _, _> => mkV001 form1;
<_ + "ау", _, _> => mkV002 form1;
<_ + "лу", _, _> => mkV033 form1;
<_ + "шу", _, _> => mkV010 form1;
<_ + "уу", _, _> => mkV006 form1;
<_ + "еу", _, _> => mkV009 form1;
<_ + "су", _, _> => mkV010 form1;
<_ + "бу", _, _> => mkV020 form1;
<_ + "ңу", _, _> => mkV023 form1;
<_ + "у", _, _> => mkV016 form1
} ;
reg4V : Str -> Str -> Str -> Str -> V
= \form1, form2, form3, form4 -> case <form1, form2, form3, form4> of {
<_ + "лту", _, _, _> => mkV005 form1;
<_ + "рту", _, _, _> => mkV007 form1;
<_ + "ету", _, _, _> => mkV007 form1;
<_ + "iту", _, _, _> => mkV007 form1;
<_ + "үту", _, _, _> => mkV010 form1;
<_ + "тау", _, _, _> => mkV006 form1;
<_ + "сау", _, _, _> => mkV006 form1;
<_ + "нау", _, _, _> => mkV011 form1;
<_ + "қау", _, _, _> => mkV011 form1;
<_ + "рау", _, _, _> => mkV026 form1;
<_ + "ару", _, _, _> => mkV003 form1;
<_ + "ыру", _, _, _> => mkV003 form1;
<_ + "iру", _, _, _> => mkV023 form1;
<_ + "ау", _ + "iн", _, _> => mkV011 form1;
<_ + "ту", _, _, _> => mkV001 form1;
<_ + "ау", _, _, _> => mkV002 form1;
<_ + "лу", _, _, _> => mkV033 form1;
<_ + "шу", _, _, _> => mkV010 form1;
<_ + "уу", _, _, _> => mkV006 form1;
<_ + "еу", _, _, _> => mkV009 form1;
<_ + "су", _, _, _> => mkV010 form1;
<_ + "бу", _, _, _> => mkV020 form1;
<_ + "ңу", _, _, _> => mkV023 form1;
<_ + "у", _, _, _> => mkV016 form1
} ;
mkN = overload {
mkN : Str -> N = regN;
mkN : Str -> Str -> N = reg2N
} ;
mkN2 = overload {
mkN2 : N -> N2 = \n -> lin N2 n ** {c2=noPrep};
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 n ** {c2=p};
} ;
mkPN : Str -> PN = \s -> lin PN {s=s} ;
mkLN : Str -> LN = \s -> lin LN {s=s} ;
mkGN : Str -> GN = \s -> lin GN {s=s} ;
mkSN : Str -> SN = \s -> lin SN {s=s} ;
mkV = overload {
mkV : Str -> V = regV;
mkV : Str -> Str -> V = reg2V;
mkV : Str -> Str -> Str -> V = reg3V;
mkV : Str -> Str -> Str -> Str -> V = reg4V
} ;
mkV2 = overload {
mkV2 : V -> V2 = \v -> lin V2 v ** {c2=noPrep} ;
mkV2 : V -> Prep -> V2 = \v,p -> lin V2 v ** {c2=p} ;
} ;
mkVV : V -> VV = \v -> lin VV v ;
mkVS : V -> VS = \v -> lin VS v ;
mkVQ : V -> VQ = \v -> lin VQ v ;
mkVA : V -> VA = \v -> lin VA v ;
mkV2V = overload {
mkV2V : V -> V2V = \v -> lin V2V v ** {c2,c3=noPrep} ;
mkV2V : V -> Prep -> Prep -> V2V = \v,p2,p3 -> lin V2V v ** {c2=p2; c3=p3} ;
} ;
mkV2S = overload {
mkV2S : V -> V2S = \v -> lin V2S v ** {c2,c3=noPrep} ;
mkV2S : V -> Prep -> Prep -> V2S = \v,p2,p3 -> lin V2S v ** {c2=p2; c3=p3} ;
} ;
mkV2Q = overload {
mkV2Q : V -> V2Q = \v -> lin V2Q v ** {c2,c3=noPrep} ;
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p2,p3 -> lin V2Q v ** {c2=p2; c3=p3} ;
} ;
mkV2A = overload {
mkV2A : V -> V2A = \v -> lin V2A v ** {c2,c3=noPrep} ;
mkV2A : V -> Prep -> Prep -> V2A = \v,p2,p3 -> lin V2A v ** {c2=p2; c3=p3} ;
} ;
mkV3 = overload {
mkV3 : V -> V3 = \v -> lin V3 v ** {c2,c3=noPrep} ;
mkV3 : V -> Prep -> Prep -> V3 = \v,p2,p3 -> lin V3 v ** {c2=p2; c3=p3} ;
} ;
mkA : Str -> A = \s -> lin A {s=s} ;
mkA2 : A -> A2 = \a -> lin A2 a ** {c2=noPrep} ;
mkAdv : Str -> Adv = \s -> lin Adv {s=s} ;
mkAdV : Str -> AdV = \s -> lin AdV {s=s} ;
mkAdA : Str -> AdA = \s -> lin AdA {s=s} ;
mkAdN : Str -> AdN = \s -> lin AdN {s=s} ;
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
mkPrep : Str -> Prep = \s -> lin Prep {s=s} ;
noPrep : Prep = lin Prep {s=""} ;
}

291
src/kazakh/ResKaz.gf Normal file
View File

@@ -0,0 +1,291 @@
resource ResKaz = {
oper Compl = {s : Str} ;
param Case = Acc | Nom | Instr | Ablat | Gen | Loc | Dat ;
param Number = Sg | Pl ;
param Possession = Poss3Pl | Poss2Pl Formality | Poss1Pl | Poss2Sg Formality | Poss3Sg | Poss1Sg ;
param Formality = Formal | Informal ;
oper Noun = {s: Case => Number => Str; poss: Possession => Number => Str} ; -- 1651
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30 ->
{ s = table {
Nom => table {
Sg => f1 ;
Pl => f2
} ;
Acc => table {
Sg => f3 ;
Pl => f4
} ;
Dat => table {
Sg => f5 ;
Pl => f6
} ;
Gen => table {
Sg => f7 ;
Pl => f8
} ;
Ablat => table {
Sg => f9 ;
Pl => f10
} ;
Instr => table {
Sg => f11 ;
Pl => f12
} ;
Loc => table {
Sg => f13 ;
Pl => f14
}
} ;
poss = table {
Poss1Pl => table {
Sg => f15 ;
Pl => f16
} ;
Poss1Sg => table {
Sg => f17 ;
Pl => f18
} ;
Poss2Sg Informal => table {
Sg => f19 ;
Pl => f20
} ;
Poss2Sg Formal => table {
Sg => f21 ;
Pl => f22
} ;
Poss2Pl Informal => table {
Sg => f23 ;
Pl => f24
} ;
Poss2Pl Formal => table {
Sg => f25 ;
Pl => f26
} ;
Poss3Sg => table {
Sg => f27 ;
Pl => f28
} ;
Poss3Pl => table {
Sg => f29 ;
Pl => f30
}
}
} ;
param Polarity = Neg | Pos ;
param Number = Sg | Pl ;
param Formality = Formal | Informal ;
oper Verb = {Infinitive: Str; Indicative: {Fut: Str; Pres: {Progressive: Polarity => {P1: {noFormality: Number => Str}; P2: Number => Str; P3: {noFormality: Number => Str}}; noAspect: Polarity => {P1: {noFormality: Number => Str}; P2: Number => Str; P3: {noFormality: Number => Str}}}; Past: {Perfect: Polarity => {P1: {noFormality: Number => Str}; P2: Number => Str; P3: {noFormality: Number => Str}}; Progressive: Polarity => {P1: {noFormality: Number => Str}; P2: Number => Str; P3: {noFormality: Number => Str}}; noAspect: Polarity => {P1: {noFormality: Number => Str}; P2: Number => Str; P3: {noFormality: Number => Str}}}}; Imperative_Jussive: Polarity => Formality => Number => Str; Subjunctive: {P1: {noFormality: Number => Str}; P2: Number => Str; P3: {noFormality: Number => Str}}} ; -- 113
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43,f44,f45,f46,f47,f48,f49,f50,f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65,f66,f67,f68,f69,f70,f71,f72,f73,f74,f75,f76,f77,f78,f79,f80,f81,f82,f83,f84,f85,f86,f87,f88,f89,f90,f91,f92,f93,f94,f95,f96,f97,f98 ->
{ Infinitive = f1 ;
Indicative = { Fut = f2 ;
Pres = { Progressive = table {
Pos => { P1 = { noFormality = table {
Sg => f3 ;
Pl => f4
}
} ;
P2 = table {
Sg => f5 ;
Pl => f6
} ;
P3 = { noFormality = table {
Sg => f7 ;
Pl => f8
}
}
} ;
Neg => { P1 = { noFormality = table {
Sg => f9 ;
Pl => f10
}
} ;
P2 = table {
Sg => f11 ;
Pl => f12
} ;
P3 = { noFormality = table {
Sg => f13 ;
Pl => f14
}
}
}
} ;
noAspect = table {
Pos => { P1 = { noFormality = table {
Sg => f15 ;
Pl => f16
}
} ;
P2 = table {
Sg => f17 ;
Pl => f18
} ;
P3 = { noFormality = table {
Sg => f19 ;
Pl => f20
}
}
} ;
Neg => { P1 = { noFormality = table {
Sg => f21 ;
Pl => f22
}
} ;
P2 = table {
Sg => f23 ;
Pl => f24
} ;
P3 = { noFormality = table {
Sg => f25 ;
Pl => f26
}
}
}
}
} ;
Past = { Perfect = table {
Pos => { P1 = { noFormality = table {
Sg => f27 ;
Pl => f28
}
} ;
P2 = table {
Sg => f29 ;
Pl => f30
} ;
P3 = { noFormality = table {
Sg => f31 ;
Pl => f32
}
}
} ;
Neg => { P1 = { noFormality = table {
Sg => f33 ;
Pl => f34
}
} ;
P2 = table {
Sg => f35 ;
Pl => f36
} ;
P3 = { noFormality = table {
Sg => f37 ;
Pl => f38
}
}
}
} ;
Progressive = table {
Pos => { P1 = { noFormality = table {
Sg => f39 ;
Pl => f40
}
} ;
P2 = table {
Sg => f41 ;
Pl => f42
} ;
P3 = { noFormality = table {
Sg => f43 ;
Pl => f44
}
}
} ;
Neg => { P1 = { noFormality = table {
Sg => f45 ;
Pl => f46
}
} ;
P2 = table {
Sg => f47 ;
Pl => f48
} ;
P3 = { noFormality = table {
Sg => f49 ;
Pl => f50
}
}
}
} ;
noAspect = table {
Pos => { P1 = { noFormality = table {
Sg => f51 ;
Pl => f52
}
} ;
P2 = table {
Sg => f53 ;
Pl => f54
} ;
P3 = { noFormality = table {
Sg => f55 ;
Pl => f56
}
}
} ;
Neg => { P1 = { noFormality = table {
Sg => f57 ;
Pl => f58
}
} ;
P2 = table {
Sg => f59 ;
Pl => f60
} ;
P3 = { noFormality = table {
Sg => f61 ;
Pl => f62
}
}
}
}
}
} ;
Imperative_Jussive = table {
Pos => table {
Informal => table {
Sg => f63 ;
Pl => f64
} ;
Formal => table {
Sg => f65 ;
Pl => f66
}
} ;
Neg => table {
Informal => table {
Sg => f67 ;
Pl => f68
} ;
Formal => table {
Sg => f69 ;
Pl => f70
}
}
} ;
Subjunctive = { P1 = { noFormality = table {
Sg => f71 ;
Pl => f72
}
} ;
P2 = table {
Sg => f73 ;
Pl => f74
} ;
P3 = { noFormality = table {
Sg => f75 ;
Pl => f76
}
}
}
} ;
}