mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-13 23:09:31 -06:00
hindi-resource-grammar
This commit is contained in:
@@ -1,2 +1,2 @@
|
||||
concrete AdjectiveHin of Adjective = CatHin ** AdjectiveHindustani with
|
||||
(ResHindustani = ResHin) ;
|
||||
(ResHindustani = ResHin);
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
concrete AdverbHin of Adverb = CatHin ** AdverbHindustani with
|
||||
(ResHindustani = ResHin) ;
|
||||
(ResHindustani = ResHin);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -path=.:../abstract:../common:../prelude:../hindustani
|
||||
|
||||
concrete AllHin of AllHinAbs =
|
||||
LangHin,
|
||||
ExtraHin
|
||||
LangHin
|
||||
-- ExtraHin
|
||||
** {} ;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
abstract AllHinAbs =
|
||||
Lang,
|
||||
ExtraHinAbs
|
||||
Lang
|
||||
-- ExtraHinAbs
|
||||
** {} ;
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
concrete CatHin of Cat = CommonX - [Adv,AdN] ** CatHindustani with
|
||||
(ResHindustani = ResHin) ;
|
||||
concrete CatHin of Cat = CommonX - [Adv,AdN,SC] ** CatHindustani with
|
||||
(ResHindustani = ResHin);
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
instance DiffHin of DiffHindustani = open CommonHindustani, Prelude in {
|
||||
instance DiffHin of DiffHindustani = open CommonHindustani, ResHindustani,Prelude in {
|
||||
--instance DiffHin of DiffHindustani = CommonHindustani ** open Prelude in {
|
||||
flags coding = utf8;
|
||||
oper
|
||||
Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
|
||||
mkClause : NP -> VPH -> Clause = \np,vp -> {
|
||||
@@ -31,9 +33,9 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
|
||||
VPPerfFut => {fin = [] ; inf = Prelude.glue ((vp.s ! VPTense VPPerf agr).inf ++ hw p n) (copula CFuture n p g) } ;
|
||||
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 = [] ; inf = Prelude.glue ((vp.s ! VPTense VPPres agr).inf ++ raha g n ++ hw p n) (copula CFuture n p g )} ;
|
||||
VPSubj => case vp.prog of { True => {fin = (vp.s ! VPTense VPFutr agr).inf ++ hw p n ; inf = "Xयद" } ;
|
||||
_ => {fin = (vp.s ! VPTense VPFutr agr).inf ; inf = "Xयद" } }
|
||||
VPPerfFutCont => {fin = [] ; inf = Prelude.glue ((vp.s ! VPTense VPPres agr).inf ++ raha g n ++ hw p n) (copula CFuture n p g) } ;
|
||||
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 = "शायद" } }
|
||||
|
||||
};
|
||||
|
||||
@@ -41,7 +43,7 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
|
||||
quest =
|
||||
case ord of
|
||||
{ ODir => [];
|
||||
OQuest => "कय" };
|
||||
OQuest => "कया" };
|
||||
na =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
@@ -49,7 +51,7 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
|
||||
nahim =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "नहयं" };
|
||||
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 ;
|
||||
@@ -76,15 +78,15 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
|
||||
VPPerfFut => {fin = [] ; inf = Prelude.glue ((vp.s ! VPStem).inf ++ cka g n ++ hw p n) (copula CFuture n p g) } ;
|
||||
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 = [] ; inf = Prelude.glue ((vp.s ! VPStem).inf ++ raha g n ++ hw p n) (copula CFuture n p g ) } ;
|
||||
VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "xयद" }
|
||||
VPPerfFutCont => {fin = [] ; inf = Prelude.glue ((vp.s ! VPStem).inf ++ raha g n ++ hw p n) (copula CFuture n p g) } ;
|
||||
VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "शायद" }
|
||||
|
||||
};
|
||||
|
||||
quest =
|
||||
case ord of
|
||||
{ ODir => [];
|
||||
OQuest => "कय" };
|
||||
OQuest => "कया" };
|
||||
na =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
@@ -92,42 +94,159 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
|
||||
nahim =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "नहयं" };
|
||||
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};
|
||||
} ;
|
||||
|
||||
{- Verb : Type = {s : VerbForm => Str} ;
|
||||
|
||||
|
||||
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 = [] ; inf = Prelude.glue (v.s ! VF Subj p n g) (copula CFuture n p g)} ;
|
||||
VPTense VPPerf (Ag g n p) => { fin = [] ; inf = v.s ! Root ++ cka g n } ;
|
||||
VPStem => {fin = [] ; inf = v.s ! Root};
|
||||
_ => {fin = [] ; inf = v.s ! Root}
|
||||
};
|
||||
obj = {s = [] ; a = defaultAgr} ;
|
||||
subj = VIntrans ;
|
||||
inf = v.s ! Inf;
|
||||
ad = [];
|
||||
embComp = [];
|
||||
prog = False ;
|
||||
comp = \\_ => []
|
||||
} ;
|
||||
-}
|
||||
np2pronCase ppf npc a = case npc of {
|
||||
NPC c => ppf ! c;
|
||||
NPObj => ppf ! Obl ;
|
||||
NPErg =>case (fromAgr a).p of {
|
||||
(Pers3_Near|Pers3_Distant) => Prelude.glue (ppf ! Obl) "नै" ; -- in hindi in case of pronouns nE is tagged to pron rather than a separate word
|
||||
_ => Prelude.glue (ppf ! Dir) "नै"
|
||||
(Pers3_Near|Pers3_Distant) => Prelude.glue (ppf ! Obl) "ने" ; -- in hindi in case of pronouns nE is tagged to pron rather than a separate word
|
||||
_ => Prelude.glue (ppf ! Dir) "ने"
|
||||
}
|
||||
} ;
|
||||
conjThat = "कि" ;
|
||||
insertSubj : UPerson -> Str -> Str = \p,s ->
|
||||
case p of { Pers1 => s ++ "वाँ" ; _ => Prelude.glue s "ए"}; -- check with prasad for vn~
|
||||
|
||||
agr = "a-गर" ;
|
||||
awr = "और" ;
|
||||
ky = "की" ;
|
||||
jn = "जिन" ;
|
||||
js = "जिस" ;
|
||||
jw = "जो" ;
|
||||
kw = "को" ;
|
||||
mt = "मत" ;
|
||||
nE = "ने" ;
|
||||
nh = "न" ;
|
||||
sE = "से" ;
|
||||
waN = "वाँ" ; -- check with prasad
|
||||
hE = "हे" ;
|
||||
comma = "," ;
|
||||
indfArt = "एक" ; -- check with prasad
|
||||
kwd = "ख़ुद" ; -- check with prasad
|
||||
|
||||
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 > => "था" ;
|
||||
<CPast,Sg,Pers2_Familiar,Fem > => "थी" ;
|
||||
<CPast,Sg,Pers2_Respect,Masc > => "थे" ;
|
||||
<CPast,Sg,Pers2_Respect,Fem > => "थीं" ;
|
||||
<CPast,Sg,Pers3_Near,Masc > => "था" ;
|
||||
<CPast,Sg,Pers3_Near,Fem > => "थी" ;
|
||||
<CPast,Sg,Pers3_Distant,Masc > => "था" ;
|
||||
<CPast,Sg,Pers3_Distant,Fem > => "थी" ;
|
||||
<CPast,Pl,Pers1,Masc > => "थे" ;
|
||||
<CPast,Pl,Pers1,Fem > => "थीं" ;
|
||||
<CPast,Pl,Pers2_Casual,Masc > => "थे" ;
|
||||
<CPast,Pl,Pers2_Casual,Fem > => "थीं" ;
|
||||
<CPast,Pl,Pers2_Familiar,Masc > => "थे" ;
|
||||
<CPast,Pl,Pers2_Familiar,Fem > => "थीं" ;
|
||||
<CPast,Pl,Pers2_Respect,Masc > => "थे" ;
|
||||
<CPast,Pl,Pers2_Respect,Fem > => "थीं" ;
|
||||
<CPast,Pl,Pers3_Near,Masc > => "थे" ;
|
||||
<CPast,Pl,Pers3_Near,Fem > => "थीं" ;
|
||||
<CPast,Pl,Pers3_Distant,Masc > => "थे" ;
|
||||
<CPast,Pl,Pers3_Distant,Fem > => "थीं" ;
|
||||
<CFuture,Sg,Pers1,Masc > => "गा" ;
|
||||
<CFuture,Sg,Pers1,Fem > => "गी" ;
|
||||
<CFuture,Sg,Pers2_Casual,Masc > => "गा" ;
|
||||
<CFuture,Sg,Pers2_Casual,Fem > => "गी" ;
|
||||
<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
|
||||
-----------------------------------------------
|
||||
|
||||
|
||||
regAdjective : Str -> Adjective;
|
||||
regAdjective x = case x of {
|
||||
acch + ("ा"|"न") => mkAdjective x ("बहुत" ++ x) ("सब से" ++ x) (acch + "े") ("बहुत" ++ acch + "े") ("सब से" ++ acch + "E") (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)
|
||||
|
||||
};
|
||||
IrregAdjective : Str -> Adjective;
|
||||
IrregAdjective x = 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) ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
--# -path=.:../abstract:../common:../prelude:c:/gf_unicoded/hindustani
|
||||
--# -path=.:../abstract:../common:../prelude:
|
||||
|
||||
concrete GrammarHin of Grammar =
|
||||
NounHin,
|
||||
@@ -11,9 +11,9 @@
|
||||
RelativeHin,
|
||||
ConjunctionHin,
|
||||
PhraseHin,
|
||||
TextX - [Adv,AdN],
|
||||
TextX - [Adv,AdN,SC],
|
||||
StructuralHin,
|
||||
TenseX - [Adv,AdN],
|
||||
TenseX - [Adv,AdN,SC],
|
||||
IdiomHin
|
||||
** {
|
||||
|
||||
|
||||
@@ -5,21 +5,21 @@ concrete IdiomHin of Idiom = CatHin ** open Prelude,Predef, ResHin,ParamX,Common
|
||||
|
||||
lin
|
||||
ImpersCl vp = mkSClause " " (agrP3 Masc Sg) vp ;
|
||||
GenericCl vp = mkSClause "कwय" (agrP3 Masc Sg) vp ;
|
||||
GenericCl vp = mkSClause "कोई" (agrP3 Masc Sg) vp ;
|
||||
|
||||
CleftNP np rs =
|
||||
let cl = mkSClause (np.s ! NPC rs.c) (np.a) (predAux auxBe);
|
||||
in
|
||||
{s = \\t,p,o => cl.s ! t ! p ! o ++ rs.s ! np.a };
|
||||
|
||||
-- CleftAdv ad ss = { s = \\t,b,o => ad.s ! Masc ++ ss.s};
|
||||
CleftAdv ad ss = { s = \\t,b,o => ad.s ! Masc ++ ss.s};
|
||||
|
||||
-- ExistNP np =
|
||||
-- mkSClause "wहं" (agrP3 (fromAgr np.a).g (fromAgr np.a).n)
|
||||
-- (insertObj (\\_ => np.s ! NPC Obl) (predAux auxBe)) ;
|
||||
ExistNP np =
|
||||
mkSClause "वहाँ" (agrP3 (fromAgr np.a).g (fromAgr np.a).n)
|
||||
(insertObj (\\_ => np.s ! NPC Dir) (predAux auxBe)) ;
|
||||
|
||||
ExistIP ip =
|
||||
let cl = mkSClause ("wहं" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe);
|
||||
let cl = mkSClause ("वहाँ" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe);
|
||||
in {
|
||||
s = \\t,p,qf => case qf of {
|
||||
QDir => cl.s ! t ! p ! ODir;
|
||||
@@ -31,8 +31,9 @@ concrete IdiomHin of Idiom = CatHin ** open Prelude,Predef, ResHin,ParamX,Common
|
||||
ProgrVP vp = (predProg vp) ;
|
||||
|
||||
|
||||
ImpPl1 vp = {s = "ाw" ++ infVP True vp (agrP1 Masc Pl)} ;
|
||||
ImpP3 np vp = {s = np.s!NPC Dir ++ "कw" ++ (vp.s ! VPImp ).inf ++ "दw"};
|
||||
-- ImpPl1 vp = {s = "आओ" ++ infVP True vp (agrP1 Masc Pl)} ;
|
||||
ImpPl1 vp = {s = "आओ" ++ vp.obj.s ++ (vp.s ! VPTense VPFutr (agrP1 Masc Pl)).inf ++ vp.comp ! (agrP1 Masc Pl)} ;
|
||||
ImpP3 np vp = {s = np.s!NPC Dir ++ "को" ++ (vp.s ! VPImp ).inf ++ "दो"};
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,369 +1,373 @@
|
||||
--# -path=.:prelude
|
||||
|
||||
concrete LexiconHin of Lexicon = CatHin **
|
||||
--open ResHin, Prelude in {
|
||||
open ParadigmsHin, Prelude in {
|
||||
|
||||
flags
|
||||
optimize=values ;
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
airplane_N = mkN "जHज" ;
|
||||
-- answer_V2S = mkV2 (compoundV "जwब" (mkV "दयन")) ;
|
||||
-- apartment_N = mkN "कमरह" ;
|
||||
apple_N = mkN "सयब" ;
|
||||
-- art_N = mkN "fन" ;
|
||||
ask_V2Q = mkV2 (mkV "पwचHन") ;
|
||||
-- baby_N = mkN "बचH" ;
|
||||
bad_A = mkA "बर" ;
|
||||
bank_N = mkN "बयनक" ;
|
||||
beautiful_A = mkA "सनदर" ;
|
||||
become_VA = mkV "बनन";
|
||||
beer_N = mkN "बेेर" ;
|
||||
-- beg_V2V = mkV2V (compoundV "लतज" (mkV "करन")) "सै" "कह" False;
|
||||
big_A = mkA "बृ" ;
|
||||
-- bike_N = mkN "सयचल" feminine ;
|
||||
-- bird_N = mkN "परनदह" ;
|
||||
black_A = mkA "कल" ;
|
||||
blue_A = mkA "नयल" ;
|
||||
boat_N = mkN "नw" ;
|
||||
book_N = mkN "कतब" feminine ;
|
||||
-- boot_N = mkN "जwत" ;
|
||||
boss_N = mkN "मलक" ;
|
||||
boy_N = mkN "लृक" ;
|
||||
bread_N = mkN "रwतय" ;
|
||||
break_V2 = mkV2 (mkV "तwृन") ;
|
||||
broad_A = mkA "चwृ" ;
|
||||
brother_N2 = mkN2 (mkN "बHय") (mkPrep "क" "क") "कै" ; --not correct
|
||||
brown_A = mkA "बHwर" ;
|
||||
-- butter_N = mkN "मकh-न" ;
|
||||
buy_V2 = mkV2 (mkV "खरयदन");
|
||||
camera_N = mkN "कयमरH" ;
|
||||
cap_N = mkN "तwपय" ;
|
||||
car_N = mkN "कर" ;
|
||||
-- carpet_N = mkN "तपy^य" ;
|
||||
cat_N = mkN "बलय" feminine;
|
||||
-- ceiling_N = mkN "चh-त" feminine ;
|
||||
chair_N = mkN "करसय" ;
|
||||
-- cheese_N = mkN "पनयर" feminine ;
|
||||
child_N = mkN "बचH" ;
|
||||
church_N = mkN "गरज" ;
|
||||
city_N = mkN "XHर" ;
|
||||
clean_A = mkA "सf" ;
|
||||
clever_A = mkA "चतर" ;
|
||||
close_V2 = mkV2 (compoundV "बनद" do_V2);
|
||||
coat_N = mkN "कwथ" ;
|
||||
cold_A = mkA "सरद" ;
|
||||
come_V = mkV "ान" ;
|
||||
computer_N = mkN "कमपयwथर" ;
|
||||
country_N = mkN "दयX" ;
|
||||
-- cousin_N = mkCmpdNoun "चच" (mkN "ज़द") ; -- a compund noun made of two nouns
|
||||
cow_N = mkN "गै" feminine ;
|
||||
die_V = mkV "मरन" ;
|
||||
dirty_A = mkA "गनद" ;
|
||||
-- distance_N3 = mkN3 (mkN "fशलह") (mkPrep "क") "कै" "सै" ;
|
||||
doctor_N = mkN "दकतर" ;
|
||||
dog_N = mkN "कत" ;
|
||||
door_N = mkN "दरwज़" ;
|
||||
drink_V2 = mkV2 (mkV "पयन");
|
||||
easy_A2V = mkA "ासन" "" ; -- chek for A or a
|
||||
eat_V2 = mkV2 (mkV "कHन") "" ;
|
||||
empty_A = mkA "खलय" ;
|
||||
enemy_N = mkN "दXमन" ;
|
||||
factory_N = mkN "करखन" ;
|
||||
-- father_N2 = mkN2 (mkN "पत" irregular) (mkPrep "क") "कै" ;
|
||||
fear_VS = mkV "दृन";
|
||||
find_V2 = mkV2 (mkV "दHwनद") ;
|
||||
fish_N = mkN "मचHलय" ;
|
||||
floor_N = mkN "fरX" ;
|
||||
forget_V2 = mkV2 (mkV "बHwलन") ;
|
||||
-- fridge_N = mkN "fरयग" ;
|
||||
friend_N = mkN "दwसत" masculine ;
|
||||
fruit_N = mkN "पHल" ;
|
||||
-- fun_AV = mkAV (regA "fुन") ;
|
||||
garden_N = mkN "बघ" ; -- chek for G
|
||||
girl_N = mkN "लृकय" ;
|
||||
glove_N = mkN "दसतन" ;
|
||||
gold_N = mkN "सwन" ;
|
||||
good_A = mkA "चH" ;
|
||||
go_V = mkV "जन" ;
|
||||
green_A = mkA "Hर" ;
|
||||
-- harbour_N = mkCmpdNoun "बनदर" (mkN "गह") ;
|
||||
hate_V2 = mkV2 (compoundV "नfरत" do_V2) ;
|
||||
hat_N = mkN "थwपय" ;
|
||||
-- have_V2 = dirV2 (mk5V "हवे" "हस" "हद" "हद" "हविनग") ;
|
||||
hear_V2 = mkV2 (mkV "सनन") ;
|
||||
-- hill_N = mkN "पहृय" ;
|
||||
-- hope_VS = (compoundV "मयद" do_V2);
|
||||
horse_N = mkN "गHwृ" ;
|
||||
hot_A = mkA "गरम" ;
|
||||
house_N = mkN "गHर" ;
|
||||
important_A = mkA "ज़रwरय" ; -- check about z
|
||||
-- industry_N = mkN "शनेत" feminine ;
|
||||
iron_N = mkN "लwH" ;
|
||||
king_N = mkN "रज" ;
|
||||
know_V2 = mkV2 (mkV "जनन") ;
|
||||
know_VS = mkV "जनन";
|
||||
-- lake_N = mkN "जh-यल" feminine ;
|
||||
lamp_N = mkN "दय" ;
|
||||
learn_V2 = mkV2 (mkV "सयकHन") ;
|
||||
-- leather_N = mkN "चमृ" ;
|
||||
leave_V2 = mkV2 (mkV "चलन") ;
|
||||
like_V2 = mkV2 (compoundV "पसनद" do_V2);
|
||||
listen_V2 = mkV2 (mkV "सनन") ;
|
||||
live_V = mkV "रहन" ; ---- touch
|
||||
long_A = mkA "लमब" ;
|
||||
lose_V2 = mkV2 (compoundV "कHw" do_V2) ;
|
||||
love_N = mkN "परयम" ;
|
||||
love_V2 = mkV2 (compoundV "पयर" do_V2) "कw";
|
||||
man_N = mkN "ादमय" ;
|
||||
-- married_A2 = mkA "Xदय " "सै" ;
|
||||
meat_N = mkN "मस" ;
|
||||
milk_N = mkN "दwदH" ;
|
||||
moon_N = mkN "चनद" ;
|
||||
mother_N2 = mkN2 (mkN "मत" feminine) (mkPrep "कय" "कय") "कै"; -- not covered need to be discussed
|
||||
-- mountain_N = mkN "पहृय" ;
|
||||
music_N = mkN "सनगयत" ;
|
||||
-- narrow_A = mkA "बरयक" ;
|
||||
new_A = mkA "नय" ;
|
||||
newspaper_N = mkN "खबर" ;
|
||||
oil_N = mkN "तयल" ;
|
||||
old_A = mkA "बwृH" ;
|
||||
open_V2 = mkV2 (mkV "कHwलन") ;
|
||||
-- paint_V2A = mkV2 (compoundV "रनग" do_V2) ;
|
||||
paper_N = mkN "कघज़" ;
|
||||
paris_PN = mkPN "पयरस" ;
|
||||
peace_N = mkN "मन" ;
|
||||
pen_N = mkN "qलम" ;
|
||||
-- planet_N = mkN "सयरह" ;
|
||||
-- plastic_N = mkN "पलसथक" ;
|
||||
play_V2 = mkV2 (mkV "कHयलन") ;
|
||||
-- policeman_N = mkCmpdNoun "पwलयस" (mkN "wल") ;
|
||||
-- priest_N = (mkN "पयघमबर") ;
|
||||
-- probable_AS = mkAS (regA "परॉबबले") ;
|
||||
-- queen_N = mkN "Xहज़दय" ;
|
||||
-- radio_N = mkN "रयधयw" ;
|
||||
rain_V0 = compoundV "बरX" (mkV "Hwन" ) ;
|
||||
read_V2 = mkV2 (mkV "पृHन");
|
||||
red_A = mkA "लल" ;
|
||||
religion_N = mkN "दHरम" ;
|
||||
-- restaurant_N = mkN "हwथल" ;
|
||||
river_N = mkN "दरय" masculine ;
|
||||
rock_N = mkN "चथन" ;
|
||||
roof_N = mkN "चh-त" masculine ;
|
||||
-- rubber_N = mkN "रबृ" ;
|
||||
run_V = mkV "दwृन" ;
|
||||
say_VS = mkV "कHन" ;
|
||||
school_N = mkN "मकतब" ;
|
||||
-- science_N = mkN "सनस" ; -- vgyan
|
||||
sea_N = mkN "समनदर" ;
|
||||
-- seek_V2 = mkV2 (compoundV "तलX" do_V2) ;
|
||||
see_V2 = mkV2 (mkV "दयकHन") ;
|
||||
sell_V3 = mkV3 (mkV "बयचन") "कw" "";
|
||||
send_V3 = mkV3 (mkV "बHयजन") "कw" "";
|
||||
sheep_N = mkN "बHयृ" feminine ;
|
||||
ship_N = mkN "जHज़" ;
|
||||
shirt_N = mkN "करत" feminine;
|
||||
shoe_N = mkN "जwत" ;
|
||||
shop_N = mkN "दwकन" feminine ;
|
||||
short_A = mkA "चHwथ" ;
|
||||
silver_N = mkN "चनदय" ;
|
||||
sister_N = mkN "बHन" feminine ;
|
||||
sleep_V = mkV "सwन" ;
|
||||
small_A = mkA "चHwथ" ;
|
||||
snake_N = mkN "सनप" ;
|
||||
-- sock_N = mkN "जरब" feminine ;
|
||||
speak_V2 = mkV2 (mkV "बwलन") ;
|
||||
star_N = mkN "तर" ;
|
||||
-- steel_N = mkN "सतयल" ; -- something like ispat
|
||||
stone_N = mkN "पतHर" ;
|
||||
-- stove_N = mkN "चwलह" ;
|
||||
-- student_N = mkCmpdNoun "t-लब" (mkN "ेलम") ; -- something vidrati
|
||||
stupid_A = mkA "बैwqwf" ;
|
||||
-- sun_N = mkN "सwरज" ; -- swrya
|
||||
switch8off_V2 = mkV2 (compoundV "बनद" do_V2) ;
|
||||
switch8on_V2 = mkV2 (mkV "चलन") ;
|
||||
table_N = mkN "मयज़" feminine ;
|
||||
talk_V3 = mkV3 (mkV "बwलन") "सै" "कै बरै में";
|
||||
-- teacher_N = mkN "िसतद" ; -- adyapak
|
||||
teach_V2 = mkV2 (mkV "पृHन") ;
|
||||
television_N = mkN "तयwय" ;
|
||||
thick_A = mkA "मwथ" ;
|
||||
thin_A = mkA "पतल" ;
|
||||
train_N = mkN "रयल गृय" ;
|
||||
travel_V = (compoundV "सfर" do_V2) ;
|
||||
-- tree_N = mkN "पयृ" masculine ;
|
||||
-- ---- trousers_N = mkN "तरॉुसेरस" ;
|
||||
ugly_A = mkA "बदसwरत" ;
|
||||
understand_V2 = mkV2 (mkV "समजHन") ;
|
||||
-- university_N = mkN "यwनयwरसथय" ;
|
||||
village_N = mkN "गwं" ; -- check for n or N
|
||||
-- wait_V2 = mkV2 (compoundV "नतz-र" do_V2) "क" ; -- something prtkXa
|
||||
walk_V = mkV "चलन" ;
|
||||
-- warm_A = mkA "गरम" ; something gngna
|
||||
-- war_N = mkN "जनग" ;
|
||||
watch_V2 = mkV2 (mkV "दयकHन") ;
|
||||
-- water_N = mkN "पनय" masculine ; -- not covered masculine ending with y
|
||||
white_A = mkA "सfयद" ;
|
||||
window_N = mkN "रwXनदन" ;
|
||||
-- wine_N = mkN "Xरब" feminine ;
|
||||
win_V2 = mkV2 (mkV "जयतन") ;
|
||||
woman_N = mkN "ेwरत" feminine ;
|
||||
-- wonder_VQ = compoundV "Hेरन" (mkV "हwन") ;
|
||||
wood_N = mkN "लकृय" ;
|
||||
write_V2 = mkV2 (mkV "लकh-न") ;
|
||||
yellow_A = mkA "पयल" ;
|
||||
young_A = mkA "जwन" ;
|
||||
do_V2 = mkV2 (mkV "करन") ;
|
||||
-- now_Adv = mkAdv "ब" ;
|
||||
-- already_Adv = mkAdv "पहलै हय" ;
|
||||
song_N = mkN "गयत" ;
|
||||
add_V3 = mkV3 (compoundV "जमे" do_V2) "" "" ;
|
||||
-- number_N = mkN "हनदसह" ;
|
||||
-- put_V2 = mkV2 (mkV "धलन") ;
|
||||
stop_V = mkV "रकन" ;
|
||||
-- jump_V = compoundV "चHलनग" (mkV "लगन") feminine ;
|
||||
|
||||
-- left_Ord = {s = "बयं" ; n = singular};
|
||||
-- right_Ord = {s= "दयं" ; n = singular};
|
||||
-- far_Adv = mkAdv "दwर" ;
|
||||
correct_A = mkA "सयH" ;
|
||||
dry_A = mkA "सwकH" ;
|
||||
-- dull_A = mkA "नलिक" ;
|
||||
-- full_A = mkA "मकमल" ;
|
||||
heavy_A = mkA "बHरय" ;
|
||||
near_A = mkA "पस" ;
|
||||
-- rotten_A = mkA "खरब" ;
|
||||
round_A = mkA "गwल" ;
|
||||
sharp_A = mkA "तयज़" ;
|
||||
smooth_A = mkA "चकन" ;
|
||||
straight_A = mkA "सयदH" ;
|
||||
wet_A = mkA "गयल" ; ----
|
||||
wide_A = mkA "चwृ" ;
|
||||
animal_N = mkN "जनwर" ;
|
||||
ashes_N = mkN "रकh-" feminine; -- FIXME: plural only?
|
||||
-- back_N = mkN "qमर" feminine ;
|
||||
-- bark_N = mkN "बरक" ;
|
||||
-- belly_N = mkN "दh-नय" ;
|
||||
-- blood_N = mkN "खwन" ;
|
||||
bone_N = mkN "Hधय" feminine ;
|
||||
-- breast_N = mkN "चh-तय" ; --stan
|
||||
cloud_N = mkN "बदल" ;
|
||||
day_N = mkN "दन" ;
|
||||
dust_N = mkN "दHwल" ;
|
||||
ear_N = mkN "कन" ;
|
||||
-- earth_N = mkN "ज़मयन" feminine ;
|
||||
egg_N = mkN "नधH" ;
|
||||
eye_N = mkN "ानकH" feminine ;
|
||||
fat_N = mkN "मwत" ;
|
||||
feather_N = mkN "पनकH" ;
|
||||
-- fingernail_N = mkN "नखन" ;
|
||||
fire_N = mkN "ाग" feminine ;
|
||||
flower_N = mkN "पHwल" ;
|
||||
fog_N = mkN "दHनद" feminine ;
|
||||
foot_N = mkN "पwं" ; -- not properly covered need to be discussed
|
||||
forest_N = mkN "जनगल" ;
|
||||
grass_N = mkN "गHस" feminine ;
|
||||
-- guts_N = mkN "गुत" ; -- FIXME: no singular
|
||||
hair_N = mkN "बल" ;
|
||||
hand_N = mkN "HतH" ;
|
||||
head_N = mkN "सर" ;
|
||||
heart_N = mkN "दल" ;
|
||||
-- horn_N = mkN "गh-नतय" ;
|
||||
husband_N = mkN "पतय" ;
|
||||
ice_N = mkN "बरf" feminine ;
|
||||
knee_N = mkN "गHतनH" ;
|
||||
leaf_N = mkN "पतH" ;
|
||||
leg_N = mkN "तनग" feminine ;
|
||||
liver_N = mkN "कलयजH" ;
|
||||
-- louse_N = mkN "" ; -- jwN
|
||||
mouth_N = mkN "मनH" ;
|
||||
name_N = mkN "नम" ;
|
||||
neck_N = mkN "गरदन" feminine ;
|
||||
night_N = mkN "रत" feminine ;
|
||||
nose_N = mkN "नक" ;
|
||||
-- person_N = mkN "Xखश" ;
|
||||
rain_N = mkN "बरX" feminine ;
|
||||
road_N = mkN "सृक" ;
|
||||
root_N = mkN "गृ" feminine ;
|
||||
rope_N = mkN "रसय" ;
|
||||
salt_N = mkN "नमक" feminine ;
|
||||
sand_N = mkN "रयत" feminine ;
|
||||
seed_N = mkN "बयज" ;
|
||||
-- skin_N = mkN "जलद" feminine ; -- crm
|
||||
sky_N = mkN "मबर" ;
|
||||
smoke_N = mkN "दHwं"; -- singular masc nouns ending with aN,wN yet to be implemented
|
||||
snow_N = mkN "बरf" feminine ;
|
||||
stick_N = mkN "सॉथय" ;
|
||||
tail_N = mkN "दम" ;
|
||||
-- tongue_N = mkN "ज़बन" feminine ;
|
||||
-- tooth_N = mkN "दनत" masculine;
|
||||
wife_N = mkN "पतनय" ;
|
||||
wind_N = mkN "Hw" ;
|
||||
-- wing_N = mkN "पर" ;
|
||||
worm_N = mkN "कयृ" ;
|
||||
year_N = mkN "सल" ;
|
||||
-- blow_V = mkV "चलन" ;
|
||||
breathe_V = compoundV "सनस" (mkV "लयन" ) ;
|
||||
burn_V = mkV "जलन" ;
|
||||
dig_V = mkV "कHwदन" ;
|
||||
fall_V = mkV "गरन" ;
|
||||
-- float_V = mkV "तयरन" ;
|
||||
flow_V = mkV "चलन" ;
|
||||
fly_V = mkV "ृन" ;
|
||||
-- freeze_V = mkV "जमन";
|
||||
give_V3 = mkV3 (mkV "दयन") "कw" "";
|
||||
laugh_V = mkV "हनसन" ;
|
||||
-- lie_N = mkN "जh-wत" masculine ;
|
||||
lie_V = compoundV "जHwत" (mkV "बwलन" );
|
||||
play_V = mkV "कHयलन" ;
|
||||
sew_V = mkV "सयन" ;
|
||||
sing_V = mkV "गन" ;
|
||||
sit_V = mkV "बयथHन" ;
|
||||
smell_V = mkV "सwनगन" ;
|
||||
spit_V = mkV "तHwकन" ;
|
||||
stand_V = compoundV "कHृै" (mkV "हwन" ); -- a type of compound verb made of two verbs i.e 'kHRa' also inflects, rather than a string and verb should be fixed
|
||||
-- swell_V = mkV "सwजh-न" ;
|
||||
swim_V = mkV "तयरन" ;
|
||||
think_V = mkV "सwचन" ;
|
||||
turn_V = mkV "मृन";
|
||||
-- vomit_V = compoundV "लतय" (mkV "करन") feminine ;
|
||||
bite_V2 = mkV2 (mkV "कतन") ;
|
||||
count_V2 = mkV2 (mkV "गनन") ;
|
||||
cut_V2 = mkV2 (mkV "कतन") ;
|
||||
fear_V2 = mkV2 (mkV "धरन") ;
|
||||
fight_V2 = mkV2 (mkV "लृन") ;
|
||||
-- hit_V2 = mkV2 (compoundV "तh-wकर" (mkV "मरन" ));
|
||||
hold_V2 = mkV2 (mkV "पकृन") ;
|
||||
-- hunt_V2 = mkV2 (compoundV "Xकर" do_V2);
|
||||
kill_V2 = mkV2 (compoundV "मर" (mkV "धलन" )) ;
|
||||
pull_V2 = mkV2 (mkV "कHनचन");
|
||||
-- push_V2 = mkV2 (mkV "दh-कयलन") "कw" ;
|
||||
-- rub_V2 = mkV2 (mkV "रगृन") ;
|
||||
-- scratch_V2 = mkV2 (mkV "कh-रचन") "कw" ;
|
||||
-- split_V2 = mkV2 (mkV "बनत") "कw" ;
|
||||
-- squeeze_V2 = dirV2 (regV "सqुेेज़े") ;
|
||||
-- stab_V2 = dirV2 (regDuplV "सतब") ;
|
||||
-- suck_V2 = mkV2 (mkV "चwसन") ;
|
||||
throw_V2 = mkV2 (mkV "पHयनकन") ;
|
||||
tie_V2 = mkV2 (mkV "बनदHन") ;
|
||||
wash_V2 = mkV2 (mkV "दHwन") ;
|
||||
wipe_V2 = mkV2 (compoundV "शf" (mkV "करन" ));
|
||||
|
||||
---- other_A = regA "ॉतहेर" ;
|
||||
|
||||
-- grammar_N = mkN "गरदन" ;
|
||||
-- language_N = mkN "ज़बन" feminine ;
|
||||
-- rule_N = mkN "शwल" ;
|
||||
|
||||
---- added 4/6/2007
|
||||
john_PN = mkPN "जॉन" ;
|
||||
-- question_N = mkN "सwल" ;
|
||||
-- ready_A = regA "रेदय" ;
|
||||
-- reason_N = mkN "wजह" feminine ;
|
||||
-- today_Adv = mkAdv "ाज" ;
|
||||
-- uncertain_A = mkA ["घयर यqयनय"] ;
|
||||
|
||||
|
||||
}
|
||||
--# -path=.:prelude
|
||||
|
||||
concrete LexiconHin of Lexicon = CatHin **
|
||||
--open ResHin, Prelude in {
|
||||
open ParadigmsHin, Prelude in {
|
||||
|
||||
flags
|
||||
optimize=values ;
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
airplane_N = mkCmpdNoun "हवाई" (mkN "जहाज़") ;
|
||||
answer_V2S = mkV2 (compoundV "जवाब" (mkV "देना")) ;
|
||||
apartment_N = mkN "कमरा" ;
|
||||
apple_N = mkN "सेब" ;
|
||||
-- art_N = mkN "" ;
|
||||
ask_V2Q = mkV2 (mkV "पूछना") ;
|
||||
baby_N = mkN "बच्छा" ;
|
||||
bad_A = mkA "बुरा" ;
|
||||
bank_N = mkN "बैंक" ;
|
||||
beautiful_A = mkA "ख़ूबसूरत" ;
|
||||
become_VA = mkV "बनना";
|
||||
beer_N = mkN "बियर" ;
|
||||
beg_V2V = mkV2V (compoundV "भीख" (mkV "मांगना")) "से" "कह" False;
|
||||
big_A = mkA "बड़ा" ;
|
||||
bike_N = mkN "सायकल" feminine ;
|
||||
bird_N = mkN "चिड़िया" ;
|
||||
black_A = mkA "काला" ;
|
||||
blue_A = mkA "नीला" ;
|
||||
boat_N = mkN "नाव" ;
|
||||
book_N = mkN "किताब" feminine ;
|
||||
boot_N = mkN "जूता" ;
|
||||
boss_N = mkN "मालिक" ;
|
||||
boy_N = mkN "लड़का" ;
|
||||
bread_N = mkN "रोटी" ;
|
||||
break_V2 = mkV2 (mkV "तोड़ना") ;
|
||||
broad_A = mkA "चौड़ा" ;
|
||||
brother_N2 = mkN2 (mkN "भाई") (mkPrep "क" "की") "के" ; --not correct
|
||||
brown_A = mkA "भूरा" ;
|
||||
butter_N = mkN "मक्खन" ;
|
||||
buy_V2 = mkV2 (mkV "ख़रीदना") "को"; -- add ko: here for es ko khredna, but this will create sentences like kitab ko kharedna
|
||||
camera_N = mkN "कैमरा" ;
|
||||
cap_N = mkN "टोपी" ;
|
||||
car_N = mkN "कार" ;
|
||||
carpet_N = mkN "क़ालीन" ;
|
||||
cat_N = mkN "बिलली" feminine;
|
||||
ceiling_N = mkN "छत" feminine ;
|
||||
chair_N = mkN "कुर्सी" ;
|
||||
cheese_N = mkN "पनीर" feminine ;
|
||||
child_N = mkN "बच्छा" ;
|
||||
church_N = mkN "गिरिजा" ;
|
||||
city_N = mkN "शहर" ;
|
||||
clean_A = mkA "साफ़" ;
|
||||
clever_A = mkA "चालाक" ;
|
||||
close_V2 = mkV2 (compoundV "बनद" do_V2);
|
||||
coat_N = mkN "कोट" ;
|
||||
cold_A = mkA "सरद" ;
|
||||
come_V = mkV "आना" ;
|
||||
computer_N = mkN "कंपयूटर" ;
|
||||
country_N = mkN "देश" ;
|
||||
cousin_N = mkCmpdNoun "चच" (mkN "ज़द") ; -- a compund noun made of two nouns
|
||||
cow_N = mkN "गाय" feminine ;
|
||||
die_V = mkV "मरना" ;
|
||||
dirty_A = mkA "गंदा" ;
|
||||
distance_N3 = mkN3 (mkN "फ़ासला") (mkPrep "का" "की") "के" "से" ;
|
||||
doctor_N = mkN "डाकटर" ;
|
||||
dog_N = mkN "कुतता" ;
|
||||
door_N = mkN "दरवाज़ा" ;
|
||||
drink_V2 = mkV2 (mkV "पीना");
|
||||
easy_A2V = mkA "आसान" "" ; -- chek for A or a
|
||||
eat_V2 = mkV2 (mkV "खाना") "" ;
|
||||
empty_A = mkA "ख़ाली" ;
|
||||
enemy_N = mkN "दुश्मन" ;
|
||||
factory_N = mkN "कारख़ाना" ;
|
||||
father_N2 = mkN2 (mkN "बाप") (mkPrep "क" "की") "के" ;
|
||||
fear_N = mkN "डर";
|
||||
fear_VS = mkV "डरना";
|
||||
find_V2 = mkV2 (mkV "पाना") ;
|
||||
fish_N = mkN "मछली" ;
|
||||
floor_N = mkN "फ़रश" ;
|
||||
forget_V2 = mkV2 (mkV "भूलना") ;
|
||||
fridge_N = mkN "फ़रिज" ;
|
||||
friend_N = mkN "दोस्त" masculine ;
|
||||
fruit_N = mkN "फल" ;
|
||||
-- fun_AV = mkAV (regA "फ़ुन") ;
|
||||
garden_N = mkN "बाग़" ; -- chek for g.
|
||||
girl_N = mkN "लड़की" ;
|
||||
glove_N = mkN "दसताना" ;
|
||||
gold_N = mkN "सोना" ;
|
||||
good_A = mkA "अच्छा" ;
|
||||
go_V = mkV "जाना" ;
|
||||
green_A = mkA "हरा" ;
|
||||
harbour_N = mkCmpdNoun "बंदर" (mkN "गाह") ;
|
||||
hate_N = mkN "नफ़रत" ;
|
||||
hate_V2 = mkV2 (compoundV "नफ़रत" do_V2) ;
|
||||
hat_N = mkN "टोपी" ;
|
||||
-- have_V2 = dirV2 (mk5V "हवe" "हस" "हद" "हद" "हविनग") ;
|
||||
hear_V2 = mkV2 (mkV "सुनना") ;
|
||||
hill_N = mkN "पहाड़" ;
|
||||
hope_N = mkN "उममीद" ;
|
||||
hope_VS = (compoundV "उममीद" do_V2);
|
||||
horse_N = mkN "घोड़ा" ;
|
||||
hot_A = mkA "गरम" ;
|
||||
house_N = mkN "घर" ;
|
||||
important_A = mkA "ज़रूरी" ; -- check about z
|
||||
industry_N = mkN "सनत" feminine ;
|
||||
iron_N = mkN "लोहा" ;
|
||||
king_N = mkN "राजा" ;
|
||||
know_V2 = mkV2 (mkV "जानना") ;
|
||||
know_VS = mkV "जानना";
|
||||
lake_N = mkN "झील" feminine ;
|
||||
lamp_N = mkN "चिराग" ;
|
||||
learn_V2 = mkV2 (mkV "सीखना") ;
|
||||
leather_N = mkN "चमड़ा" ;
|
||||
leave_V2 = mkV2 (mkV "चलना") ;
|
||||
like_V2 = mkV2 (compoundV "पसंद" do_V2);
|
||||
listen_V2 = mkV2 (mkV "सुनना") ;
|
||||
live_V = mkV "रहना" ; ---- touch
|
||||
long_A = mkA "लंबा" ;
|
||||
lose_V2 = mkV2 (compoundV "खो" do_V2) ;
|
||||
love_N = mkN "प्यार" ;
|
||||
love_V2 = mkV2 (compoundV "प्यार" do_V2) "को";
|
||||
man_N = mkN "आदमी" masculine;
|
||||
married_A2 = mkIrregA "शादी शुदा" "से" ;
|
||||
marriage = mkN "शादी " ;
|
||||
meat_N = mkN "मांस" ;
|
||||
milk_N = mkN "दूध" ;
|
||||
moon_N = mkN "चांद" ;
|
||||
mother_N = mkN "माँ" feminine; -- not covered need to be discussed
|
||||
mountain_N = mkN "पहाड़" ;
|
||||
music_N = mkN "संगीत" ;
|
||||
narrow_A = mkA "तंग" ;
|
||||
new_A = mkA "नया" ;
|
||||
newspaper_N = mkN "अख़बार" ;
|
||||
oil_N = mkN "तेल" ;
|
||||
old_A = mkA "बूढ़ा" ;
|
||||
open_V2 = mkV2 (mkV "खोलना") ;
|
||||
paint_V2A = mkV2 (compoundV "रंग" do_V2) ;
|
||||
paper_N = mkN "काग़ज़" ;
|
||||
paris_PN = mkPN "पैरिस" ;
|
||||
peace_N = mkN "अमन" ;
|
||||
pen_N = mkN "क़लम" ;
|
||||
planet_N = mkN "सितारा" ;
|
||||
plastic_N = mkN "पलासटिक" ;
|
||||
play_V2 = mkV2 (mkV "खेलना") ;
|
||||
policeman_N = mkCmpdNoun "पुलिस" (mkN "wाला") ;
|
||||
priest_N = mkN "पुजारी" ;
|
||||
-- probable_AS = mkAS (regA "परoबबलe") ;
|
||||
queen_N = mkN "रानी" ;
|
||||
radio_N = mkN "रेडिो" ;
|
||||
rain_N = mkN "बारिश" ;
|
||||
rain_V0 = compoundV "बारिश" (mkV "होना" ) ;
|
||||
read_V2 = mkV2 (mkV "पढ़ना");
|
||||
red_A = mkA "लाल" ;
|
||||
religion_N = mkN "मज़हब" ;
|
||||
restaurant_N = mkN "रेसटोरांट" ;
|
||||
-- river_N = mkN "दरिया" masculine ;
|
||||
rock_N = mkN "चटटान" ;
|
||||
roof_N = mkN "छत" masculine ;
|
||||
rubber_N = mkN "रबर" ;
|
||||
run_V = mkV "दौड़ना" ;
|
||||
say_VS = mkV "कहना" ;
|
||||
school_N = mkN "सकूल" ;
|
||||
science_N = mkN "सािनस" ; -- vgyan
|
||||
sea_N = mkN "समंदर" ;
|
||||
seek_V2 = mkV2 (compoundV "तलाश" do_V2) ;
|
||||
see_V2 = mkV2 (mkV "देखना") ;
|
||||
sell_V3 = mkV3 (mkV "बेचना") "को" "";
|
||||
send_V3 = mkV3 (mkV "भेजना") "को" "";
|
||||
sheep_N = mkN "भीड़" feminine ;
|
||||
ship_N = mkN "जहाज़" ;
|
||||
shirt_N = mkN "कुर्ता" feminine;
|
||||
shoe_N = mkN "जूता" ;
|
||||
shop_N = mkN "दूकान" feminine ;
|
||||
short_A = mkA "छोटा" ;
|
||||
silver_N = mkN "चांदी" ;
|
||||
sister_N = mkN "बहन" feminine ;
|
||||
sleep_V = mkV "सोना" ;
|
||||
small_A = mkA "छोटा" ;
|
||||
snake_N = mkN "सांप" ;
|
||||
sock_N = mkN "जुरराब" feminine ;
|
||||
speak_V2 = mkV2 (mkV "बोलना") ;
|
||||
star_N = mkN "तारा" ;
|
||||
steel_N = mkN "इसपात" ; -- something like ispat
|
||||
stone_N = mkN "पत्थर" ;
|
||||
stove_N = mkN "चूल्हा" ;
|
||||
-- student_N = mkCmpdNoun "t-लब" (mkN "eलम") ; -- something vidrati
|
||||
stupid_A = mkA "बेवक़ूफ़" ;
|
||||
sun_N = mkN "सूरज" ; -- swrya
|
||||
switch8off_V2 = mkV2 (compoundV "बंद" do_V2) ;
|
||||
switch8on_V2 = mkV2 (mkV "चलाना") ;
|
||||
table_N = mkN "मेज़" feminine ;
|
||||
talk_V3 = mkV3 (mkV "बोलना") "से" "के बारे मे";
|
||||
teacher_N = mkN "उस्ताद" ; -- adyapak
|
||||
teach_V2 = mkV2 (mkV "सिखाना") ;
|
||||
television_N = mkN "टीवी" ;
|
||||
thick_A = mkA "मोटा" ;
|
||||
thin_A = mkA "पतला" ;
|
||||
train_N = mkN "रेल गाड़ी" ;
|
||||
travel_V = (compoundV "सफ़र" do_V2) ;
|
||||
-- tree_N = mkN "पेड़" masculine ;
|
||||
trousers_N = mkN "पतलून" ;
|
||||
ugly_A = mkA "बदसूरत" ;
|
||||
understand_V2 = mkV2 (mkV "समझना") ;
|
||||
university_N = mkN "यूनिवरसिटी" ;
|
||||
village_N = mkN "गाँव" ; -- check for n or N
|
||||
wait_V2 = mkV2 (compoundV "इंतज़ार" do_V2) "का" ; -- something prtkXa
|
||||
walk_V = mkV "चलना" ;
|
||||
warm_A = mkA "गरम" ; something gngna
|
||||
war_N = mkN "लड़ाई" ;
|
||||
watch_V2 = mkV2 (mkV "देखना") ;
|
||||
water_N = mkN "पानी" masculine ; -- not covered masculine ending with y
|
||||
white_A = mkA "सफ़ेद" ;
|
||||
window_N = mkN "खिड़की" ;
|
||||
wine_N = mkN "शराब" feminine ;
|
||||
win_V2 = mkV2 (mkV "जीतना") ;
|
||||
woman_N = mkN "औरत" feminine ;
|
||||
wonder_VQ = compoundV "हैरान" (mkV "होना") ;
|
||||
wood_N = mkN "लकड़ी" ;
|
||||
write_V2 = mkV2 (mkV "लिखना") ;
|
||||
yellow_A = mkA "पीला" ;
|
||||
young_A = mkA "जवान" ;
|
||||
do_V2 = mkV2 (mkV "करना") ;
|
||||
now_Adv = mkAdv "अब" ;
|
||||
already_Adv = mkAdv "पहले ही" ;
|
||||
song_N = mkN "गीत" ;
|
||||
add_V3 = mkV3 (mkV "जोड़ना") "को" "मीं"; -- confirm
|
||||
number_N = mkN "हनदसह" ;
|
||||
put_V2 = mkV2 (mkV "डालना") ;
|
||||
stop_V = mkV "रुकना" ;
|
||||
jump_V = compoundV "छलांग" (mkV "लगाना") ;
|
||||
|
||||
left_Ord = {s = "बायाँ" ; n = singular};
|
||||
right_Ord = {s= "दायाँ" ; n = singular};
|
||||
far_Adv = mkAdv "दूर" ;
|
||||
correct_A = mkA "सहीह" ;
|
||||
dry_A = mkA "सूखा" ;
|
||||
dull_A = mkA "नलिक" ;
|
||||
full_A = mkA "भरा" ;
|
||||
heavy_A = mkA "भारी" ;
|
||||
near_A = mkA "पास" ;
|
||||
rotten_A = mkA "सड़ा" ;
|
||||
round_A = mkA "गोल" ;
|
||||
sharp_A = mkA "तेज़" ;
|
||||
smooth_A = mkA "चिकना" ;
|
||||
straight_A = mkA "सीधा" ;
|
||||
wet_A = mkA "गीला" ; ----
|
||||
wide_A = mkA "चौड़ा" ;
|
||||
animal_N = mkN "जानवर" ;
|
||||
ashes_N = mkN "राख" feminine; -- FIXME: plural only?
|
||||
back_N = mkN "पीठ" feminine ;
|
||||
-- bark_N = mkN "बरक" ;
|
||||
-- belly_N = mkN "दh-नय" ;
|
||||
blood_N = mkN "ख़ून" ;
|
||||
bone_N = mkN "हडडी" feminine ;
|
||||
breast_N = mkN "छाती" ; --stan
|
||||
cloud_N = mkN "बादल" ;
|
||||
day_N = mkN "दिन" ;
|
||||
dust_N = mkN "धूल" ;
|
||||
ear_N = mkN "कान" ;
|
||||
earth_N = mkN "ज़मीन" feminine ;
|
||||
egg_N = mkN "अंडा" ;
|
||||
eye_N = mkN "आंख" feminine ;
|
||||
fat_N = mkN "मोटा" ;
|
||||
feather_N = mkN "पंख" ;
|
||||
fingernail_N = mkN "नाखून" ;
|
||||
fire_N = mkN "आग" feminine ;
|
||||
flower_N = mkN "फूल" ;
|
||||
fog_N = mkN "धुंध" feminine ;
|
||||
foot_N = mkN "पांव" ; -- not properly covered need to be discussed
|
||||
forest_N = mkN "जंगल" ;
|
||||
grass_N = mkN "घास" feminine ;
|
||||
-- guts_N = mkN "गुत" ; -- FIXME: no singular
|
||||
hair_N = mkN "बाल" ;
|
||||
hand_N = mkN "हाथ" ;
|
||||
head_N = mkN "सिर" ;
|
||||
heart_N = mkN "दिल" ;
|
||||
horn_N = mkN "सींग" ;
|
||||
husband_N = mkN "पति" ;
|
||||
ice_N = mkN "बर्फ़" feminine ;
|
||||
knee_N = mkN "घुटना" ;
|
||||
leaf_N = mkN "पतता" ;
|
||||
leg_N = mkN "टांग" feminine ;
|
||||
liver_N = mkN "कलेजा" ;
|
||||
louse_N = mkN "जू" ;
|
||||
mouth_N = mkN "मुह" ;
|
||||
name_N = mkN "नाम" ;
|
||||
neck_N = mkN "गर्दन" feminine ;
|
||||
night_N = mkN "रात" feminine ;
|
||||
nose_N = mkN "नाक" ;
|
||||
-- person_N = mkN "XKष" ;
|
||||
road_N = mkN "सड़क" ;
|
||||
root_N = mkN "जड़" feminine ;
|
||||
rope_N = mkN "रससी" ;
|
||||
salt_N = mkN "नमक" feminine ;
|
||||
sand_N = mkN "रेत" feminine ;
|
||||
seed_N = mkN "बीज" ;
|
||||
skin_N = mkN "जलद" feminine ; -- crm
|
||||
sky_N = mkN "आसमान" ;
|
||||
smoke_N = mkN "धुाँ"; -- singular masc nouns ending with aN,wN yet to be implemented
|
||||
snow_N = mkN "बर्फ़" feminine ;
|
||||
stick_N = mkN "लकड़ी" ;
|
||||
tail_N = mkN "दुम" ;
|
||||
tongue_N = mkN "ज़बान" feminine ;
|
||||
tooth_N = mkN "दांत" masculine;
|
||||
wife_N = mkN "बीवी" ;
|
||||
wind_N = mkN "हवा" ;
|
||||
-- wing_N = mkN "पर" ;
|
||||
worm_N = mkN "कीड़" ;
|
||||
year_N = mkN "साल" ;
|
||||
-- blow_V = mkV "चलन" ;
|
||||
breathe_V = compoundV "साँस" (mkV "लेना" ) ;
|
||||
burn_V = mkV "जलाना" ;
|
||||
dig_V = mkV "खोदना" ;
|
||||
fall_V = mkV "गिरना" ;
|
||||
float_V = mkV "तैरना" ;
|
||||
flow_V = mkV "बहना" ;
|
||||
fly_V = mkV "ुड़ना" ;
|
||||
-- freeze_V = mkV "जमन";
|
||||
give_V3 = mkV3 (mkV "देना") "को" "";
|
||||
laugh_V = mkV "हंसना" ;
|
||||
lie_N = mkN "झूट" masculine ;
|
||||
lie_V = compoundV "झूट" (mkV "बोलना" );
|
||||
play_V = mkV "खेलना" ;
|
||||
sew_V = mkV "सीना" ;
|
||||
sing_V = mkV "गाना" ;
|
||||
sit_V = mkV "बैठना" ;
|
||||
smell_V = mkV "सूंगना" ;
|
||||
spit_V = mkV "थूकना" ;
|
||||
stand_V = compoundV "खड़ा" (mkV "होना" ); -- a type of compound verb made of two verbs i.e 'kHRa' also inflects, rather than a string and verb should be fixed
|
||||
swell_V = mkV "सूजना" ;
|
||||
swim_V = mkV "तैरना" ;
|
||||
think_V = mkV "सोचना" ;
|
||||
turn_V = mkV "मुड़ना";
|
||||
-- vomit_V = compoundV "अलय" (mkV "करन") feminine ;
|
||||
bite_V2 = mkV2 (mkV "काटना") ;
|
||||
count_V2 = mkV2 (mkV "गिनना") ;
|
||||
cut_V2 = mkV2 (mkV "काटना") ;
|
||||
fear_V2 = mkV2 (mkV "डरना") ;
|
||||
fight_V2 = mkV2 (mkV "लड़ना") ;
|
||||
-- hit_V2 = mkV2 (compoundV "तh-wकर" (mkV "मरन" ));
|
||||
hold_V2 = mkV2 (mkV "पकड़ना") ;
|
||||
-- hunt_V2 = mkV2 (compoundV "Xकर" do_V2);
|
||||
kill_V2 = mkV2 (compoundV "मार" (mkV "डालना" )) ;
|
||||
pull_V2 = mkV2 (mkV "खींचना");
|
||||
push_V2 = mkV2 (mkV "धकेलना") "को" ;
|
||||
rub_V2 = mkV2 (mkV "रगड़ना") ;
|
||||
scratch_V2 = mkV2 (mkV "खरोंचना") "को" ;
|
||||
-- split_V2 = mkV2 (mkV "बनत") "कo::" ;
|
||||
-- squeeze_V2 = dirV2 (regV "सक़ुeeज़e") ;
|
||||
-- stab_V2 = dirV2 (regDuplV "सतब") ;
|
||||
suck_V2 = mkV2 (mkV "चूसना") ;
|
||||
throw_V2 = mkV2 (mkV "फेंकना") ;
|
||||
tie_V2 = mkV2 (mkV "बांधना") ;
|
||||
wash_V2 = mkV2 (mkV "धोना") ;
|
||||
-- wash_V2 = mkV2 (mkV "पोंछना") ;
|
||||
|
||||
---- other_A = regA "oतहeर" ;
|
||||
|
||||
-- grammar_N = mkN "गरदन" ;
|
||||
-- language_N = mkN "ज़बन" feminine ;
|
||||
-- rule_N = mkN "अषwल" ;
|
||||
|
||||
---- added 4/6/2007
|
||||
john_PN = mkPN "जान" ;
|
||||
question_N = mkN "सवाल" ;
|
||||
ready_A = mkA "तैयार" ;
|
||||
reason_N = mkN "वजह" feminine ;
|
||||
today_Adv = mkAdv "आज" ;
|
||||
-- uncertain_A = mkA ["ग़यर यक़यनय"] ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -36,29 +36,31 @@ oper
|
||||
|
||||
regNoun : Str -> Noun ;
|
||||
regNoun s = case s of {
|
||||
_ + "य" => mkN05 (s);
|
||||
_ + (""|"े"|"ह") => mkN01 (s);
|
||||
_ + "य" => mkN03 (s);
|
||||
_ + ("ं"|"wं") => mkN04 (s);
|
||||
_ + "या" => mkN05 (s);
|
||||
_ + ("ा") => mkN01 (s);
|
||||
_ + "ी" => mkN03 (s);
|
||||
_ + ("ाँ"|"ा") => mkN04 (s);
|
||||
_ + "ाँव" => mkN12 s;
|
||||
_ + "w^" => mkN12 (s);
|
||||
_ => regNoun2 (s)
|
||||
};
|
||||
regNoun2 : Str -> Noun;
|
||||
regNoun2 s = let c = if_then_else Bool (eq (last s) "" ) True (if_then_else Bool (eq (last s) "ह") True (if_then_else Bool (eq (last s) "े") True False))
|
||||
regNoun2 s = let c = if_then_else Bool (eq (last s) "" ) True (if_then_else Bool (eq (last s) "ह") True (if_then_else Bool (eq (last s) "e") True False))
|
||||
in case c of {
|
||||
False => mkN02 (s);
|
||||
True => mkN01 (s)
|
||||
};
|
||||
|
||||
reggNoun : Str -> Gender -> Noun ;
|
||||
reggNoun s g = let c = if_then_else Bool (eq (last s) "" ) True (if_then_else Bool (eq (dp 2 s) "ं") True (if_then_else Bool (eq (dp 2 s) "wं") True False))
|
||||
reggNoun s g = let c = if_then_else Bool (eq (last s) "" ) True (if_then_else Bool (eq (dp 2 s) "ण") True (if_then_else Bool (eq (dp 2 s) "wण") True False))
|
||||
in case <s,g,c> of {
|
||||
<_ + "त",Fem,_> => mkN10 (s);
|
||||
<_ + "त",Masc,_> => mkN02 (s);
|
||||
<_ + "w",Masc,_> => mkN11 (s);
|
||||
<_ + "ू",Masc,_> => mkN11 (s);
|
||||
<_ + "w",Fem,_> => mkN07 (s);
|
||||
<_ + "य",Fem,_> => mkN05 (s);
|
||||
<_ + "य",Masc,_> => mkN02 (s);
|
||||
<_ + "ी",Masc,_> => mkN13 (s);
|
||||
<_,Fem,False> => mkN08 (s);
|
||||
<_,Fem,_> => mkN09 (s)
|
||||
|
||||
@@ -69,15 +71,15 @@ oper
|
||||
|
||||
mkN01 : Str -> Noun ;
|
||||
mkN01 lRka = let end = last (lRka) ;
|
||||
lRk = if_then_else Str (eq end "े") lRka (tk 1 lRka)
|
||||
in mkNoun (lRka) (lRk+"ै") (lRk+"ै")
|
||||
(lRk+"ै") (lRk+"wं") (lRk+"w")
|
||||
lRk = if_then_else Str (eq end "e") lRka (tk 1 lRka)
|
||||
in mkNoun (lRka) (lRk+"े") (lRk+"े")
|
||||
(lRk+"े") (lRk+"ोँ") (lRk+"ो")
|
||||
Masc ;
|
||||
|
||||
-- masculine nouns does not end with a, h, e, an
|
||||
|
||||
mkN02 : Str -> Noun ;
|
||||
mkN02 mrd = let mrdwN = mrd+"wं" ;
|
||||
mkN02 mrd = let mrdwN = mrd+"ोँ" ;
|
||||
mrdw = tk 1 mrdwN
|
||||
in mkNoun mrd mrd mrd
|
||||
mrd mrdwN mrdw
|
||||
@@ -86,24 +88,32 @@ oper
|
||||
-- feminine Nouns end with y
|
||||
|
||||
mkN03 : Str -> Noun ;
|
||||
mkN03 krsy = let krsyaN = krsy+"ं" ;
|
||||
krsywN = krsy+"wं" ;
|
||||
mkN03 krsy = let krsyaN = krsy+"ँ" ;
|
||||
krsywN = krsy+"योँ" ;
|
||||
krsyw = tk 1 krsywN
|
||||
in mkNoun krsy krsy krsy
|
||||
krsyaN krsywN krsyw
|
||||
Fem ;
|
||||
|
||||
-- masculine nouns ending at i: e.g Admi:
|
||||
mkN13 : Str -> Noun ;
|
||||
mkN13 krsy = let
|
||||
krsywN = krsy+"योँ" ;
|
||||
krsyw = tk 1 krsywN
|
||||
in mkNoun krsy krsy krsy
|
||||
krsy krsywN krsyw
|
||||
Masc ;
|
||||
|
||||
-- feminine nouns end with a, aN, wN
|
||||
mkN04 : Str -> Noun ;
|
||||
mkN04 n = case last n of {
|
||||
"" => let bla = n
|
||||
in mkNoun bla bla bla
|
||||
(bla+"y^यं") (bla+"w^ं") (bla+"w^")
|
||||
"ा" => mkNoun n n n
|
||||
(n+"ाेँ") (n+"ाोँ") (n+"ाो")
|
||||
Fem ;
|
||||
_ => let maN = n ; -- ends with aN and wN
|
||||
ma = tk 1 maN
|
||||
in mkNoun maN maN maN
|
||||
(ma+"y^यं") (ma+"w^ं") (ma+"w^ं")
|
||||
(maN+"ाँेँ") (maN+"ाँोँ") (maN+"ाँो")
|
||||
Fem
|
||||
|
||||
};
|
||||
@@ -112,14 +122,14 @@ oper
|
||||
mkN05 : Str -> Noun ;
|
||||
mkN05 gRya = let gRy = (tk 1 gRya)
|
||||
in mkNoun gRya gRya gRya
|
||||
(gRya+"ं") (gRy+"wं") (gRy+"w")
|
||||
(gRya+"ँ") (gRy+"ोँ") (gRy+"ो")
|
||||
Fem ;
|
||||
|
||||
-- feminine nouns end with w
|
||||
|
||||
mkN07 : Str -> Noun ;
|
||||
mkN07 khshbw = mkNoun khshbw khshbw khshbw
|
||||
(khshbw + "y^यं") (khshbw + "w^ं") (khshbw + "w^")
|
||||
(khshbw + "ेँ") (khshbw + "ोँ") (khshbw + "ो")
|
||||
Fem ;
|
||||
|
||||
-- Loan arabic feminine nouns end with t
|
||||
@@ -127,7 +137,7 @@ oper
|
||||
|
||||
mkN10 : Str -> Noun ;
|
||||
mkN10 ndamt = mkNoun ndamt ndamt ndamt
|
||||
(ndamt+"यं") (ndamt+"wं") (ndamt+"w")
|
||||
(ndamt+"ें") (ndamt+"w:ं") (ndamt+"ो")
|
||||
Fem ;
|
||||
-- Worst case function
|
||||
mkN : (_,_,_,_,_,_ : Str) -> Gender -> Noun ;
|
||||
@@ -136,28 +146,28 @@ oper
|
||||
|
||||
mkN06 : Str -> Noun ;
|
||||
mkN06 rya = mkNoun rya rya rya
|
||||
(rya+"y^यं") (rya+"w^ं") rya
|
||||
(rya+"y^यण") (rya+"w^ण") rya
|
||||
Fem ;
|
||||
|
||||
-- feminine nouns that do not end with a, N, w, wN
|
||||
|
||||
mkN08 : Str -> Noun ;
|
||||
mkN08 ktab = mkNoun ktab ktab ktab
|
||||
(ktab+"यं") (ktab+"wं") (ktab+"w")
|
||||
(ktab+"ेँ") (ktab+"ोँ") (ktab+"ो")
|
||||
Fem ;
|
||||
|
||||
-- Loan arabic feminine nouns
|
||||
|
||||
mkN09 : Str -> Noun ;
|
||||
mkN09 ahsan = mkNoun ahsan ahsan ahsan
|
||||
(ahsan+"त") (ahsan+"त") (ahsan+"w")
|
||||
(ahsan+"ात") (ahsan+"ात") (ahsan+"ो")
|
||||
Fem ;
|
||||
-- (variants{ahsan+"त";ahsan+"wं"})
|
||||
-- (variants{ahsan+"त";ahsan+"wण"})
|
||||
-- Loan persian maculine nouns end with w
|
||||
|
||||
mkN11 : Str -> Noun ;
|
||||
mkN11 alw = mkNoun alw alw alw
|
||||
alw (alw+"w^ं") (alw+"w^")
|
||||
alw (alw+"ोँ") (alw+"ो")
|
||||
Masc ;
|
||||
|
||||
|
||||
@@ -167,17 +177,19 @@ oper
|
||||
mkN12 bhao = mkNoun (bhao) (bhao) (bhao)
|
||||
(bhao) (bhao) (bhao)
|
||||
Masc ;
|
||||
|
||||
|
||||
----2 Determiners
|
||||
IDeterminer = {s:Gender => Str ; n : Number};
|
||||
IDeterminer = {s:Gender => Case => Str ; n : Number};
|
||||
makeDet : Str -> Str -> Str -> Str -> Number -> Determiner = \s1,s2,s3,s4,n -> {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Masc => s1 ;
|
||||
Fem => s2
|
||||
Sg => table {
|
||||
Masc => table {_ => s1} ;
|
||||
Fem => table {_ => s2}
|
||||
} ;
|
||||
Pl => table {
|
||||
Masc => s3 ;
|
||||
Fem => s4
|
||||
Masc => table { _ => s3} ;
|
||||
Fem => table {_ => s4}
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -186,11 +198,11 @@ oper
|
||||
|
||||
makeIDet : Str -> Str -> Number -> IDeterminer = \s1,s2,n -> {
|
||||
s = table {
|
||||
Masc => s1;
|
||||
Fem => s2
|
||||
Masc => table {_ =>s1};
|
||||
Fem => table {_ =>s2}
|
||||
};
|
||||
n = n
|
||||
};
|
||||
};
|
||||
|
||||
-- Proposition
|
||||
|
||||
@@ -290,8 +302,8 @@ oper
|
||||
};
|
||||
|
||||
makePersPron : PersPron;
|
||||
makePersPron = mkPersPron "m(a)यं" "m(o)j'|ह" "" "t(o)w " "t(o)j|ह" "t(o)w " "t(o)म" "t(o)म" "t(o)म" "ाप" "ाप" "ाप" "y(i)ह" "a(i)स" "" "w(o)ह" "a(o)स" ""
|
||||
"h(a)म" "h(a)म" "" "t(o)म" "t(o)म" "t(o)म" "t(o)म" "t(o)म" "t(o)म" "ाप" "ाप" "ाप" "y(i)ह" "a(i)न" "" "w(o)ह" "a(o)न" "" ;
|
||||
makePersPron = mkPersPron "m(a)यण" "m(o)j'|ह" "" "t(o)w " "t(o)j|ह" "t(o)w " "t(o)म" "t(o)म" "t(o)म" "अप" "अप" "अप" "y(i)ह" "a(i)स" "" "w(o)ह" "a(o)स" ""
|
||||
"h(a)म" "h(a)म" "" "t(o)म" "t(o)म" "t(o)म" "t(o)म" "t(o)म" "t(o)म" "अप" "अप" "अप" "y(i)ह" "a(i)न" "" "w(o)ह" "a(o)न" "" ;
|
||||
|
||||
mkPron : (x1,x2,x3:Str) -> {s:Case => Str} =
|
||||
\y1,y2,y3 -> { s =
|
||||
@@ -317,13 +329,14 @@ oper
|
||||
};
|
||||
|
||||
----2 Adjectives
|
||||
-- defined in ResUrd
|
||||
|
||||
makeIrregA : Str -> Adjective = \str -> {s = \\_,_,_,_ => str} ;
|
||||
|
||||
----3 Verbs
|
||||
CommonVF = {s : VTense => UPerson => Number => Gender => Str} ;
|
||||
|
||||
mkVerb : (x1: Str) -> Verb = \inf ->
|
||||
let root = (tk 2 inf); inf_obl = ((tk 1 inf) + "ै"); inf_fem = ((tk 1 inf) + "य")
|
||||
let root = (tk 2 inf); inf_obl = ((tk 1 inf) + "े"); inf_fem = ((tk 2 inf) + "यी")
|
||||
in { s = table {
|
||||
|
||||
VF tense person number gender => (mkCmnVF root tense person number gender).s ;
|
||||
@@ -343,38 +356,43 @@ oper
|
||||
mkCmnVF : Str -> VTense -> UPerson -> Number -> Gender -> {s:Str} =
|
||||
\root,t,p,n,g ->
|
||||
{s =
|
||||
let form1 = case (last root) of {
|
||||
""|"ा"|"w" => root + "w^ं" ;
|
||||
_ => root + "wं"
|
||||
};
|
||||
form2 = case (last root) of {
|
||||
""|"ा"|"w" => root + "y^ं" ;
|
||||
_ => root + "यं"
|
||||
};
|
||||
let form1 = case (last root) of
|
||||
{
|
||||
"ा"|"ो"|"ी" => root + "ऊँ";
|
||||
"े" => (tk 1 root)+ "ूँ";
|
||||
_ => root + "ूँ"
|
||||
};
|
||||
form2 = case (last root) of
|
||||
{
|
||||
"ा"|"ो" => root + "एँ";
|
||||
"ी" => root + "येँ";
|
||||
"े" => (tk 1 root)+ "ेँ";
|
||||
_ => root + "ेँ"
|
||||
}
|
||||
in
|
||||
case <t,p,n,g> of {
|
||||
<Subj,Pers1,Sg,_> => form1 ;
|
||||
<Subj,Pers1,Pl,_> => form2 ;
|
||||
<Subj,_,_,_> => (mkImpert root p n g).s ;
|
||||
<Perf,_,_,_> => case root of {
|
||||
"हw" => (mkPastInd root p n g).s ;
|
||||
"ज" => (mkPastInd "गय" p n g).s ;
|
||||
"कर" => (mkPastInd "क" p n g).s ;
|
||||
"दै" => (mkPastInd "द" p n g).s ;
|
||||
"लै" => (mkPastInd "ल" p n g).s ;
|
||||
_ => (mkPastInd root p n g).s };
|
||||
<Imperf,Pers2_Familiar,Sg,Masc> => root + "तै";
|
||||
<Imperf,Pers2_Familiar,Sg,Fem> => root + "तय"; --variants{root+"तय" ; root+"तयं"};
|
||||
<Imperf,Pers2_Familiar,Pl,Masc> => root + "तै";
|
||||
<Imperf,Pers2_Familiar,Pl,Fem> => root+"तयं";
|
||||
<Imperf,Pers2_Respect,Sg,Masc> => root + "तै";
|
||||
<Imperf,Pers2_Respect,Sg,Fem> => root + "तय"; --variants{root+"तय" ; root+"तयं"};
|
||||
<Imperf,Pers2_Respect,Pl,Masc> => root + "तै";
|
||||
<Imperf,Pers2_Respect,Pl,Fem> => root+"तयं";
|
||||
<Imperf,_,Sg,Masc> => root+"त";
|
||||
<Imperf,_,Sg,Fem> => root+"तय";
|
||||
"हो" => (mkPastInd root p n g).s ;
|
||||
"जा" => (mkPastInd "गय" p n g).s ;
|
||||
"कर" => (mkPastInd "किय" p n g).s ;
|
||||
-- "दE" => (mkPastInd "द" p n g).s ;
|
||||
-- "लE" => (mkPastInd "ल" p n g).s ;
|
||||
_ => (mkPastInd root p n g).s };
|
||||
<Imperf,Pers2_Familiar,Sg,Masc> => root + "ते";
|
||||
<Imperf,Pers2_Familiar,Sg,Fem> => root + "ती"; --variants{root+"तय" ; root+"तयण"};
|
||||
<Imperf,Pers2_Familiar,Pl,Masc> => root + "ते";
|
||||
<Imperf,Pers2_Familiar,Pl,Fem> => root+"ती";
|
||||
<Imperf,Pers2_Respect,Sg,Masc> => root + "ते";
|
||||
<Imperf,Pers2_Respect,Sg,Fem> => root + "ती"; --variants{root+"तय" ; root+"तयण"};
|
||||
<Imperf,Pers2_Respect,Pl,Masc> => root + "ते";
|
||||
<Imperf,Pers2_Respect,Pl,Fem> => root+"ती";
|
||||
<Imperf,_,Sg,Masc> => root+"ता";
|
||||
<Imperf,_,Sg,Fem> => root+"ती";
|
||||
<Imperf,_,Pl,Masc> => root+"ते";
|
||||
<Imperf,_,Pl,Fem> => root+"तयं"
|
||||
<Imperf,_,Pl,Fem> => root+"ती"
|
||||
}
|
||||
|
||||
} ;
|
||||
@@ -382,20 +400,27 @@ oper
|
||||
mkPastInd : Str -> UPerson -> Number -> Gender -> {s:Str} = \root,p,n,g ->
|
||||
{s = let roo = root ;
|
||||
a = case (last root) of {
|
||||
""|"ा"|"w"|"क" => "य" ;
|
||||
_ => ""
|
||||
"ा"|"ो"|"ी" => "या" ;
|
||||
"े" => (tk 1 roo) + "िया" ;
|
||||
_ => "ा"
|
||||
} ;
|
||||
y = case (last root) of {
|
||||
""|"ा"|"w" => "y^य" ;
|
||||
_ => "य"
|
||||
"ा"|"ो" => "यी" ;
|
||||
"ी" => "" ;
|
||||
"े" => (tk 1 roo) + "ी" ;
|
||||
"िय" => (tk 2 roo) + "ी" ;
|
||||
_ => "ी"
|
||||
} ;
|
||||
e = case (last root) of {
|
||||
""|"ा"|"w"|"क" => "y^ै" ;
|
||||
_ => "ै"
|
||||
"ा"|"ो"|"ी"|"क" => "ये" ;
|
||||
"े" => (tk 1 roo) + "ी" ;
|
||||
_ => "े"
|
||||
} ;
|
||||
yN = case (last root) of {
|
||||
""|"ा"|"w" => "y^यं" ;
|
||||
_ => "यं"
|
||||
"ा"|"ो"|"ी" => "यीँ" ;
|
||||
"िय" => (tk 2 roo) + "ी" ;
|
||||
"े" => (tk 1 roo) + "ीँ" ;
|
||||
_ => "यँ"
|
||||
} ;
|
||||
|
||||
in
|
||||
@@ -430,20 +455,19 @@ oper
|
||||
mkImpert : Str -> UPerson -> Number -> Gender -> {s:Str} = \root,p,n,g ->
|
||||
{s = let roo = root ;
|
||||
w = case (last root) of {
|
||||
""|"ा"|"w" => "w^" ;
|
||||
_ => "w"
|
||||
"ा" => "ओ" ;
|
||||
"ो" => "ओ" ;
|
||||
_ => "ो"
|
||||
} ;
|
||||
yN = case (last root) of {
|
||||
""|"ा"|"w" => "y^यं" ;
|
||||
_ => "यं"
|
||||
} ;
|
||||
yE = case (last root) of {
|
||||
""|"ा"|"w" => "y^यै" ;
|
||||
_ => "यै"
|
||||
"ा"|"ो" => "एँ" ;
|
||||
_ => "एँ"
|
||||
} ;
|
||||
e = case (last root) of {
|
||||
""|"ा"|"w" => "y^ै" ;
|
||||
_ => "ै"
|
||||
"ा"|"ो" => "ए" ;
|
||||
"े" => "" ;
|
||||
"ी" => "ये" ;
|
||||
_ => "ए"
|
||||
} in
|
||||
case <p,n,g> of {
|
||||
<Pers1,_,_> => ""; --nonExist ;
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
concrete NounHin of Noun = CatHin ** NounHindustani with
|
||||
(ResHindustani = ResHin) ;
|
||||
(ResHindustani = ResHin);
|
||||
|
||||
@@ -1,127 +1,117 @@
|
||||
concrete NumeralHin of Numeral = CatHin ** open ResHin,Prelude,ParamX in {
|
||||
-- By Harald Hammarström
|
||||
-- Modification for Hinu Shafqat Virk
|
||||
flags coding=utf8 ;
|
||||
--- still old Devanagari coding
|
||||
|
||||
|
||||
param DForm = unit | ten ;
|
||||
param DSize = sg | r2 | r3 | r4 | r5 | r6 | r7 | r8 | r9 ;
|
||||
param Size = singl | less100 | more100 ;
|
||||
|
||||
oper LinDigit = {s : DForm => Str ; size : DSize ; n : Number} ;
|
||||
|
||||
|
||||
lincat Dig = { s:Str ; n : Number};
|
||||
lincat Digit = LinDigit ;
|
||||
lincat Sub10 = {s : DForm => Str ; size : DSize ; n : Number} ;
|
||||
lincat Sub100 = {s : Str ; size : Size ; n : Number} ;
|
||||
lincat Sub1000 = {s : Str ; s2 : Str ; size : Size ; n : Number } ;
|
||||
lincat Sub1000000 = { s : Str ; n : Number } ;
|
||||
|
||||
lin num x0 =
|
||||
{s = table {
|
||||
NCard => x0.s ;
|
||||
NOrd => x0.s ++ "واں" -- need to use mkOrd which will make irregular ordinals but it gives path error
|
||||
};
|
||||
n = x0.n
|
||||
} ;
|
||||
oper mkOrd : Str -> Str =
|
||||
\s -> case s of {
|
||||
"عك" => "پہلا";
|
||||
"دo" => "دوسرا";
|
||||
"تi:ن" => "تعسرا";
|
||||
"چa:ر" => "چوتh-ا";
|
||||
("چحاہ"|"چحا"|"چحاi") => "چh-ٹا";
|
||||
_ => s ++ "واں"
|
||||
};
|
||||
-- {s = \\_ => x0.s ; n = x0.n} ;
|
||||
|
||||
|
||||
oper mkNum : Str -> Str -> DSize -> LinDigit =
|
||||
\do -> \bis -> \sz ->
|
||||
{s = table {unit => do ; ten => bis } ;
|
||||
size = sz ; n = Pl} ;
|
||||
|
||||
lin n2 = mkNum "دو" "بیس" r2 ;
|
||||
lin n3 = mkNum "تین" "تیس" r3 ;
|
||||
lin n4 = mkNum "چار" "چالیس" r4 ;
|
||||
lin n5 = mkNum "پانچ" "پچاس" r5 ;
|
||||
lin n6 = mkNum "چh-" "ساتh-" r6 ;
|
||||
lin n7 = mkNum "سات" "ستر" r7;
|
||||
lin n8 = mkNum "آتh-" "اسی" r8;
|
||||
lin n9 = mkNum "نو" "نوے" r9 ;
|
||||
|
||||
oper mkR : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> DSize => Str = \a1 -> \a2 -> \a3 -> \a4 -> \a5 -> \a6 -> \a7 -> \a8 -> \a9 -> table {
|
||||
sg => a1 + "اہ" ;
|
||||
r2 => a2 + "i:س" ;
|
||||
r3 => a3 + "تi:س" ;
|
||||
r4 => a4 + "a:لi:س" ;
|
||||
r5 => a5 + "ان" ;
|
||||
r6 => a6 + "ساٹح" ;
|
||||
r7 => a7 + "ہاتتار" ;
|
||||
r8 => a8 + "a:سi:" ;
|
||||
r9 => a9 + "a:ناvع"
|
||||
} ;
|
||||
|
||||
oper rows : DSize => DSize => Str = table {
|
||||
sg => mkR "گیارہ" "iكك" "iكات" "عكت" "iكیاو" "iك" "iك" "iكی" "iكی" ;
|
||||
r2 => mkR "بارہ" "بای" "بات" "بای" "باو" "با" "با" "بای" "ب" ;
|
||||
r3 => mkR "تیر" "تی" "تین" "تنت" "ترپ" "تری" "ت" "تر" "تر" ;
|
||||
r4 => mkR "چود" "چوب" "چون" "چوا" "چوو" "چون" "چوہ" "چور" "چور" ;
|
||||
r5 => mkR "پند" "پچی" "پین" "پنتا" "پچپ" "پین" "پہ" "پچ" "پچ" ;
|
||||
r6 => mkR "سول" "چh-ب" "چh-ت" "چh-ی" "چh-پ" "چh-یا" "چh-" "چh-ی" "چh-ی" ;
|
||||
r7 => mkR "ستر" "ستا" "سین" "سنت" "ستاو" "ستا" "سر" "ست" "ستا" ;
|
||||
r8 => mkR "اتh-ار" "اتh-ای" "اڑ" "اڑت" "اتh-او" "اڑ" "اتh-" "اتh-" "اتh-" ;
|
||||
r9 => table {sg => "انیس" ; r2 => "انتیس" ; r3 => "انتالیس" ;
|
||||
r4 => "انچاس" ; r5 => "انستh-" ; r6 => "انہتر" ;
|
||||
r7 => "اناسی" ;
|
||||
r8 => "انانوے" ; r9 => "ننانوے" }
|
||||
} ;
|
||||
|
||||
oper ss : Str -> {s : Str} = \s -> {s = s} ;
|
||||
|
||||
lin pot01 = {s = table {unit => "ایك" ; _ => "دuممی" } ; size = sg ; n = Sg} ;
|
||||
lin pot0 d = d ;
|
||||
lin pot110 = {s = "داس" ; size = less100 ; n = Pl} ;
|
||||
lin pot111 = {s = rows ! sg ! sg ; size = less100 ; n = Pl} ;
|
||||
lin pot1to19 d = {s = rows ! d.size ! sg ; size = less100 ; n = d.n} ;
|
||||
lin pot0as1 n = {s = n.s ! unit ; size = table {sg => singl ; _ => less100} ! n.size ; n = n.n } ;
|
||||
|
||||
lin pot1 d = {s = d.s ! ten ; size = less100 ; n = d.n} ;
|
||||
lin pot1plus d e = {s = rows ! e.size ! d.size ; size = less100 ; n = d.n} ;
|
||||
|
||||
lin pot1as2 n = {s = n.s ; s2 = "دuممی" ; size = n.size ; n = n.n} ;
|
||||
lin pot2 d = {s = (mksau (d.s ! unit) d.size) ;
|
||||
s2 = d.s ! unit ++ "لاكh-" ; size = more100 ; n = d.n} ;
|
||||
lin pot2plus d e =
|
||||
{s = (mksau (d.s ! unit) d.size) ++ e.s ;
|
||||
s2 = (d.s ! unit) ++ "لاكh-" ++ (mkhazar e.s e.size) ;
|
||||
size = more100 ; n = d.n} ;
|
||||
|
||||
lin pot2as3 n = {s = n.s ; n = n.n} ;
|
||||
lin pot3 n = {s = table { singl => ekhazar ;
|
||||
less100 => n.s ++ "ہزار" ;
|
||||
more100 => n.s2 } ! n.size ; n = n.n} ;
|
||||
lin pot3plus n m =
|
||||
{s = table {singl => ekhazar ;
|
||||
less100 => n.s ++ "ہزار" ;
|
||||
more100 => n.s2 } ! n.size ++ m.s ; n = n.n} ;
|
||||
|
||||
lin D_0 = { s = "0" ; n = Sg};
|
||||
lin D_1 = { s = "1" ; n = Sg};
|
||||
lin D_2 = { s = "2" ; n = Pl};
|
||||
lin D_3 = { s = "3" ; n = Pl};
|
||||
lin D_4 = { s = "4" ; n = Pl};
|
||||
lin D_5 = { s = "5" ; n = Pl};
|
||||
lin D_6 = { s = "6" ; n = Pl};
|
||||
lin D_7 = { s = "7" ; n = Pl};
|
||||
lin D_8 = { s = "8" ; n = Pl};
|
||||
lin D_9 = { s = "9" ; n = Pl};
|
||||
lin IDig d = { s = \\_ => d.s ; n = d.n} ;
|
||||
lin IIDig d dg = { s = \\df => Prelude.glue (dg.s ! df) d.s ; n = Pl };
|
||||
|
||||
oper ekhazar : Str = variants {"ہزار" ; "ایك" ++ "ہزار"} ;
|
||||
oper mkhazar : Str -> Size -> Str = \s -> \sz -> table {singl => ekhazar ; _ => s ++ "ہزار"} ! sz ;
|
||||
oper mksau : Str -> DSize -> Str = \s -> \sz -> table {sg => "سو" ; _ => s ++ "سو"} ! sz ;
|
||||
}
|
||||
-- By Harald Hammarstr
|
||||
-- Modification for Urdu Shafqat Virk
|
||||
|
||||
|
||||
concrete NumeralHin of Numeral = CatHin ** open ResHin,CommonHindustani,ParamX, Prelude in {
|
||||
flags coding=utf8 ;
|
||||
|
||||
param DForm = unit | ten ;
|
||||
param DSize = sg | r2 | r3 | r4 | r5 | r6 | r7 | r8 | r9 ;
|
||||
param Size = singl | less100 | more100 ;
|
||||
|
||||
oper LinDigit = {s : DForm => Str ; size : DSize ; n : Number} ;
|
||||
|
||||
|
||||
lincat Dig = { s:Str ; n : Number};
|
||||
lincat Digit = LinDigit ;
|
||||
lincat Sub10 = {s : DForm => Str ; size : DSize ; n : Number} ;
|
||||
lincat Sub100 = {s : Str ; size : Size ; n : Number} ;
|
||||
lincat Sub1000 = {s : Str ; s2 : Str ; size : Size ; n : Number } ;
|
||||
lincat Sub1000000 = { s : Str ; n : Number } ;
|
||||
|
||||
lin num x0 =
|
||||
{s = table {
|
||||
NCard => x0.s ;
|
||||
NOrd => Prelude.glue x0.s "वाँ" -- need to use mkOrd x0.s but it gives linking error
|
||||
};
|
||||
n = x0.n
|
||||
} ;
|
||||
|
||||
|
||||
oper mkNum : Str -> Str -> DSize -> LinDigit =
|
||||
\do -> \bis -> \sz ->
|
||||
{s = table {unit => do ; ten => bis } ;
|
||||
size = sz ; n = Pl} ;
|
||||
|
||||
lin n2 = mkNum "दो" "बीस" r2 ;
|
||||
lin n3 = mkNum "तीन" "तीस" r3 ;
|
||||
lin n4 = mkNum "चार" "चालीस" r4 ;
|
||||
lin n5 = mkNum "पांच" "पचास" r5 ;
|
||||
lin n6 = mkNum "छे" "साटh'" r6 ;
|
||||
lin n7 = mkNum "सात" "सततर" r7;
|
||||
lin n8 = mkNum "आठ" "अससी" r8;
|
||||
lin n9 = mkNum "नौ" "नववे" r9 ;
|
||||
|
||||
oper mkR : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> DSize => Str = \a1 -> \a2 -> \a3 -> \a4 -> \a5 -> \a6 -> \a7 -> \a8 -> \a9 -> table {
|
||||
sg => a1 + "ह" ;
|
||||
r2 => a2 + "स" ;
|
||||
r3 => a3 + "तीस" ;
|
||||
r4 => a4 + "ालीस" ;
|
||||
r5 => a5 + "न" ;
|
||||
r6 => a6 + "सठ" ;
|
||||
r7 => a7 + "ततर" ;
|
||||
r8 => a8 + "ासी" ;
|
||||
r9 => a9 + "ानwवे"
|
||||
} ;
|
||||
|
||||
oper rows : DSize => DSize => Str = table {
|
||||
sg => mkR "गयार" "इककी" "इकत" "इकत" "इकयाव" "इक" "इकह" "इकय" "इकय" ;
|
||||
r2 => mkR "बार" "बाई" "बत" "बैत" "बाव" "बा" "बह" "बय" "ब" ;
|
||||
r3 => mkR "तेर" "तेई" "तैं" "तैंत" "तिरप" "तिर" "तिह" "तिर" "तिर" ;
|
||||
r4 => mkR "चौद" "चौबी" "चौं" "चौव" "चww" "चौँ" "चौह" "चw+र" "चौर" ;
|
||||
r5 => mkR "पंदर" "पचची" "पैं" "पैंत" "पचप" "पैँ" "पिछ" "पच" "पिच" ;
|
||||
r6 => mkR "सोल" "चa'बबी" "छात" "छिय" "छपप" "छिया" "चिह" "छिय" "छिय" ;
|
||||
r7 => mkR "सतर" "सतताई" "सैं" "सैंत" "सताव" "सढ़" "सतह" "सत" "सत" ;
|
||||
r8 => mkR "अठार" "टh'ाई" "अढ़" "अढ़त" "अठाव" "अढ़" "अटह" "अठ" "अठ" ;
|
||||
r9 => table {sg => "उननीस" ; r2 => "उनततीस" ; r3 => "उंतालीस" ;
|
||||
r4 => "उंचास" ; r5 => "उनसठ" ; r6 => "उनहततर" ;
|
||||
r7 => "उनससी" ;
|
||||
r8 => "उनननवे" ; r9 => "निन्यानवे" }
|
||||
} ;
|
||||
|
||||
oper ss : Str -> {s : Str} = \s -> {s = s} ;
|
||||
|
||||
lin pot01 = {s = table {unit => "एक" ; _ => "दमी" } ; size = sg ; n = Sg} ;
|
||||
lin pot0 d = d ;
|
||||
lin pot110 = {s = "दस" ; size = less100 ; n = Pl} ;
|
||||
lin pot111 = {s = rows ! sg ! sg ; size = less100 ; n = Pl} ;
|
||||
lin pot1to19 d = {s = rows ! d.size ! sg ; size = less100 ; n = d.n} ;
|
||||
lin pot0as1 n = {s = n.s ! unit ; size = table {sg => singl ; _ => less100} ! n.size ; n = n.n } ;
|
||||
|
||||
lin pot1 d = {s = d.s ! ten ; size = less100 ; n = d.n} ;
|
||||
lin pot1plus d e = {s = rows ! e.size ! d.size ; size = less100 ; n = d.n} ;
|
||||
|
||||
lin pot1as2 n = {s = n.s ; s2 = "दमी" ; size = n.size ; n = n.n} ;
|
||||
lin pot2 d = {s = (mksau (d.s ! unit) d.size) ;
|
||||
s2 = d.s ! unit ++ "लाख" ; size = more100 ; n = d.n} ;
|
||||
lin pot2plus d e =
|
||||
{s = (mksau (d.s ! unit) d.size) ++ e.s ;
|
||||
s2 = (d.s ! unit) ++ "लाख" ++ (mkhazar e.s e.size) ;
|
||||
size = more100 ; n = d.n} ;
|
||||
|
||||
lin pot2as3 n = {s = n.s ; n = n.n} ;
|
||||
lin pot3 n = {s = table { singl => ekhazar ;
|
||||
less100 => n.s ++ "हज़ार" ;
|
||||
more100 => n.s2 } ! n.size ; n = n.n} ;
|
||||
lin pot3plus n m =
|
||||
{s = table {singl => ekhazar ;
|
||||
less100 => n.s ++ "हज़ार" ;
|
||||
more100 => n.s2 } ! n.size ++ m.s ; n = n.n} ;
|
||||
|
||||
lin D_0 = { s = "०" ; n = Sg};
|
||||
lin D_1 = { s = "१" ; n = Sg};
|
||||
lin D_2 = { s = "२" ; n = Pl};
|
||||
lin D_3 = { s = "३" ; n = Pl};
|
||||
lin D_4 = { s = "४" ; n = Pl};
|
||||
lin D_5 = { s = "५" ; n = Pl};
|
||||
lin D_6 = { s = "६" ; n = Pl};
|
||||
lin D_7 = { s = "७" ; n = Pl};
|
||||
lin D_8 = { s = "८" ; n = Pl};
|
||||
lin D_9 = { s = "९" ; n = Pl};
|
||||
lin IDig d = { s = \\_ => d.s ; n = d.n} ;
|
||||
lin IIDig d dg = { s = \\df => Prelude.glue (dg.s ! df) d.s ; n = Pl };
|
||||
|
||||
oper ekhazar : Str = variants {"हज़ार" ; "एक" ++ "हज़ार"} ;
|
||||
oper mkhazar : Str -> Size -> Str = \s -> \sz -> table {singl => ekhazar ; _ => s ++ "हज़ार"} ! sz ;
|
||||
oper mksau : Str -> DSize -> Str = \s -> \sz -> table {sg => "एक" ++ "सौ" ; _ => s ++ "सौ"} ! sz ;
|
||||
}
|
||||
|
||||
@@ -47,7 +47,16 @@ oper
|
||||
|
||||
-- Proper names
|
||||
mkPN : Str -> PN = \s -> let n = regNoun s in {s = n.s ! Sg ; g = n.g ; lock_PN = <>} ;
|
||||
personalPN : Str -> Str -> Str -> Str -> Number -> Gender -> UPerson -> Pron = \s1,s2,s3,sp,nn,g,p -> let n = mkPron s1 s2 s3 in {s = n.s ; a = toAgr nn p g ; ps = sp ; lock_Pron = <>};
|
||||
personalPN : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Number -> Gender -> UPerson -> Pron =
|
||||
\s1,s2,s3,smp,sfp,pmp,pfp,nn,g,p -> let n = mkPron s1 s2 s3 in
|
||||
{s = n.s ;
|
||||
a = toAgr nn p g ;
|
||||
ps = \\n,g => case <n,g> of {
|
||||
<Sg,Masc> =>smp ;
|
||||
<Sg,Fem> => sfp ;
|
||||
<Pl,Masc> => pmp ;
|
||||
<Pl,Fem> => pfp } ; lock_Pron = <>};
|
||||
|
||||
demoPN : Str -> Str -> Str -> Quant = \s1,s2,s3 -> let n = makeDemonPronForm s1 s2 s3 in {s = n.s ; a = defaultAgr ; lock_Quant = <>};
|
||||
mkDet : Str -> Str -> Str -> Str -> Number -> Det = \s1,s2,s3,s4,nb -> let dt = makeDet s1 s2 s3 s4 nb in {s = dt.s ; n = nb ; lock_Det = <>};
|
||||
mkIP : (x1,x2,x3:Str) -> Number -> Gender -> IP = \s1,s2,s3,n,g -> let p = mkIntPronForm s1 s2 s3 in { s = p.s ; n = n ; g = g ; lock_IP = <>};
|
||||
@@ -62,6 +71,8 @@ oper
|
||||
mkA : Str -> Str -> A2
|
||||
= \a,c -> let n = regAdjective a in {s = n.s; c2 = c} ** {lock_A2 = <>} ;
|
||||
} ;
|
||||
|
||||
mkIrregA : Str -> Str -> A2 = \str,c -> makeIrregA str ** {c2 = c ; lock_A2 = <>} ;
|
||||
|
||||
--2 Verbs
|
||||
|
||||
@@ -99,6 +110,22 @@ oper
|
||||
|
||||
--3 Determiners and quantifiers
|
||||
|
||||
mkIQuant : (s1,_,_,_,_,_,_,_,_,_,_,s12:Str) -> IQuant =
|
||||
\smd,smo,smv,sfd,sfo,sfv,pmd,pmo,pmv,pfd,pfo,pfv ->
|
||||
{s = \\n,g,c => case <n,g,c> of {
|
||||
<Sg,Masc,Dir> =>smd ;
|
||||
<Sg,Masc,Obl> =>smo;
|
||||
<Sg,Masc,Voc> =>smv ;
|
||||
<Sg,Fem,Dir> =>sfd ;
|
||||
<Sg,Fem,Obl> =>sfo;
|
||||
<Sg,Fem,Voc> =>sfv ;
|
||||
<Pl,Masc,Dir> =>pmd ;
|
||||
<Pl,Masc,Obl> =>pmo;
|
||||
<Pl,Masc,Voc> =>pmv ;
|
||||
<Pl,Fem,Dir> =>pfd ;
|
||||
<Pl,Fem,Obl> =>pfo;
|
||||
<Pl,Fem,Voc> =>pfv} ;
|
||||
lock_IQuant = <>};
|
||||
-- mkQuant : overload {
|
||||
mkQuant : Pron -> Quant ;
|
||||
-- mkQuant : (no_sg, no_pl, none_sg, non_pl : Str) -> Quant ;
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
concrete RelativeHin of Relative = CatHin ** RelativeHindustani with
|
||||
(ResHindustani = ResHin) ;
|
||||
(ResHindustani = ResHin);
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
instance ResHin of ResHindustani = DiffHin ** open CommonHindustani, Prelude, Predef in {
|
||||
instance ResHin of ResHindustani = DiffHin ** open CommonHindustani,StringsHin, Prelude, Predef in {
|
||||
} ;
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
concrete SentenceHin of Sentence = CatHin ** SentenceHindustani with
|
||||
(ResHindustani = ResHin) ;
|
||||
(ResHindustani = ResHin);
|
||||
|
||||
@@ -1,129 +1,130 @@
|
||||
concrete StructuralHin of Structural = CatHin **
|
||||
open MorphoHin, ParadigmsHin, Prelude, NounHin,ParamX,CommonHindustani in {
|
||||
|
||||
flags optimize=all ;
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
above_Prep = mkPrep "wपर" "wपर" ;
|
||||
after_Prep = mkPrep ["कै बेद"] ["कै बेद"] ;
|
||||
all_Predet = ss "तमम" ;
|
||||
almost_AdA, almost_AdN = mkAdN "तqरयब" ;
|
||||
although_Subj = ss "गरचh-" ;
|
||||
always_AdV = ss "हमयXह" ;
|
||||
and_Conj = sd2 [] "wर" ** {n = Pl} ;
|
||||
because_Subj = ss "कयwनकh-" ;
|
||||
before_Prep = mkPrep "पहलै" "पहलै" ;
|
||||
behind_Prep = mkPrep "पयचh-ै" "पयचh-ै" ;
|
||||
between_Prep = mkPrep "दरमयं" "दरमयं" ;
|
||||
both7and_DConj = sd2 "दwनwं" "wर" ** {n = Pl} ;
|
||||
but_PConj = ss "लयकन" ;
|
||||
by8agent_Prep = mkPrep "" "" ;
|
||||
by8means_Prep = mkPrep "" "" ;
|
||||
-- can8know_VV,can_VV = mkV "सकन" ** { isAux = True} ;
|
||||
during_Prep = mkPrep ["कै दरमयं"] ["कै दरमयं"] ;
|
||||
either7or_DConj = sd2 "कwय यक" "य" ** {n = Sg} ;
|
||||
everybody_NP = MassNP (UseN (ParadigmsHin.mkN "हर कwय" "हर कwय" "हर कwय" "हर कwय" "हर कwय" "हर कwय" Masc )); -- not a good way coz need to include NounHin
|
||||
-- every_Det = mkDet "हर" Sg;
|
||||
everything_NP = MassNP (UseN (ParadigmsHin.mkN "हर चयज़" "हर चयज़" "हर चयज़w" "सब चयज़यं" "सब चयज़wं" "सब चयज़w" Masc ));
|
||||
everywhere_Adv = mkAdv "हर जगह" ;
|
||||
-- few_Det = mkDet "चनद" Pl ;
|
||||
first_Ord = {s = "पेहल" ; n = Sg} ; --DEPRECATED
|
||||
for_Prep = mkPrep "कयलयै" "कयलयै" ;
|
||||
from_Prep = mkPrep "सै" "सै" ;
|
||||
he_Pron = personalPN "wह" "स" "" "स क" Sg Masc Pers3_Distant ;
|
||||
here_Adv = mkAdv "यहं" ;
|
||||
here7to_Adv = mkAdv "यहं पर" ;
|
||||
here7from_Adv = mkAdv "यहं सै" ;
|
||||
how_IAdv = ss "कयसै" ;
|
||||
how8many_IDet = makeIDet "कतनै" "कतनय" Pl ;
|
||||
if_Subj = ss "गर" ;
|
||||
in8front_Prep = mkPrep ["कै समनै"] ["कै समनै"] ;
|
||||
i_Pron = personalPN "मयं" "मजh-" "" "मयर" Sg Masc Pers1;
|
||||
in_Prep = mkPrep "में" "में" ;
|
||||
it_Pron = personalPN "यह" "यह" "यह" "स क" Sg Masc Pers3_Near;
|
||||
less_CAdv = {s = "कम" ; p = ""} ;
|
||||
-- many_Det = mkDet "बहत ज़यदह" Pl ;
|
||||
more_CAdv = {s = "ज़यदh-" ; p = "" } ;
|
||||
most_Predet = ss "ज़यदह तर" ;
|
||||
--much_Det = mkDet "बहत" Pl ;
|
||||
-- must_VV = {
|
||||
-- s = table {
|
||||
-- VVF VInf => ["हवे तॉ"] ;
|
||||
-- VVF VPres => "मुसत" ;
|
||||
-- VVF VPPart => ["हद तॉ"] ;
|
||||
-- VVF VPresPart => ["हविनग तॉ"] ;
|
||||
-- VVF VPast => ["हद तॉ"] ; --# notpresent
|
||||
-- VVPastNeg => ["हदn'त तॉ"] ; --# notpresent
|
||||
-- VVPresNeg => "मुसतn'त"
|
||||
-- } ;
|
||||
-- isAux = True
|
||||
-- } ;
|
||||
-----b no_Phr = ss "नॉ" ;
|
||||
no_Utt = ss "नहयं" ;
|
||||
on_Prep = mkPrep "पर" "पर" ;
|
||||
-- one_Quant = demoPN "यक" "यक" "यक" ; -- DEPRECATED
|
||||
only_Predet = ss "सरf" ;
|
||||
or_Conj = sd2 [] "य" ** {n = Sg} ;
|
||||
otherwise_PConj = ss "य पh-र" ;
|
||||
part_Prep = mkPrep "" "" ;
|
||||
please_Voc = ss "महरबनि" ;
|
||||
possess_Prep = mkPrep "क" "कय" ;
|
||||
quite_Adv = ss "कहमॉसह" ;
|
||||
she_Pron = personalPN "wह" "स" "wह" "स कय" Sg Fem Pers3_Distant ;
|
||||
so_AdA = ss "सॉ" ;
|
||||
somebody_NP = MassNP (UseN (ParadigmsHin.mkN "कwय" "कwय" "कwय" "कwय" "कwय" "कwय" Masc ));
|
||||
--someSg_Det = mkDet "कचh-" Sg ;
|
||||
--somePl_Det = mkDet "कचh-" Pl ;
|
||||
something_NP = MassNP (UseN (ParadigmsHin.mkN "कwय चयज़" "कwय चयज़" "कwय चयज़" "कh- चयज़यं" "कh- चयज़wं" "कh- चयज़w" Masc ));
|
||||
somewhere_Adv = mkAdv "कहिन पर" ;
|
||||
that_Quant = demoPN "wह" "स" "न" ;
|
||||
that_Subj = ss "कह";
|
||||
there_Adv = mkAdv "wहं" ;
|
||||
there7to_Adv = mkAdv "wहं पर" ;
|
||||
there7from_Adv = mkAdv ["wहं सै"] ;
|
||||
therefore_PConj = ss "स लयै" ;
|
||||
they_Pron = personalPN "wह" "wह" "wह" "न क" Pl Masc Pers3_Distant ; ----
|
||||
this_Quant = demoPN "यह" "स" "न";
|
||||
through_Prep = mkPrep ["मयं सै"] ["मयं सै"] ;
|
||||
too_AdA = ss "बहत" ;
|
||||
to_Prep = mkPrep "कw" "कw" ;
|
||||
under_Prep = mkPrep "नयचै" "नयचै" ;
|
||||
very_AdA = ss "बहत" ;
|
||||
-- want_VV = mkV "चहन" ** { isAux = False} ;
|
||||
we_Pron = personalPN "हम" "हम" "हम" "हमर" Pl Masc Pers1 ;
|
||||
whatSg_IP = mkIP "कय" "किस" "किस" Sg Masc ;
|
||||
whatPl_IP = mkIP "कय" "किन" "किन" Pl Masc ;
|
||||
when_IAdv = ss "कब" ;
|
||||
when_Subj = ss "कब" ;
|
||||
where_IAdv = ss "कहं" ;
|
||||
which_IQuant = {s = \\_ => "कwन सय"} ;
|
||||
-- whichPl_IDet = makeDet "कwन स" "कwन सय" "कwन सै" "कwन सय" ;
|
||||
-- whichSg_IDet = makeDet "कwन स" "कwन सय" "कwन सै" "कwन सय" ;
|
||||
whoSg_IP = mkIP "कwन" "किस" "किस" Sg Masc ;
|
||||
whoPl_IP = mkIP "कwन" "कन" "कनहwं" Pl Masc ;
|
||||
why_IAdv = ss "कयwं" ;
|
||||
without_Prep = mkPrep ["कै बघयर"] ["कै बघयर"] ;
|
||||
with_Prep = mkPrep ["कै सतh-"] ["कै सतh-"] ;
|
||||
-- yes_Phr = ss "हं" ;
|
||||
yes_Utt = ss "हं" ;
|
||||
youSg_Pron = personalPN "तम" "तम" "तम" "तमh-र" Sg Masc Pers2_Casual ;
|
||||
youPl_Pron = personalPN "तम" "तम" "तम" "तमh-र" Pl Masc Pers2_Casual ;
|
||||
youPol_Pron = personalPN "ाप" "ाफ" "ाफ" "ाप क" Sg Masc Pers2_Respect ;
|
||||
no_Quant = demoPN " कwय नहयं" "कwय नहयं" "कwय नहयं" ;
|
||||
not_Predet = {s="नहयं"} ;
|
||||
if_then_Conj = sd2 "गर" "तw" ** {n = Sg} ;
|
||||
at_least_AdN = mkAdN ["कम ज़ कम"] ;
|
||||
at_most_AdN = mkAdN ["ज़यदह सै ज़यदह"];
|
||||
nothing_NP = MassNP (UseN (ParadigmsHin.mkN "कwय चयज़ नहयं" "कwय चयज़ नहयं" "कwय चयज़ नहयं" "कwय चयज़ नहयं" "कwय चयज़ नहयं" "कwय चयज़ नहयं" Masc ));
|
||||
except_Prep = mkPrep "सwै" "सwै" ;
|
||||
nobody_NP = MassNP (UseN (ParadigmsHin.mkN "कwय नहयं" "कwय नहयं" "कwय नहयं" "कwय नहयं" "कwय नहयं" "कwय नहयं" Masc ));
|
||||
|
||||
as_CAdv = {s = "ेतन" ; p = "जतन"} ;
|
||||
|
||||
have_V2 = mkV2 (mkV "रकh-न") "" ;
|
||||
|
||||
language_title_Utt = ss "रदw" ;
|
||||
|
||||
}
|
||||
|
||||
concrete StructuralHin of Structural = CatHin **
|
||||
open MorphoHin, ParadigmsHin, Prelude, NounHin,ParamX,CommonHindustani in {
|
||||
|
||||
flags optimize=all ;
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
above_Prep = mkPrep ["के ऊपर"] ["के ऊपर"] ;
|
||||
after_Prep = mkPrep ["के बाद"] ["के बाद"] ;
|
||||
all_Predet = ss "तमाम" ;
|
||||
almost_AdA, almost_AdN = mkAdN "तक़रीबन" ;
|
||||
although_Subj = ss "अगरचि" ;
|
||||
always_AdV = ss "हमेशा" ;
|
||||
and_Conj = sd2 [] "और" ** {n = Pl} ;
|
||||
because_Subj = ss "क्योँकि" ;
|
||||
before_Prep = mkPrep ["से पहले"] ["से पहले"] ;
|
||||
behind_Prep = mkPrep ["के पीछे"] ["के पीछे"] ;
|
||||
between_Prep = mkPrep ["के दरमियान"] ["के दरमियान"] ;
|
||||
both7and_DConj = sd2 "दोनों" "और" ** {n = Pl} ;
|
||||
but_PConj = ss "लेकिन" ;
|
||||
by8agent_Prep = mkPrep "" "" ;
|
||||
by8means_Prep = mkPrep "" "" ;
|
||||
can8know_VV,can_VV = mkV "सकना" ** { isAux = True} ;
|
||||
during_Prep = mkPrep ["के दरमियान"] ["के दरमियान"] ;
|
||||
either7or_DConj = sd2 "कोई एक" "या" ** {n = Sg} ;
|
||||
everybody_NP = MassNP (UseN (ParadigmsHin.mkN "हर कोई" "हर कोई" "हर कोई" "हर कोई" "हर कोई" "हर कोई" Masc ));
|
||||
every_Det = mkDet "हर" "हर" "हर" "हर" Sg;
|
||||
everything_NP = MassNP (UseN (ParadigmsHin.mkN "हर चीज़" "हर चीज़" "हर चीज़ोँ" "सब चीज़ेँ" "सब चीज़ोँ" "सब चीज़ोँ" Masc ));
|
||||
everywhere_Adv = mkAdv "हर जगह" ;
|
||||
few_Det = mkDet "चंद" "चंद" "चंद" "चंद" Pl ;
|
||||
first_Ord = {s = "" ; n = Sg} ; --De:PRe:CATe:D
|
||||
for_Prep = mkPrep ["के लिये"] ["के लिये"] ;
|
||||
from_Prep = mkPrep "से" "से" ;
|
||||
he_Pron = personalPN "वह" "उस" "" "उस का" "उस की" "उस के" "उस की" Sg Masc Pers3_Distant ;
|
||||
here_Adv = mkAdv "यहाँ" ;
|
||||
here7to_Adv = mkAdv ["यहाँ पर"] ;
|
||||
here7from_Adv = mkAdv ["यहाँ से"] ;
|
||||
how_IAdv = ss "कैसे" ;
|
||||
how8many_IDet = makeIDet "कितने" "कितनी" Pl ;
|
||||
how8much_IAdv = ss "कितना" ;
|
||||
if_Subj = ss "अगर" ;
|
||||
in8front_Prep = mkPrep ["के सामने"] ["के सामने"] ;
|
||||
i_Pron = personalPN "मैं" "मुझ" "" "मेरा" "मेरी" "मेरे" "मेरी" Sg Masc Pers1;
|
||||
in_Prep = mkPrep "में" "में" ;
|
||||
it_Pron = personalPN "यह" "इस" "यह" "इस का" "इस की" "उस के" "उस की" Sg Masc Pers3_Near;
|
||||
less_CAdv = {s = "कम" ; p = ""} ;
|
||||
many_Det = mkDet "बहुत" "बहुत" "बहुत" "बहुत" Pl ;
|
||||
more_CAdv = {s = "ज़्यादा" ; p = "से" } ;
|
||||
most_Predet = ss "सब से ज़्यादा" ;
|
||||
much_Det = mkDet "बहुत" "बहुत" "बहुत" "बहुत" Sg ;
|
||||
-- must_VV = {
|
||||
-- s = table {
|
||||
-- VVF VInf => ["हवe तo"] ;
|
||||
-- VVF VPres => "मुसत" ;
|
||||
-- VVF VPPart => ["हद तo"] ;
|
||||
-- VVF VPresPart => ["हविनग तo"] ;
|
||||
-- VVF VPast => ["हद तo"] ; --# notpresent
|
||||
-- VVPastNeg => ["हदn'त तo"] ; --# notpresent
|
||||
-- VVPresNeg => "मुसतn'त"
|
||||
-- } ;
|
||||
-- isAux = True
|
||||
-- } ;
|
||||
no_Utt = ss "नहीं" ;
|
||||
on_Prep = mkPrep "पर" "पर" ;
|
||||
-- one_Quant = demoPN "" ; -- De:PRe:CATe:D
|
||||
only_Predet = ss "सिर्फ़" ;
|
||||
or_Conj = sd2 [] "या" ** {n = Sg} ;
|
||||
otherwise_PConj = ss "नहीं तो" ;
|
||||
part_Prep = mkPrep "" "" ;
|
||||
-- please_Voc = ss "" ;
|
||||
possess_Prep = mkPrep "का" "की" ;
|
||||
quite_Adv = ss "काफ़ी" ;
|
||||
she_Pron = personalPN "वह" "उस" "उस" "उस का" "उस की" "उस के" "उस की" Sg Fem Pers3_Distant ; -- chek with prasad about 'Us'
|
||||
so_AdA = ss "तो" ;
|
||||
somebody_NP = MassNP (UseN (ParadigmsHin.mkN "कोई" "कोई" "कोई" "कोई" "कोई" "कोई" Masc ));
|
||||
someSg_Det = mkDet "कुछ" "कुछ" "कुछ" "कुछ" Sg ;
|
||||
somePl_Det = mkDet "कुछ" "कुछ" "कुछ" "कुछ" Pl ;
|
||||
something_NP = MassNP (UseN (ParadigmsHin.mkN ["कोई चीज़"] ["कोई चीज़"] ["कोई चीज़"] ["कोई चीज़"] ["कोई चीज़"] ["कोई चीज़"] Masc ));
|
||||
somewhere_Adv = mkAdv ["कहीं"] ;
|
||||
that_Quant = demoPN "वह" "उस" "उन" ;
|
||||
that_Subj = ss "कि";
|
||||
there_Adv = mkAdv "वहाँ" ;
|
||||
there7to_Adv = mkAdv ["वहाँ पर"] ;
|
||||
there7from_Adv = mkAdv ["वहाँ से"] ;
|
||||
therefore_PConj = ss "इस लिये" ;
|
||||
they_Pron = personalPN "वह" "वह" "वह" "उन का" "उन की" "उन के" "उन की" Pl Masc Pers3_Distant ; ----
|
||||
this_Quant = demoPN "यह" "इस" "इन";
|
||||
through_Prep = mkPrep ["में से"] ["में से"] ;
|
||||
too_AdA = ss "बहुत" ;
|
||||
to_Prep = mkPrep "को" "को" ; -- ** {lock_Prep = <>};
|
||||
under_Prep = mkPrep ["के नीचे"] ["के नीचे"] ; -- ** {lock_Prep = <>};
|
||||
very_AdA = ss "बहुत" ;
|
||||
want_VV = mkV "चाहना" ** { isAux = False} ;
|
||||
we_Pron = personalPN "हम" "हम" "हम" "हमारा" "हमारी" "हमारे" "हमारी" Pl Masc Pers1 ;
|
||||
whatSg_IP = mkIP "क्या" "क्या" "क्या" Sg Masc ; -- confirm
|
||||
whatPl_IP = mkIP "क्या" "क्या" "क्या" Pl Masc ;
|
||||
when_IAdv = ss "कब" ;
|
||||
when_Subj = ss "कब" ;
|
||||
where_IAdv = ss "कहाँ" ;
|
||||
which_IQuant = mkIQuant ["कौन सा"] ["कौन से"] "" ["कौन सी"] ["कौन सी"] ""
|
||||
["कौन से"] ["कौन से"] "" ["कौन सी"] ["कौन सी"] "" ; -- need to put right forms Prasad
|
||||
-- whichPl_IDet = makeDet "" ;
|
||||
-- whichSg_IDet = makeDet "";
|
||||
whoSg_IP = mkIP "कौन" "किस" "किस" Sg Masc ;
|
||||
whoPl_IP = mkIP "कौन" "किन" "किनहों" Pl Masc ;
|
||||
why_IAdv = ss "क्यों" ;
|
||||
-- without_Prep = mkPrep ;
|
||||
with_Prep = mkPrep ["के साथ"] ["के साथ"] ;
|
||||
-- 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 ;
|
||||
-- no_Quant = demoPN "कोई नहीं" ;
|
||||
not_Predet = {s="नहीं"} ;
|
||||
-- if_then_Conj = sd2 "गर तो" ** {n = Sg} ;
|
||||
at_least_AdN = mkAdN ["कम से कम"] ;
|
||||
at_most_AdN = mkAdN ["ज़्यादा से ज़्यादा"];
|
||||
-- nothing_NP = MassNP (UseN (ParadigmsHin.mkN "कुछ नहीं" Masc ));
|
||||
except_Prep = mkPrep "के सिवाय" "के सिवाय";
|
||||
-- nobody_NP = MassNP (UseN (ParadigmsHin.mkN "कोई नहीं" Masc ));
|
||||
|
||||
as_CAdv = {s = "ितना" ; p = "जितना"} ;
|
||||
|
||||
-- have_V2 = mkV2 "";
|
||||
|
||||
language_title_Utt = ss "हिन्दी" ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -2,3 +2,4 @@
|
||||
|
||||
concrete SymbolHin of Symbol = CatHin ** SymbolHindustani with
|
||||
(ResHindustani = ResHin) ;
|
||||
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
concrete VerbHin of Verb = CatHin ** VerbHindustani with
|
||||
(ResHindustani = ResHin) ;
|
||||
(ResHindustani = ResHin);
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
instance DiffHin of DiffHindustani = open CommonHindustani, Prelude in {
|
||||
instance DiffHin of DiffHindustani = open CommonHindustani, ResHindustani,Prelude in {
|
||||
--instance DiffHin of DiffHindustani = CommonHindustani ** open Prelude in {
|
||||
flags coding = utf8;
|
||||
oper
|
||||
Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
|
||||
mkClause : NP -> VPH -> Clause = \np,vp -> {
|
||||
@@ -31,9 +33,9 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
|
||||
VPPerfFut => {fin = [] ; inf = Prelude.glue ((vp.s ! VPTense VPPerf agr).inf ++ hw p n) (copula CFuture n p g) } ;
|
||||
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 = [] ; inf = Prelude.glue ((vp.s ! VPTense VPPres agr).inf ++ raha g n ++ hw p n) (copula CFuture n p g )} ;
|
||||
VPSubj => case vp.prog of { True => {fin = (vp.s ! VPTense VPFutr agr).inf ++ hw p n ; inf = "Xayd" } ;
|
||||
_ => {fin = (vp.s ! VPTense VPFutr agr).inf ; inf = "Xayd" } }
|
||||
VPPerfFutCont => {fin = [] ; inf = Prelude.glue ((vp.s ! VPTense VPPres agr).inf ++ raha g n ++ hw p n) (copula CFuture n p g) } ;
|
||||
VPSubj => case vp.prog of { True => {fin = (vp.s ! VPTense VPFutr agr).inf ++ hw p n ; inf = "s*a:yd" } ;
|
||||
_ => {fin = (vp.s ! VPTense VPFutr agr).inf ; inf = "s*a:yd" } }
|
||||
|
||||
};
|
||||
|
||||
@@ -41,7 +43,7 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
|
||||
quest =
|
||||
case ord of
|
||||
{ ODir => [];
|
||||
OQuest => "kya" };
|
||||
OQuest => "kya:" };
|
||||
na =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
@@ -49,7 +51,7 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
|
||||
nahim =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "nhyN" };
|
||||
Neg => "nahi:m." };
|
||||
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 ;
|
||||
@@ -76,15 +78,15 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
|
||||
VPPerfFut => {fin = [] ; inf = Prelude.glue ((vp.s ! VPStem).inf ++ cka g n ++ hw p n) (copula CFuture n p g) } ;
|
||||
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 = [] ; inf = Prelude.glue ((vp.s ! VPStem).inf ++ raha g n ++ hw p n) (copula CFuture n p g ) } ;
|
||||
VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "xayd" }
|
||||
VPPerfFutCont => {fin = [] ; inf = Prelude.glue ((vp.s ! VPStem).inf ++ raha g n ++ hw p n) (copula CFuture n p g) } ;
|
||||
VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "s*a:yd" }
|
||||
|
||||
};
|
||||
|
||||
quest =
|
||||
case ord of
|
||||
{ ODir => [];
|
||||
OQuest => "kya" };
|
||||
OQuest => "kya:" };
|
||||
na =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
@@ -92,42 +94,159 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ;
|
||||
nahim =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "nhyN" };
|
||||
Neg => "nahi:m." };
|
||||
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};
|
||||
} ;
|
||||
|
||||
{- Verb : Type = {s : VerbForm => Str} ;
|
||||
|
||||
|
||||
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 = [] ; inf = Prelude.glue (v.s ! VF Subj p n g) (copula CFuture n p g)} ;
|
||||
VPTense VPPerf (Ag g n p) => { fin = [] ; inf = v.s ! Root ++ cka g n } ;
|
||||
VPStem => {fin = [] ; inf = v.s ! Root};
|
||||
_ => {fin = [] ; inf = v.s ! Root}
|
||||
};
|
||||
obj = {s = [] ; a = defaultAgr} ;
|
||||
subj = VIntrans ;
|
||||
inf = v.s ! Inf;
|
||||
ad = [];
|
||||
embComp = [];
|
||||
prog = False ;
|
||||
comp = \\_ => []
|
||||
} ;
|
||||
-}
|
||||
np2pronCase ppf npc a = case npc of {
|
||||
NPC c => ppf ! c;
|
||||
NPObj => ppf ! Obl ;
|
||||
NPErg =>case (fromAgr a).p of {
|
||||
(Pers3_Near|Pers3_Distant) => Prelude.glue (ppf ! Obl) "nE" ; -- in hindi in case of pronouns nE is tagged to pron rather than a separate word
|
||||
_ => Prelude.glue (ppf ! Dir) "nE"
|
||||
(Pers3_Near|Pers3_Distant) => Prelude.glue (ppf ! Obl) "ne:" ; -- in hindi in case of pronouns nE is tagged to pron rather than a separate word
|
||||
_ => Prelude.glue (ppf ! Dir) "ne:"
|
||||
}
|
||||
} ;
|
||||
conjThat = "ki" ;
|
||||
insertSubj : UPerson -> Str -> Str = \p,s ->
|
||||
case p of { Pers1 => s ++ "va:n~" ; _ => Prelude.glue s "E:"}; -- check with prasad for vn~
|
||||
|
||||
agr = "a-gar" ;
|
||||
awr = "O+r" ;
|
||||
ky = "ki:" ;
|
||||
jn = "jin" ;
|
||||
js = "jis" ;
|
||||
jw = "jo:" ;
|
||||
kw = "ko:" ;
|
||||
mt = "mat" ;
|
||||
nE = "ne:" ;
|
||||
nh = "na" ;
|
||||
sE = "se:" ;
|
||||
waN = "va:n~" ; -- check with prasad
|
||||
hE = "he:" ;
|
||||
comma = "," ;
|
||||
indfArt = "E:k" ; -- check with prasad
|
||||
kwd = "xud" ; -- check with prasad
|
||||
|
||||
oper
|
||||
copula : CTense -> Number -> UPerson -> Gender -> Str = \t,n,p,g ->
|
||||
case <t,n,p,g> of {
|
||||
<CPresent,Sg,Pers1,_ > => "hu:n~" ;
|
||||
<CPresent,Sg,Pers2_Casual,_ > => "he+" ;
|
||||
<CPresent,Sg,Pers2_Familiar,_ > => "ho:" ;
|
||||
<CPresent,Sg,Pers2_Respect,_ > => "he+m." ;
|
||||
<CPresent,Sg,Pers3_Near,_ > => "he+" ;
|
||||
<CPresent,Sg,Pers3_Distant,_ > => "he+" ;
|
||||
<CPresent,Pl,Pers1,_ > => "he+n~" ;
|
||||
<CPresent,Pl,Pers2_Casual,_ > => "ho+" ;
|
||||
<CPresent,Pl,Pers2_Familiar,_ > => "ho+" ;
|
||||
<CPresent,Pl,Pers2_Respect,_ > => "he+m." ;
|
||||
<CPresent,Pl,Pers3_Near,_ > => "he+m." ;
|
||||
<CPresent,Pl,Pers3_Distant,_ > => "he+m." ;
|
||||
<CPast,Sg,Pers1,Masc > => "t'a:" ;
|
||||
<CPast,Sg,Pers1,Fem > => "t'i:" ;
|
||||
<CPast,Sg,Pers2_Casual,Masc > => "t'a:" ;
|
||||
<CPast,Sg,Pers2_Casual,Fem > => "t'i:" ;
|
||||
<CPast,Sg,Pers2_Familiar,Masc > => "t'a:" ;
|
||||
<CPast,Sg,Pers2_Familiar,Fem > => "t'i:" ;
|
||||
<CPast,Sg,Pers2_Respect,Masc > => "t'e:" ;
|
||||
<CPast,Sg,Pers2_Respect,Fem > => "t'i:m." ;
|
||||
<CPast,Sg,Pers3_Near,Masc > => "t'a:" ;
|
||||
<CPast,Sg,Pers3_Near,Fem > => "t'i:" ;
|
||||
<CPast,Sg,Pers3_Distant,Masc > => "t'a:" ;
|
||||
<CPast,Sg,Pers3_Distant,Fem > => "t'i:" ;
|
||||
<CPast,Pl,Pers1,Masc > => "t'e:" ;
|
||||
<CPast,Pl,Pers1,Fem > => "t'i:m." ;
|
||||
<CPast,Pl,Pers2_Casual,Masc > => "t'e:" ;
|
||||
<CPast,Pl,Pers2_Casual,Fem > => "t'i:m." ;
|
||||
<CPast,Pl,Pers2_Familiar,Masc > => "t'e:" ;
|
||||
<CPast,Pl,Pers2_Familiar,Fem > => "t'i:m." ;
|
||||
<CPast,Pl,Pers2_Respect,Masc > => "t'e:" ;
|
||||
<CPast,Pl,Pers2_Respect,Fem > => "t'i:m." ;
|
||||
<CPast,Pl,Pers3_Near,Masc > => "t'e:" ;
|
||||
<CPast,Pl,Pers3_Near,Fem > => "t'i:m." ;
|
||||
<CPast,Pl,Pers3_Distant,Masc > => "t'e:" ;
|
||||
<CPast,Pl,Pers3_Distant,Fem > => "t'i:m." ;
|
||||
<CFuture,Sg,Pers1,Masc > => "ga:" ;
|
||||
<CFuture,Sg,Pers1,Fem > => "gi:" ;
|
||||
<CFuture,Sg,Pers2_Casual,Masc > => "ga:" ;
|
||||
<CFuture,Sg,Pers2_Casual,Fem > => "gi:" ;
|
||||
<CFuture,Sg,Pers2_Familiar,Masc > => "ge:" ;
|
||||
<CFuture,Sg,Pers2_Familiar,Fem > => "gi:" ;
|
||||
<CFuture,Sg,Pers2_Respect,Masc > => "ge:" ;
|
||||
<CFuture,Sg,Pers2_Respect,Fem > => "gi:" ;
|
||||
<CFuture,Sg,Pers3_Near,Masc > => "ga:" ;
|
||||
<CFuture,Sg,Pers3_Near,Fem > => "gi:" ;
|
||||
<CFuture,Sg,Pers3_Distant,Masc > => "ga:" ;
|
||||
<CFuture,Sg,Pers3_Distant,Fem > => "gi:" ;
|
||||
<CFuture,Pl,Pers1,Masc > => "ge:" ;
|
||||
<CFuture,Pl,Pers1,Fem > => "gi:" ;
|
||||
<CFuture,Pl,Pers2_Casual,Masc > => "ge:" ;
|
||||
<CFuture,Pl,Pers2_Casual,Fem > => "gi:" ;
|
||||
<CFuture,Pl,Pers2_Familiar,Masc > => "ge:" ;
|
||||
<CFuture,Pl,Pers2_Familiar,Fem > => "gi:" ;
|
||||
<CFuture,Pl,Pers2_Respect,Masc > => "ge:" ;
|
||||
<CFuture,Pl,Pers2_Respect,Fem > => "gi:" ;
|
||||
<CFuture,Pl,Pers3_Near,Masc > => "ge:" ;
|
||||
<CFuture,Pl,Pers3_Near,Fem > => "gi:" ;
|
||||
<CFuture,Pl,Pers3_Distant,Masc > => "ge:" ;
|
||||
<CFuture,Pl,Pers3_Distant,Fem > => "gi:"
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
raha : Gender -> Number -> Str = \g,n ->
|
||||
(regAdjective "raha:").s ! n ! g ! Dir ! Posit ;
|
||||
|
||||
cka : Gender -> Number -> Str = \g,n ->
|
||||
(regAdjective "cuka:").s ! n ! g ! Dir ! Posit ;
|
||||
|
||||
hw : UPerson -> Number -> Str = \pp,n ->
|
||||
case <pp,n> of {
|
||||
<Pers1,_> => "hu:n~";
|
||||
<_,Pl> => "ho:n~";
|
||||
<_,_> => "ho:"
|
||||
};
|
||||
hwa : Agr -> Str = \agr ->
|
||||
let n = (fromAgr agr).n;
|
||||
p = (fromAgr agr).p;
|
||||
g = (fromAgr agr).g;
|
||||
in
|
||||
case <n,g> of {
|
||||
<Sg,Masc> => "huA:";
|
||||
<Sg,Fem> => "huI:";
|
||||
<Pl,Masc> => "huE:" ;
|
||||
<Pl,Fem> => "huI:"
|
||||
};
|
||||
-----------------------------------------------
|
||||
-- Hindustani Adjectives
|
||||
-----------------------------------------------
|
||||
|
||||
|
||||
regAdjective : Str -> Adjective;
|
||||
regAdjective x = case x of {
|
||||
acch + ("a:"|"an") => mkAdjective x ("bahut" ++ x) ("sab se:" ++ x) (acch + "e:") ("bahut" ++ acch + "e:") ("sab se:" ++ acch + "E") (acch + "e:") ("bahut" ++ acch + "e:") ("sab se:" ++ acch + "e:")
|
||||
(acch + "i:") ("bahut" ++ acch + "i:") ("sab se:" ++ acch + "i:") (acch + "i:") ("bahut" ++ acch + "i:") ("sab se:" ++ acch + "i:") (acch + "i:") ("bahut" ++ acch + "i:") ("sab se:" ++ acch + "i:")
|
||||
(acch +"e:") ("bahut" ++ acch + "e:") ("sab se:" ++ acch + "e:") (acch + "e:") ("bahut" ++ acch + "e:") ("sab se:" ++ acch + "e:") (acch + "e:") ("bahut" ++ acch + "e:") ("sab se:" ++ acch + "e:")
|
||||
(acch + "i:") ("bahut" ++ acch + "i:") ("sab se:" ++ acch + "i:") (acch + "i:") ("bahut" ++ acch + "i:") ("sab se:" ++ acch + "i:") (acch + "i:") ("bahut" ++ acch + "i:") ("sab se:" ++ acch + "i:");
|
||||
|
||||
_ => mkAdjective x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x)
|
||||
x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x)
|
||||
x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x)
|
||||
x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x)
|
||||
|
||||
};
|
||||
IrregAdjective : Str -> Adjective;
|
||||
IrregAdjective x = mkAdjective x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x)
|
||||
x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x)
|
||||
x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x)
|
||||
x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x) x ("bahut" ++ x) ("sab se:" ++ x) ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
--# -path=.:../abstract:../common:../prelude:/Users/virk/gf_1/lib/src/hindustani
|
||||
concrete ExtraHin of ExtraHinAbs = CatHin **
|
||||
open ResHin, Coordination, Prelude, MorphoHin, ParadigmsHin in {
|
||||
|
||||
flags coding = utf8;
|
||||
lin
|
||||
|
||||
-- GenNP np = {s = \\_,_,_ => np.s ! NPC Obl ++ "ka" ; a = np.a} ;
|
||||
|
||||
-- each_Det = mkDet "hr kwy" "hr kwy" "hr kwy" "hr kwy" Sg ;
|
||||
|
||||
@@ -5,21 +5,21 @@ concrete IdiomHin of Idiom = CatHin ** open Prelude,Predef, ResHin,ParamX,Common
|
||||
|
||||
lin
|
||||
ImpersCl vp = mkSClause " " (agrP3 Masc Sg) vp ;
|
||||
GenericCl vp = mkSClause "kwy" (agrP3 Masc Sg) vp ;
|
||||
GenericCl vp = mkSClause "ko:I:" (agrP3 Masc Sg) vp ;
|
||||
|
||||
CleftNP np rs =
|
||||
let cl = mkSClause (np.s ! NPC rs.c) (np.a) (predAux auxBe);
|
||||
in
|
||||
{s = \\t,p,o => cl.s ! t ! p ! o ++ rs.s ! np.a };
|
||||
|
||||
-- CleftAdv ad ss = { s = \\t,b,o => ad.s ! Masc ++ ss.s};
|
||||
CleftAdv ad ss = { s = \\t,b,o => ad.s ! Masc ++ ss.s};
|
||||
|
||||
-- ExistNP np =
|
||||
-- mkSClause "whaN" (agrP3 (fromAgr np.a).g (fromAgr np.a).n)
|
||||
-- (insertObj (\\_ => np.s ! NPC Obl) (predAux auxBe)) ;
|
||||
ExistNP np =
|
||||
mkSClause "vaha:n~" (agrP3 (fromAgr np.a).g (fromAgr np.a).n)
|
||||
(insertObj (\\_ => np.s ! NPC Dir) (predAux auxBe)) ;
|
||||
|
||||
ExistIP ip =
|
||||
let cl = mkSClause ("whaN" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe);
|
||||
let cl = mkSClause ("vaha:n~" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe);
|
||||
in {
|
||||
s = \\t,p,qf => case qf of {
|
||||
QDir => cl.s ! t ! p ! ODir;
|
||||
@@ -31,8 +31,9 @@ concrete IdiomHin of Idiom = CatHin ** open Prelude,Predef, ResHin,ParamX,Common
|
||||
ProgrVP vp = (predProg vp) ;
|
||||
|
||||
|
||||
ImpPl1 vp = {s = "Aw" ++ infVP True vp (agrP1 Masc Pl)} ;
|
||||
ImpP3 np vp = {s = np.s!NPC Dir ++ "kw" ++ (vp.s ! VPImp ).inf ++ "dw"};
|
||||
-- ImpPl1 vp = {s = "A:O:" ++ infVP True vp (agrP1 Masc Pl)} ;
|
||||
ImpPl1 vp = {s = "A:O:" ++ vp.obj.s ++ (vp.s ! VPTense VPFutr (agrP1 Masc Pl)).inf ++ vp.comp ! (agrP1 Masc Pl)} ;
|
||||
ImpP3 np vp = {s = np.s!NPC Dir ++ "ko:" ++ (vp.s ! VPImp ).inf ++ "do:"};
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,369 +1,373 @@
|
||||
--# -path=.:prelude
|
||||
|
||||
concrete LexiconHin of Lexicon = CatHin **
|
||||
--open ResHin, Prelude in {
|
||||
open ParadigmsHin, Prelude in {
|
||||
|
||||
flags
|
||||
optimize=values ;
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
airplane_N = mkN "jHaj" ;
|
||||
-- answer_V2S = mkV2 (compoundV "jwab" (mkV "dyna")) ;
|
||||
-- apartment_N = mkN "kmrh" ;
|
||||
apple_N = mkN "syb" ;
|
||||
-- art_N = mkN "fn" ;
|
||||
ask_V2Q = mkV2 (mkV "pwcHna") ;
|
||||
-- baby_N = mkN "bcH" ;
|
||||
bad_A = mkA "bra" ;
|
||||
bank_N = mkN "bynk" ;
|
||||
beautiful_A = mkA "sndr" ;
|
||||
become_VA = mkV "bnna";
|
||||
beer_N = mkN "beer" ;
|
||||
-- beg_V2V = mkV2V (compoundV "altja" (mkV "krna")) "sE" "kh" False;
|
||||
big_A = mkA "bRa" ;
|
||||
-- bike_N = mkN "saycl" feminine ;
|
||||
-- bird_N = mkN "prndh" ;
|
||||
black_A = mkA "kala" ;
|
||||
blue_A = mkA "nyla" ;
|
||||
boat_N = mkN "naw" ;
|
||||
book_N = mkN "ktab" feminine ;
|
||||
-- boot_N = mkN "jwta" ;
|
||||
boss_N = mkN "malk" ;
|
||||
boy_N = mkN "lRka" ;
|
||||
bread_N = mkN "rwty" ;
|
||||
break_V2 = mkV2 (mkV "twRna") ;
|
||||
broad_A = mkA "cwRa" ;
|
||||
brother_N2 = mkN2 (mkN "bHay") (mkPrep "ka" "ka") "kE" ; --not correct
|
||||
brown_A = mkA "bHwra" ;
|
||||
-- butter_N = mkN "mkh-n" ;
|
||||
buy_V2 = mkV2 (mkV "Krydna");
|
||||
camera_N = mkN "kymrH" ;
|
||||
cap_N = mkN "twpy" ;
|
||||
car_N = mkN "kar" ;
|
||||
-- carpet_N = mkN "tpay^y" ;
|
||||
cat_N = mkN "bly" feminine;
|
||||
-- ceiling_N = mkN "ch-t" feminine ;
|
||||
chair_N = mkN "krsy" ;
|
||||
-- cheese_N = mkN "pnyr" feminine ;
|
||||
child_N = mkN "bcH" ;
|
||||
church_N = mkN "grja" ;
|
||||
city_N = mkN "XHr" ;
|
||||
clean_A = mkA "saf" ;
|
||||
clever_A = mkA "catr" ;
|
||||
close_V2 = mkV2 (compoundV "bnd" do_V2);
|
||||
coat_N = mkN "kwT" ;
|
||||
cold_A = mkA "srd" ;
|
||||
come_V = mkV "Ana" ;
|
||||
computer_N = mkN "kmpywTr" ;
|
||||
country_N = mkN "dyX" ;
|
||||
-- cousin_N = mkCmpdNoun "cca" (mkN "zad") ; -- a compund noun made of two nouns
|
||||
cow_N = mkN "gaE" feminine ;
|
||||
die_V = mkV "mrna" ;
|
||||
dirty_A = mkA "gnda" ;
|
||||
-- distance_N3 = mkN3 (mkN "faSlh") (mkPrep "ka") "kE" "sE" ;
|
||||
doctor_N = mkN "daktr" ;
|
||||
dog_N = mkN "kta" ;
|
||||
door_N = mkN "drwza" ;
|
||||
drink_V2 = mkV2 (mkV "pyna");
|
||||
easy_A2V = mkA "Asan" "" ; -- chek for A or a
|
||||
eat_V2 = mkV2 (mkV "kHana") "" ;
|
||||
empty_A = mkA "Kaly" ;
|
||||
enemy_N = mkN "dXmn" ;
|
||||
factory_N = mkN "karKana" ;
|
||||
-- father_N2 = mkN2 (mkN "pta" irregular) (mkPrep "ka") "kE" ;
|
||||
fear_VS = mkV "dRna";
|
||||
find_V2 = mkV2 (mkV "dHwnda") ;
|
||||
fish_N = mkN "mcHly" ;
|
||||
floor_N = mkN "frX" ;
|
||||
forget_V2 = mkV2 (mkV "bHwlna") ;
|
||||
-- fridge_N = mkN "fryg" ;
|
||||
friend_N = mkN "dwst" masculine ;
|
||||
fruit_N = mkN "pHl" ;
|
||||
-- fun_AV = mkAV (regA "fun") ;
|
||||
garden_N = mkN "baG" ; -- chek for G
|
||||
girl_N = mkN "lRky" ;
|
||||
glove_N = mkN "dstana" ;
|
||||
gold_N = mkN "swna" ;
|
||||
good_A = mkA "acHa" ;
|
||||
go_V = mkV "jana" ;
|
||||
green_A = mkA "Hra" ;
|
||||
-- harbour_N = mkCmpdNoun "bndr" (mkN "gah") ;
|
||||
hate_V2 = mkV2 (compoundV "nfrt" do_V2) ;
|
||||
hat_N = mkN "Twpy" ;
|
||||
-- have_V2 = dirV2 (mk5V "have" "has" "had" "had" "having") ;
|
||||
hear_V2 = mkV2 (mkV "snna") ;
|
||||
-- hill_N = mkN "phaRy" ;
|
||||
-- hope_VS = (compoundV "amyd" do_V2);
|
||||
horse_N = mkN "gHwRa" ;
|
||||
hot_A = mkA "grm" ;
|
||||
house_N = mkN "gHr" ;
|
||||
important_A = mkA "zrwry" ; -- check about z
|
||||
-- industry_N = mkN "Snet" feminine ;
|
||||
iron_N = mkN "lwHa" ;
|
||||
king_N = mkN "raja" ;
|
||||
know_V2 = mkV2 (mkV "janna") ;
|
||||
know_VS = mkV "janna";
|
||||
-- lake_N = mkN "jh-yl" feminine ;
|
||||
lamp_N = mkN "dya" ;
|
||||
learn_V2 = mkV2 (mkV "sykHna") ;
|
||||
-- leather_N = mkN "cmRa" ;
|
||||
leave_V2 = mkV2 (mkV "clna") ;
|
||||
like_V2 = mkV2 (compoundV "psnd" do_V2);
|
||||
listen_V2 = mkV2 (mkV "snna") ;
|
||||
live_V = mkV "rhna" ; ---- touch
|
||||
long_A = mkA "lmba" ;
|
||||
lose_V2 = mkV2 (compoundV "kHw" do_V2) ;
|
||||
love_N = mkN "prym" ;
|
||||
love_V2 = mkV2 (compoundV "pyar" do_V2) "kw";
|
||||
man_N = mkN "Admy" ;
|
||||
-- married_A2 = mkA "Xady " "sE" ;
|
||||
meat_N = mkN "mas" ;
|
||||
milk_N = mkN "dwdH" ;
|
||||
moon_N = mkN "cand" ;
|
||||
mother_N2 = mkN2 (mkN "mata" feminine) (mkPrep "ky" "ky") "kE"; -- not covered need to be discussed
|
||||
-- mountain_N = mkN "phaRy" ;
|
||||
music_N = mkN "sngyt" ;
|
||||
-- narrow_A = mkA "baryk" ;
|
||||
new_A = mkA "nya" ;
|
||||
newspaper_N = mkN "aKbar" ;
|
||||
oil_N = mkN "tyl" ;
|
||||
old_A = mkA "bwRHa" ;
|
||||
open_V2 = mkV2 (mkV "kHwlna") ;
|
||||
-- paint_V2A = mkV2 (compoundV "rng" do_V2) ;
|
||||
paper_N = mkN "kaGz" ;
|
||||
paris_PN = mkPN "pyrs" ;
|
||||
peace_N = mkN "amn" ;
|
||||
pen_N = mkN "qlm" ;
|
||||
-- planet_N = mkN "syarh" ;
|
||||
-- plastic_N = mkN "plasTk" ;
|
||||
play_V2 = mkV2 (mkV "kHylna") ;
|
||||
-- policeman_N = mkCmpdNoun "pwlys" (mkN "wala") ;
|
||||
-- priest_N = (mkN "pyGmbr") ;
|
||||
-- probable_AS = mkAS (regA "probable") ;
|
||||
-- queen_N = mkN "Xhzady" ;
|
||||
-- radio_N = mkN "ryDyw" ;
|
||||
rain_V0 = compoundV "barX" (mkV "Hwna" ) ;
|
||||
read_V2 = mkV2 (mkV "pRHna");
|
||||
red_A = mkA "lal" ;
|
||||
religion_N = mkN "dHrm" ;
|
||||
-- restaurant_N = mkN "hwTl" ;
|
||||
river_N = mkN "drya" masculine ;
|
||||
rock_N = mkN "cTan" ;
|
||||
roof_N = mkN "ch-t" masculine ;
|
||||
-- rubber_N = mkN "rbR" ;
|
||||
run_V = mkV "dwRna" ;
|
||||
say_VS = mkV "kHna" ;
|
||||
school_N = mkN "mktb" ;
|
||||
-- science_N = mkN "sans" ; -- vgyan
|
||||
sea_N = mkN "smndr" ;
|
||||
-- seek_V2 = mkV2 (compoundV "tlaX" do_V2) ;
|
||||
see_V2 = mkV2 (mkV "dykHna") ;
|
||||
sell_V3 = mkV3 (mkV "bycna") "kw" "";
|
||||
send_V3 = mkV3 (mkV "bHyjna") "kw" "";
|
||||
sheep_N = mkN "bHyR" feminine ;
|
||||
ship_N = mkN "jHaz" ;
|
||||
shirt_N = mkN "krta" feminine;
|
||||
shoe_N = mkN "jwta" ;
|
||||
shop_N = mkN "dwkan" feminine ;
|
||||
short_A = mkA "cHwTa" ;
|
||||
silver_N = mkN "candy" ;
|
||||
sister_N = mkN "bHn" feminine ;
|
||||
sleep_V = mkV "swna" ;
|
||||
small_A = mkA "cHwTa" ;
|
||||
snake_N = mkN "sanp" ;
|
||||
-- sock_N = mkN "jrab" feminine ;
|
||||
speak_V2 = mkV2 (mkV "bwlna") ;
|
||||
star_N = mkN "tara" ;
|
||||
-- steel_N = mkN "styl" ; -- something like ispat
|
||||
stone_N = mkN "ptHr" ;
|
||||
-- stove_N = mkN "cwlha" ;
|
||||
-- student_N = mkCmpdNoun "t-alb" (mkN "elm") ; -- something vidrati
|
||||
stupid_A = mkA "bEwqwf" ;
|
||||
-- sun_N = mkN "swrj" ; -- swrya
|
||||
switch8off_V2 = mkV2 (compoundV "bnd" do_V2) ;
|
||||
switch8on_V2 = mkV2 (mkV "clana") ;
|
||||
table_N = mkN "myz" feminine ;
|
||||
talk_V3 = mkV3 (mkV "bwlna") "sE" "kE barE meN";
|
||||
-- teacher_N = mkN "istad" ; -- adyapak
|
||||
teach_V2 = mkV2 (mkV "pRHna") ;
|
||||
television_N = mkN "tywy" ;
|
||||
thick_A = mkA "mwTa" ;
|
||||
thin_A = mkA "ptla" ;
|
||||
train_N = mkN "ryl gaRy" ;
|
||||
travel_V = (compoundV "sfr" do_V2) ;
|
||||
-- tree_N = mkN "pyR" masculine ;
|
||||
-- ---- trousers_N = mkN "trousers" ;
|
||||
ugly_A = mkA "bdswrt" ;
|
||||
understand_V2 = mkV2 (mkV "smjHna") ;
|
||||
-- university_N = mkN "ywnywrsTy" ;
|
||||
village_N = mkN "gawN" ; -- check for n or N
|
||||
-- wait_V2 = mkV2 (compoundV "antz-ar" do_V2) "ka" ; -- something prtkXa
|
||||
walk_V = mkV "clna" ;
|
||||
-- warm_A = mkA "grm" ; something gngna
|
||||
-- war_N = mkN "jng" ;
|
||||
watch_V2 = mkV2 (mkV "dykHna") ;
|
||||
-- water_N = mkN "pany" masculine ; -- not covered masculine ending with y
|
||||
white_A = mkA "sfyd" ;
|
||||
window_N = mkN "rwXndan" ;
|
||||
-- wine_N = mkN "Xrab" feminine ;
|
||||
win_V2 = mkV2 (mkV "jytna") ;
|
||||
woman_N = mkN "ewrt" feminine ;
|
||||
-- wonder_VQ = compoundV "Heran" (mkV "hwna") ;
|
||||
wood_N = mkN "lkRy" ;
|
||||
write_V2 = mkV2 (mkV "lkh-na") ;
|
||||
yellow_A = mkA "pyla" ;
|
||||
young_A = mkA "jwan" ;
|
||||
do_V2 = mkV2 (mkV "krna") ;
|
||||
-- now_Adv = mkAdv "ab" ;
|
||||
-- already_Adv = mkAdv "phlE hy" ;
|
||||
song_N = mkN "gyt" ;
|
||||
add_V3 = mkV3 (compoundV "jme" do_V2) "" "" ;
|
||||
-- number_N = mkN "hndsh" ;
|
||||
-- put_V2 = mkV2 (mkV "Dalna") ;
|
||||
stop_V = mkV "rkna" ;
|
||||
-- jump_V = compoundV "cHlang" (mkV "lgana") feminine ;
|
||||
|
||||
-- left_Ord = {s = "bayaN" ; n = singular};
|
||||
-- right_Ord = {s= "dayaN" ; n = singular};
|
||||
-- far_Adv = mkAdv "dwr" ;
|
||||
correct_A = mkA "syH" ;
|
||||
dry_A = mkA "swkHa" ;
|
||||
-- dull_A = mkA "nalik" ;
|
||||
-- full_A = mkA "mkml" ;
|
||||
heavy_A = mkA "bHary" ;
|
||||
near_A = mkA "pas" ;
|
||||
-- rotten_A = mkA "Krab" ;
|
||||
round_A = mkA "gwl" ;
|
||||
sharp_A = mkA "tyz" ;
|
||||
smooth_A = mkA "ckna" ;
|
||||
straight_A = mkA "sydHa" ;
|
||||
wet_A = mkA "gyla" ; ----
|
||||
wide_A = mkA "cwRa" ;
|
||||
animal_N = mkN "janwr" ;
|
||||
ashes_N = mkN "rakh-" feminine; -- FIXME: plural only?
|
||||
-- back_N = mkN "qmr" feminine ;
|
||||
-- bark_N = mkN "bark" ;
|
||||
-- belly_N = mkN "dh-ny" ;
|
||||
-- blood_N = mkN "Kwn" ;
|
||||
bone_N = mkN "HDy" feminine ;
|
||||
-- breast_N = mkN "ch-aty" ; --stan
|
||||
cloud_N = mkN "badl" ;
|
||||
day_N = mkN "dn" ;
|
||||
dust_N = mkN "dHwl" ;
|
||||
ear_N = mkN "kan" ;
|
||||
-- earth_N = mkN "zmyn" feminine ;
|
||||
egg_N = mkN "anDH" ;
|
||||
eye_N = mkN "AnkH" feminine ;
|
||||
fat_N = mkN "mwta" ;
|
||||
feather_N = mkN "pnkH" ;
|
||||
-- fingernail_N = mkN "naKn" ;
|
||||
fire_N = mkN "Ag" feminine ;
|
||||
flower_N = mkN "pHwl" ;
|
||||
fog_N = mkN "dHnd" feminine ;
|
||||
foot_N = mkN "pawN" ; -- not properly covered need to be discussed
|
||||
forest_N = mkN "jngl" ;
|
||||
grass_N = mkN "gHs" feminine ;
|
||||
-- guts_N = mkN "gut" ; -- FIXME: no singular
|
||||
hair_N = mkN "bal" ;
|
||||
hand_N = mkN "HatH" ;
|
||||
head_N = mkN "sr" ;
|
||||
heart_N = mkN "dl" ;
|
||||
-- horn_N = mkN "gh-nty" ;
|
||||
husband_N = mkN "pty" ;
|
||||
ice_N = mkN "brf" feminine ;
|
||||
knee_N = mkN "gHtnH" ;
|
||||
leaf_N = mkN "ptH" ;
|
||||
leg_N = mkN "tang" feminine ;
|
||||
liver_N = mkN "klyjH" ;
|
||||
-- louse_N = mkN "" ; -- jwN
|
||||
mouth_N = mkN "mnH" ;
|
||||
name_N = mkN "nam" ;
|
||||
neck_N = mkN "grdn" feminine ;
|
||||
night_N = mkN "rat" feminine ;
|
||||
nose_N = mkN "nak" ;
|
||||
-- person_N = mkN "XKS" ;
|
||||
rain_N = mkN "barX" feminine ;
|
||||
road_N = mkN "sRk" ;
|
||||
root_N = mkN "gR" feminine ;
|
||||
rope_N = mkN "rsy" ;
|
||||
salt_N = mkN "nmk" feminine ;
|
||||
sand_N = mkN "ryt" feminine ;
|
||||
seed_N = mkN "byj" ;
|
||||
-- skin_N = mkN "jld" feminine ; -- crm
|
||||
sky_N = mkN "ambr" ;
|
||||
smoke_N = mkN "dHwaN"; -- singular masc nouns ending with aN,wN yet to be implemented
|
||||
snow_N = mkN "brf" feminine ;
|
||||
stick_N = mkN "soTy" ;
|
||||
tail_N = mkN "dm" ;
|
||||
-- tongue_N = mkN "zban" feminine ;
|
||||
-- tooth_N = mkN "dant" masculine;
|
||||
wife_N = mkN "ptny" ;
|
||||
wind_N = mkN "Hwa" ;
|
||||
-- wing_N = mkN "pr" ;
|
||||
worm_N = mkN "kyRa" ;
|
||||
year_N = mkN "sal" ;
|
||||
-- blow_V = mkV "clna" ;
|
||||
breathe_V = compoundV "sans" (mkV "lyna" ) ;
|
||||
burn_V = mkV "jlana" ;
|
||||
dig_V = mkV "kHwdna" ;
|
||||
fall_V = mkV "grna" ;
|
||||
-- float_V = mkV "tyrna" ;
|
||||
flow_V = mkV "clna" ;
|
||||
fly_V = mkV "aRna" ;
|
||||
-- freeze_V = mkV "jmna";
|
||||
give_V3 = mkV3 (mkV "dyna") "kw" "";
|
||||
laugh_V = mkV "hnsna" ;
|
||||
-- lie_N = mkN "jh-wt" masculine ;
|
||||
lie_V = compoundV "jHwt" (mkV "bwlna" );
|
||||
play_V = mkV "kHylna" ;
|
||||
sew_V = mkV "syna" ;
|
||||
sing_V = mkV "gana" ;
|
||||
sit_V = mkV "byTHna" ;
|
||||
smell_V = mkV "swngna" ;
|
||||
spit_V = mkV "tHwkna" ;
|
||||
stand_V = compoundV "kHRE" (mkV "hwna" ); -- a type of compound verb made of two verbs i.e 'kHRa' also inflects, rather than a string and verb should be fixed
|
||||
-- swell_V = mkV "swjh-na" ;
|
||||
swim_V = mkV "tyrna" ;
|
||||
think_V = mkV "swcna" ;
|
||||
turn_V = mkV "mRna";
|
||||
-- vomit_V = compoundV "alty" (mkV "krna") feminine ;
|
||||
bite_V2 = mkV2 (mkV "katna") ;
|
||||
count_V2 = mkV2 (mkV "gnna") ;
|
||||
cut_V2 = mkV2 (mkV "katna") ;
|
||||
fear_V2 = mkV2 (mkV "Drna") ;
|
||||
fight_V2 = mkV2 (mkV "lRna") ;
|
||||
-- hit_V2 = mkV2 (compoundV "th-wkr" (mkV "marna" ));
|
||||
hold_V2 = mkV2 (mkV "pkRna") ;
|
||||
-- hunt_V2 = mkV2 (compoundV "Xkar" do_V2);
|
||||
kill_V2 = mkV2 (compoundV "mar" (mkV "Dalna" )) ;
|
||||
pull_V2 = mkV2 (mkV "kHncna");
|
||||
-- push_V2 = mkV2 (mkV "dh-kylna") "kw" ;
|
||||
-- rub_V2 = mkV2 (mkV "rgRna") ;
|
||||
-- scratch_V2 = mkV2 (mkV "kh-rcna") "kw" ;
|
||||
-- split_V2 = mkV2 (mkV "banta") "kw" ;
|
||||
-- squeeze_V2 = dirV2 (regV "squeeze") ;
|
||||
-- stab_V2 = dirV2 (regDuplV "stab") ;
|
||||
-- suck_V2 = mkV2 (mkV "cwsna") ;
|
||||
throw_V2 = mkV2 (mkV "pHynkna") ;
|
||||
tie_V2 = mkV2 (mkV "bandHna") ;
|
||||
wash_V2 = mkV2 (mkV "dHwna") ;
|
||||
wipe_V2 = mkV2 (compoundV "Saf" (mkV "krna" ));
|
||||
|
||||
---- other_A = regA "other" ;
|
||||
|
||||
-- grammar_N = mkN "grdan" ;
|
||||
-- language_N = mkN "zban" feminine ;
|
||||
-- rule_N = mkN "aSwl" ;
|
||||
|
||||
---- added 4/6/2007
|
||||
john_PN = mkPN "jon" ;
|
||||
-- question_N = mkN "swal" ;
|
||||
-- ready_A = regA "ready" ;
|
||||
-- reason_N = mkN "wjh" feminine ;
|
||||
-- today_Adv = mkAdv "Aj" ;
|
||||
-- uncertain_A = mkA ["Gyr yqyny"] ;
|
||||
|
||||
|
||||
}
|
||||
--# -path=.:prelude
|
||||
|
||||
concrete LexiconHin of Lexicon = CatHin **
|
||||
--open ResHin, Prelude in {
|
||||
open ParadigmsHin, Prelude in {
|
||||
|
||||
flags
|
||||
optimize=values ;
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
airplane_N = mkCmpdNoun "hava:I:" (mkN "jaha:z") ;
|
||||
answer_V2S = mkV2 (compoundV "java:b" (mkV "de:na:")) ;
|
||||
apartment_N = mkN "kamra:" ;
|
||||
apple_N = mkN "se:b" ;
|
||||
-- art_N = mkN "" ;
|
||||
ask_V2Q = mkV2 (mkV "pu:c'ana:") ;
|
||||
baby_N = mkN "bacX,c'a:" ;
|
||||
bad_A = mkA "bura:" ;
|
||||
bank_N = mkN "be+m.k" ;
|
||||
beautiful_A = mkA "xu:bsu:rat" ;
|
||||
become_VA = mkV "banana:";
|
||||
beer_N = mkN "biyar" ;
|
||||
beg_V2V = mkV2V (compoundV "b'i:k'" (mkV "ma:m.gna:")) "se:" "kh" False;
|
||||
big_A = mkA "baRa:" ;
|
||||
bike_N = mkN "sa:ykal" feminine ;
|
||||
bird_N = mkN "ciRiya:" ;
|
||||
black_A = mkA "ka:la:" ;
|
||||
blue_A = mkA "ni:la:" ;
|
||||
boat_N = mkN "na:v" ;
|
||||
book_N = mkN "kita:b" feminine ;
|
||||
boot_N = mkN "ju:ta:" ;
|
||||
boss_N = mkN "ma:lik" ;
|
||||
boy_N = mkN "laRka:" ;
|
||||
bread_N = mkN "ro:Ti:" ;
|
||||
break_V2 = mkV2 (mkV "to:Rna:") ;
|
||||
broad_A = mkA "co+Ra:" ;
|
||||
brother_N2 = mkN2 (mkN "b'a:I:") (mkPrep "ka" "ki:") "ke:" ; --not correct
|
||||
brown_A = mkA "b'u:ra:" ;
|
||||
butter_N = mkN "makX,k'an" ;
|
||||
buy_V2 = mkV2 (mkV "xari:dna:") "ko:"; -- add ko: here for es ko khredna, but this will create sentences like kitab ko kharedna
|
||||
camera_N = mkN "ke+mara:" ;
|
||||
cap_N = mkN "To:pi:" ;
|
||||
car_N = mkN "ka:r" ;
|
||||
carpet_N = mkN "qa:li:n" ;
|
||||
cat_N = mkN "billi:" feminine;
|
||||
ceiling_N = mkN "c'at" feminine ;
|
||||
chair_N = mkN "kurX,si:" ;
|
||||
cheese_N = mkN "pani:r" feminine ;
|
||||
child_N = mkN "bacX,c'a:" ;
|
||||
church_N = mkN "girija:" ;
|
||||
city_N = mkN "s*ahar" ;
|
||||
clean_A = mkA "sa:f" ;
|
||||
clever_A = mkA "ca:la:k" ;
|
||||
close_V2 = mkV2 (compoundV "band" do_V2);
|
||||
coat_N = mkN "ko:T" ;
|
||||
cold_A = mkA "sard" ;
|
||||
come_V = mkV "A:na:" ;
|
||||
computer_N = mkN "kam.pyu:Tar" ;
|
||||
country_N = mkN "de:s*" ;
|
||||
cousin_N = mkCmpdNoun "cca" (mkN "zad") ; -- a compund noun made of two nouns
|
||||
cow_N = mkN "ga:y" feminine ;
|
||||
die_V = mkV "marna:" ;
|
||||
dirty_A = mkA "gam.da:" ;
|
||||
distance_N3 = mkN3 (mkN "fa:sla:") (mkPrep "ka:" "ki:") "ke:" "se:" ;
|
||||
doctor_N = mkN "Da:kTar" ;
|
||||
dog_N = mkN "kutta:" ;
|
||||
door_N = mkN "darva:za:" ;
|
||||
drink_V2 = mkV2 (mkV "pi:na:");
|
||||
easy_A2V = mkA "A:sa:n" "" ; -- chek for A or a
|
||||
eat_V2 = mkV2 (mkV "k'a:na:") "" ;
|
||||
empty_A = mkA "xa:li:" ;
|
||||
enemy_N = mkN "dus*X,man" ;
|
||||
factory_N = mkN "ka:rxa:na:" ;
|
||||
father_N2 = mkN2 (mkN "ba:p") (mkPrep "ka" "ki:") "ke:" ;
|
||||
fear_N = mkN "Dar";
|
||||
fear_VS = mkV "Darna:";
|
||||
find_V2 = mkV2 (mkV "pa:na:") ;
|
||||
fish_N = mkN "mac'li:" ;
|
||||
floor_N = mkN "fars*" ;
|
||||
forget_V2 = mkV2 (mkV "b'u:lna:") ;
|
||||
fridge_N = mkN "frij" ;
|
||||
friend_N = mkN "do:sX,t" masculine ;
|
||||
fruit_N = mkN "p'al" ;
|
||||
-- fun_AV = mkAV (regA "fun") ;
|
||||
garden_N = mkN "ba:g." ; -- chek for g.
|
||||
girl_N = mkN "laRki:" ;
|
||||
glove_N = mkN "dasta:na:" ;
|
||||
gold_N = mkN "so:na:" ;
|
||||
good_A = mkA "AcX,c'a:" ;
|
||||
go_V = mkV "ja:na:" ;
|
||||
green_A = mkA "hara:" ;
|
||||
harbour_N = mkCmpdNoun "bam.dar" (mkN "ga:h") ;
|
||||
hate_N = mkN "nafrat" ;
|
||||
hate_V2 = mkV2 (compoundV "nafrat" do_V2) ;
|
||||
hat_N = mkN "To:pi:" ;
|
||||
-- have_V2 = dirV2 (mk5V "have" "has" "had" "had" "having") ;
|
||||
hear_V2 = mkV2 (mkV "sunna:") ;
|
||||
hill_N = mkN "paha:R" ;
|
||||
hope_N = mkN "Ummi:d" ;
|
||||
hope_VS = (compoundV "Ummi:d" do_V2);
|
||||
horse_N = mkN "g'o:Ra:" ;
|
||||
hot_A = mkA "garm" ;
|
||||
house_N = mkN "g'ar" ;
|
||||
important_A = mkA "zaru:ri:" ; -- check about z
|
||||
industry_N = mkN "sant" feminine ;
|
||||
iron_N = mkN "lo:ha:" ;
|
||||
king_N = mkN "ra:ja:" ;
|
||||
know_V2 = mkV2 (mkV "ja:nna:") ;
|
||||
know_VS = mkV "ja:nna:";
|
||||
lake_N = mkN "j'i:l" feminine ;
|
||||
lamp_N = mkN "cira:g" ;
|
||||
learn_V2 = mkV2 (mkV "si:k'na:") ;
|
||||
leather_N = mkN "camRa:" ;
|
||||
leave_V2 = mkV2 (mkV "calna:") ;
|
||||
like_V2 = mkV2 (compoundV "pasam.d" do_V2);
|
||||
listen_V2 = mkV2 (mkV "sunna:") ;
|
||||
live_V = mkV "rahna:" ; ---- touch
|
||||
long_A = mkA "lam.ba:" ;
|
||||
lose_V2 = mkV2 (compoundV "k'o:" do_V2) ;
|
||||
love_N = mkN "pX,ya:r" ;
|
||||
love_V2 = mkV2 (compoundV "pX,ya:r" do_V2) "ko:";
|
||||
man_N = mkN "A:dmi:" masculine;
|
||||
married_A2 = mkIrregA "s*a:di: s*uda:" "se:" ;
|
||||
marriage = mkN "s*a:di: " ;
|
||||
meat_N = mkN "ma:m.s" ;
|
||||
milk_N = mkN "du:d'" ;
|
||||
moon_N = mkN "ca:m.d" ;
|
||||
mother_N = mkN "ma:n~" feminine; -- not covered need to be discussed
|
||||
mountain_N = mkN "paha:R" ;
|
||||
music_N = mkN "sam.gi:t" ;
|
||||
narrow_A = mkA "tam.g" ;
|
||||
new_A = mkA "naya:" ;
|
||||
newspaper_N = mkN "Axba:r" ;
|
||||
oil_N = mkN "te:l" ;
|
||||
old_A = mkA "bu:R'a:" ;
|
||||
open_V2 = mkV2 (mkV "k'o:lna:") ;
|
||||
paint_V2A = mkV2 (compoundV "ram.g" do_V2) ;
|
||||
paper_N = mkN "ka:g.az" ;
|
||||
paris_PN = mkPN "pe+ris" ;
|
||||
peace_N = mkN "Aman" ;
|
||||
pen_N = mkN "qalam" ;
|
||||
planet_N = mkN "sita:ra:" ;
|
||||
plastic_N = mkN "pla:sTik" ;
|
||||
play_V2 = mkV2 (mkV "k'e:lna:") ;
|
||||
policeman_N = mkCmpdNoun "pulis" (mkN "wa:la:") ;
|
||||
priest_N = mkN "puja:ri:" ;
|
||||
-- probable_AS = mkAS (regA "probable") ;
|
||||
queen_N = mkN "ra:ni:" ;
|
||||
radio_N = mkN "re:Dio:" ;
|
||||
rain_N = mkN "ba:ris*" ;
|
||||
rain_V0 = compoundV "ba:ris*" (mkV "ho:na:" ) ;
|
||||
read_V2 = mkV2 (mkV "paR'na:");
|
||||
red_A = mkA "la:l" ;
|
||||
religion_N = mkN "mazhab" ;
|
||||
restaurant_N = mkN "re:sTo:ra:m.T" ;
|
||||
-- river_N = mkN "dariya:" masculine ;
|
||||
rock_N = mkN "caTTa:n" ;
|
||||
roof_N = mkN "c'at" masculine ;
|
||||
rubber_N = mkN "rabar" ;
|
||||
run_V = mkV "do+Rna:" ;
|
||||
say_VS = mkV "kahna:" ;
|
||||
school_N = mkN "sku:l" ;
|
||||
science_N = mkN "sa:ians" ; -- vgyan
|
||||
sea_N = mkN "samam.dar" ;
|
||||
seek_V2 = mkV2 (compoundV "tala:s*" do_V2) ;
|
||||
see_V2 = mkV2 (mkV "de:k'na:") ;
|
||||
sell_V3 = mkV3 (mkV "be:cna:") "ko:" "";
|
||||
send_V3 = mkV3 (mkV "b'e:jna:") "ko:" "";
|
||||
sheep_N = mkN "b'i:R" feminine ;
|
||||
ship_N = mkN "jaha:z" ;
|
||||
shirt_N = mkN "kurX,ta:" feminine;
|
||||
shoe_N = mkN "ju:ta:" ;
|
||||
shop_N = mkN "du:ka:n" feminine ;
|
||||
short_A = mkA "c'o:Ta:" ;
|
||||
silver_N = mkN "ca:m.di:" ;
|
||||
sister_N = mkN "bahan" feminine ;
|
||||
sleep_V = mkV "so:na:" ;
|
||||
small_A = mkA "c'o:Ta:" ;
|
||||
snake_N = mkN "sa:m.p" ;
|
||||
sock_N = mkN "jurra:b" feminine ;
|
||||
speak_V2 = mkV2 (mkV "bo:lna:") ;
|
||||
star_N = mkN "ta:ra:" ;
|
||||
steel_N = mkN "Ispa:t" ; -- something like ispat
|
||||
stone_N = mkN "patX,t'ar" ;
|
||||
stove_N = mkN "cu:lX,ha:" ;
|
||||
-- student_N = mkCmpdNoun "t-alb" (mkN "elm") ; -- something vidrati
|
||||
stupid_A = mkA "be:vaqu:f" ;
|
||||
sun_N = mkN "su:raj" ; -- swrya
|
||||
switch8off_V2 = mkV2 (compoundV "bam.d" do_V2) ;
|
||||
switch8on_V2 = mkV2 (mkV "cala:na:") ;
|
||||
table_N = mkN "me:z" feminine ;
|
||||
talk_V3 = mkV3 (mkV "bo:lna:") "se:" "ke: ba:re: me:";
|
||||
teacher_N = mkN "UsX,ta:d" ; -- adyapak
|
||||
teach_V2 = mkV2 (mkV "sik'a:na:") ;
|
||||
television_N = mkN "Ti:vi:" ;
|
||||
thick_A = mkA "mo:Ta:" ;
|
||||
thin_A = mkA "patla:" ;
|
||||
train_N = mkN "re:l ga:Ri:" ;
|
||||
travel_V = (compoundV "safar" do_V2) ;
|
||||
-- tree_N = mkN "pe:R" masculine ;
|
||||
trousers_N = mkN "patlu:n" ;
|
||||
ugly_A = mkA "badsu:rat" ;
|
||||
understand_V2 = mkV2 (mkV "samaj'na:") ;
|
||||
university_N = mkN "yu:nivarsiTi:" ;
|
||||
village_N = mkN "ga:n~v" ; -- check for n or N
|
||||
wait_V2 = mkV2 (compoundV "Im.taza:r" do_V2) "ka:" ; -- something prtkXa
|
||||
walk_V = mkV "calna:" ;
|
||||
warm_A = mkA "garm" ; something gngna
|
||||
war_N = mkN "laRa:I:" ;
|
||||
watch_V2 = mkV2 (mkV "de:k'na:") ;
|
||||
water_N = mkN "pa:ni:" masculine ; -- not covered masculine ending with y
|
||||
white_A = mkA "safe:d" ;
|
||||
window_N = mkN "k'iRki:" ;
|
||||
wine_N = mkN "s*ara:b" feminine ;
|
||||
win_V2 = mkV2 (mkV "ji:tna:") ;
|
||||
woman_N = mkN "O+rat" feminine ;
|
||||
wonder_VQ = compoundV "he+ra:n" (mkV "ho:na:") ;
|
||||
wood_N = mkN "lakRi:" ;
|
||||
write_V2 = mkV2 (mkV "lik'na:") ;
|
||||
yellow_A = mkA "pi:la:" ;
|
||||
young_A = mkA "java:n" ;
|
||||
do_V2 = mkV2 (mkV "karna:") ;
|
||||
now_Adv = mkAdv "Ab" ;
|
||||
already_Adv = mkAdv "pahle: hi:" ;
|
||||
song_N = mkN "gi:t" ;
|
||||
add_V3 = mkV3 (mkV "jo:Rana:") "ko:" "mi:m."; -- confirm
|
||||
number_N = mkN "hndsh" ;
|
||||
put_V2 = mkV2 (mkV "Da:lna:") ;
|
||||
stop_V = mkV "rukna:" ;
|
||||
jump_V = compoundV "c'ala:m.g" (mkV "laga:na:") ;
|
||||
|
||||
left_Ord = {s = "ba:ya:n~" ; n = singular};
|
||||
right_Ord = {s= "da:ya:n~" ; n = singular};
|
||||
far_Adv = mkAdv "du:r" ;
|
||||
correct_A = mkA "sahi:h" ;
|
||||
dry_A = mkA "su:k'a:" ;
|
||||
dull_A = mkA "nalik" ;
|
||||
full_A = mkA "b'ara:" ;
|
||||
heavy_A = mkA "b'a:ri:" ;
|
||||
near_A = mkA "pa:s" ;
|
||||
rotten_A = mkA "saRa:" ;
|
||||
round_A = mkA "go:l" ;
|
||||
sharp_A = mkA "te:z" ;
|
||||
smooth_A = mkA "cikna:" ;
|
||||
straight_A = mkA "si:d'a:" ;
|
||||
wet_A = mkA "gi:la:" ; ----
|
||||
wide_A = mkA "co+Ra:" ;
|
||||
animal_N = mkN "ja:nvar" ;
|
||||
ashes_N = mkN "ra:k'" feminine; -- FIXME: plural only?
|
||||
back_N = mkN "pi:T'" feminine ;
|
||||
-- bark_N = mkN "bark" ;
|
||||
-- belly_N = mkN "dh-ny" ;
|
||||
blood_N = mkN "xu:n" ;
|
||||
bone_N = mkN "haDDi:" feminine ;
|
||||
breast_N = mkN "c'a:ti:" ; --stan
|
||||
cloud_N = mkN "ba:dal" ;
|
||||
day_N = mkN "din" ;
|
||||
dust_N = mkN "d'u:l" ;
|
||||
ear_N = mkN "ka:n" ;
|
||||
earth_N = mkN "zami:n" feminine ;
|
||||
egg_N = mkN "Am.Da:" ;
|
||||
eye_N = mkN "A:m.k'" feminine ;
|
||||
fat_N = mkN "mo:Ta:" ;
|
||||
feather_N = mkN "pam.k'" ;
|
||||
fingernail_N = mkN "na:k'u:n" ;
|
||||
fire_N = mkN "A:g" feminine ;
|
||||
flower_N = mkN "p'u:l" ;
|
||||
fog_N = mkN "d'um.d'" feminine ;
|
||||
foot_N = mkN "pa:m.v" ; -- not properly covered need to be discussed
|
||||
forest_N = mkN "jam.gal" ;
|
||||
grass_N = mkN "g'a:s" feminine ;
|
||||
-- guts_N = mkN "gut" ; -- FIXME: no singular
|
||||
hair_N = mkN "ba:l" ;
|
||||
hand_N = mkN "ha:t'" ;
|
||||
head_N = mkN "sir" ;
|
||||
heart_N = mkN "dil" ;
|
||||
horn_N = mkN "si:m.g" ;
|
||||
husband_N = mkN "pati" ;
|
||||
ice_N = mkN "barX,f" feminine ;
|
||||
knee_N = mkN "g'uTna:" ;
|
||||
leaf_N = mkN "patta:" ;
|
||||
leg_N = mkN "Ta:m.g" feminine ;
|
||||
liver_N = mkN "kale:ja:" ;
|
||||
louse_N = mkN "ju:" ;
|
||||
mouth_N = mkN "muh" ;
|
||||
name_N = mkN "na:m" ;
|
||||
neck_N = mkN "garX,dan" feminine ;
|
||||
night_N = mkN "ra:t" feminine ;
|
||||
nose_N = mkN "na:k" ;
|
||||
-- person_N = mkN "XKS" ;
|
||||
road_N = mkN "saRak" ;
|
||||
root_N = mkN "jaR" feminine ;
|
||||
rope_N = mkN "rassi:" ;
|
||||
salt_N = mkN "namak" feminine ;
|
||||
sand_N = mkN "re:t" feminine ;
|
||||
seed_N = mkN "bi:j" ;
|
||||
skin_N = mkN "jld" feminine ; -- crm
|
||||
sky_N = mkN "A:sma:n" ;
|
||||
smoke_N = mkN "d'ua:n~"; -- singular masc nouns ending with aN,wN yet to be implemented
|
||||
snow_N = mkN "barX,f" feminine ;
|
||||
stick_N = mkN "lakRi:" ;
|
||||
tail_N = mkN "dum" ;
|
||||
tongue_N = mkN "zaba:n" feminine ;
|
||||
tooth_N = mkN "da:m.t" masculine;
|
||||
wife_N = mkN "bi:vi:" ;
|
||||
wind_N = mkN "hava:" ;
|
||||
-- wing_N = mkN "pr" ;
|
||||
worm_N = mkN "ki:Ra" ;
|
||||
year_N = mkN "sa:l" ;
|
||||
-- blow_V = mkV "clna" ;
|
||||
breathe_V = compoundV "sa:n~s" (mkV "le:na:" ) ;
|
||||
burn_V = mkV "jala:na:" ;
|
||||
dig_V = mkV "k'o:dna:" ;
|
||||
fall_V = mkV "girna:" ;
|
||||
float_V = mkV "te+rna:" ;
|
||||
flow_V = mkV "bahna:" ;
|
||||
fly_V = mkV "uRna:" ;
|
||||
-- freeze_V = mkV "jmna";
|
||||
give_V3 = mkV3 (mkV "de:na:") "ko:" "";
|
||||
laugh_V = mkV "ham.sna:" ;
|
||||
lie_N = mkN "j'u:T" masculine ;
|
||||
lie_V = compoundV "j'u:T" (mkV "bo:lna:" );
|
||||
play_V = mkV "k'e:lna:" ;
|
||||
sew_V = mkV "si:na:" ;
|
||||
sing_V = mkV "ga:na:" ;
|
||||
sit_V = mkV "be+T'na:" ;
|
||||
smell_V = mkV "su:m.gna:" ;
|
||||
spit_V = mkV "t'u:kna:" ;
|
||||
stand_V = compoundV "k'aRa:" (mkV "ho:na:" ); -- a type of compound verb made of two verbs i.e 'kHRa' also inflects, rather than a string and verb should be fixed
|
||||
swell_V = mkV "su:jna:" ;
|
||||
swim_V = mkV "te+rna:" ;
|
||||
think_V = mkV "so:cna:" ;
|
||||
turn_V = mkV "muRna:";
|
||||
-- vomit_V = compoundV "Aly" (mkV "krna") feminine ;
|
||||
bite_V2 = mkV2 (mkV "ka:Tana:") ;
|
||||
count_V2 = mkV2 (mkV "ginna:") ;
|
||||
cut_V2 = mkV2 (mkV "ka:Tna:") ;
|
||||
fear_V2 = mkV2 (mkV "Darna:") ;
|
||||
fight_V2 = mkV2 (mkV "laRna:") ;
|
||||
-- hit_V2 = mkV2 (compoundV "th-wkr" (mkV "marna" ));
|
||||
hold_V2 = mkV2 (mkV "pakaRna:") ;
|
||||
-- hunt_V2 = mkV2 (compoundV "Xkar" do_V2);
|
||||
kill_V2 = mkV2 (compoundV "ma:r" (mkV "Da:lna:" )) ;
|
||||
pull_V2 = mkV2 (mkV "k'i:m.cna:");
|
||||
push_V2 = mkV2 (mkV "d'ake:lna:") "ko:" ;
|
||||
rub_V2 = mkV2 (mkV "ragaRna:") ;
|
||||
scratch_V2 = mkV2 (mkV "k'aro:m.cna:") "ko:" ;
|
||||
-- split_V2 = mkV2 (mkV "banta") "ko::" ;
|
||||
-- squeeze_V2 = dirV2 (regV "squeeze") ;
|
||||
-- stab_V2 = dirV2 (regDuplV "stab") ;
|
||||
suck_V2 = mkV2 (mkV "cu:sna:") ;
|
||||
throw_V2 = mkV2 (mkV "p'e:m.kna:") ;
|
||||
tie_V2 = mkV2 (mkV "ba:m.d'na:") ;
|
||||
wash_V2 = mkV2 (mkV "d'o:na:") ;
|
||||
-- wash_V2 = mkV2 (mkV "po:m.c'ana:") ;
|
||||
|
||||
---- other_A = regA "other" ;
|
||||
|
||||
-- grammar_N = mkN "grdan" ;
|
||||
-- language_N = mkN "zban" feminine ;
|
||||
-- rule_N = mkN "ASwl" ;
|
||||
|
||||
---- added 4/6/2007
|
||||
john_PN = mkPN "ja:n" ;
|
||||
question_N = mkN "sava:l" ;
|
||||
ready_A = mkA "te+ya:r" ;
|
||||
reason_N = mkN "vajah" feminine ;
|
||||
today_Adv = mkAdv "A:j" ;
|
||||
-- uncertain_A = mkA ["g.yr yqyny"] ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -36,10 +36,11 @@ oper
|
||||
|
||||
regNoun : Str -> Noun ;
|
||||
regNoun s = case s of {
|
||||
_ + "ya" => mkN05 (s);
|
||||
_ + ("a"|"e"|"h") => mkN01 (s);
|
||||
_ + "y" => mkN03 (s);
|
||||
_ + ("aN"|"wN") => mkN04 (s);
|
||||
_ + "ya:" => mkN05 (s);
|
||||
_ + ("a:") => mkN01 (s);
|
||||
_ + "i:" => mkN03 (s);
|
||||
_ + ("a:n~"|"a:") => mkN04 (s);
|
||||
_ + "a:n~v" => mkN12 s;
|
||||
_ + "w^" => mkN12 (s);
|
||||
_ => regNoun2 (s)
|
||||
};
|
||||
@@ -55,10 +56,11 @@ oper
|
||||
in case <s,g,c> of {
|
||||
<_ + "t",Fem,_> => mkN10 (s);
|
||||
<_ + "t",Masc,_> => mkN02 (s);
|
||||
<_ + "w",Masc,_> => mkN11 (s);
|
||||
<_ + "u:",Masc,_> => mkN11 (s);
|
||||
<_ + "w",Fem,_> => mkN07 (s);
|
||||
<_ + "ya",Fem,_> => mkN05 (s);
|
||||
<_ + "ya",Masc,_> => mkN02 (s);
|
||||
<_ + "i:",Masc,_> => mkN13 (s);
|
||||
<_,Fem,False> => mkN08 (s);
|
||||
<_,Fem,_> => mkN09 (s)
|
||||
|
||||
@@ -70,14 +72,14 @@ oper
|
||||
mkN01 : Str -> Noun ;
|
||||
mkN01 lRka = let end = last (lRka) ;
|
||||
lRk = if_then_else Str (eq end "e") lRka (tk 1 lRka)
|
||||
in mkNoun (lRka) (lRk+"E") (lRk+"E")
|
||||
(lRk+"E") (lRk+"wN") (lRk+"w")
|
||||
in mkNoun (lRka) (lRk+"e:") (lRk+"e:")
|
||||
(lRk+"e:") (lRk+"o:n~") (lRk+"o:")
|
||||
Masc ;
|
||||
|
||||
-- masculine nouns does not end with a, h, e, an
|
||||
|
||||
mkN02 : Str -> Noun ;
|
||||
mkN02 mrd = let mrdwN = mrd+"wN" ;
|
||||
mkN02 mrd = let mrdwN = mrd+"o:n~" ;
|
||||
mrdw = tk 1 mrdwN
|
||||
in mkNoun mrd mrd mrd
|
||||
mrd mrdwN mrdw
|
||||
@@ -86,24 +88,32 @@ oper
|
||||
-- feminine Nouns end with y
|
||||
|
||||
mkN03 : Str -> Noun ;
|
||||
mkN03 krsy = let krsyaN = krsy+"aN" ;
|
||||
krsywN = krsy+"wN" ;
|
||||
mkN03 krsy = let krsyaN = krsy+"an~" ;
|
||||
krsywN = krsy+"yo:n~" ;
|
||||
krsyw = tk 1 krsywN
|
||||
in mkNoun krsy krsy krsy
|
||||
krsyaN krsywN krsyw
|
||||
Fem ;
|
||||
|
||||
-- masculine nouns ending at i: e.g Admi:
|
||||
mkN13 : Str -> Noun ;
|
||||
mkN13 krsy = let
|
||||
krsywN = krsy+"yo:n~" ;
|
||||
krsyw = tk 1 krsywN
|
||||
in mkNoun krsy krsy krsy
|
||||
krsy krsywN krsyw
|
||||
Masc ;
|
||||
|
||||
-- feminine nouns end with a, aN, wN
|
||||
mkN04 : Str -> Noun ;
|
||||
mkN04 n = case last n of {
|
||||
"a" => let bla = n
|
||||
in mkNoun bla bla bla
|
||||
(bla+"y^yN") (bla+"w^N") (bla+"w^")
|
||||
"a:" => mkNoun n n n
|
||||
(n+"a:e:n~") (n+"a:o:n~") (n+"a:o:")
|
||||
Fem ;
|
||||
_ => let maN = n ; -- ends with aN and wN
|
||||
ma = tk 1 maN
|
||||
in mkNoun maN maN maN
|
||||
(ma+"y^yN") (ma+"w^N") (ma+"w^N")
|
||||
(maN+"a:n~e:n~") (maN+"a:n~o:n~") (maN+"a:n~o:")
|
||||
Fem
|
||||
|
||||
};
|
||||
@@ -112,14 +122,14 @@ oper
|
||||
mkN05 : Str -> Noun ;
|
||||
mkN05 gRya = let gRy = (tk 1 gRya)
|
||||
in mkNoun gRya gRya gRya
|
||||
(gRya+"N") (gRy+"wN") (gRy+"w")
|
||||
(gRya+"n~") (gRy+"o:n~") (gRy+"o:")
|
||||
Fem ;
|
||||
|
||||
-- feminine nouns end with w
|
||||
|
||||
mkN07 : Str -> Noun ;
|
||||
mkN07 khshbw = mkNoun khshbw khshbw khshbw
|
||||
(khshbw + "y^yN") (khshbw + "w^N") (khshbw + "w^")
|
||||
(khshbw + "e:n~") (khshbw + "o:n~") (khshbw + "o:")
|
||||
Fem ;
|
||||
|
||||
-- Loan arabic feminine nouns end with t
|
||||
@@ -127,7 +137,7 @@ oper
|
||||
|
||||
mkN10 : Str -> Noun ;
|
||||
mkN10 ndamt = mkNoun ndamt ndamt ndamt
|
||||
(ndamt+"yN") (ndamt+"wN") (ndamt+"w")
|
||||
(ndamt+"e:m.") (ndamt+"w:m.") (ndamt+"o:")
|
||||
Fem ;
|
||||
-- Worst case function
|
||||
mkN : (_,_,_,_,_,_ : Str) -> Gender -> Noun ;
|
||||
@@ -143,21 +153,21 @@ oper
|
||||
|
||||
mkN08 : Str -> Noun ;
|
||||
mkN08 ktab = mkNoun ktab ktab ktab
|
||||
(ktab+"yN") (ktab+"wN") (ktab+"w")
|
||||
(ktab+"e:n~") (ktab+"o:n~") (ktab+"o:")
|
||||
Fem ;
|
||||
|
||||
-- Loan arabic feminine nouns
|
||||
|
||||
mkN09 : Str -> Noun ;
|
||||
mkN09 ahsan = mkNoun ahsan ahsan ahsan
|
||||
(ahsan+"at") (ahsan+"at") (ahsan+"w")
|
||||
(ahsan+"a:t") (ahsan+"a:t") (ahsan+"o:")
|
||||
Fem ;
|
||||
-- (variants{ahsan+"at";ahsan+"wN"})
|
||||
-- Loan persian maculine nouns end with w
|
||||
|
||||
mkN11 : Str -> Noun ;
|
||||
mkN11 alw = mkNoun alw alw alw
|
||||
alw (alw+"w^N") (alw+"w^")
|
||||
alw (alw+"o:n~") (alw+"o:")
|
||||
Masc ;
|
||||
|
||||
|
||||
@@ -167,17 +177,19 @@ oper
|
||||
mkN12 bhao = mkNoun (bhao) (bhao) (bhao)
|
||||
(bhao) (bhao) (bhao)
|
||||
Masc ;
|
||||
|
||||
|
||||
----2 Determiners
|
||||
IDeterminer = {s:Gender => Str ; n : Number};
|
||||
IDeterminer = {s:Gender => Case => Str ; n : Number};
|
||||
makeDet : Str -> Str -> Str -> Str -> Number -> Determiner = \s1,s2,s3,s4,n -> {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Masc => s1 ;
|
||||
Fem => s2
|
||||
Sg => table {
|
||||
Masc => table {_ => s1} ;
|
||||
Fem => table {_ => s2}
|
||||
} ;
|
||||
Pl => table {
|
||||
Masc => s3 ;
|
||||
Fem => s4
|
||||
Masc => table { _ => s3} ;
|
||||
Fem => table {_ => s4}
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -186,11 +198,11 @@ oper
|
||||
|
||||
makeIDet : Str -> Str -> Number -> IDeterminer = \s1,s2,n -> {
|
||||
s = table {
|
||||
Masc => s1;
|
||||
Fem => s2
|
||||
Masc => table {_ =>s1};
|
||||
Fem => table {_ =>s2}
|
||||
};
|
||||
n = n
|
||||
};
|
||||
};
|
||||
|
||||
-- Proposition
|
||||
|
||||
@@ -317,13 +329,14 @@ oper
|
||||
};
|
||||
|
||||
----2 Adjectives
|
||||
-- defined in ResUrd
|
||||
|
||||
makeIrregA : Str -> Adjective = \str -> {s = \\_,_,_,_ => str} ;
|
||||
|
||||
----3 Verbs
|
||||
CommonVF = {s : VTense => UPerson => Number => Gender => Str} ;
|
||||
|
||||
mkVerb : (x1: Str) -> Verb = \inf ->
|
||||
let root = (tk 2 inf); inf_obl = ((tk 1 inf) + "E"); inf_fem = ((tk 1 inf) + "y")
|
||||
let root = (tk 2 inf); inf_obl = ((tk 1 inf) + "e:"); inf_fem = ((tk 2 inf) + "yi:")
|
||||
in { s = table {
|
||||
|
||||
VF tense person number gender => (mkCmnVF root tense person number gender).s ;
|
||||
@@ -343,38 +356,43 @@ oper
|
||||
mkCmnVF : Str -> VTense -> UPerson -> Number -> Gender -> {s:Str} =
|
||||
\root,t,p,n,g ->
|
||||
{s =
|
||||
let form1 = case (last root) of {
|
||||
"a"|"A"|"w" => root + "w^N" ;
|
||||
_ => root + "wN"
|
||||
};
|
||||
form2 = case (last root) of {
|
||||
"a"|"A"|"w" => root + "y^N" ;
|
||||
_ => root + "yN"
|
||||
};
|
||||
let form1 = case (last root) of
|
||||
{
|
||||
"a:"|"o:"|"i:" => root + "U:n~";
|
||||
"e:" => (tk 1 root)+ "u:n~";
|
||||
_ => root + "u:n~"
|
||||
};
|
||||
form2 = case (last root) of
|
||||
{
|
||||
"a:"|"o:" => root + "E:n~";
|
||||
"i:" => root + "ye:n~";
|
||||
"e:" => (tk 1 root)+ "e:n~";
|
||||
_ => root + "e:n~"
|
||||
}
|
||||
in
|
||||
case <t,p,n,g> of {
|
||||
<Subj,Pers1,Sg,_> => form1 ;
|
||||
<Subj,Pers1,Pl,_> => form2 ;
|
||||
<Subj,_,_,_> => (mkImpert root p n g).s ;
|
||||
<Perf,_,_,_> => case root of {
|
||||
"hw" => (mkPastInd root p n g).s ;
|
||||
"ja" => (mkPastInd "gy" p n g).s ;
|
||||
"kr" => (mkPastInd "k" p n g).s ;
|
||||
"dE" => (mkPastInd "d" p n g).s ;
|
||||
"lE" => (mkPastInd "l" p n g).s ;
|
||||
_ => (mkPastInd root p n g).s };
|
||||
<Imperf,Pers2_Familiar,Sg,Masc> => root + "tE";
|
||||
<Imperf,Pers2_Familiar,Sg,Fem> => root + "ty"; --variants{root+"ty" ; root+"tyN"};
|
||||
<Imperf,Pers2_Familiar,Pl,Masc> => root + "tE";
|
||||
<Imperf,Pers2_Familiar,Pl,Fem> => root+"tyN";
|
||||
<Imperf,Pers2_Respect,Sg,Masc> => root + "tE";
|
||||
<Imperf,Pers2_Respect,Sg,Fem> => root + "ty"; --variants{root+"ty" ; root+"tyN"};
|
||||
<Imperf,Pers2_Respect,Pl,Masc> => root + "tE";
|
||||
<Imperf,Pers2_Respect,Pl,Fem> => root+"tyN";
|
||||
<Imperf,_,Sg,Masc> => root+"ta";
|
||||
<Imperf,_,Sg,Fem> => root+"ty";
|
||||
<Imperf,_,Pl,Masc> => root+"te";
|
||||
<Imperf,_,Pl,Fem> => root+"tyN"
|
||||
"ho:" => (mkPastInd root p n g).s ;
|
||||
"ja:" => (mkPastInd "gay" p n g).s ;
|
||||
"kr" => (mkPastInd "kiy" p n g).s ;
|
||||
-- "dE" => (mkPastInd "d" p n g).s ;
|
||||
-- "lE" => (mkPastInd "l" p n g).s ;
|
||||
_ => (mkPastInd root p n g).s };
|
||||
<Imperf,Pers2_Familiar,Sg,Masc> => root + "te:";
|
||||
<Imperf,Pers2_Familiar,Sg,Fem> => root + "ti:"; --variants{root+"ty" ; root+"tyN"};
|
||||
<Imperf,Pers2_Familiar,Pl,Masc> => root + "te:";
|
||||
<Imperf,Pers2_Familiar,Pl,Fem> => root+"ti:";
|
||||
<Imperf,Pers2_Respect,Sg,Masc> => root + "te:";
|
||||
<Imperf,Pers2_Respect,Sg,Fem> => root + "ti:"; --variants{root+"ty" ; root+"tyN"};
|
||||
<Imperf,Pers2_Respect,Pl,Masc> => root + "te:";
|
||||
<Imperf,Pers2_Respect,Pl,Fem> => root+"ti:";
|
||||
<Imperf,_,Sg,Masc> => root+"ta:";
|
||||
<Imperf,_,Sg,Fem> => root+"ti:";
|
||||
<Imperf,_,Pl,Masc> => root+"te:";
|
||||
<Imperf,_,Pl,Fem> => root+"ti:"
|
||||
}
|
||||
|
||||
} ;
|
||||
@@ -382,20 +400,27 @@ oper
|
||||
mkPastInd : Str -> UPerson -> Number -> Gender -> {s:Str} = \root,p,n,g ->
|
||||
{s = let roo = root ;
|
||||
a = case (last root) of {
|
||||
"a"|"A"|"w"|"k" => "ya" ;
|
||||
_ => "a"
|
||||
"a:"|"o:"|"i:" => "ya:" ;
|
||||
"e:" => (tk 1 roo) + "iya:" ;
|
||||
_ => "a:"
|
||||
} ;
|
||||
y = case (last root) of {
|
||||
"a"|"A"|"w" => "y^y" ;
|
||||
_ => "y"
|
||||
"a:"|"o:" => "yi:" ;
|
||||
"i:" => "" ;
|
||||
"e:" => (tk 1 roo) + "i:" ;
|
||||
"iy" => (tk 2 roo) + "i:" ;
|
||||
_ => "i:"
|
||||
} ;
|
||||
e = case (last root) of {
|
||||
"a"|"A"|"w"|"k" => "y^E" ;
|
||||
_ => "E"
|
||||
"a:"|"o:"|"i:"|"k" => "ye:" ;
|
||||
"e:" => (tk 1 roo) + "i:" ;
|
||||
_ => "e:"
|
||||
} ;
|
||||
yN = case (last root) of {
|
||||
"a"|"A"|"w" => "y^yN" ;
|
||||
_ => "yN"
|
||||
"a:"|"o:"|"i:" => "yi:n~" ;
|
||||
"iy" => (tk 2 roo) + "i:" ;
|
||||
"e:" => (tk 1 roo) + "i:n~" ;
|
||||
_ => "yn~"
|
||||
} ;
|
||||
|
||||
in
|
||||
@@ -430,20 +455,19 @@ oper
|
||||
mkImpert : Str -> UPerson -> Number -> Gender -> {s:Str} = \root,p,n,g ->
|
||||
{s = let roo = root ;
|
||||
w = case (last root) of {
|
||||
"a"|"A"|"w" => "w^" ;
|
||||
_ => "w"
|
||||
"a:" => "O:" ;
|
||||
"o:" => "O:" ;
|
||||
_ => "o:"
|
||||
} ;
|
||||
yN = case (last root) of {
|
||||
"a"|"A"|"w" => "y^yN" ;
|
||||
_ => "yN"
|
||||
} ;
|
||||
yE = case (last root) of {
|
||||
"a"|"A"|"w" => "y^yE" ;
|
||||
_ => "yE"
|
||||
"a:"|"o:" => "E:n~" ;
|
||||
_ => "E:n~"
|
||||
} ;
|
||||
e = case (last root) of {
|
||||
"a"|"A"|"w" => "y^E" ;
|
||||
_ => "E"
|
||||
"a:"|"o:" => "E:" ;
|
||||
"e:" => "" ;
|
||||
"i:" => "ye:" ;
|
||||
_ => "E:"
|
||||
} in
|
||||
case <p,n,g> of {
|
||||
<Pers1,_,_> => ""; --nonExist ;
|
||||
|
||||
@@ -1,129 +1,130 @@
|
||||
concrete StructuralHin of Structural = CatHin **
|
||||
open MorphoHin, ParadigmsHin, Prelude, NounHin,ParamX,CommonHindustani in {
|
||||
|
||||
flags optimize=all ;
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
above_Prep = mkPrep "awpr" "awpr" ;
|
||||
after_Prep = mkPrep ["kE bed"] ["kE bed"] ;
|
||||
all_Predet = ss "tmam" ;
|
||||
almost_AdA, almost_AdN = mkAdN "tqryba" ;
|
||||
although_Subj = ss "agrch-" ;
|
||||
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" ;
|
||||
between_Prep = mkPrep "drmyaN" "drmyaN" ;
|
||||
both7and_DConj = sd2 "dwnwN" "awr" ** {n = Pl} ;
|
||||
but_PConj = ss "lykn" ;
|
||||
by8agent_Prep = mkPrep "" "" ;
|
||||
by8means_Prep = mkPrep "" "" ;
|
||||
-- can8know_VV,can_VV = mkV "skna" ** { isAux = True} ;
|
||||
during_Prep = mkPrep ["kE drmyaN"] ["kE drmyaN"] ;
|
||||
either7or_DConj = sd2 "kwy ayk" "ya" ** {n = Sg} ;
|
||||
everybody_NP = MassNP (UseN (ParadigmsHin.mkN "hr kwy" "hr kwy" "hr kwy" "hr kwy" "hr kwy" "hr kwy" Masc )); -- not a good way coz need to include NounHin
|
||||
-- every_Det = mkDet "hr" Sg;
|
||||
everything_NP = MassNP (UseN (ParadigmsHin.mkN "hr cyz" "hr cyz" "hr cyzw" "sb cyzyN" "sb cyzwN" "sb cyzw" Masc ));
|
||||
everywhere_Adv = mkAdv "hr jgh" ;
|
||||
-- few_Det = mkDet "cnd" Pl ;
|
||||
first_Ord = {s = "pehla" ; n = Sg} ; --DEPRECATED
|
||||
for_Prep = mkPrep "kylyE" "kylyE" ;
|
||||
from_Prep = mkPrep "sE" "sE" ;
|
||||
he_Pron = personalPN "wh" "as" "" "as ka" Sg Masc Pers3_Distant ;
|
||||
here_Adv = mkAdv "yhaN" ;
|
||||
here7to_Adv = mkAdv "yhaN pr" ;
|
||||
here7from_Adv = mkAdv "yhaN sE" ;
|
||||
how_IAdv = ss "kysE" ;
|
||||
how8many_IDet = makeIDet "ktnE" "ktny" Pl ;
|
||||
if_Subj = ss "agr" ;
|
||||
in8front_Prep = mkPrep ["kE samnE"] ["kE samnE"] ;
|
||||
i_Pron = personalPN "myN" "mjh-" "" "myra" Sg Masc Pers1;
|
||||
in_Prep = mkPrep "meN" "meN" ;
|
||||
it_Pron = personalPN "yh" "yh" "yh" "as ka" Sg Masc Pers3_Near;
|
||||
less_CAdv = {s = "km" ; p = ""} ;
|
||||
-- many_Det = mkDet "bht zyadh" Pl ;
|
||||
more_CAdv = {s = "zyadh-" ; p = "" } ;
|
||||
most_Predet = ss "zyadh tr" ;
|
||||
--much_Det = mkDet "bht" Pl ;
|
||||
-- must_VV = {
|
||||
-- s = table {
|
||||
-- VVF VInf => ["have to"] ;
|
||||
-- VVF VPres => "must" ;
|
||||
-- VVF VPPart => ["had to"] ;
|
||||
-- VVF VPresPart => ["having to"] ;
|
||||
-- VVF VPast => ["had to"] ; --# notpresent
|
||||
-- VVPastNeg => ["hadn't to"] ; --# notpresent
|
||||
-- VVPresNeg => "mustn't"
|
||||
-- } ;
|
||||
-- isAux = True
|
||||
-- } ;
|
||||
-----b no_Phr = ss "no" ;
|
||||
no_Utt = ss "nhyN" ;
|
||||
on_Prep = mkPrep "pr" "pr" ;
|
||||
-- one_Quant = demoPN "ayk" "ayk" "ayk" ; -- DEPRECATED
|
||||
only_Predet = ss "srf" ;
|
||||
or_Conj = sd2 [] "ya" ** {n = Sg} ;
|
||||
otherwise_PConj = ss "ya ph-r" ;
|
||||
part_Prep = mkPrep "" "" ;
|
||||
please_Voc = ss "mhrbani" ;
|
||||
possess_Prep = mkPrep "ka" "ky" ;
|
||||
quite_Adv = ss "khamosh" ;
|
||||
she_Pron = personalPN "wh" "as" "wh" "as ky" Sg Fem Pers3_Distant ;
|
||||
so_AdA = ss "so" ;
|
||||
somebody_NP = MassNP (UseN (ParadigmsHin.mkN "kwy" "kwy" "kwy" "kwy" "kwy" "kwy" Masc ));
|
||||
--someSg_Det = mkDet "kch-" Sg ;
|
||||
--somePl_Det = mkDet "kch-" Pl ;
|
||||
something_NP = MassNP (UseN (ParadigmsHin.mkN "kwy cyz" "kwy cyz" "kwy cyz" "kh- cyzyN" "kh- cyzwN" "kh- cyzw" Masc ));
|
||||
somewhere_Adv = mkAdv "khin pr" ;
|
||||
that_Quant = demoPN "wh" "as" "an" ;
|
||||
that_Subj = ss "kh";
|
||||
there_Adv = mkAdv "whaN" ;
|
||||
there7to_Adv = mkAdv "whaN pr" ;
|
||||
there7from_Adv = mkAdv ["whaN sE"] ;
|
||||
therefore_PConj = ss "as lyE" ;
|
||||
they_Pron = personalPN "wh" "wh" "wh" "an ka" Pl Masc Pers3_Distant ; ----
|
||||
this_Quant = demoPN "yh" "as" "an";
|
||||
through_Prep = mkPrep ["myN sE"] ["myN sE"] ;
|
||||
too_AdA = ss "bht" ;
|
||||
to_Prep = mkPrep "kw" "kw" ;
|
||||
under_Prep = mkPrep "nycE" "nycE" ;
|
||||
very_AdA = ss "bht" ;
|
||||
-- want_VV = mkV "cahna" ** { isAux = False} ;
|
||||
we_Pron = personalPN "hm" "hm" "hm" "hmara" Pl Masc Pers1 ;
|
||||
whatSg_IP = mkIP "kya" "kis" "kis" Sg Masc ;
|
||||
whatPl_IP = mkIP "kya" "kin" "kin" Pl Masc ;
|
||||
when_IAdv = ss "kb" ;
|
||||
when_Subj = ss "kb" ;
|
||||
where_IAdv = ss "khaN" ;
|
||||
which_IQuant = {s = \\_ => "kwn sy"} ;
|
||||
-- whichPl_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ;
|
||||
-- whichSg_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ;
|
||||
whoSg_IP = mkIP "kwn" "kis" "kis" Sg Masc ;
|
||||
whoPl_IP = mkIP "kwn" "kn" "knhwN" Pl Masc ;
|
||||
why_IAdv = ss "kywN" ;
|
||||
without_Prep = mkPrep ["kE bGyr"] ["kE bGyr"] ;
|
||||
with_Prep = mkPrep ["kE sath-"] ["kE sath-"] ;
|
||||
-- yes_Phr = ss "haN" ;
|
||||
yes_Utt = ss "haN" ;
|
||||
youSg_Pron = personalPN "tm" "tm" "tm" "tmh-ara" Sg Masc Pers2_Casual ;
|
||||
youPl_Pron = personalPN "tm" "tm" "tm" "tmh-ara" Pl Masc Pers2_Casual ;
|
||||
youPol_Pron = personalPN "Ap" "AP" "AP" "Ap ka" Sg Masc Pers2_Respect ;
|
||||
no_Quant = demoPN " kwy nhyN" "kwy nhyN" "kwy nhyN" ;
|
||||
not_Predet = {s="nhyN"} ;
|
||||
if_then_Conj = sd2 "agr" "tw" ** {n = Sg} ;
|
||||
at_least_AdN = mkAdN ["km az km"] ;
|
||||
at_most_AdN = mkAdN ["zyadh sE zyadh"];
|
||||
nothing_NP = MassNP (UseN (ParadigmsHin.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" ;
|
||||
nobody_NP = MassNP (UseN (ParadigmsHin.mkN "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" Masc ));
|
||||
|
||||
as_CAdv = {s = "etna" ; p = "jtna"} ;
|
||||
|
||||
have_V2 = mkV2 (mkV "rakh-na") "" ;
|
||||
|
||||
language_title_Utt = ss "ardw" ;
|
||||
|
||||
}
|
||||
|
||||
concrete StructuralHin of Structural = CatHin **
|
||||
open MorphoHin, ParadigmsHin, Prelude, NounHin,ParamX,CommonHindustani in {
|
||||
|
||||
flags optimize=all ;
|
||||
coding = utf8;
|
||||
|
||||
lin
|
||||
above_Prep = mkPrep ["ke: U:par"] ["ke: U:par"] ;
|
||||
after_Prep = mkPrep ["ke: ba:d"] ["ke: ba:d"] ;
|
||||
all_Predet = ss "tama:m" ;
|
||||
almost_AdA, almost_AdN = mkAdN "taqari:ban" ;
|
||||
although_Subj = ss "Agarci" ;
|
||||
always_AdV = ss "hame:s*a:" ;
|
||||
and_Conj = sd2 [] "O+r" ** {n = Pl} ;
|
||||
because_Subj = ss "kX,yo:n~ki" ;
|
||||
before_Prep = mkPrep ["se: pahale:"] ["se: pahale:"] ;
|
||||
behind_Prep = mkPrep ["ke: pi:c'e:"] ["ke: pi:c'e:"] ;
|
||||
between_Prep = mkPrep ["ke: darmiya:n"] ["ke: darmiya:n"] ;
|
||||
both7and_DConj = sd2 "do:no:m." "O+r" ** {n = Pl} ;
|
||||
but_PConj = ss "le:kin" ;
|
||||
by8agent_Prep = mkPrep "" "" ;
|
||||
by8means_Prep = mkPrep "" "" ;
|
||||
can8know_VV,can_VV = mkV "sakana:" ** { isAux = True} ;
|
||||
during_Prep = mkPrep ["ke: darmiya:n"] ["ke: darmiya:n"] ;
|
||||
either7or_DConj = sd2 "ko:I: E:k" "ya:" ** {n = Sg} ;
|
||||
everybody_NP = MassNP (UseN (ParadigmsHin.mkN "har ko:I:" "har ko:I:" "har ko:I:" "har ko:I:" "har ko:I:" "har ko:I:" Masc ));
|
||||
every_Det = mkDet "har" "har" "har" "har" Sg;
|
||||
everything_NP = MassNP (UseN (ParadigmsHin.mkN "har ci:z" "har ci:z" "har ci:zo:n~" "sab ci:ze:n~" "sab ci:zo:n~" "sab ci:zo:n~" Masc ));
|
||||
everywhere_Adv = mkAdv "har jagah" ;
|
||||
few_Det = mkDet "cam.d" "cam.d" "cam.d" "cam.d" Pl ;
|
||||
first_Ord = {s = "" ; n = Sg} ; --De:PRe:CATe:D
|
||||
for_Prep = mkPrep ["ke: liye:"] ["ke: liye:"] ;
|
||||
from_Prep = mkPrep "se:" "se:" ;
|
||||
he_Pron = personalPN "vah" "Us" "" "Us ka:" "Us ki:" "Us ke:" "Us ki:" Sg Masc Pers3_Distant ;
|
||||
here_Adv = mkAdv "yaha:n~" ;
|
||||
here7to_Adv = mkAdv ["yaha:n~ par"] ;
|
||||
here7from_Adv = mkAdv ["yaha:n~ se:"] ;
|
||||
how_IAdv = ss "ke+se:" ;
|
||||
how8many_IDet = makeIDet "kitane:" "kitani:" Pl ;
|
||||
how8much_IAdv = ss "kitana:" ;
|
||||
if_Subj = ss "Agar" ;
|
||||
in8front_Prep = mkPrep ["ke: sa:mane:"] ["ke: sa:mane:"] ;
|
||||
i_Pron = personalPN "me+m." "muj'" "" "me:ra:" "me:ri:" "me:re:" "me:ri:" Sg Masc Pers1;
|
||||
in_Prep = mkPrep "me:m." "me:m." ;
|
||||
it_Pron = personalPN "yah" "Is" "yah" "Is ka:" "Is ki:" "Us ke:" "Us ki:" Sg Masc Pers3_Near;
|
||||
less_CAdv = {s = "kam" ; p = ""} ;
|
||||
many_Det = mkDet "bahut" "bahut" "bahut" "bahut" Pl ;
|
||||
more_CAdv = {s = "zX,ya:da:" ; p = "se:" } ;
|
||||
most_Predet = ss "sab se: zX,ya:da:" ;
|
||||
much_Det = mkDet "bahut" "bahut" "bahut" "bahut" Sg ;
|
||||
-- must_VV = {
|
||||
-- s = table {
|
||||
-- VVF VInf => ["have to"] ;
|
||||
-- VVF VPres => "must" ;
|
||||
-- VVF VPPart => ["had to"] ;
|
||||
-- VVF VPresPart => ["having to"] ;
|
||||
-- VVF VPast => ["had to"] ; --# notpresent
|
||||
-- VVPastNeg => ["hadn't to"] ; --# notpresent
|
||||
-- VVPresNeg => "mustn't"
|
||||
-- } ;
|
||||
-- isAux = True
|
||||
-- } ;
|
||||
no_Utt = ss "nahi:m." ;
|
||||
on_Prep = mkPrep "par" "par" ;
|
||||
-- one_Quant = demoPN "" ; -- De:PRe:CATe:D
|
||||
only_Predet = ss "sirX,f" ;
|
||||
or_Conj = sd2 [] "ya:" ** {n = Sg} ;
|
||||
otherwise_PConj = ss "nahi:m. to:" ;
|
||||
part_Prep = mkPrep "" "" ;
|
||||
-- please_Voc = ss "" ;
|
||||
possess_Prep = mkPrep "ka:" "ki:" ;
|
||||
quite_Adv = ss "ka:fi:" ;
|
||||
she_Pron = personalPN "vah" "Us" "Us" "Us ka:" "Us ki:" "Us ke:" "Us ki:" Sg Fem Pers3_Distant ; -- chek with prasad about 'Us'
|
||||
so_AdA = ss "to:" ;
|
||||
somebody_NP = MassNP (UseN (ParadigmsHin.mkN "ko:I:" "ko:I:" "ko:I:" "ko:I:" "ko:I:" "ko:I:" Masc ));
|
||||
someSg_Det = mkDet "kuc'" "kuc'" "kuc'" "kuc'" Sg ;
|
||||
somePl_Det = mkDet "kuc'" "kuc'" "kuc'" "kuc'" Pl ;
|
||||
something_NP = MassNP (UseN (ParadigmsHin.mkN ["ko:I: ci:z"] ["ko:I: ci:z"] ["ko:I: ci:z"] ["ko:I: ci:z"] ["ko:I: ci:z"] ["ko:I: ci:z"] Masc ));
|
||||
somewhere_Adv = mkAdv ["kahi:m."] ;
|
||||
that_Quant = demoPN "vah" "Us" "Un" ;
|
||||
that_Subj = ss "ki";
|
||||
there_Adv = mkAdv "vaha:n~" ;
|
||||
there7to_Adv = mkAdv ["vaha:n~ par"] ;
|
||||
there7from_Adv = mkAdv ["vaha:n~ se:"] ;
|
||||
therefore_PConj = ss "Is liye:" ;
|
||||
they_Pron = personalPN "vah" "vah" "vah" "Un ka:" "Un ki:" "Un ke:" "Un ki:" Pl Masc Pers3_Distant ; ----
|
||||
this_Quant = demoPN "yah" "Is" "In";
|
||||
through_Prep = mkPrep ["me:m. se:"] ["me:m. se:"] ;
|
||||
too_AdA = ss "bahut" ;
|
||||
to_Prep = mkPrep "ko:" "ko:" ; -- ** {lock_Prep = <>};
|
||||
under_Prep = mkPrep ["ke: ni:ce:"] ["ke: ni:ce:"] ; -- ** {lock_Prep = <>};
|
||||
very_AdA = ss "bahut" ;
|
||||
want_VV = mkV "ca:hna:" ** { isAux = False} ;
|
||||
we_Pron = personalPN "ham" "ham" "ham" "hama:ra:" "hama:ri:" "hama:re:" "hama:ri:" Pl Masc Pers1 ;
|
||||
whatSg_IP = mkIP "kX,ya:" "kX,ya:" "kX,ya:" Sg Masc ; -- confirm
|
||||
whatPl_IP = mkIP "kX,ya:" "kX,ya:" "kX,ya:" Pl Masc ;
|
||||
when_IAdv = ss "kab" ;
|
||||
when_Subj = ss "kab" ;
|
||||
where_IAdv = ss "kaha:n~" ;
|
||||
which_IQuant = mkIQuant ["ko+n sa:"] ["ko+n se:"] "" ["ko+n si:"] ["ko+n si:"] ""
|
||||
["ko+n se:"] ["ko+n se:"] "" ["ko+n si:"] ["ko+n si:"] "" ; -- need to put right forms Prasad
|
||||
-- whichPl_IDet = makeDet "" ;
|
||||
-- whichSg_IDet = makeDet "";
|
||||
whoSg_IP = mkIP "ko+n" "kis" "kis" Sg Masc ;
|
||||
whoPl_IP = mkIP "ko+n" "kin" "kinho:m." Pl Masc ;
|
||||
why_IAdv = ss "kX,yo:m." ;
|
||||
-- without_Prep = mkPrep ;
|
||||
with_Prep = mkPrep ["ke: sa:t'"] ["ke: sa:t'"] ;
|
||||
-- yes_Phr = ss "???" ;
|
||||
yes_Utt = ss "ha:n~" ;
|
||||
youSg_Pron = personalPN "tu:" "tum" "tum" "tumha:ra:" "tumha:ri:" "tumha:re:" "tumha:ri:" Sg Masc Pers2_Casual ;
|
||||
youPl_Pron = personalPN "tum" "tum" "tum" "tumha:ra:" "tumha:ri:" "tumha:re:" "tumha:ri:" Pl Masc Pers2_Casual ;
|
||||
youPol_Pron = personalPN "A:p" "A:p" "A:p" "A:p ka:" "A:p ki:" "A:p ke:" "A:p ki:" Sg Masc Pers2_Respect ;
|
||||
-- no_Quant = demoPN "ko:I: nahi:m." ;
|
||||
not_Predet = {s="nahi:m."} ;
|
||||
-- if_then_Conj = sd2 "agar to:" ** {n = Sg} ;
|
||||
at_least_AdN = mkAdN ["kam se: kam"] ;
|
||||
at_most_AdN = mkAdN ["zX,ya:da: se: zX,ya:da:"];
|
||||
-- nothing_NP = MassNP (UseN (ParadigmsHin.mkN "kuc' nahi:m." Masc ));
|
||||
except_Prep = mkPrep "ke: siva:y" "ke: siva:y";
|
||||
-- nobody_NP = MassNP (UseN (ParadigmsHin.mkN "ko:I: nahi:m." Masc ));
|
||||
|
||||
as_CAdv = {s = "itna:" ; p = "jitna:"} ;
|
||||
|
||||
-- have_V2 = mkV2 "";
|
||||
|
||||
language_title_Utt = ss "hinX,di:" ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -8,4 +8,6 @@ rf -file=src/IdiomHin.gf | ps -env=quotes -to_devanagari | wf -file=IdiomHin.gf
|
||||
rf -file=src/LexiconHin.gf | ps -env=quotes -to_devanagari | wf -file=LexiconHin.gf
|
||||
rf -file=src/MorphoHin.gf | ps -env=quotes -to_devanagari | wf -file=MorphoHin.gf
|
||||
rf -file=src/StructuralHin.gf | ps -env=quotes -to_devanagari | wf -file=StructuralHin.gf
|
||||
rf -file=src/StringsHin.gf | ps -env=quotes -to_devanagari | wf -file=StringsHin.gf
|
||||
rf -file=src/NumeralHin.gf | ps -env=quotes -to_devanagari | wf -file=NumeralHin.gf
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
incomplete concrete AdjectiveHindustani of Adjective = CatHindustani ** open CommonHindustani,ResHindustani, StringsHindustani, Prelude in {
|
||||
incomplete concrete AdjectiveHindustani of Adjective = CatHindustani ** open CommonHindustani,ResHindustani, Prelude in {
|
||||
|
||||
lin
|
||||
|
||||
@@ -19,8 +19,10 @@ incomplete concrete AdjectiveHindustani of Adjective = CatHindustani ** open Com
|
||||
s = \\n,g,c,d => a.s ! n ! g ! c ! d ++ RefPron ++ sE ;
|
||||
} ;
|
||||
|
||||
SentAP ap sc = {
|
||||
s = \\n,g,c,d => ap.s ! n ! g ! c ! d ++ sc.s ;
|
||||
SentAP ap sc = {
|
||||
s = \\n,g,c,d => case sc.fromVP of {
|
||||
True => sc.s ++ kw ++ ap.s ! n ! g ! c ! d ;
|
||||
False => ap.s ! n ! g ! c ! d ++ sc.s } ;
|
||||
} ;
|
||||
|
||||
AdAP ada ap = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
incomplete concrete AdverbHindustani of Adverb = CatHindustani ** open CommonHindustani, ResHindustani, StringsHindustani, Prelude in {
|
||||
incomplete concrete AdverbHindustani of Adverb = CatHindustani ** open CommonHindustani, ResHindustani, Prelude in {
|
||||
|
||||
lin
|
||||
PositAdvAdj a = {s = \\g => a.s ! Sg ! g ! Obl ! Posit} ;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--concrete CatUrd of Cat = CommonX - [Adv,AdN] ** open ResUrd, Prelude in {
|
||||
incomplete concrete CatHindustani of Cat =
|
||||
CommonX - [Adv,AdN]** open ResHindustani, Prelude, CommonHindustani, (R = ParamX) in {
|
||||
CommonX - [Adv,AdN,SC]** open ResHindustani, Prelude, CommonHindustani, (R = ParamX) in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
@@ -11,6 +11,7 @@ incomplete concrete CatHindustani of Cat =
|
||||
QS = {s : QForm => Str} ;
|
||||
RS = {s : Agr => Str ; c : Case} ; -- c for it clefts
|
||||
SSlash = {s : Str ; c2 : ResHindustani.Compl} ;
|
||||
SC = {s : Str ; fromVP : Bool} ;
|
||||
|
||||
---- Sentence
|
||||
|
||||
|
||||
@@ -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,_ > => "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"
|
||||
};
|
||||
|
||||
-----------------------------------------------
|
||||
-- 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)
|
||||
|
||||
};
|
||||
|
||||
|
||||
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 ++ "wN" ; _ => s ++ "E"};
|
||||
|
||||
-- insertSubj : UPerson -> Str -> Str = \p,s ->
|
||||
-- case p of { Pers1 => s ++ "wN" ; _ => s ++ "E"};
|
||||
|
||||
mkOrd : Str -> Str =
|
||||
\s -> case s of {
|
||||
@@ -311,6 +191,7 @@ resource CommonHindustani = ParamX ** open Prelude,Predef in {
|
||||
"car" => "cwth'a";
|
||||
"ch'" => "ch'Ta";
|
||||
_ => s ++ "waN"
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,35 @@
|
||||
interface DiffHindustani = open CommonHindustani, Prelude in {
|
||||
interface DiffHindustani = open Prelude in {
|
||||
oper
|
||||
|
||||
mkClause : NP -> VPH -> Clause ;
|
||||
mkSClause : Str -> Agr -> VPH -> Clause ;
|
||||
|
||||
np2pronCase : (Case => Str) -> NPCase -> Agr -> Str ;
|
||||
conjThat : Str ; -- = "kh" ;
|
||||
insertSubj : UPerson -> Str -> Str ;
|
||||
|
||||
kwd : Str ;
|
||||
ky : Str ;
|
||||
agr : Str ;
|
||||
awr : Str ;
|
||||
jn : Str ;
|
||||
js : Str ;
|
||||
jw : Str ;
|
||||
kw : Str ;
|
||||
mt : Str ;
|
||||
nE : Str ;
|
||||
nh : Str ;
|
||||
sE : Str ;
|
||||
waN : Str ;
|
||||
comma : Str ;
|
||||
indfArt : Str ;
|
||||
nE : Str ;
|
||||
hE : Str ;
|
||||
|
||||
copula : CTense -> Number -> UPerson -> Gender -> Str ;
|
||||
raha : Gender -> Number -> Str ;
|
||||
cka : Gender -> Number -> Str ;
|
||||
hw : UPerson -> Number -> Str ;
|
||||
hwa : Agr -> Str ;
|
||||
regAdjective : Str -> Adjective ;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
--concrete NounUrd of Noun = CatUrd ** open ResUrd, Prelude in {
|
||||
incomplete concrete NounHindustani of Noun =
|
||||
CatHindustani ** open CommonHindustani, ResHindustani, StringsHindustani, Prelude in {
|
||||
CatHindustani ** open CommonHindustani, ResHindustani, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
@@ -19,7 +19,7 @@ incomplete concrete NounHindustani of Noun =
|
||||
} ;
|
||||
|
||||
PPartNP np v2 = {
|
||||
s = \\c => v2.s ! VF Perf (fromAgr np.a).p (fromAgr np.a).n (fromAgr np.a).g ++ np.s ! c ;
|
||||
s = \\c => v2.s ! VF Perf (fromAgr np.a).p (fromAgr np.a).n (fromAgr np.a).g ++ hwa np.a ++ np.s ! c ;
|
||||
a = np.a
|
||||
} ;
|
||||
|
||||
@@ -133,7 +133,11 @@ incomplete concrete NounHindustani of Noun =
|
||||
-- AdvCN cn ad = {s = \\n,c => cn.s ! n ! c ++ ad.s ; g = cn.g} ; -- changed during WebAlt adver comes before noun like phaRy pr gh-r (house on the hill)
|
||||
AdvCN cn ad = {s = \\n,c => ad.s ! cn.g ++ cn.s ! n ! c ; g = cn.g} ;
|
||||
|
||||
SentCN cn sc = {s = \\n,c => cn.s ! n ! c ++ sc.s ; g = cn.g} ;
|
||||
SentCN cn sc = {s = \\n,c => case sc.fromVP of {
|
||||
True => sc.s ++ ky ++ cn.s ! n ! c ;
|
||||
False => cn.s ! n ! c ++ sc.s } ;
|
||||
g = cn.g ;
|
||||
} ;
|
||||
|
||||
ApposCN cn np = {s = \\n,c => cn.s ! n ! Dir ++ np.s ! NPC c ; g = cn.g} ;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--concrete QuestionUrd of Question = CatUrd ** open ResUrd, StringsHindustani, Prelude in {
|
||||
incomplete concrete QuestionHindustani of Question =
|
||||
CatHindustani ** open CommonHindustani, ResHindustani, StringsHindustani, Prelude in {
|
||||
CatHindustani ** open CommonHindustani, ResHindustani, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
coding = utf8;
|
||||
@@ -24,8 +24,11 @@ incomplete concrete QuestionHindustani of Question =
|
||||
}
|
||||
};
|
||||
QuestSlash ip slash =
|
||||
let ip1 = ip.s ! Dir;
|
||||
ip2 = ip.s ! Obl ++ nE
|
||||
let
|
||||
-- ip1 = ip.s ! Dir;
|
||||
-- ip2 = ip.s ! Obl ++ nE
|
||||
ip1 = ip.s ! Obl ++ kw;
|
||||
ip2 = ip.s ! Obl ++ kw
|
||||
in {
|
||||
s = \\t,p,o => case t of {
|
||||
VPImpPast => ip2 ++ slash.s ! t ! p ! ODir;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--concrete RelativeUrd of Relative = CatUrd ** open ResUrd, StringsHindustani in {
|
||||
incomplete concrete RelativeHindustani of Relative =
|
||||
CatHindustani ** open CommonHindustani, ResHindustani, StringsHindustani, Prelude in {
|
||||
CatHindustani ** open CommonHindustani, ResHindustani, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
coding = utf8;
|
||||
@@ -11,7 +11,7 @@ incomplete concrete RelativeHindustani of Relative =
|
||||
s = \\t,p,o,agr => case <t,giveNumber agr> of {
|
||||
<VPImpPast,Sg> => js ++ cl.s ! t ! p ! o ;
|
||||
<VPImpPast,Pl> => jn ++ cl.s ! t ! p ! o ;
|
||||
<_,_> => "jw" ++ cl.s ! t ! p ! o
|
||||
<_,_> => jw ++ cl.s ! t ! p ! o
|
||||
};
|
||||
c = Dir
|
||||
} ;
|
||||
|
||||
@@ -50,7 +50,7 @@ param
|
||||
eq : Str -> Str -> Bool = \s1,s2-> (pbool2bool (eqStr s1 s2)) ;
|
||||
|
||||
RefPron : Str;
|
||||
RefPron = "Kwd";
|
||||
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 ++ "nE"
|
||||
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 ++ "nE"
|
||||
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 ++ "nE"
|
||||
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 = "Xayd" } ;
|
||||
_ => {fin = (vp.s ! VPTense VPFutr agr).inf ; inf = "Xayd" } }
|
||||
|
||||
};
|
||||
|
||||
|
||||
quest =
|
||||
case ord of
|
||||
{ ODir => [];
|
||||
OQuest => "kya" };
|
||||
na =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "na" };
|
||||
nahim =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "nhyN" };
|
||||
in
|
||||
case vt of {
|
||||
VPSubj => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ na ++ vps.inf ++ vps.fin ++ vp.embComp ;
|
||||
_ => quest ++ np.s ! subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! np.a ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp};
|
||||
|
||||
} ;
|
||||
|
||||
mkSClause : Str -> Agr -> VPH -> Clause =
|
||||
\subj,agr,vp -> {
|
||||
s = \\t,b,ord =>
|
||||
let
|
||||
n = (fromAgr agr).n;
|
||||
p = (fromAgr agr).p;
|
||||
g = (fromAgr agr).g;
|
||||
vps = case t of {
|
||||
VPGenPres => vp.s ! VPTense VPPres agr ;
|
||||
VPImpPast => vp.s ! VPTense VPPast agr ;
|
||||
VPFut => vp.s ! VPTense VPFutr agr ;
|
||||
VPContPres => {fin = copula CPresent n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ;
|
||||
VPContPast => {fin = copula CPast n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ;
|
||||
VPContFut => {fin = copula CFuture n p g ; inf = (vp.s ! VPStem).inf ++ raha g n ++ hw p n } ;
|
||||
VPPerfPres => {fin = copula CPresent n p g ; inf = (vp.s ! VPStem).inf ++ cka g n } ;
|
||||
VPPerfPast => {fin = copula CPast n p g ; inf = (vp.s ! VPStem).inf ++ cka g n } ;
|
||||
VPPerfFut => {fin = copula CFuture n p g ; inf = (vp.s ! VPStem).inf ++ cka g n ++ hw p n } ;
|
||||
VPPerfPresCont => {fin = copula CPresent n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ;
|
||||
VPPerfPastCont => {fin = copula CPast n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ;
|
||||
VPPerfFutCont => {fin = copula CFuture n p g ; inf = (vp.s ! VPStem).inf ++ raha g n ++ hw p n } ;
|
||||
VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "Xayd" }
|
||||
|
||||
};
|
||||
|
||||
quest =
|
||||
case ord of
|
||||
{ ODir => [];
|
||||
OQuest => "kya" };
|
||||
na =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "na" };
|
||||
nahim =
|
||||
case b of
|
||||
{ Pos => [];
|
||||
Neg => "nhyN" };
|
||||
in
|
||||
case t of {
|
||||
VPSubj => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ na ++ vps.inf ++ vps.fin ++ vp.embComp;
|
||||
_ => quest ++ subj ++ vp.obj.s ++ vp.ad ++ vp.comp ! agr ++ nahim ++ vps.inf ++ vps.fin ++ vp.embComp};
|
||||
} ;
|
||||
-}
|
||||
-- insertSubj : UPerson -> Str -> Str = \p,s ->
|
||||
-- case p of { Pers1 => s ++ "wN" ; _ => s ++ "E"};
|
||||
|
||||
insertObj : (Agr => Str) -> VPH -> VPH = \obj1,vp -> {
|
||||
s = vp.s ;
|
||||
@@ -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 ++ "ky" ; True => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ (vp.s ! VPImp).fin ++ "ky"};
|
||||
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 = "kh" ;
|
||||
-- conjThat : Str = "kh" ;
|
||||
|
||||
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} ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--concrete SentenceUrd of Sentence = CatUrd ** open Prelude, StringsHindustani, ResUrd in {
|
||||
incomplete concrete SentenceHindustani of Sentence =
|
||||
CatHindustani ** open CommonHindustani, ResHindustani, Prelude, StringsHindustani in {
|
||||
CatHindustani ** open CommonHindustani, ResHindustani, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
coding = utf8;
|
||||
@@ -40,9 +40,10 @@ incomplete concrete SentenceHindustani of Sentence =
|
||||
(insertObj2 (conjThat ++ slash.s) (predV vs)) **
|
||||
{c2 = slash.c2} ;
|
||||
|
||||
EmbedS s = {s = conjThat ++ s.s} ;
|
||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||
EmbedVP vp = {s = infVP False vp defaultAgr} ; --- agr
|
||||
EmbedS s = {s = conjThat ++ s.s ; fromVP = False} ;
|
||||
EmbedQS qs = {s = conjThat ++ qs.s ! QIndir ; fromVP = False} ;
|
||||
-- EmbedVP vp = {s = infVP False vp defaultAgr ; fromVP = True} ; --- agr
|
||||
EmbedVP vp = {s = (vp.s ! VPInf).fin ; fromVP = True} ;
|
||||
|
||||
UseCl temp p cl =
|
||||
{ s = case <temp.t,temp.a> of {
|
||||
@@ -98,7 +99,6 @@ incomplete concrete SentenceHindustani of Sentence =
|
||||
} ;
|
||||
|
||||
AdvS a s = {s = a.s ! Masc ++ s.s} ;
|
||||
ExtAdvS a s = {s = a.s ! Masc ++ "," ++ s.s} ;
|
||||
|
||||
RelS s r = {s = s.s ++ r.s ! agrP3 Masc Sg} ;
|
||||
SSubjS s sj s = { s = s.s ++ sj.s ++ s.s};
|
||||
|
||||
@@ -10,7 +10,7 @@ oper
|
||||
jw = "jw" ;
|
||||
kw = "kw" ;
|
||||
mt = "mt" ;
|
||||
nE = "nE" ;
|
||||
-- nE = "nE" ;
|
||||
nh = "nh" ;
|
||||
sE = "sE" ;
|
||||
waN = "waN" ;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
--concrete SymbolUrd of Symbol = CatUrd ** open Prelude, ResUrd, StringsHindustani in {
|
||||
incomplete concrete SymbolHindustani of Symbol =
|
||||
CatHindustani ** open Prelude, ResHindustani, StringsHindustani, CommonHindustani in {
|
||||
CatHindustani ** open Prelude, ResHindustani, CommonHindustani in {
|
||||
|
||||
lin
|
||||
-- SymbPN i = {s = \\_ => i.s ; g = Masc} ;
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
--concrete VerbUrd of Verb = CatUrd ** open ResUrd in {
|
||||
incomplete concrete VerbHindustani of Verb = CatHindustani ** open CommonHindustani, ResHindustani, StringsHindustani in {
|
||||
incomplete concrete VerbHindustani of Verb = CatHindustani ** open CommonHindustani, ResHindustani in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
UseV v = predV v ;
|
||||
SlashV2a v = predV v ** {c2 = {s = v.c2.s ; c = VTrans}} ;
|
||||
SlashV2a v = predV v ** {c2 = {s = v.c2.s ; c = VTrans}} ;
|
||||
Slash2V3 v np =
|
||||
insertObjc (\\_ => np.s ! NPObj ++ v.c3 ) (predV v ** {c2 = {s = v.c2 ; c = VTrans}}) ;
|
||||
insertObjc (\\_ => np.s ! NPC Dir ++ v.c3 ) (predV v ** {c2 = {s = v.c2 ; c = VTransPost}}) ; -- changed form NPObj
|
||||
Slash3V3 v np =
|
||||
insertObjc (\\_ => np.s ! NPC Obl ++ v.c2) (predV v ** {c2 = {s = v.c3 ; c = VTrans}}) ;
|
||||
ComplVV v vp = insertTrans (insertVV (infVV v.isAux vp) (predV v) vp.embComp ) VTransPost;
|
||||
ComplVS v s = insertTrans (insertObj2 (conjThat ++ s.s) (predV v)) VTransPost ;
|
||||
insertObjc (\\_ => np.s ! NPC Obl ++ v.c2) (predV v ** {c2 = {s = v.c3 ; c = VTransPost}}) ;
|
||||
ComplVV v vp = insertTrans (insertVV (infVV v.isAux vp) (predV v) vp.embComp ) VTrans; -- changed from VTransPost
|
||||
ComplVS v s = insertTrans (insertObj2 (conjThat ++ s.s) (predV v)) VTrans ; -- changed from VTransPost
|
||||
ComplVQ v q = insertObj2 (conjThat ++ q.s ! QIndir) (predV v) ;
|
||||
ComplVA v ap = insertObj (\\a => ap.s ! giveNumber a ! giveGender a ! Dir ! Posit) (predV v) ;
|
||||
SlashV2V v vp = insertVV (infV2V v.isAux vp) (predV v) vp.embComp **{c2 = {s = sE ; c = VTransPost}} ;
|
||||
SlashV2S v s = insertObjc2 (conjThat ++ s.s) (predV v ** {c2 = {s = kw ; c = VTransPost}}) ;
|
||||
SlashV2Q v q = insertObjc2 (conjThat ++ q.s ! QIndir) (predV v ** {c2 = {s = sE ; c = VTransPost}}) ;
|
||||
SlashV2A v ap = insertObjc (\\a => ap.s ! giveNumber a ! giveGender a ! Dir ! Posit) (predV v ** {c2 = {s = kw ; c = VTransPost}}) ; ----
|
||||
SlashV2V v vp = insertVV (infV2V v.isAux vp) (predV v) vp.embComp **{c2 = {s = sE ; c = VTrans}} ; -- changed from VTransPost
|
||||
SlashV2S v s = insertObjc2 (conjThat ++ s.s) (predV v ** {c2 = {s = kw ; c = VTrans}}) ; -- changed from VTransPost
|
||||
SlashV2Q v q = insertObjc2 (conjThat ++ q.s ! QIndir) (predV v ** {c2 = {s = sE ; c = VTrans}}) ; -- changed from VTransPost
|
||||
SlashV2A v ap = insertObjc (\\a => ap.s ! giveNumber a ! giveGender a ! Dir ! Posit) (predV v ** {c2 = {s = kw ; c = VTrans}}) ; ----
|
||||
ComplSlash vp np = insertObject np vp ;
|
||||
SlashVV vv vp =
|
||||
insertEmbCompl (insertObj (\\a => infVP vv.isAux vp a) (predV vv)) vp.embComp **
|
||||
|
||||
@@ -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) ;
|
||||
|
||||
@@ -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 ++ "واں"
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
** {
|
||||
|
||||
|
||||
@@ -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 ["غیریقینی"] ;
|
||||
|
||||
@@ -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} ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ oper
|
||||
jw = "جو" ;
|
||||
kw = "كو" ;
|
||||
mt = "مت" ;
|
||||
nE = "نے" ;
|
||||
-- nE = "نے" ;
|
||||
nh = "نہ" ;
|
||||
sE = "سے" ;
|
||||
waN = "واں" ;
|
||||
|
||||
@@ -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 "لیكن" ;
|
||||
|
||||
@@ -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 = []} ;
|
||||
|
||||
@@ -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)
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -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"] ;
|
||||
|
||||
@@ -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"} ;
|
||||
|
||||
@@ -123,15 +123,16 @@ transDevanagari :: Transliteration
|
||||
transDevanagari =
|
||||
(mkTransliteration "Devanagari"
|
||||
allTransUrduHindi allCodes){invisible_chars = ["a"]} where
|
||||
allCodes = [0x0900 .. 0x095f]
|
||||
allCodes = [0x0900 .. 0x095f] ++ [0x0966 .. 0x096f]
|
||||
|
||||
allTransUrduHindi = words $
|
||||
"- M N - - a- A- i- I- u- U- R- - - - e- " ++
|
||||
"E- - - o- O- k K g G N: c C j J n: t. " ++
|
||||
"T. d. D. n. t T d D n - p P b B m y " ++
|
||||
"r - l - - v S s. s h - - r: - A i " ++
|
||||
"I u U R - - - e E o O - - - - - " ++
|
||||
"- - - - - - - - - - - z r. - - - "
|
||||
"- n~ m. h. - A A: I I: U U: r.- l.- - - E: " ++
|
||||
"E+ - - O: O+ k k' g g' n- c c' j j' n* T " ++
|
||||
"T' D D' N t t' d d' n - p p' b b' m y " ++
|
||||
"r - l L - v s* S s h - - X~ - a: i " ++
|
||||
"i: u u: r. l. - - e: e+ - - o: o+ X, - - " ++
|
||||
"- - - - - - - - q x g. z R R' f - " ++
|
||||
"N0 N1 N2 N3 N4 N5 N6 N7 N8 N9 "
|
||||
|
||||
|
||||
transUrdu :: Transliteration
|
||||
@@ -150,7 +151,7 @@ transUrdu =
|
||||
transSindhi :: Transliteration
|
||||
transSindhi =
|
||||
(mkTransliteration "Sindhi" allTrans allCodes) where
|
||||
allCodes = [0x0626 .. 0x062f] ++ [0x0630 .. 0x063a] ++ [0x0641 .. 0x0648] ++
|
||||
allCodes = [0x062e] ++ [0x0627 .. 0x062f] ++ [0x0630 .. 0x063a] ++ [0x0641 .. 0x0648] ++
|
||||
[0x067a,0x067b,0x067d,0x067e,0x067f] ++ [0x0680 .. 0x068f] ++
|
||||
[0x0699,0x0918,0x06a6,0x061d,0x06a9,0x06af,0x06b3,0x06bb,0x06be,0x06f6,0x06cc,0x06b1, 0x06aa, 0x06fd, 0x06fe] ++
|
||||
[0x06f0 .. 0x06f9] ++ [0x061f,0x06D4]
|
||||
|
||||
Reference in New Issue
Block a user