of {
+ _ => []
+ } ;
+
+ param
+ PronCase = PC Case | PObj | PPoss ;
+ oper
+ personalPronoun : Person -> Number -> {s : PronCase => Str} = \p,n ->
+ case of {
+ => {s = table {PC Dir => "నేను" ; PC Obl => "నా" ; PObj => "నన్ను" ; PPoss => "నా"}} ;
+ => {s = table {PC Dir => "మేము" ; PC Obl => "మా" ; PObj => "మమ్మల్ని" ; PPoss => "మా"}} ;
+ => {s = table {PC Dir => "నువ్వు" ; PC Obl => "నీ" ; PObj => "నిన్ను" ; PPoss => "నీ"}} ;
+ => {s = table {PC Dir => "మీరు" ; PC Obl => "మీ" ; PObj => "మిమ్మల్ని" ; PPoss => "మీ"}} ;
+ => {s = table {PC Dir => "అతను" ; PC Obl => "అతని" ; PObj => "అతన్ని" ; PPoss => "అతని"}} ;
+ => {s = table {PC Dir => "వారు" ; PC Obl => "వారి" ; PObj => "వారిని" ; PPoss => "వారి"}}
+ } ;
+ ---- the third is the vocative - is it really this way?
+
+ -- the Telugu 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 : Polarity => VPHForm => {fin, inf, neg : Str} ;
+ obj : {s : Str ; a : Agr} ;
+ subj : VType ;
+ comp : Agr => Str
+ } ;
+
+ predV : Verb -> VPH = \verb -> {
+ s = \\b,vh =>
+ let
+ na = case b of {Pos => []; Neg => "వద్దు" } ;
+ negative = case b of {Pos => []; Neg => "లేదు"} ;
+ in
+ case vh of {
+ VPTense VPGenPres (Ag g n p) =>
+ {fin = copula CPresent n p g ; inf = verb.s ! VImpf g n ; neg = negative} ;
+ VPTense VPImpPast (Ag g n p) =>
+ {fin = copula CPast n p g ; inf = verb.s ! VImpf g n ; neg = negative} ;
+ VPTense VPContPres (Ag g n p) =>
+ {fin = copula CPresent n p g ;
+ inf = verb.s ! VStem ++ progressive g n ; neg = negative} ;
+ VPTense VPContPast (Ag g n p) =>
+ {fin = copula CPast n p g ;
+ inf = verb.s ! VStem ++ progressive g n ; neg = negative} ;
+ VPTense VPPerf (Ag g n _) =>
+ {fin = verb.s ! VPerf g n ; inf = [] ; neg = negative} ;
+ VPTense VPPerfPres (Ag g n p) =>
+ {fin = copula CPresent n p g ; inf = verb.s ! VPerf g n ; neg = negative} ;
+ VPTense VPPerfPast (Ag g n p) =>
+ {fin = copula CPast n p g ; inf = verb.s ! VPerf g n ; neg = negative} ;
+ 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 = \\_ => []
+ } ;
+
+ progressive : Gender -> Number -> Str = \_,_ -> [] ;
+
+ VPHSlash = VPH ** {c2 : Compl} ;
+
+ Clause : Type = {s : VPHTense => Polarity => 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
+ } ;
+
+ insertAdv : Str -> VPH -> VPH = \adv,vp -> vp ** {
+ comp = \\agr => vp.comp ! agr ++ adv
+ } ;
+
+ tenseVPH : Tense -> Anteriority -> VPHTense = \tense,ant ->
+ case of {
+ => VPGenPres ;
+ => VPPerf ;
+ => VPFut ;
+ => VPSubj ;
+ => VPPerfPres ;
+ => VPPerfPast ;
+ => VPPerf ;
+ => VPPerf
+ } ;
+
+ positivePolarity : Polarity -> Bool = \pol -> case pol of {
+ Pos => True ;
+ Neg => False
+ } ;
+
+ 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
+ } ;
+
+ NP : Type = {s : NPCase => Str ; a : Agr} ;
+
+ mkClause : NP -> VPH -> Clause = \np,vp -> {
+ s = \\vt,b =>
+ let
+ subj = NPC Dir ;
+ agr = np.a ;
+ vps = vp.s ! b ! VPTense vt agr ;
+ in
+ np.s ! subj ++ vp.obj.s ++ vp.comp ! np.a ++ vps.neg ++ vps.inf ++ vps.fin
+ } ;
+
--- reggNoun : Str -> Gender -> Noun = \s,g -> case 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 of {
--- => smd ;
--- => 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 of {
--- => "hUM" ;
--- => "hE" ;
--- => "hE" ;
--- => "hEN" ;
--- => "ho" ;
--- => "hEN" ;
--- => "TA" ;
--- => "TI" ;
--- => "Te" ;
--- => "TIN" ;
--- => "hUNgA" ;
--- => "hUNgI" ;
--- => "hogA" ;
--- => "hogI" ;
--- => "hoge" ;
--- => "hoNge" ;
--- => "hogi:" ;
--- => "hoNgi:"
--- } ;
---
--- param
--- PronCase = PC Case | PObj | PPoss ;
--- oper
--- personalPronoun : Person -> Number -> {s : PronCase => Str} = \p,n ->
--- case of {
--- => {s = table PronCase ["mEN" ; "muJ" ; "muJ" ; "muJe" ; "merA"]} ;
--- => {s = table PronCase ["ham" ; "ham" ; "ham" ; "hameN" ; "hamArA"]} ;
--- => {s = table PronCase ["tU" ; "tuJ" ; "tuJ" ; "tuJe" ; "terA"]} ;
--- => {s = table PronCase ["tum" ; "tum" ; "tum" ; "tum" ; "tumhArA"]} ;
--- => {s = table PronCase ["vah" ; "u-s" ; "u-s" ; "u-se" ; "u-skA"]} ;
--- => {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 => ;
--- VTransPost => ;
--- _ =>
--- } ;
--- _ =>
--- } ;
--- 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
--- } ;
---
---
}
diff --git a/src/telugu/SentenceTel.gf b/src/telugu/SentenceTel.gf
index b067131a..ed484c61 100644
--- a/src/telugu/SentenceTel.gf
+++ b/src/telugu/SentenceTel.gf
@@ -1,66 +1,43 @@
---concrete SentenceTel of Sentence = CatTel ** open Prelude, ResTel in {
---
--- flags optimize=all_subs ;
---
--- lin
---
--- PredVP np vp = mkClause np vp ;
---
----- PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ;
-----
----- ImpVP vp = {
----- s = \\pol,n =>
----- let
----- agr = AgP2 (numImp n) ;
----- verb = infVP True vp agr ;
----- dont = case pol of {
----- CNeg True => "don't" ;
----- CNeg False => "do" ++ "not" ;
----- _ => []
----- }
----- in
----- dont ++ verb
----- } ;
-----
----- SlashVP np vp =
----- mkClause (np.s ! Nom) np.a vp ** {c2 = vp.c2} ;
-----
----- AdvSlash slash adv = {
----- s = \\t,a,b,o => slash.s ! t ! a ! b ! o ++ adv.s ;
----- c2 = slash.c2
----- } ;
-----
----- SlashPrep cl prep = cl ** {c2 = prep.s} ;
-----
----- SlashVS np vs slash =
----- mkClause (np.s ! Nom) np.a
----- (insertObj (\\_ => 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 (agrP3 Sg)} ; --- agr
-----
----- UseCl t a p cl = {
----- s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! ODir
----- } ;
----- UseQCl t a p cl = {
----- s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! q
----- } ;
----- UseRCl t a p cl = {
----- s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! r ;
----- c = cl.c
----- } ;
----- UseSlash t a p cl = {
----- s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! ODir ;
----- c2 = cl.c2
----- } ;
-----
----- AdvS a s = {s = a.s ++ "," ++ s.s} ;
-----
----- RelS s r = {s = s.s ++ "," ++ r.s ! agrP3 Sg} ;
-----
----- oper
----- ctr = contrNeg True ; -- contracted negations
-----
---}
+concrete SentenceTel of Sentence = CatTel ** open Prelude, ResTel in {
+
+ flags optimize=all_subs ;
+
+ lin
+
+ PredVP np vp = mkClause np vp ;
+
+ PredSCVP sc vp = mkClause {s = \\_ => sc.s ; a = agrP3 Neutr Sg} vp ;
+
+ ImpVP vp = {s = let f = vp.s ! Pos ! VPImp in
+ vp.obj.s ++ vp.comp ! defaultAgr ++ f.neg ++ f.inf ++ f.fin} ;
+
+ AdvImp adv imp = {s = adv.s ++ imp.s} ;
+
+ AdvS a s = {s = a.s ++ s.s} ;
+
+ UseCl temp pol cl = {
+ s = temp.s ++ pol.s ++ cl.s ! tenseVPH temp.t temp.a ! pol.p
+ } ;
+
+ UseQCl temp pol cl = {
+ s = temp.s ++ pol.s ++ cl.s ! tenseVPH temp.t temp.a ! pol.p
+ } ;
+
+ UseRCl temp pol cl = {
+ s = cl.s ! tenseVPH temp.t temp.a ! pol.p
+ } ;
+
+ ExtAdvS adv sent = {s = adv.s ++ sent.s} ;
+ SSubjS first subj second = {s = first.s ++ subj.s ++ second.s} ;
+ EmbedS sent = {s = sent.s} ;
+ EmbedQS sent = {s = sent.s} ;
+
+ SlashVP np vps = {
+ s = (mkClause np vps).s ;
+ c2 = vps.c2
+ } ;
+
+ AdvSlash slash adv = slash ** {
+ s = \\t,p => slash.s ! t ! p ++ adv.s
+ } ;
+}
diff --git a/src/telugu/StructuralTel.gf b/src/telugu/StructuralTel.gf
index 6e070127..73928963 100644
--- a/src/telugu/StructuralTel.gf
+++ b/src/telugu/StructuralTel.gf
@@ -1,132 +1,159 @@
---concrete StructuralTel of Structural = CatTel **
--- open MorphoTel, (P = ParadigmsTel), Prelude in {
+concrete StructuralTel of Structural = CatTel **
+ open MorphoTel, (P = ParadigmsTel), Prelude in {
+
+ flags optimize=all ;
+
+ lin
+ all_Predet = {s = "అన్ని"} ;
+ although_Subj = {s = "అయినప్పటికీ"} ;
+ and_Conj = {s1 = [] ; s2 = "మరియు" ; n = Pl} ;
+ because_Subj = {s = "ఎందుకంటే"} ;
+ either7or_DConj = {s1 = "గాని" ; s2 = "లేదా" ; n = Sg} ;
+ both7and_DConj = {s1 = "రెండూ" ; s2 = "మరియు" ; n = Pl} ;
+ every_Det = {s = \\_,_ => "ప్రతి" ; n = Sg} ;
+ if_Subj = {s = "అయితే"} ;
+ it_Pron = {
+ s = table {PC Dir => "అది" ; PC Obl => "దాని" ; PObj => "దానిని" ; PPoss => "దాని"} ;
+ a = Ag Neutr Sg P3
+ } ;
+ or_Conj = {s1 = [] ; s2 = "లేదా" ; n = Sg} ;
+ she_Pron = {
+ s = table {PC Dir => "ఆమె" ; PC Obl => "ఆమె" ; PObj => "ఆమెను" ; PPoss => "ఆమె"} ;
+ a = Ag Fem Sg P3
+ } ;
+ that_Quant = {s = \\_,_,_ => "ఆ"} ;
+ that_Subj = {s = "అని"} ;
+ they_Pron = personalPronoun P3 Pl ** {a = Ag Masc Pl P3} ;
+ this_Quant = {s = \\_,_,_ => "ఈ"} ;
+ very_AdA = {s = "చాలా"} ;
+ when_Subj = {s = "అప్పుడు"} ;
+ with_Prep = {s = "తో"} ;
+ youSg_Pron = personalPronoun P2 Sg ** {a = Ag Masc Sg P2} ;
+ youPl_Pron = personalPronoun P2 Pl ** {a = Ag Masc Pl P2} ;
+ youPol_Pron = personalPronoun P2 Pl ** {a = Ag Masc Pl P2} ;
+-- above_Prep = ss "above" ;
+-- after_Prep = ss "after" ;
+-- all_Predet = ss "all" ;
+-- almost_AdA, almost_AdN = ss "almost" ;
+-- although_Subj = ss "although" ;
+-- always_AdV = ss "always" ;
+-- and_Conj = sd2 [] "and" ** {n = Pl} ;
+-----b and_Conj = ss "and" ** {n = Pl} ;
+-- because_Subj = ss "because" ;
+-- before_Prep = ss "before" ;
+-- behind_Prep = ss "behind" ;
+-- between_Prep = ss "between" ;
+-- both7and_DConj = sd2 "both" "and" ** {n = Pl} ;
+-- but_PConj = ss "but" ;
+-- by8agent_Prep = ss "by" ;
+-- by8means_Prep = ss "by" ;
+-- can8know_VV, can_VV = {
+-- s = table {
+-- VVF VInf => ["be able to"] ;
+-- VVF VPres => "can" ;
+-- VVF VPPart => ["been able to"] ;
+-- VVF VPresPart => ["being able to"] ;
+-- VVF VPast => "could" ; --# notpresent
+-- VVPastNeg => "couldn't" ; --# notpresent
+-- VVPresNeg => "can't"
+-- } ;
+-- isAux = True
+-- } ;
+-- during_Prep = ss "during" ;
+-- either7or_DConj = sd2 "either" "or" ** {n = Sg} ;
+-- everybody_NP = regNP "everybody" Sg ;
+-- every_Det = mkDeterminer Sg "every" ;
+-- everything_NP = regNP "everything" Sg ;
+-- everywhere_Adv = ss "everywhere" ;
+-- few_Det = mkDeterminer Pl "few" ;
+----- first_Ord = ss "first" ; DEPRECATED
+-- for_Prep = ss "for" ;
+-- from_Prep = ss "from" ;
+ he_Pron = personalPronoun P3 Sg ** {a = Ag Masc Sg P3} ;
+-- here_Adv = ss "here" ;
+-- here7to_Adv = ss ["to here"] ;
+-- here7from_Adv = ss ["from here"] ;
+-- how_IAdv = ss "how" ;
+-- how8many_IDet = mkDeterminer Pl ["how many"] ;
+-- if_Subj = ss "if" ;
+-- in8front_Prep = ss ["in front of"] ;
+ i_Pron = personalPronoun P1 Sg ** {a = Ag Masc Sg P1} ;
+ in_Prep = ss "లో" ;
+-- it_Pron = mkNP "it" "it" "its" Sg P3 Neutr ;
+-- less_CAdv = ss "less" ;
+-- many_Det = mkDeterminer Pl "many" ;
+-- more_CAdv = ss "more" ;
+-- most_Predet = ss "most" ;
+-- much_Det = mkDeterminer Sg "much" ;
+-- 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 "no" ;
+-- on_Prep = ss "on" ;
+------ one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
+-- only_Predet = ss "only" ;
+-- or_Conj = sd2 [] "or" ** {n = Sg} ;
+-- otherwise_PConj = ss "otherwise" ;
+-- part_Prep = ss "of" ;
+-- please_Voc = ss "please" ;
+-- possess_Prep = ss "of" ;
+-- quite_Adv = ss "quite" ;
+-- she_Pron = mkNP "she" "her" "her" Sg P3 Fem ;
+-- so_AdA = ss "so" ;
+-- somebody_NP = regNP "somebody" Sg ;
+-- someSg_Det = mkDeterminer Sg "some" ;
+-- somePl_Det = mkDeterminer Pl "some" ;
+-- something_NP = regNP "something" Sg ;
+-- somewhere_Adv = ss "somewhere" ;
+-- that_Quant = mkQuant "that" "those" ;
+-- there_Adv = ss "there" ;
+-- there7to_Adv = ss "there" ;
+-- there7from_Adv = ss ["from there"] ;
+-- therefore_PConj = ss "therefore" ;
+-- they_Pron = mkNP "they" "them" "their" Pl P3 Masc ; ----
+-- this_Quant = mkQuant "this" "these" ;
+-- through_Prep = ss "through" ;
+-- too_AdA = ss "too" ;
+-- to_Prep = ss "to" ;
+-- under_Prep = ss "under" ;
+-- very_AdA = ss "very" ;
+-- want_VV = P.mkVV (P.regV "want") ;
+ we_Pron = personalPronoun P1 Pl ** {a = Ag Masc Pl P1} ;
+
+-- whatPl_IP = mkIP "what" "what" "what's" Sg ;
+-- whatSg_IP = mkIP "what" "what" "what's" Sg ;
+-- when_IAdv = ss "when" ;
+-- when_Subj = ss "when" ;
+-- where_IAdv = ss "where" ;
+-- which_IQuant = {s = \\_ => "which"} ;
+-----b whichPl_IDet = mkDeterminer Pl ["which"] ;
+-----b whichSg_IDet = mkDeterminer Sg ["which"] ;
+-- whoSg_IP = mkIP "who" "whom" "whose" Sg ;
+-- whoPl_IP = mkIP "who" "whom" "whose" Pl ;
+-- why_IAdv = ss "why" ;
+-- without_Prep = ss "without" ;
+-- with_Prep = ss "with" ;
+-----b yes_Phr = ss "yes" ;
+-- yes_Utt = ss "yes" ;
+-- youSg_Pron = mkNP "you" "you" "your" Sg P2 Masc ;
+-- youPl_Pron = mkNP "you" "you" "your" Pl P2 Masc ;
+-- youPol_Pron = mkNP "you" "you" "your" Sg P2 Masc ;
--
--- flags optimize=all ;
--
--- lin
----- above_Prep = ss "above" ;
----- after_Prep = ss "after" ;
----- all_Predet = ss "all" ;
----- almost_AdA, almost_AdN = ss "almost" ;
----- although_Subj = ss "although" ;
----- always_AdV = ss "always" ;
----- and_Conj = sd2 [] "and" ** {n = Pl} ;
--------b and_Conj = ss "and" ** {n = Pl} ;
----- because_Subj = ss "because" ;
----- before_Prep = ss "before" ;
----- behind_Prep = ss "behind" ;
----- between_Prep = ss "between" ;
----- both7and_DConj = sd2 "both" "and" ** {n = Pl} ;
----- but_PConj = ss "but" ;
----- by8agent_Prep = ss "by" ;
----- by8means_Prep = ss "by" ;
----- can8know_VV, can_VV = {
----- s = table {
----- VVF VInf => ["be able to"] ;
----- VVF VPres => "can" ;
----- VVF VPPart => ["been able to"] ;
----- VVF VPresPart => ["being able to"] ;
----- VVF VPast => "could" ; --# notpresent
----- VVPastNeg => "couldn't" ; --# notpresent
----- VVPresNeg => "can't"
----- } ;
----- isAux = True
----- } ;
----- during_Prep = ss "during" ;
----- either7or_DConj = sd2 "either" "or" ** {n = Sg} ;
----- everybody_NP = regNP "everybody" Sg ;
----- every_Det = mkDeterminer Sg "every" ;
----- everything_NP = regNP "everything" Sg ;
----- everywhere_Adv = ss "everywhere" ;
----- few_Det = mkDeterminer Pl "few" ;
-------- first_Ord = ss "first" ; DEPRECATED
----- for_Prep = ss "for" ;
----- from_Prep = ss "from" ;
--- he_Pron = personalPronoun P3 Sg ** {a = Ag Masc Sg P3} ;
----- here_Adv = ss "here" ;
----- here7to_Adv = ss ["to here"] ;
----- here7from_Adv = ss ["from here"] ;
----- how_IAdv = ss "how" ;
----- how8many_IDet = mkDeterminer Pl ["how many"] ;
----- if_Subj = ss "if" ;
----- in8front_Prep = ss ["in front of"] ;
--- i_Pron = personalPronoun P1 Sg ** {a = Ag Masc Sg P1} ;
--- in_Prep = ss "meN" ;
----- it_Pron = mkNP "it" "it" "its" Sg P3 Neutr ;
----- less_CAdv = ss "less" ;
----- many_Det = mkDeterminer Pl "many" ;
----- more_CAdv = ss "more" ;
----- most_Predet = ss "most" ;
----- much_Det = mkDeterminer Sg "much" ;
----- 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 "no" ;
----- on_Prep = ss "on" ;
--------- one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
----- only_Predet = ss "only" ;
----- or_Conj = sd2 [] "or" ** {n = Sg} ;
----- otherwise_PConj = ss "otherwise" ;
----- part_Prep = ss "of" ;
----- please_Voc = ss "please" ;
----- possess_Prep = ss "of" ;
----- quite_Adv = ss "quite" ;
----- she_Pron = mkNP "she" "her" "her" Sg P3 Fem ;
----- so_AdA = ss "so" ;
----- somebody_NP = regNP "somebody" Sg ;
----- someSg_Det = mkDeterminer Sg "some" ;
----- somePl_Det = mkDeterminer Pl "some" ;
----- something_NP = regNP "something" Sg ;
----- somewhere_Adv = ss "somewhere" ;
----- that_Quant = mkQuant "that" "those" ;
----- there_Adv = ss "there" ;
----- there7to_Adv = ss "there" ;
----- there7from_Adv = ss ["from there"] ;
----- therefore_PConj = ss "therefore" ;
----- they_Pron = mkNP "they" "them" "their" Pl P3 Masc ; ----
----- this_Quant = mkQuant "this" "these" ;
----- through_Prep = ss "through" ;
----- too_AdA = ss "too" ;
----- to_Prep = ss "to" ;
----- under_Prep = ss "under" ;
----- very_AdA = ss "very" ;
----- want_VV = P.mkVV (P.regV "want") ;
--- we_Pron = personalPronoun P1 Pl ** {a = Ag Masc Pl P1} ;
+--oper
+-- mkQuant : Str -> Str -> {s : Number => Str} = \x,y -> {
+-- s = table Number [x ; y]
+-- } ;
+--
+}
--
----- whatPl_IP = mkIP "what" "what" "what's" Sg ;
----- whatSg_IP = mkIP "what" "what" "what's" Sg ;
----- when_IAdv = ss "when" ;
----- when_Subj = ss "when" ;
----- where_IAdv = ss "where" ;
----- which_IQuant = {s = \\_ => "which"} ;
--------b whichPl_IDet = mkDeterminer Pl ["which"] ;
--------b whichSg_IDet = mkDeterminer Sg ["which"] ;
----- whoSg_IP = mkIP "who" "whom" "whose" Sg ;
----- whoPl_IP = mkIP "who" "whom" "whose" Pl ;
----- why_IAdv = ss "why" ;
----- without_Prep = ss "without" ;
----- with_Prep = ss "with" ;
--------b yes_Phr = ss "yes" ;
----- yes_Utt = ss "yes" ;
----- youSg_Pron = mkNP "you" "you" "your" Sg P2 Masc ;
----- youPl_Pron = mkNP "you" "you" "your" Pl P2 Masc ;
----- youPol_Pron = mkNP "you" "you" "your" Sg P2 Masc ;
-----
-----
-----oper
----- mkQuant : Str -> Str -> {s : Number => Str} = \x,y -> {
----- s = table Number [x ; y]
----- } ;
-----
---}
-----
diff --git a/src/telugu/VerbTel.gf b/src/telugu/VerbTel.gf
index f047ba2c..22bb15ff 100644
--- a/src/telugu/VerbTel.gf
+++ b/src/telugu/VerbTel.gf
@@ -1,50 +1,58 @@
---concrete VerbTel of Verb = CatTel ** open ResTel in {
---
--- flags optimize=all_subs ;
---
--- lin
--- UseV = predV ;
---
--- SlashV2a v = predV v ** {c2 = v.c2} ;
---
----- Slash2V3 v np =
----- insertObjc (\\_ => v.c2 ++ np.s ! Acc) (predV v ** {c2 = v.c3}) ;
----- Slash3V3 v np =
----- insertObjc (\\_ => v.c3 ++ np.s ! Acc) (predVc v) ; ----
-----
----- ComplVV v vp = insertObj (\\a => infVP v.isAux vp a) (predVV v) ;
----- ComplVS v s = insertObj (\\_ => conjThat ++ s.s) (predV v) ;
----- ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ;
----- ComplVA v ap = insertObj (ap.s) (predV v) ;
-----
----- SlashV2V v vp = insertObjc (\\a => infVP v.isAux vp a) (predVc v) ;
----- SlashV2S v s = insertObjc (\\_ => conjThat ++ s.s) (predVc v) ;
----- SlashV2Q v q = insertObjc (\\_ => q.s ! QIndir) (predVc v) ;
----- SlashV2A v ap = insertObjc (\\a => ap.s ! a) (predVc v) ; ----
---
--- ComplSlash vp np = insertObject np vp ;
---
----- SlashVV vv vp =
----- insertObj (\\a => infVP vv.isAux vp a) (predVV vv) **
----- {c2 = vp.c2} ;
----- SlashV2VNP vv np vp =
----- insertObjPre (\\_ => vp.c2 ++ np.s ! Acc)
----- (insertObjc (\\a => infVP vv.isAux vp a) (predVc vv)) **
----- {c2 = vp.c2} ;
-----
----- UseComp comp = insertComplement comp.s (predAux auxBe) ;
-----
----- AdvVP vp adv = insertObj (\\_ => adv.s) vp ;
-----
----- AdVVP adv vp = insertAdV adv.s vp ;
-----
----- ReflVP v = insertObjPre (\\a => v.c2 ++ reflPron ! a) v ;
-----
----- PassV2 v = insertObj (\\_ => v.s ! VPPart) (predAux auxBe) ;
-----
-----
----- CompAP ap = ap ;
----- CompNP np = {s = \\_ => np.s ! Acc} ;
----- CompAdv a = {s = \\_ => a.s} ;
-----
---}
+concrete VerbTel of Verb = CatTel ** open ResTel, Prelude in {
+
+ flags optimize=all_subs ;
+
+ lin
+ UseV = predV ;
+
+ SlashV2a v = predV v ** {c2 = v.c2} ;
+
+ SlashV2A v ap = predV v ** {
+ c2 = v.c2 ;
+ comp = \\agr => case agr of {Ag g n _ => ap.s ! g ! n ! Dir}
+ } ;
+
+ Slash2V3 v np =
+ let vp = insertObject np (predV v ** {c2 = v.c2})
+ in vp ** {c2 = v.c3} ;
+
+ Slash3V3 v np =
+ let vp = insertObject np (predV v ** {c2 = v.c3})
+ in vp ** {c2 = v.c2} ;
+
+ AdvVPSlash vps adv = vps ** {
+ comp = \\agr => vps.comp ! agr ++ adv.s
+ } ;
+
+ AdVVPSlash adv vps = vps ** {
+ comp = \\agr => adv.s ++ vps.comp ! agr
+ } ;
+
+ ComplSlash vp np = insertObject np vp ;
+
+ ComplVV v vp = predV v ** {
+ comp = \\agr => let f = vp.s ! Pos ! VPInf in
+ f.inf ++ f.fin
+ } ;
+
+ ComplVS v s = predV v ** {comp = \\_ => s.s} ;
+ ComplVQ v q = predV v ** {comp = \\_ => q.s} ;
+ ComplVA v ap = predV v ** {comp = \\agr => case agr of {
+ Ag g n _ => ap.s ! g ! n ! Dir
+ }} ;
+
+ AdVVP adv vp = insertAdv adv.s vp ;
+
+ UseComp comp = predV (regVerb []) ** {comp = comp.s} ;
+
+ CompAP ap = {s = \\agr => case agr of {
+ Ag g n _ => ap.s ! g ! n ! Dir
+ }} ;
+ CompNP np = {s = \\_ => np.s ! NPC Obl} ;
+ CompAdv adv = {s = \\_ => adv.s} ;
+ CompCN cn = {s = \\_ => cn.s ! Sg ! Dir} ;
+
+ AdvVP vp adv = insertAdv adv.s vp ;
+ ExtAdvVP vp adv = insertAdv adv.s vp ;
+
+}