refinements-Pnb-2011-04-30

This commit is contained in:
virk.shafqat
2011-04-30 18:11:48 +00:00
parent 72b63e34bd
commit 458675a8e8
26 changed files with 229 additions and 120 deletions

View File

@@ -195,6 +195,7 @@ langsCoding = [
(("latin", "Lat"),""), (("latin", "Lat"),""),
(("norwegian","Nor"),""), (("norwegian","Nor"),""),
(("polish", "Pol"),""), (("polish", "Pol"),""),
(("punjabi", "Pnb"),""),
(("romanian", "Ron"),""), (("romanian", "Ron"),""),
(("russian", "Rus"),""), (("russian", "Rus"),""),
(("spanish", "Spa"),""), (("spanish", "Spa"),""),

View File

@@ -7,7 +7,8 @@ concrete AdjectivePnb of Adjective = CatPnb ** open ResPnb, Prelude in {
UseComparA a = a; UseComparA a = a;
ComparA a np = { ComparA a np = {
s = \\n,g,c => np.s ! NPC Obl ++ "توں" ++ a.s ! n ! g ! c ; -- s = \\n,g,c => np.s ! NPC Obl ++ "توں" ++ a.s ! n ! g ! c ;
s = \\n,g,c => np.s ! NPC Abl ++ "توں" ++ a.s ! n ! g ! c ;
} ; } ;
---- $SuperlA$ belongs to determiner syntax in $Noun$. ---- $SuperlA$ belongs to determiner syntax in $Noun$.

View File

@@ -23,7 +23,7 @@ concrete CatPnb of Cat = CommonX - [Adv] ** open ResPnb, Prelude in {
QCl = {s : ResPnb.VPHTense => Polarity => QForm => Str} ; QCl = {s : ResPnb.VPHTense => Polarity => QForm => Str} ;
IP = {s: Case => Str ; g : Gender ; n : Number}; IP = {s: Case => Str ; g : Gender ; n : Number};
IDet = {s :Gender => Str ; n : Number} ; IDet = {s :Gender => Str ; n : Number} ;
IQuant = {s : Number => Str} ; IQuant = {s : Number => Gender => Str} ;
---- Relative ---- Relative
@@ -31,7 +31,7 @@ concrete CatPnb of Cat = CommonX - [Adv] ** open ResPnb, Prelude in {
s : ResPnb.VPHTense => Polarity => Order => Agr => Str ; s : ResPnb.VPHTense => Polarity => Order => Agr => Str ;
c : Case c : Case
} ; } ;
RP = {s: Number => Case => Str ; a:RAgr}; RP = {s: Number => Gender => Case => Str ; a:RAgr};
---- Verb ---- Verb

View File

@@ -8,8 +8,8 @@ concrete ExtraPnb of ExtraPnbAbs = CatPnb **
each_Det = mkDet "ہر كوی" "ہر كوی" "ہر كوی" "ہر كوی" Sg ; each_Det = mkDet "ہر كوی" "ہر كوی" "ہر كوی" "ہر كوی" Sg ;
have_V = mkV "راكh-نا"; have_V = mkV "راكh-نا";
---- IAdvAdv adv = {s = "كتنی" ++ adv.s} ; -- IAdvAdv adv = {s = "كتنی" ++ adv.s} ;
---- ICompAP ap = {s = "كتنے" ++ ap.s ! Sg ! Masc ! Dir ! Posit} ; -- ICompAP ap = {s = "كتنے" ++ ap.s ! Sg ! Masc ! Dir ! Posit} ;
cost_V = mkV "قیمت" ; cost_V = mkV "قیمت" ;
-- added for causitives -- added for causitives

View File

@@ -16,7 +16,8 @@ concrete IdiomPnb of Idiom = CatPnb ** open Prelude,Predef, ResPnb in {
ExistNP np = ExistNP np =
mkSClause "اوتھے" (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)) ; -- (insertObj (\\_ => np.s ! NPC Obl) (predAux auxBe)) ;
(insertObj (\\_ => np.s ! NPC Dir) (predAux auxBe)) ;
ExistIP ip = ExistIP ip =
let cl = mkSClause ("اوتھے" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe); let cl = mkSClause ("اوتھے" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe);
@@ -31,8 +32,11 @@ concrete IdiomPnb of Idiom = CatPnb ** open Prelude,Predef, ResPnb in {
ProgrVP vp = (predProg vp) ; ProgrVP vp = (predProg vp) ;
ImpPl1 vp = {s = "آو" ++ infVP True vp (agrP1 Masc Pl)} ; -- ImpPl1 vp = {s = "آو" ++ infVP True vp (agrP1 Masc Pl)} ;
ImpP3 np vp = {s = np.s!NPC Dir ++ "نوں" ++ (vp.s ! VPImp ).inf ++ "دیو"}; ImpPl1 vp = {s = "آو" ++ (vp.s ! VPImp).fin} ;
-- ImpP3 np vp = {s = np.s!NPC Dir ++ "كو" ++ (vp.s ! VPImp ).inf ++ "دو"}; here VPImp form is not correct e.g jan ko sw do, rather jan ko swnE do, and swnE is stored in vp.VPInf.fin
ImpP3 np vp = {s = np.s!NPC Dir ++ "نوں" ++ (vp.s ! VPInf ).fin ++ "دیو"};
} }

View File

@@ -80,7 +80,7 @@ concrete LexiconPnb of Lexicon = CatPnb **
floor_N = mkN02 "فرش" ; floor_N = mkN02 "فرش" ;
forget_V2 = mkV2 (mkV "بھولنا") "نوں" ; forget_V2 = mkV2 (mkV "بھولنا") "نوں" ;
-- fridge_N = mkN "فریگ" ; -- fridge_N = mkN "فریگ" ;
friend_N = mkN04 "دوست" ; friend_N = mkN07 "یار" ;
fruit_N = mkN02 "پھل" ; fruit_N = mkN02 "پھل" ;
-- fun_AV = mkAdj1V (regA "f?ن") ; -- fun_AV = mkAdj1V (regA "f?ن") ;
garden_N = mkN04 "باغ" ; garden_N = mkN04 "باغ" ;
@@ -103,7 +103,7 @@ concrete LexiconPnb of Lexicon = CatPnb **
important_A = mkAdj1 "اہم" ; important_A = mkAdj1 "اہم" ;
-- industry_N = mkN "صنعت" feminine ; -- industry_N = mkN "صنعت" feminine ;
-- iron_N = mkN "لوہا" ; -- iron_N = mkN "لوہا" ;
-- king_N = mkN "بادشاہ" ; king_N = mkN01 "بادشاہ" ;
know_V2 = mkV2 (mkV "جاننا") ; know_V2 = mkV2 (mkV "جاننا") ;
know_VS = (mkV "جاننا") ; know_VS = (mkV "جاننا") ;
know_VQ = (mkV "جاننا") ; know_VQ = (mkV "جاننا") ;
@@ -119,7 +119,7 @@ concrete LexiconPnb of Lexicon = CatPnb **
lose_V2 = mkV2 (compoundV "كھو" (mkV "دینا")) ; lose_V2 = mkV2 (compoundV "كھو" (mkV "دینا")) ;
love_N = mkN02 "محبت" ; love_N = mkN02 "محبت" ;
love_V2 = mkV2 (compoundV "پیار" do_V2) "نوں"; love_V2 = mkV2 (compoundV "پیار" do_V2) "نوں";
man_N = mkN03 "آدمی" ; -- not correct according to rules should be discussed man_N = mkN01 "بندہ" ; -- not correct according to rules should be discussed
-- married_A2 = mkAdj1 "شادy?كرنا" "سے" ; -- married_A2 = mkAdj1 "شادy?كرنا" "سے" ;
meat_N = mkN02 "گوشت" ; meat_N = mkN02 "گوشت" ;
-- milk_N = mkN "دودھ" ; -- milk_N = mkN "دودھ" ;
@@ -135,7 +135,7 @@ concrete LexiconPnb of Lexicon = CatPnb **
open_V2 = mkV2 (mkV "كھولنا") ; open_V2 = mkV2 (mkV "كھولنا") ;
paint_V2A = mkV2 (compoundV "رنگ" do_V2) ; paint_V2A = mkV2 (compoundV "رنگ" do_V2) ;
-- paper_N = mkN "كاغز" ; -- paper_N = mkN "كاغز" ;
-- paris_PN = mkPN "پیرس" ; paris_PN = mkPN "پیرس" masculine;
-- peace_N = mkN "امن" ; -- peace_N = mkN "امن" ;
pen_N = mkN04 "پنسل" ; pen_N = mkN04 "پنسل" ;
planet_N = mkN01 "سیارہ" ; planet_N = mkN01 "سیارہ" ;
@@ -148,7 +148,7 @@ concrete LexiconPnb of Lexicon = CatPnb **
-- radio_N = mkN "ریڈیو" ; -- radio_N = mkN "ریڈیو" ;
rain_V0 = compoundV "بارش" (mkV "ہونا" ) ; rain_V0 = compoundV "بارش" (mkV "ہونا" ) ;
read_V2 = mkV2 (mkV "پڑھنا"); read_V2 = mkV2 (mkV "پڑھنا");
red_A = mkAdj1 "لال" ; red_A = mkAdj3 "لال" ; -- worst case
-- religion_N = mkN "مزہب" ; -- religion_N = mkN "مزہب" ;
-- restaurant_N = mkN "ہوٹل" ; -- restaurant_N = mkN "ہوٹل" ;
-- river_N = mkN "دریا" masculine ; -- river_N = mkN "دریا" masculine ;
@@ -211,14 +211,14 @@ concrete LexiconPnb of Lexicon = CatPnb **
-- window_N = mkN "كھڑكی" ; -- window_N = mkN "كھڑكی" ;
wine_N = mkN04 "شراب"; wine_N = mkN04 "شراب";
win_V2 = mkV2 (mkV "جیتنا") ; win_V2 = mkV2 (mkV "جیتنا") ;
woman_N = mkN04 "عورت" ; woman_N = mkN04 "زنانی" ;
wonder_VQ = compoundV "حعران" (mkV "ہونا") ; wonder_VQ = compoundV "حیران" (mkV "ہونا") ;
wood_N = mkN04 "لكڑی" ; wood_N = mkN04 "لكڑی" ;
write_V2 = mkV2 (mkV "لكھنا") ; write_V2 = mkV2 (mkV "لكھنا") ;
yellow_A = mkAdj1 "كھٹا" ; yellow_A = mkAdj1 "كھٹا" ;
young_A = mkAdj1 "جوان" ; young_A = mkAdj1 "جوان" ;
do_V2 = mkV2 (mkV "كرنا") ; do_V2 = mkV2 (mkV "كرنا") ;
-- now_Adv = mkAdj1dv "اب" ; now_Adv = mkAdv "ہون" ;
-- already_Adv = mkAdj1dv "پہلE?ہی" ; -- already_Adv = mkAdj1dv "پہلE?ہی" ;
song_N = mkN01 "گانا" ; song_N = mkN01 "گانا" ;
add_V3 = mkV3 (compoundV "وادھا" do_V2) "" "" ; add_V3 = mkV3 (compoundV "وادھا" do_V2) "" "" ;
@@ -360,11 +360,11 @@ concrete LexiconPnb of Lexicon = CatPnb **
-- rule_N = mkN "اصول" ; -- rule_N = mkN "اصول" ;
---- added 4/6/2007 ---- added 4/6/2007
john_PN = mkPN "جان" ; john_PN = mkPN "جان" masculine ;
-- question_N = mkN "سوال" ; -- question_N = mkN "سوال" ;
-- ready_A = regA "رعادی" ; -- ready_A = regA "رعادی" ;
-- reason_N = mkN "وجہ" feminine ; -- reason_N = mkN "وجہ" feminine ;
-- today_Adv = mkAdj1dv "اج" ; today_Adv = mkAdv "اج" ;
-- uncertain_A = mkAdj1 ["غیr?یقینی"] ; -- uncertain_A = mkAdj1 ["غیr?یقینی"] ;

View File

@@ -110,6 +110,11 @@ oper
mkN11 x = mkN x x x x mkN11 x = mkN x x x x
x x x "" x x x ""
Fem ; Fem ;
-- 12 Masc no inflection
mkN12 : Str -> Noun ;
mkN12 x = mkN x x x x
x x x ""
Masc ;
----2 Determiners ----2 Determiners
@@ -135,7 +140,20 @@ oper
Fem => s2 Fem => s2
}; };
n = n n = n
}; };
makeIQuant : Str -> Str -> Str -> Str -> {s:Number => Gender => Str} = \s1,s2,s3,s4 -> {
s = table {
Sg => table {
Masc => s1 ;
Fem => s2
} ;
Pl => table {
Masc => s3 ;
Fem => s4
}
}
};
-- Proposition -- Proposition

View File

@@ -19,7 +19,7 @@ concrete NounPnb of Noun = CatPnb ** open ResPnb, Prelude in {
} ; } ;
PPartNP np v2 = { PPartNP np v2 = {
s = \\c => v2.s ! VF Imperf Pers1 Sg Fem ++ np.s ! c ; s = \\c => v2.s ! VF Perf (fromAgr np.a).p (fromAgr np.a).n (fromAgr np.a).g ++ np.s ! c ;
a = np.a ; a = np.a ;
isPron = np.isPron isPron = np.isPron
} ; } ;

View File

@@ -42,13 +42,13 @@ oper mkNum : Str -> Str -> DSize -> LinDigit =
{s = table {unit => do ; ten => bis } ; {s = table {unit => do ; ten => bis } ;
size = sz ; n = Pl} ; size = sz ; n = Pl} ;
lin n2 = mkNum "دو" "vی" r2 ; lin n2 = mkNum "دو" "وی" r2 ;
lin n3 = mkNum "تن" "تری" r3 ; lin n3 = mkNum "تن" "تری" r3 ;
lin n4 = mkNum "چار" "چالی" r4 ; lin n4 = mkNum "چار" "چالی" r4 ;
lin n5 = mkNum "پنج" "پنجاہ" r5 ; lin n5 = mkNum "پنج" "پنجاہ" r5 ;
lin n6 = mkNum "چh-" "سٹh-" r6 ; lin n6 = mkNum "چھ" "سٹھ" r6 ;
lin n7 = mkNum "ست" "ستر" r7; lin n7 = mkNum "ست" "ستر" r7;
lin n8 = mkNum "اٹh-" "اسی" r8; lin n8 = mkNum "اٹھ" "اسی" r8;
lin n9 = mkNum "نو" "نبے" r9 ; 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 { oper mkR : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> DSize => Str = \a1 -> \a2 -> \a3 -> \a4 -> \a5 -> \a6 -> \a7 -> \a8 -> \a9 -> table {
@@ -69,7 +69,7 @@ oper rows : DSize => DSize => Str = table {
r3 => mkR "تیر" "تی" "تیت" "تنت" "ترت" "ترو" "تیہ" "تیر" "تر" ; r3 => mkR "تیر" "تی" "تیت" "تنت" "ترت" "ترو" "تیہ" "تیر" "تر" ;
r4 => mkR "چود" "چوب" "چوت" "چوا" "چوت" "چور" "چوہ" "چور" "چور" ; r4 => mkR "چود" "چوب" "چوت" "چوا" "چوت" "چور" "چوہ" "چور" "چور" ;
r5 => mkR "پندر" "پنج" "پینت" "پنتا" "پچو" "پین" "پنج" "پنج" "پچ" ; r5 => mkR "پندر" "پنج" "پینت" "پنتا" "پچو" "پین" "پنج" "پنج" "پچ" ;
r6 => mkR "سول" "چھب" "چھت" "چh-ی" "چھو" "چھیا" "چھہ" "چھی" "چھی" ; r6 => mkR "سول" "چھب" "چھت" "چھی" "چھو" "چھیا" "چھہ" "چھی" "چھی" ;
r7 => mkR "ستار" "ستا" "سینت" "سنت" "سنت" "ستو" "ست" "ست" "ست" ; r7 => mkR "ستار" "ستا" "سینت" "سنت" "سنت" "ستو" "ست" "ست" "ست" ;
r8 => mkR "اٹھار" "اٹھا" "اٹھت" "اڑت" "اٹھو" "اٹھا" "اٹھ" "اٹھ" "اٹھ" ; r8 => mkR "اٹھار" "اٹھا" "اٹھت" "اڑت" "اٹھو" "اٹھا" "اٹھ" "اٹھ" "اٹھ" ;
r9 => table {sg => "انی" ; r2 => "انتی" ; r3 => "انتالی" ; r9 => table {sg => "انی" ; r2 => "انتی" ; r3 => "انتالی" ;

View File

@@ -37,9 +37,13 @@ oper
= \s,noun -> {s =\\n,c => s ++ noun.s ! n ! c ; g = noun.g ; lock_N = <>}; = \s,noun -> {s =\\n,c => s ++ noun.s ! n ! c ; g = noun.g ; lock_N = <>};
-- Proper names -- Proper names
mkPN = overload {
mkPN : Str -> PN = mkPN : Str -> PN =
\s -> let n = mkN11 s in {s = n.s ! Sg ; g = n.g ; lock_PN = <>} ; \s -> let n = mkN11 s in {s = n.s ! Sg ; g = n.g ; lock_PN = <>} ;
mkPN : Str -> Gender -> PN =
\s,g -> let n = mkN11 s in {s = n.s ! Sg ; g = g ; lock_PN = <>} ;
};
-- Personal Pronouns -- Personal Pronouns
personalPN : Str -> Str -> Str -> Str -> Str -> Number -> Gender -> PPerson -> Pron = personalPN : Str -> Str -> Str -> Str -> Str -> Number -> Gender -> PPerson -> Pron =
\s1,s2,s3,s4,sp,nn,g,p -> let n = mkPron s1 s2 s3 s4 in {s = n.s ; a = toAgr nn p g ; ps = sp ; lock_Pron = <>}; \s1,s2,s3,s4,sp,nn,g,p -> let n = mkPron s1 s2 s3 s4 in {s = n.s ; a = toAgr nn p g ; ps = sp ; lock_Pron = <>};
@@ -102,12 +106,14 @@ oper
--3 Determiners and quantifiers --3 Determiners and quantifiers
-- mkQuant : overload { -- mkQuant : overload {
mkQuant : Pron -> Quant ; mkQuant1 : Pron -> Quant ;
-- mkQuant : (no_sg, no_pl, none_sg, non_pl : Str) -> Quant ; -- mkQuant : (no_sg, no_pl, none_sg, non_pl : Str) -> Quant ;
-- } ; -- } ;
mkIQuant : Str -> Str -> Str -> Str -> IQuant ;
mkIQuant s1 s2 s3 s4 = let n = makeIQuant s1 s2 s3 s4 in {s = n.s; lock_IQuant = <>} ;
-- mkQuant = overload { -- mkQuant = overload {
mkQuant : Pron -> Quant = \p -> {s = \\_,_,c => p.s!c ;a = p.a ; lock_Quant = <>}; mkQuant1 : Pron -> Quant = \p -> {s = \\_,_,c => p.s!c ;a = p.a ; lock_Quant = <>};
-- mkQuant : (no_sg, no_pl, none_sg, non_pl : Str) -> Quant = mkQuantifier; -- mkQuant : (no_sg, no_pl, none_sg, non_pl : Str) -> Quant = mkQuantifier;
-- } ; -- } ;

View File

@@ -22,6 +22,6 @@ concrete PhrasePnb of Phrase = CatPnb ** open Prelude, ResPnb in {
PConjConj conj = {s = conj.s2} ; --- PConjConj conj = {s = conj.s2} ; ---
NoVoc = {s = []} ; NoVoc = {s = []} ;
VocNP np = {s = np.s ! NPC Dir} ; VocNP np = {s = np.s ! NPC Voc} ;
} }

View File

@@ -16,7 +16,7 @@ concrete QuestionPnb of Question = CatPnb ** open ResPnb, Prelude in {
qp1 = qp.s ! Dir; qp1 = qp.s ! Dir;
qp2 = qp.s ! Obl ++ "نے" qp2 = qp.s ! Obl ++ "نے"
in { s = \\t,p,o => case t of { in { s = \\t,p,o => case t of {
VPImpPast => qp2 ++ cl.s ! t ! p ! ODir; VPImpPast => case vp.subj of {VIntrans => qp1 ++ cl.s ! t ! p ! ODir; _ => qp2 ++ cl.s ! t ! p ! ODir};
_ => qp1 ++ cl.s ! t ! p ! ODir _ => qp1 ++ cl.s ! t ! p ! ODir
} }
}; };
@@ -64,7 +64,7 @@ concrete QuestionPnb of Question = CatPnb ** open ResPnb, Prelude in {
} ; } ;
IdetQuant iqant num = { IdetQuant iqant num = {
s = \\g => iqant.s ! num.n ++ num.s ; s = \\g => iqant.s ! num.n ! g ++ num.s ;
n = num.n n = num.n
} ; } ;

View File

@@ -6,10 +6,13 @@ concrete RelativePnb of Relative = CatPnb ** open ResPnb in {
lin lin
RelCl cl = { RelCl cl = {
s = \\t,p,o,agr => case <t,giveNumber agr> of { s = \\t,p,o,agr => case <t,giveNumber agr,giveGender agr> of {
<VPImpPast,Sg> => "جس" ++ cl.s ! t ! p ! o ; <VPImpPast,Sg,_> => "جنے" ++ cl.s ! t ! p ! o ;
<VPImpPast,Pl> => "جن" ++ cl.s ! t ! p ! o ; <VPImpPast,Pl,_> => "جناں" ++ cl.s ! t ! p ! o ;
<_,_> => "جو" ++ cl.s ! t ! p ! o <_,Sg,Masc> => "جعڑا" ++ cl.s ! t ! p ! o ;
<_,Sg,Fem> => "جعڑی" ++ cl.s ! t ! p ! o ;
<_,Pl,Masc> => "جعڑے" ++ cl.s ! t ! p ! o ;
<_,Pl,Fem> => "جعڑیاں" ++ cl.s ! t ! p ! o
}; };
c = Dir c = Dir
} ; } ;
@@ -22,7 +25,7 @@ concrete RelativePnb of Relative = CatPnb ** open ResPnb in {
RNoAg => ag ; RNoAg => ag ;
RAg a => a RAg a => a
} ; } ;
cl = mkSClause (rp.s ! (giveNumber agr) ! Dir) agr vp; cl = mkSClause (rp.s ! (giveNumber agr) ! (giveGender agr) ! Dir) agr vp;
-- cl = case t of { -- cl = case t of {
-- VPImpPast => mkSClause (rp.s ! (giveNumber agr) ! Obl) agr vp; -- VPImpPast => mkSClause (rp.s ! (giveNumber agr) ! Obl) agr vp;
@@ -39,7 +42,7 @@ concrete RelativePnb of Relative = CatPnb ** open ResPnb in {
---- "وع ارع لooكiنگ ات"). ---- "وع ارع لooكiنگ ات").
-- --
RelSlash rp slash = { RelSlash rp slash = {
s = \\t,p,o,agr => rp.s ! (giveNumber agr) ! Dir ++ slash.c2.s ++ slash.s ! t ! p ! o ;--case t of { s = \\t,p,o,agr => rp.s ! (giveNumber agr) ! (giveGender agr) ! Obl ++ slash.c2.s ++ slash.s ! t ! p ! o ;--case t of {
-- VPImpPast => rp.s ! (giveNumber agr) Obl ++ slash.c2.s ++ slash.s ! t ! p ! o ; -- VPImpPast => rp.s ! (giveNumber agr) Obl ++ slash.c2.s ++ slash.s ! t ! p ! o ;
-- _ => rp.s ! (giveNumber agr) Dir ++ slash.c2.s ++ slash.s ! t ! p ! o -- _ => rp.s ! (giveNumber agr) Dir ++ slash.c2.s ++ slash.s ! t ! p ! o
-- }; -- };
@@ -47,25 +50,42 @@ concrete RelativePnb of Relative = CatPnb ** open ResPnb in {
} ; } ;
FunRP p np rp = { FunRP p np rp = {
s = \\n,c => rp.s ! n ! c ++ np.s ! NPC c ++ p.s ; s = \\n,g,c => rp.s ! n ! g ! c ++ np.s ! NPC c ++ p.s ;
a = RAg np.a a = RAg np.a
} ; } ;
IdRP = { IdRP = {
s = table { s = table {
Sg => table { Sg => table {
Masc => table {
ResPnb.Dir => "جعڑا" ; ResPnb.Dir => "جیڑا" ;
ResPnb.Obl => "جعڑے" ; ResPnb.Obl => "جن" ;
ResPnb.Voc => "جعڑے" ; ResPnb.Voc => "جیڑے" ;
ResPnb.Abl => "جعڑے" ResPnb.Abl => "جیڑے"
}; };
Pl => table { Fem => table {
ResPnb.Dir => "جعڑے" ;
ResPnb.Obl => "جعڑے" ; ResPnb.Dir => "جیڑی" ;
ResPnb.Voc => "جعڑے" ; ResPnb.Obl => "جن" ;
ResPnb.Abl => "جعڑے" ResPnb.Voc => "جیڑی" ;
ResPnb.Abl => "جیڑی"
}
};
Pl => table {
Masc => table {
ResPnb.Dir => "جیڑے" ;
ResPnb.Obl => "جیڑے" ;
ResPnb.Voc => "جیڑے" ;
ResPnb.Abl => "جیڑے"
};
Fem => table {
ResPnb.Dir => "جیڑی" ;
ResPnb.Obl => "جیڑی" ;
ResPnb.Voc => "جیڑی" ;
ResPnb.Abl => "جیڑی"
} }
}
}; };
a = RNoAg a = RNoAg
} ; } ;

View File

@@ -83,6 +83,9 @@ resource ResPnb = ParamX ** open Prelude,Predef in {
-- mkAdj2 : Str -> Adjective2 ; -- mkAdj2 : Str -> Adjective2 ;
-- mkAdj2 romii = cmnAdj romii romii (romii+"ا") (romii+"یوں") -- mkAdj2 romii = cmnAdj romii romii (romii+"ا") (romii+"یوں")
-- romii (romii++"اں") (romii++"و") "" ; -- romii (romii++"اں") (romii++"و") "" ;
mkAdj3 : Str -> Adjective1 ;
mkAdj3 lal = adj1 lal lal lal lal lal lal lal lal lal lal lal lal lal lal lal lal ;
cmnAdj : (x1,_,_,_,_,_,_,x8 : Str) -> {s : Gender => Case => Str} = cmnAdj : (x1,_,_,_,_,_,_,x8 : Str) -> {s : Gender => Case => Str} =
\sd,so,sv,sa, pd,po,pv,pa -> { \sd,so,sv,sa, pd,po,pv,pa -> {
@@ -304,6 +307,8 @@ oper
VPTense VPFutr (Ag g n p) => {fin = copula CFuture n p g ; inf = verb.s ! VF Subj p n g } ; VPTense VPFutr (Ag g n p) => {fin = copula CFuture n p g ; inf = verb.s ! VF Subj p n g } ;
VPTense VPPerf (Ag g n p) => { fin = [] ; inf = verb.s ! Root ++ cka g n } ; VPTense VPPerf (Ag g n p) => { fin = [] ; inf = verb.s ! Root ++ cka g n } ;
VPStem => {fin = [] ; inf = verb.s ! Root}; VPStem => {fin = [] ; inf = verb.s ! Root};
VPInf => {fin = verb.s!Inf_Obl ; inf = verb.s ! Root};
VPImp => {fin = verb.s!VF Subj Pers3_Near Pl Masc ; inf = verb.s ! Root};
_ => {fin = [] ; inf = verb.s ! Root} _ => {fin = [] ; inf = verb.s ! Root}
}; };
obj = {s = [] ; a = defaultAgr} ; obj = {s = [] ; a = defaultAgr} ;
@@ -329,7 +334,7 @@ oper
(mkAdj1 "پیا").s ! n ! g ! Dir ; (mkAdj1 "پیا").s ! n ! g ! Dir ;
cka : Gender -> Number -> Str = \g,n -> cka : Gender -> Number -> Str = \g,n ->
(mkAdj1 "چكا").s ! n ! g ! Dir ; (mkAdj1 "گیا").s ! n ! g ! Dir ;
hw : PPerson -> Number -> Str = \pp,n -> hw : PPerson -> Number -> Str = \pp,n ->
case <pp,n> of { case <pp,n> of {

View File

@@ -17,7 +17,7 @@ concrete StructuralPnb of Structural = CatPnb **
behind_Prep = ss "پیچھے" ; behind_Prep = ss "پیچھے" ;
between_Prep = ss "وچكار" ; between_Prep = ss "وچكار" ;
both7and_DConj = sd2 "دوویں" "تے" ** {n = Pl} ; both7and_DConj = sd2 "دوویں" "تے" ** {n = Pl} ;
but_PConj = ss "لیكن" ; but_PConj = ss "مگر" ;
by8agent_Prep = ss "" ; by8agent_Prep = ss "" ;
by8means_Prep = ss "" ; by8means_Prep = ss "" ;
can8know_VV,can_VV = mkV "سكنا" ** { isAux = True} ; can8know_VV,can_VV = mkV "سكنا" ** { isAux = True} ;
@@ -31,7 +31,7 @@ concrete StructuralPnb of Structural = CatPnb **
first_Ord = {s = "پعہلا" ; n = Sg} ; --DEPRECATED first_Ord = {s = "پعہلا" ; n = Sg} ; --DEPRECATED
for_Prep = ss "[دے واسطE]" ; for_Prep = ss "[دے واسطE]" ;
from_Prep = ss "توں" ; from_Prep = ss "توں" ;
he_Pron = personalPN "او" "اینوں" "او" "" "اورا" Sg Masc Pers3_Distant ; he_Pron = personalPN "او" "اونوں" "او" "اورے" "اورا" Sg Masc Pers3_Distant ;
here_Adv = mkAdv "ایتھے" ; here_Adv = mkAdv "ایتھے" ;
here7to_Adv = mkAdv "ایتھے" ; here7to_Adv = mkAdv "ایتھے" ;
here7from_Adv = mkAdv "ایتھوں" ; here7from_Adv = mkAdv "ایتھوں" ;
@@ -64,53 +64,54 @@ concrete StructuralPnb of Structural = CatPnb **
no_Utt = ss "نیں" ; no_Utt = ss "نیں" ;
on_Prep = ss "اتے" ; on_Prep = ss "اتے" ;
one_Quant = demoPN "اك" "اك" "اك" ; -- DEPRECATED one_Quant = demoPN "اك" "اك" "اك" ; -- DEPRECATED
only_Predet = ss "سرف" ; only_Predet = ss "صرف" ;
or_Conj = sd2 [] "یا" ** {n = Sg} ; or_Conj = sd2 [] "یا" ** {n = Sg} ;
otherwise_PConj = ss "یا فیر" ; otherwise_PConj = ss "یا فیر" ;
part_Prep = ss "ہصہ" ; part_Prep = ss "ہصہ" ;
please_Voc = ss "مہربانi" ; please_Voc = ss "مہربانi" ;
possess_Prep = ss "دا" ; possess_Prep = ss "دا" ;
quite_Adv = ss "كہامoسہ" ; quite_Adv = ss "كہامoسہ" ;
she_Pron = personalPN "او" "اونوں" "اونو" "" "اورا" Sg Fem Pers3_Distant ; she_Pron = personalPN "او" "اونوں" "اونو" "اورے" "اورا" Sg Fem Pers3_Distant ;
so_AdA = ss "سo" ; so_AdA = ss "سo" ;
somebody_NP = MassNP (UseN (MorphoPnb.mkN11 "كوی" )); somebody_NP = MassNP (UseN (MorphoPnb.mkN11 "كوی" ));
someSg_Det = mkDet "كچھ" "كچھ" "كچھ" "كچھ" Sg ; someSg_Det = mkDet "كچھ" "كچھ" "كچھ" "كچھ" Sg ;
somePl_Det = mkDet "كچھ" "كچھ" "كچھ" "كچھ" Pl ; somePl_Det = mkDet "كچھ" "كچھ" "كچھ" "كچھ" Pl ;
something_NP = MassNP (UseN (MorphoPnb.mkN11 "كوی شے")); something_NP = MassNP (UseN (MorphoPnb.mkN11 "كوی شے"));
somewhere_Adv = mkAdv "كتلے" ; somewhere_Adv = mkAdv "كتلے" ;
that_Quant = demoPN "وہ" "اس" "ان" ; that_Quant = demoPN "او" "اس" "ان" ;
that_Subj = ss "كہ"; that_Subj = ss "كہ";
there_Adv = mkAdv "اوتھے" ; there_Adv = mkAdv "اوتھے" ;
there7to_Adv = mkAdv "اوتھے" ; there7to_Adv = mkAdv "اوتھے" ;
there7from_Adv = mkAdv "اوتھوں" ; there7from_Adv = mkAdv "اوتھوں" ;
therefore_PConj = ss "اس لی" ; therefore_PConj = ss "اس لی" ;
they_Pron = personalPN "او" "[اوناں نوN]" "او" "" "اوناں دا" Pl Masc Pers3_Distant ; ---- they_Pron = personalPN "او" "[اوناں نوN]" "او" "اوناں" "اوناں دا" Pl Masc Pers3_Distant ; ----
this_Quant = demoPN "یہ" "اس" "ان"; this_Quant = demoPN "اے" "ایرا" "ایناں";
through_Prep = ss "وچوں" ; through_Prep = ss "وچوں" ;
too_AdA = ss "بہت" ; too_AdA = ss "بہت" ;
to_Prep = ss "اونوں" ** {lock_Prep = <>}; -- to_Prep = ss "اونوں" ** {lock_Prep = <>};
to_Prep = ss "نوں" ** {lock_Prep = <>};
under_Prep = ss "تھلے" ** {lock_Prep = <>}; under_Prep = ss "تھلے" ** {lock_Prep = <>};
very_AdA = ss "بہت" ; very_AdA = ss "بہت" ;
want_VV = mkV "چانا" ** { isAux = False} ; want_VV = mkV "چانا" ** { isAux = False} ;
we_Pron = personalPN "اسی" "سانوں" "سانوں" "ساتوں" "ساڈا" Pl Masc Pers1 ; we_Pron = personalPN "اسی" "سانوں" "سانوں" "ساتوں" "ساڈا" Pl Masc Pers1 ;
-- whatSg_IP = mkIP "كیا" "ك" "ك" Sg Masc ; whatSg_IP = mkIP "كیا" "كرا" "كرا" "كرا" Sg Masc ; -- check it
-- whatPl_IP = mkIP "كیا" "كiن" "كiن" Pl Masc ; -- whatPl_IP = mkIP "كیا" "كiن" "كiن" Pl Masc ;
when_IAdv = ss "كدوں" ; when_IAdv = ss "كدوں" ;
when_Subj = ss "كدوں" ; when_Subj = ss "كدوں" ;
where_IAdv = ss "كتھے" ; where_IAdv = ss "كتھے" ;
which_IQuant = {s = \\_ => "كیڑی"} ; which_IQuant = mkIQuant "كیڑا" "كیڑی" "كیڑے" "كیڑی" ;
-- whichPl_IDet = makeDet "كون سا" "كون سی" "كون سے" "كون سی" ; -- whichPl_IDet = makeDet "كون سا" "كون سی" "كون سے" "كون سی" ;
-- whichSg_IDet = makeDet "كون سا" "كون سی" "كون سے" "كون سی" ; -- whichSg_IDet = makeDet "كون سا" "كون سی" "كون سے" "كون سی" ;
-- whoSg_IP = mkIP "كون" "ك" "ك" Sg Masc ; whoSg_IP = mkIP "كون" "كرا" "كرا" "كرا" Sg Masc ;
-- whoPl_IP = mkIP "كون" "كن" "كنہوں" Pl Masc ; -- whoPl_IP = mkIP "كون" "كن" "كنہوں" Pl Masc ;
why_IAdv = ss "كیوں" ; why_IAdv = ss "كیوں" ;
without_Prep = ss ["توں بغیر"] ; without_Prep = ss ["توں بغیر"] ;
with_Prep = ss ["دے نال"] ; with_Prep = ss ["دے نال"] ;
-- yes_Phr = ss "ہاں" ; -- yes_Phr = ss "ہاں" ;
yes_Utt = ss "ہاں" ; yes_Utt = ss "ہاں" ;
youSg_Pron = personalPN "توں" "تینوں" "تینوں" "تیتوں" "توواڈا" Sg Masc Pers2_Casual ; youSg_Pron = personalPN "توں" "تینوں" "تینوں" "تیرے" "توواڈا" Sg Masc Pers2_Casual ;
youPl_Pron = personalPN "تسی" "توانوں" "توانوں" "تواتوں" "توواڈا" Pl Masc Pers2_Casual ; youPl_Pron = personalPN "تسی" "توانوں" "توانوں" "تواڈے" "توواڈا" Pl Masc Pers2_Casual ;
youPol_Pron = personalPN "تسی" "توانوں" "توانوں" "تواتوں" "توواڈا" Sg Masc Pers2_Respect ; youPol_Pron = personalPN "تسی" "توانوں" "توانوں" "تواڈے" "توواڈا" Sg Masc Pers2_Respect ;
no_Quant = demoPN " كوی نہیں" "كوی نہیں" "كوی نہیں" ; no_Quant = demoPN " كوی نہیں" "كوی نہیں" "كوی نہیں" ;
not_Predet = {s="نہیں"} ; not_Predet = {s="نہیں"} ;
if_then_Conj = sd2 "اگر" "تے" ** {n = Sg} ; if_then_Conj = sd2 "اگر" "تے" ** {n = Sg} ;

View File

@@ -3,7 +3,7 @@
concrete SymbolPnb of Symbol = CatPnb ** open Prelude, ResPnb in { concrete SymbolPnb of Symbol = CatPnb ** open Prelude, ResPnb in {
flags coding = utf8; flags coding = utf8;
{-
lin lin
-- SymbPN i = {s = \\_ => i.s ; g = Masc} ; -- SymbPN i = {s = \\_ => i.s ; g = Masc} ;
SymbPN i = {s = addGenitiveS i.s ; g = Masc} ; SymbPN i = {s = addGenitiveS i.s ; g = Masc} ;
@@ -12,15 +12,18 @@ concrete SymbolPnb of Symbol = CatPnb ** open Prelude, ResPnb in {
NumPN i = {s = \\_ =>i.s ; g = Masc} ; NumPN i = {s = \\_ =>i.s ; g = Masc} ;
CNIntNP cn i = { CNIntNP cn i = {
s = \\c => cn.s ! Sg ! Dir ++ i.s ; s = \\c => cn.s ! Sg ! Dir ++ i.s ;
a = agrP3 cn.g Sg a = agrP3 cn.g Sg;
isPron = False
} ; } ;
CNSymbNP det cn xs = { CNSymbNP det cn xs = {
s = \\c => det.s!Sg!Masc ++ cn.s ! det.n ! Dir ++ xs.s ; s = \\c => det.s!Sg!Masc ++ cn.s ! det.n ! Dir ++ xs.s ;
a = agrP3 cn.g det.n a = agrP3 cn.g det.n;
isPron = False
} ; } ;
CNNumNP cn i = { CNNumNP cn i = {
s = \\c => cn.s ! Sg ! Dir ++ i.s ; s = \\c => cn.s ! Sg ! Dir ++ i.s ;
a = agrP3 cn.g Sg a = agrP3 cn.g Sg;
isPron = False
} ; } ;
SymbS sy = sy ; SymbS sy = sy ;
@@ -42,6 +45,6 @@ oper
-- not mauch we can do about that. -- not mauch we can do about that.
addGenitiveS : Str -> Case => Str = \s -> addGenitiveS : Str -> Case => Str = \s ->
table {_ => s ++ "دا" } ; table {_ => s ++ "دا" } ;
-}
} }

View File

@@ -7,7 +7,8 @@ concrete AdjectivePnb of Adjective = CatPnb ** open ResPnb, Prelude in {
UseComparA a = a; UseComparA a = a;
ComparA a np = { ComparA a np = {
s = \\n,g,c => np.s ! NPC Obl ++ "twN" ++ a.s ! n ! g ! c ; -- s = \\n,g,c => np.s ! NPC Obl ++ "twN" ++ a.s ! n ! g ! c ;
s = \\n,g,c => np.s ! NPC Abl ++ "twN" ++ a.s ! n ! g ! c ;
} ; } ;
---- $SuperlA$ belongs to determiner syntax in $Noun$. ---- $SuperlA$ belongs to determiner syntax in $Noun$.

View File

@@ -16,7 +16,8 @@ concrete IdiomPnb of Idiom = CatPnb ** open Prelude,Predef, ResPnb in {
ExistNP np = ExistNP np =
mkSClause "awth'E" (agrP3 (fromAgr np.a).g (fromAgr np.a).n) mkSClause "awth'E" (agrP3 (fromAgr np.a).g (fromAgr np.a).n)
(insertObj (\\_ => np.s ! NPC Obl) (predAux auxBe)) ; -- (insertObj (\\_ => np.s ! NPC Obl) (predAux auxBe)) ;
(insertObj (\\_ => np.s ! NPC Dir) (predAux auxBe)) ;
ExistIP ip = ExistIP ip =
let cl = mkSClause ("awth'E" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe); let cl = mkSClause ("awth'E" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe);
@@ -31,8 +32,11 @@ concrete IdiomPnb of Idiom = CatPnb ** open Prelude,Predef, ResPnb in {
ProgrVP vp = (predProg vp) ; ProgrVP vp = (predProg vp) ;
ImpPl1 vp = {s = "Aw" ++ infVP True vp (agrP1 Masc Pl)} ; -- ImpPl1 vp = {s = "Aw" ++ infVP True vp (agrP1 Masc Pl)} ;
ImpP3 np vp = {s = np.s!NPC Dir ++ "nwN" ++ (vp.s ! VPImp ).inf ++ "dyw"}; ImpPl1 vp = {s = "Aw" ++ (vp.s ! VPImp).fin} ;
-- ImpP3 np vp = {s = np.s!NPC Dir ++ "kw" ++ (vp.s ! VPImp ).inf ++ "dw"}; here VPImp form is not correct e.g jan ko sw do, rather jan ko swnE do, and swnE is stored in vp.VPInf.fin
ImpP3 np vp = {s = np.s!NPC Dir ++ "nwN" ++ (vp.s ! VPInf ).fin ++ "dyw"};
} }

View File

@@ -80,7 +80,7 @@ concrete LexiconPnb of Lexicon = CatPnb **
floor_N = mkN02 "frX" ; floor_N = mkN02 "frX" ;
forget_V2 = mkV2 (mkV "bh'wlna") "nwN" ; forget_V2 = mkV2 (mkV "bh'wlna") "nwN" ;
-- fridge_N = mkN "fryg" ; -- fridge_N = mkN "fryg" ;
friend_N = mkN04 "dwst" ; friend_N = mkN07 "yar" ;
fruit_N = mkN02 "ph'l" ; fruit_N = mkN02 "ph'l" ;
-- fun_AV = mkAdj1V (regA "f?n") ; -- fun_AV = mkAdj1V (regA "f?n") ;
garden_N = mkN04 "baG" ; garden_N = mkN04 "baG" ;
@@ -103,7 +103,7 @@ concrete LexiconPnb of Lexicon = CatPnb **
important_A = mkAdj1 "ahm" ; important_A = mkAdj1 "ahm" ;
-- industry_N = mkN "Snet" feminine ; -- industry_N = mkN "Snet" feminine ;
-- iron_N = mkN "lwha" ; -- iron_N = mkN "lwha" ;
-- king_N = mkN "badXah" ; king_N = mkN01 "badXah" ;
know_V2 = mkV2 (mkV "janna") ; know_V2 = mkV2 (mkV "janna") ;
know_VS = (mkV "janna") ; know_VS = (mkV "janna") ;
know_VQ = (mkV "janna") ; know_VQ = (mkV "janna") ;
@@ -119,7 +119,7 @@ concrete LexiconPnb of Lexicon = CatPnb **
lose_V2 = mkV2 (compoundV "kh'w" (mkV "dyna")) ; lose_V2 = mkV2 (compoundV "kh'w" (mkV "dyna")) ;
love_N = mkN02 "mHbt" ; love_N = mkN02 "mHbt" ;
love_V2 = mkV2 (compoundV "pyar" do_V2) "nwN"; love_V2 = mkV2 (compoundV "pyar" do_V2) "nwN";
man_N = mkN03 "Admy" ; -- not correct according to rules should be discussed man_N = mkN01 "bndh" ; -- not correct according to rules should be discussed
-- married_A2 = mkAdj1 "Xady?krna" "sE" ; -- married_A2 = mkAdj1 "Xady?krna" "sE" ;
meat_N = mkN02 "gwXt" ; meat_N = mkN02 "gwXt" ;
-- milk_N = mkN "dwdh'" ; -- milk_N = mkN "dwdh'" ;
@@ -135,7 +135,7 @@ concrete LexiconPnb of Lexicon = CatPnb **
open_V2 = mkV2 (mkV "kh'wlna") ; open_V2 = mkV2 (mkV "kh'wlna") ;
paint_V2A = mkV2 (compoundV "rng" do_V2) ; paint_V2A = mkV2 (compoundV "rng" do_V2) ;
-- paper_N = mkN "kaGz" ; -- paper_N = mkN "kaGz" ;
-- paris_PN = mkPN "pyrs" ; paris_PN = mkPN "pyrs" masculine;
-- peace_N = mkN "amn" ; -- peace_N = mkN "amn" ;
pen_N = mkN04 "pnsl" ; pen_N = mkN04 "pnsl" ;
planet_N = mkN01 "syarh" ; planet_N = mkN01 "syarh" ;
@@ -148,7 +148,7 @@ concrete LexiconPnb of Lexicon = CatPnb **
-- radio_N = mkN "ryDyw" ; -- radio_N = mkN "ryDyw" ;
rain_V0 = compoundV "barX" (mkV "hwna" ) ; rain_V0 = compoundV "barX" (mkV "hwna" ) ;
read_V2 = mkV2 (mkV "pRh'na"); read_V2 = mkV2 (mkV "pRh'na");
red_A = mkAdj1 "lal" ; red_A = mkAdj3 "lal" ; -- worst case
-- religion_N = mkN "mzhb" ; -- religion_N = mkN "mzhb" ;
-- restaurant_N = mkN "hwTl" ; -- restaurant_N = mkN "hwTl" ;
-- river_N = mkN "drya" masculine ; -- river_N = mkN "drya" masculine ;
@@ -211,14 +211,14 @@ concrete LexiconPnb of Lexicon = CatPnb **
-- window_N = mkN "kh'Rky" ; -- window_N = mkN "kh'Rky" ;
wine_N = mkN04 "Xrab"; wine_N = mkN04 "Xrab";
win_V2 = mkV2 (mkV "jytna") ; win_V2 = mkV2 (mkV "jytna") ;
woman_N = mkN04 "ewrt" ; woman_N = mkN04 "znany" ;
wonder_VQ = compoundV "Heran" (mkV "hwna") ; wonder_VQ = compoundV "Hyran" (mkV "hwna") ;
wood_N = mkN04 "lkRy" ; wood_N = mkN04 "lkRy" ;
write_V2 = mkV2 (mkV "lkh'na") ; write_V2 = mkV2 (mkV "lkh'na") ;
yellow_A = mkAdj1 "kh'Ta" ; yellow_A = mkAdj1 "kh'Ta" ;
young_A = mkAdj1 "jwan" ; young_A = mkAdj1 "jwan" ;
do_V2 = mkV2 (mkV "krna") ; do_V2 = mkV2 (mkV "krna") ;
-- now_Adv = mkAdj1dv "ab" ; now_Adv = mkAdv "hwn" ;
-- already_Adv = mkAdj1dv "phlE?hy" ; -- already_Adv = mkAdj1dv "phlE?hy" ;
song_N = mkN01 "gana" ; song_N = mkN01 "gana" ;
add_V3 = mkV3 (compoundV "wadh'a" do_V2) "" "" ; add_V3 = mkV3 (compoundV "wadh'a" do_V2) "" "" ;
@@ -360,11 +360,11 @@ concrete LexiconPnb of Lexicon = CatPnb **
-- rule_N = mkN "aSwl" ; -- rule_N = mkN "aSwl" ;
---- added 4/6/2007 ---- added 4/6/2007
john_PN = mkPN "jan" ; john_PN = mkPN "jan" masculine ;
-- question_N = mkN "swal" ; -- question_N = mkN "swal" ;
-- ready_A = regA "ready" ; -- ready_A = regA "ready" ;
-- reason_N = mkN "wjh" feminine ; -- reason_N = mkN "wjh" feminine ;
-- today_Adv = mkAdj1dv "aj" ; today_Adv = mkAdv "aj" ;
-- uncertain_A = mkAdj1 ["Gyr?yqyny"] ; -- uncertain_A = mkAdj1 ["Gyr?yqyny"] ;

View File

@@ -110,6 +110,11 @@ oper
mkN11 x = mkN x x x x mkN11 x = mkN x x x x
x x x "" x x x ""
Fem ; Fem ;
-- 12 Masc no inflection
mkN12 : Str -> Noun ;
mkN12 x = mkN x x x x
x x x ""
Masc ;
----2 Determiners ----2 Determiners
@@ -135,7 +140,20 @@ oper
Fem => s2 Fem => s2
}; };
n = n n = n
}; };
makeIQuant : Str -> Str -> Str -> Str -> {s:Number => Gender => Str} = \s1,s2,s3,s4 -> {
s = table {
Sg => table {
Masc => s1 ;
Fem => s2
} ;
Pl => table {
Masc => s3 ;
Fem => s4
}
}
};
-- Proposition -- Proposition

View File

@@ -42,13 +42,13 @@ oper mkNum : Str -> Str -> DSize -> LinDigit =
{s = table {unit => do ; ten => bis } ; {s = table {unit => do ; ten => bis } ;
size = sz ; n = Pl} ; size = sz ; n = Pl} ;
lin n2 = mkNum "dw" "vy" r2 ; lin n2 = mkNum "dw" "wy" r2 ;
lin n3 = mkNum "tn" "try" r3 ; lin n3 = mkNum "tn" "try" r3 ;
lin n4 = mkNum "car" "caly" r4 ; lin n4 = mkNum "car" "caly" r4 ;
lin n5 = mkNum "pnj" "pnjah" r5 ; lin n5 = mkNum "pnj" "pnjah" r5 ;
lin n6 = mkNum "ch-" "sTh-" r6 ; lin n6 = mkNum "ch'" "sTh'" r6 ;
lin n7 = mkNum "st" "str" r7; lin n7 = mkNum "st" "str" r7;
lin n8 = mkNum "aTh-" "asy" r8; lin n8 = mkNum "aTh'" "asy" r8;
lin n9 = mkNum "nw" "nbE" r9 ; lin n9 = mkNum "nw" "nbE" r9 ;
oper mkR : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> DSize => Str = \a1 -> \a2 -> \a3 -> \a4 -> \a5 -> \a6 -> \a7 -> \a8 -> \a9 -> table { oper mkR : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> DSize => Str = \a1 -> \a2 -> \a3 -> \a4 -> \a5 -> \a6 -> \a7 -> \a8 -> \a9 -> table {
@@ -69,7 +69,7 @@ oper rows : DSize => DSize => Str = table {
r3 => mkR "tyr" "ty" "tyt" "tnt" "trt" "trw" "tyh" "tyr" "tr" ; r3 => mkR "tyr" "ty" "tyt" "tnt" "trt" "trw" "tyh" "tyr" "tr" ;
r4 => mkR "cwd" "cwb" "cwt" "cwa" "cwt" "cwr" "cwh" "cwr" "cwr" ; r4 => mkR "cwd" "cwb" "cwt" "cwa" "cwt" "cwr" "cwh" "cwr" "cwr" ;
r5 => mkR "pndr" "pnj" "pynt" "pnta" "pcw" "pyn" "pnj" "pnj" "pc" ; r5 => mkR "pndr" "pnj" "pynt" "pnta" "pcw" "pyn" "pnj" "pnj" "pc" ;
r6 => mkR "swl" "ch'b" "ch't" "ch-y" "ch'w" "ch'ya" "ch'h" "ch'y" "ch'y" ; r6 => mkR "swl" "ch'b" "ch't" "ch'y" "ch'w" "ch'ya" "ch'h" "ch'y" "ch'y" ;
r7 => mkR "star" "sta" "synt" "snt" "snt" "stw" "st" "st" "st" ; r7 => mkR "star" "sta" "synt" "snt" "snt" "stw" "st" "st" "st" ;
r8 => mkR "aTh'ar" "aTh'a" "aTh't" "aRt" "aTh'w" "aTh'a" "aTh'" "aTh'" "aTh'" ; r8 => mkR "aTh'ar" "aTh'a" "aTh't" "aRt" "aTh'w" "aTh'a" "aTh'" "aTh'" "aTh'" ;
r9 => table {sg => "any" ; r2 => "anty" ; r3 => "antaly" ; r9 => table {sg => "any" ; r2 => "anty" ; r3 => "antaly" ;

View File

@@ -16,7 +16,7 @@ concrete QuestionPnb of Question = CatPnb ** open ResPnb, Prelude in {
qp1 = qp.s ! Dir; qp1 = qp.s ! Dir;
qp2 = qp.s ! Obl ++ "nE" qp2 = qp.s ! Obl ++ "nE"
in { s = \\t,p,o => case t of { in { s = \\t,p,o => case t of {
VPImpPast => qp2 ++ cl.s ! t ! p ! ODir; VPImpPast => case vp.subj of {VIntrans => qp1 ++ cl.s ! t ! p ! ODir; _ => qp2 ++ cl.s ! t ! p ! ODir};
_ => qp1 ++ cl.s ! t ! p ! ODir _ => qp1 ++ cl.s ! t ! p ! ODir
} }
}; };
@@ -64,7 +64,7 @@ concrete QuestionPnb of Question = CatPnb ** open ResPnb, Prelude in {
} ; } ;
IdetQuant iqant num = { IdetQuant iqant num = {
s = \\g => iqant.s ! num.n ++ num.s ; s = \\g => iqant.s ! num.n ! g ++ num.s ;
n = num.n n = num.n
} ; } ;

View File

@@ -6,23 +6,26 @@ concrete RelativePnb of Relative = CatPnb ** open ResPnb in {
lin lin
RelCl cl = { RelCl cl = {
s = \\t,p,o,agr => case <t,giveNumber agr> of { s = \\t,p,o,agr => case <t,giveNumber agr,giveGender agr> of {
<VPImpPast,Sg> => "js" ++ cl.s ! t ! p ! o ; <VPImpPast,Sg,_> => "jnE" ++ cl.s ! t ! p ! o ;
<VPImpPast,Pl> => "jn" ++ cl.s ! t ! p ! o ; <VPImpPast,Pl,_> => "jnaN" ++ cl.s ! t ! p ! o ;
<_,_> => "jw" ++ cl.s ! t ! p ! o <_,Sg,Masc> => "jeRa" ++ cl.s ! t ! p ! o ;
<_,Sg,Fem> => "jeRy" ++ cl.s ! t ! p ! o ;
<_,Pl,Masc> => "jeRE" ++ cl.s ! t ! p ! o ;
<_,Pl,Fem> => "jeRyaN" ++ cl.s ! t ! p ! o
}; };
c = Dir c = Dir
} ; } ;
-- RelVP and RelSlash slows the linking process a lot this is why it is commented for test purposes -- RelVP and RelSlash slows the linking process a lot this is why it is commented for test purposes
{- RelVP rp vp = { RelVP rp vp = {
s = \\t,p,o,ag => s = \\t,p,o,ag =>
let let
agr = case rp.a of { agr = case rp.a of {
RNoAg => ag ; RNoAg => ag ;
RAg a => a RAg a => a
} ; } ;
cl = mkSClause (rp.s ! (giveNumber agr) ! Dir) agr vp; cl = mkSClause (rp.s ! (giveNumber agr) ! (giveGender agr) ! Dir) agr vp;
-- cl = case t of { -- cl = case t of {
-- VPImpPast => mkSClause (rp.s ! (giveNumber agr) ! Obl) agr vp; -- VPImpPast => mkSClause (rp.s ! (giveNumber agr) ! Obl) agr vp;
@@ -39,33 +42,50 @@ concrete RelativePnb of Relative = CatPnb ** open ResPnb in {
---- "we are looking at"). ---- "we are looking at").
-- --
RelSlash rp slash = { RelSlash rp slash = {
s = \\t,p,o,agr => rp.s ! (giveNumber agr) ! Dir ++ slash.c2.s ++ slash.s ! t ! p ! o ;--case t of { s = \\t,p,o,agr => rp.s ! (giveNumber agr) ! (giveGender agr) ! Obl ++ slash.c2.s ++ slash.s ! t ! p ! o ;--case t of {
-- VPImpPast => rp.s ! (giveNumber agr) Obl ++ slash.c2.s ++ slash.s ! t ! p ! o ; -- VPImpPast => rp.s ! (giveNumber agr) Obl ++ slash.c2.s ++ slash.s ! t ! p ! o ;
-- _ => rp.s ! (giveNumber agr) Dir ++ slash.c2.s ++ slash.s ! t ! p ! o -- _ => rp.s ! (giveNumber agr) Dir ++ slash.c2.s ++ slash.s ! t ! p ! o
-- }; -- };
c = Dir c = Dir
} ; } ;
-}
FunRP p np rp = { FunRP p np rp = {
s = \\n,c => rp.s ! n ! c ++ np.s ! NPC c ++ p.s ; s = \\n,g,c => rp.s ! n ! g ! c ++ np.s ! NPC c ++ p.s ;
a = RAg np.a a = RAg np.a
} ; } ;
IdRP = { IdRP = {
s = table { s = table {
Sg => table { Sg => table {
Masc => table {
ResPnb.Dir => "jeRa" ; ResPnb.Dir => "jyRa" ;
ResPnb.Obl => "jeRE" ; ResPnb.Obl => "jn" ;
ResPnb.Voc => "jeRE" ; ResPnb.Voc => "jyRE" ;
ResPnb.Abl => "jeRE" ResPnb.Abl => "jyRE"
}; };
Pl => table { Fem => table {
ResPnb.Dir => "jeRE" ;
ResPnb.Obl => "jeRE" ; ResPnb.Dir => "jyRy" ;
ResPnb.Voc => "jeRE" ; ResPnb.Obl => "jn" ;
ResPnb.Abl => "jeRE" ResPnb.Voc => "jyRy" ;
ResPnb.Abl => "jyRy"
}
};
Pl => table {
Masc => table {
ResPnb.Dir => "jyRE" ;
ResPnb.Obl => "jyRE" ;
ResPnb.Voc => "jyRE" ;
ResPnb.Abl => "jyRE"
};
Fem => table {
ResPnb.Dir => "jyRy" ;
ResPnb.Obl => "jyRy" ;
ResPnb.Voc => "jyRy" ;
ResPnb.Abl => "jyRy"
} }
}
}; };
a = RNoAg a = RNoAg
} ; } ;

View File

@@ -83,6 +83,9 @@ resource ResPnb = ParamX ** open Prelude,Predef in {
-- mkAdj2 : Str -> Adjective2 ; -- mkAdj2 : Str -> Adjective2 ;
-- mkAdj2 romii = cmnAdj romii romii (romii+"a") (romii+"ywN") -- mkAdj2 romii = cmnAdj romii romii (romii+"a") (romii+"ywN")
-- romii (romii++"aN") (romii++"w") "" ; -- romii (romii++"aN") (romii++"w") "" ;
mkAdj3 : Str -> Adjective1 ;
mkAdj3 lal = adj1 lal lal lal lal lal lal lal lal lal lal lal lal lal lal lal lal ;
cmnAdj : (x1,_,_,_,_,_,_,x8 : Str) -> {s : Gender => Case => Str} = cmnAdj : (x1,_,_,_,_,_,_,x8 : Str) -> {s : Gender => Case => Str} =
\sd,so,sv,sa, pd,po,pv,pa -> { \sd,so,sv,sa, pd,po,pv,pa -> {
@@ -304,6 +307,8 @@ oper
VPTense VPFutr (Ag g n p) => {fin = copula CFuture n p g ; inf = verb.s ! VF Subj p n g } ; VPTense VPFutr (Ag g n p) => {fin = copula CFuture n p g ; inf = verb.s ! VF Subj p n g } ;
VPTense VPPerf (Ag g n p) => { fin = [] ; inf = verb.s ! Root ++ cka g n } ; VPTense VPPerf (Ag g n p) => { fin = [] ; inf = verb.s ! Root ++ cka g n } ;
VPStem => {fin = [] ; inf = verb.s ! Root}; VPStem => {fin = [] ; inf = verb.s ! Root};
VPInf => {fin = verb.s!Inf_Obl ; inf = verb.s ! Root};
VPImp => {fin = verb.s!VF Subj Pers3_Near Pl Masc ; inf = verb.s ! Root};
_ => {fin = [] ; inf = verb.s ! Root} _ => {fin = [] ; inf = verb.s ! Root}
}; };
obj = {s = [] ; a = defaultAgr} ; obj = {s = [] ; a = defaultAgr} ;
@@ -329,7 +334,7 @@ oper
(mkAdj1 "pya").s ! n ! g ! Dir ; (mkAdj1 "pya").s ! n ! g ! Dir ;
cka : Gender -> Number -> Str = \g,n -> cka : Gender -> Number -> Str = \g,n ->
(mkAdj1 "cka").s ! n ! g ! Dir ; (mkAdj1 "gya").s ! n ! g ! Dir ;
hw : PPerson -> Number -> Str = \pp,n -> hw : PPerson -> Number -> Str = \pp,n ->
case <pp,n> of { case <pp,n> of {

View File

@@ -17,7 +17,7 @@ concrete StructuralPnb of Structural = CatPnb **
behind_Prep = ss "pych'E" ; behind_Prep = ss "pych'E" ;
between_Prep = ss "wckar" ; between_Prep = ss "wckar" ;
both7and_DConj = sd2 "dwwyN" "tE" ** {n = Pl} ; both7and_DConj = sd2 "dwwyN" "tE" ** {n = Pl} ;
but_PConj = ss "lykn" ; but_PConj = ss "mgr" ;
by8agent_Prep = ss "" ; by8agent_Prep = ss "" ;
by8means_Prep = ss "" ; by8means_Prep = ss "" ;
can8know_VV,can_VV = mkV "skna" ** { isAux = True} ; can8know_VV,can_VV = mkV "skna" ** { isAux = True} ;
@@ -31,7 +31,7 @@ concrete StructuralPnb of Structural = CatPnb **
first_Ord = {s = "pehla" ; n = Sg} ; --DEPRECATED first_Ord = {s = "pehla" ; n = Sg} ; --DEPRECATED
for_Prep = ss "[dE wast-E]" ; for_Prep = ss "[dE wast-E]" ;
from_Prep = ss "twN" ; from_Prep = ss "twN" ;
he_Pron = personalPN "aw" "aynwN" "aw" "" "awra" Sg Masc Pers3_Distant ; he_Pron = personalPN "aw" "awnwN" "aw" "awrE" "awra" Sg Masc Pers3_Distant ;
here_Adv = mkAdv "ayth'E" ; here_Adv = mkAdv "ayth'E" ;
here7to_Adv = mkAdv "ayth'E" ; here7to_Adv = mkAdv "ayth'E" ;
here7from_Adv = mkAdv "ayth'wN" ; here7from_Adv = mkAdv "ayth'wN" ;
@@ -64,53 +64,54 @@ concrete StructuralPnb of Structural = CatPnb **
no_Utt = ss "nyN" ; no_Utt = ss "nyN" ;
on_Prep = ss "atE" ; on_Prep = ss "atE" ;
one_Quant = demoPN "ak" "ak" "ak" ; -- DEPRECATED one_Quant = demoPN "ak" "ak" "ak" ; -- DEPRECATED
only_Predet = ss "srf" ; only_Predet = ss "Srf" ;
or_Conj = sd2 [] "ya" ** {n = Sg} ; or_Conj = sd2 [] "ya" ** {n = Sg} ;
otherwise_PConj = ss "ya fyr" ; otherwise_PConj = ss "ya fyr" ;
part_Prep = ss "hSh" ; part_Prep = ss "hSh" ;
please_Voc = ss "mhrbani" ; please_Voc = ss "mhrbani" ;
possess_Prep = ss "da" ; possess_Prep = ss "da" ;
quite_Adv = ss "khamosh" ; quite_Adv = ss "khamosh" ;
she_Pron = personalPN "aw" "awnwN" "awnw" "" "awra" Sg Fem Pers3_Distant ; she_Pron = personalPN "aw" "awnwN" "awnw" "awrE" "awra" Sg Fem Pers3_Distant ;
so_AdA = ss "so" ; so_AdA = ss "so" ;
somebody_NP = MassNP (UseN (MorphoPnb.mkN11 "kwy" )); somebody_NP = MassNP (UseN (MorphoPnb.mkN11 "kwy" ));
someSg_Det = mkDet "kch'" "kch'" "kch'" "kch'" Sg ; someSg_Det = mkDet "kch'" "kch'" "kch'" "kch'" Sg ;
somePl_Det = mkDet "kch'" "kch'" "kch'" "kch'" Pl ; somePl_Det = mkDet "kch'" "kch'" "kch'" "kch'" Pl ;
something_NP = MassNP (UseN (MorphoPnb.mkN11 "kwy XE")); something_NP = MassNP (UseN (MorphoPnb.mkN11 "kwy XE"));
somewhere_Adv = mkAdv "ktlE" ; somewhere_Adv = mkAdv "ktlE" ;
that_Quant = demoPN "wh" "as" "an" ; that_Quant = demoPN "aw" "as" "an" ;
that_Subj = ss "kh"; that_Subj = ss "kh";
there_Adv = mkAdv "awth'E" ; there_Adv = mkAdv "awth'E" ;
there7to_Adv = mkAdv "awth'E" ; there7to_Adv = mkAdv "awth'E" ;
there7from_Adv = mkAdv "awth'wN" ; there7from_Adv = mkAdv "awth'wN" ;
therefore_PConj = ss "as ly" ; therefore_PConj = ss "as ly" ;
they_Pron = personalPN "aw" "[awnaN nwN]" "aw" "" "awnaN da" Pl Masc Pers3_Distant ; ---- they_Pron = personalPN "aw" "[awnaN nwN]" "aw" "awnaN" "awnaN da" Pl Masc Pers3_Distant ; ----
this_Quant = demoPN "yh" "as" "an"; this_Quant = demoPN "aE" "ayra" "aynaN";
through_Prep = ss "wcwN" ; through_Prep = ss "wcwN" ;
too_AdA = ss "bht" ; too_AdA = ss "bht" ;
to_Prep = ss "awnwN" ** {lock_Prep = <>}; -- to_Prep = ss "awnwN" ** {lock_Prep = <>};
to_Prep = ss "nwN" ** {lock_Prep = <>};
under_Prep = ss "th'lE" ** {lock_Prep = <>}; under_Prep = ss "th'lE" ** {lock_Prep = <>};
very_AdA = ss "bht" ; very_AdA = ss "bht" ;
want_VV = mkV "cana" ** { isAux = False} ; want_VV = mkV "cana" ** { isAux = False} ;
we_Pron = personalPN "asy" "sanwN" "sanwN" "satwN" "saDa" Pl Masc Pers1 ; we_Pron = personalPN "asy" "sanwN" "sanwN" "satwN" "saDa" Pl Masc Pers1 ;
-- whatSg_IP = mkIP "kya" "kis" "kis" Sg Masc ; whatSg_IP = mkIP "kya" "kra" "kra" "kra" Sg Masc ; -- check it
-- whatPl_IP = mkIP "kya" "kin" "kin" Pl Masc ; -- whatPl_IP = mkIP "kya" "kin" "kin" Pl Masc ;
when_IAdv = ss "kdwN" ; when_IAdv = ss "kdwN" ;
when_Subj = ss "kdwN" ; when_Subj = ss "kdwN" ;
where_IAdv = ss "kth'E" ; where_IAdv = ss "kth'E" ;
which_IQuant = {s = \\_ => "kyRy"} ; which_IQuant = mkIQuant "kyRa" "kyRy" "kyRE" "kyRy" ;
-- whichPl_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ; -- whichPl_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ;
-- whichSg_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 ; whoSg_IP = mkIP "kwn" "kra" "kra" "kra" Sg Masc ;
-- whoPl_IP = mkIP "kwn" "kn" "knhwN" Pl Masc ; -- whoPl_IP = mkIP "kwn" "kn" "knhwN" Pl Masc ;
why_IAdv = ss "kywN" ; why_IAdv = ss "kywN" ;
without_Prep = ss ["twN bGyr"] ; without_Prep = ss ["twN bGyr"] ;
with_Prep = ss ["dE nal"] ; with_Prep = ss ["dE nal"] ;
-- yes_Phr = ss "haN" ; -- yes_Phr = ss "haN" ;
yes_Utt = ss "haN" ; yes_Utt = ss "haN" ;
youSg_Pron = personalPN "twN" "tynwN" "tynwN" "tytwN" "twwaDa" Sg Masc Pers2_Casual ; youSg_Pron = personalPN "twN" "tynwN" "tynwN" "tyrE" "twwaDa" Sg Masc Pers2_Casual ;
youPl_Pron = personalPN "tsy" "twanwN" "twanwN" "twatwN" "twwaDa" Pl Masc Pers2_Casual ; youPl_Pron = personalPN "tsy" "twanwN" "twanwN" "twaDE" "twwaDa" Pl Masc Pers2_Casual ;
youPol_Pron = personalPN "tsy" "twanwN" "twanwN" "twatwN" "twwaDa" Sg Masc Pers2_Respect ; youPol_Pron = personalPN "tsy" "twanwN" "twanwN" "twaDE" "twwaDa" Sg Masc Pers2_Respect ;
no_Quant = demoPN " kwy nhyN" "kwy nhyN" "kwy nhyN" ; no_Quant = demoPN " kwy nhyN" "kwy nhyN" "kwy nhyN" ;
not_Predet = {s="nhyN"} ; not_Predet = {s="nhyN"} ;
if_then_Conj = sd2 "agr" "tE" ** {n = Sg} ; if_then_Conj = sd2 "agr" "tE" ** {n = Sg} ;

View File

@@ -40,6 +40,7 @@ concrete VerbPnb of Verb = CatPnb ** open ResPnb in {
CompAP ap ={s = \\a => ap.s ! giveNumber a ! giveGender a ! Dir } ; CompAP ap ={s = \\a => ap.s ! giveNumber a ! giveGender a ! Dir } ;
CompNP np = {s = \\_ => np.s ! NPObj} ; CompNP np = {s = \\_ => np.s ! NPObj} ;
CompAdv adv = {s = \\a => adv.s ! (fromAgr a).g } ; CompAdv adv = {s = \\a => adv.s ! (fromAgr a).g } ;
CompCN cn = {s = \\a => cn.s ! giveNumber a ! Dir} ;
} }