mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-15 15:59:32 -06:00
converted Urdu to utf8
This commit is contained in:
@@ -6,7 +6,7 @@ concrete AdjectiveUrd of Adjective = CatUrd ** open ResUrd, Prelude in {
|
||||
UseComparA a = a;
|
||||
|
||||
ComparA a np = {
|
||||
s = \\n,g,c,d => np.s ! NPC Obl ++ "sE" ++ a.s ! n ! g ! c ! d ;
|
||||
s = \\n,g,c,d => np.s ! NPC Obl ++ sE_Str ++ a.s ! n ! g ! c ! d ;
|
||||
} ;
|
||||
|
||||
---- $SuperlA$ belongs to determiner syntax in $Noun$.
|
||||
@@ -16,7 +16,7 @@ concrete AdjectiveUrd of Adjective = CatUrd ** open ResUrd, Prelude in {
|
||||
} ;
|
||||
|
||||
ReflA2 a = {
|
||||
s = \\n,g,c,d => a.s ! n ! g ! c ! d ++ RefPron ++ "sE" ;
|
||||
s = \\n,g,c,d => a.s ! n ! g ! c ! d ++ RefPron ++ sE_Str ;
|
||||
} ;
|
||||
|
||||
SentAP ap sc = {
|
||||
|
||||
@@ -15,6 +15,6 @@ concrete AdverbUrd of Adverb = CatUrd ** open ResUrd, Prelude in {
|
||||
|
||||
SubjS = cc2 ;
|
||||
|
||||
AdnCAdv cadv = {s = "sE" ++ cadv.s} ;
|
||||
AdnCAdv cadv = {s = sE_Str ++ cadv.s} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ concrete CatUrd of Cat = CommonX ** open ResUrd, Prelude in {
|
||||
IP = {s: Case => Str ; g : Gender ; n : Number};
|
||||
IDet = {s :Gender => Str ; n : Number} ;
|
||||
IQuant = {s : Number => Str} ;
|
||||
IComp = {s : Str} ;
|
||||
|
||||
---- Relative
|
||||
|
||||
@@ -54,7 +55,6 @@ concrete CatUrd of Cat = CommonX ** open ResUrd, Prelude in {
|
||||
Card = {s : Str; n : Number} ;
|
||||
Ord = {s : Str; n : Number} ;
|
||||
Quant = {s:Number => Gender => Case => Str ; a:Agr};
|
||||
Art = {s : Str} ;
|
||||
|
||||
---- Numeral
|
||||
|
||||
|
||||
@@ -1,164 +0,0 @@
|
||||
resource Coordination = open Prelude in {
|
||||
|
||||
param
|
||||
ListSize = TwoElem | ManyElem ;
|
||||
|
||||
oper
|
||||
ListX = {s1,s2 : Str} ;
|
||||
|
||||
twoStr : (x,y : Str) -> ListX = \x,y ->
|
||||
{s1 = x ; s2 = y} ;
|
||||
consStr : Str -> ListX -> Str -> ListX = \comma,xs,x ->
|
||||
{s1 = xs.s1 ++ comma ++ xs.s2 ; s2 = x } ;
|
||||
|
||||
twoSS : (_,_ : SS) -> ListX = \x,y ->
|
||||
twoStr x.s y.s ;
|
||||
consSS : Str -> ListX -> SS -> ListX = \comma,xs,x ->
|
||||
consStr comma xs x.s ;
|
||||
|
||||
Conjunction : Type = SS ;
|
||||
ConjunctionDistr : Type = {s1 : Str ; s2 : Str} ;
|
||||
|
||||
conjunctX : Conjunction -> ListX -> Str = \or,xs ->
|
||||
xs.s1 ++ or.s ++ xs.s2 ;
|
||||
|
||||
conjunctDistrX : ConjunctionDistr -> ListX -> Str = \or,xs ->
|
||||
or.s1 ++ xs.s1 ++ or.s2 ++ xs.s2 ;
|
||||
|
||||
conjunctSS : Conjunction -> ListX -> SS = \or,xs ->
|
||||
ss (xs.s1 ++ or.s ++ xs.s2) ;
|
||||
|
||||
conjunctDistrSS : ConjunctionDistr -> ListX -> SS = \or,xs ->
|
||||
ss (or.s1 ++ xs.s1 ++ or.s2 ++ xs.s2) ;
|
||||
|
||||
-- all this lifted to tables
|
||||
|
||||
ListTable : Type -> Type = \P -> {s1,s2 : P => Str} ;
|
||||
|
||||
twoTable : (P : Type) -> (_,_ : {s : P => Str}) -> ListTable P = \_,x,y ->
|
||||
{s1 = x.s ; s2 = y.s} ;
|
||||
|
||||
consTable : (P : Type) -> Str -> ListTable P -> {s : P => Str} -> ListTable P =
|
||||
\P,c,xs,x ->
|
||||
{s1 = table P {o => xs.s1 ! o ++ c ++ xs.s2 ! o} ; s2 = x.s} ;
|
||||
|
||||
conjunctTable : (P : Type) -> Conjunction -> ListTable P -> {s : P => Str} =
|
||||
\P,or,xs ->
|
||||
{s = table P {p => xs.s1 ! p ++ or.s ++ xs.s2 ! p}} ;
|
||||
|
||||
conjunctDistrTable :
|
||||
(P : Type) -> ConjunctionDistr -> ListTable P -> {s : P => Str} = \P,or,xs ->
|
||||
{s = table P {p => or.s1++ xs.s1 ! p ++ or.s2 ++ xs.s2 ! p}} ;
|
||||
|
||||
-- ... and to two- and three-argument tables: how clumsy! ---
|
||||
|
||||
ListTable2 : Type -> Type -> Type = \P,Q ->
|
||||
{s1,s2 : P => Q => Str} ;
|
||||
|
||||
twoTable2 : (P,Q : Type) -> (_,_ : {s : P => Q => Str}) -> ListTable2 P Q =
|
||||
\_,_,x,y ->
|
||||
{s1 = x.s ; s2 = y.s} ;
|
||||
|
||||
consTable2 :
|
||||
(P,Q : Type) -> Str -> ListTable2 P Q -> {s : P => Q => Str} -> ListTable2 P Q =
|
||||
\P,Q,c,xs,x ->
|
||||
{s1 = table P {p => table Q {q => xs.s1 ! p ! q ++ c ++ xs.s2 ! p! q}} ;
|
||||
s2 = x.s
|
||||
} ;
|
||||
|
||||
conjunctTable2 :
|
||||
(P,Q : Type) -> Conjunction -> ListTable2 P Q -> {s : P => Q => Str} =
|
||||
\P,Q,or,xs ->
|
||||
{s = table P {p => table Q {q => xs.s1 ! p ! q ++ or.s ++ xs.s2 ! p ! q}}} ;
|
||||
|
||||
conjunctDistrTable2 :
|
||||
(P,Q : Type) -> ConjunctionDistr -> ListTable2 P Q -> {s : P => Q => Str} =
|
||||
\P,Q,or,xs ->
|
||||
{s =
|
||||
table P {p => table Q {q => or.s1++ xs.s1 ! p ! q ++ or.s2 ++ xs.s2 ! p ! q}}} ;
|
||||
|
||||
ListTable3 : Type -> Type -> Type -> Type = \P,Q,R ->
|
||||
{s1,s2 : P => Q => R => Str} ;
|
||||
|
||||
twoTable3 : (P,Q,R : Type) -> (_,_ : {s : P => Q => R => Str}) ->
|
||||
ListTable3 P Q R =
|
||||
\_,_,_,x,y ->
|
||||
{s1 = x.s ; s2 = y.s} ;
|
||||
|
||||
consTable3 :
|
||||
(P,Q,R : Type) -> Str -> ListTable3 P Q R -> {s : P => Q => R => Str} ->
|
||||
ListTable3 P Q R =
|
||||
\P,Q,R,c,xs,x ->
|
||||
{s1 = \\p,q,r => xs.s1 ! p ! q ! r ++ c ++ xs.s2 ! p ! q ! r ;
|
||||
s2 = x.s
|
||||
} ;
|
||||
|
||||
conjunctTable3 :
|
||||
(P,Q,R : Type) -> Conjunction -> ListTable3 P Q R -> {s : P => Q => R => Str} =
|
||||
\P,Q,R,or,xs ->
|
||||
{s = \\p,q,r => xs.s1 ! p ! q ! r ++ or.s ++ xs.s2 ! p ! q ! r} ;
|
||||
|
||||
conjunctDistrTable3 :
|
||||
(P,Q,R : Type) -> ConjunctionDistr -> ListTable3 P Q R ->
|
||||
{s : P => Q => R => Str} =
|
||||
\P,Q,R,or,xs ->
|
||||
{s = \\p,q,r => or.s1++ xs.s1 ! p ! q ! r ++ or.s2 ++ xs.s2 ! p ! q ! r} ;
|
||||
|
||||
---------
|
||||
ListTable4 : Type -> Type -> Type -> Type -> Type = \P,Q,R,T ->
|
||||
{s1,s2 : P => Q => R => T => Str} ;
|
||||
|
||||
twoTable4 : (P,Q,R,T : Type) -> (_,_ : {s : P => Q => R => T => Str}) ->
|
||||
ListTable4 P Q R T =
|
||||
\_,_,_,_,x,y ->
|
||||
{s1 = x.s ; s2 = y.s} ;
|
||||
|
||||
consTable4 :
|
||||
(P,Q,R,T : Type) -> Str -> ListTable4 P Q R T -> {s : P => Q => R => T => Str} ->
|
||||
ListTable4 P Q R T =
|
||||
\P,Q,R,T,c,xs,x ->
|
||||
{s1 = \\p,q,r,t => xs.s1 ! p ! q ! r ! t ++ c ++ xs.s2 ! p ! q ! r ! t ;
|
||||
s2 = x.s
|
||||
} ;
|
||||
|
||||
conjunctTable4 :
|
||||
(P,Q,R,T : Type) -> Conjunction -> ListTable4 P Q R T -> {s : P => Q => R => T => Str} =
|
||||
\P,Q,R,T,or,xs ->
|
||||
{s = \\p,q,r,t => xs.s1 ! p ! q ! r ! t ++ or.s ++ xs.s2 ! p ! q ! r ! t} ;
|
||||
|
||||
conjunctDistrTable4 :
|
||||
(P,Q,R,T : Type) -> ConjunctionDistr -> ListTable4 P Q R T ->
|
||||
{s : P => Q => R => T => Str} =
|
||||
\P,Q,R,T,or,xs ->
|
||||
{s = \\p,q,r,t => or.s1++ xs.s1 ! p ! q ! r ! t ++ or.s2 ++ xs.s2 ! p ! q ! r ! t} ;
|
||||
--------------
|
||||
|
||||
comma = "," ;
|
||||
|
||||
-- you can also do this to right-associative lists:
|
||||
|
||||
consrStr : Str -> Str -> ListX -> ListX = \comma,x,xs ->
|
||||
{s1 = x ++ comma ++ xs.s1 ; s2 = xs.s2 } ;
|
||||
|
||||
consrSS : Str -> SS -> ListX -> ListX = \comma,x,xs ->
|
||||
consrStr comma x.s xs ;
|
||||
|
||||
consrTable : (P : Type) -> Str -> {s : P => Str} -> ListTable P -> ListTable P =
|
||||
\P,c,x,xs ->
|
||||
{s1 = table P {o => x.s ! o ++ c ++ xs.s1 ! o} ; s2 = xs.s2} ;
|
||||
|
||||
consrTable2 : (P,Q : Type) -> Str -> {s : P => Q => Str} ->
|
||||
ListTable2 P Q -> ListTable2 P Q =
|
||||
\P,Q,c,x,xs ->
|
||||
{s1 = table P {p => table Q {q => x.s ! p ! q ++ c ++ xs.s1 ! p ! q}} ;
|
||||
s2 = xs.s2
|
||||
} ;
|
||||
consrTable4 : (P,Q,R,T : Type) -> Str -> {s : P => Q => R => T => Str} ->
|
||||
ListTable4 P Q R T -> ListTable4 P Q R T =
|
||||
\P,Q,R,T,c,x,xs ->
|
||||
{s1 = table P {p => table Q {q => table R { r => table T {t => x.s ! p ! q ! r ! t ++ c ++ xs.s1 ! p ! q ! r ! t}}}} ;
|
||||
s2 = xs.s2
|
||||
} ;
|
||||
|
||||
|
||||
} ;
|
||||
@@ -2,10 +2,10 @@ concrete ExtraUrd of ExtraUrdAbs = CatUrd **
|
||||
open ResUrd, Coordination, Prelude, MorphoUrd, ParadigmsUrd in {
|
||||
|
||||
lin
|
||||
GenNP np = {s = \\_,_,_ => np.s ! NPC Obl ++ "ka" ; a = np.a} ;
|
||||
GenNP np = {s = \\_,_,_ => np.s ! NPC Obl ++ ka_Str ; a = np.a} ;
|
||||
|
||||
each_Det = mkDet "hr kwy" "hr kwy" "hr kwy" "hr kwy" Sg ;
|
||||
have_V = mkV "rakh-na";
|
||||
each_Det = mkDet hr_kwy_Str hr_kwy_Str hr_kwy_Str hr_kwy_Str Sg ;
|
||||
have_V = mkV rakh6na_Str ;
|
||||
|
||||
-- for VP conjunction
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ concrete IdiomUrd of Idiom = CatUrd ** open Prelude,Predef, ResUrd in {
|
||||
flags coding = utf8;
|
||||
|
||||
lin
|
||||
ImpersCl vp = mkSClause " " (agrP3 Masc Sg) vp ;
|
||||
GenericCl vp = mkSClause "kwy" (agrP3 Masc Sg) vp ;
|
||||
ImpersCl vp = mkSClause [] (agrP3 Masc Sg) vp ;
|
||||
GenericCl vp = mkSClause "كوی" (agrP3 Masc Sg) vp ;
|
||||
|
||||
CleftNP np rs =
|
||||
let cl = mkSClause (np.s ! NPC rs.c) (np.a) (predAux auxBe);
|
||||
@@ -15,11 +15,11 @@ concrete IdiomUrd of Idiom = CatUrd ** open Prelude,Predef, ResUrd in {
|
||||
CleftAdv ad ss = { s = \\t,b,o => ad.s ++ ss.s};
|
||||
|
||||
ExistNP np =
|
||||
mkSClause "whaN" (agrP3 (fromAgr np.a).g (fromAgr np.a).n)
|
||||
mkSClause "وہاں" (agrP3 (fromAgr np.a).g (fromAgr np.a).n)
|
||||
(insertObj (\\_ => np.s ! NPC Obl) (predAux auxBe)) ;
|
||||
|
||||
ExistIP ip =
|
||||
let cl = mkSClause ("whaN" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe);
|
||||
let cl = mkSClause ("وہاں" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe);
|
||||
in {
|
||||
s = \\t,p,qf => case qf of {
|
||||
QDir => cl.s ! t ! p ! ODir;
|
||||
@@ -30,8 +30,8 @@ concrete IdiomUrd of Idiom = CatUrd ** open Prelude,Predef, ResUrd in {
|
||||
ProgrVP vp = insertObj (\\a => vp.obj.s ++ vp.ad ++ vp.comp ! a ++ (vp.s ! VPStem).inf ++ raha (fromAgr a).g (fromAgr a).n ) (predAux auxBe) ;
|
||||
|
||||
|
||||
ImpPl1 vp = {s = "Aw" ++ infVP True vp (agrP1 Masc Pl)} ;
|
||||
ImpP3 np vp = {s = np.s!NPC Dir ++ "kw" ++ (vp.s ! VPImp ).inf ++ "dw"};
|
||||
ImpPl1 vp = {s = "آو" ++ infVP True vp (agrP1 Masc Pl)} ;
|
||||
ImpP3 np vp = {s = np.s!NPC Dir ++ "كو" ++ (vp.s ! VPImp ).inf ++ "دو"};
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -9,361 +9,361 @@ concrete LexiconUrd of Lexicon = CatUrd **
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
airplane_N = mkN "jhaz" ;
|
||||
answer_V2S = mkV2 (compoundV "jwab" (mkV "dyna")) ;
|
||||
apartment_N = mkN "kmrh" ;
|
||||
apple_N = mkN "syb" ;
|
||||
art_N = mkN "fn" ;
|
||||
ask_V2Q = mkV2 (mkV "pwch-na") ;
|
||||
baby_N = mkN "bch" ;
|
||||
bad_A = mkA "bra" ;
|
||||
bank_N = mkN "bank" ;
|
||||
beautiful_A = mkA "KwbSwrt" ;
|
||||
become_VA = mkV "bnna";
|
||||
beer_N = mkN "beer" ;
|
||||
beg_V2V = mkV2V (compoundV "altja" (mkV "krna")) "sE" "kh" False;
|
||||
big_A = mkA "bRa" ;
|
||||
bike_N = mkN "saycl" feminine ;
|
||||
bird_N = mkN "prndh" ;
|
||||
black_A = mkA "kala" ;
|
||||
blue_A = mkA "nyla" ;
|
||||
boat_N = mkN "kXty" ;
|
||||
book_N = mkN "ktab" feminine ;
|
||||
boot_N = mkN "jwta" ;
|
||||
boss_N = mkN "Sahb" ;
|
||||
boy_N = mkN "lRka" ;
|
||||
bread_N = mkN "rwty" ;
|
||||
break_V2 = mkV2 (mkV "twRna") ;
|
||||
broad_A = mkA "kh-la" ;
|
||||
brother_N2 = mkN2 (mkN "bh-ay") (mkPrep "ka") "kE" ; --not correct
|
||||
brown_A = mkA "nswary" ;
|
||||
butter_N = mkN "mkh-n" ;
|
||||
buy_V2 = mkV2 (mkV "Krydna");
|
||||
camera_N = mkN "kymrh" ;
|
||||
cap_N = mkN "twpy" ;
|
||||
car_N = mkN "gaRy" ;
|
||||
carpet_N = mkN "tpay^y" ;
|
||||
cat_N = mkN "bly" ;
|
||||
ceiling_N = mkN "ch-t" feminine ;
|
||||
chair_N = mkN "krsy" ;
|
||||
cheese_N = mkN "pnyr" feminine ;
|
||||
child_N = mkN "bch" ;
|
||||
church_N = mkCmpdNoun "grja" (mkN "gh-r") ;
|
||||
city_N = mkN "Xhr" ;
|
||||
clean_A = mkA "Saf" ;
|
||||
clever_A = mkA "hwXyar" ;
|
||||
close_V2 = mkV2 (compoundV "bnd" do_V2);
|
||||
coat_N = mkN "kwT" ;
|
||||
cold_A = mkA "Th-nDa" ;
|
||||
come_V = mkV "Ana" ;
|
||||
computer_N = mkN "kmpywTr" ;
|
||||
country_N = mkN "mlk" ;
|
||||
cousin_N = mkCmpdNoun "cca" (mkN "zad") ; -- a compund noun made of two nouns
|
||||
cow_N = mkN "gaE" feminine ;
|
||||
die_V = mkV "mrna" ;
|
||||
dirty_A = mkA "gnda" ;
|
||||
distance_N3 = mkN3 (mkN "faSlh") (mkPrep "ka") "kE" "sE" ;
|
||||
doctor_N = mkN "mealj" ;
|
||||
dog_N = mkN "kta" ;
|
||||
door_N = mkN "drwzh" ;
|
||||
drink_V2 = mkV2 (mkV "pyna");
|
||||
easy_A2V = mkA "Asan" "" ;
|
||||
eat_V2 = mkV2 (mkV "kh-ana") "" ;
|
||||
empty_A = mkA "Kaly" ;
|
||||
enemy_N = mkN "dXmn" ;
|
||||
factory_N = mkN "karKanh" ;
|
||||
father_N2 = mkN2 (mkN "aba") (mkPrep "ka") "kE" ;
|
||||
fear_VS = mkV "drna";
|
||||
find_V2 = mkV2 (mkV "pana") ;
|
||||
fish_N = mkN "mch-ly" ;
|
||||
floor_N = mkN "frX" ;
|
||||
forget_V2 = mkV2 (mkV "bh-wlna") ;
|
||||
fridge_N = mkN "fryg" ;
|
||||
friend_N = mkN "dwst" masculine ;
|
||||
fruit_N = mkN "ph-l" ;
|
||||
-- fun_AV = mkAV (regA "fun") ;
|
||||
garden_N = mkN "baG" ;
|
||||
girl_N = mkN "lRky" ;
|
||||
glove_N = mkN "dstanh" ;
|
||||
gold_N = mkN "swna" ;
|
||||
good_A = mkA "ach-a" ;
|
||||
go_V = mkV "jana" ;
|
||||
green_A = mkA "sbz" ;
|
||||
harbour_N = mkCmpdNoun "bndr" (mkN "gah") ;
|
||||
hate_V2 = mkV2 (compoundV "nfrt" do_V2) ;
|
||||
hat_N = mkN "twpy" ;
|
||||
-- have_V2 = dirV2 (mk5V "have" "has" "had" "had" "having") ;
|
||||
hear_V2 = mkV2 (mkV "snna") ;
|
||||
hill_N = mkN "phaRy" ;
|
||||
hope_VS = (compoundV "amyd" do_V2);
|
||||
horse_N = mkN "gh-wRa" ;
|
||||
hot_A = mkA "grm" ;
|
||||
house_N = mkN "gh-r" ;
|
||||
important_A = mkA "ahm" ;
|
||||
industry_N = mkN "Snet" feminine ;
|
||||
iron_N = mkN "lwha" ;
|
||||
king_N = mkN "badXah" ;
|
||||
know_V2 = mkV2 (mkV "janna") ;
|
||||
know_VS = mkV "janna";
|
||||
lake_N = mkN "jh-yl" feminine ;
|
||||
lamp_N = mkN "lymp" ;
|
||||
learn_V2 = mkV2 (mkV "sykh-na") ;
|
||||
leather_N = mkN "cmRa" ;
|
||||
leave_V2 = mkV2 (mkV "jana") ;
|
||||
like_V2 = mkV2 (compoundV "psnd" do_V2);
|
||||
listen_V2 = mkV2 (mkV "snna") ;
|
||||
live_V = mkV "rhna" ; ---- touch
|
||||
long_A = mkA "lmba" ;
|
||||
lose_V2 = mkV2 (compoundV "kh-w" do_V2) ;
|
||||
love_N = mkN "mHbt" ;
|
||||
love_V2 = mkV2 (compoundV "pyar" do_V2) "kw";
|
||||
man_N = mkN "Admy" ; -- not correct according to rules should be discussed
|
||||
married_A2 = mkA "Xady krna" "sE" ;
|
||||
meat_N = mkN "gwXt" ;
|
||||
milk_N = mkN "dwdh-" ;
|
||||
moon_N = mkN "cand" ;
|
||||
mother_N2 = mkN2 (mkN "maN") (mkPrep "ky") "kE"; -- not covered need to be discussed
|
||||
mountain_N = mkN "phaRy" ;
|
||||
music_N = mkN "mwsyqy" ;
|
||||
narrow_A = mkA "baryk" ;
|
||||
new_A = mkA "nya" ;
|
||||
newspaper_N = mkN "aKbar" ;
|
||||
oil_N = mkN "tyl" ;
|
||||
old_A = mkA "bwRh-a" ;
|
||||
open_V2 = mkV2 (mkV "kh-wlna") ;
|
||||
paint_V2A = mkV2 (compoundV "rng" do_V2) ;
|
||||
paper_N = mkN "kaGz" ;
|
||||
paris_PN = mkPN "Pyrs" ;
|
||||
peace_N = mkN "amn" ;
|
||||
pen_N = mkN "pnsl" ;
|
||||
planet_N = mkN "syarh" ;
|
||||
plastic_N = mkN "plasTk" ;
|
||||
play_V2 = mkV2 (mkV "kh-ylna") ;
|
||||
policeman_N = mkCmpdNoun "pwlys" (mkN "wala") ;
|
||||
priest_N = (mkN "pyGmbr") ;
|
||||
-- probable_AS = mkAS (regA "probable") ;
|
||||
queen_N = mkN "Xhzady" ;
|
||||
radio_N = mkN "ryDyw" ;
|
||||
rain_V0 = compoundV "barX" (mkV "hwna" ) ;
|
||||
read_V2 = mkV2 (mkV "pRh-na");
|
||||
red_A = mkA "lal" ;
|
||||
religion_N = mkN "mzhb" ;
|
||||
restaurant_N = mkN "hwTl" ;
|
||||
river_N = mkN "drya" masculine ;
|
||||
rock_N = mkN "cTan" ;
|
||||
roof_N = mkN "ch-t" masculine ;
|
||||
rubber_N = mkN "rbR" ;
|
||||
run_V = mkV "dwRna" ;
|
||||
say_VS = mkV "khna" ;
|
||||
school_N = mkN "skwl" ;
|
||||
science_N = mkN "sans" ;
|
||||
sea_N = mkN "smndr" ;
|
||||
seek_V2 = mkV2 (compoundV "tlaX" do_V2) ;
|
||||
see_V2 = mkV2 (mkV "dykh-na") ;
|
||||
sell_V3 = mkV3 (mkV "bycna") "kw" "";
|
||||
send_V3 = mkV3 (mkV "bh-yjna") "kw" "";
|
||||
sheep_N = mkN "bh-yR" feminine ;
|
||||
ship_N = mkN "jhaz" ;
|
||||
shirt_N = mkN "qmyZ-" feminine;
|
||||
shoe_N = mkN "jwta" ;
|
||||
shop_N = mkN "dwkan" feminine ;
|
||||
short_A = mkA "ch-wTa" ;
|
||||
silver_N = mkN "candy" ;
|
||||
sister_N = mkN "bhn" feminine ;
|
||||
sleep_V = mkV "swna" ;
|
||||
small_A = mkA "ch-wTa" ;
|
||||
snake_N = mkN "sanp" ;
|
||||
sock_N = mkN "jrab" feminine ;
|
||||
speak_V2 = mkV2 (mkV "bwlna") ;
|
||||
star_N = mkN "stara" ;
|
||||
steel_N = mkN "styl" ;
|
||||
stone_N = mkN "pth-r" ;
|
||||
stove_N = mkN "cwlha" ;
|
||||
student_N = mkCmpdNoun "t-alb" (mkN "elm") ;
|
||||
stupid_A = mkA "aHmq" ;
|
||||
sun_N = mkN "swrj" ;
|
||||
switch8off_V2 = mkV2 (mkV "clana") ;
|
||||
switch8on_V2 = mkV2 (compoundV "bnd" do_V2) ;
|
||||
table_N = mkN "myz" feminine ;
|
||||
talk_V3 = mkV3 (mkV "bwlna") "sE" "kE barE meN";
|
||||
teacher_N = mkN "istad" ;
|
||||
teach_V2 = mkV2 (mkV "pRh-na") ;
|
||||
television_N = mkN "telywyzn" ;
|
||||
thick_A = mkA "mwTa" ;
|
||||
thin_A = mkA "ptla" ;
|
||||
train_N = mkN "gaRy" ;
|
||||
travel_V = (compoundV "sfr" do_V2) ;
|
||||
tree_N = mkN "drKt" masculine ;
|
||||
-- ---- trousers_N = mkN "trousers" ;
|
||||
ugly_A = mkA "bdSwrt" ;
|
||||
understand_V2 = mkV2 (mkV "smjh-na") ;
|
||||
university_N = mkN "ywnywrsTy" ;
|
||||
village_N = mkN "gawN" ;
|
||||
wait_V2 = mkV2 (compoundV "antz-ar" do_V2) ;
|
||||
walk_V = mkV "clna" ;
|
||||
warm_A = mkA "grm" ;
|
||||
war_N = mkN "jng" ;
|
||||
watch_V2 = mkV2 (mkV "dykh-na") ;
|
||||
water_N = mkN "pany" ; -- not covered masculine ending with y
|
||||
white_A = mkA "sfyd" ;
|
||||
window_N = mkN "kh-Rky" ;
|
||||
wine_N = mkN "Xrab" feminine ;
|
||||
win_V2 = mkV2 (mkV "jytna") ;
|
||||
woman_N = mkN "ewrt" feminine ;
|
||||
wonder_VQ = compoundV "Heran" (mkV "hwna") ;
|
||||
wood_N = mkN "lkRy" ;
|
||||
write_V2 = mkV2 (mkV "lkh-na") ;
|
||||
yellow_A = mkA "pyla" ;
|
||||
young_A = mkA "jwan" ;
|
||||
do_V2 = mkV2 (mkV "krna") ;
|
||||
now_Adv = mkAdv "ab" ;
|
||||
already_Adv = mkAdv "phlE hy" ;
|
||||
song_N = mkN "gana" ;
|
||||
add_V3 = mkV3 (compoundV "aZ-afh" do_V2) "" "" ;
|
||||
number_N = mkN "hndsh" ;
|
||||
put_V2 = mkV2 (mkV "Dalna") ;
|
||||
stop_V = mkV "rkna" ;
|
||||
jump_V = mkV "ch-langna" ;
|
||||
airplane_N = mkN "جہاز" ;
|
||||
answer_V2S = mkV2 (compoundV "جواب" (mkV "دینا")) ;
|
||||
apartment_N = mkN "كمرہ" ;
|
||||
apple_N = mkN "سیب" ;
|
||||
art_N = mkN "فن" ;
|
||||
ask_V2Q = mkV2 (mkV "پوچھنا") ;
|
||||
baby_N = mkN "بچہ" ;
|
||||
bad_A = mkA "برا" ;
|
||||
bank_N = mkN "بانك" ;
|
||||
beautiful_A = mkA "خوبصورت" ;
|
||||
become_VA = mkV "بننا";
|
||||
beer_N = mkN "بععر" ;
|
||||
beg_V2V = mkV2V (compoundV "التجا" (mkV "كرنا")) "سے" "كہ" False;
|
||||
big_A = mkA "بڑا" ;
|
||||
bike_N = mkN "سایچل" feminine ;
|
||||
bird_N = mkN "پرندہ" ;
|
||||
black_A = mkA "كالا" ;
|
||||
blue_A = mkA "نیلا" ;
|
||||
boat_N = mkN "كشتی" ;
|
||||
book_N = mkN "كتاب" feminine ;
|
||||
boot_N = mkN "جوتا" ;
|
||||
boss_N = mkN "صاہب" ;
|
||||
boy_N = mkN "لڑكا" ;
|
||||
bread_N = mkN "روتی" ;
|
||||
break_V2 = mkV2 (mkV "توڑنا") ;
|
||||
broad_A = mkA "كھلا" ;
|
||||
brother_N2 = mkN2 (mkN "بھای") (mkPrep "كا") "كے" ; --not correct
|
||||
brown_A = mkA "نسواری" ;
|
||||
butter_N = mkN "مكھن" ;
|
||||
buy_V2 = mkV2 (mkV "خریدنا");
|
||||
camera_N = mkN "كیمرہ" ;
|
||||
cap_N = mkN "توپی" ;
|
||||
car_N = mkN "گاڑی" ;
|
||||
carpet_N = mkN "تپائی" ;
|
||||
cat_N = mkN "بلی" ;
|
||||
ceiling_N = mkN "چھت" feminine ;
|
||||
chair_N = mkN "كرسی" ;
|
||||
cheese_N = mkN "پنیر" feminine ;
|
||||
child_N = mkN "بچہ" ;
|
||||
church_N = mkCmpdNoun "گرجا" (mkN "گھر") ;
|
||||
city_N = mkN "شہر" ;
|
||||
clean_A = mkA "صاف" ;
|
||||
clever_A = mkA "ہوشیار" ;
|
||||
close_V2 = mkV2 (compoundV "بند" do_V2);
|
||||
coat_N = mkN "كوٹ" ;
|
||||
cold_A = mkA "ٹھنڈا" ;
|
||||
come_V = mkV "آنا" ;
|
||||
computer_N = mkN "كمپیوٹر" ;
|
||||
country_N = mkN "ملك" ;
|
||||
cousin_N = mkCmpdNoun "چچا" (mkN "زاد") ; -- a compund noun made of two nouns
|
||||
cow_N = mkN "گاے" feminine ;
|
||||
die_V = mkV "مرنا" ;
|
||||
dirty_A = mkA "گندا" ;
|
||||
distance_N3 = mkN3 (mkN "فاصلہ") (mkPrep "كا") "كے" "سے" ;
|
||||
doctor_N = mkN "معالج" ;
|
||||
dog_N = mkN "كتا" ;
|
||||
door_N = mkN "دروزہ" ;
|
||||
drink_V2 = mkV2 (mkV "پینا");
|
||||
easy_A2V = mkA "آسان" "" ;
|
||||
eat_V2 = mkV2 (mkV "كھانا") "" ;
|
||||
empty_A = mkA "خالی" ;
|
||||
enemy_N = mkN "دشمن" ;
|
||||
factory_N = mkN "كارخانہ" ;
|
||||
father_N2 = mkN2 (mkN "ابا") (mkPrep "كا") "كے" ;
|
||||
fear_VS = mkV "درنا";
|
||||
find_V2 = mkV2 (mkV "پانا") ;
|
||||
fish_N = mkN "مچھلی" ;
|
||||
floor_N = mkN "فرش" ;
|
||||
forget_V2 = mkV2 (mkV "بھولنا") ;
|
||||
fridge_N = mkN "فریگ" ;
|
||||
friend_N = mkN "دوست" masculine ;
|
||||
fruit_N = mkN "پھل" ;
|
||||
-- fun_AV = mkAV (regA "فuن") ;
|
||||
garden_N = mkN "باغ" ;
|
||||
girl_N = mkN "لڑكی" ;
|
||||
glove_N = mkN "دستانہ" ;
|
||||
gold_N = mkN "سونا" ;
|
||||
good_A = mkA "اچھا" ;
|
||||
go_V = mkV "جانا" ;
|
||||
green_A = mkA "سبز" ;
|
||||
harbour_N = mkCmpdNoun "بندر" (mkN "گاہ") ;
|
||||
hate_V2 = mkV2 (compoundV "نفرت" do_V2) ;
|
||||
hat_N = mkN "توپی" ;
|
||||
-- have_V2 = dirV2 (mk5V "ہاvع" "ہاس" "ہاد" "ہاد" "ہاviنگ") ;
|
||||
hear_V2 = mkV2 (mkV "سننا") ;
|
||||
hill_N = mkN "پہاڑی" ;
|
||||
hope_VS = (compoundV "امید" do_V2);
|
||||
horse_N = mkN "گھوڑا" ;
|
||||
hot_A = mkA "گرم" ;
|
||||
house_N = mkN "گھر" ;
|
||||
important_A = mkA "اہم" ;
|
||||
industry_N = mkN "صنعت" feminine ;
|
||||
iron_N = mkN "لوہا" ;
|
||||
king_N = mkN "بادشاہ" ;
|
||||
know_V2 = mkV2 (mkV "جاننا") ;
|
||||
know_VS = mkV "جاننا";
|
||||
lake_N = mkN "جھیل" feminine ;
|
||||
lamp_N = mkN "لیمپ" ;
|
||||
learn_V2 = mkV2 (mkV "سیكھنا") ;
|
||||
leather_N = mkN "چمڑا" ;
|
||||
leave_V2 = mkV2 (mkV "جانا") ;
|
||||
like_V2 = mkV2 (compoundV "پسند" do_V2);
|
||||
listen_V2 = mkV2 (mkV "سننا") ;
|
||||
live_V = mkV "رہنا" ; ---- touch
|
||||
long_A = mkA "لمبا" ;
|
||||
lose_V2 = mkV2 (compoundV "كھو" do_V2) ;
|
||||
love_N = mkN "محبت" ;
|
||||
love_V2 = mkV2 (compoundV "پیار" do_V2) "كو";
|
||||
man_N = mkN "آدمی" ; -- not correct according to rules should be discussed
|
||||
married_A2 = mkA "شادی كرنا" "سے" ;
|
||||
meat_N = mkN "گوشت" ;
|
||||
milk_N = mkN "دودھ" ;
|
||||
moon_N = mkN "چاند" ;
|
||||
mother_N2 = mkN2 (mkN "ماں") (mkPrep "كی") "كے"; -- not covered need to be discussed
|
||||
mountain_N = mkN "پہاڑی" ;
|
||||
music_N = mkN "موسیقی" ;
|
||||
narrow_A = mkA "باریك" ;
|
||||
new_A = mkA "نیا" ;
|
||||
newspaper_N = mkN "اخبار" ;
|
||||
oil_N = mkN "تیل" ;
|
||||
old_A = mkA "بوڑھا" ;
|
||||
open_V2 = mkV2 (mkV "كھولنا") ;
|
||||
paint_V2A = mkV2 (compoundV "رنگ" do_V2) ;
|
||||
paper_N = mkN "كاغز" ;
|
||||
paris_PN = mkPN "پیرس" ;
|
||||
peace_N = mkN "امن" ;
|
||||
pen_N = mkN "پنسل" ;
|
||||
planet_N = mkN "سیارہ" ;
|
||||
plastic_N = mkN "پلاسٹك" ;
|
||||
play_V2 = mkV2 (mkV "كھیلنا") ;
|
||||
policeman_N = mkCmpdNoun "پولیس" (mkN "والا") ;
|
||||
priest_N = (mkN "پیغمبر") ;
|
||||
-- probable_AS = mkAS (regA "پرoبابلع") ;
|
||||
queen_N = mkN "شہزادی" ;
|
||||
radio_N = mkN "ریڈیو" ;
|
||||
rain_V0 = compoundV "بارش" (mkV "ہونا" ) ;
|
||||
read_V2 = mkV2 (mkV "پڑھنا");
|
||||
red_A = mkA "لال" ;
|
||||
religion_N = mkN "مزہب" ;
|
||||
restaurant_N = mkN "ہوٹل" ;
|
||||
river_N = mkN "دریا" masculine ;
|
||||
rock_N = mkN "چٹان" ;
|
||||
roof_N = mkN "چھت" masculine ;
|
||||
rubber_N = mkN "ربڑ" ;
|
||||
run_V = mkV "دوڑنا" ;
|
||||
say_VS = mkV "كہنا" ;
|
||||
school_N = mkN "سكول" ;
|
||||
science_N = mkN "سانس" ;
|
||||
sea_N = mkN "سمندر" ;
|
||||
seek_V2 = mkV2 (compoundV "تلاش" do_V2) ;
|
||||
see_V2 = mkV2 (mkV "دیكھنا") ;
|
||||
sell_V3 = mkV3 (mkV "بیچنا") "كو" "";
|
||||
send_V3 = mkV3 (mkV "بھیجنا") "كو" "";
|
||||
sheep_N = mkN "بھیڑ" feminine ;
|
||||
ship_N = mkN "جہاز" ;
|
||||
shirt_N = mkN "قمیض" feminine;
|
||||
shoe_N = mkN "جوتا" ;
|
||||
shop_N = mkN "دوكان" feminine ;
|
||||
short_A = mkA "چھوٹا" ;
|
||||
silver_N = mkN "چاندی" ;
|
||||
sister_N = mkN "بہن" feminine ;
|
||||
sleep_V = mkV "سونا" ;
|
||||
small_A = mkA "چھوٹا" ;
|
||||
snake_N = mkN "سانپ" ;
|
||||
sock_N = mkN "جراب" feminine ;
|
||||
speak_V2 = mkV2 (mkV "بولنا") ;
|
||||
star_N = mkN "ستارا" ;
|
||||
steel_N = mkN "ستیل" ;
|
||||
stone_N = mkN "پتھر" ;
|
||||
stove_N = mkN "چولہا" ;
|
||||
student_N = mkCmpdNoun "طالب" (mkN "علم") ;
|
||||
stupid_A = mkA "احمق" ;
|
||||
sun_N = mkN "سورج" ;
|
||||
switch8off_V2 = mkV2 (mkV "چلانا") ;
|
||||
switch8on_V2 = mkV2 (compoundV "بند" do_V2) ;
|
||||
table_N = mkN "میز" feminine ;
|
||||
talk_V3 = mkV3 (mkV "بولنا") "سے" "كے بارے معں";
|
||||
teacher_N = mkN "iستاد" ;
|
||||
teach_V2 = mkV2 (mkV "پڑھنا") ;
|
||||
television_N = mkN "تعلیویزن" ;
|
||||
thick_A = mkA "موٹا" ;
|
||||
thin_A = mkA "پتلا" ;
|
||||
train_N = mkN "گاڑی" ;
|
||||
travel_V = (compoundV "سفر" do_V2) ;
|
||||
tree_N = mkN "درخت" masculine ;
|
||||
-- ---- trousers_N = mkN "ترouسعرس" ;
|
||||
ugly_A = mkA "بدصورت" ;
|
||||
understand_V2 = mkV2 (mkV "سمجھنا") ;
|
||||
university_N = mkN "یونیورسٹی" ;
|
||||
village_N = mkN "گاوں" ;
|
||||
wait_V2 = mkV2 (compoundV "انتظار" do_V2) ;
|
||||
walk_V = mkV "چلنا" ;
|
||||
warm_A = mkA "گرم" ;
|
||||
war_N = mkN "جنگ" ;
|
||||
watch_V2 = mkV2 (mkV "دیكھنا") ;
|
||||
water_N = mkN "پانی" ; -- not covered masculine ending with y
|
||||
white_A = mkA "سفید" ;
|
||||
window_N = mkN "كھڑكی" ;
|
||||
wine_N = mkN "شراب" feminine ;
|
||||
win_V2 = mkV2 (mkV "جیتنا") ;
|
||||
woman_N = mkN "عورت" feminine ;
|
||||
wonder_VQ = compoundV "حعران" (mkV "ہونا") ;
|
||||
wood_N = mkN "لكڑی" ;
|
||||
write_V2 = mkV2 (mkV "لكھنا") ;
|
||||
yellow_A = mkA "پیلا" ;
|
||||
young_A = mkA "جوان" ;
|
||||
do_V2 = mkV2 (mkV "كرنا") ;
|
||||
now_Adv = mkAdv "اب" ;
|
||||
already_Adv = mkAdv "پہلے ہی" ;
|
||||
song_N = mkN "گانا" ;
|
||||
add_V3 = mkV3 (compoundV "اضافہ" do_V2) "" "" ;
|
||||
number_N = mkN "ہندسہ" ;
|
||||
put_V2 = mkV2 (mkV "ڈالنا") ;
|
||||
stop_V = mkV "ركنا" ;
|
||||
jump_V = mkV "چھلانگنا" ;
|
||||
|
||||
left_Ord = {s = "bayaN" ; n = singular};
|
||||
right_Ord = {s= "dayaN" ; n = singular};
|
||||
far_Adv = mkAdv "dwr" ;
|
||||
correct_A = mkA "Syh" ;
|
||||
dry_A = mkA "KXk" ;
|
||||
dull_A = mkA "nalik" ;
|
||||
full_A = mkA "mkml" ;
|
||||
heavy_A = mkA "bh-ary" ;
|
||||
near_A = mkA "qryb" ;
|
||||
rotten_A = mkA "Krab" ;
|
||||
round_A = mkA "gwl" ;
|
||||
sharp_A = mkA "tyz" ;
|
||||
smooth_A = mkA "hmwar" ;
|
||||
straight_A = mkA "sydh-a" ;
|
||||
wet_A = mkA "gyla" ; ----
|
||||
wide_A = mkA "kh-la" ;
|
||||
animal_N = mkN "janwr" ;
|
||||
ashes_N = mkN "rakh-" feminine; -- FIXME: plural only?
|
||||
back_N = mkN "qmr" feminine ;
|
||||
bark_N = mkN "bark" ;
|
||||
belly_N = mkN "dh-ny" ;
|
||||
blood_N = mkN "Kwn" ;
|
||||
bone_N = mkN "hDy" ;
|
||||
breast_N = mkN "ch-aty" ;
|
||||
cloud_N = mkN "badl" ;
|
||||
day_N = mkN "dn" ;
|
||||
dust_N = mkN "dh-wl" ;
|
||||
ear_N = mkN "kan" ;
|
||||
earth_N = mkN "zmyn" feminine ;
|
||||
egg_N = mkN "anDh" ;
|
||||
eye_N = mkN "Ankh-" feminine ;
|
||||
fat_N = mkN "mwta" ;
|
||||
feather_N = mkN "pr" ;
|
||||
fingernail_N = mkN "naKn" ;
|
||||
fire_N = mkN "Ag" feminine ;
|
||||
flower_N = mkN "ph-wl" ;
|
||||
fog_N = mkN "dh-nd" feminine ;
|
||||
foot_N = mkN "pawN" ; -- not properly covered need to be discussed
|
||||
forest_N = mkN "njgl" ;
|
||||
grass_N = mkN "gh-s" feminine ;
|
||||
guts_N = mkN "gut" ; -- FIXME: no singular
|
||||
hair_N = mkN "bal" ;
|
||||
hand_N = mkN "hath-" ;
|
||||
head_N = mkN "sr" ;
|
||||
heart_N = mkN "dl" ;
|
||||
horn_N = mkN "gh-nty" ;
|
||||
husband_N = mkN "Xwhr" ;
|
||||
ice_N = mkN "brf" feminine ;
|
||||
knee_N = mkN "khny" ;
|
||||
leaf_N = mkN "pth" ;
|
||||
leg_N = mkN "tang" feminine ;
|
||||
liver_N = mkN "jgr" ;
|
||||
louse_N = mkN "gh-r" ;
|
||||
mouth_N = mkN "mnh" ;
|
||||
name_N = mkN "nam" ;
|
||||
neck_N = mkN "grdn" feminine ;
|
||||
night_N = mkN "rat" feminine ;
|
||||
nose_N = mkN "nak" ;
|
||||
person_N = mkN "XKS" ;
|
||||
rain_N = mkN "barX" feminine ;
|
||||
road_N = mkN "sRk" ;
|
||||
root_N = mkN "gR" feminine ;
|
||||
rope_N = mkN "rsy" ;
|
||||
salt_N = mkN "nmk" feminine ;
|
||||
sand_N = mkN "ryt" feminine ;
|
||||
seed_N = mkN "byj" ;
|
||||
skin_N = mkN "jld" feminine ;
|
||||
sky_N = mkN "Asman" ;
|
||||
smoke_N = mkN "dh-waN"; -- singular masc nouns ending with aN,wN yet to be implemented
|
||||
snow_N = mkN "brf" feminine ;
|
||||
stick_N = mkN "ch-Ry" ;
|
||||
tail_N = mkN "dm" ;
|
||||
tongue_N = mkN "zban" feminine ;
|
||||
tooth_N = mkN "dant" masculine;
|
||||
wife_N = mkN "bywy" ;
|
||||
wind_N = mkN "Andh-y" ;
|
||||
wing_N = mkN "pr" ;
|
||||
worm_N = mkN "grm" ;
|
||||
year_N = mkN "sal" ;
|
||||
blow_V = mkV "clna" ;
|
||||
breathe_V = compoundV "sans" (mkV "lyna" ) ;
|
||||
burn_V = mkV "jlna" ;
|
||||
dig_V = mkV "kh-wdna" ;
|
||||
fall_V = mkV "grna" ;
|
||||
float_V = mkV "tyrna" ;
|
||||
flow_V = mkV "bhna" ;
|
||||
fly_V = mkV "aRna" ;
|
||||
freeze_V = mkV "jmna";
|
||||
give_V3 = mkV3 (mkV "dyna") "kw" "";
|
||||
laugh_V = mkV "hnsna" ;
|
||||
-- lie_N = mkN "jh-wt" masculine ;
|
||||
lie_V = compoundV "jh-wt" (mkV "bwlna" );
|
||||
play_V = mkV "kh-ylna" ;
|
||||
sew_V = mkV "syna" ;
|
||||
sing_V = mkV "gana" ;
|
||||
sit_V = mkV "byTh-na" ;
|
||||
smell_V = mkV "swngna" ;
|
||||
spit_V = mkV "th-wkna" ;
|
||||
stand_V = compoundV "kh-RE" (mkV "hwna" );
|
||||
swell_V = mkV "swjh-na" ;
|
||||
swim_V = mkV "tyrna" ;
|
||||
think_V = mkV "swcna" ;
|
||||
turn_V = mkV "mRna";
|
||||
vomit_V = compoundV "alty" (mkV "krna") ;
|
||||
bite_V2 = mkV2 (mkV "katna") ;
|
||||
count_V2 = mkV2 (mkV "gnna") ;
|
||||
cut_V2 = mkV2 (mkV "katna") ;
|
||||
fear_V2 = mkV2 (mkV "Drna") ;
|
||||
fight_V2 = mkV2 (mkV "lRna") ;
|
||||
hit_V2 = mkV2 (compoundV "th-wkr" (mkV "marna" ));
|
||||
hold_V2 = mkV2 (mkV "pkRna") ;
|
||||
hunt_V2 = mkV2 (compoundV "Xkar" do_V2);
|
||||
kill_V2 = mkV2 (compoundV "mar" (mkV "Dalna" )) ;
|
||||
pull_V2 = mkV2 (mkV "kh-ncna");
|
||||
push_V2 = mkV2 (mkV "dh-kylna") "kw" ;
|
||||
rub_V2 = mkV2 (mkV "rgRna") ;
|
||||
scratch_V2 = mkV2 (mkV "kh-rcna") "kw" ;
|
||||
split_V2 = mkV2 (mkV "banta") "kw" ;
|
||||
-- squeeze_V2 = dirV2 (regV "squeeze") ;
|
||||
-- stab_V2 = dirV2 (regDuplV "stab") ;
|
||||
suck_V2 = mkV2 (mkV "cwsna") ;
|
||||
throw_V2 = mkV2 (mkV "ph-ynkna") ;
|
||||
tie_V2 = mkV2 (mkV "bandh-na") ;
|
||||
wash_V2 = mkV2 (mkV "dh-wna") ;
|
||||
wipe_V2 = mkV2 (compoundV "Saf" (mkV "krna" ));
|
||||
left_Ord = {s = "بایاں" ; n = singular};
|
||||
right_Ord = {s= "دایاں" ; n = singular};
|
||||
far_Adv = mkAdv "دور" ;
|
||||
correct_A = mkA "صیہ" ;
|
||||
dry_A = mkA "خشك" ;
|
||||
dull_A = mkA "نالiك" ;
|
||||
full_A = mkA "مكمل" ;
|
||||
heavy_A = mkA "بھاری" ;
|
||||
near_A = mkA "قریب" ;
|
||||
rotten_A = mkA "خراب" ;
|
||||
round_A = mkA "گول" ;
|
||||
sharp_A = mkA "تیز" ;
|
||||
smooth_A = mkA "ہموار" ;
|
||||
straight_A = mkA "سیدھا" ;
|
||||
wet_A = mkA "گیلا" ; ----
|
||||
wide_A = mkA "كھلا" ;
|
||||
animal_N = mkN "جانور" ;
|
||||
ashes_N = mkN "راكھ" feminine; -- FIXME: plural only?
|
||||
back_N = mkN "قمر" feminine ;
|
||||
bark_N = mkN "بارك" ;
|
||||
belly_N = mkN "دھنی" ;
|
||||
blood_N = mkN "خون" ;
|
||||
bone_N = mkN "ہڈی" ;
|
||||
breast_N = mkN "چھاتی" ;
|
||||
cloud_N = mkN "بادل" ;
|
||||
day_N = mkN "دن" ;
|
||||
dust_N = mkN "دھول" ;
|
||||
ear_N = mkN "كان" ;
|
||||
earth_N = mkN "زمین" feminine ;
|
||||
egg_N = mkN "انڈہ" ;
|
||||
eye_N = mkN "آنكھ" feminine ;
|
||||
fat_N = mkN "موتا" ;
|
||||
feather_N = mkN "پر" ;
|
||||
fingernail_N = mkN "ناخن" ;
|
||||
fire_N = mkN "آگ" feminine ;
|
||||
flower_N = mkN "پھول" ;
|
||||
fog_N = mkN "دھند" feminine ;
|
||||
foot_N = mkN "پاوں" ; -- not properly covered need to be discussed
|
||||
forest_N = mkN "نجگل" ;
|
||||
grass_N = mkN "گھس" feminine ;
|
||||
guts_N = mkN "گuت" ; -- FIXME: no singular
|
||||
hair_N = mkN "بال" ;
|
||||
hand_N = mkN "ہاتھ" ;
|
||||
head_N = mkN "سر" ;
|
||||
heart_N = mkN "دل" ;
|
||||
horn_N = mkN "گھنتی" ;
|
||||
husband_N = mkN "شوہر" ;
|
||||
ice_N = mkN "برف" feminine ;
|
||||
knee_N = mkN "كہنی" ;
|
||||
leaf_N = mkN "پتہ" ;
|
||||
leg_N = mkN "تانگ" feminine ;
|
||||
liver_N = mkN "جگر" ;
|
||||
louse_N = mkN "گھر" ;
|
||||
mouth_N = mkN "منہ" ;
|
||||
name_N = mkN "نام" ;
|
||||
neck_N = mkN "گردن" feminine ;
|
||||
night_N = mkN "رات" feminine ;
|
||||
nose_N = mkN "ناك" ;
|
||||
person_N = mkN "شخص" ;
|
||||
rain_N = mkN "بارش" feminine ;
|
||||
road_N = mkN "سڑك" ;
|
||||
root_N = mkN "گڑ" feminine ;
|
||||
rope_N = mkN "رسی" ;
|
||||
salt_N = mkN "نمك" feminine ;
|
||||
sand_N = mkN "ریت" feminine ;
|
||||
seed_N = mkN "بیج" ;
|
||||
skin_N = mkN "جلد" feminine ;
|
||||
sky_N = mkN "آسمان" ;
|
||||
smoke_N = mkN "دھواں"; -- singular masc nouns ending with aN,wN yet to be implemented
|
||||
snow_N = mkN "برف" feminine ;
|
||||
stick_N = mkN "چھڑی" ;
|
||||
tail_N = mkN "دم" ;
|
||||
tongue_N = mkN "زبان" feminine ;
|
||||
tooth_N = mkN "دانت" masculine;
|
||||
wife_N = mkN "بیوی" ;
|
||||
wind_N = mkN "آندھی" ;
|
||||
wing_N = mkN "پر" ;
|
||||
worm_N = mkN "گرم" ;
|
||||
year_N = mkN "سال" ;
|
||||
blow_V = mkV "چلنا" ;
|
||||
breathe_V = compoundV "سانس" (mkV "لینا" ) ;
|
||||
burn_V = mkV "جلنا" ;
|
||||
dig_V = mkV "كھودنا" ;
|
||||
fall_V = mkV "گرنا" ;
|
||||
float_V = mkV "تیرنا" ;
|
||||
flow_V = mkV "بہنا" ;
|
||||
fly_V = mkV "اڑنا" ;
|
||||
freeze_V = mkV "جمنا";
|
||||
give_V3 = mkV3 (mkV "دینا") "كو" "";
|
||||
laugh_V = mkV "ہنسنا" ;
|
||||
-- lie_N = mkN "جھوت" masculine ;
|
||||
lie_V = compoundV "جھوت" (mkV "بولنا" );
|
||||
play_V = mkV "كھیلنا" ;
|
||||
sew_V = mkV "سینا" ;
|
||||
sing_V = mkV "گانا" ;
|
||||
sit_V = mkV "بیٹھنا" ;
|
||||
smell_V = mkV "سونگنا" ;
|
||||
spit_V = mkV "تھوكنا" ;
|
||||
stand_V = compoundV "كھڑے" (mkV "ہونا" );
|
||||
swell_V = mkV "سوجھنا" ;
|
||||
swim_V = mkV "تیرنا" ;
|
||||
think_V = mkV "سوچنا" ;
|
||||
turn_V = mkV "مڑنا";
|
||||
vomit_V = compoundV "التی" (mkV "كرنا") ;
|
||||
bite_V2 = mkV2 (mkV "كاتنا") ;
|
||||
count_V2 = mkV2 (mkV "گننا") ;
|
||||
cut_V2 = mkV2 (mkV "كاتنا") ;
|
||||
fear_V2 = mkV2 (mkV "ڈرنا") ;
|
||||
fight_V2 = mkV2 (mkV "لڑنا") ;
|
||||
hit_V2 = mkV2 (compoundV "تھوكر" (mkV "مارنا" ));
|
||||
hold_V2 = mkV2 (mkV "پكڑنا") ;
|
||||
hunt_V2 = mkV2 (compoundV "شكار" do_V2);
|
||||
kill_V2 = mkV2 (compoundV "مار" (mkV "ڈالنا" )) ;
|
||||
pull_V2 = mkV2 (mkV "كھنچنا");
|
||||
push_V2 = mkV2 (mkV "دھكیلنا") "كو" ;
|
||||
rub_V2 = mkV2 (mkV "رگڑنا") ;
|
||||
scratch_V2 = mkV2 (mkV "كھرچنا") "كو" ;
|
||||
split_V2 = mkV2 (mkV "بانتا") "كو" ;
|
||||
-- squeeze_V2 = dirV2 (regV "سقuععزع") ;
|
||||
-- stab_V2 = dirV2 (regDuplV "ستاب") ;
|
||||
suck_V2 = mkV2 (mkV "چوسنا") ;
|
||||
throw_V2 = mkV2 (mkV "پھینكنا") ;
|
||||
tie_V2 = mkV2 (mkV "باندھنا") ;
|
||||
wash_V2 = mkV2 (mkV "دھونا") ;
|
||||
wipe_V2 = mkV2 (compoundV "صاف" (mkV "كرنا" ));
|
||||
|
||||
---- other_A = regA "other" ;
|
||||
---- other_A = regA "oتہعر" ;
|
||||
|
||||
grammar_N = mkN "grdan" ;
|
||||
language_N = mkN "zban" feminine ;
|
||||
rule_N = mkN "aSwl" ;
|
||||
grammar_N = mkN "گردان" ;
|
||||
language_N = mkN "زبان" feminine ;
|
||||
rule_N = mkN "اصول" ;
|
||||
|
||||
---- added 4/6/2007
|
||||
john_PN = mkPN "jon" ;
|
||||
question_N = mkN "swal" ;
|
||||
-- ready_A = regA "ready" ;
|
||||
reason_N = mkN "wjh" feminine ;
|
||||
today_Adv = mkAdv "Aj" ;
|
||||
uncertain_A = mkA ["Gyr yqyny"] ;
|
||||
john_PN = mkPN "جoن" ;
|
||||
question_N = mkN "سوال" ;
|
||||
-- ready_A = regA "رعادی" ;
|
||||
reason_N = mkN "وجہ" feminine ;
|
||||
today_Adv = mkAdv "آج" ;
|
||||
uncertain_A = mkA ["غیر یقینی"] ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
5
lib/src/urdu/Makefile
Normal file
5
lib/src/urdu/Makefile
Normal file
@@ -0,0 +1,5 @@
|
||||
all: transliterate
|
||||
|
||||
transliterate:
|
||||
gf <transliterateUrdu.gfs
|
||||
|
||||
@@ -37,29 +37,29 @@ oper
|
||||
|
||||
regNoun : Str -> Noun ;
|
||||
regNoun s = case s of {
|
||||
_ + "ya" => mkN05 (s);
|
||||
_ + ("a"|"e"|"h") => mkN01 (s);
|
||||
_ + "y" => mkN03 (s);
|
||||
_ + ("aN"|"wN") => mkN04 (s);
|
||||
_ + "w^" => mkN12 (s);
|
||||
_ + "یا" => mkN05 (s);
|
||||
_ + ("ا"|"ع"|"ہ") => mkN01 (s);
|
||||
_ + "ی" => mkN03 (s);
|
||||
_ + ("اں"|"وں") => mkN04 (s);
|
||||
_ + "ؤ" => mkN12 (s);
|
||||
_ => regNoun2 (s)
|
||||
};
|
||||
regNoun2 : Str -> Noun;
|
||||
regNoun2 s = let c = if_then_else Bool (eq (last s) "a" ) True (if_then_else Bool (eq (last s) "h") True (if_then_else Bool (eq (last s) "e") True False))
|
||||
regNoun2 s = let c = if_then_else Bool (eq (last s) "ا" ) True (if_then_else Bool (eq (last s) "ہ") True (if_then_else Bool (eq (last s) "ع") True False))
|
||||
in case c of {
|
||||
False => mkN02 (s);
|
||||
True => mkN01 (s)
|
||||
};
|
||||
|
||||
reggNoun : Str -> Gender -> Noun ;
|
||||
reggNoun s g = let c = if_then_else Bool (eq (last s) "a" ) True (if_then_else Bool (eq (dp 2 s) "aN") True (if_then_else Bool (eq (dp 2 s) "wN") True False))
|
||||
reggNoun s g = let c = if_then_else Bool (eq (last s) "ا" ) True (if_then_else Bool (eq (dp 2 s) "اں") True (if_then_else Bool (eq (dp 2 s) "وں") True False))
|
||||
in case <s,g,c> of {
|
||||
<_ + "t",Fem,_> => mkN10 (s);
|
||||
<_ + "t",Masc,_> => mkN02 (s);
|
||||
<_ + "w",Masc,_> => mkN11 (s);
|
||||
<_ + "w",Fem,_> => mkN07 (s);
|
||||
<_ + "ya",Fem,_> => mkN05 (s);
|
||||
<_ + "ya",Masc,_> => mkN02 (s);
|
||||
<_ + "ت",Fem,_> => mkN10 (s);
|
||||
<_ + "ت",Masc,_> => mkN02 (s);
|
||||
<_ + "و",Masc,_> => mkN11 (s);
|
||||
<_ + "و",Fem,_> => mkN07 (s);
|
||||
<_ + "یا",Fem,_> => mkN05 (s);
|
||||
<_ + "یا",Masc,_> => mkN02 (s);
|
||||
<_,Fem,False> => mkN08 (s);
|
||||
<_,Fem,_> => mkN09 (s)
|
||||
|
||||
@@ -70,15 +70,15 @@ oper
|
||||
|
||||
mkN01 : Str -> Noun ;
|
||||
mkN01 lRka = let end = last (lRka) ;
|
||||
lRk = if_then_else Str (eq end "e") lRka (tk 1 lRka)
|
||||
in mkNoun (lRka) (lRk+"E") (lRk+"E")
|
||||
(lRk+"E") (lRk+"wN") (lRk+"w")
|
||||
lRk = if_then_else Str (eq end "ع") lRka (tk 1 lRka)
|
||||
in mkNoun (lRka) (lRk+"ے") (lRk+"ے")
|
||||
(lRk+"ے") (lRk+"وں") (lRk+"و")
|
||||
Masc ;
|
||||
|
||||
-- masculine nouns does not end with a, h, e, an
|
||||
|
||||
mkN02 : Str -> Noun ;
|
||||
mkN02 mrd = let mrdwN = mrd+"wN" ;
|
||||
mkN02 mrd = let mrdwN = mrd+"وں" ;
|
||||
mrdw = tk 1 mrdwN
|
||||
in mkNoun mrd mrd mrd
|
||||
mrd mrdwN mrdw
|
||||
@@ -87,8 +87,8 @@ oper
|
||||
-- feminine Nouns end with y
|
||||
|
||||
mkN03 : Str -> Noun ;
|
||||
mkN03 krsy = let krsyaN = krsy+"aN" ;
|
||||
krsywN = krsy+"wN" ;
|
||||
mkN03 krsy = let krsyaN = krsy+"اں" ;
|
||||
krsywN = krsy+"وں" ;
|
||||
krsyw = tk 1 krsywN
|
||||
in mkNoun krsy krsy krsy
|
||||
krsyaN krsywN krsyw
|
||||
@@ -97,14 +97,14 @@ oper
|
||||
-- feminine nouns end with a, aN, wN
|
||||
mkN04 : Str -> Noun ;
|
||||
mkN04 n = case last n of {
|
||||
"a" => let bla = n
|
||||
"ا" => let bla = n
|
||||
in mkNoun bla bla bla
|
||||
(bla+"y^yN") (bla+"w^N") (bla+"w^")
|
||||
(bla+"ئیں") (bla+"ؤں") (bla+"ؤ")
|
||||
Fem ;
|
||||
_ => let maN = n ; -- ends with aN and wN
|
||||
ma = tk 1 maN
|
||||
in mkNoun maN maN maN
|
||||
(ma+"y^yN") (ma+"w^N") (ma+"w^N")
|
||||
(ma+"ئیں") (ma+"ؤں") (ma+"ؤں")
|
||||
Fem
|
||||
|
||||
};
|
||||
@@ -113,14 +113,14 @@ oper
|
||||
mkN05 : Str -> Noun ;
|
||||
mkN05 gRya = let gRy = (tk 1 gRya)
|
||||
in mkNoun gRya gRya gRya
|
||||
(gRya+"N") (gRy+"wN") (gRy+"w")
|
||||
(gRya+"ں") (gRy+"وں") (gRy+"و")
|
||||
Fem ;
|
||||
|
||||
-- feminine nouns end with w
|
||||
|
||||
mkN07 : Str -> Noun ;
|
||||
mkN07 khshbw = mkNoun khshbw khshbw khshbw
|
||||
(khshbw + "y^yN") (khshbw + "w^N") (khshbw + "w^")
|
||||
(khshbw + "ئیں") (khshbw + "ؤں") (khshbw + "ؤ")
|
||||
Fem ;
|
||||
|
||||
-- Loan arabic feminine nouns end with t
|
||||
@@ -128,7 +128,7 @@ oper
|
||||
|
||||
mkN10 : Str -> Noun ;
|
||||
mkN10 ndamt = mkNoun ndamt ndamt ndamt
|
||||
(ndamt+"yN") (ndamt+"wN") (ndamt+"w")
|
||||
(ndamt+"یں") (ndamt+"وں") (ndamt+"و")
|
||||
Fem ;
|
||||
-- Worst case function
|
||||
mkN : (_,_,_,_,_,_ : Str) -> Gender -> Noun ;
|
||||
@@ -137,28 +137,28 @@ oper
|
||||
|
||||
mkN06 : Str -> Noun ;
|
||||
mkN06 rya = mkNoun rya rya rya
|
||||
(rya+"y^yN") (rya+"w^N") rya
|
||||
(rya+"ئیں") (rya+"ؤں") rya
|
||||
Fem ;
|
||||
|
||||
-- feminine nouns that do not end with a, N, w, wN
|
||||
|
||||
mkN08 : Str -> Noun ;
|
||||
mkN08 ktab = mkNoun ktab ktab ktab
|
||||
(ktab+"yN") (ktab+"wN") (ktab+"w")
|
||||
(ktab+"یں") (ktab+"وں") (ktab+"و")
|
||||
Fem ;
|
||||
|
||||
-- Loan arabic feminine nouns
|
||||
|
||||
mkN09 : Str -> Noun ;
|
||||
mkN09 ahsan = mkNoun ahsan ahsan ahsan
|
||||
(ahsan+"at") (ahsan+"at") (ahsan+"w")
|
||||
(ahsan+"ات") (ahsan+"ات") (ahsan+"و")
|
||||
Fem ;
|
||||
-- (variants{ahsan+"at";ahsan+"wN"})
|
||||
-- (variants{ahsan+"ات";ahsan+"وں"})
|
||||
-- Loan persian maculine nouns end with w
|
||||
|
||||
mkN11 : Str -> Noun ;
|
||||
mkN11 alw = mkNoun alw alw alw
|
||||
alw (alw+"w^N") (alw+"w^")
|
||||
alw (alw+"ؤں") (alw+"ؤ")
|
||||
Masc ;
|
||||
|
||||
|
||||
@@ -291,8 +291,8 @@ oper
|
||||
};
|
||||
|
||||
makePersPron : PersPron;
|
||||
makePersPron = mkPersPron "m(a)yN" "m(o)j'|h" "" "t(o)w " "t(o)j|h" "t(o)w " "t(o)m" "t(o)m" "t(o)m" "Ap" "Ap" "Ap" "y(i)h" "a(i)s" "" "w(o)h" "a(o)s" ""
|
||||
"h(a)m" "h(a)m" "" "t(o)m" "t(o)m" "t(o)m" "t(o)m" "t(o)m" "t(o)m" "Ap" "Ap" "Ap" "y(i)h" "a(i)n" "" "w(o)h" "a(o)n" "" ;
|
||||
makePersPron = mkPersPron "m(a)یں" "m(o)j'|ہ" "" "t(o)و " "t(o)j|ہ" "t(o)و " "t(o)م" "t(o)م" "t(o)م" "آپ" "آپ" "آپ" "y(i)ہ" "a(i)س" "" "w(o)ہ" "a(o)س" ""
|
||||
"h(a)م" "h(a)م" "" "t(o)م" "t(o)م" "t(o)م" "t(o)م" "t(o)م" "t(o)م" "آپ" "آپ" "آپ" "y(i)ہ" "a(i)ن" "" "w(o)ہ" "a(o)ن" "" ;
|
||||
|
||||
mkPron : (x1,x2,x3:Str) -> {s:Case => Str} =
|
||||
\y1,y2,y3 -> { s =
|
||||
@@ -324,7 +324,7 @@ oper
|
||||
CommonVF = {s : VTense => UPerson => Number => Gender => Str} ;
|
||||
|
||||
mkVerb : (x1: Str) -> Verb = \inf ->
|
||||
let root = (tk 2 inf); inf_obl = ((tk 1 inf) + "E"); inf_fem = ((tk 1 inf) + "y")
|
||||
let root = (tk 2 inf); inf_obl = ((tk 1 inf) + "ے"); inf_fem = ((tk 1 inf) + "ی")
|
||||
in { s = table {
|
||||
|
||||
VF tense person number gender => (mkCmnVF root tense person number gender).s ;
|
||||
@@ -337,7 +337,7 @@ oper
|
||||
}
|
||||
} ;
|
||||
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)
|
||||
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)
|
||||
in rt st;
|
||||
rt: Str -> Str;
|
||||
rt r = r;
|
||||
@@ -345,12 +345,12 @@ oper
|
||||
\root,t,p,n,g ->
|
||||
{s =
|
||||
let form1 = case (last root) of {
|
||||
"a"|"A"|"w" => root + "w^N" ;
|
||||
_ => root + "wN"
|
||||
"ا"|"آ"|"و" => root + "ؤں" ;
|
||||
_ => root + "وں"
|
||||
};
|
||||
form2 = case (last root) of {
|
||||
"a"|"A"|"w" => root + "y^N" ;
|
||||
_ => root + "yN"
|
||||
"ا"|"آ"|"و" => root + "ئں" ;
|
||||
_ => root + "یں"
|
||||
};
|
||||
in
|
||||
case <t,p,n,g> of {
|
||||
@@ -358,24 +358,24 @@ oper
|
||||
<Subj,Pers1,Pl,_> => form2 ;
|
||||
<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 ;
|
||||
"جا" => (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 + "tE";
|
||||
<Imperf,Pers2_Familiar,Sg,Fem> => root + "ty"; --variants{root+"ty" ; root+"tyN"};
|
||||
<Imperf,Pers2_Familiar,Pl,Masc> => root + "tE";
|
||||
<Imperf,Pers2_Familiar,Pl,Fem> => root+"tyN";
|
||||
<Imperf,Pers2_Respect,Sg,Masc> => root + "tE";
|
||||
<Imperf,Pers2_Respect,Sg,Fem> => root + "ty"; --variants{root+"ty" ; root+"tyN"};
|
||||
<Imperf,Pers2_Respect,Pl,Masc> => root + "tE";
|
||||
<Imperf,Pers2_Respect,Pl,Fem> => root+"tyN";
|
||||
<Imperf,_,Sg,Masc> => root+"ta";
|
||||
<Imperf,_,Sg,Fem> => root+"ty";
|
||||
<Imperf,_,Pl,Masc> => root+"te";
|
||||
<Imperf,_,Pl,Fem> => root+"tyN"
|
||||
<Imperf,Pers2_Familiar,Sg,Masc> => root + "تے";
|
||||
<Imperf,Pers2_Familiar,Sg,Fem> => root + "تی"; --variants{root+"تی" ; root+"تیں"};
|
||||
<Imperf,Pers2_Familiar,Pl,Masc> => root + "تے";
|
||||
<Imperf,Pers2_Familiar,Pl,Fem> => root+"تیں";
|
||||
<Imperf,Pers2_Respect,Sg,Masc> => root + "تے";
|
||||
<Imperf,Pers2_Respect,Sg,Fem> => root + "تی"; --variants{root+"تی" ; root+"تیں"};
|
||||
<Imperf,Pers2_Respect,Pl,Masc> => root + "تے";
|
||||
<Imperf,Pers2_Respect,Pl,Fem> => root+"تیں";
|
||||
<Imperf,_,Sg,Masc> => root+"تا";
|
||||
<Imperf,_,Sg,Fem> => root+"تی";
|
||||
<Imperf,_,Pl,Masc> => root+"تع";
|
||||
<Imperf,_,Pl,Fem> => root+"تیں"
|
||||
}
|
||||
|
||||
} ;
|
||||
@@ -383,20 +383,20 @@ oper
|
||||
mkPastInd : Str -> UPerson -> Number -> Gender -> {s:Str} = \root,p,n,g ->
|
||||
{s = let roo = root ;
|
||||
a = case (last root) of {
|
||||
"a"|"A"|"w"|"k" => "ya" ;
|
||||
_ => "a"
|
||||
"ا"|"آ"|"و"|"ك" => "یا" ;
|
||||
_ => "ا"
|
||||
} ;
|
||||
y = case (last root) of {
|
||||
"a"|"A"|"w" => "y^y" ;
|
||||
_ => "y"
|
||||
"ا"|"آ"|"و" => "ئی" ;
|
||||
_ => "ی"
|
||||
} ;
|
||||
e = case (last root) of {
|
||||
"a"|"A"|"w"|"k" => "y^E" ;
|
||||
_ => "E"
|
||||
"ا"|"آ"|"و"|"ك" => "ئے" ;
|
||||
_ => "ے"
|
||||
} ;
|
||||
yN = case (last root) of {
|
||||
"a"|"A"|"w" => "y^yN" ;
|
||||
_ => "yN"
|
||||
"ا"|"آ"|"و" => "ئیں" ;
|
||||
_ => "یں"
|
||||
} ;
|
||||
|
||||
in
|
||||
@@ -431,20 +431,20 @@ oper
|
||||
mkImpert : Str -> UPerson -> Number -> Gender -> {s:Str} = \root,p,n,g ->
|
||||
{s = let roo = root ;
|
||||
w = case (last root) of {
|
||||
"a"|"A"|"w" => "w^" ;
|
||||
_ => "w"
|
||||
"ا"|"آ"|"و" => "ؤ" ;
|
||||
_ => "و"
|
||||
} ;
|
||||
yN = case (last root) of {
|
||||
"a"|"A"|"w" => "y^yN" ;
|
||||
_ => "yN"
|
||||
"ا"|"آ"|"و" => "ئیں" ;
|
||||
_ => "یں"
|
||||
} ;
|
||||
yE = case (last root) of {
|
||||
"a"|"A"|"w" => "y^yE" ;
|
||||
_ => "yE"
|
||||
"ا"|"آ"|"و" => "ئیے" ;
|
||||
_ => "یے"
|
||||
} ;
|
||||
e = case (last root) of {
|
||||
"a"|"A"|"w" => "y^E" ;
|
||||
_ => "E"
|
||||
"ا"|"آ"|"و" => "ئے" ;
|
||||
_ => "ے"
|
||||
} in
|
||||
case <p,n,g> of {
|
||||
<Pers1,_,_> => ""; --nonExist ;
|
||||
|
||||
@@ -22,7 +22,7 @@ concrete NounUrd of Noun = CatUrd ** open ResUrd, Prelude in {
|
||||
} ;
|
||||
|
||||
RelNP np rs = {
|
||||
s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ;
|
||||
s = \\c => np.s ! c ++ comma_Str ++ rs.s ! np.a ;
|
||||
a = np.a
|
||||
} ;
|
||||
|
||||
@@ -65,18 +65,6 @@ concrete NounUrd of Noun = CatUrd ** open ResUrd, Prelude in {
|
||||
|
||||
OrdSuperl a = {s = a.s ! Sg ! Masc ! Dir ! Superl ; n = Sg} ;
|
||||
|
||||
|
||||
|
||||
DetArtSg art cn = {
|
||||
s = \\c => art.s ++ toNP (cn.s ! Sg) c ;
|
||||
a = agrP3 cn.g Sg
|
||||
} ;
|
||||
|
||||
DetArtPl art cn = {
|
||||
s = \\c => art.s ++ toNP (cn.s ! Pl) c ;
|
||||
a = agrP3 cn.g Pl
|
||||
} ;
|
||||
|
||||
DefArt = {s = \\_,_,_ => [] ; a = defaultAgr} ;
|
||||
IndefArt = {s = \\_,_,_ => [] ; a =defaultAgr } ;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
concrete NumeralUrd of Numeral = CatUrd ** open ResUrd in {
|
||||
-- By Harald Hammarström
|
||||
-- By Harald Hammarström
|
||||
-- Modification for Urdu Shafqat Virk
|
||||
flags coding=utf8 ;
|
||||
--- still old Devanagari coding
|
||||
@@ -22,18 +22,18 @@ lincat Sub1000000 = { s : Str ; n : Number } ;
|
||||
lin num x0 =
|
||||
{s = table {
|
||||
NCard => x0.s ;
|
||||
NOrd => x0.s ++ "waN" -- need to use mkOrd which will make irregular ordinals but it gives path error
|
||||
NOrd => x0.s ++ "واں" -- need to use mkOrd which will make irregular ordinals but it gives path error
|
||||
};
|
||||
n = x0.n
|
||||
} ;
|
||||
oper mkOrd : Str -> Str =
|
||||
\s -> case s of {
|
||||
"ek" => "phla";
|
||||
"do" => "dwsra";
|
||||
"ti:n" => "tesra";
|
||||
"ca:r" => "cwth-a";
|
||||
("cHah"|"cHa"|"cHai") => "ch-Ta";
|
||||
_ => s ++ "waN"
|
||||
"عك" => "پہلا";
|
||||
"دo" => "دوسرا";
|
||||
"تi:ن" => "تعسرا";
|
||||
"چa:ر" => "چوتھا";
|
||||
("چحاہ"|"چحا"|"چحاi") => "چھٹا";
|
||||
_ => s ++ "واں"
|
||||
};
|
||||
-- {s = \\_ => x0.s ; n = x0.n} ;
|
||||
|
||||
@@ -43,47 +43,47 @@ oper mkNum : Str -> Str -> DSize -> LinDigit =
|
||||
{s = table {unit => do ; ten => bis } ;
|
||||
size = sz ; n = Pl} ;
|
||||
|
||||
lin n2 = mkNum "dw" "bys" r2 ;
|
||||
lin n3 = mkNum "tyn" "tys" r3 ;
|
||||
lin n4 = mkNum "car" "calys" r4 ;
|
||||
lin n5 = mkNum "panc" "pcas" r5 ;
|
||||
lin n6 = mkNum "ch-" "sath-" r6 ;
|
||||
lin n7 = mkNum "sat" "str" r7;
|
||||
lin n8 = mkNum "Ath-" "asy" r8;
|
||||
lin n9 = mkNum "nw" "nwE" r9 ;
|
||||
lin n2 = mkNum "دو" "بیس" r2 ;
|
||||
lin n3 = mkNum "تین" "تیس" r3 ;
|
||||
lin n4 = mkNum "چار" "چالیس" r4 ;
|
||||
lin n5 = mkNum "پانچ" "پچاس" r5 ;
|
||||
lin n6 = mkNum "چھ" "ساتھ" r6 ;
|
||||
lin n7 = mkNum "سات" "ستر" r7;
|
||||
lin n8 = mkNum "آتھ" "اسی" r8;
|
||||
lin n9 = mkNum "نو" "نوے" r9 ;
|
||||
|
||||
oper mkR : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> DSize => Str = \a1 -> \a2 -> \a3 -> \a4 -> \a5 -> \a6 -> \a7 -> \a8 -> \a9 -> table {
|
||||
sg => a1 + "ah" ;
|
||||
r2 => a2 + "i:s" ;
|
||||
r3 => a3 + "ti:s" ;
|
||||
r4 => a4 + "a:li:s" ;
|
||||
r5 => a5 + "an" ;
|
||||
r6 => a6 + "saTH" ;
|
||||
r7 => a7 + "hattar" ;
|
||||
r8 => a8 + "a:si:" ;
|
||||
r9 => a9 + "a:nave"
|
||||
sg => a1 + "اہ" ;
|
||||
r2 => a2 + "i:س" ;
|
||||
r3 => a3 + "تi:س" ;
|
||||
r4 => a4 + "a:لi:س" ;
|
||||
r5 => a5 + "ان" ;
|
||||
r6 => a6 + "ساٹح" ;
|
||||
r7 => a7 + "ہاتتار" ;
|
||||
r8 => a8 + "a:سi:" ;
|
||||
r9 => a9 + "a:ناvع"
|
||||
} ;
|
||||
|
||||
oper rows : DSize => DSize => Str = table {
|
||||
sg => mkR "gyarh" "ikk" "ikat" "ekt" "ikyaw" "ik" "ik" "iky" "iky" ;
|
||||
r2 => mkR "barh" "bay" "bat" "bay" "baw" "ba" "ba" "bay" "b" ;
|
||||
r3 => mkR "tyr" "ty" "tyn" "tnt" "trp" "try" "t" "tr" "tr" ;
|
||||
r4 => mkR "cwd" "cwb" "cwn" "cwa" "cww" "cwn" "cwh" "cwr" "cwr" ;
|
||||
r5 => mkR "pnd" "pcy" "pyn" "pnta" "pcp" "pyn" "ph" "pc" "pc" ;
|
||||
r6 => mkR "swl" "ch-b" "ch-t" "ch-y" "ch-p" "ch-ya" "ch-" "ch-y" "ch-y" ;
|
||||
r7 => mkR "str" "sta" "syn" "snt" "staw" "sta" "sr" "st" "sta" ;
|
||||
r8 => mkR "ath-ar" "ath-ay" "aR" "aRt" "ath-aw" "aR" "ath-" "ath-" "ath-" ;
|
||||
r9 => table {sg => "anys" ; r2 => "antys" ; r3 => "antalys" ;
|
||||
r4 => "ancas" ; r5 => "ansth-" ; r6 => "anhtr" ;
|
||||
r7 => "anasy" ;
|
||||
r8 => "ananwE" ; r9 => "nnanwE" }
|
||||
sg => mkR "گیارہ" "iكك" "iكات" "عكت" "iكیاو" "iك" "iك" "iكی" "iكی" ;
|
||||
r2 => mkR "بارہ" "بای" "بات" "بای" "باو" "با" "با" "بای" "ب" ;
|
||||
r3 => mkR "تیر" "تی" "تین" "تنت" "ترپ" "تری" "ت" "تر" "تر" ;
|
||||
r4 => mkR "چود" "چوب" "چون" "چوا" "چوو" "چون" "چوہ" "چور" "چور" ;
|
||||
r5 => mkR "پند" "پچی" "پین" "پنتا" "پچپ" "پین" "پہ" "پچ" "پچ" ;
|
||||
r6 => mkR "سول" "چھب" "چھت" "چھی" "چھپ" "چھیا" "چھ" "چھی" "چھی" ;
|
||||
r7 => mkR "ستر" "ستا" "سین" "سنت" "ستاو" "ستا" "سر" "ست" "ستا" ;
|
||||
r8 => mkR "اتھار" "اتھای" "اڑ" "اڑت" "اتھاو" "اڑ" "اتھ" "اتھ" "اتھ" ;
|
||||
r9 => table {sg => "انیس" ; r2 => "انتیس" ; r3 => "انتالیس" ;
|
||||
r4 => "انچاس" ; r5 => "انستھ" ; r6 => "انہتر" ;
|
||||
r7 => "اناسی" ;
|
||||
r8 => "انانوے" ; r9 => "ننانوے" }
|
||||
} ;
|
||||
|
||||
oper ss : Str -> {s : Str} = \s -> {s = s} ;
|
||||
|
||||
lin pot01 = {s = table {unit => "ayk" ; _ => "dummy" } ; size = sg ; n = Sg} ;
|
||||
lin pot01 = {s = table {unit => "ایك" ; _ => "دuممی" } ; size = sg ; n = Sg} ;
|
||||
lin pot0 d = d ;
|
||||
lin pot110 = {s = "das" ; size = less100 ; n = Pl} ;
|
||||
lin pot110 = {s = "داس" ; size = less100 ; n = Pl} ;
|
||||
lin pot111 = {s = rows ! sg ! sg ; size = less100 ; n = Pl} ;
|
||||
lin pot1to19 d = {s = rows ! d.size ! sg ; size = less100 ; n = d.n} ;
|
||||
lin pot0as1 n = {s = n.s ! unit ; size = table {sg => sing ; _ => less100} ! n.size ; n = n.n } ;
|
||||
@@ -91,21 +91,21 @@ lin pot0as1 n = {s = n.s ! unit ; size = table {sg => sing ; _ => less100} ! n.s
|
||||
lin pot1 d = {s = d.s ! ten ; size = less100 ; n = d.n} ;
|
||||
lin pot1plus d e = {s = rows ! e.size ! d.size ; size = less100 ; n = d.n} ;
|
||||
|
||||
lin pot1as2 n = {s = n.s ; s2 = "dummy" ; size = n.size ; n = n.n} ;
|
||||
lin pot1as2 n = {s = n.s ; s2 = "دuممی" ; size = n.size ; n = n.n} ;
|
||||
lin pot2 d = {s = (mksau (d.s ! unit) d.size) ;
|
||||
s2 = d.s ! unit ++ "lakh-" ; size = more100 ; n = d.n} ;
|
||||
s2 = d.s ! unit ++ "لاكھ" ; size = more100 ; n = d.n} ;
|
||||
lin pot2plus d e =
|
||||
{s = (mksau (d.s ! unit) d.size) ++ e.s ;
|
||||
s2 = (d.s ! unit) ++ "lakh-" ++ (mkhazar e.s e.size) ;
|
||||
s2 = (d.s ! unit) ++ "لاكھ" ++ (mkhazar e.s e.size) ;
|
||||
size = more100 ; n = d.n} ;
|
||||
|
||||
lin pot2as3 n = {s = n.s ; n = n.n} ;
|
||||
lin pot3 n = {s = table { sing => ekhazar ;
|
||||
less100 => n.s ++ "hzar" ;
|
||||
less100 => n.s ++ "ہزار" ;
|
||||
more100 => n.s2 } ! n.size ; n = n.n} ;
|
||||
lin pot3plus n m =
|
||||
{s = table {sing => ekhazar ;
|
||||
less100 => n.s ++ "hzar" ;
|
||||
less100 => n.s ++ "ہزار" ;
|
||||
more100 => n.s2 } ! n.size ++ m.s ; n = n.n} ;
|
||||
|
||||
lin D_0 = { s = "0" ; n = Sg};
|
||||
@@ -121,7 +121,7 @@ lin D_9 = { s = "9" ; n = Pl};
|
||||
lin IDig d = { s = \\_ => d.s ; n = d.n} ;
|
||||
lin IIDig d dg = { s = \\df => dg.s ! df ++ d.s ; n = Pl }; -- need to use + rather than ++, but gives error need to discuss
|
||||
|
||||
oper ekhazar : Str = variants {"hzar" ; "ayk" ++ "hzar"} ;
|
||||
oper mkhazar : Str -> Size -> Str = \s -> \sz -> table {sing => ekhazar ; _ => s ++ "hzar"} ! sz ;
|
||||
oper mksau : Str -> DSize -> Str = \s -> \sz -> table {sg => "sw" ; _ => s ++ "sw"} ! sz ;
|
||||
oper ekhazar : Str = variants {"ہزار" ; "ایك" ++ "ہزار"} ;
|
||||
oper mkhazar : Str -> Size -> Str = \s -> \sz -> table {sing => ekhazar ; _ => s ++ "ہزار"} ! sz ;
|
||||
oper mksau : Str -> DSize -> Str = \s -> \sz -> table {sg => "سو" ; _ => s ++ "سو"} ! sz ;
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ oper
|
||||
----2 Prepositions
|
||||
|
||||
mkPrep : Str -> Prep ;
|
||||
mkPrep str = makePrep str ;
|
||||
mkPrep str = lin Prep (makePrep str) ;
|
||||
|
||||
--2 Conjunctions
|
||||
mkConj : overload {
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
concrete QuestionUrd of Question = CatUrd ** open ResUrd, Prelude in {
|
||||
flags optimize=all_subs ;
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
|
||||
QuestCl cl = {
|
||||
s = \\t,p,qf => case qf of {
|
||||
QDir => cl.s ! t ! p ! OQuest;
|
||||
QIndir => "agr" ++ cl.s ! t! p ! ODir
|
||||
QIndir => agr_Str ++ cl.s ! t! p ! ODir
|
||||
}
|
||||
};
|
||||
|
||||
QuestVP qp vp =
|
||||
let cl = mkSClause ("") (Ag qp.g qp.n Pers3_Near) vp;
|
||||
let cl = mkSClause [] (Ag qp.g qp.n Pers3_Near) vp;
|
||||
qp1 = qp.s ! Dir;
|
||||
qp2 = qp.s ! Obl ++ "nE"
|
||||
qp2 = qp.s ! Obl ++ nE_Str
|
||||
in { s = \\t,p,o => case t of {
|
||||
VPImpPast => qp2 ++ cl.s ! t ! p ! ODir;
|
||||
_ => qp1 ++ cl.s ! t ! p ! ODir
|
||||
@@ -22,7 +21,7 @@ concrete QuestionUrd of Question = CatUrd ** open ResUrd, Prelude in {
|
||||
};
|
||||
QuestSlash ip slash =
|
||||
let ip1 = ip.s ! Dir;
|
||||
ip2 = ip.s ! Obl ++ "nE"
|
||||
ip2 = ip.s ! Obl ++ nE_Str
|
||||
in {
|
||||
s = \\t,p,o => case t of {
|
||||
VPImpPast => ip2 ++ slash.s ! t ! p ! ODir;
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
concrete RelativeUrd of Relative = CatUrd ** open ResUrd in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
|
||||
RelCl cl = {
|
||||
s = \\t,p,o,agr => case <t,giveNumber agr> of {
|
||||
<VPImpPast,Sg> => "js" ++ cl.s ! t ! p ! o ;
|
||||
<VPImpPast,Pl> => "jn" ++ cl.s ! t ! p ! o ;
|
||||
<_,_> => "jw" ++ cl.s ! t ! p ! o
|
||||
<VPImpPast,Sg> => js_Str ++ cl.s ! t ! p ! o ;
|
||||
<VPImpPast,Pl> => jn_Str ++ cl.s ! t ! p ! o ;
|
||||
<_,_> => jw_Str ++ cl.s ! t ! p ! o
|
||||
};
|
||||
c = Dir
|
||||
} ;
|
||||
@@ -33,9 +32,6 @@ concrete RelativeUrd of Relative = CatUrd ** open ResUrd in {
|
||||
c = Dir
|
||||
} ;
|
||||
--
|
||||
---- Pied piping: "at which we are looking". Stranding and empty
|
||||
---- relative are defined in $ExtraHin.gf$ ("that we are looking at",
|
||||
---- "we are looking at").
|
||||
--
|
||||
RelSlash rp slash = {
|
||||
s = \\t,p,o,agr => rp.s ! (giveNumber agr) ! Dir ++ slash.c2.s ++ slash.s ! t ! p ! o ;--case t of {
|
||||
@@ -54,14 +50,14 @@ concrete RelativeUrd of Relative = CatUrd ** open ResUrd in {
|
||||
s = table {
|
||||
Sg => table {
|
||||
|
||||
ResUrd.Dir => "jw" ;
|
||||
ResUrd.Obl => "js" ;
|
||||
ResUrd.Voc => "js"
|
||||
ResUrd.Dir => jw_Str ;
|
||||
ResUrd.Obl => js_Str ;
|
||||
ResUrd.Voc => js_Str
|
||||
};
|
||||
Pl => table {
|
||||
ResUrd.Dir => "jw" ;
|
||||
ResUrd.Obl => "jn" ;
|
||||
ResUrd.Voc => "jn"
|
||||
ResUrd.Dir => jw_Str ;
|
||||
ResUrd.Obl => jn_Str ;
|
||||
ResUrd.Voc => jn_Str
|
||||
}
|
||||
};
|
||||
a = RNoAg
|
||||
|
||||
@@ -147,10 +147,10 @@ resource ResUrd = ParamX ** open Prelude,Predef in {
|
||||
|
||||
regAdjective : Str -> Adjective;
|
||||
regAdjective x = case x of {
|
||||
acch + ("a"|"aN") => mkAdjective x ("bht" ++ x) ("sab sE" ++ x) (acch + "E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E")
|
||||
(acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y")
|
||||
(acch +"E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E")
|
||||
(acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y");
|
||||
acch + ("ا"|"اں") => mkAdjective x ("بہت" ++ x) ("ساب سے" ++ x) (acch + "ے") ("بہت" ++ acch + "ے") ("ساب سے" ++ acch + "ے") (acch + "ے") ("بہت" ++ acch + "ے") ("ساب سے" ++ acch + "ے")
|
||||
(acch + "ی") ("بہت" ++ acch + "ی") ("ساب سے" ++ acch + "ی") (acch + "ی") ("بہت" ++ acch + "ی") ("ساب سے" ++ acch + "ی") (acch + "ی") ("بہت" ++ acch + "ی") ("ساب سے" ++ acch + "ی")
|
||||
(acch +"ے") ("بہت" ++ acch + "ے") ("ساب سے" ++ acch + "ے") (acch + "ے") ("بہت" ++ acch + "ے") ("ساب سے" ++ acch + "ے") (acch + "ے") ("بہت" ++ acch + "ے") ("ساب سے" ++ acch + "ے")
|
||||
(acch + "ی") ("بہت" ++ acch + "ی") ("ساب سے" ++ acch + "ی") (acch + "ی") ("بہت" ++ acch + "ی") ("ساب سے" ++ acch + "ی") (acch + "ی") ("بہت" ++ acch + "ی") ("ساب سے" ++ acch + "ی");
|
||||
|
||||
_ => mkAdjective x x x x x x x x x
|
||||
x x x x x x x x x
|
||||
@@ -161,7 +161,7 @@ resource ResUrd = ParamX ** open Prelude,Predef in {
|
||||
|
||||
|
||||
RefPron : Str;
|
||||
RefPron = "Kwd";
|
||||
RefPron = "خود";
|
||||
|
||||
----------------------------------------------------------
|
||||
-- Grammar part
|
||||
@@ -175,23 +175,23 @@ resource ResUrd = ParamX ** open Prelude,Predef in {
|
||||
np2pronCase : (Case => Str) -> NPCase -> Str = \ppf,npc -> case npc of {
|
||||
NPC c => ppf ! c;
|
||||
NPObj => ppf ! Dir ;
|
||||
NPErg => ppf ! Obl ++ "ne"
|
||||
NPErg => ppf ! Obl ++ "نع"
|
||||
} ;
|
||||
|
||||
toNP : ( Case => Str) -> NPCase -> Str = \pn, npc -> case npc of {
|
||||
NPC c => pn ! c ;
|
||||
NPObj => pn ! Dir ;
|
||||
NPErg => pn ! Obl ++ "ne"
|
||||
NPErg => pn ! Obl ++ "نع"
|
||||
} ;
|
||||
detcn2NP : (Determiner) -> Noun -> NPCase -> Number -> Str = \dt,cn,npc,nn -> case npc of {
|
||||
NPC c => dt.s ! Sg ! Masc ++ cn.s ! nn ! Dir ;
|
||||
NPObj => dt.s ! Sg ! Masc ++ cn.s ! nn ! Dir ;
|
||||
NPErg => dt.s ! Sg ! Masc ++ cn.s ! nn ! Obl ++ "ne"
|
||||
NPErg => dt.s ! Sg ! Masc ++ cn.s ! nn ! Obl ++ "نع"
|
||||
} ;
|
||||
det2NP : (Determiner) -> NPCase -> Str = \dt,npc -> case npc of {
|
||||
NPC c => dt.s ! Sg ! Masc ;
|
||||
NPObj => dt.s ! Sg ! Masc ;
|
||||
NPErg => dt.s ! Sg ! Masc ++ "ne"
|
||||
NPErg => dt.s ! Sg ! Masc ++ "نع"
|
||||
} ;
|
||||
|
||||
------------------------------------------
|
||||
@@ -243,66 +243,66 @@ resource ResUrd = ParamX ** open Prelude,Predef in {
|
||||
oper
|
||||
copula : CTense -> Number -> UPerson -> Gender -> Str = \t,n,p,g ->
|
||||
case <t,n,p,g> of {
|
||||
<CPresent,Sg,Pers1,_ > => "hwN" ;
|
||||
<CPresent,Sg,Pers2_Casual,_ > => "hE" ;
|
||||
<CPresent,Sg,Pers2_Familiar,_ > => "hw" ;
|
||||
<CPresent,Sg,Pers2_Respect,_ > => "hyN" ;
|
||||
<CPresent,Sg,Pers3_Near,_ > => "hE" ;
|
||||
<CPresent,Sg,Pers3_Distant,_ > => "hE" ;
|
||||
<CPresent,Pl,Pers1,_ > => "hyN" ;
|
||||
<CPresent,Pl,Pers2_Casual,_ > => "hw" ;
|
||||
<CPresent,Pl,Pers2_Familiar,_ > => "hw" ;
|
||||
<CPresent,Pl,Pers2_Respect,_ > => "hyN" ;
|
||||
<CPresent,Pl,Pers3_Near,_ > => "hyN" ;
|
||||
<CPresent,Pl,Pers3_Distant,_ > => "hyN" ;
|
||||
<CPast,Sg,Pers1,Masc > => "th-a" ;
|
||||
<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,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,Fem > => "th-y" ;
|
||||
<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" ;
|
||||
<CPast,Pl,Pers2_Casual,Masc > => "th-E" ;
|
||||
<CPast,Pl,Pers2_Casual,Fem > => "th-yN" ;
|
||||
<CPast,Pl,Pers2_Familiar,Masc > => "th-E" ;
|
||||
<CPast,Pl,Pers2_Familiar,Fem > => "th-yN" ;
|
||||
<CPast,Pl,Pers2_Respect,Masc > => "th-E" ;
|
||||
<CPast,Pl,Pers2_Respect,Fem > => "th-yN" ;
|
||||
<CPast,Pl,Pers3_Near,Masc > => "th-E" ;
|
||||
<CPast,Pl,Pers3_Near,Fem > => "th-yN" ;
|
||||
<CPast,Pl,Pers3_Distant,Masc > => "th-E" ;
|
||||
<CPast,Pl,Pers3_Distant,Fem > => "th-yN" ;
|
||||
<CFuture,Sg,Pers1,Masc > => "ga" ;
|
||||
<CFuture,Sg,Pers1,Fem > => "gy" ;
|
||||
<CFuture,Sg,Pers2_Casual,Masc > => "ga" ;
|
||||
<CFuture,Sg,Pers2_Casual,Fem > => "gi" ;
|
||||
<CFuture,Sg,Pers2_Familiar,Masc > => "gE" ;
|
||||
<CFuture,Sg,Pers2_Familiar,Fem > => "gy" ;
|
||||
<CFuture,Sg,Pers2_Respect,Masc > => "gE" ;
|
||||
<CFuture,Sg,Pers2_Respect,Fem > => "gy" ;
|
||||
<CFuture,Sg,Pers3_Near,Masc > => "ga" ;
|
||||
<CFuture,Sg,Pers3_Near,Fem > => "gy" ;
|
||||
<CFuture,Sg,Pers3_Distant,Masc > => "ga" ;
|
||||
<CFuture,Sg,Pers3_Distant,Fem > => "gy" ;
|
||||
<CFuture,Pl,Pers1,Masc > => "gE" ;
|
||||
<CFuture,Pl,Pers1,Fem > => "gy" ;
|
||||
<CFuture,Pl,Pers2_Casual,Masc > => "gE" ;
|
||||
<CFuture,Pl,Pers2_Casual,Fem > => "gy" ;
|
||||
<CFuture,Pl,Pers2_Familiar,Masc > => "gE" ;
|
||||
<CFuture,Pl,Pers2_Familiar,Fem > => "gy" ;
|
||||
<CFuture,Pl,Pers2_Respect,Masc > => "gE" ;
|
||||
<CFuture,Pl,Pers2_Respect,Fem > => "gy" ;
|
||||
<CFuture,Pl,Pers3_Near,Masc > => "gE" ;
|
||||
<CFuture,Pl,Pers3_Near,Fem > => "gE" ;
|
||||
<CFuture,Pl,Pers3_Distant,Masc > => "gE" ;
|
||||
<CFuture,Pl,Pers3_Distant,Fem > => "gy"
|
||||
<CPresent,Sg,Pers1,_ > => "ہوں" ;
|
||||
<CPresent,Sg,Pers2_Casual,_ > => "ہے" ;
|
||||
<CPresent,Sg,Pers2_Familiar,_ > => "ہو" ;
|
||||
<CPresent,Sg,Pers2_Respect,_ > => "ہیں" ;
|
||||
<CPresent,Sg,Pers3_Near,_ > => "ہے" ;
|
||||
<CPresent,Sg,Pers3_Distant,_ > => "ہے" ;
|
||||
<CPresent,Pl,Pers1,_ > => "ہیں" ;
|
||||
<CPresent,Pl,Pers2_Casual,_ > => "ہو" ;
|
||||
<CPresent,Pl,Pers2_Familiar,_ > => "ہو" ;
|
||||
<CPresent,Pl,Pers2_Respect,_ > => "ہیں" ;
|
||||
<CPresent,Pl,Pers3_Near,_ > => "ہیں" ;
|
||||
<CPresent,Pl,Pers3_Distant,_ > => "ہیں" ;
|
||||
<CPast,Sg,Pers1,Masc > => "تھا" ;
|
||||
<CPast,Sg,Pers1,Fem > => "تھی" ;
|
||||
<CPast,Sg,Pers2_Casual,Masc > => "تھا" ;
|
||||
<CPast,Sg,Pers2_Casual,Fem > => "تھی" ;
|
||||
<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 > => "تھا" ;
|
||||
<CPast,Sg,Pers3_Near,Fem > => "تھی" ;
|
||||
<CPast,Sg,Pers3_Distant,Masc > => "تھا" ;
|
||||
<CPast,Sg,Pers3_Distant,Fem > => "تھی" ;
|
||||
<CPast,Pl,Pers1,Masc > => "تھے" ;
|
||||
<CPast,Pl,Pers1,Fem > => "تھیں" ;
|
||||
<CPast,Pl,Pers2_Casual,Masc > => "تھے" ;
|
||||
<CPast,Pl,Pers2_Casual,Fem > => "تھیں" ;
|
||||
<CPast,Pl,Pers2_Familiar,Masc > => "تھے" ;
|
||||
<CPast,Pl,Pers2_Familiar,Fem > => "تھیں" ;
|
||||
<CPast,Pl,Pers2_Respect,Masc > => "تھے" ;
|
||||
<CPast,Pl,Pers2_Respect,Fem > => "تھیں" ;
|
||||
<CPast,Pl,Pers3_Near,Masc > => "تھے" ;
|
||||
<CPast,Pl,Pers3_Near,Fem > => "تھیں" ;
|
||||
<CPast,Pl,Pers3_Distant,Masc > => "تھے" ;
|
||||
<CPast,Pl,Pers3_Distant,Fem > => "تھیں" ;
|
||||
<CFuture,Sg,Pers1,Masc > => "گا" ;
|
||||
<CFuture,Sg,Pers1,Fem > => "گی" ;
|
||||
<CFuture,Sg,Pers2_Casual,Masc > => "گا" ;
|
||||
<CFuture,Sg,Pers2_Casual,Fem > => "گi" ;
|
||||
<CFuture,Sg,Pers2_Familiar,Masc > => "گے" ;
|
||||
<CFuture,Sg,Pers2_Familiar,Fem > => "گی" ;
|
||||
<CFuture,Sg,Pers2_Respect,Masc > => "گے" ;
|
||||
<CFuture,Sg,Pers2_Respect,Fem > => "گی" ;
|
||||
<CFuture,Sg,Pers3_Near,Masc > => "گا" ;
|
||||
<CFuture,Sg,Pers3_Near,Fem > => "گی" ;
|
||||
<CFuture,Sg,Pers3_Distant,Masc > => "گا" ;
|
||||
<CFuture,Sg,Pers3_Distant,Fem > => "گی" ;
|
||||
<CFuture,Pl,Pers1,Masc > => "گے" ;
|
||||
<CFuture,Pl,Pers1,Fem > => "گی" ;
|
||||
<CFuture,Pl,Pers2_Casual,Masc > => "گے" ;
|
||||
<CFuture,Pl,Pers2_Casual,Fem > => "گی" ;
|
||||
<CFuture,Pl,Pers2_Familiar,Masc > => "گے" ;
|
||||
<CFuture,Pl,Pers2_Familiar,Fem > => "گی" ;
|
||||
<CFuture,Pl,Pers2_Respect,Masc > => "گے" ;
|
||||
<CFuture,Pl,Pers2_Respect,Fem > => "گی" ;
|
||||
<CFuture,Pl,Pers3_Near,Masc > => "گے" ;
|
||||
<CFuture,Pl,Pers3_Near,Fem > => "گے" ;
|
||||
<CFuture,Pl,Pers3_Distant,Masc > => "گے" ;
|
||||
<CFuture,Pl,Pers3_Distant,Fem > => "گی"
|
||||
|
||||
|
||||
} ;
|
||||
@@ -314,19 +314,19 @@ resource ResUrd = ParamX ** open Prelude,Predef in {
|
||||
|VPFutr;
|
||||
|
||||
VPHTense =
|
||||
VPGenPres -- impf hum nahim "I go"
|
||||
| VPImpPast -- impf Ta nahim "I went"
|
||||
| VPFut -- fut na/nahim "I shall go"
|
||||
| VPContPres -- stem raha hum nahim "I am going"
|
||||
| VPContPast -- stem raha Ta nahim "I was going"
|
||||
VPGenPres -- impf hum nahim "I گo"
|
||||
| VPImpPast -- impf Ta nahim "I وعنت"
|
||||
| VPFut -- fut na/nahim "I سہالل گo"
|
||||
| VPContPres -- stem raha hum nahim "I ام گoiنگ"
|
||||
| VPContPast -- stem raha Ta nahim "I واس گoiنگ"
|
||||
| VPContFut
|
||||
| VPPerfPres -- perf hum na/nahim "I have gone"
|
||||
| VPPerfPast -- perf Ta na/nahim "I had gone"
|
||||
| VPPerfPres -- perf hum na/nahim "I ہاvع گoنع"
|
||||
| VPPerfPast -- perf Ta na/nahim "I ہاد گoنع"
|
||||
| VPPerfFut
|
||||
| VPPerfPresCont
|
||||
| VPPerfPastCont
|
||||
| VPPerfFutCont
|
||||
| VPSubj -- subj na "I may go"
|
||||
| VPSubj -- subj na "I مای گo"
|
||||
;
|
||||
|
||||
VPHForm =
|
||||
@@ -383,16 +383,16 @@ resource ResUrd = ParamX ** open Prelude,Predef in {
|
||||
|
||||
|
||||
raha : Gender -> Number -> Str = \g,n ->
|
||||
(regAdjective "rha").s ! n ! g ! Dir ! Posit ;
|
||||
(regAdjective "رہا").s ! n ! g ! Dir ! Posit ;
|
||||
|
||||
cka : Gender -> Number -> Str = \g,n ->
|
||||
(regAdjective "cka").s ! n ! g ! Dir ! Posit ;
|
||||
(regAdjective "چكا").s ! n ! g ! Dir ! Posit ;
|
||||
|
||||
hw : UPerson -> Number -> Str = \pp,n ->
|
||||
case <pp,n> of {
|
||||
<Pers1,_> => "hwN";
|
||||
<_,Pl> => "hwN";
|
||||
<_,_> => "hw"
|
||||
<Pers1,_> => "ہوں";
|
||||
<_,Pl> => "ہوں";
|
||||
<_,_> => "ہو"
|
||||
};
|
||||
|
||||
predAux : Aux -> VPH = \verb -> {
|
||||
@@ -407,7 +407,7 @@ resource ResUrd = ParamX ** open Prelude,Predef in {
|
||||
VPTense VPPres (Ag g n p) => {fin = copula CPresent n p g ; inf = part } ;
|
||||
VPTense VPPast (Ag g n p) => {fin = copula CPast n p g ; inf = part } ;
|
||||
VPTense VPFutr (Ag g n p) => {fin = copula CFuture n p g ; inf = part ++ hw p n } ;
|
||||
VPStem => {fin = [] ; inf = "rh" };
|
||||
VPStem => {fin = [] ; inf = "رہ" };
|
||||
_ => {fin = part ; inf = [] }
|
||||
};
|
||||
obj = {s = [] ; a = defaultAgr} ;
|
||||
@@ -468,7 +468,7 @@ resource ResUrd = ParamX ** open Prelude,Predef in {
|
||||
{fin = copula CPast n p g ; inf = (vp.s ! VPTense VPPres agr).inf ++ raha g n } ;
|
||||
VPPerfFutCont =>
|
||||
{fin = copula CFuture n p g ; inf = (vp.s ! VPTense VPPres agr).inf ++ raha g n ++ hw p n } ;
|
||||
VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "xayd" }
|
||||
VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "ژاید" }
|
||||
|
||||
};
|
||||
|
||||
@@ -476,15 +476,15 @@ resource ResUrd = ParamX ** open Prelude,Predef in {
|
||||
quest =
|
||||
case ord of
|
||||
{ ODir => [];
|
||||
OQuest => "kya" };
|
||||
OQuest => "كیا" };
|
||||
na =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "na" };
|
||||
Neg => "نا" };
|
||||
nahim =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "nhyN" };
|
||||
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 ;
|
||||
@@ -521,22 +521,22 @@ resource ResUrd = ParamX ** open Prelude,Predef in {
|
||||
{fin = copula CPast n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ;
|
||||
VPPerfFutCont =>
|
||||
{fin = copula CFuture n p g ; inf = (vp.s ! VPStem).inf ++ raha g n ++ hw p n } ;
|
||||
VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "xayd" }
|
||||
VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "ژاید" }
|
||||
|
||||
};
|
||||
|
||||
quest =
|
||||
case ord of
|
||||
{ ODir => [];
|
||||
OQuest => "kya" };
|
||||
OQuest => "كیا" };
|
||||
na =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "na" };
|
||||
Neg => "نا" };
|
||||
nahim =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "nhyN" };
|
||||
Neg => "نہیں" };
|
||||
in
|
||||
case t of {
|
||||
VPSubj => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ na ++ vps.inf ++ vps.fin ++ vp.embComp;
|
||||
@@ -544,7 +544,7 @@ resource ResUrd = ParamX ** open Prelude,Predef in {
|
||||
} ;
|
||||
|
||||
insertSubj : UPerson -> Str -> Str = \p,s ->
|
||||
case p of { Pers1 => s ++ "wN" ; _ => s ++ "E"};
|
||||
case p of { Pers1 => s ++ "وں" ; _ => s ++ "ے"};
|
||||
|
||||
insertObj : (Agr => Str) -> VPH -> VPH = \obj1,vp -> {
|
||||
s = vp.s ;
|
||||
@@ -615,7 +615,27 @@ resource ResUrd = ParamX ** open Prelude,Predef in {
|
||||
embComp = vp.embComp;
|
||||
comp = vp.comp
|
||||
} ;
|
||||
conjThat : Str = "kh" ;
|
||||
conjThat : Str = "كہ" ;
|
||||
|
||||
-- strings collected from syntax files, AR
|
||||
|
||||
oper
|
||||
sE_Str = "سے" ;
|
||||
ka_Str = "كا" ;
|
||||
hr_kwy_Str = "ہر كوی" ;
|
||||
rakh6na_Str = "راكھنا" ;
|
||||
comma_Str = "," ;
|
||||
agr_Str = "اگر" ;
|
||||
nE_Str = "نے" ;
|
||||
jw_Str = "جو" ;
|
||||
js_Str = "جس" ;
|
||||
jn_Str = "جن" ;
|
||||
mt_Str = "مت" ;
|
||||
nh_Str = "نہ" ;
|
||||
waN_Str = "واں" ;
|
||||
awr_Str = "اور" ;
|
||||
ky_Str = "كی" ;
|
||||
kw_Str = "كو" ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
concrete SentenceUrd of Sentence = CatUrd ** open Prelude, ResUrd in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
|
||||
@@ -15,8 +14,8 @@ concrete SentenceUrd of Sentence = CatUrd ** open Prelude, ResUrd in {
|
||||
agr = Ag Masc (numImp n) Pers2_Casual ;
|
||||
verb = infVP True vp agr ;
|
||||
dont = case pol of {
|
||||
CNeg True => "mt" ;
|
||||
CNeg False => "nh" ;
|
||||
CNeg True => mt_Str ;
|
||||
CNeg False => nh_Str ;
|
||||
_ => []
|
||||
}
|
||||
in
|
||||
|
||||
@@ -5,125 +5,124 @@ concrete StructuralUrd of Structural = CatUrd **
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
above_Prep = ss "awpr" ;
|
||||
after_Prep = ss "kE bed" ;
|
||||
all_Predet = ss "tmam" ;
|
||||
almost_AdA, almost_AdN = ss "tqryba" ;
|
||||
although_Subj = ss "agrch-" ;
|
||||
always_AdV = ss "hmyXh" ;
|
||||
and_Conj = sd2 [] "awr" ** {n = Pl} ;
|
||||
because_Subj = ss "kywnkh-" ;
|
||||
before_Prep = ss "phlE" ;
|
||||
behind_Prep = ss "pych-E" ;
|
||||
between_Prep = ss "drmyaN" ;
|
||||
both7and_DConj = sd2 "dwnwN" "awr" ** {n = Pl} ;
|
||||
but_PConj = ss "lykn" ;
|
||||
above_Prep = ss "اوپر" ;
|
||||
after_Prep = ss "كے بعد" ;
|
||||
all_Predet = ss "تمام" ;
|
||||
almost_AdA, almost_AdN = ss "تقریبا" ;
|
||||
although_Subj = ss "اگرچھ" ;
|
||||
always_AdV = ss "ہمیشہ" ;
|
||||
and_Conj = sd2 [] "اور" ** {n = Pl} ;
|
||||
because_Subj = ss "كیونكھ" ;
|
||||
before_Prep = ss "پہلے" ;
|
||||
behind_Prep = ss "پیچھے" ;
|
||||
between_Prep = ss "درمیاں" ;
|
||||
both7and_DConj = sd2 "دونوں" "اور" ** {n = Pl} ;
|
||||
but_PConj = ss "لیكن" ;
|
||||
by8agent_Prep = ss "" ;
|
||||
by8means_Prep = ss "" ;
|
||||
can8know_VV,can_VV = mkV "skna" ** { isAux = True} ;
|
||||
during_Prep = ss ["kE drmyaN"] ;
|
||||
either7or_DConj = sd2 "kwy ayk" "or" ** {n = Sg} ;
|
||||
everybody_NP = MassNP (UseN (ParadigmsUrd.mkN "hr kwy" "hr kwy" "hr kwy" "hr kwy" "hr kwy" "hr kwy" Masc )); -- not a good way coz need to include NounUrd
|
||||
every_Det = mkDet "hr" "hr" "hr" "hr" Sg;
|
||||
everything_NP = MassNP (UseN (ParadigmsUrd.mkN "hr cyz" "hr cyz" "hr cyzw" "sb cyzyN" "sb cyzwN" "sb cyzw" Masc ));
|
||||
everywhere_Adv = ss "hr jgh" ;
|
||||
few_Det = mkDet "cnd" "cnd" "cnd" "cnd" Pl ;
|
||||
first_Ord = {s = "pehla" ; n = Sg} ; --DEPRECATED
|
||||
for_Prep = ss "kylyE" ;
|
||||
from_Prep = ss "sE" ;
|
||||
he_Pron = personalPN "wh" "as" "" "as ka" Sg Masc Pers3_Distant ;
|
||||
here_Adv = ss "yhaN" ;
|
||||
here7to_Adv = ss ["yhaN pr"] ;
|
||||
here7from_Adv = ss ["yhaN sE"] ;
|
||||
how_IAdv = ss "how" ;
|
||||
how8many_IDet = makeIDet "ktnE" "ktny" Pl ;
|
||||
if_Subj = ss "agr" ;
|
||||
in8front_Prep = ss ["kE samnE"] ;
|
||||
i_Pron = personalPN "myN" "mjh-" "" "myra" Sg Masc Pers1;
|
||||
in_Prep = ss "meN" ;
|
||||
it_Pron = personalPN "yh" "yh" "yh" "as ka" Sg Masc Pers3_Near;
|
||||
less_CAdv = {s = "km" ; p = ""} ;
|
||||
many_Det = mkDet "bht zyadh" "bht zyadh" "bht zyadh" "bht zyadh" Pl ;
|
||||
more_CAdv = {s = "zyadh-" ; p = "" } ;
|
||||
most_Predet = ss "zyadh tr" ;
|
||||
much_Det = mkDet "bht" "bht" "bht" "bht" Sg ;
|
||||
can8know_VV,can_VV = mkV "سكنا" ** { isAux = True} ;
|
||||
during_Prep = ss ["كے درمیاں"] ;
|
||||
either7or_DConj = sd2 "كوی ایك" "یا" ** {n = Sg} ;
|
||||
everybody_NP = MassNP (UseN (ParadigmsUrd.mkN "ہر كوی" "ہر كوی" "ہر كوی" "ہر كوی" "ہر كوی" "ہر كوی" Masc )); -- not a good way coz need to include NounUrd
|
||||
every_Det = mkDet "ہر" "ہر" "ہر" "ہر" Sg;
|
||||
everything_NP = MassNP (UseN (ParadigmsUrd.mkN "ہر چیز" "ہر چیز" "ہر چیزو" "سب چیزیں" "سب چیزوں" "سب چیزو" Masc ));
|
||||
everywhere_Adv = ss "ہر جگہ" ;
|
||||
few_Det = mkDet "چند" "چند" "چند" "چند" Pl ;
|
||||
for_Prep = ss "كیلیے" ;
|
||||
from_Prep = ss "سے" ;
|
||||
he_Pron = personalPN "وہ" "اس" "" "اس كا" Sg Masc Pers3_Distant ;
|
||||
here_Adv = ss "یہاں" ;
|
||||
here7to_Adv = ss ["یہاں پر"] ;
|
||||
here7from_Adv = ss ["یہاں سے"] ;
|
||||
how_IAdv = ss "ہoو" ;
|
||||
how8many_IDet = makeIDet "كتنے" "كتنی" Pl ;
|
||||
if_Subj = ss "اگر" ;
|
||||
in8front_Prep = ss ["كے سامنے"] ;
|
||||
i_Pron = personalPN "میں" "مجھ" "" "میرا" Sg Masc Pers1;
|
||||
in_Prep = ss "معں" ;
|
||||
it_Pron = personalPN "یہ" "یہ" "یہ" "اس كا" Sg Masc Pers3_Near;
|
||||
less_CAdv = {s = "كم" ; p = ""} ;
|
||||
many_Det = mkDet "بہت زیادہ" "بہت زیادہ" "بہت زیادہ" "بہت زیادہ" Pl ;
|
||||
more_CAdv = {s = "زیادھ" ; p = "" } ;
|
||||
most_Predet = ss "زیادہ تر" ;
|
||||
much_Det = mkDet "بہت" "بہت" "بہت" "بہت" Sg ;
|
||||
-- must_VV = {
|
||||
-- s = table {
|
||||
-- VVF VInf => ["have to"] ;
|
||||
-- VVF VPres => "must" ;
|
||||
-- VVF VPPart => ["had to"] ;
|
||||
-- VVF VPresPart => ["having to"] ;
|
||||
-- VVF VPast => ["had to"] ; --# notpresent
|
||||
-- VVPastNeg => ["hadn't to"] ; --# notpresent
|
||||
-- VVPresNeg => "mustn't"
|
||||
-- VVF VInf => ["ہاvع تo"] ;
|
||||
-- VVF VPres => "مuست" ;
|
||||
-- VVF VPPart => ["ہاد تo"] ;
|
||||
-- VVF VPresPart => ["ہاviنگ تo"] ;
|
||||
-- VVF VPast => ["ہاد تo"] ; --# notpresent
|
||||
-- VVPastNeg => ["ہادn'ت تo"] ; --# notpresent
|
||||
-- VVPresNeg => "مuستn'ت"
|
||||
-- } ;
|
||||
-- isAux = True
|
||||
-- } ;
|
||||
-----b no_Phr = ss "no" ;
|
||||
no_Utt = ss "nhyN" ;
|
||||
on_Prep = ss "pr" ;
|
||||
-- one_Quant = demoPN "ayk" "ayk" "ayk" ; -- DEPRECATED
|
||||
only_Predet = ss "srf" ;
|
||||
or_Conj = sd2 [] "ya" ** {n = Sg} ;
|
||||
otherwise_PConj = ss "ya ph-r" ;
|
||||
-----b no_Phr = ss "نo" ;
|
||||
no_Utt = ss "نہیں" ;
|
||||
on_Prep = ss "پر" ;
|
||||
-- one_Quant = demoPN "ایك" "ایك" "ایك" ; -- DEPRECATED
|
||||
only_Predet = ss "سرف" ;
|
||||
or_Conj = sd2 [] "یا" ** {n = Sg} ;
|
||||
otherwise_PConj = ss "یا پھر" ;
|
||||
part_Prep = ss "" ;
|
||||
please_Voc = ss "mhrbani" ;
|
||||
possess_Prep = ss "ka" ;
|
||||
quite_Adv = ss "khamosh" ;
|
||||
she_Pron = personalPN "wh" "as" "wh" "as ky" Sg Fem Pers3_Distant ;
|
||||
so_AdA = ss "so" ;
|
||||
somebody_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy" "kwy" "kwy" "kwy" "kwy" "kwy" Masc ));
|
||||
someSg_Det = mkDet "kch-" "kch-" "kch-" "kch-" Sg ;
|
||||
somePl_Det = mkDet "kch-" "kch-" "kch-" "kch-" Pl ;
|
||||
something_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy cyz" "kwy cyz" "kwy cyz" "kh- cyzyN" "kh- cyzwN" "kh- cyzw" Masc ));
|
||||
somewhere_Adv = ss "khin pr" ;
|
||||
that_Quant = demoPN "wh" "as" "an" ;
|
||||
that_Subj = ss "kh";
|
||||
there_Adv = ss "whaN" ;
|
||||
there7to_Adv = ss "whaN pr" ;
|
||||
there7from_Adv = ss ["whaN sE"] ;
|
||||
therefore_PConj = ss "as lyE" ;
|
||||
they_Pron = personalPN "wh" "wh" "wh" "an ka" Pl Masc Pers3_Distant ; ----
|
||||
this_Quant = demoPN "yh" "as" "an";
|
||||
through_Prep = ss ["myN sE"] ;
|
||||
too_AdA = ss "bht" ;
|
||||
to_Prep = ss "kw" ;
|
||||
under_Prep = ss "nycE" ;
|
||||
very_AdA = ss "bht" ;
|
||||
want_VV = mkV "cahna" ** { isAux = False} ;
|
||||
we_Pron = personalPN "hm" "hm" "hm" "hmara" Pl Masc Pers1 ;
|
||||
whatSg_IP = mkIP "kya" "kis" "kis" Sg Masc ;
|
||||
whatPl_IP = mkIP "kya" "kin" "kin" Pl Masc ;
|
||||
when_IAdv = ss "kb" ;
|
||||
when_Subj = ss "kb" ;
|
||||
where_IAdv = ss "khaN" ;
|
||||
which_IQuant = {s = \\_ => "kwn sy"} ;
|
||||
-- whichPl_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ;
|
||||
-- whichSg_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ;
|
||||
whoSg_IP = mkIP "kwn" "kis" "kis" Sg Masc ;
|
||||
whoPl_IP = mkIP "kwn" "kn" "knhwN" Pl Masc ;
|
||||
why_IAdv = ss "kywN" ;
|
||||
without_Prep = ss ["kE bGyr"] ;
|
||||
with_Prep = ss ["kE sath-"] ;
|
||||
-- yes_Phr = ss "haN" ;
|
||||
yes_Utt = ss "haN" ;
|
||||
youSg_Pron = personalPN "tm" "tm" "tm" "tmh-ara" Sg Masc Pers2_Casual ;
|
||||
youPl_Pron = personalPN "tm" "tm" "tm" "tmh-ara" Pl Masc Pers2_Casual ;
|
||||
youPol_Pron = personalPN "Ap" "AP" "AP" "Ap ka" Sg Masc Pers2_Respect ;
|
||||
no_Quant = demoPN " kwy nhyN" "kwy nhyN" "kwy nhyN" ;
|
||||
not_Predet = {s="nhyN"} ;
|
||||
if_then_Conj = sd2 "agr" "tw" ** {n = Sg} ;
|
||||
at_least_AdN = ss ["km az km"] ;
|
||||
at_most_AdN = ss ["zyadh sE zyadh"];
|
||||
nothing_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy cyz nhyN" "kwy cyz nhyN" "kwy cyz nhyN" "kwy cyz nhyN" "kwy cyz nhyN" "kwy cyz nhyN" Masc ));
|
||||
except_Prep = ss "swaE" ;
|
||||
nobody_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" Masc ));
|
||||
please_Voc = ss "مہربانi" ;
|
||||
possess_Prep = ss "كا" ;
|
||||
quite_Adv = ss "كہامoسہ" ;
|
||||
she_Pron = personalPN "وہ" "اس" "وہ" "اس كی" Sg Fem Pers3_Distant ;
|
||||
so_AdA = ss "سo" ;
|
||||
somebody_NP = MassNP (UseN (ParadigmsUrd.mkN "كوی" "كوی" "كوی" "كوی" "كوی" "كوی" Masc ));
|
||||
someSg_Det = mkDet "كچھ" "كچھ" "كچھ" "كچھ" Sg ;
|
||||
somePl_Det = mkDet "كچھ" "كچھ" "كچھ" "كچھ" Pl ;
|
||||
something_NP = MassNP (UseN (ParadigmsUrd.mkN "كوی چیز" "كوی چیز" "كوی چیز" "كھ چیزیں" "كھ چیزوں" "كھ چیزو" Masc ));
|
||||
somewhere_Adv = ss "كہiن پر" ;
|
||||
that_Quant = demoPN "وہ" "اس" "ان" ;
|
||||
that_Subj = ss "كہ";
|
||||
there_Adv = ss "وہاں" ;
|
||||
there7to_Adv = ss "وہاں پر" ;
|
||||
there7from_Adv = ss ["وہاں سے"] ;
|
||||
therefore_PConj = ss "اس لیے" ;
|
||||
they_Pron = personalPN "وہ" "وہ" "وہ" "ان كا" Pl Masc Pers3_Distant ; ----
|
||||
this_Quant = demoPN "یہ" "اس" "ان";
|
||||
through_Prep = ss ["میں سے"] ;
|
||||
too_AdA = ss "بہت" ;
|
||||
to_Prep = ss "كو" ;
|
||||
under_Prep = ss "نیچے" ;
|
||||
very_AdA = ss "بہت" ;
|
||||
want_VV = mkV "چاہنا" ** { isAux = False} ;
|
||||
we_Pron = personalPN "ہم" "ہم" "ہم" "ہمارا" Pl Masc Pers1 ;
|
||||
whatSg_IP = mkIP "كیا" "كiس" "كiس" Sg Masc ;
|
||||
whatPl_IP = mkIP "كیا" "كiن" "كiن" Pl Masc ;
|
||||
when_IAdv = ss "كب" ;
|
||||
when_Subj = ss "كب" ;
|
||||
where_IAdv = ss "كہاں" ;
|
||||
which_IQuant = {s = \\_ => "كون سی"} ;
|
||||
-- whichPl_IDet = makeDet "كون سا" "كون سی" "كون سے" "كون سی" ;
|
||||
-- whichSg_IDet = makeDet "كون سا" "كون سی" "كون سے" "كون سی" ;
|
||||
whoSg_IP = mkIP "كون" "كiس" "كiس" Sg Masc ;
|
||||
whoPl_IP = mkIP "كون" "كن" "كنہوں" Pl Masc ;
|
||||
why_IAdv = ss "كیوں" ;
|
||||
without_Prep = ss ["كے بغیر"] ;
|
||||
with_Prep = ss ["كے ساتھ"] ;
|
||||
-- yes_Phr = ss "ہاں" ;
|
||||
yes_Utt = ss "ہاں" ;
|
||||
youSg_Pron = personalPN "تم" "تم" "تم" "تمھارا" Sg Masc Pers2_Casual ;
|
||||
youPl_Pron = personalPN "تم" "تم" "تم" "تمھارا" Pl Masc Pers2_Casual ;
|
||||
youPol_Pron = personalPN "آپ" "آP" "آP" "آپ كا" Sg Masc Pers2_Respect ;
|
||||
no_Quant = demoPN " كوی نہیں" "كوی نہیں" "كوی نہیں" ;
|
||||
not_Predet = {s="نہیں"} ;
|
||||
if_then_Conj = sd2 "اگر" "تو" ** {n = Sg} ;
|
||||
at_least_AdN = ss ["كم از كم"] ;
|
||||
at_most_AdN = ss ["زیادہ سے زیادہ"];
|
||||
nothing_NP = MassNP (UseN (ParadigmsUrd.mkN "كوی چیز نہیں" "كوی چیز نہیں" "كوی چیز نہیں" "كوی چیز نہیں" "كوی چیز نہیں" "كوی چیز نہیں" Masc ));
|
||||
except_Prep = ss "سواے" ;
|
||||
nobody_NP = MassNP (UseN (ParadigmsUrd.mkN "كوی نہیں" "كوی نہیں" "كوی نہیں" "كوی نہیں" "كوی نہیں" "كوی نہیں" Masc ));
|
||||
|
||||
as_CAdv = {s = "etna" ; p = "jtna"} ;
|
||||
as_CAdv = {s = "عتنا" ; p = "جتنا"} ;
|
||||
|
||||
have_V2 = mkV2 (mkV "rakh-na") "" ;
|
||||
have_V2 = mkV2 (mkV "راكھنا") "" ;
|
||||
|
||||
language_title_Utt = ss "ardw" ;
|
||||
language_title_Utt = ss "اردو" ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ concrete SymbolUrd of Symbol = CatUrd ** open Prelude, ResUrd in {
|
||||
|
||||
SymbS sy = sy ;
|
||||
SymbNum sy = { s = sy.s ; n = Pl } ;
|
||||
SymbOrd sy = { s = sy.s ++ "waN" ; n = Pl} ;
|
||||
SymbOrd sy = { s = sy.s ++ waN_Str ; n = Pl} ;
|
||||
|
||||
lincat
|
||||
|
||||
@@ -32,14 +32,15 @@ lincat
|
||||
lin
|
||||
MkSymb s = s ;
|
||||
|
||||
BaseSymb = infixSS "awr" ;
|
||||
ConsSymb = infixSS "" ;
|
||||
BaseSymb = infixSS awr_Str
|
||||
;
|
||||
ConsSymb = infixSS [] ;
|
||||
|
||||
oper
|
||||
-- Note: this results in a space before 's, but there's
|
||||
-- not mauch we can do about that.
|
||||
addGenitiveS : Str -> Case => Str = \s ->
|
||||
table {_ => s ++ "ka" } ;
|
||||
table {_ => s ++ ka_Str} ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -13,10 +13,10 @@ concrete VerbUrd of Verb = CatUrd ** open ResUrd in {
|
||||
ComplVS v s = insertObj2 (conjThat ++ s.s) (predV v) ;
|
||||
ComplVQ v q = insertObj2 (conjThat ++ q.s ! QIndir) (predV v) ;
|
||||
ComplVA v ap = insertObj (\\a => ap.s ! giveNumber a ! giveGender a ! Dir ! Posit) (predV v) ;
|
||||
SlashV2V v vp = insertVV ((vp.s!VPImp).inf++"ky") (predV v) **{c2 = {s = "sE" ; c = VIntrans}} ;
|
||||
SlashV2S v s = insertObjc2 (conjThat ++ s.s) (predV v ** {c2 = {s = "kw" ; c = VIntrans}}) ;
|
||||
SlashV2Q v q = insertObjc2 (conjThat ++ q.s ! QIndir) (predV v ** {c2 = {s = "sE" ; c = VIntrans}}) ;
|
||||
SlashV2A v ap = insertObjc (\\a => ap.s ! giveNumber a ! giveGender a ! Dir ! Posit) (predV v ** {c2 = {s = "kw" ; c = VIntrans}}) ; ----
|
||||
SlashV2V v vp = insertVV ((vp.s!VPImp).inf++ky_Str) (predV v) **{c2 = {s = sE_Str ; c = VIntrans}} ;
|
||||
SlashV2S v s = insertObjc2 (conjThat ++ s.s) (predV v ** {c2 = {s = kw_Str ; c = VIntrans}}) ;
|
||||
SlashV2Q v q = insertObjc2 (conjThat ++ q.s ! QIndir) (predV v ** {c2 = {s = sE_Str ; c = VIntrans}}) ;
|
||||
SlashV2A v ap = insertObjc (\\a => ap.s ! giveNumber a ! giveGender a ! Dir ! Posit) (predV v ** {c2 = {s = kw_Str ; c = VIntrans}}) ; ----
|
||||
ComplSlash vp np = insertObject np vp ;
|
||||
SlashVV vv vp =
|
||||
insertObj (\\a => infVP vv.isAux vp a) (predV vv) **
|
||||
|
||||
6
lib/src/urdu/transliterateUrdu.gfs
Normal file
6
lib/src/urdu/transliterateUrdu.gfs
Normal file
@@ -0,0 +1,6 @@
|
||||
rf -file=transliterated/IdiomUrd.gf | ps -env=quotes -to_urdu | wf -file=IdiomUrd.gf
|
||||
rf -file=transliterated/LexiconUrd.gf | ps -env=quotes -to_urdu | wf -file=LexiconUrd.gf
|
||||
rf -file=transliterated/MorphoUrd.gf | ps -env=quotes -to_urdu | wf -file=MorphoUrd.gf
|
||||
rf -file=transliterated/NumeralUrd.gf | ps -env=quotes -to_urdu | wf -file=NumeralUrd.gf
|
||||
rf -file=transliterated/ResUrd.gf | ps -env=quotes -to_urdu | wf -file=ResUrd.gf
|
||||
rf -file=transliterated/StructuralUrd.gf | ps -env=quotes -to_urdu | wf -file=StructuralUrd.gf
|
||||
38
lib/src/urdu/transliterated/IdiomUrd.gf
Normal file
38
lib/src/urdu/transliterated/IdiomUrd.gf
Normal file
@@ -0,0 +1,38 @@
|
||||
concrete IdiomUrd of Idiom = CatUrd ** open Prelude,Predef, ResUrd in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
flags coding = utf8;
|
||||
|
||||
lin
|
||||
ImpersCl vp = mkSClause [] (agrP3 Masc Sg) vp ;
|
||||
GenericCl vp = mkSClause "kwy" (agrP3 Masc Sg) vp ;
|
||||
|
||||
CleftNP np rs =
|
||||
let cl = mkSClause (np.s ! NPC rs.c) (np.a) (predAux auxBe);
|
||||
in
|
||||
{s = \\t,p,o => cl.s ! t ! p ! o ++ rs.s ! np.a };
|
||||
|
||||
CleftAdv ad ss = { s = \\t,b,o => ad.s ++ ss.s};
|
||||
|
||||
ExistNP np =
|
||||
mkSClause "whaN" (agrP3 (fromAgr np.a).g (fromAgr np.a).n)
|
||||
(insertObj (\\_ => np.s ! NPC Obl) (predAux auxBe)) ;
|
||||
|
||||
ExistIP ip =
|
||||
let cl = mkSClause ("whaN" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe);
|
||||
in {
|
||||
s = \\t,p,qf => case qf of {
|
||||
QDir => cl.s ! t ! p ! ODir;
|
||||
QIndir => cl.s ! t! p ! ODir
|
||||
}
|
||||
};
|
||||
|
||||
ProgrVP vp = insertObj (\\a => vp.obj.s ++ vp.ad ++ vp.comp ! a ++ (vp.s ! VPStem).inf ++ raha (fromAgr a).g (fromAgr a).n ) (predAux auxBe) ;
|
||||
|
||||
|
||||
ImpPl1 vp = {s = "Aw" ++ infVP True vp (agrP1 Masc Pl)} ;
|
||||
ImpP3 np vp = {s = np.s!NPC Dir ++ "kw" ++ (vp.s ! VPImp ).inf ++ "dw"};
|
||||
|
||||
|
||||
}
|
||||
|
||||
369
lib/src/urdu/transliterated/LexiconUrd.gf
Normal file
369
lib/src/urdu/transliterated/LexiconUrd.gf
Normal file
@@ -0,0 +1,369 @@
|
||||
--# -path=.:prelude
|
||||
|
||||
concrete LexiconUrd of Lexicon = CatUrd **
|
||||
--open ResUrd, Prelude in {
|
||||
open ParadigmsUrd, Prelude in {
|
||||
|
||||
flags
|
||||
optimize=values ;
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
airplane_N = mkN "jhaz" ;
|
||||
answer_V2S = mkV2 (compoundV "jwab" (mkV "dyna")) ;
|
||||
apartment_N = mkN "kmrh" ;
|
||||
apple_N = mkN "syb" ;
|
||||
art_N = mkN "fn" ;
|
||||
ask_V2Q = mkV2 (mkV "pwch-na") ;
|
||||
baby_N = mkN "bch" ;
|
||||
bad_A = mkA "bra" ;
|
||||
bank_N = mkN "bank" ;
|
||||
beautiful_A = mkA "KwbSwrt" ;
|
||||
become_VA = mkV "bnna";
|
||||
beer_N = mkN "beer" ;
|
||||
beg_V2V = mkV2V (compoundV "altja" (mkV "krna")) "sE" "kh" False;
|
||||
big_A = mkA "bRa" ;
|
||||
bike_N = mkN "saycl" feminine ;
|
||||
bird_N = mkN "prndh" ;
|
||||
black_A = mkA "kala" ;
|
||||
blue_A = mkA "nyla" ;
|
||||
boat_N = mkN "kXty" ;
|
||||
book_N = mkN "ktab" feminine ;
|
||||
boot_N = mkN "jwta" ;
|
||||
boss_N = mkN "Sahb" ;
|
||||
boy_N = mkN "lRka" ;
|
||||
bread_N = mkN "rwty" ;
|
||||
break_V2 = mkV2 (mkV "twRna") ;
|
||||
broad_A = mkA "kh-la" ;
|
||||
brother_N2 = mkN2 (mkN "bh-ay") (mkPrep "ka") "kE" ; --not correct
|
||||
brown_A = mkA "nswary" ;
|
||||
butter_N = mkN "mkh-n" ;
|
||||
buy_V2 = mkV2 (mkV "Krydna");
|
||||
camera_N = mkN "kymrh" ;
|
||||
cap_N = mkN "twpy" ;
|
||||
car_N = mkN "gaRy" ;
|
||||
carpet_N = mkN "tpay^y" ;
|
||||
cat_N = mkN "bly" ;
|
||||
ceiling_N = mkN "ch-t" feminine ;
|
||||
chair_N = mkN "krsy" ;
|
||||
cheese_N = mkN "pnyr" feminine ;
|
||||
child_N = mkN "bch" ;
|
||||
church_N = mkCmpdNoun "grja" (mkN "gh-r") ;
|
||||
city_N = mkN "Xhr" ;
|
||||
clean_A = mkA "Saf" ;
|
||||
clever_A = mkA "hwXyar" ;
|
||||
close_V2 = mkV2 (compoundV "bnd" do_V2);
|
||||
coat_N = mkN "kwT" ;
|
||||
cold_A = mkA "Th-nDa" ;
|
||||
come_V = mkV "Ana" ;
|
||||
computer_N = mkN "kmpywTr" ;
|
||||
country_N = mkN "mlk" ;
|
||||
cousin_N = mkCmpdNoun "cca" (mkN "zad") ; -- a compund noun made of two nouns
|
||||
cow_N = mkN "gaE" feminine ;
|
||||
die_V = mkV "mrna" ;
|
||||
dirty_A = mkA "gnda" ;
|
||||
distance_N3 = mkN3 (mkN "faSlh") (mkPrep "ka") "kE" "sE" ;
|
||||
doctor_N = mkN "mealj" ;
|
||||
dog_N = mkN "kta" ;
|
||||
door_N = mkN "drwzh" ;
|
||||
drink_V2 = mkV2 (mkV "pyna");
|
||||
easy_A2V = mkA "Asan" "" ;
|
||||
eat_V2 = mkV2 (mkV "kh-ana") "" ;
|
||||
empty_A = mkA "Kaly" ;
|
||||
enemy_N = mkN "dXmn" ;
|
||||
factory_N = mkN "karKanh" ;
|
||||
father_N2 = mkN2 (mkN "aba") (mkPrep "ka") "kE" ;
|
||||
fear_VS = mkV "drna";
|
||||
find_V2 = mkV2 (mkV "pana") ;
|
||||
fish_N = mkN "mch-ly" ;
|
||||
floor_N = mkN "frX" ;
|
||||
forget_V2 = mkV2 (mkV "bh-wlna") ;
|
||||
fridge_N = mkN "fryg" ;
|
||||
friend_N = mkN "dwst" masculine ;
|
||||
fruit_N = mkN "ph-l" ;
|
||||
-- fun_AV = mkAV (regA "fun") ;
|
||||
garden_N = mkN "baG" ;
|
||||
girl_N = mkN "lRky" ;
|
||||
glove_N = mkN "dstanh" ;
|
||||
gold_N = mkN "swna" ;
|
||||
good_A = mkA "ach-a" ;
|
||||
go_V = mkV "jana" ;
|
||||
green_A = mkA "sbz" ;
|
||||
harbour_N = mkCmpdNoun "bndr" (mkN "gah") ;
|
||||
hate_V2 = mkV2 (compoundV "nfrt" do_V2) ;
|
||||
hat_N = mkN "twpy" ;
|
||||
-- have_V2 = dirV2 (mk5V "have" "has" "had" "had" "having") ;
|
||||
hear_V2 = mkV2 (mkV "snna") ;
|
||||
hill_N = mkN "phaRy" ;
|
||||
hope_VS = (compoundV "amyd" do_V2);
|
||||
horse_N = mkN "gh-wRa" ;
|
||||
hot_A = mkA "grm" ;
|
||||
house_N = mkN "gh-r" ;
|
||||
important_A = mkA "ahm" ;
|
||||
industry_N = mkN "Snet" feminine ;
|
||||
iron_N = mkN "lwha" ;
|
||||
king_N = mkN "badXah" ;
|
||||
know_V2 = mkV2 (mkV "janna") ;
|
||||
know_VS = mkV "janna";
|
||||
lake_N = mkN "jh-yl" feminine ;
|
||||
lamp_N = mkN "lymp" ;
|
||||
learn_V2 = mkV2 (mkV "sykh-na") ;
|
||||
leather_N = mkN "cmRa" ;
|
||||
leave_V2 = mkV2 (mkV "jana") ;
|
||||
like_V2 = mkV2 (compoundV "psnd" do_V2);
|
||||
listen_V2 = mkV2 (mkV "snna") ;
|
||||
live_V = mkV "rhna" ; ---- touch
|
||||
long_A = mkA "lmba" ;
|
||||
lose_V2 = mkV2 (compoundV "kh-w" do_V2) ;
|
||||
love_N = mkN "mHbt" ;
|
||||
love_V2 = mkV2 (compoundV "pyar" do_V2) "kw";
|
||||
man_N = mkN "Admy" ; -- not correct according to rules should be discussed
|
||||
married_A2 = mkA "Xady krna" "sE" ;
|
||||
meat_N = mkN "gwXt" ;
|
||||
milk_N = mkN "dwdh-" ;
|
||||
moon_N = mkN "cand" ;
|
||||
mother_N2 = mkN2 (mkN "maN") (mkPrep "ky") "kE"; -- not covered need to be discussed
|
||||
mountain_N = mkN "phaRy" ;
|
||||
music_N = mkN "mwsyqy" ;
|
||||
narrow_A = mkA "baryk" ;
|
||||
new_A = mkA "nya" ;
|
||||
newspaper_N = mkN "aKbar" ;
|
||||
oil_N = mkN "tyl" ;
|
||||
old_A = mkA "bwRh-a" ;
|
||||
open_V2 = mkV2 (mkV "kh-wlna") ;
|
||||
paint_V2A = mkV2 (compoundV "rng" do_V2) ;
|
||||
paper_N = mkN "kaGz" ;
|
||||
paris_PN = mkPN "pyrs" ;
|
||||
peace_N = mkN "amn" ;
|
||||
pen_N = mkN "pnsl" ;
|
||||
planet_N = mkN "syarh" ;
|
||||
plastic_N = mkN "plasTk" ;
|
||||
play_V2 = mkV2 (mkV "kh-ylna") ;
|
||||
policeman_N = mkCmpdNoun "pwlys" (mkN "wala") ;
|
||||
priest_N = (mkN "pyGmbr") ;
|
||||
-- probable_AS = mkAS (regA "probable") ;
|
||||
queen_N = mkN "Xhzady" ;
|
||||
radio_N = mkN "ryDyw" ;
|
||||
rain_V0 = compoundV "barX" (mkV "hwna" ) ;
|
||||
read_V2 = mkV2 (mkV "pRh-na");
|
||||
red_A = mkA "lal" ;
|
||||
religion_N = mkN "mzhb" ;
|
||||
restaurant_N = mkN "hwTl" ;
|
||||
river_N = mkN "drya" masculine ;
|
||||
rock_N = mkN "cTan" ;
|
||||
roof_N = mkN "ch-t" masculine ;
|
||||
rubber_N = mkN "rbR" ;
|
||||
run_V = mkV "dwRna" ;
|
||||
say_VS = mkV "khna" ;
|
||||
school_N = mkN "skwl" ;
|
||||
science_N = mkN "sans" ;
|
||||
sea_N = mkN "smndr" ;
|
||||
seek_V2 = mkV2 (compoundV "tlaX" do_V2) ;
|
||||
see_V2 = mkV2 (mkV "dykh-na") ;
|
||||
sell_V3 = mkV3 (mkV "bycna") "kw" "";
|
||||
send_V3 = mkV3 (mkV "bh-yjna") "kw" "";
|
||||
sheep_N = mkN "bh-yR" feminine ;
|
||||
ship_N = mkN "jhaz" ;
|
||||
shirt_N = mkN "qmyZ-" feminine;
|
||||
shoe_N = mkN "jwta" ;
|
||||
shop_N = mkN "dwkan" feminine ;
|
||||
short_A = mkA "ch-wTa" ;
|
||||
silver_N = mkN "candy" ;
|
||||
sister_N = mkN "bhn" feminine ;
|
||||
sleep_V = mkV "swna" ;
|
||||
small_A = mkA "ch-wTa" ;
|
||||
snake_N = mkN "sanp" ;
|
||||
sock_N = mkN "jrab" feminine ;
|
||||
speak_V2 = mkV2 (mkV "bwlna") ;
|
||||
star_N = mkN "stara" ;
|
||||
steel_N = mkN "styl" ;
|
||||
stone_N = mkN "pth-r" ;
|
||||
stove_N = mkN "cwlha" ;
|
||||
student_N = mkCmpdNoun "t-alb" (mkN "elm") ;
|
||||
stupid_A = mkA "aHmq" ;
|
||||
sun_N = mkN "swrj" ;
|
||||
switch8off_V2 = mkV2 (mkV "clana") ;
|
||||
switch8on_V2 = mkV2 (compoundV "bnd" do_V2) ;
|
||||
table_N = mkN "myz" feminine ;
|
||||
talk_V3 = mkV3 (mkV "bwlna") "sE" "kE barE meN";
|
||||
teacher_N = mkN "istad" ;
|
||||
teach_V2 = mkV2 (mkV "pRh-na") ;
|
||||
television_N = mkN "telywyzn" ;
|
||||
thick_A = mkA "mwTa" ;
|
||||
thin_A = mkA "ptla" ;
|
||||
train_N = mkN "gaRy" ;
|
||||
travel_V = (compoundV "sfr" do_V2) ;
|
||||
tree_N = mkN "drKt" masculine ;
|
||||
-- ---- trousers_N = mkN "trousers" ;
|
||||
ugly_A = mkA "bdSwrt" ;
|
||||
understand_V2 = mkV2 (mkV "smjh-na") ;
|
||||
university_N = mkN "ywnywrsTy" ;
|
||||
village_N = mkN "gawN" ;
|
||||
wait_V2 = mkV2 (compoundV "antz-ar" do_V2) ;
|
||||
walk_V = mkV "clna" ;
|
||||
warm_A = mkA "grm" ;
|
||||
war_N = mkN "jng" ;
|
||||
watch_V2 = mkV2 (mkV "dykh-na") ;
|
||||
water_N = mkN "pany" ; -- not covered masculine ending with y
|
||||
white_A = mkA "sfyd" ;
|
||||
window_N = mkN "kh-Rky" ;
|
||||
wine_N = mkN "Xrab" feminine ;
|
||||
win_V2 = mkV2 (mkV "jytna") ;
|
||||
woman_N = mkN "ewrt" feminine ;
|
||||
wonder_VQ = compoundV "Heran" (mkV "hwna") ;
|
||||
wood_N = mkN "lkRy" ;
|
||||
write_V2 = mkV2 (mkV "lkh-na") ;
|
||||
yellow_A = mkA "pyla" ;
|
||||
young_A = mkA "jwan" ;
|
||||
do_V2 = mkV2 (mkV "krna") ;
|
||||
now_Adv = mkAdv "ab" ;
|
||||
already_Adv = mkAdv "phlE hy" ;
|
||||
song_N = mkN "gana" ;
|
||||
add_V3 = mkV3 (compoundV "aZ-afh" do_V2) "" "" ;
|
||||
number_N = mkN "hndsh" ;
|
||||
put_V2 = mkV2 (mkV "Dalna") ;
|
||||
stop_V = mkV "rkna" ;
|
||||
jump_V = mkV "ch-langna" ;
|
||||
|
||||
left_Ord = {s = "bayaN" ; n = singular};
|
||||
right_Ord = {s= "dayaN" ; n = singular};
|
||||
far_Adv = mkAdv "dwr" ;
|
||||
correct_A = mkA "Syh" ;
|
||||
dry_A = mkA "KXk" ;
|
||||
dull_A = mkA "nalik" ;
|
||||
full_A = mkA "mkml" ;
|
||||
heavy_A = mkA "bh-ary" ;
|
||||
near_A = mkA "qryb" ;
|
||||
rotten_A = mkA "Krab" ;
|
||||
round_A = mkA "gwl" ;
|
||||
sharp_A = mkA "tyz" ;
|
||||
smooth_A = mkA "hmwar" ;
|
||||
straight_A = mkA "sydh-a" ;
|
||||
wet_A = mkA "gyla" ; ----
|
||||
wide_A = mkA "kh-la" ;
|
||||
animal_N = mkN "janwr" ;
|
||||
ashes_N = mkN "rakh-" feminine; -- FIXME: plural only?
|
||||
back_N = mkN "qmr" feminine ;
|
||||
bark_N = mkN "bark" ;
|
||||
belly_N = mkN "dh-ny" ;
|
||||
blood_N = mkN "Kwn" ;
|
||||
bone_N = mkN "hDy" ;
|
||||
breast_N = mkN "ch-aty" ;
|
||||
cloud_N = mkN "badl" ;
|
||||
day_N = mkN "dn" ;
|
||||
dust_N = mkN "dh-wl" ;
|
||||
ear_N = mkN "kan" ;
|
||||
earth_N = mkN "zmyn" feminine ;
|
||||
egg_N = mkN "anDh" ;
|
||||
eye_N = mkN "Ankh-" feminine ;
|
||||
fat_N = mkN "mwta" ;
|
||||
feather_N = mkN "pr" ;
|
||||
fingernail_N = mkN "naKn" ;
|
||||
fire_N = mkN "Ag" feminine ;
|
||||
flower_N = mkN "ph-wl" ;
|
||||
fog_N = mkN "dh-nd" feminine ;
|
||||
foot_N = mkN "pawN" ; -- not properly covered need to be discussed
|
||||
forest_N = mkN "njgl" ;
|
||||
grass_N = mkN "gh-s" feminine ;
|
||||
guts_N = mkN "gut" ; -- FIXME: no singular
|
||||
hair_N = mkN "bal" ;
|
||||
hand_N = mkN "hath-" ;
|
||||
head_N = mkN "sr" ;
|
||||
heart_N = mkN "dl" ;
|
||||
horn_N = mkN "gh-nty" ;
|
||||
husband_N = mkN "Xwhr" ;
|
||||
ice_N = mkN "brf" feminine ;
|
||||
knee_N = mkN "khny" ;
|
||||
leaf_N = mkN "pth" ;
|
||||
leg_N = mkN "tang" feminine ;
|
||||
liver_N = mkN "jgr" ;
|
||||
louse_N = mkN "gh-r" ;
|
||||
mouth_N = mkN "mnh" ;
|
||||
name_N = mkN "nam" ;
|
||||
neck_N = mkN "grdn" feminine ;
|
||||
night_N = mkN "rat" feminine ;
|
||||
nose_N = mkN "nak" ;
|
||||
person_N = mkN "XKS" ;
|
||||
rain_N = mkN "barX" feminine ;
|
||||
road_N = mkN "sRk" ;
|
||||
root_N = mkN "gR" feminine ;
|
||||
rope_N = mkN "rsy" ;
|
||||
salt_N = mkN "nmk" feminine ;
|
||||
sand_N = mkN "ryt" feminine ;
|
||||
seed_N = mkN "byj" ;
|
||||
skin_N = mkN "jld" feminine ;
|
||||
sky_N = mkN "Asman" ;
|
||||
smoke_N = mkN "dh-waN"; -- singular masc nouns ending with aN,wN yet to be implemented
|
||||
snow_N = mkN "brf" feminine ;
|
||||
stick_N = mkN "ch-Ry" ;
|
||||
tail_N = mkN "dm" ;
|
||||
tongue_N = mkN "zban" feminine ;
|
||||
tooth_N = mkN "dant" masculine;
|
||||
wife_N = mkN "bywy" ;
|
||||
wind_N = mkN "Andh-y" ;
|
||||
wing_N = mkN "pr" ;
|
||||
worm_N = mkN "grm" ;
|
||||
year_N = mkN "sal" ;
|
||||
blow_V = mkV "clna" ;
|
||||
breathe_V = compoundV "sans" (mkV "lyna" ) ;
|
||||
burn_V = mkV "jlna" ;
|
||||
dig_V = mkV "kh-wdna" ;
|
||||
fall_V = mkV "grna" ;
|
||||
float_V = mkV "tyrna" ;
|
||||
flow_V = mkV "bhna" ;
|
||||
fly_V = mkV "aRna" ;
|
||||
freeze_V = mkV "jmna";
|
||||
give_V3 = mkV3 (mkV "dyna") "kw" "";
|
||||
laugh_V = mkV "hnsna" ;
|
||||
-- lie_N = mkN "jh-wt" masculine ;
|
||||
lie_V = compoundV "jh-wt" (mkV "bwlna" );
|
||||
play_V = mkV "kh-ylna" ;
|
||||
sew_V = mkV "syna" ;
|
||||
sing_V = mkV "gana" ;
|
||||
sit_V = mkV "byTh-na" ;
|
||||
smell_V = mkV "swngna" ;
|
||||
spit_V = mkV "th-wkna" ;
|
||||
stand_V = compoundV "kh-RE" (mkV "hwna" );
|
||||
swell_V = mkV "swjh-na" ;
|
||||
swim_V = mkV "tyrna" ;
|
||||
think_V = mkV "swcna" ;
|
||||
turn_V = mkV "mRna";
|
||||
vomit_V = compoundV "alty" (mkV "krna") ;
|
||||
bite_V2 = mkV2 (mkV "katna") ;
|
||||
count_V2 = mkV2 (mkV "gnna") ;
|
||||
cut_V2 = mkV2 (mkV "katna") ;
|
||||
fear_V2 = mkV2 (mkV "Drna") ;
|
||||
fight_V2 = mkV2 (mkV "lRna") ;
|
||||
hit_V2 = mkV2 (compoundV "th-wkr" (mkV "marna" ));
|
||||
hold_V2 = mkV2 (mkV "pkRna") ;
|
||||
hunt_V2 = mkV2 (compoundV "Xkar" do_V2);
|
||||
kill_V2 = mkV2 (compoundV "mar" (mkV "Dalna" )) ;
|
||||
pull_V2 = mkV2 (mkV "kh-ncna");
|
||||
push_V2 = mkV2 (mkV "dh-kylna") "kw" ;
|
||||
rub_V2 = mkV2 (mkV "rgRna") ;
|
||||
scratch_V2 = mkV2 (mkV "kh-rcna") "kw" ;
|
||||
split_V2 = mkV2 (mkV "banta") "kw" ;
|
||||
-- squeeze_V2 = dirV2 (regV "squeeze") ;
|
||||
-- stab_V2 = dirV2 (regDuplV "stab") ;
|
||||
suck_V2 = mkV2 (mkV "cwsna") ;
|
||||
throw_V2 = mkV2 (mkV "ph-ynkna") ;
|
||||
tie_V2 = mkV2 (mkV "bandh-na") ;
|
||||
wash_V2 = mkV2 (mkV "dh-wna") ;
|
||||
wipe_V2 = mkV2 (compoundV "Saf" (mkV "krna" ));
|
||||
|
||||
---- other_A = regA "other" ;
|
||||
|
||||
grammar_N = mkN "grdan" ;
|
||||
language_N = mkN "zban" feminine ;
|
||||
rule_N = mkN "aSwl" ;
|
||||
|
||||
---- added 4/6/2007
|
||||
john_PN = mkPN "jon" ;
|
||||
question_N = mkN "swal" ;
|
||||
-- ready_A = regA "ready" ;
|
||||
reason_N = mkN "wjh" feminine ;
|
||||
today_Adv = mkAdv "Aj" ;
|
||||
uncertain_A = mkA ["Gyr yqyny"] ;
|
||||
|
||||
|
||||
}
|
||||
461
lib/src/urdu/transliterated/MorphoUrd.gf
Normal file
461
lib/src/urdu/transliterated/MorphoUrd.gf
Normal file
@@ -0,0 +1,461 @@
|
||||
--# -path=.:../../prelude
|
||||
--
|
||||
----1 A Simple Urdu Resource Morphology
|
||||
----
|
||||
---- Shafqat Virk, Aarne Ranta,2009
|
||||
----
|
||||
---- This resource morphology contains definitions needed in the resource
|
||||
---- syntax. To build a lexicon, it is better to use $ParadigmsUrd$, which
|
||||
---- gives a higher-level access to this module.
|
||||
--
|
||||
resource MorphoUrd = ResUrd ** open Prelude,Predef in {
|
||||
|
||||
flags optimize=all ;
|
||||
coding = utf8;
|
||||
|
||||
----2 Nouns
|
||||
oper
|
||||
mkNoun : (x1,_,_,_,_,x6 : Str) -> Gender -> Noun =
|
||||
\sd,so,sv,pd,po,pv,g -> {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Dir => sd ;
|
||||
Obl => so ;
|
||||
Voc => sv
|
||||
} ;
|
||||
Pl => table {
|
||||
Dir => pd ;
|
||||
Obl => po ;
|
||||
Voc => pv
|
||||
}
|
||||
} ;
|
||||
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
regNoun : Str -> Noun ;
|
||||
regNoun s = case s of {
|
||||
_ + "ya" => mkN05 (s);
|
||||
_ + ("a"|"e"|"h") => mkN01 (s);
|
||||
_ + "y" => mkN03 (s);
|
||||
_ + ("aN"|"wN") => mkN04 (s);
|
||||
_ + "w^" => mkN12 (s);
|
||||
_ => regNoun2 (s)
|
||||
};
|
||||
regNoun2 : Str -> Noun;
|
||||
regNoun2 s = let c = if_then_else Bool (eq (last s) "a" ) True (if_then_else Bool (eq (last s) "h") True (if_then_else Bool (eq (last s) "e") True False))
|
||||
in case c of {
|
||||
False => mkN02 (s);
|
||||
True => mkN01 (s)
|
||||
};
|
||||
|
||||
reggNoun : Str -> Gender -> Noun ;
|
||||
reggNoun s g = let c = if_then_else Bool (eq (last s) "a" ) True (if_then_else Bool (eq (dp 2 s) "aN") True (if_then_else Bool (eq (dp 2 s) "wN") True False))
|
||||
in case <s,g,c> of {
|
||||
<_ + "t",Fem,_> => mkN10 (s);
|
||||
<_ + "t",Masc,_> => mkN02 (s);
|
||||
<_ + "w",Masc,_> => mkN11 (s);
|
||||
<_ + "w",Fem,_> => mkN07 (s);
|
||||
<_ + "ya",Fem,_> => mkN05 (s);
|
||||
<_ + "ya",Masc,_> => mkN02 (s);
|
||||
<_,Fem,False> => mkN08 (s);
|
||||
<_,Fem,_> => mkN09 (s)
|
||||
|
||||
};
|
||||
|
||||
-- masculine nouns end with alif, choTi_hay, ain Translitration: (a, h, e)
|
||||
-- Arabic nouns ends with h. also taken as Masc
|
||||
|
||||
mkN01 : Str -> Noun ;
|
||||
mkN01 lRka = let end = last (lRka) ;
|
||||
lRk = if_then_else Str (eq end "e") lRka (tk 1 lRka)
|
||||
in mkNoun (lRka) (lRk+"E") (lRk+"E")
|
||||
(lRk+"E") (lRk+"wN") (lRk+"w")
|
||||
Masc ;
|
||||
|
||||
-- masculine nouns does not end with a, h, e, an
|
||||
|
||||
mkN02 : Str -> Noun ;
|
||||
mkN02 mrd = let mrdwN = mrd+"wN" ;
|
||||
mrdw = tk 1 mrdwN
|
||||
in mkNoun mrd mrd mrd
|
||||
mrd mrdwN mrdw
|
||||
Masc ;
|
||||
|
||||
-- feminine Nouns end with y
|
||||
|
||||
mkN03 : Str -> Noun ;
|
||||
mkN03 krsy = let krsyaN = krsy+"aN" ;
|
||||
krsywN = krsy+"wN" ;
|
||||
krsyw = tk 1 krsywN
|
||||
in mkNoun krsy krsy krsy
|
||||
krsyaN krsywN krsyw
|
||||
Fem ;
|
||||
|
||||
-- feminine nouns end with a, aN, wN
|
||||
mkN04 : Str -> Noun ;
|
||||
mkN04 n = case last n of {
|
||||
"a" => let bla = n
|
||||
in mkNoun bla bla bla
|
||||
(bla+"y^yN") (bla+"w^N") (bla+"w^")
|
||||
Fem ;
|
||||
_ => let maN = n ; -- ends with aN and wN
|
||||
ma = tk 1 maN
|
||||
in mkNoun maN maN maN
|
||||
(ma+"y^yN") (ma+"w^N") (ma+"w^N")
|
||||
Fem
|
||||
|
||||
};
|
||||
--feminine nouns end with ya
|
||||
|
||||
mkN05 : Str -> Noun ;
|
||||
mkN05 gRya = let gRy = (tk 1 gRya)
|
||||
in mkNoun gRya gRya gRya
|
||||
(gRya+"N") (gRy+"wN") (gRy+"w")
|
||||
Fem ;
|
||||
|
||||
-- feminine nouns end with w
|
||||
|
||||
mkN07 : Str -> Noun ;
|
||||
mkN07 khshbw = mkNoun khshbw khshbw khshbw
|
||||
(khshbw + "y^yN") (khshbw + "w^N") (khshbw + "w^")
|
||||
Fem ;
|
||||
|
||||
-- Loan arabic feminine nouns end with t
|
||||
-- this is a noun that shows state, condition
|
||||
|
||||
mkN10 : Str -> Noun ;
|
||||
mkN10 ndamt = mkNoun ndamt ndamt ndamt
|
||||
(ndamt+"yN") (ndamt+"wN") (ndamt+"w")
|
||||
Fem ;
|
||||
-- Worst case function
|
||||
mkN : (_,_,_,_,_,_ : Str) -> Gender -> Noun ;
|
||||
mkN sgNom sgObl sgVoc plNom plObl plVoc g =
|
||||
mkNoun sgNom sgObl sgVoc plNom plObl plVoc g ;
|
||||
|
||||
mkN06 : Str -> Noun ;
|
||||
mkN06 rya = mkNoun rya rya rya
|
||||
(rya+"y^yN") (rya+"w^N") rya
|
||||
Fem ;
|
||||
|
||||
-- feminine nouns that do not end with a, N, w, wN
|
||||
|
||||
mkN08 : Str -> Noun ;
|
||||
mkN08 ktab = mkNoun ktab ktab ktab
|
||||
(ktab+"yN") (ktab+"wN") (ktab+"w")
|
||||
Fem ;
|
||||
|
||||
-- Loan arabic feminine nouns
|
||||
|
||||
mkN09 : Str -> Noun ;
|
||||
mkN09 ahsan = mkNoun ahsan ahsan ahsan
|
||||
(ahsan+"at") (ahsan+"at") (ahsan+"w")
|
||||
Fem ;
|
||||
-- (variants{ahsan+"at";ahsan+"wN"})
|
||||
-- Loan persian maculine nouns end with w
|
||||
|
||||
mkN11 : Str -> Noun ;
|
||||
mkN11 alw = mkNoun alw alw alw
|
||||
alw (alw+"w^N") (alw+"w^")
|
||||
Masc ;
|
||||
|
||||
|
||||
-- Loan persian maculine nouns end with w^
|
||||
|
||||
mkN12 : Str -> Noun ;
|
||||
mkN12 bhao = mkNoun (bhao) (bhao) (bhao)
|
||||
(bhao) (bhao) (bhao)
|
||||
Masc ;
|
||||
----2 Determiners
|
||||
IDeterminer = {s:Gender => Str ; n : Number};
|
||||
makeDet : Str -> Str -> Str -> Str -> Number -> Determiner = \s1,s2,s3,s4,n -> {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Masc => s1 ;
|
||||
Fem => s2
|
||||
} ;
|
||||
Pl => table {
|
||||
Masc => s3 ;
|
||||
Fem => s4
|
||||
}
|
||||
} ;
|
||||
|
||||
n = n
|
||||
};
|
||||
|
||||
makeIDet : Str -> Str -> Number -> IDeterminer = \s1,s2,n -> {
|
||||
s = table {
|
||||
Masc => s1;
|
||||
Fem => s2
|
||||
};
|
||||
n = n
|
||||
};
|
||||
|
||||
-- Proposition
|
||||
|
||||
makePrep : Str -> Preposition = \str -> {s = str};
|
||||
|
||||
----2 Pronouns
|
||||
PronForm = {s:Pronoun => Str};
|
||||
makeDemPron : (x1,x2,x3,x4,x5,x6:Str) -> PronForm =
|
||||
\y1,y2,y3,y4,y5,y6 -> {
|
||||
s = table {
|
||||
P Sg _ Dir _ => y1;
|
||||
P Sg _ Obl _ => y2;
|
||||
P Sg _ Voc _ => y3;
|
||||
P Pl _ Dir _ => y4;
|
||||
P Pl _ Obl _ => y5;
|
||||
P Pl _ Voc _ => y6
|
||||
};
|
||||
};
|
||||
|
||||
-- DemonPronForm = {s:DemPronForm => Str};
|
||||
mkDemonPronForm : (x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12:Str) -> DemPronForm =
|
||||
\y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12 -> {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Masc => table {
|
||||
Dir => y1 ;
|
||||
Obl => y2 ;
|
||||
Voc => y3
|
||||
};
|
||||
Fem => table {
|
||||
Dir => y4 ;
|
||||
Obl => y5 ;
|
||||
Voc => y6
|
||||
}
|
||||
};
|
||||
Pl => table {
|
||||
Masc => table {
|
||||
Dir => y7 ;
|
||||
Obl => y8 ;
|
||||
Voc => y9
|
||||
};
|
||||
Fem => table {
|
||||
Dir => y10 ;
|
||||
Obl => y11 ;
|
||||
Voc => y12
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
makeDemonPronForm : Str -> Str -> Str -> DemPronForm ;
|
||||
makeDemonPronForm yeh is inn = mkDemonPronForm yeh is "" yeh is "" yeh inn "" yeh inn "";
|
||||
-- makePossPronForm myra myry hmara hmary = mkDemonPronForm myra myra myra myry myry myry hmara hmara hmara hmary hmary hmary;
|
||||
|
||||
PersPron = {s: PersPronForm => Str};
|
||||
|
||||
mkPersPron:(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31,x32,x33,x34,x35,x36:Str) -> PersPron =
|
||||
\y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y20,y21,y22,y23,y24,y25,y26,y27,y28,y29,y30,y31,y32,y33,y34,y35,y36 -> {
|
||||
s =
|
||||
table {
|
||||
PPF Sg Pers1 Dir => y1;
|
||||
PPF Sg Pers1 Obl => y2;
|
||||
PPF Sg Pers1 Voc => y3;
|
||||
PPF Sg Pers2_Casual Dir => y4;
|
||||
PPF Sg Pers2_Casual Obl => y5;
|
||||
PPF Sg Pers2_Casual Voc => y6;
|
||||
PPF Sg Pers2_Familiar Dir => y7;
|
||||
PPF Sg Pers2_Familiar Obl => y8;
|
||||
PPF Sg Pers2_Familiar Voc => y9;
|
||||
PPF Sg Pers2_Respect Dir => y10;
|
||||
PPF Sg Pers2_Respect Obl => y11;
|
||||
PPF Sg Pers2_Respect Voc => y12;
|
||||
PPF Sg Pers3_Near Dir => y13;
|
||||
PPF Sg Pers3_Near Obl => y14;
|
||||
PPF Sg Pers3_Near Voc => y15;
|
||||
PPF Sg Pers3_Distant Dir => y16;
|
||||
PPF Sg Pers3_Distant Obl => y17;
|
||||
PPF Sg Pers3_Distant Voc => y18;
|
||||
PPF Pl Pers1 Dir => y19;
|
||||
PPF Pl Pers1 Obl => y20;
|
||||
PPF Pl Pers1 Voc => y21;
|
||||
PPF Pl Pers2_Casual Dir => y22;
|
||||
PPF Pl Pers2_Casual Obl => y23;
|
||||
PPF Pl Pers2_Casual Voc => y24;
|
||||
PPF Pl Pers2_Familiar Dir => y25;
|
||||
PPF Pl Pers2_Familiar Obl => y26;
|
||||
PPF Pl Pers2_Familiar Voc => y27;
|
||||
PPF Pl Pers2_Respect Dir => y28;
|
||||
PPF Pl Pers2_Respect Obl => y29;
|
||||
PPF Pl Pers2_Respect Voc => y30;
|
||||
PPF Pl Pers3_Near Dir => y31;
|
||||
PPF Pl Pers3_Near Obl => y32;
|
||||
PPF Pl Pers3_Near Voc => y33;
|
||||
PPF Pl Pers3_Distant Dir => y34;
|
||||
PPF Pl Pers3_Distant Obl => y35;
|
||||
PPF Pl Pers3_Distant Voc => y36
|
||||
};
|
||||
};
|
||||
|
||||
makePersPron : PersPron;
|
||||
makePersPron = mkPersPron "m(a)yN" "m(o)j'|h" "" "t(o)w " "t(o)j|h" "t(o)w " "t(o)m" "t(o)m" "t(o)m" "Ap" "Ap" "Ap" "y(i)h" "a(i)s" "" "w(o)h" "a(o)s" ""
|
||||
"h(a)m" "h(a)m" "" "t(o)m" "t(o)m" "t(o)m" "t(o)m" "t(o)m" "t(o)m" "Ap" "Ap" "Ap" "y(i)h" "a(i)n" "" "w(o)h" "a(o)n" "" ;
|
||||
|
||||
mkPron : (x1,x2,x3:Str) -> {s:Case => Str} =
|
||||
\y1,y2,y3 -> { s =
|
||||
table {
|
||||
Dir => y1;
|
||||
Obl => y2;
|
||||
Voc => y3
|
||||
}
|
||||
};
|
||||
|
||||
------- PossPronForm yet to be implemented
|
||||
|
||||
-- IntPronForm = {s:InterrPronForm => Str};
|
||||
IntPronForm = {s: Case => Str};
|
||||
mkIntPronForm : (x1,x2,x3:Str) -> IntPronForm =
|
||||
\y1,y2,y3 -> {
|
||||
s =
|
||||
table {
|
||||
Dir => y1;
|
||||
Obl => y2;
|
||||
Voc => y3
|
||||
}
|
||||
};
|
||||
|
||||
----2 Adjectives
|
||||
-- defined in ResUrd
|
||||
|
||||
----3 Verbs
|
||||
CommonVF = {s : VTense => UPerson => Number => Gender => Str} ;
|
||||
|
||||
mkVerb : (x1: Str) -> Verb = \inf ->
|
||||
let root = (tk 2 inf); inf_obl = ((tk 1 inf) + "E"); inf_fem = ((tk 1 inf) + "y")
|
||||
in { s = table {
|
||||
|
||||
VF tense person number gender => (mkCmnVF root tense person number gender).s ;
|
||||
Inf => inf ;
|
||||
Root => root ;
|
||||
Inf_Obl => inf_obl ;
|
||||
Inf_Fem => inf_fem
|
||||
|
||||
|
||||
}
|
||||
} ;
|
||||
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)
|
||||
in rt st;
|
||||
rt: Str -> Str;
|
||||
rt r = r;
|
||||
mkCmnVF : Str -> VTense -> UPerson -> Number -> Gender -> {s:Str} =
|
||||
\root,t,p,n,g ->
|
||||
{s =
|
||||
let form1 = case (last root) of {
|
||||
"a"|"A"|"w" => root + "w^N" ;
|
||||
_ => root + "wN"
|
||||
};
|
||||
form2 = case (last root) of {
|
||||
"a"|"A"|"w" => root + "y^N" ;
|
||||
_ => root + "yN"
|
||||
};
|
||||
in
|
||||
case <t,p,n,g> of {
|
||||
<Subj,Pers1,Sg,_> => form1 ;
|
||||
<Subj,Pers1,Pl,_> => form2 ;
|
||||
<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 };
|
||||
<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";
|
||||
<Imperf,Pers2_Familiar,Pl,Fem> => root+"tyN";
|
||||
<Imperf,Pers2_Respect,Sg,Masc> => root + "tE";
|
||||
<Imperf,Pers2_Respect,Sg,Fem> => root + "ty"; --variants{root+"ty" ; root+"tyN"};
|
||||
<Imperf,Pers2_Respect,Pl,Masc> => root + "tE";
|
||||
<Imperf,Pers2_Respect,Pl,Fem> => root+"tyN";
|
||||
<Imperf,_,Sg,Masc> => root+"ta";
|
||||
<Imperf,_,Sg,Fem> => root+"ty";
|
||||
<Imperf,_,Pl,Masc> => root+"te";
|
||||
<Imperf,_,Pl,Fem> => root+"tyN"
|
||||
}
|
||||
|
||||
} ;
|
||||
|
||||
mkPastInd : Str -> UPerson -> Number -> Gender -> {s:Str} = \root,p,n,g ->
|
||||
{s = let roo = root ;
|
||||
a = case (last root) of {
|
||||
"a"|"A"|"w"|"k" => "ya" ;
|
||||
_ => "a"
|
||||
} ;
|
||||
y = case (last root) of {
|
||||
"a"|"A"|"w" => "y^y" ;
|
||||
_ => "y"
|
||||
} ;
|
||||
e = case (last root) of {
|
||||
"a"|"A"|"w"|"k" => "y^E" ;
|
||||
_ => "E"
|
||||
} ;
|
||||
yN = case (last root) of {
|
||||
"a"|"A"|"w" => "y^yN" ;
|
||||
_ => "yN"
|
||||
} ;
|
||||
|
||||
in
|
||||
case <p,n,g> of {
|
||||
<Pers1,Sg,Masc> => roo+a ;
|
||||
<Pers1,Sg,Fem> => roo+y ;
|
||||
<Pers1,Pl,Masc> => roo+e ;
|
||||
<Pers1,Pl,Fem> => roo+yN ;
|
||||
|
||||
<Pers2_Casual,Sg,Masc> => roo+a ;
|
||||
<Pers2_Casual,Sg,Fem> => roo+y ;
|
||||
<Pers2_Casual,Pl,Masc> => roo+e ;
|
||||
<Pers2_Casual,Pl,Fem> => roo+yN ;
|
||||
|
||||
<Pers2_Familiar,Sg,Masc> => roo+e ;
|
||||
<Pers2_Familiar,Sg,Fem> => roo+y; --variants{roo+y ; roo+yN} ;
|
||||
<Pers2_Familiar,Pl,Masc> => roo+e ;
|
||||
<Pers2_Familiar,Pl,Fem> => roo+yN ;
|
||||
|
||||
<Pers2_Respect,Sg,Masc> => roo+e ;
|
||||
<Pers2_Respect,Sg,Fem> => roo+yN; --variants{roo+yN ; roo+y} ;
|
||||
<Pers2_Respect,Pl,Masc> => roo+e ;
|
||||
<Pers2_Respect,Pl,Fem> => roo+yN ;
|
||||
<_,Sg,Masc> => roo + a;
|
||||
<_,Sg,Fem> => roo+y ;
|
||||
<_,Pl,Masc> => roo + e;
|
||||
<_,Pl,Fem> => roo+yN
|
||||
|
||||
} ;
|
||||
} ;
|
||||
|
||||
mkImpert : Str -> UPerson -> Number -> Gender -> {s:Str} = \root,p,n,g ->
|
||||
{s = let roo = root ;
|
||||
w = case (last root) of {
|
||||
"a"|"A"|"w" => "w^" ;
|
||||
_ => "w"
|
||||
} ;
|
||||
yN = case (last root) of {
|
||||
"a"|"A"|"w" => "y^yN" ;
|
||||
_ => "yN"
|
||||
} ;
|
||||
yE = case (last root) of {
|
||||
"a"|"A"|"w" => "y^yE" ;
|
||||
_ => "yE"
|
||||
} ;
|
||||
e = case (last root) of {
|
||||
"a"|"A"|"w" => "y^E" ;
|
||||
_ => "E"
|
||||
} in
|
||||
case <p,n,g> of {
|
||||
<Pers1,_,_> => ""; --nonExist ;
|
||||
<Pers2_Casual,Sg,_> => root ;
|
||||
<Pers2_Casual,Pl,_> => roo+w ;
|
||||
<Pers2_Familiar,_,_> => roo+w ;
|
||||
<Pers2_Respect,Sg,_> => roo+w; --variants{roo+w; roo+yN; roo+yE} ;
|
||||
<Pers2_Respect,Pl,_> => roo+yN; --variants{roo+yN; roo+yE} ;
|
||||
<_,Sg,_> => roo+e ;
|
||||
<_,Pl,_> => roo+yN
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
127
lib/src/urdu/transliterated/NumeralUrd.gf
Normal file
127
lib/src/urdu/transliterated/NumeralUrd.gf
Normal file
@@ -0,0 +1,127 @@
|
||||
concrete NumeralUrd of Numeral = CatUrd ** open ResUrd in {
|
||||
-- By Harald Hammarström
|
||||
-- Modification for Urdu Shafqat Virk
|
||||
flags coding=utf8 ;
|
||||
--- still old Devanagari coding
|
||||
|
||||
|
||||
param DForm = unit | ten ;
|
||||
param DSize = sg | r2 | r3 | r4 | r5 | r6 | r7 | r8 | r9 ;
|
||||
param Size = sing | less100 | more100 ;
|
||||
|
||||
oper LinDigit = {s : DForm => Str ; size : DSize ; n : Number} ;
|
||||
|
||||
|
||||
lincat Dig = { s:Str ; n : Number};
|
||||
lincat Digit = LinDigit ;
|
||||
lincat Sub10 = {s : DForm => Str ; size : DSize ; n : Number} ;
|
||||
lincat Sub100 = {s : Str ; size : Size ; n : Number} ;
|
||||
lincat Sub1000 = {s : Str ; s2 : Str ; size : Size ; n : Number } ;
|
||||
lincat Sub1000000 = { s : Str ; n : Number } ;
|
||||
|
||||
lin num x0 =
|
||||
{s = table {
|
||||
NCard => x0.s ;
|
||||
NOrd => x0.s ++ "waN" -- need to use mkOrd which will make irregular ordinals but it gives path error
|
||||
};
|
||||
n = x0.n
|
||||
} ;
|
||||
oper mkOrd : Str -> Str =
|
||||
\s -> case s of {
|
||||
"ek" => "phla";
|
||||
"do" => "dwsra";
|
||||
"ti:n" => "tesra";
|
||||
"ca:r" => "cwth-a";
|
||||
("cHah"|"cHa"|"cHai") => "ch-Ta";
|
||||
_ => s ++ "waN"
|
||||
};
|
||||
-- {s = \\_ => x0.s ; n = x0.n} ;
|
||||
|
||||
|
||||
oper mkNum : Str -> Str -> DSize -> LinDigit =
|
||||
\do -> \bis -> \sz ->
|
||||
{s = table {unit => do ; ten => bis } ;
|
||||
size = sz ; n = Pl} ;
|
||||
|
||||
lin n2 = mkNum "dw" "bys" r2 ;
|
||||
lin n3 = mkNum "tyn" "tys" r3 ;
|
||||
lin n4 = mkNum "car" "calys" r4 ;
|
||||
lin n5 = mkNum "panc" "pcas" r5 ;
|
||||
lin n6 = mkNum "ch-" "sath-" r6 ;
|
||||
lin n7 = mkNum "sat" "str" r7;
|
||||
lin n8 = mkNum "Ath-" "asy" r8;
|
||||
lin n9 = mkNum "nw" "nwE" r9 ;
|
||||
|
||||
oper mkR : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> DSize => Str = \a1 -> \a2 -> \a3 -> \a4 -> \a5 -> \a6 -> \a7 -> \a8 -> \a9 -> table {
|
||||
sg => a1 + "ah" ;
|
||||
r2 => a2 + "i:s" ;
|
||||
r3 => a3 + "ti:s" ;
|
||||
r4 => a4 + "a:li:s" ;
|
||||
r5 => a5 + "an" ;
|
||||
r6 => a6 + "saTH" ;
|
||||
r7 => a7 + "hattar" ;
|
||||
r8 => a8 + "a:si:" ;
|
||||
r9 => a9 + "a:nave"
|
||||
} ;
|
||||
|
||||
oper rows : DSize => DSize => Str = table {
|
||||
sg => mkR "gyarh" "ikk" "ikat" "ekt" "ikyaw" "ik" "ik" "iky" "iky" ;
|
||||
r2 => mkR "barh" "bay" "bat" "bay" "baw" "ba" "ba" "bay" "b" ;
|
||||
r3 => mkR "tyr" "ty" "tyn" "tnt" "trp" "try" "t" "tr" "tr" ;
|
||||
r4 => mkR "cwd" "cwb" "cwn" "cwa" "cww" "cwn" "cwh" "cwr" "cwr" ;
|
||||
r5 => mkR "pnd" "pcy" "pyn" "pnta" "pcp" "pyn" "ph" "pc" "pc" ;
|
||||
r6 => mkR "swl" "ch-b" "ch-t" "ch-y" "ch-p" "ch-ya" "ch-" "ch-y" "ch-y" ;
|
||||
r7 => mkR "str" "sta" "syn" "snt" "staw" "sta" "sr" "st" "sta" ;
|
||||
r8 => mkR "ath-ar" "ath-ay" "aR" "aRt" "ath-aw" "aR" "ath-" "ath-" "ath-" ;
|
||||
r9 => table {sg => "anys" ; r2 => "antys" ; r3 => "antalys" ;
|
||||
r4 => "ancas" ; r5 => "ansth-" ; r6 => "anhtr" ;
|
||||
r7 => "anasy" ;
|
||||
r8 => "ananwE" ; r9 => "nnanwE" }
|
||||
} ;
|
||||
|
||||
oper ss : Str -> {s : Str} = \s -> {s = s} ;
|
||||
|
||||
lin pot01 = {s = table {unit => "ayk" ; _ => "dummy" } ; size = sg ; n = Sg} ;
|
||||
lin pot0 d = d ;
|
||||
lin pot110 = {s = "das" ; size = less100 ; n = Pl} ;
|
||||
lin pot111 = {s = rows ! sg ! sg ; size = less100 ; n = Pl} ;
|
||||
lin pot1to19 d = {s = rows ! d.size ! sg ; size = less100 ; n = d.n} ;
|
||||
lin pot0as1 n = {s = n.s ! unit ; size = table {sg => sing ; _ => less100} ! n.size ; n = n.n } ;
|
||||
|
||||
lin pot1 d = {s = d.s ! ten ; size = less100 ; n = d.n} ;
|
||||
lin pot1plus d e = {s = rows ! e.size ! d.size ; size = less100 ; n = d.n} ;
|
||||
|
||||
lin pot1as2 n = {s = n.s ; s2 = "dummy" ; size = n.size ; n = n.n} ;
|
||||
lin pot2 d = {s = (mksau (d.s ! unit) d.size) ;
|
||||
s2 = d.s ! unit ++ "lakh-" ; size = more100 ; n = d.n} ;
|
||||
lin pot2plus d e =
|
||||
{s = (mksau (d.s ! unit) d.size) ++ e.s ;
|
||||
s2 = (d.s ! unit) ++ "lakh-" ++ (mkhazar e.s e.size) ;
|
||||
size = more100 ; n = d.n} ;
|
||||
|
||||
lin pot2as3 n = {s = n.s ; n = n.n} ;
|
||||
lin pot3 n = {s = table { sing => ekhazar ;
|
||||
less100 => n.s ++ "hzar" ;
|
||||
more100 => n.s2 } ! n.size ; n = n.n} ;
|
||||
lin pot3plus n m =
|
||||
{s = table {sing => ekhazar ;
|
||||
less100 => n.s ++ "hzar" ;
|
||||
more100 => n.s2 } ! n.size ++ m.s ; n = n.n} ;
|
||||
|
||||
lin D_0 = { s = "0" ; n = Sg};
|
||||
lin D_1 = { s = "1" ; n = Sg};
|
||||
lin D_2 = { s = "2" ; n = Pl};
|
||||
lin D_3 = { s = "3" ; n = Pl};
|
||||
lin D_4 = { s = "4" ; n = Pl};
|
||||
lin D_5 = { s = "5" ; n = Pl};
|
||||
lin D_6 = { s = "6" ; n = Pl};
|
||||
lin D_7 = { s = "7" ; n = Pl};
|
||||
lin D_8 = { s = "8" ; n = Pl};
|
||||
lin D_9 = { s = "9" ; n = Pl};
|
||||
lin IDig d = { s = \\_ => d.s ; n = d.n} ;
|
||||
lin IIDig d dg = { s = \\df => dg.s ! df ++ d.s ; n = Pl }; -- need to use + rather than ++, but gives error need to discuss
|
||||
|
||||
oper ekhazar : Str = variants {"hzar" ; "ayk" ++ "hzar"} ;
|
||||
oper mkhazar : Str -> Size -> Str = \s -> \sz -> table {sing => ekhazar ; _ => s ++ "hzar"} ! sz ;
|
||||
oper mksau : Str -> DSize -> Str = \s -> \sz -> table {sg => "sw" ; _ => s ++ "sw"} ! sz ;
|
||||
}
|
||||
641
lib/src/urdu/transliterated/ResUrd.gf
Normal file
641
lib/src/urdu/transliterated/ResUrd.gf
Normal file
@@ -0,0 +1,641 @@
|
||||
--# -path=.:../abstract:../common:../../prelude
|
||||
--
|
||||
--1 Urdu auxiliary operations.
|
||||
--
|
||||
-- This module contains operations that are needed to make the
|
||||
-- resource syntax work.
|
||||
|
||||
resource ResUrd = ParamX ** open Prelude,Predef in {
|
||||
|
||||
flags optimize=all ;
|
||||
coding = utf8;
|
||||
|
||||
param
|
||||
Case = Dir | Obl | Voc ;
|
||||
Gender = Masc | Fem ;
|
||||
VTense = Subj | Perf | Imperf;
|
||||
UPerson = Pers1
|
||||
| Pers2_Casual
|
||||
| Pers2_Familiar
|
||||
| Pers2_Respect
|
||||
| Pers3_Near
|
||||
| Pers3_Distant;
|
||||
|
||||
Order = ODir | OQuest ;
|
||||
|
||||
--2 For $Relative$
|
||||
|
||||
RAgr = RNoAg | RAg Agr ;
|
||||
RCase = RC Number Case ;
|
||||
|
||||
-- for Numerial
|
||||
|
||||
CardOrd = NCard | NOrd ;
|
||||
|
||||
-----------------------------------------
|
||||
-- Urd Pronouns
|
||||
-----------------------------------------
|
||||
|
||||
Pronoun = P Number Gender Case UPerson;
|
||||
PersPronForm = PPF Number UPerson Case;
|
||||
|
||||
-------------------------------------------
|
||||
--Verbs
|
||||
-------------------------------------------
|
||||
|
||||
VerbForm = VF VTense UPerson Number Gender
|
||||
| Inf
|
||||
| Root
|
||||
| Inf_Obl
|
||||
| Inf_Fem;
|
||||
oper
|
||||
Noun = {s : Number => Case => Str ; g : Gender} ;
|
||||
Verb = {s : VerbForm => Str} ;
|
||||
Preposition = {s : Str};
|
||||
DemPronForm = {s : Number => Gender => Case => Str};
|
||||
PossPronForm = {s : Number => Gender => Case => Str};
|
||||
Determiner = {s : Number => Gender => Str ; n : Number};
|
||||
|
||||
-- a useful oper
|
||||
eq : Str -> Str -> Bool = \s1,s2-> (pbool2bool (eqStr s1 s2)) ;
|
||||
|
||||
-----------------------------------------------
|
||||
-- Urd Adjectives
|
||||
-----------------------------------------------
|
||||
|
||||
Adjective = { s: Number => Gender => Case => Degree => Str };
|
||||
|
||||
|
||||
mkAdjective : (x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31,x32,x33,x34,x35,x36:Str) -> Adjective =
|
||||
\y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y20,y21,y22,y23,y24,y25,y26,y27,y28,y29,y30,y31,y32,y33,y34,y35,y36 -> {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Masc => table {
|
||||
Dir => table {
|
||||
Posit => y1 ;
|
||||
Compar => y2 ;
|
||||
Superl => y3
|
||||
};
|
||||
Obl => table {
|
||||
Posit => y4 ;
|
||||
Compar => y5 ;
|
||||
Superl => y6
|
||||
};
|
||||
Voc => table {
|
||||
Posit => y7 ;
|
||||
Compar => y8 ;
|
||||
Superl => y9
|
||||
}
|
||||
};
|
||||
Fem => table {
|
||||
Dir => table {
|
||||
Posit => y10 ;
|
||||
Compar => y11 ;
|
||||
Superl => y12
|
||||
};
|
||||
Obl => table {
|
||||
Posit => y13 ;
|
||||
Compar => y14 ;
|
||||
Superl => y15
|
||||
};
|
||||
Voc => table {
|
||||
Posit => y16 ;
|
||||
Compar => y17 ;
|
||||
Superl => y18
|
||||
}
|
||||
}
|
||||
};
|
||||
Pl => table {
|
||||
Masc => table {
|
||||
Dir => table {
|
||||
Posit => y19 ;
|
||||
Compar => y20 ;
|
||||
Superl => y21
|
||||
};
|
||||
Obl => table {
|
||||
Posit => y22 ;
|
||||
Compar => y23 ;
|
||||
Superl => y24
|
||||
};
|
||||
Voc => table {
|
||||
Posit => y25 ;
|
||||
Compar => y26 ;
|
||||
Superl => y27
|
||||
}
|
||||
};
|
||||
Fem => table {
|
||||
Dir => table {
|
||||
Posit => y28 ;
|
||||
Compar => y29 ;
|
||||
Superl => y30
|
||||
};
|
||||
Obl => table {
|
||||
Posit => y31 ;
|
||||
Compar => y32 ;
|
||||
Superl => y33
|
||||
};
|
||||
Voc => table {
|
||||
Posit => y34 ;
|
||||
Compar => y35 ;
|
||||
Superl => y36
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
regAdjective : Str -> Adjective;
|
||||
regAdjective x = case x of {
|
||||
acch + ("a"|"aN") => mkAdjective x ("bht" ++ x) ("sab sE" ++ x) (acch + "E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E")
|
||||
(acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y")
|
||||
(acch +"E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E")
|
||||
(acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y");
|
||||
|
||||
_ => mkAdjective x x x x x x x x x
|
||||
x x x x x x x x x
|
||||
x x x x x x x x x
|
||||
x x x x x x x x x
|
||||
};
|
||||
|
||||
|
||||
|
||||
RefPron : Str;
|
||||
RefPron = "Kwd";
|
||||
|
||||
----------------------------------------------------------
|
||||
-- Grammar part
|
||||
----------------------------------------------------------
|
||||
|
||||
param
|
||||
Agr = Ag Gender Number UPerson ;
|
||||
NPCase = NPC Case | NPObj | NPErg ;
|
||||
|
||||
oper
|
||||
np2pronCase : (Case => Str) -> NPCase -> Str = \ppf,npc -> case npc of {
|
||||
NPC c => ppf ! c;
|
||||
NPObj => ppf ! Dir ;
|
||||
NPErg => ppf ! Obl ++ "ne"
|
||||
} ;
|
||||
|
||||
toNP : ( Case => Str) -> NPCase -> Str = \pn, npc -> case npc of {
|
||||
NPC c => pn ! c ;
|
||||
NPObj => pn ! Dir ;
|
||||
NPErg => pn ! Obl ++ "ne"
|
||||
} ;
|
||||
detcn2NP : (Determiner) -> Noun -> NPCase -> Number -> Str = \dt,cn,npc,nn -> case npc of {
|
||||
NPC c => dt.s ! Sg ! Masc ++ cn.s ! nn ! Dir ;
|
||||
NPObj => dt.s ! Sg ! Masc ++ cn.s ! nn ! Dir ;
|
||||
NPErg => dt.s ! Sg ! Masc ++ cn.s ! nn ! Obl ++ "ne"
|
||||
} ;
|
||||
det2NP : (Determiner) -> NPCase -> Str = \dt,npc -> case npc of {
|
||||
NPC c => dt.s ! Sg ! Masc ;
|
||||
NPObj => dt.s ! Sg ! Masc ;
|
||||
NPErg => dt.s ! Sg ! Masc ++ "ne"
|
||||
} ;
|
||||
|
||||
------------------------------------------
|
||||
-- Agreement transformations
|
||||
-----------------------------------------
|
||||
toAgr : Number -> UPerson -> Gender -> Agr = \n,p,g ->
|
||||
Ag g n p;
|
||||
|
||||
|
||||
fromAgr : Agr -> {n : Number ; p : UPerson ; g : Gender} = \a -> case a of {
|
||||
Ag g n p => {n = n ; p = p ; g = g}
|
||||
} ;
|
||||
|
||||
conjAgr : Agr -> Agr -> Agr = \a0,b0 ->
|
||||
let a = fromAgr a0 ; b = fromAgr b0
|
||||
in
|
||||
toAgr
|
||||
(conjNumber a.n b.n)
|
||||
b.p a.g;
|
||||
|
||||
giveNumber : Agr -> Number =\a -> case a of {
|
||||
Ag _ n _ => n
|
||||
};
|
||||
giveGender : Agr -> Gender =\a -> case a of {
|
||||
Ag g _ _ => g
|
||||
};
|
||||
|
||||
defaultAgr : Agr = agrP3 Masc Sg ;
|
||||
agrP3 : Gender -> Number -> Agr = \g,n -> Ag g n Pers3_Distant ;
|
||||
personalAgr : Agr = agrP1 Masc Sg ;
|
||||
agrP1 : Gender -> Number -> Agr = \g,n -> Ag g n Pers1 ;
|
||||
|
||||
param
|
||||
CPolarity =
|
||||
CPos
|
||||
| CNeg Bool ; -- contracted or not
|
||||
|
||||
oper
|
||||
contrNeg : Bool -> Polarity -> CPolarity = \b,p -> case p of {
|
||||
Pos => CPos ;
|
||||
Neg => CNeg b
|
||||
} ;
|
||||
|
||||
NP : Type = {s : NPCase => Str ; a : Agr} ;
|
||||
|
||||
param
|
||||
CTense = CPresent | CPast | CFuture ;
|
||||
|
||||
oper
|
||||
copula : CTense -> Number -> UPerson -> Gender -> Str = \t,n,p,g ->
|
||||
case <t,n,p,g> of {
|
||||
<CPresent,Sg,Pers1,_ > => "hwN" ;
|
||||
<CPresent,Sg,Pers2_Casual,_ > => "hE" ;
|
||||
<CPresent,Sg,Pers2_Familiar,_ > => "hw" ;
|
||||
<CPresent,Sg,Pers2_Respect,_ > => "hyN" ;
|
||||
<CPresent,Sg,Pers3_Near,_ > => "hE" ;
|
||||
<CPresent,Sg,Pers3_Distant,_ > => "hE" ;
|
||||
<CPresent,Pl,Pers1,_ > => "hyN" ;
|
||||
<CPresent,Pl,Pers2_Casual,_ > => "hw" ;
|
||||
<CPresent,Pl,Pers2_Familiar,_ > => "hw" ;
|
||||
<CPresent,Pl,Pers2_Respect,_ > => "hyN" ;
|
||||
<CPresent,Pl,Pers3_Near,_ > => "hyN" ;
|
||||
<CPresent,Pl,Pers3_Distant,_ > => "hyN" ;
|
||||
<CPast,Sg,Pers1,Masc > => "th-a" ;
|
||||
<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,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,Fem > => "th-y" ;
|
||||
<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" ;
|
||||
<CPast,Pl,Pers2_Casual,Masc > => "th-E" ;
|
||||
<CPast,Pl,Pers2_Casual,Fem > => "th-yN" ;
|
||||
<CPast,Pl,Pers2_Familiar,Masc > => "th-E" ;
|
||||
<CPast,Pl,Pers2_Familiar,Fem > => "th-yN" ;
|
||||
<CPast,Pl,Pers2_Respect,Masc > => "th-E" ;
|
||||
<CPast,Pl,Pers2_Respect,Fem > => "th-yN" ;
|
||||
<CPast,Pl,Pers3_Near,Masc > => "th-E" ;
|
||||
<CPast,Pl,Pers3_Near,Fem > => "th-yN" ;
|
||||
<CPast,Pl,Pers3_Distant,Masc > => "th-E" ;
|
||||
<CPast,Pl,Pers3_Distant,Fem > => "th-yN" ;
|
||||
<CFuture,Sg,Pers1,Masc > => "ga" ;
|
||||
<CFuture,Sg,Pers1,Fem > => "gy" ;
|
||||
<CFuture,Sg,Pers2_Casual,Masc > => "ga" ;
|
||||
<CFuture,Sg,Pers2_Casual,Fem > => "gi" ;
|
||||
<CFuture,Sg,Pers2_Familiar,Masc > => "gE" ;
|
||||
<CFuture,Sg,Pers2_Familiar,Fem > => "gy" ;
|
||||
<CFuture,Sg,Pers2_Respect,Masc > => "gE" ;
|
||||
<CFuture,Sg,Pers2_Respect,Fem > => "gy" ;
|
||||
<CFuture,Sg,Pers3_Near,Masc > => "ga" ;
|
||||
<CFuture,Sg,Pers3_Near,Fem > => "gy" ;
|
||||
<CFuture,Sg,Pers3_Distant,Masc > => "ga" ;
|
||||
<CFuture,Sg,Pers3_Distant,Fem > => "gy" ;
|
||||
<CFuture,Pl,Pers1,Masc > => "gE" ;
|
||||
<CFuture,Pl,Pers1,Fem > => "gy" ;
|
||||
<CFuture,Pl,Pers2_Casual,Masc > => "gE" ;
|
||||
<CFuture,Pl,Pers2_Casual,Fem > => "gy" ;
|
||||
<CFuture,Pl,Pers2_Familiar,Masc > => "gE" ;
|
||||
<CFuture,Pl,Pers2_Familiar,Fem > => "gy" ;
|
||||
<CFuture,Pl,Pers2_Respect,Masc > => "gE" ;
|
||||
<CFuture,Pl,Pers2_Respect,Fem > => "gy" ;
|
||||
<CFuture,Pl,Pers3_Near,Masc > => "gE" ;
|
||||
<CFuture,Pl,Pers3_Near,Fem > => "gE" ;
|
||||
<CFuture,Pl,Pers3_Distant,Masc > => "gE" ;
|
||||
<CFuture,Pl,Pers3_Distant,Fem > => "gy"
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
param
|
||||
VPPTense =
|
||||
VPPres
|
||||
|VPPast
|
||||
|VPFutr;
|
||||
|
||||
VPHTense =
|
||||
VPGenPres -- impf hum nahim "I go"
|
||||
| VPImpPast -- impf Ta nahim "I went"
|
||||
| VPFut -- fut na/nahim "I shall go"
|
||||
| VPContPres -- stem raha hum nahim "I am going"
|
||||
| VPContPast -- stem raha Ta nahim "I was going"
|
||||
| VPContFut
|
||||
| VPPerfPres -- perf hum na/nahim "I have gone"
|
||||
| VPPerfPast -- perf Ta na/nahim "I had gone"
|
||||
| VPPerfFut
|
||||
| VPPerfPresCont
|
||||
| VPPerfPastCont
|
||||
| VPPerfFutCont
|
||||
| VPSubj -- subj na "I may go"
|
||||
;
|
||||
|
||||
VPHForm =
|
||||
VPTense VPPTense Agr -- 9 * 12
|
||||
| VPReq
|
||||
| VPImp
|
||||
| VPReqFut
|
||||
| VPInf
|
||||
| VPStem
|
||||
;
|
||||
|
||||
VType = VIntrans | VTrans | VTransPost ;
|
||||
|
||||
oper
|
||||
|
||||
objVType : VType -> NPCase = \vt -> case vt of {
|
||||
VTrans => NPObj ;
|
||||
_ => NPC Obl
|
||||
} ;
|
||||
|
||||
VPH : Type = {
|
||||
s : VPHForm => {fin, inf : Str} ;
|
||||
obj : {s : Str ; a : Agr} ;
|
||||
subj : VType ;
|
||||
comp : Agr => Str;
|
||||
inf : Str;
|
||||
ad : Str;
|
||||
embComp : Str ;
|
||||
} ;
|
||||
|
||||
VPHSlash = VPH ** {c2 : Compl} ;
|
||||
|
||||
Compl : Type = {s : Str ; c : VType} ;
|
||||
|
||||
predV : Verb -> VPH = \verb -> {
|
||||
s = \\vh =>
|
||||
case vh of {
|
||||
VPTense VPPres (Ag g n p) => {fin = copula CPresent n p g ; inf = verb.s ! VF Imperf p n g } ;
|
||||
VPTense VPPast (Ag g n p) => {fin = [] ; inf =verb.s ! VF Perf p n g} ;
|
||||
VPTense VPFutr (Ag g n p) => {fin = copula CFuture n p g ; inf = verb.s ! VF Subj p n g } ;
|
||||
VPStem => {fin = [] ; inf = verb.s ! Root};
|
||||
_ => {fin = [] ; inf = verb.s ! Root}
|
||||
};
|
||||
obj = {s = [] ; a = defaultAgr} ;
|
||||
subj = VTrans ;
|
||||
inf = verb.s ! Inf;
|
||||
ad = [];
|
||||
embComp = [];
|
||||
comp = \\_ => []
|
||||
} ;
|
||||
|
||||
predVc : (Verb ** {c2,c1 : Str}) -> VPHSlash = \verb ->
|
||||
predV verb ** {c2 = {s = verb.c1 ; c = VTrans} } ;
|
||||
|
||||
|
||||
raha : Gender -> Number -> Str = \g,n ->
|
||||
(regAdjective "rha").s ! n ! g ! Dir ! Posit ;
|
||||
|
||||
cka : Gender -> Number -> Str = \g,n ->
|
||||
(regAdjective "cka").s ! n ! g ! Dir ! Posit ;
|
||||
|
||||
hw : UPerson -> Number -> Str = \pp,n ->
|
||||
case <pp,n> of {
|
||||
<Pers1,_> => "hwN";
|
||||
<_,Pl> => "hwN";
|
||||
<_,_> => "hw"
|
||||
};
|
||||
|
||||
predAux : Aux -> VPH = \verb -> {
|
||||
s = \\vh =>
|
||||
let
|
||||
|
||||
inf = verb.inf ;
|
||||
part = verb.ppart ;
|
||||
|
||||
in
|
||||
case vh of {
|
||||
VPTense VPPres (Ag g n p) => {fin = copula CPresent n p g ; inf = part } ;
|
||||
VPTense VPPast (Ag g n p) => {fin = copula CPast n p g ; inf = part } ;
|
||||
VPTense VPFutr (Ag g n p) => {fin = copula CFuture n p g ; inf = part ++ hw p n } ;
|
||||
VPStem => {fin = [] ; inf = "rh" };
|
||||
_ => {fin = part ; inf = [] }
|
||||
};
|
||||
obj = {s = [] ; a = defaultAgr} ;
|
||||
subj = VIntrans ;
|
||||
inf = verb.inf;
|
||||
ad = [];
|
||||
embComp = [];
|
||||
comp = \\_ => []
|
||||
} ;
|
||||
|
||||
Aux = {
|
||||
inf,ppart,prpart : Str
|
||||
} ;
|
||||
|
||||
auxBe : Aux = {
|
||||
inf = "" ;
|
||||
ppart = "" ;
|
||||
prpart = ""
|
||||
} ;
|
||||
|
||||
Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
|
||||
mkClause : NP -> VPH -> Clause = \np,vp -> {
|
||||
s = \\vt,b,ord =>
|
||||
let
|
||||
subjagr : NPCase * Agr = case vt of {
|
||||
VPImpPast => case vp.subj of {
|
||||
VTrans => <NPErg, vp.obj.a> ;
|
||||
VTransPost => <NPErg, defaultAgr> ;
|
||||
_ => <NPC Dir, np.a>
|
||||
} ;
|
||||
_ => <NPC Dir, np.a>
|
||||
} ;
|
||||
subj = subjagr.p1 ;
|
||||
agr = subjagr.p2 ;
|
||||
n = (fromAgr agr).n;
|
||||
p = (fromAgr agr).p;
|
||||
g = (fromAgr agr).g;
|
||||
vps = case vt of {
|
||||
|
||||
VPGenPres => vp.s ! VPTense VPPres agr ;
|
||||
VPImpPast => vp.s ! VPTense VPPast agr ;
|
||||
VPFut => vp.s ! VPTense VPFutr agr ;
|
||||
VPContPres =>
|
||||
{fin = copula CPresent n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ;
|
||||
VPContPast =>
|
||||
{fin = copula CPast n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ;
|
||||
VPContFut =>
|
||||
{fin = copula CFuture n p g ; inf = (vp.s ! VPStem).inf ++ raha g n ++ hw p n} ;
|
||||
VPPerfPres =>
|
||||
{fin = copula CPresent n p g ; inf = (vp.s ! VPStem).inf ++ cka g n } ;
|
||||
VPPerfPast =>
|
||||
{fin = copula CPast n p g ; inf = (vp.s ! VPStem).inf ++ cka g n } ;
|
||||
VPPerfFut =>
|
||||
{fin = copula CFuture n p g ; inf = (vp.s ! VPStem).inf ++ cka g n ++ hw p n } ;
|
||||
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 = copula CFuture n p g ; inf = (vp.s ! VPTense VPPres agr).inf ++ raha g n ++ hw p n } ;
|
||||
VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "xayd" }
|
||||
|
||||
};
|
||||
|
||||
|
||||
quest =
|
||||
case ord of
|
||||
{ ODir => [];
|
||||
OQuest => "kya" };
|
||||
na =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "na" };
|
||||
nahim =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
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};
|
||||
|
||||
} ;
|
||||
|
||||
mkSClause : Str -> Agr -> VPH -> Clause =
|
||||
\subj,agr,vp -> {
|
||||
s = \\t,b,ord =>
|
||||
let
|
||||
n = (fromAgr agr).n;
|
||||
p = (fromAgr agr).p;
|
||||
g = (fromAgr agr).g;
|
||||
vps = case t of {
|
||||
VPGenPres => vp.s ! VPTense VPPres agr ;
|
||||
VPImpPast => vp.s ! VPTense VPPast agr ;
|
||||
VPFut => vp.s ! VPTense VPFutr agr ;
|
||||
VPContPres =>
|
||||
{fin = copula CPresent n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ;
|
||||
VPContPast =>
|
||||
{fin = copula CPast n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ;
|
||||
VPContFut =>
|
||||
{fin = copula CFuture n p g ; inf = (vp.s ! VPStem).inf ++ raha g n ++ hw p n } ;
|
||||
VPPerfPres =>
|
||||
{fin = copula CPresent n p g ; inf = (vp.s ! VPStem).inf ++ cka g n } ;
|
||||
VPPerfPast =>
|
||||
{fin = copula CPast n p g ; inf = (vp.s ! VPStem).inf ++ cka g n } ;
|
||||
VPPerfFut =>
|
||||
{fin = copula CFuture n p g ; inf = (vp.s ! VPStem).inf ++ cka g n ++ hw p n } ;
|
||||
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 = copula CFuture n p g ; inf = (vp.s ! VPStem).inf ++ raha g n ++ hw p n } ;
|
||||
VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "xayd" }
|
||||
|
||||
};
|
||||
|
||||
quest =
|
||||
case ord of
|
||||
{ ODir => [];
|
||||
OQuest => "kya" };
|
||||
na =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "na" };
|
||||
nahim =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
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};
|
||||
} ;
|
||||
|
||||
insertSubj : UPerson -> Str -> Str = \p,s ->
|
||||
case p of { Pers1 => s ++ "wN" ; _ => s ++ "E"};
|
||||
|
||||
insertObj : (Agr => Str) -> VPH -> VPH = \obj1,vp -> {
|
||||
s = vp.s ;
|
||||
obj = vp.obj ;
|
||||
subj = vp.subj ;
|
||||
inf = vp.inf;
|
||||
ad = vp.ad;
|
||||
embComp = vp.embComp;
|
||||
comp = \\a => vp.comp ! a ++ obj1 ! a
|
||||
} ;
|
||||
insertVV : Str -> VPH -> VPH = \obj1,vp -> {
|
||||
s = vp.s ;
|
||||
obj = vp.obj ;
|
||||
subj = vp.subj ;
|
||||
inf = vp.inf;
|
||||
ad = vp.ad;
|
||||
embComp = vp.embComp;
|
||||
comp = \\a => vp.comp ! a ++ obj1
|
||||
} ;
|
||||
|
||||
insertObj2 : (Str) -> VPH -> VPH = \obj1,vp -> {
|
||||
s = vp.s;
|
||||
obj = vp.obj ;
|
||||
subj = vp.subj ;
|
||||
inf = vp.inf;
|
||||
ad = vp.ad;
|
||||
embComp = vp.embComp ++ obj1;
|
||||
comp = vp.comp
|
||||
|
||||
} ;
|
||||
|
||||
insertObjc : (Agr => Str) -> VPHSlash -> VPHSlash = \obj,vp ->
|
||||
insertObj obj vp ** {c2 = vp.c2} ;
|
||||
insertObjc2 : Str -> VPHSlash -> VPHSlash = \obj,vp ->
|
||||
insertObj2 obj vp ** {c2 = vp.c2} ;
|
||||
|
||||
infVP : Bool -> VPH -> Agr -> Str = \isAux,vp,a ->
|
||||
vp.obj.s ++ vp.inf ++ vp.comp ! a ;
|
||||
infVV : Bool -> VPH -> Str = \isAux,vp ->
|
||||
case isAux of {False => vp.inf ; True => (vp.s ! VPImp).fin };
|
||||
|
||||
insertObject : NP -> VPHSlash -> VPH = \np,vps -> {
|
||||
s = vps.s ;
|
||||
obj = {s = vps.obj.s ++ np.s ! objVType vps.c2.c ++ vps.c2.s ; a = np.a} ;
|
||||
subj = vps.c2.c ;
|
||||
inf = vps.inf;
|
||||
ad = vps.ad;
|
||||
embComp = vps.embComp;
|
||||
comp = vps.comp
|
||||
} ;
|
||||
|
||||
insertObjPre : (Agr => Str) -> VPHSlash -> VPH = \obj,vp -> {
|
||||
s = vp.s ;
|
||||
obj = vp.obj ;
|
||||
inf = vp.inf ;
|
||||
subj = vp.subj ;
|
||||
ad = vp.ad ;
|
||||
embComp = vp.embComp;
|
||||
comp = \\a => obj ! a ++ vp.c2.s ++ vp.comp ! a
|
||||
} ;
|
||||
|
||||
insertAdV : Str -> VPH -> VPH = \ad,vp -> {
|
||||
s = vp.s ;
|
||||
obj = vp.obj ;
|
||||
inf = vp.inf ;
|
||||
subj = vp.subj;
|
||||
ad = vp.ad ++ ad ;
|
||||
embComp = vp.embComp;
|
||||
comp = vp.comp
|
||||
} ;
|
||||
conjThat : Str = "kh" ;
|
||||
|
||||
-- strings collected from syntax files, AR
|
||||
|
||||
oper
|
||||
sE_Str = "sE" ;
|
||||
ka_Str = "ka" ;
|
||||
hr_kwy_Str = "hr kwy" ;
|
||||
rakh6na_Str = "rakh-na" ;
|
||||
comma_Str = "," ;
|
||||
agr_Str = "agr" ;
|
||||
nE_Str = "nE" ;
|
||||
jw_Str = "jw" ;
|
||||
js_Str = "js" ;
|
||||
jn_Str = "jn" ;
|
||||
mt_Str = "mt" ;
|
||||
nh_Str = "nh" ;
|
||||
waN_Str = "waN" ;
|
||||
awr_Str = "awr" ;
|
||||
ky_Str = "ky" ;
|
||||
kw_Str = "kw" ;
|
||||
|
||||
}
|
||||
|
||||
128
lib/src/urdu/transliterated/StructuralUrd.gf
Normal file
128
lib/src/urdu/transliterated/StructuralUrd.gf
Normal file
@@ -0,0 +1,128 @@
|
||||
concrete StructuralUrd of Structural = CatUrd **
|
||||
open MorphoUrd, ParadigmsUrd, Prelude, NounUrd in {
|
||||
|
||||
flags optimize=all ;
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
above_Prep = ss "awpr" ;
|
||||
after_Prep = ss "kE bed" ;
|
||||
all_Predet = ss "tmam" ;
|
||||
almost_AdA, almost_AdN = ss "tqryba" ;
|
||||
although_Subj = ss "agrch-" ;
|
||||
always_AdV = ss "hmyXh" ;
|
||||
and_Conj = sd2 [] "awr" ** {n = Pl} ;
|
||||
because_Subj = ss "kywnkh-" ;
|
||||
before_Prep = ss "phlE" ;
|
||||
behind_Prep = ss "pych-E" ;
|
||||
between_Prep = ss "drmyaN" ;
|
||||
both7and_DConj = sd2 "dwnwN" "awr" ** {n = Pl} ;
|
||||
but_PConj = ss "lykn" ;
|
||||
by8agent_Prep = ss "" ;
|
||||
by8means_Prep = ss "" ;
|
||||
can8know_VV,can_VV = mkV "skna" ** { isAux = True} ;
|
||||
during_Prep = ss ["kE drmyaN"] ;
|
||||
either7or_DConj = sd2 "kwy ayk" "ya" ** {n = Sg} ;
|
||||
everybody_NP = MassNP (UseN (ParadigmsUrd.mkN "hr kwy" "hr kwy" "hr kwy" "hr kwy" "hr kwy" "hr kwy" Masc )); -- not a good way coz need to include NounUrd
|
||||
every_Det = mkDet "hr" "hr" "hr" "hr" Sg;
|
||||
everything_NP = MassNP (UseN (ParadigmsUrd.mkN "hr cyz" "hr cyz" "hr cyzw" "sb cyzyN" "sb cyzwN" "sb cyzw" Masc ));
|
||||
everywhere_Adv = ss "hr jgh" ;
|
||||
few_Det = mkDet "cnd" "cnd" "cnd" "cnd" Pl ;
|
||||
for_Prep = ss "kylyE" ;
|
||||
from_Prep = ss "sE" ;
|
||||
he_Pron = personalPN "wh" "as" "" "as ka" Sg Masc Pers3_Distant ;
|
||||
here_Adv = ss "yhaN" ;
|
||||
here7to_Adv = ss ["yhaN pr"] ;
|
||||
here7from_Adv = ss ["yhaN sE"] ;
|
||||
how_IAdv = ss "how" ;
|
||||
how8many_IDet = makeIDet "ktnE" "ktny" Pl ;
|
||||
if_Subj = ss "agr" ;
|
||||
in8front_Prep = ss ["kE samnE"] ;
|
||||
i_Pron = personalPN "myN" "mjh-" "" "myra" Sg Masc Pers1;
|
||||
in_Prep = ss "meN" ;
|
||||
it_Pron = personalPN "yh" "yh" "yh" "as ka" Sg Masc Pers3_Near;
|
||||
less_CAdv = {s = "km" ; p = ""} ;
|
||||
many_Det = mkDet "bht zyadh" "bht zyadh" "bht zyadh" "bht zyadh" Pl ;
|
||||
more_CAdv = {s = "zyadh-" ; p = "" } ;
|
||||
most_Predet = ss "zyadh tr" ;
|
||||
much_Det = mkDet "bht" "bht" "bht" "bht" Sg ;
|
||||
-- must_VV = {
|
||||
-- s = table {
|
||||
-- VVF VInf => ["have to"] ;
|
||||
-- VVF VPres => "must" ;
|
||||
-- VVF VPPart => ["had to"] ;
|
||||
-- VVF VPresPart => ["having to"] ;
|
||||
-- VVF VPast => ["had to"] ; --# notpresent
|
||||
-- VVPastNeg => ["hadn't to"] ; --# notpresent
|
||||
-- VVPresNeg => "mustn't"
|
||||
-- } ;
|
||||
-- isAux = True
|
||||
-- } ;
|
||||
-----b no_Phr = ss "no" ;
|
||||
no_Utt = ss "nhyN" ;
|
||||
on_Prep = ss "pr" ;
|
||||
-- one_Quant = demoPN "ayk" "ayk" "ayk" ; -- DEPRECATED
|
||||
only_Predet = ss "srf" ;
|
||||
or_Conj = sd2 [] "ya" ** {n = Sg} ;
|
||||
otherwise_PConj = ss "ya ph-r" ;
|
||||
part_Prep = ss "" ;
|
||||
please_Voc = ss "mhrbani" ;
|
||||
possess_Prep = ss "ka" ;
|
||||
quite_Adv = ss "khamosh" ;
|
||||
she_Pron = personalPN "wh" "as" "wh" "as ky" Sg Fem Pers3_Distant ;
|
||||
so_AdA = ss "so" ;
|
||||
somebody_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy" "kwy" "kwy" "kwy" "kwy" "kwy" Masc ));
|
||||
someSg_Det = mkDet "kch-" "kch-" "kch-" "kch-" Sg ;
|
||||
somePl_Det = mkDet "kch-" "kch-" "kch-" "kch-" Pl ;
|
||||
something_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy cyz" "kwy cyz" "kwy cyz" "kh- cyzyN" "kh- cyzwN" "kh- cyzw" Masc ));
|
||||
somewhere_Adv = ss "khin pr" ;
|
||||
that_Quant = demoPN "wh" "as" "an" ;
|
||||
that_Subj = ss "kh";
|
||||
there_Adv = ss "whaN" ;
|
||||
there7to_Adv = ss "whaN pr" ;
|
||||
there7from_Adv = ss ["whaN sE"] ;
|
||||
therefore_PConj = ss "as lyE" ;
|
||||
they_Pron = personalPN "wh" "wh" "wh" "an ka" Pl Masc Pers3_Distant ; ----
|
||||
this_Quant = demoPN "yh" "as" "an";
|
||||
through_Prep = ss ["myN sE"] ;
|
||||
too_AdA = ss "bht" ;
|
||||
to_Prep = ss "kw" ;
|
||||
under_Prep = ss "nycE" ;
|
||||
very_AdA = ss "bht" ;
|
||||
want_VV = mkV "cahna" ** { isAux = False} ;
|
||||
we_Pron = personalPN "hm" "hm" "hm" "hmara" Pl Masc Pers1 ;
|
||||
whatSg_IP = mkIP "kya" "kis" "kis" Sg Masc ;
|
||||
whatPl_IP = mkIP "kya" "kin" "kin" Pl Masc ;
|
||||
when_IAdv = ss "kb" ;
|
||||
when_Subj = ss "kb" ;
|
||||
where_IAdv = ss "khaN" ;
|
||||
which_IQuant = {s = \\_ => "kwn sy"} ;
|
||||
-- whichPl_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ;
|
||||
-- whichSg_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ;
|
||||
whoSg_IP = mkIP "kwn" "kis" "kis" Sg Masc ;
|
||||
whoPl_IP = mkIP "kwn" "kn" "knhwN" Pl Masc ;
|
||||
why_IAdv = ss "kywN" ;
|
||||
without_Prep = ss ["kE bGyr"] ;
|
||||
with_Prep = ss ["kE sath-"] ;
|
||||
-- yes_Phr = ss "haN" ;
|
||||
yes_Utt = ss "haN" ;
|
||||
youSg_Pron = personalPN "tm" "tm" "tm" "tmh-ara" Sg Masc Pers2_Casual ;
|
||||
youPl_Pron = personalPN "tm" "tm" "tm" "tmh-ara" Pl Masc Pers2_Casual ;
|
||||
youPol_Pron = personalPN "Ap" "AP" "AP" "Ap ka" Sg Masc Pers2_Respect ;
|
||||
no_Quant = demoPN " kwy nhyN" "kwy nhyN" "kwy nhyN" ;
|
||||
not_Predet = {s="nhyN"} ;
|
||||
if_then_Conj = sd2 "agr" "tw" ** {n = Sg} ;
|
||||
at_least_AdN = ss ["km az km"] ;
|
||||
at_most_AdN = ss ["zyadh sE zyadh"];
|
||||
nothing_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy cyz nhyN" "kwy cyz nhyN" "kwy cyz nhyN" "kwy cyz nhyN" "kwy cyz nhyN" "kwy cyz nhyN" Masc ));
|
||||
except_Prep = ss "swaE" ;
|
||||
nobody_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" Masc ));
|
||||
|
||||
as_CAdv = {s = "etna" ; p = "jtna"} ;
|
||||
|
||||
have_V2 = mkV2 (mkV "rakh-na") "" ;
|
||||
|
||||
language_title_Utt = ss "ardw" ;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user