forked from GitHub/gf-rgl
121 lines
3.5 KiB
Plaintext
Executable File
121 lines
3.5 KiB
Plaintext
Executable File
--# -path=.:../prelude:../abstract:../common
|
|
|
|
concrete RelativeCgg of Relative = CatCgg ** open Prelude, ResCgg in {
|
|
|
|
lin
|
|
{-
|
|
--IdRP : RP ; -- which
|
|
|
|
Apparently IdRP means Identity Relative Pronoun i.e. the most atomic part
|
|
of a relative pronoun. The abstract syntax seems to alude that more
|
|
Relative pronouns can be formed when such a relative subject or object marker is affixed to
|
|
a prepositional Phrase.
|
|
In Runynakore and Rukiga, relative pronouns depend on
|
|
Noun Class , Gender and the case of the noun they
|
|
refer to.
|
|
|
|
Since this involves a table of two tables, we use ResCgg to prepare all possibilities
|
|
|
|
|
|
-}
|
|
|
|
IdRP = {s = mkRPs; rObjVariant2 = mkRObjV2}; --: RP ; -- which
|
|
--RelCl : Cl -> RCl ; -- such that John loves her
|
|
-- The simplest way to form a relative clause is from a clause by
|
|
-- a pronoun similar to "such that".
|
|
RelCl cl = {
|
|
s = "kugira ngu" ++ cl.s ;
|
|
agr = AgrYes cl.subjAgr;
|
|
rp = mkRPs;
|
|
--rObjVariant2 = mkRObjV2;
|
|
pres =cl.pres;
|
|
perf =cl.perf;
|
|
root = cl.root;
|
|
--morphs = cl.morphs;
|
|
isPresBlank = cl.isPresBlank;
|
|
isPerfBlank = cl.isPerfBlank;
|
|
compl =cl.compl;
|
|
isCompApStem = False;
|
|
whichRel = Such_That;
|
|
}; -- such that John loves her. why does it need any case?
|
|
|
|
-- The more proper ways are from a verb phrase
|
|
-- (formed in [``Verb`` Verb.html]) or a sentence
|
|
-- with a missing noun phrase (formed in [``Sentence`` Sentence.html]).
|
|
--RelVP : RP -> VP -> RCl ; -- who loves John
|
|
|
|
RelVP rp vp =
|
|
{
|
|
s = [];
|
|
agr = AgrNo;
|
|
rp = rp.s;
|
|
--rObjVariant2 = rp.rObjVariant2;
|
|
pres =vp.pres;
|
|
perf =vp.perf;
|
|
root = vp.s;
|
|
--morphs = vp.morphs;
|
|
isPresBlank = vp.isPresBlank;
|
|
isPerfBlank = vp.isPerfBlank;
|
|
compl =vp.comp;
|
|
isCompApStem = vp.isCompApStem;
|
|
whichRel = RF RSubj;
|
|
};
|
|
|
|
--RelSlash : RP -> ClSlash -> RCl ; -- whom John loves
|
|
RelSlash rp clSlash =
|
|
let comp = case clSlash.complType of{
|
|
Ap => clSlash.ap;
|
|
Adverbial => clSlash.adv;
|
|
AdverbialVerb => clSlash.adV;
|
|
_ => []
|
|
};
|
|
isCompApStem = case clSlash.complType of{
|
|
Adverbial => True;
|
|
_ => False
|
|
};
|
|
in
|
|
{
|
|
s = clSlash.s;
|
|
agr = AgrYes clSlash.subjAgr;
|
|
rp = rp.s;
|
|
--rObjVariant2 = rp.rObjVariant2;
|
|
pres = clSlash.pres;
|
|
perf = clSlash.perf;
|
|
root = clSlash.root;
|
|
--morphs = clSlash.morphs;
|
|
isPresBlank = clSlash.isPresBlank;
|
|
isPerfBlank = clSlash.isPerfBlank;
|
|
compl = comp;
|
|
isCompApStem = isCompApStem;
|
|
whichRel = RF RObj;
|
|
};
|
|
|
|
{-
|
|
--1 Relative clauses and pronouns
|
|
|
|
abstract Relative = Cat ** {
|
|
|
|
fun
|
|
|
|
-- The simplest way to form a relative clause is from a clause by
|
|
-- a pronoun similar to "such that".
|
|
|
|
RelCl : Cl -> RCl ; -- such that John loves her
|
|
|
|
-- The more proper ways are from a verb phrase
|
|
-- (formed in [``Verb`` Verb.html]) or a sentence
|
|
-- with a missing noun phrase (formed in [``Sentence`` Sentence.html]).
|
|
|
|
RelVP : RP -> VP -> RCl ; -- who loves John
|
|
RelSlash : RP -> ClSlash -> RCl ; -- whom John loves
|
|
|
|
-- Relative pronouns are formed from an 'identity element' by prefixing
|
|
-- or suffixing (depending on language) prepositional phrases or genitives.
|
|
|
|
IdRP : RP ; -- which
|
|
FunRP : Prep -> NP -> RP -> RP ; -- the mother of whom
|
|
|
|
-}
|
|
|
|
}
|