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.