summaryrefslogtreecommitdiff
path: root/old-examples/urduhindi/UrduHindi.gf
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-06-25 16:54:35 +0000
committeraarne <aarne@cs.chalmers.se>2008-06-25 16:54:35 +0000
commite9e80fc389365e24d4300d7d5390c7d833a96c50 (patch)
treef0b58473adaa670bd8fc52ada419d8cad470ee03 /old-examples/urduhindi/UrduHindi.gf
parentb96b36f43de3e2f8b58d5f539daa6f6d47f25870 (diff)
changed names of resource-1.3; added a note on homepage on release
Diffstat (limited to 'old-examples/urduhindi/UrduHindi.gf')
-rw-r--r--old-examples/urduhindi/UrduHindi.gf259
1 files changed, 259 insertions, 0 deletions
diff --git a/old-examples/urduhindi/UrduHindi.gf b/old-examples/urduhindi/UrduHindi.gf
new file mode 100644
index 000000000..4aded6051
--- /dev/null
+++ b/old-examples/urduhindi/UrduHindi.gf
@@ -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};
+}