1
0
forked from GitHub/gf-rgl

=Modified UseComp to correctly apply Adverbs, Adjectives and Nouns as proper complements when forming a VP based on the verb to be. However in Rukiga, sometimes the verb ba or ri are used. I have left the application of the right form to post-processing

This commit is contained in:
David Bamutura
2020-10-26 23:34:59 +03:00
parent 24d3d2abaa
commit 02d92f6cc9
5 changed files with 73 additions and 11 deletions

View File

@@ -6,7 +6,7 @@ concrete CatCgg of Cat = CommonX -[Adv,IAdv, AdA]**
lincat lincat
Imp = {s : Res. ImpPol=> Str} ; Imp = {s : Res.ImpPol=> Str} ;
QS = {s : Str} ; QS = {s : Str} ;
-- Note: SS is a shorthand for {s:Str}, defined in Prelude.gf -- Note: SS is a shorthand for {s:Str}, defined in Prelude.gf

View File

@@ -1,8 +1,11 @@
--# -path=.:../prelude:../abstract:../common --# -path=.:../prelude:../abstract:../common
concrete IdiomCgg of Idiom = CatCgg ** concrete IdiomCgg of Idiom = CatCgg **
open Prelude, ResCgg in { open Prelude,Predef, ResCgg in {
lin
ImpPl1 vp = {s="tu" ++ BIND ++ vp.s ++ BIND ++ vp.pres ++ BIND ++ "6e"}; -- let's go
{- {-
--1 Idiom: Idiomatic Expressions --1 Idiom: Idiomatic Expressions

View File

@@ -1622,7 +1622,7 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
param param
CompSource = NounP | ADverb | AdjP | CommonNoun; CompSource = NounP | ADverb | AdjP | CommonNoun;
oper oper
Comp : Type = {s:Str; source : CompSource }; Comp : Type = {s:Str; source : CompSource};
--Conjunctions --Conjunctions

View File

@@ -281,8 +281,8 @@ lin
PredVP np vp = case <vp.isCompApStem, vp.containsAdV,vp.containsComp, vp.containsComp2> of { PredVP np vp = case <vp.isCompApStem,vp.containsAdv, vp.containsAdV,vp.containsComp, vp.containsComp2> of {
<False,True,False,False> => { <False,False,True,False,False> => {
s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk
subjAgr = np.agr; subjAgr = np.agr;
pres = vp.pres; pres = vp.pres;
@@ -301,8 +301,27 @@ lin
--root = vp.root ; --root = vp.root ;
compl = vp.adV compl = vp.adV
}; };
<False,True,False,False,False> => {
s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk
subjAgr = np.agr;
pres = vp.pres;
perf = vp.perf;
root = vp.s;
--morphs = vp.morphs;
isPresBlank = vp.isPresBlank;
isPerfBlank = vp.isPerfBlank;
{-
inf = mkVerbInrf vp.root;
pres = mkVerbPres vp.root;
past = mkVerbPast vp.root;
presPart = mkVerbPresPart vp.root;
pastPart = mkVerbPastPart vp.root; -- subject
-}
--root = vp.root ;
compl = vp.adv
};
<_, _,True,False> => { <_, _,_,True,False> => {
s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk
subjAgr = np.agr; subjAgr = np.agr;
pres = vp.pres; pres = vp.pres;
@@ -321,7 +340,7 @@ lin
--root = vp.root ; --root = vp.root ;
compl = mkSubjClitic np.agr ++ vp.comp --mkSubjClitic np.agr ++ Predef.BIND ++ vp.comp compl = mkSubjClitic np.agr ++ vp.comp --mkSubjClitic np.agr ++ Predef.BIND ++ vp.comp
}; };
<_, _,True, True> => { <_, _,_,True, True> => {
s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk
subjAgr = np.agr; subjAgr = np.agr;
pres = vp.pres; pres = vp.pres;
@@ -340,7 +359,7 @@ lin
--root = vp.root ; --root = vp.root ;
compl = mkSubjClitic np.agr ++ vp.comp ++ vp.comp2 --mkSubjClitic np.agr ++ Predef.BIND ++ vp.comp compl = mkSubjClitic np.agr ++ vp.comp ++ vp.comp2 --mkSubjClitic np.agr ++ Predef.BIND ++ vp.comp
}; };
<_, _,_, _> => { <_, _,_,_, _> => {
s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk
subjAgr = np.agr; subjAgr = np.agr;
pres = vp.pres; pres = vp.pres;

View File

@@ -32,7 +32,7 @@ lin
--in --in
case comp.source of{ case comp.source of{
AdjP => { AdjP => {
s = mkBecome.s ++ BIND ++ mkBecome.pres; --Assuming there is no AP which is prepositional s = mkBecome.s ; --Assuming there is no AP which is prepositional
pres =[]; pres =[];
perf = []; perf = [];
isPresBlank = True; isPresBlank = True;
@@ -51,8 +51,8 @@ lin
containsComp = True; containsComp = True;
containsComp2 = False containsComp2 = False
}; };
_ => { ADverb => {
s = mkBecome.s ++ BIND ++mkBecome.pres++ comp.s; --Assuming there is no AP which is prepositional s = mkBecome.s ; --Assuming there is no AP which is prepositional
pres =[]; pres =[];
perf = []; perf = [];
--morphs=\\form,morphs=>[]; --morphs=\\form,morphs=>[];
@@ -64,6 +64,46 @@ lin
isCompApStem = False; isCompApStem = False;
agr = AgrNo; agr = AgrNo;
isRegular = False; isRegular = False;
adv = comp.s;
containsAdv =True;
adV =[];
containsAdV = False;
containsComp = False;
containsComp2 = False
};
NounP => {
s = mkBecome.s ; --Assuming there is no AP which is prepositional
pres =[];
perf = [];
--morphs=\\form,morphs=>[];
isPresBlank = True;
isPerfBlank = True;
comp = comp.s;
comp2 = [];
ap = [];
isCompApStem = False;
agr = AgrNo;
isRegular = False;
adv = [];
containsAdv =False;
adV =[];
containsAdV = False;
containsComp = True;
containsComp2 = False
};
_ => {
s = mkBecome.s ; --Assuming there is no AP which is prepositional
pres =[];
perf = [];
--morphs=\\form,morphs=>[];
isPresBlank = True;
isPerfBlank = True;
comp = comp.s;
comp2 = [];
ap = [];
isCompApStem = False;
agr = AgrNo;
isRegular = False;
adv = []; adv = [];
containsAdv =False; containsAdv =False;
adV =[]; adV =[];