hindi-resource-grammar

This commit is contained in:
virk.shafqat
2012-02-23 13:36:50 +00:00
parent f1d2852c4d
commit 9aede98c7f
52 changed files with 2166 additions and 1991 deletions

View File

@@ -1,2 +1,2 @@
concrete CatUrd of Cat = CommonX - [Adv,AdN] ** CatHindustani with
concrete CatUrd of Cat = CommonX - [Adv,AdN,SC] ** CatHindustani with
(ResHindustani = ResUrd) ;

View File

@@ -4,8 +4,8 @@
--
-- This module contains operations that are needed to make the
-- resource syntax work.
resource CommonHindustani = ParamX ** open Prelude,Predef in {
resource CommonHindustani = ParamX ** open Prelude, Predef in {
--interface CommonHindustani = ParamX ** open Prelude,Predef,StringsHindustani1 in {
flags coding = utf8 ;
oper
@@ -71,105 +71,8 @@ resource CommonHindustani = ParamX ** open Prelude,Predef in {
NPCase = NPC Case | NPObj | NPErg ;
Order = ODir | OQuest ;
oper
copula : CTense -> Number -> UPerson -> Gender -> Str = \t,n,p,g ->
case <t,n,p,g> of {
<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 > => "تh-ا" ;
<CPast,Sg,Pers2_Familiar,Fem > => "تھی" ;
<CPast,Sg,Pers2_Respect,Masc > => "تھے" ;
<CPast,Sg,Pers2_Respect,Fem > => "تھیں" ;
<CPast,Sg,Pers3_Near,Masc > => "تh-ا" ;
<CPast,Sg,Pers3_Near,Fem > => "تھی" ;
<CPast,Sg,Pers3_Distant,Masc > => "تh-ا" ;
<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 > => "گی" ;
<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 > => "گی"
} ;
raha : Gender -> Number -> Str = \g,n ->
(regAdjective "رہا").s ! n ! g ! Dir ! Posit ;
cka : Gender -> Number -> Str = \g,n ->
(regAdjective "چكا").s ! n ! g ! Dir ! Posit ;
hw : UPerson -> Number -> Str = \pp,n ->
case <pp,n> of {
<Pers1,_> => "ہوں";
<_,Pl> => "ہوں";
<_,_> => "ہو"
};
-----------------------------------------------
-- Hindustani Adjectives
-----------------------------------------------
Adjective = { s: Number => Gender => Case => Degree => Str };
regAdjective : Str -> Adjective;
regAdjective x = case x of {
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)
x ("بہت" ++ x) ("سب سے" ++ x) x ("بہت" ++ x) ("سب سے" ++ x) x ("بہت" ++ x) ("سب سے" ++ x)
x ("بہت" ++ x) ("سب سے" ++ x) x ("بہت" ++ x) ("سب سے" ++ x) x ("بہت" ++ x) ("سب سے" ++ x)
};
oper
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 -> {
@@ -249,34 +152,10 @@ resource CommonHindustani = ParamX ** open Prelude,Predef in {
}
};
compoundAdj : Str -> Str -> Adjective = \s1,s2 -> mkCompoundAdj (regAdjective s1) (regAdjective s2) ;
mkCompoundAdj : Adjective -> Adjective -> Adjective ;
mkCompoundAdj adj1 adj2 = {s = \\n,g,c,d => adj1.s ! n ! g ! c ! d ++ adj2.s ! n ! g ! c ! d} ;
Adjective = { s: Number => Gender => Case => Degree => Str };
Verb : Type = {s : VerbForm => Str} ;
predV : Verb -> VPH ;
predV v = {
s = \\vh =>
case vh of {
VPTense VPPres (Ag g n p) => {fin = copula CPresent n p g ; inf = v.s ! VF Imperf p n g } ;
VPTense VPPast (Ag g n p) => {fin = [] ; inf =v.s ! VF Perf p n g} ;
VPTense VPFutr (Ag g n p) => {fin = copula CFuture n p g ; inf = v.s ! VF Subj p n g } ;
VPTense VPPerf (Ag g n p) => { fin = [] ; inf = v.s ! Root ++ cka g n } ;
VPStem => {fin = [] ; inf = v.s ! Root};
VPInf => {fin = v.s ! Inf_Obl ; inf = v.s ! Root}; -- for V2V like sonE ky altja krna , check if it is being used anywhere else
VPImp => {fin = v.s ! VF Subj Pers3_Near Pl Masc ; inf = v.s ! Root};
_ => {fin = [] ; inf = v.s ! Root}
};
obj = {s = [] ; a = defaultAgr} ;
subj = VIntrans ;
inf = v.s ! Inf;
ad = [];
embComp = [];
prog = False ;
comp = \\_ => []
} ;
defaultAgr : Agr = agrP3 Masc Sg ;
agrP3 : Gender -> Number -> Agr = \g,n -> Ag g n Pers3_Distant ;
toAgr : Number -> UPerson -> Gender -> Agr = \n,p,g ->
@@ -300,8 +179,9 @@ resource CommonHindustani = ParamX ** open Prelude,Predef in {
giveGender : Agr -> Gender =\a -> case a of {
Ag g _ _ => g
};
insertSubj : UPerson -> Str -> Str = \p,s ->
case p of { Pers1 => s ++ "وں" ; _ => s ++ "ے"};
-- insertSubj : UPerson -> Str -> Str = \p,s ->
-- case p of { Pers1 => s ++ "وں" ; _ => s ++ "ے"};
mkOrd : Str -> Str =
\s -> case s of {
@@ -311,6 +191,7 @@ resource CommonHindustani = ParamX ** open Prelude,Predef in {
"چار" => "چوتھا";
"چھ" => "چھٹا";
_ => s ++ "واں"
};
};
}

View File

@@ -112,4 +112,137 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
_ => ppf ! Dir ++ "نے"
}
} ;
conjThat = "كہ" ;
insertSubj : UPerson -> Str -> Str = \p,s ->
case p of { Pers1 => s ++ "واں" ; _ => s ++ "ے"}; -- check with prasad for vn~
agr = "اگر" ;
awr = "اور" ;
ky = "كی" ;
jn = "جن" ;
js = "جس" ;
jw = "جو" ;
kw = "كو" ;
mt = "مت" ;
nE = "نے" ;
nh = "نا" ;
sE = "سے" ;
waN = "واں" ;
hE = "ہے" ;
comma = "," ;
indfArt = "اك" ;
kwd = "خود" ;
copula : CTense -> Number -> UPerson -> Gender -> Str = \t,n,p,g ->
case <t,n,p,g> of {
<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 > => "تh-ا" ;
<CPast,Sg,Pers2_Familiar,Fem > => "تھی" ;
<CPast,Sg,Pers2_Respect,Masc > => "تھے" ;
<CPast,Sg,Pers2_Respect,Fem > => "تھیں" ;
<CPast,Sg,Pers3_Near,Masc > => "تh-ا" ;
<CPast,Sg,Pers3_Near,Fem > => "تھی" ;
<CPast,Sg,Pers3_Distant,Masc > => "تh-ا" ;
<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 > => "گی" ;
<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 > => "گی"
} ;
raha : Gender -> Number -> Str = \g,n ->
(regAdjective "رہا").s ! n ! g ! Dir ! Posit ;
cka : Gender -> Number -> Str = \g,n ->
(regAdjective "چكا").s ! n ! g ! Dir ! Posit ;
hw : UPerson -> Number -> Str = \pp,n ->
case <pp,n> of {
<Pers1,_> => "ہوں";
<_,Pl> => "ہوں";
<_,_> => "ہو"
};
hwa : Agr -> Str = \agr ->
let n = (fromAgr agr).n;
p = (fromAgr agr).p;
g = (fromAgr agr).g;
in
case <n,g> of {
<Sg,Masc> => "ہوا";
<Sg,Fem> => "ہوی";
<Pl,Masc> => "ہوے" ;
<Pl,Fem> => "ہوی"
};
-----------------------------------------------
-- Hindustani Adjectives
-----------------------------------------------
Adjective = { s: Number => Gender => Case => Degree => Str };
regAdjective : Str -> Adjective;
regAdjective x = case x of {
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)
x ("بہت" ++ x) ("سب سے" ++ x) x ("بہت" ++ x) ("سب سے" ++ x) x ("بہت" ++ x) ("سب سے" ++ x)
x ("بہت" ++ x) ("سب سے" ++ x) x ("بہت" ++ x) ("سب سے" ++ x) x ("بہت" ++ x) ("سب سے" ++ x)
};
}

View File

@@ -11,10 +11,10 @@
RelativeUrd,
ConjunctionUrd,
PhraseUrd,
TextUrd - [Adv,AdN],
TextUrd - [Adv,AdN,SC],
-- TextX - [Adv,AdN],
StructuralUrd,
TenseX - [Adv,AdN],
TenseX - [Adv,AdN,SC],
IdiomUrd
** {

View File

@@ -119,7 +119,7 @@ concrete LexiconUrd of Lexicon = CatUrd **
love_N = mkN "محبت" ;
love_V2 = mkV2 (compoundV "پیار" do_V2) "كو";
man_N = mkN "آدمی" "آدمی" "آدمی" "آدمی" "آدمیوں" "آدمیو" masculine ;
married_A2 = mkA "[شادی كرنa]" "سے" ;
married_A2 = mkA "شادی شدہ" "سے" ;
meat_N = mkN "گوشت" ;
milk_N = mkN "دودھ" ;
moon_N = mkN "چاند" ;
@@ -162,7 +162,7 @@ concrete LexiconUrd of Lexicon = CatUrd **
seek_V2 = mkV2 (compoundV "تلاش" do_V2) ;
see_V2 = mkV2 (mkV "دیكھنا") ;
sell_V3 = mkV3 (mkV "بیچنا") "كو" "";
send_V3 = mkV3 (mkV "بھیجنا") "كو" "كو";
send_V3 = mkV3 (mkV "بھیجنا") "كو" "";
sheep_N = mkN "بھیڑ" feminine ;
ship_N = mkN "جہاز" ;
shirt_N = mkN "قمیص" feminine;
@@ -352,7 +352,7 @@ concrete LexiconUrd of Lexicon = CatUrd **
wash_V2 = mkV2 (mkV "دھونا") ;
wipe_V2 = mkV2 (compoundV "صاف" (mkV "كرنا" ));
---- other_A = regA "?تہعر" ;
---- other_A = regA "؟تہعر" ;
grammar_N = mkN "گردان" ;
language_N = mkN "زبان" feminine ;
@@ -361,7 +361,7 @@ concrete LexiconUrd of Lexicon = CatUrd **
---- added 4/6/2007
john_PN = mkPN "جان" ;
question_N = mkN "سوال" ;
-- ready_A = regA "رعادی" ;
ready_A = mkA "تیار" ;
reason_N = mkN "وجہ" feminine ;
today_Adv = mkAdv "آج" ;
uncertain_A = mkA ["غیریقینی"] ;

View File

@@ -50,7 +50,7 @@ param
eq : Str -> Str -> Bool = \s1,s2-> (pbool2bool (eqStr s1 s2)) ;
RefPron : Str;
RefPron = "خود";
RefPron = kwd ;
----------------------------------------------------------
-- Grammar part
@@ -60,47 +60,23 @@ param
toNP : ( Case => Str) -> NPCase -> Str = \pn, npc -> case npc of {
NPC c => pn ! c ;
NPObj => pn ! Dir ;
NPErg => pn ! Obl ++ "نے"
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 ! c ; --changed while phrasebook e.g tyry beti where gender of determiner 'tyry' should be dependent on gender of common noum e.g 'beti'
NPC c => dt.s ! nn ! cn.g ! c ++ cn.s ! nn ! c ;
NPObj => dt.s ! nn ! cn.g ! Obl ++ cn.s ! nn ! Dir ;
NPErg => dt.s ! nn ! cn.g ! Obl ++ cn.s ! nn ! Obl ++ "نے"
NPErg => dt.s ! nn ! cn.g ! Obl ++ cn.s ! nn ! Obl ++ nE
} ;
det2NP : (Determiner) -> NPCase -> Str = \dt,npc -> case npc of {
NPC c => dt.s ! Sg ! Masc ! c ;
NPObj => dt.s ! Sg ! Masc ! Dir ;
NPErg => dt.s ! Sg ! Masc ! Obl ++ "نے"
NPErg => dt.s ! Sg ! Masc ! Obl ++ 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 ;
@@ -121,6 +97,7 @@ param
objVType : VType -> NPCase = \vt -> case vt of {
VTrans => NPObj ;
VTransPost => NPC Dir ;
_ => NPC Obl
} ;
@@ -131,14 +108,28 @@ param
predVc : (Verb ** {c2,c1 : Str}) -> VPHSlash = \verb ->
predV verb ** {c2 = {s = verb.c1 ; c = VTrans} } ;
{-
-------------------------
-- added for cauitives
predVcc : (Verb **{c2:Compl}) -> VPHSlash = \verb ->
predV verb ** {c2 = {s = "" ; c = VTrans} } ;
------------------------
-}
predAux : Aux -> VPH = \verb -> {
predV : Verb -> VPH ;
predV v = {
s = \\vh =>
case vh of {
VPTense VPPres (Ag g n p) => {fin = copula CPresent n p g ; inf = v.s ! VF Imperf p n g } ;
VPTense VPPast (Ag g n p) => {fin = [] ; inf =v.s ! VF Perf p n g} ;
VPTense VPFutr (Ag g n p) => {fin = copula CFuture n p g ; inf = v.s ! VF Subj p n g } ;
VPTense VPPerf (Ag g n p) => { fin = [] ; inf = v.s ! Root ++ cka g n } ;
VPStem => {fin = [] ; inf = v.s ! Root};
VPInf => {fin = v.s ! Inf_Obl ; inf = v.s ! Root}; -- for V2V like sonE ky altja krna , check if it is being used anywhere else
VPImp => {fin = v.s ! VF Subj Pers3_Near Pl Masc ; inf = v.s ! Root};
_ => {fin = [] ; inf = v.s ! Root}
};
obj = {s = [] ; a = defaultAgr} ;
subj = VIntrans ;
inf = v.s ! Inf;
ad = [];
embComp = [];
prog = False ;
comp = \\_ => []
} ;
predAux : Aux -> VPH = \verb -> {
s = \\vh =>
let
@@ -191,107 +182,6 @@ param
comp = verb.comp
} ;
{- 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 => case vp.prog of { True => {fin = (vp.s ! VPTense VPFutr agr).fin ; inf = (vp.s ! VPTense VPFutr agr).inf ++ hw p n} ;
_ => 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 ! VPTense VPPerf agr).inf } ;
VPPerfPast => {fin = copula CPast n p g ; inf = (vp.s ! VPTense VPPerf agr).inf } ;
VPPerfFut => {fin = copula CFuture n p g ; inf = (vp.s ! VPTense VPPerf agr).inf ++ 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 => case vp.prog of { True => {fin = (vp.s ! VPTense VPFutr agr).inf ++ hw p n ; inf = "شاید" } ;
_ => {fin = (vp.s ! VPTense VPFutr agr).inf ; inf = "شاید" } }
};
quest =
case ord of
{ ODir => [];
OQuest => "كیا" };
na =
case b of
{ Pos => [];
Neg => "نا" };
nahim =
case b of
{ Pos => [];
Neg => "نہیں" };
in
case vt of {
VPSubj => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ na ++ vps.inf ++ vps.fin ++ vp.embComp ;
_ => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp};
} ;
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 = "شاید" }
};
quest =
case ord of
{ ODir => [];
OQuest => "كیا" };
na =
case b of
{ Pos => [];
Neg => "نا" };
nahim =
case b of
{ Pos => [];
Neg => "نہیں" };
in
case t of {
VPSubj => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ na ++ vps.inf ++ vps.fin ++ vp.embComp;
_ => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp};
} ;
-}
-- insertSubj : UPerson -> Str -> Str = \p,s ->
-- case p of { Pers1 => s ++ "وں" ; _ => s ++ "ے"};
insertObj : (Agr => Str) -> VPH -> VPH = \obj1,vp -> {
s = vp.s ;
@@ -326,19 +216,18 @@ param
} ;
insertObjc : (Agr => Str) -> VPHSlash -> VPHSlash = \obj,vp ->
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.obj.s ++ vp.inf ; True => vp.obj.s ++ (vp.s ! VPImp).fin };
vp.obj.s ++ vp.comp ! a ++ vp.inf ;
infVV : Bool -> VPH -> Str = \isAux,vp ->
case isAux of {False => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ vp.inf ; True => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ (vp.s ! VPImp).fin } ;
case isAux of {False => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ vp.inf ; True => (vp.s ! VPImp).inf ++ vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) } ;
infV2V : Bool -> VPH -> Str = \isAux,vp ->
case isAux of {False => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ (vp.s ! VPInf).fin ++ "كی" ; True => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ (vp.s ! VPImp).fin ++ "كی"};
case isAux of {False => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ (vp.s ! VPInf).fin ++ ky ; True => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ (vp.s ! VPImp).fin ++ ky};
insertObject : NP -> VPHSlash -> VPH = \np,vps -> {
@@ -374,7 +263,7 @@ param
comp = vp.comp
} ;
conjThat : Str = "كہ" ;
-- conjThat : Str = "كہ" ;
insertEmbCompl : VPH -> Str -> VPH = \vp,emb -> {
s = vp.s ;
@@ -395,7 +284,12 @@ param
embComp = vp.embComp ;
prog = vp.prog ;
comp = vp.comp
} ;
} ;
compoundAdj : Str -> Str -> Adjective = \s1,s2 -> mkCompoundAdj (regAdjective s1) (regAdjective s2) ;
mkCompoundAdj : Adjective -> Adjective -> Adjective ;
mkCompoundAdj adj1 adj2 = {s = \\n,g,c,d => adj1.s ! n ! g ! c ! d ++ adj2.s ! n ! g ! c ! d} ;
}

View File

@@ -10,7 +10,7 @@ oper
jw = "جو" ;
kw = "كو" ;
mt = "مت" ;
nE = "نے" ;
-- nE = "نے" ;
nh = "نہ" ;
sE = "سے" ;
waN = "واں" ;

View File

@@ -5,7 +5,7 @@ concrete StructuralUrd of Structural = CatUrd **
coding = utf8;
lin
above_Prep = mkPrep "اوپر" "اوپر" ;
above_Prep = mkPrep ["كے اوپر"] ["كے اوپر"] ;
after_Prep = mkPrep ["كے بعد"] ["كے بعد"] ;
all_Predet = ss "تمام" ;
almost_AdA, almost_AdN = mkAdN "تقریبا" ;
@@ -13,8 +13,8 @@ concrete StructuralUrd of Structural = CatUrd **
always_AdV = ss "ہمیشہ" ;
and_Conj = sd2 [] "اور" ** {n = Pl} ;
because_Subj = ss "كیونكہ" ;
before_Prep = mkPrep "پہلے" "پہلے" ;
behind_Prep = mkPrep "پیچھے" "پیچھے" ;
before_Prep = mkPrep ["سے پہلے"] ["سے پہلے"] ;
behind_Prep = mkPrep ["كے پیچھے"] ["كے پیچھے"] ;
between_Prep = mkPrep "درمیاں" "درمیاں" ;
both7and_DConj = sd2 "دونوں" "اور" ** {n = Pl} ;
but_PConj = ss "لیكن" ;

View File

@@ -1,6 +1,6 @@
concrete TextUrd of Text = CommonX - [Temp,TTAnt,Tense,TPres,TPast,TFut,TCond] ** {
-- This works for the special punctuation marks of Urdu but still browser does not display them well so left balnk.
-- This works for the special punctuation marks of Urdu.
lin
TEmpty = {s = []} ;

View File

@@ -112,4 +112,137 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
_ => ppf ! Dir ++ "nE"
}
} ;
conjThat = "kh" ;
insertSubj : UPerson -> Str -> Str = \p,s ->
case p of { Pers1 => s ++ "waN" ; _ => s ++ "E"}; -- check with prasad for vn~
agr = "agr" ;
awr = "awr" ;
ky = "ky" ;
jn = "jn" ;
js = "js" ;
jw = "jw" ;
kw = "kw" ;
mt = "mt" ;
nE = "nE" ;
nh = "na" ;
sE = "sE" ;
waN = "waN" ;
hE = "hE" ;
comma = "," ;
indfArt = "ak" ;
kwd = "Kwd" ;
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 > => "gy" ;
<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"
} ;
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"
};
hwa : Agr -> Str = \agr ->
let n = (fromAgr agr).n;
p = (fromAgr agr).p;
g = (fromAgr agr).g;
in
case <n,g> of {
<Sg,Masc> => "hwa";
<Sg,Fem> => "hwy";
<Pl,Masc> => "hwE" ;
<Pl,Fem> => "hwy"
};
-----------------------------------------------
-- Hindustani Adjectives
-----------------------------------------------
Adjective = { s: Number => Gender => Case => Degree => Str };
regAdjective : Str -> Adjective;
regAdjective x = case x of {
acch + ("a"|"aN") => mkAdjective x ("bht" ++ x) ("sb sE" ++ x) (acch + "E") ("bht" ++ acch + "E") ("sb sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sb sE" ++ acch + "E")
(acch + "y") ("bht" ++ acch + "y") ("sb sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sb sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sb sE" ++ acch + "y")
(acch +"E") ("bht" ++ acch + "E") ("sb sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sb sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sb sE" ++ acch + "E")
(acch + "y") ("bht" ++ acch + "y") ("sb sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sb sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sb sE" ++ acch + "y");
_ => mkAdjective x ("bht" ++ x) ("sb sE" ++ x) x ("bht" ++ x) ("sb sE" ++ x) x ("bht" ++ x) ("sb sE" ++ x)
x ("bht" ++ x) ("sb sE" ++ x) x ("bht" ++ x) ("sb sE" ++ x) x ("bht" ++ x) ("sb sE" ++ x)
x ("bht" ++ x) ("sb sE" ++ x) x ("bht" ++ x) ("sb sE" ++ x) x ("bht" ++ x) ("sb sE" ++ x)
x ("bht" ++ x) ("sb sE" ++ x) x ("bht" ++ x) ("sb sE" ++ x) x ("bht" ++ x) ("sb sE" ++ x)
};
}

View File

@@ -119,7 +119,7 @@ concrete LexiconUrd of Lexicon = CatUrd **
love_N = mkN "mHbt" ;
love_V2 = mkV2 (compoundV "pyar" do_V2) "kw";
man_N = mkN "Admy" "Admy" "Admy" "Admy" "AdmywN" "Admyw" masculine ;
married_A2 = mkA "[Xady krna]" "sE" ;
married_A2 = mkA "Xady Xdh" "sE" ;
meat_N = mkN "gwXt" ;
milk_N = mkN "dwdh'" ;
moon_N = mkN "cand" ;
@@ -162,7 +162,7 @@ concrete LexiconUrd of Lexicon = CatUrd **
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" "kw";
send_V3 = mkV3 (mkV "bh'yjna") "kw" "";
sheep_N = mkN "bh'yR" feminine ;
ship_N = mkN "jhaz" ;
shirt_N = mkN "qmyS" feminine;
@@ -361,7 +361,7 @@ concrete LexiconUrd of Lexicon = CatUrd **
---- added 4/6/2007
john_PN = mkPN "jan" ;
question_N = mkN "swal" ;
-- ready_A = regA "ready" ;
ready_A = mkA "tyar" ;
reason_N = mkN "wjh" feminine ;
today_Adv = mkAdv "Aj" ;
uncertain_A = mkA ["Gyryqyny"] ;

View File

@@ -5,7 +5,7 @@ concrete StructuralUrd of Structural = CatUrd **
coding = utf8;
lin
above_Prep = mkPrep "awpr" "awpr" ;
above_Prep = mkPrep ["kE awpr"] ["kE awpr"] ;
after_Prep = mkPrep ["kE bed"] ["kE bed"] ;
all_Predet = ss "tmam" ;
almost_AdA, almost_AdN = mkAdN "tqryba" ;
@@ -13,8 +13,8 @@ concrete StructuralUrd of Structural = CatUrd **
always_AdV = ss "hmyXh" ;
and_Conj = sd2 [] "awr" ** {n = Pl} ;
because_Subj = ss "kywnkh" ;
before_Prep = mkPrep "phlE" "phlE" ;
behind_Prep = mkPrep "pych'E" "pych'E" ;
before_Prep = mkPrep ["sE phlE"] ["sE phlE"] ;
behind_Prep = mkPrep ["kE pych'E"] ["kE pych'E"] ;
between_Prep = mkPrep "drmyaN" "drmyaN" ;
both7and_DConj = sd2 "dwnwN" "awr" ** {n = Pl} ;
but_PConj = ss "lykn" ;
@@ -72,7 +72,7 @@ concrete StructuralUrd of Structural = CatUrd **
possess_Prep = mkPrep "ka" "ky" ;
quite_Adv = ss "KamwX" ;
she_Pron = personalPN "wh" "as" "wh" ["as ky"] ["as ky"] ["as kE"] ["as ky"] Sg Fem Pers3_Distant ;
so_AdA = ss "[as lyE]" ;
so_AdA = ss "as lyE" ;
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 ;
@@ -89,7 +89,7 @@ concrete StructuralUrd of Structural = CatUrd **
through_Prep = mkPrep ["myN sE"] ["myN sE"] ;
too_AdA = ss "bht" ;
to_Prep = mkPrep "kw" "kw" ; -- ** {lock_Prep = <>};
under_Prep = mkPrep "nycE" "nycE" ; -- ** {lock_Prep = <>};
under_Prep = mkPrep "kE nycE" "kE nycE" ; -- ** {lock_Prep = <>};
very_AdA = ss "bht" ;
want_VV = mkV "cahna" ** { isAux = False} ;
we_Pron = personalPN "hm" "hm" "hm" "hmara" "hmary" "hmarE" "hmary" Pl Masc Pers1 ;
@@ -118,7 +118,7 @@ concrete StructuralUrd of Structural = CatUrd **
at_least_AdN = mkAdN ["km az km"] ;
at_most_AdN = mkAdN ["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 = mkPrep "swaE" "swaE" ;
except_Prep = mkPrep "kE swaE" "kE swaE" ;
nobody_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" Masc ));
as_CAdv = {s = "atna" ; p = "jtna"} ;