forked from GitHub/gf-core
Maltese RG: update ParadigmsMlt to generate a nice table in the RGL Synopsis
This commit is contained in:
@@ -335,10 +335,11 @@ readFileC cod file = do
|
|||||||
system $ "iconv -f ISO-8859-1 -t UTF-8 " ++ file ++ " >" ++ tmp
|
system $ "iconv -f ISO-8859-1 -t UTF-8 " ++ file ++ " >" ++ tmp
|
||||||
readFile tmp
|
readFile tmp
|
||||||
|
|
||||||
|
-- 'intelligently' determine the coding of a file
|
||||||
coding file = case language file of
|
coding file = case language file of
|
||||||
"Pol" -> "utf8"
|
"Pol" -> "utf8"
|
||||||
"Rus" -> "utf8"
|
"Rus" -> "utf8"
|
||||||
|
"Mlt" -> "utf8"
|
||||||
_ -> "latin1"
|
_ -> "latin1"
|
||||||
|
|
||||||
language = reverse . take 3 . drop 3 . reverse
|
language = reverse . take 3 . drop 3 . reverse
|
||||||
|
|
||||||
|
|||||||
@@ -345,12 +345,12 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
tkaghweg_KGHWG_2_7009_V = mkV_II "tkagħweġ" (mkRoot "k-għ-w-ġ") ;
|
tkaghweg_KGHWG_2_7009_V = mkV_II "tkagħweġ" (mkRoot "k-għ-w-ġ") ;
|
||||||
kolja_KLJJ_1_7010_V = mkV "kolja" (mkRoot "k-l-j-j") ;
|
kolja_KLJJ_1_7010_V = mkV "kolja" (mkRoot "k-l-j-j") ;
|
||||||
kampa_KMPJ_1_7011_V = mkV "kampa" (mkRoot "k-m-p-j") ;
|
kampa_KMPJ_1_7011_V = mkV "kampa" (mkRoot "k-m-p-j") ;
|
||||||
kompla_KMPLJ_1_7012_V = mkV quadWeak form1 (mkRoot "k-m-pl-j") (mkPattern "o" "a")
|
kompla_KMPLJ_1_7012_V = mkV quadWeak form1 (mkRoot "k-m-pl-j") (mkVowels "o" "a")
|
||||||
"komplejt" "komplejt" "kompla" "kompliet" "komplejna" "komplejtu" "komplew"
|
"komplejt" "komplejt" "kompla" "kompliet" "komplejna" "komplejtu" "komplew"
|
||||||
"nkompli" "tkompli" "jkompli" "tkompli" "nkomplu" "tkomplu" "jkomplu"
|
"nkompli" "tkompli" "jkompli" "tkompli" "nkomplu" "tkomplu" "jkomplu"
|
||||||
"kompli" "komplu"
|
"kompli" "komplu"
|
||||||
;
|
;
|
||||||
tkompla_KMPLJ_2_7013_V = mkV quadWeak form2 (mkRoot "k-m-pl-j") (mkPattern "o" "a")
|
tkompla_KMPLJ_2_7013_V = mkV quadWeak form2 (mkRoot "k-m-pl-j") (mkVowels "o" "a")
|
||||||
"tkomplejt" "tkomplejt" "tkompla" "tkompliet" "tkomplejna" "tkomplejtu" "tkomplew"
|
"tkomplejt" "tkomplejt" "tkompla" "tkompliet" "tkomplejna" "tkomplejtu" "tkomplew"
|
||||||
"nitkompla" "titkompla" "jitkompla" "titkompla" "nitkomplu" "titkomplu" "jitkomplu"
|
"nitkompla" "titkompla" "jitkompla" "titkompla" "nitkomplu" "titkomplu" "jitkomplu"
|
||||||
"tkompla" "tkomplu"
|
"tkompla" "tkomplu"
|
||||||
@@ -428,12 +428,12 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
mander_MNDR_1_7085_V = mkV "mander" (mkRoot "m-n-d-r") ;
|
mander_MNDR_1_7085_V = mkV "mander" (mkRoot "m-n-d-r") ;
|
||||||
tmandar_MNDR_2_7086_V = mkV_II "tmandar" (mkRoot "m-n-d-r") ;
|
tmandar_MNDR_2_7086_V = mkV_II "tmandar" (mkRoot "m-n-d-r") ;
|
||||||
menghel_MNGHL_1_7087_V = mkV "mengħel" (mkRoot "m-n-għ-l") ;
|
menghel_MNGHL_1_7087_V = mkV "mengħel" (mkRoot "m-n-għ-l") ;
|
||||||
mantna_MNTNJ_1_7088_V = mkV quadWeak form1 (mkRoot "m-n-tn-j") (mkPattern "a" "a")
|
mantna_MNTNJ_1_7088_V = mkV quadWeak form1 (mkRoot "m-n-tn-j") (mkVowels "a" "a")
|
||||||
"mantnejt" "mantnejt" "mantna" "mantniet" "mantnejna" "mantnejtu" "mantnew"
|
"mantnejt" "mantnejt" "mantna" "mantniet" "mantnejna" "mantnejtu" "mantnew"
|
||||||
"nmantna" "tmantna" "jmantna" "tmantna" "nmantnu" "tmantnu" "jmantnu"
|
"nmantna" "tmantna" "jmantna" "tmantna" "nmantnu" "tmantnu" "jmantnu"
|
||||||
"mantna" "mantnu"
|
"mantna" "mantnu"
|
||||||
;
|
;
|
||||||
tmantna_MNTNJ_2_7089_V = mkV quadWeak form2 (mkRoot "m-n-tn-j") (mkPattern "a" "a")
|
tmantna_MNTNJ_2_7089_V = mkV quadWeak form2 (mkRoot "m-n-tn-j") (mkVowels "a" "a")
|
||||||
"tmantnejt" "tmantnejt" "tmantna" "tmantniet" "tmantnejna" "tmantnejtu" "tmantnew"
|
"tmantnejt" "tmantnejt" "tmantna" "tmantniet" "tmantnejna" "tmantnejtu" "tmantnew"
|
||||||
"nitmantna" "titmantna" "jitmantna" "titmantna" "nitmantnu" "titmantnu" "jitmantnu"
|
"nitmantna" "titmantna" "jitmantna" "titmantna" "nitmantnu" "titmantnu" "jitmantnu"
|
||||||
"tmantna" "tmantnu"
|
"tmantna" "tmantnu"
|
||||||
@@ -784,12 +784,12 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
balla'_BLGH_2_7436_V = mkV_II "balla'" (mkRoot "b-l-għ") ;
|
balla'_BLGH_2_7436_V = mkV_II "balla'" (mkRoot "b-l-għ") ;
|
||||||
tballa'_BLGH_5_7437_V = mkV_V "tballa'" (mkRoot "b-l-għ") ;
|
tballa'_BLGH_5_7437_V = mkV_V "tballa'" (mkRoot "b-l-għ") ;
|
||||||
nbela'_BLGH_7_7438_V = mkV_VII "bela'" "nbela'" (mkRoot "b-l-għ") ;
|
nbela'_BLGH_7_7438_V = mkV_VII "bela'" "nbela'" (mkRoot "b-l-għ") ;
|
||||||
blehhen_BLHN_1_7439_V = mkV strong form1 (mkRoot "bl-ħ-n") (mkPattern "e" "e")
|
blehhen_BLHN_1_7439_V = mkV strong form1 (mkRoot "bl-ħ-n") (mkVowels "e" "e")
|
||||||
"bleħħint" "bleħħint" "bleħħen" "bleħħnet" "bleħħinna" "bleħħintu" "bleħħnu"
|
"bleħħint" "bleħħint" "bleħħen" "bleħħnet" "bleħħinna" "bleħħintu" "bleħħnu"
|
||||||
"nbleħħen" "tbleħħen" "jibleħħen" "tbleħħen" "nbleħħnu" "tbleħħnu" "jibleħħnu"
|
"nbleħħen" "tbleħħen" "jibleħħen" "tbleħħen" "nbleħħnu" "tbleħħnu" "jibleħħnu"
|
||||||
"bleħħen" "bleħħnu"
|
"bleħħen" "bleħħnu"
|
||||||
;
|
;
|
||||||
tblehhen_BLHN_2_7440_V = mkV strong form2 (mkRoot "bl-ħ-n") (mkPattern "e" "e")
|
tblehhen_BLHN_2_7440_V = mkV strong form2 (mkRoot "bl-ħ-n") (mkVowels "e" "e")
|
||||||
"tbleħħint" "tbleħħint" "tbleħħen" "tbleħħnet" "tbleħħinna" "tbleħħintu" "tbleħħnu"
|
"tbleħħint" "tbleħħint" "tbleħħen" "tbleħħnet" "tbleħħinna" "tbleħħintu" "tbleħħnu"
|
||||||
"nitbleħħen" "titbleħħen" "jitbleħħen" "titbleħħen" "nitbleħħnu" "titbleħħnu" "jitbleħħnu"
|
"nitbleħħen" "titbleħħen" "jitbleħħen" "titbleħħen" "nitbleħħnu" "titbleħħnu" "jitbleħħnu"
|
||||||
"tbleħħen" "tbleħħnu"
|
"tbleħħen" "tbleħħnu"
|
||||||
@@ -846,7 +846,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
tberrek_BRK_5_7490_V = mkV_V "tberrek" (mkRoot "b-r-k") ;
|
tberrek_BRK_5_7490_V = mkV_V "tberrek" (mkRoot "b-r-k") ;
|
||||||
bierek_BRK_3_7491_V = mkV_III "bierek" (mkRoot "b-r-k") ;
|
bierek_BRK_3_7491_V = mkV_III "bierek" (mkRoot "b-r-k") ;
|
||||||
tbierek_BRK_6_7492_V = mkV_VI "tbierek" (mkRoot "b-r-k") ;
|
tbierek_BRK_6_7492_V = mkV_VI "tbierek" (mkRoot "b-r-k") ;
|
||||||
tbrekken_BRKN_5_7493_V = mkV strong form5 (mkRoot "br-k-n") (mkPattern "e" "e")
|
tbrekken_BRKN_5_7493_V = mkV strong form5 (mkRoot "br-k-n") (mkVowels "e" "e")
|
||||||
"tbrekkint" "tbrekkint" "tbrekken" "tbrekknet" "tbrekkinna" "tbrekkintu" "tbrekknu"
|
"tbrekkint" "tbrekkint" "tbrekken" "tbrekknet" "tbrekkinna" "tbrekkintu" "tbrekknu"
|
||||||
"nitbrekken" "titbrekken" "jitbrekken" "titbrekken" "nitbrekknu" "titbrekknu" "jitbrekknu"
|
"nitbrekken" "titbrekken" "jitbrekken" "titbrekken" "nitbrekknu" "titbrekknu" "jitbrekknu"
|
||||||
"tbrekken" "tbrekknu"
|
"tbrekken" "tbrekknu"
|
||||||
@@ -1484,7 +1484,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
gezz_GZZ_1_8120_V = mkV "ġeżż" (mkRoot "ġ-ż-ż") ;
|
gezz_GZZ_1_8120_V = mkV "ġeżż" (mkRoot "ġ-ż-ż") ;
|
||||||
gezzez_GZZ_2_8121_V = mkV_II "ġeżżeż" (mkRoot "ġ-ż-ż") ;
|
gezzez_GZZ_2_8121_V = mkV_II "ġeżżeż" (mkRoot "ġ-ż-ż") ;
|
||||||
ngezz_GZZ_7_8122_V = mkV_VII "ġeżż" "nġeżż" (mkRoot "ġ-ż-ż") ;
|
ngezz_GZZ_7_8122_V = mkV_VII "ġeżż" "nġeżż" (mkRoot "ġ-ż-ż") ;
|
||||||
gie_GJ'_1_8123_V = presPartV "ġej" (pastPartV "miġjub" (irregularV form1 (mkRoot "ġ-j-'") (mkPattern "ie" [])
|
gie_GJ'_1_8123_V = presPartV "ġej" (pastPartV "miġjub" (irregularV form1 (mkRoot "ġ-j-'") (mkVowels "ie" [])
|
||||||
"ġejt" "ġejt" "ġie" "ġiet" "ġejna" "ġejtu" "ġew"
|
"ġejt" "ġejt" "ġie" "ġiet" "ġejna" "ġejtu" "ġew"
|
||||||
"niġi" "tiġi" "jiġi" "tiġi" "niġu" "tiġu" "jiġu"
|
"niġi" "tiġi" "jiġi" "tiġi" "niġu" "tiġu" "jiġu"
|
||||||
"ejja" "ejjew"
|
"ejja" "ejjew"
|
||||||
@@ -2035,7 +2035,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
tkejjef_KJF_5_8669_V = mkV_V "tkejjef" (mkRoot "k-j-f") ;
|
tkejjef_KJF_5_8669_V = mkV_V "tkejjef" (mkRoot "k-j-f") ;
|
||||||
kejjel_KJL_2_8670_V = mkV_II "kejjel" (mkRoot "k-j-l") ;
|
kejjel_KJL_2_8670_V = mkV_II "kejjel" (mkRoot "k-j-l") ;
|
||||||
tkejjel_KJL_5_8671_V = mkV_V "tkejjel" (mkRoot "k-j-l") ;
|
tkejjel_KJL_5_8671_V = mkV_V "tkejjel" (mkRoot "k-j-l") ;
|
||||||
kiel_KJL_1_8672_V = pastPartV "mikul" (irregularV form1 (mkRoot "k-j-l") (mkPattern "ie" [])
|
kiel_KJL_1_8672_V = pastPartV "mikul" (irregularV form1 (mkRoot "k-j-l") (mkVowels "ie" [])
|
||||||
"kilt" "kilt" "kiel" "kielet" "kilna" "kiltu" "kielu"
|
"kilt" "kilt" "kiel" "kielet" "kilna" "kiltu" "kielu"
|
||||||
"niekol" "tiekol" "jiekol" "tiekol" "nieklu" "tieklu" "jieklu"
|
"niekol" "tiekol" "jiekol" "tiekol" "nieklu" "tieklu" "jieklu"
|
||||||
("kul"|"iekol") ("kulu"|"ieklu")
|
("kul"|"iekol") ("kulu"|"ieklu")
|
||||||
@@ -2062,7 +2062,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
kewa_KWJ_1_8692_V = mkV "kewa" (mkRoot "k-w-j") ;
|
kewa_KWJ_1_8692_V = mkV "kewa" (mkRoot "k-w-j") ;
|
||||||
tkiewa_KWJ_6_8693_V = mkV_VI "tkiewa" (mkRoot "k-w-j") ;
|
tkiewa_KWJ_6_8693_V = mkV_VI "tkiewa" (mkRoot "k-w-j") ;
|
||||||
nkewa_KWJ_7_8694_V = mkV_VII "kewa" "nkewa" (mkRoot "k-w-j") ;
|
nkewa_KWJ_7_8694_V = mkV_VII "kewa" "nkewa" (mkRoot "k-w-j") ;
|
||||||
kien_KWN_1_8695_V = irregularV form1 (mkRoot "k-w-n") (mkPattern "ie" [])
|
kien_KWN_1_8695_V = irregularV form1 (mkRoot "k-w-n") (mkVowels "ie" [])
|
||||||
"kont" "kont" "kien" "kienet" "konna" "kontu" "kienu"
|
"kont" "kont" "kien" "kienet" "konna" "kontu" "kienu"
|
||||||
"nkun" "tkun" "jkun" "tkun" "nkunu" "tkunu" "jkunu"
|
"nkun" "tkun" "jkun" "tkun" "nkunu" "tkunu" "jkunu"
|
||||||
"kun" "kunu"
|
"kun" "kunu"
|
||||||
@@ -2289,7 +2289,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
tmiera_MRJ_6_8915_V = mkV_VI "tmiera" (mkRoot "m-r-j") ;
|
tmiera_MRJ_6_8915_V = mkV_VI "tmiera" (mkRoot "m-r-j") ;
|
||||||
mewweg_MWG_2_8916_V = mkV_II "mewweġ" (mkRoot "m-w-ġ") ;
|
mewweg_MWG_2_8916_V = mkV_II "mewweġ" (mkRoot "m-w-ġ") ;
|
||||||
tmewweg_MWG_5_8917_V = mkV_V "tmewweġ" (mkRoot "m-w-ġ") ;
|
tmewweg_MWG_5_8917_V = mkV_V "tmewweġ" (mkRoot "m-w-ġ") ;
|
||||||
mar_MWR_1_8918_V = presPartV "sejjer" (irregularV form1 (mkRoot "m-w-r") (mkPattern "a" [])
|
mar_MWR_1_8918_V = presPartV "sejjer" (irregularV form1 (mkRoot "m-w-r") (mkVowels "a" [])
|
||||||
"mort" "mort" "mar" "marret" "morna" "mortu" "marru"
|
"mort" "mort" "mar" "marret" "morna" "mortu" "marru"
|
||||||
"mmur" "tmur" "jmur" "tmur" "mmorru" "tmorru" "jmorru"
|
"mmur" "tmur" "jmur" "tmur" "mmorru" "tmorru" "jmorru"
|
||||||
"mur" "morru"
|
"mur" "morru"
|
||||||
@@ -2730,7 +2730,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
nqara_QRJ_7_9354_V = mkV_VII "qara" "nqara" (mkRoot "q-r-j") ;
|
nqara_QRJ_7_9354_V = mkV_VII "qara" "nqara" (mkRoot "q-r-j") ;
|
||||||
qawwa_QWJ_2_9355_V = mkV_II "qawwa" (mkRoot "q-w-j") ;
|
qawwa_QWJ_2_9355_V = mkV_II "qawwa" (mkRoot "q-w-j") ;
|
||||||
tqawwa_QWJ_5_9356_V = mkV_V "tqawwa" (mkRoot "q-w-j") ;
|
tqawwa_QWJ_5_9356_V = mkV_V "tqawwa" (mkRoot "q-w-j") ;
|
||||||
qal_QWL_1_9357_V = irregularV form1 (mkRoot "q-w-l") (mkPattern "a" [])
|
qal_QWL_1_9357_V = irregularV form1 (mkRoot "q-w-l") (mkVowels "a" [])
|
||||||
"għedt" "għedt" "qal" "qalet" "għedna" "għedtu" "qalu"
|
"għedt" "għedt" "qal" "qalet" "għedna" "għedtu" "qalu"
|
||||||
"ngħid" "tgħid" "jgħid" "tgħid" "ngħidu" "tgħidu" "jgħidu"
|
"ngħid" "tgħid" "jgħid" "tgħid" "ngħidu" "tgħidu" "jgħidu"
|
||||||
"għid" "għidu"
|
"għid" "għidu"
|
||||||
@@ -2890,12 +2890,12 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
razan_RZN_1_9510_V = mkV "rażan" (mkRoot "r-ż-n") ;
|
razan_RZN_1_9510_V = mkV "rażan" (mkRoot "r-ż-n") ;
|
||||||
razzan_RZN_2_9511_V = mkV_II "rażżan" (mkRoot "r-ż-n") ;
|
razzan_RZN_2_9511_V = mkV_II "rażżan" (mkRoot "r-ż-n") ;
|
||||||
trazzan_RZN_5_9512_V = mkV_V "trażżan" (mkRoot "r-ż-n") ;
|
trazzan_RZN_5_9512_V = mkV_V "trażżan" (mkRoot "r-ż-n") ;
|
||||||
ra_R'J_1_9513_V = pastPartV "muri" (irregularV form1 (mkRoot "r-'-j") (mkPattern "a" [])
|
ra_R'J_1_9513_V = pastPartV "muri" (irregularV form1 (mkRoot "r-'-j") (mkVowels "a" [])
|
||||||
"rajt" "rajt" "ra" "rat" "rajna" "rajtu" "raw"
|
"rajt" "rajt" "ra" "rat" "rajna" "rajtu" "raw"
|
||||||
"nara" "tara" "jara" "tara" "naraw" "taraw" "jaraw"
|
"nara" "tara" "jara" "tara" "naraw" "taraw" "jaraw"
|
||||||
"ara" "araw"
|
"ara" "araw"
|
||||||
) ;
|
) ;
|
||||||
ntwera_R'J_7_9514_V = irregularV form7 (mkRoot "r-'-j") (mkPattern "e" "e")
|
ntwera_R'J_7_9514_V = irregularV form7 (mkRoot "r-'-j") (mkVowels "e" "e")
|
||||||
"ntwerejt" "ntwerejt" "ntwera" "ntweriet" "ntwerejna" "ntwerejtu" "ntwerew"
|
"ntwerejt" "ntwerejt" "ntwera" "ntweriet" "ntwerejna" "ntwerejtu" "ntwerew"
|
||||||
"nintwera" "tintwera" "jintwera" "tintwera" "nintwerew" "tintwerew" "jintwerew"
|
"nintwera" "tintwera" "jintwera" "tintwera" "nintwerew" "tintwerew" "jintwerew"
|
||||||
"ntwera" "ntwerew"
|
"ntwera" "ntwerew"
|
||||||
@@ -3293,17 +3293,17 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
ntelaq_TLQ_7_9906_V = mkV_VII "telaq" "ntelaq" (mkRoot "t-l-q") ;
|
ntelaq_TLQ_7_9906_V = mkV_VII "telaq" "ntelaq" (mkRoot "t-l-q") ;
|
||||||
tellet_TLT_2_9907_V = mkV_II "tellet" (mkRoot "t-l-t") ;
|
tellet_TLT_2_9907_V = mkV_II "tellet" (mkRoot "t-l-t") ;
|
||||||
ttellet_TLT_5_9908_V = mkV_V "ttellet" (mkRoot "t-l-t") ;
|
ttellet_TLT_5_9908_V = mkV_V "ttellet" (mkRoot "t-l-t") ;
|
||||||
tamma_TM'_2_9909_V = mkV irregular form2 (mkRoot "t-m-'") (mkPattern "a" "a")
|
tamma_TM'_2_9909_V = mkV irregular form2 (mkRoot "t-m-'") (mkVowels "a" "a")
|
||||||
"tammajt" "tammajt" "tamma" "tammat" "tammajna" "tammajtu" "tammaw"
|
"tammajt" "tammajt" "tamma" "tammat" "tammajna" "tammajtu" "tammaw"
|
||||||
"nitamma" "titamma" "jitamma" "titamma" "nitammaw" "titammaw" "jitammaw"
|
"nitamma" "titamma" "jitamma" "titamma" "nitammaw" "titammaw" "jitammaw"
|
||||||
"tamma" "tammaw"
|
"tamma" "tammaw"
|
||||||
;
|
;
|
||||||
tama_TM'_3_9910_V = mkV irregular form3 (mkRoot "t-m-'") (mkPattern "a" "a")
|
tama_TM'_3_9910_V = mkV irregular form3 (mkRoot "t-m-'") (mkVowels "a" "a")
|
||||||
"tamajt" "tamajt" "tama" "tamat" "tamajna" "tamajtu" "tamaw"
|
"tamajt" "tamajt" "tama" "tamat" "tamajna" "tamajtu" "tamaw"
|
||||||
"nitama" "titama" "jitama" "titama" "nitamaw" "titamaw" "jitamaw"
|
"nitama" "titama" "jitama" "titama" "nitamaw" "titamaw" "jitamaw"
|
||||||
"tama" "tamaw"
|
"tama" "tamaw"
|
||||||
;
|
;
|
||||||
ttama_TM'_6_9911_V = mkV irregular form6 (mkRoot "t-m-'") (mkPattern "a" "a")
|
ttama_TM'_6_9911_V = mkV irregular form6 (mkRoot "t-m-'") (mkVowels "a" "a")
|
||||||
"ttamajt" "ttamajt" "ttama" "ttamat" "ttamajna" "ttamajtu" "ttamaw"
|
"ttamajt" "ttamajt" "ttama" "ttamat" "ttamajna" "ttamajtu" "ttamaw"
|
||||||
"nittama" "tittama" "jittama" "tittama" "nittamaw" "tittamaw" "jittamaw"
|
"nittama" "tittama" "jittama" "tittama" "nittamaw" "tittamaw" "jittamaw"
|
||||||
"ttama" "ttamaw"
|
"ttama" "ttamaw"
|
||||||
@@ -3458,7 +3458,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
wieled_WLD_3_10059_V = mkV_III "wieled" (mkRoot "w-l-d") ;
|
wieled_WLD_3_10059_V = mkV_III "wieled" (mkRoot "w-l-d") ;
|
||||||
twelled_WLD_5_10060_V = mkV_V "twelled" (mkRoot "w-l-d") ;
|
twelled_WLD_5_10060_V = mkV_V "twelled" (mkRoot "w-l-d") ;
|
||||||
twieled_WLD_6_10061_V = mkV_VI "twieled" (mkRoot "w-l-d") ;
|
twieled_WLD_6_10061_V = mkV_VI "twieled" (mkRoot "w-l-d") ;
|
||||||
emmen_WMN_1_10062_V = irregularV form1 (mkRoot "w-m-n") (mkPattern "e" "e")
|
emmen_WMN_1_10062_V = irregularV form1 (mkRoot "w-m-n") (mkVowels "e" "e")
|
||||||
"emmint" "emmint" "emmen" "emmnet" "emminna" "emmintu" "emmnu"
|
"emmint" "emmint" "emmen" "emmnet" "emminna" "emmintu" "emmnu"
|
||||||
"nemmen" "temmen" "jemmen" "temmen" "nemmnu" "temmnu" "jemmnu"
|
"nemmen" "temmen" "jemmen" "temmen" "nemmnu" "temmnu" "jemmnu"
|
||||||
"emmen" "emmnu"
|
"emmen" "emmnu"
|
||||||
@@ -4167,78 +4167,78 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
tghazza_GHZW_5_10764_V = mkV_V "tgħażża" (mkRoot "għ-ż-w") ;
|
tghazza_GHZW_5_10764_V = mkV_V "tgħażża" (mkRoot "għ-ż-w") ;
|
||||||
hassel_HSL_2_10765_V = mkV_II "ħassel" (mkRoot "ħ-s-l") ;
|
hassel_HSL_2_10765_V = mkV_II "ħassel" (mkRoot "ħ-s-l") ;
|
||||||
thassel_HSL_5_10766_V = mkV_V "tħassel" (mkRoot "ħ-s-l") ;
|
thassel_HSL_5_10766_V = mkV_V "tħassel" (mkRoot "ħ-s-l") ;
|
||||||
ta_GHTJ_1_10767_V = pastPartV "mogħti" (irregularV form1 (mkRoot "għ-t-j") (mkPattern "a" [])
|
ta_GHTJ_1_10767_V = pastPartV "mogħti" (irregularV form1 (mkRoot "għ-t-j") (mkVowels "a" [])
|
||||||
"tajt" "tajt" "ta" "tat" "tajna" "tajtu" "taw"
|
"tajt" "tajt" "ta" "tat" "tajna" "tajtu" "taw"
|
||||||
"nagħti" "tagħti" "jagħti" "tagħti" "nagħtu" "tagħtu" "jagħtu"
|
"nagħti" "tagħti" "jagħti" "tagħti" "nagħtu" "tagħtu" "jagħtu"
|
||||||
"agħti" "agħtu"
|
"agħti" "agħtu"
|
||||||
) ;
|
) ;
|
||||||
nghata_GHTJ_7_10768_V = mkV_VII "għata" "ngħata" (mkRoot "għ-t-j") ;
|
nghata_GHTJ_7_10768_V = mkV_VII "għata" "ngħata" (mkRoot "għ-t-j") ;
|
||||||
idda_'DJ_8_10771_V = irregularV form8 (mkRoot "'-d-j") (mkPattern "i" "e")
|
idda_'DJ_8_10771_V = irregularV form8 (mkRoot "'-d-j") (mkVowels "i" "e")
|
||||||
"iddejt" "iddejt" "idda" "iddiet" "iddejna" "iddejtu" "iddew"
|
"iddejt" "iddejt" "idda" "iddiet" "iddejna" "iddejtu" "iddew"
|
||||||
"niddi" "tiddi" "jiddi" "tiddi" "niddu" "tiddu" "jiddu"
|
"niddi" "tiddi" "jiddi" "tiddi" "niddu" "tiddu" "jiddu"
|
||||||
"iddi" "iddu"
|
"iddi" "iddu"
|
||||||
;
|
;
|
||||||
idden_'DN_2_10772_V = irregularV form2 (mkRoot "'-d-n") (mkPattern "i" "e")
|
idden_'DN_2_10772_V = irregularV form2 (mkRoot "'-d-n") (mkVowels "i" "e")
|
||||||
"iddint" "iddint" "idden" "iddnet" "iddinna" "iddinntu" "iddnu"
|
"iddint" "iddint" "idden" "iddnet" "iddinna" "iddinntu" "iddnu"
|
||||||
"nidden" "tidden" "jidden" "tidden" "niddnu" "tiddnu" "jiddnu"
|
"nidden" "tidden" "jidden" "tidden" "niddnu" "tiddnu" "jiddnu"
|
||||||
"idden" "iddnu"
|
"idden" "iddnu"
|
||||||
;
|
;
|
||||||
stieden_'DN_10_10773_V = irregularV form10 (mkRoot "'-d-n") (mkPattern "ie" "e")
|
stieden_'DN_10_10773_V = irregularV form10 (mkRoot "'-d-n") (mkVowels "ie" "e")
|
||||||
"stedint" "stedint" "stieden" "stiednet" "stedinna" "stedintu" "stiednu"
|
"stedint" "stedint" "stieden" "stiednet" "stedinna" "stedintu" "stiednu"
|
||||||
"nistieden" "tistieden" "jistieden" "tistieden" "nistiednu" "tistiednu" "jistiednu"
|
"nistieden" "tistieden" "jistieden" "tistieden" "nistiednu" "tistiednu" "jistiednu"
|
||||||
"stieden" "stiednu"
|
"stieden" "stiednu"
|
||||||
;
|
;
|
||||||
af_''F_1_10774_V = irregularV form1 (mkRoot "'-'-f") (mkPattern "a" [])
|
af_''F_1_10774_V = irregularV form1 (mkRoot "'-'-f") (mkVowels "a" [])
|
||||||
"kont naf" "kont taf" "kien jaf" "kienet taf" "konna nafu" "kontu tafu" "kienu jafu" --- will fail for negative
|
"kont naf" "kont taf" "kien jaf" "kienet taf" "konna nafu" "kontu tafu" "kienu jafu" --- will fail for negative
|
||||||
"naf" "taf" "jaf" "taf" "nafu" "tafu" "jafu"
|
"naf" "taf" "jaf" "taf" "nafu" "tafu" "jafu"
|
||||||
"kun af" "kunu afu"
|
"kun af" "kunu afu"
|
||||||
;
|
;
|
||||||
ntaf_''F_7_10775_V = irregularV form2 (mkRoot "'-'-f") (mkPattern "a" [])
|
ntaf_''F_7_10775_V = irregularV form2 (mkRoot "'-'-f") (mkVowels "a" [])
|
||||||
"ntafejt" "ntafejt" "ntaf" "ntafet" "ntafna" "ntaftu" "ntafu"
|
"ntafejt" "ntafejt" "ntaf" "ntafet" "ntafna" "ntaftu" "ntafu"
|
||||||
"nintaf" "tintaf" "jintaf" "tintaf" "nintafu" "tintafu" "jintafu"
|
"nintaf" "tintaf" "jintaf" "tintaf" "nintafu" "tintafu" "jintafu"
|
||||||
"ntaf" "ntafu"
|
"ntaf" "ntafu"
|
||||||
;
|
;
|
||||||
ha_'HD_1_10776_V = irregularV form1 (mkRoot "'-ħ-d") (mkPattern "a" [])
|
ha_'HD_1_10776_V = irregularV form1 (mkRoot "'-ħ-d") (mkVowels "a" [])
|
||||||
"ħadt" "ħadt" "ħa" "ħadet" "ħadna" "ħadtu" "ħadu"
|
"ħadt" "ħadt" "ħa" "ħadet" "ħadna" "ħadtu" "ħadu"
|
||||||
"nieħu" "tieħu" "jieħu" "tieħu" "nieħdu" "tieħdu" "jieħdu"
|
"nieħu" "tieħu" "jieħu" "tieħu" "nieħdu" "tieħdu" "jieħdu"
|
||||||
"ħu" "ħudu"
|
"ħu" "ħudu"
|
||||||
;
|
;
|
||||||
ttiehed_'HD_6_10777_V = irregularV form6 (mkRoot "'-ħ-d") (mkPattern "ie" "e")
|
ttiehed_'HD_6_10777_V = irregularV form6 (mkRoot "'-ħ-d") (mkVowels "ie" "e")
|
||||||
"ttieħedt" "ttieħedt" "ttieħed" "ttieħdet" "ttieħedna" "ttieħedtu" "ttieħdu"
|
"ttieħedt" "ttieħedt" "ttieħed" "ttieħdet" "ttieħedna" "ttieħedtu" "ttieħdu"
|
||||||
"nittieħed" "tittieħed" "jittieħed" "tittieħed" "nittieħdu" "tittieħdu" "jittieħdu"
|
"nittieħed" "tittieħed" "jittieħed" "tittieħed" "nittieħdu" "tittieħdu" "jittieħdu"
|
||||||
"ttieħed" "ttieħdu"
|
"ttieħed" "ttieħdu"
|
||||||
;
|
;
|
||||||
staha_'HJ_10_10778_V = irregularV form10 (mkRoot "'-ħ-j") (mkPattern "a" "a")
|
staha_'HJ_10_10778_V = irregularV form10 (mkRoot "'-ħ-j") (mkVowels "a" "a")
|
||||||
"stħajt" "stħajt" "staħa" "stħiet" "stħajna" "stħajtu" "stħew"
|
"stħajt" "stħajt" "staħa" "stħiet" "stħajna" "stħajtu" "stħew"
|
||||||
"nistħi" "tistħi" "jistħi" "tistħi" "nistħu" "tistħu" "jistħu"
|
"nistħi" "tistħi" "jistħi" "tistħi" "nistħu" "tistħu" "jistħu"
|
||||||
"istħi" "istħu"
|
"istħi" "istħu"
|
||||||
;
|
;
|
||||||
amar_'MR_1_10779_V = irregularV form1 (mkRoot "'-m-r") (mkPattern "a" "a") -- order, command
|
amar_'MR_1_10779_V = irregularV form1 (mkRoot "'-m-r") (mkVowels "a" "a") -- order, command
|
||||||
"amart" "amart" "amar" "amret" "amarna" "amartu" "amraw"
|
"amart" "amart" "amar" "amret" "amarna" "amartu" "amraw"
|
||||||
"namar" "tamar" "jamar" "tamar" "namraw" "tamraw" "jamraw"
|
"namar" "tamar" "jamar" "tamar" "namraw" "tamraw" "jamraw"
|
||||||
"amar" "amraw"
|
"amar" "amraw"
|
||||||
;
|
;
|
||||||
amba_'MB_1_10780_V = irregularV form1 (mkRoot "'-m-b") (mkPattern "a" "a")
|
amba_'MB_1_10780_V = irregularV form1 (mkRoot "'-m-b") (mkVowels "a" "a")
|
||||||
"ambajt" "ambajt" "amba" "ambat" "ambajna" "ambajtu" "ambaw"
|
"ambajt" "ambajt" "amba" "ambat" "ambajna" "ambajtu" "ambaw"
|
||||||
"namba" "tamba" "jamba" "tamba" "nambaw" "tambaw" "jambaw"
|
"namba" "tamba" "jamba" "tamba" "nambaw" "tambaw" "jambaw"
|
||||||
"amba" "ambaw"
|
"amba" "ambaw"
|
||||||
;
|
;
|
||||||
stenna_'NJ_10_10781_V = pastPartV "mistenni" (irregularV form10 (mkRoot "'-n-j") (mkPattern "e" "a")
|
stenna_'NJ_10_10781_V = pastPartV "mistenni" (irregularV form10 (mkRoot "'-n-j") (mkVowels "e" "a")
|
||||||
"stennejt" "stennejt" "stenna" "stenniet" "stennejna" "stennejtu" "stennew"
|
"stennejt" "stennejt" "stenna" "stenniet" "stennejna" "stennejtu" "stennew"
|
||||||
"nistenna" "tistenna" "jistenna" "tistenna" "nistennew" "tistennew" "jistennew"
|
"nistenna" "tistenna" "jistenna" "tistenna" "nistennew" "tistennew" "jistennew"
|
||||||
"stenna" "stennew"
|
"stenna" "stennew"
|
||||||
) ;
|
) ;
|
||||||
stienes_'NS_10_10782_V = mkV irregular form10 (mkRoot "'-n-s") (mkPattern "ie" "e")
|
stienes_'NS_10_10782_V = mkV irregular form10 (mkRoot "'-n-s") (mkVowels "ie" "e")
|
||||||
"stienist" "stienist" "stienes" "stienset" "stienisna" "stienistu" "stiensu"
|
"stienist" "stienist" "stienes" "stienset" "stienisna" "stienistu" "stiensu"
|
||||||
"nistienes" "tistienes" "jistienes" "tistienes" "nistiensu" "tistiensu" "jistiensu"
|
"nistienes" "tistienes" "jistienes" "tistienes" "nistiensu" "tistiensu" "jistiensu"
|
||||||
"stienes" "stiensu"
|
"stienes" "stiensu"
|
||||||
;
|
;
|
||||||
izza_'ZJ_2_10783_V = irregularV form2 (mkRoot "'-ż-j") (mkPattern "i" "a")
|
izza_'ZJ_2_10783_V = irregularV form2 (mkRoot "'-ż-j") (mkVowels "i" "a")
|
||||||
"iżżajt" "iżżajt" "iżża" "iżżat" "iżżajna" "iżżajtu" "iżżaw"
|
"iżżajt" "iżżajt" "iżża" "iżżat" "iżżajna" "iżżajtu" "iżżaw"
|
||||||
"niżżi" "tiżżi" "jiżżi" "tiżżi" "niżżu" "tiżżu" "jiżżu"
|
"niżżi" "tiżżi" "jiżżi" "tiżżi" "niżżu" "tiżżu" "jiżżu"
|
||||||
"iżżi" "iżżu"
|
"iżżi" "iżżu"
|
||||||
;
|
;
|
||||||
azzem_'ZM_2_10784_V = irregularV form2 (mkRoot "'-ż-m") (mkPattern "a" "e")
|
azzem_'ZM_2_10784_V = irregularV form2 (mkRoot "'-ż-m") (mkVowels "a" "e")
|
||||||
"ażżimt" "ażżimt" "ażżem" "ażżmet" "ażżimna" "ażżimtu" "ażżmu"
|
"ażżimt" "ażżimt" "ażżem" "ażżmet" "ażżimna" "ażżimtu" "ażżmu"
|
||||||
"nażżem" "tażżem" "jażżem" "tażżem" "nażżmu" "tażżmu" "jażżmu"
|
"nażżem" "tażżem" "jażżem" "tażżem" "nażżmu" "tażżmu" "jażżmu"
|
||||||
"ażżem" "ażżmu"
|
"ażżem" "ażżmu"
|
||||||
@@ -4273,12 +4273,12 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
|||||||
pexxex_PXX_2_10812_V = mkV_II "pexxex" (mkRoot "p-x-x") ;
|
pexxex_PXX_2_10812_V = mkV_II "pexxex" (mkRoot "p-x-x") ;
|
||||||
penpen_PNPN_1_10813_V = mkV "penpen" (mkRoot "p-n-p-n") ;
|
penpen_PNPN_1_10813_V = mkV "penpen" (mkRoot "p-n-p-n") ;
|
||||||
hezzez_HZZ_2_10814_V = mkV_II "heżżeż" (mkRoot "h-ż-ż") ;
|
hezzez_HZZ_2_10814_V = mkV_II "heżżeż" (mkRoot "h-ż-ż") ;
|
||||||
wera_R'J_1_10815_V = irregularV form4 (mkRoot "r-'-j") (mkPattern "e" "a")
|
wera_R'J_1_10815_V = irregularV form4 (mkRoot "r-'-j") (mkVowels "e" "a")
|
||||||
"urejt" "urejt" "wera" "uriet" "urejna" "urejtu" "urejna"
|
"urejt" "urejt" "wera" "uriet" "urejna" "urejtu" "urejna"
|
||||||
"nuri" "turi" "juri" "turi" "nuru" "turu" "juru"
|
"nuri" "turi" "juri" "turi" "nuru" "turu" "juru"
|
||||||
"uri" "uru"
|
"uri" "uru"
|
||||||
;
|
;
|
||||||
ntara_R'J_7_10816_V = irregularV form7 (mkRoot "r-'-j") (mkPattern "a" "a")
|
ntara_R'J_7_10816_V = irregularV form7 (mkRoot "r-'-j") (mkVowels "a" "a")
|
||||||
"ntrajt" "ttarajt" "ntara" "ttarat" "ntrajna" "ntrajtu" "ntraw"
|
"ntrajt" "ttarajt" "ntara" "ttarat" "ntrajna" "ntrajtu" "ntraw"
|
||||||
"nintara" "tintara" "jintara" "tintara" "nintaraw" "tintaraw" "jintaraw"
|
"nintara" "tintara" "jintara" "tintara" "nintaraw" "tintaraw" "jintaraw"
|
||||||
"ntara" "ntaraw"
|
"ntara" "ntaraw"
|
||||||
|
|||||||
@@ -318,15 +318,15 @@ concrete LexiconMlt of Lexicon = CatMlt **
|
|||||||
broad_A = mkA "wiesgħa" "wiesgħa" "wiesgħin" ;
|
broad_A = mkA "wiesgħa" "wiesgħa" "wiesgħin" ;
|
||||||
brown_A = sameA "kannella" ;
|
brown_A = sameA "kannella" ;
|
||||||
clean_A = brokenA "nadif" "nodfa" ;
|
clean_A = brokenA "nadif" "nodfa" ;
|
||||||
clever_A = regA "bravu" ;
|
clever_A = mkA "bravu" ;
|
||||||
cold_A = mkA "kiesaħ" "kiesħa" "kesħin" ;
|
cold_A = mkA "kiesaħ" "kiesħa" "kesħin" ;
|
||||||
correct_A = regA "korrett" ;
|
correct_A = mkA "korrett" ;
|
||||||
dirty_A = regA "maħmuġ" ;
|
dirty_A = mkA "maħmuġ" ;
|
||||||
dry_A = regA "niexef" ;
|
dry_A = mkA "niexef" ;
|
||||||
dull_A = sameA "tad-dwejjaq" ;
|
dull_A = sameA "tad-dwejjaq" ;
|
||||||
easy_A2V = dirA2 (sameA "faċli") ;
|
easy_A2V = dirA2 (sameA "faċli") ;
|
||||||
empty_A = mkA "vojt" "vojta" "vojta" ;
|
empty_A = mkA "vojt" "vojta" "vojta" ;
|
||||||
full_A = regA "mimli" ;
|
full_A = mkA "mimli" ;
|
||||||
fun_AV = sameA "pjaċevoli" ;
|
fun_AV = sameA "pjaċevoli" ;
|
||||||
good_A = mkA "tajjeb" "tajba" "tajbin" ;
|
good_A = mkA "tajjeb" "tajba" "tajbin" ;
|
||||||
green_A = mkA "aħdar" "ħadra" "ħodor" ;
|
green_A = mkA "aħdar" "ħadra" "ħodor" ;
|
||||||
@@ -336,24 +336,24 @@ concrete LexiconMlt of Lexicon = CatMlt **
|
|||||||
long_A = brokenA "twil" "twal" "itwal" ;
|
long_A = brokenA "twil" "twal" "itwal" ;
|
||||||
married_A2 = mkA2 (mkA "miżżewweġ" "miżżewġa") lilP ;
|
married_A2 = mkA2 (mkA "miżżewweġ" "miżżewġa") lilP ;
|
||||||
narrow_A = mkA "dejjaq" "dejqa" "dojoq" "idjaq" ;
|
narrow_A = mkA "dejjaq" "dejqa" "dojoq" "idjaq" ;
|
||||||
near_A = regA "viċin" ;
|
near_A = mkA "viċin" ;
|
||||||
new_A = brokenA "ġdid" "ġodda" ;
|
new_A = brokenA "ġdid" "ġodda" ;
|
||||||
old_A = brokenA "qadim" "qodma" "eqdem" ; -- xiħ
|
old_A = brokenA "qadim" "qodma" "eqdem" ; -- xiħ
|
||||||
probable_AS = mkAS (sameA "probabbli") ;
|
probable_AS = mkAS (sameA "probabbli") ;
|
||||||
ready_A = regA "lest" ;
|
ready_A = mkA "lest" ;
|
||||||
red_A = mkA "aħmar" "ħamra" "ħomor" ;
|
red_A = mkA "aħmar" "ħamra" "ħomor" ;
|
||||||
rotten_A = mkA "mħassar" "mħassra" "mħassrin" ;
|
rotten_A = mkA "mħassar" "mħassra" "mħassrin" ;
|
||||||
round_A = regA "tond" ;
|
round_A = mkA "tond" ;
|
||||||
sharp_A = mkA "jaqta'" "taqta'" "jaqtgħu" ;
|
sharp_A = mkA "jaqta'" "taqta'" "jaqtgħu" ;
|
||||||
short_A = brokenA "qasir" "qosra" "iqsar" ;
|
short_A = brokenA "qasir" "qosra" "iqsar" ;
|
||||||
small_A = brokenA "zgħir" "zgħar" "iżgħar" ;
|
small_A = brokenA "zgħir" "zgħar" "iżgħar" ;
|
||||||
smooth_A = regA "lixx" ;
|
smooth_A = mkA "lixx" ;
|
||||||
straight_A = regA "dritt" ;
|
straight_A = mkA "dritt" ;
|
||||||
stupid_A = mkA "iblah" "belha" "boloh" ;
|
stupid_A = mkA "iblah" "belha" "boloh" ;
|
||||||
thick_A = mkA "oħxon" "ħoxna" "ħoxnin" "eħxen" ;
|
thick_A = mkA "oħxon" "ħoxna" "ħoxnin" "eħxen" ;
|
||||||
thin_A = brokenA "rqiq" "rqaq" "rqaq" ;
|
thin_A = brokenA "rqiq" "rqaq" "rqaq" ;
|
||||||
ugly_A = mkA "ikrah" "kerha" "koroh" ;
|
ugly_A = mkA "ikrah" "kerha" "koroh" ;
|
||||||
uncertain_A = regA "inċert" ;
|
uncertain_A = mkA "inċert" ;
|
||||||
warm_A = brokenA "sħun" "sħan" ;
|
warm_A = brokenA "sħun" "sħan" ;
|
||||||
wet_A = mkA "mxarrab" "mxarrba" "mxarrbin" ;
|
wet_A = mkA "mxarrab" "mxarrba" "mxarrbin" ;
|
||||||
white_A = mkA "abjad" "bajda" "bojod" ;
|
white_A = mkA "abjad" "bajda" "bojod" ;
|
||||||
|
|||||||
@@ -45,6 +45,54 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
a = mkAgr num pers gen ;
|
a = mkAgr num pers gen ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
{- Noun --------------------------------------------------------------- -}
|
||||||
|
|
||||||
|
-- Helper function for inferring noun plural from singulative
|
||||||
|
-- Nouns with collective & determinate forms should not use this...
|
||||||
|
inferNounPlural : Str -> Str = \sing ->
|
||||||
|
case sing of {
|
||||||
|
_ + "na" => init sing + "iet" ; -- eg WIDNIET
|
||||||
|
_ + "i" => sing + "n" ; -- eg BAĦRIN, DĦULIN, RAĦLIN
|
||||||
|
_ + ("a"|"u") => init(sing) + "i" ; -- eg ROTI
|
||||||
|
_ + "q" => sing + "at" ; -- eg TRIQAT
|
||||||
|
_ => sing + "i"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Helper function for inferring noun gender from singulative
|
||||||
|
-- Refer {MDG pg190}
|
||||||
|
inferNounGender : Str -> Gender = \sing ->
|
||||||
|
case sing of {
|
||||||
|
_ + "aġni" => Fem ;
|
||||||
|
_ + "anti" => Fem ;
|
||||||
|
_ + "zzjoni" => Fem ;
|
||||||
|
_ + "ġenesi" => Fem ;
|
||||||
|
_ + "ite" => Fem ;
|
||||||
|
_ + "itù" => Fem ;
|
||||||
|
_ + "joni" => Fem ;
|
||||||
|
_ + "ojde" => Fem ;
|
||||||
|
_ + "udni" => Fem ;
|
||||||
|
_ + ("a"|"à") => Fem ;
|
||||||
|
_ => Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
{- Adjective ------------------------------------------------------------ -}
|
||||||
|
|
||||||
|
-- Infer femininine form of adjective from masculine
|
||||||
|
inferAdjFem : Str -> Str ;
|
||||||
|
inferAdjFem masc = case masc of {
|
||||||
|
_ + "ef" => (dropSfx 2 masc) + "fa" ; -- NIEXEF
|
||||||
|
_ + "u" => (init masc) + "a" ; -- BRAVU
|
||||||
|
_ + "i" => masc + "ja" ; -- MIMLI
|
||||||
|
_ => masc + "a" -- VOJT
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Infer plural form of adjective from feminine
|
||||||
|
inferAdjPlural : Str -> Str ;
|
||||||
|
inferAdjPlural fem = case fem of {
|
||||||
|
_ + ("f"|"j"|"ġ") + "a" => (init fem) + "in" ; -- NIEXFA, MIMLIJA, MAĦMUĠA
|
||||||
|
_ => (init fem) + "i" -- BRAVA
|
||||||
|
} ;
|
||||||
|
|
||||||
{- Verb ----------------------------------------------------------------- -}
|
{- Verb ----------------------------------------------------------------- -}
|
||||||
|
|
||||||
oper
|
oper
|
||||||
@@ -64,19 +112,19 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
|
|
||||||
-- IE/I vowel changes
|
-- IE/I vowel changes
|
||||||
-- so far only used in derived verbs
|
-- so far only used in derived verbs
|
||||||
vowelChangesIE : Root -> Pattern -> Pattern = \root,vowels ->
|
vowelChangesIE : Root -> Vowels -> Vowels = \root,vowels ->
|
||||||
case <root, vowels> of { -- see {GO pg93}
|
case <root, vowels> of { -- see {GO pg93}
|
||||||
<{C2="għ"},{V1="ie";V2="e"}> => mkPattern "e" "i" ; -- QIEGĦED > QEGĦIDKOM
|
<{C2="għ"},{V1="ie";V2="e"}> => mkVowels "e" "i" ; -- QIEGĦED > QEGĦIDKOM
|
||||||
<_,{V1="ie";V2="e"}> => mkPattern "i" "i" ; -- WIEĠEB > WIĠIBKOM
|
<_,{V1="ie";V2="e"}> => mkVowels "i" "i" ; -- WIEĠEB > WIĠIBKOM
|
||||||
<_,{V1="ie";V2=""}> => mkPattern "i" ; -- STRIEĦ > STRIĦAJT
|
<_,{V1="ie";V2=""}> => mkVowels "i" ; -- STRIEĦ > STRIĦAJT
|
||||||
_ => vowels
|
_ => vowels
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
{- ~~~ Strong Verb ~~~ -}
|
{- ~~~ Strong Verb ~~~ -}
|
||||||
|
|
||||||
-- Conjugate entire verb in PERFECT tense
|
-- Conjugate entire verb in PERFECT tense
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjStrongPerf : Root -> Pattern -> (VAgr => Str) = \root,p ->
|
conjStrongPerf : Root -> Vowels -> (VAgr => Str) = \root,p ->
|
||||||
let
|
let
|
||||||
ktib = root.C1 + root.C2 + (case p.V2 of {"e" => "i" ; _ => p.V2 }) + root.C3 ;
|
ktib = root.C1 + root.C2 + (case p.V2 of {"e" => "i" ; _ => p.V2 }) + root.C3 ;
|
||||||
kitb = root.C1 + p.V1 + root.C2 + root.C3 ;
|
kitb = root.C1 + p.V1 + root.C2 + root.C3 ;
|
||||||
@@ -95,11 +143,11 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
-- Params: Imperative Singular (eg IKTEB), Imperative Plural (eg IKTBU)
|
-- Params: Imperative Singular (eg IKTEB), Imperative Plural (eg IKTBU)
|
||||||
conjStrongImpf = conjGenericImpf ;
|
conjStrongImpf = conjGenericImpf ;
|
||||||
|
|
||||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjStrongImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
conjStrongImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||||
let
|
let
|
||||||
vwls = vowelChangesStrong patt ;
|
vwls = vowelChangesStrong vseq ;
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
Sg => (vwls!Sg).V1 + root.C1 + root.C2 + (vwls!Sg).V2 + root.C3 ; -- Inti: IKTEB
|
Sg => (vwls!Sg).V1 + root.C1 + root.C2 + (vwls!Sg).V2 + root.C3 ; -- Inti: IKTEB
|
||||||
@@ -107,43 +155,43 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Vowel changes for imperative
|
-- Vowel changes for imperative
|
||||||
vowelChangesStrong : Pattern -> (Number => Pattern) = \patt ->
|
vowelChangesStrong : Vowels -> (Number => Vowels) = \vseq ->
|
||||||
table {
|
table {
|
||||||
Sg => case <patt.V1,patt.V2> of {
|
Sg => case <vseq.V1,vseq.V2> of {
|
||||||
<"a","a"> => mkPattern "o" "o" ; -- RABAT > ORBOT (but: ILGĦAB, AĦBAT)
|
<"a","a"> => mkVowels "o" "o" ; -- RABAT > ORBOT (but: ILGĦAB, AĦBAT)
|
||||||
<"a","e"> => mkPattern "a" "e" ; -- GĦAMEL > AGĦMEL
|
<"a","e"> => mkVowels "a" "e" ; -- GĦAMEL > AGĦMEL
|
||||||
<"e","e"> => mkPattern "i" "e" ; -- FEHEM > IFHEM
|
<"e","e"> => mkVowels "i" "e" ; -- FEHEM > IFHEM
|
||||||
<"e","a"> => mkPattern "i" "a" ; -- FETAĦ > IFTAĦ (but: ONFOĦ)
|
<"e","a"> => mkVowels "i" "a" ; -- FETAĦ > IFTAĦ (but: ONFOĦ)
|
||||||
<"i","e"> => mkPattern "i" "e" ; -- KITEB > IKTEB
|
<"i","e"> => mkVowels "i" "e" ; -- KITEB > IKTEB
|
||||||
<"o","o"> => mkPattern "o" "o" -- GĦOĠOB > OGĦĠOB
|
<"o","o"> => mkVowels "o" "o" -- GĦOĠOB > OGĦĠOB
|
||||||
};
|
};
|
||||||
Pl => case <patt.V1,patt.V2> of {
|
Pl => case <vseq.V1,vseq.V2> of {
|
||||||
<"a","a"> => mkPattern "o" ; -- RABAT > ORBTU
|
<"a","a"> => mkVowels "o" ; -- RABAT > ORBTU
|
||||||
<"a","e"> => mkPattern "a" ; -- GĦAMEL > AGĦMLU
|
<"a","e"> => mkVowels "a" ; -- GĦAMEL > AGĦMLU
|
||||||
<"e","e"> => mkPattern "i" ; -- FEHEM > IFHMU
|
<"e","e"> => mkVowels "i" ; -- FEHEM > IFHMU
|
||||||
<"e","a"> => mkPattern "i" ; -- FETAĦ > IFTĦU
|
<"e","a"> => mkVowels "i" ; -- FETAĦ > IFTĦU
|
||||||
<"i","e"> => mkPattern "i" ; -- KITEB > IKTBU
|
<"i","e"> => mkVowels "i" ; -- KITEB > IKTBU
|
||||||
<"o","o"> => mkPattern "o" -- GĦOĠOB > OGĦĠBU
|
<"o","o"> => mkVowels "o" -- GĦOĠOB > OGĦĠBU
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
{- ~~~ Liquid-Medial Verb ~~~ -}
|
{- ~~~ Liquid-Medial Verb ~~~ -}
|
||||||
|
|
||||||
-- Conjugate entire verb in PERFECT tense
|
-- Conjugate entire verb in PERFECT tense
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjLiquidMedialPerf : Root -> Pattern -> (VAgr => Str) = \root,patt ->
|
conjLiquidMedialPerf : Root -> Vowels -> (VAgr => Str) = \root,vseq ->
|
||||||
let
|
let
|
||||||
zlaq : Str = case root.C1 of {
|
zlaq : Str = case root.C1 of {
|
||||||
"għ" => root.C1 + patt.V1 + root.C2 + (case patt.V2 of {"e" => "i" ; _ => patt.V2 }) + root.C3 ; -- GĦAMIL-
|
"għ" => root.C1 + vseq.V1 + root.C2 + (case vseq.V2 of {"e" => "i" ; _ => vseq.V2 }) + root.C3 ; -- GĦAMIL-
|
||||||
_ => root.C1 + root.C2 + (case patt.V2 of {"e" => "i" ; _ => patt.V2 }) + root.C3 -- ŻLAQ-
|
_ => root.C1 + root.C2 + (case vseq.V2 of {"e" => "i" ; _ => vseq.V2 }) + root.C3 -- ŻLAQ-
|
||||||
} ;
|
} ;
|
||||||
zelq = root.C1 + patt.V1 + root.C2 + root.C3 ;
|
zelq = root.C1 + vseq.V1 + root.C2 + root.C3 ;
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
AgP1 Sg => zlaq + "t" ; -- Jiena ŻLAQT
|
AgP1 Sg => zlaq + "t" ; -- Jiena ŻLAQT
|
||||||
AgP2 Sg => zlaq + "t" ; -- Inti ŻLAQT
|
AgP2 Sg => zlaq + "t" ; -- Inti ŻLAQT
|
||||||
AgP3Sg Masc=> root.C1 + patt.V1 + root.C2 + patt.V2 + root.C3 ; -- Huwa ŻELAQ
|
AgP3Sg Masc=> root.C1 + vseq.V1 + root.C2 + vseq.V2 + root.C3 ; -- Huwa ŻELAQ
|
||||||
AgP3Sg Fem => zelq + (case patt.V2 of {"o" => "o" ; _ => "e"}) + "t" ; -- Hija ŻELQET
|
AgP3Sg Fem => zelq + (case vseq.V2 of {"o" => "o" ; _ => "e"}) + "t" ; -- Hija ŻELQET
|
||||||
AgP1 Pl => zlaq + "na" ; -- Aħna ŻLAQNA
|
AgP1 Pl => zlaq + "na" ; -- Aħna ŻLAQNA
|
||||||
AgP2 Pl => zlaq + "tu" ; -- Intom ŻLAQTU
|
AgP2 Pl => zlaq + "tu" ; -- Intom ŻLAQTU
|
||||||
AgP3Pl => zelq + "u" -- Huma ŻELQU
|
AgP3Pl => zelq + "u" -- Huma ŻELQU
|
||||||
@@ -153,11 +201,11 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
-- Params: Imperative Singular (eg IŻLOQ), Imperative Plural (eg IŻOLQU)
|
-- Params: Imperative Singular (eg IŻLOQ), Imperative Plural (eg IŻOLQU)
|
||||||
conjLiquidMedialImpf = conjGenericImpf ;
|
conjLiquidMedialImpf = conjGenericImpf ;
|
||||||
|
|
||||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjLiquidMedialImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
conjLiquidMedialImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||||
let
|
let
|
||||||
vwls = vowelChangesLiquidMedial patt ;
|
vwls = vowelChangesLiquidMedial vseq ;
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
Sg => (vwls!Sg).V1 + root.C1 + root.C2 + (vwls!Sg).V2 + root.C3 ; -- Inti: IŻLOQ
|
Sg => (vwls!Sg).V1 + root.C1 + root.C2 + (vwls!Sg).V2 + root.C3 ; -- Inti: IŻLOQ
|
||||||
@@ -165,33 +213,33 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Vowel changes for imperative
|
-- Vowel changes for imperative
|
||||||
vowelChangesLiquidMedial : Pattern -> (Number => Pattern) = \patt ->
|
vowelChangesLiquidMedial : Vowels -> (Number => Vowels) = \vseq ->
|
||||||
table {
|
table {
|
||||||
Sg => case <patt.V1,patt.V2> of {
|
Sg => case <vseq.V1,vseq.V2> of {
|
||||||
<"a","a"> => mkPattern "i" "o" ; -- TALAB > ITLOB but ĦARAQ > AĦRAQ
|
<"a","a"> => mkVowels "i" "o" ; -- TALAB > ITLOB but ĦARAQ > AĦRAQ
|
||||||
<"a","e"> => mkPattern "o" "o" ; -- ĦAREĠ > OĦROĠ
|
<"a","e"> => mkVowels "o" "o" ; -- ĦAREĠ > OĦROĠ
|
||||||
<"e","e"> => mkPattern "e" "e" ; -- ĦELES > EĦLES
|
<"e","e"> => mkVowels "e" "e" ; -- ĦELES > EĦLES
|
||||||
<"e","a"> => mkPattern "i" "o" ; -- ŻELAQ > IŻLOQ
|
<"e","a"> => mkVowels "i" "o" ; -- ŻELAQ > IŻLOQ
|
||||||
<"i","e"> => mkPattern "i" "e" ; -- DILEK > IDLEK
|
<"i","e"> => mkVowels "i" "e" ; -- DILEK > IDLEK
|
||||||
<"o","o"> => mkPattern "i" "o" -- XOROB > IXROB
|
<"o","o"> => mkVowels "i" "o" -- XOROB > IXROB
|
||||||
};
|
};
|
||||||
Pl => case <patt.V1,patt.V2> of {
|
Pl => case <vseq.V1,vseq.V2> of {
|
||||||
<"a","a"> => mkPattern "i" "o" ; -- TALAB > ITOLBU
|
<"a","a"> => mkVowels "i" "o" ; -- TALAB > ITOLBU
|
||||||
<"a","e"> => mkPattern "o" "o" ; -- ĦAREĠ > OĦORĠU
|
<"a","e"> => mkVowels "o" "o" ; -- ĦAREĠ > OĦORĠU
|
||||||
<"e","e"> => mkPattern "e" "i" ; -- ĦELES > EĦILSU
|
<"e","e"> => mkVowels "e" "i" ; -- ĦELES > EĦILSU
|
||||||
<"e","a"> => mkPattern "i" "o" ; -- ŻELAQ > IŻOLQU
|
<"e","a"> => mkVowels "i" "o" ; -- ŻELAQ > IŻOLQU
|
||||||
<"i","e"> => mkPattern "i" "i" ; -- DILEK > IDILKU
|
<"i","e"> => mkVowels "i" "i" ; -- DILEK > IDILKU
|
||||||
<"o","o"> => mkPattern "i" "o" -- XOROB > IXORBU
|
<"o","o"> => mkVowels "i" "o" -- XOROB > IXORBU
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
{- ~~~ Geminated Verb ~~~ -}
|
{- ~~~ Geminated Verb ~~~ -}
|
||||||
|
|
||||||
-- Conjugate entire verb in PERFECT tense
|
-- Conjugate entire verb in PERFECT tense
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjGeminatedPerf : Root -> Pattern -> (VAgr => Str) = \root,patt ->
|
conjGeminatedPerf : Root -> Vowels -> (VAgr => Str) = \root,vseq ->
|
||||||
let
|
let
|
||||||
habb = root.C1 + patt.V1 + root.C2 + root.C3 ;
|
habb = root.C1 + vseq.V1 + root.C2 + root.C3 ;
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
AgP1 Sg => habb + "ejt" ; -- Jiena ĦABBEJT
|
AgP1 Sg => habb + "ejt" ; -- Jiena ĦABBEJT
|
||||||
@@ -207,11 +255,11 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
-- Params: Imperative Singular (eg IKTEB), Imperative Plural (eg IKTBU)
|
-- Params: Imperative Singular (eg IKTEB), Imperative Plural (eg IKTBU)
|
||||||
conjGeminatedImpf = conjGenericImpf ;
|
conjGeminatedImpf = conjGenericImpf ;
|
||||||
|
|
||||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjGeminatedImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
conjGeminatedImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||||
let
|
let
|
||||||
vwls = vowelChangesGeminated patt ;
|
vwls = vowelChangesGeminated vseq ;
|
||||||
stem_sg = root.C1 + (vwls!Sg).V1 + root.C2 + root.C3 ;
|
stem_sg = root.C1 + (vwls!Sg).V1 + root.C2 + root.C3 ;
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
@@ -220,30 +268,30 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Vowel changes for imperative
|
-- Vowel changes for imperative
|
||||||
vowelChangesGeminated : Pattern -> (Number => Pattern) = \patt ->
|
vowelChangesGeminated : Vowels -> (Number => Vowels) = \vseq ->
|
||||||
\\n => case patt.V1 of {
|
\\n => case vseq.V1 of {
|
||||||
"e" => mkPattern "e" ; -- BEXX > BEXX (?)
|
"e" => mkVowels "e" ; -- BEXX > BEXX (?)
|
||||||
_ => mkPattern "o" -- ĦABB > ĦOBB
|
_ => mkVowels "o" -- ĦABB > ĦOBB
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
{- ~~~ Assimilative Verb ~~~ -}
|
{- ~~~ Assimilative Verb ~~~ -}
|
||||||
|
|
||||||
-- Conjugate entire verb in PERFECT tense
|
-- Conjugate entire verb in PERFECT tense
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjAssimilativePerf : Root -> Pattern -> (VAgr => Str) = \root,patt ->
|
conjAssimilativePerf : Root -> Vowels -> (VAgr => Str) = \root,vseq ->
|
||||||
let
|
let
|
||||||
wasal = case root.C3 of {
|
wasal = case root.C3 of {
|
||||||
"għ" => root.C1 + patt.V1 + root.C2 + patt.V2 + "j" ;
|
"għ" => root.C1 + vseq.V1 + root.C2 + vseq.V2 + "j" ;
|
||||||
_ => root.C1 + patt.V1 + root.C2 + patt.V2 + root.C3
|
_ => root.C1 + vseq.V1 + root.C2 + vseq.V2 + root.C3
|
||||||
} ;
|
} ;
|
||||||
wasl = root.C1 + patt.V1 + root.C2 + root.C3 ;
|
wasl = root.C1 + vseq.V1 + root.C2 + root.C3 ;
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
AgP1 Sg => wasal + "t" ; -- Jiena WASALT
|
AgP1 Sg => wasal + "t" ; -- Jiena WASALT
|
||||||
AgP2 Sg => wasal + "t" ; -- Inti WASALT
|
AgP2 Sg => wasal + "t" ; -- Inti WASALT
|
||||||
AgP3Sg Masc=> case root.C3 of {
|
AgP3Sg Masc=> case root.C3 of {
|
||||||
"għ" => root.C1 + patt.V1 + root.C2 + patt.V2 + "'" ; -- Huwa WAQA'
|
"għ" => root.C1 + vseq.V1 + root.C2 + vseq.V2 + "'" ; -- Huwa WAQA'
|
||||||
_ => wasal -- Huwa WASAL
|
_ => wasal -- Huwa WASAL
|
||||||
} ;
|
} ;
|
||||||
AgP3Sg Fem => wasl + "et" ; -- Hija WASLET
|
AgP3Sg Fem => wasl + "et" ; -- Hija WASLET
|
||||||
@@ -256,23 +304,23 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
-- Params: Imperative Singular (eg ASAL), Imperative Plural (eg ASLU)
|
-- Params: Imperative Singular (eg ASAL), Imperative Plural (eg ASLU)
|
||||||
conjAssimilativeImpf = conjGenericImpf ;
|
conjAssimilativeImpf = conjGenericImpf ;
|
||||||
|
|
||||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjAssimilativeImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
conjAssimilativeImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||||
table {
|
table {
|
||||||
Sg => patt.V1 + root.C2 + patt.V2 + case root.C3 of { "għ" => "'" ; _ => root.C3 } ; -- Inti: ASAL
|
Sg => vseq.V1 + root.C2 + vseq.V2 + case root.C3 of { "għ" => "'" ; _ => root.C3 } ; -- Inti: ASAL
|
||||||
Pl => patt.V1 + root.C2 + root.C3 + "u" -- Intom: ASLU
|
Pl => vseq.V1 + root.C2 + root.C3 + "u" -- Intom: ASLU
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
{- ~~~ Hollow Verb ~~~ -}
|
{- ~~~ Hollow Verb ~~~ -}
|
||||||
|
|
||||||
-- Conjugate entire verb in PERFECT tense
|
-- Conjugate entire verb in PERFECT tense
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
-- Refer: http://blog.johnjcamilleri.com/2012/07/vowel-patterns-maltese-hollow-verb/
|
-- Refer: http://blog.johnjcamilleri.com/2012/07/vowel-patterns-maltese-hollow-verb/
|
||||||
conjHollowPerf : Root -> Pattern -> (VAgr => Str) = \root,patt ->
|
conjHollowPerf : Root -> Vowels -> (VAgr => Str) = \root,vseq ->
|
||||||
let
|
let
|
||||||
sar = root.C1 + patt.V1 + root.C3 ;
|
sar = root.C1 + vseq.V1 + root.C3 ;
|
||||||
sir = case <patt.V1,root.C2> of {
|
sir = case <vseq.V1,root.C2> of {
|
||||||
<"a","w"> => root.C1 + "o" + root.C3 ; -- DAM, FAR, SAQ (most common case)
|
<"a","w"> => root.C1 + "o" + root.C3 ; -- DAM, FAR, SAQ (most common case)
|
||||||
_ => root.C1 + "i" + root.C3
|
_ => root.C1 + "i" + root.C3
|
||||||
}
|
}
|
||||||
@@ -300,18 +348,18 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
AgP3Pl => pfx_J imp_pl -- Huma JDUMU / JMORRU
|
AgP3Pl => pfx_J imp_pl -- Huma JDUMU / JMORRU
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
-- Refer: http://blog.johnjcamilleri.com/2012/07/vowel-patterns-maltese-hollow-verb/
|
-- Refer: http://blog.johnjcamilleri.com/2012/07/vowel-patterns-maltese-hollow-verb/
|
||||||
conjHollowImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
conjHollowImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||||
let
|
let
|
||||||
sir = case <patt.V1,root.C2> of {
|
sir = case <vseq.V1,root.C2> of {
|
||||||
<"a","w"> => root.C1 + "u" + root.C3 ; -- DAM, FAR, SAQ (most common case)
|
<"a","w"> => root.C1 + "u" + root.C3 ; -- DAM, FAR, SAQ (most common case)
|
||||||
<"a","j"> => root.C1 + "i" + root.C3 ; -- ĠAB, SAB, TAR
|
<"a","j"> => root.C1 + "i" + root.C3 ; -- ĠAB, SAB, TAR
|
||||||
<"ie","j"> => root.C1 + "i" + root.C3 ; -- FIEQ, RIED, ŻIED
|
<"ie","j"> => root.C1 + "i" + root.C3 ; -- FIEQ, RIED, ŻIED
|
||||||
<"ie","w"> => root.C1 + "u" + root.C3 ; -- MIET
|
<"ie","w"> => root.C1 + "u" + root.C3 ; -- MIET
|
||||||
<"e","j"> => root.C1 + "i" + root.C3 ; -- GĦEB
|
<"e","j"> => root.C1 + "i" + root.C3 ; -- GĦEB
|
||||||
_ => Predef.error("Unhandled case in hollow verb:"++root.C1+patt.V1+root.C2+patt.V2+root.C3)
|
_ => Predef.error("Unhandled case in hollow verb:"++root.C1+vseq.V1+root.C2+vseq.V2+root.C3)
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
@@ -322,23 +370,23 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
{- ~~~ Lacking Verb ~~~ -}
|
{- ~~~ Lacking Verb ~~~ -}
|
||||||
|
|
||||||
-- Conjugate entire verb in PERFECT tense
|
-- Conjugate entire verb in PERFECT tense
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjLackingPerf : Root -> Pattern -> (VAgr => Str) = \root,patt ->
|
conjLackingPerf : Root -> Vowels -> (VAgr => Str) = \root,vseq ->
|
||||||
let
|
let
|
||||||
mxej = root.C1 + root.C2 + patt.V1 + root.C3
|
mxej = root.C1 + root.C2 + vseq.V1 + root.C3
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
--- i tal-leħen needs to be added here!
|
--- i tal-leħen needs to be added here!
|
||||||
AgP1 Sg => mxej + "t" ; -- Jiena IMXEJT
|
AgP1 Sg => mxej + "t" ; -- Jiena IMXEJT
|
||||||
AgP2 Sg => mxej + "t" ; -- Inti IMXEJT
|
AgP2 Sg => mxej + "t" ; -- Inti IMXEJT
|
||||||
AgP3Sg Masc=> root.C1 + patt.V1 + root.C2 + patt.V2 ; -- Huwa MEXA
|
AgP3Sg Masc=> root.C1 + vseq.V1 + root.C2 + vseq.V2 ; -- Huwa MEXA
|
||||||
AgP3Sg Fem => case patt.V1 of {
|
AgP3Sg Fem => case vseq.V1 of {
|
||||||
"a" => root.C1 + root.C2 + "at" ; -- Hija QRAT
|
"a" => root.C1 + root.C2 + "at" ; -- Hija QRAT
|
||||||
_ => root.C1 + root.C2 + "iet" -- Hija MXIET
|
_ => root.C1 + root.C2 + "iet" -- Hija MXIET
|
||||||
} ;
|
} ;
|
||||||
AgP1 Pl => mxej + "na" ; -- Aħna IMXEJNA
|
AgP1 Pl => mxej + "na" ; -- Aħna IMXEJNA
|
||||||
AgP2 Pl => mxej + "tu" ; -- Intom IMXEJTU
|
AgP2 Pl => mxej + "tu" ; -- Intom IMXEJTU
|
||||||
AgP3Pl => case patt.V1 of {
|
AgP3Pl => case vseq.V1 of {
|
||||||
"a" => root.C1 + root.C2 + "aw" ; -- Huma QRAW
|
"a" => root.C1 + root.C2 + "aw" ; -- Huma QRAW
|
||||||
_ => root.C1 + root.C2 + "ew" -- Huma IMXEW
|
_ => root.C1 + root.C2 + "ew" -- Huma IMXEW
|
||||||
}
|
}
|
||||||
@@ -348,9 +396,9 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
-- Params: Imperative Singular (eg IMXI), Imperative Plural (eg IMXU)
|
-- Params: Imperative Singular (eg IMXI), Imperative Plural (eg IMXU)
|
||||||
conjLackingImpf = conjGenericImpf ;
|
conjLackingImpf = conjGenericImpf ;
|
||||||
|
|
||||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjLackingImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
conjLackingImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||||
table {
|
table {
|
||||||
Sg => "i" + root.C1 + root.C2 + "i" ; -- Inti: IMXI
|
Sg => "i" + root.C1 + root.C2 + "i" ; -- Inti: IMXI
|
||||||
Pl => "i" + root.C1 + root.C2 + "u" -- Intom: IMXU
|
Pl => "i" + root.C1 + root.C2 + "u" -- Intom: IMXU
|
||||||
@@ -359,17 +407,17 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
{- ~~~ Defective Verb ~~~ -}
|
{- ~~~ Defective Verb ~~~ -}
|
||||||
|
|
||||||
-- Conjugate entire verb in PERFECT tense
|
-- Conjugate entire verb in PERFECT tense
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjDefectivePerf : Root -> Pattern -> ( VAgr => Str ) = \root,patt ->
|
conjDefectivePerf : Root -> Vowels -> ( VAgr => Str ) = \root,vseq ->
|
||||||
let
|
let
|
||||||
qlaj = root.C1 + root.C2 + (case patt.V2 of {"e" => "i" ; _ => patt.V2 }) + "j" ;
|
qlaj = root.C1 + root.C2 + (case vseq.V2 of {"e" => "i" ; _ => vseq.V2 }) + "j" ;
|
||||||
qalgh = root.C1 + patt.V1 + root.C2 + root.C3 ;
|
qalgh = root.C1 + vseq.V1 + root.C2 + root.C3 ;
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
AgP1 Sg => qlaj + "t" ; -- Jiena QLAJT
|
AgP1 Sg => qlaj + "t" ; -- Jiena QLAJT
|
||||||
AgP2 Sg => qlaj + "t" ; -- Inti QLAJT
|
AgP2 Sg => qlaj + "t" ; -- Inti QLAJT
|
||||||
AgP3Sg Masc=> root.C1 + patt.V1 + root.C2 + patt.V2 + "'" ; -- Huwa QALA'
|
AgP3Sg Masc=> root.C1 + vseq.V1 + root.C2 + vseq.V2 + "'" ; -- Huwa QALA'
|
||||||
AgP3Sg Fem => qalgh + (case patt.V2 of {"o" => "o" ; _ => "e"}) + "t" ; -- Hija QALGĦET
|
AgP3Sg Fem => qalgh + (case vseq.V2 of {"o" => "o" ; _ => "e"}) + "t" ; -- Hija QALGĦET
|
||||||
AgP1 Pl => qlaj + "na" ; -- Aħna QLAJNA
|
AgP1 Pl => qlaj + "na" ; -- Aħna QLAJNA
|
||||||
AgP2 Pl => qlaj + "tu" ; -- Intom QLAJTU
|
AgP2 Pl => qlaj + "tu" ; -- Intom QLAJTU
|
||||||
AgP3Pl => qalgh + "u" -- Huma QALGĦU
|
AgP3Pl => qalgh + "u" -- Huma QALGĦU
|
||||||
@@ -379,32 +427,32 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
-- Params: Imperative Singular (eg IKTEB), Imperative Plural (eg IKTBU)
|
-- Params: Imperative Singular (eg IKTEB), Imperative Plural (eg IKTBU)
|
||||||
conjDefectiveImpf = conjGenericImpf ;
|
conjDefectiveImpf = conjGenericImpf ;
|
||||||
|
|
||||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjDefectiveImp : Root -> Pattern -> ( Number => Str ) = \root,patt ->
|
conjDefectiveImp : Root -> Vowels -> ( Number => Str ) = \root,vseq ->
|
||||||
let
|
let
|
||||||
v1 = case patt.V1 of { "e" => "i" ; _ => patt.V1 } ;
|
v1 = case vseq.V1 of { "e" => "i" ; _ => vseq.V1 } ;
|
||||||
v_pl : Str = case root.C2 of { #LiquidCons => "i" ; _ => "" } ; -- some verbs require "i" insertion in middle (eg AQILGĦU)
|
v_pl : Str = case root.C2 of { #LiquidCons => "i" ; _ => "" } ; -- some verbs require "i" insertion in middle (eg AQILGĦU)
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
Sg => v1 + root.C1 + root.C2 + patt.V2 + "'" ; -- Inti: AQLA' / IBŻA'
|
Sg => v1 + root.C1 + root.C2 + vseq.V2 + "'" ; -- Inti: AQLA' / IBŻA'
|
||||||
Pl => v1 + root.C1 + v_pl + root.C2 + root.C3 + "u" -- Intom: AQILGĦU / IBŻGĦU
|
Pl => v1 + root.C1 + v_pl + root.C2 + root.C3 + "u" -- Intom: AQILGĦU / IBŻGĦU
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
{- ~~~ Quadriliteral Verb (Strong) ~~~ -}
|
{- ~~~ Quadriliteral Verb (Strong) ~~~ -}
|
||||||
|
|
||||||
-- Conjugate entire verb in PERFECT tense
|
-- Conjugate entire verb in PERFECT tense
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjQuadPerf : Root -> Pattern -> (VAgr => Str) = \root,patt ->
|
conjQuadPerf : Root -> Vowels -> (VAgr => Str) = \root,vseq ->
|
||||||
let
|
let
|
||||||
dendil = root.C1 + patt.V1 + root.C2 + root.C3 + (case patt.V2 of {"e" => "i" ; _ => patt.V2 }) + root.C4 ;
|
dendil = root.C1 + vseq.V1 + root.C2 + root.C3 + (case vseq.V2 of {"e" => "i" ; _ => vseq.V2 }) + root.C4 ;
|
||||||
dendl = root.C1 + patt.V1 + root.C2 + root.C3 + root.C4 ;
|
dendl = root.C1 + vseq.V1 + root.C2 + root.C3 + root.C4 ;
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
AgP1 Sg => dendil + "t" ; -- Jiena DENDILT
|
AgP1 Sg => dendil + "t" ; -- Jiena DENDILT
|
||||||
AgP2 Sg => dendil + "t" ; -- Inti DENDILT
|
AgP2 Sg => dendil + "t" ; -- Inti DENDILT
|
||||||
AgP3Sg Masc=> root.C1 + patt.V1 + root.C2 + root.C3 + patt.V2 + root.C4 ; -- Huwa DENDIL
|
AgP3Sg Masc=> root.C1 + vseq.V1 + root.C2 + root.C3 + vseq.V2 + root.C4 ; -- Huwa DENDIL
|
||||||
AgP3Sg Fem => dendl + (case patt.V2 of {"o" => "o" ; _ => "e"}) + "t" ; -- Hija DENDLET
|
AgP3Sg Fem => dendl + (case vseq.V2 of {"o" => "o" ; _ => "e"}) + "t" ; -- Hija DENDLET
|
||||||
AgP1 Pl => dendil + "na" ; -- Aħna DENDILNA
|
AgP1 Pl => dendil + "na" ; -- Aħna DENDILNA
|
||||||
AgP2 Pl => dendil + "tu" ; -- Intom DENDILTU
|
AgP2 Pl => dendil + "tu" ; -- Intom DENDILTU
|
||||||
AgP3Pl => dendl + "u" -- Huma DENDLU
|
AgP3Pl => dendl + "u" -- Huma DENDLU
|
||||||
@@ -423,19 +471,19 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
AgP3Pl => pfx_J imp_pl -- Huma JDENDLU
|
AgP3Pl => pfx_J imp_pl -- Huma JDENDLU
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjQuadImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
conjQuadImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||||
table {
|
table {
|
||||||
Sg => root.C1 + patt.V1 + root.C2 + root.C3 + patt.V2 + root.C4 ; -- Inti: DENDEL
|
Sg => root.C1 + vseq.V1 + root.C2 + root.C3 + vseq.V2 + root.C4 ; -- Inti: DENDEL
|
||||||
Pl => root.C1 + patt.V1 + root.C2 + root.C3 + root.C4 + "u" -- Intom: DENDLU
|
Pl => root.C1 + vseq.V1 + root.C2 + root.C3 + root.C4 + "u" -- Intom: DENDLU
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
{- ~~~ Quadriliteral Verb (Weak Final) ~~~ -}
|
{- ~~~ Quadriliteral Verb (Weak Final) ~~~ -}
|
||||||
|
|
||||||
-- Conjugate entire verb in PERFECT tense
|
-- Conjugate entire verb in PERFECT tense
|
||||||
-- Params: Stem
|
-- Params: Stem
|
||||||
conjQuadWeakPerf : Root -> Pattern -> Str -> (VAgr => Str) = \root,patt,imp_sg ->
|
conjQuadWeakPerf : Root -> Vowels -> Str -> (VAgr => Str) = \root,vseq,imp_sg ->
|
||||||
case takeSfx 1 imp_sg of {
|
case takeSfx 1 imp_sg of {
|
||||||
"a" => -- KANTA
|
"a" => -- KANTA
|
||||||
let
|
let
|
||||||
@@ -452,13 +500,13 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
_ => -- SERVI
|
_ => -- SERVI
|
||||||
let
|
let
|
||||||
serve = root.C1 + patt.V1 + root.C2 + root.C3 + "e" ;
|
serve = root.C1 + vseq.V1 + root.C2 + root.C3 + "e" ;
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
AgP1 Sg => serve + "jt" ; -- Jiena SERVEJT
|
AgP1 Sg => serve + "jt" ; -- Jiena SERVEJT
|
||||||
AgP2 Sg => serve + "jt" ; -- Inti SERVEJT
|
AgP2 Sg => serve + "jt" ; -- Inti SERVEJT
|
||||||
AgP3Sg Masc=> root.C1 + patt.V1 + root.C2 + root.C3 + patt.V2 ; -- Huwa SERVA
|
AgP3Sg Masc=> root.C1 + vseq.V1 + root.C2 + root.C3 + vseq.V2 ; -- Huwa SERVA
|
||||||
AgP3Sg Fem => root.C1 + patt.V1 + root.C2 + root.C3 + "iet" ; -- Hija SERVIET
|
AgP3Sg Fem => root.C1 + vseq.V1 + root.C2 + root.C3 + "iet" ; -- Hija SERVIET
|
||||||
AgP1 Pl => serve + "jna" ; -- Aħna SERVEJNA
|
AgP1 Pl => serve + "jna" ; -- Aħna SERVEJNA
|
||||||
AgP2 Pl => serve + "jtu" ; -- Intom SERVEJTU
|
AgP2 Pl => serve + "jtu" ; -- Intom SERVEJTU
|
||||||
AgP3Pl => serve + "w" -- Huma SERVEW
|
AgP3Pl => serve + "w" -- Huma SERVEW
|
||||||
@@ -478,13 +526,13 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
AgP3Pl => pfx_J imp_pl -- Huma JSERVU
|
AgP3Pl => pfx_J imp_pl -- Huma JSERVU
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjQuadWeakImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
conjQuadWeakImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||||
table {
|
table {
|
||||||
--- this is known to fail for KANTA, but that seems like a less common case
|
--- this is known to fail for KANTA, but that seems like a less common case
|
||||||
Sg => root.C1 + patt.V1 + root.C2 + root.C3 + "i" ; -- Inti: SERVI
|
Sg => root.C1 + vseq.V1 + root.C2 + root.C3 + "i" ; -- Inti: SERVI
|
||||||
Pl => root.C1 + patt.V1 + root.C2 + root.C3 + "u" -- Intom: SERVU
|
Pl => root.C1 + vseq.V1 + root.C2 + root.C3 + "u" -- Intom: SERVU
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -542,7 +590,7 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Conjugate entire verb in IMPERATIVE tense
|
-- Conjugate entire verb in IMPERATIVE tense
|
||||||
-- Params: Root, Pattern
|
-- Params: Root, Vowels
|
||||||
conjLoanImp : Str -> (Number => Str) = \mamma ->
|
conjLoanImp : Str -> (Number => Str) = \mamma ->
|
||||||
table {
|
table {
|
||||||
Sg => case mamma of {
|
Sg => case mamma of {
|
||||||
@@ -560,37 +608,37 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
conjFormII : VerbInfo -> (VForm => Str) = \i ->
|
conjFormII : VerbInfo -> (VForm => Str) = \i ->
|
||||||
let
|
let
|
||||||
mamma : Str = case i.class of {
|
mamma : Str = case i.class of {
|
||||||
Weak Defective => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2 + i.patt.V2 + "'" ; -- QATTA'
|
Weak Defective => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2 + i.vseq.V2 + "'" ; -- QATTA'
|
||||||
Weak Lacking => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2 + i.patt.V2 ; -- NEĦĦA
|
Weak Lacking => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2 + i.vseq.V2 ; -- NEĦĦA
|
||||||
_ => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2 + i.patt.V2 + i.root.C3 -- WAQQAF
|
_ => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2 + i.vseq.V2 + i.root.C3 -- WAQQAF
|
||||||
} ;
|
} ;
|
||||||
nehhi : Str = case i.class of {
|
nehhi : Str = case i.class of {
|
||||||
Weak Lacking => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2 + "i" ; -- NEĦĦI
|
Weak Lacking => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2 + "i" ; -- NEĦĦI
|
||||||
_ => mamma -- WAQQAF
|
_ => mamma -- WAQQAF
|
||||||
} ;
|
} ;
|
||||||
bexxix : Str = case <i.class,i.patt.V1,i.patt.V2> of {
|
bexxix : Str = case <i.class,i.vseq.V1,i.vseq.V2> of {
|
||||||
<Weak Defective,_,_> => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2 + i.patt.V2 + "j" ; -- QATTAJ
|
<Weak Defective,_,_> => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2 + i.vseq.V2 + "j" ; -- QATTAJ
|
||||||
<_,"e","a"> => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2 + "e" + i.root.C3 ; -- NEĦĦEJ
|
<_,"e","a"> => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2 + "e" + i.root.C3 ; -- NEĦĦEJ
|
||||||
<_,_,"e"> => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2 + "i" + i.root.C3 ;
|
<_,_,"e"> => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2 + "i" + i.root.C3 ;
|
||||||
_ => nehhi -- no change
|
_ => nehhi -- no change
|
||||||
} ;
|
} ;
|
||||||
waqqf : Str = case i.class of {
|
waqqf : Str = case i.class of {
|
||||||
Weak Hollow => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C3 ; -- QAJM
|
Weak Hollow => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C3 ; -- QAJM
|
||||||
Weak Lacking => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2 ; -- NEĦĦ
|
Weak Lacking => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2 ; -- NEĦĦ
|
||||||
_ => sfx (i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2) i.root.C3
|
_ => sfx (i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2) i.root.C3
|
||||||
} ;
|
} ;
|
||||||
waqqfu : Str = waqqf + "u" ;
|
waqqfu : Str = waqqf + "u" ;
|
||||||
perf : VAgr => Str = table {
|
perf : VAgr => Str = table {
|
||||||
AgP1 Sg => bexxix + "t" ;
|
AgP1 Sg => bexxix + "t" ;
|
||||||
AgP2 Sg => bexxix + "t" ;
|
AgP2 Sg => bexxix + "t" ;
|
||||||
AgP3Sg Masc => mamma ;
|
AgP3Sg Masc => mamma ;
|
||||||
AgP3Sg Fem => case <i.patt.V1, i.patt.V2> of {
|
AgP3Sg Fem => case <i.vseq.V1, i.vseq.V2> of {
|
||||||
<"e","a"> => waqqf + "iet" ; -- NEĦĦIET
|
<"e","a"> => waqqf + "iet" ; -- NEĦĦIET
|
||||||
_ => waqqf + "et"
|
_ => waqqf + "et"
|
||||||
} ;
|
} ;
|
||||||
AgP1 Pl => bexxix + "na" ;
|
AgP1 Pl => bexxix + "na" ;
|
||||||
AgP2 Pl => bexxix + "tu" ;
|
AgP2 Pl => bexxix + "tu" ;
|
||||||
AgP3Pl => case <i.patt.V1, i.patt.V2> of {
|
AgP3Pl => case <i.vseq.V1, i.vseq.V2> of {
|
||||||
<"e","a"> => waqqf + "ew" ; -- NEĦĦEW
|
<"e","a"> => waqqf + "ew" ; -- NEĦĦEW
|
||||||
_ => waqqf + "u"
|
_ => waqqf + "u"
|
||||||
}
|
}
|
||||||
@@ -618,23 +666,23 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
|
|
||||||
conjFormII_quad : VerbInfo -> (VForm => Str) = \i ->
|
conjFormII_quad : VerbInfo -> (VForm => Str) = \i ->
|
||||||
let
|
let
|
||||||
vowels = extractPattern i.imp ;
|
vowels = extractVowels i.imp ;
|
||||||
mamma : Str = case i.class of {
|
mamma : Str = case i.class of {
|
||||||
Quad QWeak => pfx_T i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C3 + i.patt.V2 ; -- SSERVA
|
Quad QWeak => pfx_T i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C3 + i.vseq.V2 ; -- SSERVA
|
||||||
_ => pfx_T i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C3 + i.patt.V2 + i.root.C4 -- T-ĦARBAT
|
_ => pfx_T i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C3 + i.vseq.V2 + i.root.C4 -- T-ĦARBAT
|
||||||
} ;
|
} ;
|
||||||
tharb : Str = case i.class of {
|
tharb : Str = case i.class of {
|
||||||
_ => pfx_T i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C3
|
_ => pfx_T i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C3
|
||||||
} ;
|
} ;
|
||||||
tharbt : Str = case i.class of {
|
tharbt : Str = case i.class of {
|
||||||
Quad QWeak => pfx_T i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C3 ; -- SSERV
|
Quad QWeak => pfx_T i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C3 ; -- SSERV
|
||||||
_ => pfx_T i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C3 + i.root.C4
|
_ => pfx_T i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C3 + i.root.C4
|
||||||
} ;
|
} ;
|
||||||
perf : VAgr => Str =
|
perf : VAgr => Str =
|
||||||
let
|
let
|
||||||
tharbat : Str = case <i.class,vowels.V2> of {
|
tharbat : Str = case <i.class,vowels.V2> of {
|
||||||
<Quad QWeak,"i"> => pfx_T i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C3 + "e" + i.root.C4 ; -- SSERVEJ
|
<Quad QWeak,"i"> => pfx_T i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C3 + "e" + i.root.C4 ; -- SSERVEJ
|
||||||
<Quad QWeak,"a"> => pfx_T i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C3 + "a" + i.root.C4 ; -- TKANTAJ
|
<Quad QWeak,"a"> => pfx_T i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C3 + "a" + i.root.C4 ; -- TKANTAJ
|
||||||
_ => mamma
|
_ => mamma
|
||||||
} ;
|
} ;
|
||||||
tharbtu : Str = case <i.class, vowels.V2> of {
|
tharbtu : Str = case <i.class, vowels.V2> of {
|
||||||
@@ -707,13 +755,13 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
|
|
||||||
conjFormIII : VerbInfo -> (VForm => Str) = \i ->
|
conjFormIII : VerbInfo -> (VForm => Str) = \i ->
|
||||||
let
|
let
|
||||||
wiegeb : Str = i.root.C1 + i.patt.V1 + i.root.C2 + i.patt.V2 + i.root.C3 ;
|
wiegeb : Str = i.root.C1 + i.vseq.V1 + i.root.C2 + i.vseq.V2 + i.root.C3 ;
|
||||||
wegib : Str = case <i.patt.V1,i.patt.V2> of {
|
wegib : Str = case <i.vseq.V1,i.vseq.V2> of {
|
||||||
<"ie","e"> => i.root.C1 + "e" + i.root.C2 + "i" + i.root.C3 ;
|
<"ie","e"> => i.root.C1 + "e" + i.root.C2 + "i" + i.root.C3 ;
|
||||||
<v1,"e"> => i.root.C1 + v1 + i.root.C2 + "i" + i.root.C3 ;
|
<v1,"e"> => i.root.C1 + v1 + i.root.C2 + "i" + i.root.C3 ;
|
||||||
_ => wiegeb -- no change
|
_ => wiegeb -- no change
|
||||||
} ;
|
} ;
|
||||||
wiegb : Str = sfx (i.root.C1 + i.patt.V1 + i.root.C2) i.root.C3 ;
|
wiegb : Str = sfx (i.root.C1 + i.vseq.V1 + i.root.C2) i.root.C3 ;
|
||||||
wiegbu : Str = wiegb + "u" ;
|
wiegbu : Str = wiegb + "u" ;
|
||||||
perf : VAgr => Str = table {
|
perf : VAgr => Str = table {
|
||||||
AgP1 Sg => wegib + "t" ;
|
AgP1 Sg => wegib + "t" ;
|
||||||
@@ -751,13 +799,13 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
conjFormVII : VerbInfo -> Str -> (VForm => Str) = \i,C1 ->
|
conjFormVII : VerbInfo -> Str -> (VForm => Str) = \i,C1 ->
|
||||||
let
|
let
|
||||||
nhasel : Str = case i.class of {
|
nhasel : Str = case i.class of {
|
||||||
Weak Hollow => C1 + i.patt.V1 + i.root.C3 ;
|
Weak Hollow => C1 + i.vseq.V1 + i.root.C3 ;
|
||||||
Weak Lacking => C1 + i.patt.V1 + i.root.C2 + i.patt.V2 ;
|
Weak Lacking => C1 + i.vseq.V1 + i.root.C2 + i.vseq.V2 ;
|
||||||
Weak Defective => C1 + i.patt.V1 + i.root.C2 + i.patt.V2 + "'" ;
|
Weak Defective => C1 + i.vseq.V1 + i.root.C2 + i.vseq.V2 + "'" ;
|
||||||
_ => C1 + i.patt.V1 + i.root.C2 + i.patt.V2 + i.root.C3
|
_ => C1 + i.vseq.V1 + i.root.C2 + i.vseq.V2 + i.root.C3
|
||||||
} ;
|
} ;
|
||||||
v1 : Str = case i.patt.V1 of { "ie" => "e" ; v => v } ;
|
v1 : Str = case i.vseq.V1 of { "ie" => "e" ; v => v } ;
|
||||||
v2 : Str = case i.patt.V2 of { "e" => "i" ; v => v } ;
|
v2 : Str = case i.vseq.V2 of { "e" => "i" ; v => v } ;
|
||||||
-- nhsil : Str = case <i.class,i.root.C1> of {
|
-- nhsil : Str = case <i.class,i.root.C1> of {
|
||||||
-- <Strong Regular,_> => C1 + i.root.C2 + v2 + i.root.C3 ;
|
-- <Strong Regular,_> => C1 + i.root.C2 + v2 + i.root.C3 ;
|
||||||
-- <Strong LiquidMedial,_> => C1 + v1 + i.root.C2 + v2 + i.root.C3 ;
|
-- <Strong LiquidMedial,_> => C1 + v1 + i.root.C2 + v2 + i.root.C3 ;
|
||||||
@@ -775,9 +823,9 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
|||||||
_ => C1 + v1 + i.root.C2 + v2 + i.root.C3
|
_ => C1 + v1 + i.root.C2 + v2 + i.root.C3
|
||||||
} ;
|
} ;
|
||||||
nhasl : Str = case i.class of {
|
nhasl : Str = case i.class of {
|
||||||
Weak Hollow => C1 + i.patt.V1 + i.root.C3 ;
|
Weak Hollow => C1 + i.vseq.V1 + i.root.C3 ;
|
||||||
Weak Lacking => C1 + i.root.C2 ;
|
Weak Lacking => C1 + i.root.C2 ;
|
||||||
_ => sfx (C1 + i.patt.V1 + i.root.C2) i.root.C3
|
_ => sfx (C1 + i.vseq.V1 + i.root.C2) i.root.C3
|
||||||
} ;
|
} ;
|
||||||
nhaslu : Str = case i.class of {
|
nhaslu : Str = case i.class of {
|
||||||
Weak Lacking => nhasl + "ew" ;
|
Weak Lacking => nhasl + "ew" ;
|
||||||
|
|||||||
@@ -55,38 +55,134 @@ resource ParadigmsMlt = open
|
|||||||
loan = Loan ;
|
loan = Loan ;
|
||||||
irregular = Irregular ;
|
irregular = Irregular ;
|
||||||
|
|
||||||
|
{- Type declarations only (for synopsis) ------------------------------ -}
|
||||||
|
|
||||||
|
mkN : overload {
|
||||||
|
mkN : Str -> N ; -- 1: Take the singular and infer plural
|
||||||
|
mkN : Str -> Gender -> N ; -- 1: Explicit gender
|
||||||
|
mkN : Str -> Str -> N ; -- 1: Take the singular and explicit plural
|
||||||
|
mkN : Str -> Str -> Gender -> N ; -- 1: Explicit gender
|
||||||
|
mkN : Str -> Str -> Str -> N ; -- 1x: Take singular and both plurals
|
||||||
|
mkN : Str -> Str -> Str -> Gender -> N ; -- 1x: Explicit gender
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkNColl : overload {
|
||||||
|
mkNColl : Str -> N ; -- 2c: Collective form only
|
||||||
|
mkNColl : Str -> Str -> N ; -- 2b: Collective and plural
|
||||||
|
mkNColl : Str -> Str -> Str -> N ; -- 2: Singular, collective and plural
|
||||||
|
mkNColl : Str -> Str -> Str -> Str -> N ; -- 2x: Singular, collective and both plurals
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkNNoPlural : overload {
|
||||||
|
mkNNoPlural : Str -> N ; -- 3: No plural
|
||||||
|
mkNNoPlural : Str -> Gender -> N ; -- 3: Explicit gender
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkNDual : overload {
|
||||||
|
mkNDual : Str -> N ; -- 4: Infer dual, plural and gender from singular
|
||||||
|
mkNDual : Str -> Str -> Str -> N ; -- 4: Singular, dual, plural
|
||||||
|
mkNDual : Str -> Str -> Str -> Gender -> N ; -- 4: Explicit gender
|
||||||
|
mkNDual : Str -> Str -> Str -> Str -> N ; -- 4x: Singular, dual, both plurals
|
||||||
|
mkNDual : Str -> Str -> Str -> Str -> Gender -> N ; -- 4x: Explicit gender
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkPN : Str -> Gender -> Number -> ProperNoun ; -- Proper noun
|
||||||
|
|
||||||
|
mkN2 : overload {
|
||||||
|
mkN2 : N -> Prep -> N2 ;
|
||||||
|
mkN2 : N -> Str -> N2 ;
|
||||||
|
mkN2 : N -> N2 ; -- use "ta'"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkN3 : Noun -> Prep -> Prep -> N3 ;
|
||||||
|
|
||||||
|
possN : N -> N ; -- Mark a noun as taking possessive enclitic pronouns: missieri, missierek...
|
||||||
|
|
||||||
|
mkRoot : overload {
|
||||||
|
mkRoot : Root ; -- Null root
|
||||||
|
mkRoot : Str -> Root ; -- From hyphenated string: "k-t-b"
|
||||||
|
mkRoot : Str -> Str -> Str -> Root ; -- Tri-consonantal root
|
||||||
|
mkRoot : Str -> Str -> Str -> Str -> Root ; -- Quadri-consonantal root
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkVowels : overload {
|
||||||
|
mkVowels : Vowels ; -- Null vowel sequence
|
||||||
|
mkVowels : Str -> Vowels ; -- Only single vowel
|
||||||
|
mkVowels : Str -> Str -> Vowels ; -- Two-vowel sequence
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Smart paradigm for building a verb
|
||||||
|
mkV : overload {
|
||||||
|
mkV : Str -> V ; -- With no root, automatically treat as loan verb
|
||||||
|
mkV : Str -> Root -> V ; -- Take an explicit root, implying it is a root & pattern verb
|
||||||
|
mkV : Str -> Str -> Root -> V ; -- Takes an Imperative of the word for when it behaves less predictably
|
||||||
|
mkV : VClass -> VDerivedForm -> Root -> Vowels -> (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V ; -- All forms: mkV (Strong Regular) (FormI) (mkRoot "k-t-b") (mkVowels "i" "e") "ktibt" "ktibt" "kiteb" "kitbet" "ktibna" "ktibtu" "kitbu" "nikteb" "tikteb" "jikteb" "tikteb" "niktbu" "tiktbu" "jiktbu" "ikteb" "iktbu"
|
||||||
|
} ;
|
||||||
|
mkV_II : overload {
|
||||||
|
mkV_II : Str -> Root -> V ; -- Form II verb: mkV_II "waqqaf" (mkRoot "w-q-f")
|
||||||
|
mkV_II : Str -> Str -> Root -> V ; -- Form II verb with explicit imperative form: mkV_II "waqqaf" "waqqaf" (mkRoot "w-q-f")
|
||||||
|
} ;
|
||||||
|
mkV_III : Str -> Root -> V ; -- Form III verb: mkV_III "qiegħed" (mkRoot "q-għ-d")
|
||||||
|
mkV_V : Str -> Root -> V ; -- Form V verb: mkV_V "twaqqaf" (mkRoot "w-q-f")
|
||||||
|
mkV_VI : Str -> Root -> V ; -- Form VI verb: mkV_VI "tqiegħed" (mkRoot "q-għ-d")
|
||||||
|
mkV_VII : Str -> Str -> Root -> V ; -- Form VII verb: mkV_VII "xeħet" "nxteħet" (mkRoot "x-ħ-t")
|
||||||
|
mkV_VIII : Str -> Root -> V ; -- Form VIII verb: mkV_VIII "xteħet" (mkRoot "x-ħ-t")
|
||||||
|
mkV_IX : Str -> Root -> V ; -- Form IX verb: mkV_IX "sfar" (mkRoot "s-f-r")
|
||||||
|
mkV_X : Str -> Root -> V ; -- Form X verb: mkV_X "stagħġeb" (mkRoot "għ-ġ-b")
|
||||||
|
|
||||||
|
presPartV : overload {
|
||||||
|
presPartV : Str -> V -> V ; -- Add the present participle to a verb: ħiereġ
|
||||||
|
presPartV : Str -> Str -> Str -> V -> V ; -- Add the present participle to a verb: ħiereġ, ħierġa, ħierġin
|
||||||
|
} ;
|
||||||
|
pastPartV : overload {
|
||||||
|
pastPartV : Str -> V -> V ; -- Add the past participle to a verb: miktub
|
||||||
|
pastPartV : Str -> Str -> Str -> V -> V ; -- Add the past participle to a verb: miktub, miktuba, miktubin
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkVS : V -> VS ; -- sentence-compl
|
||||||
|
|
||||||
|
mkV3 : overload {
|
||||||
|
mkV3 : V -> V3 ; -- ditransitive: give,_,_
|
||||||
|
mkV3 : V -> Prep -> Prep -> V3 ; -- two prepositions: speak, with, about
|
||||||
|
mkV3 : V -> Prep -> V3 ; -- one preposition: give,_,to
|
||||||
|
};
|
||||||
|
|
||||||
|
mkV2V : V -> Prep -> Prep -> V2V ; -- want (noPrep NP) (to VP)
|
||||||
|
|
||||||
|
mkConj : overload {
|
||||||
|
mkConj : Str -> Conj ; -- Conjunction: wieħed tnejn u tlieta
|
||||||
|
mkConj : Str -> Str -> Conj ; -- Conjunction: wieħed , tnejn u tlieta
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkA : overload {
|
||||||
|
mkA : Str -> A ; -- Regular adjective with predictable feminine and plural forms: bravu
|
||||||
|
mkA : Str -> Str -> A ; -- Infer feminine from masculine; no comparative form: sabiħ, sbieħ
|
||||||
|
mkA : Str -> Str -> Str -> A ; -- Explicit feminine form; no comparative form: sabiħ, sabiħa, sbieħ
|
||||||
|
mkA : Str -> Str -> Str -> Str -> A ; -- All forms: sabiħ, sabiħa, sbieħ, isbaħ
|
||||||
|
} ;
|
||||||
|
|
||||||
|
sameA : Str -> A ; -- Adjective with same forms for masculine, feminine and plural: blu
|
||||||
|
|
||||||
|
mkA2 : overload {
|
||||||
|
mkA2 : A -> Prep -> A2 ;
|
||||||
|
mkA2 : A -> Str -> A2 ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkAS : A -> AS ;
|
||||||
|
|
||||||
|
mkAdv : Str -> Adv ; -- post-verbal adverb: illum
|
||||||
|
mkAdV : Str -> AdV ; -- preverbal adverb: dejjem
|
||||||
|
|
||||||
|
mkAdA : Str -> AdA ; -- adverb modifying adjective: pjuttost
|
||||||
|
mkAdN : Str -> AdN ; -- adverb modifying numeral: madwar
|
||||||
|
|
||||||
|
--.
|
||||||
|
-- Everything below this is definitions (excluded from synopsis)
|
||||||
|
|
||||||
{- Noun --------------------------------------------------------------- -}
|
{- Noun --------------------------------------------------------------- -}
|
||||||
|
|
||||||
-- Helper function for inferring noun plural from singulative
|
|
||||||
-- Nouns with collective & determinate forms should not use this...
|
|
||||||
inferNounPlural : Str -> Str = \sing ->
|
|
||||||
case sing of {
|
|
||||||
_ + "na" => init sing + "iet" ; -- eg WIDNIET
|
|
||||||
_ + "i" => sing + "n" ; -- eg BAĦRIN, DĦULIN, RAĦLIN
|
|
||||||
_ + ("a"|"u") => init(sing) + "i" ; -- eg ROTI
|
|
||||||
_ + "q" => sing + "at" ; -- eg TRIQAT
|
|
||||||
_ => sing + "i"
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Helper function for inferring noun gender from singulative
|
|
||||||
-- Refer {MDG pg190}
|
|
||||||
inferNounGender : Str -> Gender = \sing ->
|
|
||||||
case sing of {
|
|
||||||
_ + "aġni" => Fem ;
|
|
||||||
_ + "anti" => Fem ;
|
|
||||||
_ + "zzjoni" => Fem ;
|
|
||||||
_ + "ġenesi" => Fem ;
|
|
||||||
_ + "ite" => Fem ;
|
|
||||||
_ + "itù" => Fem ;
|
|
||||||
_ + "joni" => Fem ;
|
|
||||||
_ + "ojde" => Fem ;
|
|
||||||
_ + "udni" => Fem ;
|
|
||||||
_ + ("a"|"à") => Fem ;
|
|
||||||
_ => Masc
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Noun paradigm 1(x): singular and plural(s)
|
-- Noun paradigm 1(x): singular and plural(s)
|
||||||
mkN : N = overload {
|
mkN = overload {
|
||||||
|
|
||||||
-- 1: Take the singular and infer plural
|
-- 1: Take the singular and infer plural
|
||||||
mkN : Str -> N = \sing ->
|
mkN : Str -> N = \sing ->
|
||||||
@@ -224,8 +320,7 @@ resource ParadigmsMlt = open
|
|||||||
mkN3 = \n,p,q -> lin N3 (n ** {c2 = hasCompl p ; c3 = hasCompl q}) ;
|
mkN3 = \n,p,q -> lin N3 (n ** {c2 = hasCompl p ; c3 = hasCompl q}) ;
|
||||||
|
|
||||||
-- Mark a noun as taking possessive enclitic pronouns
|
-- Mark a noun as taking possessive enclitic pronouns
|
||||||
possN : N -> N ;
|
possN : N -> N = \n -> lin N {
|
||||||
possN = \n -> lin N {
|
|
||||||
s = n.s ;
|
s = n.s ;
|
||||||
g = n.g ;
|
g = n.g ;
|
||||||
hasColl = n.hasColl ;
|
hasColl = n.hasColl ;
|
||||||
@@ -376,39 +471,11 @@ resource ParadigmsMlt = open
|
|||||||
mkRoot : Str -> Str -> Str -> Str -> Root = \s0,s1,s2,s3 -> ResMlt.mkRoot s0 s1 s2 s3 ;
|
mkRoot : Str -> Str -> Str -> Str -> Root = \s0,s1,s2,s3 -> ResMlt.mkRoot s0 s1 s2 s3 ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Re-export ResMlt.mkPattern
|
-- Re-export ResMlt.mkVowels
|
||||||
mkPattern : Pattern = overload {
|
mkVowels : Vowels = overload {
|
||||||
mkPattern : Pattern = ResMlt.mkPattern ;
|
mkVowels : Vowels = ResMlt.mkVowels ;
|
||||||
mkPattern : Str -> Pattern = \s0 -> ResMlt.mkPattern s0 ;
|
mkVowels : Str -> Vowels = \s0 -> ResMlt.mkVowels s0 ;
|
||||||
mkPattern : Str -> Str -> Pattern = \s0,s1 -> ResMlt.mkPattern s0 s1 ;
|
mkVowels : Str -> Str -> Vowels = \s0,s1 -> ResMlt.mkVowels s0 s1 ;
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Return the class for a given root
|
|
||||||
classifyRoot : Root -> VClass = \r ->
|
|
||||||
case <r.C1,r.C2,r.C3,r.C4> of {
|
|
||||||
<#WeakCons, #StrongCons, #StrongCons, ""> => Weak Assimilative ;
|
|
||||||
<#StrongCons, #WeakCons, #StrongCons, ""> => Weak Hollow ;
|
|
||||||
<#StrongCons, #StrongCons, #WeakCons, ""> => Weak Lacking ;
|
|
||||||
<#StrongCons, #WeakCons, #WeakCons, ""> => Weak Lacking ;
|
|
||||||
<#Consonant, #Consonant, "għ", ""> => Weak Defective ;
|
|
||||||
<#Consonant, c2@#Consonant, c3@#Consonant, ""> =>
|
|
||||||
if_then_else VClass (pbool2bool (eqStr c2 c3))
|
|
||||||
(Strong Geminated)
|
|
||||||
(case c2 of {
|
|
||||||
#LiquidCons => Strong LiquidMedial ;
|
|
||||||
_ => Strong Regular
|
|
||||||
}) ;
|
|
||||||
<#Consonant, #Consonant, #Consonant, #WeakCons> => Quad QWeak ;
|
|
||||||
<#Consonant, #Consonant, #Consonant, #Consonant> => Quad QStrong ;
|
|
||||||
|
|
||||||
-- Irregular
|
|
||||||
<"'",_,_,_> => Irregular ;
|
|
||||||
<_,"'",_,_> => Irregular ;
|
|
||||||
<_,_,"'",_> => Irregular ;
|
|
||||||
<_,_,_,"'"> => Irregular ;
|
|
||||||
|
|
||||||
<_,_,_,""> => Predef.error("Cannot classify root:"++r.C1+"-"+r.C2+"-"+r.C3) ;
|
|
||||||
<_,_,_,_> => Predef.error("Cannot classify root:"++r.C1+"-"+r.C2+"-"+r.C3+"-"+r.C4)
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Smart paradigm for building a verb
|
-- Smart paradigm for building a verb
|
||||||
@@ -423,47 +490,47 @@ resource ParadigmsMlt = open
|
|||||||
mkV : Str -> Root -> V = \mamma,root ->
|
mkV : Str -> Root -> V = \mamma,root ->
|
||||||
let
|
let
|
||||||
class : VClass = classifyRoot root ;
|
class : VClass = classifyRoot root ;
|
||||||
patt : Pattern = extractPattern mamma ;
|
vseq : Vowels = extractVowels mamma ;
|
||||||
in
|
in
|
||||||
case class of {
|
case class of {
|
||||||
Strong Regular => strongV root patt ;
|
Strong Regular => strongV root vseq ;
|
||||||
Strong LiquidMedial => liquidMedialV root patt ;
|
Strong LiquidMedial => liquidMedialV root vseq ;
|
||||||
Strong Geminated => geminatedV root patt ;
|
Strong Geminated => geminatedV root vseq ;
|
||||||
Weak Assimilative => assimilativeV root patt ;
|
Weak Assimilative => assimilativeV root vseq ;
|
||||||
Weak Hollow => hollowV root patt ;
|
Weak Hollow => hollowV root vseq ;
|
||||||
Weak Lacking => lackingV root patt ;
|
Weak Lacking => lackingV root vseq ;
|
||||||
Weak Defective => defectiveV root patt ;
|
Weak Defective => defectiveV root vseq ;
|
||||||
Quad QStrong => quadV root patt ;
|
Quad QStrong => quadV root vseq ;
|
||||||
Quad QWeak => quadWeakV root patt ;
|
Quad QWeak => quadWeakV root vseq ;
|
||||||
Irregular => Predef.error("Cannot use smart paradigm for irregular verb:"++mamma) ;
|
Irregular => Predef.error("Cannot use smart paradigm for irregular verb:"++mamma) ;
|
||||||
Loan => loanV mamma --- this should probably be an error
|
Loan => loanV mamma --- this should probably be an error
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Takes takes an Imperative of the word for when it behaves less predictably
|
-- Takes an Imperative of the word for when it behaves less predictably
|
||||||
-- Params: mamma, imperative P2Sg, root
|
-- Params: mamma, imperative P2Sg, root
|
||||||
mkV : Str -> Str -> Root -> V = \mamma,imp_sg,root ->
|
mkV : Str -> Str -> Root -> V = \mamma,imp_sg,root ->
|
||||||
let
|
let
|
||||||
class : VClass = classifyRoot root ;
|
class : VClass = classifyRoot root ;
|
||||||
patt : Pattern = extractPattern mamma ;
|
vseq : Vowels = extractVowels mamma ;
|
||||||
in
|
in
|
||||||
case class of {
|
case class of {
|
||||||
Strong Regular => strongV root patt imp_sg ;
|
Strong Regular => strongV root vseq imp_sg ;
|
||||||
Strong LiquidMedial => liquidMedialV root patt imp_sg ;
|
Strong LiquidMedial => liquidMedialV root vseq imp_sg ;
|
||||||
Strong Geminated => geminatedV root patt imp_sg ;
|
Strong Geminated => geminatedV root vseq imp_sg ;
|
||||||
Weak Assimilative => assimilativeV root patt imp_sg ;
|
Weak Assimilative => assimilativeV root vseq imp_sg ;
|
||||||
Weak Hollow => hollowV root patt imp_sg ;
|
Weak Hollow => hollowV root vseq imp_sg ;
|
||||||
Weak Lacking => lackingV root patt imp_sg ;
|
Weak Lacking => lackingV root vseq imp_sg ;
|
||||||
Weak Defective => defectiveV root patt imp_sg ;
|
Weak Defective => defectiveV root vseq imp_sg ;
|
||||||
Quad QStrong => quadV root patt imp_sg ;
|
Quad QStrong => quadV root vseq imp_sg ;
|
||||||
Quad QWeak => quadWeakV root patt imp_sg ;
|
Quad QWeak => quadWeakV root vseq imp_sg ;
|
||||||
Irregular => Predef.error("Cannot use smart paradigm for irregular verb:"++mamma) ;
|
Irregular => Predef.error("Cannot use smart paradigm for irregular verb:"++mamma) ;
|
||||||
Loan => loanV mamma
|
Loan => loanV mamma
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- All forms
|
-- All forms
|
||||||
-- mkV (Strong Regular) (FormI) (mkRoot "k-t-b") (mkPattern "i" "e") "ktibt" "ktibt" "kiteb" "kitbet" "ktibna" "ktibtu" "kitbu" "nikteb" "tikteb" "jikteb" "tikteb" "niktbu" "tiktbu" "jiktbu" "ikteb" "iktbu"
|
-- mkV (Strong Regular) (FormI) (mkRoot "k-t-b") (mkVowels "i" "e") "ktibt" "ktibt" "kiteb" "kitbet" "ktibna" "ktibtu" "kitbu" "nikteb" "tikteb" "jikteb" "tikteb" "niktbu" "tiktbu" "jiktbu" "ikteb" "iktbu"
|
||||||
mkV : VClass -> VDerivedForm -> Root -> Pattern -> (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
|
mkV : VClass -> VDerivedForm -> Root -> Vowels -> (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
|
||||||
\class, form, root, patt,
|
\class, form, root, vseq,
|
||||||
perfP1Sg, perfP2Sg, perfP3SgMasc, perfP3SgFem, perfP1Pl, perfP2Pl, perfP3Pl,
|
perfP1Sg, perfP2Sg, perfP3SgMasc, perfP3SgFem, perfP1Pl, perfP2Pl, perfP3Pl,
|
||||||
impfP1Sg, impfP2Sg, impfP3SgMasc, impfP3SgFem, impfP1Pl, impfP2Pl, impfP3Pl,
|
impfP1Sg, impfP2Sg, impfP3SgMasc, impfP3SgFem, impfP1Pl, impfP2Pl, impfP3Pl,
|
||||||
impSg, impPl ->
|
impSg, impPl ->
|
||||||
@@ -488,7 +555,7 @@ resource ParadigmsMlt = open
|
|||||||
VPresPart _ => NONEXIST ;
|
VPresPart _ => NONEXIST ;
|
||||||
VPastPart _ => NONEXIST
|
VPastPart _ => NONEXIST
|
||||||
} ;
|
} ;
|
||||||
info : VerbInfo = mkVerbInfo class form root patt impSg ;
|
info : VerbInfo = mkVerbInfo class form root vseq impSg ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl tbl ;
|
s = stemVariantsTbl tbl ;
|
||||||
i = info ;
|
i = info ;
|
||||||
@@ -532,12 +599,12 @@ resource ParadigmsMlt = open
|
|||||||
derivedV_TriII : Str -> Root -> V = \mammaII, root ->
|
derivedV_TriII : Str -> Root -> V = \mammaII, root ->
|
||||||
let
|
let
|
||||||
class : VClass = classifyRoot root ;
|
class : VClass = classifyRoot root ;
|
||||||
patt : Pattern = extractPattern mammaII ;
|
vseq : Vowels = extractVowels mammaII ;
|
||||||
imp : Str = case mammaII of {
|
imp : Str = case mammaII of {
|
||||||
nehh + "a" => nehh + "i" ; --- maybe too generic?
|
nehh + "a" => nehh + "i" ; --- maybe too generic?
|
||||||
_ => mammaII --- assumption: mamma II is also imperative
|
_ => mammaII --- assumption: mamma II is also imperative
|
||||||
} ;
|
} ;
|
||||||
newinfo : VerbInfo = mkVerbInfo class FormII root patt imp ;
|
newinfo : VerbInfo = mkVerbInfo class FormII root vseq imp ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl (conjFormII newinfo) ;
|
s = stemVariantsTbl (conjFormII newinfo) ;
|
||||||
i = newinfo ;
|
i = newinfo ;
|
||||||
@@ -550,9 +617,9 @@ resource ParadigmsMlt = open
|
|||||||
derivedV_QuadII : Str -> Root -> V = \mammaII, root ->
|
derivedV_QuadII : Str -> Root -> V = \mammaII, root ->
|
||||||
let
|
let
|
||||||
class : VClass = classifyRoot root ;
|
class : VClass = classifyRoot root ;
|
||||||
patt : Pattern = extractPattern mammaII ;
|
vseq : Vowels = extractVowels mammaII ;
|
||||||
imp : Str = mammaII ; --- assumption: mamma II is also imperative
|
imp : Str = mammaII ; --- assumption: mamma II is also imperative
|
||||||
newinfo : VerbInfo = mkVerbInfo class FormII root patt imp ;
|
newinfo : VerbInfo = mkVerbInfo class FormII root vseq imp ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl (conjFormII_quad newinfo) ;
|
s = stemVariantsTbl (conjFormII_quad newinfo) ;
|
||||||
i = newinfo ;
|
i = newinfo ;
|
||||||
@@ -562,8 +629,8 @@ resource ParadigmsMlt = open
|
|||||||
derivedV_QuadII : Str -> Str -> Root -> V = \mammaII, imp, root ->
|
derivedV_QuadII : Str -> Str -> Root -> V = \mammaII, imp, root ->
|
||||||
let
|
let
|
||||||
class : VClass = classifyRoot root ;
|
class : VClass = classifyRoot root ;
|
||||||
patt : Pattern = extractPattern mammaII ;
|
vseq : Vowels = extractVowels mammaII ;
|
||||||
newinfo : VerbInfo = mkVerbInfo class FormII root patt imp ;
|
newinfo : VerbInfo = mkVerbInfo class FormII root vseq imp ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl (conjFormII_quad newinfo) ;
|
s = stemVariantsTbl (conjFormII_quad newinfo) ;
|
||||||
i = newinfo ;
|
i = newinfo ;
|
||||||
@@ -576,9 +643,9 @@ resource ParadigmsMlt = open
|
|||||||
-- e.g.: derivedV_III "qiegħed" (mkRoot "q-għ-d")
|
-- e.g.: derivedV_III "qiegħed" (mkRoot "q-għ-d")
|
||||||
derivedV_III : Str -> Root -> V = \mammaIII, root ->
|
derivedV_III : Str -> Root -> V = \mammaIII, root ->
|
||||||
let
|
let
|
||||||
patt : Pattern = extractPattern mammaIII ;
|
vseq : Vowels = extractVowels mammaIII ;
|
||||||
class : VClass = classifyRoot root ;
|
class : VClass = classifyRoot root ;
|
||||||
info : VerbInfo = mkVerbInfo class FormIII root patt mammaIII ; --- assumption: mamma III is also imperative
|
info : VerbInfo = mkVerbInfo class FormIII root vseq mammaIII ; --- assumption: mamma III is also imperative
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl (conjFormIII info) ;
|
s = stemVariantsTbl (conjFormIII info) ;
|
||||||
i = info ;
|
i = info ;
|
||||||
@@ -596,7 +663,7 @@ resource ParadigmsMlt = open
|
|||||||
-- use the Form II conjugation, just prefixing a T
|
-- use the Form II conjugation, just prefixing a T
|
||||||
mammaII : Str = dropPfx 1 mammaV ; -- WAQQAF
|
mammaII : Str = dropPfx 1 mammaV ; -- WAQQAF
|
||||||
vII : V = derivedV_II mammaII root ;
|
vII : V = derivedV_II mammaII root ;
|
||||||
info : VerbInfo = mkVerbInfo vII.i.class FormV vII.i.root vII.i.patt mammaV ;
|
info : VerbInfo = mkVerbInfo vII.i.class FormV vII.i.root vII.i.vseq mammaV ;
|
||||||
get : VForm -> Str = \vf -> (vII.s ! vf).s1 ;
|
get : VForm -> Str = \vf -> (vII.s ! vf).s1 ;
|
||||||
tbl : VForm => Str = table {
|
tbl : VForm => Str = table {
|
||||||
VPerf agr => pfx_T (get (VPerf agr)) ;
|
VPerf agr => pfx_T (get (VPerf agr)) ;
|
||||||
@@ -652,7 +719,7 @@ resource ParadigmsMlt = open
|
|||||||
derivedV_VII : Str -> Str -> Root -> V = \mammaI, mammaVII, root ->
|
derivedV_VII : Str -> Str -> Root -> V = \mammaI, mammaVII, root ->
|
||||||
let
|
let
|
||||||
class : VClass = classifyRoot root ;
|
class : VClass = classifyRoot root ;
|
||||||
vowels : Pattern = extractPattern mammaI ;
|
vowels : Vowels = extractVowels mammaI ;
|
||||||
c1 : Str = case mammaVII of {
|
c1 : Str = case mammaVII of {
|
||||||
"n" + c@#Cns + "t" + _ => "n"+c+"t" ; -- NXT-EĦET
|
"n" + c@#Cns + "t" + _ => "n"+c+"t" ; -- NXT-EĦET
|
||||||
"ntgħ" + _ => "ntgħ" ; -- NTGĦ-AĠEN
|
"ntgħ" + _ => "ntgħ" ; -- NTGĦ-AĠEN
|
||||||
@@ -675,7 +742,7 @@ resource ParadigmsMlt = open
|
|||||||
let
|
let
|
||||||
mammaI : Str = delCharAt 1 mammaVIII ;
|
mammaI : Str = delCharAt 1 mammaVIII ;
|
||||||
class : VClass = classifyRoot root ;
|
class : VClass = classifyRoot root ;
|
||||||
vowels : Pattern = extractPattern mammaI ;
|
vowels : Vowels = extractVowels mammaI ;
|
||||||
info : VerbInfo = mkVerbInfo class FormVIII root vowels mammaVIII ;
|
info : VerbInfo = mkVerbInfo class FormVIII root vowels mammaVIII ;
|
||||||
c1 : Str = root.C1+"t";
|
c1 : Str = root.C1+"t";
|
||||||
in lin V {
|
in lin V {
|
||||||
@@ -686,15 +753,15 @@ resource ParadigmsMlt = open
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Make a Form IX verb
|
-- Make a Form IX verb
|
||||||
-- e.g.: derivedV_IX "sfar"
|
-- e.g.: derivedV_IX "sfar" (mkRoot "s-f-r")
|
||||||
derivedV_IX : Str -> Root -> V = \mammaIX, root ->
|
derivedV_IX : Str -> Root -> V = \mammaIX, root ->
|
||||||
case mammaIX of {
|
case mammaIX of {
|
||||||
-- c1@#Consonant + c2@#Consonant + v1@("ie"|"a") + c3@#Consonant =>
|
-- c1@#Consonant + c2@#Consonant + v1@("ie"|"a") + c3@#Consonant =>
|
||||||
_ + v1@("ie"|"a"|"â") + _ =>
|
_ + v1@("ie"|"a"|"â") + _ =>
|
||||||
let
|
let
|
||||||
patt : Pattern = mkPattern v1 ;
|
vseq : Vowels = mkVowels v1 ;
|
||||||
class : VClass = classifyRoot root ;
|
class : VClass = classifyRoot root ;
|
||||||
info : VerbInfo = mkVerbInfo class FormIX root patt mammaIX ;
|
info : VerbInfo = mkVerbInfo class FormIX root vseq mammaIX ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl (conjFormIX info) ;
|
s = stemVariantsTbl (conjFormIX info) ;
|
||||||
i = info ;
|
i = info ;
|
||||||
@@ -709,8 +776,8 @@ resource ParadigmsMlt = open
|
|||||||
derivedV_X : Str -> Root -> V = \mammaX, root ->
|
derivedV_X : Str -> Root -> V = \mammaX, root ->
|
||||||
let
|
let
|
||||||
class : VClass = classifyRoot root ;
|
class : VClass = classifyRoot root ;
|
||||||
patt : Pattern = extractPattern mammaX ;
|
vseq : Vowels = extractVowels mammaX ;
|
||||||
info : VerbInfo = mkVerbInfo class FormX root patt mammaX ;
|
info : VerbInfo = mkVerbInfo class FormX root vseq mammaX ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl (conjFormX info) ;
|
s = stemVariantsTbl (conjFormX info) ;
|
||||||
i = info ;
|
i = info ;
|
||||||
@@ -723,33 +790,33 @@ resource ParadigmsMlt = open
|
|||||||
-- Regular strong verb ("sħiħ"), eg KITEB
|
-- Regular strong verb ("sħiħ"), eg KITEB
|
||||||
strongV : V = overload {
|
strongV : V = overload {
|
||||||
|
|
||||||
-- Params: root, pattern
|
-- Params: root, vowels
|
||||||
strongV : Root -> Pattern -> V = \root,patt ->
|
strongV : Root -> Vowels -> V = \root,vseq ->
|
||||||
let imp = conjStrongImp root patt
|
let imp = conjStrongImp root vseq
|
||||||
in strongVWorst root patt imp ;
|
in strongVWorst root vseq imp ;
|
||||||
|
|
||||||
-- Params: root, pattern, imperative P2Sg
|
-- Params: root, vowels, imperative P2Sg
|
||||||
strongV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
strongV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||||
let
|
let
|
||||||
imp = table {
|
imp = table {
|
||||||
Sg => imp_sg ;
|
Sg => imp_sg ;
|
||||||
Pl => (takePfx 3 imp_sg) + root.C3 + "u" -- IFTAĦ > IFTĦU
|
Pl => (takePfx 3 imp_sg) + root.C3 + "u" -- IFTAĦ > IFTĦU
|
||||||
} ;
|
} ;
|
||||||
in strongVWorst root patt imp ;
|
in strongVWorst root vseq imp ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Worst case for strong verb
|
-- Worst case for strong verb
|
||||||
strongVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
strongVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||||
let
|
let
|
||||||
tbl : (VForm => Str) = table {
|
tbl : (VForm => Str) = table {
|
||||||
VPerf agr => ( conjStrongPerf root patt ) ! agr ;
|
VPerf agr => ( conjStrongPerf root vseq ) ! agr ;
|
||||||
VImpf agr => ( conjStrongImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
VImpf agr => ( conjStrongImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||||
VImp n => imp ! n ;
|
VImp n => imp ! n ;
|
||||||
VPresPart _ => NONEXIST ;
|
VPresPart _ => NONEXIST ;
|
||||||
VPastPart _ => NONEXIST
|
VPastPart _ => NONEXIST
|
||||||
} ;
|
} ;
|
||||||
info : VerbInfo = mkVerbInfo (Strong Regular) (FormI) root patt (imp ! Sg) ;
|
info : VerbInfo = mkVerbInfo (Strong Regular) (FormI) root vseq (imp ! Sg) ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl tbl ;
|
s = stemVariantsTbl tbl ;
|
||||||
i = info ;
|
i = info ;
|
||||||
@@ -763,15 +830,15 @@ resource ParadigmsMlt = open
|
|||||||
-- Liquid-medial strong verb, eg ŻELAQ
|
-- Liquid-medial strong verb, eg ŻELAQ
|
||||||
liquidMedialV : V = overload {
|
liquidMedialV : V = overload {
|
||||||
|
|
||||||
-- Params: root, pattern
|
-- Params: root, vowels
|
||||||
liquidMedialV : Root -> Pattern -> V = \root,patt ->
|
liquidMedialV : Root -> Vowels -> V = \root,vseq ->
|
||||||
let imp = conjLiquidMedialImp root patt
|
let imp = conjLiquidMedialImp root vseq
|
||||||
in liquidMedialVWorst root patt imp ;
|
in liquidMedialVWorst root vseq imp ;
|
||||||
|
|
||||||
-- Params: root, pattern, imperative P2Sg
|
-- Params: root, vowels, imperative P2Sg
|
||||||
liquidMedialV : Root -> Pattern -> Str -> V = \root,patt,imp_sg ->
|
liquidMedialV : Root -> Vowels -> Str -> V = \root,vseq,imp_sg ->
|
||||||
let
|
let
|
||||||
vowels = extractPattern imp_sg ;
|
vowels = extractVowels imp_sg ;
|
||||||
imp = table {
|
imp = table {
|
||||||
Sg => imp_sg ;
|
Sg => imp_sg ;
|
||||||
Pl => case root.C1 of {
|
Pl => case root.C1 of {
|
||||||
@@ -779,21 +846,21 @@ resource ParadigmsMlt = open
|
|||||||
_ => vowels.V1 + root.C1 + vowels.V2 + root.C2 + root.C3 + "u" -- OĦROĠ > OĦORĠU
|
_ => vowels.V1 + root.C1 + vowels.V2 + root.C2 + root.C3 + "u" -- OĦROĠ > OĦORĠU
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
in liquidMedialVWorst root patt imp ;
|
in liquidMedialVWorst root vseq imp ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Worst case for liquid medial strong verb
|
-- Worst case for liquid medial strong verb
|
||||||
liquidMedialVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
liquidMedialVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||||
let
|
let
|
||||||
tbl : (VForm => Str) = table {
|
tbl : (VForm => Str) = table {
|
||||||
VPerf agr => ( conjLiquidMedialPerf root patt ) ! agr ;
|
VPerf agr => ( conjLiquidMedialPerf root vseq ) ! agr ;
|
||||||
VImpf agr => ( conjLiquidMedialImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
VImpf agr => ( conjLiquidMedialImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||||
VImp n => imp ! n ;
|
VImp n => imp ! n ;
|
||||||
VPresPart _ => NONEXIST ;
|
VPresPart _ => NONEXIST ;
|
||||||
VPastPart _ => NONEXIST
|
VPastPart _ => NONEXIST
|
||||||
} ;
|
} ;
|
||||||
info : VerbInfo = mkVerbInfo (Strong LiquidMedial) (FormI) root patt (imp ! Sg) ;
|
info : VerbInfo = mkVerbInfo (Strong LiquidMedial) (FormI) root vseq (imp ! Sg) ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl tbl ;
|
s = stemVariantsTbl tbl ;
|
||||||
i = info ;
|
i = info ;
|
||||||
@@ -806,33 +873,33 @@ resource ParadigmsMlt = open
|
|||||||
-- Geminated strong verb ("trux"), eg ĦABB
|
-- Geminated strong verb ("trux"), eg ĦABB
|
||||||
geminatedV : V = overload {
|
geminatedV : V = overload {
|
||||||
|
|
||||||
-- Params: root, pattern
|
-- Params: root, vowels
|
||||||
geminatedV : Root -> Pattern -> V = \root,patt ->
|
geminatedV : Root -> Vowels -> V = \root,vseq ->
|
||||||
let imp = conjGeminatedImp root patt
|
let imp = conjGeminatedImp root vseq
|
||||||
in geminatedVWorst root patt imp ;
|
in geminatedVWorst root vseq imp ;
|
||||||
|
|
||||||
-- Params: root, pattern, imperative P2Sg
|
-- Params: root, vowels, imperative P2Sg
|
||||||
geminatedV : Root -> Pattern -> Str -> V = \root,patt,imp_sg ->
|
geminatedV : Root -> Vowels -> Str -> V = \root,vseq,imp_sg ->
|
||||||
let
|
let
|
||||||
imp = table {
|
imp = table {
|
||||||
Sg => imp_sg ;
|
Sg => imp_sg ;
|
||||||
Pl => imp_sg + "u" -- ŻOMM > ŻOMMU
|
Pl => imp_sg + "u" -- ŻOMM > ŻOMMU
|
||||||
} ;
|
} ;
|
||||||
in geminatedVWorst root patt imp ;
|
in geminatedVWorst root vseq imp ;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
-- Worst case for reduplicated verb
|
-- Worst case for reduplicated verb
|
||||||
geminatedVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
geminatedVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||||
let
|
let
|
||||||
tbl : (VForm => Str) = table {
|
tbl : (VForm => Str) = table {
|
||||||
VPerf agr => ( conjGeminatedPerf root patt ) ! agr ;
|
VPerf agr => ( conjGeminatedPerf root vseq ) ! agr ;
|
||||||
VImpf agr => ( conjGeminatedImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
VImpf agr => ( conjGeminatedImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||||
VImp n => imp ! n ;
|
VImp n => imp ! n ;
|
||||||
VPresPart _ => NONEXIST ;
|
VPresPart _ => NONEXIST ;
|
||||||
VPastPart _ => NONEXIST
|
VPastPart _ => NONEXIST
|
||||||
} ;
|
} ;
|
||||||
info : VerbInfo = mkVerbInfo (Strong Geminated) (FormI) root patt (imp ! Sg) ;
|
info : VerbInfo = mkVerbInfo (Strong Geminated) (FormI) root vseq (imp ! Sg) ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl tbl ;
|
s = stemVariantsTbl tbl ;
|
||||||
i = info ;
|
i = info ;
|
||||||
@@ -845,33 +912,33 @@ resource ParadigmsMlt = open
|
|||||||
-- Assimilative weak verb, eg WASAL
|
-- Assimilative weak verb, eg WASAL
|
||||||
assimilativeV : V = overload {
|
assimilativeV : V = overload {
|
||||||
|
|
||||||
-- Params: root, pattern
|
-- Params: root, vowels
|
||||||
assimilativeV : Root -> Pattern -> V = \root,patt ->
|
assimilativeV : Root -> Vowels -> V = \root,vseq ->
|
||||||
let imp = conjAssimilativeImp root patt
|
let imp = conjAssimilativeImp root vseq
|
||||||
in assimilativeVWorst root patt imp ;
|
in assimilativeVWorst root vseq imp ;
|
||||||
|
|
||||||
-- Params: root, pattern, imperative P2Sg
|
-- Params: root, vowels, imperative P2Sg
|
||||||
assimilativeV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
assimilativeV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||||
let
|
let
|
||||||
imp = table {
|
imp = table {
|
||||||
Sg => imp_sg ;
|
Sg => imp_sg ;
|
||||||
Pl => (dropSfx 2 imp_sg) + root.C3 + "u" -- ASAL > ASLU
|
Pl => (dropSfx 2 imp_sg) + root.C3 + "u" -- ASAL > ASLU
|
||||||
} ;
|
} ;
|
||||||
in assimilativeVWorst root patt imp ;
|
in assimilativeVWorst root vseq imp ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Worst case for assimilative verb
|
-- Worst case for assimilative verb
|
||||||
assimilativeVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
assimilativeVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||||
let
|
let
|
||||||
tbl : (VForm => Str) = table {
|
tbl : (VForm => Str) = table {
|
||||||
VPerf agr => ( conjAssimilativePerf root patt ) ! agr ;
|
VPerf agr => ( conjAssimilativePerf root vseq ) ! agr ;
|
||||||
VImpf agr => ( conjAssimilativeImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
VImpf agr => ( conjAssimilativeImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||||
VImp n => imp ! n ;
|
VImp n => imp ! n ;
|
||||||
VPresPart _ => NONEXIST ;
|
VPresPart _ => NONEXIST ;
|
||||||
VPastPart _ => NONEXIST
|
VPastPart _ => NONEXIST
|
||||||
} ;
|
} ;
|
||||||
info : VerbInfo = mkVerbInfo (Weak Assimilative) (FormI) root patt (imp ! Sg) ;
|
info : VerbInfo = mkVerbInfo (Weak Assimilative) (FormI) root vseq (imp ! Sg) ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl tbl ;
|
s = stemVariantsTbl tbl ;
|
||||||
i = info ;
|
i = info ;
|
||||||
@@ -884,33 +951,33 @@ resource ParadigmsMlt = open
|
|||||||
-- Hollow weak verb, eg SAR (S-J-R)
|
-- Hollow weak verb, eg SAR (S-J-R)
|
||||||
hollowV : V = overload {
|
hollowV : V = overload {
|
||||||
|
|
||||||
-- Params: root, pattern
|
-- Params: root, vowels
|
||||||
hollowV : Root -> Pattern -> V = \root,patt ->
|
hollowV : Root -> Vowels -> V = \root,vseq ->
|
||||||
let imp = conjHollowImp root patt
|
let imp = conjHollowImp root vseq
|
||||||
in hollowVWorst root patt imp ;
|
in hollowVWorst root vseq imp ;
|
||||||
|
|
||||||
-- Params: root, pattern, imperative P2Sg
|
-- Params: root, vowels, imperative P2Sg
|
||||||
hollowV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
hollowV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||||
let
|
let
|
||||||
imp = table {
|
imp = table {
|
||||||
Sg => imp_sg ;
|
Sg => imp_sg ;
|
||||||
Pl => imp_sg + "u" -- SIR > SIRU
|
Pl => imp_sg + "u" -- SIR > SIRU
|
||||||
} ;
|
} ;
|
||||||
in hollowVWorst root patt imp ;
|
in hollowVWorst root vseq imp ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Worst case for hollow verb
|
-- Worst case for hollow verb
|
||||||
hollowVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
hollowVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||||
let
|
let
|
||||||
tbl : (VForm => Str) = table {
|
tbl : (VForm => Str) = table {
|
||||||
VPerf agr => ( conjHollowPerf root patt ) ! agr ;
|
VPerf agr => ( conjHollowPerf root vseq ) ! agr ;
|
||||||
VImpf agr => ( conjHollowImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
VImpf agr => ( conjHollowImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||||
VImp n => imp ! n ;
|
VImp n => imp ! n ;
|
||||||
VPresPart _ => NONEXIST ;
|
VPresPart _ => NONEXIST ;
|
||||||
VPastPart _ => NONEXIST
|
VPastPart _ => NONEXIST
|
||||||
} ;
|
} ;
|
||||||
info : VerbInfo = mkVerbInfo (Weak Hollow) (FormI) root patt (imp ! Sg) ;
|
info : VerbInfo = mkVerbInfo (Weak Hollow) (FormI) root vseq (imp ! Sg) ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl tbl ;
|
s = stemVariantsTbl tbl ;
|
||||||
i = info ;
|
i = info ;
|
||||||
@@ -923,13 +990,13 @@ resource ParadigmsMlt = open
|
|||||||
-- Lacking (nieqes) verb, eg MEXA (M-X-J)
|
-- Lacking (nieqes) verb, eg MEXA (M-X-J)
|
||||||
lackingV : V = overload {
|
lackingV : V = overload {
|
||||||
|
|
||||||
-- Params: root, pattern
|
-- Params: root, vowels
|
||||||
lackingV : Root -> Pattern -> V = \root,patt ->
|
lackingV : Root -> Vowels -> V = \root,vseq ->
|
||||||
let imp = conjLackingImp root patt
|
let imp = conjLackingImp root vseq
|
||||||
in lackingVWorst root patt imp ;
|
in lackingVWorst root vseq imp ;
|
||||||
|
|
||||||
-- Params: root, pattern, imperative P2Sg
|
-- Params: root, vowels, imperative P2Sg
|
||||||
lackingV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
lackingV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||||
let
|
let
|
||||||
imp = table {
|
imp = table {
|
||||||
Sg => imp_sg ;
|
Sg => imp_sg ;
|
||||||
@@ -939,21 +1006,21 @@ resource ParadigmsMlt = open
|
|||||||
x => (dropSfx 1 x) + "u" --- unknown case
|
x => (dropSfx 1 x) + "u" --- unknown case
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
in lackingVWorst root patt imp ;
|
in lackingVWorst root vseq imp ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Worst case for lacking verb
|
-- Worst case for lacking verb
|
||||||
lackingVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
lackingVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||||
let
|
let
|
||||||
tbl : (VForm => Str) = table {
|
tbl : (VForm => Str) = table {
|
||||||
VPerf agr => ( conjLackingPerf root patt ) ! agr ;
|
VPerf agr => ( conjLackingPerf root vseq ) ! agr ;
|
||||||
VImpf agr => ( conjLackingImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
VImpf agr => ( conjLackingImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||||
VImp n => imp ! n ;
|
VImp n => imp ! n ;
|
||||||
VPresPart _ => NONEXIST ;
|
VPresPart _ => NONEXIST ;
|
||||||
VPastPart _ => NONEXIST
|
VPastPart _ => NONEXIST
|
||||||
} ;
|
} ;
|
||||||
info : VerbInfo = mkVerbInfo (Weak Lacking) (FormI) root patt (imp ! Sg) ;
|
info : VerbInfo = mkVerbInfo (Weak Lacking) (FormI) root vseq (imp ! Sg) ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl tbl ;
|
s = stemVariantsTbl tbl ;
|
||||||
i = info ;
|
i = info ;
|
||||||
@@ -966,33 +1033,33 @@ resource ParadigmsMlt = open
|
|||||||
-- Defective verb, eg QALA' (Q-L-GĦ)
|
-- Defective verb, eg QALA' (Q-L-GĦ)
|
||||||
defectiveV : V = overload {
|
defectiveV : V = overload {
|
||||||
|
|
||||||
-- Params: root, pattern
|
-- Params: root, vowels
|
||||||
defectiveV : Root -> Pattern -> V = \root,patt ->
|
defectiveV : Root -> Vowels -> V = \root,vseq ->
|
||||||
let imp = conjDefectiveImp root patt
|
let imp = conjDefectiveImp root vseq
|
||||||
in defectiveVWorst root patt imp ;
|
in defectiveVWorst root vseq imp ;
|
||||||
|
|
||||||
-- Params: root, pattern, imperative P2Sg
|
-- Params: root, vowels, imperative P2Sg
|
||||||
defectiveV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
defectiveV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||||
let
|
let
|
||||||
imp = table {
|
imp = table {
|
||||||
Sg => imp_sg ;
|
Sg => imp_sg ;
|
||||||
Pl => (takePfx 2 imp_sg) + "i" + root.C2 + "għu" -- ISMA' > ISIMGĦU
|
Pl => (takePfx 2 imp_sg) + "i" + root.C2 + "għu" -- ISMA' > ISIMGĦU
|
||||||
} ;
|
} ;
|
||||||
in defectiveVWorst root patt imp ;
|
in defectiveVWorst root vseq imp ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Worst case for defective verb
|
-- Worst case for defective verb
|
||||||
defectiveVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
defectiveVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||||
let
|
let
|
||||||
tbl : (VForm => Str) = table {
|
tbl : (VForm => Str) = table {
|
||||||
VPerf agr => ( conjDefectivePerf root patt ) ! agr ;
|
VPerf agr => ( conjDefectivePerf root vseq ) ! agr ;
|
||||||
VImpf agr => ( conjDefectiveImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
VImpf agr => ( conjDefectiveImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||||
VImp n => imp ! n ;
|
VImp n => imp ! n ;
|
||||||
VPresPart _ => NONEXIST ;
|
VPresPart _ => NONEXIST ;
|
||||||
VPastPart _ => NONEXIST
|
VPastPart _ => NONEXIST
|
||||||
} ;
|
} ;
|
||||||
info : VerbInfo = mkVerbInfo (Weak Defective) (FormI) root patt (imp ! Sg) ;
|
info : VerbInfo = mkVerbInfo (Weak Defective) (FormI) root vseq (imp ! Sg) ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl tbl ;
|
s = stemVariantsTbl tbl ;
|
||||||
i = info ;
|
i = info ;
|
||||||
@@ -1005,33 +1072,33 @@ resource ParadigmsMlt = open
|
|||||||
-- Make a Quad verb, eg DENDEL (D-L-D-L)
|
-- Make a Quad verb, eg DENDEL (D-L-D-L)
|
||||||
quadV : V = overload {
|
quadV : V = overload {
|
||||||
|
|
||||||
-- Params: root, pattern
|
-- Params: root, vowels
|
||||||
quadV : Root -> Pattern -> V = \root,patt ->
|
quadV : Root -> Vowels -> V = \root,vseq ->
|
||||||
let imp = conjQuadImp root patt
|
let imp = conjQuadImp root vseq
|
||||||
in quadVWorst root patt imp ;
|
in quadVWorst root vseq imp ;
|
||||||
|
|
||||||
-- Params: root, pattern, imperative P2Sg
|
-- Params: root, vowels, imperative P2Sg
|
||||||
quadV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
quadV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||||
let
|
let
|
||||||
imp = table {
|
imp = table {
|
||||||
Sg => imp_sg ;
|
Sg => imp_sg ;
|
||||||
Pl => (takePfx 4 imp_sg) + root.C4 + "u" -- ĦARBAT > ĦARBTU
|
Pl => (takePfx 4 imp_sg) + root.C4 + "u" -- ĦARBAT > ĦARBTU
|
||||||
} ;
|
} ;
|
||||||
in quadVWorst root patt imp ;
|
in quadVWorst root vseq imp ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Worst case for quad verb
|
-- Worst case for quad verb
|
||||||
quadVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
quadVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||||
let
|
let
|
||||||
tbl : (VForm => Str) = table {
|
tbl : (VForm => Str) = table {
|
||||||
VPerf agr => ( conjQuadPerf root patt ) ! agr ;
|
VPerf agr => ( conjQuadPerf root vseq ) ! agr ;
|
||||||
VImpf agr => ( conjQuadImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
VImpf agr => ( conjQuadImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||||
VImp n => imp ! n ;
|
VImp n => imp ! n ;
|
||||||
VPresPart _ => NONEXIST ;
|
VPresPart _ => NONEXIST ;
|
||||||
VPastPart _ => NONEXIST
|
VPastPart _ => NONEXIST
|
||||||
} ;
|
} ;
|
||||||
info : VerbInfo = mkVerbInfo (Quad QStrong) (FormI) root patt (imp ! Sg) ;
|
info : VerbInfo = mkVerbInfo (Quad QStrong) (FormI) root vseq (imp ! Sg) ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl tbl ;
|
s = stemVariantsTbl tbl ;
|
||||||
i = info ;
|
i = info ;
|
||||||
@@ -1044,13 +1111,13 @@ resource ParadigmsMlt = open
|
|||||||
-- Make a weak-final Quad verb, eg SERVA (S-R-V-J)
|
-- Make a weak-final Quad verb, eg SERVA (S-R-V-J)
|
||||||
quadWeakV : V = overload {
|
quadWeakV : V = overload {
|
||||||
|
|
||||||
-- Params: root, pattern
|
-- Params: root, vowels
|
||||||
quadWeakV : Root -> Pattern -> V = \root,patt ->
|
quadWeakV : Root -> Vowels -> V = \root,vseq ->
|
||||||
let imp = conjQuadWeakImp root patt
|
let imp = conjQuadWeakImp root vseq
|
||||||
in quadWeakVWorst root patt imp ;
|
in quadWeakVWorst root vseq imp ;
|
||||||
|
|
||||||
-- Params: root, pattern, imperative P2Sg
|
-- Params: root, vowels, imperative P2Sg
|
||||||
quadWeakV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
quadWeakV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||||
let
|
let
|
||||||
imp = table {
|
imp = table {
|
||||||
Sg => imp_sg ;
|
Sg => imp_sg ;
|
||||||
@@ -1059,21 +1126,21 @@ resource ParadigmsMlt = open
|
|||||||
_ => (dropSfx 1 imp_sg) + "u" -- SERVI > SERVU
|
_ => (dropSfx 1 imp_sg) + "u" -- SERVI > SERVU
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
in quadWeakVWorst root patt imp ;
|
in quadWeakVWorst root vseq imp ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Worst case for quadWeak verb
|
-- Worst case for quadWeak verb
|
||||||
quadWeakVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
quadWeakVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||||
let
|
let
|
||||||
tbl : (VForm => Str) = table {
|
tbl : (VForm => Str) = table {
|
||||||
VPerf agr => ( conjQuadWeakPerf root patt (imp ! Sg) ) ! agr ;
|
VPerf agr => ( conjQuadWeakPerf root vseq (imp ! Sg) ) ! agr ;
|
||||||
VImpf agr => ( conjQuadWeakImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
VImpf agr => ( conjQuadWeakImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||||
VImp n => imp ! n ;
|
VImp n => imp ! n ;
|
||||||
VPresPart _ => NONEXIST ;
|
VPresPart _ => NONEXIST ;
|
||||||
VPastPart _ => NONEXIST
|
VPastPart _ => NONEXIST
|
||||||
} ;
|
} ;
|
||||||
info : VerbInfo = mkVerbInfo (Quad QWeak) (FormI) root patt (imp ! Sg) ;
|
info : VerbInfo = mkVerbInfo (Quad QWeak) (FormI) root vseq (imp ! Sg) ;
|
||||||
in lin V {
|
in lin V {
|
||||||
s = stemVariantsTbl tbl ;
|
s = stemVariantsTbl tbl ;
|
||||||
i = info ;
|
i = info ;
|
||||||
@@ -1204,45 +1271,29 @@ resource ParadigmsMlt = open
|
|||||||
hasCompl : Prep -> Compl = \p -> p ** { isPresent = True } ;
|
hasCompl : Prep -> Compl = \p -> p ** { isPresent = True } ;
|
||||||
noCompl : Compl = noPrep ** { isPresent = False } where { noPrep : Prep = mkPrep [] };
|
noCompl : Compl = noPrep ** { isPresent = False } where { noPrep : Prep = mkPrep [] };
|
||||||
|
|
||||||
mkVS : V -> VS ; -- sentence-compl
|
|
||||||
mkVS v = lin VS v ;
|
mkVS v = lin VS v ;
|
||||||
|
|
||||||
prepV2 : V -> Prep -> V2 ;
|
prepV2 : V -> Prep -> V2 ;
|
||||||
prepV2 v p = lin V2 ( v ** { c2 = hasCompl p } ) ;
|
prepV2 v p = lin V2 ( v ** { c2 = hasCompl p } ) ;
|
||||||
|
|
||||||
dirV2 : V -> V2 ;
|
dirV2 : V -> V2 ;
|
||||||
-- dirV2 v = prepV2 v noPrep ;
|
|
||||||
dirV2 v = lin V2 ( v ** { c2 = noCompl } ) ;
|
dirV2 v = lin V2 ( v ** { c2 = noCompl } ) ;
|
||||||
|
|
||||||
prepPrepV3 : V -> Prep -> Prep -> V3 ;
|
prepPrepV3 : V -> Prep -> Prep -> V3 ;
|
||||||
prepPrepV3 v p t = lin V3 (v ** { c2 = hasCompl p ; c3 = hasCompl t }) ;
|
prepPrepV3 v p t = lin V3 (v ** { c2 = hasCompl p ; c3 = hasCompl t }) ;
|
||||||
|
|
||||||
dirV3 : V -> Prep -> V3 ;
|
dirV3 : V -> Prep -> V3 ;
|
||||||
-- dirV3 v p = prepPrepV3 v noPrep p ;
|
|
||||||
dirV3 v t = lin V3 (v ** { c2 = noCompl ; c3 = hasCompl t }) ;
|
dirV3 v t = lin V3 (v ** { c2 = noCompl ; c3 = hasCompl t }) ;
|
||||||
|
|
||||||
dirdirV3 : V -> V3 ;
|
dirdirV3 : V -> V3 ;
|
||||||
-- dirdirV3 v = dirV3 v noPrep ;
|
|
||||||
dirdirV3 v = lin V3 (v ** { c2 = noCompl ; c3 = noCompl }) ;
|
dirdirV3 v = lin V3 (v ** { c2 = noCompl ; c3 = noCompl }) ;
|
||||||
|
|
||||||
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,_,_ --%
|
|
||||||
};
|
|
||||||
mkV3 = overload {
|
mkV3 = overload {
|
||||||
mkV3 : V -> V3 = dirdirV3 ;
|
mkV3 : V -> V3 = dirdirV3 ;
|
||||||
mkV3 : V -> Prep -> Prep -> V3 = prepPrepV3 ;
|
mkV3 : V -> Prep -> Prep -> V3 = prepPrepV3 ;
|
||||||
mkV3 : V -> Prep -> V3 = dirV3 ;
|
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 : Str -> V3 = \v -> dirdirV3 (regV v) ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkV2V : V -> Prep -> Prep -> V2V ; -- e.g. want (noPrep NP) (to VP)
|
|
||||||
mkV2V v p t = lin V2V (v ** { c2 = hasCompl p ; c3 = hasCompl t }) ;
|
mkV2V v p t = lin V2V (v ** { c2 = hasCompl p ; c3 = hasCompl t }) ;
|
||||||
|
|
||||||
{- Conjunction -------------------------------------------------------- -}
|
{- Conjunction -------------------------------------------------------- -}
|
||||||
@@ -1260,10 +1311,15 @@ resource ParadigmsMlt = open
|
|||||||
-- Overloaded function for building an adjective
|
-- Overloaded function for building an adjective
|
||||||
mkA : A = overload {
|
mkA : A = overload {
|
||||||
|
|
||||||
-- Same form for gender and number; no comparative form.
|
-- Regular adjective with predictable feminine and plural forms
|
||||||
-- Params:
|
-- Params:
|
||||||
-- Adjective, eg BLU
|
-- Adjective, eg BRAVU
|
||||||
mkA : Str -> A = sameA ;
|
mkA : Str -> A = \masc ->
|
||||||
|
let
|
||||||
|
fem = inferAdjFem masc ;
|
||||||
|
plural = inferAdjPlural fem
|
||||||
|
in
|
||||||
|
mk3A masc fem plural ;
|
||||||
|
|
||||||
-- Infer feminine from masculine; no comparative form.
|
-- Infer feminine from masculine; no comparative form.
|
||||||
-- Params:
|
-- Params:
|
||||||
@@ -1271,7 +1327,7 @@ resource ParadigmsMlt = open
|
|||||||
-- Plural, eg SBIEĦ
|
-- Plural, eg SBIEĦ
|
||||||
mkA : Str -> Str -> A = brokenA ;
|
mkA : Str -> Str -> A = brokenA ;
|
||||||
|
|
||||||
-- Infer feminine from masculine; no comparative form.
|
-- Explicit feminine form; no comparative form.
|
||||||
-- Params:
|
-- Params:
|
||||||
-- Masculine, eg SABIĦ
|
-- Masculine, eg SABIĦ
|
||||||
-- Feminine, eg SABIĦA
|
-- Feminine, eg SABIĦA
|
||||||
@@ -1288,17 +1344,6 @@ resource ParadigmsMlt = open
|
|||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Regular adjective with predictable feminine and plural forms
|
|
||||||
regA : Str -> A ;
|
|
||||||
regA masc =
|
|
||||||
let
|
|
||||||
fem = determineAdjFem masc ;
|
|
||||||
plural = determineAdjPlural fem
|
|
||||||
in
|
|
||||||
mk3A masc fem plural ;
|
|
||||||
|
|
||||||
-- Adjective with same forms for masculine, feminine and plural.
|
|
||||||
sameA : Str -> A ;
|
|
||||||
sameA a = mk3A a a a ;
|
sameA a = mk3A a a a ;
|
||||||
|
|
||||||
-- Adjective with predictable feminine but broken plural
|
-- Adjective with predictable feminine but broken plural
|
||||||
@@ -1307,14 +1352,14 @@ resource ParadigmsMlt = open
|
|||||||
-- without comparative form
|
-- without comparative form
|
||||||
brokenA : Str -> Str -> A = \masc,plural ->
|
brokenA : Str -> Str -> A = \masc,plural ->
|
||||||
let
|
let
|
||||||
fem = determineAdjFem masc
|
fem = inferAdjFem masc
|
||||||
in
|
in
|
||||||
mk3A masc fem plural ;
|
mk3A masc fem plural ;
|
||||||
|
|
||||||
-- with comparative form
|
-- with comparative form
|
||||||
brokenA : Str -> Str -> Str -> A = \masc,plural,compar ->
|
brokenA : Str -> Str -> Str -> A = \masc,plural,compar ->
|
||||||
let
|
let
|
||||||
fem = determineAdjFem masc
|
fem = inferAdjFem masc
|
||||||
in
|
in
|
||||||
mk4A masc fem plural compar ;
|
mk4A masc fem plural compar ;
|
||||||
|
|
||||||
@@ -1330,22 +1375,6 @@ resource ParadigmsMlt = open
|
|||||||
mk4A = \masc,fem,plural,compar ->
|
mk4A = \masc,fem,plural,compar ->
|
||||||
lin A (mkAdjective masc fem plural compar) ** {hasComp = True} ;
|
lin A (mkAdjective masc fem plural compar) ** {hasComp = True} ;
|
||||||
|
|
||||||
-- Determine femininine form of adjective from masculine
|
|
||||||
determineAdjFem : Str -> Str ;
|
|
||||||
determineAdjFem masc = case masc of {
|
|
||||||
_ + "ef" => (dropSfx 2 masc) + "fa" ; -- NIEXEF
|
|
||||||
_ + "u" => (init masc) + "a" ; -- BRAVU
|
|
||||||
_ + "i" => masc + "ja" ; -- MIMLI
|
|
||||||
_ => masc + "a" -- VOJT
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Determine plural form of adjective from feminine
|
|
||||||
determineAdjPlural : Str -> Str ;
|
|
||||||
determineAdjPlural fem = case fem of {
|
|
||||||
_ + ("f"|"j"|"ġ") + "a" => (init fem) + "in" ; -- NIEXFA, MIMLIJA, MAĦMUĠA
|
|
||||||
_ => (init fem) + "i" -- BRAVA
|
|
||||||
} ;
|
|
||||||
|
|
||||||
prepA2 : A -> Prep -> A2 ;
|
prepA2 : A -> Prep -> A2 ;
|
||||||
prepA2 a p = lin A2 (a ** {c2 = hasCompl p}) ;
|
prepA2 a p = lin A2 (a ** {c2 = hasCompl p}) ;
|
||||||
|
|
||||||
@@ -1353,10 +1382,6 @@ resource ParadigmsMlt = open
|
|||||||
-- dirA2 a = prepA2 a noPrep ;
|
-- dirA2 a = prepA2 a noPrep ;
|
||||||
dirA2 a = lin A2 (a ** {c2 = noCompl}) ;
|
dirA2 a = lin A2 (a ** {c2 = noCompl}) ;
|
||||||
|
|
||||||
mkA2 : overload {
|
|
||||||
mkA2 : A -> Prep -> A2 ;
|
|
||||||
mkA2 : A -> Str -> A2 ;
|
|
||||||
} ;
|
|
||||||
mkA2 = overload {
|
mkA2 = overload {
|
||||||
mkA2 : A -> Prep -> A2 = prepA2 ;
|
mkA2 : A -> Prep -> A2 = prepA2 ;
|
||||||
mkA2 : A -> Str -> A2 = \a,p -> prepA2 a (mkPrep p) ;
|
mkA2 : A -> Str -> A2 = \a,p -> prepA2 a (mkPrep p) ;
|
||||||
@@ -1365,17 +1390,10 @@ resource ParadigmsMlt = open
|
|||||||
AS, A2S, AV : Type = A ;
|
AS, A2S, AV : Type = A ;
|
||||||
A2V : Type = A2 ;
|
A2V : Type = A2 ;
|
||||||
|
|
||||||
mkAS : A -> AS ;
|
|
||||||
mkAS a = a ;
|
mkAS a = a ;
|
||||||
|
|
||||||
{- Adverb ------------------------------------------------------------- -}
|
{- Adverb ------------------------------------------------------------- -}
|
||||||
|
|
||||||
mkAdv : Str -> Adv ; -- post-verbal adverb, e.g. ILLUM
|
|
||||||
mkAdV : Str -> AdV ; -- preverbal adverb, e.g. DEJJEM
|
|
||||||
|
|
||||||
mkAdA : Str -> AdA ; -- adverb modifying adjective, e.g. PJUTTOST
|
|
||||||
mkAdN : Str -> AdN ; -- adverb modifying numeral, e.g. MADWAR
|
|
||||||
|
|
||||||
mkAdv x = lin Adv (ss x) ** {
|
mkAdv x = lin Adv (ss x) ** {
|
||||||
joinsVerb = False ;
|
joinsVerb = False ;
|
||||||
a = agrP3 Sg Masc ; -- ignored when joinsVerb = False
|
a = agrP3 Sg Masc ; -- ignored when joinsVerb = False
|
||||||
@@ -1400,5 +1418,4 @@ resource ParadigmsMlt = open
|
|||||||
|
|
||||||
mkOrd : Str -> Ord = \x -> lin Ord { s = \\c => x };
|
mkOrd : Str -> Ord = \x -> lin Ord { s = \\c => x };
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -537,7 +537,7 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
|||||||
class : VClass ;
|
class : VClass ;
|
||||||
form : VDerivedForm ;
|
form : VDerivedForm ;
|
||||||
root : Root ; -- radicals
|
root : Root ; -- radicals
|
||||||
patt : Pattern ; -- vowels extracted from mamma
|
vseq : Vowels ; -- vowels extracted from mamma
|
||||||
imp : Str ; -- Imperative Sg. Gives so much information jaħasra!
|
imp : Str ; -- Imperative Sg. Gives so much information jaħasra!
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -849,8 +849,8 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
|||||||
<VImpf (AgP1 Pl), Pos> => "nkunu" ;
|
<VImpf (AgP1 Pl), Pos> => "nkunu" ;
|
||||||
<VImpf (AgP2 Pl), Pos> => "tkunu" ;
|
<VImpf (AgP2 Pl), Pos> => "tkunu" ;
|
||||||
<VImpf (AgP3Pl), Pos> => "jkunu" ;
|
<VImpf (AgP3Pl), Pos> => "jkunu" ;
|
||||||
<VImp (Pl), Pos> => "kun" ;
|
<VImp (Sg), Pos> => "kun" ;
|
||||||
<VImp (Sg), Pos> => "kunu" ;
|
<VImp (Pl), Pos> => "kunu" ;
|
||||||
<VPerf (AgP1 Sg), Neg> => "kontx" ;
|
<VPerf (AgP1 Sg), Neg> => "kontx" ;
|
||||||
<VPerf (AgP2 Sg), Neg> => "kontx" ;
|
<VPerf (AgP2 Sg), Neg> => "kontx" ;
|
||||||
<VPerf (AgP3Sg Masc), Neg> => "kienx" ;
|
<VPerf (AgP3Sg Masc), Neg> => "kienx" ;
|
||||||
@@ -865,8 +865,8 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
|||||||
<VImpf (AgP1 Pl), Neg> => "nkunux" ;
|
<VImpf (AgP1 Pl), Neg> => "nkunux" ;
|
||||||
<VImpf (AgP2 Pl), Neg> => "tkunux" ;
|
<VImpf (AgP2 Pl), Neg> => "tkunux" ;
|
||||||
<VImpf (AgP3Pl), Neg> => "jkunux" ;
|
<VImpf (AgP3Pl), Neg> => "jkunux" ;
|
||||||
<VImp (Pl), Neg> => "kunx" ;
|
<VImp (Sg), Neg> => "kunx" ;
|
||||||
<VImp (Sg), Neg> => "kunux" ;
|
<VImp (Pl), Neg> => "kunux" ;
|
||||||
<VPresPart gn, _> => NONEXIST ;
|
<VPresPart gn, _> => NONEXIST ;
|
||||||
<VPastPart gn, _> => NONEXIST
|
<VPastPart gn, _> => NONEXIST
|
||||||
}
|
}
|
||||||
@@ -907,8 +907,8 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
|||||||
VImpf (AgP1 Pl) => mkVerbStems [] "m'aħnie" ;
|
VImpf (AgP1 Pl) => mkVerbStems [] "m'aħnie" ;
|
||||||
VImpf (AgP2 Pl) => mkVerbStems [] "m'intom" ;
|
VImpf (AgP2 Pl) => mkVerbStems [] "m'intom" ;
|
||||||
VImpf (AgP3Pl) => mkVerbStems "huma" "m'humie" ;
|
VImpf (AgP3Pl) => mkVerbStems "huma" "m'humie" ;
|
||||||
VImp (Pl) => mkVerbStems "kun" ;
|
VImp (Sg) => mkVerbStems "kun" ;
|
||||||
VImp (Sg) => mkVerbStems "kunu" ;
|
VImp (Pl) => mkVerbStems "kunu" ;
|
||||||
VPresPart gn => mkVerbStems NONEXIST ;
|
VPresPart gn => mkVerbStems NONEXIST ;
|
||||||
VPastPart gn => mkVerbStems NONEXIST
|
VPastPart gn => mkVerbStems NONEXIST
|
||||||
} ;
|
} ;
|
||||||
@@ -1043,9 +1043,9 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
|||||||
EorI : Str = "e" | "i" ;
|
EorI : Str = "e" | "i" ;
|
||||||
IorE : Str = "i" | "e" ;
|
IorE : Str = "i" | "e" ;
|
||||||
|
|
||||||
{- ~~~ Roots & Patterns ~~~ -}
|
{- ~~~ Roots & Vowel sequences ~~~ -}
|
||||||
|
|
||||||
Pattern : Type = {V1, V2 : Str} ;
|
Vowels : Type = {V1, V2 : Str} ;
|
||||||
Root : Type = {C1, C2, C3, C4 : Str} ;
|
Root : Type = {C1, C2, C3, C4 : Str} ;
|
||||||
|
|
||||||
-- Make a root object. Accepts following overloads:
|
-- Make a root object. Accepts following overloads:
|
||||||
@@ -1068,40 +1068,40 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
|||||||
{ C1=toLower c1 ; C2=toLower c2 ; C3=toLower c3 ; C4=toLower c4 } ;
|
{ C1=toLower c1 ; C2=toLower c2 ; C3=toLower c3 ; C4=toLower c4 } ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkPattern : Pattern = overload {
|
mkVowels : Vowels = overload {
|
||||||
mkPattern : Pattern =
|
mkVowels : Vowels =
|
||||||
{ V1=[] ; V2=[] } ;
|
{ V1=[] ; V2=[] } ;
|
||||||
mkPattern : Str -> Pattern = \v1 ->
|
mkVowels : Str -> Vowels = \v1 ->
|
||||||
{ V1=toLower v1 ; V2=[] } ;
|
{ V1=toLower v1 ; V2=[] } ;
|
||||||
mkPattern : Str -> Str -> Pattern = \v1,v2 ->
|
mkVowels : Str -> Str -> Vowels = \v1,v2 ->
|
||||||
{ V1=toLower v1 ; V2=case v2 of {"" => [] ; _ => toLower v2}} ;
|
{ V1=toLower v1 ; V2=case v2 of {"" => [] ; _ => toLower v2}} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Extract first two vowels from a token (designed for semitic verb forms)
|
-- Extract first two vowels from a token (designed for semitic verb forms)
|
||||||
--- potentially slow
|
--- potentially slow
|
||||||
extractPattern : Str -> Pattern = \s ->
|
extractVowels : Str -> Vowels = \s ->
|
||||||
case s of {
|
case s of {
|
||||||
v1@"ie" + _ + v2@#Vowel + _ => mkPattern v1 v2 ; -- IEQAF
|
v1@"ie" + _ + v2@#Vowel + _ => mkVowels v1 v2 ; -- IEQAF
|
||||||
v1@#Vowel + _ + v2@#Vowel + _ => mkPattern v1 v2 ; -- IKTEB
|
v1@#Vowel + _ + v2@#Vowel + _ => mkVowels v1 v2 ; -- IKTEB
|
||||||
_ + v1@"ie" + _ + v2@#Vowel + _ => mkPattern v1 v2 ; -- RIEQED
|
_ + v1@"ie" + _ + v2@#Vowel + _ => mkVowels v1 v2 ; -- RIEQED
|
||||||
_ + v1@"ie" + _ => mkPattern v1 ; -- ŻIED
|
_ + v1@"ie" + _ => mkVowels v1 ; -- ŻIED
|
||||||
_ + v1@#Vowel + _ + v2@#Vowel + _ => mkPattern v1 v2 ; -- ĦARBAT
|
_ + v1@#Vowel + _ + v2@#Vowel + _ => mkVowels v1 v2 ; -- ĦARBAT
|
||||||
_ + v1@#Vowel + _ => mkPattern v1 ; -- ĦOBB
|
_ + v1@#Vowel + _ => mkVowels v1 ; -- ĦOBB
|
||||||
_ => mkPattern
|
_ => mkVowels
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Create a VerbInfo record, optionally omitting various fields
|
-- Create a VerbInfo record, optionally omitting various fields
|
||||||
mkVerbInfo : VerbInfo = overload {
|
mkVerbInfo : VerbInfo = overload {
|
||||||
mkVerbInfo : VClass -> VDerivedForm -> VerbInfo = \c,f ->
|
mkVerbInfo : VClass -> VDerivedForm -> VerbInfo = \c,f ->
|
||||||
{ class=c ; form=f ; root=mkRoot ; patt=mkPattern ; imp=[] } ;
|
{ class=c ; form=f ; root=mkRoot ; vseq=mkVowels ; imp=[] } ;
|
||||||
mkVerbInfo : VClass -> VDerivedForm -> Str -> VerbInfo = \c,f,i ->
|
mkVerbInfo : VClass -> VDerivedForm -> Str -> VerbInfo = \c,f,i ->
|
||||||
{ class=c ; form=f ; root=mkRoot ; patt=mkPattern ; imp=i } ;
|
{ class=c ; form=f ; root=mkRoot ; vseq=mkVowels ; imp=i } ;
|
||||||
mkVerbInfo : VClass -> VDerivedForm -> Root -> Pattern -> VerbInfo = \c,f,r,p ->
|
mkVerbInfo : VClass -> VDerivedForm -> Root -> Vowels -> VerbInfo = \c,f,r,p ->
|
||||||
{ class=c ; form=f ; root=r ; patt=p ; imp=[] } ;
|
{ class=c ; form=f ; root=r ; vseq=p ; imp=[] } ;
|
||||||
mkVerbInfo : VClass -> VDerivedForm -> Root -> Pattern -> Str -> VerbInfo = \c,f,r,p,i ->
|
mkVerbInfo : VClass -> VDerivedForm -> Root -> Vowels -> Str -> VerbInfo = \c,f,r,p,i ->
|
||||||
{ class=c ; form=f ; root=r ; patt=p ; imp=i } ;
|
{ class=c ; form=f ; root=r ; vseq=p ; imp=i } ;
|
||||||
-- mkVerbInfo : VClass -> VDerivedForm -> Root -> Pattern -> Pattern -> Str -> VerbInfo = \c,f,r,p,p2,i ->
|
-- mkVerbInfo : VClass -> VDerivedForm -> Root -> Vowels -> Vowels -> Str -> VerbInfo = \c,f,r,p,p2,i ->
|
||||||
-- { class=c ; form=f ; root=r ; patt=p ; patt2=p2 ; imp=i } ;
|
-- { class=c ; form=f ; root=r ; vseq=p ; vseq2=p2 ; imp=i } ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Change certain fields of a VerbInfo record
|
-- Change certain fields of a VerbInfo record
|
||||||
@@ -1109,18 +1109,46 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
|||||||
|
|
||||||
-- Root
|
-- Root
|
||||||
updateVerbInfo : VerbInfo -> Root -> VerbInfo = \i,r ->
|
updateVerbInfo : VerbInfo -> Root -> VerbInfo = \i,r ->
|
||||||
{ class=i.class ; form=i.form ; root=r ; patt=i.patt ; imp=i.imp } ;
|
{ class=i.class ; form=i.form ; root=r ; vseq=i.vseq ; imp=i.imp } ;
|
||||||
|
|
||||||
-- DerivedForm
|
-- DerivedForm
|
||||||
updateVerbInfo : VerbInfo -> VDerivedForm -> VerbInfo = \i,f ->
|
updateVerbInfo : VerbInfo -> VDerivedForm -> VerbInfo = \i,f ->
|
||||||
{ class=i.class ; form=f ; root=i.root ; patt=i.patt ; imp=i.imp } ;
|
{ class=i.class ; form=f ; root=i.root ; vseq=i.vseq ; imp=i.imp } ;
|
||||||
|
|
||||||
-- DerivedForm, Imperative
|
-- DerivedForm, Imperative
|
||||||
updateVerbInfo : VerbInfo -> VDerivedForm -> Str -> VerbInfo = \i,f,imp ->
|
updateVerbInfo : VerbInfo -> VDerivedForm -> Str -> VerbInfo = \i,f,imp ->
|
||||||
{ class=i.class ; form=f ; root=i.root ; patt=i.patt ; imp=imp } ;
|
{ class=i.class ; form=f ; root=i.root ; vseq=i.vseq ; imp=imp } ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- Return the class for a given root
|
||||||
|
classifyRoot : Root -> VClass = \r ->
|
||||||
|
case <r.C1,r.C2,r.C3,r.C4> of {
|
||||||
|
<#WeakCons, #StrongCons, #StrongCons, ""> => Weak Assimilative ;
|
||||||
|
<#StrongCons, #WeakCons, #StrongCons, ""> => Weak Hollow ;
|
||||||
|
<#StrongCons, #StrongCons, #WeakCons, ""> => Weak Lacking ;
|
||||||
|
<#StrongCons, #WeakCons, #WeakCons, ""> => Weak Lacking ;
|
||||||
|
<#Consonant, #Consonant, "għ", ""> => Weak Defective ;
|
||||||
|
<#Consonant, c2@#Consonant, c3@#Consonant, ""> =>
|
||||||
|
if_then_else VClass (pbool2bool (eqStr c2 c3))
|
||||||
|
(Strong Geminated)
|
||||||
|
(case c2 of {
|
||||||
|
#LiquidCons => Strong LiquidMedial ;
|
||||||
|
_ => Strong Regular
|
||||||
|
}) ;
|
||||||
|
<#Consonant, #Consonant, #Consonant, #WeakCons> => Quad QWeak ;
|
||||||
|
<#Consonant, #Consonant, #Consonant, #Consonant> => Quad QStrong ;
|
||||||
|
|
||||||
|
-- Irregular
|
||||||
|
<"'",_,_,_> => Irregular ;
|
||||||
|
<_,"'",_,_> => Irregular ;
|
||||||
|
<_,_,"'",_> => Irregular ;
|
||||||
|
<_,_,_,"'"> => Irregular ;
|
||||||
|
|
||||||
|
<_,_,_,""> => Predef.error("Cannot classify root:"++r.C1+"-"+r.C2+"-"+r.C3) ;
|
||||||
|
<_,_,_,_> => Predef.error("Cannot classify root:"++r.C1+"-"+r.C2+"-"+r.C3+"-"+r.C4)
|
||||||
|
} ;
|
||||||
|
|
||||||
{- ~~~ Useful helper functions ~~~ -}
|
{- ~~~ Useful helper functions ~~~ -}
|
||||||
|
|
||||||
NONEXIST : Str = "#NONEXIST#" ;
|
NONEXIST : Str = "#NONEXIST#" ;
|
||||||
|
|||||||
@@ -152,14 +152,14 @@ concrete StructuralMlt of Structural = CatMlt **
|
|||||||
have_V2 = dirV2 (kellu_V) ;
|
have_V2 = dirV2 (kellu_V) ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
af_V = irregularV form1 (ResMlt.mkRoot "'-'-f") (ResMlt.mkPattern "a" [])
|
af_V = irregularV form1 (ResMlt.mkRoot "'-'-f") (ResMlt.mkVowels "a" [])
|
||||||
"kont naf" "kont taf" "kien jaf" "kienet taf" "konna nafu" "kontu tafu" "kienu jafu" --- will fail for negative
|
"kont naf" "kont taf" "kien jaf" "kienet taf" "konna nafu" "kontu tafu" "kienu jafu" --- will fail for negative
|
||||||
"naf" "taf" "jaf" "taf" "nafu" "tafu" "jafu"
|
"naf" "taf" "jaf" "taf" "nafu" "tafu" "jafu"
|
||||||
"kun af" "kunu afu"
|
"kun af" "kunu afu"
|
||||||
;
|
;
|
||||||
sata'_V = mkV "sata'" (ResMlt.mkRoot "s-t-għ") ;
|
sata'_V = mkV "sata'" (ResMlt.mkRoot "s-t-għ") ;
|
||||||
ried_V = mkV "ried" (ResMlt.mkRoot "r-j-d") ;
|
ried_V = mkV "ried" (ResMlt.mkRoot "r-j-d") ;
|
||||||
kellu_V = irregularV form1 (ResMlt.mkRoot) (ResMlt.mkPattern)
|
kellu_V = irregularV form1 (ResMlt.mkRoot) (ResMlt.mkVowels)
|
||||||
"kelli" "kellek" "kellu" "kellha" "kellna" "kellkom" "kellhom"
|
"kelli" "kellek" "kellu" "kellha" "kellna" "kellkom" "kellhom"
|
||||||
"għandi" "għandek" "għandu" "għandha" "għandna" "għandkom" "għandhom"
|
"għandi" "għandek" "għandu" "għandha" "għandna" "għandkom" "għandhom"
|
||||||
"kollok" "kollkom"
|
"kollok" "kollkom"
|
||||||
|
|||||||
Reference in New Issue
Block a user