diff --git a/lib/src/hindi/DiffHin.gf b/lib/src/hindi/DiffHin.gf index e25a34d8a..781ba68c0 100644 --- a/lib/src/hindi/DiffHin.gf +++ b/lib/src/hindi/DiffHin.gf @@ -34,8 +34,9 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; VPPerfPresCont => {fin = copula CPresent n p g ; inf = (vp.s ! VPTense VPPres agr).inf ++ raha g n } ; VPPerfPastCont => {fin = copula CPast n p g ; inf = (vp.s ! VPTense VPPres agr).inf ++ raha g n } ; VPPerfFutCont => {fin = [] ; inf = Prelude.glue ((vp.s ! VPTense VPPres agr).inf ++ raha g n ++ hw p n) (copula CFuture n p g) } ; - VPSubj => case vp.prog of { True => {fin = (vp.s ! VPTense VPFutr agr).inf ++ hw p n ; inf = "शायद" } ; - _ => {fin = (vp.s ! VPTense VPFutr agr).inf ; inf = "शायद" } } + -- VPSubj => case vp.prog of { True => {fin = (vp.s ! VPTense VPFutr agr).inf ++ hw p n ; inf = "शायद" } ; + VPSubj => case vp.prog of { True => {fin = Prelude.glue ((vp.s ! VPTense VPFutr agr).inf ++ hw p n) (copula CFuture n p g) ; inf =[] } ; + _ => {fin = Prelude.glue (vp.s ! VPTense VPFutr agr).inf (copula CFuture n p g); inf = [] } } }; @@ -54,8 +55,8 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; Neg => "नहीं" }; in case vt of { - VPSubj => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ na ++ vps.inf ++ vps.fin ++ vp.embComp ; - _ => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; + VPSubj => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ vp.cvp ++ na ++ vps.inf ++ vps.fin ++ vp.embComp ; + _ => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ vp.cvp ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; } ; @@ -79,7 +80,7 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; VPPerfPresCont => {fin = copula CPresent n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ; VPPerfPastCont => {fin = copula CPast n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ; VPPerfFutCont => {fin = [] ; inf = Prelude.glue ((vp.s ! VPStem).inf ++ raha g n ++ hw p n) (copula CFuture n p g) } ; - VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "शायद" } + VPSubj => {fin = Prelude.glue (insertSubj p (vp.s ! VPStem).inf) (copula CFuture n p g ); inf = [] } }; @@ -97,8 +98,8 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; Neg => "नहीं" }; in case t of { - VPSubj => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ na ++ vps.inf ++ vps.fin ++ vp.embComp; - _ => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; + VPSubj => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ vp.cvp ++ na ++ vps.inf ++ vps.fin ++ vp.embComp; + _ => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ vp.cvp ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; } ; np2pronCase ppf npc a = case npc of { @@ -127,7 +128,7 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; waN = "वाँ" ; -- check with prasad hE = "हे" ; comma = "," ; - indfArt = "एक" ; -- check with prasad + indfArt = "" ; -- removed kwd = "ख़ुद" ; -- check with prasad oper diff --git a/lib/src/hindi/MorphoHin.gf b/lib/src/hindi/MorphoHin.gf index ebceee0b7..40937c843 100644 --- a/lib/src/hindi/MorphoHin.gf +++ b/lib/src/hindi/MorphoHin.gf @@ -346,7 +346,8 @@ oper Inf_Fem => inf_fem - } + } ; + cvp = [] } ; rem_y : Str -> Str; rem_y str = let b = take 1 str; yth = drop 1 str; a1 = take 4 yth; a2 = take 1 yth; th= if_then_else Str (eq a1 "(a)य") (drop 5 str) (drop 2 str); st = if_then_else Str (eq a1 "(a)य") (b ++ "(i)"++th) (if_then_else Str (eq a2 "य") (b ++ th) str) @@ -400,54 +401,54 @@ oper mkPastInd : Str -> UPerson -> Number -> Gender -> {s:Str} = \root,p,n,g -> {s = let roo = root ; a = case (last root) of { - "ा"|"ो"|"ी" => "या" ; - "े" => (tk 1 roo) + "िया" ; - _ => "ा" + "ा"|"ो"|"ी" => roo + "या" ; + "े" => (tk 1 roo) + "िया" ; --* here is the problem + _ => roo + "ा" } ; y = case (last root) of { - "ा"|"ो" => "यी" ; - "ी" => "" ; + "ा"|"ो" => roo + "यी" ; + "ी" => roo ; "े" => (tk 1 roo) + "ी" ; "िय" => (tk 2 roo) + "ी" ; - _ => "ी" + _ => roo + "ी" } ; e = case (last root) of { - "ा"|"ो"|"ी"|"क" => "ये" ; + "ा"|"ो"|"ी"|"क" => roo + "ये" ; "े" => (tk 1 roo) + "ी" ; - _ => "े" + _ => roo + "े" } ; yN = case (last root) of { - "ा"|"ो"|"ी" => "यीँ" ; + "ा"|"ो"|"ी" => roo + "यीँ" ; "िय" => (tk 2 roo) + "ी" ; "े" => (tk 1 roo) + "ीँ" ; - _ => "यँ" + _ => roo + "यँ" } ; in case of { - => roo+a ; - => roo+y ; - => roo+e ; - => roo+yN ; + => a ; --* + => y ; + => e ; + => yN ; - => roo+a ; - => roo+y ; - => roo+e ; - => roo+yN ; + => a ; --* + => y ; + => e ; + => yN ; - => roo+e ; - => roo+y; --variants{roo+y ; roo+yN} ; - => roo+e ; - => roo+yN ; + => e ; + => y; --variants{roo+y ; roo+yN} ; + => e ; + => yN ; - => roo+e ; - => roo+yN; --variants{roo+yN ; roo+y} ; - => roo+e ; - => roo+yN ; - <_,Sg,Masc> => roo + a; - <_,Sg,Fem> => roo+y ; - <_,Pl,Masc> => roo + e; - <_,Pl,Fem> => roo+yN + => e ; + => yN; --variants{roo+yN ; roo+y} ; + => e ; + => yN ; + <_,Sg,Masc> => a; --* + <_,Sg,Fem> => y ; + <_,Pl,Masc> => e; + <_,Pl,Fem> => yN } ; } ; diff --git a/lib/src/hindi/ParadigmsHin.gf b/lib/src/hindi/ParadigmsHin.gf index cbea78561..747e68557 100644 --- a/lib/src/hindi/ParadigmsHin.gf +++ b/lib/src/hindi/ParadigmsHin.gf @@ -103,8 +103,8 @@ oper -- compund verbs compoundV = overload { - compoundV : Str -> V -> V = \s,v -> {s = \\vf => s ++ v.s ! vf ; lock_V = <>} ; - compoundV : Str -> V2 -> V = \s,v -> {s = \\vf => s ++ v.s ! vf ; lock_V = <>} ; + compoundV : Str -> V -> V = \s,v -> {s = \\vf => v.s ! vf ; cvp = s ; lock_V = <>} ; + compoundV : Str -> V2 -> V = \s,v -> {s = \\vf => v.s ! vf ; cvp = s ; lock_V = <>} ; }; diff --git a/lib/src/hindi/src/DiffHin.gf b/lib/src/hindi/src/DiffHin.gf index 64490f5f8..1a780a299 100644 --- a/lib/src/hindi/src/DiffHin.gf +++ b/lib/src/hindi/src/DiffHin.gf @@ -34,8 +34,9 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; VPPerfPresCont => {fin = copula CPresent n p g ; inf = (vp.s ! VPTense VPPres agr).inf ++ raha g n } ; VPPerfPastCont => {fin = copula CPast n p g ; inf = (vp.s ! VPTense VPPres agr).inf ++ raha g n } ; VPPerfFutCont => {fin = [] ; inf = Prelude.glue ((vp.s ! VPTense VPPres agr).inf ++ raha g n ++ hw p n) (copula CFuture n p g) } ; - VPSubj => case vp.prog of { True => {fin = (vp.s ! VPTense VPFutr agr).inf ++ hw p n ; inf = "s*a:yd" } ; - _ => {fin = (vp.s ! VPTense VPFutr agr).inf ; inf = "s*a:yd" } } + -- VPSubj => case vp.prog of { True => {fin = (vp.s ! VPTense VPFutr agr).inf ++ hw p n ; inf = "s*a:yd" } ; + VPSubj => case vp.prog of { True => {fin = Prelude.glue ((vp.s ! VPTense VPFutr agr).inf ++ hw p n) (copula CFuture n p g) ; inf =[] } ; + _ => {fin = Prelude.glue (vp.s ! VPTense VPFutr agr).inf (copula CFuture n p g); inf = [] } } }; @@ -54,8 +55,8 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; Neg => "nahi:m." }; in case vt of { - VPSubj => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ na ++ vps.inf ++ vps.fin ++ vp.embComp ; - _ => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; + VPSubj => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ vp.cvp ++ na ++ vps.inf ++ vps.fin ++ vp.embComp ; + _ => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ vp.cvp ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; } ; @@ -79,7 +80,7 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; VPPerfPresCont => {fin = copula CPresent n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ; VPPerfPastCont => {fin = copula CPast n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ; VPPerfFutCont => {fin = [] ; inf = Prelude.glue ((vp.s ! VPStem).inf ++ raha g n ++ hw p n) (copula CFuture n p g) } ; - VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "s*a:yd" } + VPSubj => {fin = Prelude.glue (insertSubj p (vp.s ! VPStem).inf) (copula CFuture n p g ); inf = [] } }; @@ -97,8 +98,8 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; Neg => "nahi:m." }; in case t of { - VPSubj => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ na ++ vps.inf ++ vps.fin ++ vp.embComp; - _ => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; + VPSubj => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ vp.cvp ++ na ++ vps.inf ++ vps.fin ++ vp.embComp; + _ => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ vp.cvp ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; } ; np2pronCase ppf npc a = case npc of { @@ -127,7 +128,7 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; waN = "va:n~" ; -- check with prasad hE = "he:" ; comma = "," ; - indfArt = "E:k" ; -- check with prasad + indfArt = "" ; -- removed kwd = "xud" ; -- check with prasad oper diff --git a/lib/src/hindi/src/MorphoHin.gf b/lib/src/hindi/src/MorphoHin.gf index 3f04ff86f..22e3cdea9 100644 --- a/lib/src/hindi/src/MorphoHin.gf +++ b/lib/src/hindi/src/MorphoHin.gf @@ -346,7 +346,8 @@ oper Inf_Fem => inf_fem - } + } ; + cvp = [] } ; rem_y : Str -> Str; rem_y str = let b = take 1 str; yth = drop 1 str; a1 = take 4 yth; a2 = take 1 yth; th= if_then_else Str (eq a1 "(a)y") (drop 5 str) (drop 2 str); st = if_then_else Str (eq a1 "(a)y") (b ++ "(i)"++th) (if_then_else Str (eq a2 "y") (b ++ th) str) @@ -400,54 +401,54 @@ oper mkPastInd : Str -> UPerson -> Number -> Gender -> {s:Str} = \root,p,n,g -> {s = let roo = root ; a = case (last root) of { - "a:"|"o:"|"i:" => "ya:" ; - "e:" => (tk 1 roo) + "iya:" ; - _ => "a:" + "a:"|"o:"|"i:" => roo + "ya:" ; + "e:" => (tk 1 roo) + "iya:" ; --* here is the problem + _ => roo + "a:" } ; y = case (last root) of { - "a:"|"o:" => "yi:" ; - "i:" => "" ; + "a:"|"o:" => roo + "yi:" ; + "i:" => roo ; "e:" => (tk 1 roo) + "i:" ; "iy" => (tk 2 roo) + "i:" ; - _ => "i:" + _ => roo + "i:" } ; e = case (last root) of { - "a:"|"o:"|"i:"|"k" => "ye:" ; + "a:"|"o:"|"i:"|"k" => roo + "ye:" ; "e:" => (tk 1 roo) + "i:" ; - _ => "e:" + _ => roo + "e:" } ; yN = case (last root) of { - "a:"|"o:"|"i:" => "yi:n~" ; + "a:"|"o:"|"i:" => roo + "yi:n~" ; "iy" => (tk 2 roo) + "i:" ; "e:" => (tk 1 roo) + "i:n~" ; - _ => "yn~" + _ => roo + "yn~" } ; in case of { - => roo+a ; - => roo+y ; - => roo+e ; - => roo+yN ; + => a ; --* + => y ; + => e ; + => yN ; - => roo+a ; - => roo+y ; - => roo+e ; - => roo+yN ; + => a ; --* + => y ; + => e ; + => yN ; - => roo+e ; - => roo+y; --variants{roo+y ; roo+yN} ; - => roo+e ; - => roo+yN ; + => e ; + => y; --variants{roo+y ; roo+yN} ; + => e ; + => yN ; - => roo+e ; - => roo+yN; --variants{roo+yN ; roo+y} ; - => roo+e ; - => roo+yN ; - <_,Sg,Masc> => roo + a; - <_,Sg,Fem> => roo+y ; - <_,Pl,Masc> => roo + e; - <_,Pl,Fem> => roo+yN + => e ; + => yN; --variants{roo+yN ; roo+y} ; + => e ; + => yN ; + <_,Sg,Masc> => a; --* + <_,Sg,Fem> => y ; + <_,Pl,Masc> => e; + <_,Pl,Fem> => yN } ; } ; diff --git a/lib/src/hindustani/CommonHindustani.gf b/lib/src/hindustani/CommonHindustani.gf index 4eb52fd37..22657af02 100644 --- a/lib/src/hindustani/CommonHindustani.gf +++ b/lib/src/hindustani/CommonHindustani.gf @@ -19,6 +19,7 @@ resource CommonHindustani = ParamX ** open Prelude, Predef in { ad : Str; embComp : Str ; prog : Bool ; + cvp : Str ; } ; NP : Type = {s : NPCase => Str ; a : Agr} ; param @@ -155,7 +156,7 @@ resource CommonHindustani = ParamX ** open Prelude, Predef in { Adjective = { s: Number => Gender => Case => Degree => Str }; - Verb : Type = {s : VerbForm => Str} ; + Verb : Type = {s : VerbForm => Str ; cvp : Str} ; defaultAgr : Agr = agrP3 Masc Sg ; agrP3 : Gender -> Number -> Agr = \g,n -> Ag g n Pers3_Distant ; toAgr : Number -> UPerson -> Gender -> Agr = \n,p,g -> diff --git a/lib/src/hindustani/ResHindustani.gf b/lib/src/hindustani/ResHindustani.gf index 0b64ddd66..c0bd6acc7 100644 --- a/lib/src/hindustani/ResHindustani.gf +++ b/lib/src/hindustani/ResHindustani.gf @@ -127,7 +127,8 @@ param ad = []; embComp = []; prog = False ; - comp = \\_ => [] + comp = \\_ => [] ; + cvp = v.cvp } ; predAux : Aux -> VPH = \verb -> { s = \\vh => @@ -150,7 +151,8 @@ param ad = []; embComp = []; prog = False ; - comp = \\_ => [] + comp = \\_ => [] ; + cvp = [] } ; Aux = { @@ -179,7 +181,8 @@ param ad = verb.ad; embComp = verb.embComp; prog = True ; - comp = verb.comp + comp = verb.comp ; + cvp = verb.cvp } ; @@ -191,7 +194,8 @@ param ad = vp.ad; embComp = vp.embComp; prog = vp.prog ; - comp = \\a => vp.comp ! a ++ obj1 ! a + comp = \\a => vp.comp ! a ++ obj1 ! a ; + cvp = vp.cvp } ; insertVV : Str -> VPH -> Str -> VPH = \obj1,vp,emb -> { s = vp.s ; @@ -201,7 +205,8 @@ param ad = vp.ad; embComp = vp.embComp ++ emb ; prog = vp.prog ; - comp = \\a => vp.comp ! a ++ obj1 + comp = \\a => vp.comp ! a ++ obj1 ; + cvp = vp.cvp } ; insertObj2 : (Str) -> VPH -> VPH = \obj1,vp -> { @@ -212,7 +217,8 @@ param ad = vp.ad; embComp = vp.embComp ++ obj1; prog = vp.prog ; - comp = vp.comp + comp = vp.comp ; + cvp = vp.cvp } ; @@ -238,7 +244,8 @@ param ad = vps.ad; embComp = vps.embComp; prog = vps.prog ; - comp = vps.comp + comp = vps.comp ; + cvp = vps.cvp } ; insertObjPre : (Agr => Str) -> VPHSlash -> VPH = \obj,vp -> { @@ -249,7 +256,8 @@ param ad = vp.ad ; embComp = vp.embComp; prog = vp.prog ; - comp = \\a => obj ! a ++ vp.c2.s ++ vp.comp ! a + comp = \\a => obj ! a ++ vp.c2.s ++ vp.comp ! a ; + cvp = vp.cvp } ; insertAdV : Str -> VPH -> VPH = \ad,vp -> { @@ -260,7 +268,8 @@ param ad = vp.ad ++ ad ; embComp = vp.embComp; prog = vp.prog ; - comp = vp.comp + comp = vp.comp ; + cvp = vp.cvp } ; -- conjThat : Str = "kh" ; @@ -273,7 +282,8 @@ param ad = vp.ad; embComp = vp.embComp ++ emb; prog = vp.prog ; - comp = vp.comp + comp = vp.comp ; + cvp = vp.cvp ; } ; insertTrans : VPH -> VType -> VPH = \vp,vtype -> { s = vp.s ; @@ -283,7 +293,8 @@ param ad = vp.ad; embComp = vp.embComp ; prog = vp.prog ; - comp = vp.comp + comp = vp.comp ; + cvp = vp.cvp } ; compoundAdj : Str -> Str -> Adjective = \s1,s2 -> mkCompoundAdj (regAdjective s1) (regAdjective s2) ; diff --git a/lib/src/urdu/CommonHindustani.gf b/lib/src/urdu/CommonHindustani.gf index 04cb47c79..5bf6cf3d7 100644 --- a/lib/src/urdu/CommonHindustani.gf +++ b/lib/src/urdu/CommonHindustani.gf @@ -19,6 +19,7 @@ resource CommonHindustani = ParamX ** open Prelude, Predef in { ad : Str; embComp : Str ; prog : Bool ; + cvp : Str ; } ; NP : Type = {s : NPCase => Str ; a : Agr} ; param @@ -155,7 +156,7 @@ resource CommonHindustani = ParamX ** open Prelude, Predef in { Adjective = { s: Number => Gender => Case => Degree => Str }; - Verb : Type = {s : VerbForm => Str} ; + Verb : Type = {s : VerbForm => Str ; cvp : Str} ; defaultAgr : Agr = agrP3 Masc Sg ; agrP3 : Gender -> Number -> Agr = \g,n -> Ag g n Pers3_Distant ; toAgr : Number -> UPerson -> Gender -> Agr = \n,p,g -> diff --git a/lib/src/urdu/DiffUrd.gf b/lib/src/urdu/DiffUrd.gf index a4aa608dd..8aaddfbbd 100644 --- a/lib/src/urdu/DiffUrd.gf +++ b/lib/src/urdu/DiffUrd.gf @@ -56,8 +56,8 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; Neg => "نہیں" }; in case vt of { - VPSubj => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ na ++ vps.inf ++ vps.fin ++ vp.embComp ; - _ => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; + VPSubj => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ vp.cvp ++ na ++ vps.inf ++ vps.fin ++ vp.embComp ; + _ => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ vp.cvp ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; } ; @@ -99,8 +99,8 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; Neg => "نہیں" }; in case t of { - VPSubj => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ na ++ vps.inf ++ vps.fin ++ vp.embComp; - _ => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; + VPSubj => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ vp.cvp ++ na ++ vps.inf ++ vps.fin ++ vp.embComp; + _ => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ vp.cvp ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; } ; @@ -132,7 +132,7 @@ conjThat = "كہ" ; waN = "واں" ; hE = "ہے" ; comma = "," ; - indfArt = "اك" ; + indfArt = "" ; kwd = "خود" ; copula : CTense -> Number -> UPerson -> Gender -> Str = \t,n,p,g -> @@ -153,13 +153,13 @@ copula : CTense -> Number -> UPerson -> Gender -> Str = \t,n,p,g -> => "تھی" ; => "تھا" ; => "تھی" ; - => "تh-ا" ; + => "تھا" ; => "تھی" ; => "تھے" ; => "تھیں" ; - => "تh-ا" ; + => "تھا" ; => "تھی" ; - => "تh-ا" ; + => "تھا" ; => "تھی" ; => "تھے" ; => "تھیں" ; diff --git a/lib/src/urdu/MorphoUrd.gf b/lib/src/urdu/MorphoUrd.gf index 6362268bf..21a6e2bcb 100644 --- a/lib/src/urdu/MorphoUrd.gf +++ b/lib/src/urdu/MorphoUrd.gf @@ -365,7 +365,8 @@ makeIQuant : Str -> {s : Number => Gender => Case => Str} = \str -> { Inf_Fem => inf_fem - } + }; + cvp = [] } ; rem_y : Str -> Str; rem_y str = let b = take 1 str; yth = drop 1 str; a1 = take 4 yth; a2 = take 1 yth; th= if_then_else Str (eq a1 "(a)ی") (drop 5 str) (drop 2 str); st = if_then_else Str (eq a1 "(a)ی") (b ++ "(i)"++th) (if_then_else Str (eq a2 "ی") (b ++ th) str) @@ -390,11 +391,11 @@ makeIQuant : Str -> {s : Number => Gender => Case => Str} = \str -> { => (mkImpert root p n g).s ; => case root of { "ہو" => (mkPastInd root p n g).s ; - "جا" => (mkPastInd "گی" p n g).s ; - "كر" => (mkPastInd "ك" p n g).s ; - "دے" => (mkPastInd "د" p n g).s ; - "لے" => (mkPastInd "ل" p n g).s ; - _ => (mkPastInd root p n g).s }; + "جا" => (mkPastInd "گی" p n g).s ; + "كر" => (mkPastInd "ك" p n g).s ; + "دے" => (mkPastInd "د" p n g).s ; + "لے" => (mkPastInd "ل" p n g).s ; + _ => (mkPastInd root p n g).s }; => root + "تے"; => root + "تی"; --variants{root+"تی" ; root+"تیں"}; => root + "تے"; diff --git a/lib/src/urdu/NumeralUrd.gf b/lib/src/urdu/NumeralUrd.gf index 91f263134..2cba897db 100644 --- a/lib/src/urdu/NumeralUrd.gf +++ b/lib/src/urdu/NumeralUrd.gf @@ -2,7 +2,7 @@ -- Modification for Urdu Shafqat Virk -concrete NumeralUrd of Numeral = CatUrd [Digits, Numeral] ** open ResUrd,CommonHindustani,ParamX, Prelude in { +concrete NumeralUrd of Numeral = CatUrd ** open ResUrd,CommonHindustani,ParamX, Prelude in { flags coding=utf8 ; param DForm = unit | ten ; diff --git a/lib/src/urdu/ParadigmsUrd.gf b/lib/src/urdu/ParadigmsUrd.gf index 7e7e4fcdf..2ce707386 100644 --- a/lib/src/urdu/ParadigmsUrd.gf +++ b/lib/src/urdu/ParadigmsUrd.gf @@ -105,9 +105,9 @@ oper -- compund verbs compoundV = overload { compoundV : Str -> V -> V -- e.g barX hwna - = \s,v -> {s = \\vf => s ++ v.s ! vf ; lock_V = <>} ; + = \s,v -> {s = \\vf => v.s ! vf ; cvp = s ; lock_V = <>} ; compoundV : Str -> V2 -> V -- e.g bnd krna - = \s,v -> {s = \\vf => s ++ v.s ! vf ; lock_V = <>} ; + = \s,v -> {s = \\vf => v.s ! vf ; cvp = s ; lock_V = <>} ; }; diff --git a/lib/src/urdu/ResHindustani.gf b/lib/src/urdu/ResHindustani.gf index 9498cd3e5..069d70644 100644 --- a/lib/src/urdu/ResHindustani.gf +++ b/lib/src/urdu/ResHindustani.gf @@ -127,7 +127,8 @@ param ad = []; embComp = []; prog = False ; - comp = \\_ => [] + comp = \\_ => [] ; + cvp = v.cvp } ; predAux : Aux -> VPH = \verb -> { s = \\vh => @@ -150,7 +151,8 @@ param ad = []; embComp = []; prog = False ; - comp = \\_ => [] + comp = \\_ => [] ; + cvp = [] } ; Aux = { @@ -179,7 +181,8 @@ param ad = verb.ad; embComp = verb.embComp; prog = True ; - comp = verb.comp + comp = verb.comp ; + cvp = verb.cvp } ; @@ -191,7 +194,8 @@ param ad = vp.ad; embComp = vp.embComp; prog = vp.prog ; - comp = \\a => vp.comp ! a ++ obj1 ! a + comp = \\a => vp.comp ! a ++ obj1 ! a ; + cvp = vp.cvp } ; insertVV : Str -> VPH -> Str -> VPH = \obj1,vp,emb -> { s = vp.s ; @@ -201,7 +205,8 @@ param ad = vp.ad; embComp = vp.embComp ++ emb ; prog = vp.prog ; - comp = \\a => vp.comp ! a ++ obj1 + comp = \\a => vp.comp ! a ++ obj1 ; + cvp = vp.cvp } ; insertObj2 : (Str) -> VPH -> VPH = \obj1,vp -> { @@ -212,7 +217,8 @@ param ad = vp.ad; embComp = vp.embComp ++ obj1; prog = vp.prog ; - comp = vp.comp + comp = vp.comp ; + cvp = vp.cvp } ; @@ -238,7 +244,8 @@ param ad = vps.ad; embComp = vps.embComp; prog = vps.prog ; - comp = vps.comp + comp = vps.comp ; + cvp = vps.cvp } ; insertObjPre : (Agr => Str) -> VPHSlash -> VPH = \obj,vp -> { @@ -249,7 +256,8 @@ param ad = vp.ad ; embComp = vp.embComp; prog = vp.prog ; - comp = \\a => obj ! a ++ vp.c2.s ++ vp.comp ! a + comp = \\a => obj ! a ++ vp.c2.s ++ vp.comp ! a ; + cvp = vp.cvp } ; insertAdV : Str -> VPH -> VPH = \ad,vp -> { @@ -260,7 +268,8 @@ param ad = vp.ad ++ ad ; embComp = vp.embComp; prog = vp.prog ; - comp = vp.comp + comp = vp.comp ; + cvp = vp.cvp } ; -- conjThat : Str = "كہ" ; @@ -273,7 +282,8 @@ param ad = vp.ad; embComp = vp.embComp ++ emb; prog = vp.prog ; - comp = vp.comp + comp = vp.comp ; + cvp = vp.cvp ; } ; insertTrans : VPH -> VType -> VPH = \vp,vtype -> { s = vp.s ; @@ -283,7 +293,8 @@ param ad = vp.ad; embComp = vp.embComp ; prog = vp.prog ; - comp = vp.comp + comp = vp.comp ; + cvp = vp.cvp } ; compoundAdj : Str -> Str -> Adjective = \s1,s2 -> mkCompoundAdj (regAdjective s1) (regAdjective s2) ; diff --git a/lib/src/urdu/src/DiffUrd.gf b/lib/src/urdu/src/DiffUrd.gf index fb1b915ac..4c8f710e2 100644 --- a/lib/src/urdu/src/DiffUrd.gf +++ b/lib/src/urdu/src/DiffUrd.gf @@ -56,8 +56,8 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; Neg => "nhyN" }; in case vt of { - VPSubj => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ na ++ vps.inf ++ vps.fin ++ vp.embComp ; - _ => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; + VPSubj => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ vp.cvp ++ na ++ vps.inf ++ vps.fin ++ vp.embComp ; + _ => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ vp.cvp ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; } ; @@ -99,8 +99,8 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; Neg => "nhyN" }; in case t of { - VPSubj => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ na ++ vps.inf ++ vps.fin ++ vp.embComp; - _ => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; + VPSubj => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ vp.cvp ++ na ++ vps.inf ++ vps.fin ++ vp.embComp; + _ => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ vp.cvp ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp}; } ; @@ -132,7 +132,7 @@ conjThat = "kh" ; waN = "waN" ; hE = "hE" ; comma = "," ; - indfArt = "ak" ; + indfArt = "" ; kwd = "Kwd" ; copula : CTense -> Number -> UPerson -> Gender -> Str = \t,n,p,g -> @@ -153,13 +153,13 @@ copula : CTense -> Number -> UPerson -> Gender -> Str = \t,n,p,g -> => "th'y" ; => "th'a" ; => "th'y" ; - => "th-a" ; + => "th'a" ; => "th'y" ; => "th'E" ; => "th'yN" ; - => "th-a" ; + => "th'a" ; => "th'y" ; - => "th-a" ; + => "th'a" ; => "th'y" ; => "th'E" ; => "th'yN" ; diff --git a/lib/src/urdu/src/MorphoUrd.gf b/lib/src/urdu/src/MorphoUrd.gf index 6061cc974..5e5715954 100644 --- a/lib/src/urdu/src/MorphoUrd.gf +++ b/lib/src/urdu/src/MorphoUrd.gf @@ -365,7 +365,8 @@ makeIQuant : Str -> {s : Number => Gender => Case => Str} = \str -> { Inf_Fem => inf_fem - } + }; + cvp = [] } ; rem_y : Str -> Str; rem_y str = let b = take 1 str; yth = drop 1 str; a1 = take 4 yth; a2 = take 1 yth; th= if_then_else Str (eq a1 "(a)y") (drop 5 str) (drop 2 str); st = if_then_else Str (eq a1 "(a)y") (b ++ "(i)"++th) (if_then_else Str (eq a2 "y") (b ++ th) str) @@ -390,11 +391,11 @@ makeIQuant : Str -> {s : Number => Gender => Case => Str} = \str -> { => (mkImpert root p n g).s ; => case root of { "hw" => (mkPastInd root p n g).s ; - "ja" => (mkPastInd "gy" p n g).s ; - "kr" => (mkPastInd "k" p n g).s ; - "dE" => (mkPastInd "d" p n g).s ; - "lE" => (mkPastInd "l" p n g).s ; - _ => (mkPastInd root p n g).s }; + "ja" => (mkPastInd "gy" p n g).s ; + "kr" => (mkPastInd "k" p n g).s ; + "dE" => (mkPastInd "d" p n g).s ; + "lE" => (mkPastInd "l" p n g).s ; + _ => (mkPastInd root p n g).s }; => root + "tE"; => root + "ty"; --variants{root+"ty" ; root+"tyN"}; => root + "tE";