diff options
Diffstat (limited to 'grammars/resource/nenglish/MorphoEng.gf')
| -rw-r--r-- | grammars/resource/nenglish/MorphoEng.gf | 202 |
1 files changed, 0 insertions, 202 deletions
diff --git a/grammars/resource/nenglish/MorphoEng.gf b/grammars/resource/nenglish/MorphoEng.gf deleted file mode 100644 index 54dbdeb2a..000000000 --- a/grammars/resource/nenglish/MorphoEng.gf +++ /dev/null @@ -1,202 +0,0 @@ ---# -path=.:../../prelude - ---1 A Simple English Resource Morphology --- --- Aarne Ranta 2002 --- --- This resource morphology contains definitions needed in the resource --- syntax. It moreover contains the most usual inflectional patterns. --- --- We use the parameter types and word classes defined in $Types.gf$. - -resource MorphoEng = TypesEng ** open Prelude, (Predef=Predef) in { - ---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 - mkNoun : (_,_,_,_ : Str) -> CommonNoun = - \man,men, mans, mens -> {s = table { - Sg => table {Nom => man ; Gen => mans} ; - Pl => table {Nom => men ; Gen => mens} - }} ; - - 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 -> ProperName = \john -> - {s = table {Nom => john ; Gen => john + "'s"}} ; - - ---2 Pronouns --- --- Here we define personal and relative pronouns. - - mkPronoun : (_,_,_,_ : Str) -> Number -> Person -> Pronoun = \I,me,my,mine,n,p -> - {s = table {NomP => I ; AccP => me ; GenP => my ; GenSP => mine} ; - n = n ; p = p} ; - - pronI = mkPronoun "I" "me" "my" "mine" Sg P1 ; - pronYouSg = mkPronoun "you" "you" "your" "yours" Sg P2 ; -- verb form still OK - pronHe = mkPronoun "he" "him" "his" "his" Sg P3 ; - pronShe = mkPronoun "she" "her" "her" "hers" Sg P3 ; - pronIt = mkPronoun "it" "it" "its" "it" Sg P3 ; - - pronWe = mkPronoun "we" "us" "our" "ours" Pl P1 ; - pronYouPl = mkPronoun "you" "you" "your" "yours" Pl P2 ; - pronThey = mkPronoun "they" "them" "their" "theirs" Pl P3 ; - --- Relative pronouns in the accusative have the 'no pronoun' variant. --- The simple pronouns do not really depend on number. - - relPron : RelPron = {s = table { - NoHum => \\_ => table { - NomP => variants {"that" ; "which"} ; - AccP => variants {"that" ; "which" ; []} ; - GenP => variants {"whose"} ; - GenSP => variants {"which"} - } ; - Hum => \\_ => table { - NomP => variants {"that" ; "who"} ; - AccP => variants {"that" ; "who" ; "whom" ; []} ; - GenP => variants {"whose"} ; - GenSP => variants {"whom"} - } - } - } ; - - ---3 Determiners --- --- We have just a heuristic definition of the indefinite article. --- There are lots of exceptions: consonantic "e" ("euphemism"), consonantic --- "o" ("one-sided"), vocalic "u" ("umbrella"). - - artIndef = pre {"a" ; - "an" / strs {"a" ; "e" ; "i" ; "o" ; "A" ; "E" ; "I" ; "O" }} ; - - artDef = "the" ; - ---2 Adjectives --- --- To form the adjectival and the adverbial forms, two strings are needed --- in the worst case. - - mkAdjective : Str -> Str -> Adjective = \free,freely -> { - s = table { - AAdj => free ; - AAdv => freely - } - } ; - --- However, the ending "iy" is sufficient for most cases. This function --- automatically changes the word-final "y" to "i" ("happy" - "happily"). --- N.B. this is not correct for "shy", but $mkAdjective$ has to be used. - - regAdjective : Str -> Adjective = \free -> - let - y = Predef.dp 1 free - in mkAdjective - free - (ifTok Str y "y" (Predef.tk 1 free + ("ily")) (free + "ly")) ; - --- For the comparison of adjectives, six forms are needed to cover all cases. --- But there is no adjective that actually needs all these. - - mkAdjDegrWorst : (_,_,_,_,_,_ : Str) -> AdjDegr = - \good,well,better,betterly,best,bestly -> - {s = table { - Pos => (mkAdjective good well).s ; - Comp => (mkAdjective better betterly).s ; - Sup => (mkAdjective best bestly).s - } - } ; - --- What is usually needed for irregular comparisons are just three forms, --- since the adverbial form is the same (in comparative or superlative) --- or formed in the regular way (positive). - - adjDegrIrreg : (_,_,_ : Str) -> AdjDegr = \bad,worse,worst -> - let badly = (regAdjective bad).s ! AAdv - in mkAdjDegrWorst bad badly worse worse worst worst ; - --- Like above, the regular formation takes account of final "y". - - adjDegrReg : Str -> AdjDegr = \happy -> - let happi = ifTok Str (Predef.dp 1 happy) "y" (Predef.tk 1 happy + "i") happy - in adjDegrIrreg happy (happi + "er") (happi + "est") ; - --- Many adjectives are 'inflected' by adding a comparison word. - - adjDegrLong : Str -> AdjDegr = \ridiculous -> - adjDegrIrreg ridiculous ("more" ++ ridiculous) ("most" ++ ridiculous) ; - - ---3 Verbs --- --- Except for "be", the worst case needs four forms. - - mkVerbP3 : (_,_,_,_: Str) -> VerbP3 = \go,goes,went,gone -> - {s = table { - InfImp => go ; - Indic P3 => goes ; - Indic _ => go ; - Past _ => went ; - PPart => gone - } - } ; - - mkVerb : (_,_,_ : Str) -> VerbP3 = \ring,rang,rung -> - mkVerbP3 ring (ring + "s") rang rung ; - - regVerbP3 : Str -> VerbP3 = \walk -> - mkVerb walk (walk + "ed") (walk + "ed") ; - - verbP3s : Str -> VerbP3 = \kiss -> - mkVerbP3 kiss (kiss + "es") (kiss + "ed") (kiss + "ed") ; - - verbP3e : Str -> VerbP3 = \love -> - mkVerbP3 love (love + "s") (love + "d") (love + "d") ; - - verbP3y : Str -> VerbP3 = \cr -> - mkVerbP3 (cr + "y") (cr + "ies") (cr + "ied") (cr + "ied") ; - - verbP3Have = mkVerbP3 "have" "has" "had" "had" ; - - verbP3Do = mkVerbP3 "do" "does" "did" "done" ; - - verbBe : VerbP3 = {s = table { - InfImp => "be" ; - Indic P1 => "am" ; - Indic P2 => "are" ; - Indic P3 => "is" ; - Past Sg => "was" ; - Past Pl => "were" ; - PPart => "been" - }} ; - - verbPart : VerbP3 -> Particle -> Verb = \v,p -> - v ** {s1 = p} ; - - verbNoPart : VerbP3 -> Verb = \v -> verbPart v [] ; - --- The optional negation contraction is a useful macro e.g. for "do". - - contractNot : Str -> Str = \is -> variants {is ++ "not" ; is + "n't"} ; - - dont = contractNot (verbP3Do.s ! InfImp) ; -} ; - |
