1
0
forked from GitHub/gf-rgl
Files
gf-rgl/src/rukiga/RelativeCgg.gf

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
-}
}