diff options
Diffstat (limited to 'next-lib/src/telugu/MorphoTel.gf')
| -rw-r--r-- | next-lib/src/telugu/MorphoTel.gf | 196 |
1 files changed, 0 insertions, 196 deletions
diff --git a/next-lib/src/telugu/MorphoTel.gf b/next-lib/src/telugu/MorphoTel.gf deleted file mode 100644 index a56a736fc..000000000 --- a/next-lib/src/telugu/MorphoTel.gf +++ /dev/null @@ -1,196 +0,0 @@ -----# -path=.:../../prelude ----- -------1 A Simple Teldi Resource Morphology ------- ------- Aarne Ranta 2002 -- 2005 ------- ------- This resource morphology contains definitions needed in the resource ------- syntax. To build a lexicon, it is better to use $ParadigmsTel$, which ------- gives a higher-level access to this module. ----- ---resource MorphoTel = ResTel ** open Prelude, (Predef=Predef) in { ----- ----- flags optimize=all ; ----- -------2 Phonology ------- ------- To regulate the use of endings for both nouns, adjectives, and verbs: ----- -----oper ----- y2ie : Str -> Str -> Str = \fly,s -> ----- let y = last (init fly) in ----- case y of { ----- "a" => fly + s ; ----- "e" => fly + s ; ----- "o" => fly + s ; ----- "u" => fly + s ; ----- _ => init fly + "ie" + s ----- } ; ----- ----- -------2 Nouns ------- ------- For conciseness and abstraction, we define a worst-case macro for ------- noun inflection. It is used for defining special case that ------- only need one string as argument. ----- -----oper ----- CommonNoun : Type = {s : Number => Case => Str} ; ----- ----- nounGen : Str -> CommonNoun = \dog -> case last dog of { ----- "y" => nounY "dog" ; ----- "s" => nounS (init "dog") ; ----- _ => nounReg "dog" ----- } ; ----- ------- These are auxiliaries to $nounGen$. ----- ----- nounReg : Str -> CommonNoun = \dog -> ----- mkNoun dog (dog + "s") (dog + "'s") (dog + "s'"); ----- nounS : Str -> CommonNoun = \kiss -> ----- mkNoun kiss (kiss + "es") (kiss + "'s") (kiss + "es'") ; ----- nounY : Str -> CommonNoun = \fl -> ----- mkNoun (fl + "y") (fl + "ies") (fl + "y's") (fl + "ies'") ; ----- ----- -------3 Proper names ------- ------- Regular proper names are inflected with "'s" in the genitive. ----- ----- nameReg : Str -> Gender -> {s : Case => Str} = \john,g -> ----- {s = table {Gen => john + "'s" ; _ => john} ; g = g} ; ----- -------2 Determiners ----- ----- mkDeterminer : Number -> Str -> {s : Str ; n : Number} = \n,s -> ----- {s = s ; n = n} ; ----- -------2 Pronouns ------- ------- Here we define personal pronouns. ------- ------- We record the form "mine" and the gender for later use. ----- ----- Pronoun : Type = ----- {s : Case => Str ; a : Agr} ; ----- ----- mkPronoun : (_,_,_,_ : Str) -> Number -> Person -> Gender -> Pronoun = ----- \I,me,my,mine,n,p,g -> ----- {s = table {Nom => I ; Acc => me ; Gen => my} ; ----- a = toAgr n p g ----- } ; ----- ----- human : Gender = Masc ; --- doesn't matter ----- ----- pronI = mkPronoun "I" "me" "my" "mine" Sg P1 human ; ----- pronYouSg = mkPronoun "you" "you" "your" "yours" Sg P2 human ; -- verb agr OK ----- pronHe = mkPronoun "he" "him" "his" "his" Sg P3 Masc ; ----- pronShe = mkPronoun "she" "her" "her" "hers" Sg P3 Fem ; ----- pronIt = mkPronoun "it" "it" "its" "it" Sg P3 Neutr ; ----- ----- pronWe = mkPronoun "we" "us" "our" "ours" Pl P1 human ; ----- pronYouPl = mkPronoun "you" "you" "your" "yours" Pl P2 human ; ----- pronThey = mkPronoun "they" "them" "their" "theirs" Pl P3 human ; --- ----- ----- -------2 Adjectives ------- ------- To form the adjectival and the adverbial forms, two strings are needed ------- in the worst case. (First without degrees.) ----- ----- Adjective = {s : AForm => Str} ; ----- ------- However, most adjectives can be inflected using the final character. ------- N.B. this is not correct for "shy", but $mkAdjective$ has to be used. ----- ----- regAdjective : Str -> Adjective = \free -> ----- let ----- e = last free ; ----- fre = init free ; ----- freely = case e of { ----- "y" => fre + "ily" ; ----- _ => free + "ly" ----- } ; ----- fre = case e of { ----- "e" => fre ; ----- "y" => fre + "i" ; ----- _ => free ----- } ----- in ----- mkAdjective free (fre + "er") (fre + "est") freely ; ----- ------- Many adjectives are 'inflected' by adding a comparison word. ----- ----- adjDegrLong : Str -> Adjective = \ridiculous -> ----- mkAdjective ----- ridiculous ----- ("more" ++ ridiculous) ----- ("most" ++ ridiculous) ----- ((regAdjective ridiculous).s ! AAdv) ; ----- ----- -------3 Verbs ------- ------- The worst case needs five forms. (The verb "be" is treated separately.) ----- ----- mkVerb4 : (_,_,_,_: Str) -> Verb = \go,goes,went,gone -> ----- let going = case last go of { ----- "e" => init go + "ing" ; ----- _ => go + "ing" ----- } ----- in ----- mkVerb go goes went gone going ; ----- ------- This is what we use to derive the irregular forms in almost all cases ----- ----- mkVerbIrreg : (_,_,_ : Str) -> Verb = \bite,bit,bitten -> ----- let bites = case last bite of { ----- "y" => y2ie bite "s" ; ----- "s" => init bite + "es" ; ----- _ => bite + "s" ----- } ----- in mkVerb4 bite bites bit bitten ; ----- ------- This is used to derive regular forms. ----- ----- mkVerbReg : Str -> Verb = \soak -> ----- let ----- soaks = case last soak of { ----- "y" => y2ie soak "s" ; ----- "s" => init soak + "es" ; ----- _ => soak + "s" ----- } ; ----- soaked = case last soak of { ----- "e" => init soak + "s" ; ----- _ => soak + "ed" ----- } ----- in ----- mkVerb4 soak soaks soaked soaked ; ----- ----- verbGen : Str -> Verb = \kill -> case last kill of { ----- "y" => verbP3y (init kill) ; ----- "e" => verbP3e (init kill) ; ----- "s" => verbP3s (init kill) ; ----- _ => regVerbP3 kill ----- } ; ----- ------- These are just auxiliary to $verbGen$. ----- ----- regVerbP3 : Str -> Verb = \walk -> ----- mkVerbIrreg walk (walk + "ed") (walk + "ed") ; ----- verbP3s : Str -> Verb = \kiss -> ----- mkVerb4 kiss (kiss + "es") (kiss + "ed") (kiss + "ed") ; ----- verbP3e : Str -> Verb = \love -> ----- mkVerb4 love (love + "s") (love + "d") (love + "d") ; ----- verbP3y : Str -> Verb = \cr -> ----- mkVerb4 (cr + "y") (cr + "ies") (cr + "ied") (cr + "ied") ; ----- -------- The particle always appears right after the verb. ----- ----- verbPart : Verb -> Str -> Verb = \v,p -> ----- {s = \\f => v.s ! f ++ p ; isRefl = v.isRefl} ; ----- ----- verbNoPart : Verb -> Verb = \v -> verbPart v [] ; ----- ----- ---} |
