Produced by gfdoc - a rudimentary GF document generator. (c) Aarne Ranta (aarne@cs.chalmers.se) 2002 under GNU GPL.

#

# -path=.:../abstract:../../prelude

# English Lexical Paradigms

Aarne Ranta 2003

This is an API to the user of the resource grammar for adding lexical items. It give shortcuts for forming expressions of basic categories: nouns, adjectives, verbs. Closed categories (determiners, pronouns, conjunctions) are accessed through the resource syntax API, `Structural.gf`.

The main difference with `MorphoEng.gf` is that the types referred to are compiled resource grammar types. We have moreover had the design principle of always having existing forms, rather than stems, as string arguments of the paradigms.

The following modules are presupposed:

      resource ParadigmsEng = open (Predef=Predef), Prelude, SyntaxEng, ResourceEng in {

## Parameters

To abstract over gender names, we define the following identifiers.

      oper
        human    : Gender ;
        nonhuman : Gender ;

To abstract over number names, we define the following.

        singular : Number ;
        plural   : Number ;

To abstract over case names, we define the following.

        nominative : Case ;
        genitive   : Case ;

## Nouns

Worst case: give all four forms and the semantic gender. In practice the worst case is just: give singular and plural nominative.

      oper
        mkN  : (man,men,man's,men's : Str) -> Gender -> N ;
        nMan : (man,men : Str) -> Gender -> N ;

Regular nouns, nouns ending with s, y, or o, and nouns with the same plural form as the singular.

        nReg   : Str -> Gender -> N ;   -- dog, dogs
        nKiss  : Str -> Gender -> N ;   -- kiss, kisses
        nFly   : Str -> Gender -> N ;   -- fly, flies
        nHero  : Str -> Gender -> N ;   -- hero, heroes (= nKiss !)
        nSheep : Str -> Gender -> N ;   -- sheep, sheep

These use general heuristics, that recognizes the last letter. N.B it does not get right with boy, rush, since it only looks at one letter.

        nHuman    : Str -> N ;  -- gambler/actress/nanny
        nNonhuman : Str -> N ;  -- dog/kiss/fly

Nouns used as functions need a preposition. The most common is of.

        mkFun : N -> Preposition -> Fun ;

        funHuman    : Str -> Fun ;  -- the father/mistress/daddy of
        funNonhuman : Str -> Fun ;  -- the successor/address/copy of

Proper names, with their regular genitive.

        pnReg : (John : Str) -> PN ;          -- John, John's

The most common cases on the higher-level category `CN` have shortcuts. The regular y/s variation is taken into account.

        cnNonhuman : Str -> CN ;
        cnHuman    : Str -> CN ;
        npReg      : Str -> NP ;

In some cases, you may want to make a complex `CN` into a function.

        mkFunCN  : CN -> Preposition -> Fun ;
        funOfCN : CN -> Fun ;

## Adjectives

Non-comparison one-place adjectives just have one form.

        mkAdj1 : (even : Str) -> Adj1 ;

Two-place adjectives need a preposition as second argument.

        mkAdj2 : (divisible, by : Str) -> Adj2 ;

Comparison adjectives have three forms. The common irregular cases are ones ending with y and a consonant that is duplicated; the y ending is recognized by the function `aReg`.

        mkAdjDeg : (good,better,best : Str) -> AdjDeg ;

        aReg        : (long  : Str) -> AdjDeg ;      -- long, longer, longest
        aFat        : (fat   : Str) -> AdjDeg ;      -- fat, fatter, fattest
        aRidiculous : (ridiculous : Str) -> AdjDeg ; -- -/more/most ridiculous

On higher level, there are adjectival phrases. The most common case is just to use a one-place adjective.

        apReg : Str -> AP ;

## Adverbs

Adverbs are not inflected. Most lexical ones have position not before the verb. Some can be preverbal (e.g. always).

        mkAdv    : Str -> AdV ;
        mkAdvPre : Str -> AdV ;

Adverbs modifying adjectives and sentences can also be formed.

        mkAdA : Str -> AdA ;
        mkAdS : Str -> AdS ;

Prepositional phrases are another productive form of adverbials.

        mkPP : Str -> NP -> AdV ;

## Verbs

The fragment now has all verb forms, except the gerund/present participle. Except for be, the worst case needs four forms: the infinitive and the third person singular present, the past indicative, and the past participle.

        mkV   : (go, goes, went, gone : Str) -> V ;

        vReg  : (walk : Str) -> V ;  -- walk, walks
        vKiss : (kiss : Str) -> V ;  -- kiss, kisses
        vFly  : (fly  : Str) -> V ;  -- fly, flies
        vGo   : (go   : Str) -> V ;  -- go, goes (= vKiss !)

This generic function recognizes the special cases where the last character is y, s, or z. It is not right for finish and convey.

        vGen : Str -> V ; -- walk/kiss/fly

The verbs be and have are special.

        vBe   : V ;
        vHave : V ;

Verbs with a particle.

        vPart    : (go, goes, went, gone, up : Str) -> V ;
        vPartReg : (get,      up : Str) -> V ;

Two-place verbs, and the special case with direct object. Notice that a particle can already be included in `V`.

        mkTV  : V -> Str -> TV ;              -- look for, kill

        tvGen    : (look, for : Str) -> TV ;  -- look for, talk about
        tvDir    : V                 -> TV ;  -- switch off
        tvGenDir : (kill      : Str) -> TV ;  -- kill

Regular two-place verbs with a particle.

        tvPartReg : Str -> Str -> Str -> TV ; -- get, along, with

Ditransitive verbs.

        mkV3     : V -> Str -> Str -> V3 ;    -- speak, with, about
        v3Dir    : V -> Str -> V3 ;           -- give,_,to
        v3DirDir : V -> V3 ;                  -- give,_,_

The definitions should not bother the user of the API. So they are hidden from the document.