1
0
forked from GitHub/gf-rgl

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:
David Bamutura
2019-11-28 07:12:57 +03:00
parent ba4db3d913
commit a21df23da5
15 changed files with 344 additions and 75 deletions

View File

@@ -65,6 +65,8 @@ lincat
perf :Str; perf :Str;
root : Str; root : Str;
--morphs : Res.VFormMini => Res.VerbMorphPos =>Str; --morphs : Res.VFormMini => Res.VerbMorphPos =>Str;
isPresBlank :Bool;
isPerfBlank : Bool;
compl : Str; -- after verb: complement, adverbs compl : Str; -- after verb: complement, adverbs
isCompApStem : Bool; isCompApStem : Bool;
whichRel: Res.RForm whichRel: Res.RForm
@@ -78,6 +80,8 @@ lincat
pres: Str; pres: Str;
perf:Str; perf:Str;
--morphs : Res.VFormMini => Res.VerbMorphPos =>Str; --; compl : Str -- after verb: complement, adverbs --morphs : Res.VFormMini => Res.VerbMorphPos =>Str; --; compl : Str -- after verb: complement, adverbs
isPresBlank : Bool;
isPerfBlank : Bool;
ap:Str; ap:Str;
isRegular:Bool; isRegular:Bool;
adv:Str; adv:Str;

View File

@@ -1,4 +1,4 @@
abstract DictEngAbs = Cat ** { abstract DictCggAbs = Cat ** {
{- --beginning of comment {- --beginning of comment

View File

@@ -0,0 +1,5 @@
abstract ExtraCatAbs = Cat **{
cat
TenseExtra;
TempExtra;
}

16
src/rukiga/ExtraCggAbs.gf Normal file
View 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
}

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

View File

@@ -145,7 +145,7 @@ lin
--today_Adv = mkAdv "erizooba" AgrNo; --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? distance_N3 = mkN3 (mkN "orugyendo" ZERO_BU) (lin Prep (mkPrep "kurunga" "" False)) (lin Prep (mkPrep "mpáka" "" False)); --could orugyendo work in its place?

View File

@@ -7,6 +7,7 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
lin lin
--QuestCl : Cl -> QCl ; -- does John walk --QuestCl : Cl -> QCl ; -- does John walk
QuestCl cl = cl ** {posibleSubAgr = mkSubjCliticTable}; QuestCl cl = cl ** {posibleSubAgr = mkSubjCliticTable};
--QuestVP : IP -> VP -> QCl ; -- who walks --QuestVP : IP -> VP -> QCl ; -- who walks
@@ -17,6 +18,8 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
root = vp.s; root = vp.s;
pres = vp.pres; pres = vp.pres;
perf = vp.perf; perf = vp.perf;
isPresBlank = vp.isPresBlank;
isPerfBlank = vp.isPerfBlank;
--morphs = vp.morphs; --morphs = vp.morphs;
{- {-
inf : Str; inf : Str;
@@ -45,6 +48,8 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
root = clSlash.s; root = clSlash.s;
pres = clSlash.pres; pres = clSlash.pres;
perf = clSlash.perf; perf = clSlash.perf;
isPresBlank = clSlash.isPresBlank;
isPerfBlank = clSlash.isPerfBlank;
--morphs = clSlash.morphs; --morphs = clSlash.morphs;
{- {-
inf : Str; inf : Str;
@@ -66,6 +71,8 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
pres = cl.pres; pres = cl.pres;
perf = cl.perf; perf = cl.perf;
--morphs = cl.morphs; --morphs = cl.morphs;
isPresBlank = cl.isPresBlank;
isPerfBlank = cl.isPerfBlank;
{- {-
inf : Str; inf : Str;
pres : Str; pres : Str;
@@ -90,6 +97,8 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
pres = be_Copula.pres; pres = be_Copula.pres;
perf = be_Copula.perf; perf = be_Copula.perf;
--morphs = be_Copula.morphs; --morphs = be_Copula.morphs;
isPresBlank = be_Copula.isPresBlank;
isPerfBlank = be_Copula.isPerfBlank;
{- {-
inf : Str; inf : Str;
pres : Str; pres : Str;
@@ -108,6 +117,8 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
pres = be_Copula.pres; pres = be_Copula.pres;
perf = be_Copula.perf; perf = be_Copula.perf;
--morphs = be_Copula.morphs; --morphs = be_Copula.morphs;
isPresBlank = be_Copula.isPresBlank;
isPerfBlank = be_Copula.isPerfBlank;
{- {-
inf : Str; inf : Str;
pres : Str; pres : Str;
@@ -126,6 +137,8 @@ concrete QuestionCgg of Question = CatCgg ** open ResCgg, Prelude in {
pres = be_Copula.pres; pres = be_Copula.pres;
perf = be_Copula.perf; perf = be_Copula.perf;
--morphs = be_Copula.morphs; --morphs = be_Copula.morphs;
isPresBlank = be_Copula.isPresBlank;
isPerfBlank = be_Copula.isPerfBlank;
{- {-
inf : Str; inf : Str;
pres : Str; pres : Str;

View File

@@ -32,6 +32,8 @@ lin
perf =cl.perf; perf =cl.perf;
root = cl.root; root = cl.root;
--morphs = cl.morphs; --morphs = cl.morphs;
isPresBlank = cl.isPresBlank;
isPerfBlank = cl.isPerfBlank;
compl =cl.compl; compl =cl.compl;
isCompApStem = False; isCompApStem = False;
whichRel = Such_That; whichRel = Such_That;
@@ -52,6 +54,8 @@ lin
perf =vp.perf; perf =vp.perf;
root = vp.s; root = vp.s;
--morphs = vp.morphs; --morphs = vp.morphs;
isPresBlank = vp.isPresBlank;
isPerfBlank = vp.isPerfBlank;
compl =vp.comp; compl =vp.comp;
isCompApStem = vp.isCompApStem; isCompApStem = vp.isCompApStem;
whichRel = RF RSubj; whichRel = RF RSubj;
@@ -76,9 +80,11 @@ lin
rp = rp.s; rp = rp.s;
--rObjVariant2 = rp.rObjVariant2; --rObjVariant2 = rp.rObjVariant2;
pres = clSlash.pres; pres = clSlash.pres;
perf = clSlash.perf; perf = clSlash.perf;
root = clSlash.root; root = clSlash.root;
--morphs = clSlash.morphs; --morphs = clSlash.morphs;
isPresBlank = clSlash.isPresBlank;
isPerfBlank = clSlash.isPerfBlank;
compl = comp; compl = comp;
isCompApStem = isCompApStem; isCompApStem = isCompApStem;
whichRel = RF RObj; whichRel = RF RObj;

View File

@@ -62,6 +62,13 @@ param
-- may not need it -- may not need it
NounCat = ComNoun | PropNoun; --prepositions agree with nouns to form adverbial Phrases NounCat = ComNoun | PropNoun; --prepositions agree with nouns to form adverbial Phrases
PrepForm = Form1 | Form2; -- omu and omuri, aha, ahari 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, Complete = Nouns with IV,
Incomplete = Nouns without IV: important for use with pre-determiners Incomplete = Nouns without IV: important for use with pre-determiners
@@ -100,6 +107,8 @@ oper
s = rad; s = rad;
pres = end1; pres = end1;
perf = end2; perf = end2;
isPresBlank = False;
isPerfBlank = False;
--morphs = mkVerbMorphs; --morphs = mkVerbMorphs;
isRegular = False; isRegular = False;
}; };
@@ -109,6 +118,8 @@ oper
pres = "a"; pres = "a";
perf = "ire"; perf = "ire";
--morphs = mkVerbMorphs; --morphs = mkVerbMorphs;
isPresBlank = False;
isPerfBlank = False;
isRegular = True; isRegular = True;
}; };
@@ -1105,6 +1116,8 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
pres:Str; pres:Str;
perf:Str; perf:Str;
--morphs: VFormMini => VerbMorphPos=> Str; --morphs: VFormMini => VerbMorphPos=> Str;
isPresBlank : Bool;
isPerfBlank : Bool;
isRegular:Bool isRegular:Bool
}; };
@@ -1140,6 +1153,8 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
pres:Str; pres:Str;
perf:Str; perf:Str;
--morphs: VMorphs ; --morphs: VMorphs ;
isPresBlank : Bool;
isPerfBlank : Bool;
isRegular:Bool; isRegular:Bool;
comp:Str ; comp:Str ;
comp2:Str; comp2:Str;
@@ -1178,12 +1193,16 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
pres=[]; pres=[];
perf=[]; perf=[];
--morphs= mkVerbMorphs; --morphs= mkVerbMorphs;
isPresBlank = True;
isPerfBlank = True;
isRegular=False isRegular=False
}; };
mkBecome : Verb ={ mkBecome : Verb ={
s = "b" ; s = "b" ;
pres="a"; pres="a";
perf="ire"; perf="ire";
isPresBlank = False;
isPerfBlank = False;
--morphs= mkVerbMorphs; --morphs= mkVerbMorphs;
isRegular=False isRegular=False
}; };
@@ -1340,6 +1359,8 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
pres:Str; pres:Str;
perf:Str; perf:Str;
--morphs: VMorphs; --morphs: VMorphs;
isPresBlank : Bool;
isPerfBlank : Bool;
comp: Str; comp: Str;
comp2:Str; comp2:Str;
ap:Str; ap:Str;
@@ -1362,6 +1383,8 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
root : Str; root : Str;
pres: Str; pres: Str;
perf: Str; perf: Str;
isPresBlank : Bool;
isPerfBlank : Bool;
--morphs : VFormMini => VerbMorphPos =>Str; --morphs : VFormMini => VerbMorphPos =>Str;
{- {-
inf : Str; inf : Str;
@@ -1373,7 +1396,10 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
-} -}
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 --Conjunctions

View File

@@ -24,54 +24,110 @@ lin
compl = cl.compl compl = cl.compl
in in
case <temp.t,temp.a, pol.p> of { case <temp.t,temp.a, pol.p> of {
<Pres,Simul, Pos> => {s = subj ++ clitic ++ --Predef.BIND ++ <Pres,Simul, Pos> => case cl.isPresBlank of {
root ++ Predef.BIND ++ presRestOfVerb ++ compl}; 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-} {-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 ++ <Pres,Simul, Neg> => case cl.isPresBlank of {
root ++ presRestOfVerb ++ compl}; True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ root ++ compl};
<Pres,Anter, Pos> => {s = subj ++ clitic ++ --Predef.BIND ++ False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++
vMorphs!VFPresAnt!TAMarker ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}; root ++ Predef.BIND ++ presRestOfVerb ++ compl}
<Pres,Anter, Neg> =>{s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ --Predef.BIND ++ };
vMorphs!VFPresAnt!TAMarker ++ root ++ Predef.BIND ++ pastRestOfVerb ++ 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 ++ <Past,Simul, Pos> => case cl.isPerfBlank of {
root ++ Predef.BIND ++ pastRestOfVerb ++ compl}; 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-} {-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 ++ <Past,Simul, Neg> => case cl.isPerfBlank of {
root ++ pastRestOfVerb ++ compl}; True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ root ++ compl};
<Past,Anter, Pos> => {s = subj ++ clitic ++ "bire" ++ clitic ++ --Predef.BIND ++ False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++
vMorphs!VFPastAnt!TAMarker ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}; root ++ pastRestOfVerb ++ compl}
<Past,Anter, Neg> =>{s = subj ++ clitic ++ "bire" ++ clitic ++ "ta"--Predef.BIND ++ ant!TAMarker };
++ root ++ Predef.BIND ++ pastRestOfVerb ++ 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}
};
<Fut,Simul, Pos> => {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-} {-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 ++ <Fut,Simul, Neg> => case cl.isPresBlank of {
root ++ presRestOfVerb ++ compl}; True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kuza ku" ++ Predef.BIND ++
<Fut,Anter, Pos> => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za kuba" ++ Predef.BIND ++ --choice of za over ija root ++ compl};
root ++ Predef.BIND ++ pastRestOfVerb ++ compl}; False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kuza ku" ++ Predef.BIND ++
<Fut,Anter, Neg> =>{s = subj ++ "ni" ++ Predef.BIND ++ clitic ++ "za kuba" ++ clitic ++ "taka" ++ Predef.BIND ++ root ++ BIND ++ presRestOfVerb ++ compl}
root ++ pastRestOfVerb ++ 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 {
<Cond,Simul, Pos> => {s = subj ++ clitic ++ "kaa" ++Predef.BIND ++ True => {s = subj ++ "ni" ++ Predef.BIND ++ clitic ++ "za kuba" ++ clitic ++ Predef.BIND ++
root ++ Predef.BIND ++ presRestOfVerb ++ compl}; 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-} {-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 ++ <Cond,Simul, Neg> =>case cl.isPresBlank of {
root ++ presRestOfVerb ++ compl}; True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kaa" ++ Predef.BIND ++
<Cond,Anter, Pos> => {s = subj ++ clitic ++ "kaa"--Predef.BIND ++ root ++ "ire" ++ compl};
++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}; False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kaa" ++ Predef.BIND ++
<Cond,Anter, Neg> =>{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} ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
}
}; --: Temp -> Pol -> QCl -> QS ; -- has John walked }; --: Temp -> Pol -> QCl -> QS ; -- has John walked
-- These are the 2 x 4 x 4 = 16 forms generated by different -- These are the 2 x 4 x 4 = 16 forms generated by different
-- combinations of tense, polarity, and -- combinations of tense, polarity, and
-- anteriority, which are defined in [``Common`` Common.html]. -- anteriority, which are defined in [``Common`` Common.html].
UseQCl = UseCl; -- : Temp -> Pol -> Cl -> S ; -- John has not walked 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 -> RS ; -- that had not slept
UseRCl temp pol rcl = let UseRCl temp pol rcl = let
@@ -231,6 +287,8 @@ lin
perf = vp.perf; perf = vp.perf;
root = vp.s; root = vp.s;
--morphs = vp.morphs; --morphs = vp.morphs;
isPresBlank = vp.isPresBlank;
isPerfBlank = vp.isPerfBlank;
{- {-
inf = mkVerbInrf vp.root; inf = mkVerbInrf vp.root;
pres = mkVerbPres vp.root; pres = mkVerbPres vp.root;
@@ -248,6 +306,8 @@ lin
perf = vp.perf; perf = vp.perf;
root = vp.s; root = vp.s;
--morphs = vp.morphs; --morphs = vp.morphs;
isPresBlank = vp.isPresBlank;
isPerfBlank = vp.isPerfBlank;
{- {-
inf = mkVerbInrf vp.root; inf = mkVerbInrf vp.root;
pres = mkVerbPres vp.root; pres = mkVerbPres vp.root;
@@ -256,7 +316,7 @@ lin
pastPart = mkVerbPastPart vp.root; -- subject pastPart = mkVerbPastPart vp.root; -- subject
-} -}
--root = vp.root ; --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 };--: NP -> VP -> Cl ; -- John walks / John does not walk
@@ -309,6 +369,8 @@ lin
pres = vpslash.pres; pres = vpslash.pres;
perf = vpslash.perf; perf = vpslash.perf;
--morphs = vpslash.morphs; --morphs = vpslash.morphs;
isPresBlank = vpslash.isPresBlank;
isPerfBlank = vpslash.isPerfBlank;
ap = vpslash.ap; ap = vpslash.ap;
isRegular = vpslash.isRegular; isRegular = vpslash.isRegular;
adv = vpslash.adv; adv = vpslash.adv;

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

View File

@@ -0,0 +1,3 @@
abstract SentenceCggExtra = Cat **{
}

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

View File

@@ -97,7 +97,8 @@ lin
n = Sg 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. All Predeterminers are given here.
@@ -203,12 +204,16 @@ lin
doesAgree = True doesAgree = True
};--: Det ; };--: Det ;
want_VV = {s = "yend"; pres="da"; perf = "zire"; morphs=mkVerbMorphs; isRegular=True; inf=[]; whenUsed = VVBoth}; want_VV = {s = "yend"; pres="da"; perf = "zire"; isPresBlank = False;
can8know_VV = {s = "baas"; pres="a"; perf = "ize"; morphs=mkVerbMorphs; isRegular=True; inf=[]; whenUsed = VVBoth};--: VV ; -- can (capacity) isPerfBlank = False; morphs=mkVerbMorphs; isRegular=True; inf=[]; whenUsed = VVBoth};
can_VV = {s = "baas"; pres="a"; perf = "ize"; morphs=mkVerbMorphs; isRegular=True; inf=[]; whenUsed = VVBoth};--: VV ; -- can (possibility) 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_VV used especially in the perfective mood: see dictionary entry shemerera on Pg 501 of Mpairwe
-- must has no passive form -- 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 ; --somebody_NP = {}; --: NP ;
--something_NP : NP ; --something_NP : NP ;
--somewhere_Adv : Adv ; --somewhere_Adv : Adv ;

View File

@@ -9,6 +9,8 @@ lin
pres =v.pres; pres =v.pres;
perf = v.perf; perf = v.perf;
--morphs = v.morphs; --morphs = v.morphs;
isPresBlank = v.isPresBlank;
isPerfBlank = v.isPerfBlank;
comp =[]; comp =[];
comp2 = []; comp2 = [];
ap =[]; ap =[];
@@ -23,14 +25,35 @@ lin
-- UseComp : Comp -> VP ; -- be warm means complement of a copula especially adjectival Phrase -- 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}; --AdjectivalPhrase : Type = {s : Str ; post : Str; isPre : Bool; isProper : Bool; isPrep: Bool};
UseComp comp = let auxBe = mkBecome UseComp comp =
--let auxBe = mkBecome
in --in
{ case comp.source of{
s = auxBe.s ++ BIND ++auxBe.pres++ comp.s; --Assuming there is no AP which is prepositional 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 =[]; pres =[];
perf = []; perf = [];
--morphs=\\form,morphs=>[]; --morphs=\\form,morphs=>[];
isPresBlank = True;
isPerfBlank = True;
comp = []; comp = [];
comp2 = []; comp2 = [];
ap = []; ap = [];
@@ -41,27 +64,32 @@ lin
containsAdv =False; containsAdv =False;
adV =[]; adV =[];
containsAdV = False containsAdV = False
}; --its not generating any sentence }
}; --its not generating any sentence
-- CompAP : AP -> Comp; -- (be) small -- 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 -> 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 -> 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. This has been a hack to simply pick the sigular and complete noun.
-} -}
--CompCN : CN -> Comp ; -- (be) a man/men --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 -> VPSlash ; -- love (it)
SlashV2a v2 ={ SlashV2a v2 ={
s =v2.s; s =v2.s;
pres =v2.pres; pres =v2.pres;
perf = v2.perf; perf = v2.perf;
--morphs = v2.morphs; --morphs = v2.morphs;
isPresBlank = v2.isPresBlank;
isPerfBlank = v2.isPerfBlank;
comp = []; comp = [];
comp2 =[]; comp2 =[];
ap =[]; ap =[];
@@ -77,6 +105,8 @@ lin
pres =v3.pres; pres =v3.pres;
perf = v3.perf; perf = v3.perf;
--morphs = v3.morphs; --morphs = v3.morphs;
isPresBlank = v3.isPresBlank;
isPerfBlank = v3.isPerfBlank;
comp = np.s ! Acc; comp = np.s ! Acc;
comp2 =[]; comp2 =[];
ap =[]; ap =[];
@@ -93,6 +123,8 @@ lin
pres =v3.pres; pres =v3.pres;
perf = v3.perf; perf = v3.perf;
--morphs = v3.morphs; --morphs = v3.morphs;
isPresBlank = v3.isPresBlank;
isPerfBlank = v3.isPerfBlank;
comp = np.s ! Acc; comp = np.s ! Acc;
comp2 = np.s ! Acc; -- what is the meaning of this function? comp2 = np.s ! Acc; -- what is the meaning of this function?
ap = []; ap = [];
@@ -108,7 +140,12 @@ lin
pres =vv.pres; pres =vv.pres;
perf = vv.perf; perf = vv.perf;
--morphs = vv.morphs; --morphs = vv.morphs;
comp = vpslash.s ++ BIND ++ vpslash.pres; isPresBlank = vv.isPresBlank;
isPerfBlank = vv.isPerfBlank;
comp = case vv.isPresBlank of {
False => vpslash.s ++ BIND ++ vpslash.pres;
_ => vpslash.s
};
comp2 = []; comp2 = [];
ap = []; ap = [];
isRegular = vv.isRegular; isRegular = vv.isRegular;
@@ -128,6 +165,8 @@ lin
pres =vpslash.pres; pres =vpslash.pres;
perf = vpslash.perf; perf = vpslash.perf;
--morphs = vpslash.morphs; --morphs = vpslash.morphs;
isPresBlank = vpslash.isPresBlank;
isPerfBlank = vpslash.isPerfBlank;
comp = vpslash.comp ++ np.s ! Acc; comp = vpslash.comp ++ np.s ! Acc;
comp2 =vpslash.comp2; --should be empty comp2 =vpslash.comp2; --should be empty
ap = []; ap = [];
@@ -147,6 +186,8 @@ lin
pres =vp.pres; pres =vp.pres;
perf = vp.perf; perf = vp.perf;
--morphs = vp.morphs; --morphs = vp.morphs;
isPresBlank = vp.isPresBlank;
isPerfBlank = vp.isPerfBlank;
comp = adv.s; comp = adv.s;
comp2 = []; comp2 = [];
ap =[]; ap =[];
@@ -165,8 +206,10 @@ lin
pres =vp.pres; pres =vp.pres;
perf = vp.perf; perf = vp.perf;
--morphs = vp.morphs; --morphs = vp.morphs;
isPresBlank = vp.isPresBlank;
isPerfBlank = vp.isPerfBlank;
comp = vp.comp; comp = vp.comp;
comp2 =vp.comp; comp2 =vp.comp2;
ap = []; ap = [];
isCompApStem = False; isCompApStem = False;
agr = AgrNo; agr = AgrNo;
@@ -188,6 +231,8 @@ lin
pres =vpslash.pres; pres =vpslash.pres;
perf = vpslash.perf; perf = vpslash.perf;
--morphs = vpslash.morphs; --morphs = vpslash.morphs;
isPresBlank = vpslash.isPresBlank;
isPerfBlank = vpslash.isPerfBlank;
comp = vpslash.comp; comp = vpslash.comp;
comp2 = vpslash.comp2; comp2 = vpslash.comp2;
ap = []; ap = [];
@@ -208,6 +253,8 @@ lin
pres =vpslash.pres; pres =vpslash.pres;
perf = vpslash.perf; perf = vpslash.perf;
--morphs = vpslash.morphs; --morphs = vpslash.morphs;
isPresBlank = vpslash.isPresBlank;
isPerfBlank = vpslash.isPerfBlank;
comp = vpslash.comp; comp = vpslash.comp;
comp2 = vpslash.comp2; comp2 = vpslash.comp2;
ap = []; ap = [];
@@ -232,6 +279,8 @@ lin
pres = [];--vv.pres; pres = [];--vv.pres;
perf= []; -- vv.perf; perf= []; -- vv.perf;
--morphs = vv.morphs; --morphs = vv.morphs;
isPresBlank = True;
isPerfBlank = True;
comp=vp.comp ; comp=vp.comp ;
comp2 = vp.comp2; comp2 = vp.comp2;
ap = []; ap = [];
@@ -247,6 +296,8 @@ lin
pres = [];--vv.pres; pres = [];--vv.pres;
perf= [];--vv.perf; perf= [];--vv.perf;
--morphs = vv.morphs; --morphs = vv.morphs;
isPresBlank = True;
isPerfBlank = True;
comp=vp.comp ; comp=vp.comp ;
comp2 = vp.comp2; comp2 = vp.comp2;
ap = []; ap = [];
@@ -266,6 +317,8 @@ lin
pres =vs.pres; pres =vs.pres;
perf=vs.perf; perf=vs.perf;
--morphs = vs.morphs; --morphs = vs.morphs;
isPresBlank = vs.isPresBlank;
isPerfBlank = vs.isPerfBlank;
comp=s.s ; comp=s.s ;
comp2 = []; comp2 = [];
ap = []; ap = [];
@@ -287,6 +340,8 @@ lin
pres =vq.pres; pres =vq.pres;
perf=vq.perf; perf=vq.perf;
--morphs = vq.morphs; --morphs = vq.morphs;
isPresBlank = vq.isPresBlank;
isPerfBlank = vq.isPerfBlank;
comp=qs.s ; comp=qs.s ;
comp2 = []; comp2 = [];
ap = []; ap = [];
@@ -313,6 +368,8 @@ lin
pres =va.pres; pres =va.pres;
perf=va.perf; perf=va.perf;
--morphs = va.morphs; --morphs = va.morphs;
isPresBlank = va.isPresBlank;
isPerfBlank = va.isPerfBlank;
comp=[] ; comp=[] ;
comp2 = []; comp2 = [];
ap = ap.s! AgP3 Sg KI_BI; ap = ap.s! AgP3 Sg KI_BI;
@@ -327,7 +384,7 @@ lin
-- Copula alone -- Copula alone
--UseCopula : VP ; -- be --UseCopula : VP ; -- be
UseCopula = mkBecome ** { UseCopula = be_Copula ** {
comp=[]; comp=[];
comp2 = []; comp2 = [];
ap = []; ap = [];