summaryrefslogtreecommitdiff
path: root/next-lib/src/telugu/ResTel.gf
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2009-06-22 15:39:08 +0000
committeraarne <aarne@chalmers.se>2009-06-22 15:39:08 +0000
commite89fdae2fa1626348d8025824a7469252fa85e42 (patch)
treec7d46bbd0494043b4bd6f917a25a7687517d0547 /next-lib/src/telugu/ResTel.gf
parent3049b59b35b25381a7c6787444165c200d66e08b (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.gf303
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
--- } ;
---
---
-}