refactor verbs and started with verbal nouns

This commit is contained in:
Krasimir Angelov committed 2026-10-09 17:19:56 +02:00
1 parent aae1eba2b5
commit 7a01a8f924
3 files changed
+16 -45

No files matched your search

+1 -2
View File
@@ -104,8 +104,7 @@ concrete DocumentationTel of Documentation = CatTel ** open
tr (th "Stem" ++ td (verb.s ! VStem)) ++ tr (th "Stem" ++ td (verb.s ! VStem)) ++
tr (th "Absolutive" ++ td (verb.s ! VAbs)) ++ tr (th "Absolutive" ++ td (verb.s ! VAbs)) ++
tr (th "Imperative" ++ td (verb.s ! VImp Sg Pos)) ++ tr (th "Imperative" ++ td (verb.s ! VImp Sg Pos)) ++
tr (th "Request" ++ td (verb.s ! VImp Pl Pos)) ++ tr (th "Request" ++ td (verb.s ! VImp Pl Pos))
tr (th "Future request" ++ td (verb.s ! VReqFut))
) ++ ) ++
heading2 "Past" ++ heading2 "Past" ++
heading3 "Masculine" ++ personTable verb (VPast Masc) ++ heading3 "Masculine" ++ personTable verb (VPast Masc) ++
+1 -5
View File
@@ -66,11 +66,7 @@ oper
mkV = overload { mkV = overload {
mkV : Str -> V mkV : Str -> V
= \s -> regVerb s ** {lock_V = <>} ; = \s -> regVerb s ** {lock_V = <>}
mkV : (x1,_,_,_,_,_,x7 : Str) -> V
= \inf,stem,ss1,ss2,sp2,sp3,r ->
mkVerb inf stem ss1 ss2 sp2 sp3 r **
{lock_V = <>} ;
} ; } ;
----3 Two-place verbs ----3 Two-place verbs
+14 -38
View File
@@ -82,44 +82,15 @@ resource ResTel = ParamX ** open Prelude in {
| VRelativePresent | VRelativePresent
| VPastPart | VPastPart
| VHortative | VHortative
| VNoun Number Case
| VSubj Number Person | VSubj Number Person
| VAbs | VAbs
| VImp Number Polarity | VImp Number Polarity
| VReqFut
; ;
oper oper
Verb = {s, passive : VForm => Str} ; Verb = {s, passive : VForm => Str} ;
mkVerb : (x1,_,_,_,_,_,x7 : Str) -> Verb =
\inf,stem,ss1,ss2,sp2,sp3,r -> {
s =
let ga : Number -> Gender -> Str = \_,_ -> []
in table {
VInf => inf ;
VStem => stem ;
VSubj Sg P1 => ss1 ;
VSubj Sg _ => ss2 ;
VSubj Pl P2 => sp2 ;
VSubj Pl _ => sp3 ;
VAbs => stem ;
VImp Sg Pos => sp2 ;
VImp Sg Neg => verbRoot stem + "వద్దు" ;
VImp Pl Pos => r ;
VImp Pl Neg => verbRoot stem + "కండి" ;
VReqFut => r ;
VPresent g n p => presentFinite stem (Ag g n p) ;
VPast g n p => pastFinite stem (Ag g n p) ;
VFuture pol g n p => futureFinite stem pol (Ag g n p) ;
VNegFinite => verbRoot stem + "లేదు" ;
VPresentPart => nonPastStem stem + "ున్న" ;
VRelativePresent => relativePresent stem ;
VPastPart => pastStem stem + "ిన" ;
VHortative => verbRoot stem + "దాం"
} ;
passive = conjugation (verbRoot stem + "బడు")
} ;
regVerb : Str -> Verb = \verb -> { regVerb : Str -> Verb = \verb -> {
s = conjugation verb ; s = conjugation verb ;
passive = conjugation (verbRoot verb + "బడు") passive = conjugation (verbRoot verb + "బడు")
@@ -137,17 +108,17 @@ resource ResTel = ParamX ** open Prelude in {
VRelativePresent => relativePresent verb ; VRelativePresent => relativePresent verb ;
VPastPart => pastStem verb + "ిన" ; VPastPart => pastStem verb + "ిన" ;
VHortative => root + "దాం" ; VHortative => root + "దాం" ;
VNoun n c => (wallNoun (verbalNoun verb)).s ! n ! c ;
VSubj n p => nonPastStem verb + finiteEnding (Ag Masc n p) ; VSubj n p => nonPastStem verb + finiteEnding (Ag Masc n p) ;
VAbs => pastStem verb + "ి" ; VAbs => pastStem verb + "ి" ;
VImp Sg Pos => verb ; VImp Sg Pos => verb ;
VImp Sg Neg => root + "వద్దు" ; VImp Sg Neg => root + "వద్దు" ;
VImp Pl Pos => root + "ండి" ; VImp Pl Pos => root + "ండి" ;
VImp Pl Neg => root + "కండి" ; VImp Pl Neg => root + "కండి"
VReqFut => root + "ండి"
} ; } ;
-- The WordNet lexicon gives verbs in the usual dictionary/imperative -- The dictionary for is the imperative form.
-- form. These operations provide the productive spoken-Telugu stems. -- This operation provides the productive spoken-Telugu stems.
-- Irregular high-frequency verbs are listed before the regular suffix -- Irregular high-frequency verbs are listed before the regular suffix
-- rules; compound verbs are handled because matching is suffix based. -- rules; compound verbs are handled because matching is suffix based.
verbRoot : Str -> Str = \verb -> case verb of { verbRoot : Str -> Str = \verb -> case verb of {
@@ -156,6 +127,13 @@ resource ResTel = ParamX ** open Prelude in {
_ => verb _ => verb
} ; } ;
verbalNoun : Str -> Str = \verb -> case verb of {
stem + "పోవు" => stem + "పోవడం" ;
stem + "చేయు" => stem + "చేయడం" ;
stem + "వు" => stem + "వడం" ;
_ => verbRoot verb + "డం"
} ;
pastStem : Str -> Str = \verb -> case verb of { pastStem : Str -> Str = \verb -> case verb of {
stem + "చేయు" => stem + "చేశ" ; stem + "చేయు" => stem + "చేశ" ;
stem + "తిను" => stem + "తిన్న" ; stem + "తిను" => stem + "తిన్న" ;
@@ -359,7 +337,6 @@ resource ResTel = ParamX ** open Prelude in {
| VPTense VPHTense Agr -- 9 * 12 | VPTense VPHTense Agr -- 9 * 12
| VPImp Number | VPImp Number
| VPReqFut | VPReqFut
| VPStem
| VPPresPart | VPPresPart
| VPRelPresent | VPRelPresent
| VPPastPart | VPPastPart
@@ -383,7 +360,7 @@ resource ResTel = ParamX ** open Prelude in {
comp : Agr => Str comp : Agr => Str
} ; } ;
verbForms : Verb -> (Polarity => VPHForm => FiniteForm) = \verb -> \\b,vh => verbForms : Verb -> Polarity => VPHForm => FiniteForm = \verb -> \\b,vh =>
let let
na = case b of {Pos => []; Neg => "వద్దు" } ; na = case b of {Pos => []; Neg => "వద్దు" } ;
negative = case b of {Pos => []; Neg => "లేదు"} ; negative = case b of {Pos => []; Neg => "లేదు"} ;
@@ -414,8 +391,7 @@ resource ResTel = ParamX ** open Prelude in {
VPRelPresent => {fin = verb.s ! VRelativePresent ; inf = [] ; neg = na} ; VPRelPresent => {fin = verb.s ! VRelativePresent ; inf = [] ; neg = na} ;
VPPastPart => {fin = verb.s ! VPastPart ; inf = [] ; neg = na} ; VPPastPart => {fin = verb.s ! VPastPart ; inf = [] ; neg = na} ;
VPHort => {fin = verb.s ! VHortative ; inf = [] ; neg = na} ; VPHort => {fin = verb.s ! VHortative ; inf = [] ; neg = na} ;
VPImp n => {fin = verb.s ! VImp n b ; inf = [] ; neg = []} ; VPImp n => {fin = verb.s ! VImp n b ; inf = [] ; neg = []}
VPReqFut => {fin = verb.s ! VReqFut ; inf = [] ; neg = na}
} ; } ;
predV : Verb -> VPH = \verb -> { predV : Verb -> VPH = \verb -> {