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";