diff options
| author | aarne <aarne@chalmers.se> | 2009-06-22 15:39:08 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2009-06-22 15:39:08 +0000 |
| commit | e89fdae2fa1626348d8025824a7469252fa85e42 (patch) | |
| tree | c7d46bbd0494043b4bd6f917a25a7687517d0547 /next-lib/src/telugu/ResTel.gf | |
| parent | 3049b59b35b25381a7c6787444165c200d66e08b (diff) | |
next-lib renamed to lib, lib to old-lib
Diffstat (limited to 'next-lib/src/telugu/ResTel.gf')
| -rw-r--r-- | next-lib/src/telugu/ResTel.gf | 303 |
1 files changed, 0 insertions, 303 deletions
diff --git a/next-lib/src/telugu/ResTel.gf b/next-lib/src/telugu/ResTel.gf deleted file mode 100644 index 20e05f964..000000000 --- a/next-lib/src/telugu/ResTel.gf +++ /dev/null @@ -1,303 +0,0 @@ ---# -path=.:../abstract:../common:../../prelude - ---1 Teldi auxiliary operations. - --- This module contains operations that are needed to make the --- resource syntax work. --- -resource ResTel = ParamX ** open Prelude in { - - flags optimize=all ; - - param - Case = Dir | Obl ; - Gender = Masc | Fem | Neutr ; - - oper - Noun = {s : Number => Case => Str ; g : Gender} ; - - mkNoun : (x1,_,_,x4 : Str) -> Gender -> Noun = - \sd,so,pd,po,g -> { - s = table Number [table Case [sd;so] ; table Case [pd;po]] ; - g = g - } ; - - wallNoun : Str -> Noun = \goda -> - mkNoun goda goda (goda + "lu") (goda + "la") Neutr ; - --- reggNoun : Str -> Gender -> Noun = \s,g -> case <s,g> of { --- <-(_ + ("A" | "I")), Fem> => --- mkNoun s s s (s + "eM") (s + "oM") (s + "o") Fem ; --- _ => regNoun s ** {g = g} --- } ; --- --- regNoun : Str -> Noun = \s -> case s of { --- x + "iyA" => --- mkNoun s s s (x + "iyAM") (x + "iyoN") (x + "iyo") Fem ; --- x + "A" => --- mkNoun s (x + "e") (x + "e") (x + "e") (x + "oN") (x + "o") Masc ; --- x + "I" => --- mkNoun s s s (x + "iyAM") (x + "iyoN") (x + "iyo") Fem ; --- _ => --- mkNoun s s s s (s + "oN") (s + "o") Masc --- } ; --- --- --- Adjective = {s : Gender => Number => Case => Str} ; --- --- mkAdjective : (x1,x2,x3 : Str) -> Adjective = \smd,sm,f -> { --- s = \\g,n,c => case <g,n,c> of { --- <Masc,Sg,Dir> => smd ; --- <Masc> => sm ; --- _ => f --- } --- } ; --- --- regAdjective : Str -> Adjective = \s -> case s of { --- acch + "A" => mkAdjective s (acch + "e") (acch + "I") ; --- _ => mkAdjective s s s --- } ; --- --- param --- VForm = --- VInf --- | VStem --- | VImpf Gender Number --- | VPerf Gender Number --- | VSubj Number Person --- | VFut Number Person Gender --- | VAbs --- | VReq --- | VImp --- | VReqFut --- ; --- --- oper --- Verb = {s : VForm => Str} ; --- --- mkVerb : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,x15 : Str) -> Verb = --- \inf,stem,ims,imp,ifs,ifp,pms,pmp,pfs,pfp,ss1,ss2,sp2,sp3,r -> { --- s = --- let ga : Number -> Gender -> Str = \n,g -> --- (regAdjective "gA").s ! g ! n ! Dir --- in table { --- VInf => inf ; --- VStem => stem ; --- VImpf Masc Sg => ims ; --- VImpf Masc Pl => imp ; --- VImpf Fem Sg => ifs ; --- VImpf Fem Pl => ifp ; --- VPerf Masc Sg => pms ; --- VPerf Masc Pl => pmp ; --- VPerf Fem Sg => pfs ; --- VPerf Fem Pl => pfp ; --- VSubj Sg P1 => ss1 ; --- VSubj Sg _ => ss2 ; --- VSubj Pl P2 => sp2 ; --- VSubj Pl _ => sp3 ; --- VFut Sg P1 g => ss1 + ga Sg g ; --- VFut Sg _ g => ss2 + ga Sg g ; --- VFut Pl P2 g => sp2 + ga Pl g ; --- VFut Pl _ g => sp3 + ga Pl g ; --- VAbs => stem + "kar" ; --- ke --- VReq => r ; --- VImp => sp2 ; --- VReqFut => stem + "ie-gA" --- } --- } ; --- --- regVerb : Str -> Verb = \cal -> --- let caly : Str = case cal of { --- _ + ("A" | "e") => cal + "y" ; --- c + "U" => c + "uy" ; --- c + "I" => c + "iy" ; --- _ => cal --- } --- in --- mkVerb --- (cal + "nA") cal --- (cal + "tA") (cal + "te") (cal + "tI") (cal + "tI") --- (caly + "A") (caly + "e") (caly + "I") (caly + "IN") --- (caly + "UM") (caly + "e") (caly + "o") (caly + "eN") --- (caly + "ie-") ; --- --- param --- CTense = CPresent | CPast | CFuture ; --- oper --- copula : CTense -> Number -> Person -> Gender -> Str = \t,n,p,g -> --- case <t,n,p,g> of { --- <CPresent,Sg,P1,_ > => "hUM" ; --- <CPresent,Sg,P2,_ > => "hE" ; --- <CPresent,Sg,P3,_ > => "hE" ; --- <CPresent,Pl,P1,_ > => "hEN" ; --- <CPresent,Pl,P2,_ > => "ho" ; --- <CPresent,Pl,P3,_ > => "hEN" ; --- <CPast, Sg,_ ,Masc> => "TA" ; --- <CPast, Sg,_ ,Fem > => "TI" ; --- <CPast, Pl,_ ,Masc> => "Te" ; --- <CPast, Pl,_ ,Fem > => "TIN" ; --- <CFuture, Sg,P1,Masc> => "hUNgA" ; --- <CFuture, Sg,P1,Fem > => "hUNgI" ; --- <CFuture, Sg,_ ,Masc> => "hogA" ; --- <CFuture, Sg,_ ,Fem > => "hogI" ; --- <CFuture, Pl,P2,Masc> => "hoge" ; --- <CFuture, Pl,_ ,Masc> => "hoNge" ; --- <CFuture, Pl,P2,Fem > => "hogi:" ; --- <CFuture, Pl,_ ,Fem > => "hoNgi:" --- } ; --- --- param --- PronCase = PC Case | PObj | PPoss ; --- oper --- personalPronoun : Person -> Number -> {s : PronCase => Str} = \p,n -> --- case <p,n> of { --- <P1,Sg> => {s = table PronCase ["mEN" ; "muJ" ; "muJ" ; "muJe" ; "merA"]} ; --- <P1,Pl> => {s = table PronCase ["ham" ; "ham" ; "ham" ; "hameN" ; "hamArA"]} ; --- <P2,Sg> => {s = table PronCase ["tU" ; "tuJ" ; "tuJ" ; "tuJe" ; "terA"]} ; --- <P2,Pl> => {s = table PronCase ["tum" ; "tum" ; "tum" ; "tum" ; "tumhArA"]} ; --- <P3,Sg> => {s = table PronCase ["vah" ; "u-s" ; "u-s" ; "u-se" ; "u-skA"]} ; --- <P3,Pl> => {s = table PronCase ["ve" ; "u-n" ; "u-n" ; "u-nheN" ; "u-nkA"]} --- } ; --- ---- the third is the vocative - is it really this way? --- --- -- the Teldi verb phrase --- ------ CTense = CPresent | CPast | CFuture ; --- --- --- --- param --- VPHTense = --- VPGenPres -- impf hum nahim "I go" --- | VPImpPast -- impf Ta nahim "I went" --- | VPContPres -- stem raha hum nahim "I am going" --- | VPContPast -- stem raha Ta nahim "I was going" --- | VPPerf -- perf na/nahim "I went" --- | VPPerfPres -- perf hum na/nahim "I have gone" --- | VPPerfPast -- perf Ta na/nahim "I had gone" --- | VPSubj -- subj na "I may go" --- | VPFut -- fut na/nahim "I shall go" --- ; --- --- VPHForm = --- VPTense VPHTense Agr -- 9 * 12 --- | VPReq --- | VPImp --- | VPReqFut --- | VPInf --- | VPStem --- ; --- --- VType = VIntrans | VTrans | VTransPost ; --- --- oper --- objVType : VType -> NPCase = \vt -> case vt of { --- VTrans => NPObj ; --- _ => NPC Obl --- } ; --- --- VPH : Type = { --- s : Bool => VPHForm => {fin, inf, neg : Str} ; --- obj : {s : Str ; a : Agr} ; --- subj : VType ; --- comp : Agr => Str --- } ; --- --- predV : Verb -> VPH = \verb -> { --- s = \\b,vh => --- let --- na = if_then_Str b [] "na" ; --- nahim = if_then_Str b [] "nahIN" ; --- in --- case vh of { --- VPTense VPGenPres (Ag g n p) => --- {fin = copula CPresent n p g ; inf = verb.s ! VImpf g n ; neg = nahim} ; --- VPTense VPImpPast (Ag g n p) => --- {fin = copula CPast n p g ; inf = verb.s ! VImpf g n ; neg = nahim} ; --- VPTense VPContPres (Ag g n p) => --- {fin = copula CPresent n p g ; --- inf = verb.s ! VStem ++ raha g n ; neg = nahim} ; --- VPTense VPContPast (Ag g n p) => --- {fin = copula CPast n p g ; --- inf = verb.s ! VStem ++ raha g n ; neg = nahim} ; --- VPTense VPPerf (Ag g n _) => --- {fin = verb.s ! VPerf g n ; inf = [] ; neg = nahim} ; --- VPTense VPPerfPres (Ag g n p) => --- {fin = copula CPresent n p g ; inf = verb.s ! VPerf g n ; neg = nahim} ; --- VPTense VPPerfPast (Ag g n p) => --- {fin = copula CPast n p g ; inf = verb.s ! VPerf g n ; neg = nahim} ; --- VPTense VPSubj (Ag _ n p) => {fin = verb.s ! VSubj n p ; inf = [] ; neg = na} ; --- VPTense VPFut (Ag g n p) => {fin = verb.s ! VFut n p g ; inf = [] ; neg = na} ; --- VPInf => {fin = verb.s ! VStem ; inf = [] ; neg = na} ; --- _ => {fin = verb.s ! VStem ; inf = [] ; neg = na} ---- --- } ; --- obj = {s = [] ; a = defaultAgr} ; --- subj = VIntrans ; --- comp = \\_ => [] --- } ; --- --- raha : Gender -> Number -> Str = \g,n -> --- (regAdjective "rahA").s ! g ! n ! Dir ; --- --- VPHSlash = VPH ** {c2 : Compl} ; --- --- Clause : Type = {s : VPHTense => Bool => Str} ; --- --- Compl : Type = {s : Str ; c : VType} ; --- --- insertObject : NP -> VPHSlash -> VPH = \np,vps -> { --- s = vps.s ; --- obj = {s = vps.obj.s ++ np.s ! objVType vps.c2.c ++ vps.c2.s ; a = np.a} ; --- subj = vps.c2.c ; --- comp = vps.comp --- } ; --- --- param --- Agr = Ag Gender Number Person ; --- NPCase = NPC Case | NPObj | NPErg ; --- --- oper --- agrP3 : Gender -> Number -> Agr = \g,n -> Ag g n P3 ; --- --- defaultAgr : Agr = agrP3 Masc Sg ; --- --- npcase2case : NPCase -> Case = \npc -> case npc of { --- NPC c => c ; --- NPObj => Obl ; --- NPErg => Obl --- } ; --- --- np2pronCase : NPCase -> PronCase = \np -> case np of { --- NPC c => PC c ; --- NPObj => PObj ; --- NPErg => PC Obl --- } ; --- --- toNP : (Case => Str) -> NPCase -> Str = \pn, npc -> case npc of { --- NPC c => pn ! c ; --- NPObj => pn ! Obl ; --- NPErg => pn ! Obl ++ "ne" --- } ; --- --- NP : Type = {s : NPCase => Str ; a : Agr} ; --- --- mkClause : NP -> VPH -> Clause = \np,vp -> { --- s = \\vt,b => --- let --- subjagr : NPCase * Agr = case vt of { --- VPPerf => case vp.subj of { --- VTrans => <NPErg, vp.obj.a> ; --- VTransPost => <NPErg, defaultAgr> ; --- _ => <NPC Dir, np.a> --- } ; --- _ => <NPC Dir, np.a> --- } ; --- subj = subjagr.p1 ; --- agr = subjagr.p2 ; --- vps = vp.s ! b ! VPTense vt agr ; --- in --- np.s ! subj ++ vp.obj.s ++ vp.comp ! np.a ++ vps.neg ++ vps.inf ++ vps.fin --- } ; --- --- -} |
