From 6a3fda72120d376499cb43a68e76bfb602b976dc Mon Sep 17 00:00:00 2001 From: lingdocs <71590811+lingdocs@users.noreply.github.com> Date: Thu, 17 Feb 2022 11:27:00 +0400 Subject: [PATCH] added distinction between habitual and subjunctive equatives --- package.json | 2 +- src/lib/conjugation-forms.tsx | 49 +++++++++++----- src/lib/grammar-units.ts | 95 +++++++++++++++++++++++++------ src/lib/irregular-conjugations.ts | 60 +++++++++++++++++-- src/lib/verb-conjugation.ts | 12 +++- src/types.ts | 1 + 6 files changed, 182 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index 3a01dae..0d955d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lingdocs/pashto-inflector", - "version": "1.4.6", + "version": "1.5.0", "author": "lingdocs.com", "description": "A Pashto inflection and verb conjugation engine, inculding React components for displaying Pashto text, inflections, and conjugations", "homepage": "https://verbs.lingdocs.com", diff --git a/src/lib/conjugation-forms.tsx b/src/lib/conjugation-forms.tsx index a29a9f8..d815d94 100644 --- a/src/lib/conjugation-forms.tsx +++ b/src/lib/conjugation-forms.tsx @@ -255,7 +255,7 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [ ]), formula: "Past participle inflected", secondPronounNeeded: true, - explanation: "The base of all perfect forms. Used on it's own as a sort of weaker form of the present perfect.", + explanation: "The base of all perfect forms. Used on it's own as a sort of abreviated form of the present perfect.", }, { label: "Past Perfect", @@ -282,15 +282,27 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [ reorderWithNegative: true, }, { - label: "Subjunctive/Habitual Perfect", + label: "Habitual Perfect", + form: conj.perfect.habitual, + past: true, + sentence: true, + englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([ + `${engSubj(s)} ${engHave(s)}${n ? " not" : ""} ${v[4]}`, + ]), + formula: "Past participle inflected + Habitual Equative", + explanation: "Talking about something that will have happened habitually", + reorderWithNegative: true, + }, + { + label: "Subjunctive Perfect", form: conj.perfect.subjunctive, past: true, sentence: true, englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([ `that ${engSubj(s, true)} will have${n ? " not" : ""} ${v[4]}`, ]), - formula: "Past participle inflected + Subjunctive/Habitual Equative", - explanation: "Talking about something that will have happened habitually, or expressing hope, desire, or judgement about an action having happened", + formula: "Past participle inflected + Subjunctive Equative", + explanation: "expressing hope, desire, or judgement about an action having happened", reorderWithNegative: true, }, { @@ -566,8 +578,8 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [ englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([ `${engSubj(s)} ${engHave(s)}${n ? " not" : ""} been ${v[4]}`, ]), - formula: "Infinitive + کېدل (to be) past participle inflected", - explanation: "The base of all perfect forms. Used on it's own as a sort of weaker form of the present perfect. (Passive voice)", + formula: "Infinitive + کېدل past participle inflected", + explanation: "The base of all perfect forms. Used on it's own as a sort of abbreviated form of the present perfect. (Passive voice)", }, { label: "Passive Past Perfect", @@ -578,7 +590,7 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [ englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([ `${engSubj(s)} had${n ? " not" : ""} been ${v[4]}`, ]), - formula: "Infinitive + کېدل (to be) past participle inflected + Past Equative", + formula: "Infinitive + کېدل past participle inflected + Past Equative", explanation: "Talking about events that had happened in the past, or had affected a past situation (Passive voice) ('I had been ____ed')", }, { @@ -590,11 +602,22 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [ englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([ `${engSubj(s)} ${engHave(s)}${n ? " not" : ""} been ${v[4]}`, ]), - formula: "Infinitive + کېدل (to be) past participle inflected + Present Equative", + formula: "Infinitive + کېدل past participle inflected + Present Equative", explanation: "Talking about that something happened in the past and it affects the present (Passive voice) ('I have been _____ed')", }, { - label: "Passive Subjunctive/Habitual Perfect", + label: "Passive Habitual Perfect", + form: conj.passive.perfect.subjunctive, + past: true, + sentence: true, + passive: true, + englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([ + `${engSubj(s)} ${engHave(s)}${n ? " not" : ""} been ${v[4]}`, + ]), + formula: "Infinitive + کېدل past participle inflected + Habitual Equative", + }, + { + label: "Passive Subjunctive Perfect", form: conj.passive.perfect.subjunctive, past: true, sentence: true, @@ -602,7 +625,7 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [ englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([ `that ${engSubj(s, true)} will${n ? " not" : ""} have been ${v[4]}`, ]), - formula: "Infinitive + کېدل (to be) past participle inflected + Subjunctive/Habitual Equative", + formula: "Infinitive + کېدل past participle inflected + Subjunctive Equative", }, { label: "Passive Future/Presumptive Perfect", @@ -614,7 +637,7 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [ englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([ `${engSubj(s)} will${n ? " not" : ""} have been ${v[4]}`, ]), - formula: "به - ba + Infinitive + کېدل (to be) past participle inflected + Future Equative", + formula: "به - ba + Infinitive + کېدل past participle inflected + Future Equative", explanation: "Talking about something that will have happened in the future, or guessing that the event will have occured presently (Passive voice) ('I will have been ____ed')", }, { @@ -628,7 +651,7 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [ `${engSubj(s)} will${n ? " not" : ""} have been ${v[4]}`, ]), explanation: "Affirming that an event will have taken place (Passive voice) ('I will have been ____ed')", - formula: "به - ba + Infinitive + کېدل (to be) past participle inflected + Past Equative" + formula: "به - ba + Infinitive + کېدل past participle inflected + Past Equative" }, { label: "Passive Past Subjunctive / Hypothetical Perfect", @@ -638,7 +661,7 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [ sentence: true, passive: true, explanation: "Talking about an event that would have hypothetically taken place, or that should have taken place (Passive voice) ('I would have been ____ed')", - formula: "به - ba + Infinitive + کېدل (to be) past participle inflected + Past Subjunctive / Hypothetical Equative" + formula: "به - ba + Infinitive + کېدل past participle inflected + Past Subjunctive / Hypothetical Equative" }, ], }, diff --git a/src/lib/grammar-units.ts b/src/lib/grammar-units.ts index ace5a8c..8d5849e 100644 --- a/src/lib/grammar-units.ts +++ b/src/lib/grammar-units.ts @@ -180,6 +180,7 @@ export const englishEquative: { export const equativeEndings: { past: T.LengthOptions, present: T.VerbBlock, + habitual: T.VerbBlock, subjunctive: T.VerbBlock, pastSubjunctive: T.VerbBlock, } = { @@ -378,45 +379,107 @@ export const equativeEndings: { }] ], ], + habitual: [ + [ + [{ + p: "یم", + f: "yum" + }], + [{ + p: "یو", + f: "yoo" + }] + ], + [ + [{ + p: "یم", + f: "yum" + }], + [{ + p: "یو", + f: "yoo" + }] + ], + [ + [{ + p: "یې", + f: "ye" + }], + [{ + p: "یئ", + f: "yeyy" + }] + ], + [ + [{ + p: "یې", + f: "ye" + }], + [{ + p: "یئ", + f: "yeyy" + }] + ], + [ + [{ + p: "وي", + f: "wee" + }], + [{ + p: "وي", + f: "wee" + }] + ], + [ + [{ + p: "وي", + f: "wee" + }], + [{ + p: "وي", + f: "wee" + }] + ], + ], subjunctive: [ [ [{ - p: "یم", - f: "yum" + p: "وم", + f: "wum" }], [{ - p: "یو", - f: "yoo" + p: "وو", + f: "woo" }] ], [ [{ - p: "یم", - f: "yum" + p: "وم", + f: "wum" }], [{ - p: "یو", - f: "yoo" + p: "وو", + f: "woo" }] ], [ [{ - p: "یې", - f: "ye" + p: "وې", + f: "we" }], [{ - p: "یئ", - f: "yeyy" + p: "وئ", + f: "weyy" }] ], [ [{ - p: "یې", - f: "ye" + p: "وې", + f: "we" }], [{ - p: "یئ", - f: "yeyy" + p: "وئ", + f: "weyy" }] ], [ diff --git a/src/lib/irregular-conjugations.ts b/src/lib/irregular-conjugations.ts index 2e9d619..452afb5 100644 --- a/src/lib/irregular-conjugations.ts +++ b/src/lib/irregular-conjugations.ts @@ -258,7 +258,7 @@ export const kedulStat: T.VerbConjugation = { [[{p: "شوی دی", f: "shuwey dey"}], [{p: "شوي دي", f: "shuwee dee"}]], [[{p: "شوې ده", f: "shuwe da"}], [{p: "شوې دي", f: "shuwe dee"}]], ], - subjunctive: [ + habitual: [ [[{p: "شوی یم", f: "shuwey yum"}], [{p: "شوي یو", f: "shuwee yoo"}]], [[{p: "شوې یم", f: "shuwe yum"}], [{p: "شوې یو", f: "shuwe yoo"}]], [[{p: "شوی یې", f: "shuwey ye"}], [{p: "شوي یئ", f: "shuwee yeyy"}]], @@ -266,6 +266,14 @@ export const kedulStat: T.VerbConjugation = { [[{p: "شوی وي", f: "shuwey wee"}], [{p: "شوي وي", f: "shuwee wee"}]], [[{p: "شوې وي", f: "shuwe wee"}], [{p: "شوې وي", f: "shuwe wee"}]], ], + subjunctive: [ + [[{p: "شوی وم", f: "shuwey wum"}], [{p: "شوي وو", f: "shuwee woo"}]], + [[{p: "شوې وم", f: "shuwe wum"}], [{p: "شوې وو", f: "shuwe woo"}]], + [[{p: "شوی وې", f: "shuwey we"}], [{p: "شوي وئ", f: "shuwee weyy"}]], + [[{p: "شوې وې", f: "shuwe we"}], [{p: "شوې وئ", f: "shuwe weyy"}]], + [[{p: "شوی وي", f: "shuwey wee"}], [{p: "شوي وي", f: "shuwee wee"}]], + [[{p: "شوې وي", f: "shuwe wee"}], [{p: "شوې وي", f: "shuwe wee"}]], + ], future: [ [[{p: "به شوی یم", f: "ba shuwey yum"}], [{p: "به شوي یو", f: "ba shuwee yoo"}]], [[{p: "به شوې یم", f: "ba shuwe yum"}], [{p: "به شوې یو", f: "ba shuwe yoo"}]], @@ -473,7 +481,7 @@ export const kedulDyn: T.VerbConjugation = { [[{p: "شوی دی", f: "shuwey dey"}], [{p: "شوي دي", f: "shuwee dee"}]], [[{p: "شوې ده", f: "shuwe da"}], [{p: "شوې دي", f: "shuwe dee"}]], ], - subjunctive: [ + habitual: [ [[{p: "شوی یم", f: "shuwey yum"}], [{p: "شوي یو", f: "shuwee yoo"}]], [[{p: "شوې یم", f: "shuwe yum"}], [{p: "شوې یو", f: "shuwe yoo"}]], [[{p: "شوی یې", f: "shuwey ye"}], [{p: "شوي یئ", f: "shuwee yeyy"}]], @@ -481,6 +489,14 @@ export const kedulDyn: T.VerbConjugation = { [[{p: "شوی وي", f: "shuwey wee"}], [{p: "شوي وي", f: "shuwee wee"}]], [[{p: "شوې وي", f: "shuwe wee"}], [{p: "شوې وي", f: "shuwe wee"}]], ], + subjunctive: [ + [[{p: "شوی وم", f: "shuwey wum"}], [{p: "شوي وو", f: "shuwee woo"}]], + [[{p: "شوې وم", f: "shuwe wum"}], [{p: "شوې وو", f: "shuwe woo"}]], + [[{p: "شوی وې", f: "shuwey we"}], [{p: "شوي وئ", f: "shuwee weyy"}]], + [[{p: "شوې وې", f: "shuwe we"}], [{p: "شوې وئ", f: "shuwe weyy"}]], + [[{p: "شوی وي", f: "shuwey wee"}], [{p: "شوي وي", f: "shuwee wee"}]], + [[{p: "شوې وي", f: "shuwe wee"}], [{p: "شوې وي", f: "shuwe wee"}]], + ], future: [ [[{p: "به شوی یم", f: "ba shuwey yum"}], [{p: "به شوي یو", f: "ba shuwee yoo"}]], [[{p: "به شوې یم", f: "ba shuwe yum"}], [{p: "به شوې یو", f: "ba shuwe yoo"}]], @@ -608,7 +624,7 @@ const kawulPerfect: T.PerfectContent = { [[{p: "کړی دی", f: "kúRey dey"}], [{p: "کړي دي", f: "kúRee dee"}]], [[{p: "کړې ده", f: "kúRe da"}], [{p: "کړې دي", f: "kúRe dee"}]], ], - subjunctive: [ + habitual: [ [[{p: "کړی یم", f: "kúRey yum"}], [{p: "کړي یو", f: "kúRee yoo"}]], [[{p: "کړې یم", f: "kúRe yum"}], [{p: "کړې یو", f: "kúRe yoo"}]], [[{p: "کړی یې", f: "kúRey ye"}], [{p: "کړي یئ", f: "kúRee yeyy"}]], @@ -616,6 +632,14 @@ const kawulPerfect: T.PerfectContent = { [[{p: "کړی وي", f: "kúRey wee"}], [{p: "کړي وي", f: "kúRee wee"}]], [[{p: "کړې وي", f: "kúRe wee"}], [{p: "کړې وي", f: "kúRe wee"}]], ], + subjunctive: [ + [[{p: "کړی وم", f: "kúRey wum"}], [{p: "کړي وو", f: "kúRee woo"}]], + [[{p: "کړې وم", f: "kúRe wum"}], [{p: "کړې وو", f: "kúRe woo"}]], + [[{p: "کړی وې", f: "kúRey we"}], [{p: "کړي وئ", f: "kúRee weyy"}]], + [[{p: "کړې وې", f: "kúRe we"}], [{p: "کړې وئ", f: "kúRe weyy"}]], + [[{p: "کړی وي", f: "kúRey wee"}], [{p: "کړي وي", f: "kúRee wee"}]], + [[{p: "کړې وي", f: "kúRe wee"}], [{p: "کړې وي", f: "kúRe wee"}]], + ], future: [ [[{p: "به کړی یم", f: "ba kúRey yum"}], [{p: "به کړي یو", f: "ba kúRee yoo"}]], [[{p: "به کړې یم", f: "ba kúRe yum"}], [{p: "به کړې یو", f: "ba kúRe yoo"}]], @@ -1858,7 +1882,7 @@ export const tlul: T.VerbConjugation = { [[{p: "تللې ده", f: "tlúle da"}], [{p: "تللې دي", f: "tlúle dee"}]], ], }, - subjunctive: { + habitual: { short: [ [[{p: "تلی یم", f: "túley yum"}], [{p: "تلي یو", f: "túlee yoo"}]], [[{p: "تلې یم", f: "túle yum"}], [{p: "تلې یو", f: "túle yoo"}]], @@ -1876,6 +1900,24 @@ export const tlul: T.VerbConjugation = { [[{p: "تللې وي", f: "tlúle wee"}], [{p: "تللې وي", f: "tlúle wee"}]], ], }, + subjunctive: { + short: [ + [[{p: "تلی وم", f: "túley wum"}], [{p: "تلي وو", f: "túlee woo"}]], + [[{p: "تلې وم", f: "túle wum"}], [{p: "تلې وو", f: "túle woo"}]], + [[{p: "تلی وې", f: "túley we"}], [{p: "تلي وئ", f: "túlee weyy"}]], + [[{p: "تلې وې", f: "túle we"}], [{p: "تلې وئ", f: "túle weyy"}]], + [[{p: "تلی وي", f: "túley wee"}], [{p: "تلي وي", f: "túlee wee"}]], + [[{p: "تلې وي", f: "túle wee"}], [{p: "تلې وي", f: "túle wee"}]], + ], + long: [ + [[{p: "تللی وم", f: "tlúley wum"}], [{p: "تللي وو", f: "tlúlee woo"}]], + [[{p: "تللې وم", f: "tlúle wum"}], [{p: "تللې وو", f: "tlúle woo"}]], + [[{p: "تللی وې", f: "tlúley we"}], [{p: "تللي وئ", f: "tlúlee weyy"}]], + [[{p: "تللې وې", f: "tlúle we"}], [{p: "تللې وئ", f: "tlúle weyy"}]], + [[{p: "تللی وي", f: "tlúley wee"}], [{p: "تللي وي", f: "tlúlee wee"}]], + [[{p: "تللې وي", f: "tlúle wee"}], [{p: "تللې وي", f: "tlúle wee"}]], + ], + }, future: { short: [ [[{p: "به تلی یم", f: "ba túley yum"}], [{p: "به تلي یو", f: "ba túlee yoo"}]], @@ -2311,7 +2353,7 @@ export const warkawul: T.VerbConjugation = { [[{p: "ورکړی دی", f: "wărkúRey dey"}], [{p: "ورکړي دي", f: "wărkúRee dee"}]], [[{p: "ورکړې ده", f: "wărkúRe da"}], [{p: "ورکړې دي", f: "wărkúRe dee"}]], ], - subjunctive: [ + habitual: [ [[{p: "ورکړی یم", f: "wărkúRey yum"}], [{p: "ورکړي یو", f: "wărkúRee yoo"}]], [[{p: "ورکړې یم", f: "wărkúRe yum"}], [{p: "ورکړې یو", f: "wărkúRe yoo"}]], [[{p: "ورکړی یې", f: "wărkúRey ye"}], [{p: "ورکړي یئ", f: "wărkúRee yeyy"}]], @@ -2319,6 +2361,14 @@ export const warkawul: T.VerbConjugation = { [[{p: "ورکړی وي", f: "wărkúRey wee"}], [{p: "ورکړي وي", f: "wărkúRee wee"}]], [[{p: "ورکړې وي", f: "wărkúRe wee"}], [{p: "ورکړې وي", f: "wărkúRe wee"}]], ], + subjunctive: [ + [[{p: "ورکړی وم", f: "wărkúRey wum"}], [{p: "ورکړي وو", f: "wărkúRee woo"}]], + [[{p: "ورکړې وم", f: "wărkúRe wum"}], [{p: "ورکړې وو", f: "wărkúRe woo"}]], + [[{p: "ورکړی وې", f: "wărkúRey we"}], [{p: "ورکړي وئ", f: "wărkúRee weyy"}]], + [[{p: "ورکړې وې", f: "wărkúRe we"}], [{p: "ورکړې وئ", f: "wărkúRe weyy"}]], + [[{p: "ورکړی وي", f: "wărkúRey wee"}], [{p: "ورکړي وي", f: "wărkúRee wee"}]], + [[{p: "ورکړې وي", f: "wărkúRe wee"}], [{p: "ورکړې وي", f: "wărkúRe wee"}]], + ], future: [ [[{p: "به ورکړی یم", f: "ba wărkúRey yum"}], [{p: "به ورکړي یو", f: "ba wărkúRee yoo"}]], [[{p: "به ورکړې یم", f: "ba wărkúRe yum"}], [{p: "به ورکړې یو", f: "ba wărkúRe yoo"}]], diff --git a/src/lib/verb-conjugation.ts b/src/lib/verb-conjugation.ts index 06d51a5..eb1d2f5 100644 --- a/src/lib/verb-conjugation.ts +++ b/src/lib/verb-conjugation.ts @@ -79,7 +79,6 @@ export function conjugateVerb(entry: T.DictionaryEntry, complement?: T.Dictionar const nonComboInfo = info as T.NonComboVerbInfo; - // TODO: Handle verbs like چيغه کول const conjugation: T.VerbConjugation = { info: nonComboInfo, imperfective: makeAspectContent(nonComboInfo, "imperfective"), @@ -161,10 +160,11 @@ function conjugateDynamicCompound(info: T.DynamicCompoundVerbInfo): T.VerbConjug // @ts-ignore : concatPsString(complement, " ", auxPPart) } - const makePerfect = (pset: T.PerfectContent) => ({ + const makePerfect = (pset: T.PerfectContent): T.PerfectContent => ({ halfPerfect: addToForm([complement, " "], pset.halfPerfect), past: addToForm([complement, " "], pset.past), present: addToForm([complement, " "], pset.present), + habitual: addToForm([complement, " "], pset.habitual), subjunctive: addToForm([complement, " "], pset.subjunctive), future: addToForm([complement, " "], pset.future), affirmational: addToForm([complement, " "], pset.affirmational), @@ -398,6 +398,7 @@ function makePerfectContent(info: T.NonComboVerbInfo): T.PerfectContent { const halfPerfect = addToForm([...pastPart], emptyVerbBlock); const past = addToForm([...pastPart, " "], equativeEndings.past.short); const present = addToForm([...pastPart, " "], equativeEndings.present); + const habitual = addToForm([...pastPart, " "], equativeEndings.habitual); const subjunctive = addToForm([...pastPart, " "], equativeEndings.subjunctive); const future = addToForm([baParticle, " ", ...pastPart, " "], equativeEndings.subjunctive); const affirmational = addToForm([baParticle, " ", ...pastPart, " "], equativeEndings.past.short); @@ -406,6 +407,7 @@ function makePerfectContent(info: T.NonComboVerbInfo): T.PerfectContent { halfPerfect, // Past Participle past, // Past Participle + Past Equative present, // Past Participle + Present Equative + habitual, // Past Participle + Habitual Equative subjunctive, // Past Participle + Subjunctive Equative future, // به - ba + Past Participle + Future/Subj Equative affirmational, // به - ba + Past Participle + Past Equative @@ -483,6 +485,10 @@ function makePassivePerfectContent(info: T.StativeCompoundVerbInfo): T.PerfectCo [info.complement, " ", passiveStativeBridge, " ", pPart, " "], equativeEndings.present, ); + const habitual = addToForm( + [info.complement, " ", passiveStativeBridge, " ", pPart, " "], + equativeEndings.habitual, + ); const subjunctive = addToForm( [info.complement, " ", passiveStativeBridge, " ", pPart, " "], equativeEndings.subjunctive, @@ -503,6 +509,7 @@ function makePassivePerfectContent(info: T.StativeCompoundVerbInfo): T.PerfectCo halfPerfect, past, present, + habitual, subjunctive, future, affirmational, @@ -532,6 +539,7 @@ function enforceObject(conj: T.VerbConjugation, person: T.Person): T.VerbConjuga halfPerfect: allOnePersonVerbForm(perf.halfPerfect, person), past: allOnePersonVerbForm(perf.past, person), present: allOnePersonVerbForm(perf.present, person), + habitual: allOnePersonInflection(perf.habitual, person), subjunctive: allOnePersonInflection(perf.subjunctive, person), future: allOnePersonVerbForm(perf.future, person), affirmational: allOnePersonVerbForm(perf.affirmational, person), diff --git a/src/types.ts b/src/types.ts index 9fc5cc9..e6ae41c 100644 --- a/src/types.ts +++ b/src/types.ts @@ -329,6 +329,7 @@ export type PerfectContent = { halfPerfect: VerbForm; // PPART past: VerbForm; // PPART + equative.past present: VerbForm; // PPART + equative.prest + habitual: VerbForm; // PPART + equative.habit subjunctive: VerbForm; // PPART + equative.subj future: VerbForm; // ba + PPART + equative.subj affirmational: VerbForm; // ba + PPART + equative.past