mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-21 18:59:32 -06:00
Maltese RG: update ParadigmsMlt to generate a nice table in the RGL Synopsis
This commit is contained in:
@@ -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-ġ") ;
|
||||
kolja_KLJJ_1_7010_V = mkV "kolja" (mkRoot "k-l-j-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"
|
||||
"nkompli" "tkompli" "jkompli" "tkompli" "nkomplu" "tkomplu" "jkomplu"
|
||||
"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"
|
||||
"nitkompla" "titkompla" "jitkompla" "titkompla" "nitkomplu" "titkomplu" "jitkomplu"
|
||||
"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") ;
|
||||
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") ;
|
||||
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"
|
||||
"nmantna" "tmantna" "jmantna" "tmantna" "nmantnu" "tmantnu" "jmantnu"
|
||||
"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"
|
||||
"nitmantna" "titmantna" "jitmantna" "titmantna" "nitmantnu" "titmantnu" "jitmantnu"
|
||||
"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ħ") ;
|
||||
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ħ") ;
|
||||
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"
|
||||
"nbleħħen" "tbleħħen" "jibleħħen" "tbleħħen" "nbleħħnu" "tbleħħnu" "jibleħħ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"
|
||||
"nitbleħħen" "titbleħħen" "jitbleħħen" "titbleħħen" "nitbleħħnu" "titbleħħnu" "jitbleħħ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") ;
|
||||
bierek_BRK_3_7491_V = mkV_III "bierek" (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"
|
||||
"nitbrekken" "titbrekken" "jitbrekken" "titbrekken" "nitbrekknu" "titbrekknu" "jitbrekknu"
|
||||
"tbrekken" "tbrekknu"
|
||||
@@ -1484,7 +1484,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in {
|
||||
gezz_GZZ_1_8120_V = mkV "ġeżż" (mkRoot "ġ-ż-ż") ;
|
||||
gezzez_GZZ_2_8121_V = mkV_II "ġeżż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"
|
||||
"niġi" "tiġi" "jiġi" "tiġi" "niġu" "tiġu" "jiġu"
|
||||
"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") ;
|
||||
kejjel_KJL_2_8670_V = mkV_II "kejjel" (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"
|
||||
"niekol" "tiekol" "jiekol" "tiekol" "nieklu" "tieklu" "jieklu"
|
||||
("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") ;
|
||||
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") ;
|
||||
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"
|
||||
"nkun" "tkun" "jkun" "tkun" "nkunu" "tkunu" "jkunu"
|
||||
"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") ;
|
||||
mewweg_MWG_2_8916_V = mkV_II "mewweġ" (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"
|
||||
"mmur" "tmur" "jmur" "tmur" "mmorru" "tmorru" "jmorru"
|
||||
"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") ;
|
||||
qawwa_QWJ_2_9355_V = mkV_II "qawwa" (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"
|
||||
"ngħid" "tgħid" "jgħid" "tgħid" "ngħidu" "tgħidu" "jgħ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") ;
|
||||
razzan_RZN_2_9511_V = mkV_II "rażż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"
|
||||
"nara" "tara" "jara" "tara" "naraw" "taraw" "jaraw"
|
||||
"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"
|
||||
"nintwera" "tintwera" "jintwera" "tintwera" "nintwerew" "tintwerew" "jintwerew"
|
||||
"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") ;
|
||||
tellet_TLT_2_9907_V = mkV_II "tellet" (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"
|
||||
"nitamma" "titamma" "jitamma" "titamma" "nitammaw" "titammaw" "jitammaw"
|
||||
"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"
|
||||
"nitama" "titama" "jitama" "titama" "nitamaw" "titamaw" "jitamaw"
|
||||
"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"
|
||||
"nittama" "tittama" "jittama" "tittama" "nittamaw" "tittamaw" "jittamaw"
|
||||
"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") ;
|
||||
twelled_WLD_5_10060_V = mkV_V "twelled" (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"
|
||||
"nemmen" "temmen" "jemmen" "temmen" "nemmnu" "temmnu" "jemmnu"
|
||||
"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") ;
|
||||
hassel_HSL_2_10765_V = mkV_II "ħ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"
|
||||
"nagħti" "tagħti" "jagħti" "tagħti" "nagħtu" "tagħtu" "jagħtu"
|
||||
"agħti" "agħtu"
|
||||
) ;
|
||||
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"
|
||||
"niddi" "tiddi" "jiddi" "tiddi" "niddu" "tiddu" "jiddu"
|
||||
"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"
|
||||
"nidden" "tidden" "jidden" "tidden" "niddnu" "tiddnu" "jiddnu"
|
||||
"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"
|
||||
"nistieden" "tistieden" "jistieden" "tistieden" "nistiednu" "tistiednu" "jistiednu"
|
||||
"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
|
||||
"naf" "taf" "jaf" "taf" "nafu" "tafu" "jafu"
|
||||
"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"
|
||||
"nintaf" "tintaf" "jintaf" "tintaf" "nintafu" "tintafu" "jintafu"
|
||||
"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"
|
||||
"nieħu" "tieħu" "jieħu" "tieħu" "nieħdu" "tieħdu" "jieħdu"
|
||||
"ħ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"
|
||||
"nittieħed" "tittieħed" "jittieħed" "tittieħed" "nittieħdu" "tittieħdu" "jittieħ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"
|
||||
"nistħi" "tistħi" "jistħi" "tistħi" "nistħu" "tistħu" "jistħ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"
|
||||
"namar" "tamar" "jamar" "tamar" "namraw" "tamraw" "jamraw"
|
||||
"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"
|
||||
"namba" "tamba" "jamba" "tamba" "nambaw" "tambaw" "jambaw"
|
||||
"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"
|
||||
"nistenna" "tistenna" "jistenna" "tistenna" "nistennew" "tistennew" "jistennew"
|
||||
"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"
|
||||
"nistienes" "tistienes" "jistienes" "tistienes" "nistiensu" "tistiensu" "jistiensu"
|
||||
"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"
|
||||
"niżżi" "tiżżi" "jiżżi" "tiżżi" "niżżu" "tiżżu" "jiżż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"
|
||||
"nażżem" "tażżem" "jażżem" "tażżem" "nażżmu" "tażżmu" "jażż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") ;
|
||||
penpen_PNPN_1_10813_V = mkV "penpen" (mkRoot "p-n-p-n") ;
|
||||
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"
|
||||
"nuri" "turi" "juri" "turi" "nuru" "turu" "juru"
|
||||
"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"
|
||||
"nintara" "tintara" "jintara" "tintara" "nintaraw" "tintaraw" "jintaraw"
|
||||
"ntara" "ntaraw"
|
||||
|
||||
@@ -318,15 +318,15 @@ concrete LexiconMlt of Lexicon = CatMlt **
|
||||
broad_A = mkA "wiesgħa" "wiesgħa" "wiesgħin" ;
|
||||
brown_A = sameA "kannella" ;
|
||||
clean_A = brokenA "nadif" "nodfa" ;
|
||||
clever_A = regA "bravu" ;
|
||||
clever_A = mkA "bravu" ;
|
||||
cold_A = mkA "kiesaħ" "kiesħa" "kesħin" ;
|
||||
correct_A = regA "korrett" ;
|
||||
dirty_A = regA "maħmuġ" ;
|
||||
dry_A = regA "niexef" ;
|
||||
correct_A = mkA "korrett" ;
|
||||
dirty_A = mkA "maħmuġ" ;
|
||||
dry_A = mkA "niexef" ;
|
||||
dull_A = sameA "tad-dwejjaq" ;
|
||||
easy_A2V = dirA2 (sameA "faċli") ;
|
||||
empty_A = mkA "vojt" "vojta" "vojta" ;
|
||||
full_A = regA "mimli" ;
|
||||
full_A = mkA "mimli" ;
|
||||
fun_AV = sameA "pjaċevoli" ;
|
||||
good_A = mkA "tajjeb" "tajba" "tajbin" ;
|
||||
green_A = mkA "aħdar" "ħadra" "ħodor" ;
|
||||
@@ -336,24 +336,24 @@ concrete LexiconMlt of Lexicon = CatMlt **
|
||||
long_A = brokenA "twil" "twal" "itwal" ;
|
||||
married_A2 = mkA2 (mkA "miżżewweġ" "miżżewġa") lilP ;
|
||||
narrow_A = mkA "dejjaq" "dejqa" "dojoq" "idjaq" ;
|
||||
near_A = regA "viċin" ;
|
||||
near_A = mkA "viċin" ;
|
||||
new_A = brokenA "ġdid" "ġodda" ;
|
||||
old_A = brokenA "qadim" "qodma" "eqdem" ; -- xiħ
|
||||
probable_AS = mkAS (sameA "probabbli") ;
|
||||
ready_A = regA "lest" ;
|
||||
ready_A = mkA "lest" ;
|
||||
red_A = mkA "aħmar" "ħamra" "ħomor" ;
|
||||
rotten_A = mkA "mħassar" "mħassra" "mħassrin" ;
|
||||
round_A = regA "tond" ;
|
||||
round_A = mkA "tond" ;
|
||||
sharp_A = mkA "jaqta'" "taqta'" "jaqtgħu" ;
|
||||
short_A = brokenA "qasir" "qosra" "iqsar" ;
|
||||
small_A = brokenA "zgħir" "zgħar" "iżgħar" ;
|
||||
smooth_A = regA "lixx" ;
|
||||
straight_A = regA "dritt" ;
|
||||
smooth_A = mkA "lixx" ;
|
||||
straight_A = mkA "dritt" ;
|
||||
stupid_A = mkA "iblah" "belha" "boloh" ;
|
||||
thick_A = mkA "oħxon" "ħoxna" "ħoxnin" "eħxen" ;
|
||||
thin_A = brokenA "rqiq" "rqaq" "rqaq" ;
|
||||
ugly_A = mkA "ikrah" "kerha" "koroh" ;
|
||||
uncertain_A = regA "inċert" ;
|
||||
uncertain_A = mkA "inċert" ;
|
||||
warm_A = brokenA "sħun" "sħan" ;
|
||||
wet_A = mkA "mxarrab" "mxarrba" "mxarrbin" ;
|
||||
white_A = mkA "abjad" "bajda" "bojod" ;
|
||||
|
||||
@@ -45,6 +45,54 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
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 ----------------------------------------------------------------- -}
|
||||
|
||||
oper
|
||||
@@ -64,19 +112,19 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
|
||||
-- IE/I vowel changes
|
||||
-- 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}
|
||||
<{C2="għ"},{V1="ie";V2="e"}> => mkPattern "e" "i" ; -- QIEGĦED > QEGĦIDKOM
|
||||
<_,{V1="ie";V2="e"}> => mkPattern "i" "i" ; -- WIEĠEB > WIĠIBKOM
|
||||
<_,{V1="ie";V2=""}> => mkPattern "i" ; -- STRIEĦ > STRIĦAJT
|
||||
<{C2="għ"},{V1="ie";V2="e"}> => mkVowels "e" "i" ; -- QIEGĦED > QEGĦIDKOM
|
||||
<_,{V1="ie";V2="e"}> => mkVowels "i" "i" ; -- WIEĠEB > WIĠIBKOM
|
||||
<_,{V1="ie";V2=""}> => mkVowels "i" ; -- STRIEĦ > STRIĦAJT
|
||||
_ => vowels
|
||||
} ;
|
||||
|
||||
{- ~~~ Strong Verb ~~~ -}
|
||||
|
||||
-- Conjugate entire verb in PERFECT tense
|
||||
-- Params: Root, Pattern
|
||||
conjStrongPerf : Root -> Pattern -> (VAgr => Str) = \root,p ->
|
||||
-- Params: Root, Vowels
|
||||
conjStrongPerf : Root -> Vowels -> (VAgr => Str) = \root,p ->
|
||||
let
|
||||
ktib = root.C1 + root.C2 + (case p.V2 of {"e" => "i" ; _ => p.V2 }) + 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)
|
||||
conjStrongImpf = conjGenericImpf ;
|
||||
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
||||
-- Params: Root, Pattern
|
||||
conjStrongImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||
-- Params: Root, Vowels
|
||||
conjStrongImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||
let
|
||||
vwls = vowelChangesStrong patt ;
|
||||
vwls = vowelChangesStrong vseq ;
|
||||
in
|
||||
table {
|
||||
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
|
||||
vowelChangesStrong : Pattern -> (Number => Pattern) = \patt ->
|
||||
vowelChangesStrong : Vowels -> (Number => Vowels) = \vseq ->
|
||||
table {
|
||||
Sg => case <patt.V1,patt.V2> of {
|
||||
<"a","a"> => mkPattern "o" "o" ; -- RABAT > ORBOT (but: ILGĦAB, AĦBAT)
|
||||
<"a","e"> => mkPattern "a" "e" ; -- GĦAMEL > AGĦMEL
|
||||
<"e","e"> => mkPattern "i" "e" ; -- FEHEM > IFHEM
|
||||
<"e","a"> => mkPattern "i" "a" ; -- FETAĦ > IFTAĦ (but: ONFOĦ)
|
||||
<"i","e"> => mkPattern "i" "e" ; -- KITEB > IKTEB
|
||||
<"o","o"> => mkPattern "o" "o" -- GĦOĠOB > OGĦĠOB
|
||||
Sg => case <vseq.V1,vseq.V2> of {
|
||||
<"a","a"> => mkVowels "o" "o" ; -- RABAT > ORBOT (but: ILGĦAB, AĦBAT)
|
||||
<"a","e"> => mkVowels "a" "e" ; -- GĦAMEL > AGĦMEL
|
||||
<"e","e"> => mkVowels "i" "e" ; -- FEHEM > IFHEM
|
||||
<"e","a"> => mkVowels "i" "a" ; -- FETAĦ > IFTAĦ (but: ONFOĦ)
|
||||
<"i","e"> => mkVowels "i" "e" ; -- KITEB > IKTEB
|
||||
<"o","o"> => mkVowels "o" "o" -- GĦOĠOB > OGĦĠOB
|
||||
};
|
||||
Pl => case <patt.V1,patt.V2> of {
|
||||
<"a","a"> => mkPattern "o" ; -- RABAT > ORBTU
|
||||
<"a","e"> => mkPattern "a" ; -- GĦAMEL > AGĦMLU
|
||||
<"e","e"> => mkPattern "i" ; -- FEHEM > IFHMU
|
||||
<"e","a"> => mkPattern "i" ; -- FETAĦ > IFTĦU
|
||||
<"i","e"> => mkPattern "i" ; -- KITEB > IKTBU
|
||||
<"o","o"> => mkPattern "o" -- GĦOĠOB > OGĦĠBU
|
||||
Pl => case <vseq.V1,vseq.V2> of {
|
||||
<"a","a"> => mkVowels "o" ; -- RABAT > ORBTU
|
||||
<"a","e"> => mkVowels "a" ; -- GĦAMEL > AGĦMLU
|
||||
<"e","e"> => mkVowels "i" ; -- FEHEM > IFHMU
|
||||
<"e","a"> => mkVowels "i" ; -- FETAĦ > IFTĦU
|
||||
<"i","e"> => mkVowels "i" ; -- KITEB > IKTBU
|
||||
<"o","o"> => mkVowels "o" -- GĦOĠOB > OGĦĠBU
|
||||
}
|
||||
} ;
|
||||
|
||||
{- ~~~ Liquid-Medial Verb ~~~ -}
|
||||
|
||||
-- Conjugate entire verb in PERFECT tense
|
||||
-- Params: Root, Pattern
|
||||
conjLiquidMedialPerf : Root -> Pattern -> (VAgr => Str) = \root,patt ->
|
||||
-- Params: Root, Vowels
|
||||
conjLiquidMedialPerf : Root -> Vowels -> (VAgr => Str) = \root,vseq ->
|
||||
let
|
||||
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-
|
||||
_ => root.C1 + root.C2 + (case patt.V2 of {"e" => "i" ; _ => patt.V2 }) + root.C3 -- ŻLAQ-
|
||||
"għ" => root.C1 + vseq.V1 + root.C2 + (case vseq.V2 of {"e" => "i" ; _ => vseq.V2 }) + root.C3 ; -- GĦAMIL-
|
||||
_ => 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
|
||||
table {
|
||||
AgP1 Sg => zlaq + "t" ; -- Jiena ŻLAQT
|
||||
AgP2 Sg => zlaq + "t" ; -- Inti ŻLAQT
|
||||
AgP3Sg Masc=> root.C1 + patt.V1 + root.C2 + patt.V2 + root.C3 ; -- Huwa ŻELAQ
|
||||
AgP3Sg Fem => zelq + (case patt.V2 of {"o" => "o" ; _ => "e"}) + "t" ; -- Hija ŻELQET
|
||||
AgP3Sg Masc=> root.C1 + vseq.V1 + root.C2 + vseq.V2 + root.C3 ; -- Huwa ŻELAQ
|
||||
AgP3Sg Fem => zelq + (case vseq.V2 of {"o" => "o" ; _ => "e"}) + "t" ; -- Hija ŻELQET
|
||||
AgP1 Pl => zlaq + "na" ; -- Aħna ŻLAQNA
|
||||
AgP2 Pl => zlaq + "tu" ; -- Intom ŻLAQTU
|
||||
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)
|
||||
conjLiquidMedialImpf = conjGenericImpf ;
|
||||
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
||||
-- Params: Root, Pattern
|
||||
conjLiquidMedialImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||
-- Params: Root, Vowels
|
||||
conjLiquidMedialImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||
let
|
||||
vwls = vowelChangesLiquidMedial patt ;
|
||||
vwls = vowelChangesLiquidMedial vseq ;
|
||||
in
|
||||
table {
|
||||
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
|
||||
vowelChangesLiquidMedial : Pattern -> (Number => Pattern) = \patt ->
|
||||
vowelChangesLiquidMedial : Vowels -> (Number => Vowels) = \vseq ->
|
||||
table {
|
||||
Sg => case <patt.V1,patt.V2> of {
|
||||
<"a","a"> => mkPattern "i" "o" ; -- TALAB > ITLOB but ĦARAQ > AĦRAQ
|
||||
<"a","e"> => mkPattern "o" "o" ; -- ĦAREĠ > OĦROĠ
|
||||
<"e","e"> => mkPattern "e" "e" ; -- ĦELES > EĦLES
|
||||
<"e","a"> => mkPattern "i" "o" ; -- ŻELAQ > IŻLOQ
|
||||
<"i","e"> => mkPattern "i" "e" ; -- DILEK > IDLEK
|
||||
<"o","o"> => mkPattern "i" "o" -- XOROB > IXROB
|
||||
Sg => case <vseq.V1,vseq.V2> of {
|
||||
<"a","a"> => mkVowels "i" "o" ; -- TALAB > ITLOB but ĦARAQ > AĦRAQ
|
||||
<"a","e"> => mkVowels "o" "o" ; -- ĦAREĠ > OĦROĠ
|
||||
<"e","e"> => mkVowels "e" "e" ; -- ĦELES > EĦLES
|
||||
<"e","a"> => mkVowels "i" "o" ; -- ŻELAQ > IŻLOQ
|
||||
<"i","e"> => mkVowels "i" "e" ; -- DILEK > IDLEK
|
||||
<"o","o"> => mkVowels "i" "o" -- XOROB > IXROB
|
||||
};
|
||||
Pl => case <patt.V1,patt.V2> of {
|
||||
<"a","a"> => mkPattern "i" "o" ; -- TALAB > ITOLBU
|
||||
<"a","e"> => mkPattern "o" "o" ; -- ĦAREĠ > OĦORĠU
|
||||
<"e","e"> => mkPattern "e" "i" ; -- ĦELES > EĦILSU
|
||||
<"e","a"> => mkPattern "i" "o" ; -- ŻELAQ > IŻOLQU
|
||||
<"i","e"> => mkPattern "i" "i" ; -- DILEK > IDILKU
|
||||
<"o","o"> => mkPattern "i" "o" -- XOROB > IXORBU
|
||||
Pl => case <vseq.V1,vseq.V2> of {
|
||||
<"a","a"> => mkVowels "i" "o" ; -- TALAB > ITOLBU
|
||||
<"a","e"> => mkVowels "o" "o" ; -- ĦAREĠ > OĦORĠU
|
||||
<"e","e"> => mkVowels "e" "i" ; -- ĦELES > EĦILSU
|
||||
<"e","a"> => mkVowels "i" "o" ; -- ŻELAQ > IŻOLQU
|
||||
<"i","e"> => mkVowels "i" "i" ; -- DILEK > IDILKU
|
||||
<"o","o"> => mkVowels "i" "o" -- XOROB > IXORBU
|
||||
}
|
||||
} ;
|
||||
|
||||
{- ~~~ Geminated Verb ~~~ -}
|
||||
|
||||
-- Conjugate entire verb in PERFECT tense
|
||||
-- Params: Root, Pattern
|
||||
conjGeminatedPerf : Root -> Pattern -> (VAgr => Str) = \root,patt ->
|
||||
-- Params: Root, Vowels
|
||||
conjGeminatedPerf : Root -> Vowels -> (VAgr => Str) = \root,vseq ->
|
||||
let
|
||||
habb = root.C1 + patt.V1 + root.C2 + root.C3 ;
|
||||
habb = root.C1 + vseq.V1 + root.C2 + root.C3 ;
|
||||
in
|
||||
table {
|
||||
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)
|
||||
conjGeminatedImpf = conjGenericImpf ;
|
||||
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
||||
-- Params: Root, Pattern
|
||||
conjGeminatedImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||
-- Params: Root, Vowels
|
||||
conjGeminatedImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||
let
|
||||
vwls = vowelChangesGeminated patt ;
|
||||
vwls = vowelChangesGeminated vseq ;
|
||||
stem_sg = root.C1 + (vwls!Sg).V1 + root.C2 + root.C3 ;
|
||||
in
|
||||
table {
|
||||
@@ -220,30 +268,30 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
} ;
|
||||
|
||||
-- Vowel changes for imperative
|
||||
vowelChangesGeminated : Pattern -> (Number => Pattern) = \patt ->
|
||||
\\n => case patt.V1 of {
|
||||
"e" => mkPattern "e" ; -- BEXX > BEXX (?)
|
||||
_ => mkPattern "o" -- ĦABB > ĦOBB
|
||||
vowelChangesGeminated : Vowels -> (Number => Vowels) = \vseq ->
|
||||
\\n => case vseq.V1 of {
|
||||
"e" => mkVowels "e" ; -- BEXX > BEXX (?)
|
||||
_ => mkVowels "o" -- ĦABB > ĦOBB
|
||||
} ;
|
||||
|
||||
|
||||
{- ~~~ Assimilative Verb ~~~ -}
|
||||
|
||||
-- Conjugate entire verb in PERFECT tense
|
||||
-- Params: Root, Pattern
|
||||
conjAssimilativePerf : Root -> Pattern -> (VAgr => Str) = \root,patt ->
|
||||
-- Params: Root, Vowels
|
||||
conjAssimilativePerf : Root -> Vowels -> (VAgr => Str) = \root,vseq ->
|
||||
let
|
||||
wasal = case root.C3 of {
|
||||
"għ" => root.C1 + patt.V1 + root.C2 + patt.V2 + "j" ;
|
||||
_ => root.C1 + patt.V1 + root.C2 + patt.V2 + root.C3
|
||||
"għ" => root.C1 + vseq.V1 + root.C2 + vseq.V2 + "j" ;
|
||||
_ => 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
|
||||
table {
|
||||
AgP1 Sg => wasal + "t" ; -- Jiena WASALT
|
||||
AgP2 Sg => wasal + "t" ; -- Inti WASALT
|
||||
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
|
||||
} ;
|
||||
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)
|
||||
conjAssimilativeImpf = conjGenericImpf ;
|
||||
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
||||
-- Params: Root, Pattern
|
||||
conjAssimilativeImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||
-- Params: Root, Vowels
|
||||
conjAssimilativeImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||
table {
|
||||
Sg => patt.V1 + root.C2 + patt.V2 + case root.C3 of { "għ" => "'" ; _ => root.C3 } ; -- Inti: ASAL
|
||||
Pl => patt.V1 + root.C2 + root.C3 + "u" -- Intom: ASLU
|
||||
Sg => vseq.V1 + root.C2 + vseq.V2 + case root.C3 of { "għ" => "'" ; _ => root.C3 } ; -- Inti: ASAL
|
||||
Pl => vseq.V1 + root.C2 + root.C3 + "u" -- Intom: ASLU
|
||||
} ;
|
||||
|
||||
{- ~~~ Hollow Verb ~~~ -}
|
||||
|
||||
-- Conjugate entire verb in PERFECT tense
|
||||
-- Params: Root, Pattern
|
||||
-- Params: Root, Vowels
|
||||
-- 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
|
||||
sar = root.C1 + patt.V1 + root.C3 ;
|
||||
sir = case <patt.V1,root.C2> of {
|
||||
sar = root.C1 + vseq.V1 + root.C3 ;
|
||||
sir = case <vseq.V1,root.C2> of {
|
||||
<"a","w"> => root.C1 + "o" + root.C3 ; -- DAM, FAR, SAQ (most common case)
|
||||
_ => root.C1 + "i" + root.C3
|
||||
}
|
||||
@@ -300,18 +348,18 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
AgP3Pl => pfx_J imp_pl -- Huma JDUMU / JMORRU
|
||||
} ;
|
||||
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
||||
-- Params: Root, Pattern
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||
-- Params: Root, Vowels
|
||||
-- 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
|
||||
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","j"> => root.C1 + "i" + root.C3 ; -- ĠAB, SAB, TAR
|
||||
<"ie","j"> => root.C1 + "i" + root.C3 ; -- FIEQ, RIED, ŻIED
|
||||
<"ie","w"> => root.C1 + "u" + root.C3 ; -- MIET
|
||||
<"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
|
||||
table {
|
||||
@@ -322,23 +370,23 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
{- ~~~ Lacking Verb ~~~ -}
|
||||
|
||||
-- Conjugate entire verb in PERFECT tense
|
||||
-- Params: Root, Pattern
|
||||
conjLackingPerf : Root -> Pattern -> (VAgr => Str) = \root,patt ->
|
||||
-- Params: Root, Vowels
|
||||
conjLackingPerf : Root -> Vowels -> (VAgr => Str) = \root,vseq ->
|
||||
let
|
||||
mxej = root.C1 + root.C2 + patt.V1 + root.C3
|
||||
mxej = root.C1 + root.C2 + vseq.V1 + root.C3
|
||||
in
|
||||
table {
|
||||
--- i tal-leħen needs to be added here!
|
||||
AgP1 Sg => mxej + "t" ; -- Jiena IMXEJT
|
||||
AgP2 Sg => mxej + "t" ; -- Inti IMXEJT
|
||||
AgP3Sg Masc=> root.C1 + patt.V1 + root.C2 + patt.V2 ; -- Huwa MEXA
|
||||
AgP3Sg Fem => case patt.V1 of {
|
||||
AgP3Sg Masc=> root.C1 + vseq.V1 + root.C2 + vseq.V2 ; -- Huwa MEXA
|
||||
AgP3Sg Fem => case vseq.V1 of {
|
||||
"a" => root.C1 + root.C2 + "at" ; -- Hija QRAT
|
||||
_ => root.C1 + root.C2 + "iet" -- Hija MXIET
|
||||
} ;
|
||||
AgP1 Pl => mxej + "na" ; -- Aħna IMXEJNA
|
||||
AgP2 Pl => mxej + "tu" ; -- Intom IMXEJTU
|
||||
AgP3Pl => case patt.V1 of {
|
||||
AgP3Pl => case vseq.V1 of {
|
||||
"a" => root.C1 + root.C2 + "aw" ; -- Huma QRAW
|
||||
_ => 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)
|
||||
conjLackingImpf = conjGenericImpf ;
|
||||
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
||||
-- Params: Root, Pattern
|
||||
conjLackingImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||
-- Params: Root, Vowels
|
||||
conjLackingImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||
table {
|
||||
Sg => "i" + root.C1 + root.C2 + "i" ; -- Inti: IMXI
|
||||
Pl => "i" + root.C1 + root.C2 + "u" -- Intom: IMXU
|
||||
@@ -359,17 +407,17 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
{- ~~~ Defective Verb ~~~ -}
|
||||
|
||||
-- Conjugate entire verb in PERFECT tense
|
||||
-- Params: Root, Pattern
|
||||
conjDefectivePerf : Root -> Pattern -> ( VAgr => Str ) = \root,patt ->
|
||||
-- Params: Root, Vowels
|
||||
conjDefectivePerf : Root -> Vowels -> ( VAgr => Str ) = \root,vseq ->
|
||||
let
|
||||
qlaj = root.C1 + root.C2 + (case patt.V2 of {"e" => "i" ; _ => patt.V2 }) + "j" ;
|
||||
qalgh = root.C1 + patt.V1 + root.C2 + root.C3 ;
|
||||
qlaj = root.C1 + root.C2 + (case vseq.V2 of {"e" => "i" ; _ => vseq.V2 }) + "j" ;
|
||||
qalgh = root.C1 + vseq.V1 + root.C2 + root.C3 ;
|
||||
in
|
||||
table {
|
||||
AgP1 Sg => qlaj + "t" ; -- Jiena QLAJT
|
||||
AgP2 Sg => qlaj + "t" ; -- Inti QLAJT
|
||||
AgP3Sg Masc=> root.C1 + patt.V1 + root.C2 + patt.V2 + "'" ; -- Huwa QALA'
|
||||
AgP3Sg Fem => qalgh + (case patt.V2 of {"o" => "o" ; _ => "e"}) + "t" ; -- Hija QALGĦET
|
||||
AgP3Sg Masc=> root.C1 + vseq.V1 + root.C2 + vseq.V2 + "'" ; -- Huwa QALA'
|
||||
AgP3Sg Fem => qalgh + (case vseq.V2 of {"o" => "o" ; _ => "e"}) + "t" ; -- Hija QALGĦET
|
||||
AgP1 Pl => qlaj + "na" ; -- Aħna QLAJNA
|
||||
AgP2 Pl => qlaj + "tu" ; -- Intom QLAJTU
|
||||
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)
|
||||
conjDefectiveImpf = conjGenericImpf ;
|
||||
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
||||
-- Params: Root, Pattern
|
||||
conjDefectiveImp : Root -> Pattern -> ( Number => Str ) = \root,patt ->
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||
-- Params: Root, Vowels
|
||||
conjDefectiveImp : Root -> Vowels -> ( Number => Str ) = \root,vseq ->
|
||||
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)
|
||||
in
|
||||
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
|
||||
} ;
|
||||
|
||||
{- ~~~ Quadriliteral Verb (Strong) ~~~ -}
|
||||
|
||||
-- Conjugate entire verb in PERFECT tense
|
||||
-- Params: Root, Pattern
|
||||
conjQuadPerf : Root -> Pattern -> (VAgr => Str) = \root,patt ->
|
||||
-- Params: Root, Vowels
|
||||
conjQuadPerf : Root -> Vowels -> (VAgr => Str) = \root,vseq ->
|
||||
let
|
||||
dendil = root.C1 + patt.V1 + root.C2 + root.C3 + (case patt.V2 of {"e" => "i" ; _ => patt.V2 }) + root.C4 ;
|
||||
dendl = root.C1 + patt.V1 + root.C2 + root.C3 + root.C4 ;
|
||||
dendil = root.C1 + vseq.V1 + root.C2 + root.C3 + (case vseq.V2 of {"e" => "i" ; _ => vseq.V2 }) + root.C4 ;
|
||||
dendl = root.C1 + vseq.V1 + root.C2 + root.C3 + root.C4 ;
|
||||
in
|
||||
table {
|
||||
AgP1 Sg => dendil + "t" ; -- Jiena DENDILT
|
||||
AgP2 Sg => dendil + "t" ; -- Inti DENDILT
|
||||
AgP3Sg Masc=> root.C1 + patt.V1 + root.C2 + root.C3 + patt.V2 + root.C4 ; -- Huwa DENDIL
|
||||
AgP3Sg Fem => dendl + (case patt.V2 of {"o" => "o" ; _ => "e"}) + "t" ; -- Hija DENDLET
|
||||
AgP3Sg Masc=> root.C1 + vseq.V1 + root.C2 + root.C3 + vseq.V2 + root.C4 ; -- Huwa DENDIL
|
||||
AgP3Sg Fem => dendl + (case vseq.V2 of {"o" => "o" ; _ => "e"}) + "t" ; -- Hija DENDLET
|
||||
AgP1 Pl => dendil + "na" ; -- Aħna DENDILNA
|
||||
AgP2 Pl => dendil + "tu" ; -- Intom DENDILTU
|
||||
AgP3Pl => dendl + "u" -- Huma DENDLU
|
||||
@@ -423,19 +471,19 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
AgP3Pl => pfx_J imp_pl -- Huma JDENDLU
|
||||
} ;
|
||||
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
||||
-- Params: Root, Pattern
|
||||
conjQuadImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||
-- Params: Root, Vowels
|
||||
conjQuadImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||
table {
|
||||
Sg => root.C1 + patt.V1 + root.C2 + root.C3 + patt.V2 + root.C4 ; -- Inti: DENDEL
|
||||
Pl => root.C1 + patt.V1 + root.C2 + root.C3 + root.C4 + "u" -- Intom: DENDLU
|
||||
Sg => root.C1 + vseq.V1 + root.C2 + root.C3 + vseq.V2 + root.C4 ; -- Inti: DENDEL
|
||||
Pl => root.C1 + vseq.V1 + root.C2 + root.C3 + root.C4 + "u" -- Intom: DENDLU
|
||||
} ;
|
||||
|
||||
{- ~~~ Quadriliteral Verb (Weak Final) ~~~ -}
|
||||
|
||||
-- Conjugate entire verb in PERFECT tense
|
||||
-- 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 {
|
||||
"a" => -- KANTA
|
||||
let
|
||||
@@ -452,13 +500,13 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
} ;
|
||||
_ => -- SERVI
|
||||
let
|
||||
serve = root.C1 + patt.V1 + root.C2 + root.C3 + "e" ;
|
||||
serve = root.C1 + vseq.V1 + root.C2 + root.C3 + "e" ;
|
||||
in
|
||||
table {
|
||||
AgP1 Sg => serve + "jt" ; -- Jiena SERVEJT
|
||||
AgP2 Sg => serve + "jt" ; -- Inti SERVEJT
|
||||
AgP3Sg Masc=> root.C1 + patt.V1 + root.C2 + root.C3 + patt.V2 ; -- Huwa SERVA
|
||||
AgP3Sg Fem => root.C1 + patt.V1 + root.C2 + root.C3 + "iet" ; -- Hija SERVIET
|
||||
AgP3Sg Masc=> root.C1 + vseq.V1 + root.C2 + root.C3 + vseq.V2 ; -- Huwa SERVA
|
||||
AgP3Sg Fem => root.C1 + vseq.V1 + root.C2 + root.C3 + "iet" ; -- Hija SERVIET
|
||||
AgP1 Pl => serve + "jna" ; -- Aħna SERVEJNA
|
||||
AgP2 Pl => serve + "jtu" ; -- Intom SERVEJTU
|
||||
AgP3Pl => serve + "w" -- Huma SERVEW
|
||||
@@ -478,13 +526,13 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
AgP3Pl => pfx_J imp_pl -- Huma JSERVU
|
||||
} ;
|
||||
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel patterns
|
||||
-- Params: Root, Pattern
|
||||
conjQuadWeakImp : Root -> Pattern -> (Number => Str) = \root,patt ->
|
||||
-- Conjugate entire verb in IMPERATIVE tense, infers vowel sequence
|
||||
-- Params: Root, Vowels
|
||||
conjQuadWeakImp : Root -> Vowels -> (Number => Str) = \root,vseq ->
|
||||
table {
|
||||
--- 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
|
||||
Pl => root.C1 + patt.V1 + root.C2 + root.C3 + "u" -- Intom: SERVU
|
||||
Sg => root.C1 + vseq.V1 + root.C2 + root.C3 + "i" ; -- Inti: SERVI
|
||||
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
|
||||
-- Params: Root, Pattern
|
||||
-- Params: Root, Vowels
|
||||
conjLoanImp : Str -> (Number => Str) = \mamma ->
|
||||
table {
|
||||
Sg => case mamma of {
|
||||
@@ -560,37 +608,37 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
conjFormII : VerbInfo -> (VForm => Str) = \i ->
|
||||
let
|
||||
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 Lacking => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2 + i.patt.V2 ; -- NEĦĦA
|
||||
_ => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2 + i.patt.V2 + i.root.C3 -- WAQQAF
|
||||
Weak Defective => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2 + i.vseq.V2 + "'" ; -- QATTA'
|
||||
Weak Lacking => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2 + i.vseq.V2 ; -- NEĦĦA
|
||||
_ => 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 {
|
||||
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
|
||||
} ;
|
||||
bexxix : Str = case <i.class,i.patt.V1,i.patt.V2> of {
|
||||
<Weak Defective,_,_> => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2 + i.patt.V2 + "j" ; -- QATTAJ
|
||||
<_,"e","a"> => i.root.C1 + i.patt.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 ;
|
||||
bexxix : Str = case <i.class,i.vseq.V1,i.vseq.V2> of {
|
||||
<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.vseq.V1 + i.root.C2 + i.root.C2 + "e" + i.root.C3 ; -- NEĦĦEJ
|
||||
<_,_,"e"> => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2 + "i" + i.root.C3 ;
|
||||
_ => nehhi -- no change
|
||||
} ;
|
||||
waqqf : Str = case i.class of {
|
||||
Weak Hollow => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C3 ; -- QAJM
|
||||
Weak Lacking => i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2 ; -- NEĦĦ
|
||||
_ => sfx (i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C2) i.root.C3
|
||||
Weak Hollow => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C3 ; -- QAJM
|
||||
Weak Lacking => i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2 ; -- NEĦĦ
|
||||
_ => sfx (i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C2) i.root.C3
|
||||
} ;
|
||||
waqqfu : Str = waqqf + "u" ;
|
||||
perf : VAgr => Str = table {
|
||||
AgP1 Sg => bexxix + "t" ;
|
||||
AgP2 Sg => bexxix + "t" ;
|
||||
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
|
||||
_ => waqqf + "et"
|
||||
} ;
|
||||
AgP1 Pl => bexxix + "na" ;
|
||||
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
|
||||
_ => waqqf + "u"
|
||||
}
|
||||
@@ -618,23 +666,23 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
|
||||
conjFormII_quad : VerbInfo -> (VForm => Str) = \i ->
|
||||
let
|
||||
vowels = extractPattern i.imp ;
|
||||
vowels = extractVowels i.imp ;
|
||||
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
|
||||
_ => pfx_T i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C3 + i.patt.V2 + i.root.C4 -- T-ĦARBAT
|
||||
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.vseq.V1 + i.root.C2 + i.root.C3 + i.vseq.V2 + i.root.C4 -- T-ĦARBAT
|
||||
} ;
|
||||
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 {
|
||||
Quad QWeak => pfx_T i.root.C1 + i.patt.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
|
||||
Quad QWeak => pfx_T i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C3 ; -- SSERV
|
||||
_ => pfx_T i.root.C1 + i.vseq.V1 + i.root.C2 + i.root.C3 + i.root.C4
|
||||
} ;
|
||||
perf : VAgr => Str =
|
||||
let
|
||||
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,"a"> => pfx_T i.root.C1 + i.patt.V1 + i.root.C2 + i.root.C3 + "a" + i.root.C4 ; -- TKANTAJ
|
||||
<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.vseq.V1 + i.root.C2 + i.root.C3 + "a" + i.root.C4 ; -- TKANTAJ
|
||||
_ => mamma
|
||||
} ;
|
||||
tharbtu : Str = case <i.class, vowels.V2> of {
|
||||
@@ -707,13 +755,13 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
|
||||
conjFormIII : VerbInfo -> (VForm => Str) = \i ->
|
||||
let
|
||||
wiegeb : Str = i.root.C1 + i.patt.V1 + i.root.C2 + i.patt.V2 + i.root.C3 ;
|
||||
wegib : Str = case <i.patt.V1,i.patt.V2> of {
|
||||
wiegeb : Str = i.root.C1 + i.vseq.V1 + i.root.C2 + i.vseq.V2 + i.root.C3 ;
|
||||
wegib : Str = case <i.vseq.V1,i.vseq.V2> of {
|
||||
<"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 ;
|
||||
_ => 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" ;
|
||||
perf : VAgr => Str = table {
|
||||
AgP1 Sg => wegib + "t" ;
|
||||
@@ -751,13 +799,13 @@ resource MorphoMlt = ResMlt ** open Prelude in {
|
||||
conjFormVII : VerbInfo -> Str -> (VForm => Str) = \i,C1 ->
|
||||
let
|
||||
nhasel : Str = case i.class of {
|
||||
Weak Hollow => C1 + i.patt.V1 + i.root.C3 ;
|
||||
Weak Lacking => C1 + i.patt.V1 + i.root.C2 + i.patt.V2 ;
|
||||
Weak Defective => C1 + i.patt.V1 + i.root.C2 + i.patt.V2 + "'" ;
|
||||
_ => C1 + i.patt.V1 + i.root.C2 + i.patt.V2 + i.root.C3
|
||||
Weak Hollow => C1 + i.vseq.V1 + i.root.C3 ;
|
||||
Weak Lacking => C1 + i.vseq.V1 + i.root.C2 + i.vseq.V2 ;
|
||||
Weak Defective => C1 + i.vseq.V1 + i.root.C2 + i.vseq.V2 + "'" ;
|
||||
_ => C1 + i.vseq.V1 + i.root.C2 + i.vseq.V2 + i.root.C3
|
||||
} ;
|
||||
v1 : Str = case i.patt.V1 of { "ie" => "e" ; v => v } ;
|
||||
v2 : Str = case i.patt.V2 of { "e" => "i" ; v => v } ;
|
||||
v1 : Str = case i.vseq.V1 of { "ie" => "e" ; v => v } ;
|
||||
v2 : Str = case i.vseq.V2 of { "e" => "i" ; v => v } ;
|
||||
-- nhsil : Str = case <i.class,i.root.C1> of {
|
||||
-- <Strong Regular,_> => C1 + 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
|
||||
} ;
|
||||
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 ;
|
||||
_ => 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 {
|
||||
Weak Lacking => nhasl + "ew" ;
|
||||
|
||||
@@ -55,38 +55,134 @@ resource ParadigmsMlt = open
|
||||
loan = Loan ;
|
||||
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 --------------------------------------------------------------- -}
|
||||
|
||||
-- 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)
|
||||
mkN : N = overload {
|
||||
mkN = overload {
|
||||
|
||||
-- 1: Take the singular and infer plural
|
||||
mkN : Str -> N = \sing ->
|
||||
@@ -224,8 +320,7 @@ resource ParadigmsMlt = open
|
||||
mkN3 = \n,p,q -> lin N3 (n ** {c2 = hasCompl p ; c3 = hasCompl q}) ;
|
||||
|
||||
-- Mark a noun as taking possessive enclitic pronouns
|
||||
possN : N -> N ;
|
||||
possN = \n -> lin N {
|
||||
possN : N -> N = \n -> lin N {
|
||||
s = n.s ;
|
||||
g = n.g ;
|
||||
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 ;
|
||||
} ;
|
||||
|
||||
-- Re-export ResMlt.mkPattern
|
||||
mkPattern : Pattern = overload {
|
||||
mkPattern : Pattern = ResMlt.mkPattern ;
|
||||
mkPattern : Str -> Pattern = \s0 -> ResMlt.mkPattern s0 ;
|
||||
mkPattern : Str -> Str -> Pattern = \s0,s1 -> ResMlt.mkPattern 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)
|
||||
-- Re-export ResMlt.mkVowels
|
||||
mkVowels : Vowels = overload {
|
||||
mkVowels : Vowels = ResMlt.mkVowels ;
|
||||
mkVowels : Str -> Vowels = \s0 -> ResMlt.mkVowels s0 ;
|
||||
mkVowels : Str -> Str -> Vowels = \s0,s1 -> ResMlt.mkVowels s0 s1 ;
|
||||
} ;
|
||||
|
||||
-- Smart paradigm for building a verb
|
||||
@@ -423,47 +490,47 @@ resource ParadigmsMlt = open
|
||||
mkV : Str -> Root -> V = \mamma,root ->
|
||||
let
|
||||
class : VClass = classifyRoot root ;
|
||||
patt : Pattern = extractPattern mamma ;
|
||||
vseq : Vowels = extractVowels mamma ;
|
||||
in
|
||||
case class of {
|
||||
Strong Regular => strongV root patt ;
|
||||
Strong LiquidMedial => liquidMedialV root patt ;
|
||||
Strong Geminated => geminatedV root patt ;
|
||||
Weak Assimilative => assimilativeV root patt ;
|
||||
Weak Hollow => hollowV root patt ;
|
||||
Weak Lacking => lackingV root patt ;
|
||||
Weak Defective => defectiveV root patt ;
|
||||
Quad QStrong => quadV root patt ;
|
||||
Quad QWeak => quadWeakV root patt ;
|
||||
Strong Regular => strongV root vseq ;
|
||||
Strong LiquidMedial => liquidMedialV root vseq ;
|
||||
Strong Geminated => geminatedV root vseq ;
|
||||
Weak Assimilative => assimilativeV root vseq ;
|
||||
Weak Hollow => hollowV root vseq ;
|
||||
Weak Lacking => lackingV root vseq ;
|
||||
Weak Defective => defectiveV root vseq ;
|
||||
Quad QStrong => quadV root vseq ;
|
||||
Quad QWeak => quadWeakV root vseq ;
|
||||
Irregular => Predef.error("Cannot use smart paradigm for irregular verb:"++mamma) ;
|
||||
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
|
||||
mkV : Str -> Str -> Root -> V = \mamma,imp_sg,root ->
|
||||
let
|
||||
class : VClass = classifyRoot root ;
|
||||
patt : Pattern = extractPattern mamma ;
|
||||
vseq : Vowels = extractVowels mamma ;
|
||||
in
|
||||
case class of {
|
||||
Strong Regular => strongV root patt imp_sg ;
|
||||
Strong LiquidMedial => liquidMedialV root patt imp_sg ;
|
||||
Strong Geminated => geminatedV root patt imp_sg ;
|
||||
Weak Assimilative => assimilativeV root patt imp_sg ;
|
||||
Weak Hollow => hollowV root patt imp_sg ;
|
||||
Weak Lacking => lackingV root patt imp_sg ;
|
||||
Weak Defective => defectiveV root patt imp_sg ;
|
||||
Quad QStrong => quadV root patt imp_sg ;
|
||||
Quad QWeak => quadWeakV root patt imp_sg ;
|
||||
Strong Regular => strongV root vseq imp_sg ;
|
||||
Strong LiquidMedial => liquidMedialV root vseq imp_sg ;
|
||||
Strong Geminated => geminatedV root vseq imp_sg ;
|
||||
Weak Assimilative => assimilativeV root vseq imp_sg ;
|
||||
Weak Hollow => hollowV root vseq imp_sg ;
|
||||
Weak Lacking => lackingV root vseq imp_sg ;
|
||||
Weak Defective => defectiveV root vseq imp_sg ;
|
||||
Quad QStrong => quadV root vseq imp_sg ;
|
||||
Quad QWeak => quadWeakV root vseq imp_sg ;
|
||||
Irregular => Predef.error("Cannot use smart paradigm for irregular verb:"++mamma) ;
|
||||
Loan => loanV mamma
|
||||
} ;
|
||||
|
||||
-- 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 : VClass -> VDerivedForm -> Root -> Pattern -> (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
|
||||
\class, form, root, patt,
|
||||
-- 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 -> Vowels -> (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
|
||||
\class, form, root, vseq,
|
||||
perfP1Sg, perfP2Sg, perfP3SgMasc, perfP3SgFem, perfP1Pl, perfP2Pl, perfP3Pl,
|
||||
impfP1Sg, impfP2Sg, impfP3SgMasc, impfP3SgFem, impfP1Pl, impfP2Pl, impfP3Pl,
|
||||
impSg, impPl ->
|
||||
@@ -488,7 +555,7 @@ resource ParadigmsMlt = open
|
||||
VPresPart _ => NONEXIST ;
|
||||
VPastPart _ => NONEXIST
|
||||
} ;
|
||||
info : VerbInfo = mkVerbInfo class form root patt impSg ;
|
||||
info : VerbInfo = mkVerbInfo class form root vseq impSg ;
|
||||
in lin V {
|
||||
s = stemVariantsTbl tbl ;
|
||||
i = info ;
|
||||
@@ -532,12 +599,12 @@ resource ParadigmsMlt = open
|
||||
derivedV_TriII : Str -> Root -> V = \mammaII, root ->
|
||||
let
|
||||
class : VClass = classifyRoot root ;
|
||||
patt : Pattern = extractPattern mammaII ;
|
||||
vseq : Vowels = extractVowels mammaII ;
|
||||
imp : Str = case mammaII of {
|
||||
nehh + "a" => nehh + "i" ; --- maybe too generic?
|
||||
_ => 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 {
|
||||
s = stemVariantsTbl (conjFormII newinfo) ;
|
||||
i = newinfo ;
|
||||
@@ -550,9 +617,9 @@ resource ParadigmsMlt = open
|
||||
derivedV_QuadII : Str -> Root -> V = \mammaII, root ->
|
||||
let
|
||||
class : VClass = classifyRoot root ;
|
||||
patt : Pattern = extractPattern mammaII ;
|
||||
vseq : Vowels = extractVowels mammaII ;
|
||||
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 {
|
||||
s = stemVariantsTbl (conjFormII_quad newinfo) ;
|
||||
i = newinfo ;
|
||||
@@ -562,8 +629,8 @@ resource ParadigmsMlt = open
|
||||
derivedV_QuadII : Str -> Str -> Root -> V = \mammaII, imp, root ->
|
||||
let
|
||||
class : VClass = classifyRoot root ;
|
||||
patt : Pattern = extractPattern mammaII ;
|
||||
newinfo : VerbInfo = mkVerbInfo class FormII root patt imp ;
|
||||
vseq : Vowels = extractVowels mammaII ;
|
||||
newinfo : VerbInfo = mkVerbInfo class FormII root vseq imp ;
|
||||
in lin V {
|
||||
s = stemVariantsTbl (conjFormII_quad newinfo) ;
|
||||
i = newinfo ;
|
||||
@@ -576,9 +643,9 @@ resource ParadigmsMlt = open
|
||||
-- e.g.: derivedV_III "qiegħed" (mkRoot "q-għ-d")
|
||||
derivedV_III : Str -> Root -> V = \mammaIII, root ->
|
||||
let
|
||||
patt : Pattern = extractPattern mammaIII ;
|
||||
vseq : Vowels = extractVowels mammaIII ;
|
||||
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 {
|
||||
s = stemVariantsTbl (conjFormIII info) ;
|
||||
i = info ;
|
||||
@@ -596,7 +663,7 @@ resource ParadigmsMlt = open
|
||||
-- use the Form II conjugation, just prefixing a T
|
||||
mammaII : Str = dropPfx 1 mammaV ; -- WAQQAF
|
||||
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 ;
|
||||
tbl : VForm => Str = table {
|
||||
VPerf agr => pfx_T (get (VPerf agr)) ;
|
||||
@@ -652,7 +719,7 @@ resource ParadigmsMlt = open
|
||||
derivedV_VII : Str -> Str -> Root -> V = \mammaI, mammaVII, root ->
|
||||
let
|
||||
class : VClass = classifyRoot root ;
|
||||
vowels : Pattern = extractPattern mammaI ;
|
||||
vowels : Vowels = extractVowels mammaI ;
|
||||
c1 : Str = case mammaVII of {
|
||||
"n" + c@#Cns + "t" + _ => "n"+c+"t" ; -- NXT-EĦET
|
||||
"ntgħ" + _ => "ntgħ" ; -- NTGĦ-AĠEN
|
||||
@@ -675,7 +742,7 @@ resource ParadigmsMlt = open
|
||||
let
|
||||
mammaI : Str = delCharAt 1 mammaVIII ;
|
||||
class : VClass = classifyRoot root ;
|
||||
vowels : Pattern = extractPattern mammaI ;
|
||||
vowels : Vowels = extractVowels mammaI ;
|
||||
info : VerbInfo = mkVerbInfo class FormVIII root vowels mammaVIII ;
|
||||
c1 : Str = root.C1+"t";
|
||||
in lin V {
|
||||
@@ -686,15 +753,15 @@ resource ParadigmsMlt = open
|
||||
} ;
|
||||
|
||||
-- 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 ->
|
||||
case mammaIX of {
|
||||
-- c1@#Consonant + c2@#Consonant + v1@("ie"|"a") + c3@#Consonant =>
|
||||
_ + v1@("ie"|"a"|"â") + _ =>
|
||||
let
|
||||
patt : Pattern = mkPattern v1 ;
|
||||
vseq : Vowels = mkVowels v1 ;
|
||||
class : VClass = classifyRoot root ;
|
||||
info : VerbInfo = mkVerbInfo class FormIX root patt mammaIX ;
|
||||
info : VerbInfo = mkVerbInfo class FormIX root vseq mammaIX ;
|
||||
in lin V {
|
||||
s = stemVariantsTbl (conjFormIX info) ;
|
||||
i = info ;
|
||||
@@ -709,8 +776,8 @@ resource ParadigmsMlt = open
|
||||
derivedV_X : Str -> Root -> V = \mammaX, root ->
|
||||
let
|
||||
class : VClass = classifyRoot root ;
|
||||
patt : Pattern = extractPattern mammaX ;
|
||||
info : VerbInfo = mkVerbInfo class FormX root patt mammaX ;
|
||||
vseq : Vowels = extractVowels mammaX ;
|
||||
info : VerbInfo = mkVerbInfo class FormX root vseq mammaX ;
|
||||
in lin V {
|
||||
s = stemVariantsTbl (conjFormX info) ;
|
||||
i = info ;
|
||||
@@ -723,33 +790,33 @@ resource ParadigmsMlt = open
|
||||
-- Regular strong verb ("sħiħ"), eg KITEB
|
||||
strongV : V = overload {
|
||||
|
||||
-- Params: root, pattern
|
||||
strongV : Root -> Pattern -> V = \root,patt ->
|
||||
let imp = conjStrongImp root patt
|
||||
in strongVWorst root patt imp ;
|
||||
-- Params: root, vowels
|
||||
strongV : Root -> Vowels -> V = \root,vseq ->
|
||||
let imp = conjStrongImp root vseq
|
||||
in strongVWorst root vseq imp ;
|
||||
|
||||
-- Params: root, pattern, imperative P2Sg
|
||||
strongV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
||||
-- Params: root, vowels, imperative P2Sg
|
||||
strongV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||
let
|
||||
imp = table {
|
||||
Sg => imp_sg ;
|
||||
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
|
||||
strongVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
||||
strongVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||
let
|
||||
tbl : (VForm => Str) = table {
|
||||
VPerf agr => ( conjStrongPerf root patt ) ! agr ;
|
||||
VPerf agr => ( conjStrongPerf root vseq ) ! agr ;
|
||||
VImpf agr => ( conjStrongImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||
VImp n => imp ! n ;
|
||||
VPresPart _ => 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 {
|
||||
s = stemVariantsTbl tbl ;
|
||||
i = info ;
|
||||
@@ -763,15 +830,15 @@ resource ParadigmsMlt = open
|
||||
-- Liquid-medial strong verb, eg ŻELAQ
|
||||
liquidMedialV : V = overload {
|
||||
|
||||
-- Params: root, pattern
|
||||
liquidMedialV : Root -> Pattern -> V = \root,patt ->
|
||||
let imp = conjLiquidMedialImp root patt
|
||||
in liquidMedialVWorst root patt imp ;
|
||||
-- Params: root, vowels
|
||||
liquidMedialV : Root -> Vowels -> V = \root,vseq ->
|
||||
let imp = conjLiquidMedialImp root vseq
|
||||
in liquidMedialVWorst root vseq imp ;
|
||||
|
||||
-- Params: root, pattern, imperative P2Sg
|
||||
liquidMedialV : Root -> Pattern -> Str -> V = \root,patt,imp_sg ->
|
||||
-- Params: root, vowels, imperative P2Sg
|
||||
liquidMedialV : Root -> Vowels -> Str -> V = \root,vseq,imp_sg ->
|
||||
let
|
||||
vowels = extractPattern imp_sg ;
|
||||
vowels = extractVowels imp_sg ;
|
||||
imp = table {
|
||||
Sg => imp_sg ;
|
||||
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
|
||||
}
|
||||
} ;
|
||||
in liquidMedialVWorst root patt imp ;
|
||||
in liquidMedialVWorst root vseq imp ;
|
||||
|
||||
} ;
|
||||
|
||||
-- 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
|
||||
tbl : (VForm => Str) = table {
|
||||
VPerf agr => ( conjLiquidMedialPerf root patt ) ! agr ;
|
||||
VPerf agr => ( conjLiquidMedialPerf root vseq ) ! agr ;
|
||||
VImpf agr => ( conjLiquidMedialImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||
VImp n => imp ! n ;
|
||||
VPresPart _ => 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 {
|
||||
s = stemVariantsTbl tbl ;
|
||||
i = info ;
|
||||
@@ -806,33 +873,33 @@ resource ParadigmsMlt = open
|
||||
-- Geminated strong verb ("trux"), eg ĦABB
|
||||
geminatedV : V = overload {
|
||||
|
||||
-- Params: root, pattern
|
||||
geminatedV : Root -> Pattern -> V = \root,patt ->
|
||||
let imp = conjGeminatedImp root patt
|
||||
in geminatedVWorst root patt imp ;
|
||||
-- Params: root, vowels
|
||||
geminatedV : Root -> Vowels -> V = \root,vseq ->
|
||||
let imp = conjGeminatedImp root vseq
|
||||
in geminatedVWorst root vseq imp ;
|
||||
|
||||
-- Params: root, pattern, imperative P2Sg
|
||||
geminatedV : Root -> Pattern -> Str -> V = \root,patt,imp_sg ->
|
||||
-- Params: root, vowels, imperative P2Sg
|
||||
geminatedV : Root -> Vowels -> Str -> V = \root,vseq,imp_sg ->
|
||||
let
|
||||
imp = table {
|
||||
Sg => imp_sg ;
|
||||
Pl => imp_sg + "u" -- ŻOMM > ŻOMMU
|
||||
} ;
|
||||
in geminatedVWorst root patt imp ;
|
||||
in geminatedVWorst root vseq imp ;
|
||||
|
||||
};
|
||||
|
||||
-- Worst case for reduplicated verb
|
||||
geminatedVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
||||
geminatedVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||
let
|
||||
tbl : (VForm => Str) = table {
|
||||
VPerf agr => ( conjGeminatedPerf root patt ) ! agr ;
|
||||
VPerf agr => ( conjGeminatedPerf root vseq ) ! agr ;
|
||||
VImpf agr => ( conjGeminatedImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||
VImp n => imp ! n ;
|
||||
VPresPart _ => 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 {
|
||||
s = stemVariantsTbl tbl ;
|
||||
i = info ;
|
||||
@@ -845,33 +912,33 @@ resource ParadigmsMlt = open
|
||||
-- Assimilative weak verb, eg WASAL
|
||||
assimilativeV : V = overload {
|
||||
|
||||
-- Params: root, pattern
|
||||
assimilativeV : Root -> Pattern -> V = \root,patt ->
|
||||
let imp = conjAssimilativeImp root patt
|
||||
in assimilativeVWorst root patt imp ;
|
||||
-- Params: root, vowels
|
||||
assimilativeV : Root -> Vowels -> V = \root,vseq ->
|
||||
let imp = conjAssimilativeImp root vseq
|
||||
in assimilativeVWorst root vseq imp ;
|
||||
|
||||
-- Params: root, pattern, imperative P2Sg
|
||||
assimilativeV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
||||
-- Params: root, vowels, imperative P2Sg
|
||||
assimilativeV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||
let
|
||||
imp = table {
|
||||
Sg => imp_sg ;
|
||||
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
|
||||
assimilativeVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
||||
assimilativeVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||
let
|
||||
tbl : (VForm => Str) = table {
|
||||
VPerf agr => ( conjAssimilativePerf root patt ) ! agr ;
|
||||
VPerf agr => ( conjAssimilativePerf root vseq ) ! agr ;
|
||||
VImpf agr => ( conjAssimilativeImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||
VImp n => imp ! n ;
|
||||
VPresPart _ => 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 {
|
||||
s = stemVariantsTbl tbl ;
|
||||
i = info ;
|
||||
@@ -884,33 +951,33 @@ resource ParadigmsMlt = open
|
||||
-- Hollow weak verb, eg SAR (S-J-R)
|
||||
hollowV : V = overload {
|
||||
|
||||
-- Params: root, pattern
|
||||
hollowV : Root -> Pattern -> V = \root,patt ->
|
||||
let imp = conjHollowImp root patt
|
||||
in hollowVWorst root patt imp ;
|
||||
-- Params: root, vowels
|
||||
hollowV : Root -> Vowels -> V = \root,vseq ->
|
||||
let imp = conjHollowImp root vseq
|
||||
in hollowVWorst root vseq imp ;
|
||||
|
||||
-- Params: root, pattern, imperative P2Sg
|
||||
hollowV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
||||
-- Params: root, vowels, imperative P2Sg
|
||||
hollowV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||
let
|
||||
imp = table {
|
||||
Sg => imp_sg ;
|
||||
Pl => imp_sg + "u" -- SIR > SIRU
|
||||
} ;
|
||||
in hollowVWorst root patt imp ;
|
||||
in hollowVWorst root vseq imp ;
|
||||
|
||||
} ;
|
||||
|
||||
-- Worst case for hollow verb
|
||||
hollowVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
||||
hollowVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||
let
|
||||
tbl : (VForm => Str) = table {
|
||||
VPerf agr => ( conjHollowPerf root patt ) ! agr ;
|
||||
VPerf agr => ( conjHollowPerf root vseq ) ! agr ;
|
||||
VImpf agr => ( conjHollowImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||
VImp n => imp ! n ;
|
||||
VPresPart _ => 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 {
|
||||
s = stemVariantsTbl tbl ;
|
||||
i = info ;
|
||||
@@ -923,13 +990,13 @@ resource ParadigmsMlt = open
|
||||
-- Lacking (nieqes) verb, eg MEXA (M-X-J)
|
||||
lackingV : V = overload {
|
||||
|
||||
-- Params: root, pattern
|
||||
lackingV : Root -> Pattern -> V = \root,patt ->
|
||||
let imp = conjLackingImp root patt
|
||||
in lackingVWorst root patt imp ;
|
||||
-- Params: root, vowels
|
||||
lackingV : Root -> Vowels -> V = \root,vseq ->
|
||||
let imp = conjLackingImp root vseq
|
||||
in lackingVWorst root vseq imp ;
|
||||
|
||||
-- Params: root, pattern, imperative P2Sg
|
||||
lackingV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
||||
-- Params: root, vowels, imperative P2Sg
|
||||
lackingV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||
let
|
||||
imp = table {
|
||||
Sg => imp_sg ;
|
||||
@@ -939,21 +1006,21 @@ resource ParadigmsMlt = open
|
||||
x => (dropSfx 1 x) + "u" --- unknown case
|
||||
}
|
||||
} ;
|
||||
in lackingVWorst root patt imp ;
|
||||
in lackingVWorst root vseq imp ;
|
||||
|
||||
} ;
|
||||
|
||||
-- Worst case for lacking verb
|
||||
lackingVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
||||
lackingVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||
let
|
||||
tbl : (VForm => Str) = table {
|
||||
VPerf agr => ( conjLackingPerf root patt ) ! agr ;
|
||||
VPerf agr => ( conjLackingPerf root vseq ) ! agr ;
|
||||
VImpf agr => ( conjLackingImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||
VImp n => imp ! n ;
|
||||
VPresPart _ => 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 {
|
||||
s = stemVariantsTbl tbl ;
|
||||
i = info ;
|
||||
@@ -966,33 +1033,33 @@ resource ParadigmsMlt = open
|
||||
-- Defective verb, eg QALA' (Q-L-GĦ)
|
||||
defectiveV : V = overload {
|
||||
|
||||
-- Params: root, pattern
|
||||
defectiveV : Root -> Pattern -> V = \root,patt ->
|
||||
let imp = conjDefectiveImp root patt
|
||||
in defectiveVWorst root patt imp ;
|
||||
-- Params: root, vowels
|
||||
defectiveV : Root -> Vowels -> V = \root,vseq ->
|
||||
let imp = conjDefectiveImp root vseq
|
||||
in defectiveVWorst root vseq imp ;
|
||||
|
||||
-- Params: root, pattern, imperative P2Sg
|
||||
defectiveV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
||||
-- Params: root, vowels, imperative P2Sg
|
||||
defectiveV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||
let
|
||||
imp = table {
|
||||
Sg => imp_sg ;
|
||||
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
|
||||
defectiveVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
||||
defectiveVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||
let
|
||||
tbl : (VForm => Str) = table {
|
||||
VPerf agr => ( conjDefectivePerf root patt ) ! agr ;
|
||||
VPerf agr => ( conjDefectivePerf root vseq ) ! agr ;
|
||||
VImpf agr => ( conjDefectiveImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||
VImp n => imp ! n ;
|
||||
VPresPart _ => 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 {
|
||||
s = stemVariantsTbl tbl ;
|
||||
i = info ;
|
||||
@@ -1005,33 +1072,33 @@ resource ParadigmsMlt = open
|
||||
-- Make a Quad verb, eg DENDEL (D-L-D-L)
|
||||
quadV : V = overload {
|
||||
|
||||
-- Params: root, pattern
|
||||
quadV : Root -> Pattern -> V = \root,patt ->
|
||||
let imp = conjQuadImp root patt
|
||||
in quadVWorst root patt imp ;
|
||||
-- Params: root, vowels
|
||||
quadV : Root -> Vowels -> V = \root,vseq ->
|
||||
let imp = conjQuadImp root vseq
|
||||
in quadVWorst root vseq imp ;
|
||||
|
||||
-- Params: root, pattern, imperative P2Sg
|
||||
quadV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
||||
-- Params: root, vowels, imperative P2Sg
|
||||
quadV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||
let
|
||||
imp = table {
|
||||
Sg => imp_sg ;
|
||||
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
|
||||
quadVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
||||
quadVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||
let
|
||||
tbl : (VForm => Str) = table {
|
||||
VPerf agr => ( conjQuadPerf root patt ) ! agr ;
|
||||
VPerf agr => ( conjQuadPerf root vseq ) ! agr ;
|
||||
VImpf agr => ( conjQuadImpf (imp ! Sg) (imp ! Pl) ) ! agr ;
|
||||
VImp n => imp ! n ;
|
||||
VPresPart _ => 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 {
|
||||
s = stemVariantsTbl tbl ;
|
||||
i = info ;
|
||||
@@ -1044,13 +1111,13 @@ resource ParadigmsMlt = open
|
||||
-- Make a weak-final Quad verb, eg SERVA (S-R-V-J)
|
||||
quadWeakV : V = overload {
|
||||
|
||||
-- Params: root, pattern
|
||||
quadWeakV : Root -> Pattern -> V = \root,patt ->
|
||||
let imp = conjQuadWeakImp root patt
|
||||
in quadWeakVWorst root patt imp ;
|
||||
-- Params: root, vowels
|
||||
quadWeakV : Root -> Vowels -> V = \root,vseq ->
|
||||
let imp = conjQuadWeakImp root vseq
|
||||
in quadWeakVWorst root vseq imp ;
|
||||
|
||||
-- Params: root, pattern, imperative P2Sg
|
||||
quadWeakV : Root -> Pattern -> Str -> V =\root,patt,imp_sg ->
|
||||
-- Params: root, vowels, imperative P2Sg
|
||||
quadWeakV : Root -> Vowels -> Str -> V =\root,vseq,imp_sg ->
|
||||
let
|
||||
imp = table {
|
||||
Sg => imp_sg ;
|
||||
@@ -1059,21 +1126,21 @@ resource ParadigmsMlt = open
|
||||
_ => (dropSfx 1 imp_sg) + "u" -- SERVI > SERVU
|
||||
}
|
||||
} ;
|
||||
in quadWeakVWorst root patt imp ;
|
||||
in quadWeakVWorst root vseq imp ;
|
||||
|
||||
} ;
|
||||
|
||||
-- Worst case for quadWeak verb
|
||||
quadWeakVWorst : Root -> Pattern -> (Number => Str) -> V = \root,patt,imp ->
|
||||
quadWeakVWorst : Root -> Vowels -> (Number => Str) -> V = \root,vseq,imp ->
|
||||
let
|
||||
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 ;
|
||||
VImp n => imp ! n ;
|
||||
VPresPart _ => 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 {
|
||||
s = stemVariantsTbl tbl ;
|
||||
i = info ;
|
||||
@@ -1204,45 +1271,29 @@ resource ParadigmsMlt = open
|
||||
hasCompl : Prep -> Compl = \p -> p ** { isPresent = True } ;
|
||||
noCompl : Compl = noPrep ** { isPresent = False } where { noPrep : Prep = mkPrep [] };
|
||||
|
||||
mkVS : V -> VS ; -- sentence-compl
|
||||
mkVS v = lin VS v ;
|
||||
|
||||
prepV2 : V -> Prep -> V2 ;
|
||||
prepV2 v p = lin V2 ( v ** { c2 = hasCompl p } ) ;
|
||||
|
||||
dirV2 : V -> V2 ;
|
||||
-- dirV2 v = prepV2 v noPrep ;
|
||||
dirV2 v = lin V2 ( v ** { c2 = noCompl } ) ;
|
||||
|
||||
prepPrepV3 : V -> Prep -> Prep -> V3 ;
|
||||
prepPrepV3 v p t = lin V3 (v ** { c2 = hasCompl p ; c3 = hasCompl t }) ;
|
||||
|
||||
dirV3 : V -> Prep -> V3 ;
|
||||
-- dirV3 v p = prepPrepV3 v noPrep p ;
|
||||
dirV3 v t = lin V3 (v ** { c2 = noCompl ; c3 = hasCompl t }) ;
|
||||
|
||||
dirdirV3 : V -> V3 ;
|
||||
-- dirdirV3 v = dirV3 v noPrep ;
|
||||
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 : V -> V3 = dirdirV3 ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = prepPrepV3 ;
|
||||
mkV3 : V -> Prep -> V3 = dirV3 ;
|
||||
-- mkV3 : V -> Str -> V3 = \v,s -> dirV3 v (mkPrep s);
|
||||
-- mkV3 : Str -> Str -> V3 = \v,s -> dirV3 (regV v) (mkPrep s);
|
||||
-- mkV3 : 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 }) ;
|
||||
|
||||
{- Conjunction -------------------------------------------------------- -}
|
||||
@@ -1260,10 +1311,15 @@ resource ParadigmsMlt = open
|
||||
-- Overloaded function for building an adjective
|
||||
mkA : A = overload {
|
||||
|
||||
-- Same form for gender and number; no comparative form.
|
||||
-- Regular adjective with predictable feminine and plural forms
|
||||
-- Params:
|
||||
-- Adjective, eg BLU
|
||||
mkA : Str -> A = sameA ;
|
||||
-- Adjective, eg BRAVU
|
||||
mkA : Str -> A = \masc ->
|
||||
let
|
||||
fem = inferAdjFem masc ;
|
||||
plural = inferAdjPlural fem
|
||||
in
|
||||
mk3A masc fem plural ;
|
||||
|
||||
-- Infer feminine from masculine; no comparative form.
|
||||
-- Params:
|
||||
@@ -1271,7 +1327,7 @@ resource ParadigmsMlt = open
|
||||
-- Plural, eg SBIEĦ
|
||||
mkA : Str -> Str -> A = brokenA ;
|
||||
|
||||
-- Infer feminine from masculine; no comparative form.
|
||||
-- Explicit feminine form; no comparative form.
|
||||
-- Params:
|
||||
-- Masculine, eg SABIĦ
|
||||
-- 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 ;
|
||||
|
||||
-- Adjective with predictable feminine but broken plural
|
||||
@@ -1307,14 +1352,14 @@ resource ParadigmsMlt = open
|
||||
-- without comparative form
|
||||
brokenA : Str -> Str -> A = \masc,plural ->
|
||||
let
|
||||
fem = determineAdjFem masc
|
||||
fem = inferAdjFem masc
|
||||
in
|
||||
mk3A masc fem plural ;
|
||||
|
||||
-- with comparative form
|
||||
brokenA : Str -> Str -> Str -> A = \masc,plural,compar ->
|
||||
let
|
||||
fem = determineAdjFem masc
|
||||
fem = inferAdjFem masc
|
||||
in
|
||||
mk4A masc fem plural compar ;
|
||||
|
||||
@@ -1330,22 +1375,6 @@ resource ParadigmsMlt = open
|
||||
mk4A = \masc,fem,plural,compar ->
|
||||
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 p = lin A2 (a ** {c2 = hasCompl p}) ;
|
||||
|
||||
@@ -1353,10 +1382,6 @@ resource ParadigmsMlt = open
|
||||
-- dirA2 a = prepA2 a noPrep ;
|
||||
dirA2 a = lin A2 (a ** {c2 = noCompl}) ;
|
||||
|
||||
mkA2 : overload {
|
||||
mkA2 : A -> Prep -> A2 ;
|
||||
mkA2 : A -> Str -> A2 ;
|
||||
} ;
|
||||
mkA2 = overload {
|
||||
mkA2 : A -> Prep -> A2 = prepA2 ;
|
||||
mkA2 : A -> Str -> A2 = \a,p -> prepA2 a (mkPrep p) ;
|
||||
@@ -1365,17 +1390,10 @@ resource ParadigmsMlt = open
|
||||
AS, A2S, AV : Type = A ;
|
||||
A2V : Type = A2 ;
|
||||
|
||||
mkAS : A -> AS ;
|
||||
mkAS a = a ;
|
||||
|
||||
{- 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) ** {
|
||||
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 };
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -537,7 +537,7 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
class : VClass ;
|
||||
form : VDerivedForm ;
|
||||
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!
|
||||
} ;
|
||||
|
||||
@@ -849,8 +849,8 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
<VImpf (AgP1 Pl), Pos> => "nkunu" ;
|
||||
<VImpf (AgP2 Pl), Pos> => "tkunu" ;
|
||||
<VImpf (AgP3Pl), Pos> => "jkunu" ;
|
||||
<VImp (Pl), Pos> => "kun" ;
|
||||
<VImp (Sg), Pos> => "kunu" ;
|
||||
<VImp (Sg), Pos> => "kun" ;
|
||||
<VImp (Pl), Pos> => "kunu" ;
|
||||
<VPerf (AgP1 Sg), Neg> => "kontx" ;
|
||||
<VPerf (AgP2 Sg), Neg> => "kontx" ;
|
||||
<VPerf (AgP3Sg Masc), Neg> => "kienx" ;
|
||||
@@ -865,8 +865,8 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
<VImpf (AgP1 Pl), Neg> => "nkunux" ;
|
||||
<VImpf (AgP2 Pl), Neg> => "tkunux" ;
|
||||
<VImpf (AgP3Pl), Neg> => "jkunux" ;
|
||||
<VImp (Pl), Neg> => "kunx" ;
|
||||
<VImp (Sg), Neg> => "kunux" ;
|
||||
<VImp (Sg), Neg> => "kunx" ;
|
||||
<VImp (Pl), Neg> => "kunux" ;
|
||||
<VPresPart 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 (AgP2 Pl) => mkVerbStems [] "m'intom" ;
|
||||
VImpf (AgP3Pl) => mkVerbStems "huma" "m'humie" ;
|
||||
VImp (Pl) => mkVerbStems "kun" ;
|
||||
VImp (Sg) => mkVerbStems "kunu" ;
|
||||
VImp (Sg) => mkVerbStems "kun" ;
|
||||
VImp (Pl) => mkVerbStems "kunu" ;
|
||||
VPresPart gn => mkVerbStems NONEXIST ;
|
||||
VPastPart gn => mkVerbStems NONEXIST
|
||||
} ;
|
||||
@@ -1043,9 +1043,9 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
EorI : Str = "e" | "i" ;
|
||||
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} ;
|
||||
|
||||
-- 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 } ;
|
||||
} ;
|
||||
|
||||
mkPattern : Pattern = overload {
|
||||
mkPattern : Pattern =
|
||||
mkVowels : Vowels = overload {
|
||||
mkVowels : Vowels =
|
||||
{ V1=[] ; V2=[] } ;
|
||||
mkPattern : Str -> Pattern = \v1 ->
|
||||
mkVowels : Str -> Vowels = \v1 ->
|
||||
{ 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}} ;
|
||||
} ;
|
||||
|
||||
-- Extract first two vowels from a token (designed for semitic verb forms)
|
||||
--- potentially slow
|
||||
extractPattern : Str -> Pattern = \s ->
|
||||
extractVowels : Str -> Vowels = \s ->
|
||||
case s of {
|
||||
v1@"ie" + _ + v2@#Vowel + _ => mkPattern v1 v2 ; -- IEQAF
|
||||
v1@#Vowel + _ + v2@#Vowel + _ => mkPattern v1 v2 ; -- IKTEB
|
||||
_ + v1@"ie" + _ + v2@#Vowel + _ => mkPattern v1 v2 ; -- RIEQED
|
||||
_ + v1@"ie" + _ => mkPattern v1 ; -- ŻIED
|
||||
_ + v1@#Vowel + _ + v2@#Vowel + _ => mkPattern v1 v2 ; -- ĦARBAT
|
||||
_ + v1@#Vowel + _ => mkPattern v1 ; -- ĦOBB
|
||||
_ => mkPattern
|
||||
v1@"ie" + _ + v2@#Vowel + _ => mkVowels v1 v2 ; -- IEQAF
|
||||
v1@#Vowel + _ + v2@#Vowel + _ => mkVowels v1 v2 ; -- IKTEB
|
||||
_ + v1@"ie" + _ + v2@#Vowel + _ => mkVowels v1 v2 ; -- RIEQED
|
||||
_ + v1@"ie" + _ => mkVowels v1 ; -- ŻIED
|
||||
_ + v1@#Vowel + _ + v2@#Vowel + _ => mkVowels v1 v2 ; -- ĦARBAT
|
||||
_ + v1@#Vowel + _ => mkVowels v1 ; -- ĦOBB
|
||||
_ => mkVowels
|
||||
} ;
|
||||
|
||||
-- Create a VerbInfo record, optionally omitting various fields
|
||||
mkVerbInfo : VerbInfo = overload {
|
||||
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 ->
|
||||
{ class=c ; form=f ; root=mkRoot ; patt=mkPattern ; imp=i } ;
|
||||
mkVerbInfo : VClass -> VDerivedForm -> Root -> Pattern -> VerbInfo = \c,f,r,p ->
|
||||
{ class=c ; form=f ; root=r ; patt=p ; imp=[] } ;
|
||||
mkVerbInfo : VClass -> VDerivedForm -> Root -> Pattern -> Str -> VerbInfo = \c,f,r,p,i ->
|
||||
{ class=c ; form=f ; root=r ; patt=p ; imp=i } ;
|
||||
-- mkVerbInfo : VClass -> VDerivedForm -> Root -> Pattern -> Pattern -> 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=mkRoot ; vseq=mkVowels ; imp=i } ;
|
||||
mkVerbInfo : VClass -> VDerivedForm -> Root -> Vowels -> VerbInfo = \c,f,r,p ->
|
||||
{ class=c ; form=f ; root=r ; vseq=p ; imp=[] } ;
|
||||
mkVerbInfo : VClass -> VDerivedForm -> Root -> Vowels -> Str -> VerbInfo = \c,f,r,p,i ->
|
||||
{ class=c ; form=f ; root=r ; vseq=p ; imp=i } ;
|
||||
-- mkVerbInfo : VClass -> VDerivedForm -> Root -> Vowels -> Vowels -> Str -> VerbInfo = \c,f,r,p,p2,i ->
|
||||
-- { class=c ; form=f ; root=r ; vseq=p ; vseq2=p2 ; imp=i } ;
|
||||
} ;
|
||||
|
||||
-- Change certain fields of a VerbInfo record
|
||||
@@ -1109,18 +1109,46 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
|
||||
-- Root
|
||||
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
|
||||
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
|
||||
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 ~~~ -}
|
||||
|
||||
NONEXIST : Str = "#NONEXIST#" ;
|
||||
|
||||
@@ -152,14 +152,14 @@ concrete StructuralMlt of Structural = CatMlt **
|
||||
have_V2 = dirV2 (kellu_V) ;
|
||||
|
||||
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
|
||||
"naf" "taf" "jaf" "taf" "nafu" "tafu" "jafu"
|
||||
"kun af" "kunu afu"
|
||||
;
|
||||
sata'_V = mkV "sata'" (ResMlt.mkRoot "s-t-għ") ;
|
||||
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"
|
||||
"għandi" "għandek" "għandu" "għandha" "għandna" "għandkom" "għandhom"
|
||||
"kollok" "kollkom"
|
||||
|
||||
Reference in New Issue
Block a user