1
0
forked from GitHub/gf-core

added Mlt to lib/src/Make.hs ; removed spurious Hindustani files from lib/urdu

This commit is contained in:
aarne
2012-09-12 12:37:48 +00:00
parent 2700a4e604
commit a92fbfa8c1
5 changed files with 2 additions and 551 deletions

View File

@@ -45,6 +45,7 @@ langsCoding = [
(("japanese", "Jpn"),""),
(("latin", "Lat"),""),
(("latvian", "Lav"),""),
(("maltese", "Mlt"),""),
(("nepali", "Nep"),""),
(("norwegian","Nor"),"Scand"),
(("persian", "Pes"),""),
@@ -75,7 +76,7 @@ langsLang = langs `except` langsIncomplete
langsPresent = langsLang `except` ["Jpn","Nep","Pes","Snd","Tha"]
-- languages for which Lang can be compiled but which are incomplete
langsIncomplete = ["Amh","Ara","Lat","Tur"]
langsIncomplete = ["Amh","Ara","Lat","Mlt","Tur"]
-- languages for which to compile Try
langsAPI = langsLang `except` langsIncomplete

View File

@@ -1,198 +0,0 @@
--# -path=.:../abstract:../common:../../prelude
--
--1 Hindustaniu auxiliary operations.
--
-- This module contains operations that are needed to make the
-- resource syntax work.
resource CommonHindustani = ParamX ** open Prelude, Predef in {
--interface CommonHindustani = ParamX ** open Prelude,Predef,StringsHindustani1 in {
flags coding = utf8 ;
oper
VPH = {
s : VPHForm => {fin, inf : Str} ;
obj : {s : Str ; a : Agr} ;
subj : VType ;
comp : Agr => Str;
inf : Str;
ad : Str;
embComp : Str ;
prog : Bool ;
cvp : Str ;
} ;
NP : Type = {s : NPCase => Str ; a : Agr} ;
param
VPHForm =
VPTense VPPTense Agr -- 9 * 12
| VPReq
| VPImp
| VPReqFut
| VPInf
| VPStem
;
VPPTense =
VPPres
|VPPast
|VPFutr
|VPPerf;
VPHTense =
VPGenPres -- impf hum nahim "I گo"
| VPImpPast -- impf Ta nahim "I وعنت"
| VPFut -- fut na/nahim "I سہالل گo"
| VPContPres -- stem raha hum nahim "I ام گoiنگ"
| VPContPast -- stem raha Ta nahim "I واس گoiنگ"
| VPContFut
| VPPerfPres -- perf hum na/nahim "I ہاvع گoنع"
| VPPerfPast -- perf Ta na/nahim "I ہاد گoنع"
| VPPerfFut
| VPPerfPresCont
| VPPerfPastCont
| VPPerfFutCont
| VPSubj -- subj na "I مای گo"
;
Agr = Ag Gender Number UPerson ;
Gender = Masc | Fem ;
Case = Dir | Obl | Voc ;
UPerson = Pers1
| Pers2_Casual
| Pers2_Familiar
| Pers2_Respect
| Pers3_Near
| Pers3_Distant;
VType = VIntrans | VTrans | VTransPost ;
VerbForm = VF VTense UPerson Number Gender
| Inf
| Root
| Inf_Obl
| Inf_Fem;
VTense = Subj | Perf | Imperf;
CTense = CPresent | CPast | CFuture ;
NPCase = NPC Case | NPObj | NPErg ;
Order = ODir | OQuest ;
oper
mkAdjective : (x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31,x32,x33,x34,x35,x36:Str) -> Adjective =
\y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y20,y21,y22,y23,y24,y25,y26,y27,y28,y29,y30,y31,y32,y33,y34,y35,y36 -> {
s = table {
Sg => table {
Masc => table {
Dir => table {
Posit => y1 ;
Compar => y2 ;
Superl => y3
};
Obl => table {
Posit => y4 ;
Compar => y5 ;
Superl => y6
};
Voc => table {
Posit => y7 ;
Compar => y8 ;
Superl => y9
}
};
Fem => table {
Dir => table {
Posit => y10 ;
Compar => y11 ;
Superl => y12
};
Obl => table {
Posit => y13 ;
Compar => y14 ;
Superl => y15
};
Voc => table {
Posit => y16 ;
Compar => y17 ;
Superl => y18
}
}
};
Pl => table {
Masc => table {
Dir => table {
Posit => y19 ;
Compar => y20 ;
Superl => y21
};
Obl => table {
Posit => y22 ;
Compar => y23 ;
Superl => y24
};
Voc => table {
Posit => y25 ;
Compar => y26 ;
Superl => y27
}
};
Fem => table {
Dir => table {
Posit => y28 ;
Compar => y29 ;
Superl => y30
};
Obl => table {
Posit => y31 ;
Compar => y32 ;
Superl => y33
};
Voc => table {
Posit => y34 ;
Compar => y35 ;
Superl => y36
}
}
}
}
};
Adjective = { s: Number => Gender => Case => Degree => Str };
Verb : Type = {s : VerbForm => Str ; cvp : Str} ;
defaultAgr : Agr = agrP3 Masc Sg ;
agrP3 : Gender -> Number -> Agr = \g,n -> Ag g n Pers3_Distant ;
toAgr : Number -> UPerson -> Gender -> Agr = \n,p,g ->
Ag g n p;
fromAgr : Agr -> {n : Number ; p : UPerson ; g : Gender} = \a -> case a of {
Ag g n p => {n = n ; p = p ; g = g}
} ;
conjAgr : Agr -> Agr -> Agr = \a0,b0 ->
let a = fromAgr a0 ; b = fromAgr b0
in
toAgr
(conjNumber a.n b.n)
b.p a.g;
giveNumber : Agr -> Number =\a -> case a of {
Ag _ n _ => n
};
giveGender : Agr -> Gender =\a -> case a of {
Ag g _ _ => g
};
-- insertSubj : UPerson -> Str -> Str = \p,s ->
-- case p of { Pers1 => s ++ "وں" ; _ => s ++ "ے"};
mkOrd : Str -> Str =
\s -> case s of {
"ایك" => "پہلا";
"دو" => "دوسرا";
"تیں" => "تعسرا";
"چار" => "چوتھا";
"چھ" => "چھٹا";
_ => s ++ "واں"
};
}

View File

@@ -1,25 +0,0 @@
--concrete ExtraUrd of ExtraUrdAbs = CatUrd **
-- open ResUrd, Coordination, Prelude, MorphoUrd, ParadigmsUrd in {
incomplete concrete ExtraHindustani of ExtraHindustaniAbs = CatHindustani **
open CommonHindustani,Coordination,ResHindustani, ParamX in {
lin
-- GenNP np = {s = \\_,_,_ => np.s ! NPC Obl ++ "كا" ; a = np.a} ;
GenNP np = {s = \\n,g,c =>
case <n,g,c> of {
<_,Masc,_> => np.s ! NPC Obl ++ "كا" ;
<_,Fem,_> => np.s ! NPC Obl ++ "كی"
};
a = np.a} ;
each_Det = mkDet "ہر كوی" "ہر كوی" "ہر كوی" "ہر كوی" Sg ;
have_V = mkV "راكھنا";
IAdvAdv adv = {s = "كتنی" ++ adv.s} ;
ICompAP ap = {s = "كتنے" ++ ap.s ! Sg ! Masc ! Dir ! Posit} ;
cost_V = mkV "قیمت" ;
-- added for causitives
make_CV = mkVerb "نoتہiنگ" ** {c2 = "" };
-- for VP conjunction
}

View File

@@ -1,306 +0,0 @@
--# -path=.:../abstract:../common:../../prelude
--
--1 Hindustaniu auxiliary operations.
--
-- This module contains operations that are needed to make the
-- resource syntax work.
--resource ResHindustani = ParamX ** open Prelude,Predef in {
interface ResHindustani = DiffHindustani ** open CommonHindustani, Prelude, Predef in {
flags optimize=all ;
coding = utf8;
param
-- Order = ODir | OQuest ;
--2 For $Relative$
RAgr = RNoAg | RAg Agr ;
RCase = RC Number Case ;
-- for Numerial
CardOrd = NCard | NOrd ;
-----------------------------------------
-- Hindustani Pronouns
-----------------------------------------
Pronoun = P Number Gender Case UPerson;
PersPronForm = PPF Number UPerson Case;
-------------------------------------------
--Verbs
-------------------------------------------
oper
Noun = {s : Number => Case => Str ; g : Gender} ;
Preposition = {s : Gender => Str};
DemPronForm = {s : Number => Gender => Case => Str};
PossPronForm = {s : Number => Gender => Case => Str};
Determiner = {s : Number => Gender => Case => Str ; n : Number};
-- a useful oper
eq : Str -> Str -> Bool = \s1,s2-> (pbool2bool (eqStr s1 s2)) ;
RefPron : Str;
RefPron = kwd ;
----------------------------------------------------------
-- Grammar part
----------------------------------------------------------
toNP : ( Case => Str) -> NPCase -> Str = \pn, npc -> case npc of {
NPC c => pn ! c ;
NPObj => pn ! Obl ; -- changed during phrasebook 'miltay han jumE ko'
NPErg => pn ! Obl ++ nE
} ;
detcn2NP : (Determiner) -> Noun -> NPCase -> Number -> Str = \dt,cn,npc,nn -> case npc of {
-- NPC c => dt.s ! Sg ! Masc ++ cn.s ! nn ! c ; --changed while phrasebook e.g tyry beti where gender of determiner 'tyry' should be dependent on gender of common noum e.g 'beti'
NPC c => dt.s ! nn ! cn.g ! c ++ cn.s ! nn ! c ;
NPObj => dt.s ! nn ! cn.g ! Obl ++ cn.s ! nn ! Dir ;
NPErg => dt.s ! nn ! cn.g ! Obl ++ cn.s ! nn ! Obl ++ nE
} ;
det2NP : (Determiner) -> NPCase -> Str = \dt,npc -> case npc of {
NPC c => dt.s ! Sg ! Masc ! c ;
NPObj => dt.s ! Sg ! Masc ! Dir ;
NPErg => dt.s ! Sg ! Masc ! Obl ++ nE
} ;
------------------------------------------
-- Agreement transformations
-----------------------------------------
personalAgr : Agr = agrP1 Masc Sg ;
agrP1 : Gender -> Number -> Agr = \g,n -> Ag g n Pers1 ;
param
CPolarity =
CPos
| CNeg Bool ; -- contracted or not
oper
contrNeg : Bool -> Polarity -> CPolarity = \b,p -> case p of {
Pos => CPos ;
Neg => CNeg b
} ;
-- NP : Type = {s : NPCase => Str ; a : Agr} ;
oper
objVType : VType -> NPCase = \vt -> case vt of {
VTrans => NPObj ;
VTransPost => NPC Dir ;
_ => NPC Obl
} ;
VPHSlash = VPH ** {c2 : Compl} ;
Compl : Type = {s : Str ; c : VType} ;
predVc : (Verb ** {c2,c1 : Str}) -> VPHSlash = \verb ->
predV verb ** {c2 = {s = verb.c1 ; c = VTrans} } ;
predV : Verb -> VPH ;
predV v = {
s = \\vh =>
case vh of {
VPTense VPPres (Ag g n p) => {fin = copula CPresent n p g ; inf = v.s ! VF Imperf p n g } ;
VPTense VPPast (Ag g n p) => {fin = [] ; inf =v.s ! VF Perf p n g} ;
VPTense VPFutr (Ag g n p) => {fin = copula CFuture n p g ; inf = v.s ! VF Subj p n g } ;
VPTense VPPerf (Ag g n p) => { fin = [] ; inf = v.s ! Root ++ cka g n } ;
VPStem => {fin = [] ; inf = v.s ! Root};
VPInf => {fin = v.s ! Inf_Obl ; inf = v.s ! Root}; -- for V2V like sonE ky altja krna , check if it is being used anywhere else
VPImp => {fin = v.s ! VF Subj Pers3_Near Pl Masc ; inf = v.s ! Root};
_ => {fin = [] ; inf = v.s ! Root}
};
obj = {s = [] ; a = defaultAgr} ;
subj = VIntrans ;
inf = v.s ! Inf;
ad = [];
embComp = [];
prog = False ;
comp = \\_ => [] ;
cvp = v.cvp
} ;
predAux : Aux -> VPH = \verb -> {
s = \\vh =>
let
inf = verb.inf ;
part = verb.ppart ;
in
case vh of {
VPTense VPPres (Ag g n p) => {fin = copula CPresent n p g ; inf = part } ;
VPTense VPPast (Ag g n p) => {fin = copula CPast n p g ; inf = part } ;
VPTense VPFutr (Ag g n p) => {fin = copula CFuture n p g ; inf = part ++ hw p n } ;
VPStem => {fin = [] ; inf = "رہ" };
_ => {fin = part ; inf = [] }
};
obj = {s = [] ; a = defaultAgr} ;
subj = VIntrans ;
inf = verb.inf;
ad = [];
embComp = [];
prog = False ;
comp = \\_ => [] ;
cvp = []
} ;
Aux = {
inf,ppart,prpart : Str
} ;
auxBe : Aux = {
inf = "" ;
ppart = "" ;
prpart = ""
} ;
predProg : VPH -> VPH = \verb -> {
s = \\vh =>
case vh of {
VPTense VPPres (Ag g n p) => {fin = copula CPresent n p g ; inf = (verb.s!VPStem).inf ++ raha g n} ;
VPTense VPPast (Ag g n p) => {fin = copula CPast n p g ; inf = (verb.s!VPStem).inf ++ raha g n} ;
VPTense VPFutr (Ag g n p) => {fin = copula CFuture n p g ; inf = (verb.s!VPStem).inf ++ raha g n } ;
VPTense VPPerf (Ag g n p) => {fin = copula CPast n p g ; inf = (verb.s!VPTense VPPres (Ag g n p)).inf ++ raha g n } ;
VPStem => {fin = [] ; inf = (verb.s!VPStem).inf };
_ => {fin = [] ; inf = [] }
};
obj = verb.obj ;
subj = VIntrans ;
inf = verb.inf;
ad = verb.ad;
embComp = verb.embComp;
prog = True ;
comp = verb.comp ;
cvp = verb.cvp
} ;
insertObj : (Agr => Str) -> VPH -> VPH = \obj1,vp -> {
s = vp.s ;
obj = vp.obj ;
subj = vp.subj ;
inf = vp.inf;
ad = vp.ad;
embComp = vp.embComp;
prog = vp.prog ;
comp = \\a => vp.comp ! a ++ obj1 ! a ;
cvp = vp.cvp
} ;
insertVV : Str -> VPH -> Str -> VPH = \obj1,vp,emb -> {
s = vp.s ;
obj = vp.obj ;
subj = vp.subj ;
inf = vp.inf;
ad = vp.ad;
embComp = vp.embComp ++ emb ;
prog = vp.prog ;
comp = \\a => vp.comp ! a ++ obj1 ;
cvp = vp.cvp
} ;
insertObj2 : (Str) -> VPH -> VPH = \obj1,vp -> {
s = vp.s;
obj = vp.obj ;
subj = vp.subj ;
inf = vp.inf;
ad = vp.ad;
embComp = vp.embComp ++ obj1;
prog = vp.prog ;
comp = vp.comp ;
cvp = vp.cvp
} ;
insertObjc : (Agr => Str) -> VPHSlash -> VPHSlash = \obj,vp ->
insertObj obj vp ** {c2 = vp.c2} ;
insertObjc2 : Str -> VPHSlash -> VPHSlash = \obj,vp ->
insertObj2 obj vp ** {c2 = vp.c2} ;
infVP : Bool -> VPH -> Agr -> Str = \isAux,vp,a ->
vp.obj.s ++ vp.comp ! a ++ vp.inf ;
infVV : Bool -> VPH -> Str = \isAux,vp ->
case isAux of {False => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ vp.inf ; True => (vp.s ! VPImp).inf ++ vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) } ;
infV2V : Bool -> VPH -> Str = \isAux,vp ->
case isAux of {False => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ (vp.s ! VPInf).fin ++ ky ; True => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ (vp.s ! VPImp).fin ++ ky};
insertObject : NP -> VPHSlash -> VPH = \np,vps -> {
s = vps.s ;
obj = {s = vps.obj.s ++ np.s ! objVType vps.c2.c ++ vps.c2.s ; a = np.a} ;
subj = vps.c2.c ;
inf = vps.inf;
ad = vps.ad;
embComp = vps.embComp;
prog = vps.prog ;
comp = vps.comp ;
cvp = vps.cvp
} ;
insertObjPre : (Agr => Str) -> VPHSlash -> VPH = \obj,vp -> {
s = vp.s ;
obj = vp.obj ;
inf = vp.inf ;
subj = vp.subj ;
ad = vp.ad ;
embComp = vp.embComp;
prog = vp.prog ;
comp = \\a => obj ! a ++ vp.c2.s ++ vp.comp ! a ;
cvp = vp.cvp
} ;
insertAdV : Str -> VPH -> VPH = \ad,vp -> {
s = vp.s ;
obj = vp.obj ;
inf = vp.inf ;
subj = vp.subj;
ad = vp.ad ++ ad ;
embComp = vp.embComp;
prog = vp.prog ;
comp = vp.comp ;
cvp = vp.cvp
} ;
-- conjThat : Str = "كہ" ;
insertEmbCompl : VPH -> Str -> VPH = \vp,emb -> {
s = vp.s ;
obj = vp.obj ;
inf = vp.inf ;
subj = vp.subj;
ad = vp.ad;
embComp = vp.embComp ++ emb;
prog = vp.prog ;
comp = vp.comp ;
cvp = vp.cvp ;
} ;
insertTrans : VPH -> VType -> VPH = \vp,vtype -> {
s = vp.s ;
obj = vp.obj ;
inf = vp.inf ;
subj = vtype;
ad = vp.ad;
embComp = vp.embComp ;
prog = vp.prog ;
comp = vp.comp ;
cvp = vp.cvp
} ;
compoundAdj : Str -> Str -> Adjective = \s1,s2 -> mkCompoundAdj (regAdjective s1) (regAdjective s2) ;
mkCompoundAdj : Adjective -> Adjective -> Adjective ;
mkCompoundAdj adj1 adj2 = {s = \\n,g,c,d => adj1.s ! n ! g ! c ! d ++ adj2.s ! n ! g ! c ! d} ;
}

View File

@@ -1,21 +0,0 @@
resource StringsHindustani = {
flags coding = utf8 ;
oper
agr = "اگر" ;
awr = "اور" ;
jn = "جن" ;
js = "جس" ;
jw = "جو" ;
kw = "كو" ;
mt = "مت" ;
-- nE = "نے" ;
nh = "نہ" ;
sE = "سے" ;
waN = "واں" ;
comma = "," ;
indfArt = "ایك" ;
}