forked from GitHub/gf-rgl
113 lines
2.8 KiB
Plaintext
113 lines
2.8 KiB
Plaintext
--1 English Word Classes and Morphological Parameters
|
|
--
|
|
-- This is a resource module for English morphology, defining the
|
|
-- morphological parameters and word classes of English. It is aimed
|
|
-- to be complete w.r.t. the description of word forms.
|
|
-- However, it only includes those parameters that are needed for
|
|
-- analysing individual words: such parameters are defined in syntax modules.
|
|
--
|
|
-- We use the language-independent prelude.
|
|
|
|
resource TypesEng = open Prelude in {
|
|
|
|
--
|
|
--2 Enumerated parameter types
|
|
--
|
|
-- These types are the ones found in school grammars.
|
|
-- Their parameter values are atomic.
|
|
|
|
param
|
|
Number = Sg | Pl ;
|
|
Gender = Neutr | Masc | Fem ;
|
|
Case = Nom | Gen ;
|
|
Person = P1 | P2 | P3 ;
|
|
Degree = Pos | Comp | Sup ;
|
|
|
|
-- For data abstraction, we define
|
|
|
|
oper
|
|
singular = Sg ;
|
|
plural = Pl ;
|
|
|
|
--2 Word classes and hierarchical parameter types
|
|
--
|
|
-- Real parameter types (i.e. ones on which words and phrases depend)
|
|
-- are often hierarchical. The alternative would be cross-products of
|
|
-- simple parameters, but this would usually overgenerate.
|
|
--
|
|
|
|
--3 Common nouns
|
|
--
|
|
-- Common nouns are inflected in number and case.
|
|
|
|
CommonNoun : Type = {s : Number => Case => Str} ;
|
|
|
|
|
|
--
|
|
--3 Adjectives
|
|
--
|
|
-- The major division is between the comparison degrees, but it
|
|
-- is also good to leave room for adjectives that cannon be compared.
|
|
-- It is, however, productive to form an adverbial from any adjective.
|
|
|
|
param AForm = AAdj | AAdv ;
|
|
|
|
oper
|
|
Adjective : Type = SS1 AForm ;
|
|
AdjDegr = {s : Degree => AForm => Str} ;
|
|
|
|
--3 Verbs
|
|
--
|
|
-- We treat the full conjugation now.
|
|
-- The present tense is made to depend on person, which correspond to forms
|
|
-- in the singular; plural forms are uniformly equal to the 2nd person singular.
|
|
|
|
param
|
|
VForm = InfImp | Indic Number | Pastt | PPart | PresPart ;
|
|
|
|
-- This is for auxiliary verbs, which have special negated indicative forms.
|
|
|
|
AuxVerbForm = AInfImp | AIndic Person Bool | APastt Number Bool | APPart | APresPart ;
|
|
|
|
|
|
oper
|
|
VerbP3 : Type = {s : VForm => Str} ;
|
|
|
|
-- A full verb can moreover have a particle.
|
|
|
|
Particle : Type = Str ;
|
|
Verb = VerbP3 ** {s1 : Particle} ;
|
|
|
|
AuxVerb = {s : AuxVerbForm => Str} ;
|
|
|
|
--
|
|
--3 Pronouns
|
|
--
|
|
-- For pronouns, we need four case forms: "I" - "me" - "my" - "mine".
|
|
|
|
param
|
|
NPForm = NomP | AccP | GenP | GenSP ;
|
|
|
|
oper
|
|
Pronoun : Type =
|
|
{s : NPForm => Str ; n : Number ; p : Person ; g : Gender} ;
|
|
|
|
-- Coercions between pronoun cases and ordinaty cases.
|
|
|
|
toCase : NPForm -> Case = \c -> case c of {GenP => Gen ; _ => Nom} ;
|
|
toNPForm : Case -> NPForm = \c -> case c of {Gen => GenP ; _ => NomP} ; ---
|
|
|
|
--3 Proper names
|
|
--
|
|
-- Proper names only need two cases.
|
|
|
|
ProperName : Type = {s : Case => Str ; g : Gender} ;
|
|
|
|
--3 Relative pronouns
|
|
--
|
|
-- Relative pronouns are inflected in gender (human/nonhuman), number, and case.
|
|
|
|
RelPron : Type = {s : Gender => Number => NPForm => Str} ;
|
|
} ;
|
|
|