From 458675a8e888b1c3ffd4feebeac458a4dc4de8e1 Mon Sep 17 00:00:00 2001 From: "virk.shafqat" Date: Sat, 30 Apr 2011 18:11:48 +0000 Subject: [PATCH] refinements-Pnb-2011-04-30 --- Setup.hs | 1 + lib/src/punjabi/AdjectivePnb.gf | 3 +- lib/src/punjabi/CatPnb.gf | 4 +- lib/src/punjabi/ExtraPnb.gf | 4 +- lib/src/punjabi/IdiomPnb.gf | 10 +++-- lib/src/punjabi/LexiconPnb.gf | 20 +++++----- lib/src/punjabi/MorphoPnb.gf | 20 +++++++++- lib/src/punjabi/NounPnb.gf | 2 +- lib/src/punjabi/NumeralPnb.gf | 8 ++-- lib/src/punjabi/ParadigmsPnb.gf | 12 ++++-- lib/src/punjabi/PhrasePnb.gf | 2 +- lib/src/punjabi/QuestionPnb.gf | 4 +- lib/src/punjabi/RelativePnb.gf | 52 ++++++++++++++++++-------- lib/src/punjabi/ResPnb.gf | 7 +++- lib/src/punjabi/StructuralPnb.gf | 29 +++++++------- lib/src/punjabi/SymbolPnb.gf | 13 ++++--- lib/src/punjabi/src/AdjectivePnb.gf | 3 +- lib/src/punjabi/src/IdiomPnb.gf | 10 +++-- lib/src/punjabi/src/LexiconPnb.gf | 20 +++++----- lib/src/punjabi/src/MorphoPnb.gf | 20 +++++++++- lib/src/punjabi/src/NumeralPnb.gf | 8 ++-- lib/src/punjabi/src/QuestionPnb.gf | 4 +- lib/src/punjabi/src/RelativePnb.gf | 56 +++++++++++++++++++--------- lib/src/punjabi/src/ResPnb.gf | 7 +++- lib/src/punjabi/src/StructuralPnb.gf | 29 +++++++------- lib/src/punjabi/src/VerbPnb.gf | 1 + 26 files changed, 229 insertions(+), 120 deletions(-) diff --git a/Setup.hs b/Setup.hs index b923501a7..cbf710ad0 100644 --- a/Setup.hs +++ b/Setup.hs @@ -195,6 +195,7 @@ langsCoding = [ (("latin", "Lat"),""), (("norwegian","Nor"),""), (("polish", "Pol"),""), + (("punjabi", "Pnb"),""), (("romanian", "Ron"),""), (("russian", "Rus"),""), (("spanish", "Spa"),""), diff --git a/lib/src/punjabi/AdjectivePnb.gf b/lib/src/punjabi/AdjectivePnb.gf index 66092fa7d..bf5414bd7 100644 --- a/lib/src/punjabi/AdjectivePnb.gf +++ b/lib/src/punjabi/AdjectivePnb.gf @@ -7,7 +7,8 @@ concrete AdjectivePnb of Adjective = CatPnb ** open ResPnb, Prelude in { UseComparA a = a; 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$. diff --git a/lib/src/punjabi/CatPnb.gf b/lib/src/punjabi/CatPnb.gf index 8834aa000..fdccd81c2 100644 --- a/lib/src/punjabi/CatPnb.gf +++ b/lib/src/punjabi/CatPnb.gf @@ -23,7 +23,7 @@ concrete CatPnb of Cat = CommonX - [Adv] ** open ResPnb, Prelude in { QCl = {s : ResPnb.VPHTense => Polarity => QForm => Str} ; IP = {s: Case => Str ; g : Gender ; n : Number}; IDet = {s :Gender => Str ; n : Number} ; - IQuant = {s : Number => Str} ; + IQuant = {s : Number => Gender => Str} ; ---- Relative @@ -31,7 +31,7 @@ concrete CatPnb of Cat = CommonX - [Adv] ** open ResPnb, Prelude in { s : ResPnb.VPHTense => Polarity => Order => Agr => Str ; c : Case } ; - RP = {s: Number => Case => Str ; a:RAgr}; + RP = {s: Number => Gender => Case => Str ; a:RAgr}; ---- Verb diff --git a/lib/src/punjabi/ExtraPnb.gf b/lib/src/punjabi/ExtraPnb.gf index 1439a484f..70ec3b85a 100644 --- a/lib/src/punjabi/ExtraPnb.gf +++ b/lib/src/punjabi/ExtraPnb.gf @@ -8,8 +8,8 @@ concrete ExtraPnb of ExtraPnbAbs = CatPnb ** each_Det = mkDet "ہر كوی" "ہر كوی" "ہر كوی" "ہر كوی" Sg ; have_V = mkV "راكh-نا"; ----- IAdvAdv adv = {s = "كتنی" ++ adv.s} ; ----- ICompAP ap = {s = "كتنے" ++ ap.s ! Sg ! Masc ! Dir ! Posit} ; + -- IAdvAdv adv = {s = "كتنی" ++ adv.s} ; + -- ICompAP ap = {s = "كتنے" ++ ap.s ! Sg ! Masc ! Dir ! Posit} ; cost_V = mkV "قیمت" ; -- added for causitives diff --git a/lib/src/punjabi/IdiomPnb.gf b/lib/src/punjabi/IdiomPnb.gf index 8ea63b408..077f9006f 100644 --- a/lib/src/punjabi/IdiomPnb.gf +++ b/lib/src/punjabi/IdiomPnb.gf @@ -16,7 +16,8 @@ concrete IdiomPnb of Idiom = CatPnb ** open Prelude,Predef, ResPnb in { ExistNP np = 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 = 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) ; - ImpPl1 vp = {s = "آو" ++ infVP True vp (agrP1 Masc Pl)} ; - ImpP3 np vp = {s = np.s!NPC Dir ++ "نوں" ++ (vp.s ! VPImp ).inf ++ "دیو"}; +-- ImpPl1 vp = {s = "آو" ++ infVP True vp (agrP1 Masc Pl)} ; + 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 ++ "دیو"}; + } diff --git a/lib/src/punjabi/LexiconPnb.gf b/lib/src/punjabi/LexiconPnb.gf index 1f64994d7..f256b82a6 100644 --- a/lib/src/punjabi/LexiconPnb.gf +++ b/lib/src/punjabi/LexiconPnb.gf @@ -80,7 +80,7 @@ concrete LexiconPnb of Lexicon = CatPnb ** floor_N = mkN02 "فرش" ; forget_V2 = mkV2 (mkV "بھولنا") "نوں" ; -- fridge_N = mkN "فریگ" ; - friend_N = mkN04 "دوست" ; + friend_N = mkN07 "یار" ; fruit_N = mkN02 "پھل" ; -- fun_AV = mkAdj1V (regA "f?ن") ; garden_N = mkN04 "باغ" ; @@ -103,7 +103,7 @@ concrete LexiconPnb of Lexicon = CatPnb ** important_A = mkAdj1 "اہم" ; -- industry_N = mkN "صنعت" feminine ; -- iron_N = mkN "لوہا" ; --- king_N = mkN "بادشاہ" ; + king_N = mkN01 "بادشاہ" ; know_V2 = mkV2 (mkV "جاننا") ; know_VS = (mkV "جاننا") ; know_VQ = (mkV "جاننا") ; @@ -119,7 +119,7 @@ concrete LexiconPnb of Lexicon = CatPnb ** lose_V2 = mkV2 (compoundV "كھو" (mkV "دینا")) ; love_N = mkN02 "محبت" ; 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?كرنا" "سے" ; meat_N = mkN02 "گوشت" ; -- milk_N = mkN "دودھ" ; @@ -135,7 +135,7 @@ concrete LexiconPnb of Lexicon = CatPnb ** open_V2 = mkV2 (mkV "كھولنا") ; paint_V2A = mkV2 (compoundV "رنگ" do_V2) ; -- paper_N = mkN "كاغز" ; --- paris_PN = mkPN "پیرس" ; + paris_PN = mkPN "پیرس" masculine; -- peace_N = mkN "امن" ; pen_N = mkN04 "پنسل" ; planet_N = mkN01 "سیارہ" ; @@ -148,7 +148,7 @@ concrete LexiconPnb of Lexicon = CatPnb ** -- radio_N = mkN "ریڈیو" ; rain_V0 = compoundV "بارش" (mkV "ہونا" ) ; read_V2 = mkV2 (mkV "پڑھنا"); - red_A = mkAdj1 "لال" ; + red_A = mkAdj3 "لال" ; -- worst case -- religion_N = mkN "مزہب" ; -- restaurant_N = mkN "ہوٹل" ; -- river_N = mkN "دریا" masculine ; @@ -211,14 +211,14 @@ concrete LexiconPnb of Lexicon = CatPnb ** -- window_N = mkN "كھڑكی" ; wine_N = mkN04 "شراب"; win_V2 = mkV2 (mkV "جیتنا") ; - woman_N = mkN04 "عورت" ; - wonder_VQ = compoundV "حعران" (mkV "ہونا") ; + woman_N = mkN04 "زنانی" ; + wonder_VQ = compoundV "حیران" (mkV "ہونا") ; wood_N = mkN04 "لكڑی" ; write_V2 = mkV2 (mkV "لكھنا") ; yellow_A = mkAdj1 "كھٹا" ; young_A = mkAdj1 "جوان" ; do_V2 = mkV2 (mkV "كرنا") ; --- now_Adv = mkAdj1dv "اب" ; + now_Adv = mkAdv "ہون" ; -- already_Adv = mkAdj1dv "پہلE?ہی" ; song_N = mkN01 "گانا" ; add_V3 = mkV3 (compoundV "وادھا" do_V2) "" "" ; @@ -360,11 +360,11 @@ concrete LexiconPnb of Lexicon = CatPnb ** -- rule_N = mkN "اصول" ; ---- added 4/6/2007 - john_PN = mkPN "جان" ; + john_PN = mkPN "جان" masculine ; -- question_N = mkN "سوال" ; -- ready_A = regA "رعادی" ; -- reason_N = mkN "وجہ" feminine ; --- today_Adv = mkAdj1dv "اج" ; + today_Adv = mkAdv "اج" ; -- uncertain_A = mkAdj1 ["غیr?یقینی"] ; diff --git a/lib/src/punjabi/MorphoPnb.gf b/lib/src/punjabi/MorphoPnb.gf index 31969488b..c1467f6c3 100644 --- a/lib/src/punjabi/MorphoPnb.gf +++ b/lib/src/punjabi/MorphoPnb.gf @@ -110,6 +110,11 @@ oper mkN11 x = mkN x x x x x x x "" Fem ; + -- 12 Masc no inflection + mkN12 : Str -> Noun ; + mkN12 x = mkN x x x x + x x x "" + Masc ; ----2 Determiners @@ -135,7 +140,20 @@ oper Fem => s2 }; 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 diff --git a/lib/src/punjabi/NounPnb.gf b/lib/src/punjabi/NounPnb.gf index 7cf5019a6..1231e9aaa 100644 --- a/lib/src/punjabi/NounPnb.gf +++ b/lib/src/punjabi/NounPnb.gf @@ -19,7 +19,7 @@ concrete NounPnb of Noun = CatPnb ** open ResPnb, Prelude in { } ; 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 ; isPron = np.isPron } ; diff --git a/lib/src/punjabi/NumeralPnb.gf b/lib/src/punjabi/NumeralPnb.gf index f30cbbeb4..d404b8b8d 100644 --- a/lib/src/punjabi/NumeralPnb.gf +++ b/lib/src/punjabi/NumeralPnb.gf @@ -42,13 +42,13 @@ oper mkNum : Str -> Str -> DSize -> LinDigit = {s = table {unit => do ; ten => bis } ; size = sz ; n = Pl} ; -lin n2 = mkNum "دو" "vی" r2 ; +lin n2 = mkNum "دو" "وی" r2 ; lin n3 = mkNum "تن" "تری" r3 ; lin n4 = mkNum "چار" "چالی" r4 ; lin n5 = mkNum "پنج" "پنجاہ" r5 ; -lin n6 = mkNum "چh-" "سٹh-" r6 ; +lin n6 = mkNum "چھ" "سٹھ" r6 ; lin n7 = mkNum "ست" "ستر" r7; -lin n8 = mkNum "اٹh-" "اسی" r8; +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 { @@ -69,7 +69,7 @@ oper rows : DSize => DSize => Str = table { r3 => mkR "تیر" "تی" "تیت" "تنت" "ترت" "ترو" "تیہ" "تیر" "تر" ; r4 => mkR "چود" "چوب" "چوت" "چوا" "چوت" "چور" "چوہ" "چور" "چور" ; r5 => mkR "پندر" "پنج" "پینت" "پنتا" "پچو" "پین" "پنج" "پنج" "پچ" ; - r6 => mkR "سول" "چھب" "چھت" "چh-ی" "چھو" "چھیا" "چھہ" "چھی" "چھی" ; + r6 => mkR "سول" "چھب" "چھت" "چھی" "چھو" "چھیا" "چھہ" "چھی" "چھی" ; r7 => mkR "ستار" "ستا" "سینت" "سنت" "سنت" "ستو" "ست" "ست" "ست" ; r8 => mkR "اٹھار" "اٹھا" "اٹھت" "اڑت" "اٹھو" "اٹھا" "اٹھ" "اٹھ" "اٹھ" ; r9 => table {sg => "انی" ; r2 => "انتی" ; r3 => "انتالی" ; diff --git a/lib/src/punjabi/ParadigmsPnb.gf b/lib/src/punjabi/ParadigmsPnb.gf index 6a5476357..a0bc81c15 100644 --- a/lib/src/punjabi/ParadigmsPnb.gf +++ b/lib/src/punjabi/ParadigmsPnb.gf @@ -37,9 +37,13 @@ oper = \s,noun -> {s =\\n,c => s ++ noun.s ! n ! c ; g = noun.g ; lock_N = <>}; --- Proper names +-- Proper names +mkPN = overload { mkPN : Str -> 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 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 = <>}; @@ -102,12 +106,14 @@ oper --3 Determiners and quantifiers -- mkQuant : overload { - mkQuant : Pron -> Quant ; + mkQuant1 : Pron -> 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 : 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; -- } ; diff --git a/lib/src/punjabi/PhrasePnb.gf b/lib/src/punjabi/PhrasePnb.gf index b0cf13ac9..17a30f3db 100644 --- a/lib/src/punjabi/PhrasePnb.gf +++ b/lib/src/punjabi/PhrasePnb.gf @@ -22,6 +22,6 @@ concrete PhrasePnb of Phrase = CatPnb ** open Prelude, ResPnb in { PConjConj conj = {s = conj.s2} ; --- NoVoc = {s = []} ; - VocNP np = {s = np.s ! NPC Dir} ; + VocNP np = {s = np.s ! NPC Voc} ; } diff --git a/lib/src/punjabi/QuestionPnb.gf b/lib/src/punjabi/QuestionPnb.gf index 6b46458d3..e7d1a9af4 100644 --- a/lib/src/punjabi/QuestionPnb.gf +++ b/lib/src/punjabi/QuestionPnb.gf @@ -16,7 +16,7 @@ concrete QuestionPnb of Question = CatPnb ** open ResPnb, Prelude in { qp1 = qp.s ! Dir; qp2 = qp.s ! Obl ++ "نے" 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 } }; @@ -64,7 +64,7 @@ concrete QuestionPnb of Question = CatPnb ** open ResPnb, Prelude in { } ; IdetQuant iqant num = { - s = \\g => iqant.s ! num.n ++ num.s ; + s = \\g => iqant.s ! num.n ! g ++ num.s ; n = num.n } ; diff --git a/lib/src/punjabi/RelativePnb.gf b/lib/src/punjabi/RelativePnb.gf index 47073fad5..7dfdc0336 100644 --- a/lib/src/punjabi/RelativePnb.gf +++ b/lib/src/punjabi/RelativePnb.gf @@ -6,10 +6,13 @@ concrete RelativePnb of Relative = CatPnb ** open ResPnb in { lin RelCl cl = { - s = \\t,p,o,agr => case of { - => "جس" ++ cl.s ! t ! p ! o ; - => "جن" ++ cl.s ! t ! p ! o ; - <_,_> => "جو" ++ cl.s ! t ! p ! o + s = \\t,p,o,agr => case of { + => "جنے" ++ 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 } ; @@ -22,7 +25,7 @@ concrete RelativePnb of Relative = CatPnb ** open ResPnb in { RNoAg => ag ; 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 { -- VPImpPast => mkSClause (rp.s ! (giveNumber agr) ! Obl) agr vp; @@ -39,7 +42,7 @@ concrete RelativePnb of Relative = CatPnb ** open ResPnb in { ---- "وع ارع لooكiنگ ات"). -- 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 ; -- _ => 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 = { - 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 } ; IdRP = { s = table { Sg => table { + Masc => table { - ResPnb.Dir => "جعڑا" ; - ResPnb.Obl => "جعڑے" ; - ResPnb.Voc => "جعڑے" ; - ResPnb.Abl => "جعڑے" + ResPnb.Dir => "جیڑا" ; + ResPnb.Obl => "جن" ; + ResPnb.Voc => "جیڑے" ; + ResPnb.Abl => "جیڑے" }; - Pl => table { - ResPnb.Dir => "جعڑے" ; - ResPnb.Obl => "جعڑے" ; - ResPnb.Voc => "جعڑے" ; - ResPnb.Abl => "جعڑے" + Fem => table { + + ResPnb.Dir => "جیڑی" ; + ResPnb.Obl => "جن" ; + 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 } ; diff --git a/lib/src/punjabi/ResPnb.gf b/lib/src/punjabi/ResPnb.gf index 7c1845581..ddce379ac 100644 --- a/lib/src/punjabi/ResPnb.gf +++ b/lib/src/punjabi/ResPnb.gf @@ -83,6 +83,9 @@ resource ResPnb = ParamX ** open Prelude,Predef in { -- mkAdj2 : Str -> Adjective2 ; -- mkAdj2 romii = cmnAdj 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} = \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 VPPerf (Ag g n p) => { fin = [] ; inf = verb.s ! Root ++ cka g n } ; 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} }; obj = {s = [] ; a = defaultAgr} ; @@ -329,7 +334,7 @@ oper (mkAdj1 "پیا").s ! n ! g ! Dir ; cka : Gender -> Number -> Str = \g,n -> - (mkAdj1 "چكا").s ! n ! g ! Dir ; + (mkAdj1 "گیا").s ! n ! g ! Dir ; hw : PPerson -> Number -> Str = \pp,n -> case of { diff --git a/lib/src/punjabi/StructuralPnb.gf b/lib/src/punjabi/StructuralPnb.gf index 651af6d4f..5db29bd90 100644 --- a/lib/src/punjabi/StructuralPnb.gf +++ b/lib/src/punjabi/StructuralPnb.gf @@ -17,7 +17,7 @@ concrete StructuralPnb of Structural = CatPnb ** behind_Prep = ss "پیچھے" ; between_Prep = ss "وچكار" ; both7and_DConj = sd2 "دوویں" "تے" ** {n = Pl} ; - but_PConj = ss "لیكن" ; + but_PConj = ss "مگر" ; by8agent_Prep = ss "" ; by8means_Prep = ss "" ; can8know_VV,can_VV = mkV "سكنا" ** { isAux = True} ; @@ -31,7 +31,7 @@ concrete StructuralPnb of Structural = CatPnb ** first_Ord = {s = "پعہلا" ; n = Sg} ; --DEPRECATED for_Prep = ss "[دے واسطE]" ; from_Prep = ss "توں" ; - he_Pron = personalPN "او" "اینوں" "او" "" "اورا" Sg Masc Pers3_Distant ; + he_Pron = personalPN "او" "اونوں" "او" "اورے" "اورا" Sg Masc Pers3_Distant ; here_Adv = mkAdv "ایتھے" ; here7to_Adv = mkAdv "ایتھے" ; here7from_Adv = mkAdv "ایتھوں" ; @@ -64,53 +64,54 @@ concrete StructuralPnb of Structural = CatPnb ** no_Utt = ss "نیں" ; on_Prep = ss "اتے" ; one_Quant = demoPN "اك" "اك" "اك" ; -- DEPRECATED - only_Predet = ss "سرف" ; + only_Predet = ss "صرف" ; or_Conj = sd2 [] "یا" ** {n = Sg} ; otherwise_PConj = ss "یا فیر" ; part_Prep = ss "ہصہ" ; please_Voc = ss "مہربانi" ; possess_Prep = ss "دا" ; quite_Adv = ss "كہامoسہ" ; - she_Pron = personalPN "او" "اونوں" "اونو" "" "اورا" Sg Fem Pers3_Distant ; + she_Pron = personalPN "او" "اونوں" "اونو" "اورے" "اورا" Sg Fem Pers3_Distant ; so_AdA = ss "سo" ; somebody_NP = MassNP (UseN (MorphoPnb.mkN11 "كوی" )); someSg_Det = mkDet "كچھ" "كچھ" "كچھ" "كچھ" Sg ; somePl_Det = mkDet "كچھ" "كچھ" "كچھ" "كچھ" Pl ; something_NP = MassNP (UseN (MorphoPnb.mkN11 "كوی شے")); somewhere_Adv = mkAdv "كتلے" ; - that_Quant = demoPN "وہ" "اس" "ان" ; + that_Quant = demoPN "او" "اس" "ان" ; that_Subj = ss "كہ"; there_Adv = mkAdv "اوتھے" ; there7to_Adv = mkAdv "اوتھے" ; there7from_Adv = mkAdv "اوتھوں" ; therefore_PConj = ss "اس لی" ; - they_Pron = personalPN "او" "[اوناں نوN]" "او" "" "اوناں دا" Pl Masc Pers3_Distant ; ---- - this_Quant = demoPN "یہ" "اس" "ان"; + they_Pron = personalPN "او" "[اوناں نوN]" "او" "اوناں" "اوناں دا" Pl Masc Pers3_Distant ; ---- + this_Quant = demoPN "اے" "ایرا" "ایناں"; through_Prep = ss "وچوں" ; too_AdA = ss "بہت" ; - to_Prep = ss "اونوں" ** {lock_Prep = <>}; +-- to_Prep = ss "اونوں" ** {lock_Prep = <>}; + to_Prep = ss "نوں" ** {lock_Prep = <>}; under_Prep = ss "تھلے" ** {lock_Prep = <>}; very_AdA = ss "بہت" ; want_VV = mkV "چانا" ** { isAux = False} ; we_Pron = personalPN "اسی" "سانوں" "سانوں" "ساتوں" "ساڈا" Pl Masc Pers1 ; --- whatSg_IP = mkIP "كیا" "كiس" "كiس" Sg Masc ; + whatSg_IP = mkIP "كیا" "كرا" "كرا" "كرا" Sg Masc ; -- check it -- whatPl_IP = mkIP "كیا" "كiن" "كiن" Pl Masc ; when_IAdv = ss "كدوں" ; when_Subj = ss "كدوں" ; where_IAdv = ss "كتھے" ; - which_IQuant = {s = \\_ => "كیڑی"} ; + which_IQuant = mkIQuant "كیڑا" "كیڑی" "كیڑے" "كیڑی" ; -- whichPl_IDet = makeDet "كون سا" "كون سی" "كون سے" "كون سی" ; -- whichSg_IDet = makeDet "كون سا" "كون سی" "كون سے" "كون سی" ; --- whoSg_IP = mkIP "كون" "كiس" "كiس" Sg Masc ; + whoSg_IP = mkIP "كون" "كرا" "كرا" "كرا" 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 "تسی" "توانوں" "توانوں" "تواتوں" "توواڈا" Sg Masc Pers2_Respect ; + youSg_Pron = personalPN "توں" "تینوں" "تینوں" "تیرے" "توواڈا" Sg Masc Pers2_Casual ; + youPl_Pron = personalPN "تسی" "توانوں" "توانوں" "تواڈے" "توواڈا" Pl Masc Pers2_Casual ; + youPol_Pron = personalPN "تسی" "توانوں" "توانوں" "تواڈے" "توواڈا" Sg Masc Pers2_Respect ; no_Quant = demoPN " كوی نہیں" "كوی نہیں" "كوی نہیں" ; not_Predet = {s="نہیں"} ; if_then_Conj = sd2 "اگر" "تے" ** {n = Sg} ; diff --git a/lib/src/punjabi/SymbolPnb.gf b/lib/src/punjabi/SymbolPnb.gf index 2c5487826..92c77e7df 100644 --- a/lib/src/punjabi/SymbolPnb.gf +++ b/lib/src/punjabi/SymbolPnb.gf @@ -3,7 +3,7 @@ concrete SymbolPnb of Symbol = CatPnb ** open Prelude, ResPnb in { flags coding = utf8; -{- + lin -- SymbPN i = {s = \\_ => 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} ; CNIntNP cn i = { s = \\c => cn.s ! Sg ! Dir ++ i.s ; - a = agrP3 cn.g Sg + a = agrP3 cn.g Sg; + isPron = False } ; CNSymbNP det cn xs = { 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 = { s = \\c => cn.s ! Sg ! Dir ++ i.s ; - a = agrP3 cn.g Sg + a = agrP3 cn.g Sg; + isPron = False } ; SymbS sy = sy ; @@ -42,6 +45,6 @@ oper -- not mauch we can do about that. addGenitiveS : Str -> Case => Str = \s -> table {_ => s ++ "دا" } ; --} + } diff --git a/lib/src/punjabi/src/AdjectivePnb.gf b/lib/src/punjabi/src/AdjectivePnb.gf index 8286b4962..a351dc218 100644 --- a/lib/src/punjabi/src/AdjectivePnb.gf +++ b/lib/src/punjabi/src/AdjectivePnb.gf @@ -7,7 +7,8 @@ concrete AdjectivePnb of Adjective = CatPnb ** open ResPnb, Prelude in { UseComparA a = a; 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$. diff --git a/lib/src/punjabi/src/IdiomPnb.gf b/lib/src/punjabi/src/IdiomPnb.gf index 931fc6e35..20434c607 100644 --- a/lib/src/punjabi/src/IdiomPnb.gf +++ b/lib/src/punjabi/src/IdiomPnb.gf @@ -16,7 +16,8 @@ concrete IdiomPnb of Idiom = CatPnb ** open Prelude,Predef, ResPnb in { ExistNP np = 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 = 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) ; - 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" ++ infVP True vp (agrP1 Masc Pl)} ; + 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"}; + } diff --git a/lib/src/punjabi/src/LexiconPnb.gf b/lib/src/punjabi/src/LexiconPnb.gf index c6e7c1f08..a4b10eaa4 100644 --- a/lib/src/punjabi/src/LexiconPnb.gf +++ b/lib/src/punjabi/src/LexiconPnb.gf @@ -80,7 +80,7 @@ concrete LexiconPnb of Lexicon = CatPnb ** floor_N = mkN02 "frX" ; forget_V2 = mkV2 (mkV "bh'wlna") "nwN" ; -- fridge_N = mkN "fryg" ; - friend_N = mkN04 "dwst" ; + friend_N = mkN07 "yar" ; fruit_N = mkN02 "ph'l" ; -- fun_AV = mkAdj1V (regA "f?n") ; garden_N = mkN04 "baG" ; @@ -103,7 +103,7 @@ concrete LexiconPnb of Lexicon = CatPnb ** important_A = mkAdj1 "ahm" ; -- industry_N = mkN "Snet" feminine ; -- iron_N = mkN "lwha" ; --- king_N = mkN "badXah" ; + king_N = mkN01 "badXah" ; know_V2 = mkV2 (mkV "janna") ; know_VS = (mkV "janna") ; know_VQ = (mkV "janna") ; @@ -119,7 +119,7 @@ concrete LexiconPnb of Lexicon = CatPnb ** lose_V2 = mkV2 (compoundV "kh'w" (mkV "dyna")) ; love_N = mkN02 "mHbt" ; 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" ; meat_N = mkN02 "gwXt" ; -- milk_N = mkN "dwdh'" ; @@ -135,7 +135,7 @@ concrete LexiconPnb of Lexicon = CatPnb ** open_V2 = mkV2 (mkV "kh'wlna") ; paint_V2A = mkV2 (compoundV "rng" do_V2) ; -- paper_N = mkN "kaGz" ; --- paris_PN = mkPN "pyrs" ; + paris_PN = mkPN "pyrs" masculine; -- peace_N = mkN "amn" ; pen_N = mkN04 "pnsl" ; planet_N = mkN01 "syarh" ; @@ -148,7 +148,7 @@ concrete LexiconPnb of Lexicon = CatPnb ** -- radio_N = mkN "ryDyw" ; rain_V0 = compoundV "barX" (mkV "hwna" ) ; read_V2 = mkV2 (mkV "pRh'na"); - red_A = mkAdj1 "lal" ; + red_A = mkAdj3 "lal" ; -- worst case -- religion_N = mkN "mzhb" ; -- restaurant_N = mkN "hwTl" ; -- river_N = mkN "drya" masculine ; @@ -211,14 +211,14 @@ concrete LexiconPnb of Lexicon = CatPnb ** -- window_N = mkN "kh'Rky" ; wine_N = mkN04 "Xrab"; win_V2 = mkV2 (mkV "jytna") ; - woman_N = mkN04 "ewrt" ; - wonder_VQ = compoundV "Heran" (mkV "hwna") ; + woman_N = mkN04 "znany" ; + wonder_VQ = compoundV "Hyran" (mkV "hwna") ; wood_N = mkN04 "lkRy" ; write_V2 = mkV2 (mkV "lkh'na") ; yellow_A = mkAdj1 "kh'Ta" ; young_A = mkAdj1 "jwan" ; do_V2 = mkV2 (mkV "krna") ; --- now_Adv = mkAdj1dv "ab" ; + now_Adv = mkAdv "hwn" ; -- already_Adv = mkAdj1dv "phlE?hy" ; song_N = mkN01 "gana" ; add_V3 = mkV3 (compoundV "wadh'a" do_V2) "" "" ; @@ -360,11 +360,11 @@ concrete LexiconPnb of Lexicon = CatPnb ** -- rule_N = mkN "aSwl" ; ---- added 4/6/2007 - john_PN = mkPN "jan" ; + john_PN = mkPN "jan" masculine ; -- question_N = mkN "swal" ; -- ready_A = regA "ready" ; -- reason_N = mkN "wjh" feminine ; --- today_Adv = mkAdj1dv "aj" ; + today_Adv = mkAdv "aj" ; -- uncertain_A = mkAdj1 ["Gyr?yqyny"] ; diff --git a/lib/src/punjabi/src/MorphoPnb.gf b/lib/src/punjabi/src/MorphoPnb.gf index bb630f546..ab859ac23 100644 --- a/lib/src/punjabi/src/MorphoPnb.gf +++ b/lib/src/punjabi/src/MorphoPnb.gf @@ -110,6 +110,11 @@ oper mkN11 x = mkN x x x x x x x "" Fem ; + -- 12 Masc no inflection + mkN12 : Str -> Noun ; + mkN12 x = mkN x x x x + x x x "" + Masc ; ----2 Determiners @@ -135,7 +140,20 @@ oper Fem => s2 }; 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 diff --git a/lib/src/punjabi/src/NumeralPnb.gf b/lib/src/punjabi/src/NumeralPnb.gf index b30ab6db6..e899216d3 100644 --- a/lib/src/punjabi/src/NumeralPnb.gf +++ b/lib/src/punjabi/src/NumeralPnb.gf @@ -42,13 +42,13 @@ oper mkNum : Str -> Str -> DSize -> LinDigit = {s = table {unit => do ; ten => bis } ; size = sz ; n = Pl} ; -lin n2 = mkNum "dw" "vy" r2 ; +lin n2 = mkNum "dw" "wy" r2 ; lin n3 = mkNum "tn" "try" r3 ; lin n4 = mkNum "car" "caly" r4 ; 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 n8 = mkNum "aTh-" "asy" r8; +lin n8 = mkNum "aTh'" "asy" r8; 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 { @@ -69,7 +69,7 @@ oper rows : DSize => DSize => Str = table { r3 => mkR "tyr" "ty" "tyt" "tnt" "trt" "trw" "tyh" "tyr" "tr" ; r4 => mkR "cwd" "cwb" "cwt" "cwa" "cwt" "cwr" "cwh" "cwr" "cwr" ; 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" ; r8 => mkR "aTh'ar" "aTh'a" "aTh't" "aRt" "aTh'w" "aTh'a" "aTh'" "aTh'" "aTh'" ; r9 => table {sg => "any" ; r2 => "anty" ; r3 => "antaly" ; diff --git a/lib/src/punjabi/src/QuestionPnb.gf b/lib/src/punjabi/src/QuestionPnb.gf index b70a5bf20..743104a08 100644 --- a/lib/src/punjabi/src/QuestionPnb.gf +++ b/lib/src/punjabi/src/QuestionPnb.gf @@ -16,7 +16,7 @@ concrete QuestionPnb of Question = CatPnb ** open ResPnb, Prelude in { qp1 = qp.s ! Dir; qp2 = qp.s ! Obl ++ "nE" 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 } }; @@ -64,7 +64,7 @@ concrete QuestionPnb of Question = CatPnb ** open ResPnb, Prelude in { } ; IdetQuant iqant num = { - s = \\g => iqant.s ! num.n ++ num.s ; + s = \\g => iqant.s ! num.n ! g ++ num.s ; n = num.n } ; diff --git a/lib/src/punjabi/src/RelativePnb.gf b/lib/src/punjabi/src/RelativePnb.gf index ae03d7721..54ce264bb 100644 --- a/lib/src/punjabi/src/RelativePnb.gf +++ b/lib/src/punjabi/src/RelativePnb.gf @@ -6,23 +6,26 @@ concrete RelativePnb of Relative = CatPnb ** open ResPnb in { lin RelCl cl = { - s = \\t,p,o,agr => case of { - => "js" ++ cl.s ! t ! p ! o ; - => "jn" ++ cl.s ! t ! p ! o ; - <_,_> => "jw" ++ cl.s ! t ! p ! o + s = \\t,p,o,agr => case of { + => "jnE" ++ cl.s ! t ! p ! o ; + => "jnaN" ++ 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 } ; -- 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 => let agr = case rp.a of { RNoAg => ag ; 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 { -- 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"). -- 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 ; -- _ => rp.s ! (giveNumber agr) Dir ++ slash.c2.s ++ slash.s ! t ! p ! o -- }; c = Dir } ; --} + 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 } ; IdRP = { s = table { Sg => table { + Masc => table { - ResPnb.Dir => "jeRa" ; - ResPnb.Obl => "jeRE" ; - ResPnb.Voc => "jeRE" ; - ResPnb.Abl => "jeRE" + ResPnb.Dir => "jyRa" ; + ResPnb.Obl => "jn" ; + ResPnb.Voc => "jyRE" ; + ResPnb.Abl => "jyRE" }; - Pl => table { - ResPnb.Dir => "jeRE" ; - ResPnb.Obl => "jeRE" ; - ResPnb.Voc => "jeRE" ; - ResPnb.Abl => "jeRE" + Fem => table { + + ResPnb.Dir => "jyRy" ; + ResPnb.Obl => "jn" ; + 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 } ; diff --git a/lib/src/punjabi/src/ResPnb.gf b/lib/src/punjabi/src/ResPnb.gf index 5c24f2b40..0b17c1c57 100644 --- a/lib/src/punjabi/src/ResPnb.gf +++ b/lib/src/punjabi/src/ResPnb.gf @@ -83,6 +83,9 @@ resource ResPnb = ParamX ** open Prelude,Predef in { -- mkAdj2 : Str -> Adjective2 ; -- mkAdj2 romii = cmnAdj romii romii (romii+"a") (romii+"ywN") -- 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} = \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 VPPerf (Ag g n p) => { fin = [] ; inf = verb.s ! Root ++ cka g n } ; 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} }; obj = {s = [] ; a = defaultAgr} ; @@ -329,7 +334,7 @@ oper (mkAdj1 "pya").s ! n ! g ! Dir ; cka : Gender -> Number -> Str = \g,n -> - (mkAdj1 "cka").s ! n ! g ! Dir ; + (mkAdj1 "gya").s ! n ! g ! Dir ; hw : PPerson -> Number -> Str = \pp,n -> case of { diff --git a/lib/src/punjabi/src/StructuralPnb.gf b/lib/src/punjabi/src/StructuralPnb.gf index cd0116aed..45ea319d2 100644 --- a/lib/src/punjabi/src/StructuralPnb.gf +++ b/lib/src/punjabi/src/StructuralPnb.gf @@ -17,7 +17,7 @@ concrete StructuralPnb of Structural = CatPnb ** behind_Prep = ss "pych'E" ; between_Prep = ss "wckar" ; both7and_DConj = sd2 "dwwyN" "tE" ** {n = Pl} ; - but_PConj = ss "lykn" ; + but_PConj = ss "mgr" ; by8agent_Prep = ss "" ; by8means_Prep = ss "" ; can8know_VV,can_VV = mkV "skna" ** { isAux = True} ; @@ -31,7 +31,7 @@ concrete StructuralPnb of Structural = CatPnb ** first_Ord = {s = "pehla" ; n = Sg} ; --DEPRECATED for_Prep = ss "[dE wast-E]" ; 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" ; here7to_Adv = mkAdv "ayth'E" ; here7from_Adv = mkAdv "ayth'wN" ; @@ -64,53 +64,54 @@ concrete StructuralPnb of Structural = CatPnb ** no_Utt = ss "nyN" ; on_Prep = ss "atE" ; one_Quant = demoPN "ak" "ak" "ak" ; -- DEPRECATED - only_Predet = ss "srf" ; + only_Predet = ss "Srf" ; or_Conj = sd2 [] "ya" ** {n = Sg} ; otherwise_PConj = ss "ya fyr" ; part_Prep = ss "hSh" ; please_Voc = ss "mhrbani" ; possess_Prep = ss "da" ; 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" ; somebody_NP = MassNP (UseN (MorphoPnb.mkN11 "kwy" )); someSg_Det = mkDet "kch'" "kch'" "kch'" "kch'" Sg ; somePl_Det = mkDet "kch'" "kch'" "kch'" "kch'" Pl ; something_NP = MassNP (UseN (MorphoPnb.mkN11 "kwy XE")); somewhere_Adv = mkAdv "ktlE" ; - that_Quant = demoPN "wh" "as" "an" ; + that_Quant = demoPN "aw" "as" "an" ; that_Subj = ss "kh"; there_Adv = mkAdv "awth'E" ; there7to_Adv = mkAdv "awth'E" ; there7from_Adv = mkAdv "awth'wN" ; therefore_PConj = ss "as ly" ; - they_Pron = personalPN "aw" "[awnaN nwN]" "aw" "" "awnaN da" Pl Masc Pers3_Distant ; ---- - this_Quant = demoPN "yh" "as" "an"; + they_Pron = personalPN "aw" "[awnaN nwN]" "aw" "awnaN" "awnaN da" Pl Masc Pers3_Distant ; ---- + this_Quant = demoPN "aE" "ayra" "aynaN"; through_Prep = ss "wcwN" ; 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 = <>}; very_AdA = ss "bht" ; want_VV = mkV "cana" ** { isAux = False} ; 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 ; when_IAdv = ss "kdwN" ; when_Subj = ss "kdwN" ; 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" ; -- 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 ; why_IAdv = ss "kywN" ; without_Prep = ss ["twN bGyr"] ; with_Prep = ss ["dE nal"] ; -- yes_Phr = ss "haN" ; yes_Utt = ss "haN" ; - youSg_Pron = personalPN "twN" "tynwN" "tynwN" "tytwN" "twwaDa" Sg Masc Pers2_Casual ; - youPl_Pron = personalPN "tsy" "twanwN" "twanwN" "twatwN" "twwaDa" Pl Masc Pers2_Casual ; - youPol_Pron = personalPN "tsy" "twanwN" "twanwN" "twatwN" "twwaDa" Sg Masc Pers2_Respect ; + youSg_Pron = personalPN "twN" "tynwN" "tynwN" "tyrE" "twwaDa" Sg Masc Pers2_Casual ; + youPl_Pron = personalPN "tsy" "twanwN" "twanwN" "twaDE" "twwaDa" Pl Masc Pers2_Casual ; + youPol_Pron = personalPN "tsy" "twanwN" "twanwN" "twaDE" "twwaDa" Sg Masc Pers2_Respect ; no_Quant = demoPN " kwy nhyN" "kwy nhyN" "kwy nhyN" ; not_Predet = {s="nhyN"} ; if_then_Conj = sd2 "agr" "tE" ** {n = Sg} ; diff --git a/lib/src/punjabi/src/VerbPnb.gf b/lib/src/punjabi/src/VerbPnb.gf index fa381f759..88d56b3bb 100644 --- a/lib/src/punjabi/src/VerbPnb.gf +++ b/lib/src/punjabi/src/VerbPnb.gf @@ -40,6 +40,7 @@ concrete VerbPnb of Verb = CatPnb ** open ResPnb in { CompAP ap ={s = \\a => ap.s ! giveNumber a ! giveGender a ! Dir } ; CompNP np = {s = \\_ => np.s ! NPObj} ; CompAdv adv = {s = \\a => adv.s ! (fromAgr a).g } ; + CompCN cn = {s = \\a => cn.s ! giveNumber a ! Dir} ; }