diff --git a/lib/src/maltese/AdjectiveMlt.gf b/lib/src/maltese/AdjectiveMlt.gf index 9379151f3..8771e8073 100644 --- a/lib/src/maltese/AdjectiveMlt.gf +++ b/lib/src/maltese/AdjectiveMlt.gf @@ -62,7 +62,7 @@ concrete AdjectiveMlt of Adjective = CatMlt ** open ResMlt, Prelude in { -- A2 -> AP -- married to itself ReflA2 a2 = { - s = \\gn => a2.s ! APosit gn ++ a2.c2.s ! Definite ++ reflPron ! (toVAgr gn) ; + s = \\gn => a2.s ! APosit gn ++ a2.c2.s ! Definite ++ prep_lil.enclitic ! (toAgr gn) ++ reflPron ! (toVAgr gn) ; isPre = False } ; diff --git a/lib/src/maltese/IdiomMlt.gf b/lib/src/maltese/IdiomMlt.gf index 2d0e16591..ae157fe83 100644 --- a/lib/src/maltese/IdiomMlt.gf +++ b/lib/src/maltese/IdiomMlt.gf @@ -4,7 +4,7 @@ -- John J. Camilleri 2011 -- 2013 -- Licensed under LGPL -concrete IdiomMlt of Idiom = CatMlt ** open Prelude, ResMlt in { +concrete IdiomMlt of Idiom = CatMlt ** open Prelude, ResMlt, Maybe in { flags coding=utf8; @@ -70,8 +70,8 @@ concrete IdiomMlt of Idiom = CatMlt ** open Prelude, ResMlt in { -- be sleeping ProgrVP vp = { v = CopulaVP.v ; - s2 = \\agr => case vp.v.hasPresPart of { - True => (vp.v.s ! VPresPart (toGenNum agr)).s1 ; + s2 = \\agr => case exists Participle vp.v.presPart of { + True => (fromJust Participle vp.v.presPart) ! (toGenNum agr) ; False => (vp.v.s ! VImpf (toVAgr agr)).s1 } ; dir = NullAgr ; @@ -95,4 +95,21 @@ concrete IdiomMlt of Idiom = CatMlt ** open Prelude, ResMlt in { } } ; + -- VP -> VP + -- is at home himself + SelfAdvVP vp = insertObj (\\agr => reflPron ! (toVAgr agr)) vp ; + + -- VP -> VP + -- is himself at home + SelfAdVVP vp = insertObjPre (\\agr => reflPron ! (toVAgr agr)) vp ; + + -- NP -> NP + -- the president himself (is at home) + SelfNP np = { + s = \\c => np.s ! c ++ "stess" ; + a = np.a ; + isPron = np.isPron ; + isDefn = np.isDefn ; + } ; + } diff --git a/lib/src/maltese/MorphoMlt.gf b/lib/src/maltese/MorphoMlt.gf index aa0a704e9..fe14826fd 100644 --- a/lib/src/maltese/MorphoMlt.gf +++ b/lib/src/maltese/MorphoMlt.gf @@ -659,9 +659,7 @@ resource MorphoMlt = ResMlt ** open Prelude in { in table { VPerf agr => perf ! agr ; VImpf agr => impf ! agr ; - VImp num => imp ! num ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp num => imp ! num } ; conjFormII_quad : VerbInfo -> (VForm => Str) = \i -> @@ -746,9 +744,7 @@ resource MorphoMlt = ResMlt ** open Prelude in { in table { VPerf agr => perf ! agr ; VImpf agr => impf ! agr ; - VImp num => imp ! num ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp num => imp ! num } ; {- ~~~ Form III verbs ~~~ -} @@ -788,9 +784,7 @@ resource MorphoMlt = ResMlt ** open Prelude in { in table { VPerf agr => perf ! agr ; VImpf agr => impf ! agr ; - VImp num => imp ! num ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp num => imp ! num } ; {- ~~~ Form VII and VIII verbs ~~~ -} @@ -859,9 +853,7 @@ resource MorphoMlt = ResMlt ** open Prelude in { in table { VPerf agr => perf ! agr ; VImpf agr => impf ! agr ; - VImp num => imp ! num ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp num => imp ! num } ; {- ~~~ Form IX verbs ~~~ -} @@ -895,9 +887,7 @@ resource MorphoMlt = ResMlt ** open Prelude in { in table { VPerf agr => perf ! agr ; VImpf agr => impf ! agr ; - VImp num => imp ! num ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp num => imp ! num } ; {- ~~~ Form X verbs ~~~ -} @@ -989,9 +979,7 @@ resource MorphoMlt = ResMlt ** open Prelude in { in table { VPerf agr => perf ! agr ; VImpf agr => impf ! agr ; - VImp num => imp ! num ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp num => imp ! num } ; } diff --git a/lib/src/maltese/NounMlt.gf b/lib/src/maltese/NounMlt.gf index 8498b2c2f..c4b388663 100644 --- a/lib/src/maltese/NounMlt.gf +++ b/lib/src/maltese/NounMlt.gf @@ -5,7 +5,7 @@ -- Angelo Zammit 2012 -- Licensed under LGPL -concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { +concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude, Maybe in { flags optimize=noexpand ; @@ -161,8 +161,8 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in { -- NP -> V2 -> NP -- the man seen - PPartNP np v2 = case v2.hasPastPart of { - True => overwriteNPs np (\\c => np.s ! c ++ (v2.s ! VPastPart (toGenNum np.a)).s1) ; -- raġel rieqed + PPartNP np v2 = case exists Participle v2.pastPart of { + True => overwriteNPs np (\\c => np.s ! c ++ (fromJust Participle v2.pastPart ! (toGenNum np.a))) ; -- raġel rieqed False => overwriteNPs np (\\c => np.s ! c ++ (v2.s ! VImpf (toVAgr np.a)).s1) -- mara tisma' } ; diff --git a/lib/src/maltese/ParadigmsMlt.gf b/lib/src/maltese/ParadigmsMlt.gf index ea12c8999..aaf7379c6 100644 --- a/lib/src/maltese/ParadigmsMlt.gf +++ b/lib/src/maltese/ParadigmsMlt.gf @@ -8,11 +8,8 @@ --# -path=.:../abstract:../../prelude:../common resource ParadigmsMlt = open - Predef, - Prelude, - MorphoMlt, - ResMlt, - CatMlt + Predef, Prelude, Maybe, + MorphoMlt, ResMlt, CatMlt in { flags @@ -579,16 +576,14 @@ resource ParadigmsMlt = open VImpf (AgP2 Pl) => impfP2Pl ; VImpf (AgP3Pl) => impfP3Pl ; VImp (Pl) => impSg ; - VImp (Sg) => impPl ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp (Sg) => impPl } ; info : VerbInfo = mkVerbInfo class form root vseq impSg ; in lin V { s = stemVariantsTbl tbl ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; } ; --end of mkV overload @@ -636,8 +631,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormII newinfo) ; i = newinfo ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; -- Make a Quadri-Consonantal Form II verb @@ -651,8 +646,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormII_quad newinfo) ; i = newinfo ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; derivedV_QuadII : Str -> Str -> Root -> V = \mammaII, imp, root -> let @@ -662,8 +657,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormII_quad newinfo) ; i = newinfo ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; } ; @@ -677,8 +672,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormIII info) ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; -- No point having a paradigm for Form IV @@ -702,15 +697,13 @@ resource ParadigmsMlt = open VImpf (AgP1 Pl) => pfx "ni" (pfx_T (dropPfx 1 (get (VImpf (AgP1 Pl))))) ; 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)) ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp num => pfx_T (get (VImp num)) } ; in lin V { s = stemVariantsTbl (tbl) ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; -- Make a Form VI verb @@ -731,15 +724,13 @@ resource ParadigmsMlt = open VImpf (AgP1 Pl) => pfx "ni" (pfx_T (dropPfx 1 (get (VImpf (AgP1 Pl))))) ; 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)) ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp num => pfx_T (get (VImp num)) } ; in lin V { s = stemVariantsTbl (tbl) ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; -- Make a Form VII verb @@ -760,8 +751,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormVII info c1) ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; -- Make a Form VIII verb @@ -776,8 +767,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormVII info c1) ; -- note we use conjFormVII ! i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; -- Make a Form IX verb @@ -793,8 +784,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormIX info) ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; _ => Predef.error("I don't know how to make a Form IX verb out of" ++ mammaIX) } ; @@ -809,8 +800,8 @@ resource ParadigmsMlt = open in lin V { s = stemVariantsTbl (conjFormX info) ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; {- ~~~ Strong Verb ~~~ -} @@ -840,16 +831,14 @@ resource ParadigmsMlt = open tbl : (VForm => Str) = table { VPerf agr => ( conjStrongPerf root vseq ) ! agr ; VImpf agr => ( conjStrongImpf (imp ! Sg) (imp ! Pl) ) ! agr ; - VImp n => imp ! n ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp n => imp ! n } ; info : VerbInfo = mkVerbInfo (Strong Regular) (FormI) root vseq (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; @@ -884,16 +873,14 @@ resource ParadigmsMlt = open tbl : (VForm => Str) = table { VPerf agr => ( conjLiquidMedialPerf root vseq ) ! agr ; VImpf agr => ( conjLiquidMedialImpf (imp ! Sg) (imp ! Pl) ) ! agr ; - VImp n => imp ! n ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp n => imp ! n } ; info : VerbInfo = mkVerbInfo (Strong LiquidMedial) (FormI) root vseq (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; {- ~~~ Geminated Verb ~~~ -} @@ -923,16 +910,14 @@ resource ParadigmsMlt = open tbl : (VForm => Str) = table { VPerf agr => ( conjGeminatedPerf root vseq ) ! agr ; VImpf agr => ( conjGeminatedImpf (imp ! Sg) (imp ! Pl) ) ! agr ; - VImp n => imp ! n ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp n => imp ! n } ; info : VerbInfo = mkVerbInfo (Strong Geminated) (FormI) root vseq (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; {- ~~~ Assimilative Verb ~~~ -} @@ -962,16 +947,14 @@ resource ParadigmsMlt = open tbl : (VForm => Str) = table { VPerf agr => ( conjAssimilativePerf root vseq ) ! agr ; VImpf agr => ( conjAssimilativeImpf (imp ! Sg) (imp ! Pl) ) ! agr ; - VImp n => imp ! n ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp n => imp ! n } ; info : VerbInfo = mkVerbInfo (Weak Assimilative) (FormI) root vseq (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; {- ~~~ Hollow Verb ~~~ -} @@ -1001,16 +984,14 @@ resource ParadigmsMlt = open tbl : (VForm => Str) = table { VPerf agr => ( conjHollowPerf root vseq ) ! agr ; VImpf agr => ( conjHollowImpf (imp ! Sg) (imp ! Pl) ) ! agr ; - VImp n => imp ! n ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp n => imp ! n } ; info : VerbInfo = mkVerbInfo (Weak Hollow) (FormI) root vseq (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; {- ~~~ Lacking Verb ~~~ -} @@ -1044,16 +1025,14 @@ resource ParadigmsMlt = open tbl : (VForm => Str) = table { VPerf agr => ( conjLackingPerf root vseq ) ! agr ; VImpf agr => ( conjLackingImpf (imp ! Sg) (imp ! Pl) ) ! agr ; - VImp n => imp ! n ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp n => imp ! n } ; info : VerbInfo = mkVerbInfo (Weak Lacking) (FormI) root vseq (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; {- ~~~ Defective Verb ~~~ -} @@ -1083,16 +1062,14 @@ resource ParadigmsMlt = open tbl : (VForm => Str) = table { VPerf agr => ( conjDefectivePerf root vseq ) ! agr ; VImpf agr => ( conjDefectiveImpf (imp ! Sg) (imp ! Pl) ) ! agr ; - VImp n => imp ! n ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp n => imp ! n } ; info : VerbInfo = mkVerbInfo (Weak Defective) (FormI) root vseq (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; {- ~~~ Quadriliteral Verb (Strong) ~~~ -} @@ -1122,16 +1099,14 @@ resource ParadigmsMlt = open tbl : (VForm => Str) = table { VPerf agr => ( conjQuadPerf root vseq ) ! agr ; VImpf agr => ( conjQuadImpf (imp ! Sg) (imp ! Pl) ) ! agr ; - VImp n => imp ! n ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp n => imp ! n } ; info : VerbInfo = mkVerbInfo (Quad QStrong) (FormI) root vseq (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; {- ~~~ Quadriliteral Verb (Weak Final) ~~~ -} @@ -1164,16 +1139,14 @@ resource ParadigmsMlt = open tbl : (VForm => Str) = table { VPerf agr => ( conjQuadWeakPerf root vseq (imp ! Sg) ) ! agr ; VImpf agr => ( conjQuadWeakImpf (imp ! Sg) (imp ! Pl) ) ! agr ; - VImp n => imp ! n ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp n => imp ! n } ; info : VerbInfo = mkVerbInfo (Quad QWeak) (FormI) root vseq (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; {- ~~~ Irregular verbs ~~~ -} @@ -1191,16 +1164,14 @@ resource ParadigmsMlt = open tbl : (VForm => Str) = table { VPerf agr => ( conjLoanPerf mamma ) ! agr ; VImpf agr => ( conjLoanImpf (imp ! Sg) (imp ! Pl) ) ! agr ; - VImp n => imp ! n ; - VPresPart _ => nonExist ; - VPastPart _ => nonExist + VImp n => imp ! n } ; info : VerbInfo = mkVerbInfo (Loan) (FormI) (imp ! Sg) ; in lin V { s = stemVariantsTbl tbl ; i = info ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; {- Verb --------------------------------------------------------------- -} @@ -1226,27 +1197,25 @@ resource ParadigmsMlt = open _ => 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 ; + s = v.s ; + i = v.i ; + presPart = Just Participle (table { + GSg Masc => m ; + GSg Fem => f ; + GPl => p + }) ; + pastPart = v.pastPart ; } ; 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 - } ; + s = v.s ; i = v.i ; - hasPresPart = True ; - hasPastPart = v.hasPastPart ; + presPart = Just Participle (table { + GSg Masc => hiereg ; + GSg Fem => hierga ; + GPl => hiergin + }) ; + pastPart = v.pastPart ; } ; } ; @@ -1271,27 +1240,25 @@ resource ParadigmsMlt = open _ => 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 ; + s = v.s ; + i = v.i ; + presPart = v.presPart ; + pastPart = Just Participle (table { + GSg Masc => m ; + GSg Fem => f ; + GPl => p + }) ; } ; 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 - } ; + s = v.s ; i = v.i ; - hasPresPart = v.hasPresPart ; - hasPastPart = True ; + presPart = v.presPart ; + pastPart = Just Participle (table { + GSg Masc => miktub ; + GSg Fem => miktuba ; + GPl => miktubin + }) ; } ; } ; diff --git a/lib/src/maltese/ResMlt.gf b/lib/src/maltese/ResMlt.gf index cbb0124b7..89fb01056 100644 --- a/lib/src/maltese/ResMlt.gf +++ b/lib/src/maltese/ResMlt.gf @@ -393,6 +393,24 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { joinsVerb = False ; } ; + prep_lil : Preposition = { + s = table { + Indefinite => "lil" ; + Definite => makePreFull "lill-" "lil" "lil" + } ; + enclitic : Agr => Str = \\agr => case toVAgr agr of { + AgP1 Sg => "lili" ; + AgP2 Sg => "lilek" ; + AgP3Sg Masc => "lilu" ; + AgP3Sg Fem => "lilha" ; + AgP1 Pl => "lilna" ; + AgP2 Pl => "lilkom" ; + AgP2Pl => "lilhom" + } ; + takesDet = True ; + joinsVerb = True ; + } ; + {- Pronoun -------------------------------------------------------------- -} oper @@ -522,17 +540,20 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { \\vf => case vf of { VPerf _ => stemVariantsPerf (tbl ! vf) ; VImpf _ => stemVariantsImpf (tbl ! vf) ; - VImp _ => stemVariantsImpf (tbl ! vf) ; - _ => mkVerbStems (tbl ! vf) + VImp _ => stemVariantsImpf (tbl ! vf) } ; Verb : Type = { s : VForm => VerbStems ; --- need to store different "stems" already at verb level (ġera/ġerie/ġeri) i : VerbInfo ; - hasPresPart : Bool ; - hasPastPart : Bool ; + presPart : Maybe Participle ; + pastPart : Maybe Participle ; } ; + Participle : Type = GenNum => Str ; + + noParticiple : Maybe Participle = Nothing Participle (\\_ => nonExist) ; + VerbInfo : Type = { class : VClass ; form : VDerivedForm ; @@ -542,13 +563,10 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { } ; param - -- Possible verb forms (tense + person) VForm = VPerf VAgr -- Perfect tense in all pronoun cases | VImpf VAgr -- Imperfect tense in all pronoun cases | VImp Number -- Imperative is always P2, Sg & Pl - | VPresPart GenNum -- Present/active particible, e.g. RIEQED - | VPastPart GenNum -- Passive/past particible, e.g. MAĦBUB ; VDerivedForm = @@ -778,11 +796,12 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { } ; VerbPhrase : Type = { - v : { - s : VForm => VerbStems ; - hasPresPart : Bool ; - hasPastPart : Bool ; - } ; + v : Verb ; + -- v : { + -- s : VForm => VerbStems ; + -- presPart : Maybe Participle ; + -- pastPart : Maybe Participle ; + -- } ; s2 : Agr => Str ; -- complement dir : Maybe Agr ; -- direct object clitic ind : Maybe Agr ; -- indirect object clitic @@ -866,9 +885,7 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { => "tkunux" ; => "jkunux" ; => "kunx" ; - => "kunux" ; - => nonExist ; - => nonExist + => "kunux" } } ; @@ -908,13 +925,11 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { VImpf (AgP2 Pl) => mkVerbStems [] "m'intom" ; VImpf (AgP3Pl) => mkVerbStems "huma" "m'humie" ; VImp (Sg) => mkVerbStems "kun" ; - VImp (Pl) => mkVerbStems "kunu" ; - VPresPart gn => mkVerbStems nonExist ; - VPastPart gn => mkVerbStems nonExist + VImp (Pl) => mkVerbStems "kunu" } ; i = mkVerbInfo Irregular FormI ; - hasPresPart = False ; - hasPastPart = False ; + presPart = noParticiple ; + pastPart = noParticiple ; } ; s2 = \\agr => [] ; dir = NullAgr ; @@ -949,13 +964,20 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { } ; reflPron : VAgr => Str = table { - AgP1 Sg => "lili nnifsi" ; - AgP2 Sg => "lilek innifsek" ; - AgP3Sg Masc => "lilu nnifsu" ; - AgP3Sg Fem => "lila nnifisha" ; - AgP1 Pl => "lilna nfusna" ; - AgP2 Pl => "lilkom infuskom" ; - AgP3Pl => "lilhom infushom" + -- AgP1 Sg => "lili nnifsi" ; + -- AgP2 Sg => "lilek innifsek" ; + -- AgP3Sg Masc => "lilu nnifsu" ; + -- AgP3Sg Fem => "lila nnifisha" ; + -- AgP1 Pl => "lilna nfusna" ; + -- AgP2 Pl => "lilkom infuskom" ; + -- AgP3Pl => "lilhom infushom" + AgP1 Sg => "nnifsi" ; + AgP2 Sg => "innifsek" ; + AgP3Sg Masc => "nnifsu" ; + AgP3Sg Fem => "nnifisha" ; + AgP1 Pl => "nfusna" ; + AgP2 Pl => "infuskom" ; + AgP3Pl => "infushom" } ; huwa : VAgr => Str = table { diff --git a/lib/src/maltese/VerbMlt.gf b/lib/src/maltese/VerbMlt.gf index 609bb244f..46d5f1bcb 100644 --- a/lib/src/maltese/VerbMlt.gf +++ b/lib/src/maltese/VerbMlt.gf @@ -5,7 +5,7 @@ -- Angelo Zammit 2012 -- Licensed under LGPL -concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in { +concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt, Maybe in { flags optimize=all_subs ; lin @@ -136,12 +136,12 @@ concrete VerbMlt of Verb = CatMlt ** open Prelude, ResMlt in { -- VPSlash -> VP -- love himself - ReflVP vpslash = insertObjPre (\\agr => vpslash.s2 ! agr ++ reflPron ! toVAgr agr) vpslash ; + ReflVP vpslash = insertObjPre (\\agr => vpslash.s2 ! agr ++ prep_lil.enclitic ! agr ++ reflPron ! toVAgr agr) vpslash ; -- V2 -> VP -- be loved - PassV2 v2 = case v2.hasPastPart of { - True => insertObj (\\agr => (v2.s ! VPastPart (toGenNum agr)).s1 ++ v2.c2.s ! Definite) CopulaVP ; + PassV2 v2 = case exists Participle v2.pastPart of { + True => insertObj (\\agr => (fromJust Participle v2.pastPart ! (toGenNum agr)) ++ v2.c2.s ! Definite) CopulaVP ; False => insertObj (\\agr => (v2.s ! VPerf (toVAgr agr)).s1 ++ v2.c2.s ! Definite) CopulaVP } ;