1
0
forked from GitHub/gf-rgl

Some corrections made and functions added

This commit is contained in:
David Bamutura
2019-05-14 09:23:09 +02:00
parent ef5783853f
commit 355fcc2e6d
7 changed files with 111 additions and 19 deletions

View File

@@ -19,8 +19,9 @@ lincat
-- You must change some of the lincats (e.g., for NP, Det and Pron) so that everything works
S = SS ; -- declarative sentence e.g. "she lived here"
Cl, QCl = Res.Clause ; -- declarative clause, with all tenses e.g. "she looks at this"
Cl = Res.Clause ; -- declarative clause, with all tenses e.g. "she looks at this"
QCl = Res.Clause ** {posibleSubAgr: Res.Agreement =>Str} ;
RS = {s : Str} ; -- relative e.g. "in which she lived"
V = Res.Verb ; --change to {verb : Str ; comp = []} -- one-place verb e.g. "sleep"
V2,V2Q, V2S = Res.Verb2;
V2A,V3 = Res.Verb3; -- three-place verb e.g. "show"
@@ -70,10 +71,13 @@ lincat
IAdv = {s : Str ; requiresSubjPrefix: Bool};
IDet = {s : Str ; n : Res.Number; requiresSubjPrefix: Bool};
IQuant = {s : Res.Number =>Str ; requiresSubjPrefix: Bool};
DAP = Res.Determiner ;;
--VV =
linref
Cl, QCl =\cl -> cl.s ++ Res.mkSubjClitic cl.subjAgr ++ cl.root ++ BIND ++ cl.pres;
Cl =\cl -> cl.s ++ Res.mkSubjClitic cl.subjAgr ++ cl.root ++ BIND ++ cl.pres;
QCl =\qcl -> qcl.s ++ qcl.posibleSubAgr ! (Res.mkAgreement Res.MU_BA Res.P3 Res.Sg) ++ qcl.root ++ BIND ++ qcl.pres;
VP =\vp -> vp.s ++ BIND ++ vp.pres;
{-
--1 Cat: the Category System

View File

@@ -2,8 +2,18 @@
concrete ConjunctionCgg of Conjunction = CatCgg **
open ResCgg, Coordination, Prelude in {
{-
lincat
[S] = {s1,s2 : Str} ;
[Adv] = {s1,s2 : Str} ;
[AdV] = {s1,s2 : Str} ;
[IAdv] = {s1,s2 : Str} ;
[NP] = {s1,s2 : NPCase => Str ; a : Agr} ;
[AP] = {s1,s2 : Agr => Str ; isPre : Bool};
[RS] = {s1,s2 : Agr => Str ; c : NPCase};
[CN] = {s1,s2 : Number => Case => Str};
[DAP] = {s1,s2 : Str ; n : Number};
-}
{-
--1 Conjunction: Coordination

View File

@@ -84,16 +84,16 @@ lin
green_A =mkAdjective "kijubwe" Post False True;
--ditransitive verbs
--bite_V2 = mkV2 "rum";
bite_V2 = mkV2 "rum";
break_V2 = mkV2 "hend"; --: V2 ;
buy_V2 = mkV2 "gur" ; --: V2 ;
--close_V2 = mkV2 "king";
--count_V2 = mkV2 "bar";
--cut_V2 = mkV2 "shar";
--do_V2 = mkV2 "kor";
close_V2 = mkV2 "king";
count_V2 = mkV2 "ba" "ra" "zire";
cut_V2 = mkV2 "sha" "ra" "zire";
do_V2 = mkV2 "ko" "ra" "zire";
drink_V2 = mkV2 "nyw";
eat_V2 = mkV2 "ry";
--fear_V2 = mkV2 "tiin";
fear_V2 = mkV2 "tiin";
find_V2 = mkV2 "bon" ; --: V2 ; -- many words; kureeba, kubóna,kushanga, kumamya,kujumbura
kill_V2 = mkV2 "it"; --: V2 ;
love_V2 = mkV2 "kûnd"; --: V2 ;

View File

@@ -76,7 +76,7 @@ lin
<False,False> => {s = \\_ =>nomS ++ predet.s ; agr = a};
<True,False> => {s = \\_ =>nomS ++ predet.s ++ predet.s2; agr = a} -- never seen this case
};
--AdvNP : NP -> Adv -> NP ; -- Paris today
AdvNP np adv = {s= \\c => np.s ! c ++ adv.s; agr = np.agr };
--PPartNP : NP -> V2 -> NP ; -- the man seen use the Passive form of the verb see. abantu abarebirwe
@@ -86,7 +86,7 @@ lin
{-What the hell does this mean?-}
ExtAdvNP np adv = {s= \\c => np.s ! c ++ embedInCommas adv.s; agr = np.agr}; -- how do I do the adverbial clause?
-- Determiner: Type = {s:Str; ntype:NounType; num:Number; pos:Position}; -- type for Determier necessary for catCgg.gf
RelNP np rs ={s = \\c => np.s ! c ++ rs.s; agr =np.agr};
-- The determiner has a fine-grained structure, in which a 'nucleus'
-- quantifier and an optional numeral can be discerned.
--DetQuant : Quant -> Num -> Det ; -- these five
@@ -95,8 +95,8 @@ lin
--DetQuantOrd : Quant -> Num -> Ord -> Det ; -- these five best
--DetQuantOrd quant num ord = {};
NumSg = {s=[]; n=Sg};
NumPl = {s=[]; n=Pl};
NumSg = {s=[]; n=Sg}; --Num
NumPl = {s=[]; n=Pl}; --Num
-- NumCard card = {...};
--Quant = {s : Res.Pronoun; s2 :Res.Agreement => Str; doesAgree : Bool; isPron: Bool} ;
IndefArt = {s={s=\\_=>[]; third = \\_,_=>[];agr = AgrNo }; s2 = \\_=>[]; doesAgree = False; isPron=False};
@@ -123,6 +123,22 @@ lin
--PossPron : Pron -> Quant ; -- my (house)
PossPron pron = {s =pron; s2 =\\_=> []; doesAgree = True; isPron = True};
--3 Conjoinable determiners and ones with adjectives
--AdjDAP : DAP -> AP -> DAP ; -- the large (one)
{-
AdjDAP dap ap ={
s = dap.s ++ ap.s ;
s2: Res.Agreement;
ntype : NounState ;
num : Number ;
pos : Position;
doesAgree: Bool };
-}
--DetDAP : Det -> DAP ; -- this (or that)
{-
--1 Noun: Nouns, noun phrases, and determiners

View File

@@ -7,8 +7,28 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
lin
--QuestCl : Cl -> QCl ; -- does John walk
QuestCl cl = cl;
QuestCl cl = cl ** {posibleSubAgr = mkSubjCliticTable;};
--QuestVP : IP -> VP -> QCl ; -- who walks
QuestVP ip vp = {
s = ip.s;
subjAgr = NONE; -- no option but to just pick one
posibleSubAgr = mkSubjCliticTable;
root = vp.s;
pres = vp.pres;
perf = vp.perf;
morphs = vp.morphs;
{-
inf : Str;
pres : Str;
past : Str;
presPart : Str;
pastPart : Str; -- subject
--root : Str ; -- dep. on Pol,Temp, e.g. "does","sleep"
-}
compl = vp.comp -- after verb: complement, adverbs
} ;
--QuestSlash : IP -> ClSlash -> QCl ; -- whom does John love
--QuestIAdv : IAdv -> Cl -> QCl ; -- why does John walk
--QuestIComp : IComp -> NP -> QCl ; -- where is John

View File

@@ -309,6 +309,44 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
_ => mkClitic "SubjNotKnown" --for checking if there is some class unaccounted for
};
mkSubjCliticTable : Agreement => Str = table {
AgMUBAP1 n => mkClitics "n" "tu" n;
--AgMUBAP1 Pl => "tu" ;
AgMUBAP2 n => mkClitics "o" "mu" n;
--AgMUBAP2 Pl => "mu" ;
AgP3 n MU_BA => mkClitics "a" "ba" n;
--AgP3 Pl MU_BA => "ba" ;
AgP3 Sg KI_BI => mkClitic "ki" ;
AgP3 Pl (KI_BI | ZERO_BI) => mkClitic "bi" ;
AgP3 Sg (RU_N | RU_MA | RU_ZERO | RU_BU) => mkClitic "ru" ;
AgP3 Pl RU_N => mkClitic "zi"; --| "i";
AgP3 Sg N_N => mkClitic "e";
AgP3 Pl N_N => mkClitic "zi"; --| "i";
AgP3 Sg (MU_MI | MU_ZERO) => mkClitic "gu" ;
AgP3 Pl MU_MI => "e" ;
AgP3 Sg (RI_MA | RI_ZERO | I_ZERO) =>mkClitic "ri";
AgP3 Pl (RI_MA | BU_MA | KU_MA | ZERO_MA | I_MA |RU_MA) => mkClitic "ga" ;
AgP3 Sg (KA_BU | KA_ZERO | KA_TU) => mkClitic "ka" ;
AgP3 Pl (KA_BU | RU_BU) => mkClitic "bu" ;
AgP3 Sg ZERO_BU => mkClitic "bu" ;
AgP3 Pl ZERO_BU => mkClitic "bu" ;
AgP3 Sg ZERO_BI => mkClitic "bi" ;
AgP3 Sg ZERO_MA => mkClitic "ga" ;
AgP3 Pl RI_ZERO => mkClitic "ga" ;
AgP3 Sg KU_ZERO => mkClitic "ku" ;
AgP3 Pl KU_ZERO => mkClitic "ku" ;
AgP3 Pl MU_ZERO => mkClitic "gu" ;
AgP3 Pl RU_ZERO => mkClitic "ru" ;
AgP3 Sg ZERO_TU => mkClitic "tu" ;
AgP3 Pl ZERO_TU => mkClitic "tu" ;
AgP3 Sg (ZERO_MI | ZERO_ZERO) => mkClitic "" ;
AgP3 Pl ZERO_MI => mkClitic "e" ;
AgP3 Pl KA_ZERO => mkClitic "" ;
_ => mkClitic "SubjNotKnown" --for checking if there is some class unaccounted for
};
{-Object particle may be used as
1. a prefix: e.g mu-kwate = catch him,
2. an infix: o-mu-kwate = you catch him

View File

@@ -13,11 +13,11 @@ lin
UseCl temp pol cl = let
subj = cl.s;
clitic = mkSubjClitic cl.subjAgr;
simul = cl.morphs ! VFPres; --this is not delivering the string
simul = cl.pres; --morphs ! VFPres; --this is not delivering the string
ant = cl.morphs ! VFPastPart; --this is not delivering the string
root = cl.root;
presRestOfVerb = cl.morphs ! VFPres ! RestOfVerb;
pastRestOfVerb = cl.morphs ! VFPastPart ! RestOfVerb;
pastRestOfVerb = cl.perf; --morphs ! VFPastPart ! RestOfVerb;
compl = cl.compl
in
@@ -34,7 +34,7 @@ lin
}; --: Temp -> Pol -> QCl -> QS ; -- has John walked
UseQCl = UseCl; -- : Temp -> Pol -> Cl -> S ; -- John has not walked
QuestCl cl = cl; --: Cl -> QCl ; -- does John (not) walk
QuestCl qcl = qcl; --: Cl -> QCl ; -- does John (not) walk
PredVP np vp = case vp.isCompApStem of{
False => {
@@ -93,6 +93,10 @@ lin
}
}; --: VP -> Imp ; -- walk / do not walk
-- A sentence can be modified by a relative clause referring to its contents.
RelS : S -> RS -> S ; -- she sleeps, which is good
--2 Clauses missing object noun phrases
-- This category is a variant of the 'slash category' $S/NP$ of