forked from GitHub/gf-core
ParseHinUrd
This commit is contained in:
@@ -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 ->
|
||||
|
||||
@@ -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 ->
|
||||
<CPast,Sg,Pers1,Fem > => "تھی" ;
|
||||
<CPast,Sg,Pers2_Casual,Masc > => "تھا" ;
|
||||
<CPast,Sg,Pers2_Casual,Fem > => "تھی" ;
|
||||
<CPast,Sg,Pers2_Familiar,Masc > => "تh-ا" ;
|
||||
<CPast,Sg,Pers2_Familiar,Masc > => "تھا" ;
|
||||
<CPast,Sg,Pers2_Familiar,Fem > => "تھی" ;
|
||||
<CPast,Sg,Pers2_Respect,Masc > => "تھے" ;
|
||||
<CPast,Sg,Pers2_Respect,Fem > => "تھیں" ;
|
||||
<CPast,Sg,Pers3_Near,Masc > => "تh-ا" ;
|
||||
<CPast,Sg,Pers3_Near,Masc > => "تھا" ;
|
||||
<CPast,Sg,Pers3_Near,Fem > => "تھی" ;
|
||||
<CPast,Sg,Pers3_Distant,Masc > => "تh-ا" ;
|
||||
<CPast,Sg,Pers3_Distant,Masc > => "تھا" ;
|
||||
<CPast,Sg,Pers3_Distant,Fem > => "تھی" ;
|
||||
<CPast,Pl,Pers1,Masc > => "تھے" ;
|
||||
<CPast,Pl,Pers1,Fem > => "تھیں" ;
|
||||
|
||||
@@ -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 -> {
|
||||
<Subj,_,_,_> => (mkImpert root p n g).s ;
|
||||
<Perf,_,_,_> => 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 };
|
||||
<Imperf,Pers2_Familiar,Sg,Masc> => root + "تے";
|
||||
<Imperf,Pers2_Familiar,Sg,Fem> => root + "تی"; --variants{root+"تی" ; root+"تیں"};
|
||||
<Imperf,Pers2_Familiar,Pl,Masc> => root + "تے";
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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 = <>} ;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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) ;
|
||||
|
||||
@@ -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 ->
|
||||
<CPast,Sg,Pers1,Fem > => "th'y" ;
|
||||
<CPast,Sg,Pers2_Casual,Masc > => "th'a" ;
|
||||
<CPast,Sg,Pers2_Casual,Fem > => "th'y" ;
|
||||
<CPast,Sg,Pers2_Familiar,Masc > => "th-a" ;
|
||||
<CPast,Sg,Pers2_Familiar,Masc > => "th'a" ;
|
||||
<CPast,Sg,Pers2_Familiar,Fem > => "th'y" ;
|
||||
<CPast,Sg,Pers2_Respect,Masc > => "th'E" ;
|
||||
<CPast,Sg,Pers2_Respect,Fem > => "th'yN" ;
|
||||
<CPast,Sg,Pers3_Near,Masc > => "th-a" ;
|
||||
<CPast,Sg,Pers3_Near,Masc > => "th'a" ;
|
||||
<CPast,Sg,Pers3_Near,Fem > => "th'y" ;
|
||||
<CPast,Sg,Pers3_Distant,Masc > => "th-a" ;
|
||||
<CPast,Sg,Pers3_Distant,Masc > => "th'a" ;
|
||||
<CPast,Sg,Pers3_Distant,Fem > => "th'y" ;
|
||||
<CPast,Pl,Pers1,Masc > => "th'E" ;
|
||||
<CPast,Pl,Pers1,Fem > => "th'yN" ;
|
||||
|
||||
@@ -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 -> {
|
||||
<Subj,_,_,_> => (mkImpert root p n g).s ;
|
||||
<Perf,_,_,_> => 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 };
|
||||
<Imperf,Pers2_Familiar,Sg,Masc> => root + "tE";
|
||||
<Imperf,Pers2_Familiar,Sg,Fem> => root + "ty"; --variants{root+"ty" ; root+"tyN"};
|
||||
<Imperf,Pers2_Familiar,Pl,Masc> => root + "tE";
|
||||
|
||||
Reference in New Issue
Block a user