From 1366c2a53ed4d08cd4a02fa2303298bc2d5b7acb Mon Sep 17 00:00:00 2001 From: john Date: Mon, 10 Jun 2013 21:37:10 +0000 Subject: [PATCH] Maltese RG: first proper release Of course some bugs remain and more testing is needed, but all functions are complete and Maltese now builds as part of the normal GF install. --- Setup.hs | 6 +- lib/doc/status.txt | 15 +- lib/src/api/SymbolicMlt.gf | 4 +- lib/src/demo/Makefile | 2 +- lib/src/maltese/AdjectiveMlt.gf | 34 +- lib/src/maltese/CatMlt.gf | 2 +- lib/src/maltese/ConjunctionMlt.gf | 2 +- lib/src/maltese/DictMlt.gf | 180 +++++------ lib/src/maltese/IdiomMlt.gf | 43 ++- lib/src/maltese/LexiconMlt.gf | 498 +++++++++++++++--------------- lib/src/maltese/MorphoMlt.gf | 26 +- lib/src/maltese/NounMlt.gf | 97 +++--- lib/src/maltese/NumeralMlt.gf | 54 ++-- lib/src/maltese/ParadigmsMlt.gf | 206 +++++++++--- lib/src/maltese/ResMlt.gf | 365 +++++++++++----------- lib/src/maltese/SentenceMlt.gf | 29 +- lib/src/maltese/StructuralMlt.gf | 2 +- lib/src/maltese/SymbolMlt.gf | 74 ++++- lib/src/maltese/VerbMlt.gf | 8 +- 19 files changed, 928 insertions(+), 719 deletions(-) diff --git a/Setup.hs b/Setup.hs index 77f47a473..12b5bcd98 100644 --- a/Setup.hs +++ b/Setup.hs @@ -251,16 +251,16 @@ langs = map fst langsCoding -- defaultLangs = langs `only` words "Eng Fre Ger Ita Spa Swe" -- languagues for which to compile Lang -langsLang = langs -- `except` ["Amh","Ara","Lat","Tur","Mlt"] +langsLang = langs -- `except` ["Amh","Ara","Lat","Tur"] --langsLang = langs `only` ["Fin"] --test -- languagues that have notpresent marked langsPresent = langsLang `except` ["Chi","Gre","Heb","Jpn","Mlt","Nep","Pes","Snd","Tha","Thb"] -- languages for which to compile Try -langsAPI = langsLang `except` langsIncomplete -- ["Ina","Mlt","Amh","Ara"] +langsAPI = langsLang `except` langsIncomplete -- ["Ina","Amh","Ara"] -langsIncomplete = ["Amh","Ara","Heb","Ina","Lat","Mlt","Tur"] +langsIncomplete = ["Amh","Ara","Heb","Ina","Lat","Tur"] -- languages for which to compile Symbolic langsSymbolic = langsAPI `except` ["Jpn"] diff --git a/lib/doc/status.txt b/lib/doc/status.txt index fca274693..3391fd955 100644 --- a/lib/doc/status.txt +++ b/lib/doc/status.txt @@ -4,14 +4,14 @@ Aarne Ranta -The following table gives the languages currently available in the +The following table gives the languages currently available in the GF Resource Grammar Library. -For another view, see the +For another view, see the [The Resource Grammar Library coverage map http://www.postcrashgames.com/gf_world/] . Corrections and additions are welcome! Notice that only those parts of implementations -that are currently available via http://grammaticalframework.org +that are currently available via http://grammaticalframework.org are marked in the table @@ -37,7 +37,7 @@ are marked in the table | Jpn | Japanese | + | - | ++ | + | + | + | - | - | - | *LZ | Lat | Latin | + | - | - | - | - | - | - | - | - | *AR | Lav | Latvian | + | - | ++ | + | + | + | - | - | - | *NG,*PP -| Mlt | Maltese | + | - | - | - | - | - | - | - | - | *JC +| Mlt | Maltese | + | + | ++ | + | + | + | + | - | - | *JC | Mon | Mongolian | - | - | - | - | - | - | - | - | - | *NE | Nep | Nepali | + | + | ++ | + | + | - | - | - | - | *DS | Nor | Norwegian(b) | + | + | ++ | + | + | + | + | + | - | *AR @@ -55,7 +55,7 @@ are marked in the table | Tur | Turkish | + | - | ++ | + | - | - | - | - | + | *SC,KA | Urd | Urdu | + | + | ++ | + | + | + | + | - | - | *SV,MH -ISO = 3-letter ISO language code, used in library file names +ISO = 3-letter ISO language code, used in library file names (mostly ISO 639-2 B (bibliographic)) Darcs = available in the darcs repository of --http://code.haskell.org/gf-- http://www.grammaticalframework.org/ @@ -76,7 +76,7 @@ Irreg = the ``Irreg`` module with irregular verbs exists Dict = the ``Dict`` module, large-scale morphological lexicon, exists -authors = main contributors, * means still active +authors = main contributors, * means still active (ready to fix bugs, answer to questions, etc) @@ -139,6 +139,3 @@ active authors of it. Feel free to start a new language that is not yet in the table - but let us know and contribute some code as soon as you can! - - - diff --git a/lib/src/api/SymbolicMlt.gf b/lib/src/api/SymbolicMlt.gf index 1a40e4763..7510938b3 100644 --- a/lib/src/api/SymbolicMlt.gf +++ b/lib/src/api/SymbolicMlt.gf @@ -1,5 +1,5 @@ ---# -path=.:present:mathematical:prelude +--# -path=.:alltenses -resource SymbolicMlt = Symbolic with +resource SymbolicMlt = Symbolic with (Symbol = SymbolMlt), (Grammar = GrammarMlt) ; diff --git a/lib/src/demo/Makefile b/lib/src/demo/Makefile index 82d6fdff3..ea27dbeb8 100644 --- a/lib/src/demo/Makefile +++ b/lib/src/demo/Makefile @@ -6,7 +6,7 @@ src: runghc MkMini.hs compdemo: - $(compile) Afr Bul Cat Chi Dan Dut Eng Fin Fre Ger Gre Hin Ita Jpn Lav Nep Nor Pes Pnb Pol Ron Rus Snd Spa Swe Tha Urd + $(compile) Afr Bul Cat Chi Dan Dut Eng Fin Fre Ger Gre Hin Ita Jpn Lav Mlt Nep Nor Pes Pnb Pol Ron Rus Snd Spa Swe Tha Urd linkdemo: $(compile) -link Afr Bul Cat Chi Dan Dut Eng Fin Fre Ger Gre Hin Ita Jpn Lav Mlt Nep Nor Pes Pnb Pol Ron Rus Snd Spa Swe Tha Urd diff --git a/lib/src/maltese/AdjectiveMlt.gf b/lib/src/maltese/AdjectiveMlt.gf index 9cf7099fd..a7cec5ef1 100644 --- a/lib/src/maltese/AdjectiveMlt.gf +++ b/lib/src/maltese/AdjectiveMlt.gf @@ -9,13 +9,15 @@ concrete AdjectiveMlt of Adjective = CatMlt ** open ResMlt, Prelude in { lin - -- A -> AP -- warm + -- A -> AP + -- warm PositA a = { s = \\gn => a.s ! (APosit gn) ; isPre = True } ; - -- A -> NP -> AP -- warmer than I + -- A -> NP -> AP + -- warmer than I ComparA a np = { s = \\gn => case a.hasComp of { True => a.s ! ACompar ; @@ -25,7 +27,8 @@ concrete AdjectiveMlt of Adjective = CatMlt ** open ResMlt, Prelude in { isPre = False } ; - -- A -> AP ; -- warmer + -- A -> AP + -- warmer UseComparA a = { s = \\gn => case a.hasComp of { True => a.s ! ACompar ; @@ -34,57 +37,64 @@ concrete AdjectiveMlt of Adjective = CatMlt ** open ResMlt, Prelude in { isPre = False } ; - -- Ord -> AP ; -- warmest + -- Ord -> AP + -- warmest --- Should be: L-IKTAR ĦOBŻA SĦUNA AdjOrd ord = { s = \\gn => ord.s ! NumNom ; isPre = True } ; - -- CAdv -> AP -> NP -> AP ; -- as cool as John + -- CAdv -> AP -> NP -> AP + -- as cool as John CAdvAP cadv ap np = { s = \\gn => cadv.s ++ ap.s ! gn ++ cadv.p ++ np.s ! NPNom ; isPre = False } ; - -- A2 -> NP -> AP ; -- married to her + -- A2 -> NP -> AP + -- married to her ComplA2 a2 np = { s = \\gn => a2.s ! APosit gn ++ a2.c2.s ! Definite ++ np.s ! NPAcc ; isPre = False } ; - -- A2 -> AP ; -- married to itself + -- A2 -> AP + -- married to itself ReflA2 a2 = { s = \\gn => a2.s ! APosit gn ++ a2.c2.s ! Definite ++ reflPron ! (toVAgr gn) ; isPre = False } ; - -- AP -> SC -> AP ; -- good that she is here + -- AP -> SC -> AP + -- good that she is here SentAP ap sc = { s = \\gn => ap.s ! gn ++ sc.s ; isPre = False } ; - -- AdA -> AP -> AP ; -- very warm + -- AdA -> AP -> AP + -- very warm AdAP ada ap = { s = \\gn => ap.s ! gn ++ ada.s ; isPre = ap.isPre } ; - -- A2 -> AP ; -- married + -- A2 -> AP + -- married UseA2 a2 = { s = \\gn => a2.s ! APosit gn ; isPre = True } ; - -- AP -> Adv -> AP ; -- warm by nature + -- AP -> Adv -> AP + -- warm by nature AdvAP ap adv = { s = \\gn => ap.s ! gn ++ adv.s ; isPre = False } ; oper - -- TODO: Don't know where these should go compMore : Str = "iktar" ; compLess : Str = "inqas" ; conjThan : Str = "minn" ; diff --git a/lib/src/maltese/CatMlt.gf b/lib/src/maltese/CatMlt.gf index 400f7e3cf..94d1957ee 100644 --- a/lib/src/maltese/CatMlt.gf +++ b/lib/src/maltese/CatMlt.gf @@ -96,7 +96,7 @@ concrete CatMlt of Cat = CommonX - [Adv] ** open ResMlt, Prelude in { Digits = { s : NumCase => Str ; -- No need for CardOrd, i.e. no 1st, 2nd etc in Maltese n : NumForm ; - tail : DTail + tail : DTail ; }; -- Structural diff --git a/lib/src/maltese/ConjunctionMlt.gf b/lib/src/maltese/ConjunctionMlt.gf index 4f72a280a..99add9be9 100644 --- a/lib/src/maltese/ConjunctionMlt.gf +++ b/lib/src/maltese/ConjunctionMlt.gf @@ -23,7 +23,7 @@ concrete ConjunctionMlt of Conjunction = -- Conj -> [NP] -> NP -- "either her or me" ConjNP conj ss = { s = \\npcase => conj.s1 ++ ss.np1.s ! npcase ++ conj.s2 ++ ss.np2.s ! npcase ; - a = ss.np2.a ; + a = { p = ss.np2.a.p ; g = ss.np2.a.g ; n = Pl } ; -- make plural isPron = andB ss.np1.isPron ss.np2.isPron ; isDefn = andB ss.np1.isDefn ss.np2.isDefn ; } ; diff --git a/lib/src/maltese/DictMlt.gf b/lib/src/maltese/DictMlt.gf index 050502cb4..25d6a9eb2 100644 --- a/lib/src/maltese/DictMlt.gf +++ b/lib/src/maltese/DictMlt.gf @@ -357,7 +357,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { ; 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" "kanta" (mkRoot "k-n-t-j") ; + kanta_KNTJ_1_7016_V = pastPartV "kantat" (mkV "kanta" "kanta" (mkRoot "k-n-t-j")) ; tkanta_KNTJ_2_7017_V = mkV_II "tkanta" (mkRoot "k-n-t-j") ; kopra_KPRJ_1_7018_V = mkV "kopra" (mkRoot "k-p-r-j") ; tkopra_KPRJ_2_7019_V = mkV_II "tkopra" (mkRoot "k-p-r-j") ; @@ -615,7 +615,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { ssensel_SNSL_2_7265_V = mkV_II "ssensel" (mkRoot "s-n-s-l") ; sensar_SNSR_1_7266_V = mkV "sensar" (mkRoot "s-n-s-r") ; ssapna_SPNJ_2_7267_V = mkV_II "ssapna" (mkRoot "s-p-n-j") ; - saqsa_SQSJ_1_7268_V = mkV "saqsa" (mkRoot "s-q-s-j") ; + saqsa_SQSJ_1_7268_V = pastPartV "mistoqsi" (mkV "saqsa" (mkRoot "s-q-s-j")) ; sarbat_SRBT_1_7270_V = mkV "sarbat" (mkRoot "s-r-b-t") ; ssarbat_SRBT_2_7271_V = mkV_II "ssarbat" (mkRoot "s-r-b-t") ; sardan_SRDN_1_7272_V = mkV "sardan" (mkRoot "s-r-d-n") ; @@ -747,7 +747,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { biggel_BGL_2_7399_V = mkV_II "biġġel" (mkRoot "b-ġ-l") ; tbiggel_BGL_5_7400_V = mkV_V "tbiġġel" (mkRoot "b-ġ-l") ; nbigel_BGL_7_7401_V = mkV_VII "biġel" "nbiġel" (mkRoot "b-ġ-l") ; - baghad_BGHD_1_7402_V = mkV "bagħad" (mkRoot "b-għ-d") ; + baghad_BGHD_1_7402_V = pastPartV "mibgħud" (mkV "bagħad" (mkRoot "b-għ-d")) ; baghghad_BGHD_2_7403_V = mkV_II "bagħgħad" (mkRoot "b-għ-d") ; baghad_BGHD_3_7404_V = mkV_III "bagħad" (mkRoot "b-għ-d") ; tbieghad_BGHD_6_7405_V = mkV_VI "tbiegħad" (mkRoot "b-għ-d") ; @@ -757,7 +757,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { baghghal_BGHL_2_7409_V = mkV_II "bagħgħal" (mkRoot "b-għ-l") ; tbaghghal_BGHL_5_7410_V = mkV_V "tbagħgħal" (mkRoot "b-għ-l") ; tbaghal_BGHL_6_7411_V = mkV_VI "tbagħal" (mkRoot "b-għ-l") ; - baghat_BGHT_1_7412_V = mkV "bagħat" (mkRoot "b-għ-t") ; + baghat_BGHT_1_7412_V = pastPartV "mibgħut" (mkV "bagħat" (mkRoot "b-għ-t")) ; nbaghat_BGHT_7_7413_V = mkV_VII "bagħat" "nbagħat" (mkRoot "b-għ-t") ; biehem_BHM_3_7414_V = mkV_III "biehem" (mkRoot "b-h-m") ; tbhejjem_BHM_5_7415_V = mkV_V "tbhejjem" (mkRoot "b-h-m") ; @@ -861,7 +861,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { berraq_BRQ_2_7501_V = mkV_II "berraq" (mkRoot "b-r-q") ; tberraq_BRQ_5_7502_V = mkV_V "tberraq" (mkRoot "b-r-q") ; barr_BRR_1_7503_V = mkV "barr" (mkRoot "b-r-r") ; - barax_BRX_1_7504_V = mkV "barax" "obrox" (mkRoot "b-r-x") ; + barax_BRX_1_7504_V = pastPartV "mibrux" (mkV "barax" "obrox" (mkRoot "b-r-x")) ; barrax_BRX_2_7505_V = mkV_II "barrax" (mkRoot "b-r-x") ; tbarrax_BRX_5_7506_V = mkV_V "tbarrax" (mkRoot "b-r-x") ; nbarax_BRX_7_7507_V = mkV_VII "barax" "nbarax" (mkRoot "b-r-x") ; @@ -898,7 +898,7 @@ 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") ; - beza'_BZGH_1_7541_V = mkV "baża'" (mkRoot "b-ż-għ") ; + beza'_BZGH_1_7541_V = pastPartV "mbeżża'" (mkV "beż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") ; @@ -906,7 +906,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tbizzel_BZL_5_7546_V = mkV_V "tbiżżel" (mkRoot "b-ż-l") ; bezzel_BZL_2_7547_V = mkV_II "beżżel" (mkRoot "b-ż-l") ; tbezzel_BZL_5_7548_V = mkV_V "tbeżżel" (mkRoot "b-ż-l") ; - bezaq_BZQ_1_7549_V = mkV "beżaq" "obżoq" (mkRoot "b-ż-q") ; + bezaq_BZQ_1_7549_V = pastPartV "mibżuq" (mkV "beżaq" "obżoq" (mkRoot "b-ż-q")) ; bezzaq_BZQ_2_7550_V = mkV_II "beżżaq" (mkRoot "b-ż-q") ; tbezzaq_BZQ_5_7551_V = mkV_V "tbeżżaq" (mkRoot "b-ż-q") ; nbezaq_BZQ_7_7552_V = mkV_VII "beżaq" "nbeżaq" (mkRoot "b-ż-q") ; @@ -1160,7 +1160,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { dewwaq_DWQ_2_7800_V = mkV_II "dewwaq" (mkRoot "d-w-q") ; ddewwaq_DWQ_5_7801_V = mkV_V "ddewwaq" (mkRoot "d-w-q") ; ndaq_DWQ_7_7802_V = mkV_VII "daq" "ndaq" (mkRoot "d-w-q") ; - dar_DWR_1_7803_V = mkV "dar" (mkRoot "d-w-r") ; + dar_DWR_1_7803_V = pastPartV "mdawwar" (mkV "dar" (mkRoot "d-w-r")) ; dawwar_DWR_2_7804_V = mkV_II "dawwar" (mkRoot "d-w-r") ; ddawwar_DWR_5_7805_V = mkV_V "ddawwar" (mkRoot "d-w-r") ; ndar_DWR_7_7806_V = mkV_VII "dar" "ndar" (mkRoot "d-w-r") ; @@ -1182,7 +1182,7 @@ 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") ; - fehem_FHM_1_10830_V = mkV "fehem" (mkRoot "f-h-m") ; + fehem_FHM_1_10830_V = pastPartV "mifhum" (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") ; @@ -1293,7 +1293,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tfessaq_FSQ_5_7929_V = mkV_V "tfessaq" (mkRoot "f-s-q") ; fisser_FSR_2_7930_V = mkV_II "fisser" (mkRoot "f-s-r") ; tfisser_FSR_5_7931_V = mkV_V "tfisser" (mkRoot "f-s-r") ; - fetah_FTH_1_7932_V = mkV "fetaħ" (mkRoot "f-t-ħ") ; + fetah_FTH_1_7932_V = pastPartV "miftuħ" (mkV "fetaħ" (mkRoot "f-t-ħ")) ; fettah_FTH_2_7933_V = mkV_II "fettaħ" (mkRoot "f-t-ħ") ; tfettah_FTH_5_7934_V = mkV_V "tfettaħ" (mkRoot "f-t-ħ") ; nfetah_FTH_7_7935_V = mkV_VII "fetaħ" "nfetaħ" (mkRoot "f-t-ħ") ; @@ -1313,7 +1313,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tfattar_FTR_5_7949_V = mkV_V "tfattar" (mkRoot "f-t-r") ; fettet_FTT_2_7950_V = mkV_II "fettet" (mkRoot "f-t-t") ; tfettet_FTT_5_7951_V = mkV_V "tfettet" (mkRoot "f-t-t") ; - fittex_FTX_2_7952_V = mkV_II "fittex" (mkRoot "f-t-x") ; + fittex_FTX_2_7952_V = pastPartV "mfittex" (mkV_II "fittex" (mkRoot "f-t-x")) ; tfittex_FTX_5_7953_V = mkV_V "tfittex" (mkRoot "f-t-x") ; ntfettex_FTX_7_7954_V = mkV_VII "fettex" "ntfettex" (mkRoot "f-t-x") ; fixel_FXL_1_7955_V = mkV "fixel" (mkRoot "f-x-l") ; @@ -1370,7 +1370,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { ngideb_GDB_7_8006_V = mkV_VII "gideb" "ngideb" (mkRoot "g-d-b") ; geddel_GDL_2_8007_V = mkV_II "geddel" (mkRoot "g-d-l") ; tgeddel_GDL_5_8008_V = mkV_V "tgeddel" (mkRoot "g-d-l") ; - gidem_GDM_1_8009_V = mkV "gidem" (mkRoot "g-d-m") ; + gidem_GDM_1_8009_V = pastPartV "migdum" (mkV "gidem" (mkRoot "g-d-m")) ; giddem_GDM_2_8010_V = mkV_II "giddem" (mkRoot "g-d-m") ; tgiddem_GDM_5_8011_V = mkV_V "tgiddem" (mkRoot "g-d-m") ; tgiedem_GDM_6_8012_V = mkV_VI "tgiedem" (mkRoot "g-d-m") ; @@ -1404,7 +1404,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { gara_GRJ_3_8040_V = mkV_III "gara" (mkRoot "g-r-j") ; tgara_GRJ_6_8041_V = mkV_VI "tgara" (mkRoot "g-r-j") ; gaza_GZJ_1_8042_V = mkV "gaża" (mkRoot "g-ż-j") ; - gibed_GBD_1_8043_V = mkV "ġibed" (mkRoot "ġ-b-d") ; + gibed_GBD_1_8043_V = pastPartV "miġbud" (mkV "ġibed" (mkRoot "ġ-b-d")) ; gebbed_GBD_2_8044_V = mkV_II "ġebbed" (mkRoot "ġ-b-d") ; ggebbed_GBD_5_8045_V = mkV_V "ġġebbed" (mkRoot "ġ-b-d") ; ngibed_GBD_7_8046_V = mkV_VII "ġibed" "nġibed" (mkRoot "ġ-b-d") ; @@ -1435,7 +1435,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { gileb_GLB_1_8071_V = mkV "ġileb" (mkRoot "ġ-l-b") ; gelled_GLD_2_8072_V = mkV_II "ġelled" (mkRoot "ġ-l-d") ; gieled_GLD_3_8073_V = mkV_III "ġieled" (mkRoot "ġ-l-d") ; - ggieled_GLD_6_8074_V = mkV_VI "ġġieled" (mkRoot "ġ-l-d") ; + ggieled_GLD_6_8074_V = pastPartV "miġġieled" "miġġielda" "miġġieldin" (mkV_VI "ġġieled" (mkRoot "ġ-l-d")) ; gelled_GLD_2_8075_V = mkV_II "ġelled" (mkRoot "ġ-l-d") ; ggelled_GLD_5_8076_V = mkV_V "ġġelled" (mkRoot "ġ-l-d") ; gimed_GMD_1_8077_V = mkV "ġimed" (mkRoot "ġ-m-d") ; @@ -1484,11 +1484,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 = irregularV form1 (mkRoot "ġ-j-'") (mkPattern "ie" []) + gie_GJ'_1_8123_V = presPartV "ġej" (pastPartV "miġjub" (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") ; @@ -1496,7 +1496,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { gela_GLW_1_8128_V = mkV "ġela" (mkRoot "ġ-l-w") ; ngela_GLW_7_8129_V = mkV_VII "ġela" "nġela" (mkRoot "ġ-l-w") ; gara_GRJ_1_8130_V = mkV "ġara" (mkRoot "ġ-r-j") ; - gera_GRJ_1_8131_V = mkV "ġera" (mkRoot "ġ-r-j") ; + gera_GRJ_1_8131_V = pastPartV "miġri" (mkV "ġera" (mkRoot "ġ-r-j")) ; gerra_GRJ_2_8132_V = mkV_II "ġerra" (mkRoot "ġ-r-j") ; ggerra_GRJ_5_8133_V = mkV_V "ġġerra" (mkRoot "ġ-r-j") ; ggiera_GRJ_6_8134_V = mkV_VI "ġġiera" (mkRoot "ġ-r-j") ; @@ -1538,7 +1538,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { therra_HRJ_5_8171_V = mkV_V "therra" (mkRoot "h-r-j") ; sthewwa_HWJ_10_8172_V = mkV_X "sthewwa" (mkRoot "h-w-j") ; hezza_HZJ_2_8173_V = mkV_II "heżża" (mkRoot "h-ż-j") ; - habb_HBB_1_8174_V = mkV "ħabb" (mkRoot "ħ-b-b") ; + habb_HBB_1_8174_V = pastPartV "maħbub" (mkV "ħabb" (mkRoot "ħ-b-b")) ; habbeb_HBB_2_8175_V = mkV_II "ħabbeb" (mkRoot "ħ-b-b") ; thabbeb_HBB_5_8176_V = mkV_V "tħabbeb" (mkRoot "ħ-b-b") ; nhabb_HBB_7_8177_V = mkV_VII "ħabb" "nħabb" (mkRoot "ħ-b-b") ; @@ -1596,10 +1596,10 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { hfief_HFF_9_8230_V = mkV_IX "ħfief" (mkRoot "ħ-f-f") ; hafen_HFN_1_8231_V = mkV "ħafen" (mkRoot "ħ-f-n") ; nhafen_HFN_7_8232_V = mkV_VII "ħafen" "nħafen" (mkRoot "ħ-f-n") ; - hafer_HFR_1_8233_V = mkV "ħafer" (mkRoot "ħ-f-r") ; + hafer_HFR_1_8233_V = pastPartV "maħfur" (mkV "ħafer" (mkRoot "ħ-f-r")) ; nhafer_HFR_7_8234_V = mkV_VII "ħafer" "nħafer" (mkRoot "ħ-f-r") ; hafer_HFR_1_8235_V = mkV "ħafer" (mkRoot "ħ-f-r") ; - haffer_HFR_2_8236_V = mkV_II "ħaffer" (mkRoot "ħ-f-r") ; + haffer_HFR_2_8236_V = pastPartV "mħaffer" (mkV_II "ħaffer" (mkRoot "ħ-f-r")) ; thaffer_HFR_5_8237_V = mkV_V "tħaffer" (mkRoot "ħ-f-r") ; hageb_HGB_1_8238_V = mkV "ħaġeb" (mkRoot "ħ-ġ-b") ; haggeb_HGB_2_8239_V = mkV_II "ħaġġeb" (mkRoot "ħ-ġ-b") ; @@ -1730,7 +1730,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tharrek_HRK_5_8364_V = mkV_V "tħarrek" (mkRoot "ħ-r-k") ; horom_HRM_1_8365_V = mkV "ħorom" (mkRoot "ħ-r-m") ; harrem_HRM_2_8366_V = mkV_II "ħarrem" (mkRoot "ħ-r-m") ; - haraq_HRQ_1_8367_V = mkV "ħaraq" (mkRoot "ħ-r-q") ; + haraq_HRQ_1_8367_V = pastPartV "maħruq" (mkV "ħaraq" (mkRoot "ħ-r-q")) ; harraq_HRQ_2_8368_V = mkV_II "ħarraq" (mkRoot "ħ-r-q") ; tharraq_HRQ_5_8369_V = mkV_V "tħarraq" (mkRoot "ħ-r-q") ; nharaq_HRQ_7_8370_V = mkV_VII "ħaraq" "nħaraq" (mkRoot "ħ-r-q") ; @@ -1750,7 +1750,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { harrax_HRX_2_8384_V = mkV_II "ħarrax" (mkRoot "ħ-r-x") ; tharrax_HRX_5_8385_V = mkV_V "tħarrax" (mkRoot "ħ-r-x") ; hrax_HRX_9_8386_V = mkV_IX "ħrax" (mkRoot "ħ-r-x") ; - haseb_HSB_1_8387_V = mkV "ħaseb" (mkRoot "ħ-s-b") ; + haseb_HSB_1_8387_V = pastPartV "maħsub" (mkV "ħaseb" (mkRoot "ħ-s-b")) ; hasseb_HSB_2_8388_V = mkV_II "ħasseb" (mkRoot "ħ-s-b") ; thasseb_HSB_5_8389_V = mkV_V "tħasseb" (mkRoot "ħ-s-b") ; thaseb_HSB_6_8390_V = mkV_VI "tħaseb" (mkRoot "ħ-s-b") ; @@ -1758,7 +1758,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { hasad_HSD_1_8392_V = mkV "ħasad" (mkRoot "ħ-s-d") ; hassad_HSD_2_8393_V = mkV_II "ħassad" (mkRoot "ħ-s-d") ; nhasad_HSD_7_8394_V = mkV_VII "ħasad" "nħasad" (mkRoot "ħ-s-d") ; - hasel_HSL_1_8395_V = mkV "ħasel" (mkRoot "ħ-s-l") ; + hasel_HSL_1_8395_V = pastPartV "maħsul" (mkV "ħasel" (mkRoot "ħ-s-l")) ; hassel_HSL_2_8396_V = mkV_II "ħassel" (mkRoot "ħ-s-l") ; nhasel_HSL_7_8397_V = mkV_VII "ħasel" "nħasel" (mkRoot "ħ-s-l") ; hasel_HSL_1_8398_V = mkV "ħasel" (mkRoot "ħ-s-l") ; @@ -1871,7 +1871,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { hajjar_HJR_2_8505_V = mkV_II "ħajjar" (mkRoot "ħ-j-r") ; thajjar_HJR_5_8506_V = mkV_V "tħajjar" (mkRoot "ħ-j-r") ; htar_HJR_8_8507_V = mkV_VIII "ħtar" (mkRoot "ħ-j-r") ; - hat_HJT_1_8508_V = mkV "ħat" (mkRoot "ħ-j-t") ; + hat_HJT_1_8508_V = pastPartV "meħjut" (mkV "ħat" (mkRoot "ħ-j-t")) ; nhat_HJT_7_8509_V = mkV_VII "ħât" "nħât" (mkRoot "ħ-j-t") ; hajjet_HJT_2_8510_V = mkV_II "ħajjet" (mkRoot "ħ-j-t") ; thajjet_HJT_5_8511_V = mkV_V "tħajjet" (mkRoot "ħ-j-t") ; @@ -1934,7 +1934,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tkebbex_KBX_5_8568_V = mkV_V "tkebbex" (mkRoot "k-b-x") ; kabbaz_KBZ_2_8569_V = mkV_II "kabbaz" (mkRoot "k-b-z") ; tkabbaz_KBZ_5_8570_V = mkV_V "tkabbaz" (mkRoot "k-b-z") ; - kaccac_KCC_2_8571_V = mkV_II "kaċċaċ" (mkRoot "k-ċ-ċ") ; + kaccac_KCC_2_8571_V = pastPartV "kkaċċjat" (mkV_II "kaċċaċ" (mkRoot "k-ċ-ċ")) ; kedd_KDD_1_8572_V = mkV "kedd" (mkRoot "k-d-d") ; kedded_KDD_2_8573_V = mkV_II "kedded" (mkRoot "k-d-d") ; tkedded_KDD_5_8574_V = mkV_V "tkedded" (mkRoot "k-d-d") ; @@ -1960,7 +1960,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { kelel_KLL_1_8594_V = mkV "kelel" (mkRoot "k-l-l") ; kellel_KLL_2_8595_V = mkV_II "kellel" (mkRoot "k-l-l") ; tkellel_KLL_5_8596_V = mkV_V "tkellel" (mkRoot "k-l-l") ; - kellem_KLM_2_8597_V = mkV_II "kellem" (mkRoot "k-l-m") ; + kellem_KLM_2_8597_V = pastPartV "mitkellem" (mkV_II "kellem" (mkRoot "k-l-m")) ; tkellem_KLM_5_8598_V = mkV_V "tkellem" (mkRoot "k-l-m") ; kemmed_KMD_2_8599_V = mkV_II "kemmed" (mkRoot "k-m-d") ; tkemmed_KMD_5_8600_V = mkV_V "tkemmed" (mkRoot "k-m-d") ; @@ -1999,12 +1999,12 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { kesah_KSH_1_8633_V = mkV "kesaħ" (mkRoot "k-s-ħ") ; kessah_KSH_2_8634_V = mkV_II "kessaħ" (mkRoot "k-s-ħ") ; tkessah_KSH_5_8635_V = mkV_V "tkessaħ" (mkRoot "k-s-ħ") ; - kiser_KSR_1_8636_V = mkV "kiser" (mkRoot "k-s-r") ; + kiser_KSR_1_8636_V = pastPartV "miksur" (mkV "kiser" (mkRoot "k-s-r")) ; kisser_KSR_2_8637_V = mkV_II "kisser" (mkRoot "k-s-r") ; tkisser_KSR_5_8638_V = mkV_V "tkisser" (mkRoot "k-s-r") ; nkiser_KSR_7_8639_V = mkV_VII "kiser" "nkiser" (mkRoot "k-s-r") ; kess_KSS_1_8640_V = mkV "kess" (mkRoot "k-s-s") ; - kiteb_KTB_1_8641_V = mkV "kiteb" (mkRoot "k-t-b") ; + kiteb_KTB_1_8641_V = pastPartV "miktub" (mkV "kiteb" (mkRoot "k-t-b")) ; kitteb_KTB_2_8642_V = mkV_II "kitteb" (mkRoot "k-t-b") ; tkieteb_KTB_6_8643_V = mkV_VI "tkieteb" (mkRoot "k-t-b") ; nkiteb_KTB_7_8644_V = mkV_VII "kiteb" "nkiteb" (mkRoot "k-t-b") ; @@ -2035,11 +2035,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 = irregularV form1 (mkRoot "k-j-l") (mkPattern "ie" []) + kiel_KJL_1_8672_V = pastPartV "mikul" (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") ; @@ -2143,7 +2143,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { laqqam_LQM_2_8769_V = mkV_II "laqqam" (mkRoot "l-q-m") ; tlaqqam_LQM_5_8770_V = mkV_V "tlaqqam" (mkRoot "l-q-m") ; leqq_LQQ_1_8771_V = mkV "leqq" (mkRoot "l-q-q") ; - laqat_LQT_1_8772_V = mkV "laqat" (mkRoot "l-q-t") ; + laqat_LQT_1_8772_V = pastPartV "milqut" (mkV "laqat" (mkRoot "l-q-t")) ; laqqat_LQT_2_8773_V = mkV_II "laqqat" (mkRoot "l-q-t") ; tlaqqat_LQT_5_8774_V = mkV_V "tlaqqat" (mkRoot "l-q-t") ; ntlaqat_LQT_7_8775_V = mkV_VII "laqat" "ntlaqat" (mkRoot "l-q-t") ; @@ -2187,7 +2187,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tmedd_MDD_5_8813_V = mkV_V "tmedd" (mkRoot "m-d-d") ; tmedd_MDD_6_8814_V = mkV_VI "tmedd" (mkRoot "m-d-d") ; ntmedd_MDD_7_8815_V = mkV_VII "medd" "ntmedd" (mkRoot "m-d-d") ; - mtedd_MDD_8_8816_V = mkV_VIII "mtedd" (mkRoot "m-d-d") ; + mtedd_MDD_8_8816_V = pastPartV "mimdud" (mkV_VIII "mtedd" (mkRoot "m-d-d")) ; maghad_MGHD_1_8817_V = mkV "magħad" (mkRoot "m-għ-d") ; maghghad_MGHD_2_8818_V = mkV_II "magħgħad" (mkRoot "m-għ-d") ; mieghed_MGHD_3_8819_V = mkV_III "miegħed" (mkRoot "m-għ-d") ; @@ -2252,7 +2252,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tmarrar_MRR_5_8878_V = mkV_V "tmarrar" (mkRoot "m-r-r") ; mrar_MRR_9_8879_V = mkV_IX "mrar" (mkRoot "m-r-r") ; mirex_MRX_1_8880_V = mkV "mirex" (mkRoot "m-r-x") ; - mesah_MSH_1_8881_V = mkV "mesaħ" (mkRoot "m-s-ħ") ; + mesah_MSH_1_8881_V = pastPartV "mimsuħ" (mkV "mesaħ" (mkRoot "m-s-ħ")) ; messah_MSH_2_8882_V = mkV_II "messaħ" (mkRoot "m-s-ħ") ; tmessah_MSH_5_8883_V = mkV_V "tmessaħ" (mkRoot "m-s-ħ") ; ntmesah_MSH_7_8884_V = mkV_VII "mesaħ" "ntmesaħ" (mkRoot "m-s-ħ") ; @@ -2289,19 +2289,19 @@ 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 = irregularV form1 (mkRoot "m-w-r") (mkPattern "a" []) + mar_MWR_1_8918_V = presPartV "sejjer" (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") ; + mewwes_MWS_2_8921_V = pastPartV "mmewwes" (mkV_II "mewwes" (mkRoot "m-w-s")) ; tmewwes_MWS_5_8922_V = mkV_V "tmewwes" (mkRoot "m-w-s") ; - miet_MWT_1_8923_V = mkV "miet" (mkRoot "m-w-t") ; + miet_MWT_1_8923_V = pastPartV "mejjet" (mkV "miet" (mkRoot "m-w-t")) ; mewwet_MWT_2_8924_V = mkV_II "mewwet" (mkRoot "m-w-t") ; tmewwet_MWT_5_8925_V = mkV_V "tmewwet" (mkRoot "m-w-t") ; - mexa_MXJ_1_8926_V = mkV "mexa" (mkRoot "m-x-j") ; + mexa_MXJ_1_8926_V = pastPartV "mmexxi" (mkV "mexa" (mkRoot "m-x-j")) ; mexxa_MXJ_2_8927_V = mkV_II "mexxa" (mkRoot "m-x-j") ; tmexxa_MXJ_5_8928_V = mkV_V "tmexxa" (mkRoot "m-x-j") ; ntmexx_MXJ_7_8929_V = mkV_VII "mexx" "ntmexx" (mkRoot "m-x-j") ; @@ -2341,11 +2341,11 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { niffed_NFD_2_8963_V = mkV_II "niffed" (mkRoot "n-f-d") ; tniffed_NFD_5_8964_V = mkV_V "tniffed" (mkRoot "n-f-d") ; ntnifed_NFD_7_8965_V = mkV_VII "nifed" "ntnifed" (mkRoot "n-f-d") ; - nefah_NFH_1_8966_V = mkV "nefaħ" (mkRoot "n-f-ħ") ; + nefah_NFH_1_8966_V = pastPartV "minfuħ" (mkV "nefaħ" (mkRoot "n-f-ħ")) ; neffah_NFH_2_8967_V = mkV_II "neffaħ" (mkRoot "n-f-ħ") ; tneffah_NFH_5_8968_V = mkV_V "tneffaħ" (mkRoot "n-f-ħ") ; ntnefah_NFH_7_8969_V = mkV_VII "nefaħ" "ntnefaħ" (mkRoot "n-f-ħ") ; - ntefah_NFH_8_8970_V = mkV_VIII "ntefaħ" (mkRoot "n-f-ħ") ; + ntefah_NFH_8_8970_V = pastPartV "minfuħ" (mkV_VIII "ntefaħ" (mkRoot "n-f-ħ")) ; nefaq_NFQ_1_8971_V = mkV "nefaq" (mkRoot "n-f-q") ; neffaq_NFQ_2_8972_V = mkV_II "neffaq" (mkRoot "n-f-q") ; tneffaq_NFQ_5_8973_V = mkV_V "tneffaq" (mkRoot "n-f-q") ; @@ -2501,7 +2501,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { naqa_NQJ_1_9123_V = mkV "naqa" (mkRoot "n-q-j") ; naqqa_NQJ_2_9124_V = mkV_II "naqqa" (mkRoot "n-q-j") ; tnaqqa_NQJ_5_9125_V = mkV_V "tnaqqa" (mkRoot "n-q-j") ; - nesa_NSJ_1_9126_V = mkV "nesa" (mkRoot "n-s-j") ; + nesa_NSJ_1_9126_V = pastPartV "minsi" (mkV "nesa" (mkRoot "n-s-j")) ; nessa_NSJ_2_9127_V = mkV_II "nessa" (mkRoot "n-s-j") ; tnessa_NSJ_5_9128_V = mkV_V "tnessa" (mkRoot "n-s-j") ; ntnesa_NSJ_7_9129_V = mkV_VII "nesa" "ntnesa" (mkRoot "n-s-j") ; @@ -2526,11 +2526,11 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { pannat_PNT_2_9149_V = mkV_II "pannat" (mkRoot "p-n-t") ; perrec_PRC_2_9150_V = mkV_II "perreċ" (mkRoot "p-r-ċ") ; tperrec_PRC_5_9151_V = mkV_V "tperreċ" (mkRoot "p-r-ċ") ; - pitter_PTR_2_9152_V = mkV_II "pitter" (mkRoot "p-t-r") ; + pitter_PTR_2_9152_V = pastPartV "mpitter" (mkV_II "pitter" (mkRoot "p-t-r")) ; tpitter_PTR_5_9153_V = mkV_V "tpitter" (mkRoot "p-t-r") ; paca_PCJ_3_9155_V = mkV_III "paċa" (mkRoot "p-ċ-j") ; tpaca_PCJ_6_9156_V = mkV_VI "tpaċa" (mkRoot "p-ċ-j") ; - pogga_PGJ_2_9157_V = mkV_II "poġġa" (mkRoot "p-ġ-j") ; + pogga_PGJ_2_9157_V = pastPartV "poġġut" (mkV_II "poġġa" (mkRoot "p-ġ-j")) ; tpogga_PGJ_5_9158_V = mkV_V "tpoġġa" (mkRoot "p-ġ-j") ; pejjep_PJP_2_9159_V = mkV_II "pejjep" (mkRoot "p-j-p") ; tpejjep_PJP_5_9160_V = mkV_V "tpejjep" (mkRoot "p-j-p") ; @@ -2555,7 +2555,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { qabbas_QBS_2_9179_V = mkV_II "qabbas" (mkRoot "q-b-s") ; qebbex_QBX_1_9180_V = mkV "qebbex" (mkRoot "q-b-x") ; tqebbex_QBX_5_9181_V = mkV_V "tqebbex" (mkRoot "q-b-x") ; - qabez_QBZ_1_9182_V = mkV "qabeż" (mkRoot "q-b-ż") ; + qabez_QBZ_1_9182_V = pastPartV "maqbuż" (mkV "qabeż" (mkRoot "q-b-ż")) ; qabbez_QBZ_2_9183_V = mkV_II "qabbeż" (mkRoot "q-b-ż") ; tqabbez_QBZ_5_9184_V = mkV_V "tqabbeż" (mkRoot "q-b-ż") ; tqabez_QBZ_6_9185_V = mkV_VI "tqabeż" (mkRoot "q-b-ż") ; @@ -2579,13 +2579,13 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { qadar_QDR_1_9203_V = mkV "qadar" (mkRoot "q-d-r") ; qaddes_QDS_2_9204_V = mkV_II "qaddes" (mkRoot "q-d-s") ; tqaddes_QDS_5_9205_V = mkV_V "tqaddes" (mkRoot "q-d-s") ; - qafel_QFL_1_9206_V = mkV "qafel" (mkRoot "q-f-l") ; + qafel_QFL_1_9206_V = pastPartV "maqful" (mkV "qafel" (mkRoot "q-f-l")) ; qaffel_QFL_2_9207_V = mkV_II "qaffel" (mkRoot "q-f-l") ; nqafel_QFL_7_9208_V = mkV_VII "qafel" "nqafel" (mkRoot "q-f-l") ; qaffas_QFS_2_9209_V = mkV_II "qaffas" (mkRoot "q-f-s") ; - qaghad_QGHD_1_9210_V = mkV "qagħad" "oqgħod" (mkRoot "q-għ-d") ; + qaghad_QGHD_1_9210_V = pastPartV "mqiegħed" (mkV "qagħad" "oqgħod" (mkRoot "q-għ-d")) ; qaghghad_QGHD_2_9211_V = mkV_II "qagħgħad" (mkRoot "q-għ-d") ; - qieghed_QGHD_3_9212_V = mkV_III "qiegħed" (mkRoot "q-għ-d") ; + qieghed_QGHD_3_9212_V = pastPartV "mqiegħed" (mkV_III "qiegħed" (mkRoot "q-għ-d")) ; tqieghed_QGHD_6_9213_V = mkV_VI "tqiegħed" (mkRoot "q-għ-d") ; qohob_QHB_1_9214_V = mkV "qoħob" (mkRoot "q-ħ-b") ; qahhab_QHB_2_9215_V = mkV_II "qaħħab" (mkRoot "q-ħ-b") ; @@ -2596,7 +2596,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { qalleb_QLB_2_9220_V = mkV_II "qalleb" (mkRoot "q-l-b") ; tqalleb_QLB_5_9221_V = mkV_V "tqalleb" (mkRoot "q-l-b") ; nqaleb_QLB_7_9222_V = mkV_VII "qaleb" "nqaleb" (mkRoot "q-l-b") ; - qala'_QLGH_1_9223_V = mkV "qala'" (mkRoot "q-l-għ") ; + qala'_QLGH_1_9223_V = pastPartV "maqlugħ" (mkV "qala'" (mkRoot "q-l-għ")) ; qalla'_QLGH_2_9224_V = mkV_II "qalla'" (mkRoot "q-l-għ") ; tqalla'_QLGH_5_9225_V = mkV_V "tqalla'" (mkRoot "q-l-għ") ; nqala'_QLGH_7_9226_V = mkV_VII "qala'" "nqala'" (mkRoot "q-l-għ") ; @@ -2665,7 +2665,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { qassab_QSB_2_9289_V = mkV_II "qassab" (mkRoot "q-s-b") ; tqassab_QSB_5_9290_V = mkV_V "tqassab" (mkRoot "q-s-b") ; qassab_QSB_2_9291_V = mkV_II "qassab" (mkRoot "q-s-b") ; - qasam_QSM_1_9292_V = mkV "qasam" (mkRoot "q-s-m") ; + qasam_QSM_1_9292_V = pastPartV "maqsum" (mkV "qasam" (mkRoot "q-s-m")) ; qassam_QSM_2_9293_V = mkV_II "qassam" (mkRoot "q-s-m") ; tqassam_QSM_5_9294_V = mkV_V "tqassam" (mkRoot "q-s-m") ; nqasam_QSM_7_9295_V = mkV_VII "qasam" "nqasam" (mkRoot "q-s-m") ; @@ -2678,14 +2678,14 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tqasses_QSS_5_9302_V = mkV_V "tqasses" (mkRoot "q-s-s") ; qassat_QST_2_9303_V = mkV_II "qassat" (mkRoot "q-s-t") ; tqassat_QST_5_9304_V = mkV_V "tqassat" (mkRoot "q-s-t") ; - qata'_QTGH_1_9305_V = mkV "qata'" (mkRoot "q-t-għ") ; + qata'_QTGH_1_9305_V = pastPartV "maqtugħ" (mkV "qata'" (mkRoot "q-t-għ")) ; qatta'_QTGH_2_9306_V = mkV_II "qatta'" (mkRoot "q-t-għ") ; qata'_QTGH_3_9307_V = mkV_III "qata'" (mkRoot "q-t-għ") ; tqatta'_QTGH_5_9308_V = mkV_V "tqatta'" (mkRoot "q-t-għ") ; tqata'_QTGH_6_9309_V = mkV_VI "tqata'" (mkRoot "q-t-għ") ; nqata'_QTGH_7_9310_V = mkV_VII "qata'" "nqata'" (mkRoot "q-t-għ") ; qietgha_QTGH_3_9311_V = mkV_III "qietgħa" (mkRoot "q-t-għ") ; - qatel_QTL_1_9312_V = mkV "qatel" "oqtol" (mkRoot "q-t-l") ; + qatel_QTL_1_9312_V = pastPartV "maqtul" (mkV "qatel" "oqtol" (mkRoot "q-t-l")) ; qattel_QTL_2_9313_V = mkV_II "qattel" (mkRoot "q-t-l") ; tqattel_QTL_5_9314_V = mkV_V "tqattel" (mkRoot "q-t-l") ; tqatel_QTL_6_9315_V = mkV_VI "tqatel" (mkRoot "q-t-l") ; @@ -2723,7 +2723,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tqalla_QLJ_5_9347_V = mkV_V "tqalla" (mkRoot "q-l-j") ; nqela_QLJ_7_9348_V = mkV_VII "qela" "nqela" (mkRoot "q-l-j") ; qaqa_QQJ_3_9349_V = mkV_III "qaqa" (mkRoot "q-q-j") ; - qara_QRJ_1_9350_V = mkV "qara" (mkRoot "q-r-j") ; + qara_QRJ_1_9350_V = pastPartV "moqri" (mkV "qara" (mkRoot "q-r-j")) ; qarra_QRJ_2_9351_V = mkV_II "qarra" (mkRoot "q-r-j") ; qara_QRJ_3_9352_V = mkV_III "qara" (mkRoot "q-r-j") ; tqarra_QRJ_5_9353_V = mkV_V "tqarra" (mkRoot "q-r-j") ; @@ -2748,7 +2748,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tqawwas_QWS_5_9368_V = mkV_V "tqawwas" (mkRoot "q-w-s") ; rabbab_RBB_2_9369_V = mkV_II "rabbab" (mkRoot "r-b-b") ; rabba'_RBGH_2_9370_V = mkV_II "rabba'" (mkRoot "r-b-għ") ; - rebah_RBH_1_9371_V = mkV "rebaħ" (mkRoot "r-b-ħ") ; + rebah_RBH_1_9371_V = pastPartV "mirbuħ" (mkV "rebaħ" (mkRoot "r-b-ħ")) ; rebbah_RBH_2_9372_V = mkV_II "rebbaħ" (mkRoot "r-b-ħ") ; trebbah_RBH_5_9373_V = mkV_V "trebbaħ" (mkRoot "r-b-ħ") ; ntrebah_RBH_7_9374_V = mkV_VII "rebaħ" "ntrebaħ" (mkRoot "r-b-ħ") ; @@ -2765,7 +2765,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { traddad_RDD_5_9385_V = mkV_V "traddad" (mkRoot "r-d-d") ; ntradd_RDD_7_9386_V = mkV_VII "radd" "ntradd" (mkRoot "r-d-d") ; rtadd_RDD_8_9387_V = mkV_VIII "rtadd" (mkRoot "r-d-d") ; - rada'_RDGH_1_9388_V = mkV "rada'" (mkRoot "r-d-għ") ; + rada'_RDGH_1_9388_V = pastPartV "mradda'" (mkV "rada'" (mkRoot "r-d-għ")) ; radda'_RDGH_2_9389_V = mkV_II "radda'" (mkRoot "r-d-għ") ; tradda'_RDGH_5_9390_V = mkV_V "tradda'" (mkRoot "r-d-għ") ; ntrada'_RDGH_7_9391_V = mkV_VII "rada'" "ntrada'" (mkRoot "r-d-għ") ; @@ -2846,7 +2846,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { trammel_RML_5_9466_V = mkV_V "trammel" (mkRoot "r-m-l") ; romol_RML_1_9467_V = mkV "romol" (mkRoot "r-m-l") ; rammal_RML_2_9468_V = mkV_II "rammal" (mkRoot "r-m-l") ; - raqad_RQD_1_9469_V = mkV "raqad" (mkRoot "r-q-d") ; + raqad_RQD_1_9469_V = presPartV "rieqed" (pastPartV "mraqqad" (mkV "raqad" (mkRoot "r-q-d"))) ; raqqad_RQD_2_9470_V = mkV_II "raqqad" (mkRoot "r-q-d") ; traqqad_RQD_5_9471_V = mkV_V "traqqad" (mkRoot "r-q-d") ; trieqed_RQD_6_9472_V = mkV_VI "trieqed" (mkRoot "r-q-d") ; @@ -2890,11 +2890,11 @@ 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 = irregularV form1 (mkRoot "r-'-j") (mkPattern "a" []) + ra_R'J_1_9513_V = pastPartV "muri" (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" @@ -3083,7 +3083,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { stilet_SLT_8_9695_V = mkV_VIII "stilet" (mkRoot "s-l-t") ; salat_SLT_1_9696_V = mkV "salat" (mkRoot "s-l-t") ; semed_SMD_2_9697_V = mkV_II "semed" (mkRoot "s-m-d") ; - sema'_SMGH_1_9698_V = mkV "sema'" (mkRoot "s-m-għ") ; + sema'_SMGH_1_9698_V = pastPartV "mismugħ" (mkV "sema'" (mkRoot "s-m-għ")) ; semma'_SMGH_2_9699_V = mkV_II "semma'" (mkRoot "s-m-għ") ; ssemma'_SMGH_5_9700_V = mkV_V "ssemma'" (mkRoot "s-m-għ") ; nstama'_SMGH_7_9701_V = mkV_VII "stama'" "nstama'" (mkRoot "s-m-għ") ; @@ -3164,7 +3164,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { ssaffa_SFJ_5_9776_V = mkV_V "ssaffa" (mkRoot "s-f-j") ; seha_SHJ_1_9777_V = mkV "seha" (mkRoot "s-h-j") ; saha_SHJ_1_9778_V = mkV "saħa" (mkRoot "s-ħ-j") ; - sab_SJB_1_9779_V = mkV "sab" (mkRoot "s-j-b") ; + sab_SJB_1_9779_V = pastPartV "misjub" (mkV "sab" (mkRoot "s-j-b")) ; nsab_SJB_7_9780_V = mkV_VII "sab" "nsab" (mkRoot "s-j-b") ; sejjeb_SJB_2_9781_V = mkV_II "sejjeb" (mkRoot "s-j-b") ; ssejjeb_SJB_5_9782_V = mkV_V "ssejjeb" (mkRoot "s-j-b") ; @@ -3182,7 +3182,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { nsieh_SJH_7_9794_V = mkV_VII "sieħ" "nsieħ" (mkRoot "s-j-ħ") ; sijja_SJJ_2_9795_V = mkV_II "sijja" (mkRoot "s-j-j") ; siel_SJL_1_9796_V = mkV "siel" (mkRoot "s-j-l") ; - sar_SJR_1_9797_V = mkV "sar" (mkRoot "s-j-r") ; + sar_SJR_1_9797_V = pastPartV "misjur" (mkV "sar" (mkRoot "s-j-r")) ; sajjar_SJR_2_9798_V = mkV_II "sajjar" (mkRoot "s-j-r") ; ssajjar_SJR_5_9799_V = mkV_V "ssajjar" (mkRoot "s-j-r") ; sar_SJR_1_9800_V = mkV "sar" (mkRoot "s-j-r") ; @@ -3277,9 +3277,9 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { takkan_TKN_2_9890_V = mkV_II "takkan" (mkRoot "t-k-n") ; talab_TLB_1_9891_V = mkV "talab" (mkRoot "t-l-b") ; tallab_TLB_2_9892_V = mkV_II "tallab" (mkRoot "t-l-b") ; - ttallab_TLB_5_9893_V = mkV_V "ttallab" (mkRoot "t-l-b") ; + ttallab_TLB_5_9893_V = pastPartV "mitlub" (mkV_V "ttallab" (mkRoot "t-l-b")) ; ntalab_TLB_7_9894_V = mkV_VII "talab" "ntalab" (mkRoot "t-l-b") ; - tilef_TLF_1_9895_V = mkV "tilef" (mkRoot "t-l-f") ; + tilef_TLF_1_9895_V = pastPartV "mitluf" (mkV "tilef" (mkRoot "t-l-f")) ; tellef_TLF_2_9896_V = mkV_II "tellef" (mkRoot "t-l-f") ; ttellef_TLF_5_9897_V = mkV_V "ttellef" (mkRoot "t-l-f") ; ntilef_TLF_7_9898_V = mkV_VII "tilef" "ntilef" (mkRoot "t-l-f") ; @@ -3287,7 +3287,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tella'_TLGH_2_9900_V = mkV_II "tella'" (mkRoot "t-l-għ") ; ttella'_TLGH_5_9901_V = mkV_V "ttella'" (mkRoot "t-l-għ") ; ntela'_TLGH_7_9902_V = mkV_VII "tela'" "ntela'" (mkRoot "t-l-għ") ; - telaq_TLQ_1_9903_V = mkV "telaq" (mkRoot "t-l-q") ; + telaq_TLQ_1_9903_V = pastPartV "mitluq" (mkV "telaq" (mkRoot "t-l-q")) ; tellaq_TLQ_2_9904_V = mkV_II "tellaq" (mkRoot "t-l-q") ; ttellaq_TLQ_5_9905_V = mkV_V "ttellaq" (mkRoot "t-l-q") ; ntelaq_TLQ_7_9906_V = mkV_VII "telaq" "ntelaq" (mkRoot "t-l-q") ; @@ -3356,7 +3356,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { ttarraz_TRZ_5_9957_V = mkV_V "ttarraż" (mkRoot "t-r-ż") ; tarras_TRZ_2_9958_V = mkV_II "tarras" (mkRoot "t-r-ż") ; ttiefes_TSF_6_9959_V = mkV_VI "ttiefes" (mkRoot "t-s-f") ; - tefa_TFJ_1_9960_V = mkV "tefa" (mkRoot "t-f-j") ; + tefa_TFJ_1_9960_V = pastPartV "mitfi" (mkV "tefa" (mkRoot "t-f-j")) ; ntefa_TFJ_7_9961_V = mkV_VII "tefa" "ntefa" (mkRoot "t-f-j") ; taffa_TFJ_2_9962_V = mkV_II "taffa" (mkRoot "t-f-j") ; ttaffa_TFJ_5_9963_V = mkV_V "ttaffa" (mkRoot "t-f-j") ; @@ -3368,7 +3368,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tejjeg_TJG_2_9969_V = mkV_II "tejjeġ" (mkRoot "t-j-ġ") ; tajjan_TJN_2_9970_V = mkV_II "tajjan" (mkRoot "t-j-n") ; ttajjan_TJN_5_9971_V = mkV_V "ttajjan" (mkRoot "t-j-n") ; - tar_TJR_1_9972_V = mkV "tar" (mkRoot "t-j-r") ; + tar_TJR_1_9972_V = pastPartV "mtajjar" (mkV "tar" (mkRoot "t-j-r")) ; tajjar_TJR_2_9973_V = mkV_II "tajjar" (mkRoot "t-j-r") ; ttajjar_TJR_5_9974_V = mkV_V "ttajjar" (mkRoot "t-j-r") ; ttajar_TJR_6_9975_V = mkV_VI "ttajar" (mkRoot "t-j-r") ; @@ -3423,13 +3423,13 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { twiccec_WCC_5_10024_V = mkV_V "twiċċeċ" (mkRoot "w-ċ-ċ") ; widdeb_WDB_2_10025_V = mkV_II "widdeb" (mkRoot "w-d-b") ; twiddeb_WDB_5_10026_V = mkV_V "twiddeb" (mkRoot "w-d-b") ; - waddab_WDB_2_10027_V = mkV_II "waddab" (mkRoot "w-d-b") ; + waddab_WDB_2_10027_V = pastPartV "mqaddab" (mkV_II "waddab" (mkRoot "w-d-b")) ; twaddab_WDB_5_10028_V = mkV_V "twaddab" (mkRoot "w-d-b") ; ntwaddab_WDB_7_10029_V = mkV_VII "waddab" "ntwaddab" (mkRoot "w-d-b") ; widden_WDN_2_10030_V = mkV_II "widden" (mkRoot "w-d-n") ; twidden_WDN_5_10031_V = mkV_V "twidden" (mkRoot "w-d-n") ; wiggeb_WGB_2_10032_V = mkV_II "wiġġeb" (mkRoot "w-ġ-b") ; - wiegeb_WGB_3_10033_V = mkV_III "wieġeb" (mkRoot "w-ġ-b") ; + wiegeb_WGB_3_10033_V = pastPartV "mwieġeb" "mwieġba" "mwieġbin" (mkV_III "wieġeb" (mkRoot "w-ġ-b")) ; twiegeb_WGB_6_10034_V = mkV_VI "twieġeb" (mkRoot "w-ġ-b") ; ntwiegeb_WGB_7_10035_V = mkV_VII "wieġeb" "ntwieġeb" (mkRoot "w-ġ-b") ; waga'_WGGH_1_10036_V = mkV "waġa'" (mkRoot "w-ġ-għ") ; @@ -3467,10 +3467,10 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { twemmen_WMN_5_10064_V = mkV_V "twemmen" (mkRoot "w-m-n") ; wennes_WNS_2_10065_V = mkV_II "wennes" (mkRoot "w-n-s") ; twennes_WNS_5_10066_V = mkV_V "twennes" (mkRoot "w-n-s") ; - waqaf_WQF_1_10067_V = mkV "waqaf" "ieqaf" (mkRoot "w-q-f") ; + waqaf_WQF_1_10067_V = presPartV "wieqaf" (pastPartV "mwaqqaf" (mkV "waqaf" "ieqaf" (mkRoot "w-q-f"))) ; waqqaf_WQF_2_10068_V = mkV_II "waqqaf" (mkRoot "w-q-f") ; twaqqaf_WQF_5_10069_V = mkV_V "twaqqaf" (mkRoot "w-q-f") ; - waqa'_WQGH_1_10070_V = mkV "waqa'" (mkRoot "w-q-għ") ; + waqa'_WQGH_1_10070_V = pastPartV "mwaqqa'" (mkV "waqa'" (mkRoot "w-q-għ")) ; waqqa'_WQGH_2_10071_V = mkV_II "waqqa'" (mkRoot "w-q-għ") ; twaqqa'_WQGH_5_10072_V = mkV_V "twaqqa'" (mkRoot "w-q-għ") ; waqqat_WQT_2_10073_V = mkV_II "waqqat" (mkRoot "w-q-t") ; @@ -3555,7 +3555,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { xxiegheb_XGHB_6_10152_V = mkV_VI "xxiegħeb" (mkRoot "x-għ-b") ; xoghof_XGHF_1_10153_V = mkV "xogħof" (mkRoot "x-għ-f") ; xieghef_XGHF_3_10154_V = mkV_III "xiegħef" (mkRoot "x-għ-f") ; - xeghel_XGHL_1_10155_V = mkV "xegħel" "ixgħel" (mkRoot "x-għ-l") ; + xeghel_XGHL_1_10155_V = pastPartV "mizgħul" (mkV "xegħel" "ixgħel" (mkRoot "x-għ-l")) ; xieghel_XGHL_3_10156_V = mkV_III "xiegħel" (mkRoot "x-għ-l") ; nxeghel_XGHL_7_10157_V = mkV_VII "xegħel" "nxegħel" (mkRoot "x-għ-l") ; xteghel_XGHL_8_10158_V = mkV_VIII "xtegħel" (mkRoot "x-għ-l") ; @@ -3607,7 +3607,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { xamma'_XMGH_2_10204_V = mkV_II "xamma'" (mkRoot "x-m-għ") ; ixxamma'_XMGH_5_10205_V = mkV_V "ixxamma'" (mkRoot "x-m-għ") ; ximek_XMK_1_10206_V = mkV "ximek" (mkRoot "x-m-k") ; - xamm_XMM_1_10207_V = mkV "xamm" (mkRoot "x-m-m") ; + xamm_XMM_1_10207_V = pastPartV "mixmum" (mkV "xamm" (mkRoot "x-m-m")) ; xammem_XMM_2_10208_V = mkV_II "xammem" (mkRoot "x-m-m") ; xxammam_XMM_5_10209_V = mkV_V "xxammam" (mkRoot "x-m-m") ; nxamm_XMM_7_10210_V = mkV_VII "xamm" "nxamm" (mkRoot "x-m-m") ; @@ -3631,7 +3631,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { xaqqaq_XQQ_2_10228_V = mkV_II "xaqqaq" (mkRoot "x-q-q") ; xxaqqar_XQR_5_10229_V = mkV_V "xxaqqar" (mkRoot "x-q-r") ; xqar_XQR_9_10230_V = mkV_IX "xqar" (mkRoot "x-q-r") ; - xorob_XRB_1_10231_V = mkV "xorob" (mkRoot "x-r-b") ; + xorob_XRB_1_10231_V = pastPartV "mixrub" (mkV "xorob" (mkRoot "x-r-b")) ; xarrab_XRB_2_10232_V = mkV_II "xarrab" (mkRoot "x-r-b") ; xxarrab_XRB_5_10233_V = mkV_V "xxarrab" (mkRoot "x-r-b") ; nxorob_XRB_7_10234_V = mkV_VII "xorob" "nxorob" (mkRoot "x-r-b") ; @@ -3696,7 +3696,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { xena_XNJ_1_10293_V = mkV "xena" (mkRoot "x-n-j") ; xara_XRJ_1_10294_V = mkV "xara" (mkRoot "x-r-j") ; nxara_XRJ_7_10295_V = mkV_VII "xara" "nxara" (mkRoot "x-r-j") ; - xtara_XRJ_8_10296_V = mkV_VIII "xtara" (mkRoot "x-r-j") ; + xtara_XRJ_8_10296_V = pastPartV "mixtri" (mkV_VIII "xtara" (mkRoot "x-r-j")) ; xita_XTW_1_10297_V = mkV "xita" (mkRoot "x-t-w") ; xitta_XTW_2_10298_V = mkV_II "xitta" (mkRoot "x-t-w") ; xaf_XWF_1_10299_V = mkV "xaf" (mkRoot "x-w-f") ; @@ -3713,7 +3713,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { xewwaq_XWQ_2_10310_V = mkV_II "xewwaq" (mkRoot "x-w-q") ; xxewwaq_XWQ_5_10311_V = mkV_V "xxewwaq" (mkRoot "x-w-q") ; nxtaq_XWQ_7_10312_V = mkV_VII "xtaq" "nxtaq" (mkRoot "x-w-q") ; - xtaq_XWQ_8_10313_V = mkV_VIII "xtaq" (mkRoot "x-w-q") ; + xtaq_XWQ_8_10313_V = pastPartV "mixtieq" (mkV_VIII "xtaq" (mkRoot "x-w-q")) ; xawwar_XWR_2_10314_V = mkV_II "xawwar" (mkRoot "x-w-r") ; xawwat_XWT_2_10315_V = mkV_II "xawwat" (mkRoot "x-w-t") ; xxawwat_XWT_5_10316_V = mkV_V "xxawwat" (mkRoot "x-w-t") ; @@ -3792,7 +3792,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { zemmel_ZML_2_10389_V = mkV_II "żemmel" (mkRoot "ż-m-l") ; zzemmel_ZML_5_10390_V = mkV_V "żżemmel" (mkRoot "ż-m-l") ; zziemel_ZML_6_10391_V = mkV_VI "żżiemel" (mkRoot "ż-m-l") ; - zamm_ZMM_1_10392_V = mkV "żamm" (mkRoot "ż-m-m") ; + zamm_ZMM_1_10392_V = pastPartV "miżjum" (mkV "żamm" (mkRoot "ż-m-m")) ; zammam_ZMM_2_10393_V = mkV_II "żammam" (mkRoot "ż-m-m") ; nzamm_ZMM_7_10394_V = mkV_VII "żamm" "nżamm" (mkRoot "ż-m-m") ; zammar_ZMR_2_10395_V = mkV_II "żammar" (mkRoot "ż-m-r") ; @@ -3824,7 +3824,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { zrieq_ZRQ_9_10421_V = mkV_IX "żrieq" (mkRoot "ż-r-q") ; zattat_ZTT_2_10422_V = mkV_II "żattat" (mkRoot "ż-t-t") ; zzattat_ZTT_5_10423_V = mkV_V "żżattat" (mkRoot "ż-t-t") ; - zied_ZJD_1_10424_V = mkV "żied" (mkRoot "ż-j-d") ; + zied_ZJD_1_10424_V = pastPartV "miżjud" (mkV "żied" (mkRoot "ż-j-d")) ; nzied_ZJD_7_10425_V = mkV_VII "żied" "nżied" (mkRoot "ż-j-d") ; zdied_ZJD_8_10426_V = mkV_VIII "żdied" (mkRoot "ż-j-d") ; zief_ZJF_1_10427_V = mkV "żief" (mkRoot "ż-j-f") ; @@ -3860,7 +3860,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tghaddab_GHDB_5_10457_V = mkV_V "tgħaddab" (mkRoot "għ-d-b") ; ghaddeb_GHDB_2_10458_V = mkV_II "għaddeb" (mkRoot "għ-d-b") ; tghaddeb_GHDB_5_10459_V = mkV_V "tgħaddeb" (mkRoot "għ-d-b") ; - ghadd_GHDD_1_10460_V = mkV "għadd" (mkRoot "għ-d-d") ; + ghadd_GHDD_1_10460_V = pastPartV "mgħadd" (mkV "għadd" (mkRoot "għ-d-d")) ; ghadded_GHDD_2_10461_V = mkV_II "għadded" (mkRoot "għ-d-d") ; tghadded_GHDD_5_10462_V = mkV_V "tgħadded" (mkRoot "għ-d-d") ; nghadd_GHDD_7_10463_V = mkV_VII "għadd" "ngħadd" (mkRoot "għ-d-d") ; @@ -3926,11 +3926,11 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { ghallel_GHLL_2_10523_V = mkV_II "għallel" (mkRoot "għ-l-l") ; tghallel_GHLL_5_10524_V = mkV_V "tgħallel" (mkRoot "għ-l-l") ; nghall_GHLL_7_10525_V = mkV_VII "għall" "ngħall" (mkRoot "għ-l-l") ; - ghallem_GHLM_2_10526_V = mkV_II "għallem" (mkRoot "għ-l-m") ; + ghallem_GHLM_2_10526_V = pastPartV "mgħallem" (mkV_II "għallem" (mkRoot "għ-l-m")) ; tghallem_GHLM_5_10527_V = mkV_V "tgħallem" (mkRoot "għ-l-m") ; ntghallem_GHLM_7_10528_V = mkV_VII "għallem" "ntgħallem" (mkRoot "għ-l-m") ; ghelem_GHLM_1_10529_V = mkV "għelem" (mkRoot "għ-l-m") ; - ghalaq_GHLQ_1_10530_V = mkV "għalaq" "agħlaq" (mkRoot "għ-l-q") ; + ghalaq_GHLQ_1_10530_V = pastPartV "mgħaluq" (mkV "għalaq" "agħlaq" (mkRoot "għ-l-q")) ; ghallaq_GHLQ_2_10531_V = mkV_II "għallaq" (mkRoot "għ-l-q") ; nghalaq_GHLQ_7_10532_V = mkV_VII "għalaq" "ngħalaq" (mkRoot "għ-l-q") ; ntghalaq_GHLQ_7_10533_V = mkV_VII "għalaq" "ntgħalaq" (mkRoot "għ-l-q") ; @@ -3944,7 +3944,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tghammad_GHMD_5_10541_V = mkV_V "tgħammad" (mkRoot "għ-m-d") ; ghammed_GHMD_2_10542_V = mkV_II "għammed" (mkRoot "għ-m-d") ; tghammed_GHMD_5_10543_V = mkV_V "tgħammed" (mkRoot "għ-m-d") ; - ghamel_GHML_1_10544_V = mkV "għamel" (mkRoot "għ-m-l") ; + ghamel_GHML_1_10544_V = pastPartV "magħmul" (mkV "għamel" (mkRoot "għ-m-l")) ; ghammel_GHML_2_10545_V = mkV_II "għammel" (mkRoot "għ-m-l") ; nghamel_GHML_7_10546_V = mkV_VII "għamel" "ngħamel" (mkRoot "għ-m-l") ; ghammem_GHMM_2_10547_V = mkV_II "għammem" (mkRoot "għ-m-m") ; @@ -4025,7 +4025,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { tghassed_GHSD_5_10622_V = mkV_V "tgħassed" (mkRoot "għ-s-d") ; ghassel_GHSL_2_10623_V = mkV_II "għassel" (mkRoot "għ-s-l") ; tghassel_GHSL_5_10624_V = mkV_V "tgħassel" (mkRoot "għ-s-l") ; - ghasar_GHSR_1_10625_V = mkV "għasar" (mkRoot "għ-s-r") ; + ghasar_GHSR_1_10625_V = pastPartV "mgħasur" (mkV "għasar" (mkRoot "għ-s-r")) ; ghassar_GHSR_2_10626_V = mkV_II "għassar" (mkRoot "għ-s-r") ; nghasar_GHSR_7_10627_V = mkV_VII "għasar" "ngħasar" (mkRoot "għ-s-r") ; ghass_GHSS_1_10628_V = mkV "għass" (mkRoot "għ-s-s") ; @@ -4079,7 +4079,7 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { ghezzez_GHZZ_2_10676_V = mkV_II "għeżżeż" (mkRoot "għ-ż-ż") ; ghabba_GHBJ_2_10677_V = mkV_II "għabba" (mkRoot "għ-b-j") ; tghabba_GHBJ_5_10678_V = mkV_V "tgħabba" (mkRoot "għ-b-j") ; - ghadda_GHDJ_2_10679_V = mkV_II "għadda" (mkRoot "għ-d-j") ; + ghadda_GHDJ_2_10679_V = pastPartV "mgħoddi" (mkV_II "għadda" (mkRoot "għ-d-j")) ; tghadda_GHDJ_5_10680_V = mkV_V "tgħadda" (mkRoot "għ-d-j") ; ghagha_GHGHJ_1_10681_V = mkV "għagħa" (mkRoot "għ-għ-j") ; gheb_GHJB_1_10682_V = mkV "għeb" (mkRoot "għ-j-b") ; @@ -4167,11 +4167,11 @@ 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 = irregularV form1 (mkRoot "għ-t-j") (mkPattern "a" []) + ta_GHTJ_1_10767_V = pastPartV "mogħti" (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 = irregularV form8 (mkRoot "'-d-j") (mkPattern "i" "e") "iddejt" "iddejt" "idda" "iddiet" "iddejna" "iddejtu" "iddew" @@ -4223,11 +4223,11 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { "namba" "tamba" "jamba" "tamba" "nambaw" "tambaw" "jambaw" "amba" "ambaw" ; - stenna_'NJ_10_10781_V = irregularV form10 (mkRoot "'-n-j") (mkPattern "e" "a") + stenna_'NJ_10_10781_V = pastPartV "mistenni" (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" @@ -4297,9 +4297,9 @@ concrete DictMlt of DictMltAbs = CatMlt ** open ParadigmsMlt in { -- Loan verbs lin - mbotta_V = mkV "mbotta" ; - vvjagga_V = mkV "vvjaġġa" ; - ffriza_V = mkV "ffriża" ; - kkuntempla_V = mkV "kkuntempla" ; + mbotta_V = pastPartV "mbuttat" (mkV "mbotta") ; + vvjagga_V = pastPartV "vvjaġġat" (mkV "vvjaġġa") ; + ffriza_V = pastPartV "ffriżat" (mkV "ffriża") ; + kkuntempla_V = pastPartV "kkuntemplat" (mkV "kkuntempla") ; } diff --git a/lib/src/maltese/IdiomMlt.gf b/lib/src/maltese/IdiomMlt.gf index 4c2a5b9c4..951f743fb 100644 --- a/lib/src/maltese/IdiomMlt.gf +++ b/lib/src/maltese/IdiomMlt.gf @@ -10,13 +10,16 @@ concrete IdiomMlt of Idiom = CatMlt ** open Prelude, ResMlt in { coding=utf8; lin - -- VP -> Cl ; -- it is hot + -- VP -> Cl + -- it is hot ImpersCl vp = mkClause "" (agrP3 Sg Masc) vp ; - -- VP -> Cl ; -- one sleeps + -- VP -> Cl + -- one sleeps GenericCl vp = mkClause "wieħed" (agrP3 Sg Masc) vp ; - -- NP -> RS -> Cl ; -- it is I who did it + -- NP -> RS -> Cl + -- it is I who did it CleftNP np rs = { s = \\t,a,p,o => case p of { Pos => np.s ! NPNom ++ kont ++ "li" ++ rs.s ! np.a ; -- jiena kont li qrajt il-ktieb @@ -32,42 +35,56 @@ concrete IdiomMlt of Idiom = CatMlt ** open Prelude, ResMlt in { } } ; - -- Adv -> S -> Cl ; -- it is here she slept + -- Adv -> S -> Cl + -- it is here she slept CleftAdv adv s = { s = \\t,a,p,o => adv.s ++ s.s ; } ; - -- NP -> Cl ; -- there is a house + -- NP -> Cl + -- there is a house ExistNP np = { s = \\t,a,p,o => auxHemm.s ! t ! p ++ np.s ! NPAcc ; } ; - -- IP -> QCl ; -- which houses are there + -- IP -> QCl + -- which houses are there ExistIP ip = { s = \\t,a,p,o => ip.s ++ auxHemm.s ! t ! p ; } ; - -- NP -> Adv -> Cl ; -- there is a house in Paris + -- NP -> Adv -> Cl + -- there is a house in Paris ExistNPAdv np adv = { s = \\t,a,p,o => auxHemm.s ! t ! p ++ np.s ! NPAcc ++ adv.s ; } ; - -- IP -> Adv -> QCl ; -- which houses are there in Paris + -- IP -> Adv -> QCl + -- which houses are there in Paris ExistIPAdv ip adv = { s = \\t,a,p,o => ip.s ++ auxHemm.s ! t ! p ++ adv.s ; } ; - -- VP -> VP ; -- be sleeping - ProgrVP vp = CopulaVP ** { - s2 = \\agr => joinVP vp (VPIndicat Pres agr) Simul Pos + -- VP -> VP + -- be sleeping + ProgrVP vp = { + v = CopulaVP.v ; + s2 = \\agr => case vp.v.hasPresPart of { + True => (vp.v.s ! VPresPart (toGenNum agr)).s1 ; + False => (vp.v.s ! VImpf (toVAgr agr)).s1 + } ; + dir = NullAgr ; + ind = NullAgr ; } ; - -- VP -> Utt ; -- let's go + -- VP -> Utt + -- let's go ImpPl1 vp = { s = "ejja" ++ infVP vp Simul Pos (mkAgr Pl P1 Masc) } ; - -- NP -> VP -> Utt ; -- let John walk + -- NP -> VP -> Utt + -- let John walk ImpP3 np vp = { s = halli ++ np.s ! NPAcc ++ infVP vp Simul Pos np.a } where { diff --git a/lib/src/maltese/LexiconMlt.gf b/lib/src/maltese/LexiconMlt.gf index 87a0dcce1..ebdc4446d 100644 --- a/lib/src/maltese/LexiconMlt.gf +++ b/lib/src/maltese/LexiconMlt.gf @@ -13,235 +13,218 @@ concrete LexiconMlt of Lexicon = CatMlt ** optimize=values ; coding=utf8 ; + -- Nouns lin - airplane_N = mkN "ajruplan" "ajruplani" ; - animal_N = mkN "annimal" "annimali" ; - apartment_N = mkN "appartament" "appartamenti" ; - apple_N = mkNColl "tuffieħa" "tuffieħ" "tuffieħat" ; - art_N = mkNNoPlural "arti" feminine ; - ashes_N = mkN "rmied" "rmiet" ; - baby_N = mkN "tarbija" "trabi" ; - back_N = possN (mkN "dahar" "dhur") ; - bank_N = mkN "bank" "bankijiet" ; - bark_N = mkN "qoxra" "qoxriet" ; - beer_N = mkN "birra" "birer" ; - belly_N = possN (mkN "żaqq" "żquq") ; - bike_N = mkN "rota" "roti" ; - bird_N = mkN "għasfur" "għasafar" ; -- genderedN - blood_N = possN (mkNColl "demm" "dmija") ; - boat_N = mkN "dgħajsa" "dgħajjes" ; - bone_N = mkNColl "għadma" "għadam" "għadmiet" ; - book_N = mkN "ktieb" "kotba" ; - boot_N = mkNColl "żarbuna" "żarbun" "żraben" ; - boss_N = mkN "mgħallem" "mgħallmin" ; - boy_N = mkN "tifel" "tfal" ; - bread_N = mkNColl "ħobża" "ħobż" "ħobżiet" ; - breast_N = possN (mkN "sider" "sdur") ; - brother_N2 = mkN2 (possN (mkN "ħu" "aħwa")) ; - butter_N = mkNColl "butir" "butirijiet" ; - camera_N = mkN "kamera" "kameras" ; - cap_N = mkN "kappell" "kpiepel" ; - car_N = mkN "karozza" "karozzi" ; - carpet_N = mkN "tapit" "twapet" ; - cat_N = mkN "qattus" "qtates" ; -- genderedN - ceiling_N = mkN "saqaf" "soqfa" ; - chair_N = mkN "siġġu" "siġġijiet" ; - cheese_N = mkNColl "ġobna" "ġobon" "ġobniet" ; - child_N = mkN "tifel / tifla" "tfal" ; -- genderedN - church_N = mkN "knisja" "knejjes" ; - city_N = mkN "belt" "bliet" feminine ; - cloud_N = mkNColl "sħaba" "sħab" "sħabiet" ; - coat_N = mkN "kowt" "kowtijiet" ; - computer_N = mkN "kompjuter" "kompjuters" ; - country_N = possN (mkN "pajjiż" "pajjiżi") ; - cousin_N = mkN "kuġin" "kuġini" ; -- genderedN - cow_N = mkNColl "baqra" "baqar" "baqriet" ; - day_N = mkN "ġurnata" "ġranet" ; - distance_N3 = mkN3 (mkN "distanza") minnP saP ; - doctor_N = mkN "tabib" "tobba" ; -- genderedN - dog_N = mkN "kelb" "klieb" ; - door_N = mkN "bieb" "bibien" ; - dust_N = mkNColl "traba" "trab" "trabiet" ; - ear_N = possN (mkNDual "widna" "widnejn" "widniet") ; - earth_N = mkN "art" "artijiet" feminine ; - egg_N = mkNColl "bajda" "bajd" "bajdiet" ; - enemy_N = mkN "għadu" "għedewwa" ; - eye_N = possN (mkNDual "għajn" "għajnejn" "għajnejn" "għejun" feminine) ; - factory_N = mkN "fabbrika" "fabbriki" ; - fat_N = mkNColl "xaħma" "xaħam" "xaħmiet" "xaħmijiet" ; - father_N2 = mkN2 (possN (mkN "missier" "missirijiet")) ; - feather_N = mkNColl "rixa" "rix" "rixiet" ; - fingernail_N = possN (mkNDual "difer" "difrejn" "dwiefer") ; - fire_N = mkN "nar" "nirien" ; - fish_N = mkNColl "ħuta" "ħut" "ħutiet" ; - floor_N = mkN "art" "artijiet" feminine ; - flower_N = mkN "fjura" "fjuri" ; - fog_N = mkNColl "ċpar" ; - foot_N = possN (mkNDual "sieq" "saqajn" "saqajn" feminine) ; - forest_N = mkN "foresta" "foresti" ; - fridge_N = mkN "friġġ" "friġġijiet" ; - friend_N = possN (mkN "ħabib" "ħbieb") ; -- genderedN - fruit_N = mkNColl "frotta" "frott" "frottiet" "frottijiet" ; - garden_N = mkN "ġnien" "ġonna" ; - girl_N = mkN "tifla" "tfal" ; - glove_N = mkN "ingwanta" "ingwanti" ; - gold_N = mkNColl "deheb" "dehbijiet" ; - grammar_N = mkN "grammatika" "grammatiki" ; - grass_N = mkNColl "ħaxixa" "ħaxix" "ħxejjex" ; - guts_N = possN (mkN "musrana" "musraniet" "msaren") ; - hair_N = possN (mkNColl "xagħara" "xagħar" "xagħariet" "xgħur") ; - hand_N = possN (mkNDual "id" "idejn" "idejn" feminine) ; - harbour_N = mkN "port" "portijiet" ; - hat_N = mkN "kappell" "kpiepel" ; - head_N = possN (mkN "ras" "rjus" feminine) ; - heart_N = possN (mkN "qalb" "qlub" feminine) ; - hill_N = mkN "għolja" "għoljiet" ; - horn_N = mkN "ħorn" "ħornijiet" ; - horse_N = mkN "żiemel" "żwiemel" ; - house_N = mkN "dar" "djar" feminine ; - husband_N = mkN "raġel" "rġiel" ; - ice_N = mkN "silġ" "silġiet" ; - industry_N = mkN "industrija" "industriji" ; - iron_N = mkNColl "ħadida" "ħadid" "ħadidiet" "ħdejjed" ; - king_N = mkN "re" "rejjiet" ; - knee_N = possN (mkNDual "rkoppa" "rkopptejn" "rkoppiet") ; - lake_N = mkN "għadira" "għadajjar" ; - lamp_N = mkN "lampa" "lampi" ; - language_N = mkN "lingwa" "lingwi" ; - leaf_N = mkNDual "werqa" "werqtejn" "werqiet" ; - leather_N = mkN "ġilda" "ġildiet" ; - leg_N = (mkNDual "riġel" "riġlejn" "riġlejn") ; - liver_N = mkN "fwied" "ifdwa" ; - louse_N = mkN "qamla" "qamliet" ; - love_N = mkN "mħabba" "mħabbiet" ; - man_N = mkN "raġel" "rġiel" ; - meat_N = mkNColl "laħma" "laħam" "laħmiet" "laħmijiet" ; - milk_N = mkNColl "ħalib" "ħalibijiet" ; - moon_N = mkN "qamar" "oqmra" ; - mother_N2 = mkN2 (possN (mkN "omm" "ommijiet" feminine)) ; - mountain_N = mkN "muntanja" "muntanji" ; - mouth_N = possN (mkN "ħalq" "ħluq") ; - music_N = mkN "mużika" "mużiki" ; - name_N = possN (mkN "isem" "ismijiet") ; - neck_N = possN (mkN "għonq" "għenuq") ; - newspaper_N = mkN "gazzetta" "gazzetti" ; - night_N = mkN "lejl" "ljieli" ; - nose_N = possN (mkN "mnieħer" "mniħrijiet") ; - number_N = mkN "numru" "numrui" ; - oil_N = mkN "żejt" "żjut" ; - paper_N = mkN "karta" "karti" ; - peace_N = mkN "paċi" "paċijiet" feminine ; - pen_N = mkN "pinna" "pinen" ; - person_N = mkNColl "persuna" "persuni" ; - planet_N = mkN "pjaneta" "pjaneti" ; - plastic_N = mkNNoPlural "plastik" ; - policeman_N = mkNNoPlural "pulizija" ; - priest_N = mkN "qassis" "qassisin" ; - queen_N = mkN "reġina" "rġejjen" ; - question_N = mkN "mistoqsija" "mistoqsijiet" ; - radio_N = mkN "radju" "radjijiet" ; - rain_N = mkNNoPlural "xita" ; - reason_N = mkN "raġun" "raġunijiet" ; - religion_N = mkN "reliġjon" "reliġjonijiet" ; - restaurant_N = mkN "restorant" "restoranti" ; - river_N = mkN "xmara" "xmajjar" ; - road_N = mkN "triq" "triqat" "toroq" feminine ; - rock_N = mkNColl "blata" "blat" "blatiet" ; - roof_N = mkN "saqaf" "soqfa" ; - root_N = mkN "qħerq" "qħeruq" ; - rope_N = mkN "ħabel" "ħbula" ; - rubber_N = mkN "gomma" "gomom" ; - rule_N = mkN "regola" "regoli" ; - salt_N = mkN "melħ" "melħiet" ; - sand_N = mkNColl "ramla" "ramel" "ramliet" ; - school_N = mkN "skola" "skejjel" ; - science_N = mkN "xjenza" "xjenzi" ; - sea_N = mkNDual "baħar" "baħrejn" "ibħra" ; - seed_N = mkN "żerriegħa" "żerrigħat" ; - sheep_N = mkNColl "nagħġa" "ngħaġ" "nagħġiet" ; - ship_N = mkN "vapur" "vapuri" ; - shirt_N = mkN "qmis" "qomos" feminine ; - shoe_N = mkN "żarbun" "żraben" ; - shop_N = mkN "ħanut" "ħwienet" ; - silver_N = mkN "fidda" "fided" ; - sister_N = (mkN "oħt" "aħwa" feminine) ; - skin_N = mkN "ġilda" "ġildiet" ; - sky_N = mkN "sema" "smewwiet" masculine ; - smoke_N = mkN "duħħan" "dħaħen" ; - snake_N = mkN "serp" "sriep" ; - snow_N = mkNColl "borra" ; - sock_N = mkN "kalzetta" "kalzetti" ; - song_N = mkN "kanzunetta" "kanzunetti" ; - star_N = mkN "stilla" "stilel" ; - steel_N = mkNNoPlural "azzar" ; - stick_N = mkN "lasta" "lasti" ; - stone_N = mkNColl "ġebla" "ġebel" "ġebliet" "ġbiel" ; - stove_N = mkN "kuker" "kukers" ; - student_N = mkN "student" "studenti" ; - sun_N = mkN "xemx" "xmux" feminine ; - table_N = mkN "mejda" "mwejjed" ; - tail_N = (mkN "denb" "dnieb") ; - teacher_N = mkN "għalliem" "għalliema" ; -- genderedN - television_N = mkN "televixin" "televixins" ; - tongue_N = possN (mkN "lsien" "ilsna") ; - tooth_N = possN (mkN "sinna" "sinniet" "snien") ; - train_N = mkN "ferrovija" "ferroviji" ; - tree_N = mkNColl "siġra" "siġar" "siġriet" ; - university_N = mkN "università" "universitàjiet" ; - village_N = mkN "raħal" "rħula" ; - war_N = mkN "gwerra" "gwerrer" ; - water_N = mkN "ilma" "ilmijiet" masculine ; - wife_N = mkN "mara" "nisa" ; - wind_N = mkN "riħ" "rjieħ" "rjiħat" ; - window_N = mkN "tieqa" "twieqi" ; - wine_N = mkNColl "nbid" "nbejjed" ; - wing_N = mkN "ġewnaħ" "ġwienaħ" ; - woman_N = mkN "mara" "nisa" ; - wood_N = mkN "injam" "injamiet" ; - worm_N = mkNColl "dudu" "dud" "dudiet" ; - year_N = mkNDual "sena" "sentejn" "snin" ; + airplane_N = mkN "ajruplan" "ajruplani" ; + animal_N = mkN "annimal" "annimali" ; + apartment_N = mkN "appartament" "appartamenti" ; + apple_N = mkNColl "tuffieħa" "tuffieħ" "tuffieħat" ; + art_N = mkNNoPlural "arti" feminine ; + ashes_N = mkN "rmied" "rmiet" ; + baby_N = mkN "tarbija" "trabi" ; + back_N = possN (mkN "dahar" "dhur") ; + bank_N = mkN "bank" "bankijiet" ; + bark_N = mkN "qoxra" "qoxriet" ; + beer_N = mkN "birra" "birer" ; + belly_N = possN (mkN "żaqq" "żquq") ; + bike_N = mkN "rota" "roti" ; + bird_N = mkN "għasfur" "għasafar" ; -- genderedN + blood_N = possN (mkNColl "demm" "dmija") ; + boat_N = mkN "dgħajsa" "dgħajjes" ; + bone_N = mkNColl "għadma" "għadam" "għadmiet" ; + book_N = mkN "ktieb" "kotba" ; + boot_N = mkNColl "żarbuna" "żarbun" "żraben" ; + boss_N = mkN "mgħallem" "mgħallmin" ; + boy_N = mkN "tifel" "tfal" ; + bread_N = mkNColl "ħobża" "ħobż" "ħobżiet" ; + breast_N = possN (mkN "sider" "sdur") ; + brother_N2 = mkN2 (possN (mkN "ħu" "aħwa")) ; + butter_N = mkNColl "butir" "butirijiet" ; + camera_N = mkN "kamera" "kameras" ; + cap_N = mkN "kappell" "kpiepel" ; + car_N = mkN "karozza" "karozzi" ; + carpet_N = mkN "tapit" "twapet" ; + cat_N = mkN "qattus" "qtates" ; -- genderedN + ceiling_N = mkN "saqaf" "soqfa" ; + chair_N = mkN "siġġu" "siġġijiet" ; + cheese_N = mkNColl "ġobna" "ġobon" "ġobniet" ; + child_N = mkN "tifel / tifla" "tfal" ; -- genderedN + church_N = mkN "knisja" "knejjes" ; + city_N = mkN "belt" "bliet" feminine ; + cloud_N = mkNColl "sħaba" "sħab" "sħabiet" ; + coat_N = mkN "kowt" "kowtijiet" ; + computer_N = mkN "kompjuter" "kompjuters" ; + country_N = possN (mkN "pajjiż" "pajjiżi") ; + cousin_N = mkN "kuġin" "kuġini" ; -- genderedN + cow_N = mkNColl "baqra" "baqar" "baqriet" ; + day_N = mkN "ġurnata" "ġranet" ; + distance_N3 = mkN3 (mkN "distanza") minnP saP ; + doctor_N = mkN "tabib" "tobba" ; -- genderedN + dog_N = mkN "kelb" "klieb" ; + door_N = mkN "bieb" "bibien" ; + dust_N = mkNColl "traba" "trab" "trabiet" ; + ear_N = possN (mkNDual "widna" "widnejn" "widniet") ; + earth_N = mkN "art" "artijiet" feminine ; + egg_N = mkNColl "bajda" "bajd" "bajdiet" ; + enemy_N = mkN "għadu" "għedewwa" ; + eye_N = possN (mkNDual "għajn" "għajnejn" "għajnejn" "għejun" feminine) ; + factory_N = mkN "fabbrika" "fabbriki" ; + fat_N = mkNColl "xaħma" "xaħam" "xaħmiet" "xaħmijiet" ; + father_N2 = mkN2 (possN (mkN "missier" "missirijiet")) ; + feather_N = mkNColl "rixa" "rix" "rixiet" ; + fingernail_N = possN (mkNDual "difer" "difrejn" "dwiefer") ; + fire_N = mkN "nar" "nirien" ; + fish_N = mkNColl "ħuta" "ħut" "ħutiet" ; + floor_N = mkN "art" "artijiet" feminine ; + flower_N = mkN "fjura" "fjuri" ; + fog_N = mkNColl "ċpar" ; + foot_N = possN (mkNDual "sieq" "saqajn" "saqajn" feminine) ; + forest_N = mkN "foresta" "foresti" ; + fridge_N = mkN "friġġ" "friġġijiet" ; + friend_N = possN (mkN "ħabib" "ħbieb") ; -- genderedN + fruit_N = mkNColl "frotta" "frott" "frottiet" "frottijiet" ; + garden_N = mkN "ġnien" "ġonna" ; + girl_N = mkN "tifla" "tfal" ; + glove_N = mkN "ingwanta" "ingwanti" ; + gold_N = mkNColl "deheb" "dehbijiet" ; + grammar_N = mkN "grammatika" "grammatiki" ; + grass_N = mkNColl "ħaxixa" "ħaxix" "ħxejjex" ; + guts_N = possN (mkN "musrana" "musraniet" "msaren") ; + hair_N = possN (mkNColl "xagħara" "xagħar" "xagħariet" "xgħur") ; + hand_N = possN (mkNDual "id" "idejn" "idejn" feminine) ; + harbour_N = mkN "port" "portijiet" ; + hat_N = mkN "kappell" "kpiepel" ; + head_N = possN (mkN "ras" "rjus" feminine) ; + heart_N = possN (mkN "qalb" "qlub" feminine) ; + hill_N = mkN "għolja" "għoljiet" ; + horn_N = mkN "ħorn" "ħornijiet" ; + horse_N = mkN "żiemel" "żwiemel" ; + house_N = mkN "dar" "djar" feminine ; + husband_N = mkN "raġel" "rġiel" ; + ice_N = mkN "silġ" "silġiet" ; + industry_N = mkN "industrija" "industriji" ; + iron_N = mkNColl "ħadida" "ħadid" "ħadidiet" "ħdejjed" ; + king_N = mkN "re" "rejjiet" ; + knee_N = possN (mkNDual "rkoppa" "rkopptejn" "rkoppiet") ; + lake_N = mkN "għadira" "għadajjar" ; + lamp_N = mkN "lampa" "lampi" ; + language_N = mkN "lingwa" "lingwi" ; + leaf_N = mkNDual "werqa" "werqtejn" "werqiet" ; + leather_N = mkN "ġilda" "ġildiet" ; + leg_N = (mkNDual "riġel" "riġlejn" "riġlejn") ; + liver_N = mkN "fwied" "ifdwa" ; + louse_N = mkN "qamla" "qamliet" ; + love_N = mkN "mħabba" "mħabbiet" ; + man_N = mkN "raġel" "rġiel" ; + meat_N = mkNColl "laħma" "laħam" "laħmiet" "laħmijiet" ; + milk_N = mkNColl "ħalib" "ħalibijiet" ; + moon_N = mkN "qamar" "oqmra" ; + mother_N2 = mkN2 (possN (mkN "omm" "ommijiet" feminine)) ; + mountain_N = mkN "muntanja" "muntanji" ; + mouth_N = possN (mkN "ħalq" "ħluq") ; + music_N = mkN "mużika" "mużiki" ; + name_N = possN (mkN "isem" "ismijiet") ; + neck_N = possN (mkN "għonq" "għenuq") ; + newspaper_N = mkN "gazzetta" "gazzetti" ; + night_N = mkN "lejl" "ljieli" ; + nose_N = possN (mkN "mnieħer" "mniħrijiet") ; + number_N = mkN "numru" "numrui" ; + oil_N = mkN "żejt" "żjut" ; + paper_N = mkN "karta" "karti" ; + peace_N = mkN "paċi" "paċijiet" feminine ; + pen_N = mkN "pinna" "pinen" ; + person_N = mkNColl "persuna" "persuni" ; + planet_N = mkN "pjaneta" "pjaneti" ; + plastic_N = mkNNoPlural "plastik" ; + policeman_N = mkNNoPlural "pulizija" ; + priest_N = mkN "qassis" "qassisin" ; + queen_N = mkN "reġina" "rġejjen" ; + question_N = mkN "mistoqsija" "mistoqsijiet" ; + radio_N = mkN "radju" "radjijiet" ; + rain_N = mkNNoPlural "xita" ; + reason_N = mkN "raġun" "raġunijiet" ; + religion_N = mkN "reliġjon" "reliġjonijiet" ; + restaurant_N = mkN "restorant" "restoranti" ; + river_N = mkN "xmara" "xmajjar" ; + road_N = mkN "triq" "triqat" "toroq" feminine ; + rock_N = mkNColl "blata" "blat" "blatiet" ; + roof_N = mkN "saqaf" "soqfa" ; + root_N = mkN "qħerq" "qħeruq" ; + rope_N = mkN "ħabel" "ħbula" ; + rubber_N = mkN "gomma" "gomom" ; + rule_N = mkN "regola" "regoli" ; + salt_N = mkN "melħ" "melħiet" ; + sand_N = mkNColl "ramla" "ramel" "ramliet" ; + school_N = mkN "skola" "skejjel" ; + science_N = mkN "xjenza" "xjenzi" ; + sea_N = mkNDual "baħar" "baħrejn" "ibħra" ; + seed_N = mkN "żerriegħa" "żerrigħat" ; + sheep_N = mkNColl "nagħġa" "ngħaġ" "nagħġiet" ; + ship_N = mkN "vapur" "vapuri" ; + shirt_N = mkN "qmis" "qomos" feminine ; + shoe_N = mkN "żarbun" "żraben" ; + shop_N = mkN "ħanut" "ħwienet" ; + silver_N = mkN "fidda" "fided" ; + sister_N = (mkN "oħt" "aħwa" feminine) ; + skin_N = mkN "ġilda" "ġildiet" ; + sky_N = mkN "sema" "smewwiet" masculine ; + smoke_N = mkN "duħħan" "dħaħen" ; + snake_N = mkN "serp" "sriep" ; + snow_N = mkNColl "borra" ; + sock_N = mkN "kalzetta" "kalzetti" ; + song_N = mkN "kanzunetta" "kanzunetti" ; + star_N = mkN "stilla" "stilel" ; + steel_N = mkNNoPlural "azzar" ; + stick_N = mkN "lasta" "lasti" ; + stone_N = mkNColl "ġebla" "ġebel" "ġebliet" "ġbiel" ; + stove_N = mkN "kuker" "kukers" ; + student_N = mkN "student" "studenti" ; + sun_N = mkN "xemx" "xmux" feminine ; + table_N = mkN "mejda" "mwejjed" ; + tail_N = (mkN "denb" "dnieb") ; + teacher_N = mkN "għalliem" "għalliema" ; -- genderedN + television_N = mkN "televixin" "televixins" ; + tongue_N = possN (mkN "lsien" "ilsna") ; + tooth_N = possN (mkN "sinna" "sinniet" "snien") ; + train_N = mkN "ferrovija" "ferroviji" ; + tree_N = mkNColl "siġra" "siġar" "siġriet" ; + university_N = mkN "università" "universitàjiet" ; + village_N = mkN "raħal" "rħula" ; + war_N = mkN "gwerra" "gwerrer" ; + water_N = mkN "ilma" "ilmijiet" masculine ; + wife_N = mkN "mara" "nisa" ; + wind_N = mkN "riħ" "rjieħ" "rjiħat" ; + window_N = mkN "tieqa" "twieqi" ; + wine_N = mkNColl "nbid" "nbejjed" ; + wing_N = mkN "ġewnaħ" "ġwienaħ" ; + woman_N = mkN "mara" "nisa" ; + wood_N = mkN "injam" "injamiet" ; + worm_N = mkNColl "dudu" "dud" "dudiet" ; + year_N = mkNDual "sena" "sentejn" "snin" ; + -- Verbs lin add_V3 = mkV3 zied_ZJD_1_10424_V maP ; - alas_Interj = ss "sfortunatament" ; - already_Adv = mkAdv "diġà" ; answer_V2S = lilV2 (wiegeb_WGB_3_10033_V) ; ask_V2Q = lilV2 (saqsa_SQSJ_1_7268_V) ; - bad_A = brokenA "ħażin" "hżiena" "agħar" ; - beautiful_A = brokenA "sabiħ" "sbieħ" "isbaħ" ; become_VA = sar_SJR_1_9797_V ; beg_V2V = mkV2V ttallab_TLB_5_9893_V ghalP minnP ; - big_A = brokenA "kbir" "kbar" "ikbar" ; bite_V2 = lilV2 (gidem_GDM_1_8009_V) ; - black_A = mkA "iswed" "sewda" "suwed" ; blow_V = nefah_NFH_1_8966_V ; - blue_A = sameA "blu" ; break_V2 = dirV2 (kiser_KSR_1_8636_V) ; breathe_V = mkV "respira" ; -- ĦA N-NIFS - broad_A = mkA "wiesgħa" "wiesgħa" "wiesgħin" ; - brown_A = sameA "kannella" ; burn_V = haraq_HRQ_1_8367_V ; buy_V2 = dirV2 (xtara_XRJ_8_10296_V) ; - clean_A = brokenA "nadif" "nodfa" ; - clever_A = regA "bravu" ; close_V2 = dirV2 (ghalaq_GHLQ_1_10530_V) ; - cold_A = mkA "kiesaħ" "kiesħa" "kesħin" ; come_V = gie_GJ'_1_8123_V ; - correct_A = regA "korrett" ; count_V2 = dirV2 (ghadd_GHDD_1_10460_V) ; cut_V2 = dirV2 (qata'_QTGH_1_9305_V) ; die_V = miet_MWT_1_8923_V ; - dig_V = hafer_HFR_1_8233_V ; - dirty_A = regA "maħmuġ" ; + dig_V = haffer_HFR_2_8236_V ; do_V2 = dirV2 (ghamel_GHML_1_10544_V) ; drink_V2 = dirV2 (xorob_XRB_1_10231_V) ; - dry_A = regA "niexef" ; - dull_A = sameA "tad-dwejjaq" ; - easy_A2V = dirA2 (sameA "faċli") ; eat_V2 = dirV2 (kiel_KJL_1_8672_V) ; - empty_A = mkA "vojt" "vojta" "vojta" ; fall_V = waqa'_WQGH_1_10070_V ; - far_Adv = mkAdv "il-bogħod" ; -- use glue? fear_V2 = prepV2 (beza'_BZGH_1_7541_V) minnP ; fear_VS = beza'_BZGH_1_7541_V; fight_V2 = prepV2 (ggieled_GLD_6_8074_V) maP ; @@ -251,22 +234,14 @@ concrete LexiconMlt of Lexicon = CatMlt ** fly_V = tar_TJR_1_9972_V ; forget_V2 = lilV2 (nesa_NSJ_1_9126_V) ; freeze_V = ffriza_V ; - full_A = regA "mimli" ; - fun_AV = sameA "pjaċevoli" ; give_V3 = mkV3 ta_GHTJ_1_10767_V lilP ; go_V = mar_MWR_1_8918_V ; - good_A = mkA "tajjeb" "tajba" "tajbin" ; - green_A = mkA "aħdar" "ħadra" "ħodor" ; hate_V2 = lilV2 (baghad_BGHD_1_7402_V) ; hear_V2 = lilV2 (sema'_SMGH_1_9698_V) ; - heavy_A = brokenA "tqil" "tqal" "itqal" ; hit_V2 = lilV2 (laqat_LQT_1_8772_V) ; hold_V2 = lilV2 (zamm_ZMM_1_10392_V) ; hope_VS = xtaq_XWQ_8_10313_V ; - hot_A = mkA "jaħraq" "taħraq" "jaħarqu" ; hunt_V2 = prepV2 (kaccac_KCC_2_8571_V) ghalP ; - important_A = sameA "importanti" ; - john_PN = mkPN "Ġanni" masculine singular ; jump_V = qabez_QBZ_1_9182_V ; kill_V2 = lilV2 (qatel_QTL_1_9312_V) ; know_V2 = lilV2 (af_''F_1_10774_V) ; @@ -275,36 +250,21 @@ concrete LexiconMlt of Lexicon = CatMlt ** laugh_V = dahak_DHK_1_7688_V ; learn_V2 = dirV2 (tghallem_GHLM_5_10527_V) ; leave_V2 = prepV2 (telaq_TLQ_1_9903_V) minnP ; - left_Ord = mkOrd "xellug" ; 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 ; - long_A = brokenA "twil" "twal" "itwal" ; lose_V2 = lilV2 (tilef_TLF_1_9895_V) ; love_V2 = lilV2 (habb_HBB_1_8174_V) ; - married_A2 = mkA2 (mkA "miżżewweġ" "miżżewġa") lilP ; - narrow_A = mkA "dejjaq" "dejqa" "dojoq" "idjaq" ; - near_A = regA "viċin" ; - new_A = brokenA "ġdid" "ġodda" ; - now_Adv = mkAdv "issa" ; - old_A = brokenA "qadim" "qodma" "eqdem" ; open_V2 = dirV2 (fetah_FTH_1_7932_V) ; paint_V2A = dirV2 (pitter_PTR_2_9152_V) ; - paris_PN = mkPN "Pariġi" feminine singular ; play_V = daqq_DQQ_1_7736_V ; play_V2 = prepV2 (laghab_LGHB_1_8724_V) maP ; - 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) ; rain_V0 = xita_XTW_1_10297_V ; -- TAGĦMEL IX-XITA read_V2 = dirV2 (qara_QRJ_1_9350_V) ; - ready_A = regA "lest" ; - red_A = mkA "aħmar" "ħamra" "ħomor" ; - right_Ord = mkOrd "lemin" ; - rotten_A = mkA "mħassar" "mħassra" "mħassrin" ; - round_A = regA "tond" ; rub_V2 = dirV2 (ghorok_GHRK_1_10599_V) ; run_V = gera_GRJ_1_8131_V ; say_VS = qal_QWL_1_9357_V ; @@ -314,23 +274,17 @@ concrete LexiconMlt of Lexicon = CatMlt ** 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" ; - short_A = brokenA "qasir" "qosra" "iqsar" ; sing_V = kanta_KNTJ_1_7016_V ; sit_V = pogga_PGJ_2_9157_V ; sleep_V = raqad_RQD_1_9469_V ; - small_A = brokenA "zgħir" "zgħar" "iżgħar" ; smell_V = xamm_XMM_1_10207_V ; - smooth_A = regA "lixx" ; 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 = qaghad_QGHD_1_9210_V ; --- + stand_V = qaghad_QGHD_1_9210_V ; stop_V = waqaf_WQF_1_10067_V ; - straight_A = regA "dritt" ; - stupid_A = mkA "iblah" "belha" "boloh" ; suck_V2 = lilV2 (rada'_RDGH_1_9388_V) ; swell_V = ntefah_NFH_8_8970_V ; swim_V = gham_GHWM_1_10750_V ; @@ -338,33 +292,87 @@ concrete LexiconMlt of Lexicon = CatMlt ** switch8on_V2 = dirV2 (xeghel_XGHL_1_10155_V) ; talk_V3 = mkV3 kellem_KLM_2_8597_V maP fuqP ; -- PAĊPAĊ, PARLA teach_V2 = lilV2 (ghallem_GHLM_2_10526_V) ; - thick_A = mkA "oħxon" "ħoxna" "ħoxnin" "eħxen" ; - thin_A = brokenA "rqiq" "rqaq" "rqaq" ; 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" ; travel_V = vvjagga_V ; turn_V = dar_DWR_1_7803_V ; - ugly_A = mkA "ikrah" "kerha" "koroh" ; - uncertain_A = regA "inċert" ; understand_V2 = lilV2 (fehem_FHM_1_10830_V) ; vomit_V = qala'_QLGH_1_9223_V ; wait_V2 = lilV2 (stenna_'NJ_10_10781_V) ; walk_V = mexa_MXJ_1_8926_V ; - warm_A = brokenA "sħun" "sħan" ; wash_V2 = lilV2 (hasel_HSL_1_8395_V) ; watch_V2 = dirV2 (ra_R'J_1_9513_V) ; - wet_A = mkA "mxarrab" "mxarrba" "mxarrbin" ; - white_A = mkA "abjad" "bajda" "bojod" ; - wide_A = broad_A ; win_V2 = dirV2 (rebah_RBH_1_9371_V) ; wipe_V2 = dirV2 (mesah_MSH_1_8881_V) ; wonder_VQ = kkuntempla_V ; write_V2 = dirV2 (kiteb_KTB_1_8641_V) ; + + -- Adjectives + lin + bad_A = brokenA "ħażin" "hżiena" "agħar" ; + beautiful_A = brokenA "sabiħ" "sbieħ" "isbaħ" ; + big_A = brokenA "kbir" "kbar" "ikbar" ; + black_A = mkA "iswed" "sewda" "suwed" ; + blue_A = sameA "blu" ; + broad_A = mkA "wiesgħa" "wiesgħa" "wiesgħin" ; + brown_A = sameA "kannella" ; + clean_A = brokenA "nadif" "nodfa" ; + clever_A = regA "bravu" ; + cold_A = mkA "kiesaħ" "kiesħa" "kesħin" ; + correct_A = regA "korrett" ; + dirty_A = regA "maħmuġ" ; + dry_A = regA "niexef" ; + dull_A = sameA "tad-dwejjaq" ; + easy_A2V = dirA2 (sameA "faċli") ; + empty_A = mkA "vojt" "vojta" "vojta" ; + full_A = regA "mimli" ; + fun_AV = sameA "pjaċevoli" ; + good_A = mkA "tajjeb" "tajba" "tajbin" ; + green_A = mkA "aħdar" "ħadra" "ħodor" ; + heavy_A = brokenA "tqil" "tqal" "itqal" ; + hot_A = mkA "jaħraq" "taħraq" "jaħarqu" ; + important_A = sameA "importanti" ; + 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" ; + new_A = brokenA "ġdid" "ġodda" ; + old_A = brokenA "qadim" "qodma" "eqdem" ; -- xiħ + probable_AS = mkAS (sameA "probabbli") ; + ready_A = regA "lest" ; + red_A = mkA "aħmar" "ħamra" "ħomor" ; + rotten_A = mkA "mħassar" "mħassra" "mħassrin" ; + round_A = regA "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" ; + 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" ; + warm_A = brokenA "sħun" "sħan" ; + wet_A = mkA "mxarrab" "mxarrba" "mxarrbin" ; + white_A = mkA "abjad" "bajda" "bojod" ; + wide_A = broad_A ; yellow_A = mkA "isfar" "safra" "sofor" ; young_A = small_A ; + -- Others + lin + alas_Interj = ss "sfortunatament" ; + already_Adv = mkAdv "diġà" ; + far_Adv = mkAdv "il-bogħod" ; -- use glue? + john_PN = mkPN "Ġanni" masculine singular ; + left_Ord = mkOrd "xellug" ; + now_Adv = mkAdv "issa" ; + paris_PN = mkPN "Pariġi" feminine singular ; + right_Ord = mkOrd "lemin" ; + today_Adv = mkAdv "illum" ; + oper fuqP = mkPrep "fuq" ; ghandP = mkPrep "għand" ; diff --git a/lib/src/maltese/MorphoMlt.gf b/lib/src/maltese/MorphoMlt.gf index be5efc260..54ea2d784 100644 --- a/lib/src/maltese/MorphoMlt.gf +++ b/lib/src/maltese/MorphoMlt.gf @@ -606,8 +606,8 @@ resource MorphoMlt = ResMlt ** open Prelude in { VPerf agr => perf ! agr ; VImpf agr => impf ! agr ; VImp num => imp ! num ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; conjFormII_quad : VerbInfo -> (VForm => Str) = \i -> @@ -693,8 +693,8 @@ resource MorphoMlt = ResMlt ** open Prelude in { VPerf agr => perf ! agr ; VImpf agr => impf ! agr ; VImp num => imp ! num ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; {- ~~~ Form III verbs ~~~ -} @@ -735,8 +735,8 @@ resource MorphoMlt = ResMlt ** open Prelude in { VPerf agr => perf ! agr ; VImpf agr => impf ! agr ; VImp num => imp ! num ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; {- ~~~ Form VII and VIII verbs ~~~ -} @@ -806,8 +806,8 @@ resource MorphoMlt = ResMlt ** open Prelude in { VPerf agr => perf ! agr ; VImpf agr => impf ! agr ; VImp num => imp ! num ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; {- ~~~ Form IX verbs ~~~ -} @@ -842,8 +842,8 @@ resource MorphoMlt = ResMlt ** open Prelude in { VPerf agr => perf ! agr ; VImpf agr => impf ! agr ; VImp num => imp ! num ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; {- ~~~ Form X verbs ~~~ -} @@ -884,7 +884,7 @@ resource MorphoMlt = ResMlt ** open Prelude in { _ + "ie" + #Consonant => let strieh : Str = mamma ; - strih : Str = ie2_ i.patt2.V1 strieh ; + strih : Str = ie2i strieh ; strihaj : Str = strih + "aj" in table { @@ -936,8 +936,8 @@ resource MorphoMlt = ResMlt ** open Prelude in { VPerf agr => perf ! agr ; VImpf agr => impf ! agr ; VImp num => imp ! num ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; } diff --git a/lib/src/maltese/NounMlt.gf b/lib/src/maltese/NounMlt.gf index b5e504b62..4155e856f 100644 --- a/lib/src/maltese/NounMlt.gf +++ b/lib/src/maltese/NounMlt.gf @@ -9,32 +9,29 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { flags optimize=noexpand ; + coding=utf8 ; oper -- Used in DetCN below chooseNounNumForm : Det -> CN -> Str = \det,n -> let - det' = det.s ! n.g ; sing = n.s ! Singulative ; coll = if_then_Str n.hasColl - (n.s ! Collective) -- BAQAR - (n.s ! Plural) -- SNIEN + (n.s ! Collective) -- baqar + (n.s ! Plural) -- snien ; dual = n.s ! Dual ; plur = n.s ! Plural ; -- pind = n.s ! Plural Indeterminate ; in case det.n of { - 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' ++ plur) -- ŻEWĠ IRĠIEL - ; - Num3_10 => det' ++ coll ; -- TLETT BAQAR - Num11_19 => det' ++ sing ; -- ĦDAX-IL BAQRA - Num20_99 => det' ++ sing -- GĦOXRIN BAQRA + NumX Sg => sing ; -- baqra + NumX Pl => coll ; -- baqar (coll) / ħafna snien (pdet) + Num0 => sing ; -- l-ebda baqra + Num1 => sing ; -- baqra + Num2 => if_then_Str n.hasDual dual plur ; -- sentejn / baqar + Num3_10 => coll ; -- tlett baqar + Num11_19 => sing ; -- ħdax-il baqra + Num20_99 => sing -- għoxrin baqra } ; lin @@ -44,34 +41,40 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { -- To stop complaining about lock fields det = lin Det det ; cn = lin CN cn ; + noun = chooseNounNumForm det cn ; in { - s = table { - NPCPrep => cn.s ! numform2nounnum det.n ; - _ => case of { - => glue (cn.s ! numform2nounnum det.n) det.clitic ; - => artDef ++ cn.s ! numform2nounnum det.n ++ det.s ! cn.g ; - _ => chooseNounNumForm det cn - } - } ; - a = case (numform2nounnum det.n) of { - Singulative => mkAgr Sg P3 cn.g ; --- collective? - _ => mkAgr Pl P3 cn.g + s = table { + NPCPrep => noun ; + _ => case of { + => glue noun det.clitic ; + => artDef ++ noun ++ det.s ! cn.g ; + _ => case of { + => noun ; -- sentejn + _ => det.s ! cn.g ++ noun -- tlett baqar + } + } + } ; + a = case (numform2nounnum det.n) of { + Singulative => mkAgr Sg P3 cn.g ; --- collective? + _ => mkAgr Pl P3 cn.g + } ; + isPron = False ; + isDefn = det.isDefn ; } ; - isPron = False ; - isDefn = det.isDefn ; - } ; -- Quant -> Num -> Det DetQuant quant num = { s = \\gen => 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 + in case of { + => quant.s ! gennum ++ artDef ++ num.s ! NumAdj ; + -- => ... + => quant.s ! gennum ; + => quant.s ! gennum ++ num.s ! NumAdj } ; n = num.n ; clitic = quant.clitic ; - hasNum = num.hasCard ; + hasNum = True ; -- num.hasCard ? isPron = quant.isPron ; isDefn = quant.isDefn ; } ; @@ -94,10 +97,6 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { -- Det -> NP DetNP det = { - -- s = case det.hasNum of { - -- True => \\_ => det.s ! Masc ; - -- _ => \\c => det.s ! Masc - -- } ; s = \\c => det.s ! Masc ; a = agrP3 (numform2num det.n) Masc ; isPron = False ; @@ -153,7 +152,10 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { PredetNP pred np = overwriteNPs np (\\c => pred.s ++ np.s ! c) ; -- NP -> V2 -> NP - PPartNP np v2 = overwriteNPs np (\\c => np.s ! c ++ (v2.s ! VActivePart (toGenNum np.a)).s1) ; + PPartNP np v2 = case v2.hasPastPart of { + True => overwriteNPs np (\\c => np.s ! c ++ (v2.s ! VPastPart (toGenNum np.a)).s1) ; -- raġel rieqed + False => overwriteNPs np (\\c => np.s ! c ++ (v2.s ! VImpf (toVAgr np.a)).s1) -- mara tisma' + } ; -- NP -> RS -> NP RelNP np rs = overwriteNPs np (\\c => np.s ! c ++ "," ++ rs.s ! np.a ) ; @@ -245,19 +247,18 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { SentCN cn sc = overwriteCNs cn (\\num => cn.s ! num ++ sc.s) ; -- CN -> NP -> CN - ApposCN cn np = overwriteCNs cn (\\num => cn.s ! num ++ np.s ! NPNom) ; - - PossNP cn np = overwriteCNs cn (\\num => cn.s ! num ++ prepNP prep_ta np) ; - - PartNP cn np = overwriteCNs cn (\\num => cn.s ! num ++ prepNP prep_ta np) ; + ApposCN cn np = overwriteCNs cn (\\num => cn.s ! num ++ np.s ! NPNom) ; -- known to be overgenerating + PossNP cn np = overwriteCNs cn (\\num => cn.s ! num ++ prepNP prep_ta np) ; + PartNP cn np = overwriteCNs cn (\\num => cn.s ! num ++ prepNP prep_ta np) ; -- Det -> NP -> NP - CountNP det np = { - s = \\c => det.s ! np.a.g ++ np.s ! c ; - a = agrP3 (numform2num det.n) np.a.g ; - isPron = False ; - isDefn = np.isDefn ; - } ; + --- LEAKS ? + -- CountNP det np = { + -- s = \\c => det.s ! np.a.g ++ np.s ! c ; + -- a = agrP3 (numform2num det.n) np.a.g ; + -- isPron = False ; + -- isDefn = np.isDefn ; + -- } ; oper prep_ta = lin Prep { diff --git a/lib/src/maltese/NumeralMlt.gf b/lib/src/maltese/NumeralMlt.gf index a90459618..0ba197774 100644 --- a/lib/src/maltese/NumeralMlt.gf +++ b/lib/src/maltese/NumeralMlt.gf @@ -82,7 +82,7 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt _ => adjectival } ; thousand = case num of { - Num1 => "wieħed" ; + Num1 => "elf" ; --- was: wieħed Num2 => "elfejn" ; _ => case adjectival of { _ + "'" => (init adjectival) + "t" ; -- SEBA' -> SEBAT @@ -94,11 +94,9 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt s = table { Unit => table { NCard => table { - NumNom => unit ; -- TNEJN - NumAdj => case num of { - Num1 => "" ; -- [] baqra - _ => adjectival -- ŻEWĠ baqar - } + NumNom => unit ; -- TNEJN + -- NumAdj => case num of { Num1 => "" ; _ => adjectival } -- ŻEWĠ baqar + NumAdj => adjectival -- ŻEWĠ baqar } ; NOrd => \\numcase => ordunit -- TIENI } ; @@ -139,13 +137,15 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt } } } ; --- thou = thousand ; thou = { s = thousand ; treatAs = Unit } ; - n = num ; + n = case num of { + Num1 => NumX Sg ; + _ => num + } ; } ; lin - -- Unit Ord.Unit Adjectival Teen Ten Number + -- Unit Ord.Unit Adjectival Teen Ten Number n2 = mkNum "tnejn" "tieni" "żewġ" "tnax" "għoxrin" Num2 ; n3 = mkNum "tlieta" "tielet" "tlett" "tlettax" "tletin" Num3_10 ; --- TODO tlett / tliet ? n4 = mkNum "erbgħa" "raba'" "erba'" "erbatax" "erbgħin" Num3_10 ; @@ -209,14 +209,12 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt num x = x ; -- Sub10 ; 1 - -- Unit Ord.Unit Adjectival Teen Ten Number - pot01 = mkNum "wieħed" "ewwel" "wieħed" [] [] Num1 ; + pot01 = mkNum "wieħed" "ewwel" "wieħed" "ħdax" "għaxra" Num1 ; -- Digit -> Sub10 ; d * 1 pot0 d = d ** {n = case d.n of { Num2 => Num2 ; _ => Num3_10 }} ; -- Sub100 ; 10, 11 - -- Cardinal Ordinal Adjectival Thousand Form pot110 = mkForm2 "għaxra" "għaxar" "għaxar" "għaxart" Unit Num3_10 ; pot111 = mkForm2 "ħdax" "ħdax" (glue "ħdax" "-il") (glue "ħdax" "-il") Teen Num11_19 ; @@ -235,7 +233,7 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt pot1 d = let numform : NumForm = case d.n of { - Num1 => Num3_10 ; + NumX Sg => Num3_10 ; _ => Num20_99 } in mkForm2 (d.s ! Ten) Ten numform ; @@ -245,7 +243,7 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt let unit = (n.s ! Unit ! NCard ! NumNom) ; numform : NumForm = case d.n of { - Num1 => Num11_19 ; + NumX Sg => Num11_19 ; _ => Num20_99 } in @@ -280,17 +278,17 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt hund : Str = m.s ! Hund ! NCard ! NumNom ; in { s = \\cardord,numcase => case n.n of { - Num1 => hund ++ "u" ; + NumX Sg => hund ++ "u" ; _ => hund ++ "u" ++ n.s ! NCard ! numcase } ; thou = { s = hund ++ "u" ++ n.thou.s ; treatAs = case n.n of { - Num1 => Ten ; -- specific case for mija u wiehed elf + NumX Sg => Ten ; -- specific case for mija u wiehed elf _ => n.f -- So that "106,000" is treated as "6,000" } ; } ; - n = case n.n of { Num2 => Num3_10 ; _ => n.n } ; + n = case n.n of { NumX Sg => Num1 ; Num2 => Num3_10 ; _ => n.n } ; f = Hund ; } ; @@ -301,7 +299,7 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt pot3 m = { s = case of { - => numTable "elf" ; -- 1 * 1000 + => numTable "elf" ; -- 1 * 1000 => numTable "elfejn" ; -- 2 * 1000 <_,Unit> => numTable m.thou.s "elef" ; -- 3-10 * 1000 <_,_> => numTable m.thou.s "elf" -- 11+ * 1000 @@ -324,7 +322,7 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt } in case of { - => numTable "elf" ukemm ; + => numTable "elf" ukemm ; => numTable "elfejn" ukemm ; <_,Unit> => numTable (m.thou.s ++ "elef") ukemm ; <_,_> => numTable (m.thou.s ++ "elf") ukemm @@ -333,7 +331,7 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt s = m.thou.s ; treatAs = m.f ; } ; - n = case n.n of { Num2 => Num3_10 ; _ => n.n } ; + n = case n.n of { NumX Sg => Num1 ; Num2 => Num3_10 ; _ => n.n } ; f = Hund ; -- NOT IMPORTANT } ; @@ -377,7 +375,7 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt -- Helper for making a Dig object. mkDig : Str -> NumForm -> Dig = \digit,num -> lin Dig { s = \\numcase => digit ; - n = num + n = case num of {Num1 => NumX Sg ; _ => num } ; } ; -- For correct comma placement in Digits @@ -414,13 +412,13 @@ concrete NumeralMlt of Numeral = CatMlt [Numeral,Digits] ** open Prelude,ResMlt let digits = d.s ! NumNom ++ (commaIf i.tail) ++ i.s ! NumNom; numform = case of { - => num ; -- 0 x - => Num3_10 ; -- 1 0 - => Num11_19 ; -- 1 1 - => Num20_99 ; -- 2 x - => Num20_99 ; -- [3-9] x - => Num20_99 ; - <_,_> => Num20_99 --- how to handle overwrap? see i:Int in lincat Dig above + => num ; -- 0 x + => Num3_10 ; -- 1 0 + => Num11_19 ; -- 1 x + => Num20_99 ; -- 2 x + => Num20_99 ; -- [3-9] x + => Num20_99 ; + <_,_> => Num20_99 --- how to handle overwrap? see i:Int in lincat Dig above } ; in { s = table { diff --git a/lib/src/maltese/ParadigmsMlt.gf b/lib/src/maltese/ParadigmsMlt.gf index 96c9defd0..b7ead8943 100644 --- a/lib/src/maltese/ParadigmsMlt.gf +++ b/lib/src/maltese/ParadigmsMlt.gf @@ -225,7 +225,6 @@ resource ParadigmsMlt = open -- Mark a noun as taking possessive enclitic pronouns possN : N -> N ; - -- possN = \n -> n ** { takesPron = True } ; possN = \n -> lin N { s = n.s ; g = n.g ; @@ -486,13 +485,15 @@ resource ParadigmsMlt = open VImpf (AgP3Pl) => impfP3Pl ; VImp (Pl) => impSg ; VImp (Sg) => impPl ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; info : VerbInfo = mkVerbInfo class form root patt impSg ; in lin V { s = stemVariantsTbl tbl ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; } ; --end of mkV overload @@ -540,6 +541,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormII newinfo) ; i = newinfo ; + hasPresPart = False ; + hasPastPart = False ; } ; -- Make a Quadri-Consonantal Form II verb @@ -553,6 +556,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormII_quad newinfo) ; i = newinfo ; + hasPresPart = False ; + hasPastPart = False ; } ; derivedV_QuadII : Str -> Str -> Root -> V = \mammaII, imp, root -> let @@ -562,6 +567,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormII_quad newinfo) ; i = newinfo ; + hasPresPart = False ; + hasPastPart = False ; } ; } ; @@ -569,13 +576,14 @@ resource ParadigmsMlt = open -- e.g.: derivedV_III "qiegħed" (mkRoot "q-għ-d") derivedV_III : Str -> Root -> V = \mammaIII, root -> let - vowels : Pattern = extractPattern mammaIII ; - vowels2 : Pattern = vowelChangesIE root vowels ; + patt : Pattern = extractPattern mammaIII ; class : VClass = classifyRoot root ; - info : VerbInfo = mkVerbInfo class FormIII root vowels vowels2 mammaIII ; --- assumption: mamma III is also imperative + info : VerbInfo = mkVerbInfo class FormIII root patt mammaIII ; --- assumption: mamma III is also imperative in lin V { s = stemVariantsTbl (conjFormIII info) ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; -- No point having a paradigm for Form IV @@ -600,12 +608,14 @@ resource ParadigmsMlt = open VImpf (AgP2 Pl) => pfx "ti" (pfx_T (dropPfx 1 (get (VImpf (AgP2 Pl))))) ; VImpf (AgP3Pl) => pfx "ji" (pfx_T (dropPfx 1 (get (VImpf (AgP3Pl))))) ; VImp num => pfx_T (get (VImp num)) ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; in lin V { s = stemVariantsTbl (tbl) ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; -- Make a Form VI verb @@ -627,12 +637,14 @@ resource ParadigmsMlt = open VImpf (AgP2 Pl) => pfx "ti" (pfx_T (dropPfx 1 (get (VImpf (AgP2 Pl))))) ; VImpf (AgP3Pl) => pfx "ji" (pfx_T (dropPfx 1 (get (VImpf (AgP3Pl))))) ; VImp num => pfx_T (get (VImp num)) ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; in lin V { s = stemVariantsTbl (tbl) ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; -- Make a Form VII verb @@ -653,6 +665,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormVII info c1) ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; -- Make a Form VIII verb @@ -667,6 +681,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormVII info c1) ; -- note we use conjFormVII ! i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; -- Make a Form IX verb @@ -682,6 +698,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormIX info) ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; _ => Predef.error("I don't know how to make a Form IX verb out of" ++ mammaIX) } ; @@ -692,11 +710,12 @@ resource ParadigmsMlt = open let class : VClass = classifyRoot root ; patt : Pattern = extractPattern mammaX ; - patt2 : Pattern = vowelChangesIE root patt ; - info : VerbInfo = mkVerbInfo class FormX root patt patt2 mammaX ; + info : VerbInfo = mkVerbInfo class FormX root patt mammaX ; in lin V { s = stemVariantsTbl (conjFormX info) ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; {- ~~~ Strong Verb ~~~ -} @@ -727,13 +746,15 @@ resource ParadigmsMlt = open VPerf agr => ( conjStrongPerf root patt ) ! agr ; VImpf agr => ( conjStrongImpf (imp ! Sg) (imp ! Pl) ) ! agr ; VImp n => imp ! n ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; info : VerbInfo = mkVerbInfo (Strong Regular) (FormI) root patt (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; @@ -769,13 +790,15 @@ resource ParadigmsMlt = open VPerf agr => ( conjLiquidMedialPerf root patt ) ! agr ; VImpf agr => ( conjLiquidMedialImpf (imp ! Sg) (imp ! Pl) ) ! agr ; VImp n => imp ! n ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; info : VerbInfo = mkVerbInfo (Strong LiquidMedial) (FormI) root patt (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; {- ~~~ Geminated Verb ~~~ -} @@ -806,13 +829,15 @@ resource ParadigmsMlt = open VPerf agr => ( conjGeminatedPerf root patt ) ! agr ; VImpf agr => ( conjGeminatedImpf (imp ! Sg) (imp ! Pl) ) ! agr ; VImp n => imp ! n ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; info : VerbInfo = mkVerbInfo (Strong Geminated) (FormI) root patt (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; {- ~~~ Assimilative Verb ~~~ -} @@ -843,17 +868,15 @@ resource ParadigmsMlt = open VPerf agr => ( conjAssimilativePerf root patt ) ! agr ; VImpf agr => ( conjAssimilativeImpf (imp ! Sg) (imp ! Pl) ) ! agr ; VImp n => imp ! n ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; - patt2 : Pattern = case (imp!Sg) of { - "ie"+_ => mkPattern "i" patt.V2 ; -- (WAQAF) IEQAF > TIQAFLI - _ => patt -- (WASAL) ASAL > TASALLI - } ; - info : VerbInfo = mkVerbInfo (Weak Assimilative) (FormI) root patt patt2 (imp ! Sg) ; + info : VerbInfo = mkVerbInfo (Weak Assimilative) (FormI) root patt (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; {- ~~~ Hollow Verb ~~~ -} @@ -884,17 +907,15 @@ resource ParadigmsMlt = open VPerf agr => ( conjHollowPerf root patt ) ! agr ; VImpf agr => ( conjHollowImpf (imp ! Sg) (imp ! Pl) ) ! agr ; VImp n => imp ! n ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; - patt2 : Pattern = case patt.V1 of { - "ie" => mkPattern "i" patt.V2 ; -- (ŻIED) ŻID > ŻIDLI - _ => patt -- (MAR) MUR > MURLI - } ; - info : VerbInfo = mkVerbInfo (Weak Hollow) (FormI) root patt patt2 (imp ! Sg) ; + info : VerbInfo = mkVerbInfo (Weak Hollow) (FormI) root patt (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; {- ~~~ Lacking Verb ~~~ -} @@ -929,13 +950,15 @@ resource ParadigmsMlt = open VPerf agr => ( conjLackingPerf root patt ) ! agr ; VImpf agr => ( conjLackingImpf (imp ! Sg) (imp ! Pl) ) ! agr ; VImp n => imp ! n ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; info : VerbInfo = mkVerbInfo (Weak Lacking) (FormI) root patt (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; {- ~~~ Defective Verb ~~~ -} @@ -966,13 +989,15 @@ resource ParadigmsMlt = open VPerf agr => ( conjDefectivePerf root patt ) ! agr ; VImpf agr => ( conjDefectiveImpf (imp ! Sg) (imp ! Pl) ) ! agr ; VImp n => imp ! n ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; info : VerbInfo = mkVerbInfo (Weak Defective) (FormI) root patt (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; {- ~~~ Quadriliteral Verb (Strong) ~~~ -} @@ -1003,13 +1028,15 @@ resource ParadigmsMlt = open VPerf agr => ( conjQuadPerf root patt ) ! agr ; VImpf agr => ( conjQuadImpf (imp ! Sg) (imp ! Pl) ) ! agr ; VImp n => imp ! n ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; info : VerbInfo = mkVerbInfo (Quad QStrong) (FormI) root patt (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; {- ~~~ Quadriliteral Verb (Weak Final) ~~~ -} @@ -1043,13 +1070,15 @@ resource ParadigmsMlt = open VPerf agr => ( conjQuadWeakPerf root patt (imp ! Sg) ) ! agr ; VImpf agr => ( conjQuadWeakImpf (imp ! Sg) (imp ! Pl) ) ! agr ; VImp n => imp ! n ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; info : VerbInfo = mkVerbInfo (Quad QWeak) (FormI) root patt (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; {- ~~~ Irregular verbs ~~~ -} @@ -1068,17 +1097,110 @@ resource ParadigmsMlt = open VPerf agr => ( conjLoanPerf mamma ) ! agr ; VImpf agr => ( conjLoanImpf (imp ! Sg) (imp ! Pl) ) ! agr ; VImp n => imp ! n ; - VActivePart _ => "" ; --- TODO - VPassivePart _ => "" --- TODO + VPresPart _ => NONEXIST ; + VPastPart _ => NONEXIST } ; info : VerbInfo = mkVerbInfo (Loan) (FormI) (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; + hasPresPart = False ; + hasPastPart = False ; } ; {- Verb --------------------------------------------------------------- -} + -- Add the present participle to a verb + presPartV = overload { + + presPartV : Str -> V -> V = \hiereg,v -> + let + m : Str = hiereg ; + f : Str = case hiereg of { + miex+"i" => miex+"ja" ; + ge+"j" => ge+"jja" ; + sej+"jer" => sej+"ra" ; + r+"ie"+q@#Cns+e@#Vwl+d@#Cns => r+"ie"+q+d+"a" ; + _ => hiereg+"a" + } ; + p : Str = case hiereg of { + miex+"i" => miex+"jin" ; + ge+"j" => ge+"jjin" ; + sej+"jer" => sej+"rin" ; + r+"ie"+q@#Cns+e@#Vwl+d@#Cns => r+"ie"+q+d+"in" ; + _ => hiereg+"in" + } ; + in lin V { + s = \\vform => case vform of { + VPresPart (GSg Masc) => mkVerbStems m ; + VPresPart (GSg Fem) => mkVerbStems f ; + VPresPart (GPl) => mkVerbStems p ; + x => v.s ! x + } ; + i = v.i ; + hasPresPart = True ; + hasPastPart = v.hasPastPart ; + } ; + + presPartV : Str -> Str -> Str -> V -> V = \hiereg,hierga,hiergin,v -> lin V { + s = \\vform => case vform of { + VPresPart (GSg Masc) => mkVerbStems hiereg ; + VPresPart (GSg Fem) => mkVerbStems hierga ; + VPresPart (GPl) => mkVerbStems hiergin ; + x => v.s ! x + } ; + i = v.i ; + hasPresPart = True ; + hasPastPart = v.hasPastPart ; + } ; + + } ; + + -- Add the past participle to a verb + pastPartV = overload { + + pastPartV : Str -> V -> V = \miktub,v -> + let + m : Str = miktub ; + f : Str = case miktub of { + mixtr+"i" => mixtr+"ija" ; + mdaww+"ar" => mdaww+"ra" ; + mwaqq+"a'" => mwaqq+"għa" ; + _ => miktub+"a" + } ; + p : Str = case miktub of { + mixtr+"i" => mixtr+"ijin" ; + mdaww+"ar" => mdaww+"rin" ; + mwaqq+"a'" => mwaqq+"għin" ; + ffriz+"at" => ffriz+"ati" ; + _ => miktub+"in" + } ; + in lin V { + s = \\vform => case vform of { + VPastPart (GSg Masc) => mkVerbStems m ; + VPastPart (GSg Fem) => mkVerbStems f ; + VPastPart (GPl) => mkVerbStems p ; + x => v.s ! x + } ; + i = v.i ; + hasPresPart = v.hasPresPart ; + hasPastPart = True ; + } ; + + pastPartV : Str -> Str -> Str -> V -> V = \miktub,miktuba,miktubin,v -> lin V { + s = \\vform => case vform of { + VPastPart (GSg Masc) => mkVerbStems miktub ; + VPastPart (GSg Fem) => mkVerbStems miktuba ; + VPastPart (GPl) => mkVerbStems miktubin ; + x => v.s ! x + } ; + i = v.i ; + hasPresPart = v.hasPresPart ; + hasPastPart = True ; + } ; + + } ; + hasCompl : Prep -> Compl = \p -> p ** { isPresent = True } ; noCompl : Compl = noPrep ** { isPresent = False } where { noPrep : Prep = mkPrep [] }; diff --git a/lib/src/maltese/ResMlt.gf b/lib/src/maltese/ResMlt.gf index 426570124..c58386e86 100644 --- a/lib/src/maltese/ResMlt.gf +++ b/lib/src/maltese/ResMlt.gf @@ -97,12 +97,6 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { agrP3 : Number -> Gender -> Agr = \n,g -> mkAgr n P3 g; - VPForm2VAgr : VPForm -> VAgr = \vpform -> - case vpform of { - VPIndicat _ vagr => vagr ; - VPImperat n => AgP2 n - }; - sing : VAgr -> Bool = \agr -> case toAgr agr of { {n=Sg; p=_; g=_} => True ; @@ -158,25 +152,14 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { s : Tense => Anteriority => Polarity => Agr => Str } ; - -- Clause mkClause : Str -> Agr -> VerbPhrase -> Clause = \subj,agr,vp -> { - s = \\t,a,p,o => + s = \\tense,ant,pol,ord => let - -- verb = vp.s ! t ! a ! p ! o ! agr ; - -- vform = case of { - -- _ => VPres - -- } ; - vpform : VPForm = VPIndicat t (toVAgr agr) ; - verb : Str = joinVP vp vpform a p ; - compl : Str = vp.s2 ! agr ; - in - case o of { - -- ODir => subj ++ verb.aux ++ verb.adv ++ vp.ad ++ verb.fin ++ verb.inf ++ vp.p ++ compl ; - -- OQuest => verb.aux ++ subj ++ verb.adv ++ vp.ad ++ verb.fin ++ verb.inf ++ vp.p ++ compl - - -- ABSOLUTELY NOT CORRECT: in progress - ODir => subj ++ verb ++ compl ; - OQuest => subj ++ verb ++ compl + verb : Str = joinVP vp tense ant pol agr ; + obj : Str = vp.s2 ! agr ; + in case ord of { + ODir => subj ++ verb ++ obj ; -- Ġanni jiekol ħut + OQuest => verb ++ obj ++ subj -- jiekol ħut Ġanni ? } } ; @@ -206,11 +189,12 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { ; -- Indicate how a corresponding object should be treated - --- Overlap between Num Sg and Num1, but leaving as is for now + -- Num Sg is exactly 1 + -- Num1 is anything "treated as" 1 (eg 101) NumForm = NumX Number -- Sg | Pl | Num0 -- 0 (l-edba SIEGĦA) - | Num1 -- 1, 101... (SIEGĦA, mija u SIEGĦA) + | Num1 -- 101... (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) @@ -261,7 +245,6 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { {- Determiners etc. ----------------------------------------------------- -} oper - -- [AZ] Determiner : Type = { s : Gender => Str ; n : NumForm ; @@ -270,16 +253,7 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { isPron : Bool ; -- is a pronoun isDefn : Bool ; -- is definite } ; - -- Determiner = { - -- s : NPCase => Gender => NumCase => Str ; - -- s2 : NPCase => Gender => Str ; -- tieghi (possessive pronoun) - -- -- size : Num_Size ; -- One (agreement feature for noun) - -- isNum : Bool ; -- True (a numeral is present) - -- isDemo : Bool ; -- True (is a demostrative) - -- isDefn : Bool ;-- True (is definite) - -- } ; - -- [AZ] Quantifier : Type = { s : GenNum => Str ; clitic : Str ; @@ -287,12 +261,6 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { isDemo : Bool ; -- Demonstrative (this/that/those/these) isDefn : Bool ; -- is definite } ; - -- Quantifier = { - -- s : NPCase => Gender => NumForm => Str ; - -- s2 : NPCase => Gender => NumForm => Str ; - -- isDemo : Bool ; -- Demonstrative (this/that/those/these) - -- isDefn : Bool ; - -- } ; {- Noun ----------------------------------------------------------------- -} @@ -371,11 +339,6 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { } ; Compl : Type = Preposition ** {isPresent : Bool} ; - -- Compl : Type = { - -- s : Str ; - -- -- c : NPForm ; - -- -- isPre : Bool - -- } ; noCompl : Compl = { s = \\_ => [] ; @@ -425,18 +388,15 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { {- Verb ----------------------------------------------------------------- -} oper - -- Generic variants (used for verb stems) - Variants3 : Type = {s1, s2, s3 : Str} ; + -- Stem variants + VerbStems : Type = {s1, s2, s3 : Str} ; - mkVariants3 : Variants3 = overload { - mkVariants3 : (s1 : Str) -> Variants3 = \a -> { s1 = a ; s2 = a ; s3 = a } ; - mkVariants3 : (s1, s2, s3 : Str) -> Variants3 = \a,b,c -> { s1 = a ; s2 = b ; s3 = c } ; + mkVerbStems : VerbStems = overload { + mkVerbStems : (s1 : Str) -> VerbStems = \a -> { s1 = a ; s2 = a ; s3 = a } ; + mkVerbStems : (s1, s2 : Str) -> VerbStems = \a,b -> { s1 = a ; s2 = b ; s3 = b } ; + mkVerbStems : (s1, s2, s3 : Str) -> VerbStems = \a,b,c -> { s1 = a ; s2 = b ; s3 = c } ; } ; - mkMaybeVariants3 : Str -> Maybe Variants3 = \s -> Just Variants3 (mkVariants3 s) ; - - NullVariants3 : Maybe Variants3 = Nothing Variants3 { s1 = [] ; s2 = [] ; s3 = [] } ; - NullAgr : Maybe Agr = Nothing Agr (agrP3 Sg Masc) ; -- Direct object clitic @@ -484,7 +444,7 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { -- Produce stem variants as needed (only call on compile-time strings!) -- Refer to doc/stems.org - stemVariantsPerf : Str -> Variants3 = \s -> + stemVariantsPerf : Str -> VerbStems = \s -> let ftahna : Str = s ; ftahnie : Str = case s of { @@ -501,7 +461,7 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { s1 = ftahna ; s2 = ftahnie ; s3 = ftahni ; } ; - stemVariantsImpf : Str -> Variants3 = \s -> + stemVariantsImpf : Str -> VerbStems = \s -> let jiftah : Str = s ; jifth : Str = case s of { @@ -513,16 +473,18 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { } ; -- Convert old verb form table into one with stem variants - stemVariantsTbl : (VForm => Str) -> (VForm => Variants3) = \tbl -> + stemVariantsTbl : (VForm => Str) -> (VForm => VerbStems) = \tbl -> \\vf => case vf of { VPerf _ => stemVariantsPerf (tbl ! vf) ; VImpf _ => stemVariantsImpf (tbl ! vf) ; - _ => mkVariants3 (tbl ! vf) + _ => mkVerbStems (tbl ! vf) } ; Verb : Type = { - s : VForm => Variants3 ; --- need to store different "stems" already at verb level (ġera/ġerie/ġeri) + s : VForm => VerbStems ; --- need to store different "stems" already at verb level (ġera/ġerie/ġeri) i : VerbInfo ; + hasPresPart : Bool ; + hasPastPart : Bool ; } ; VerbInfo : Type = { @@ -530,9 +492,6 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { 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! } ; @@ -542,9 +501,8 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { VPerf VAgr -- Perfect tense in all pronoun cases | VImpf VAgr -- Imperfect tense in all pronoun cases | VImp Number -- Imperative is always P2, Sg & Pl - | VActivePart GenNum -- Present/active particible, e.g. RIEQED - | VPassivePart GenNum -- Passive/past particible, e.g. MAĦBUB - -- | VVerbalNoun -- Verbal Noun + | VPresPart GenNum -- Present/active particible, e.g. RIEQED + | VPastPart GenNum -- Passive/past particible, e.g. MAĦBUB ; VDerivedForm = @@ -595,13 +553,48 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { oper - -- Join verp phrase components into a string - joinVP : VerbPhrase -> VPForm -> Anteriority -> Polarity -> Str = \vp,form,ant,pol -> + --- TEMP FUNCTION + pickVerbForm : {s : VForm => VerbStems} -> Tense -> Anteriority -> Polarity -> Agr -> VerbParts = \verb,tense,ant,pol,agr -> + let + vagr : VAgr = toVAgr agr ; + ma = makePreVowel "ma" "m'" ; + b1 : VerbStems -> VerbParts = \vs -> mkVerbParts vs ; + b2 : Str -> VerbStems -> VerbParts = \s,vs -> mkVerbParts s vs ; + kien = copula_kien.s ! (VPerf vagr) ! Pos ; + kienx = copula_kien.s ! (VPerf vagr) ! Neg ; + nkun = copula_kien.s ! (VImpf vagr) ! Pos ; + in + case of { + => b1 (verb.s ! VImpf vagr) ; -- norqod + => b2 ma (verb.s ! VImpf vagr) ; -- ma norqodx + + => b1 (verb.s ! VPerf vagr) ; -- rqadt + => b2 ma (verb.s ! VPerf vagr) ; -- ma rqadtx + + => b2 "se" (verb.s ! VImpf vagr) ; -- se norqod + => b2 (mhux ! vagr ++ "se") (verb.s ! VImpf vagr) ; -- m'iniex se norqod + + => b2 kien (verb.s ! VImpf vagr) ; -- kont norqod + => b2 (ma ++ kienx) (verb.s ! VImpf vagr) ; -- ma kontx norqod + + -- Same as Past Simul + => b1 (verb.s ! VPerf vagr) ; -- rqadt + => b2 ma (verb.s ! VPerf vagr) ; -- ma rqadtx + + => b2 kien (verb.s ! VPerf vagr) ; -- kont rqadt + => b2 (ma ++ kienx) (verb.s ! VPerf vagr) ; -- ma kontx rqadt + + => b2 ("se" ++ nkun) (verb.s ! VPerf vagr) ; -- se nkun rqadt + => b2 (mhux ! vagr ++ "se" ++ nkun) (verb.s ! VPerf vagr) -- m'iniex se nkun rqadt + } ; + + -- Join verb phrase components into a string + joinVP : VerbPhrase -> Tense -> Anteriority -> Polarity -> Agr -> Str = \vp,tense,ant,pol,agr -> let - stems = (vp.s ! form ! ant ! pol).main ; - aux = (vp.s ! form ! ant ! pol).aux ; + stems = (pickVerbForm vp.v tense ant pol agr).main ; + aux = (pickVerbForm vp.v tense ant pol agr).aux ; x : Str = "x" ; - agr : VAgr = VPForm2VAgr form ; + vagr : VAgr = toVAgr agr ; dir_a : Agr = fromJust Agr vp.dir ; -- These are lazy ind_a : Agr = fromJust Agr vp.ind ; dir = dirObjSuffix dir_a ; @@ -616,7 +609,7 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { _ => ind.s2 -- hie-lekx } ; in - case takesAux form ant of { + case takesAux tense ant of { -- aux is already negated for us True => aux ++ case of { @@ -636,7 +629,7 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { } ; -- No aux part to handle - False => aux ++ case isPerf form ant of { + False => aux ++ case isPerf tense ant of { True => case of { @@ -649,12 +642,12 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { => stems.s3 ++ BIND ++ dir.s2 ++ BIND ++ x ; -- ftaħnie-lha / ftaħni-lhie-x - => case of { + => case of { => stems.s2 ++ BIND ++ ind.s3 ; -- fetħ-ilha => stems.s2 ++ BIND ++ ind.s1 ; -- ftaħnie-lha _ => stems.s1 ++ BIND ++ ind.s1 -- fetaħ-li } ; - => case of { + => case of { => stems.s2 ++ BIND ++ ind.s4 ++ BIND ++ x ; -- fetħ-ilhiex => stems.s3 ++ BIND ++ ind.s2 ++ BIND ++ x ; -- ftaħni-lhiex _ => stems.s1 ++ BIND ++ ind.s2 ++ BIND ++ x -- fetaħ-lix @@ -677,12 +670,12 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { => stems.s1 ++ BIND ++ dir.s2 ++ BIND ++ x ; -- jiftħ-ilha / jiftħ-ilhie-x - => case of { + => case of { => stems.s2 ++ BIND ++ ind.s3 ; -- jiftħ-ilha => stems.s2 ++ BIND ++ ind.s1 ; -- jiftħu-lha _ => stems.s1 ++ BIND ++ ind.s1 -- jiftaħ-li } ; - => case of { + => case of { => stems.s2 ++ BIND ++ ind.s4 ++ BIND ++ x ; -- jiftħ-ilhiex => stems.s2 ++ BIND ++ ind.s2 ++ BIND ++ x ; -- jiftħu-lhiex _ => stems.s1 ++ BIND ++ ind.s2 ++ BIND ++ x -- jiftaħ-lix @@ -699,74 +692,69 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { -- Does a tense + ant take an auxiliary verb? -- This affects where (if) the negation is applied -- This is a workaround to avoid having a bool param in VerbParts - -- Must match with the logic in predV - takesAux : VPForm -> Anteriority -> Bool = \vpf,ant -> - case of { - => False ; - => False ; - => True ; - => True ; - => False ; - => True ; - => True ; - => True ; - => False + -- Must match with the logic in pickVerbForm + takesAux : Tense -> Anteriority -> Bool = \tense,ant -> + case of { + => False ; + => False ; + => True ; + => True ; + => False ; + => True ; + => True ; + => True } ; -- Does a tense + ant give a perfective verb? - -- Must match with the logic in predV - isPerf : VPForm -> Anteriority -> Bool = \vpf,ant -> - case of { - => False ; - => True ; - => False ; - => False ; - => True ; - => True ; - => True ; - => False ; - => False + -- Must match with the logic in pickVerbForm + isPerf : Tense -> Anteriority -> Bool = \tense,ant -> + case of { + => False ; + => True ; + => False ; + => False ; + => True ; + => True ; + => True ; + => False } ; VerbParts : Type = { aux : Str ; -- when present, negation is applied here - main : Variants3 ; -- enclitics always applied here + main : VerbStems ; -- enclitics always applied here } ; mkVerbParts = overload { - mkVerbParts : Variants3 -> VerbParts = \vs -> { aux = [] ; main = vs } ; - mkVerbParts : Str -> VerbParts = \m -> { aux = [] ; main = mkVariants3 m } ; - mkVerbParts : Str -> Variants3 -> VerbParts = \a,vs -> { aux = a ; main = vs } ; - mkVerbParts : Str -> Str -> VerbParts = \a,m -> { aux = a ; main = mkVariants3 m } ; + mkVerbParts : VerbStems -> VerbParts = \vs -> { aux = [] ; main = vs } ; + mkVerbParts : Str -> VerbParts = \m -> { aux = [] ; main = mkVerbStems m } ; + mkVerbParts : Str -> VerbStems -> VerbParts = \a,vs -> { aux = a ; main = vs } ; + mkVerbParts : Str -> Str -> VerbParts = \a,m -> { aux = a ; main = mkVerbStems m } ; } ; VerbPhrase : Type = { - s : VPForm => Anteriority => Polarity => VerbParts ; - s2 : Agr => Str ; -- complement + v : { + s : VForm => VerbStems ; + hasPresPart : Bool ; + hasPastPart : Bool ; + } ; + s2 : Agr => Str ; -- complement dir : Maybe Agr ; -- direct object clitic ind : Maybe Agr ; -- indirect object clitic } ; SlashVerbPhrase : Type = VerbPhrase ** {c2 : Compl} ; - param - -- [AZ] - VPForm = - VPIndicat Tense VAgr - | VPImperat Number - ; - oper insertObj : (Agr => Str) -> VerbPhrase -> VerbPhrase = \obj,vp -> { - s = vp.s ; + v = vp.v ; s2 = \\agr => vp.s2 ! agr ++ obj ! agr ; dir = vp.dir ; ind = vp.ind ; } ; insertObjPre : (Agr => Str) -> VerbPhrase -> VerbPhrase = \obj,vp -> { - s = vp.s ; + v = vp.v ; s2 = \\agr => obj ! agr ++ vp.s2 ! agr ; dir = vp.dir ; ind = vp.ind ; @@ -776,21 +764,21 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { insertObj obj vp ** {c2 = vp.c2} ; insertDirObj : Agr -> VerbPhrase -> VerbPhrase = \dir,vp -> { - s = vp.s ; + v = vp.v ; s2 = vp.s2 ; dir = Just Agr dir ; ind = vp.ind ; }; insertIndObj : Agr -> VerbPhrase -> VerbPhrase = \ind,vp -> { - s = vp.s ; + v = vp.v ; s2 = vp.s2 ; dir = vp.dir ; ind = Just Agr ind ; }; insertAdV : Str -> VerbPhrase -> VerbPhrase = \adv,vp -> { - s = vp.s ; + v = vp.v ; s2 = \\agr => vp.s2 ! agr ++ adv ; dir = vp.dir ; ind = vp.ind ; @@ -817,7 +805,6 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { => "jkunu" ; => "kun" ; => "kunu" ; - => "kontx" ; => "kontx" ; => "kienx" ; @@ -834,73 +821,62 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { => "jkunux" ; => "kunx" ; => "kunux" ; - => "" ; - => "" + => NONEXIST ; + => NONEXIST } } ; -- Adapted from [AZ] CopulaVP : VerbPhrase = { - s = \\vpf,ant,pol => - --- We are ignoring the anteriority - case of { - --- Here we are bypassing VerbParts by putting negatives in the stem - => mkVerbParts (copula_kien.s ! VPerf vagr ! Pos) [] ; -- kien - => mkVerbParts (copula_kien.s ! VImpf vagr ! Pos) [] ; -- jkun - => mkVerbParts ("se" ++ copula_kien.s ! VImpf vagr ! Pos) [] ; -- se jkun - => mkVerbParts ("kieku" ++ copula_kien.s ! VPerf vagr ! Pos) [] ; -- kieku kien - => mkVerbParts (copula_kien.s ! VImp num ! Pos) [] ; -- kun - => mkVerbParts (copula_kien.s ! VPerf vagr ! Neg) [] ; -- ma kienx - => mkVerbParts (copula_kien.s ! VImpf vagr ! Neg) [] ; -- ma jkunx - => mkVerbParts (mhux ! vagr ++ "se" ++ copula_kien.s ! VImpf vagr ! Pos) [] ; -- mhux se jkun - => mkVerbParts ("kieku" ++ "ma" ++ copula_kien.s ! VPerf vagr ! Neg) [] ; -- kieku ma kienx - => mkVerbParts (copula_kien.s ! VImp num ! Neg) [] -- kunx + -- s = \\vpf,ant,pol => + -- --- We are ignoring the anteriority + -- case of { + -- --- Here we are bypassing VerbParts by putting negatives in the stem + -- -- => mkVerbParts (copula_kien.s ! VImpf vagr ! Pos) [] ; -- jkun + -- -- => mkVerbParts (copula_kien.s ! VImpf vagr ! Neg) [] ; -- ma jkunx + -- => mkVerbParts (huwa ! vagr) [] ; -- huwa + -- => mkVerbParts (mhux ! vagr) [] ; -- m'huwiex + -- => mkVerbParts (copula_kien.s ! VPerf vagr ! Pos) [] ; -- kien + -- => mkVerbParts (copula_kien.s ! VPerf vagr ! Neg) [] ; -- ma kienx + -- => mkVerbParts ("se" ++ copula_kien.s ! VImpf vagr ! Pos) [] ; -- se jkun + -- => mkVerbParts (mhux ! vagr ++ "se" ++ copula_kien.s ! VImpf vagr ! Pos) [] ; -- mhux se jkun + -- => mkVerbParts ("kieku" ++ copula_kien.s ! VPerf vagr ! Pos) [] ; -- kieku kien + -- => mkVerbParts ("kieku" ++ "ma" ++ copula_kien.s ! VPerf vagr ! Neg) [] ; -- kieku ma kienx + -- => mkVerbParts (copula_kien.s ! VImp num ! Pos) [] ; -- kun + -- => mkVerbParts (copula_kien.s ! VImp num ! Neg) [] -- kunx + -- } ; + v = { + s = table { + VPerf (AgP1 Sg) => mkVerbStems "kont" ; + VPerf (AgP2 Sg) => mkVerbStems "kont" ; + VPerf (AgP3Sg Masc) => mkVerbStems "kien" ; + VPerf (AgP3Sg Fem) => mkVerbStems "kienet" "kinit" ; + VPerf (AgP1 Pl) => mkVerbStems "konna" "konnie" ; + VPerf (AgP2 Pl) => mkVerbStems "kontu" ; + VPerf (AgP3Pl) => mkVerbStems "kienu" ; + VImpf (AgP1 Sg) => mkVerbStems [] "m'inie" ; + VImpf (AgP2 Sg) => mkVerbStems [] "m'inti"; + VImpf (AgP3Sg Masc) => mkVerbStems "huwa" "m'hu" ; + VImpf (AgP3Sg Fem) => mkVerbStems "hija" "m'hi" ; + 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" ; + VPresPart gn => mkVerbStems NONEXIST ; + VPastPart gn => mkVerbStems NONEXIST + } ; + i = mkVerbInfo Irregular FormI ; + hasPresPart = False ; + hasPastPart = False ; } ; s2 = \\agr => [] ; dir = NullAgr ; ind = NullAgr ; } ; - -- [AZ] predV : Verb -> VerbPhrase = \verb -> { - s = \\vpf,ant,pol => - let - ma = makePreVowel "ma" "m'" ; - b1 : Variants3 -> VerbParts = \vs -> mkVerbParts vs ; - b2 : Str -> Variants3 -> VerbParts = \s,vs -> mkVerbParts s vs ; - in - case vpf of { - VPIndicat tense vagr => - let - kien = copula_kien.s ! (VPerf vagr) ! Pos ; - kienx = copula_kien.s ! (VPerf vagr) ! Neg ; - nkun = copula_kien.s ! (VImpf vagr) ! Pos ; - in - case of { - => b1 (verb.s ! VImpf vagr) ; -- norqod - => b2 ma (verb.s ! VImpf vagr) ; -- ma norqodx - - => b1 (verb.s ! VPerf vagr) ; -- rqadt - => b2 ma (verb.s ! VPerf vagr) ; -- ma rqadtx - - => b2 "se" (verb.s ! VImpf vagr) ; -- se norqod - => b2 (mhux ! vagr ++ "se") (verb.s ! VImpf vagr) ; -- m'iniex se norqod - - => b2 kien (verb.s ! VImpf vagr) ; -- kont norqod - => b2 (ma ++ kienx) (verb.s ! VImpf vagr) ; -- ma kontx norqod - - -- Same as Past Simul - => b1 (verb.s ! VPerf vagr) ; -- rqadt - => b2 ma (verb.s ! VPerf vagr) ; -- ma rqadtx - - => b2 kien (verb.s ! VPerf vagr) ; -- kont rqadt - => b2 (ma ++ kienx) (verb.s ! VPerf vagr) ; -- ma kontx rqadt - - => b2 ("se" ++ nkun) (verb.s ! VPerf vagr) ; -- se nkun rqadt - => b2 (mhux ! vagr ++ "se" ++ nkun) (verb.s ! VPerf vagr) -- m'iniex se nkun rqadt - } ; - VPImperat num => b1 (verb.s ! VImp num) -- torqodx - }; + v = verb ; s2 = \\agr => [] ; dir = NullAgr ; ind = NullAgr ; @@ -908,10 +884,7 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { -- There is no infinitive in Maltese; use perfective infVP : VerbPhrase -> Anteriority -> Polarity -> Agr -> Str = \vp,ant,pol,agr -> - let - vpform : VPForm = VPIndicat Past (toVAgr agr) ; - in - joinVP vp vpform ant pol ++ vp.s2 ! agr ; + joinVP vp Past ant pol agr ++ vp.s2 ! agr ; Aux = { s : Tense => Polarity => Str ; @@ -939,6 +912,16 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { AgP3Pl => "lilhom infushom" } ; + huwa : VAgr => Str = table { + AgP1 Sg => "jiena" ; + AgP2 Sg => "inti" ; + AgP3Sg Masc => "huwa" ; + AgP3Sg Fem => "hija" ; + AgP1 Pl => "aħna" ; + AgP2 Pl => "intom" ; + AgP3Pl => "huma" + } ; + mhux : VAgr => Str = table { AgP1 Sg => "m'iniex" ; AgP2 Sg => "m'intix" ; @@ -1064,15 +1047,15 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { -- 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 ; patt2=mkPattern ; imp=[] } ; + { class=c ; form=f ; root=mkRoot ; patt=mkPattern ; imp=[] } ; mkVerbInfo : VClass -> VDerivedForm -> Str -> VerbInfo = \c,f,i -> - { class=c ; form=f ; root=mkRoot ; patt=mkPattern ; patt2=mkPattern ; imp=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 ; patt2=p ; imp=[] } ; + { 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 ; patt2=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=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 } ; } ; -- Change certain fields of a VerbInfo record @@ -1080,20 +1063,22 @@ 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 ; patt2=i.patt2 ; imp=i.imp } ; + { class=i.class ; form=i.form ; root=r ; patt=i.patt ; imp=i.imp } ; -- DerivedForm updateVerbInfo : VerbInfo -> VDerivedForm -> VerbInfo = \i,f -> - { class=i.class ; form=f ; root=i.root ; patt=i.patt ; patt2=i.patt2 ; imp=i.imp } ; + { class=i.class ; form=f ; root=i.root ; patt=i.patt ; imp=i.imp } ; -- DerivedForm, Imperative updateVerbInfo : VerbInfo -> VDerivedForm -> Str -> VerbInfo = \i,f,imp -> - { class=i.class ; form=f ; root=i.root ; patt=i.patt ; patt2=i.patt2 ; imp=imp } ; + { class=i.class ; form=f ; root=i.root ; patt=i.patt ; imp=imp } ; } ; {- ~~~ Useful helper functions ~~~ -} + NONEXIST : Str = "#NONEXIST#" ; + -- New names for the drop/take operations takePfx = Predef.take ; dropPfx = Predef.drop ; @@ -1179,7 +1164,7 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { _ => False } ; - artIndef : Str = "" ; + artIndef : Str = [] ; --- is this a source of leaks? artDef : Str = makePreFull diff --git a/lib/src/maltese/SentenceMlt.gf b/lib/src/maltese/SentenceMlt.gf index e397667bb..0535a4eca 100644 --- a/lib/src/maltese/SentenceMlt.gf +++ b/lib/src/maltese/SentenceMlt.gf @@ -17,21 +17,14 @@ concrete SentenceMlt of Sentence = CatMlt ** open lin -- NP -> VP -> Cl -- John walks - PredVP np vp = { - s = \\tense,ant,pol,ord => - case ord of { - ODir => (s ++ v ++ o) ; -- ĠANNI JIEKOL ĦUT - OQuest => (v ++ o ++ s) -- JIEKOL ĦUT ĠANNI ? - } - where { - s : Str = case np.isPron of { - True => [] ; -- omit subject pronouns - False => np.s ! NPNom - } ; - v : Str = joinVP vp (VPIndicat tense (toVAgr np.a)) ant pol ; - o : Str = vp.s2 ! np.a ; - } ; - } ; + PredVP np vp = + let + subj : Str = case np.isPron of { + True => [] ; -- omit subject pronouns + False => np.s ! NPNom + } ; + in + mkClause subj np.a vp ; -- SC -> VP -> Cl -- that she goes is good @@ -39,7 +32,11 @@ concrete SentenceMlt of Sentence = CatMlt ** open -- VP -> Imp ImpVP vp = { - s = \\pol,n => joinVP vp (VPImperat n) Simul pol + -- s = \\pol,n => joinVP vp (VPImperat n) Simul pol ; + s = \\pol,n => case pol of { + Pos => (vp.v.s ! VImp n).s1 ++ vp.s2 ! agrP3 n Masc ; + Neg => (vp.v.s ! VImp n).s2 ++ BIND ++ "x" ++ vp.s2 ! agrP3 n Masc + } ; } ; -- NP -> VPSlash -> ClSlash diff --git a/lib/src/maltese/StructuralMlt.gf b/lib/src/maltese/StructuralMlt.gf index 158b768ef..daa2d6f94 100644 --- a/lib/src/maltese/StructuralMlt.gf +++ b/lib/src/maltese/StructuralMlt.gf @@ -88,7 +88,7 @@ concrete StructuralMlt of Structural = CatMlt ** on_Prep = mkPrep "fuq" ; part_Prep = possess_Prep ; possess_Prep = mkPrep "ta'" "t'" "tal-" "tat-" "tal-" ; - through_Prep = mkPrep "minn ġo" "minn ġol-" "minn ġol-" "minn ġot-" "minn ġol-" + through_Prep = mkPrep "minn ġo" "minn ġo" "minn ġol-" "minn ġot-" "minn ġol-" "minn ġo fija" "minn ġo fik" "minn ġo fih" "minn ġo fiha" "minn ġo fina" "minn ġo fikom" "minn ġo fihom" False ; to_Prep = mkPrep "lil" "lill-" "lit-" ; diff --git a/lib/src/maltese/SymbolMlt.gf b/lib/src/maltese/SymbolMlt.gf index c727840ef..a11fad177 100644 --- a/lib/src/maltese/SymbolMlt.gf +++ b/lib/src/maltese/SymbolMlt.gf @@ -8,6 +8,78 @@ concrete SymbolMlt of Symbol = CatMlt ** open Prelude, ResMlt in { + oper + symAgr : Agr = { n = Sg ; p = P3 ; g = Masc } ; + + lin + + -- SymbPN -> PN + -- x + SymbPN i = {s = i.s ; a = symAgr} ; + + -- Int -> PN + -- 27 + IntPN i = {s = i.s ; a = symAgr} ; + + -- Float -> PN + -- 3.14159 + FloatPN i = {s = i.s ; a = symAgr} ; + + -- Card -> PN ; + NumPN i = {s = i.s ! NumNom ; a = symAgr} ; + + -- CN -> Int -> NP + -- level 53 (covered by CNNumNP) + CNIntNP cn i = { + s = \\c => cn.s ! num2nounnum Sg ++ i.s; + a = agrP3 Sg cn.g ; + isPron = False ; + isDefn = False ; + } ; + + -- Det -> CN -> [Symb] -> NP + -- (the) (2) numbers x and y + CNSymbNP det cn xs = { + s = \\c => det.s ! cn.g ++ cn.s ! (numform2nounnum det.n) ++ xs.s ; + a = agrP3 (numform2num det.n) cn.g ; + isPron = False ; + isDefn = False ; + } ; + + -- CN -> Card -> NP + -- level five ; level 5 + CNNumNP cn i = { + s = \\c => cn.s ! num2nounnum Sg ++ i.s ! NumNom ; + a = agrP3 Sg cn.g ; + isPron = False ; + isDefn = False ; + } ; + + -- Symb -> S + -- A + SymbS sy = sy ; + + -- Symb -> Card + -- n + SymbNum sy = { + s = \\_ => sy.s ; + n = NumX Pl ; + } ; + + -- Symb -> Ord + -- n'th + SymbOrd sy = { + s = \\c => sy.s ; + } ; + + lincat + Symb, [Symb] = SS ; + + lin + -- String -> Symb + MkSymb s = s ; + + BaseSymb = infixSS "u" ; + ConsSymb = infixSS "," ; } - diff --git a/lib/src/maltese/VerbMlt.gf b/lib/src/maltese/VerbMlt.gf index 82225f5d1..8ff970e35 100644 --- a/lib/src/maltese/VerbMlt.gf +++ b/lib/src/maltese/VerbMlt.gf @@ -66,7 +66,7 @@ concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in { -- Get enclitic version of c2 => { - s = vp.s ; + v = vp.v ; s2 = \\agr => vp.s2 ! agr ++ vp.c2.enclitic ! np.a ; dir = NullAgr ; ind = NullAgr ; @@ -136,7 +136,10 @@ concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in { -- V2 -> VP -- be loved - PassV2 v2 = insertObj (\\agr => (v2.s ! VPassivePart (toGenNum agr)).s1 ++ v2.c2.s ! Definite) CopulaVP ; + PassV2 v2 = case v2.hasPastPart of { + True => insertObj (\\agr => (v2.s ! VPastPart (toGenNum agr)).s1 ++ v2.c2.s ! Definite) CopulaVP ; + False => insertObj (\\agr => (v2.s ! VPerf (toVAgr agr)).s1 ++ v2.c2.s ! Definite) CopulaVP + } ; -- AP -> Comp -- (be) small @@ -172,7 +175,6 @@ concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in { -- VP -> Prep -> VPSlash -- live in (it) VPSlashPrep vp p = vp ** { - -- c2 = lin Compl (p ** {isPresent = True}) ; c2 = { s = p.s ; enclitic = p.enclitic ;