1
0
forked from GitHub/gf-core
This commit is contained in:
aarne
2007-02-14 14:29:15 +00:00
parent b34aa07eaa
commit 70eb2d2ace
8 changed files with 121612 additions and 0 deletions

View File

@@ -0,0 +1,127 @@
abstract CatUrduHindiAbs = {
--cat and fun rules for morphology (FM generated)
cat
N;
PN;
Adj;
Adj1;
AdjD;
Adv;
Num;
Verb_Aux;
Verb;
Verb1;
Verb2;
Verb3;
RelPron3;
RelPron2;
RelPron1;
RelPron;
IndefPron2;
IndefPron1;
IndefPron;
InterPron3;
InterPron2;
InterPron1;
InterPron;
RefPron;
PersPron;
PossPron;
DemPron;
Neg;
Quest;
Conj;
Intjunc;
PossPostPos;
PostP;
Part;
-- Categories for Syntax
CN;
NP;
VP;
S;
--functions for Syntax
fun
UseN : N -> CN ; --ktab
UseNPSg : NP -> CN -> NP;
UseNPPl : NP -> CN -> NP;
-- myry ktab(my Book), tyry ktab(your book)
DetN_Pers1 : PossPron -> CN -> CN ;
DetN_Pers2Casual : PossPron -> CN -> CN ;
DetN_Pers2Familiar : PossPron -> CN -> CN ;
DetN_Pers2Respect : PossPron -> CN -> CN ;
DetN_Pers3Near : PossPron -> CN -> CN ;
DetN_Pers3Distant : PossPron -> CN -> CN ;
DetCN : Num -> CN -> NP ; --ayk ktab(one book), dw ktabyN(two books)
-- wh ktab(that book), yh ktab(this book), a(i)s ktab, a(o)s ktab
DetCN1Sg : DemPron -> CN -> NP ;
-- wh ktabyN(those books), yh ktabyN(these books), a(i)n ktabwN, a(o)n ktabwN
DetCN1Pl : DemPron -> CN -> NP ;
-- wh ayk ktab(that one book), yh ayk ktab(this one book)
DetCN2 : DemPron -> Num -> CN -> NP ;
DetCN3Sg : CN -> NP;
DetCN3Pl : CN -> NP;
UsePN : PN -> NP ; -- Pakstan
-- wh pakstan(that Pakistan), yh pakstan(this Pakistan)
UsePN1 : DemPron -> PN -> NP ;
--Personal Pronouns
UsePronSgP1M : PersPron -> NP ; -- myN, mjh
UsePronSgP1F : PersPron -> NP ; -- myN, mjh
UsePronPlP1M : PersPron -> NP ; -- hm,
UsePronPlP1F : PersPron -> NP ;
UsePronSgP2CM: PersPron -> NP ;
UsePronSgP2CF: PersPron -> NP ;
UsePronPlP2CM: PersPron -> NP ;
UsePronPlP2CF: PersPron -> NP ;
UsePronSgP2FM: PersPron -> NP ;
UsePronSgP2FF: PersPron -> NP ;
UsePronPlP2FM: PersPron -> NP ;
UsePronPlP2FF: PersPron -> NP ;
UsePronSgP2RM: PersPron -> NP ;
UsePronSgP2RF: PersPron -> NP ;
UsePronPlP2RM: PersPron -> NP ;
UsePronPlP2RF: PersPron -> NP ;
UsePronSgP3NM: PersPron -> NP ;
UsePronSgP3NF: PersPron -> NP ;
UsePronPlP3NM: PersPron -> NP ;
UsePronPlP3NF: PersPron -> NP ;
UsePronSgP3DM: PersPron -> NP ;
UsePronSgP3DF: PersPron -> NP ;
UsePronPlP3DM: PersPron -> NP ;
UsePronPlP3DF: PersPron -> NP ;
UseV : Verb_Aux -> VP;
UseVVAux : Verb -> Verb_Aux -> VP;
UsePastS: NP -> VP -> S ;
UsePresS: NP -> VP -> S ;
UseFutS: NP -> VP -> S ;
UsePronVVAuxPast: NP -> VP -> S; -- a(i)s kw lyna tha
UsePronVVAuxPres: NP -> VP -> S; --a(i)s kw kyna hE
--fixme for hwN gE forms
UsePronVVAuxFut: NP -> VP -> S; --a(i)s kw kyna hwga
UseSPast: NP -> VP -> S;
UseSPres: NP -> VP -> S;
UseSFut: NP -> VP -> S;
UseS : S -> Conj -> S -> S;
} ;

116987
examples/urduhindi/LexUrd.gf Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
Main File : Urdu.gf
Please copy this directory to GF/lib/resource1.x/

View File

@@ -0,0 +1,59 @@
--# -path=.:../abstract:../common:../../prelude
resource ResUrdHin = open Prelude, UrduHindiAbs in {
flags coding=utf8 ; optimize=all;
-- param and oper definitions in this file for Morphology
param Number = Sg | Pl ;
param Case = Nom | Obl | Voc ;
param Gender = Masc | Fem ;
param Person = Pers1 | Pers2_Casual | Pers2_Familiar |
Pers2_Respect | Pers3_Near | Pers3_Distant ;
param Degree = Posit | Comp | Super ;
param ProperNounForm = PNF Case ;
param NounForm = NF Number Case ;
param DemPronForm = DPF Number Case ;
param PersPronForm = PPF Number Person Case ;
param RefPronForm = RefPF ;
param InterrPronForm = IntPF Number Case ;
param InterrPronForm1 = IntPF1 ;
param InterrPronForm2 = IntPF2 Number Case Gender ;
param InterrPronForm3 = IntPF3 Number Gender ;
param IndefPronForm = IPF Case Gender ;
param IndefPronForm1 = IPF1 Case ;
param IndefPronForm2 = IPF2 ;
param RelPronForm = RPF Number Case ;
param RelPronForm1 = RPF1 Number Gender ;
param RelPronForm2 = RPF2 Case ;
param RelPronForm3 = RPF3 ;
param NumeralForm = NumeralF;
param AdjForm = AdjF Number Case Gender ;
param AdjForm1 = AdjF1 ;
param AdjDegForm = AdjDegF Degree ;
param PossivePostPForm = PossPostPF Number Gender ;
param Tense = Subj | Perf | Imperf ;
param Tense_Aux = Past | Present | Future | Subjunctive | Perfective | Imperfective;
param Verb_AuxForm = VA Tense_Aux Person Number Gender |
VA_Root | VA_Inf | VA_Inf_Fem | VA_Inf_Obl;
param VerbForm = VF Tense Person Number Gender | Inf | Root | Inf_Obl | Inf_Fem ;
param VerbForm1 = VF1 Tense Person Number Gender | Caus1 Tense Person Number Gender |
Caus2 Tense Person Number Gender | Inf1 | Caus1_Inf | Caus2_Inf |
Inf_Fem1 | Inf_Obl1 | Caus1_Inf_Obl | Caus2_Inf_Obl | Root1 |
Caus1_Root | Caus2_Root ;
param VerbForm2 = VF2 Tense Person Number Gender | VCaus1 Tense Person Number Gender |
Inf2 | VCaus1_Inf | Inf_Obl2 | Inf_Fem2 | VCaus1_Inf_Obl |
Root2 | VCaus1_Root ;
param VerbForm3 = VF3 Tense Person Number Gender | VCaus2 Tense Person Number Gender |
Inf3 | Inf_Fem3 | VCaus2_Inf | Inf_Obl3 | VCaus2_Inf_Obl | Root3 |
VCaus2_Root ;
param PossPronForm = PossF Number Person Gender ;
{-
oper mkPron2NP : PersPron -> NP =
\pp ->
{ s = \\c => pp.s ! PPF Sg Pers1 c ; n = Sg ; p = Pers1 ; g = Masc };
-}
} ;

View File

@@ -0,0 +1,5 @@
--# -path=.:../abstract:../common:../../prelude
concrete Urdu of UrduHindiAbs =
UrduHindi,
LexUrd
** { } ;

View File

@@ -0,0 +1,259 @@
--# -path=.:../abstract:../common:../../prelude
concrete UrduHindi of UrduHindiAbs = open ResUrdHin, Prelude in {
flags coding=utf8 ; optimize=all;
lincat
N = {s : NounForm => Str; h1: Gender} ;
PN = {s : ProperNounForm => Str; h1: Gender} ;
Adj = {s : AdjForm => Str} ;
Adj1 = {s : AdjForm1 => Str} ;
AdjD = {s : AdjDegForm => Str} ;
Verb_Aux = {s : Verb_AuxForm => Str} ;
Verb = {s : VerbForm => Str} ;
Verb1 = {s : VerbForm1 => Str} ;
Verb2 = {s : VerbForm2 => Str} ;
Verb3 = {s : VerbForm3 => Str} ;
RelPron3 = {s : RelPronForm3 => Str} ;
RelPron2 = {s : RelPronForm2 => Str} ;
RelPron1 = {s : RelPronForm1 => Str} ;
RelPron = {s : RelPronForm => Str} ;
IndefPron2 = {s : IndefPronForm2 => Str} ;
IndefPron1 = {s : IndefPronForm1 => Str} ;
IndefPron = {s : IndefPronForm => Str} ;
InterPron3 = {s : InterrPronForm3 => Str} ;
InterPron2 = {s : InterrPronForm2 => Str} ;
InterPron1 = {s : InterrPronForm1 => Str} ;
InterPron = {s : InterrPronForm => Str} ;
RefPron = {s : RefPronForm => Str} ;
PersPron = {s : PersPronForm => Str} ;
PossPron = {s : PossPronForm => Str} ;
DemPron = {s : DemPronForm => Str; h1 : Person} ;
PossPostPos = {s : PossivePostPForm => Str} ;
Num = { s : NumeralForm => Str ; h1 : Number };
Adv, Conj, Neg, Quest, Intjunc, PostP, Part = SS ;
NP = {s : Case => Str ; n : Number ; p : Person ; g : Gender } ;
CN = {s : Number => Case => Str ; g : Gender} ;
VP = {s : Tense_Aux => Person => Number => Gender=> Str} ;
S = {s: Str};
lin
--VP
--UseV : Verb_Aux -> VP;
UseV va = { s = \\t,p,n,g => va.s ! VA t p n g };
--UseVVAux : Verb -> Verb_Aux -> VP;
UseVVAux v va =
{ s = \\t,p,n,g => v.s ! Inf ++ va.s ! VA t p n g
};
--UseN x = x;
UseN x =
{ s = \\n,c => x.s ! NF n c ;
g = x.h1
} ;
DetN_Pers1 pron cn =
{ s = \\n,c => pron.s ! PossF n Pers1 cn.g ++ cn.s ! n ! c ;
g = cn.g
} ;
DetN_Pers2Casual pron cn =
{ s = \\n,c => pron.s ! PossF n Pers2_Casual cn.g ++ cn.s ! n ! c ;
g = cn.g
} ;
DetN_Pers2Familiar pron cn =
{ s = \\n,c => pron.s ! PossF n Pers2_Familiar cn.g ++ cn.s ! n ! c ;
g = cn.g
} ;
DetN_Pers2Respect pron cn =
{ s = \\n,c => pron.s ! PossF n Pers2_Respect cn.g ++ cn.s ! n ! c ;
g = cn.g
} ;
DetN_Pers3Near pron cn =
{ s = \\n,c => pron.s ! PossF n Pers3_Near cn.g ++ cn.s ! n ! c ;
g = cn.g
} ;
DetN_Pers3Distant pron cn =
{ s = \\n,c => pron.s ! PossF n Pers3_Distant cn.g ++ cn.s ! n ! c ;
g = cn.g
} ;
--DetCN3 : CN -> NP;
DetCN3Sg cn =
{ s = \\c => case c of {
Nom => cn.s ! Sg ! Nom ;
Obl => cn.s ! Sg ! Obl ;
Voc => []
};
n = Sg;
p = Pers3_Near ; --does not mean any thing
g = cn.g
} ;
DetCN3Pl cn =
{ s = \\c => case c of {
Nom => cn.s ! Pl ! Nom ;
Obl => cn.s ! Pl ! Obl ;
Voc => []
};
n = Pl ;
p = Pers3_Near ; --does not mean any thing
g = cn.g
} ;
DetCN num cn =
{ s = \\c => case c of {
Nom => num.s ! NumeralF ++ cn.s ! num.h1 ! Nom ;
Obl => num.s ! NumeralF ++ cn.s ! num.h1 ! Obl ;
Voc => []
};
n = num.h1;
p = Pers3_Near ;
g = cn.g
} ;
DetCN1Sg wo cn =
{ s = \\c => case c of {
Nom => wo.s ! DPF Sg Nom ++ cn.s ! Sg ! Nom ;
Obl => [] ;
Voc => []
};
n = Sg;
p = wo.h1 ;
g = cn.g
} ;
DetCN1Pl wo cn =
{ s = \\c => case c of {
Nom => wo.s ! DPF Pl Nom ++ cn.s ! Pl ! Nom ;
Obl => [] ;
Voc => []
};
n = Pl;
p = wo.h1 ;
g = cn.g
} ;
-- wh ayk ktab
DetCN2 wo num cn =
{ s = \\c => case c of {
Nom => wo.s ! DPF num.h1 Nom ++ num.s ! NumeralF ++ cn.s ! num.h1 ! Nom ;
Obl => wo.s ! DPF num.h1 Obl ++ num.s ! NumeralF ++ cn.s ! num.h1 ! Obl ;
Voc => []
};
n = num.h1;
p = wo.h1 ;
g = cn.g
} ;
UsePN pn =
{ s = \\c => pn.s ! PNF c ;
n = Sg ;
p = Pers3_Near ; --could be Pers3_distant, does not really matter
g = pn.h1
} ;
UsePN1 wo pn =
{ s = \\c => wo.s ! DPF Sg Nom ++ pn.s ! PNF c ;
n = Sg ;
p = wo.h1 ;
g = pn.h1
} ;
--UsePron : PersPron -> NP
UsePronSgP1M pp =
{ s = \\c => pp.s ! PPF Sg Pers1 c ; n = Sg ; p = Pers1 ; g = Masc };
UsePronSgP1F pp =
{ s = \\c => pp.s ! PPF Sg Pers1 c ; n = Sg ; p = Pers1 ; g = Fem };
UsePronPlP1M pp =
{ s = \\c => pp.s ! PPF Pl Pers1 c ; n = Pl ; p = Pers1 ; g = Masc };
UsePronPlP1F pp =
{ s = \\c => pp.s ! PPF Pl Pers1 c ; n = Pl ; p = Pers1 ; g = Fem };
UsePronSgP2CM pp =
{ s = \\c => pp.s ! PPF Sg Pers2_Casual c ; n = Sg ; p = Pers2_Casual ; g = Masc };
UsePronSgP2CF pp =
{ s = \\c => pp.s ! PPF Sg Pers2_Casual c ; n = Sg ; p = Pers2_Casual ; g = Fem };
UsePronPlP2CM pp =
{ s = \\c => pp.s ! PPF Pl Pers2_Casual c ; n = Pl ; p = Pers2_Casual ; g = Masc };
UsePronPlP2CF pp =
{ s = \\c => pp.s ! PPF Pl Pers2_Casual c ; n = Pl ; p = Pers2_Casual ; g = Fem };
UsePronSgP2FM pp =
{ s = \\c => pp.s ! PPF Sg Pers2_Familiar c ; n = Sg ; p = Pers2_Familiar ; g = Masc };
UsePronSgP2FF pp =
{ s = \\c => pp.s ! PPF Sg Pers2_Familiar c ; n = Sg ; p = Pers2_Familiar ; g = Fem };
UsePronPlP2FM pp =
{ s = \\c => pp.s ! PPF Pl Pers2_Familiar c ; n = Pl ; p = Pers2_Familiar ; g = Masc };
UsePronPlP2FF pp =
{ s = \\c => pp.s ! PPF Pl Pers2_Familiar c ; n = Pl ; p = Pers2_Familiar ; g = Fem };
UsePronSgP2RM pp =
{ s = \\c => pp.s ! PPF Sg Pers2_Respect c ; n = Sg ; p = Pers2_Respect ; g = Masc };
UsePronSgP2RF pp =
{ s = \\c => pp.s ! PPF Sg Pers2_Respect c ; n = Sg ; p = Pers2_Respect ; g = Fem };
UsePronPlP2RM pp =
{ s = \\c => pp.s ! PPF Pl Pers2_Respect c ; n = Pl ; p = Pers2_Respect ; g = Masc };
UsePronPlP2RF pp =
{ s = \\c => pp.s ! PPF Pl Pers2_Respect c ; n = Pl ; p = Pers2_Respect ; g = Fem };
UsePronSgP3NM pp =
{ s = \\c => pp.s ! PPF Sg Pers3_Near c ; n = Sg ; p = Pers3_Near ; g = Masc };
UsePronSgP3NF pp =
{ s = \\c => pp.s ! PPF Sg Pers3_Near c ; n = Sg ; p = Pers3_Near ; g = Fem };
UsePronPlP3NM pp =
{ s = \\c => pp.s ! PPF Pl Pers3_Near c ; n = Pl ; p = Pers3_Near ; g = Masc };
UsePronPlP3NF pp =
{ s = \\c => pp.s ! PPF Pl Pers3_Near c ; n = Pl ; p = Pers3_Near ; g = Fem };
UsePronSgP3DM pp =
{ s = \\c => pp.s ! PPF Sg Pers3_Distant c ; n = Sg ; p = Pers3_Distant ; g = Masc };
UsePronSgP3DF pp =
{ s = \\c => pp.s ! PPF Sg Pers3_Distant c ; n = Sg ; p = Pers3_Distant ; g = Fem };
UsePronPlP3DM pp =
{ s = \\c => pp.s ! PPF Pl Pers3_Distant c ; n = Pl ; p = Pers3_Distant ; g = Masc };
UsePronPlP3DF pp =
{ s = \\c => pp.s ! PPF Pl Pers3_Distant c ; n = Pl ; p = Pers3_Distant ; g = Fem };
UsePastS np va = { s = np.s ! Nom ++ va.s ! Past ! np.p ! np.n ! np.g } ;
UsePresS np va = { s = np.s ! Nom ++ va.s ! Present ! np.p ! np.n ! np.g } ;
UseFutS np va = { s = np.s ! Nom ++ va.s ! Future ! np.p ! np.n ! np.g } ;
UseNPSg np cn = {
s = \\c => np.s ! Obl ++ "کو" ++ cn.s ! Sg ! c ;
n = Sg;
p = Pers3_Near ;
g = cn.g
};
UseNPPl np cn = {
s = \\c => np.s ! Obl ++ "کو" ++ cn.s ! Pl ! c ;
n = Pl;
p = Pers3_Near ;
g = cn.g
};
UsePronVVAuxPast np vp = {
s = np.s ! Obl ++ "کو" ++ vp.s ! Past ! np.p ! np.n ! np.g
};
UsePronVVAuxPres np vp = {
s = np.s ! Obl ++ "کو" ++ vp.s ! Present ! np.p ! np.n ! np.g
};
UsePronVVAuxFut np vp = {
s = np.s ! Obl ++ "کو" ++ vp.s ! Future ! np.p ! np.n ! np.g
};
UseSPast np vp = {
s = np.s ! Nom ++ vp.s ! Past ! np.p ! np.n ! np.g
};
--Present
UseSPres np vp = {
s = np.s ! Nom ++ vp.s ! Present ! np.p ! np.n ! np.g
};
--Future
UseSFut np vp = {
s = np.s ! Nom ++ vp.s ! Future ! np.p ! np.n ! np.g
};
UseS s1 conj s2 = {s = s1.s ++ conj.s ++ s2.s};
}

View File

@@ -0,0 +1,4 @@
abstract UrduHindiAbs =
CatUrduHindiAbs,
Lexicon
**{} ;