mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 19:42:50 -06:00
update in Urdu
This commit is contained in:
@@ -7,29 +7,24 @@ concrete AdjectiveUrd of Adjective = CatUrd ** open ResUrd, Prelude in {
|
|||||||
|
|
||||||
ComparA a np = {
|
ComparA a np = {
|
||||||
s = \\n,g,c,d => np.s ! NPC Obl ++ "sE" ++ a.s ! n ! g ! c ! d ;
|
s = \\n,g,c,d => np.s ! NPC Obl ++ "sE" ++ a.s ! n ! g ! c ! d ;
|
||||||
-- isPre = False
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
---- $SuperlA$ belongs to determiner syntax in $Noun$.
|
---- $SuperlA$ belongs to determiner syntax in $Noun$.
|
||||||
|
|
||||||
ComplA2 a np = {
|
ComplA2 a np = {
|
||||||
s = \\n,g,c,d => np.s ! NPC Obl ++ a.c2 ++ a.s ! n ! g ! c ! d ;
|
s = \\n,g,c,d => np.s ! NPC Obl ++ a.c2 ++ a.s ! n ! g ! c ! d ;
|
||||||
-- isPre = False
|
} ;
|
||||||
} ;
|
|
||||||
|
|
||||||
-- ReflA2 a = {
|
ReflA2 a = {
|
||||||
-- s = \\n,g,c,d => a.s ! n ! g ! c ! d ++ reflPron ! ag ;
|
s = \\n,g,c,d => a.s ! n ! g ! c ! d ++ RefPron ++ "sE" ;
|
||||||
-- isPre = False
|
} ;
|
||||||
-- } ;
|
|
||||||
|
|
||||||
SentAP ap sc = {
|
SentAP ap sc = {
|
||||||
s = \\n,g,c,d => ap.s ! n ! g ! c ! d ++ sc.s ;
|
s = \\n,g,c,d => ap.s ! n ! g ! c ! d ++ sc.s ;
|
||||||
-- isPre = False
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdAP ada ap = {
|
AdAP ada ap = {
|
||||||
s = \\n,g,c,d => ada.s ++ ap.s ! n ! g ! c ! d ;
|
s = \\n,g,c,d => ada.s ++ ap.s ! n ! g ! c ! d ;
|
||||||
-- isPre = ap.isPre
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseA2 a = a ;
|
UseA2 a = a ;
|
||||||
@@ -37,5 +32,7 @@ concrete AdjectiveUrd of Adjective = CatUrd ** open ResUrd, Prelude in {
|
|||||||
CAdvAP cadv ap np = {
|
CAdvAP cadv ap np = {
|
||||||
s = \\n,g,c,d => cadv.s ++ ap.s ! n ! g ! c ! d ++ cadv.p ++ np.s ! NPC Dir ;
|
s = \\n,g,c,d => cadv.s ++ ap.s ! n ! g ! c ! d ++ cadv.p ++ np.s ! NPC Dir ;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
AdjOrd ord = { s = \\_,_,_,_ => ord.s ; };
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ concrete AdverbUrd of Adverb = CatUrd ** open ResUrd, Prelude in {
|
|||||||
s = cadv.p ++ cadv.s ++ a.s ! Sg ! Masc ! Obl ! Posit ++ s.s;
|
s = cadv.p ++ cadv.s ++ a.s ! Sg ! Masc ! Obl ! Posit ++ s.s;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
PrepNP prep np = {s = np.s ! NPObj ++ prep.s ! PP (giveNumber np.a) (giveGender np.a) } ;
|
PrepNP prep np = {s = np.s ! NPObj ++ prep.s } ;
|
||||||
|
|
||||||
AdAdv ada adv = { s = ada.s ++ adv.s} ;
|
AdAdv ada adv = { s = ada.s ++ adv.s} ;
|
||||||
|
|
||||||
|
|||||||
@@ -7,28 +7,21 @@ concrete CatUrd of Cat = CommonX ** open ResUrd, Prelude in {
|
|||||||
|
|
||||||
S = {s : Str} ;
|
S = {s : Str} ;
|
||||||
QS = {s : QForm => Str} ;
|
QS = {s : QForm => Str} ;
|
||||||
-- RS = { s: Str} ;
|
|
||||||
RS = {s : Agr => Str ; c : Case} ; -- c for it clefts
|
RS = {s : Agr => Str ; c : Case} ; -- c for it clefts
|
||||||
-- SSlash = {s : Str ; c2 : Str} ;
|
SSlash = {s : Str ; c2 : ResUrd.Compl} ;
|
||||||
|
|
||||||
---- Sentence
|
---- Sentence
|
||||||
|
|
||||||
-- Cl = Str;
|
|
||||||
Cl = ResUrd.Clause ;
|
Cl = ResUrd.Clause ;
|
||||||
ClSlash = {
|
ClSlash = {
|
||||||
s : ResUrd.VPHTense => Polarity => Order => Str ;
|
s : ResUrd.VPHTense => Polarity => Order => Str ;
|
||||||
-- s : ResUrd.Tense => Anteriority => CPolarity => Order => Str ;
|
|
||||||
c2 : ResUrd.Compl
|
c2 : ResUrd.Compl
|
||||||
-- c2 : Str
|
|
||||||
} ;
|
} ;
|
||||||
Imp = {s : CPolarity => ImpForm => Str} ;
|
Imp = {s : CPolarity => ImpForm => Str} ;
|
||||||
|
|
||||||
---- Question
|
---- Question
|
||||||
QCl = {s : ResUrd.VPHTense => Polarity => QForm => Str} ;
|
QCl = {s : ResUrd.VPHTense => Polarity => QForm => Str} ;
|
||||||
-- QCl = {s : ResUrd.Tense => Anteriority => CPolarity => QForm => Str} ;
|
|
||||||
IP = {s: Case => Str ; g : Gender ; n : Number};
|
IP = {s: Case => Str ; g : Gender ; n : Number};
|
||||||
-- IP = {s : Number => Case => Str} ;
|
|
||||||
-- IComp = {s : Str} ;
|
|
||||||
IDet = {s :Gender => Str ; n : Number} ;
|
IDet = {s :Gender => Str ; n : Number} ;
|
||||||
IQuant = {s : Number => Str} ;
|
IQuant = {s : Number => Str} ;
|
||||||
|
|
||||||
@@ -39,7 +32,6 @@ concrete CatUrd of Cat = CommonX ** open ResUrd, Prelude in {
|
|||||||
c : Case
|
c : Case
|
||||||
} ;
|
} ;
|
||||||
RP = {s: Number => Case => Str ; a:RAgr};
|
RP = {s: Number => Case => Str ; a:RAgr};
|
||||||
-- RP = {s : RCase => Str ; a : RAgr} ;
|
|
||||||
|
|
||||||
---- Verb
|
---- Verb
|
||||||
|
|
||||||
@@ -50,28 +42,24 @@ concrete CatUrd of Cat = CommonX ** open ResUrd, Prelude in {
|
|||||||
---- Adjective
|
---- Adjective
|
||||||
|
|
||||||
AP = ResUrd.Adjective ;
|
AP = ResUrd.Adjective ;
|
||||||
-- AP = {s: Number => Gender => Case = Str};
|
|
||||||
---- Noun
|
---- Noun
|
||||||
|
|
||||||
CN = ResUrd.Noun ;
|
CN = ResUrd.Noun ;
|
||||||
NP = ResUrd.NP ;
|
NP = ResUrd.NP ;
|
||||||
Pron = {s : PersPronForm => Str; a : Agr} ;
|
Pron = {s : Case => Str ; ps : Str ; a : Agr};
|
||||||
|
Det = ResUrd.Determiner ;
|
||||||
Det = {s:Determiner => Str ; n : Number};
|
Predet = {s : Str} ;
|
||||||
|
|
||||||
|
|
||||||
Predet, Ord = {s : Str} ;
|
|
||||||
-- Num = Str;
|
|
||||||
Num = {s : Str ; n : Number} ;
|
Num = {s : Str ; n : Number} ;
|
||||||
Card = {s : Str; n : Number} ;
|
Card = {s : Str; n : Number} ;
|
||||||
Quant = {s:DemPronForm => Str ; a : Agr};
|
Ord = {s : Str; n : Number} ;
|
||||||
-- Quant = {s : Number => Gender => Case => Str} ;
|
Quant = {s:Number => Gender => Case => Str ; a:Agr};
|
||||||
Art = {s : Str} ;
|
Art = {s : Str} ;
|
||||||
|
|
||||||
---- Numeral
|
---- Numeral
|
||||||
|
|
||||||
Numeral = {s : CardOrd => Str ; n : Number} ;
|
Numeral = {s : CardOrd => Str ; n : Number} ;
|
||||||
-- Digits = {s : CardOrd => Str ; n : Number ; tail : DTail} ;
|
Digits = {s : CardOrd => Str ; n : Number } ;
|
||||||
|
|
||||||
---- Structural
|
---- Structural
|
||||||
|
|
||||||
@@ -79,24 +67,19 @@ concrete CatUrd of Cat = CommonX ** open ResUrd, Prelude in {
|
|||||||
-----b Conj = {s : Str ; n : Number} ;
|
-----b Conj = {s : Str ; n : Number} ;
|
||||||
-----b DConj = {s1,s2 : Str ; n : Number} ;
|
-----b DConj = {s1,s2 : Str ; n : Number} ;
|
||||||
Subj = {s : Str} ;
|
Subj = {s : Str} ;
|
||||||
Prep = {s : Proposition => Str ; n : Number} ;
|
Prep = ResUrd.Preposition;
|
||||||
|
|
||||||
---- Open lexical classes, e.g. Lexicon
|
---- Open lexical classes, e.g. Lexicon
|
||||||
|
|
||||||
V, VS, VQ, VA = ResUrd.Verb ; -- = {s : VForm => Str} ;
|
V, VS, VQ, VA = ResUrd.Verb ; -- = {s : VForm => Str} ;
|
||||||
V2, V2A, V2Q, V2S = ResUrd.Verb ** {c2 : Compl} ;
|
V2, V2A, V2Q, V2S = ResUrd.Verb ** {c2 : Compl} ;
|
||||||
-- V2, V2A, V2Q, V2S = ResUrd.Verb; -- ** {c2 : Str} ;
|
|
||||||
V3 = ResUrd.Verb ** {c2, c3 : Str} ;
|
V3 = ResUrd.Verb ** {c2, c3 : Str} ;
|
||||||
VV = ResUrd.Verb ** { isAux : Bool} ;
|
VV = ResUrd.Verb ** { isAux : Bool} ;
|
||||||
-- VV = {s : VVForm => Str ; isAux : Bool} ;
|
|
||||||
V2V = ResUrd.Verb ** {c1 : Str ; c2 : Str ; isAux : Bool} ;
|
V2V = ResUrd.Verb ** {c1 : Str ; c2 : Str ; isAux : Bool} ;
|
||||||
|
|
||||||
A = ResUrd.Adjective ; --- {s : Gender => Number => Case => Str} ;
|
A = ResUrd.Adjective ; --- {s : Gender => Number => Case => Str} ;
|
||||||
A2 = {s : Number => Gender => Case => Degree => Str ; c2 : Str} ;
|
A2 = {s : Number => Gender => Case => Degree => Str ; c2 : Str} ;
|
||||||
|
|
||||||
N = {s : Number => Case => Str ; g : Gender} ;
|
N = {s : Number => Case => Str ; g : Gender} ;
|
||||||
N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Proposition => Str} ;
|
N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Str ; c3 : Str } ;
|
||||||
N3 = {s : Number => Case => Str ; g : Gender} ** {c2 : Proposition => Str ; c3 : Str} ;
|
N3 = {s : Number => Case => Str ; g : Gender} ** {c2 : Str ; c3 : Str ; c4 : Str} ;
|
||||||
PN = {s : Case => Str ; g : Gender} ;
|
PN = {s : Case => Str ; g : Gender} ;
|
||||||
--
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,9 +17,8 @@ concrete ConjunctionUrd of Conjunction =
|
|||||||
a = conjAgr (agrP3 Masc conj.n) ss.a
|
a = conjAgr (agrP3 Masc conj.n) ss.a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ConjAP conj ss = conjunctDistrTable4 Number Gender Case Degree conj ss ; -- ** {
|
ConjAP conj ss = conjunctDistrTable4 Number Gender Case Degree conj ss ;
|
||||||
-- isPre = ss.isPre
|
ConjRS conj rs = conjunctDistrTable Agr conj rs ** { c = rs.c};
|
||||||
-- } ;
|
|
||||||
|
|
||||||
---- These fun's are generated from the list cat's.
|
---- These fun's are generated from the list cat's.
|
||||||
|
|
||||||
@@ -28,7 +27,9 @@ concrete ConjunctionUrd of Conjunction =
|
|||||||
BaseAdv = twoSS ;
|
BaseAdv = twoSS ;
|
||||||
ConsAdv = consrSS comma ;
|
ConsAdv = consrSS comma ;
|
||||||
BaseNP x y = twoTable NPCase x y ** {a = conjAgr x.a y.a} ;
|
BaseNP x y = twoTable NPCase x y ** {a = conjAgr x.a y.a} ;
|
||||||
|
BaseRS x y = twoTable Agr x y ** {c = x.c};
|
||||||
ConsNP xs x = consrTable NPCase comma xs x ** {a = conjAgr xs.a x.a} ;
|
ConsNP xs x = consrTable NPCase comma xs x ** {a = conjAgr xs.a x.a} ;
|
||||||
|
ConsRS xs x = consrTable Agr comma xs x ** { c = xs.c};
|
||||||
BaseAP x y = twoTable4 Number Gender Case Degree x y ; -- ** {isPre = andB x.isPre y.isPre} ;
|
BaseAP x y = twoTable4 Number Gender Case Degree x y ; -- ** {isPre = andB x.isPre y.isPre} ;
|
||||||
ConsAP xs x = consrTable4 Number Gender Case Degree comma xs x ;-- ** {isPre = andB xs.isPre x.isPre} ;
|
ConsAP xs x = consrTable4 Number Gender Case Degree comma xs x ;-- ** {isPre = andB xs.isPre x.isPre} ;
|
||||||
|
|
||||||
@@ -37,5 +38,6 @@ concrete ConjunctionUrd of Conjunction =
|
|||||||
[Adv] = {s1,s2 : Str} ;
|
[Adv] = {s1,s2 : Str} ;
|
||||||
[NP] = {s1,s2 : NPCase => Str ; a : Agr} ;
|
[NP] = {s1,s2 : NPCase => Str ; a : Agr} ;
|
||||||
[AP] = {s1,s2 : Number => Gender => Case => Degree => Str} ;
|
[AP] = {s1,s2 : Number => Gender => Case => Degree => Str} ;
|
||||||
|
[RS] = {s1,s2 : Agr => Str ; c : Case};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
concrete IdiomUrd of Idiom = CatUrd ** open Prelude,Predef, ResUrd in {
|
concrete IdiomUrd of Idiom = CatUrd ** open Prelude,Predef, ResUrd in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
flags coding = utf8;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
ImpersCl vp = mkSClause " " (agrP3 Masc Sg) vp ;
|
ImpersCl vp = mkSClause " " (agrP3 Masc Sg) vp ;
|
||||||
@@ -11,19 +12,12 @@ concrete IdiomUrd of Idiom = CatUrd ** open Prelude,Predef, ResUrd in {
|
|||||||
in
|
in
|
||||||
{s = \\t,p,o => cl.s ! t ! p ! o ++ rs.s ! np.a };
|
{s = \\t,p,o => cl.s ! t ! p ! o ++ rs.s ! np.a };
|
||||||
|
|
||||||
-- (insertObj (\\_ => rs.s ! np.a ++ ",") (predAux auxBe));
|
|
||||||
-- (insertObj (\\_ => np.s ! NPC rs.c) (predAux auxBe))) ;
|
|
||||||
|
|
||||||
CleftAdv ad ss = { s = \\t,b,o => ad.s ++ ss.s};
|
CleftAdv ad ss = { s = \\t,b,o => ad.s ++ ss.s};
|
||||||
|
|
||||||
-- CleftAdv ad s = mkClause ad.s (agrP3 Masc Sg)
|
|
||||||
-- (insertObj (\\_ => optStr conjThat ++ s.s)
|
|
||||||
-- (insertObj (\\_ => ad.s) (predAux auxBe))) ;
|
|
||||||
--
|
|
||||||
ExistNP np =
|
ExistNP np =
|
||||||
mkSClause "whaN" (agrP3 (fromAgr np.a).g (fromAgr np.a).n)
|
mkSClause "whaN" (agrP3 (fromAgr np.a).g (fromAgr np.a).n)
|
||||||
(insertObj (\\_ => np.s ! NPC Obl) (predAux auxBe)) ;
|
(insertObj (\\_ => np.s ! NPC Obl) (predAux auxBe)) ;
|
||||||
--
|
|
||||||
ExistIP ip =
|
ExistIP ip =
|
||||||
let cl = mkSClause ("whaN" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe);
|
let cl = mkSClause ("whaN" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe);
|
||||||
in {
|
in {
|
||||||
@@ -32,15 +26,13 @@ concrete IdiomUrd of Idiom = CatUrd ** open Prelude,Predef, ResUrd in {
|
|||||||
QIndir => cl.s ! t! p ! ODir
|
QIndir => cl.s ! t! p ! ODir
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
-- mkQuestion (ss (ip.s ! Nom))
|
|
||||||
-- (mkClause "there" (agrP3 ip.n) (predAux auxBe)) ;
|
ProgrVP vp = insertObj (\\a => vp.obj.s ++ vp.ad ++ vp.comp ! a ++ (vp.s ! VPStem).inf ++ raha (fromAgr a).g (fromAgr a).n ) (predAux auxBe) ;
|
||||||
--
|
|
||||||
-- ProgrVP vp = insertObj (\\a => vp.ad ++ vp.prp ++ vp.s2 ! a) (predAux auxBe) ;
|
|
||||||
--
|
ImpPl1 vp = {s = "Aw" ++ infVP True vp (agrP1 Masc Pl)} ;
|
||||||
-- ImpPl1 vp = {s = "Aw" ++ infVP True vp (agrP1 Masc Pl)} ;
|
ImpP3 np vp = {s = np.s!NPC Dir ++ "kw" ++ (vp.s ! VPImp ).inf ++ "dw"};
|
||||||
-- ImpPl1 vp = {s = "Aw" ++ (vp.s ! VPTense VPFutr (Ag Masc Pl Pers3_Near)).inf2} ;
|
|
||||||
-- ImpP3 np vp = {s = np.s!NPC Dir ++ "kw" ++ (vp.s ! VPImp ).inf2 ++ "dw"};
|
|
||||||
--
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ concrete LexiconUrd of Lexicon = CatUrd **
|
|||||||
|
|
||||||
flags
|
flags
|
||||||
optimize=values ;
|
optimize=values ;
|
||||||
|
coding = utf8;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
airplane_N = mkN "jhaz" ;
|
airplane_N = mkN "jhaz" ;
|
||||||
@@ -20,22 +21,21 @@ concrete LexiconUrd of Lexicon = CatUrd **
|
|||||||
beautiful_A = mkA "KwbSwrt" ;
|
beautiful_A = mkA "KwbSwrt" ;
|
||||||
become_VA = mkV "bnna";
|
become_VA = mkV "bnna";
|
||||||
beer_N = mkN "beer" ;
|
beer_N = mkN "beer" ;
|
||||||
beg_V2V = mkV2V (mkV "mangna") "sE" "kh" False;
|
beg_V2V = mkV2V (compoundV "altja" (mkV "krna")) "sE" "kh" False;
|
||||||
big_A = mkA "bRa" ;
|
big_A = mkA "bRa" ;
|
||||||
bike_N = mkN "saycl" feminine ;
|
bike_N = mkN "saycl" feminine ;
|
||||||
bird_N = mkN "prndh" ;
|
bird_N = mkN "prndh" ;
|
||||||
black_A = mkA "kala" ;
|
black_A = mkA "kala" ;
|
||||||
-- black_A = mkA "kala" ;
|
|
||||||
blue_A = mkA "nyla" ;
|
blue_A = mkA "nyla" ;
|
||||||
boat_N = mkN "kXty" ;
|
boat_N = mkN "kXty" ;
|
||||||
book_N = mkN "ktab" feminine ;
|
book_N = mkN "ktab" feminine ;
|
||||||
-- boot_N = mkN "boot" ;
|
boot_N = mkN "jwta" ;
|
||||||
-- boss_N = mkN human (mkN "boss") ;
|
boss_N = mkN "Sahb" ;
|
||||||
boy_N = mkN "lRka" ;
|
boy_N = mkN "lRka" ;
|
||||||
bread_N = mkN "rwty" ;
|
bread_N = mkN "rwty" ;
|
||||||
break_V2 = mkV2 (mkV "twRna") ;
|
break_V2 = mkV2 (mkV "twRna") ;
|
||||||
broad_A = mkA "kh-la" ;
|
broad_A = mkA "kh-la" ;
|
||||||
-- brother_N2 = mkN2 (mkN "bh-ay") (mkPrep "ka") ; --not correct
|
brother_N2 = mkN2 (mkN "bh-ay") (mkPrep "ka") "kE" ; --not correct
|
||||||
brown_A = mkA "nswary" ;
|
brown_A = mkA "nswary" ;
|
||||||
butter_N = mkN "mkh-n" ;
|
butter_N = mkN "mkh-n" ;
|
||||||
buy_V2 = mkV2 (mkV "Krydna");
|
buy_V2 = mkV2 (mkV "Krydna");
|
||||||
@@ -44,36 +44,35 @@ concrete LexiconUrd of Lexicon = CatUrd **
|
|||||||
car_N = mkN "gaRy" ;
|
car_N = mkN "gaRy" ;
|
||||||
carpet_N = mkN "tpay^y" ;
|
carpet_N = mkN "tpay^y" ;
|
||||||
cat_N = mkN "bly" ;
|
cat_N = mkN "bly" ;
|
||||||
-- ceiling_N = mkN "ceiling" ;
|
ceiling_N = mkN "ch-t" feminine ;
|
||||||
chair_N = mkN "krsy" ;
|
chair_N = mkN "krsy" ;
|
||||||
cheese_N = mkN "pnyr" feminine ;
|
cheese_N = mkN "pnyr" feminine ;
|
||||||
child_N = mkN "bch" ;
|
child_N = mkN "bch" ;
|
||||||
-- church_N = mkN "church" ;
|
church_N = mkCmpdNoun "grja" (mkN "gh-r") ;
|
||||||
city_N = mkN "Xhr" ;
|
city_N = mkN "Xhr" ;
|
||||||
clean_A = mkA "Saf" ;
|
clean_A = mkA "Saf" ;
|
||||||
clever_A = mkA "hwXyar" ;
|
clever_A = mkA "hwXyar" ;
|
||||||
|
|
||||||
close_V2 = mkV2 (compoundV "bnd" do_V2);
|
close_V2 = mkV2 (compoundV "bnd" do_V2);
|
||||||
coat_N = mkN "kwT" ;
|
coat_N = mkN "kwT" ;
|
||||||
cold_A = mkA "Th-nDa" ;
|
cold_A = mkA "Th-nDa" ;
|
||||||
come_V = mkV "Ana" ;
|
come_V = mkV "Ana" ;
|
||||||
computer_N = mkN "kmpywTr" ;
|
computer_N = mkN "kmpywTr" ;
|
||||||
country_N = mkN "mlk" ;
|
country_N = mkN "mlk" ;
|
||||||
cousin_N = mkN (mkCmpdNoun (mkN "cca") (mkN "zad")) ; -- a compund noun made of two nouns
|
cousin_N = mkCmpdNoun "cca" (mkN "zad") ; -- a compund noun made of two nouns
|
||||||
cow_N = mkN "gaE" feminine ;
|
cow_N = mkN "gaE" feminine ;
|
||||||
die_V = mkV "mrna" ;
|
die_V = mkV "mrna" ;
|
||||||
dirty_A = mkA "gnda" ;
|
dirty_A = mkA "gnda" ;
|
||||||
distance_N3 = mkN3 (mkN "faSlh") (mkPrep "ka" "ky" "kE" "ky" singular) "sE" ;
|
distance_N3 = mkN3 (mkN "faSlh") (mkPrep "ka") "kE" "sE" ;
|
||||||
doctor_N = mkN "mealj" ;
|
doctor_N = mkN "mealj" ;
|
||||||
dog_N = mkN "kta" ;
|
dog_N = mkN "kta" ;
|
||||||
door_N = mkN "drwzh" ;
|
door_N = mkN "drwzh" ;
|
||||||
drink_V2 = mkV2 (mkV "pyna");
|
drink_V2 = mkV2 (mkV "pyna");
|
||||||
easy_A2V = mkA "Asan" "" ;
|
easy_A2V = mkA "Asan" "" ;
|
||||||
eat_V2 = mkV2 (mkV "kh-ana") "" ;
|
eat_V2 = mkV2 (mkV "kh-ana") "" ;
|
||||||
-- empty_A = mkA "Kaly" ;
|
empty_A = mkA "Kaly" ;
|
||||||
enemy_N = mkN "dXmn" ;
|
enemy_N = mkN "dXmn" ;
|
||||||
factory_N = mkN "karKanh" ;
|
factory_N = mkN "karKanh" ;
|
||||||
father_N2 = mkN2 (mkN "aba") (mkPrep "ka" "ky" "kE" "ky" singular) ;
|
father_N2 = mkN2 (mkN "aba") (mkPrep "ka") "kE" ;
|
||||||
fear_VS = mkV "drna";
|
fear_VS = mkV "drna";
|
||||||
find_V2 = mkV2 (mkV "pana") ;
|
find_V2 = mkV2 (mkV "pana") ;
|
||||||
fish_N = mkN "mch-ly" ;
|
fish_N = mkN "mch-ly" ;
|
||||||
@@ -90,7 +89,7 @@ concrete LexiconUrd of Lexicon = CatUrd **
|
|||||||
good_A = mkA "ach-a" ;
|
good_A = mkA "ach-a" ;
|
||||||
go_V = mkV "jana" ;
|
go_V = mkV "jana" ;
|
||||||
green_A = mkA "sbz" ;
|
green_A = mkA "sbz" ;
|
||||||
-- harbour_N = mkN "harbour" ;
|
harbour_N = mkCmpdNoun "bndr" (mkN "gah") ;
|
||||||
hate_V2 = mkV2 (compoundV "nfrt" do_V2) ;
|
hate_V2 = mkV2 (compoundV "nfrt" do_V2) ;
|
||||||
hat_N = mkN "twpy" ;
|
hat_N = mkN "twpy" ;
|
||||||
-- have_V2 = dirV2 (mk5V "have" "has" "had" "had" "having") ;
|
-- have_V2 = dirV2 (mk5V "have" "has" "had" "had" "having") ;
|
||||||
@@ -102,27 +101,28 @@ concrete LexiconUrd of Lexicon = CatUrd **
|
|||||||
house_N = mkN "gh-r" ;
|
house_N = mkN "gh-r" ;
|
||||||
important_A = mkA "ahm" ;
|
important_A = mkA "ahm" ;
|
||||||
industry_N = mkN "Snet" feminine ;
|
industry_N = mkN "Snet" feminine ;
|
||||||
-- iron_N = mkN "iron" ;
|
iron_N = mkN "lwha" ;
|
||||||
king_N = mkN "badXah" ;
|
king_N = mkN "badXah" ;
|
||||||
know_V2 = mkV2 (mkV "janna") ;
|
know_V2 = mkV2 (mkV "janna") ;
|
||||||
|
know_VS = mkV "janna";
|
||||||
lake_N = mkN "jh-yl" feminine ;
|
lake_N = mkN "jh-yl" feminine ;
|
||||||
-- lamp_N = mkN "lamp" ;
|
lamp_N = mkN "lymp" ;
|
||||||
learn_V2 = mkV2 (mkV "sykh-na") ;
|
learn_V2 = mkV2 (mkV "sykh-na") ;
|
||||||
leather_N = mkN "cmRa" ;
|
leather_N = mkN "cmRa" ;
|
||||||
-- leave_V2 = dirV2 (irregV "leave" "left" "left") ;
|
leave_V2 = mkV2 (mkV "jana") ;
|
||||||
like_V2 = mkV2 (compoundV "psnd" do_V2);
|
like_V2 = mkV2 (compoundV "psnd" do_V2);
|
||||||
listen_V2 = mkV2 (mkV "snna") ;
|
listen_V2 = mkV2 (mkV "snna") ;
|
||||||
live_V = mkV "rhna" ; ---- touch
|
live_V = mkV "rhna" ; ---- touch
|
||||||
long_A = mkA "lmba" ;
|
long_A = mkA "lmba" ;
|
||||||
lose_V2 = mkV2 (compoundV "kh-w" do_V2) ;
|
lose_V2 = mkV2 (compoundV "kh-w" do_V2) ;
|
||||||
love_N = mkN "mHbt" ;
|
love_N = mkN "mHbt" ;
|
||||||
love_V2 = mkV2 (compoundV "pyar" do_V2) ;
|
love_V2 = mkV2 (compoundV "pyar" do_V2) "kw";
|
||||||
man_N = mkN "Admy" ; -- not correct according to rules should be discussed
|
man_N = mkN "Admy" ; -- not correct according to rules should be discussed
|
||||||
married_A2 = mkA "Xady krna" "sE" ;
|
married_A2 = mkA "Xady krna" "sE" ;
|
||||||
meat_N = mkN "gwXt" ;
|
meat_N = mkN "gwXt" ;
|
||||||
milk_N = mkN "dwdh-" ;
|
milk_N = mkN "dwdh-" ;
|
||||||
moon_N = mkN "cand" ;
|
moon_N = mkN "cand" ;
|
||||||
-- mother_N2 = mkN "maN" feminine ; -- not covered need to be discussed
|
mother_N2 = mkN2 (mkN "maN") (mkPrep "ky") "kE"; -- not covered need to be discussed
|
||||||
mountain_N = mkN "phaRy" ;
|
mountain_N = mkN "phaRy" ;
|
||||||
music_N = mkN "mwsyqy" ;
|
music_N = mkN "mwsyqy" ;
|
||||||
narrow_A = mkA "baryk" ;
|
narrow_A = mkA "baryk" ;
|
||||||
@@ -133,30 +133,30 @@ concrete LexiconUrd of Lexicon = CatUrd **
|
|||||||
open_V2 = mkV2 (mkV "kh-wlna") ;
|
open_V2 = mkV2 (mkV "kh-wlna") ;
|
||||||
paint_V2A = mkV2 (compoundV "rng" do_V2) ;
|
paint_V2A = mkV2 (compoundV "rng" do_V2) ;
|
||||||
paper_N = mkN "kaGz" ;
|
paper_N = mkN "kaGz" ;
|
||||||
-- paris_PN = mkPN (mkN nonhuman (mkN "Paris")) ;
|
paris_PN = mkPN "Pyrs" ;
|
||||||
peace_N = mkN "amn" ;
|
peace_N = mkN "amn" ;
|
||||||
pen_N = mkN "pnsl" ;
|
pen_N = mkN "pnsl" ;
|
||||||
planet_N = mkN "syarh" ;
|
planet_N = mkN "syarh" ;
|
||||||
-- plastic_N = mkN "plastic" ;
|
plastic_N = mkN "plasTk" ;
|
||||||
play_V2 = mkV2 (mkV "kh-ylna") ;
|
play_V2 = mkV2 (mkV "kh-ylna") ;
|
||||||
-- policeman_N = mkN masculine (mkN "policeman" "policemen") ;
|
policeman_N = mkCmpdNoun "pwlys" (mkN "wala") ;
|
||||||
-- priest_N = mkN human (mkN "priest") ;
|
priest_N = (mkN "pyGmbr") ;
|
||||||
-- probable_AS = mkAS (regA "probable") ;
|
-- probable_AS = mkAS (regA "probable") ;
|
||||||
queen_N = mkN "Xhzady" ;
|
queen_N = mkN "Xhzady" ;
|
||||||
-- radio_N = mkN "radio" ;
|
radio_N = mkN "ryDyw" ;
|
||||||
rain_V0 = compoundV "barX" (mkV "hwna" ) ;
|
rain_V0 = compoundV "barX" (mkV "hwna" ) ;
|
||||||
read_V2 = mkV2 (mkV "pRh-na");
|
read_V2 = mkV2 (mkV "pRh-na");
|
||||||
red_A = mkA "lal" ;
|
red_A = mkA "lal" ;
|
||||||
religion_N = mkN "mzhb" ;
|
religion_N = mkN "mzhb" ;
|
||||||
-- restaurant_N = mkN "restaurant" ;
|
restaurant_N = mkN "hwTl" ;
|
||||||
river_N = mkN "drya" masculine ;
|
river_N = mkN "drya" masculine ;
|
||||||
rock_N = mkN "cTan" ;
|
rock_N = mkN "cTan" ;
|
||||||
roof_N = mkN "ch-t" masculine ;
|
roof_N = mkN "ch-t" masculine ;
|
||||||
-- rubber_N = mkN "rubber" ;
|
rubber_N = mkN "rbR" ;
|
||||||
run_V = mkV "dwRna" ;
|
run_V = mkV "dwRna" ;
|
||||||
say_VS = mkV "khna" ;
|
say_VS = mkV "khna" ;
|
||||||
school_N = mkN "skwl" ;
|
school_N = mkN "skwl" ;
|
||||||
-- science_N = mkN "science" ;
|
science_N = mkN "sans" ;
|
||||||
sea_N = mkN "smndr" ;
|
sea_N = mkN "smndr" ;
|
||||||
seek_V2 = mkV2 (compoundV "tlaX" do_V2) ;
|
seek_V2 = mkV2 (compoundV "tlaX" do_V2) ;
|
||||||
see_V2 = mkV2 (mkV "dykh-na") ;
|
see_V2 = mkV2 (mkV "dykh-na") ;
|
||||||
@@ -176,14 +176,14 @@ concrete LexiconUrd of Lexicon = CatUrd **
|
|||||||
sock_N = mkN "jrab" feminine ;
|
sock_N = mkN "jrab" feminine ;
|
||||||
speak_V2 = mkV2 (mkV "bwlna") ;
|
speak_V2 = mkV2 (mkV "bwlna") ;
|
||||||
star_N = mkN "stara" ;
|
star_N = mkN "stara" ;
|
||||||
-- steel_N = mkN "steel" ;
|
steel_N = mkN "styl" ;
|
||||||
stone_N = mkN "pth-r" ;
|
stone_N = mkN "pth-r" ;
|
||||||
stove_N = mkN "cwlha" ;
|
stove_N = mkN "cwlha" ;
|
||||||
student_N = mkN (mkCmpdNoun (mkN "t-alb") (mkN "elm")) ;
|
student_N = mkCmpdNoun "t-alb" (mkN "elm") ;
|
||||||
stupid_A = mkA "aHmq" ;
|
stupid_A = mkA "aHmq" ;
|
||||||
sun_N = mkN "swrj" ;
|
sun_N = mkN "swrj" ;
|
||||||
-- switch8off_V2 = dirV2 (partV (regV "switch") "off") ;
|
switch8off_V2 = mkV2 (mkV "clana") ;
|
||||||
-- switch8on_V2 = dirV2 (partV (regV "switch") "on") ;
|
switch8on_V2 = mkV2 (compoundV "bnd" do_V2) ;
|
||||||
table_N = mkN "myz" feminine ;
|
table_N = mkN "myz" feminine ;
|
||||||
talk_V3 = mkV3 (mkV "bwlna") "sE" "kE barE meN";
|
talk_V3 = mkV3 (mkV "bwlna") "sE" "kE barE meN";
|
||||||
teacher_N = mkN "istad" ;
|
teacher_N = mkN "istad" ;
|
||||||
@@ -192,51 +192,49 @@ concrete LexiconUrd of Lexicon = CatUrd **
|
|||||||
thick_A = mkA "mwTa" ;
|
thick_A = mkA "mwTa" ;
|
||||||
thin_A = mkA "ptla" ;
|
thin_A = mkA "ptla" ;
|
||||||
train_N = mkN "gaRy" ;
|
train_N = mkN "gaRy" ;
|
||||||
-- travel_V = mkV
|
|
||||||
travel_V = (compoundV "sfr" do_V2) ;
|
travel_V = (compoundV "sfr" do_V2) ;
|
||||||
tree_N = mkN "drKt" masculine ;
|
tree_N = mkN "drKt" masculine ;
|
||||||
-- ---- trousers_N = mkN "trousers" ;
|
-- ---- trousers_N = mkN "trousers" ;
|
||||||
ugly_A = mkA "bdSwrt" ;
|
ugly_A = mkA "bdSwrt" ;
|
||||||
understand_V2 = mkV2 (mkV "smjh-na") ;
|
understand_V2 = mkV2 (mkV "smjh-na") ;
|
||||||
-- university_N = mkN "university" ;
|
university_N = mkN "ywnywrsTy" ;
|
||||||
village_N = mkN "gawN" ;
|
village_N = mkN "gawN" ;
|
||||||
wait_V2 = mkV2 (compoundV "antz-ar" do_V2) ;
|
wait_V2 = mkV2 (compoundV "antz-ar" do_V2) ;
|
||||||
walk_V = mkV "clna" ;
|
walk_V = mkV "clna" ;
|
||||||
warm_A = mkA "grm" ;
|
warm_A = mkA "grm" ;
|
||||||
war_N = mkN "jng" ;
|
war_N = mkN "jng" ;
|
||||||
-- watch_V2 = dirV2 (regV "watch") ;
|
watch_V2 = mkV2 (mkV "dykh-na") ;
|
||||||
-- water_N = mkN "water" ; -- not covered masculine ending with y
|
water_N = mkN "pany" ; -- not covered masculine ending with y
|
||||||
white_A = mkA "sfyd" ;
|
white_A = mkA "sfyd" ;
|
||||||
window_N = mkN "kh-Rky" ;
|
window_N = mkN "kh-Rky" ;
|
||||||
wine_N = mkN "Xrab" feminine ;
|
wine_N = mkN "Xrab" feminine ;
|
||||||
win_V2 = mkV2 (mkV "jytna") ;
|
win_V2 = mkV2 (mkV "jytna") ;
|
||||||
woman_N = mkN "ewrt" feminine ;
|
woman_N = mkN "ewrt" feminine ;
|
||||||
-- wonder_VQ = (mkCmpdVerb (mkN "Heran" ) "hwna" ) (mkCmpdVerb (mkN "Heran") "hwna") (mkCmpdVerb (mkN "Heran") "krwana") ;
|
wonder_VQ = compoundV "Heran" (mkV "hwna") ;
|
||||||
wood_N = mkN "lkRy" ;
|
wood_N = mkN "lkRy" ;
|
||||||
write_V2 = mkV2 (mkV "lkh-na") ;
|
write_V2 = mkV2 (mkV "lkh-na") ;
|
||||||
yellow_A = mkA "pyla" ;
|
yellow_A = mkA "pyla" ;
|
||||||
young_A = mkA "jwan" ;
|
young_A = mkA "jwan" ;
|
||||||
--
|
|
||||||
do_V2 = mkV2 (mkV "krna") ;
|
do_V2 = mkV2 (mkV "krna") ;
|
||||||
-- now_Adv = mkAdv "now" ;
|
now_Adv = mkAdv "ab" ;
|
||||||
-- already_Adv = mkAdv "already" ;
|
already_Adv = mkAdv "phlE hy" ;
|
||||||
song_N = mkN "gana" ;
|
song_N = mkN "gana" ;
|
||||||
add_V3 = mkV3 (compoundV "aZ-afh" do_V2) "" "" ;
|
add_V3 = mkV3 (compoundV "aZ-afh" do_V2) "" "" ;
|
||||||
number_N = mkN "hndsh" ;
|
number_N = mkN "hndsh" ;
|
||||||
put_V2 = mkV2 (mkV "Dalna") ;
|
put_V2 = mkV2 (mkV "Dalna") ;
|
||||||
stop_V = mkV "rkna" ;
|
stop_V = mkV "rkna" ;
|
||||||
jump_V = mkV "ch-langna" ;
|
jump_V = mkV "ch-langna" ;
|
||||||
--
|
|
||||||
-- left_Ord = ss "left" ;
|
left_Ord = {s = "bayaN" ; n = singular};
|
||||||
-- right_Ord = ss "right" ;
|
right_Ord = {s= "dayaN" ; n = singular};
|
||||||
-- far_Adv = mkA "dwr" ;
|
far_Adv = mkAdv "dwr" ;
|
||||||
correct_A = mkA "Syh" ;
|
correct_A = mkA "Syh" ;
|
||||||
dry_A = mkA "KXk" ;
|
dry_A = mkA "KXk" ;
|
||||||
-- dull_A = mkA "nalik" ;
|
dull_A = mkA "nalik" ;
|
||||||
-- full_A = regA "full" ;
|
full_A = mkA "mkml" ;
|
||||||
heavy_A = mkA "bh-ary" ;
|
heavy_A = mkA "bh-ary" ;
|
||||||
near_A = mkA "qryb" ;
|
near_A = mkA "qryb" ;
|
||||||
-- rotten_A = (regA "rotten") ;
|
rotten_A = mkA "Krab" ;
|
||||||
round_A = mkA "gwl" ;
|
round_A = mkA "gwl" ;
|
||||||
sharp_A = mkA "tyz" ;
|
sharp_A = mkA "tyz" ;
|
||||||
smooth_A = mkA "hmwar" ;
|
smooth_A = mkA "hmwar" ;
|
||||||
@@ -246,7 +244,7 @@ concrete LexiconUrd of Lexicon = CatUrd **
|
|||||||
animal_N = mkN "janwr" ;
|
animal_N = mkN "janwr" ;
|
||||||
ashes_N = mkN "rakh-" feminine; -- FIXME: plural only?
|
ashes_N = mkN "rakh-" feminine; -- FIXME: plural only?
|
||||||
back_N = mkN "qmr" feminine ;
|
back_N = mkN "qmr" feminine ;
|
||||||
-- bark_N = mkN "bark" ;
|
bark_N = mkN "bark" ;
|
||||||
belly_N = mkN "dh-ny" ;
|
belly_N = mkN "dh-ny" ;
|
||||||
blood_N = mkN "Kwn" ;
|
blood_N = mkN "Kwn" ;
|
||||||
bone_N = mkN "hDy" ;
|
bone_N = mkN "hDy" ;
|
||||||
@@ -267,7 +265,7 @@ concrete LexiconUrd of Lexicon = CatUrd **
|
|||||||
foot_N = mkN "pawN" ; -- not properly covered need to be discussed
|
foot_N = mkN "pawN" ; -- not properly covered need to be discussed
|
||||||
forest_N = mkN "njgl" ;
|
forest_N = mkN "njgl" ;
|
||||||
grass_N = mkN "gh-s" feminine ;
|
grass_N = mkN "gh-s" feminine ;
|
||||||
-- guts_N = mkN "gut" ; -- FIXME: no singular
|
guts_N = mkN "gut" ; -- FIXME: no singular
|
||||||
hair_N = mkN "bal" ;
|
hair_N = mkN "bal" ;
|
||||||
hand_N = mkN "hath-" ;
|
hand_N = mkN "hath-" ;
|
||||||
head_N = mkN "sr" ;
|
head_N = mkN "sr" ;
|
||||||
@@ -323,15 +321,14 @@ concrete LexiconUrd of Lexicon = CatUrd **
|
|||||||
sew_V = mkV "syna" ;
|
sew_V = mkV "syna" ;
|
||||||
sing_V = mkV "gana" ;
|
sing_V = mkV "gana" ;
|
||||||
sit_V = mkV "byTh-na" ;
|
sit_V = mkV "byTh-na" ;
|
||||||
-- smell_V = regV "smell" ;
|
smell_V = mkV "swngna" ;
|
||||||
-- spit_V = IrregUrd.spit_V ;
|
spit_V = mkV "th-wkna" ;
|
||||||
-- stand_V = IrregUrd.stand_V ;
|
stand_V = compoundV "kh-RE" (mkV "hwna" );
|
||||||
swell_V = mkV "swjh-na" ;
|
swell_V = mkV "swjh-na" ;
|
||||||
swim_V = mkV "tyrna" ;
|
swim_V = mkV "tyrna" ;
|
||||||
think_V = mkV "swcna" ;
|
think_V = mkV "swcna" ;
|
||||||
turn_V = mkV "mRna";
|
turn_V = mkV "mRna";
|
||||||
-- vomit_V = regV "vomit" ;
|
vomit_V = compoundV "alty" (mkV "krna") ;
|
||||||
--
|
|
||||||
bite_V2 = mkV2 (mkV "katna") ;
|
bite_V2 = mkV2 (mkV "katna") ;
|
||||||
count_V2 = mkV2 (mkV "gnna") ;
|
count_V2 = mkV2 (mkV "gnna") ;
|
||||||
cut_V2 = mkV2 (mkV "katna") ;
|
cut_V2 = mkV2 (mkV "katna") ;
|
||||||
@@ -342,41 +339,31 @@ concrete LexiconUrd of Lexicon = CatUrd **
|
|||||||
hunt_V2 = mkV2 (compoundV "Xkar" do_V2);
|
hunt_V2 = mkV2 (compoundV "Xkar" do_V2);
|
||||||
kill_V2 = mkV2 (compoundV "mar" (mkV "Dalna" )) ;
|
kill_V2 = mkV2 (compoundV "mar" (mkV "Dalna" )) ;
|
||||||
pull_V2 = mkV2 (mkV "kh-ncna");
|
pull_V2 = mkV2 (mkV "kh-ncna");
|
||||||
-- push_V2 = dirV2 (regV "push") ;
|
push_V2 = mkV2 (mkV "dh-kylna") "kw" ;
|
||||||
rub_V2 = mkV2 (mkV "rgRna") ;
|
rub_V2 = mkV2 (mkV "rgRna") ;
|
||||||
-- scratch_V2 = dirV2 (regV "scratch") ;
|
scratch_V2 = mkV2 (mkV "kh-rcna") "kw" ;
|
||||||
-- split_V2 = dirV2 split_V ;
|
split_V2 = mkV2 (mkV "banta") "kw" ;
|
||||||
-- squeeze_V2 = dirV2 (regV "squeeze") ;
|
-- squeeze_V2 = dirV2 (regV "squeeze") ;
|
||||||
-- stab_V2 = dirV2 (regDuplV "stab") ;
|
-- stab_V2 = dirV2 (regDuplV "stab") ;
|
||||||
suck_V2 = mkV2 (mkV "cwsna") ;
|
suck_V2 = mkV2 (mkV "cwsna") ;
|
||||||
throw_V2 = mkV2 (mkV "ph-ynkna") ;
|
throw_V2 = mkV2 (mkV "ph-ynkna") ;
|
||||||
tie_V2 = mkV2 (mkV "bandh-na") ;
|
tie_V2 = mkV2 (mkV "bandh-na") ;
|
||||||
wash_V2 = mkV2 (mkV "dh-wna") ;
|
wash_V2 = mkV2 (mkV "dh-wna") ;
|
||||||
-- wipe_V2 = dirV2 (regV "wipe") ;
|
wipe_V2 = mkV2 (compoundV "Saf" (mkV "krna" ));
|
||||||
--
|
|
||||||
---- other_A = regA "other" ;
|
---- other_A = regA "other" ;
|
||||||
--
|
|
||||||
-- grammar_N = mkN "grammar" ;
|
grammar_N = mkN "grdan" ;
|
||||||
language_N = mkN "zban" feminine ;
|
language_N = mkN "zban" feminine ;
|
||||||
rule_N = mkN "aSwl" ;
|
rule_N = mkN "aSwl" ;
|
||||||
--
|
|
||||||
---- added 4/6/2007
|
---- added 4/6/2007
|
||||||
john_PN = mkPN "jon" ;
|
john_PN = mkPN "jon" ;
|
||||||
question_N = mkN "swal" ;
|
question_N = mkN "swal" ;
|
||||||
-- ready_A = regA "ready" ;
|
-- ready_A = regA "ready" ;
|
||||||
reason_N = mkN "wjh" feminine ;
|
reason_N = mkN "wjh" feminine ;
|
||||||
-- today_Adv = mkAdv "today" ;
|
today_Adv = mkAdv "Aj" ;
|
||||||
-- uncertain_A = regA "uncertain" ;
|
uncertain_A = mkA ["Gyr yqyny"] ;
|
||||||
--
|
|
||||||
--oper
|
|
||||||
-- aboutP = mkPrep "about" ;
|
|
||||||
-- atP = mkPrep "at" ;
|
|
||||||
-- forP = mkPrep "for" ;
|
|
||||||
-- fromP = mkPrep "from" ;
|
|
||||||
-- inP = mkPrep "in" ;
|
|
||||||
-- onP = mkPrep "on" ;
|
|
||||||
-- toP = mkPrep "to" ;
|
|
||||||
--
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,195 +2,460 @@
|
|||||||
--
|
--
|
||||||
----1 A Simple Urdu Resource Morphology
|
----1 A Simple Urdu Resource Morphology
|
||||||
----
|
----
|
||||||
---- Aarne Ranta, Shafqat Virk 2009
|
---- Shafqat Virk, Aarne Ranta,2009
|
||||||
----
|
----
|
||||||
---- This resource morphology contains definitions needed in the resource
|
---- This resource morphology contains definitions needed in the resource
|
||||||
---- syntax. To build a lexicon, it is better to use $ParadigmsHin$, which
|
---- syntax. To build a lexicon, it is better to use $ParadigmsUrd$, which
|
||||||
---- gives a higher-level access to this module.
|
---- gives a higher-level access to this module.
|
||||||
--
|
--
|
||||||
resource MorphoUrd = ResUrd ** open Prelude, (Predef=Predef) in {
|
resource MorphoUrd = ResUrd ** open Prelude,Predef in {
|
||||||
--
|
|
||||||
-- flags optimize=all ;
|
flags optimize=all ;
|
||||||
--
|
coding = utf8;
|
||||||
----2 Phonology
|
|
||||||
----
|
|
||||||
---- To regulate the use of endings for both nouns, adjectives, and verbs:
|
|
||||||
--
|
|
||||||
--oper
|
|
||||||
-- y2ie : Str -> Str -> Str = \fly,s ->
|
|
||||||
-- let y = last (init fly) in
|
|
||||||
-- case y of {
|
|
||||||
-- "a" => fly + s ;
|
|
||||||
-- "e" => fly + s ;
|
|
||||||
-- "o" => fly + s ;
|
|
||||||
-- "u" => fly + s ;
|
|
||||||
-- _ => init fly + "ie" + s
|
|
||||||
-- } ;
|
|
||||||
--
|
|
||||||
--
|
|
||||||
----2 Nouns
|
----2 Nouns
|
||||||
----
|
oper
|
||||||
---- For conciseness and abstraction, we define a worst-case macro for
|
mkNoun : (x1,_,_,_,_,x6 : Str) -> Gender -> Noun =
|
||||||
---- noun inflection. It is used for defining special case that
|
\sd,so,sv,pd,po,pv,g -> {
|
||||||
---- only need one string as argument.
|
s = table {
|
||||||
--
|
Sg => table {
|
||||||
--oper
|
Dir => sd ;
|
||||||
-- CommonNoun : Type = {s : Number => Case => Str} ;
|
Obl => so ;
|
||||||
--
|
Voc => sv
|
||||||
-- nounGen : Str -> CommonNoun = \dog -> case last dog of {
|
} ;
|
||||||
-- "y" => nounY "dog" ;
|
Pl => table {
|
||||||
-- "s" => nounS (init "dog") ;
|
Dir => pd ;
|
||||||
-- _ => nounReg "dog"
|
Obl => po ;
|
||||||
-- } ;
|
Voc => pv
|
||||||
--
|
}
|
||||||
---- These are auxiliaries to $nounGen$.
|
} ;
|
||||||
--
|
|
||||||
-- nounReg : Str -> CommonNoun = \dog ->
|
g = g
|
||||||
-- mkNoun dog (dog + "s") (dog + "'s") (dog + "s'");
|
} ;
|
||||||
-- nounS : Str -> CommonNoun = \kiss ->
|
|
||||||
-- mkNoun kiss (kiss + "es") (kiss + "'s") (kiss + "es'") ;
|
|
||||||
-- nounY : Str -> CommonNoun = \fl ->
|
|
||||||
-- mkNoun (fl + "y") (fl + "ies") (fl + "y's") (fl + "ies'") ;
|
regNoun : Str -> Noun ;
|
||||||
--
|
regNoun s = case s of {
|
||||||
--
|
_ + "ya" => mkN05 (s);
|
||||||
----3 Proper names
|
_ + ("a"|"e"|"h") => mkN01 (s);
|
||||||
----
|
_ + "y" => mkN03 (s);
|
||||||
---- Regular proper names are inflected with "'s" in the genitive.
|
_ + ("aN"|"wN") => mkN04 (s);
|
||||||
--
|
_ + "w^" => mkN12 (s);
|
||||||
-- nameReg : Str -> Gender -> {s : Case => Str} = \john,g ->
|
_ => regNoun2 (s)
|
||||||
-- {s = table {Gen => john + "'s" ; _ => john} ; g = g} ;
|
};
|
||||||
--
|
regNoun2 : Str -> Noun;
|
||||||
|
regNoun2 s = let c = if_then_else Bool (eq (last s) "a" ) True (if_then_else Bool (eq (last s) "h") True (if_then_else Bool (eq (last s) "e") True False))
|
||||||
|
in case c of {
|
||||||
|
False => mkN02 (s);
|
||||||
|
True => mkN01 (s)
|
||||||
|
};
|
||||||
|
|
||||||
|
reggNoun : Str -> Gender -> Noun ;
|
||||||
|
reggNoun s g = let c = if_then_else Bool (eq (last s) "a" ) True (if_then_else Bool (eq (dp 2 s) "aN") True (if_then_else Bool (eq (dp 2 s) "wN") True False))
|
||||||
|
in case <s,g,c> of {
|
||||||
|
<_ + "t",Fem,_> => mkN10 (s);
|
||||||
|
<_ + "t",Masc,_> => mkN02 (s);
|
||||||
|
<_ + "w",Masc,_> => mkN11 (s);
|
||||||
|
<_ + "w",Fem,_> => mkN07 (s);
|
||||||
|
<_ + "ya",Fem,_> => mkN05 (s);
|
||||||
|
<_ + "ya",Masc,_> => mkN02 (s);
|
||||||
|
<_,Fem,False> => mkN08 (s);
|
||||||
|
<_,Fem,_> => mkN09 (s)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
-- masculine nouns end with alif, choTi_hay, ain Translitration: (a, h, e)
|
||||||
|
-- Arabic nouns ends with h. also taken as Masc
|
||||||
|
|
||||||
|
mkN01 : Str -> Noun ;
|
||||||
|
mkN01 lRka = let end = last (lRka) ;
|
||||||
|
lRk = if_then_else Str (eq end "e") lRka (tk 1 lRka)
|
||||||
|
in mkNoun (lRka) (lRk+"E") (lRk+"E")
|
||||||
|
(lRk+"E") (lRk+"wN") (lRk+"w")
|
||||||
|
Masc ;
|
||||||
|
|
||||||
|
-- masculine nouns does not end with a, h, e, an
|
||||||
|
|
||||||
|
mkN02 : Str -> Noun ;
|
||||||
|
mkN02 mrd = let mrdwN = mrd+"wN" ;
|
||||||
|
mrdw = tk 1 mrdwN
|
||||||
|
in mkNoun mrd mrd mrd
|
||||||
|
mrd mrdwN mrdw
|
||||||
|
Masc ;
|
||||||
|
|
||||||
|
-- feminine Nouns end with y
|
||||||
|
|
||||||
|
mkN03 : Str -> Noun ;
|
||||||
|
mkN03 krsy = let krsyaN = krsy+"aN" ;
|
||||||
|
krsywN = krsy+"wN" ;
|
||||||
|
krsyw = tk 1 krsywN
|
||||||
|
in mkNoun krsy krsy krsy
|
||||||
|
krsyaN krsywN krsyw
|
||||||
|
Fem ;
|
||||||
|
|
||||||
|
-- feminine nouns end with a, aN, wN
|
||||||
|
mkN04 : Str -> Noun ;
|
||||||
|
mkN04 n = case last n of {
|
||||||
|
"a" => let bla = n
|
||||||
|
in mkNoun bla bla bla
|
||||||
|
(bla+"y^yN") (bla+"w^N") (bla+"w^")
|
||||||
|
Fem ;
|
||||||
|
_ => let maN = n ; -- ends with aN and wN
|
||||||
|
ma = tk 1 maN
|
||||||
|
in mkNoun maN maN maN
|
||||||
|
(ma+"y^yN") (ma+"w^N") (ma+"w^N")
|
||||||
|
Fem
|
||||||
|
|
||||||
|
};
|
||||||
|
--feminine nouns end with ya
|
||||||
|
|
||||||
|
mkN05 : Str -> Noun ;
|
||||||
|
mkN05 gRya = let gRy = (tk 1 gRya)
|
||||||
|
in mkNoun gRya gRya gRya
|
||||||
|
(gRya+"N") (gRy+"wN") (gRy+"w")
|
||||||
|
Fem ;
|
||||||
|
|
||||||
|
-- feminine nouns end with w
|
||||||
|
|
||||||
|
mkN07 : Str -> Noun ;
|
||||||
|
mkN07 khshbw = mkNoun khshbw khshbw khshbw
|
||||||
|
(khshbw + "y^yN") (khshbw + "w^N") (khshbw + "w^")
|
||||||
|
Fem ;
|
||||||
|
|
||||||
|
-- Loan arabic feminine nouns end with t
|
||||||
|
-- this is a noun that shows state, condition
|
||||||
|
|
||||||
|
mkN10 : Str -> Noun ;
|
||||||
|
mkN10 ndamt = mkNoun ndamt ndamt ndamt
|
||||||
|
(ndamt+"yN") (ndamt+"wN") (ndamt+"w")
|
||||||
|
Fem ;
|
||||||
|
-- Worst case function
|
||||||
|
mkN : (_,_,_,_,_,_ : Str) -> Gender -> Noun ;
|
||||||
|
mkN sgNom sgObl sgVoc plNom plObl plVoc g =
|
||||||
|
mkNoun sgNom sgObl sgVoc plNom plObl plVoc g ;
|
||||||
|
|
||||||
|
mkN06 : Str -> Noun ;
|
||||||
|
mkN06 rya = mkNoun rya rya rya
|
||||||
|
(rya+"y^yN") (rya+"w^N") rya
|
||||||
|
Fem ;
|
||||||
|
|
||||||
|
-- feminine nouns that do not end with a, N, w, wN
|
||||||
|
|
||||||
|
mkN08 : Str -> Noun ;
|
||||||
|
mkN08 ktab = mkNoun ktab ktab ktab
|
||||||
|
(ktab+"yN") (ktab+"wN") (ktab+"w")
|
||||||
|
Fem ;
|
||||||
|
|
||||||
|
-- Loan arabic feminine nouns
|
||||||
|
|
||||||
|
mkN09 : Str -> Noun ;
|
||||||
|
mkN09 ahsan = mkNoun ahsan ahsan ahsan
|
||||||
|
(ahsan+"at") (ahsan+"at") (ahsan+"w")
|
||||||
|
Fem ;
|
||||||
|
-- (variants{ahsan+"at";ahsan+"wN"})
|
||||||
|
-- Loan persian maculine nouns end with w
|
||||||
|
|
||||||
|
mkN11 : Str -> Noun ;
|
||||||
|
mkN11 alw = mkNoun alw alw alw
|
||||||
|
alw (alw+"w^N") (alw+"w^")
|
||||||
|
Masc ;
|
||||||
|
|
||||||
|
|
||||||
|
-- Loan persian maculine nouns end with w^
|
||||||
|
|
||||||
|
mkN12 : Str -> Noun ;
|
||||||
|
mkN12 bhao = mkNoun (bhao) (bhao) (bhao)
|
||||||
|
(bhao) (bhao) (bhao)
|
||||||
|
Masc ;
|
||||||
----2 Determiners
|
----2 Determiners
|
||||||
--
|
IDeterminer = {s:Gender => Str ; n : Number};
|
||||||
-- mkDeterminer : Number -> Str -> {s : Str ; n : Number} = \n,s ->
|
makeDet : Str -> Str -> Str -> Str -> Number -> Determiner = \s1,s2,s3,s4,n -> {
|
||||||
-- {s = s ; n = n} ;
|
s = table {
|
||||||
--
|
Sg => table {
|
||||||
|
Masc => s1 ;
|
||||||
|
Fem => s2
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
Masc => s3 ;
|
||||||
|
Fem => s4
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
n = n
|
||||||
|
};
|
||||||
|
|
||||||
|
makeIDet : Str -> Str -> Number -> IDeterminer = \s1,s2,n -> {
|
||||||
|
s = table {
|
||||||
|
Masc => s1;
|
||||||
|
Fem => s2
|
||||||
|
};
|
||||||
|
n = n
|
||||||
|
};
|
||||||
|
|
||||||
|
-- Proposition
|
||||||
|
|
||||||
|
makePrep : Str -> Preposition = \str -> {s = str};
|
||||||
|
|
||||||
----2 Pronouns
|
----2 Pronouns
|
||||||
----
|
PronForm = {s:Pronoun => Str};
|
||||||
---- Here we define personal pronouns.
|
makeDemPron : (x1,x2,x3,x4,x5,x6:Str) -> PronForm =
|
||||||
----
|
\y1,y2,y3,y4,y5,y6 -> {
|
||||||
---- We record the form "mine" and the gender for later use.
|
s = table {
|
||||||
--
|
P Sg _ Dir _ => y1;
|
||||||
-- Pronoun : Type =
|
P Sg _ Obl _ => y2;
|
||||||
-- {s : Case => Str ; a : Agr} ;
|
P Sg _ Voc _ => y3;
|
||||||
--
|
P Pl _ Dir _ => y4;
|
||||||
-- mkPronoun : (_,_,_,_ : Str) -> Number -> Person -> Gender -> Pronoun =
|
P Pl _ Obl _ => y5;
|
||||||
-- \I,me,my,mine,n,p,g ->
|
P Pl _ Voc _ => y6
|
||||||
-- {s = table {Nom => I ; Acc => me ; Gen => my} ;
|
};
|
||||||
-- a = toAgr n p g
|
};
|
||||||
-- } ;
|
|
||||||
--
|
-- DemonPronForm = {s:DemPronForm => Str};
|
||||||
-- human : Gender = Masc ; --- doesn't matter
|
mkDemonPronForm : (x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12:Str) -> DemPronForm =
|
||||||
--
|
\y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12 -> {
|
||||||
-- pronI = mkPronoun "I" "me" "my" "mine" Sg P1 human ;
|
s = table {
|
||||||
-- pronYouSg = mkPronoun "you" "you" "your" "yours" Sg P2 human ; -- verb agr OK
|
Sg => table {
|
||||||
-- pronHe = mkPronoun "he" "him" "his" "his" Sg P3 Masc ;
|
Masc => table {
|
||||||
-- pronShe = mkPronoun "she" "her" "her" "hers" Sg P3 Fem ;
|
Dir => y1 ;
|
||||||
-- pronIt = mkPronoun "it" "it" "its" "it" Sg P3 Neutr ;
|
Obl => y2 ;
|
||||||
--
|
Voc => y3
|
||||||
-- pronWe = mkPronoun "we" "us" "our" "ours" Pl P1 human ;
|
};
|
||||||
-- pronYouPl = mkPronoun "you" "you" "your" "yours" Pl P2 human ;
|
Fem => table {
|
||||||
-- pronThey = mkPronoun "they" "them" "their" "theirs" Pl P3 human ; ---
|
Dir => y4 ;
|
||||||
--
|
Obl => y5 ;
|
||||||
--
|
Voc => y6
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Pl => table {
|
||||||
|
Masc => table {
|
||||||
|
Dir => y7 ;
|
||||||
|
Obl => y8 ;
|
||||||
|
Voc => y9
|
||||||
|
};
|
||||||
|
Fem => table {
|
||||||
|
Dir => y10 ;
|
||||||
|
Obl => y11 ;
|
||||||
|
Voc => y12
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
makeDemonPronForm : Str -> Str -> Str -> DemPronForm ;
|
||||||
|
makeDemonPronForm yeh is inn = mkDemonPronForm yeh is "" yeh is "" yeh inn "" yeh inn "";
|
||||||
|
-- makePossPronForm myra myry hmara hmary = mkDemonPronForm myra myra myra myry myry myry hmara hmara hmara hmary hmary hmary;
|
||||||
|
|
||||||
|
PersPron = {s: PersPronForm => Str};
|
||||||
|
|
||||||
|
mkPersPron:(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31,x32,x33,x34,x35,x36:Str) -> PersPron =
|
||||||
|
\y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y20,y21,y22,y23,y24,y25,y26,y27,y28,y29,y30,y31,y32,y33,y34,y35,y36 -> {
|
||||||
|
s =
|
||||||
|
table {
|
||||||
|
PPF Sg Pers1 Dir => y1;
|
||||||
|
PPF Sg Pers1 Obl => y2;
|
||||||
|
PPF Sg Pers1 Voc => y3;
|
||||||
|
PPF Sg Pers2_Casual Dir => y4;
|
||||||
|
PPF Sg Pers2_Casual Obl => y5;
|
||||||
|
PPF Sg Pers2_Casual Voc => y6;
|
||||||
|
PPF Sg Pers2_Familiar Dir => y7;
|
||||||
|
PPF Sg Pers2_Familiar Obl => y8;
|
||||||
|
PPF Sg Pers2_Familiar Voc => y9;
|
||||||
|
PPF Sg Pers2_Respect Dir => y10;
|
||||||
|
PPF Sg Pers2_Respect Obl => y11;
|
||||||
|
PPF Sg Pers2_Respect Voc => y12;
|
||||||
|
PPF Sg Pers3_Near Dir => y13;
|
||||||
|
PPF Sg Pers3_Near Obl => y14;
|
||||||
|
PPF Sg Pers3_Near Voc => y15;
|
||||||
|
PPF Sg Pers3_Distant Dir => y16;
|
||||||
|
PPF Sg Pers3_Distant Obl => y17;
|
||||||
|
PPF Sg Pers3_Distant Voc => y18;
|
||||||
|
PPF Pl Pers1 Dir => y19;
|
||||||
|
PPF Pl Pers1 Obl => y20;
|
||||||
|
PPF Pl Pers1 Voc => y21;
|
||||||
|
PPF Pl Pers2_Casual Dir => y22;
|
||||||
|
PPF Pl Pers2_Casual Obl => y23;
|
||||||
|
PPF Pl Pers2_Casual Voc => y24;
|
||||||
|
PPF Pl Pers2_Familiar Dir => y25;
|
||||||
|
PPF Pl Pers2_Familiar Obl => y26;
|
||||||
|
PPF Pl Pers2_Familiar Voc => y27;
|
||||||
|
PPF Pl Pers2_Respect Dir => y28;
|
||||||
|
PPF Pl Pers2_Respect Obl => y29;
|
||||||
|
PPF Pl Pers2_Respect Voc => y30;
|
||||||
|
PPF Pl Pers3_Near Dir => y31;
|
||||||
|
PPF Pl Pers3_Near Obl => y32;
|
||||||
|
PPF Pl Pers3_Near Voc => y33;
|
||||||
|
PPF Pl Pers3_Distant Dir => y34;
|
||||||
|
PPF Pl Pers3_Distant Obl => y35;
|
||||||
|
PPF Pl Pers3_Distant Voc => y36
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
makePersPron : PersPron;
|
||||||
|
makePersPron = mkPersPron "m(a)yN" "m(o)j'|h" "" "t(o)w " "t(o)j|h" "t(o)w " "t(o)m" "t(o)m" "t(o)m" "Ap" "Ap" "Ap" "y(i)h" "a(i)s" "" "w(o)h" "a(o)s" ""
|
||||||
|
"h(a)m" "h(a)m" "" "t(o)m" "t(o)m" "t(o)m" "t(o)m" "t(o)m" "t(o)m" "Ap" "Ap" "Ap" "y(i)h" "a(i)n" "" "w(o)h" "a(o)n" "" ;
|
||||||
|
|
||||||
|
mkPron : (x1,x2,x3:Str) -> {s:Case => Str} =
|
||||||
|
\y1,y2,y3 -> { s =
|
||||||
|
table {
|
||||||
|
Dir => y1;
|
||||||
|
Obl => y2;
|
||||||
|
Voc => y3
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
------- PossPronForm yet to be implemented
|
||||||
|
|
||||||
|
-- IntPronForm = {s:InterrPronForm => Str};
|
||||||
|
IntPronForm = {s: Case => Str};
|
||||||
|
mkIntPronForm : (x1,x2,x3:Str) -> IntPronForm =
|
||||||
|
\y1,y2,y3 -> {
|
||||||
|
s =
|
||||||
|
table {
|
||||||
|
Dir => y1;
|
||||||
|
Obl => y2;
|
||||||
|
Voc => y3
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
----2 Adjectives
|
----2 Adjectives
|
||||||
----
|
-- defined in ResUrd
|
||||||
---- To form the adjectival and the adverbial forms, two strings are needed
|
|
||||||
---- in the worst case. (First without degrees.)
|
|
||||||
--
|
|
||||||
-- Adjective = {s : AForm => Str} ;
|
|
||||||
--
|
|
||||||
---- However, most adjectives can be inflected using the final character.
|
|
||||||
---- N.B. this is not correct for "shy", but $mkAdjective$ has to be used.
|
|
||||||
--
|
|
||||||
-- regAdjective : Str -> Adjective = \free ->
|
|
||||||
-- let
|
|
||||||
-- e = last free ;
|
|
||||||
-- fre = init free ;
|
|
||||||
-- freely = case e of {
|
|
||||||
-- "y" => fre + "ily" ;
|
|
||||||
-- _ => free + "ly"
|
|
||||||
-- } ;
|
|
||||||
-- fre = case e of {
|
|
||||||
-- "e" => fre ;
|
|
||||||
-- "y" => fre + "i" ;
|
|
||||||
-- _ => free
|
|
||||||
-- }
|
|
||||||
-- in
|
|
||||||
-- mkAdjective free (fre + "er") (fre + "est") freely ;
|
|
||||||
--
|
|
||||||
---- Many adjectives are 'inflected' by adding a comparison word.
|
|
||||||
--
|
|
||||||
-- adjDegrLong : Str -> Adjective = \ridiculous ->
|
|
||||||
-- mkAdjective
|
|
||||||
-- ridiculous
|
|
||||||
-- ("more" ++ ridiculous)
|
|
||||||
-- ("most" ++ ridiculous)
|
|
||||||
-- ((regAdjective ridiculous).s ! AAdv) ;
|
|
||||||
--
|
|
||||||
--
|
|
||||||
----3 Verbs
|
----3 Verbs
|
||||||
----
|
CommonVF = {s : VTense => UPerson => Number => Gender => Str} ;
|
||||||
---- The worst case needs five forms. (The verb "be" is treated separately.)
|
|
||||||
--
|
mkVerb : (x1: Str) -> Verb = \inf ->
|
||||||
-- mkVerb4 : (_,_,_,_: Str) -> Verb = \go,goes,went,gone ->
|
let root = (tk 2 inf); inf_obl = ((tk 1 inf) + "E"); inf_fem = ((tk 1 inf) + "y")
|
||||||
-- let going = case last go of {
|
in { s = table {
|
||||||
-- "e" => init go + "ing" ;
|
|
||||||
-- _ => go + "ing"
|
VF tense person number gender => (mkCmnVF root tense person number gender).s ;
|
||||||
-- }
|
Inf => inf ;
|
||||||
-- in
|
Root => root ;
|
||||||
-- mkVerb go goes went gone going ;
|
Inf_Obl => inf_obl ;
|
||||||
--
|
Inf_Fem => inf_fem
|
||||||
---- This is what we use to derive the irregular forms in almost all cases
|
|
||||||
--
|
|
||||||
-- mkVerbIrreg : (_,_,_ : Str) -> Verb = \bite,bit,bitten ->
|
}
|
||||||
-- let bites = case last bite of {
|
} ;
|
||||||
-- "y" => y2ie bite "s" ;
|
rem_y : Str -> Str;
|
||||||
-- "s" => init bite + "es" ;
|
rem_y str = let b = take 1 str; yth = drop 1 str; a1 = take 4 yth; a2 = take 1 yth; th= if_then_else Str (eq a1 "(a)y") (drop 5 str) (drop 2 str); st = if_then_else Str (eq a1 "(a)y") (b ++ "(i)"++th) (if_then_else Str (eq a2 "y") (b ++ th) str)
|
||||||
-- _ => bite + "s"
|
in rt st;
|
||||||
-- }
|
rt: Str -> Str;
|
||||||
-- in mkVerb4 bite bites bit bitten ;
|
rt r = r;
|
||||||
--
|
mkCmnVF : Str -> VTense -> UPerson -> Number -> Gender -> {s:Str} =
|
||||||
---- This is used to derive regular forms.
|
\root,t,p,n,g ->
|
||||||
--
|
{s =
|
||||||
-- mkVerbReg : Str -> Verb = \soak ->
|
let form1 = case (last root) of {
|
||||||
-- let
|
"a"|"A"|"w" => root + "w^N" ;
|
||||||
-- soaks = case last soak of {
|
_ => root + "wN"
|
||||||
-- "y" => y2ie soak "s" ;
|
};
|
||||||
-- "s" => init soak + "es" ;
|
form2 = case (last root) of {
|
||||||
-- _ => soak + "s"
|
"a"|"A"|"w" => root + "y^N" ;
|
||||||
-- } ;
|
_ => root + "yN"
|
||||||
-- soaked = case last soak of {
|
};
|
||||||
-- "e" => init soak + "s" ;
|
in
|
||||||
-- _ => soak + "ed"
|
case <t,p,n,g> of {
|
||||||
-- }
|
<Subj,Pers1,Sg,_> => form1 ;
|
||||||
-- in
|
<Subj,Pers1,Pl,_> => form2 ;
|
||||||
-- mkVerb4 soak soaks soaked soaked ;
|
<Subj,_,_,_> => (mkImpert root p n g).s ;
|
||||||
--
|
<Perf,_,_,_> => case root of {
|
||||||
-- verbGen : Str -> Verb = \kill -> case last kill of {
|
"hw" => (mkPastInd root p n g).s ;
|
||||||
-- "y" => verbP3y (init kill) ;
|
"ja" => (mkPastInd "gy" p n g).s ;
|
||||||
-- "e" => verbP3e (init kill) ;
|
"kr" => (mkPastInd "k" p n g).s ;
|
||||||
-- "s" => verbP3s (init kill) ;
|
"dE" => (mkPastInd "d" p n g).s ;
|
||||||
-- _ => regVerbP3 kill
|
"lE" => (mkPastInd "l" p n g).s ;
|
||||||
-- } ;
|
_ => (mkPastInd root p n g).s };
|
||||||
--
|
<Imperf,Pers2_Familiar,Sg,Masc> => root + "tE";
|
||||||
---- These are just auxiliary to $verbGen$.
|
<Imperf,Pers2_Familiar,Sg,Fem> => root + "ty"; --variants{root+"ty" ; root+"tyN"};
|
||||||
--
|
<Imperf,Pers2_Familiar,Pl,Masc> => root + "tE";
|
||||||
-- regVerbP3 : Str -> Verb = \walk ->
|
<Imperf,Pers2_Familiar,Pl,Fem> => root+"tyN";
|
||||||
-- mkVerbIrreg walk (walk + "ed") (walk + "ed") ;
|
<Imperf,Pers2_Respect,Sg,Masc> => root + "tE";
|
||||||
-- verbP3s : Str -> Verb = \kiss ->
|
<Imperf,Pers2_Respect,Sg,Fem> => root + "ty"; --variants{root+"ty" ; root+"tyN"};
|
||||||
-- mkVerb4 kiss (kiss + "es") (kiss + "ed") (kiss + "ed") ;
|
<Imperf,Pers2_Respect,Pl,Masc> => root + "tE";
|
||||||
-- verbP3e : Str -> Verb = \love ->
|
<Imperf,Pers2_Respect,Pl,Fem> => root+"tyN";
|
||||||
-- mkVerb4 love (love + "s") (love + "d") (love + "d") ;
|
<Imperf,_,Sg,Masc> => root+"ta";
|
||||||
-- verbP3y : Str -> Verb = \cr ->
|
<Imperf,_,Sg,Fem> => root+"ty";
|
||||||
-- mkVerb4 (cr + "y") (cr + "ies") (cr + "ied") (cr + "ied") ;
|
<Imperf,_,Pl,Masc> => root+"te";
|
||||||
--
|
<Imperf,_,Pl,Fem> => root+"tyN"
|
||||||
----- The particle always appears right after the verb.
|
}
|
||||||
--
|
|
||||||
-- verbPart : Verb -> Str -> Verb = \v,p ->
|
} ;
|
||||||
-- {s = \\f => v.s ! f ++ p ; isRefl = v.isRefl} ;
|
|
||||||
--
|
mkPastInd : Str -> UPerson -> Number -> Gender -> {s:Str} = \root,p,n,g ->
|
||||||
-- verbNoPart : Verb -> Verb = \v -> verbPart v [] ;
|
{s = let roo = root ;
|
||||||
--
|
a = case (last root) of {
|
||||||
--
|
"a"|"A"|"w"|"k" => "ya" ;
|
||||||
|
_ => "a"
|
||||||
|
} ;
|
||||||
|
y = case (last root) of {
|
||||||
|
"a"|"A"|"w" => "y^y" ;
|
||||||
|
_ => "y"
|
||||||
|
} ;
|
||||||
|
e = case (last root) of {
|
||||||
|
"a"|"A"|"w"|"k" => "y^E" ;
|
||||||
|
_ => "E"
|
||||||
|
} ;
|
||||||
|
yN = case (last root) of {
|
||||||
|
"a"|"A"|"w" => "y^yN" ;
|
||||||
|
_ => "yN"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
in
|
||||||
|
case <p,n,g> of {
|
||||||
|
<Pers1,Sg,Masc> => roo+a ;
|
||||||
|
<Pers1,Sg,Fem> => roo+y ;
|
||||||
|
<Pers1,Pl,Masc> => roo+e ;
|
||||||
|
<Pers1,Pl,Fem> => roo+yN ;
|
||||||
|
|
||||||
|
<Pers2_Casual,Sg,Masc> => roo+a ;
|
||||||
|
<Pers2_Casual,Sg,Fem> => roo+y ;
|
||||||
|
<Pers2_Casual,Pl,Masc> => roo+e ;
|
||||||
|
<Pers2_Casual,Pl,Fem> => roo+yN ;
|
||||||
|
|
||||||
|
<Pers2_Familiar,Sg,Masc> => roo+e ;
|
||||||
|
<Pers2_Familiar,Sg,Fem> => roo+y; --variants{roo+y ; roo+yN} ;
|
||||||
|
<Pers2_Familiar,Pl,Masc> => roo+e ;
|
||||||
|
<Pers2_Familiar,Pl,Fem> => roo+yN ;
|
||||||
|
|
||||||
|
<Pers2_Respect,Sg,Masc> => roo+e ;
|
||||||
|
<Pers2_Respect,Sg,Fem> => roo+yN; --variants{roo+yN ; roo+y} ;
|
||||||
|
<Pers2_Respect,Pl,Masc> => roo+e ;
|
||||||
|
<Pers2_Respect,Pl,Fem> => roo+yN ;
|
||||||
|
<_,Sg,Masc> => roo + a;
|
||||||
|
<_,Sg,Fem> => roo+y ;
|
||||||
|
<_,Pl,Masc> => roo + e;
|
||||||
|
<_,Pl,Fem> => roo+yN
|
||||||
|
|
||||||
|
} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkImpert : Str -> UPerson -> Number -> Gender -> {s:Str} = \root,p,n,g ->
|
||||||
|
{s = let roo = root ;
|
||||||
|
w = case (last root) of {
|
||||||
|
"a"|"A"|"w" => "w^" ;
|
||||||
|
_ => "w"
|
||||||
|
} ;
|
||||||
|
yN = case (last root) of {
|
||||||
|
"a"|"A"|"w" => "y^yN" ;
|
||||||
|
_ => "yN"
|
||||||
|
} ;
|
||||||
|
yE = case (last root) of {
|
||||||
|
"a"|"A"|"w" => "y^yE" ;
|
||||||
|
_ => "yE"
|
||||||
|
} ;
|
||||||
|
e = case (last root) of {
|
||||||
|
"a"|"A"|"w" => "y^E" ;
|
||||||
|
_ => "E"
|
||||||
|
} in
|
||||||
|
case <p,n,g> of {
|
||||||
|
<Pers1,_,_> => ""; --nonExist ;
|
||||||
|
<Pers2_Casual,Sg,_> => root ;
|
||||||
|
<Pers2_Casual,Pl,_> => roo+w ;
|
||||||
|
<Pers2_Familiar,_,_> => roo+w ;
|
||||||
|
<Pers2_Respect,Sg,_> => roo+w; --variants{roo+w; roo+yN; roo+yE} ;
|
||||||
|
<Pers2_Respect,Pl,_> => roo+yN; --variants{roo+yN; roo+yE} ;
|
||||||
|
<_,Sg,_> => roo+e ;
|
||||||
|
<_,Pl,_> => roo+yN
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ concrete NounUrd of Noun = CatUrd ** open ResUrd, Prelude in {
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
DetCN det cn = {
|
DetCN det cn = {
|
||||||
s = \\c => detcn2NP det.s cn c det.n ;
|
s = \\c => detcn2NP det cn c det.n ;
|
||||||
a = agrP3 cn.g det.n
|
a = agrP3 cn.g det.n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -23,7 +23,6 @@ concrete NounUrd of Noun = CatUrd ** open ResUrd, Prelude in {
|
|||||||
|
|
||||||
RelNP np rs = {
|
RelNP np rs = {
|
||||||
s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ;
|
s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ;
|
||||||
-- s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ;
|
|
||||||
a = np.a
|
a = np.a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -33,46 +32,40 @@ concrete NounUrd of Noun = CatUrd ** open ResUrd, Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
DetQuantOrd quant num ord = {
|
DetQuantOrd quant num ord = {
|
||||||
s = \\ c => detquant2det quant.s num.s c ++ ord.s ;
|
-- s = \\ c => detquant2det quant.s num.s c ++ ord.s ;
|
||||||
|
s = \\n,g => quant.s!n!g!Dir ++ num.s ++ ord.s;
|
||||||
n = num.n
|
n = num.n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
DetQuant quant num = {
|
DetQuant quant num = {
|
||||||
s = \\c => detquant2det quant.s num.s c;
|
-- s = \\c => detquant2det quant.s num.s c;
|
||||||
|
s = \\n,g => quant.s!n!g!Dir ++ num.s;
|
||||||
n = num.n
|
n = num.n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
DetNP det = {
|
DetNP det = {
|
||||||
s = \\c => det2NP det.s c ; ---- case
|
s = \\c => det2NP det c ; ---- case
|
||||||
a = agrP3 Masc Sg
|
a = agrP3 Masc Sg
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- PossPron p = {s = \\_,_,_ => p.s ! PPoss} ;
|
PossPron p = {s = \\_,_,_ => p.ps ; a = p.a} ;
|
||||||
--
|
|
||||||
NumSg = {s = []; n = Sg} ;
|
NumSg = {s = []; n = Sg} ;
|
||||||
NumPl = {s = []; n = Pl} ;
|
NumPl = {s = []; n = Pl} ;
|
||||||
|
|
||||||
NumCard n = n ** {hasCard = True} ;
|
NumCard n = n ** {hasCard = True} ;
|
||||||
--
|
|
||||||
-- NumDigits n = {s = n.s ! NCard ; n = n.n} ;
|
NumDigits n = {s = n.s ! NCard ; n = n.n} ;
|
||||||
-- OrdDigits n = {s = n.s ! NOrd} ;
|
OrdDigits n = {s = n.s ! NOrd; n = n.n} ;
|
||||||
--
|
|
||||||
NumNumeral numeral = {s = numeral.s ! NCard; n = numeral.n} ;
|
NumNumeral numeral = {s = numeral.s ! NCard; n = numeral.n} ;
|
||||||
-- OrdNumeral numeral = {s = numeral.s ! NOrd} ;
|
OrdNumeral numeral = {s = numeral.s ! NOrd ; n = numeral.n} ;
|
||||||
--
|
|
||||||
-- AdNum adn num = {s = adn.s ++ num.s ; n = num.n} ;
|
AdNum adn num = {s = adn.s ++ num.s ; n = num.n} ;
|
||||||
--
|
|
||||||
-- OrdSuperl a = {s = a.s ! AAdj Superl} ;
|
OrdSuperl a = {s = a.s ! Sg ! Masc ! Dir ! Superl ; n = Sg} ;
|
||||||
--
|
|
||||||
-- DetArtOrd art num ord = {
|
|
||||||
-- s = art.s ! num.hasCard ! num.n ++ num.s ++ ord.s ;
|
|
||||||
-- n = num.n
|
|
||||||
-- } ;
|
|
||||||
--
|
|
||||||
-- DetArtCard art card = {
|
|
||||||
-- s = art.s ! True ! card.n ++ card.s ;
|
|
||||||
-- n = card.n
|
|
||||||
-- } ;
|
|
||||||
|
|
||||||
DetArtSg art cn = {
|
DetArtSg art cn = {
|
||||||
s = \\c => art.s ++ toNP (cn.s ! Sg) c ;
|
s = \\c => art.s ++ toNP (cn.s ! Sg) c ;
|
||||||
@@ -84,8 +77,8 @@ concrete NounUrd of Noun = CatUrd ** open ResUrd, Prelude in {
|
|||||||
a = agrP3 cn.g Pl
|
a = agrP3 cn.g Pl
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- DefArt = {s = []} ;
|
DefArt = {s = \\_,_,_ => [] ; a = defaultAgr} ;
|
||||||
-- IndefArt = {s = []} ;
|
IndefArt = {s = \\_,_,_ => [] ; a =defaultAgr } ;
|
||||||
|
|
||||||
MassNP cn = {s = \\c => toNP (cn.s ! Sg) c ; a = agrP3 cn.g Sg} ;
|
MassNP cn = {s = \\c => toNP (cn.s ! Sg) c ; a = agrP3 cn.g Sg} ;
|
||||||
|
|
||||||
@@ -95,27 +88,29 @@ concrete NounUrd of Noun = CatUrd ** open ResUrd, Prelude in {
|
|||||||
Use2N3 f = {
|
Use2N3 f = {
|
||||||
s = f.s;
|
s = f.s;
|
||||||
g = f.g ;
|
g = f.g ;
|
||||||
c2 = f.c2
|
c2 = f.c2;
|
||||||
|
c3 = f.c3
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
Use3N3 f = {
|
Use3N3 f = {
|
||||||
s = f.s ;
|
s = f.s ;
|
||||||
g = f.g ;
|
g = f.g ;
|
||||||
c2 = f.c2
|
c2 = f.c2;
|
||||||
|
c3 = f.c3
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- ComplN2 f x = {s = \\n,c => x.s ! NPC c ++ f.c2! PP (giveNumber x.a) f.g ++ f.s ! n ! c ; g = f.g} ;
|
|
||||||
ComplN2 f x = {s = \\n,c => case c of {
|
ComplN2 f x = {s = \\n,c => case c of {
|
||||||
Dir => x.s ! NPC c ++ f.c2! PP (giveNumber x.a) f.g ++ f.s ! n ! c ;
|
Dir => x.s ! NPC c ++ f.c2 ++ f.s ! n ! c ;
|
||||||
Obl => x.s ! NPC c ++ f.c2! PP Pl f.g ++ f.s ! n ! c ;
|
Obl => x.s ! NPC c ++ f.c3 ++ f.s ! n ! c ;
|
||||||
Voc => x.s ! NPC c ++ f.c2! PP (giveNumber x.a) f.g ++ f.s ! n ! c
|
ResUrd.Voc => x.s ! NPC c ++ f.c3 ++ f.s ! n ! c
|
||||||
};
|
};
|
||||||
g = f.g;
|
g = f.g;
|
||||||
};
|
};
|
||||||
ComplN3 f x = {
|
ComplN3 f x = {
|
||||||
s = \\n,c => x.s ! NPObj ++ f.c3 ++ f.s ! n ! Dir ;
|
s = \\n,c => x.s ! NPObj ++ f.c4 ++ f.s ! n ! Dir ;
|
||||||
g = f.g ;
|
g = f.g ;
|
||||||
c2 = f.c2
|
c2 = f.c2;
|
||||||
|
c3 = f.c3
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdjCN ap cn = {
|
AdjCN ap cn = {
|
||||||
@@ -128,9 +123,9 @@ concrete NounUrd of Noun = CatUrd ** open ResUrd, Prelude in {
|
|||||||
g = cn.g
|
g = cn.g
|
||||||
} ;
|
} ;
|
||||||
AdvCN cn ad = {s = \\n,c => cn.s ! n ! c ++ ad.s ; g = cn.g} ;
|
AdvCN cn ad = {s = \\n,c => cn.s ! n ! c ++ ad.s ; g = cn.g} ;
|
||||||
--
|
|
||||||
-- SentCN cn sc = {s = \\n,c => cn.s ! n ! c ++ sc.s ; g = cn.g} ;
|
SentCN cn sc = {s = \\n,c => cn.s ! n ! c ++ sc.s ; g = cn.g} ;
|
||||||
--
|
|
||||||
-- ApposCN cn np = {s = \\n,c => cn.s ! n ! Nom ++ np.s ! c ; g = cn.g} ;
|
ApposCN cn np = {s = \\n,c => cn.s ! n ! Dir ++ np.s ! NPC c ; g = cn.g} ;
|
||||||
--
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
concrete NumeralUrd of Numeral = CatUrd ** open ResUrd in {
|
concrete NumeralUrd of Numeral = CatUrd ** open ResUrd in {
|
||||||
-- By Harald Hammarström
|
-- By Harald Hammarström
|
||||||
-- flags coding=devanagari ;
|
-- Modification for Urdu Shafqat Virk
|
||||||
|
flags coding=utf8 ;
|
||||||
--- still old Devanagari coding
|
--- still old Devanagari coding
|
||||||
|
|
||||||
|
|
||||||
@@ -8,42 +9,48 @@ param DForm = unit | ten ;
|
|||||||
param DSize = sg | r2 | r3 | r4 | r5 | r6 | r7 | r8 | r9 ;
|
param DSize = sg | r2 | r3 | r4 | r5 | r6 | r7 | r8 | r9 ;
|
||||||
param Size = sing | less100 | more100 ;
|
param Size = sing | less100 | more100 ;
|
||||||
|
|
||||||
oper LinDigit = {s : DForm => Str ; size : DSize} ;
|
oper LinDigit = {s : DForm => Str ; size : DSize ; n : Number} ;
|
||||||
|
|
||||||
--lincat Numeral = { s : Str } ;
|
|
||||||
lincat Dig = { s:Str};
|
lincat Dig = { s:Str ; n : Number};
|
||||||
lincat Digit = LinDigit ;
|
lincat Digit = LinDigit ;
|
||||||
lincat Sub10 = {s : DForm => Str ; size : DSize} ;
|
lincat Sub10 = {s : DForm => Str ; size : DSize ; n : Number} ;
|
||||||
lincat Sub100 = {s : Str ; size : Size} ;
|
lincat Sub100 = {s : Str ; size : Size ; n : Number} ;
|
||||||
lincat Sub1000 = {s : Str ; s2 : Str ; size : Size } ;
|
lincat Sub1000 = {s : Str ; s2 : Str ; size : Size ; n : Number } ;
|
||||||
lincat Sub1000000 = { s : Str } ;
|
lincat Sub1000000 = { s : Str ; n : Number } ;
|
||||||
|
|
||||||
lin num x0 =
|
lin num x0 =
|
||||||
{s = \\_ => x0.s ; n = Pl} ; -- the Devana:gari environment
|
{s = table {
|
||||||
|
NCard => x0.s ;
|
||||||
|
NOrd => x0.s ++ "waN" -- need to use mkOrd which will make irregular ordinals but it gives path error
|
||||||
|
};
|
||||||
|
n = x0.n
|
||||||
|
} ;
|
||||||
|
oper mkOrd : Str -> Str =
|
||||||
|
\s -> case s of {
|
||||||
|
"ek" => "phla";
|
||||||
|
"do" => "dwsra";
|
||||||
|
"ti:n" => "tesra";
|
||||||
|
"ca:r" => "cwth-a";
|
||||||
|
("cHah"|"cHa"|"cHai") => "ch-Ta";
|
||||||
|
_ => s ++ "waN"
|
||||||
|
};
|
||||||
|
-- {s = \\_ => x0.s ; n = x0.n} ;
|
||||||
|
|
||||||
|
|
||||||
-- H is for aspiration (h is a sepaarate letter)
|
|
||||||
-- M is anusvara
|
|
||||||
-- ~ is candrabindhu
|
|
||||||
-- c is is Eng. ch in e.g chop
|
|
||||||
-- cH is chH
|
|
||||||
-- _: is length
|
|
||||||
-- T, D, R are the retroflexes
|
|
||||||
|
|
||||||
oper mkNum : Str -> Str -> DSize -> LinDigit =
|
oper mkNum : Str -> Str -> DSize -> LinDigit =
|
||||||
\do -> \bis -> \sz ->
|
\do -> \bis -> \sz ->
|
||||||
{s = table {unit => do ; ten => bis } ;
|
{s = table {unit => do ; ten => bis } ;
|
||||||
size = sz } ;
|
size = sz ; n = Pl} ;
|
||||||
|
|
||||||
--lin n1 mkNum "ek" "gya:rah" "das" ;
|
lin n2 = mkNum "dw" "bys" r2 ;
|
||||||
lin n2 = mkNum "do" "bi:s" r2 ;
|
lin n3 = mkNum "tyn" "tys" r3 ;
|
||||||
lin n3 = mkNum "ti:n" "ti:s" r3 ;
|
lin n4 = mkNum "car" "calys" r4 ;
|
||||||
lin n4 = mkNum "ca:r" "ca:li:s" r4 ;
|
lin n5 = mkNum "panc" "pcas" r5 ;
|
||||||
lin n5 = mkNum "pa:~nc" "paca:s" r5 ;
|
lin n6 = mkNum "ch-" "sath-" r6 ;
|
||||||
lin n6 = mkNum (variants {"cHah" ; "cHa;" ; "cHai"}) "sa:TH" r6 ;
|
lin n7 = mkNum "sat" "str" r7;
|
||||||
lin n7 = mkNum "sa:t" "sattar" r7;
|
lin n8 = mkNum "Ath-" "asy" r8;
|
||||||
lin n8 = mkNum "a:TH" "assi:" r8;
|
lin n9 = mkNum "nw" "nwE" r9 ;
|
||||||
lin n9 = mkNum "nau" (variants {"navve" ; "nabbe" }) r9 ;
|
|
||||||
|
|
||||||
oper mkR : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> DSize => Str = \a1 -> \a2 -> \a3 -> \a4 -> \a5 -> \a6 -> \a7 -> \a8 -> \a9 -> table {
|
oper mkR : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> DSize => Str = \a1 -> \a2 -> \a3 -> \a4 -> \a5 -> \a6 -> \a7 -> \a8 -> \a9 -> table {
|
||||||
sg => a1 + "ah" ;
|
sg => a1 + "ah" ;
|
||||||
@@ -58,60 +65,63 @@ oper mkR : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> DSize
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper rows : DSize => DSize => Str = table {
|
oper rows : DSize => DSize => Str = table {
|
||||||
sg => mkR "gya:r" "ikk" "ikat" "ekt" "ikya:v" "ik" "ik" "iky" "iky" ;
|
sg => mkR "gyarh" "ikk" "ikat" "ekt" "ikyaw" "ik" "ik" "iky" "iky" ;
|
||||||
r2 => mkR "ba:r" "ba:" "bat" "bay" "ba:v" "ba:" "ba" "bay" "b" ;
|
r2 => mkR "barh" "bay" "bat" "bay" "baw" "ba" "ba" "bay" "b" ;
|
||||||
r3 => mkR "ter" "te" "taiM" "taiMt" "tirp" "tir" "ti" "tir" "tir" ;
|
r3 => mkR "tyr" "ty" "tyn" "tnt" "trp" "try" "t" "tr" "tr" ;
|
||||||
r4 => mkR "caud" "caub" "cauM" "cav" "caup" "cauM" "cau" "caur" "caur" ;
|
r4 => mkR "cwd" "cwb" "cwn" "cwa" "cww" "cwn" "cwh" "cwr" "cwr" ;
|
||||||
r5 => mkR "paMdr" "pacc" "paiM" "paiMt" "pacp" "paiM" "pac" "pac" "pac" ;
|
r5 => mkR "pnd" "pcy" "pyn" "pnta" "pcp" "pyn" "ph" "pc" "pc" ;
|
||||||
r6 => mkR "sol" "cHabb" "cHat" "cHiy" "cHapp" "cHiya:" "cHi" "cHiy" "cHiy" ;
|
r6 => mkR "swl" "ch-b" "ch-t" "ch-y" "ch-p" "ch-ya" "ch-" "ch-y" "ch-y" ;
|
||||||
r7 => mkR (variants { "sattr" ; "satr"}) "satta:v" "saiM" "saiMt" "satta:" "sar" "sat" (variants {"satt" ; "sat" }) "satt" ;
|
r7 => mkR "str" "sta" "syn" "snt" "staw" "sta" "sr" "st" "sta" ;
|
||||||
r8 => mkR "aTHa:r" "aTTHa:" "aR" "aRt" "aTTHa:v" "aR" "aTH" (variants { "aTTH" ; "aTH" }) "aTTH" ;
|
r8 => mkR "ath-ar" "ath-ay" "aR" "aRt" "ath-aw" "aR" "ath-" "ath-" "ath-" ;
|
||||||
r9 => table {sg => "unni:s" ; r2 => "unati:s" ; r3 => "unata:li:s" ;
|
r9 => table {sg => "anys" ; r2 => "antys" ; r3 => "antalys" ;
|
||||||
r4 => "unaca:s" ; r5 => "unasaTH" ; r6 => "unahattar" ;
|
r4 => "ancas" ; r5 => "ansth-" ; r6 => "anhtr" ;
|
||||||
r7 => (variants{"unna:si:" ; "unya:si:"}) ;
|
r7 => "anasy" ;
|
||||||
r8 => "nava:si:" ; r9 => "ninya:nave" }
|
r8 => "ananwE" ; r9 => "nnanwE" }
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper ss : Str -> {s : Str} = \s -> {s = s} ;
|
oper ss : Str -> {s : Str} = \s -> {s = s} ;
|
||||||
|
|
||||||
lin pot01 = {s = table {unit => "ek" ; _ => "dummy" } ; size = sg} ;
|
lin pot01 = {s = table {unit => "ayk" ; _ => "dummy" } ; size = sg ; n = Sg} ;
|
||||||
lin pot0 d = d ;
|
lin pot0 d = d ;
|
||||||
lin pot110 = {s = "das" ; size = less100} ;
|
lin pot110 = {s = "das" ; size = less100 ; n = Pl} ;
|
||||||
lin pot111 = {s = rows ! sg ! sg ; size = less100} ;
|
lin pot111 = {s = rows ! sg ! sg ; size = less100 ; n = Pl} ;
|
||||||
lin pot1to19 d = {s = rows ! d.size ! sg ; size = less100} ;
|
lin pot1to19 d = {s = rows ! d.size ! sg ; size = less100 ; n = d.n} ;
|
||||||
lin pot0as1 n = {s = n.s ! unit ; size = table {sg => sing ; _ => less100} ! n.size } ;
|
lin pot0as1 n = {s = n.s ! unit ; size = table {sg => sing ; _ => less100} ! n.size ; n = n.n } ;
|
||||||
|
|
||||||
lin pot1 d = {s = d.s ! ten ; size = less100} ;
|
lin pot1 d = {s = d.s ! ten ; size = less100 ; n = d.n} ;
|
||||||
lin pot1plus d e = {s = rows ! e.size ! d.size ; size = less100} ;
|
lin pot1plus d e = {s = rows ! e.size ! d.size ; size = less100 ; n = d.n} ;
|
||||||
|
|
||||||
lin pot1as2 n = {s = n.s ; s2 = "dummy" ; size = n.size } ;
|
lin pot1as2 n = {s = n.s ; s2 = "dummy" ; size = n.size ; n = n.n} ;
|
||||||
lin pot2 d = {s = (mksau (d.s ! unit) d.size) ;
|
lin pot2 d = {s = (mksau (d.s ! unit) d.size) ;
|
||||||
s2 = d.s ! unit ++ "la:kH" ; size = more100} ;
|
s2 = d.s ! unit ++ "lakh-" ; size = more100 ; n = d.n} ;
|
||||||
lin pot2plus d e =
|
lin pot2plus d e =
|
||||||
{s = (mksau (d.s ! unit) d.size) ++ e.s ;
|
{s = (mksau (d.s ! unit) d.size) ++ e.s ;
|
||||||
s2 = (d.s ! unit) ++ "la:kH" ++ (mkhazar e.s e.size) ;
|
s2 = (d.s ! unit) ++ "lakh-" ++ (mkhazar e.s e.size) ;
|
||||||
size = more100} ;
|
size = more100 ; n = d.n} ;
|
||||||
|
|
||||||
lin pot2as3 n = {s = n.s } ;
|
lin pot2as3 n = {s = n.s ; n = n.n} ;
|
||||||
lin pot3 n = {s = table { sing => ekhazar ;
|
lin pot3 n = {s = table { sing => ekhazar ;
|
||||||
less100 => n.s ++ "haza:r" ;
|
less100 => n.s ++ "hzar" ;
|
||||||
more100 => n.s2 } ! n.size} ;
|
more100 => n.s2 } ! n.size ; n = n.n} ;
|
||||||
lin pot3plus n m =
|
lin pot3plus n m =
|
||||||
{s = table {sing => ekhazar ;
|
{s = table {sing => ekhazar ;
|
||||||
less100 => n.s ++ "haza:r" ;
|
less100 => n.s ++ "hzar" ;
|
||||||
more100 => n.s2 } ! n.size ++ m.s} ;
|
more100 => n.s2 } ! n.size ++ m.s ; n = n.n} ;
|
||||||
|
|
||||||
lin D_0 = { s = "0"};
|
lin D_0 = { s = "0" ; n = Sg};
|
||||||
lin D_1 = { s = "1"};
|
lin D_1 = { s = "1" ; n = Sg};
|
||||||
lin D_2 = { s = "2"};
|
lin D_2 = { s = "2" ; n = Pl};
|
||||||
lin D_3 = { s = "3"};
|
lin D_3 = { s = "3" ; n = Pl};
|
||||||
lin D_4 = { s = "4"};
|
lin D_4 = { s = "4" ; n = Pl};
|
||||||
lin D_5 = { s = "5"};
|
lin D_5 = { s = "5" ; n = Pl};
|
||||||
lin D_6 = { s = "6"};
|
lin D_6 = { s = "6" ; n = Pl};
|
||||||
lin D_7 = { s = "7"};
|
lin D_7 = { s = "7" ; n = Pl};
|
||||||
lin D_8 = { s = "8"};
|
lin D_8 = { s = "8" ; n = Pl};
|
||||||
lin D_9 = { s = "9"};
|
lin D_9 = { s = "9" ; n = Pl};
|
||||||
oper ekhazar : Str = variants {"haza:r" ; "ek" ++ "haza:r"} ;
|
lin IDig d = { s = \\_ => d.s ; n = d.n} ;
|
||||||
oper mkhazar : Str -> Size -> Str = \s -> \sz -> table {sing => ekhazar ; _ => s ++ "haza:r"} ! sz ;
|
lin IIDig d dg = { s = \\df => dg.s ! df ++ d.s ; n = Pl }; -- need to use + rather than ++, but gives error need to discuss
|
||||||
oper mksau : Str -> DSize -> Str = \s -> \sz -> table {sg => "sau" ; _ => s ++ "sau"} ! sz ;
|
|
||||||
|
oper ekhazar : Str = variants {"hzar" ; "ayk" ++ "hzar"} ;
|
||||||
|
oper mkhazar : Str -> Size -> Str = \s -> \sz -> table {sing => ekhazar ; _ => s ++ "hzar"} ! sz ;
|
||||||
|
oper mksau : Str -> DSize -> Str = \s -> \sz -> table {sg => "sw" ; _ => s ++ "sw"} ! sz ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,22 +32,25 @@ oper
|
|||||||
mkN : (x1,_,_,_,_,x6 : Str) -> Gender -> N
|
mkN : (x1,_,_,_,_,x6 : Str) -> Gender -> N
|
||||||
= \sd,so,sv,pd,po,pv,g -> mkNoun sd so sv pd po pv g ** {lock_N = <>} ;
|
= \sd,so,sv,pd,po,pv,g -> mkNoun sd so sv pd po pv g ** {lock_N = <>} ;
|
||||||
} ;
|
} ;
|
||||||
mkN2 : N -> Prep -> N2;
|
mkN2 : N -> Prep -> Str -> N2;
|
||||||
mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s } ;
|
mkN2 = \n,p,c -> n ** {lock_N2 = <> ; c2 = p.s ; c3 = c } ;
|
||||||
|
|
||||||
|
mkN3 : N -> Prep -> Str -> Str-> N3 ;
|
||||||
|
mkN3 = \n,p,q,r -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q ; c4 = r} ;
|
||||||
|
|
||||||
|
-- Compound Nouns
|
||||||
|
|
||||||
|
mkCmpdNoun : Str -> N -> N
|
||||||
|
= \s,noun -> {s =\\n,c => s ++ noun.s ! n ! c ; g = noun.g ; lock_N = <>};
|
||||||
|
|
||||||
|
|
||||||
|
-- Proper names
|
||||||
-- mkPN = overload {
|
mkPN : Str -> PN = \s -> let n = regNoun s in {s = n.s ! Sg ; g = n.g ; lock_PN = <>} ;
|
||||||
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 = <>};
|
||||||
-- mkPN : N -> Gender -> PN = \n,g -> {s = n.s ! Sg ; g = g ; lock_PN = <>} ;
|
|
||||||
-- } ;
|
|
||||||
|
|
||||||
-- personalPN : Pron;
|
|
||||||
personalPN : Str -> Pron = \s -> let n = makePersPron in {s = n.s ; a = personalAgr ; lock_Pron = <>};
|
|
||||||
demoPN : Str -> Str -> Str -> Quant = \s1,s2,s3 -> let n = makeDemonPronForm s1 s2 s3 in {s = n.s ; a = defaultAgr ; lock_Quant = <>};
|
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 = <>};
|
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 = <>};
|
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 = <>};
|
||||||
-- mkIP : (x1,x2,x3,x4,x5,x6:Str) -> IP = \s1,s2,s3,s4,s5,s6 -> let n = makeDemPron s1 s2 s3 s4 s5 s6 in { s = n.s ; a = defaultAgr ; lock_IP = <>};
|
|
||||||
--2 Adjectives
|
--2 Adjectives
|
||||||
|
|
||||||
mkA = overload {
|
mkA = overload {
|
||||||
@@ -59,8 +62,7 @@ oper
|
|||||||
|
|
||||||
--2 Verbs
|
--2 Verbs
|
||||||
|
|
||||||
-- mkV = overload {
|
mkV : Str -> V
|
||||||
mkV : Str -> V
|
|
||||||
= \s -> mkVerb s ** {lock_V = <>} ;
|
= \s -> mkVerb s ** {lock_V = <>} ;
|
||||||
|
|
||||||
mkV2 = overload {
|
mkV2 = overload {
|
||||||
@@ -72,197 +74,49 @@ oper
|
|||||||
= \v,p -> v ** {c2 = {s = p ; c = VTrans} ; lock_V2 = <>} ;
|
= \v,p -> v ** {c2 = {s = p ; c = VTrans} ; lock_V2 = <>} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkV3 : V -> Str -> Str -> V3;
|
||||||
|
mkV3 v p q = v ** { c2 = p ; c3 = q ; lock_V3 = <>} ;
|
||||||
|
mkV2V : V -> Str -> Str -> Bool -> V2V ;
|
||||||
|
mkV2V v s1 s2 b = v ** {isAux = b ; c1 = s1 ; c2 = s2 ; lock_V2V = <>} ;
|
||||||
|
|
||||||
-- compund verbs
|
-- compund verbs
|
||||||
compoundV = overload {
|
compoundV = overload {
|
||||||
compoundV : Str -> V -> V = \s,v -> {s = \\vf => s ++ v.s ! vf ; lock_V = <>} ;
|
compoundV : Str -> V -> V = \s,v -> {s = \\vf => s ++ v.s ! vf ; lock_V = <>} ;
|
||||||
compoundV : Str -> V2 -> V = \s,v -> {s = \\vf => s ++ v.s ! vf ; lock_V = <>} ;
|
compoundV : Str -> V2 -> V = \s,v -> {s = \\vf => s ++ v.s ! vf ; lock_V = <>} ;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
mkCmpdNoun = overload {
|
|
||||||
mkCmpdNoun : N -> N -> Str
|
|
||||||
= \n1,n2 -> n1.s ! Sg ! Dir ++ n2.s ! Sg ! Dir;
|
|
||||||
};
|
|
||||||
----3 Compound nouns
|
|
||||||
----
|
|
||||||
---- A compound noun is an uninflected string attached to an inflected noun,
|
|
||||||
---- such as "baby boom", "chief executive officer".
|
|
||||||
--
|
|
||||||
-- mkN : Str -> N -> N
|
|
||||||
-- } ;
|
|
||||||
--
|
|
||||||
--
|
|
||||||
----3 Relational nouns
|
|
||||||
----
|
|
||||||
---- Relational nouns ("daughter of x") need a preposition.
|
|
||||||
--
|
|
||||||
-- mkN2 : N -> Prep -> N2 ;
|
|
||||||
--
|
|
||||||
---- The most common preposition is "of", and the following is a
|
|
||||||
---- shortcut for regular relational nouns with "of".
|
|
||||||
--
|
|
||||||
-- regN2 : Str -> N2 ;
|
|
||||||
--
|
|
||||||
---- Use the function $mkPrep$ or see the section on prepositions below to
|
|
||||||
---- form other prepositions.
|
|
||||||
----
|
|
||||||
---- Three-place relational nouns ("the connection from x to y") need two prepositions.
|
|
||||||
--
|
|
||||||
mkN3 : N -> Prep -> Str -> N3 ;
|
|
||||||
--
|
|
||||||
--
|
|
||||||
--
|
|
||||||
----3 Proper names and noun phrases
|
|
||||||
----
|
|
||||||
---- Proper names, with a regular genitive, are formed from strings.
|
|
||||||
--
|
|
||||||
-- mkPN : overload {
|
|
||||||
--
|
|
||||||
-- mkPN : Str -> PN ;
|
|
||||||
--
|
|
||||||
---- Sometimes a common noun can be reused as a proper name, e.g. "Bank"
|
|
||||||
--
|
|
||||||
-- mkPN : N -> PN
|
|
||||||
-- } ;
|
|
||||||
--
|
|
||||||
--
|
|
||||||
----2 Adjectives
|
|
||||||
--
|
|
||||||
-- mkA : overload {
|
|
||||||
--
|
|
||||||
---- For regular adjectives, the adverbial and comparison forms are derived. This holds
|
|
||||||
---- even for cases with the variations "happy - happily - happier - happiest",
|
|
||||||
---- "free - freely - freer - freest", and "rude - rudest".
|
|
||||||
--
|
|
||||||
-- mkA : (happy : Str) -> A ;
|
|
||||||
--
|
|
||||||
---- However, the duplication of the final consonant cannot be predicted,
|
|
||||||
---- but a separate case is used to give the comparative
|
|
||||||
--
|
|
||||||
-- mkA : (fat,fatter : Str) -> A ;
|
|
||||||
--
|
|
||||||
---- As many as four forms may be needed.
|
|
||||||
--
|
|
||||||
-- mkA : (good,better,best,well : Str) -> A
|
|
||||||
-- } ;
|
|
||||||
--
|
|
||||||
---- To force comparison to be formed by "more - most",
|
|
||||||
---- the following function is used:
|
|
||||||
--
|
|
||||||
-- compoundA : A -> A ; -- -/more/most ridiculous
|
|
||||||
--
|
|
||||||
--
|
|
||||||
--
|
|
||||||
----3 Two-place adjectives
|
|
||||||
----
|
|
||||||
---- Two-place adjectives need a preposition for their second argument.
|
|
||||||
--
|
|
||||||
-- mkA2 : A -> Prep -> A2 ;
|
|
||||||
--
|
|
||||||
--
|
|
||||||
--
|
|
||||||
----2 Adverbs
|
----2 Adverbs
|
||||||
--
|
mkAdv : Str -> Adv = \str -> {s = str ; lock_Adv = <>};
|
||||||
---- Adverbs are not inflected. Most lexical ones have position
|
|
||||||
---- after the verb. Some can be preverbal (e.g. "always").
|
|
||||||
--
|
|
||||||
-- mkAdv : Str -> Adv ;
|
|
||||||
-- mkAdV : Str -> AdV ;
|
|
||||||
--
|
|
||||||
---- Adverbs modifying adjectives and sentences can also be formed.
|
|
||||||
--
|
|
||||||
-- mkAdA : Str -> AdA ;
|
|
||||||
--
|
|
||||||
----2 Prepositions
|
----2 Prepositions
|
||||||
----
|
|
||||||
---- A preposition as used for rection in the lexicon, as well as to
|
mkPrep : Str -> Prep ;
|
||||||
---- build $PP$s in the resource API, just requires a string.
|
mkPrep str = makePrep str ;
|
||||||
--
|
|
||||||
mkPrep : Str -> Str -> Str -> Str -> Number -> Prep ;
|
--2 Conjunctions
|
||||||
-- noPrep : Prep ;
|
mkConj : overload {
|
||||||
--
|
mkConj : Str -> Conj ; -- and (plural agreement)
|
||||||
---- (These two functions are synonyms.)
|
mkConj : Str -> Number -> Conj ; -- or (agrement number given as argument)
|
||||||
--
|
mkConj : Str -> Str -> Conj ; -- both ... and (plural)
|
||||||
----2 Verbs
|
mkConj : Str -> Str -> Number -> Conj ; -- either ... or (agrement number given as argument)
|
||||||
----
|
} ;
|
||||||
--
|
mkConj = overload {
|
||||||
---- Verbs are constructed by the function $mkV$, which takes a varying
|
mkConj : Str -> Conj = \y -> mk2Conj [] y plural ;
|
||||||
---- number of arguments.
|
mkConj : Str -> Number -> Conj = \y,n -> mk2Conj [] y n ;
|
||||||
--
|
mkConj : Str -> Str -> Conj = \x,y -> mk2Conj x y plural ;
|
||||||
-- mkV : overload {
|
mkConj : Str -> Str -> Number -> Conj = mk2Conj ;
|
||||||
--
|
} ;
|
||||||
---- The regular verb function recognizes the special cases where the last
|
|
||||||
---- character is "y" ("cry-cries" but "buy-buys") or a sibilant
|
mk2Conj : Str -> Str -> Number -> Conj = \x,y,n ->
|
||||||
---- ("kiss-"kisses", "jazz-jazzes", "rush-rushes", "munch - munches",
|
lin Conj (sd2 x y ** {n = n}) ;
|
||||||
---- "fix - fixes").
|
|
||||||
--
|
|
||||||
-- mkV : (cry : Str) -> V ;
|
|
||||||
--
|
|
||||||
---- Give the present and past forms for regular verbs where
|
|
||||||
---- the last letter is duplicated in some forms,
|
|
||||||
---- e.g. "rip - ripped - ripping".
|
|
||||||
--
|
|
||||||
-- mkV : (stop, stopped : Str) -> V ;
|
|
||||||
--
|
|
||||||
---- There is an extensive list of irregular verbs in the module $IrregularHin$.
|
|
||||||
---- In practice, it is enough to give three forms,
|
|
||||||
---- e.g. "drink - drank - drunk".
|
|
||||||
--
|
|
||||||
-- mkV : (drink, drank, drunk : Str) -> V ;
|
|
||||||
--
|
|
||||||
---- Irregular verbs with duplicated consonant in the present participle.
|
|
||||||
--
|
|
||||||
-- mkV : (run, ran, run, running : Str) -> V ;
|
|
||||||
--
|
|
||||||
---- Except for "be", the worst case needs five forms: the infinitive and
|
|
||||||
---- the third person singular present, the past indicative, and the
|
|
||||||
---- past and present participles.
|
|
||||||
--
|
|
||||||
-- mkV : (go, goes, went, gone, going : Str) -> V
|
|
||||||
-- };
|
|
||||||
--
|
|
||||||
---- Verbs with a particle.
|
|
||||||
---- The particle, such as in "switch on", is given as a string.
|
|
||||||
--
|
|
||||||
-- partV : V -> Str -> V ;
|
|
||||||
--
|
|
||||||
---- Reflexive verbs.
|
|
||||||
---- By default, verbs are not reflexive; this function makes them that.
|
|
||||||
--
|
|
||||||
-- reflV : V -> V ;
|
|
||||||
--
|
|
||||||
----3 Two-place verbs
|
|
||||||
----
|
|
||||||
---- Two-place verbs need a preposition, except the special case with direct object.
|
|
||||||
---- (transitive verbs). Notice that a particle comes from the $V$.
|
|
||||||
--
|
|
||||||
-- mkV2 : overload {
|
|
||||||
-- mkV2 : V -> Prep -> V2 ; -- believe in
|
|
||||||
-- mkV2 : V -> V2 -- kill
|
|
||||||
-- };
|
|
||||||
--
|
|
||||||
----3 Three-place verbs
|
|
||||||
----
|
|
||||||
---- Three-place (ditransitive) verbs need two prepositions, of which
|
|
||||||
---- the first one or both can be absent.
|
|
||||||
--
|
|
||||||
mkV3 : V -> Str -> Str -> V3;
|
|
||||||
-- dirV3 : V-> Str -> V3;
|
|
||||||
-- mkV3 : V -> Prep -> Prep -> V3 ; -- speak, with, about
|
|
||||||
-- dirV3 : V -> Prep -> V3 ; -- give,_,to
|
|
||||||
-- dirdirV3 : V -> V3 ; -- give,_,_
|
|
||||||
--
|
|
||||||
----3 Other complement patterns
|
|
||||||
----
|
|
||||||
---- Verbs and adjectives can take complements such as sentences,
|
|
||||||
---- questions, verb phrases, and adjectives.
|
|
||||||
--
|
|
||||||
-- mkV0 : V -> V0 ;
|
-- mkV0 : V -> V0 ;
|
||||||
-- mkVS : V -> VS ;
|
-- mkVS : V -> VS ;
|
||||||
-- mkV2S : V -> Prep -> V2S ;
|
-- mkV2S : V -> Prep -> V2S ;
|
||||||
-- mkVV : V -> VV ;
|
mkVV : V -> VV = \v -> lin VV (v ** {isAux = False});
|
||||||
mkV2V : V -> Str -> Str -> Bool -> V2V ;
|
|
||||||
|
|
||||||
-- mkV2V : V -> Prep -> Prep -> V2V ;
|
-- mkV2V : V -> Prep -> Prep -> V2V ;
|
||||||
-- mkVA : V -> VA ;
|
-- mkVA : V -> VA ;
|
||||||
-- mkV2A : V -> Prep -> V2A ;
|
-- mkV2A : V -> Prep -> V2A ;
|
||||||
@@ -297,286 +151,5 @@ oper
|
|||||||
-- plural = Pl ;
|
-- plural = Pl ;
|
||||||
-- nominative = Nom ;
|
-- nominative = Nom ;
|
||||||
-- genitive = Gen ;
|
-- genitive = Gen ;
|
||||||
--
|
|
||||||
-- Preposition : Type = Str ; -- obsolete
|
|
||||||
--
|
|
||||||
-- regN = \ray ->
|
|
||||||
-- let rays = add_s ray
|
|
||||||
-- in
|
|
||||||
-- mk2N ray rays ;
|
|
||||||
--
|
|
||||||
--
|
|
||||||
-- add_s : Str -> Str = \w -> case w of {
|
|
||||||
-- _ + ("io" | "oo") => w + "s" ; -- radio, bamboo
|
|
||||||
-- _ + ("s" | "z" | "x" | "sh" | "ch" | "o") => w + "es" ; -- bus, hero
|
|
||||||
-- _ + ("a" | "o" | "u" | "e") + "y" => w + "s" ; -- boy
|
|
||||||
-- x + "y" => x + "ies" ; -- fly
|
|
||||||
-- _ => w + "s" -- car
|
|
||||||
-- } ;
|
|
||||||
--
|
|
||||||
-- mk2N = \man,men ->
|
|
||||||
-- let mens = case last men of {
|
|
||||||
-- "s" => men + "'" ;
|
|
||||||
-- _ => men + "'s"
|
|
||||||
-- }
|
|
||||||
-- in
|
|
||||||
-- mk4N man men (man + "'s") mens ;
|
|
||||||
--
|
|
||||||
-- mk4N = \man,men,man's,men's ->
|
|
||||||
-- mkNoun man man's men men's ** {g = Neutr ; lock_N = <>} ;
|
|
||||||
--
|
|
||||||
-- genderN g man = {s = man.s ; g = g ; lock_N = <>} ;
|
|
||||||
--
|
|
||||||
-- compoundN s n = {s = \\x,y => s ++ n.s ! x ! y ; g=n.g ; lock_N = <>} ;
|
|
||||||
--
|
|
||||||
-- mkPN = overload {
|
|
||||||
-- mkPN : Str -> PN = regPN ;
|
|
||||||
-- mkPN : N -> PN = nounPN
|
|
||||||
-- } ;
|
|
||||||
--
|
|
||||||
--
|
|
||||||
-- mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ;
|
|
||||||
-- regN2 n = mkN2 (regN n) (mkPrep "of") ;
|
|
||||||
mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q} ;
|
|
||||||
--
|
|
||||||
----3 Relational common noun phrases
|
|
||||||
----
|
|
||||||
---- In some cases, you may want to make a complex $CN$ into a
|
|
||||||
---- relational noun (e.g. "the old town hall of").
|
|
||||||
--
|
|
||||||
-- cnN2 : CN -> Prep -> N2 ;
|
|
||||||
-- cnN3 : CN -> Prep -> Prep -> N3 ;
|
|
||||||
--
|
|
||||||
---- This is obsolete.
|
|
||||||
-- cnN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ;
|
|
||||||
-- cnN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ;
|
|
||||||
--
|
|
||||||
-- regPN n = regGenPN n human ;
|
|
||||||
-- regGenPN n g = nameReg n g ** {g = g ; lock_PN = <>} ;
|
|
||||||
-- nounPN n = {s = n.s ! singular ; g = n.g ; lock_PN = <>} ;
|
|
||||||
--
|
|
||||||
-- mk2A a b = mkAdjective a a a b ** {lock_A = <>} ;
|
|
||||||
-- regA a = regADeg a ** {lock_A = <>} ;
|
|
||||||
--
|
|
||||||
-- mkA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ;
|
|
||||||
--
|
|
||||||
-- ADeg = A ; ----
|
|
||||||
--
|
|
||||||
-- mkADeg a b c d = mkAdjective a b c d ** {lock_A = <>} ;
|
|
||||||
--
|
|
||||||
-- regADeg happy =
|
|
||||||
-- let
|
|
||||||
-- happ = init happy ;
|
|
||||||
-- y = last happy ;
|
|
||||||
-- happie = case y of {
|
|
||||||
-- "y" => happ + "ie" ;
|
|
||||||
-- "e" => happy ;
|
|
||||||
-- _ => happy + "e"
|
|
||||||
-- } ;
|
|
||||||
-- happily : Str = case happy of {
|
|
||||||
-- _ + "y" => happ + "ily" ;
|
|
||||||
-- _ + "ll" => happy + "y" ;
|
|
||||||
-- _ => happy + "ly"
|
|
||||||
-- } ;
|
|
||||||
-- in mkADeg happy (happie + "r") (happie + "st") happily ;
|
|
||||||
--
|
|
||||||
-- duplADeg fat =
|
|
||||||
-- mkADeg fat
|
|
||||||
-- (fat + last fat + "er") (fat + last fat + "est") (fat + "ly") ;
|
|
||||||
--
|
|
||||||
-- compoundADeg a =
|
|
||||||
-- let ad = (a.s ! AAdj Posit)
|
|
||||||
-- in mkADeg ad ("more" ++ ad) ("most" ++ ad) (a.s ! AAdv) ;
|
|
||||||
--
|
|
||||||
-- adegA a = a ;
|
|
||||||
--
|
|
||||||
-- mkAdv x = ss x ** {lock_Adv = <>} ;
|
|
||||||
-- mkAdV x = ss x ** {lock_AdV = <>} ;
|
|
||||||
-- mkAdA x = ss x ** {lock_AdA = <>} ;
|
|
||||||
--
|
|
||||||
mkPrep sgm sgf plm plf n = let p = makePrep sgm sgf plm plf n in { s = p.s ; n = n ; lock_Prep = <>} ;
|
|
||||||
-- noPrep = mkPrep [] ;
|
|
||||||
--
|
|
||||||
-- mk5V a b c d e = mkVerb a b c d e ** {s1 = [] ; lock_V = <>} ;
|
|
||||||
--
|
|
||||||
-- regV cry =
|
|
||||||
-- let
|
|
||||||
-- cr = init cry ;
|
|
||||||
-- y = last cry ;
|
|
||||||
-- cries = (regN cry).s ! Pl ! Nom ; -- !
|
|
||||||
-- crie = init cries ;
|
|
||||||
-- cried = case last crie of {
|
|
||||||
-- "e" => crie + "d" ;
|
|
||||||
-- _ => crie + "ed"
|
|
||||||
-- } ;
|
|
||||||
-- crying = case y of {
|
|
||||||
-- "e" => case last cr of {
|
|
||||||
-- "e" => cry + "ing" ;
|
|
||||||
-- _ => cr + "ing"
|
|
||||||
-- } ;
|
|
||||||
-- _ => cry + "ing"
|
|
||||||
-- }
|
|
||||||
-- in mk5V cry cries cried cried crying ;
|
|
||||||
--
|
|
||||||
-- reg2V fit fitted =
|
|
||||||
-- let fitt = Predef.tk 2 fitted ;
|
|
||||||
-- in mk5V fit (fit + "s") (fitt + "ed") (fitt + "ed") (fitt + "ing") ;
|
|
||||||
--
|
|
||||||
-- regDuplV fit =
|
|
||||||
-- case last fit of {
|
|
||||||
-- ("a" | "e" | "i" | "o" | "u" | "y") =>
|
|
||||||
-- Predef.error (["final duplication makes no sense for"] ++ fit) ;
|
|
||||||
-- t =>
|
|
||||||
-- let fitt = fit + t in
|
|
||||||
-- mk5V fit (fit + "s") (fitt + "ed") (fitt + "ed") (fitt + "ing")
|
|
||||||
-- } ;
|
|
||||||
--
|
|
||||||
-- irregV x y z = let reg = (regV x).s in
|
|
||||||
-- mk5V x (reg ! VPres) y z (reg ! VPresPart) ** {s1 = [] ; lock_V = <>} ;
|
|
||||||
--
|
|
||||||
-- irreg4V x y z w = let reg = (regV x).s in
|
|
||||||
-- mk5V x (reg ! VPres) y z w ** {s1 = [] ; lock_V = <>} ;
|
|
||||||
--
|
|
||||||
-- irregDuplV fit y z =
|
|
||||||
-- let
|
|
||||||
-- fitting = (regDuplV fit).s ! VPresPart
|
|
||||||
-- in
|
|
||||||
-- mk5V fit (fit + "s") y z fitting ;
|
|
||||||
--
|
|
||||||
-- partV v p = verbPart v p ** {lock_V = <>} ;
|
|
||||||
-- reflV v = {s = v.s ; part = v.part ; lock_V = v.lock_V ; isRefl = True} ;
|
|
||||||
--
|
|
||||||
-- prepV2 v p = v ** {s = v.s ; s1 = v.s1 ; c2 = p.s ; lock_V2 = <>} ;
|
|
||||||
-- dirV2 v = prepV2 v noPrep ;
|
|
||||||
--
|
|
||||||
mkV3 v p q = v ** { c2 = p ; c3 = q ; lock_V3 = <>} ;
|
|
||||||
|
|
||||||
-- mkV3 v p q = v ** {s = v.s ; s1 = v.s1 ; c2 = p.s ; c3 = q.s ; lock_V3 = <>} ;
|
|
||||||
-- dirV3 v p = mkV3 v noPrep p ;
|
|
||||||
-- dirdirV3 v = dirV3 v noPrep ;
|
|
||||||
--
|
|
||||||
-- mkVS v = v ** {lock_VS = <>} ;
|
|
||||||
-- mkVV v = {
|
|
||||||
-- s = table {VVF vf => v.s ! vf ; _ => variants {}} ;
|
|
||||||
-- isAux = False ; lock_VV = <>
|
|
||||||
-- } ;
|
|
||||||
-- mkVQ v = v ** {lock_VQ = <>} ;
|
|
||||||
--
|
|
||||||
-- V0 : Type = V ;
|
|
||||||
---- V2S, V2V, V2Q : Type = V2 ;
|
|
||||||
-- AS, A2S, AV : Type = A ;
|
|
||||||
-- A2V : Type = A2 ;
|
|
||||||
--
|
|
||||||
-- mkV0 v = v ** {lock_V = <>} ;
|
|
||||||
-- mkV2S v p = prepV2 v p ** {lock_V2S = <>} ;
|
|
||||||
mkV2V v s1 s2 b = v ** {isAux = b ; c1 = s1 ; c2 = s2 ; lock_V2V = <>} ;
|
|
||||||
-- mkV2V v p t = prepV2 v p ** {isAux = False ; lock_V2V = <>} ;
|
|
||||||
-- mkVA v = v ** {lock_VA = <>} ;
|
|
||||||
-- mkV2A v p = prepV2 v p ** {lock_V2A = <>} ;
|
|
||||||
-- mkV2Q v p = prepV2 v p ** {lock_V2Q = <>} ;
|
|
||||||
--
|
|
||||||
-- mkAS v = v ** {lock_A = <>} ;
|
|
||||||
-- mkA2S v p = mkA2 v p ** {lock_A = <>} ;
|
|
||||||
-- mkAV v = v ** {lock_A = <>} ;
|
|
||||||
-- mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
|
|
||||||
--
|
|
||||||
--
|
|
||||||
---- pre-overload API and overload definitions
|
|
||||||
--
|
|
||||||
-- mk4N : (man,men,man's,men's : Str) -> N ;
|
|
||||||
-- regN : Str -> N ;
|
|
||||||
-- mk2N : (man,men : Str) -> N ;
|
|
||||||
-- genderN : Gender -> N -> N ;
|
|
||||||
-- compoundN : Str -> N -> N ;
|
|
||||||
--
|
|
||||||
-- mkN = overload {
|
|
||||||
-- mkN : (man,men,man's,men's : Str) -> N = mk4N ;
|
|
||||||
-- mkN : Str -> N = regN ;
|
|
||||||
-- mkN : (man,men : Str) -> N = mk2N ;
|
|
||||||
-- mkN : Gender -> N -> N = genderN ;
|
|
||||||
-- mkN : Str -> N -> N = compoundN
|
|
||||||
-- } ;
|
|
||||||
--
|
|
||||||
--
|
|
||||||
-- mk2A : (free,freely : Str) -> A ;
|
|
||||||
-- regA : Str -> A ;
|
|
||||||
--
|
|
||||||
-- mkA = overload {
|
|
||||||
-- mkA : Str -> A = regA ;
|
|
||||||
-- mkA : (fat,fatter : Str) -> A = \fat,fatter ->
|
|
||||||
-- mkAdjective fat fatter (init fatter + "st") (fat + "ly") ** {lock_A = <>} ;
|
|
||||||
-- mkA : (good,better,best,well : Str) -> A = \a,b,c,d ->
|
|
||||||
-- mkAdjective a b c d ** {lock_A = <>}
|
|
||||||
-- } ;
|
|
||||||
--
|
|
||||||
-- compoundA = compoundADeg ;
|
|
||||||
--
|
|
||||||
--
|
|
||||||
-- mk5V : (go, goes, went, gone, going : Str) -> V ;
|
|
||||||
-- regV : (cry : Str) -> V ;
|
|
||||||
-- reg2V : (stop, stopped : Str) -> V;
|
|
||||||
-- irregV : (drink, drank, drunk : Str) -> V ;
|
|
||||||
-- irreg4V : (run, ran, run, running : Str) -> V ;
|
|
||||||
--
|
|
||||||
-- -- Use reg2V instead
|
|
||||||
-- regDuplV : Str -> V ;
|
|
||||||
-- -- Use irreg4V instead
|
|
||||||
-- irregDuplV : (get, got, gotten : Str) -> V ;
|
|
||||||
--
|
|
||||||
-- mkV = overload {
|
|
||||||
-- mkV : (cry : Str) -> V = regV ;
|
|
||||||
-- mkV : (stop, stopped : Str) -> V = reg2V ;
|
|
||||||
-- mkV : (drink, drank, drunk : Str) -> V = irregV ;
|
|
||||||
-- mkV : (run, ran, run, running : Str) -> V = irreg4V ;
|
|
||||||
-- mkV : (go, goes, went, gone, going : Str) -> V = mk5V
|
|
||||||
-- };
|
|
||||||
--
|
|
||||||
-- prepV2 : V -> Prep -> V2 ;
|
|
||||||
-- dirV2 : V -> V2 ;
|
|
||||||
--
|
|
||||||
-- mkV2 = overload {
|
|
||||||
-- mkV2 : V -> Prep -> V2 = prepV2;
|
|
||||||
-- mkV2 : V -> V2 = dirV2
|
|
||||||
-- };
|
|
||||||
--
|
|
||||||
--
|
|
||||||
------ obsolete
|
|
||||||
--
|
|
||||||
---- Comparison adjectives may two more forms.
|
|
||||||
--
|
|
||||||
-- ADeg : Type ;
|
|
||||||
--
|
|
||||||
-- mkADeg : (good,better,best,well : Str) -> ADeg ;
|
|
||||||
--
|
|
||||||
---- The regular pattern recognizes two common variations:
|
|
||||||
---- "-e" ("rude" - "ruder" - "rudest") and
|
|
||||||
---- "-y" ("happy - happier - happiest - happily")
|
|
||||||
--
|
|
||||||
-- regADeg : Str -> ADeg ; -- long, longer, longest
|
|
||||||
--
|
|
||||||
---- However, the duplication of the final consonant is nor predicted,
|
|
||||||
---- but a separate pattern is used:
|
|
||||||
--
|
|
||||||
-- duplADeg : Str -> ADeg ; -- fat, fatter, fattest
|
|
||||||
--
|
|
||||||
---- If comparison is formed by "more", "most", as in general for
|
|
||||||
---- long adjective, the following pattern is used:
|
|
||||||
--
|
|
||||||
-- compoundADeg : A -> ADeg ; -- -/more/most ridiculous
|
|
||||||
--
|
|
||||||
---- From a given $ADeg$, it is possible to get back to $A$.
|
|
||||||
--
|
|
||||||
-- adegA : ADeg -> A ;
|
|
||||||
--
|
|
||||||
--
|
|
||||||
-- regPN : Str -> PN ;
|
|
||||||
-- regGenPN : Str -> Gender -> PN ; -- John, John's
|
|
||||||
--
|
|
||||||
---- Sometimes you can reuse a common noun as a proper name, e.g. "Bank".
|
|
||||||
--
|
|
||||||
-- nounPN : N -> PN ;
|
|
||||||
--
|
|
||||||
--
|
|
||||||
--
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
concrete QuestionUrd of Question = CatUrd ** open ResUrd, Prelude in {
|
concrete QuestionUrd of Question = CatUrd ** open ResUrd, Prelude in {
|
||||||
--
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
coding = utf8;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
@@ -12,25 +12,30 @@ concrete QuestionUrd of Question = CatUrd ** open ResUrd, Prelude in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
QuestVP qp vp =
|
QuestVP qp vp =
|
||||||
|
let cl = mkSClause ("") (Ag qp.g qp.n Pers3_Near) vp;
|
||||||
let cl = mkSClause (qp.s ! Dir) (Ag qp.g qp.n Pers3_Near) vp;
|
qp1 = qp.s ! Dir;
|
||||||
cl2 = mkSClause (qp.s ! Obl ++ "nE" ) (Ag qp.g Sg Pers3_Near) vp
|
qp2 = qp.s ! Obl ++ "nE"
|
||||||
-- in {s = \\t,p,o => cl.s ! t ! p ! ODir} ;
|
|
||||||
in { s = \\t,p,o => case t of {
|
in { s = \\t,p,o => case t of {
|
||||||
VPImpPast => cl2.s ! t ! p ! ODir;
|
VPImpPast => qp2 ++ cl.s ! t ! p ! ODir;
|
||||||
_ => cl.s ! t ! p ! ODir
|
_ => qp1 ++ cl.s ! t ! p ! ODir
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
-- QuestSlash ip slash =
|
QuestSlash ip slash =
|
||||||
-- mkQuestion (ss (slash.c2 ++ ip.s ! Acc)) slash ;
|
let ip1 = ip.s ! Dir;
|
||||||
-- --- stranding in ExratHin
|
ip2 = ip.s ! Obl ++ "nE"
|
||||||
|
in {
|
||||||
|
s = \\t,p,o => case t of {
|
||||||
|
VPImpPast => ip2 ++ slash.s ! t ! p ! ODir;
|
||||||
|
_ => ip1 ++ slash.s ! t ! p ! ODir
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
QuestIAdv iadv cl = {
|
QuestIAdv iadv cl = {
|
||||||
s = \\t,p,_ => iadv.s ++ cl.s ! t ! p ! ODir;
|
s = \\t,p,_ => iadv.s ++ cl.s ! t ! p ! ODir;
|
||||||
};
|
};
|
||||||
|
|
||||||
QuestIComp icomp np =
|
QuestIComp icomp np =
|
||||||
let cl = mkSClause (np.s ! NPC Dir ++ icomp.s) np.a (predAux auxBe);
|
let cl = mkSClause (np.s ! NPC Dir ++ icomp.s) np.a (predAux auxBe);
|
||||||
in {
|
in {
|
||||||
s = \\t,p,qf => case qf of {
|
s = \\t,p,qf => case qf of {
|
||||||
QDir => cl.s ! t ! p ! ODir;
|
QDir => cl.s ! t ! p ! ODir;
|
||||||
@@ -38,7 +43,7 @@ concrete QuestionUrd of Question = CatUrd ** open ResUrd, Prelude in {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
PrepIP p ip = {s = ip.s ! Voc ++ p.s ! PP ip.n ip.g } ;
|
PrepIP p ip = {s = ip.s ! ResUrd. Voc ++ p.s } ;
|
||||||
|
|
||||||
AdvIP ip adv = {
|
AdvIP ip adv = {
|
||||||
s = \\c => adv.s ++ ip.s ! c ;
|
s = \\c => adv.s ++ ip.s ! c ;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
concrete RelativeUrd of Relative = CatUrd ** open ResUrd in {
|
concrete RelativeUrd of Relative = CatUrd ** open ResUrd in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
coding = utf8;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
@@ -30,7 +31,7 @@ concrete RelativeUrd of Relative = CatUrd ** open ResUrd in {
|
|||||||
cl.s ! t ! p ! ODir ;
|
cl.s ! t ! p ! ODir ;
|
||||||
c = Dir
|
c = Dir
|
||||||
} ;
|
} ;
|
||||||
--
|
--
|
||||||
---- Pied piping: "at which we are looking". Stranding and empty
|
---- Pied piping: "at which we are looking". Stranding and empty
|
||||||
---- relative are defined in $ExtraHin.gf$ ("that we are looking at",
|
---- relative are defined in $ExtraHin.gf$ ("that we are looking at",
|
||||||
---- "we are looking at").
|
---- "we are looking at").
|
||||||
@@ -44,7 +45,7 @@ concrete RelativeUrd of Relative = CatUrd ** open ResUrd in {
|
|||||||
} ;
|
} ;
|
||||||
-}
|
-}
|
||||||
FunRP p np rp = {
|
FunRP p np rp = {
|
||||||
s = \\n,c => rp.s ! n ! c ++ np.s ! NPC c ++ p.s ! PP n (giveGender np.a) ;
|
s = \\n,c => rp.s ! n ! c ++ np.s ! NPC c ++ p.s ;
|
||||||
a = RAg np.a
|
a = RAg np.a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -52,17 +53,15 @@ concrete RelativeUrd of Relative = CatUrd ** open ResUrd in {
|
|||||||
s = table {
|
s = table {
|
||||||
Sg => table {
|
Sg => table {
|
||||||
|
|
||||||
Dir => "jw" ;
|
ResUrd.Dir => "jw" ;
|
||||||
Obl => "js" ;
|
ResUrd.Obl => "js" ;
|
||||||
Voc => "js"
|
ResUrd.Voc => "js"
|
||||||
};
|
};
|
||||||
Pl => table {
|
Pl => table {
|
||||||
Dir => "jw" ;
|
ResUrd.Dir => "jw" ;
|
||||||
Obl => "jn" ;
|
ResUrd.Obl => "jn" ;
|
||||||
Voc => "jn"
|
ResUrd.Voc => "jn"
|
||||||
}
|
}
|
||||||
-- RPrep Neutr => "jn" ;
|
|
||||||
-- RPrep _ => "whom"
|
|
||||||
};
|
};
|
||||||
a = RNoAg
|
a = RNoAg
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,43 +1,42 @@
|
|||||||
concrete SentenceUrd of Sentence = CatUrd ** open Prelude, ResUrd in {
|
concrete SentenceUrd of Sentence = CatUrd ** open Prelude, ResUrd in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
coding = utf8;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
PredVP np vp = mkClause np vp ;
|
PredVP np vp = mkClause np vp ;
|
||||||
-- PredVP np vp = np.s!NPC Sg Pers1 Dir ++ vp.s ! Pat1 Inf1 ;
|
|
||||||
|
|
||||||
PredSCVP sc vp = mkSClause sc.s (defaultAgr) vp ;
|
PredSCVP sc vp = mkSClause sc.s (defaultAgr) vp ;
|
||||||
--
|
|
||||||
-- ImpVP vp = {
|
ImpVP vp = {
|
||||||
-- s = \\pol,n =>
|
s = \\pol,n =>
|
||||||
-- let
|
let
|
||||||
-- agr = AgP2 (numImp n) ;
|
agr = Ag Masc (numImp n) Pers2_Casual ;
|
||||||
-- verb = infVP True vp agr ;
|
verb = infVP True vp agr ;
|
||||||
-- dont = case pol of {
|
dont = case pol of {
|
||||||
-- CNeg True => "don't" ;
|
CNeg True => "mt" ;
|
||||||
-- CNeg False => "do" ++ "not" ;
|
CNeg False => "nh" ;
|
||||||
-- _ => []
|
_ => []
|
||||||
-- }
|
}
|
||||||
-- in
|
in
|
||||||
-- dont ++ verb
|
dont ++ verb
|
||||||
-- } ;
|
} ;
|
||||||
--
|
|
||||||
SlashVP np vp =
|
SlashVP np vp =
|
||||||
mkClause np vp ** {c2 = vp.c2} ;
|
mkClause np vp ** {c2 = vp.c2} ;
|
||||||
|
|
||||||
AdvSlash slash adv = {
|
AdvSlash slash adv = {
|
||||||
s = \\t,p,o => adv.s ++ slash.s ! t ! p ! o ;
|
s = \\t,p,o => adv.s ++ slash.s ! t ! p ! o ;
|
||||||
-- s = \\t,a,b,o => slash.s ! t ! a ! b ! o ++ adv.s ;
|
|
||||||
c2 = slash.c2
|
c2 = slash.c2
|
||||||
} ;
|
} ;
|
||||||
--
|
|
||||||
SlashPrep cl prep = cl ** {c2 = { s = prep.s ! PP Sg Masc ; c = VIntrans}} ;
|
SlashPrep cl prep = cl ** {c2 = { s = prep.s ; c = VIntrans}} ;
|
||||||
--
|
|
||||||
-- SlashVS np vs slash =
|
SlashVS np vs slash =
|
||||||
-- mkClause (np.s ! Nom) np.a
|
mkClause np
|
||||||
-- (insertObj (\\_ => conjThat ++ slash.s) (predV vs)) **
|
(insertObj2 (conjThat ++ slash.s) (predV vs)) **
|
||||||
-- {c2 = slash.c2} ;
|
{c2 = slash.c2} ;
|
||||||
|
|
||||||
EmbedS s = {s = conjThat ++ s.s} ;
|
EmbedS s = {s = conjThat ++ s.s} ;
|
||||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||||
@@ -82,16 +81,23 @@ concrete SentenceUrd of Sentence = CatUrd ** open Prelude, ResUrd in {
|
|||||||
};
|
};
|
||||||
c = rcl.c
|
c = rcl.c
|
||||||
} ;
|
} ;
|
||||||
-- UseSlash t a p cl = {
|
UseSlash temp p clslash = {
|
||||||
-- s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! ODir ;
|
s = case <temp.t,temp.a> of {
|
||||||
-- c2 = cl.c2
|
<Pres,Simul> => temp.s ++ p.s ++ clslash.s ! VPGenPres ! p.p ! ODir;
|
||||||
-- } ;
|
<Pres,Anter> => temp.s ++ p.s ++ clslash.s ! VPPerfPres ! p.p ! ODir;
|
||||||
--
|
<Past,Simul> => temp.s ++ p.s ++ clslash.s ! VPImpPast ! p.p ! ODir ;
|
||||||
AdvS a s = {s = a.s ++ "," ++ s.s} ;
|
<Past,Anter> => temp.s ++ p.s ++ clslash.s ! VPPerfPast ! p.p ! ODir;
|
||||||
--
|
<Fut,Simul> => temp.s ++ p.s ++ clslash.s ! VPFut ! p.p ! ODir;
|
||||||
-- RelS s r = {s = s.s ++ "," ++ r.s ! agrP3 Sg} ;
|
<Fut,Anter> => temp.s ++ p.s ++ clslash.s ! VPPerfFut ! p.p ! ODir;
|
||||||
--
|
<Cond,Simul> => temp.s ++ p.s ++ clslash.s ! VPContPres ! p.p ! ODir;
|
||||||
-- oper
|
<Cond,Anter> => temp.s ++ p.s ++ clslash.s ! VPContPast ! p.p ! ODir
|
||||||
-- ctr = contrNeg True ; -- contracted negations
|
};
|
||||||
|
c2 = clslash.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvS a s = {s = a.s ++ s.s} ;
|
||||||
|
|
||||||
|
RelS s r = {s = s.s ++ r.s ! agrP3 Masc Sg} ;
|
||||||
|
SSubjS s sj s = { s = s.s ++ sj.s ++ s.s};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,63 +1,50 @@
|
|||||||
concrete StructuralUrd of Structural = CatUrd **
|
concrete StructuralUrd of Structural = CatUrd **
|
||||||
open MorphoUrd, ParadigmsUrd, Prelude in {
|
open MorphoUrd, ParadigmsUrd, Prelude, NounUrd in {
|
||||||
|
|
||||||
flags optimize=all ;
|
flags optimize=all ;
|
||||||
|
coding = utf8;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
-- above_Prep = ss "awpr" ;
|
above_Prep = ss "awpr" ;
|
||||||
-- after_Prep = ss "after" ;
|
after_Prep = ss "kE bed" ;
|
||||||
all_Predet = ss "tmam" ;
|
all_Predet = ss "tmam" ;
|
||||||
almost_AdA, almost_AdN = ss "tqryba" ;
|
almost_AdA, almost_AdN = ss "tqryba" ;
|
||||||
although_Subj = ss "agrch-" ;
|
although_Subj = ss "agrch-" ;
|
||||||
always_AdV = ss "hmyXh" ;
|
always_AdV = ss "hmyXh" ;
|
||||||
and_Conj = sd2 [] "awr" ** {n = Pl} ;
|
and_Conj = sd2 [] "awr" ** {n = Pl} ;
|
||||||
-----b and_Conj = ss "and" ** {n = Pl} ;
|
|
||||||
because_Subj = ss "kywnkh-" ;
|
because_Subj = ss "kywnkh-" ;
|
||||||
-- before_Prep = ss "before" ;
|
before_Prep = ss "phlE" ;
|
||||||
-- behind_Prep = ss "behind" ;
|
behind_Prep = ss "pych-E" ;
|
||||||
-- between_Prep = ss "between" ;
|
between_Prep = ss "drmyaN" ;
|
||||||
both7and_DConj = sd2 "dwnwN" "awr" ** {n = Pl} ;
|
both7and_DConj = sd2 "dwnwN" "awr" ** {n = Pl} ;
|
||||||
but_PConj = ss "lykn" ;
|
but_PConj = ss "lykn" ;
|
||||||
-- by8agent_Prep = ss "by" ;
|
by8agent_Prep = ss "" ;
|
||||||
-- by8means_Prep = ss "by" ;
|
by8means_Prep = ss "" ;
|
||||||
can_VV = mkV "skna" ** { isAux = True} ;
|
can8know_VV,can_VV = mkV "skna" ** { isAux = True} ;
|
||||||
-- can8know_VV, can_VV = {
|
during_Prep = ss ["kE drmyaN"] ;
|
||||||
-- s = table {
|
|
||||||
-- VVF VInf => ["be able to"] ;
|
|
||||||
-- VVF VPres => "can" ;
|
|
||||||
-- VVF VPPart => ["been able to"] ;
|
|
||||||
-- VVF VPresPart => ["being able to"] ;
|
|
||||||
-- VVF VPast => "could" ; --# notpresent
|
|
||||||
-- VVPastNeg => "couldn't" ; --# notpresent
|
|
||||||
-- VVPresNeg => "can't"
|
|
||||||
-- } ;
|
|
||||||
-- isAux = True
|
|
||||||
-- } ;
|
|
||||||
-- during_Prep = ss "during" ;
|
|
||||||
either7or_DConj = sd2 "kwy ayk" "or" ** {n = Sg} ;
|
either7or_DConj = sd2 "kwy ayk" "or" ** {n = Sg} ;
|
||||||
-- everybody_NP = regNP "everybody" Sg ;
|
everybody_NP = MassNP (UseN (ParadigmsUrd.mkN "hr kwy" "hr kwy" "hr kwy" "hr kwy" "hr kwy" "hr kwy" Masc )); -- not a good way coz need to include NounUrd
|
||||||
every_Det = mkDet "hr" "hr" "hr" "hr" Sg;
|
every_Det = mkDet "hr" "hr" "hr" "hr" Sg;
|
||||||
-- everything_NP = regNP "everything" Sg ;
|
everything_NP = MassNP (UseN (ParadigmsUrd.mkN "hr cyz" "hr cyz" "hr cyzw" "sb cyzyN" "sb cyzwN" "sb cyzw" Masc ));
|
||||||
everywhere_Adv = ss "hr jgh" ;
|
everywhere_Adv = ss "hr jgh" ;
|
||||||
few_Det = mkDet "cnd" "cnd" "cnd" "cnd" Pl ;
|
few_Det = mkDet "cnd" "cnd" "cnd" "cnd" Pl ;
|
||||||
first_Ord = ss "pehla" ; --DEPRECATED
|
first_Ord = {s = "pehla" ; n = Sg} ; --DEPRECATED
|
||||||
-- for_Prep = ss "for" ;
|
for_Prep = ss "kylyE" ;
|
||||||
-- from_Prep = ss "from" ;
|
from_Prep = ss "sE" ;
|
||||||
-- he_Pron = personalPronoun P3 Sg ** {a = Ag Masc Sg P3} ;
|
he_Pron = personalPN "wh" "as" "" "as ka" Sg Masc Pers3_Distant ;
|
||||||
here_Adv = ss "yhaN" ;
|
here_Adv = ss "yhaN" ;
|
||||||
here7to_Adv = ss ["yhaN pr"] ;
|
here7to_Adv = ss ["yhaN pr"] ;
|
||||||
here7from_Adv = ss ["yhaN sE"] ;
|
here7from_Adv = ss ["yhaN sE"] ;
|
||||||
how_IAdv = ss "how" ;
|
how_IAdv = ss "how" ;
|
||||||
how8many_IDet = makeIDet "ktnE" "ktny" Pl ;
|
how8many_IDet = makeIDet "ktnE" "ktny" Pl ;
|
||||||
if_Subj = ss "if" ;
|
if_Subj = ss "agr" ;
|
||||||
-- in8front_Prep = ss ["in front of"] ;
|
in8front_Prep = ss ["kE samnE"] ;
|
||||||
i_Pron = personalPN "myN";
|
i_Pron = personalPN "myN" "mjh-" "" "myra" Sg Masc Pers1;
|
||||||
-- i_Pron = personalPronoun P1 Sg ** {a = Ag Masc Sg P1} ;
|
in_Prep = ss "meN" ;
|
||||||
-- in_Prep = ss "meN" ;
|
it_Pron = personalPN "yh" "yh" "yh" "as ka" Sg Masc Pers3_Near;
|
||||||
-- it_Pron = mkNP "it" "it" "its" Sg P3 Neutr ;
|
|
||||||
less_CAdv = {s = "km" ; p = ""} ;
|
less_CAdv = {s = "km" ; p = ""} ;
|
||||||
many_Det = mkDet "bht zyadh" "bht zyadh" "bht zyadh" "bht zyadh" Pl ;
|
many_Det = mkDet "bht zyadh" "bht zyadh" "bht zyadh" "bht zyadh" Pl ;
|
||||||
-- more_CAdv = ss "zyadh-" ;
|
more_CAdv = {s = "zyadh-" ; p = "" } ;
|
||||||
most_Predet = ss "zyadh tr" ;
|
most_Predet = ss "zyadh tr" ;
|
||||||
much_Det = mkDet "bht" "bht" "bht" "bht" Sg ;
|
much_Det = mkDet "bht" "bht" "bht" "bht" Sg ;
|
||||||
-- must_VV = {
|
-- must_VV = {
|
||||||
@@ -74,64 +61,69 @@ can_VV = mkV "skna" ** { isAux = True} ;
|
|||||||
-- } ;
|
-- } ;
|
||||||
-----b no_Phr = ss "no" ;
|
-----b no_Phr = ss "no" ;
|
||||||
no_Utt = ss "nhyN" ;
|
no_Utt = ss "nhyN" ;
|
||||||
-- on_Prep = ss "on" ;
|
on_Prep = ss "pr" ;
|
||||||
------ one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
|
-- one_Quant = demoPN "ayk" "ayk" "ayk" ; -- DEPRECATED
|
||||||
only_Predet = ss "srf" ;
|
only_Predet = ss "srf" ;
|
||||||
-- or_Conj = sd2 [] "or" ** {n = Sg} ;
|
or_Conj = sd2 [] "ya" ** {n = Sg} ;
|
||||||
-- otherwise_PConj = ss "othewise" ;
|
otherwise_PConj = ss "ya ph-r" ;
|
||||||
-- part_Prep = ss "of" ;
|
part_Prep = ss "" ;
|
||||||
please_Voc = ss "mhrbani" ;
|
please_Voc = ss "mhrbani" ;
|
||||||
-- possess_Prep = ss "of" ;
|
possess_Prep = ss "ka" ;
|
||||||
quite_Adv = ss "khamosh" ;
|
quite_Adv = ss "khamosh" ;
|
||||||
-- she_Pron = mkNP "she" "her" "her" Sg P3 Fem ;
|
she_Pron = personalPN "wh" "as" "wh" "as ky" Sg Fem Pers3_Distant ;
|
||||||
so_AdA = ss "so" ;
|
so_AdA = ss "so" ;
|
||||||
-- somebody_NP = regNP "somebody" Sg ;
|
somebody_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy" "kwy" "kwy" "kwy" "kwy" "kwy" Masc ));
|
||||||
someSg_Det = mkDet "kch-" "kch-" "kch-" "kch-" Sg ;
|
someSg_Det = mkDet "kch-" "kch-" "kch-" "kch-" Sg ;
|
||||||
somePl_Det = mkDet "kch-" "kch-" "kch-" "kch-" Pl ;
|
somePl_Det = mkDet "kch-" "kch-" "kch-" "kch-" Pl ;
|
||||||
-- something_NP = regNP "something" Sg ;
|
something_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy cyz" "kwy cyz" "kwy cyz" "kh- cyzyN" "kh- cyzwN" "kh- cyzw" Masc ));
|
||||||
somewhere_Adv = ss "khin pr" ;
|
somewhere_Adv = ss "khin pr" ;
|
||||||
-- that_Quant = mkQuant "that" "those" ;
|
that_Quant = demoPN "wh" "as" "an" ;
|
||||||
|
that_Subj = ss "kh";
|
||||||
there_Adv = ss "whaN" ;
|
there_Adv = ss "whaN" ;
|
||||||
there7to_Adv = ss "whaN pr" ;
|
there7to_Adv = ss "whaN pr" ;
|
||||||
-- there7from_Adv = ss ["from there"] ;
|
there7from_Adv = ss ["whaN sE"] ;
|
||||||
-- therefore_PConj = ss "therefore" ;
|
therefore_PConj = ss "as lyE" ;
|
||||||
-- they_Pron = mkNP "they" "them" "their" Pl P3 Masc ; ----
|
they_Pron = personalPN "wh" "wh" "wh" "an ka" Pl Masc Pers3_Distant ; ----
|
||||||
this_Quant = demoPN "yh" "as" "an";
|
this_Quant = demoPN "yh" "as" "an";
|
||||||
that_Quant = demoPN "wh" "us" "un";
|
through_Prep = ss ["myN sE"] ;
|
||||||
-- this_Quant = mkQuant "this" "these" ;
|
|
||||||
-- through_Prep = ss "through" ;
|
|
||||||
too_AdA = ss "bht" ;
|
too_AdA = ss "bht" ;
|
||||||
-- to_Prep = ss "to" ;
|
to_Prep = ss "kw" ;
|
||||||
-- under_Prep = ss "under" ;
|
under_Prep = ss "nycE" ;
|
||||||
very_AdA = ss "bht" ;
|
very_AdA = ss "bht" ;
|
||||||
want_VV = mkV "cahna" ** { isAux = True} ;
|
want_VV = mkV "cahna" ** { isAux = False} ;
|
||||||
-- want_VV = P.mkVV (P.regV "want") ;
|
we_Pron = personalPN "hm" "hm" "hm" "hmara" Pl Masc Pers1 ;
|
||||||
-- we_Pron = personalPronoun P1 Pl ** {a = Ag Masc Pl P1} ;
|
|
||||||
-- whatPl_IP = makeIntPronForm;
|
|
||||||
whatSg_IP = mkIP "kya" "kis" "kis" Sg Masc ;
|
whatSg_IP = mkIP "kya" "kis" "kis" Sg Masc ;
|
||||||
whatPl_IP = mkIP "kya" "kin" "kin" Pl Masc ;
|
whatPl_IP = mkIP "kya" "kin" "kin" Pl Masc ;
|
||||||
-- when_IAdv = ss "when" ;
|
when_IAdv = ss "kb" ;
|
||||||
-- when_Subj = ss "when" ;
|
when_Subj = ss "kb" ;
|
||||||
where_IAdv = ss "khaN" ;
|
where_IAdv = ss "khaN" ;
|
||||||
which_IQuant = {s = \\_ => "kwn sy"} ;
|
which_IQuant = {s = \\_ => "kwn sy"} ;
|
||||||
-- whichPl_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ;
|
-- whichPl_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ;
|
||||||
-- whichSg_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ;
|
-- whichSg_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ;
|
||||||
whoSg_IP = mkIP "kwn" "kis" "kis" Sg Masc ;
|
whoSg_IP = mkIP "kwn" "kis" "kis" Sg Masc ;
|
||||||
whoPl_IP = mkIP "kwn" "kn" "knhwN" Pl Masc ;
|
whoPl_IP = mkIP "kwn" "kn" "knhwN" Pl Masc ;
|
||||||
-- why_IAdv = ss "why" ;
|
why_IAdv = ss "kywN" ;
|
||||||
-- without_Prep = ss "without" ;
|
without_Prep = ss ["kE bGyr"] ;
|
||||||
with_Prep = makePrep "kE sath-" "kE sath-" "kE sath-" "kE sath-" Sg ;
|
with_Prep = ss ["kE sath-"] ;
|
||||||
-----b yes_Phr = ss "yes" ;
|
-- yes_Phr = ss "haN" ;
|
||||||
yes_Utt = ss "haN" ;
|
yes_Utt = ss "haN" ;
|
||||||
-- youSg_Pron = mkNP "you" "you" "your" Sg P2 Masc ;
|
youSg_Pron = personalPN "tm" "tm" "tm" "tmh-ara" Sg Masc Pers2_Casual ;
|
||||||
-- youPl_Pron = mkNP "you" "you" "your" Pl P2 Masc ;
|
youPl_Pron = personalPN "tm" "tm" "tm" "tmh-ara" Pl Masc Pers2_Casual ;
|
||||||
-- youPol_Pron = mkNP "you" "you" "your" Sg P2 Masc ;
|
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"} ;
|
||||||
oper
|
if_then_Conj = sd2 "agr" "tw" ** {n = Sg} ;
|
||||||
mkQuant : Str -> Str -> {s : Number => Str} = \x,y -> {
|
at_least_AdN = ss ["km az km"] ;
|
||||||
s = table Number [x ; y]
|
at_most_AdN = ss ["zyadh sE zyadh"];
|
||||||
} ;
|
nothing_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy cyz nhyN" "kwy cyz nhyN" "kwy cyz nhyN" "kwy cyz nhyN" "kwy cyz nhyN" "kwy cyz nhyN" Masc ));
|
||||||
|
except_Prep = ss "swaE" ;
|
||||||
|
nobody_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" Masc ));
|
||||||
|
|
||||||
|
as_CAdv = {s = "etna" ; p = "jtna"} ;
|
||||||
|
|
||||||
|
have_V2 = mkV2 (mkV "rakh-na") "" ;
|
||||||
|
|
||||||
|
language_title_Utt = ss "ardw" ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,20 +4,19 @@ concrete VerbUrd of Verb = CatUrd ** open ResUrd in {
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
UseV v = predV v ;
|
UseV v = predV v ;
|
||||||
SlashV2a v = predV v ** {c2 = v.c2} ;
|
SlashV2a v = predV v ** {c2 = {s = v.c2.s ; c = VIntrans}} ;
|
||||||
Slash2V3 v np =
|
Slash2V3 v np =
|
||||||
insertObjc (\\_ => np.s ! NPObj ++ v.c3 ) (predV v ** {c2 = {s = v.c2 ; c = VTrans}}) ;
|
insertObjc (\\_ => np.s ! NPObj ++ v.c3 ) (predV v ** {c2 = {s = v.c2 ; c = VTrans}}) ;
|
||||||
Slash3V3 v np =
|
Slash3V3 v np =
|
||||||
insertObjc (\\_ => np.s ! NPC Obl ++ v.c2) (predV v ** {c2 = {s = v.c3 ; c = VTrans}}) ;
|
insertObjc (\\_ => np.s ! NPC Obl ++ v.c2) (predV v ** {c2 = {s = v.c3 ; c = VTrans}}) ;
|
||||||
|
ComplVV v vp = insertVV (infVV v.isAux vp) (predV v) ;
|
||||||
ComplVV v vp = insertObj (\\a => infVP v.isAux vp a) (predV v) ;
|
ComplVS v s = insertObj2 (conjThat ++ s.s) (predV v) ;
|
||||||
ComplVS v s = insertObj (\\_ => conjThat ++ s.s) (predV v) ;
|
ComplVQ v q = insertObj2 (conjThat ++ q.s ! QIndir) (predV v) ;
|
||||||
ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ;
|
|
||||||
ComplVA v ap = insertObj (\\a => ap.s ! giveNumber a ! giveGender a ! Dir ! Posit) (predV v) ;
|
ComplVA v ap = insertObj (\\a => ap.s ! giveNumber a ! giveGender a ! Dir ! Posit) (predV v) ;
|
||||||
SlashV2V v vp = insertObjc (\\a => infVP v.isAux vp a) (predVc v) ;
|
SlashV2V v vp = insertVV ((vp.s!VPImp).inf++"ky") (predV v) **{c2 = {s = "sE" ; c = VIntrans}} ;
|
||||||
SlashV2S v s = insertObjc (\\_ => conjThat ++ s.s) (predV v ** {c2 = {s = "" ; c = VTrans}}) ;
|
SlashV2S v s = insertObjc2 (conjThat ++ s.s) (predV v ** {c2 = {s = "kw" ; c = VIntrans}}) ;
|
||||||
SlashV2Q v q = insertObjc (\\_ => conjThat ++ q.s ! QIndir) (predV v ** {c2 = {s = "" ; c = VTrans}}) ;
|
SlashV2Q v q = insertObjc2 (conjThat ++ q.s ! QIndir) (predV v ** {c2 = {s = "sE" ; c = VIntrans}}) ;
|
||||||
SlashV2A v ap = insertObjc (\\a => ap.s ! giveNumber a ! giveGender a ! Dir ! Posit) (predV v ** {c2 = {s = "kw" ; c = VTrans}}) ; ----
|
SlashV2A v ap = insertObjc (\\a => ap.s ! giveNumber a ! giveGender a ! Dir ! Posit) (predV v ** {c2 = {s = "kw" ; c = VIntrans}}) ; ----
|
||||||
ComplSlash vp np = insertObject np vp ;
|
ComplSlash vp np = insertObject np vp ;
|
||||||
SlashVV vv vp =
|
SlashVV vv vp =
|
||||||
insertObj (\\a => infVP vv.isAux vp a) (predV vv) **
|
insertObj (\\a => infVP vv.isAux vp a) (predV vv) **
|
||||||
@@ -31,9 +30,8 @@ concrete VerbUrd of Verb = CatUrd ** open ResUrd in {
|
|||||||
AdvVP vp adv = insertObj (\\_ => adv.s) vp ;
|
AdvVP vp adv = insertObj (\\_ => adv.s) vp ;
|
||||||
|
|
||||||
AdVVP adv vp = insertAdV adv.s vp ;
|
AdVVP adv vp = insertAdV adv.s vp ;
|
||||||
-- ReflVP v = insertObjPre (\\a => v.c2 ++ reflPron ! a) v ;
|
ReflVP v = insertObjPre (\\_ => RefPron) v ;
|
||||||
-- PassV2 v = insertObj (\\_ => v.s ! VPPart) (predAux auxBe) ;
|
PassV2 v = predV v ; -- need to be fixed
|
||||||
|
|
||||||
CompAP ap ={s = \\a => ap.s ! giveNumber a ! giveGender a ! Dir ! Posit } ;
|
CompAP ap ={s = \\a => ap.s ! giveNumber a ! giveGender a ! Dir ! Posit } ;
|
||||||
CompNP np = {s = \\_ => np.s ! NPObj} ;
|
CompNP np = {s = \\_ => np.s ! NPObj} ;
|
||||||
CompAdv a = {s = \\_ => a.s} ;
|
CompAdv a = {s = \\_ => a.s} ;
|
||||||
|
|||||||
Reference in New Issue
Block a user