mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
redesigned the Verb, VerbPhrase, Cl and RCL so as to check for empty tense Markers and hence correct errors with Copulative statements. The Problem with Numeral still remains
This commit is contained in:
@@ -65,6 +65,8 @@ lincat
|
||||
perf :Str;
|
||||
root : Str;
|
||||
--morphs : Res.VFormMini => Res.VerbMorphPos =>Str;
|
||||
isPresBlank :Bool;
|
||||
isPerfBlank : Bool;
|
||||
compl : Str; -- after verb: complement, adverbs
|
||||
isCompApStem : Bool;
|
||||
whichRel: Res.RForm
|
||||
@@ -78,6 +80,8 @@ lincat
|
||||
pres: Str;
|
||||
perf:Str;
|
||||
--morphs : Res.VFormMini => Res.VerbMorphPos =>Str; --; compl : Str -- after verb: complement, adverbs
|
||||
isPresBlank : Bool;
|
||||
isPerfBlank : Bool;
|
||||
ap:Str;
|
||||
isRegular:Bool;
|
||||
adv:Str;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
abstract DictEngAbs = Cat ** {
|
||||
abstract DictCggAbs = Cat ** {
|
||||
|
||||
{- --beginning of comment
|
||||
|
||||
|
||||
5
src/rukiga/ExtraCatAbs.gf
Normal file
5
src/rukiga/ExtraCatAbs.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
abstract ExtraCatAbs = Cat **{
|
||||
cat
|
||||
TenseExtra;
|
||||
TempExtra;
|
||||
}
|
||||
16
src/rukiga/ExtraCggAbs.gf
Normal file
16
src/rukiga/ExtraCggAbs.gf
Normal file
@@ -0,0 +1,16 @@
|
||||
abstract ExtraCggAbs = Cat **{
|
||||
|
||||
-- there is a default linearization for abstract
|
||||
-- categories Tense and Temp
|
||||
-- these in TenseX
|
||||
--
|
||||
cat
|
||||
AllTenses;
|
||||
--TempExtra;
|
||||
fun
|
||||
UseClExtra : TempExtra -> Pol -> Cl -> S ; -- she had not slept
|
||||
UseQClExtra : TempExtra -> Pol -> QCl -> QS ; -- who had not slept
|
||||
UseRClExtra : TempExtra -> Pol -> RCl -> RS ; -- that had not slept
|
||||
UseSlashExtra : TempExtra -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
|
||||
|
||||
}
|
||||
14
src/rukiga/ExtraCggAbsCgg.gf
Normal file
14
src/rukiga/ExtraCggAbsCgg.gf
Normal file
@@ -0,0 +1,14 @@
|
||||
concrete ExtraCggAbsCgg of ExtraCggAbs = CatCgg
|
||||
open (R=ResCgg), (P=ParamX) in {
|
||||
|
||||
lincat
|
||||
AllTenses = {s : Str ; t : P.Tense; tExtra : R.TensesExtra } ;
|
||||
TempExtra = {s : Str ; t : R.TensesExtra } ;
|
||||
--TempExtraWithAspects = {s : Str ; t : P.Tense ; a : R.AspectsExtra } ;
|
||||
fun
|
||||
UseClExtra : TempTempExtra -> Pol -> Cl -> S ; -- she had not slept
|
||||
UseQClExtra : TempTempExtra -> Pol -> QCl -> QS ; -- who had not slept
|
||||
UseRClExtra : TempTempExtra -> Pol -> RCl -> RS ; -- that had not slept
|
||||
UseSlashExtra : TempTempExtra -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
|
||||
|
||||
}
|
||||
@@ -145,7 +145,7 @@ lin
|
||||
|
||||
--today_Adv = mkAdv "erizooba" AgrNo;
|
||||
|
||||
father_N2 = mkN2 (mkN "tata" MU_BA) (lin Prep (mkPrep [] [] True)) ;
|
||||
father_N2 = mkN2 (mkN "tata" ZERO_BAA) (lin Prep (mkPrep [] [] True)) ;
|
||||
|
||||
distance_N3 = mkN3 (mkN "orugyendo" ZERO_BU) (lin Prep (mkPrep "kurunga" "" False)) (lin Prep (mkPrep "mpáka" "" False)); --could orugyendo work in its place?
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
|
||||
|
||||
lin
|
||||
--QuestCl : Cl -> QCl ; -- does John walk
|
||||
|
||||
QuestCl cl = cl ** {posibleSubAgr = mkSubjCliticTable};
|
||||
--QuestVP : IP -> VP -> QCl ; -- who walks
|
||||
|
||||
@@ -17,6 +18,8 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
|
||||
root = vp.s;
|
||||
pres = vp.pres;
|
||||
perf = vp.perf;
|
||||
isPresBlank = vp.isPresBlank;
|
||||
isPerfBlank = vp.isPerfBlank;
|
||||
--morphs = vp.morphs;
|
||||
{-
|
||||
inf : Str;
|
||||
@@ -45,6 +48,8 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
|
||||
root = clSlash.s;
|
||||
pres = clSlash.pres;
|
||||
perf = clSlash.perf;
|
||||
isPresBlank = clSlash.isPresBlank;
|
||||
isPerfBlank = clSlash.isPerfBlank;
|
||||
--morphs = clSlash.morphs;
|
||||
{-
|
||||
inf : Str;
|
||||
@@ -66,6 +71,8 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
|
||||
pres = cl.pres;
|
||||
perf = cl.perf;
|
||||
--morphs = cl.morphs;
|
||||
isPresBlank = cl.isPresBlank;
|
||||
isPerfBlank = cl.isPerfBlank;
|
||||
{-
|
||||
inf : Str;
|
||||
pres : Str;
|
||||
@@ -90,6 +97,8 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
|
||||
pres = be_Copula.pres;
|
||||
perf = be_Copula.perf;
|
||||
--morphs = be_Copula.morphs;
|
||||
isPresBlank = be_Copula.isPresBlank;
|
||||
isPerfBlank = be_Copula.isPerfBlank;
|
||||
{-
|
||||
inf : Str;
|
||||
pres : Str;
|
||||
@@ -108,6 +117,8 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
|
||||
pres = be_Copula.pres;
|
||||
perf = be_Copula.perf;
|
||||
--morphs = be_Copula.morphs;
|
||||
isPresBlank = be_Copula.isPresBlank;
|
||||
isPerfBlank = be_Copula.isPerfBlank;
|
||||
{-
|
||||
inf : Str;
|
||||
pres : Str;
|
||||
@@ -126,6 +137,8 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
|
||||
pres = be_Copula.pres;
|
||||
perf = be_Copula.perf;
|
||||
--morphs = be_Copula.morphs;
|
||||
isPresBlank = be_Copula.isPresBlank;
|
||||
isPerfBlank = be_Copula.isPerfBlank;
|
||||
{-
|
||||
inf : Str;
|
||||
pres : Str;
|
||||
|
||||
@@ -32,6 +32,8 @@ lin
|
||||
perf =cl.perf;
|
||||
root = cl.root;
|
||||
--morphs = cl.morphs;
|
||||
isPresBlank = cl.isPresBlank;
|
||||
isPerfBlank = cl.isPerfBlank;
|
||||
compl =cl.compl;
|
||||
isCompApStem = False;
|
||||
whichRel = Such_That;
|
||||
@@ -52,6 +54,8 @@ lin
|
||||
perf =vp.perf;
|
||||
root = vp.s;
|
||||
--morphs = vp.morphs;
|
||||
isPresBlank = vp.isPresBlank;
|
||||
isPerfBlank = vp.isPerfBlank;
|
||||
compl =vp.comp;
|
||||
isCompApStem = vp.isCompApStem;
|
||||
whichRel = RF RSubj;
|
||||
@@ -76,9 +80,11 @@ lin
|
||||
rp = rp.s;
|
||||
--rObjVariant2 = rp.rObjVariant2;
|
||||
pres = clSlash.pres;
|
||||
perf = clSlash.perf;
|
||||
perf = clSlash.perf;
|
||||
root = clSlash.root;
|
||||
--morphs = clSlash.morphs;
|
||||
isPresBlank = clSlash.isPresBlank;
|
||||
isPerfBlank = clSlash.isPerfBlank;
|
||||
compl = comp;
|
||||
isCompApStem = isCompApStem;
|
||||
whichRel = RF RObj;
|
||||
|
||||
@@ -62,6 +62,13 @@ param
|
||||
-- may not need it
|
||||
NounCat = ComNoun | PropNoun; --prepositions agree with nouns to form adverbial Phrases
|
||||
PrepForm = Form1 | Form2; -- omu and omuri, aha, ahari
|
||||
-- for Extra Tenses not implemented
|
||||
-- would be better if I had alliases
|
||||
TensesExtra = RemotePast | ImmediatePast | RemoteFuture;
|
||||
|
||||
-- for Extra Aspects not implemented
|
||||
-- would be better if I had alliases
|
||||
Aspect = Performative | Perfect | Resultative | Retrospective | Habitual | Progressive | Persitive;
|
||||
{-
|
||||
Complete = Nouns with IV,
|
||||
Incomplete = Nouns without IV: important for use with pre-determiners
|
||||
@@ -100,6 +107,8 @@ oper
|
||||
s = rad;
|
||||
pres = end1;
|
||||
perf = end2;
|
||||
isPresBlank = False;
|
||||
isPerfBlank = False;
|
||||
--morphs = mkVerbMorphs;
|
||||
isRegular = False;
|
||||
};
|
||||
@@ -109,6 +118,8 @@ oper
|
||||
pres = "a";
|
||||
perf = "ire";
|
||||
--morphs = mkVerbMorphs;
|
||||
isPresBlank = False;
|
||||
isPerfBlank = False;
|
||||
isRegular = True;
|
||||
};
|
||||
|
||||
@@ -1105,6 +1116,8 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
pres:Str;
|
||||
perf:Str;
|
||||
--morphs: VFormMini => VerbMorphPos=> Str;
|
||||
isPresBlank : Bool;
|
||||
isPerfBlank : Bool;
|
||||
isRegular:Bool
|
||||
};
|
||||
|
||||
@@ -1139,7 +1152,9 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
s:Str;
|
||||
pres:Str;
|
||||
perf:Str;
|
||||
--morphs: VMorphs ;
|
||||
--morphs: VMorphs ;
|
||||
isPresBlank : Bool;
|
||||
isPerfBlank : Bool;
|
||||
isRegular:Bool;
|
||||
comp:Str ;
|
||||
comp2:Str;
|
||||
@@ -1177,13 +1192,17 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
s = "ri" ;
|
||||
pres=[];
|
||||
perf=[];
|
||||
--morphs= mkVerbMorphs;
|
||||
--morphs= mkVerbMorphs;
|
||||
isPresBlank = True;
|
||||
isPerfBlank = True;
|
||||
isRegular=False
|
||||
};
|
||||
mkBecome : Verb ={
|
||||
s = "b" ;
|
||||
pres="a";
|
||||
perf="ire";
|
||||
perf="ire";
|
||||
isPresBlank = False;
|
||||
isPerfBlank = False;
|
||||
--morphs= mkVerbMorphs;
|
||||
isRegular=False
|
||||
};
|
||||
@@ -1339,7 +1358,9 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
s:Str;
|
||||
pres:Str;
|
||||
perf:Str;
|
||||
--morphs: VMorphs;
|
||||
--morphs: VMorphs;
|
||||
isPresBlank : Bool;
|
||||
isPerfBlank : Bool;
|
||||
comp: Str;
|
||||
comp2:Str;
|
||||
ap:Str;
|
||||
@@ -1362,6 +1383,8 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
root : Str;
|
||||
pres: Str;
|
||||
perf: Str;
|
||||
isPresBlank : Bool;
|
||||
isPerfBlank : Bool;
|
||||
--morphs : VFormMini => VerbMorphPos =>Str;
|
||||
{-
|
||||
inf : Str;
|
||||
@@ -1371,9 +1394,12 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
pastPart : Str; -- subject
|
||||
--root : Str ; -- dep. on Pol,Temp, e.g. "does","sleep"
|
||||
-}
|
||||
compl : Str -- after verb: complement, adverbs
|
||||
compl : Str -- after verb: complement, adverbs
|
||||
} ;
|
||||
Comp : Type = {s:Str};
|
||||
param
|
||||
CompSource = NounP | ADverb | AdjP | CommonNoun;
|
||||
oper
|
||||
Comp : Type = {s:Str; source : CompSource };
|
||||
|
||||
|
||||
--Conjunctions
|
||||
|
||||
@@ -24,54 +24,110 @@ lin
|
||||
compl = cl.compl
|
||||
in
|
||||
case <temp.t,temp.a, pol.p> of {
|
||||
<Pres,Simul, Pos> => {s = subj ++ clitic ++ --Predef.BIND ++
|
||||
root ++ Predef.BIND ++ presRestOfVerb ++ compl};
|
||||
<Pres,Simul, Pos> => case cl.isPresBlank of {
|
||||
True => {s = subj ++ clitic ++ root ++ compl};
|
||||
False => {s = subj ++ clitic ++ root ++ Predef.BIND ++ compl}
|
||||
};
|
||||
{-Note: when I use pol.s instead of ti, the word alignment instead becomes worse-}
|
||||
<Pres,Simul, Neg> => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ --Predef.BIND ++
|
||||
root ++ presRestOfVerb ++ compl};
|
||||
<Pres,Anter, Pos> => {s = subj ++ clitic ++ --Predef.BIND ++
|
||||
vMorphs!VFPresAnt!TAMarker ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl};
|
||||
<Pres,Anter, Neg> =>{s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ --Predef.BIND ++
|
||||
vMorphs!VFPresAnt!TAMarker ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl};
|
||||
<Pres,Simul, Neg> => case cl.isPresBlank of {
|
||||
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ root ++ compl};
|
||||
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++
|
||||
root ++ Predef.BIND ++ presRestOfVerb ++ compl}
|
||||
};
|
||||
<Pres,Anter, Pos> => case cl.isPerfBlank of {
|
||||
True => {s = subj ++ clitic ++ root ++ compl};
|
||||
False => {s = subj ++ clitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
<Pres,Anter, Neg> => case cl.isPerfBlank of {
|
||||
True => {s = subj ++ clitic ++ root ++ compl};
|
||||
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++
|
||||
root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
|
||||
|
||||
<Past,Simul, Pos> => {s = subj ++ clitic ++ --Predef.BIND ++
|
||||
root ++ Predef.BIND ++ pastRestOfVerb ++ compl};
|
||||
<Past,Simul, Pos> => case cl.isPerfBlank of {
|
||||
True => {s = subj ++ clitic ++ "ka" ++ Predef.BIND ++ root ++ compl};
|
||||
False => {s = subj ++ clitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
{-Note: when I use pol.s instead of ti, the word alignment instead becomes worse-}
|
||||
<Past,Simul, Neg> => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ --Predef.BIND ++
|
||||
root ++ pastRestOfVerb ++ compl};
|
||||
<Past,Anter, Pos> => {s = subj ++ clitic ++ "bire" ++ clitic ++ --Predef.BIND ++
|
||||
vMorphs!VFPastAnt!TAMarker ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl};
|
||||
<Past,Anter, Neg> =>{s = subj ++ clitic ++ "bire" ++ clitic ++ "ta"--Predef.BIND ++ ant!TAMarker
|
||||
++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl};
|
||||
<Past,Simul, Neg> => case cl.isPerfBlank of {
|
||||
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ root ++ compl};
|
||||
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++
|
||||
root ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
|
||||
<Fut,Simul, Pos> => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za ku" ++ Predef.BIND ++ --choice of za over ija
|
||||
root ++ Predef.BIND ++ presRestOfVerb ++ compl};
|
||||
<Past,Anter, Pos> => case cl.isPerfBlank of {
|
||||
True => {s = subj ++ clitic ++ "kaba" ++Predef.BIND ++ clitic ++
|
||||
root ++ compl};
|
||||
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "a" ++ Predef.BIND ++
|
||||
root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
<Past,Anter, Neg> =>case cl.isPerfBlank of {
|
||||
True => {s = subj ++ clitic ++ "ka" ++Predef.BIND ++ clitic ++
|
||||
root ++ compl};
|
||||
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "taa" ++ Predef.BIND ++
|
||||
root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
|
||||
<Fut,Simul, Pos> => case cl.isPresBlank of {
|
||||
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za ku" ++ Predef.BIND ++ --choice of za over ija
|
||||
root ++ compl};
|
||||
False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za ku" ++ Predef.BIND ++ --choice of za over ija
|
||||
root ++ Predef.BIND ++ presRestOfVerb ++ compl}
|
||||
};
|
||||
|
||||
|
||||
{-Note: when I use pol.s instead of ti, the word alignment instead becomes worse-}
|
||||
<Fut,Simul, Neg> => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kuza ku" ++ Predef.BIND ++
|
||||
root ++ presRestOfVerb ++ compl};
|
||||
<Fut,Anter, Pos> => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za kuba" ++ Predef.BIND ++ --choice of za over ija
|
||||
root ++ Predef.BIND ++ pastRestOfVerb ++ compl};
|
||||
<Fut,Anter, Neg> =>{s = subj ++ "ni" ++ Predef.BIND ++ clitic ++ "za kuba" ++ clitic ++ "taka" ++ Predef.BIND ++
|
||||
root ++ pastRestOfVerb ++ compl};
|
||||
|
||||
|
||||
<Cond,Simul, Pos> => {s = subj ++ clitic ++ "kaa" ++Predef.BIND ++
|
||||
root ++ Predef.BIND ++ presRestOfVerb ++ compl};
|
||||
<Fut,Simul, Neg> => case cl.isPresBlank of {
|
||||
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kuza ku" ++ Predef.BIND ++
|
||||
root ++ compl};
|
||||
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kuza ku" ++ Predef.BIND ++
|
||||
root ++ BIND ++ presRestOfVerb ++ compl}
|
||||
};
|
||||
<Fut,Anter, Pos> => case cl.isPerfBlank of {
|
||||
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za kuba" ++ Predef.BIND ++ clitic ++ --choice of za over ija
|
||||
root ++ Predef.BIND ++ "ire" ++ compl};
|
||||
False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za kuba" ++ Predef.BIND ++ clitic ++ --choice of za over ija
|
||||
root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
|
||||
<Fut,Anter, Neg> => case cl.isPerfBlank of {
|
||||
True => {s = subj ++ "ni" ++ Predef.BIND ++ clitic ++ "za kuba" ++ clitic ++ Predef.BIND ++
|
||||
root ++ "ire" ++ compl};
|
||||
False => {s = subj ++ "ni" ++ Predef.BIND ++ clitic ++ "za kuba" ++ clitic ++ "taka" ++ Predef.BIND ++
|
||||
root ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
<Cond,Simul, Pos> => case cl.isPresBlank of {
|
||||
True => {s = subj ++ clitic ++ "kaa" ++Predef.BIND ++ root ++ compl};
|
||||
False => {s = subj ++ clitic ++ "kaa" ++Predef.BIND ++
|
||||
root ++ Predef.BIND ++ presRestOfVerb ++ compl}
|
||||
};
|
||||
{-Note: when I use pol.s instead of ti, the word alignment instead becomes worse-}
|
||||
<Cond,Simul, Neg> => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kaa" ++ Predef.BIND ++
|
||||
root ++ presRestOfVerb ++ compl};
|
||||
<Cond,Anter, Pos> => {s = subj ++ clitic ++ "kaa"--Predef.BIND ++
|
||||
++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl};
|
||||
<Cond,Anter, Neg> =>{s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kaa" ++Predef.BIND
|
||||
<Cond,Simul, Neg> =>case cl.isPresBlank of {
|
||||
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kaa" ++ Predef.BIND ++
|
||||
root ++ "ire" ++ compl};
|
||||
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kaa" ++ Predef.BIND ++
|
||||
root ++ presRestOfVerb ++ compl}
|
||||
};
|
||||
|
||||
<Cond,Anter, Pos> => case cl.isPerfBlank of {
|
||||
True => {s = subj ++ clitic ++ "kaa" ++ root ++ compl};
|
||||
False => {s = subj ++ clitic ++ "kaa" ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
|
||||
<Cond,Anter, Neg> =>case cl.isPerfBlank of {
|
||||
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kaa" ++Predef.BIND
|
||||
++ root ++ Predef.BIND ++ "ire" ++ compl};
|
||||
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kaa" ++Predef.BIND
|
||||
++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
}
|
||||
}; --: Temp -> Pol -> QCl -> QS ; -- has John walked
|
||||
|
||||
-- These are the 2 x 4 x 4 = 16 forms generated by different
|
||||
-- combinations of tense, polarity, and
|
||||
-- anteriority, which are defined in [``Common`` Common.html].
|
||||
UseQCl = UseCl; -- : Temp -> Pol -> Cl -> S ; -- John has not walked
|
||||
QuestCl qcl = qcl; --: Cl -> QCl ; -- does John (not) walk
|
||||
|
||||
|
||||
--UseRCl : Temp -> Pol -> RCl -> RS ; -- that had not slept
|
||||
UseRCl temp pol rcl = let
|
||||
@@ -231,6 +287,8 @@ lin
|
||||
perf = vp.perf;
|
||||
root = vp.s;
|
||||
--morphs = vp.morphs;
|
||||
isPresBlank = vp.isPresBlank;
|
||||
isPerfBlank = vp.isPerfBlank;
|
||||
{-
|
||||
inf = mkVerbInrf vp.root;
|
||||
pres = mkVerbPres vp.root;
|
||||
@@ -248,6 +306,8 @@ lin
|
||||
perf = vp.perf;
|
||||
root = vp.s;
|
||||
--morphs = vp.morphs;
|
||||
isPresBlank = vp.isPresBlank;
|
||||
isPerfBlank = vp.isPerfBlank;
|
||||
{-
|
||||
inf = mkVerbInrf vp.root;
|
||||
pres = mkVerbPres vp.root;
|
||||
@@ -256,7 +316,7 @@ lin
|
||||
pastPart = mkVerbPastPart vp.root; -- subject
|
||||
-}
|
||||
--root = vp.root ;
|
||||
compl = mkSubjClitic np.agr ++ Predef.BIND ++ vp.comp --mkSubjClitic np.agr ++ Predef.BIND ++ vp.comp
|
||||
compl = mkSubjClitic np.agr ++ vp.comp --mkSubjClitic np.agr ++ Predef.BIND ++ vp.comp
|
||||
}
|
||||
};--: NP -> VP -> Cl ; -- John walks / John does not walk
|
||||
|
||||
@@ -309,6 +369,8 @@ lin
|
||||
pres = vpslash.pres;
|
||||
perf = vpslash.perf;
|
||||
--morphs = vpslash.morphs;
|
||||
isPresBlank = vpslash.isPresBlank;
|
||||
isPerfBlank = vpslash.isPerfBlank;
|
||||
ap = vpslash.ap;
|
||||
isRegular = vpslash.isRegular;
|
||||
adv = vpslash.adv;
|
||||
|
||||
33
src/rukiga/SentenceCggAbsCgg.gf
Normal file
33
src/rukiga/SentenceCggAbsCgg.gf
Normal file
@@ -0,0 +1,33 @@
|
||||
concrete SentenceCggAbsCgg of SentenceCggAbs = CatCgg
|
||||
open (R=ResCgg) in {
|
||||
|
||||
lincat
|
||||
ExtTense = {s : Str ; t : R.TensesExtra } ;
|
||||
TempExtra = {s : Str ; t : R.TensesExtra a : R.Aspects} ;
|
||||
Aspect = {s : Str ; a : R.AspectsExtra } ;
|
||||
lin
|
||||
--TAspect -> ExtTense ->Ant -> TempExtra ;
|
||||
TAspect extT a ={s = extT.s ++ a.s; t = exT.t; a = a.a};
|
||||
--TRPast : ExtTense ; -- bakagyenda [Remote past]
|
||||
TRPast = {s = [] ; t = R.Remotepast };
|
||||
--TIPast : ExtTense ; -- baagyenda [Immediate Past or Memorial ]
|
||||
TIPast = {s =[] ; t = R.ImmediatePast};
|
||||
--TRFut : ExtTense ; -- I sleep/slept [simultaneous, not compound]
|
||||
TRFut = {s = [] ; t = R.RemoteFut};
|
||||
|
||||
--APerformative : Aspect ; -- I slept [past, "imperfect"] --# notpresent
|
||||
APerformative = {s = []; a = R.Performative };
|
||||
APerfect = {s = []; a = R.Perfect }; -- I will sleep [future] --# notpresent
|
||||
ARes = {s = []; a = R.Resultative }; -- I would sleep [conditional] --# notpresent
|
||||
ARetr = {s = []; a = R.Retrospective }; -- I have slept/had slept [anterior, "compound", "perfect"] --# notpresent
|
||||
AHab = {s = []; a = R.Habitual };
|
||||
AProg = {s = []; a = R.Progrssive };
|
||||
APer = {s = []; a = R.Persitive };
|
||||
UseClExtra : TempExtra -> Pol -> Cl -> S ; -- she had not slept
|
||||
|
||||
|
||||
--UseQClExtra : TempExtra -> Pol -> QCl -> QS ; -- who had not slept
|
||||
--UseRClExtra : TempExtra -> Pol -> RCl -> RS ; -- that had not slept
|
||||
--UseSlashExtra : TempExtra -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
|
||||
|
||||
}
|
||||
3
src/rukiga/SentenceCggExtra.gf
Normal file
3
src/rukiga/SentenceCggExtra.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
abstract SentenceCggExtra = Cat **{
|
||||
|
||||
}
|
||||
25
src/rukiga/SentenceCggExtraAbs.gf
Normal file
25
src/rukiga/SentenceCggExtraAbs.gf
Normal file
@@ -0,0 +1,25 @@
|
||||
abstract SentenceCggExtraAbs = Cat **{
|
||||
|
||||
cat
|
||||
ExtTense;
|
||||
TempExtra;
|
||||
Aspect;
|
||||
fun
|
||||
TAspect -> ExtTense ->Ant -> TempExtra ;
|
||||
TRPast : ExtTense ; -- bakagyenda [Remote past]
|
||||
TIPast : ExtTense ; -- baagyenda [Immediate Past or Memorial ]
|
||||
TRFut : ExtTense ; -- I sleep/slept [simultaneous, not compound]
|
||||
APerformative : Aspect ; -- I slept [past, "imperfect"] --# notpresent
|
||||
APerfect : Aspect ; -- I will sleep [future] --# notpresent
|
||||
ARes : Aspect ; -- I would sleep [conditional] --# notpresent
|
||||
ARetr : Aspect ; -- I have slept/had slept [anterior, "compound", "perfect"] --# notpresent
|
||||
AHab : Aspect ;
|
||||
AProg : Aspect ;
|
||||
APer : Aspect ;
|
||||
|
||||
|
||||
UseClExtra : TempExtra -> Pol -> Cl -> S ; -- she had not slept
|
||||
UseQClExtra : TempExtra -> Pol -> QCl -> QS ; -- who had not slept
|
||||
UseRClExtra : TempExtra -> Pol -> RCl -> RS ; -- that had not slept
|
||||
UseSlashExtra : TempExtra -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
|
||||
}
|
||||
@@ -97,7 +97,8 @@ lin
|
||||
n = Sg
|
||||
};
|
||||
|
||||
have_V2 ={s= "ine"; pres=[]; perf =[]; morphs = mkVerbMorphs; comp = []; isRegular=False}; --: V2 ;
|
||||
have_V2 ={s= "ine"; pres=[]; perf =[]; isPresBlank = False;
|
||||
isPerfBlank = False; morphs = mkVerbMorphs; comp = []; isRegular=False}; --: V2 ;
|
||||
|
||||
{-
|
||||
All Predeterminers are given here.
|
||||
@@ -203,12 +204,16 @@ lin
|
||||
doesAgree = True
|
||||
};--: Det ;
|
||||
|
||||
want_VV = {s = "yend"; pres="da"; perf = "zire"; morphs=mkVerbMorphs; isRegular=True; inf=[]; whenUsed = VVBoth};
|
||||
can8know_VV = {s = "baas"; pres="a"; perf = "ize"; morphs=mkVerbMorphs; isRegular=True; inf=[]; whenUsed = VVBoth};--: VV ; -- can (capacity)
|
||||
can_VV = {s = "baas"; pres="a"; perf = "ize"; morphs=mkVerbMorphs; isRegular=True; inf=[]; whenUsed = VVBoth};--: VV ; -- can (possibility)
|
||||
want_VV = {s = "yend"; pres="da"; perf = "zire"; isPresBlank = False;
|
||||
isPerfBlank = False; morphs=mkVerbMorphs; isRegular=True; inf=[]; whenUsed = VVBoth};
|
||||
can8know_VV = {s = "baas"; pres="a"; perf = "ize"; isPresBlank = False;
|
||||
isPerfBlank = False; morphs=mkVerbMorphs; isRegular=True; inf=[]; whenUsed = VVBoth};--: VV ; -- can (capacity)
|
||||
can_VV = {s = "baas"; pres="a"; perf = "ize"; isPresBlank = False;
|
||||
isPerfBlank = False; morphs=mkVerbMorphs; isRegular=True; inf=[]; whenUsed = VVBoth};--: VV ; -- can (possibility)
|
||||
-- must_VV used especially in the perfective mood: see dictionary entry shemerera on Pg 501 of Mpairwe
|
||||
-- must has no passive form
|
||||
must_VV = {s = "shemere"; pres="ra"; perf = "ire"; morphs=mkVerbMorphs; isRegular=False; inf=[]; whenUsed = VVPerf}; --VV
|
||||
must_VV = {s = "shemere"; pres="ra"; perf = "ire"; isPresBlank = False;
|
||||
isPerfBlank = False; morphs=mkVerbMorphs; isRegular=False; inf=[]; whenUsed = VVPerf}; --VV
|
||||
--somebody_NP = {}; --: NP ;
|
||||
--something_NP : NP ;
|
||||
--somewhere_Adv : Adv ;
|
||||
|
||||
@@ -8,7 +8,9 @@ lin
|
||||
s = v.s ;
|
||||
pres =v.pres;
|
||||
perf = v.perf;
|
||||
--morphs = v.morphs;
|
||||
--morphs = v.morphs;
|
||||
isPresBlank = v.isPresBlank;
|
||||
isPerfBlank = v.isPerfBlank;
|
||||
comp =[];
|
||||
comp2 = [];
|
||||
ap =[];
|
||||
@@ -23,14 +25,35 @@ lin
|
||||
|
||||
-- UseComp : Comp -> VP ; -- be warm means complement of a copula especially adjectival Phrase
|
||||
--AdjectivalPhrase : Type = {s : Str ; post : Str; isPre : Bool; isProper : Bool; isPrep: Bool};
|
||||
UseComp comp = let auxBe = mkBecome
|
||||
|
||||
in
|
||||
{
|
||||
s = auxBe.s ++ BIND ++auxBe.pres++ comp.s; --Assuming there is no AP which is prepositional
|
||||
UseComp comp =
|
||||
--let auxBe = mkBecome
|
||||
--in
|
||||
case comp.source of{
|
||||
AdjP => {
|
||||
s = mkBecome.s ++ BIND ++ mkBecome.pres; --Assuming there is no AP which is prepositional
|
||||
pres =[];
|
||||
perf = [];
|
||||
isPresBlank = True;
|
||||
isPerfBlank = True;
|
||||
--morphs=\\form,morphs=>[];
|
||||
comp = comp.s;
|
||||
comp2 = [];
|
||||
ap = [];
|
||||
isCompApStem = True;
|
||||
agr = AgrNo;
|
||||
isRegular = False;
|
||||
adv = [];
|
||||
containsAdv =False;
|
||||
adV =[];
|
||||
containsAdV = False
|
||||
};
|
||||
_ => {
|
||||
s = mkBecome.s ++ BIND ++mkBecome.pres++ comp.s; --Assuming there is no AP which is prepositional
|
||||
pres =[];
|
||||
perf = [];
|
||||
--morphs=\\form,morphs=>[];
|
||||
isPresBlank = True;
|
||||
isPerfBlank = True;
|
||||
comp = [];
|
||||
comp2 = [];
|
||||
ap = [];
|
||||
@@ -41,27 +64,32 @@ lin
|
||||
containsAdv =False;
|
||||
adV =[];
|
||||
containsAdV = False
|
||||
}; --its not generating any sentence
|
||||
}
|
||||
}; --its not generating any sentence
|
||||
|
||||
|
||||
|
||||
-- CompAP : AP -> Comp; -- (be) small
|
||||
CompAP ap = {s=ap.s! AgP3 Sg KI_BI}; -- used a hack.
|
||||
CompAP ap = {s=ap.s! AgP3 Sg KI_BI; source = AdjP}; -- used a hack.
|
||||
|
||||
-- CompNP : NP -> Comp ; -- (be) the man
|
||||
CompNP np = {s= np.s ! Acc}; --{s =[] ; post =np.s; isPre = False; isProper = Bool; isPrep: Bool};
|
||||
CompNP np = {s= np.s ! Acc; source = NounP}; --{s =[] ; post =np.s; isPre = False; isProper = Bool; isPrep: Bool};
|
||||
|
||||
-- CompAdv : Adv -> Comp ; -- (be) here
|
||||
CompAdv adv =adv;
|
||||
CompAdv adv ={ s= adv.s; source = ADverb};
|
||||
{-
|
||||
This has been a hack to simply pick the sigular and complete noun.
|
||||
-}
|
||||
--CompCN : CN -> Comp ; -- (be) a man/men
|
||||
CompCN cn = {s =cn.s ! Sg ! Complete} ; -- (be) a man/men
|
||||
CompCN cn = {s =cn.s ! Sg ! Complete; source = CommonNoun} ; -- (be) a man/men
|
||||
-- SlashV2a : V2 -> VPSlash ; -- love (it)
|
||||
SlashV2a v2 ={
|
||||
s =v2.s;
|
||||
pres =v2.pres;
|
||||
perf = v2.perf;
|
||||
--morphs = v2.morphs;
|
||||
isPresBlank = v2.isPresBlank;
|
||||
isPerfBlank = v2.isPerfBlank;
|
||||
comp = [];
|
||||
comp2 =[];
|
||||
ap =[];
|
||||
@@ -76,7 +104,9 @@ lin
|
||||
s =v3.s;
|
||||
pres =v3.pres;
|
||||
perf = v3.perf;
|
||||
--morphs = v3.morphs;
|
||||
--morphs = v3.morphs;
|
||||
isPresBlank = v3.isPresBlank;
|
||||
isPerfBlank = v3.isPerfBlank;
|
||||
comp = np.s ! Acc;
|
||||
comp2 =[];
|
||||
ap =[];
|
||||
@@ -93,6 +123,8 @@ lin
|
||||
pres =v3.pres;
|
||||
perf = v3.perf;
|
||||
--morphs = v3.morphs;
|
||||
isPresBlank = v3.isPresBlank;
|
||||
isPerfBlank = v3.isPerfBlank;
|
||||
comp = np.s ! Acc;
|
||||
comp2 = np.s ! Acc; -- what is the meaning of this function?
|
||||
ap = [];
|
||||
@@ -107,8 +139,13 @@ lin
|
||||
s =vv.s;
|
||||
pres =vv.pres;
|
||||
perf = vv.perf;
|
||||
--morphs = vv.morphs;
|
||||
comp = vpslash.s ++ BIND ++ vpslash.pres;
|
||||
--morphs = vv.morphs;
|
||||
isPresBlank = vv.isPresBlank;
|
||||
isPerfBlank = vv.isPerfBlank;
|
||||
comp = case vv.isPresBlank of {
|
||||
False => vpslash.s ++ BIND ++ vpslash.pres;
|
||||
_ => vpslash.s
|
||||
};
|
||||
comp2 = [];
|
||||
ap = [];
|
||||
isRegular = vv.isRegular;
|
||||
@@ -127,7 +164,9 @@ lin
|
||||
s =vpslash.s;
|
||||
pres =vpslash.pres;
|
||||
perf = vpslash.perf;
|
||||
--morphs = vpslash.morphs;
|
||||
--morphs = vpslash.morphs;
|
||||
isPresBlank = vpslash.isPresBlank;
|
||||
isPerfBlank = vpslash.isPerfBlank;
|
||||
comp = vpslash.comp ++ np.s ! Acc;
|
||||
comp2 =vpslash.comp2; --should be empty
|
||||
ap = [];
|
||||
@@ -146,7 +185,9 @@ lin
|
||||
s=vp.s;
|
||||
pres =vp.pres;
|
||||
perf = vp.perf;
|
||||
--morphs = vp.morphs;
|
||||
--morphs = vp.morphs;
|
||||
isPresBlank = vp.isPresBlank;
|
||||
isPerfBlank = vp.isPerfBlank;
|
||||
comp = adv.s;
|
||||
comp2 = [];
|
||||
ap =[];
|
||||
@@ -164,9 +205,11 @@ lin
|
||||
s=vp.s;
|
||||
pres =vp.pres;
|
||||
perf = vp.perf;
|
||||
--morphs = vp.morphs;
|
||||
--morphs = vp.morphs;
|
||||
isPresBlank = vp.isPresBlank;
|
||||
isPerfBlank = vp.isPerfBlank;
|
||||
comp = vp.comp;
|
||||
comp2 =vp.comp;
|
||||
comp2 =vp.comp2;
|
||||
ap = [];
|
||||
isCompApStem = False;
|
||||
agr = AgrNo;
|
||||
@@ -187,7 +230,9 @@ lin
|
||||
s =vpslash.s;
|
||||
pres =vpslash.pres;
|
||||
perf = vpslash.perf;
|
||||
--morphs = vpslash.morphs;
|
||||
--morphs = vpslash.morphs;
|
||||
isPresBlank = vpslash.isPresBlank;
|
||||
isPerfBlank = vpslash.isPerfBlank;
|
||||
comp = vpslash.comp;
|
||||
comp2 = vpslash.comp2;
|
||||
ap = [];
|
||||
@@ -207,7 +252,9 @@ lin
|
||||
s =vpslash.s;
|
||||
pres =vpslash.pres;
|
||||
perf = vpslash.perf;
|
||||
--morphs = vpslash.morphs;
|
||||
--morphs = vpslash.morphs;
|
||||
isPresBlank = vpslash.isPresBlank;
|
||||
isPerfBlank = vpslash.isPerfBlank;
|
||||
comp = vpslash.comp;
|
||||
comp2 = vpslash.comp2;
|
||||
ap = [];
|
||||
@@ -231,7 +278,9 @@ lin
|
||||
s= vv.s ++ BIND ++ vv.perf ++ vpPres;
|
||||
pres = [];--vv.pres;
|
||||
perf= []; -- vv.perf;
|
||||
--morphs = vv.morphs;
|
||||
--morphs = vv.morphs;
|
||||
isPresBlank = True;
|
||||
isPerfBlank = True;
|
||||
comp=vp.comp ;
|
||||
comp2 = vp.comp2;
|
||||
ap = [];
|
||||
@@ -246,7 +295,9 @@ lin
|
||||
s= vv.s ++ BIND ++ vv.pres ++ vpPres;
|
||||
pres = [];--vv.pres;
|
||||
perf= [];--vv.perf;
|
||||
--morphs = vv.morphs;
|
||||
--morphs = vv.morphs;
|
||||
isPresBlank = True;
|
||||
isPerfBlank = True;
|
||||
comp=vp.comp ;
|
||||
comp2 = vp.comp2;
|
||||
ap = [];
|
||||
@@ -265,7 +316,9 @@ lin
|
||||
s= vs.s;
|
||||
pres =vs.pres;
|
||||
perf=vs.perf;
|
||||
--morphs = vs.morphs;
|
||||
--morphs = vs.morphs;
|
||||
isPresBlank = vs.isPresBlank;
|
||||
isPerfBlank = vs.isPerfBlank;
|
||||
comp=s.s ;
|
||||
comp2 = [];
|
||||
ap = [];
|
||||
@@ -286,7 +339,9 @@ lin
|
||||
s= vq.s;
|
||||
pres =vq.pres;
|
||||
perf=vq.perf;
|
||||
--morphs = vq.morphs;
|
||||
--morphs = vq.morphs;
|
||||
isPresBlank = vq.isPresBlank;
|
||||
isPerfBlank = vq.isPerfBlank;
|
||||
comp=qs.s ;
|
||||
comp2 = [];
|
||||
ap = [];
|
||||
@@ -312,7 +367,9 @@ lin
|
||||
s= va.s;
|
||||
pres =va.pres;
|
||||
perf=va.perf;
|
||||
--morphs = va.morphs;
|
||||
--morphs = va.morphs;
|
||||
isPresBlank = va.isPresBlank;
|
||||
isPerfBlank = va.isPerfBlank;
|
||||
comp=[] ;
|
||||
comp2 = [];
|
||||
ap = ap.s! AgP3 Sg KI_BI;
|
||||
@@ -327,7 +384,7 @@ lin
|
||||
|
||||
-- Copula alone
|
||||
--UseCopula : VP ; -- be
|
||||
UseCopula = mkBecome ** {
|
||||
UseCopula = be_Copula ** {
|
||||
comp=[];
|
||||
comp2 = [];
|
||||
ap = [];
|
||||
|
||||
Reference in New Issue
Block a user