more refactoring

This commit is contained in:
Krasimir Angelov committed 2026-10-10 17:59:54 +02:00
1 parent 16a8e0e893
commit cf8fdd7cec
3 files changed
+35 -65

No files matched your search

+6 -6
View File
@@ -107,15 +107,15 @@ concrete DocumentationTel of Documentation = CatTel ** open
tr (th "Request" ++ td (verb.s ! VImp Pl Pos))
) ++
heading2 "Past" ++
heading3 "Masculine" ++ personTable verb (VPast Masc) ++
heading3 "Feminine" ++ personTable verb (VPast Fem) ++
heading3 "Neuter" ++ personTable verb (VPast Neutr) ++
heading3 "Masculine" ++ personTable verb (\n,p -> VPast (Ag Masc n p)) ++
heading3 "Feminine" ++ personTable verb (\n,p -> VPast (Ag Fem n p)) ++
heading3 "Neuter" ++ personTable verb (\n,p -> VPast (Ag Neutr n p)) ++
heading2 "Subjunctive" ++
personTable verb VSubj ++
heading2 "Future" ++
heading3 "Masculine" ++ personTable verb (VFuture Pos Masc) ++
heading3 "Feminine" ++ personTable verb (VFuture Pos Fem) ++
heading3 "Neuter" ++ personTable verb (VFuture Pos Neutr) ;
heading3 "Masculine" ++ personTable verb (\n,p -> VFuture Pos (Ag Masc n p)) ++
heading3 "Feminine" ++ personTable verb (\n,p -> VFuture Pos (Ag Fem n p)) ++
heading3 "Neuter" ++ personTable verb (\n,p -> VFuture Pos (Ag Neutr n p)) ;
genderNumberTable : Verb -> (Gender -> Number -> VForm) -> Str = \verb,form ->
frameTable (
+3 -3
View File
@@ -16,7 +16,7 @@ lin
beautiful_A = mkA "అందమైన";
become_VA = mkVA (mkV "అవు") ;
beer_N = mkN "బీరు" ;
beg_V2V = mkV2V (mkV "వేడుకో") noPrep toP ;
beg_V2V = mkV2V (mkV "వేడుకొను") noPrep toP ;
big_A = mkA "పెద్ద" ;
bike_N = mkN "సైకిల్" ;
bird_N = mkN "పక్షి" ;
@@ -100,7 +100,7 @@ lin
know_V2 = dirV2 (mkV "తెలుసు") ;
lake_N = mkN "సరస్సు" ;
lamp_N = mkN "దీపం" ;
learn_V2 = dirV2 (mkV "నేర్చుకో") ;
learn_V2 = dirV2 (mkV "నేర్చుకొను") ;
leather_N = mkN "తోలు" ;
leave_V2 = dirV2 (mkV "విడిచిపెట్టు") ;
like_V2 = dirV2 (mkV "ఇష్టపడు") ;
@@ -189,7 +189,7 @@ lin
tree_N = mkN "చెట్టు" ;
-- trousers_N = mkN "trousers" ;
ugly_A = mkA "వికారమైన" ;
understand_V2 = dirV2 (mkV "అర్థంచేసుకో") ;
understand_V2 = dirV2 (mkV "అర్థం చేసుకొను") ;
university_N = mkN "విశ్వవిద్యాలయం" ;
village_N = mkN "గ్రామం" ;
wait_V2 = prepV2 (mkV "వేచిఉండు") forP ;
+26 -56
View File
@@ -5,7 +5,7 @@
-- This module contains operations that are needed to make the
-- resource syntax work.
resource ResTel = ParamX ** open Prelude in {
resource ResTel = ParamX ** open Prelude, Predef in {
flags optimize=all ;
@@ -74,9 +74,9 @@ resource ResTel = ParamX ** open Prelude in {
VForm =
VInf
| VStem
| VPresent Gender Number Person
| VPast Gender Number Person
| VFuture Polarity Gender Number Person
| VPresent Agr
| VPast Agr
| VFuture Polarity Agr
| VNegFinite
| VPresentPart
| VRelativePresent
@@ -99,16 +99,16 @@ resource ResTel = ParamX ** open Prelude in {
conjugation : Str -> VForm => Str = \verb ->
let root = verbRoot verb in table {
VInf => root + "డం" ;
VStem => verb ;
VPresent g n p => presentFinite verb (Ag g n p) ;
VPast g n p => pastFinite verb (Ag g n p) ;
VFuture pol g n p => futureFinite verb pol (Ag g n p) ;
VStem => root ;
VPresent agr => presentFinite verb agr ;
VPast agr => pastFinite verb agr ;
VFuture pol agr => futureFinite verb pol agr ;
VNegFinite => root + "లేదు" ;
VPresentPart => nonPastStem verb + "ున్న" ;
VRelativePresent => relativePresent verb ;
VPastPart => pastStem verb + "ిన" ;
VHortative => root + "దాం" ;
VNoun n c => (wallNoun (verbalNoun verb)).s ! n ! c ;
VNoun n c => (wallNoun (verbRoot verb + "డం")).s ! n ! c ;
VSubj n p => nonPastStem verb + finiteEnding (Ag Masc n p) ;
VAbs => pastStem verb + "ి" ;
VImp Sg Pos => verb ;
@@ -117,21 +117,13 @@ resource ResTel = ParamX ** open Prelude in {
VImp Pl Neg => root + "కండి"
} ;
-- The dictionary for is the imperative form.
-- The dictionary form is the imperative form.
-- This operation provides the productive spoken-Telugu stems.
-- Irregular high-frequency verbs are listed before the regular suffix
-- rules; compound verbs are handled because matching is suffix based.
verbRoot : Str -> Str = \verb -> case verb of {
stem + "ండి" => stem ;
stem + "ు" => stem ;
_ => verb
} ;
verbalNoun : Str -> Str = \verb -> case verb of {
stem + "పోవు" => stem + "పోవడం" ;
stem + "చేయు" => stem + "చేయడం" ;
stem + "వు" => stem + "వడం" ;
_ => verbRoot verb + "డం"
_ => error (verb ++ "is not a valid verb")
} ;
pastStem : Str -> Str = \verb -> case verb of {
@@ -181,28 +173,17 @@ resource ResTel = ParamX ** open Prelude in {
} ;
presentFinite : Str -> Agr -> Str = \verb,agr ->
nonPastStem verb + "ున్న" + case agr of {
Ag _ Sg P1 => "ాను" ;
Ag _ Sg P2 => "ావు" ;
Ag Masc Sg P3 => "ాడు" ;
Ag _ Sg P3 => "ది" ;
Ag _ Pl P1 => "ాము" ;
Ag Neutr Pl P3 => "ాయి" ;
Ag _ Pl _ => "ారు"
} ;
nonPastStem verb + "ున్న" + finiteEnding agr ;
pastFinite : Str -> Agr -> Str = \verb,agr -> case agr of {
Ag Masc Sg P3 => pastStem verb + "ాడు" ;
Ag Masc Sg P3 => pastStem verb + finiteEnding agr ;
Ag _ Sg P3 => case verb of {
stem + "చేయు" => stem + "చేసింది" ;
stem + "తిను" => stem + "తిన్నది" ;
stem + "విను" => stem + "విన్నది" ;
stem + "కొను" => stem + "కొన్నది" ;
stem + "కను" => stem + "కన్నది" ;
_ => pastStem verb + case agr of {
Ag Masc Sg P3 => "ాడు" ;
_ => "ింది"
}
_ => pastStem verb + finiteEnding agr
} ;
_ => pastStem verb + finiteEnding agr
} ;
@@ -232,15 +213,6 @@ resource ResTel = ParamX ** open Prelude in {
Ag _ Pl _ => "రు"
} ;
finitePast : Verb -> Agr -> Str = \verb,agr ->
case agr of {Ag g n p => verb.s ! VPast g n p} ;
finitePresent : Verb -> Agr -> Str = \verb,agr ->
case agr of {Ag g n p => verb.s ! VPresent g n p} ;
finiteFuture : Polarity -> Verb -> Agr -> Str = \pol,verb,agr ->
case agr of {Ag g n p => verb.s ! VFuture pol g n p} ;
passiveV : Verb -> Verb = \verb -> {
s = verb.passive ;
passive = verb.passive
@@ -272,8 +244,7 @@ resource ResTel = ParamX ** open Prelude in {
VPPastPart => {fin = "అయిన" ; neg = []} ;
VPHort => {fin = "అవుదాం" ; neg = []} ;
VPImp Sg => {fin = "అవు" ; neg = []} ;
VPImp Pl => {fin = "అవండి" ; neg = []} ;
VPReqFut => {fin = "అవండి" ; neg = []}
VPImp Pl => {fin = "అవండి" ; neg = []}
} ;
passive = verbForms (regVerb "అవు") ;
obj = {s = [] ; a = defaultAgr} ;
@@ -336,7 +307,6 @@ resource ResTel = ParamX ** open Prelude in {
VPInf
| VPTense VPHTense Agr -- 9 * 12
| VPImp Number
| VPReqFut
| VPPresPart
| VPRelPresent
| VPPastPart
@@ -368,19 +338,19 @@ resource ResTel = ParamX ** open Prelude in {
case vh of {
VPTense tense agr => case b of {
Neg => case tense of {
VPFut => {fin = finiteFuture Neg verb agr ; neg = []} ;
_ => {fin = verb.s ! VNegFinite ; neg = []}
VPFut => {fin = verb.s ! VFuture Neg agr ; neg = []} ;
_ => {fin = verb.s ! VNegFinite ; neg = []}
} ;
Pos => case tense of {
VPGenPres => {fin = finiteFuture Pos verb agr ; neg = []} ;
VPImpPast => {fin = finitePast verb agr ; neg = []} ;
VPContPres => {fin = finitePresent verb agr ; neg = []} ;
VPContPast => {fin = finitePast verb agr ; neg = []} ;
VPPerf => {fin = finitePast verb agr ; neg = []} ;
VPPerfPres => {fin = finitePast verb agr ; neg = []} ;
VPPerfPast => {fin = finitePast verb agr ; neg = []} ;
VPSubj => {fin = finiteFuture Pos verb agr ; neg = []} ;
VPFut => {fin = finiteFuture Pos verb agr ; neg = []}
VPGenPres => {fin = verb.s ! VFuture Pos agr ; neg = []} ;
VPImpPast => {fin = verb.s ! VPast agr ; neg = []} ;
VPContPres => {fin = verb.s ! VPresent agr ; neg = []} ;
VPContPast => {fin = verb.s ! VPast agr ; neg = []} ;
VPPerf => {fin = verb.s ! VPast agr ; neg = []} ;
VPPerfPres => {fin = verb.s ! VPast agr ; neg = []} ;
VPPerfPast => {fin = verb.s ! VPast agr ; neg = []} ;
VPSubj => {fin = verb.s ! VFuture Pos agr ; neg = []} ;
VPFut => {fin = verb.s ! VFuture Pos agr ; neg = []}
}
} ;
{- The finite cases above deliberately precede the legacy form