diff --git a/src/persian/AdjectivePes.gf b/src/persian/AdjectivePes.gf index cad4b4a9a..ca7bed159 100644 --- a/src/persian/AdjectivePes.gf +++ b/src/persian/AdjectivePes.gf @@ -43,7 +43,8 @@ concrete AdjectivePes of Adjective = CatPes ** open ResPes, Prelude in { AdjOrd ord = { s = \\_ => ord.s ; adv = ord.s ; - isPre = ord.isPre + isPre = ord.isPre ; + afterPrefix = False ; } ; AdvAP ap adv = ap ** { diff --git a/src/persian/ConjunctionPes.gf b/src/persian/ConjunctionPes.gf index 1aa4a2e35..86cda5cd2 100644 --- a/src/persian/ConjunctionPes.gf +++ b/src/persian/ConjunctionPes.gf @@ -48,7 +48,7 @@ concrete ConjunctionPes of Conjunction = isCmpd : CmpdStatus; hasAdj : Bool ; compl : Number => Str} ; - [AP] = {s1,s2 : Mod => Str ; adv : Str ; isPre : Bool} ; + [AP] = {s1,s2 : Mod => Str ; adv : Str ; isPre,afterPrefix : Bool} ; [RS] = {s1,s2 : Agr => Str ; rp : RelPron => Str} ; oper diff --git a/src/persian/MorphoPes.gf b/src/persian/MorphoPes.gf index d5378f19a..2c294f37b 100644 --- a/src/persian/MorphoPes.gf +++ b/src/persian/MorphoPes.gf @@ -150,7 +150,8 @@ oper Adjective : Type = { s : Mod => Str ; adv : Str ; - isPre : Bool + isPre : Bool ; -- as attributive + afterPrefix : Bool ; -- as predicative, does it go between the prefix and the light verb } ; mkAdj : Str -> Str -> Adjective = \adj,adv -> { @@ -159,7 +160,7 @@ oper Clitic => mkEnclic adj ; Poss => mkPossStem adj } ; - adv = adv ; isPre = False + adv = adv ; isPre = False ; afterPrefix = True ; }; ------------------------------------------------------------------ diff --git a/src/persian/ParadigmsPes.gf b/src/persian/ParadigmsPes.gf index f0b4716e8..dd86f8e06 100644 --- a/src/persian/ParadigmsPes.gf +++ b/src/persian/ParadigmsPes.gf @@ -88,6 +88,7 @@ oper mkA : Str -> A ; -- Regular adjective, same form for adjective and adverb. mkA : (adj,adv : Str) -> A -- Different forms for adjective and adverb. } ; + prefixA : A -> A ; -- Adjective that comes before the noun mkA2 : (married,to : Str) -> A2 -- Takes string and complementiser, returns A2. = \a,c -> lin A2 (mkAdj a a ** {c2 = c}) ; @@ -303,6 +304,8 @@ oper = \a,c -> lin A2 (mkAdj a a ** {c2 = c}) } ; + prefixA a = a ** {isPre=True}; + preA : (adj,adv : Str) -> A = \adj,adv -> lin A ((mkAdj adj adv) ** {isPre=True}) ; diff --git a/src/persian/VerbPes.gf b/src/persian/VerbPes.gf index a31a610cc..50a037149 100644 --- a/src/persian/VerbPes.gf +++ b/src/persian/VerbPes.gf @@ -15,7 +15,11 @@ concrete VerbPes of Verb = CatPes ** open ResPes,Prelude in { ComplVV = insertVV ; ComplVS v s = embComp (conjThat ++ s.s ! v.compl) (predV v) ; ComplVQ v q = embComp (conjThat ++ q.s) (predV v) ; - ComplVA v ap = insertObj (appComp v.c2 ap.s) (predV v) ; -- check form of adjective + ComplVA v ap = let adjStr = appComp v.c2 ap.s in + case ap.afterPrefix of { + True => predV (v ** {prefix = v.prefix ++ adjStr}) ; + False => insertObj adjStr (predV v) -- check form of adjective + } ; SlashVV vv vps = vps ** ComplVV vv vps ; SlashV2S v s = predVc v ** embComp (conjThat ++ s.s ! Indic) (predV v) ;