From 6bc6f211bf8ddec155fa90e6e518350054c05d9d Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 29 Mar 2019 11:55:43 +0100 Subject: [PATCH 1/3] (Pes) Add passive construction --- src/persian/LexiconPes.gf | 1 - src/persian/MorphoPes.gf | 11 +++++++++-- src/persian/ParadigmsPes.gf | 2 ++ src/persian/ResPes.gf | 15 ++++++++++++++- src/persian/VerbPes.gf | 6 +++--- 5 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/persian/LexiconPes.gf b/src/persian/LexiconPes.gf index 3073cef97..e5cc52626 100644 --- a/src/persian/LexiconPes.gf +++ b/src/persian/LexiconPes.gf @@ -369,7 +369,6 @@ concrete LexiconPes of Lexicon = CatPes ** uncertain_A = mkA "نامعلوم" ["با تردید"]; oper - doVerb = mkV "کردن" "کن" ; takeVerb = mkV "گرفتن" "گیر" ; hitVerb = mkV "زدن" "زن" ; giveVerb = mkV "دادن" "ده" ; diff --git a/src/persian/MorphoPes.gf b/src/persian/MorphoPes.gf index 9d59ab1f1..24b4dd896 100644 --- a/src/persian/MorphoPes.gf +++ b/src/persian/MorphoPes.gf @@ -179,6 +179,8 @@ param | VImp Polarity Number -- bekon,bekonid/nakon,nakonid ; + Passive = Add -- ateš zadan -> ateš zade šodan + | Replace ; -- gom kardan -> gom ∅ šodan oper impRoot : Str -> Str = \root -> case root of { st + "ی" => st ; @@ -203,7 +205,8 @@ oper VImp Pos Pl => addBh imp + "ید" ; VImp Neg Sg => addN imp ; VImp Neg Pl => addN imp + "ید" } ; - prefix = [] -- For compound verbs + prefix = [] ;-- For compound verbs + passive = Add ; } where { kard = tk 1 kardan ; kardeh = kard + "ه" ; @@ -227,7 +230,7 @@ oper } ; -- oper - Verb = {s : VerbForm => Str ; prefix : Str} ; + Verb = {s : VerbForm => Str ; prefix : Str ; passive : Passive} ; -- Verbs that end in یدن, ادن or ودن -- Also some verbs that don't: دانستن with stem دان @@ -329,4 +332,8 @@ oper vf => beRegV.s ! vf } } where { beRegV = mkVerb "بودن" "باش" } ; + doVerb = mkVerb "کردن" "کن" ** {passive=Replace} ; + + becomeVerb : Verb = mkVerb "شدن" "شو" ; + } diff --git a/src/persian/ParadigmsPes.gf b/src/persian/ParadigmsPes.gf index 75531d9ad..c9681d7c1 100644 --- a/src/persian/ParadigmsPes.gf +++ b/src/persian/ParadigmsPes.gf @@ -112,6 +112,8 @@ oper = lin V M.haveVerb ; beVerb : V -- The verb "be", to be used for light verb constructions: e.g. compoundV "عاشق" beVerb. = lin V M.beVerb ; + doVerb : V -- The verb "do", to be used for light verb constructions. In passive, is replaced by شدن. + = lin V M.doVerb ; mkV2 : overload { mkV2 : Str -> V2 ; -- Predictable V2 out of string. No preposition, را for direct object. diff --git a/src/persian/ResPes.gf b/src/persian/ResPes.gf index e36006993..289247f43 100644 --- a/src/persian/ResPes.gf +++ b/src/persian/ResPes.gf @@ -131,7 +131,20 @@ oper predVc : (Verb ** {c2 : Compl}) -> VPHSlash = \verb -> predV verb ** vs verb.c2 ; ---------------------- + passV : Verb -> VPH = \v -> predV v ** { + s = becomeVerb.s ; + prefix = case v.passive of { + Add => v.s ! PerfStem ++ v.prefix ; + Replace => v.prefix + } ; + -- s = table { + -- ImpPrefix p => becomeVerb.s ! ImpPrefix p ; + -- x => case verb.passive of { + -- Add => verb.s ! PerfStem ; + -- Replace => []} + -- ++ becomeVerb.s ! x } + } ; +-- --------------------- -- VP complementation --------------------- appComp : Compl -> (Mod=>Str) -> Str = \c2,obj -> diff --git a/src/persian/VerbPes.gf b/src/persian/VerbPes.gf index 5b2a14e9c..cff7d80d3 100644 --- a/src/persian/VerbPes.gf +++ b/src/persian/VerbPes.gf @@ -52,12 +52,12 @@ concrete VerbPes of Verb = CatPes ** open ResPes,Prelude in { AdvVP vp adv = insertAdV adv.s vp ; AdVVP adv vp = insertAdV adv.s vp ; - ReflVP v = insertCompPre reflPron v ; - PassV2 v = predV v ; -- need to be fixed + ReflVP = insertCompPre reflPron ; + PassV2 = passV ; UseComp comp = insertComp comp.s (predV beVerb) ; CompAP ap = {s = \\_ => ap.s ! Bare} ; -- check form of adjective - CompAdv adv = {s = \\_ => adv.s } ; + CompAdv adv = {s = \\_ => adv.s} ; -- see https://sites.la.utexas.edu/persian_online_resources/nouns/noun-in-a-predicative-position/ CompCN cn = { From c6a9434da4f882f3bb4c31897ed8fbe96815223c Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 29 Mar 2019 11:56:05 +0100 Subject: [PATCH 2/3] (Pes) use zero-width non-joiner in all_Predet --- src/persian/StructuralPes.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/persian/StructuralPes.gf b/src/persian/StructuralPes.gf index 139723ca7..6ecc2817f 100644 --- a/src/persian/StructuralPes.gf +++ b/src/persian/StructuralPes.gf @@ -7,7 +7,7 @@ concrete StructuralPes of Structural = CatPes ** lin above_Prep = mkPrep "بالای" ; after_Prep = mkPrep ["بعد از"] ; - all_Predet = ss ["همه ی"] ; + all_Predet = ss (zwnj "همه" "ی") ; almost_AdA, almost_AdN = ss "تقریباً" ; although_Subj = mkSubj "با وجود این" ; always_AdV = ss "همیشه" ; From 0e24f1c58a9103d325e14ced3740af9e78dfac8e Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 29 Mar 2019 15:44:36 +0100 Subject: [PATCH 3/3] (Pes) add defVV + cleanup --- src/persian/ParadigmsPes.gf | 4 +++- src/persian/ResPes.gf | 6 ------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/persian/ParadigmsPes.gf b/src/persian/ParadigmsPes.gf index c9681d7c1..e2d927a3b 100644 --- a/src/persian/ParadigmsPes.gf +++ b/src/persian/ParadigmsPes.gf @@ -31,7 +31,7 @@ oper Mod : Type ; -- Argument to mkDet and mkPrep ezafe : Mod ; -- e.g. mkPrep "برای" ezafe -- poss : Mod ; -- TODO is this needed? - --clitic : Mod ; -- TODO is this needed? + -- clitic : Mod ; -- TODO is this needed? --2 Nouns mkN : overload { @@ -164,6 +164,8 @@ oper = \isAux,vvf,v -> v ** {isAux = isAux ; compl = vvf ; isDef = False} } ; + defVV : VV -> VV = \vv -> vv ** {isDef=True} ; + mkV2V = overload { mkV2V : V -> (cN : Str) -> (isAux : Bool) -> V2V -- Verb, complementiser for the noun, whether it's auxiliary. = \v,s,b -> let vv : VV = mkVV b subjunctive v in diff --git a/src/persian/ResPes.gf b/src/persian/ResPes.gf index 289247f43..22b3bbc1c 100644 --- a/src/persian/ResPes.gf +++ b/src/persian/ResPes.gf @@ -137,12 +137,6 @@ oper Add => v.s ! PerfStem ++ v.prefix ; Replace => v.prefix } ; - -- s = table { - -- ImpPrefix p => becomeVerb.s ! ImpPrefix p ; - -- x => case verb.passive of { - -- Add => verb.s ! PerfStem ; - -- Replace => []} - -- ++ becomeVerb.s ! x } } ; -- --------------------- -- VP complementation