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