From d58d7a4ce3798b69f8e76712889fffb4bb152b63 Mon Sep 17 00:00:00 2001 From: "john.j.camilleri" Date: Wed, 3 Apr 2013 06:50:01 +0000 Subject: [PATCH] Maltese RG: Irregular verbs in Dict, Lexicon. Prep, Conj and others. --- lib/src/maltese/AdverbMlt.gf | 9 ++ lib/src/maltese/CatMlt.gf | 25 ++- lib/src/maltese/DictMlt.gf | 239 ++++++++++++++++++++++----- lib/src/maltese/DictMltAbs.gf | 26 ++- lib/src/maltese/LexiconMlt.gf | 254 +++++++++++++++-------------- lib/src/maltese/MorphoMlt.gf | 3 +- lib/src/maltese/NounMlt.gf | 51 +++--- lib/src/maltese/ParadigmsMlt.gf | 222 ++++++++++++++++--------- lib/src/maltese/ResMlt.gf | 268 +++++++++++++++---------------- lib/src/maltese/SentenceMlt.gf | 5 + lib/src/maltese/StructuralMlt.gf | 72 +++++---- lib/src/maltese/VerbMlt.gf | 8 +- 12 files changed, 737 insertions(+), 445 deletions(-) diff --git a/lib/src/maltese/AdverbMlt.gf b/lib/src/maltese/AdverbMlt.gf index 9ec33970a..847ebf44c 100644 --- a/lib/src/maltese/AdverbMlt.gf +++ b/lib/src/maltese/AdverbMlt.gf @@ -9,4 +9,13 @@ concrete AdverbMlt of Adverb = CatMlt ** open ResMlt, Prelude in { -- AdN -- Adv + lin + -- Prep -> NP -> Adv + PrepNP prep np = { + s = case of { + => prep.s ! Definite ++ np.s ! CPrep ; -- FIT-TRIQ + => prep.s ! Definite ++ np.s ! Nom ; -- FUQ IT-TRIQ + => prep.s ! Indefinite ++ np.s ! Nom -- FI TRIQ + } + } ; } diff --git a/lib/src/maltese/CatMlt.gf b/lib/src/maltese/CatMlt.gf index 14988da4d..a7de77698 100644 --- a/lib/src/maltese/CatMlt.gf +++ b/lib/src/maltese/CatMlt.gf @@ -14,14 +14,14 @@ concrete CatMlt of Cat = CommonX ** open ResMlt, Prelude in { -- Tensed/Untensed - -- S = {s : Str} ; + S = {s : Str} ; -- QS = {s : QForm => Str} ; -- RS = {s : Agr => Str ; c : NPCase} ; -- c for it clefts -- SSlash = {s : Str ; c2 : Str} ; -- Sentence - Cl = {s : Tense => Anteriority => Polarity => Str} ; + Cl = {s : ResMlt.Tense => Anteriority => Polarity => Str} ; -- ClSlash = { -- s : ResMlt.Tense => Anteriority => Polarity => Order => Str ; -- c2 : Str @@ -85,7 +85,7 @@ concrete CatMlt of Cat = CommonX ** open ResMlt, Prelude in { n : NumForm ; } ; --- numeral +-- Numeral -- Cardinal or ordinal in WORDS (not digits) Numeral = { @@ -100,25 +100,24 @@ concrete CatMlt of Cat = CommonX ** open ResMlt, Prelude in { tail : DTail }; - -- Structural --- Conj = {s1,s2 : Str ; n : Number} ; --- ---b Conj = {s : Str ; n : Number} ; --- ---b DConj = {s1,s2 : Str ; n : Number} ; + Conj = {s1,s2 : Str} ; -- Subj = {s : Str} ; - Prep = {s : Str} ; + Prep = { + s : Definiteness => Str ; + takesDet : Bool + } ; -- Open lexical classes, e.g. Lexicon V, VS, VQ, VA = Verb ; - V2, V2A, V2Q, V2S = Verb ; -- ** {c2 : Str} ; - V3 = Verb ; -- ** {c2, c3 : Str} ; + V2, V2A, V2Q, V2S = Verb ** {prep : Prep} ; -- VV = {s : VVForm => Str ; typ : VVType} ; - -- V2V = Verb ** {c2,c3 : Str ; typ : VVType} ; + V3, V2V = Verb ** {prep1,prep2 : Prep} ; -- ** {typ : VVType} ; - A = Adjective ** {hasComp : Bool} ; -- Does the adjective have a comparative form (e.g. ISBAĦ)? --- A2 = Adjective ** {c2 : Str} ; + A = Adjective ; + A2 = Adjective ; N, N2, N3 = Noun ; PN = ProperNoun ; diff --git a/lib/src/maltese/DictMlt.gf b/lib/src/maltese/DictMlt.gf index 9b7753520..848e33451 100644 --- a/lib/src/maltese/DictMlt.gf +++ b/lib/src/maltese/DictMlt.gf @@ -1,10 +1,15 @@ --# -path=.:../prelude:../abstract:../common +-- Monolingual dictionary for Maltese +-- The 4000 root-and-pattern verbs come from M. Spagnol's work, which is +-- available here: http://mlrs.research.um.edu.mt/resources/verbalroots/ + concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { flags coding=utf8 ; + -- Root-and-pattern verbs lin badbad_BDBD_1_6674_V = mkV "badbad" (mkRoot "b-d-b-d") ; tbadbad_BDBD_2_6675_V = mkV_II "tbadbad" (mkRoot "b-d-b-d") ; @@ -339,8 +344,16 @@ 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 "kompla" (mkRoot "k-m-pl-j") ; - -- tkompla_KMPLJ_2_7013_V = mkV_II "tkompla" (mkRoot "k-m-pl-j") ; + kompla_KMPLJ_1_7012_V = mkV quadWeak form1 (mkRoot "k-m-pl-j") (mkPattern "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") + "tkomplejt" "tkomplejt" "tkompla" "tkompliet" "tkomplejna" "tkomplejtu" "tkomplew" + "nitkompla" "titkompla" "jitkompla" "titkompla" "nitkomplu" "titkomplu" "jitkomplu" + "tkompla" "tkomplu" + ; kamrad_KMRD_1_7014_V = mkV "kamrad" (mkRoot "k-m-r-d") ; kanga_KNGJ_1_7015_V = mkV "kanġa" (mkRoot "k-n-ġ-j") ; kanta_KNTJ_1_7016_V = mkV "kanta" (mkRoot "k-n-t-j") ; @@ -414,8 +427,16 @@ 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 "mantna" (mkRoot "m-n-tn-j") ; - -- tmantna_MNTNJ_2_7089_V = mkV_II "tmantna" (mkRoot "m-n-tn-j") ; + mantna_MNTNJ_1_7088_V = mkV quadWeak form1 (mkRoot "m-n-tn-j") (mkPattern "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") + "tmantnejt" "tmantnejt" "tmantna" "tmantniet" "tmantnejna" "tmantnejtu" "tmantnew" + "nitmantna" "titmantna" "jitmantna" "titmantna" "nitmantnu" "titmantnu" "jitmantnu" + "tmantna" "tmantnu" + ; mantar_MNTR_1_7090_V = mkV "mantar" (mkRoot "m-n-t-r") ; tmantar_MNTR_2_7091_V = mkV_II "tmantar" (mkRoot "m-n-t-r") ; manwal_MNWL_1_7092_V = mkV "manwal" (mkRoot "m-n-w-l") ; @@ -762,8 +783,16 @@ 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ħ") ; - -- belleh_BLHN_2_7439_V = mkV_II "belleh" (mkRoot "bl-ħ-n") ; - -- tbelleh_BLHN_5_7440_V = mkV_V "tbelleh" (mkRoot "bl-ħ-n") ; + blehhen_BLHN_1_7439_V = mkV strong form1 (mkRoot "bl-ħ-n") (mkPattern "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") + "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" + ; bell_BLL_1_7441_V = mkV "bell" (mkRoot "b-l-l") ; bellel_BLL_2_7442_V = mkV_II "bellel" (mkRoot "b-l-l") ; tbell_BLL_5_7443_V = mkV_V "tbell" (mkRoot "b-l-l") ; @@ -816,7 +845,11 @@ 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_V "tbrekken" (mkRoot "br-k-n") ; + tbrekken_BRKN_5_7493_V = mkV strong form5 (mkRoot "br-k-n") (mkPattern "e" "e") + "tbrekkint" "tbrekkint" "tbrekken" "tbrekknet" "tbrekkinna" "tbrekkintu" "tbrekknu" + "nitbrekken" "titbrekken" "jitbrekken" "titbrekken" "nitbrekknu" "titbrekknu" "jitbrekknu" + "tbrekken" "tbrekknu" + ; baram_BRM_1_7494_V = mkV "baram" (mkRoot "b-r-m") ; barram_BRM_2_7495_V = mkV_II "barram" (mkRoot "b-r-m") ; tbarram_BRM_5_7496_V = mkV_V "tbarram" (mkRoot "b-r-m") ; @@ -864,9 +897,9 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { bexxex_BXX_2_7538_V = mkV_II "bexxex" (mkRoot "b-x-x") ; tbexxex_BXX_5_7539_V = mkV_V "tbexxex" (mkRoot "b-x-x") ; nbexx_BXX_7_7540_V = mkV_VII "bexx" "nbexx" (mkRoot "b-x-x") ; - baza'_BZGH_1_7541_V = mkV "baża'" (mkRoot "b-ż-għ") ; - bazza'_BZGH_2_7542_V = mkV_II "bażża'" (mkRoot "b-ż-għ") ; - tbazza'_BZGH_5_7543_V = mkV_V "tbażża'" (mkRoot "b-ż-għ") ; + beza'_BZGH_1_7541_V = mkV "baża'" (mkRoot "b-ż-għ") ; + bezza'_BZGH_2_7542_V = mkV_II "bażża'" (mkRoot "b-ż-għ") ; + tbezza'_BZGH_5_7543_V = mkV_V "tbażża'" (mkRoot "b-ż-għ") ; bizel_BZL_1_7544_V = mkV "biżel" (mkRoot "b-ż-l") ; bizzel_BZL_2_7545_V = mkV_II "biżżel" (mkRoot "b-ż-l") ; tbizzel_BZL_5_7546_V = mkV_V "tbiżżel" (mkRoot "b-ż-l") ; @@ -1148,8 +1181,12 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { faggar_FGR_2_7822_V = mkV_II "faġġar" (mkRoot "f-ġ-r") ; nfagar_FGR_7_7823_V = mkV_VII "faġar" "nfaġar" (mkRoot "f-ġ-r") ; faghal_FGHL_1_7824_V = mkV "fagħal" (mkRoot "f-għ-l") ; - nftehem_FHM_7_7825_V = mkV_VII "ftehem" "nftehem" (mkRoot "f-h-m") ; - ftiehem_FHM_8_7826_V = mkV_VIII "ftiehem" (mkRoot "f-h-m") ; + fehem_FHM_1_10830_V = mkV "fehem" (mkRoot "f-h-m") ; + fehhem_FHM_2_10832_V = mkV_II "fehhem" (mkRoot "f-h-m") ; + fiehem_FHM_3_10831_V = mkV_III "fiehem" (mkRoot "f-h-m") ; + tfehem_FHM_6_10833_V = mkV_VI "tfehem" (mkRoot "f-h-m") ; + nfehem_FHM_7_7825_V = mkV_VII "fehem" "nfehem" (mkRoot "f-h-m") ; + ftehem_FHM_8_7826_V = mkV_VIII "ftehem" (mkRoot "f-h-m") ; fahal_FHL_1_7827_V = mkV "faħal" (mkRoot "f-ħ-l") ; fahhal_FHL_2_7828_V = mkV_II "faħħal" (mkRoot "f-ħ-l") ; tfahhal_FHL_5_7829_V = mkV_V "tfaħħal" (mkRoot "f-ħ-l") ; @@ -1446,7 +1483,11 @@ 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 = mkV "ġie" (mkRoot "ġ-j-'") ; + gie_GJ'_1_8123_V = irregularV form1 (mkRoot "ġ-j-'") (mkPattern "ie" []) + "ġejt" "ġejt" "ġie" "ġiet" "ġejna" "ġejtu" "ġew" + "niġi" "tiġi" "jiġi" "tiġi" "niġu" "tiġu" "jiġu" + "ejja" "ejjew" + ; gab_GJB_1_8124_V = mkV "ġab" (mkRoot "ġ-j-b") ; ngab_GJB_7_8125_V = mkV_VII "ġab" "nġab" (mkRoot "ġ-j-b") ; gejjef_GJF_2_8126_V = mkV_II "ġejjef" (mkRoot "ġ-j-f") ; @@ -1993,7 +2034,11 @@ 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 = mkV "kiel" (mkRoot "k-j-l") ; + kiel_KJL_1_8672_V = irregularV form1 (mkRoot "k-j-l") (mkPattern "ie" []) + "kilt" "kilt" "kiel" "kielet" "kilna" "kiltu" "kielu" + "niekol" "tiekol" "jiekol" "tiekol" "nieklu" "tieklu" "jieklu" + ("kul"|"iekol") ("kulu"|"ieklu") + ; wikkel_KJL_2_8673_V = mkV_II "wikkel" (mkRoot "k-j-l") ; twikkel_KJL_5_8674_V = mkV_V "twikkel" (mkRoot "k-j-l") ; ttiekel_KJL_7_8675_V = mkV_VII "tiekel" "ttiekel" (mkRoot "k-j-l") ; @@ -2016,7 +2061,11 @@ 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 = mkV "kien" (mkRoot "k-w-n") ; + kien_KWN_1_8695_V = irregularV form1 (mkRoot "k-w-n") (mkPattern "ie" []) + "kont" "kont" "kien" "kienet" "konna" "kontu" "kienu" + "nkun" "tkun" "jkun" "tkun" "nkunu" "tkunu" "jkunu" + "kun" "kunu" + ; kewwen_KWN_2_8696_V = mkV_II "kewwen" (mkRoot "k-w-n") ; tkewwen_KWN_5_8697_V = mkV_V "tkewwen" (mkRoot "k-w-n") ; kewwes_KWS_2_8698_V = mkV_II "kewwes" (mkRoot "k-w-s") ; @@ -2239,7 +2288,11 @@ 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 = mkV "mar" (mkRoot "m-w-r") ; + mar_MWR_1_8918_V = irregularV form1 (mkRoot "m-w-r") (mkPattern "a" []) + "mort" "mort" "mar" "marret" "morna" "mortu" "marru" + "mmur" "tmur" "jmur" "tmur" "mmorru" "tmorru" "jmorru" + "mur" "morru" + ; mawwar_MWR_2_8919_V = mkV_II "mawwar" (mkRoot "m-w-r") ; tmawwar_MWR_5_8920_V = mkV_V "tmawwar" (mkRoot "m-w-r") ; mewwes_MWS_2_8921_V = mkV_II "mewwes" (mkRoot "m-w-s") ; @@ -2652,7 +2705,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { nqeda_QDJ_7_9330_V = mkV_VII "qeda" "nqeda" (mkRoot "q-d-j") ; qajjed_QJD_2_9331_V = mkV_II "qajjed" (mkRoot "q-j-d") ; tqajjed_QJD_5_9332_V = mkV_V "tqajjed" (mkRoot "q-j-d") ; - qal_QJL_1_9333_V = mkV "qal" (mkRoot "q-j-l") ; + qal_QJL_1_9333_V = mkV "qal" (mkRoot "q-j-l") ; -- shelter (see QAJJEL) qajjel_QJL_2_9334_V = mkV_II "qajjel" (mkRoot "q-j-l") ; qiem_QJM_1_9335_V = mkV "qiem" (mkRoot "q-j-m") ; qejjem_QJM_2_9336_V = mkV_II "qejjem" (mkRoot "q-j-m") ; @@ -2676,7 +2729,11 @@ 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 = mkV "qal" (mkRoot "q-w-l") ; + qal_QWL_1_9357_V = irregularV form1 (mkRoot "q-w-l") (mkPattern "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" + ; -- say/speak (note: GĦAD is also a separate verb) qawwel_QWL_2_9358_V = mkV_II "qawwel" (mkRoot "q-w-l") ; tqawel_QWL_6_9359_V = mkV_VI "tqawel" (mkRoot "q-w-l") ; nqal_QWL_7_9360_V = mkV_VII "qal" "nqal" (mkRoot "q-w-l") ; @@ -2832,8 +2889,16 @@ 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 = mkV "ra" (mkRoot "r-'-j") ; - -- ntwera_R'J_7_9514_V = mkV_VII "wera" "ntwera" (mkRoot "r-'-j") ; + ra_R'J_1_9513_V = irregularV form1 (mkRoot "r-'-j") (mkPattern "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") + "ntwerejt" "ntwerejt" "ntwera" "ntweriet" "ntwerejna" "ntwerejtu" "ntwerew" + "nintwera" "tintwera" "jintwera" "tintwera" "nintwerew" "tintwerew" "jintwerew" + "ntwera" "ntwerew" + ; rabba_RBJ_2_9515_V = mkV_II "rabba" (mkRoot "r-b-j") ; trabba_RBJ_5_9516_V = mkV_V "trabba" (mkRoot "r-b-j") ; riega_RGJ_3_9517_V = mkV_III "rieġa" (mkRoot "r-ġ-j") ; @@ -3227,9 +3292,21 @@ 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_II "tamma" (mkRoot "t-m-'") ; - -- tama_TM'_3_9910_V = mkV_III "tama" (mkRoot "t-m-'") ; - -- ttama_TM'_6_9911_V = mkV_VI "ttama" (mkRoot "t-m-'") ; + tamma_TM'_2_9909_V = mkV irregular form2 (mkRoot "t-m-'") (mkPattern "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") + "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") + "ttamajt" "ttamajt" "ttama" "ttamat" "ttamajna" "ttamajtu" "ttamaw" + "nittama" "tittama" "jittama" "tittama" "nittamaw" "tittamaw" "jittamaw" + "ttama" "ttamaw" + ; tama'_TMGH_1_9912_V = mkV "tama'" (mkRoot "t-m-għ") ; tamma'_TMGH_2_9913_V = mkV_II "tamma'" (mkRoot "t-m-għ") ; ttamma'_TMGH_5_9914_V = mkV_V "ttamma'" (mkRoot "t-m-għ") ; @@ -3380,7 +3457,11 @@ 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 = mkV "emmen" (mkRoot "w-m-n") ; + emmen_WMN_1_10062_V = irregularV form1 (mkRoot "w-m-n") (mkPattern "e" "e") + "emmint" "emmint" "emmen" "emmnet" "emminna" "emmintu" "emmnu" + "nemmen" "temmen" "jemmen" "temmen" "nemmnu" "temmnu" "jemmnu" + "emmen" "emmnu" + ; wemmen_WMN_2_10063_V = mkV_II "wemmen" (mkRoot "w-m-n") ; twemmen_WMN_5_10064_V = mkV_V "twemmen" (mkRoot "w-m-n") ; wennes_WNS_2_10065_V = mkV_II "wennes" (mkRoot "w-n-s") ; @@ -4085,22 +4166,82 @@ 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 = mkV "ta" (mkRoot "għ-t-j") ; + ta_GHTJ_1_10767_V = irregularV form1 (mkRoot "għ-t-j") (mkPattern "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 = mkV_VIII "idda" (mkRoot "'-d-j") ; - -- idden_'DN_2_10772_V = mkV_II "idden" (mkRoot "'-d-n") ; - -- stieden_'DN_10_10773_V = mkV_X "stieden" (mkRoot "'-d-n") ; - -- af_''F_1_10774_V = mkV "af" (mkRoot "'-'-f") ; - -- ntaf_''F_7_10775_V = mkV_VII "af" "ntaf" (mkRoot "'-'-f") ; - -- ha_'HD_1_10776_V = mkV "ħa" (mkRoot "'-ħ-d") ; - -- ttiehed_'HD_6_10777_V = mkV_VI "ttieħed" (mkRoot "'-ħ-d") ; - -- staha_'HJ_10_10778_V = mkV_X "staħa" (mkRoot "'-ħ-j") ; - -- amar_'MR_1_10779_V = mkV "amar" (mkRoot "'-m-r") ; - -- amba_'MB_1_10780_V = mkV "amba" (mkRoot "'-m-b") ; - -- stenna_'NJ_10_10781_V = mkV_X "stenna" (mkRoot "'-n-j") ; - -- stienes_'NS_10_10782_V = mkV_X "stienes" (mkRoot "'-n-s") ; - -- izza_'ZJ_2_10783_V = mkV_II "iżża" (mkRoot "'-ż-j") ; - -- azzem_'ZM_2_10784_V = mkV_II "ażżem" (mkRoot "'-ż-m") ; + idda_'DJ_8_10771_V = irregularV form8 (mkRoot "'-d-j") (mkPattern "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") + "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") + "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" []) + "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" []) + "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" []) + "ħ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") + "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") + "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 + "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") + "ambajt" "ambajt" "amba" "ambat" "ambajna" "ambajtu" "ambaw" + "namba" "tamba" "jamba" "tamba" "nambaw" "tambaw" "jambaw" + "amba" "ambaw" + ; + stenna_'NJ_10_10781_V = irregularV form10 (mkRoot "'-n-j") (mkPattern "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") + "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") + "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") + "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" + ; zanqar_ZNQR_1_10785_V = mkV "żanqar" (mkRoot "ż-n-q-r") ; zanzan_ZNZN_1_10786_V = mkV "żanżan" (mkRoot "ż-n-ż-n") ; zzanzan_ZNZN_2_10787_V = mkV_II "żżanżan" (mkRoot "ż-n-ż-n") ; @@ -4131,8 +4272,16 @@ 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 = mkV "wera" (mkRoot "r-'-j") ; - -- ntara_R'J_7_10816_V = mkV_VII "ara" "ntara" (mkRoot "r-'-j") ; + wera_R'J_1_10815_V = irregularV form4 (mkRoot "r-'-j") (mkPattern "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") + "ntrajt" "ttarajt" "ntara" "ttarat" "ntrajna" "ntrajtu" "ntraw" + "nintara" "tintara" "jintara" "tintara" "nintaraw" "tintaraw" "jintaraw" + "ntara" "ntaraw" + ; qass_QSS_1_10817_V = mkV "qass" (mkRoot "q-s-s") ; ntqass_QSS_7_10818_V = mkV_VII "qass" "ntqass" (mkRoot "q-s-s") ; tgharref_GHRF_5_10819_V = mkV_V "tgħarref" (mkRoot "għ-r-f") ; @@ -4144,4 +4293,12 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { itteka_TKW_1_10825_V = mkV "itteka" (mkRoot "t-k-w") ; ntemm_TMM_7_10826_V = mkV_VII "temm" "ntemm" (mkRoot "t-m-m") ; nghadda_GHDJ_7_10828_V = mkV_VII "għadda" "ngħadda" (mkRoot "għ-d-j") ; + + -- Loan verbs + lin + mbotta_V = mkV "mbotta" ; + vvjagga_V = mkV "vvjaġġa" ; + ffriza_V = mkV "ffriża" ; + kkuntempla_V = mkV "kkuntempla" ; + } diff --git a/lib/src/maltese/DictMltAbs.gf b/lib/src/maltese/DictMltAbs.gf index b4013e8d8..4f5374886 100644 --- a/lib/src/maltese/DictMltAbs.gf +++ b/lib/src/maltese/DictMltAbs.gf @@ -2,6 +2,7 @@ abstract DictMltAbs = Cat ** { + -- Root-and-pattern verbs fun badbad_BDBD_1_6674_V : V ; tbadbad_BDBD_2_6675_V : V ; @@ -759,8 +760,8 @@ abstract DictMltAbs = Cat ** { balla'_BLGH_2_7436_V : V ; tballa'_BLGH_5_7437_V : V ; nbela'_BLGH_7_7438_V : V ; - belleh_BLHN_2_7439_V : V ; - tbelleh_BLHN_5_7440_V : V ; + blehhen_BLHN_1_7439_V : V ; + tblehhen_BLHN_2_7440_V : V ; bell_BLL_1_7441_V : V ; bellel_BLL_2_7442_V : V ; tbell_BLL_5_7443_V : V ; @@ -861,9 +862,9 @@ abstract DictMltAbs = Cat ** { bexxex_BXX_2_7538_V : V ; tbexxex_BXX_5_7539_V : V ; nbexx_BXX_7_7540_V : V ; - baza'_BZGH_1_7541_V : V ; - bazza'_BZGH_2_7542_V : V ; - tbazza'_BZGH_5_7543_V : V ; + beza'_BZGH_1_7541_V : V ; + bezza'_BZGH_2_7542_V : V ; + tbezza'_BZGH_5_7543_V : V ; bizel_BZL_1_7544_V : V ; bizzel_BZL_2_7545_V : V ; tbizzel_BZL_5_7546_V : V ; @@ -1145,8 +1146,12 @@ abstract DictMltAbs = Cat ** { faggar_FGR_2_7822_V : V ; nfagar_FGR_7_7823_V : V ; faghal_FGHL_1_7824_V : V ; - nftehem_FHM_7_7825_V : V ; - ftiehem_FHM_8_7826_V : V ; + fehem_FHM_1_10830_V : V ; + fehhem_FHM_2_10832_V : V ; + fiehem_FHM_3_10831_V : V ; + tfehem_FHM_6_10833_V : V ; + nfehem_FHM_7_7825_V : V ; + ftehem_FHM_8_7826_V : V ; fahal_FHL_1_7827_V : V ; fahhal_FHL_2_7828_V : V ; tfahhal_FHL_5_7829_V : V ; @@ -4141,4 +4146,11 @@ abstract DictMltAbs = Cat ** { itteka_TKW_1_10825_V : V ; ntemm_TMM_7_10826_V : V ; nghadda_GHDJ_7_10828_V : V ; + + -- Loan verbs + fun + mbotta_V : V ; + vvjagga_V : V ; + ffriza_V : V ; + kkuntempla_V : V ; } diff --git a/lib/src/maltese/LexiconMlt.gf b/lib/src/maltese/LexiconMlt.gf index fc6f39b60..5364b1b08 100644 --- a/lib/src/maltese/LexiconMlt.gf +++ b/lib/src/maltese/LexiconMlt.gf @@ -7,39 +7,41 @@ --# -path=.:../abstract:../common:../prelude concrete LexiconMlt of Lexicon = CatMlt ** - open Prelude, ParadigmsMlt, IrregMlt in { + open Prelude, ParadigmsMlt, IrregMlt, DictMlt in { flags optimize=values ; coding=utf8 ; lin --- add_V3 --- alas_Interj --- already_Adv + add_V3 = mkV3 zied_ZJD_1_10424_V maP ; + airplane_N = mkN "ajruplan" ; + alas_Interj = ss "sfortunatament" ; + already_Adv = mkAdv "diġà" ; animal_N = mkN "annimal" ; - answer_V2S = mkV_III "wieġeb" (mkRoot "w-ġ-b") ; + answer_V2S = lilV2 (wiegeb_WGB_3_10033_V) ; apartment_N = mkN "appartament" ; + apple_N = mkNColl "tuffieħ" ; art_N = mkNNoPlural "arti" feminine ; --- ashes_N = mkN "rmied" ; - ask_V2Q = mkV "saqsa" (mkRoot "s-q-s-j") ; + ashes_N = mkN "rmied" "rmiet" ; + ask_V2Q = lilV2 (saqsa_SQSJ_1_7268_V) ; baby_N = mkN "tarbija" "trabi" ; back_N = possN (mkN "dahar" "dhur") ; bad_A = brokenA "ħażin" "hżiena" "agħar" ; bank_N = mkN "bank" "bankijiet" ; -- BANEK is for lotto booths! bark_N = mkN "qoxra" "qoxriet" ; beautiful_A = brokenA "sabiħ" "sbieħ" "isbaħ" ; --- become_VA + become_VA = sar_SJR_1_9797_V ; beer_N = mkN "birra" "birer" ; --- beg_V2V + beg_V2V = mkV2V ttallab_TLB_5_9893_V ghalP minnP ; belly_N = possN (mkN "żaqq" "żquq") ; big_A = brokenA "kbir" "kbar" "ikbar" ; bike_N = mkN "rota" ; bird_N = mkN "għasfur" "għasafar" ; -- feminine: GĦASFURA - bite_V2 = mkV "gidem" (mkRoot "g-d-m") ; + bite_V2 = lilV2 (gidem_GDM_1_8009_V) ; black_A = mkA "iswed" "sewda" "suwed" ; blood_N = possN (mkN [] "demm" [] "dmija" []) ; - blow_V = mkV "nefaħ" (mkRoot "n-f-ħ") ; + blow_V = nefah_NFH_1_8966_V ; blue_A = sameA "blu" ; boat_N = mkN "dgħajsa" "dgħajjes" ; bone_N = mkNColl "għadam" ; @@ -48,15 +50,15 @@ concrete LexiconMlt of Lexicon = CatMlt ** boss_N = mkN "mgħallem" "mgħallmin" ; boy_N = mkN "tifel" "tfal" ; bread_N = mkNColl "ħobż" ; - break_V2 = mkV "kiser" (mkRoot "k-s-r") ; + break_V2 = dirV2 (kiser_KSR_1_8636_V) ; breast_N = possN (mkN "sider" "sdur") ; -- also ISDRA --- breathe_V +-- breathe_V -- ĦA N-NIFS broad_A = mkA "wiesgħa" "wiesgħa" "wiesgħin" ; brother_N2 = mkN2 (possN (mkN "ħu" "aħwa")) ; brown_A = sameA "kannella" ; - burn_V = mkV "ħaraq" (mkRoot "ħ-r-q") ; + burn_V = haraq_HRQ_1_8367_V ; butter_N = mkN [] "butir" [] "butirijiet" [] ; - buy_V2 = mkV_VIII "xtara" (mkRoot "x-r-j") ; + buy_V2 = dirV2 (xtara_XRJ_8_10296_V) ; camera_N = mkN "kamera" "kameras" ; cap_N = mkN "beritta" ; car_N = mkN "karozza" ; @@ -65,76 +67,77 @@ concrete LexiconMlt of Lexicon = CatMlt ** ceiling_N = mkN "saqaf" "soqfa"; chair_N = mkN "siġġu" "siġġijiet" ; cheese_N = mkNColl "ġobon" ; --- child_N = mkN "tfajjel" ; -- Not an easy one... + child_N = mkN "tifel" "tfal" ; -- feminine: TIFLA church_N = mkN "knisja" "knejjes" ; city_N = mkN "belt" "bliet" feminine ; clean_A = brokenA "nadif" "nodfa" ; clever_A = regA "bravu" ; - close_V2 = mkV "għalaq" (mkRoot "għ-l-q") ; + close_V2 = dirV2 (ghalaq_GHLQ_1_10530_V) ; cloud_N = mkNColl "sħab" ; coat_N = mkN "kowt" "kowtijiet" ; cold_A = mkA "kiesaħ" "kiesħa" "kesħin" ; --- come_V + come_V = gie_GJ'_1_8123_V ; computer_N = mkN "kompjuter" "kompjuters" ; correct_A = regA "korrett" ; - count_V2 = mkV "għadd" (mkRoot "għ-d-d") ; + count_V2 = dirV2 (ghadd_GHDD_1_10460_V) ; country_N = possN (mkN "pajjiż") ; cousin_N = possN (mkN "kuġin") ; -- feminine: KUĠINA cow_N = mkN "baqra" "baqar" "baqartejn" [] [] ; - cut_V2 = mkV "qata'" (mkRoot "q-t-għ") ; + cut_V2 = dirV2 (qata'_QTGH_1_9305_V) ; day_N = mkN "ġurnata" "ġranet" ; - dig_V = mkV "ħafer" (mkRoot "ħ-f-r") ; + die_V = miet_MWT_1_8923_V ; + dig_V = hafer_HFR_1_8233_V ; dirty_A = regA "maħmuġ" ; distance_N3 = mkN "distanza" ; - do_V2 = mkV "għamel" (mkRoot "għ-m-l") ; + do_V2 = dirV2 (ghamel_GHML_1_10544_V) ; doctor_N = mkN "tabib" "tobba" ; -- feminine: TABIBA dog_N = mkN "kelb" "klieb" ; door_N = mkN "bieb" "bibien" ; - drink_V2 = mkV "xorob" (mkRoot "x-r-b") ; + drink_V2 = dirV2 (xorob_XRB_1_10231_V) ; dry_A = regA "niexef" ; dull_A = sameA "tad-dwejjaq" ; dust_N = mkNColl "trab" ; -- not sure but sounds right ear_N = possN (mkNDual "widna") ; earth_N = mkN "art" "artijiet" feminine ; --- easy_A2V --- eat_V2 + easy_A2V = sameA "faċli" ; + eat_V2 = dirV2 (kiel_KJL_1_8672_V) ; egg_N = mkNColl "bajd" ; empty_A = mkA "vojt" "vojta" "vojta" ; enemy_N = mkN "għadu" "għedewwa" ; eye_N = possN (mk5N "għajn" [] "għajnejn" "għajnejn" "għejun" feminine) ; factory_N = mkN "fabbrika" ; - fall_V = mkV "waqa'" (mkRoot "w-q-għ") ; --- far_Adv + fall_V = waqa'_WQGH_1_10070_V ; + far_Adv = mkAdv "il-bogħod" ; -- use glue? fat_N = mkNColl "xaħam" ; father_N2 = mkN2 (possN (mkN "missier" "missierijiet")) ; --- fear_V2 --- fear_VS + fear_V2 = prepV2 (beza'_BZGH_1_7541_V) minnP ; + fear_VS = beza'_BZGH_1_7541_V; feather_N = mkNColl "rix" ; - fight_V2 = mkV_VI "ġġieled" (mkRoot "ġ-l-d") ; - find_V2 = mkV "sab" (mkRoot "s-j-b") ; + fight_V2 = prepV2 (ggieled_GLD_6_8074_V) maP ; + find_V2 = lilV2 (sab_SJB_1_9779_V) ; fingernail_N = possN (mkN "difer" [] "difrejn" "dwiefer" []) ; fire_N = mkN "nar" "nirien" ; fish_N = mkNColl "ħut" ; -- float_V - earth_N = mkN "art" "artijiet" feminine ; --- flow_V + floor_N = mkN "art" "artijiet" feminine ; flower_N = mkN "fjura" ; - fly_V = mkV "tar" (mkRoot "t-j-r") ; +-- flow_V + fly_V = tar_TJR_1_9972_V ; fog_N = mkN [] "ċpar" [] [] [] ; foot_N = possN (mk5N "sieq" [] "saqajn" "saqajn" [] feminine) ; forest_N = mkN "foresta" ; -- also MASĠAR - forget_V2 = mkV "nesa" (mkRoot "n-s-j") ; --- freeze_V + forget_V2 = lilV2 (nesa_NSJ_1_9126_V) ; + freeze_V = ffriza_V ; fridge_N = mkN "friġġ" "friġġijiet" ; friend_N = possN (mkN "ħabib" "ħbieb") ; -- feminine: ĦABIBA fruit_N = mkNColl "frott" ; full_A = regA "mimli" ; --- fun_AV + fun_AV = sameA "pjaċevoli" ; garden_N = mkN "ġnien" "ġonna" ; girl_N = mkN "tifla" "tfal" ; --- give_V3 + give_V3 = mkV3 ta_GHTJ_1_10767_V lilP ; glove_N = mkN "ingwanta" ; - go_V = mkV "mar" (mkRoot "m-w-r") ; + go_V = mar_MWR_1_8918_V ; gold_N = mkN [] "deheb" [] "dehbijiet" [] ; good_A = mkA "tajjeb" "tajba" "tajbin" ; grammar_N = mkN "grammatika" ; @@ -145,62 +148,62 @@ concrete LexiconMlt of Lexicon = CatMlt ** hand_N = possN (mk5N "id" [] "idejn" "idejn" [] feminine) ; harbour_N = mkN "port" "portijiet" ; hat_N = mkN "kappell" "kpiepel" ; --- hate_V2 + hate_V2 = lilV2 (baghad_BGHD_1_7402_V) ; head_N = possN (mkN "ras" "rjus" feminine) ; - hear_V2 = mkV "sema'" (mkRoot "s-m-għ") ; + hear_V2 = lilV2 (sema'_SMGH_1_9698_V) ; heart_N = possN (mkN "qalb" "qlub" feminine) ; heavy_A = brokenA "tqil" "tqal" "itqal" ; hill_N = mkN "għolja" "għoljiet" ; - hit_V2 = mkV "laqat" (mkRoot "l-q-t") ; --- hold_V2 - hope_VS = mkV_VIII "xtaq" (mkRoot "x-w-q") ; + hit_V2 = lilV2 (laqat_LQT_1_8772_V) ; + hold_V2 = lilV2 (zamm_ZMM_1_10392_V) ; + hope_VS = xtaq_XWQ_8_10313_V ; horn_N = mkN "ħorn" "ħornijiet" ; horse_N = mkN "żiemel" "żwiemel" ; - hot_A = brokenA "sħun" "sħan" ; + hot_A = mkA "jaħraq" "taħraq" "jaħarqu" ; house_N = mkN "dar" "djar" feminine ; --- hunt_V2 + hunt_V2 = prepV2 (kaccac_KCC_2_8571_V) ghalP ; husband_N = mkN "raġel" "rġiel" ; ice_N = mkN "silġ" "silġiet" ; important_A = sameA "importanti" ; industry_N = mkN "industrija" ; iron_N = mk5N "ħadida" "ħadid" [] "ħadidiet" "ħdejjed" masculine ; john_PN = mkPN "Ġanni" masculine singular ; - jump_V = mkV "qabeż" (mkRoot "q-b-ż") ; - kill_V2 = mkV "qatel" "oqtol" (mkRoot "q-t-l") ; + jump_V = qabez_QBZ_1_9182_V ; + kill_V2 = lilV2 (qatel_QTL_1_9312_V) ; king_N = mkN "re" "rejjiet" ; knee_N = possN (mkN "rkoppa" [] "rkopptejn" "rkoppiet" []) ; -- TODO use mkNDual --- know_V2 --- know_VQ --- know_VS + know_V2 = lilV2 (af_''F_1_10774_V) ; + know_VQ = af_''F_1_10774_V ; + know_VS = af_''F_1_10774_V ; lake_N = mkN "għadira" "għadajjar" ; lamp_N = mkN "lampa" ; language_N = mkN "lingwa" ; -- lsien? - laugh_V = mkV "daħak" (mkRoot "d-ħ-k") ; + laugh_V = dahak_DHK_1_7688_V ; leaf_N = mkN "werqa" "weraq" "werqtejn" "werqiet" [] ; - learn_V2 = mkV_V "tgħallem" (mkRoot "għ-l-m") ; + learn_V2 = dirV2 (tghallem_GHLM_5_10527_V) ; leather_N = mkN "ġilda" "ġild" [] "ġildiet" "ġlud" ; -- mkNColl "ġild" ; - leave_V2 = mkV "telaq" (mkRoot "t-l-q") ; --- left_Ord + leave_V2 = prepV2 (telaq_TLQ_1_9903_V) minnP ; + left_Ord = mkOrd "xellug" ; leg_N = possN (mkN "riġel" [] "riġlejn" [] []) ; -- SIEQ - lie_V = mkV_VIII "mtedd" (mkRoot "m-d-d") ; --- like_V2 - listen_V2 = mkV "sema'" (mkRoot "s-m-għ") ; - live_V = mkV "għex" (mkRoot "għ-j-x") ; + lie_V = mtedd_MDD_8_8816_V ; -- lie down + like_V2 = lilV2 (ghogob_GHGB_1_10485_V) ; + listen_V2 = lilV2 (sema'_SMGH_1_9698_V) ; + live_V = ghex_GHJX_1_10711_V ; liver_N = mkN "fwied" [] [] [] "ifdwa" ; long_A = brokenA "twil" "twal" "itwal" ; - lose_V2 = mkV "tilef" (mkRoot "t-l-f") ; + lose_V2 = lilV2 (tilef_TLF_1_9895_V) ; louse_N = mkN "qamla" "qamliet" ; love_N = mkN "mħabba" "mħabbiet" ; - love_V2 = mkV "ħabb" (mkRoot "ħ-b-b") ; + love_V2 = lilV2 (habb_HBB_1_8174_V) ; man_N = mkN "raġel" "rġiel" ; --- married_A2 + married_A2 = mkA2 (mkA "miżżewweġ" "miżżewġa") lilP ; meat_N = mkN "laħam" [] [] "laħmiet" "laħmijiet" ; milk_N = mkN [] "ħalib" [] "ħalibijiet" "ħlejjeb" ; moon_N = mkN "qamar" "oqmra" ; -- QMURA mother_N2 = mkN2 (possN (mkN "omm" "ommijiet" feminine)) ; mountain_N = mkN "muntanja" ; mouth_N = possN (mkN "ħalq" "ħluq") ; - music_N = mkNNoPlural "musika" ; + music_N = mkN "mużika" "mużiki" ; name_N = possN (mkN "isem" "ismijiet") ; narrow_A = mkA "dejjaq" "dejqa" "dojoq" "idjaq" ; near_A = regA "viċin" ; @@ -209,12 +212,12 @@ concrete LexiconMlt of Lexicon = CatMlt ** newspaper_N = mkN "gazzetta" ; night_N = mkN "lejl" "ljieli" ; nose_N = possN (mkN "mnieħer" "mniħrijiet") ; --- now_Adv + now_Adv = mkAdv "issa" ; number_N = mkN "numru" ; oil_N = mkN "żejt" "żjut" ; old_A = brokenA "qadim" "qodma" "eqdem" ; - open_V2 = mkV "fetaħ" (mkRoot "f-t-ħ") ; --- paint_V2A + open_V2 = dirV2 (fetah_FTH_1_7932_V) ; + paint_V2A = dirV2 (pitter_PTR_2_9152_V) ; paper_N = mkN "karta" ; paris_PN = mkPN "Pariġi" feminine singular ; peace_N = mkN "paċi" "paċijiet" feminine ; @@ -222,26 +225,26 @@ concrete LexiconMlt of Lexicon = CatMlt ** person_N = mk5N [] "persuna" [] "persuni" [] masculine ; planet_N = mkN "pjaneta" ; plastic_N = mkNNoPlural "plastik" ; - play_V = mkV "lagħab" (mkRoot "l-għ-b") ; - play_V = mkV "lagħab" (mkRoot "l-għ-b") ; + play_V = daqq_DQQ_1_7736_V ; + play_V2 = prepV2 (laghab_LGHB_1_8724_V) maP ; policeman_N = mkNNoPlural "pulizija" ; priest_N = mkN "qassis" "qassisin" ; --- probable_AS - pull_V2 = mkV "ġibed" (mkRoot "ġ-b-d") ; --- push_V2 - put_V2 = mkV_III "qiegħed" (mkRoot "q-għ-d") ; + probable_AS = mkAS (sameA "probabbli") ; + pull_V2 = lilV2 (gibed_GBD_1_8043_V) ; + push_V2 = dirV2 (mbotta_V) ; -- GĦAFAS + put_V2 = lilV2 (qieghed_QGHD_3_9212_V) ; queen_N = mkN "reġina" "rġejjen" ; question_N = mkN "mistoqsija" "mistoqsijiet" ; -- DOMANDA radio_N = mkN "radju" "radjijiet" ; rain_N = mkNNoPlural "xita" ; --- rain_V0 - read_V2 = mkV "qara" (mkRoot "q-r-j") ; + rain_V0 = xita_XTW_1_10297_V ; -- TAGĦMEL IX-XITA + read_V2 = dirV2 (qara_QRJ_1_9350_V) ; ready_A = regA "lest" ; reason_N = mkN "raġun" "raġunijiet" ; red_A = mkA "aħmar" "ħamra" "ħomor" ; religion_N = mkN "reliġjon" "reliġjonijiet" ; restaurant_N = mkN "restorant" ; --- right_Ord + right_Ord = mkOrd "lemin" ; river_N = mkN "xmara" "xmajjar" ; road_N = mk5N "triq" [] [] "triqat" "toroq" feminine ; rock_N = mkN "blata" "blat" [] "blatiet" "blajjiet" ; -- in dictionary BLAT and BLATA are separate! @@ -250,23 +253,23 @@ concrete LexiconMlt of Lexicon = CatMlt ** rope_N = mkN "ħabel" "ħbula" ; rotten_A = mkA "mħassar" "mħassra" "mħassrin" ; round_A = regA "tond" ; --- rub_V2 + rub_V2 = dirV2 (ghorok_GHRK_1_10599_V) ; rubber_N = mkN "gomma" "gomom" ; rule_N = mkN "regola" ; - run_V = mkV "ġera" (mkRoot "ġ-r-j") ; + run_V = gera_GRJ_1_8131_V ; salt_N = mkN "melħ" "melħiet" ; sand_N = mkN "ramla" "ramel" [] "ramliet" "rmiel" ; --- say_VS + say_VS = qal_QWL_1_9357_V ; school_N = mkN "skola" "skejjel" ; science_N = mkN "xjenza" ; - scratch_V2 = mkV "barax" (mkRoot "b-r-x") ; + scratch_V2 = lilV2 (barax_BRX_1_7504_V) ; sea_N = mkN "baħar" [] "baħrejn" "ibħra" [] ; --- see_V2 + see_V2 = lilV2 (ra_R'J_1_9513_V) ; seed_N = mkN "żerriegħa" "żerrigħat" ; - seek_V2 = mkV_II "fittex" (mkRoot "f-t-x") ; - sell_V3 = mkV "biegħ" (mkRoot "b-j-għ") ; - send_V3 = mkV "bagħat" (mkRoot "b-għ-t") ; - sew_V = mkV "ħat" (mkRoot "ħ-j-t") ; + seek_V2 = lilV2 (fittex_FTX_2_7952_V) ; + sell_V3 = mkV3 biegh_BJGH_1_7565_V lilP ; + send_V3 = mkV3 baghat_BGHT_1_7412_V lilP ; + sew_V = hat_HJT_1_8508_V ; sharp_A = mkA "jaqta'" "taqta'" "jaqtgħu" ; sheep_N = mkN "nagħġa" "nagħaġ" [] "nagħġiet" [] ; ship_N = mkN "vapur" ; @@ -275,89 +278,104 @@ concrete LexiconMlt of Lexicon = CatMlt ** shop_N = mkN "ħanut" "ħwienet" ; short_A = brokenA "qasir" "qosra" "iqsar" ; silver_N = mkN "fidda" "fided" ; - sing_V = mkV "kanta" (mkRoot "k-n-t-j") ; + sing_V = kanta_KNTJ_1_7016_V ; sister_N = possN (mkN "oħt" "aħwa" feminine) ; - sit_V = mkV_II "poġġa" (mkRoot "p-ġ-j") ; + sit_V = pogga_PGJ_2_9157_V ; skin_N = mkN "ġilda" "ġildiet" ; sky_N = mkN "sema" "smewwiet" masculine ; - sleep_V = mkV "raqad" (mkRoot "r-q-d") ; + sleep_V = raqad_RQD_1_9469_V ; small_A = brokenA "zgħir" "zgħar" "iżgħar" ; - smell_V = mkV "xamm" (mkRoot "x-m-m") ; + smell_V = xamm_XMM_1_10207_V ; smoke_N = mkN "duħħan" "dħaħen" ; smooth_A = regA "lixx" ; snake_N = mkN "serp" "sriep" ; snow_N = mkN [] "borra" [] [] [] ; sock_N = mkN "kalzetta" ; song_N = mkN "kanzunetta" ; --- speak_V2 - spit_V = mkV "beżaq" (mkRoot "b-ż-q") ; - split_V2 = mkV "qasam" (mkRoot "q-s-m") ; --- squeeze_V2 - stab_V2 = mkV_II "mewwes" (mkRoot "m-w-s") ; + speak_V2 = prepV2 (kellem_KLM_2_8597_V) maP ; + spit_V = bezaq_BZQ_1_7549_V ; + split_V2 = lilV2 (qasam_QSM_1_9292_V) ; + squeeze_V2 = dirV2 (ghasar_GHSR_1_10625_V) ; + stab_V2 = lilV2 (mewwes_MWS_2_8921_V) ; -- stand_V star_N = mkN "stilla" "stilel" ; steel_N = mkNNoPlural "azzar" ; stick_N = mkN "lasta" ; stone_N = mkN "ġebla" "ġebel" [] "ġebliet" "ġbiel" ; - stop_V = mkV "waqaf" (mkRoot "w-q-f") ; + stop_V = waqaf_WQF_1_10067_V ; stove_N = mkN "kuker" "kukers" ; -- FUKLAR straight_A = regA "dritt" ; student_N = mkN "student" ; stupid_A = mkA "iblah" "belha" "boloh" ; - suck_V2 = mkV "rada'" (mkRoot "r-d-għ") ; + suck_V2 = lilV2 (rada'_RDGH_1_9388_V) ; sun_N = mkN "xemx" "xmux" feminine ; - swell_V = mkV_VIII "ntefaħ" (mkRoot "n-f-ħ") ; - swim_V = mkV "għam" (mkRoot "għ-w-m") ; - switch8off_V2 = mkV "tefa" (mkRoot "t-f-j") ; - switch8on_V2 = mkV "xegħel" (mkRoot "x-għ-l") ; + swell_V = ntefah_NFH_8_8970_V ; + swim_V = gham_GHWM_1_10750_V ; + switch8off_V2 = dirV2 (tefa_TFJ_1_9960_V) ; + switch8on_V2 = dirV2 (xeghel_XGHL_1_10155_V) ; table_N = mkN "mejda" "mwejjed" ; tail_N = possN (mkN "denb" "dnieb") ; --- talk_V3 - teach_V2 = mkV_II "għallem" (mkRoot "għ-l-m") ; + talk_V3 = mkV3 kellem_KLM_2_8597_V maP fuqP ; -- PAĊPAĊ, PARLA + teach_V2 = lilV2 (ghallem_GHLM_2_10526_V) ; teacher_N = mkN "għalliem" "għalliema" ; -- feminine: GĦALLIEMA television_N = mkN "televixin" "televixins" ; thick_A = mkA "oħxon" "ħoxna" "ħoxnin" "eħxen" ; thin_A = brokenA "rqiq" "rqaq" "rqaq" ; - think_V = mkV "ħaseb" (mkRoot "ħ-s-b") ; - throw_V2 = mkV_II "waddab" (mkRoot "w-d-b") ; - tie_V2 = mkV "qafel" (mkRoot "q-f-l") ; --- today_Adv + think_V = haseb_HSB_1_8387_V ; + throw_V2 = dirV2 (waddab_WDB_2_10027_V) ; + tie_V2 = dirV2 (qafel_QFL_1_9206_V) ; + today_Adv = mkAdv "illum" ; tongue_N = possN (mkN "lsien" "ilsna") ; tooth_N = possN (mkN "sinna" [] [] "sinniet" "snien") ; -- DARSA train_N = mkN "ferrovija" ; --- travel_V + travel_V = vvjagga_V ; tree_N = mkN "siġra" "siġar" [] "siġriet" [] ; - turn_V = mkV "dar" (mkRoot "d-w-r") ; + turn_V = dar_DWR_1_7803_V ; ugly_A = mkA "ikrah" "kerha" "koroh" ; uncertain_A = regA "inċert" ; --- understand_V2 --- missing from dict + understand_V2 = lilV2 (fehem_FHM_1_10830_V) ; university_N = mkN "università" "universitàjiet" ; village_N = possN (mkN "raħal" "rħula") ; -- VILLAĠĠ - vomit_V = mkV "qala'" (mkRoot "q-l-għ") ; --- wait_V2 - walk_V = mkV "mexa" (mkRoot "m-x-j") ; + vomit_V = qala'_QLGH_1_9223_V ; + wait_V2 = lilV2 (stenna_'NJ_10_10781_V) ; + walk_V = mexa_MXJ_1_8926_V ; war_N = mkN "gwerra" "gwerrer" ; - warm_A = hot_A ; - wash_V2 = mkV "ħasel" (mkRoot "ħ-s-l") ; --- watch_V2 + warm_A = brokenA "sħun" "sħan" ; + wash_V2 = lilV2 (hasel_HSL_1_8395_V) ; + watch_V2 = dirV2 (ra_R'J_1_9513_V) ; water_N = mkN "ilma" "ilmijiet" masculine ; wet_A = mkA "mxarrab" "mxarrba" "mxarrbin" ; white_A = mkA "abjad" "bajda" "bojod" ; wide_A = broad_A ; wife_N = mkN "mara" "nisa" ; - win_V2 = mkV "rebaħ" (mkRoot "r-b-ħ") ; + win_V2 = dirV2 (rebah_RBH_1_9371_V) ; wind_N = mkN "riħ" [] [] "rjieħ" "rjiħat" ; window_N = mkN "tieqa" "twieqi" ; wine_N = mkN [] "nbid" [] [] "nbejjed" ; wing_N = mkN "ġewnaħ" "ġwienaħ" ; - wipe_V2 = mkV "mesaħ" (mkRoot "m-s-ħ") ; + wipe_V2 = dirV2 (mesah_MSH_1_8881_V) ; woman_N = mkN "mara" "nisa" ; --- wonder_VQ + wonder_VQ = kkuntempla_V ; wood_N = mkN "injam" "injamiet" ; worm_N = mkN "dudu" "dud" [] "dudiet" "dwied" ; - write_V2 = mkV "kiteb" (mkRoot "k-t-b") ; + write_V2 = dirV2 (kiteb_KTB_1_8641_V) ; year_N = mkN "sena" [] "sentejn" "snin" [] ; yellow_A = mkA "isfar" "safra" "sofor" ; young_A = small_A ; + oper + fuqP = mkPrep "fuq" ; + ghandP = mkPrep "għand" ; + ghalP = mkPrep "għal" ; + minnP = mkPrep "minn" ; + goP = mkPrep "ġo" ; + lilP = mkPrep "lil" ; + maP = mkPrep "ma'" ; + taP = mkPrep "ta'" ; + biP = mkPrep "bi" ; + fiP = mkPrep "fi" ; + + lilV2 : V -> V2 ; + lilV2 v = prepV2 v (mkPrep "lil") ; + } ; diff --git a/lib/src/maltese/MorphoMlt.gf b/lib/src/maltese/MorphoMlt.gf index 75652b68b..d43ee5f98 100644 --- a/lib/src/maltese/MorphoMlt.gf +++ b/lib/src/maltese/MorphoMlt.gf @@ -17,10 +17,11 @@ resource MorphoMlt = ResMlt ** open Prelude in { oper mkDeterminer : Number -> Str -> Determiner = \n,s -> { s = \\gen => s ; - n = Num n ; -- Number -> NumForm + n = NumX n ; -- Number -> NumForm clitic = [] ; hasNum = False ; isPron = False ; + isDefn = False ; } ; {- Pronoun -------------------------------------------------------------- -} diff --git a/lib/src/maltese/NounMlt.gf b/lib/src/maltese/NounMlt.gf index 68c372add..180dc4f44 100644 --- a/lib/src/maltese/NounMlt.gf +++ b/lib/src/maltese/NounMlt.gf @@ -15,22 +15,22 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { chooseNounNumForm : Det -> CN -> Str = \det,n -> let det' = det.s ! n.g ; - sing = n.s ! Singular Singulative ; + sing = n.s ! Singulative ; coll = if_then_Str n.hasColl - (n.s ! Singular Collective) -- BAQAR - (n.s ! Plural Determinate) -- SNIEN + (n.s ! Collective) -- BAQAR + (n.s ! Plural) -- SNIEN ; dual = n.s ! Dual ; - pdet = n.s ! Plural Determinate ; - pind = n.s ! Plural Indeterminate ; + plur = n.s ! Plural ; + -- pind = n.s ! Plural Indeterminate ; in case det.n of { - Num Sg => det' ++ sing ; -- BAQRA - Num Pl => det' ++ coll ; -- BAQAR (coll) / ħafna SNIEN (pdet) + NumX Sg => det' ++ sing ; -- BAQRA + NumX Pl => det' ++ coll ; -- BAQAR (coll) / ħafna SNIEN (pdet) Num0 => det' ++ sing ; -- L-EBDA BAQRA Num1 => det' ++ sing ; -- BAQRA Num2 => if_then_Str n.hasDual dual -- BAQARTEJN - (det' ++ pdet) -- ŻEWĠ IRĠIEL + (det' ++ plur) -- ŻEWĠ IRĠIEL ; Num3_10 => det' ++ coll ; -- TLETT BAQAR Num11_19 => det' ++ sing ; -- ĦDAX-IL BAQRA @@ -40,45 +40,51 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { lin -- Det -> CN -> NP DetCN det cn = { - s = \\c => case of { - => glue (cn.s ! numform2nounnum det.n) det.clitic ; - => artDef ++ cn.s ! numform2nounnum det.n ++ det.s ! cn.g ; - _ => chooseNounNumForm det cn + s = table { + Nom => case of { + => glue (cn.s ! numform2nounnum det.n) det.clitic ; + => artDef ++ cn.s ! numform2nounnum det.n ++ det.s ! cn.g ; + _ => chooseNounNumForm det cn + } ; + CPrep => cn.s ! numform2nounnum det.n } ; a = case (numform2nounnum det.n) of { - Singular _ => mkAgr cn.g Sg P3 ; - _ => mkAgr cn.g Pl P3 + Singulative => mkAgr cn.g Sg P3 ; --- collective? + _ => mkAgr cn.g Pl P3 } ; isPron = False ; + isDefn = det.isDefn ; } ; -- Quant -> Num -> Det DetQuant quant num = { s = \\gen => - let gennum = case num.n of { Num Sg => GSg gen ; _ => GPl } + let gennum = case num.n of { NumX Sg => GSg gen ; _ => GPl } in case quant.isDemo of { True => quant.s ! gennum ++ artDef ++ num.s ! NumAdj ; False => quant.s ! gennum ++ num.s ! NumAdj } ; n = num.n ; + clitic = quant.clitic ; hasNum = num.hasCard ; isPron = quant.isPron ; - clitic = quant.clitic ; + isDefn = quant.isDefn ; } ; -- Quant -> Num -> Ord -> Det --- Almost an exact copy of DetQuant, consider factoring together DetQuantOrd quant num ord = { s = \\gen => - let gennum = case num.n of { Num Sg => GSg gen ; _ => GPl } + let gennum = case num.n of { NumX Sg => GSg gen ; _ => GPl } in case quant.isDemo of { True => quant.s ! gennum ++ artDef ++ num.s ! NumAdj ++ ord.s ! NumAdj ; False => quant.s ! gennum ++ num.s ! NumAdj ++ ord.s ! NumAdj } ; n = num.n ; + clitic = quant.clitic ; hasNum = True ; isPron = quant.isPron ; - clitic = quant.clitic ; + isDefn = quant.isDefn ; } ; -- Quant @@ -87,12 +93,14 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { clitic = [] ; isPron = False ; isDemo = False ; + isDefn = True ; } ; IndefArt = { s = \\_ => artIndef ; clitic = [] ; isPron = False ; isDemo = False ; + isDefn = False ; } ; -- PN -> NP @@ -100,6 +108,7 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { s = \\c => pn.s ; a = pn.a ; isPron = False ; + isDefn = False ; } ; -- Pron -> NP @@ -110,6 +119,7 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { } ; a = p.a ; isPron = True ; + isDefn = False ; } ; -- Pron -> Quant @@ -118,11 +128,12 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { clitic = p.s ! Suffixed Gen ; isPron = True ; isDemo = False ; + isDefn = True ; } ; -- Num - NumSg = {s = \\c => []; n = Num Sg ; hasCard = False} ; - NumPl = {s = \\c => []; n = Num Pl ; hasCard = False} ; + NumSg = {s = \\c => []; n = NumX Sg ; hasCard = False} ; + NumPl = {s = \\c => []; n = NumX Pl ; hasCard = False} ; -- Card -> Num NumCard n = n ** {hasCard = True} ; diff --git a/lib/src/maltese/ParadigmsMlt.gf b/lib/src/maltese/ParadigmsMlt.gf index 5460fdc6f..fbbc14c73 100644 --- a/lib/src/maltese/ParadigmsMlt.gf +++ b/lib/src/maltese/ParadigmsMlt.gf @@ -35,7 +35,29 @@ resource ParadigmsMlt = open singular : Number = Sg ; plural : Number = Pl ; - {- Noun paradigms ----------------------------------------------------- -} + form1 = FormI ; + form2 = FormII ; + form3 = FormIII ; + form4 = FormIV ; + form5 = FormV ; + form6 = FormVI ; + form7 = FormVII ; + form8 = FormVIII ; + form9 = FormIX ; + form10 = FormX ; + + strong = Strong Regular ; + liquidMedial = Strong LiquidMedial ; + geminated = Strong Geminated ; + assimilative = Weak Assimilative ; + hollow = Weak Hollow ; + lacking = Weak Lacking ; + quad = Quad QStrong ; + quadWeak = Quad QWeak ; + loan = Loan ; + irregular = Irregular ; + + {- Noun --------------------------------------------------------------- -} -- Helper function for inferring noun plural from singulative -- Nouns with collective & determinate forms should not use this... @@ -216,78 +238,46 @@ resource ParadigmsMlt = open takesPron = True ; } ; -{- - -- Correctly abbreviate definite prepositions and join with noun - -- Params: - -- preposition (eg TAL, MAL, BĦALL) - -- noun - abbrevPrepositionDef : Str -> Str -> Str = \prep,noun -> - let - -- Remove either 1 or 2 l's - prepStem : Str = case prep of { - _ + "ll" => dropSfx 2 prep ; - _ + "l" => dropSfx 1 prep ; - _ => prep -- this should never happen, I don't think - } - in - case noun of { - ("s"|#LiquidCons) + #Consonant + _ => prep + "-i" + noun ; - ("għ" | #Vowel) + _ => case prep of { - ("fil"|"bil") => (takePfx 1 prep) + "l-" + noun ; - _ => prep + "-" + noun - }; - K@#CoronalConsonant + _ => prepStem + K + "-" + noun ; - #Consonant + _ => prep + "-" + noun ; - _ => [] - } ; --} - -- Correctly abbreviate indefinite prepositions and join with noun - -- Params: - -- preposition (eg TA', MA', BĦAL) - -- noun - abbrevPrepositionIndef : Str -> Str -> Str = \prep,noun -> - let - initPrepLetter = takePfx 1 prep ; - initNounLetter = takePfx 1 noun - in - if_then_Str (isNil noun) [] ( - case prep of { + {- Preposition -------------------------------------------------------- -} - -- TA', MA', SA - _ + ("a'"|"a") => - case noun of { - #Vowel + _ => initPrepLetter + "'" + noun ; - ("għ" | "h") + #Vowel + _ => initPrepLetter + "'" + noun ; - _ => prep ++ noun + mkPrep = overload { + -- Same in all cases, e.g. FUQ + mkPrep : Str -> Prep = \fuq -> lin Prep { + s = \\defn => fuq ; + takesDet = False + } ; + + -- Forms: + -- GĦAL ktieb / triq / ajruplan + -- GĦALL-ktieb / ajruplan + -- GĦAT-triq + mkPrep : Str -> Str -> Str -> Prep = \ghal,ghall,ghat -> lin Prep { + s = table { + Indefinite => ghal ; + Definite => makePreFull ghall (dropSfx 2 ghat) ghall } ; + takesDet = True + } ; - -- FI, BI - _ + "i" => - if_then_Str (pbool2bool (eqStr initPrepLetter initNounLetter)) - (prep ++ noun) - (case noun of { - -- initPrepLetter + _ => prep ++ noun ; - #Vowel + _ => initPrepLetter + "'" + noun ; - #Consonant + #Vowel + _ => initPrepLetter + "'" + noun ; - #Consonant + "r" + #Vowel + _ => initPrepLetter + "'" + noun ; - _ => prep ++ noun - }) ; - - -- Else leave untouched - _ => prep ++ noun - - }); - - {- Prepositions ------------------------------------------------------- -} - - mkPrep : Str -> Prep ; -- e.g. "in front of" - mkPrep p = lin Prep (ss p) ; + -- All forms: + -- BI ktieb/triq + -- B'ajruplan + -- BIL-ktieb + -- BIT-triq + -- BL-ajruplan + mkPrep : Str -> Str -> Str -> Str -> Str -> Prep = \bi,b',bil,bit,bl -> lin Prep { + s = table { + Indefinite => makePreVowel bi b' ; + Definite => makePreFull bil (dropSfx 2 bit) bl + } ; + takesDet = True + } ; + } ; noPrep : Prep ; -- no preposition noPrep = mkPrep [] ; - - {- Verb paradigms ----------------------------------------------------- -} + {- Verb --------------------------------------------------------------- -} -- Re-export ResMlt.mkRoot mkRoot : Root = overload { @@ -332,10 +322,6 @@ resource ParadigmsMlt = open <_,_,_,_> => Predef.error("Cannot classify root:"++r.C1+"-"+r.C2+"-"+r.C3+"-"+r.C4) } ; - -- Just get the non-suffixed forms of a verb, for quick testing - -- plainVerbTable : V -> (VForm => Str) = \v -> - -- \\tense => v.s ! tense ! VSuffixNone ! Pos ; - -- Smart paradigm for building a verb mkV : V = overload { @@ -385,7 +371,7 @@ resource ParadigmsMlt = open Loan => loanV mamma } ; - -- All forms! :S + -- 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, @@ -948,7 +934,12 @@ resource ParadigmsMlt = open i = info ; } ; - {- ~~~ Non-semitic verbs ~~~ -} + {- ~~~ Irregular verbs ~~~ -} + + -- Make an irregular verb, giving all forms (see last overload of mkV) + irregularV = mkV Irregular ; + + {- ~~~ Loan verbs ~~~ -} -- Make a loan verb, eg IPPARKJA -- Params: mamma @@ -966,8 +957,57 @@ resource ParadigmsMlt = open i = info ; } ; + {- Verb --------------------------------------------------------------- -} - {- Adjective paradigms ------------------------------------------------ -} + mkVS : V -> VS ; -- sentence-compl + mkVS v = lin VS v ; + + prepV2 : V -> Prep -> V2 ; + prepV2 v p = lin V2 ( v ** { prep = p } ) ; + + dirV2 : V -> V2 ; + dirV2 v = prepV2 v noPrep ; + + prepPrepV3 : V -> Prep -> Prep -> V3 ; + prepPrepV3 v p t = lin V3 (v ** { prep1 = p ; prep2 = t }) ; + + dirV3 : V -> Prep -> V3 ; + dirV3 v p = prepPrepV3 v noPrep p ; + + dirdirV3 : V -> V3 ; + dirdirV3 v = dirV3 v noPrep ; + + 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 ** { prep1 = p ; prep2 = t }) ; + + {- Conjunction -------------------------------------------------------- -} + + mkConj = overload { + mkConj : Str -> Conj = \y -> mk2Conj [] y ; + mkConj : Str -> Str -> Conj = \x,y -> mk2Conj x y ; + } ; + + mk2Conj : Str -> Str -> Conj = \x,y -> + lin Conj (sd2 x y) ; + + {- Adjective ---------------------------------------------------------- -} -- Overloaded function for building an adjective mkA : A = overload { @@ -1058,8 +1098,38 @@ resource ParadigmsMlt = open _ => (init fem) + "i" -- BRAVA } ; + prepA2 : A -> Prep -> A2 ; + prepA2 a p = lin A2 (a ** {c2 = p.s}) ; - {- Quantitifer paradigms ---------------------------------------------- -} + 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) ; + } ; + + 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) ; + mkAdV x = lin AdV (ss x) ; + mkAdA x = lin AdA (ss x) ; + mkAdN x = lin AdN (ss x) ; + + {- Quantifier, Ord ---------------------------------------------------- -} mkQuant : (dak, dik, dawk : Str) -> Bool -> Quant = \dak,dik,dawk,isdemo -> lin Quant { s = table { @@ -1070,6 +1140,10 @@ resource ParadigmsMlt = open clitic = [] ; isPron = False ; isDemo = isdemo ; + isDefn = False ; } ; + mkOrd : Str -> Ord = \x -> lin Ord { s = \\c => x }; + + } diff --git a/lib/src/maltese/ResMlt.gf b/lib/src/maltese/ResMlt.gf index 4c52720c4..c63bd36e3 100644 --- a/lib/src/maltese/ResMlt.gf +++ b/lib/src/maltese/ResMlt.gf @@ -22,6 +22,11 @@ resource ResMlt = ParamX ** open Prelude, Predef in { | GPl -- dawk ; + Definiteness = + Definite -- eg BIL- + | Indefinite -- eg BI + ; + oper -- Agreement system corrected based on comments by [AZ] Agr : Type = { g : Gender ; n : Number ; p : Person } ; @@ -32,38 +37,30 @@ resource ResMlt = ParamX ** open Prelude, Predef in { case of { => AgP1 num; => AgP2 num; - => AgP3Sg agr.g; - => AgP3Pl + => AgP3Sg agr.g; + => AgP3Pl } ; toAgr : VAgr -> Agr = \vagr -> case vagr of { - AgP1 num => mkAgr Masc num P1 ; --- sorry ladies - AgP2 num => mkAgr Masc num P2 ; + AgP1 num => mkAgr Masc num P1 ; --- sorry ladies + AgP2 num => mkAgr Masc num P2 ; AgP3Sg gen => mkAgr gen Pl P3 ; - AgP3Pl => mkAgr Masc Pl P3 + AgP3Pl => mkAgr Masc Pl P3 } ; param -- Agreement for verbs VAgr = - AgP1 Number -- jiena, aħna - | AgP2 Number -- inti, intom - | AgP3Sg Gender -- huwa, hija - | AgP3Pl -- huma + AgP1 Number -- jiena, aħna + | AgP2 Number -- inti, intom + | AgP3Sg Gender -- huwa, hija + | AgP3Pl -- huma ; param NPCase = Nom | CPrep ; -- [AZ] - -- Animacy = Animate | Inanimate ; - - -- Definiteness = - -- Definite -- eg IL-KARTA. In this context same as Determinate - -- | Indefinite -- eg KARTA - -- ; - - {- Numeral -------------------------------------------------------------- -} CardOrd = NCard | NOrd ; @@ -80,13 +77,13 @@ resource ResMlt = ParamX ** open Prelude, Predef in { -- Indicate how a corresponding object should be treated --- Overlap between Num Sg and Num1, but leaving as is for now NumForm = - Num Number -- Sg | Pl - | Num0 -- 0 (l-edba SIEGĦA) - | Num1 -- 1, 101... (SIEGĦA, mija u SIEGĦA) - | Num2 -- 2 (SAGĦTEJN) - | Num3_10 -- 3..10, 102, 103... (tlett SIEGĦAT, għaxar SIEGĦAT, mija u żewġ SIEGĦAT, mija u tlett SIEGĦAT) - | Num11_19 -- 11..19, 111... (ħdax-il SIEGĦA, mija u dsatax-il SIEGĦA) - | Num20_99 -- 20..99, 120... (għoxrin SIEGĦA, disa' u disgħajn SIEGĦA) + NumX Number -- Sg | Pl + | Num0 -- 0 (l-edba SIEGĦA) + | Num1 -- 1, 101... (SIEGĦA, mija u SIEGĦA) + | Num2 -- 2 (SAGĦTEJN) + | Num3_10 -- 3..10, 102, 103... (tlett SIEGĦAT, għaxar SIEGĦAT, mija u żewġ SIEGĦAT, mija u tlett SIEGĦAT) + | Num11_19 -- 11..19, 111... (ħdax-il SIEGĦA, mija u dsatax-il SIEGĦA) + | Num20_99 -- 20..99, 120... (għoxrin SIEGĦA, disa' u disgħajn SIEGĦA) ; NumCase = @@ -102,8 +99,9 @@ resource ResMlt = ParamX ** open Prelude, Predef in { s : Gender => Str ; n : NumForm ; clitic : Str ; - hasNum : Bool ; - isPron : Bool ; + hasNum : Bool ; -- has a numeral + isPron : Bool ; -- is a pronoun + isDefn : Bool ; -- is definite } ; -- Determiner = { -- s : NPCase => Gender => NumCase => Str ; @@ -120,6 +118,7 @@ resource ResMlt = ParamX ** open Prelude, Predef in { clitic : Str ; isPron : Bool ; isDemo : Bool ; -- Demonstrative (this/that/those/these) + isDefn : Bool ; -- is definite } ; -- Quantifier = { -- s : NPCase => Gender => NumForm => Str ; @@ -149,21 +148,15 @@ resource ResMlt = ParamX ** open Prelude, Predef in { s : NPCase => Str ; a : Agr ; isPron : Bool ; + isDefn : Bool ; } ; param - Noun_Sg_Type = - Singulative -- eg ĦUTA - | Collective -- eg ĦUT - ; - Noun_Pl_Type = - Determinate -- eg ĦUTIET - | Indeterminate -- eg ĦWIET - ; Noun_Number = - Singular Noun_Sg_Type -- eg ĦUTA / ĦUT - | Dual -- eg WIDNEJN - | Plural Noun_Pl_Type -- eg ĦUTIET / ĦWIET + Singulative -- ĦUTA + | Collective -- ĦUT + | Dual -- WIDNEJN + | Plural -- ĦUTIET ; {- Pronoun -------------------------------------------------------------- -} @@ -198,13 +191,13 @@ resource ResMlt = ParamX ** open Prelude, Predef in { VerbInfo : Type = { class : VClass ; - form : VDerivedForm ; - root : Root ; -- radicals - patt : Pattern ; -- vowels extracted from mamma - patt2: Pattern ; -- vowel changes; default to patt (experimental) + form : VDerivedForm ; + root : Root ; -- radicals + patt : Pattern ; -- vowels extracted from mamma + patt2 : Pattern ; -- vowel changes; default to patt (experimental) -- in particular, patt2 is used to indicate whether an IE sould be shortened -- to an I or an E (same for entire verb) - imp : Str ; -- Imperative Sg. Gives so much information jaħasra! + imp : Str ; -- Imperative Sg. Gives so much information jaħasra! } ; param @@ -212,7 +205,7 @@ resource ResMlt = ParamX ** open Prelude, Predef in { VForm = VPerf VAgr -- Perfect tense in all pronoun cases | VImpf VAgr -- Imperfect tense in all pronoun cases - | VImp Number -- Imperative is always P2, Sg & Pl + | VImp Number -- Imperative is always P2, Sg & Pl -- | VPresPart GenNum -- Present Particible for Gender/Number -- | VPastPart GenNum -- Past Particible for Gender/Number -- | VVerbalNoun -- Verbal Noun @@ -292,22 +285,22 @@ resource ResMlt = ParamX ** open Prelude, Predef in { copula_kien = { s : (VForm => Str) = table { - VPerf (AgP1 Sg) => "kont" ; - VPerf (AgP2 Sg) => "kont" ; + VPerf (AgP1 Sg) => "kont" ; + VPerf (AgP2 Sg) => "kont" ; VPerf (AgP3Sg Masc) => "kien" ; - VPerf (AgP3Sg Fem) => "kienet" ; - VPerf (AgP1 Pl) => "konna" ; - VPerf (AgP2 Pl) => "kontu" ; - VPerf (AgP3Pl) => "kienu" ; - VImpf (AgP1 Sg) => "nkun" ; - VImpf (AgP2 Sg) => "tkun" ; + VPerf (AgP3Sg Fem) => "kienet" ; + VPerf (AgP1 Pl) => "konna" ; + VPerf (AgP2 Pl) => "kontu" ; + VPerf (AgP3Pl) => "kienu" ; + VImpf (AgP1 Sg) => "nkun" ; + VImpf (AgP2 Sg) => "tkun" ; VImpf (AgP3Sg Masc) => "jkun" ; - VImpf (AgP3Sg Fem) => "tkun" ; - VImpf (AgP1 Pl) => "nkunu" ; - VImpf (AgP2 Pl) => "tkunu" ; - VImpf (AgP3Pl) => "jkunu" ; - VImp (Pl) => "kun" ; - VImp (Sg) => "kunu" + VImpf (AgP3Sg Fem) => "tkun" ; + VImpf (AgP1 Pl) => "nkunu" ; + VImpf (AgP2 Pl) => "tkunu" ; + VImpf (AgP3Pl) => "jkunu" ; + VImp (Pl) => "kun" ; + VImp (Sg) => "kunu" } ; i : VerbInfo = mkVerbInfo (Irregular) (FormI) (mkRoot "k-w-n") (mkPattern "ie") ; } ; @@ -367,18 +360,19 @@ resource ResMlt = ParamX ** open Prelude, Predef in { -- a2 = [] ; } ; - {- Adjective ------------------------------------------------------------ -} + {- Adjecive ------------------------------------------------------------ -} oper Adjective : Type = { s : AForm => Str ; + hasComp : Bool ; } ; param AForm = - APosit GenNum - | ACompar - | ASuperl + APosit GenNum -- Positive, e.g. SABIĦ + | ACompar -- Comparative, e.g. ISBAĦ + | ASuperl -- Superlative, e.g. L-ISBAĦ ; {- Other ---------------------------------------------------------------- -} @@ -387,19 +381,19 @@ resource ResMlt = ParamX ** open Prelude, Predef in { {- ~~~ Some character classes ~~~ -} - Letter : pattern Str = #( "a" | "b" | "ċ" | "d" | "e" | "f" | "ġ" | "g" | "għ" | "h" | "ħ" | "i" | "ie" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "ż" | "z" ); - Consonant : pattern Str = #( "b" | "ċ" | "d" | "f" | "ġ" | "g" | "għ" | "h" | "ħ" | "j" | "k" | "l" | "m" | "n" | "p" | "q" | "r" | "s" | "t" | "v" | "w" | "x" | "ż" | "z" ); - CoronalCons : pattern Str = #( "ċ" | "d" | "n" | "r" | "s" | "t" | "x" | "ż" | "z" ); -- "konsonanti xemxin" - LiquidCons : pattern Str = #( "l" | "m" | "n" | "r" | "għ" ); - SonorantCons : pattern Str = #( "l" | "m" | "n" | "r" ); -- See {SA pg13}. Currently unused, but see DoublingConsN below + Letter : pattern Str = #( "a" | "b" | "ċ" | "d" | "e" | "f" | "ġ" | "g" | "għ" | "h" | "ħ" | "i" | "ie" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "ż" | "z" ); + Consonant : pattern Str = #( "b" | "ċ" | "d" | "f" | "ġ" | "g" | "għ" | "h" | "ħ" | "j" | "k" | "l" | "m" | "n" | "p" | "q" | "r" | "s" | "t" | "v" | "w" | "x" | "ż" | "z" ); + CoronalCons : pattern Str = #( "ċ" | "d" | "n" | "r" | "s" | "t" | "x" | "ż" | "z" ); -- "konsonanti xemxin" + LiquidCons : pattern Str = #( "l" | "m" | "n" | "r" | "għ" ); + SonorantCons : pattern Str = #( "l" | "m" | "n" | "r" ); -- See {SA pg13}. Currently unused, but see DoublingConsN below DoublingConsT : pattern Str = #( "ċ" | "d" | "ġ" | "s" | "x" | "ż" | "z" ); -- require doubling when prefixed with 't', eg DDUM, ĠĠORR, SSIB, TTIR, ŻŻID {GM pg68,2b} {OM pg90} DoublingConsN : pattern Str = #( "l" | "m" | "r" ); -- require doubling when prefixed with 'n', eg LLAĦĦAQ, MMUR, RRID {OM pg90} - StrongCons : pattern Str = #( "b" | "ċ" | "d" | "f" | "ġ" | "g" | "għ" | "h" | "ħ" | "k" | "l" | "m" | "n" | "p" | "q" | "r" | "s" | "t" | "v" | "x" | "ż" | "z" ); - WeakCons : pattern Str = #( "j" | "w" ); - Vowel : pattern Str = #( "a" | "e" | "i" | "o" | "u" ); - VowelIE : pattern Str = #( "a" | "e" | "i" | "ie" | "o" | "u" ); - Digraph : pattern Str = #( "ie" ); - SemiVowel : pattern Str = #( "għ" | "j" ); + StrongCons : pattern Str = #( "b" | "ċ" | "d" | "f" | "ġ" | "g" | "għ" | "h" | "ħ" | "k" | "l" | "m" | "n" | "p" | "q" | "r" | "s" | "t" | "v" | "x" | "ż" | "z" ); + WeakCons : pattern Str = #( "j" | "w" ); + Vowel : pattern Str = #( "a" | "e" | "i" | "o" | "u" ); + VowelIE : pattern Str = #( "a" | "e" | "i" | "ie" | "o" | "u" ); + Digraph : pattern Str = #( "ie" ); + SemiVowel : pattern Str = #( "għ" | "j" ); Vwl = Vowel ; Cns = Consonant ; @@ -446,13 +440,13 @@ resource ResMlt = ParamX ** open Prelude, Predef in { --- potentially slow extractPattern : Str -> Pattern = \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@"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@#Vowel + _ => mkPattern v1 ; -- ĦOBB + _ => mkPattern } ; -- Create a VerbInfo record, optionally omitting various fields @@ -491,20 +485,19 @@ resource ResMlt = ParamX ** open Prelude, Predef in { numform2nounnum : NumForm -> Noun_Number = \n -> case n of { - Num Sg => Singular Singulative ; - Num Pl => Plural Indeterminate ; - Num0 => Singular Singulative ; - Num1 => Singular Singulative ; + NumX Sg => Singulative ; + NumX Pl => Plural ; + Num0 => Singulative ; + Num1 => Singulative ; Num2 => Dual ; - Num3_10 => Singular Collective ; - Num11_19 => Singular Singulative ; - Num20_99 => Plural Indeterminate + Num3_10 => Collective ; + Num11_19 => Singulative ; + Num20_99 => Plural } ; {- ~~~ Useful helper functions ~~~ -} -- Non-existant form - --- If changed, also see: MorphoMlt.verbPolarityTable noexist : Str = "NOEXIST" ; -- New names for the drop/take operations @@ -602,54 +595,52 @@ resource ResMlt = ParamX ** open Prelude, Predef in { _ => False } ; - - -- Add a definite preposition in front of your token - addDefinitePreposition : Str -> Str -> Str = \prep,n -> (getDefinitePreposition prep n) ++ n ; - addDefiniteArticle = addDefinitePreposition "il" ; - getDefiniteArticle = getDefinitePreposition "il" ; - - -- Correctly inflect definite preposition - -- A more generic version of getDefiniteArticle - -- Params: - -- preposition (eg TAL, MAL, BĦALL) - -- noun - -- NOTE trying to call this with a runtime string will cause a world of pain. Design around it. - getDefinitePreposition : Str -> Str -> Str = \prep,noun -> - let - -- Remove either 1 or 2 l's - prepStem : Str = case prep of { - _ + "ll" => Predef.tk 2 prep ; - _ + "l" => Predef.tk 1 prep ; - _ => prep -- this should never happen, I don't think - } - in - case noun of { - ("s"|#LiquidCons) + #Consonant + _ => prep + "-i" ; -- L-ISKOLA - ("għ" | #Vowel) + _ => case prep of { -- L-GĦATBA... - ("fil"|"bil") => (Predef.take 1 prep) + "l-" ; - "il" => "l" + "-" ; - _ => prep + "-" - }; - K@#CoronalCons + _ => prepStem + K + "-" ; -- IĊ-ĊISK - #Consonant + _ => prep + "-" ; -- IL-QADDIS - _ => [] -- ? - } ; - artIndef : Str = "" ; artDef : Str = + makePreFull + "il-" -- il-ktieb + "i" -- it-triq + "l-" -- l-ajruplan + ; + + -- Make a pre string which only varies for vowels + makePreVowel : Str -> Str -> Str = \cons,vowel -> + let + vowel' : Str = case vowel of { + _ + "'" => vowel ++ BIND ; + _ => vowel + } ; + in pre { - "il- &+" ; --- ugly hack! but won't let me use ++ - "l-" ++ BIND / strs { "a" ; "e" ; "i" ; "o" ; "u" ; "h" ; "għ" } ; - "iċ-" ++ BIND / strs { "ċ" } ; - "id-" ++ BIND / strs { "d" } ; - "in-" ++ BIND / strs { "n" } ; - "ir-" ++ BIND / strs { "r" } ; - "is-" ++ BIND / strs { "s" } ; - "it-" ++ BIND / strs { "t" } ; - "ix-" ++ BIND / strs { "x" } ; - "iż-" ++ BIND / strs { "ż" } ; - "iz-" ++ BIND / strs { "z" } + -- Consonant + cons ; + -- Vowel + vowel' / strs { "a" ; "e" ; "i" ; "o" ; "u" ; "h" ; "għ" } + } ; + + -- Make a pre string which varies coronal consonants and vowels + makePreFull : Str -> Str -> Str -> Str = \cons,corcons,vowel -> + let + mal = cons ++ BIND ; + m' = vowel ++ BIND ; + ma = corcons ; + in + pre { + -- Regular consonant + mal ; + -- Vowel + m' / strs { "a" ; "e" ; "i" ; "o" ; "u" ; "h" ; "għ" } ; + -- Coronal consonants + ma+"ċ-" ++ BIND / strs { "ċ" } ; + ma+"d-" ++ BIND / strs { "d" } ; + ma+"n-" ++ BIND / strs { "n" } ; + ma+"r-" ++ BIND / strs { "r" } ; + ma+"s-" ++ BIND / strs { "s" } ; + ma+"t-" ++ BIND / strs { "t" } ; + ma+"x-" ++ BIND / strs { "x" } ; + ma+"ż-" ++ BIND / strs { "ż" } ; + ma+"z-" ++ BIND / strs { "z" } } ; {- ~~~ Worst-case functions ~~~ -} @@ -664,11 +655,11 @@ resource ResMlt = ParamX ** open Prelude, Predef in { -- Gender mkNoun : (_,_,_,_,_ : Str) -> Gender -> Noun = \sing,coll,dual,det,ind,gen -> { s = table { - Singular Singulative => sing ; - Singular Collective => coll ; - Dual => dual ; - Plural Determinate => det ; - Plural Indeterminate => ind + Singulative => sing ; + Collective => coll ; + Dual => dual ; + Plural => if_then_Str (isNil det) ind det + -- Plural => variants {det ; ind} } ; g = gen ; takesPron = False ; @@ -687,12 +678,13 @@ resource ResMlt = ParamX ** open Prelude, Predef in { s = table { APosit gn => case gn of { GSg Masc => masc ; - GSg Fem => fem ; - GPl => plural + GSg Fem => fem ; + GPl => plural } ; ACompar => compar ; - ASuperl => addDefiniteArticle compar + ASuperl => artDef ++ compar } ; + hasComp = notB (isNil compar) ; } ; } diff --git a/lib/src/maltese/SentenceMlt.gf b/lib/src/maltese/SentenceMlt.gf index d53e1a35e..b59af9463 100644 --- a/lib/src/maltese/SentenceMlt.gf +++ b/lib/src/maltese/SentenceMlt.gf @@ -33,6 +33,11 @@ concrete SentenceMlt of Sentence = CatMlt ** open } ; } ; + -- Temp -> Polarity -> Cl -> S + UseCl t p cl = { + s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p + } ; + -- Cl -- Imp -- QS diff --git a/lib/src/maltese/StructuralMlt.gf b/lib/src/maltese/StructuralMlt.gf index 65c20d763..03059d1a1 100644 --- a/lib/src/maltese/StructuralMlt.gf +++ b/lib/src/maltese/StructuralMlt.gf @@ -47,23 +47,48 @@ concrete StructuralMlt of Structural = CatMlt ** -- which_IQuant = {s = \\_ => "which"} ; + {- Conjunction ---------------------------------------------------------- -} + + and_Conj = mkConj "u" ; + both7and_DConj = mkConj "kemm" "u"; + but_PConj = ss "imma" ; + either7or_DConj = mkConj "jew" "inkella" ; + or_Conj = mkConj "jew" ; + otherwise_PConj = ss "inkella" ; + therefore_PConj = ss "allura" ; + if_then_Conj = mkConj "jekk" ; + + {- Preposition ---------------------------------------------------------- -} + + above_Prep = mkPrep "fuq" ; + after_Prep = mkPrep "wara" ; + before_Prep = mkPrep "qabel" ; + behind_Prep = mkPrep "wara" ; + between_Prep = mkPrep "bejn" ; + by8agent_Prep = mkPrep "minn" "mill-" "mit-" ; + by8means_Prep = mkPrep "bi" "b'" "bil-" "bit-" "bl-" ; + during_Prep = mkPrep "waqt" ; + for_Prep = mkPrep "għal" "għall-" "għat-" ; + from_Prep = mkPrep "minn" "mill-" "mit-" ; + in8front_Prep = mkPrep "quddiem" ; + in_Prep = mkPrep "fi" "f'" "fil-" "fit-" "fl-" ; + on_Prep = mkPrep "fuq" ; + part_Prep = mkPrep "ta'" "t'" "tal-" "tat-" "tal-" ; + possess_Prep = mkPrep "ta'" "t'" "tal-" "tat-" "tal-" ; + through_Prep = mkPrep "ġo" "ġol-" "ġot-" ; + to_Prep = mkPrep "lil" "lill-" "lit-" ; + under_Prep = mkPrep "taħt" ; + without_Prep = mkPrep "mingħajr" ; + with_Prep = mkPrep "ma'" "m'" "mal-" "mat-" "mal-" ; + except_Prep = mkPrep "apparti" ; + {- Others --------------------------------------------------------------- -} - -- above_Prep = mkPrep "above" ; - -- after_Prep = mkPrep "after" ; -- almost_AdA = mkAdA "almost" ; -- almost_AdN = mkAdN "almost" ; -- although_Subj = ss "although" ; -- always_AdV = mkAdV "always" ; - -- and_Conj = mkConj "and" ; -- because_Subj = ss "because" ; - -- before_Prep = mkPrep "before" ; - -- behind_Prep = mkPrep "behind" ; - -- between_Prep = mkPrep "between" ; - -- both7and_DConj = mkConj "both" "and"; - -- but_PConj = ss "but" ; - -- by8agent_Prep = mkPrep "by" ; - -- by8means_Prep = mkPrep "by" ; -- can8know_VV, can_VV = { -- s = table { -- VVF VInf => ["be able to"] ; @@ -76,13 +101,9 @@ concrete StructuralMlt of Structural = CatMlt ** -- } ; -- typ = VVAux -- } ; - -- during_Prep = mkPrep "during" ; - -- either7or_DConj = mkConj "either" "or" singular ; -- everybody_NP = regNP "everybody" singular ; -- everything_NP = regNP "everything" singular ; -- everywhere_Adv = mkAdv "everywhere" ; - -- for_Prep = mkPrep "for" ; - -- from_Prep = mkPrep "from" ; -- here_Adv = mkAdv "here" ; -- here7to_Adv = mkAdv ["to here"] ; -- here7from_Adv = mkAdv ["from here"] ; @@ -90,8 +111,6 @@ concrete StructuralMlt of Structural = CatMlt ** -- how8much_IAdv = ss "how much" ; -- how8many_IDet = mkDeterminer plural ["how many"] ; -- if_Subj = ss "if" ; - -- in8front_Prep = mkPrep ["in front of"] ; - -- in_Prep = mkPrep "in" ; -- less_CAdv = C.mkCAdv "less" "than" ; -- more_CAdv = C.mkCAdv "more" "than" ; -- most_Predet = ss "most" ; @@ -108,12 +127,7 @@ concrete StructuralMlt of Structural = CatMlt ** -- typ = VVAux -- } ; -- no_Utt = ss "no" ; - -- on_Prep = mkPrep "on" ; - -- or_Conj = mkConj "or" singular ; - -- otherwise_PConj = ss "otherwise" ; - -- part_Prep = mkPrep "of" ; -- please_Voc = ss "please" ; - -- possess_Prep = mkPrep "of" ; -- quite_Adv = mkAdv "quite" ; -- so_AdA = mkAdA "so" ; -- somebody_NP = regNP "somebody" singular ; @@ -122,11 +136,7 @@ concrete StructuralMlt of Structural = CatMlt ** -- there_Adv = mkAdv "there" ; -- there7to_Adv = mkAdv "there" ; -- there7from_Adv = mkAdv ["from there"] ; - -- therefore_PConj = ss "therefore" ; - -- through_Prep = mkPrep "through" ; -- too_AdA = mkAdA "too" ; - -- to_Prep = mkPrep "to" ; - -- under_Prep = mkPrep "under" ; -- very_AdA = mkAdA "very" ; -- want_VV = mkVV (regV "want") ; -- whatPl_IP = mkIP "what" "what" "what's" plural ; @@ -137,22 +147,24 @@ concrete StructuralMlt of Structural = CatMlt ** -- whoPl_IP = mkIP "who" "whom" "whose" plural ; -- whoSg_IP = mkIP "who" "whom" "whose" singular ; -- why_IAdv = ss "why" ; - -- without_Prep = mkPrep "without" ; - -- with_Prep = mkPrep "with" ; -- yes_Utt = ss "yes" ; - -- if_then_Conj = mkConj "if" "then" singular ; -- nobody_NP = regNP "nobody" singular ; -- nothing_NP = regNP "nothing" singular ; -- at_least_AdN = mkAdN "at least" ; -- at_most_AdN = mkAdN "at most" ; - -- except_Prep = mkPrep "except" ; -- as_CAdv = C.mkCAdv "as" "as" ; - -- have_V2 = dirV2 (mk5V "have" "has" "had" "had" "having") ; + have_V2 = dirV2 ( + irregularV form1 (ResMlt.mkRoot) (ResMlt.mkPattern) + "kelli" "kellek" "kellu" "kellha" "kellna" "kellkom" "kellhom" + "għandi" "għandek" "għandu" "għandha" "għandna" "għandkom" "għandhom" + "kollok" "kollkom" + ) ; + -- that_Subj = ss "that" ; lin language_title_Utt = ss "Malti" ; diff --git a/lib/src/maltese/VerbMlt.gf b/lib/src/maltese/VerbMlt.gf index 7df609354..0807aab41 100644 --- a/lib/src/maltese/VerbMlt.gf +++ b/lib/src/maltese/VerbMlt.gf @@ -30,8 +30,10 @@ concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in { _ => insertObj (\\agr => np.s ! CPrep) vp } ; --- Comp --- VP --- VPSplash + -- VP -> Adv -> VP + AdvVP vp adv = insertObj (\\_ => adv.s) vp ; + + -- AdV -> VP -> VP + -- AdVVP adv vp = insertAdV adv.s vp ; }