mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-28 01:18:57 -06:00
Merge pull request #244 from inariksit/somali
(Som) More forms for verbs and nouns
This commit is contained in:
@@ -32,9 +32,10 @@ concrete IdiomSom of Idiom = CatSom ** open Prelude, ResSom, VerbSom in {
|
|||||||
-- : VP -> VP ;
|
-- : VP -> VP ;
|
||||||
--ProgrVP vp = vp ** { } ;
|
--ProgrVP vp = vp ** { } ;
|
||||||
|
|
||||||
|
|
||||||
|
{- TODO: Sayeed p. 92 optative
|
||||||
-- : VP -> Utt ; -- let's go
|
-- : VP -> Utt ; -- let's go
|
||||||
--ImpPl1 vp = { } ;
|
ImpPl1 vp = { } ;
|
||||||
{-
|
|
||||||
|
|
||||||
ImpP3 : NP -> VP -> Utt ; -- let John walk
|
ImpP3 : NP -> VP -> Utt ; -- let John walk
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
concrete LexiconSom of Lexicon = CatSom **
|
concrete LexiconSom of Lexicon = CatSom **
|
||||||
open ParadigmsSom in {
|
open ParadigmsSom,ResSom in {
|
||||||
|
|
||||||
----
|
----
|
||||||
-- A
|
-- A
|
||||||
@@ -118,7 +118,7 @@ lin drink_V2 = mkV2 "cab" ;
|
|||||||
-- lin fall_V = mkV "" ;
|
-- lin fall_V = mkV "" ;
|
||||||
-- lin far_Adv = mkA "" ;
|
-- lin far_Adv = mkA "" ;
|
||||||
-- lin fat_N = mkN "" ;
|
-- lin fat_N = mkN "" ;
|
||||||
lin father_N2 = mkN2 (shortPossN (mkN "aabbe")) noPrep ;
|
lin father_N2 = mkN2 (shortPossN (mkN "aabbe")) Gen ;
|
||||||
-- lin fear_V2 = mkV2 "" ;
|
-- lin fear_V2 = mkV2 "" ;
|
||||||
-- lin fear_VS = mkVS "" ;
|
-- lin fear_VS = mkVS "" ;
|
||||||
-- lin feather_N = mkN "" ;
|
-- lin feather_N = mkN "" ;
|
||||||
@@ -227,7 +227,7 @@ lin man_N = mkN "nin" ;
|
|||||||
-- lin meat_N = mkN "" ;
|
-- lin meat_N = mkN "" ;
|
||||||
-- lin milk_N = mkN "" ;
|
-- lin milk_N = mkN "" ;
|
||||||
-- lin moon_N = mkN "" ;
|
-- lin moon_N = mkN "" ;
|
||||||
lin mother_N2 = mkN2 (shortPossN (mkN "hooyo")) noPrep ;
|
lin mother_N2 = mkN2 (shortPossN (mkN "hooyo")) Gen ;
|
||||||
-- lin mountain_N = mkN "" ;
|
-- lin mountain_N = mkN "" ;
|
||||||
-- lin mouth_N = mkN "" ;
|
-- lin mouth_N = mkN "" ;
|
||||||
-- lin music_N = mkN "" ;
|
-- lin music_N = mkN "" ;
|
||||||
@@ -389,7 +389,7 @@ lin teach_V2 = mkV2 "baray" ku ; -- I suppose this creates progressive forms? TO
|
|||||||
--------
|
--------
|
||||||
-- W - Y
|
-- W - Y
|
||||||
|
|
||||||
-- lin wait_V2 = mkV2 "" ;
|
lin wait_V2 = mkV2 "sug" ;
|
||||||
-- lin walk_V = mkV "" ;
|
-- lin walk_V = mkV "" ;
|
||||||
-- lin war_N = mkN "" ;
|
-- lin war_N = mkN "" ;
|
||||||
-- lin warm_A = mkA "" ;
|
-- lin warm_A = mkA "" ;
|
||||||
|
|||||||
@@ -9,24 +9,28 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
-- : Det -> CN -> NP
|
-- : Det -> CN -> NP
|
||||||
DetCN det cn = useN cn ** {
|
DetCN det cn = useN cn ** {
|
||||||
s = sTable ;
|
s = sTable ;
|
||||||
a = getAgr det.d cn.g ;
|
a = getAgr det.d cn.g } where {
|
||||||
sp = sTable ! Nom }
|
|
||||||
where {
|
|
||||||
sTable : Case => Str = \\c =>
|
sTable : Case => Str = \\c =>
|
||||||
let nfc : {nf : NForm ; c : Case} =
|
let nfc : {nf : NForm ; c : Case} =
|
||||||
case <c,cn.hasMod,det.d> of {
|
case <c,cn.hasMod,det.d> of {
|
||||||
<Nom,False,Indef Sg> => {nf=IndefNom ; c=Nom} ; -- special form for fem. nouns
|
-- special form for fem. nouns
|
||||||
<Nom,False,Def x NA> => {nf=Def x vU ; c=Nom} ; -- special case for DefArt
|
<Gen,False,Indef Sg> => {nf=GenSg ; c=c} ;
|
||||||
<Nom,True,_> => {nf=det.d ; c=Abs} ; -- If cn has modifier, the Nom ending attaches to the modifier
|
<Gen,False,Indef Pl> => {nf=GenPl ; c=c} ;
|
||||||
|
<Nom,False,Indef Sg> => {nf=NomSg ; c=c} ;
|
||||||
|
-- special case for DefArt+Nom: override vowel
|
||||||
|
<Nom,False,Def x NA> => {nf=Def x vU ; c=c} ;
|
||||||
|
-- If cn has modifier, Nom ending attaches to the modifier
|
||||||
|
<Nom,True,_> => {nf=det.d ; c=Abs} ;
|
||||||
_ => {nf=det.d ; c=c}
|
_ => {nf=det.d ; c=c}
|
||||||
} ;
|
} ;
|
||||||
|
nf : NForm = case det.isNum of {True => Numerative ; _ => nfc.nf} ;
|
||||||
detStr : Str =
|
detStr : Str =
|
||||||
case <det.isPoss,cn.shortPoss> of {
|
case <det.isPoss,cn.shortPoss> of {
|
||||||
<True,True> => det.shortPoss ;
|
<True,True> => det.shortPoss ;
|
||||||
_ => det.s ! nfc.c
|
_ => det.s ! nfc.c
|
||||||
} ;
|
} ;
|
||||||
in det.pref -- if det is numeral. TODO find out if gender/case/other distinction.
|
in det.pref -- if det is numeral. TODO find out if gender/case/other distinction.
|
||||||
++ cn.s ! nfc.nf
|
++ cn.s ! nf
|
||||||
++ detStr -- non-numeral det
|
++ detStr -- non-numeral det
|
||||||
++ cn.mod ! getNum (getAgr det.d Masc) ! c
|
++ cn.mod ! getNum (getAgr det.d Masc) ! c
|
||||||
} ;
|
} ;
|
||||||
@@ -34,11 +38,11 @@ DetCN det cn = useN cn ** {
|
|||||||
-- : PN -> NP ;
|
-- : PN -> NP ;
|
||||||
UsePN pn = pn ** {
|
UsePN pn = pn ** {
|
||||||
s = \\c => pn.s ;
|
s = \\c => pn.s ;
|
||||||
isPron = False ;
|
isPron = False
|
||||||
sp = pn.s } ;
|
} ;
|
||||||
|
|
||||||
-- : Pron -> NP ;
|
-- : Pron -> NP ;
|
||||||
UsePron pron = lin NP pron ;
|
UsePron pron = pron ;
|
||||||
|
|
||||||
-- : Predet -> NP -> NP ; -- only the man
|
-- : Predet -> NP -> NP ; -- only the man
|
||||||
PredetNP predet np = np ** {
|
PredetNP predet np = np ** {
|
||||||
@@ -66,13 +70,14 @@ DetCN det cn = useN cn ** {
|
|||||||
DetNP det = {
|
DetNP det = {
|
||||||
s = det.sp ! Masc ; ---- Any way to decide for gender here?
|
s = det.sp ! Masc ; ---- Any way to decide for gender here?
|
||||||
a = getAgr det.d Masc ;
|
a = getAgr det.d Masc ;
|
||||||
isPron = False ; sp = []
|
isPron = False ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- MassNP : CN -> NP ;
|
-- MassNP : CN -> NP ;
|
||||||
MassNP cn = useN cn ** {
|
MassNP cn = useN cn ** {
|
||||||
s = table { Nom => cn.s ! IndefNom ++ cn.mod ! Sg ! Nom ;
|
s = table { Nom => cn.s ! NomSg ++ cn.mod ! Sg ! Nom ;
|
||||||
Abs => cn.s ! Indef Sg ++ cn.mod ! Sg ! Abs }
|
-- Gen => cn.s ! PlGen ++ cn.mod ! Sg ! Gen ; -- TODO Do we ever need plural genitive?
|
||||||
|
c => cn.s ! Indef Sg ++ cn.mod ! Sg ! c }
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -87,12 +92,13 @@ DetCN det cn = useN cn ** {
|
|||||||
sp = \\g => case <num.n,g> of {
|
sp = \\g => case <num.n,g> of {
|
||||||
<Sg,Masc> => quant.sp ! SgMasc ;
|
<Sg,Masc> => quant.sp ! SgMasc ;
|
||||||
<Sg,Fem> => quant.sp ! SgFem ;
|
<Sg,Fem> => quant.sp ! SgFem ;
|
||||||
<Pl,_> => quant.sp ! InvarPl } ;
|
<Pl,_> => quant.sp ! PlInv } ;
|
||||||
|
|
||||||
d = case <num.isNum,quant.st> of {
|
d = case <num.isNum,quant.st> of {
|
||||||
<True,_> => Numerative ;
|
<True,_> => Numerative ;
|
||||||
<False,Definite> => Def num.n quant.v ;
|
<False,Definite> => Def num.n quant.v ;
|
||||||
<False,Indefinite> => Indef num.n } ;
|
<False,Indefinite> => Indef num.n } ;
|
||||||
|
isNum = num.isNum ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : Quant -> Num -> Ord -> Det ; -- these five best
|
-- : Quant -> Num -> Ord -> Det ; -- these five best
|
||||||
@@ -150,14 +156,14 @@ DetCN det cn = useN cn ** {
|
|||||||
let p = pron.poss ;
|
let p = pron.poss ;
|
||||||
gntbl = gnTable (BIND ++ p.sp ! SgMasc)
|
gntbl = gnTable (BIND ++ p.sp ! SgMasc)
|
||||||
(BIND ++ p.sp ! SgFem)
|
(BIND ++ p.sp ! SgFem)
|
||||||
(BIND ++ p.sp ! InvarPl)
|
(BIND ++ p.sp ! PlInv)
|
||||||
in DefArt ** {
|
in DefArt ** {
|
||||||
shortPoss = BIND ++ p.s ;
|
shortPoss = BIND ++ p.s ;
|
||||||
isPoss = True ;
|
isPoss = True ;
|
||||||
s = \\c => let casevow = case c of {Nom => "u" ; Abs => "a"}
|
s = \\c => let casevow = case c of {Nom => "u" ; Abs => "a" ; _ => "TODO:case"}
|
||||||
in gntbl ! SgMasc ++ BIND ++ casevow ;
|
in gntbl ! SgMasc ++ BIND ++ casevow ;
|
||||||
sp = \\gn,c => let prefix = case gn of {SgFem => "t" ; _ => "k"} ;
|
sp = \\gn,c => let prefix = case gn of {SgFem => "t" ; _ => "k"} ;
|
||||||
casevow = case c of {Nom => "u" ; Abs => "a"}
|
casevow = case c of {Nom => "u" ; Abs => "a"; _ => "TODO:case"}
|
||||||
in prefix ++ gntbl ! gn ++ BIND ++ casevow ;
|
in prefix ++ gntbl ! gn ++ BIND ++ casevow ;
|
||||||
v = p.v
|
v = p.v
|
||||||
} ;
|
} ;
|
||||||
@@ -168,12 +174,11 @@ DetCN det cn = useN cn ** {
|
|||||||
-- : N2 -> CN ;
|
-- : N2 -> CN ;
|
||||||
UseN,UseN2 = ResSom.useN ;
|
UseN,UseN2 = ResSom.useN ;
|
||||||
|
|
||||||
{-
|
|
||||||
-- : N2 -> NP -> CN ; -- mother of the king
|
-- : N2 -> NP -> CN ; -- mother of the king
|
||||||
ComplN2 n2 np =
|
ComplN2 n2 np =
|
||||||
let compl = applyPost n2.compl1 np ;
|
let cn = useN n2 in
|
||||||
in useN n2 ** { s = \\agr => compl ++ n2.s } ;
|
cn ** {s = \\c => cn.s ! c ++ np.s ! n2.c2 } ;
|
||||||
|
{-
|
||||||
-- : N3 -> NP -> N2 ; -- distance from this city (to Paris)
|
-- : N3 -> NP -> N2 ; -- distance from this city (to Paris)
|
||||||
ComplN3 n3 np =
|
ComplN3 n3 np =
|
||||||
let compl = applyPost n3.c3 np ;
|
let compl = applyPost n3.c3 np ;
|
||||||
@@ -187,7 +192,7 @@ DetCN det cn = useN cn ** {
|
|||||||
Use3N3 n3 = lin N2 n3 ;
|
Use3N3 n3 = lin N2 n3 ;
|
||||||
-- : AP -> CN -> CN
|
-- : AP -> CN -> CN
|
||||||
AdjCN ap cn = cn ** {
|
AdjCN ap cn = cn ** {
|
||||||
s = table { IndefNom => cn.s ! Indef Sg ; -- When an adjective is added, noun loses case marker.
|
s = table { NomSg => cn.s ! Indef Sg ; -- When an adjective is added, noun loses case marker.
|
||||||
x => cn.s ! x } ;
|
x => cn.s ! x } ;
|
||||||
mod = \\n,c => cn.mod ! n ! Abs -- If there was something before, it is now in Abs
|
mod = \\n,c => cn.mod ! n ! Abs -- If there was something before, it is now in Abs
|
||||||
++ ap.s ! AF n c ;
|
++ ap.s ! AF n c ;
|
||||||
|
|||||||
@@ -44,8 +44,8 @@ oper
|
|||||||
|
|
||||||
mkN2 : overload {
|
mkN2 : overload {
|
||||||
mkN2 : Str -> N2 ; -- Predictable N2, no preposition
|
mkN2 : Str -> N2 ; -- Predictable N2, no preposition
|
||||||
mkN2 : Str -> Preposition -> N2 ; -- Predictable N2, given preposition
|
mkN2 : Str -> Case -> N2 ; -- Predictable N2, given preposition
|
||||||
mkN2 : N -> Preposition -> N2 -- N2 out of noun and preposition
|
mkN2 : N -> Case -> N2 -- N2 out of noun and preposition
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkPN : overload {
|
mkPN : overload {
|
||||||
@@ -165,9 +165,9 @@ oper
|
|||||||
= \n -> n ** {shortPoss = True} ;
|
= \n -> n ** {shortPoss = True} ;
|
||||||
|
|
||||||
mkN2 = overload {
|
mkN2 = overload {
|
||||||
mkN2 : Str -> N2 = \s -> lin N2 (mkN1 s ** {c2 = noPrep}) ;
|
mkN2 : Str -> N2 = \s -> lin N2 (mkN1 s ** {c2 = Gen}) ;
|
||||||
mkN2 : Str -> Preposition -> N2 = \s,p -> lin N2 (mkN1 s ** {c2 = p}) ;
|
mkN2 : Str -> Case -> N2 = \s,p -> lin N2 (mkN1 s ** {c2 = p}) ;
|
||||||
mkN2 : N -> Preposition -> N2 = \n,p -> lin N2 (n ** {c2=p})
|
mkN2 : N -> Case -> N2 = \n,p -> lin N2 (n ** {c2=p})
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkPN = overload {
|
mkPN = overload {
|
||||||
|
|||||||
@@ -60,10 +60,10 @@ oper
|
|||||||
-- Nouns
|
-- Nouns
|
||||||
|
|
||||||
param
|
param
|
||||||
Case = Nom | Abs ;
|
Case = Nom | Abs | Gen ; -- | Voc exists for some words
|
||||||
Gender = Masc | Fem ;
|
Gender = Masc | Fem ;
|
||||||
Vowel = vA | vE | vI | vO | vU | NA ; -- For vowel assimilation
|
Vowel = vA | vE | vI | vO | vU | NA ; -- For vowel assimilation
|
||||||
GenNum = SgMasc | SgFem | InvarPl ; -- For Quant
|
GenNum = SgMasc | SgFem | PlInv ; -- For Quant
|
||||||
|
|
||||||
Inclusion = Excl | Incl ;
|
Inclusion = Excl | Incl ;
|
||||||
Agreement =
|
Agreement =
|
||||||
@@ -80,9 +80,9 @@ param
|
|||||||
NForm =
|
NForm =
|
||||||
Indef Number
|
Indef Number
|
||||||
| Def Number Vowel -- Stems for definite and determinative suffixes
|
| Def Number Vowel -- Stems for definite and determinative suffixes
|
||||||
| Numerative -- When modified by a number (only distinct for some feminine nouns)
|
-- Special forms only for fem. nouns ending in consonant.
|
||||||
| IndefNom ; -- Special form, only fem. nouns ending in consonant
|
| Numerative -- When modified by a number: either pl gen or sg abs
|
||||||
|
| NomSg | GenSg | GenPl ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
getAgr : NForm -> Gender -> Agreement = \n,g ->
|
getAgr : NForm -> Gender -> Agreement = \n,g ->
|
||||||
@@ -133,20 +133,40 @@ oper
|
|||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Verbs
|
-- Verbs
|
||||||
|
|
||||||
|
-- Sayeed p. 84-85
|
||||||
|
-- Tense: Past/Present/Future
|
||||||
|
-- Aspect: Simple/Progressive/Habitual
|
||||||
|
-- Mood: Declarative/Imperative/Conditional/Optative/Potential
|
||||||
|
-- Negation: Positive/Negative
|
||||||
|
-- Sentence subordination: Main/Subordinate
|
||||||
|
-- Not every possible combination of these categories occurs, as we shall see: for example, tense and aspect are only marked in declarative sentences; there is no negation in potential sentences, etc. We can group the possible combinations into the twelve verbal paradigms below, details of which are given in the next three sections for suffix verbs, prefix verbs and yahay 'be':
|
||||||
|
-- 1. Imperative
|
||||||
|
-- 2. Infinitive
|
||||||
|
-- 3. Past simple
|
||||||
|
-- 4. Past progressive
|
||||||
|
-- 5. Past habitual
|
||||||
|
-- 6. Present habitual
|
||||||
|
-- 7. Present progressive
|
||||||
|
-- 8. Future
|
||||||
|
-- 9. Conditional
|
||||||
|
-- 10. Optative
|
||||||
|
-- 11. Potential
|
||||||
|
-- 12. Subordinate clause forms -- same as negative present. But they carry subject markers when made into SC.
|
||||||
|
|
||||||
param
|
param
|
||||||
|
|
||||||
|
Aspect = Simple | Progressive ;
|
||||||
|
|
||||||
VForm =
|
VForm =
|
||||||
VInf
|
VInf
|
||||||
| VPres Agreement Polarity
|
| VPres Aspect Agreement Polarity
|
||||||
| VNegPast
|
| VNegPast Aspect
|
||||||
| VPast Agreement
|
| VPast Aspect Agreement
|
||||||
| VRel -- "som är/har/…" TODO is this used in other verbs?
|
| VRel -- "som är/har/…" TODO is this used in other verbs?
|
||||||
| VImp Number Polarity ; -- TODO negation
|
| VImp Number Polarity ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
if_then_Pol : Polarity -> Str -> Str -> Str = \p,t,f ->
|
if_then_Pol : Polarity -> Str -> Str -> Str = \p,t,f ->
|
||||||
case p of {Pos => t ; Neg => f } ;
|
case p of {Pos => t ; Neg => f } ;
|
||||||
|
|
||||||
-- TODO:
|
|
||||||
-- tre aspekter (enkel, progressiv, habituell),
|
|
||||||
-- fem modus (indikativ, imperativ, konjunktiv, kontiditonalis, optativ)
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,12 @@ lin
|
|||||||
-- : Cl -> RCl ; -- such that John loves her
|
-- : Cl -> RCl ; -- such that John loves her
|
||||||
RelCl cl = { } ;
|
RelCl cl = { } ;
|
||||||
|
|
||||||
|
-- Sayeed p. 95-96 + ch 8
|
||||||
|
Reduced present general in relative clauses; as absolutive
|
||||||
|
1/2SG/3SG M/2PL/3PL sugá -- same as imperative (TODO check if for all conjugations)
|
||||||
|
3 SG F sugtá -- doesn't exist
|
||||||
|
1PL sugná -- doesn't exist
|
||||||
|
|
||||||
-- : RP -> VP -> RCl ;
|
-- : RP -> VP -> RCl ;
|
||||||
RelVP rp vp = ;
|
RelVP rp vp = ;
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ resource ResSom = ParamSom ** open Prelude, Predef, ParamSom in {
|
|||||||
oper
|
oper
|
||||||
|
|
||||||
Noun : Type = {s : NForm => Str ; g : Gender ; shortPoss : Bool} ;
|
Noun : Type = {s : NForm => Str ; g : Gender ; shortPoss : Bool} ;
|
||||||
Noun2 : Type = Noun ** {c2 : Preposition} ;
|
Noun2 : Type = Noun ** {c2 : Case} ;
|
||||||
Noun3 : Type = Noun2 ** {c3 : Preposition} ;
|
Noun3 : Type = Noun2 ** {c3 : Case} ;
|
||||||
|
|
||||||
CNoun : Type = Noun ** {mod : Number => Case => Str ; hasMod : Bool} ;
|
CNoun : Type = Noun ** {mod : Number => Case => Str ; hasMod : Bool} ;
|
||||||
|
|
||||||
@@ -18,9 +18,11 @@ oper
|
|||||||
let bisadi = case gender of
|
let bisadi = case gender of
|
||||||
{ Fem => case wiil of { _ + #c => wiil+"i" ; _ => wiil} ;
|
{ Fem => case wiil of { _ + #c => wiil+"i" ; _ => wiil} ;
|
||||||
Masc => wiil } ;
|
Masc => wiil } ;
|
||||||
bisadood = case gender of
|
genforms : {p1, p2 : Str} = case gender of
|
||||||
{ Fem => case wiilal of { _ + "o" => wiilal+"od" ; _ => wiil} ;
|
{ Fem => case wiilal of {_ + "o" => <wiil+"eed", wiilal+"od"> ; _ => <wiil, wiilal>} ;
|
||||||
Masc => wiil } ;
|
Masc => <wiil,wiilal> } ;
|
||||||
|
shimbireed = genforms.p1 ;
|
||||||
|
bisadood = genforms.p2 ;
|
||||||
defStems : Str -> Vowel => Str = \s -> case s of {
|
defStems : Str -> Vowel => Str = \s -> case s of {
|
||||||
ilk + "aha" =>
|
ilk + "aha" =>
|
||||||
table { vE => ilk+"eh" ;
|
table { vE => ilk+"eh" ;
|
||||||
@@ -35,10 +37,14 @@ oper
|
|||||||
in { s = table {
|
in { s = table {
|
||||||
Indef Sg => wiil ;
|
Indef Sg => wiil ;
|
||||||
Indef Pl => wiilal ;
|
Indef Pl => wiilal ;
|
||||||
IndefNom => bisadi ;
|
|
||||||
Numerative => bisadood ;
|
|
||||||
Def Sg vow => defStems wiilka ! vow ;
|
Def Sg vow => defStems wiilka ! vow ;
|
||||||
Def Pl vow => defStems wiilasha ! vow } ;
|
Def Pl vow => defStems wiilasha ! vow ;
|
||||||
|
-- Special forms for fem. nouns ending in consonant
|
||||||
|
NomSg => bisadi ;
|
||||||
|
GenSg => shimbireed ;
|
||||||
|
GenPl => bisadood ;
|
||||||
|
Numerative => case bisadood of {_+"ood" => bisadood ; _ => wiil}
|
||||||
|
} ;
|
||||||
g = gender ;
|
g = gender ;
|
||||||
shortPoss = False} ;
|
shortPoss = False} ;
|
||||||
|
|
||||||
@@ -119,7 +125,7 @@ oper
|
|||||||
BaseNP : Type = {
|
BaseNP : Type = {
|
||||||
a : Agreement ;
|
a : Agreement ;
|
||||||
isPron : Bool ;
|
isPron : Bool ;
|
||||||
sp : Str } ;
|
} ;
|
||||||
|
|
||||||
NounPhrase : Type = BaseNP ** {s : Case => Str} ;
|
NounPhrase : Type = BaseNP ** {s : Case => Str} ;
|
||||||
|
|
||||||
@@ -161,7 +167,8 @@ oper
|
|||||||
Determiner : Type = BaseQuant ** {
|
Determiner : Type = BaseQuant ** {
|
||||||
pref : Str ; -- Numerals ?
|
pref : Str ; -- Numerals ?
|
||||||
sp : Gender => Case => Str ;
|
sp : Gender => Case => Str ;
|
||||||
d : NForm -- a combination of number, state and vowel
|
d : NForm ; -- combination of number, state and vowel
|
||||||
|
isNum : Bool ; -- whether to choose Numerative as the value of NForm
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
Quant : Type = BaseQuant ** {
|
Quant : Type = BaseQuant ** {
|
||||||
@@ -189,9 +196,9 @@ oper
|
|||||||
in baseQuant ** {
|
in baseQuant ** {
|
||||||
s = \\c =>
|
s = \\c =>
|
||||||
let nom = case v of {NA => "u" ; _ => s + "i"}
|
let nom = case v of {NA => "u" ; _ => s + "i"}
|
||||||
in case c of {Abs => bind s ; Nom => bind nom} ;
|
in case c of {Nom => bind nom ; _ => bind s} ;
|
||||||
sp = \\gn,c =>
|
sp = \\gn,c =>
|
||||||
let i = case c of {Nom => "i"; Abs => []}
|
let i = case c of {Nom => "i"; _ => []}
|
||||||
in gnTable (spm + i) (spf + i) (spp + i) ! gn ;
|
in gnTable (spm + i) (spf + i) (spp + i) ! gn ;
|
||||||
st = Definite ;
|
st = Definite ;
|
||||||
v = v ;
|
v = v ;
|
||||||
@@ -294,10 +301,10 @@ oper
|
|||||||
|
|
||||||
mkAdj : (str,pl : Str) -> Adjective = \sg,pl -> {
|
mkAdj : (str,pl : Str) -> Adjective = \sg,pl -> {
|
||||||
s = table {
|
s = table {
|
||||||
AF Sg Abs => sg ;
|
|
||||||
AF Pl Abs => pl ;
|
|
||||||
AF Sg Nom => sg + "i" ;
|
AF Sg Nom => sg + "i" ;
|
||||||
AF Pl Nom => pl + "i" }
|
AF Pl Nom => pl + "i" ;
|
||||||
|
AF Sg _ => sg ;
|
||||||
|
AF Pl _ => pl }
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
duplicate : Str -> Str = \sg -> case sg of {
|
duplicate : Str -> Str = \sg -> case sg of {
|
||||||
@@ -327,6 +334,7 @@ oper
|
|||||||
Verb2 : Type = Verb ** {c2 : Preposition} ;
|
Verb2 : Type = Verb ** {c2 : Preposition} ;
|
||||||
Verb3 : Type = Verb2 ** {c3 : Preposition} ;
|
Verb3 : Type = Verb2 ** {c3 : Preposition} ;
|
||||||
|
|
||||||
|
|
||||||
-- Saeed page 79:
|
-- Saeed page 79:
|
||||||
-- "… the reference form is the imperative singular form
|
-- "… the reference form is the imperative singular form
|
||||||
-- since it corresponds to the form of the basic root."
|
-- since it corresponds to the form of the basic root."
|
||||||
@@ -346,6 +354,14 @@ oper
|
|||||||
"n" => arki ; -- if infinitive ends in n, no change;
|
"n" => arki ; -- if infinitive ends in n, no change;
|
||||||
_ => arki + "n" } ; -- otherwise add n.
|
_ => arki + "n" } ; -- otherwise add n.
|
||||||
|
|
||||||
|
|
||||||
|
progr : Str = case qaat of { -- Progressive
|
||||||
|
_ + "eey" => stems.p2 + "nay" ; -- bireey -> bireynay
|
||||||
|
_ + ("y"|"n") => init qaat + "nay" ; -- akhriy -> akhrinay ; gashad -> gashanay
|
||||||
|
_ + #v + "t" => qaat + "ay" ;
|
||||||
|
_ + #c + "t" => init qaat + "anay" ;
|
||||||
|
_ => qaat + "ay" } ;
|
||||||
|
|
||||||
-- Some predictable sound changes
|
-- Some predictable sound changes
|
||||||
t : Str = case arag of { -- kari+seen, bixi noq+deen, (sug|joogsa|qaada)+teen,
|
t : Str = case arag of { -- kari+seen, bixi noq+deen, (sug|joogsa|qaada)+teen,
|
||||||
_ + ("i"|"y") => "s" ; -- t changes into s in front of i/y
|
_ + ("i"|"y") => "s" ; -- t changes into s in front of i/y
|
||||||
@@ -360,32 +376,50 @@ oper
|
|||||||
an : Str = case qaado of {
|
an : Str = case qaado of {
|
||||||
_ + "o" => "an" ; -- Allomorph for imperatives
|
_ + "o" => "an" ; -- Allomorph for imperatives
|
||||||
_ => "in" } ;
|
_ => "in" } ;
|
||||||
|
|
||||||
in { s = table {
|
in { s = table {
|
||||||
VPres (Sg1|Sg3 Masc|Impers) pol
|
VPres Simple (Sg1|Sg3 Masc|Impers) pol
|
||||||
=> qaat + if_then_Pol pol "aa" "o" ;
|
=> qaat + if_then_Pol pol "aa" "o" ;
|
||||||
VPres (Sg2|Sg3 Fem) pol
|
VPres Simple (Sg2|Sg3 Fem) pol
|
||||||
=> arag + t + if_then_Pol pol "aa" "o" ;
|
=> arag + t + if_then_Pol pol "aa" "o" ;
|
||||||
VPres (Pl1 _) pol
|
VPres Simple (Pl1 _) pol => arag + n + if_then_Pol pol "aa" "o" ;
|
||||||
=> arag + n + if_then_Pol pol "aa" "o" ;
|
VPres Simple Pl2 pol => arag + t + "aan" ;
|
||||||
VPres Pl2 pol => arag + t + "aan" ;
|
VPres Simple Pl3 pol => qaat + "aan" ;
|
||||||
VPres Pl3 pol => qaat + "aan" ;
|
|
||||||
|
|
||||||
VPast (Sg1|Sg3 Masc|Impers)
|
VPres Progressive (Sg1|Sg3 Masc|Impers) pol
|
||||||
|
=> progr + if_then_Pol pol "aa" "o" ;
|
||||||
|
VPres Progressive (Sg2|Sg3 Fem) pol
|
||||||
|
=> progr + if_then_Pol pol "saa" "so" ;
|
||||||
|
VPres Progressive (Pl1 _) pol
|
||||||
|
=> progr + if_then_Pol pol "naa" "no" ;
|
||||||
|
VPres Progressive Pl2 pol => progr + "saan" ;
|
||||||
|
VPres Progressive Pl3 pol => progr + "aan" ;
|
||||||
|
|
||||||
|
VPast Simple (Sg1|Sg3 Masc|Impers)
|
||||||
=> qaat + ay ;
|
=> qaat + ay ;
|
||||||
VPast (Sg2|Sg3 Fem)
|
VPast Simple (Sg2|Sg3 Fem) => arag + t + ay ; -- t, d or s
|
||||||
=> arag + t + ay ; -- t, d or s
|
VPast Simple (Pl1 _) => arag + n + ay ;
|
||||||
VPast (Pl1 _) => arag + n + ay ;
|
VPast Simple Pl2 => arag + t + "een" ; -- t, d or s
|
||||||
VPast Pl2 => arag + t + "een" ; -- t, d or s
|
VPast Simple Pl3 => qaat + "een" ;
|
||||||
VPast Pl3 => qaat + "een" ;
|
|
||||||
|
|
||||||
VImp Sg Pos => qaado ;
|
VPast Progressive (Sg1|Sg3 Masc|Impers)
|
||||||
|
=> progr + "ey" ;
|
||||||
|
VPast Progressive (Sg2|Sg3 Fem) => progr + "sey" ;
|
||||||
|
VPast Progressive (Pl1 _) => progr + "ney" ;
|
||||||
|
VPast Progressive Pl2 => progr + "seen" ;
|
||||||
|
VPast Progressive Pl3 => progr + "een" ;
|
||||||
|
|
||||||
|
VNegPast Simple => arkin ;
|
||||||
|
VNegPast Progressive => progr + "n" ;
|
||||||
|
|
||||||
|
|
||||||
|
VImp Sg Pos => arag ;
|
||||||
VImp Pl Pos => qaat + "a" ;
|
VImp Pl Pos => qaat + "a" ;
|
||||||
VImp Sg Neg => arag + an ;
|
VImp Sg Neg => arag + an ;
|
||||||
VImp Pl Neg => qaat + "ina" ;
|
VImp Pl Neg => qaat + "ina" ;
|
||||||
|
|
||||||
VInf => arki ;
|
VInf => arki ;
|
||||||
VRel => arki ; -- TODO does this exist?
|
VRel => arki } ; -- TODO does this exist?
|
||||||
VNegPast => arkin }
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-------------------------
|
-------------------------
|
||||||
@@ -393,18 +427,26 @@ oper
|
|||||||
|
|
||||||
cSug, cKari, cYaree, cJoogso, cQaado : Str -> Verb ;
|
cSug, cKari, cYaree, cJoogso, cQaado : Str -> Verb ;
|
||||||
|
|
||||||
|
-- 1: Root verbs with no lexical affixes, e.g. sug TR 'wait for', kar INTR 'boil, cook';
|
||||||
cSug sug =
|
cSug sug =
|
||||||
let cabb : Str = case sug of {
|
let cabb : Str = case sug of {
|
||||||
_ + "b" => sug + "b" ; -- TODO: more duplication patterns
|
_ + "b" => sug + "b" ; -- TODO: more duplication patterns
|
||||||
_ => sug }
|
_ => sug }
|
||||||
in mkVerb sug cabb sug ;
|
in mkVerb sug cabb sug ;
|
||||||
|
|
||||||
|
-- 2A: Verbs derived from root verbs by the causative affix -i/-is, e.g. kari TR 'cook' (from conjugation 1 kar INTR 'boil, cook');
|
||||||
|
-- 2B: Verbs derived from nouns and adjectives by the causative/factitive affix -eel-ayn, e.g. yaree 'make small' (from yar ADJ 'small');
|
||||||
cKari, cYaree = \kari -> mkVerb kari (kari+"y") kari ;
|
cKari, cYaree = \kari -> mkVerb kari (kari+"y") kari ;
|
||||||
|
|
||||||
|
-- 3A: Verbs derived from verbal stems by the middle voice affix -ol/at
|
||||||
|
-- e.g. karsó 'cook for oneself (from conjugation 2 kâri TR 'cook');
|
||||||
cJoogso joogso =
|
cJoogso joogso =
|
||||||
let joogsa = init joogso + "a" ;
|
let joogsa = init joogso + "a" ;
|
||||||
in mkVerb joogso (joogsa + "d") joogsa ;
|
in mkVerb joogso (joogsa + "d") joogsa ;
|
||||||
|
|
||||||
|
-- 3B: As conjugation 3A but verbs whose syllable structure triggers
|
||||||
|
-- stem contraction and subsequent sandhi rules, e.g. qaadó 'take for oneself
|
||||||
|
-- (from conjugation 1 qàad TR 'take').
|
||||||
cQaado qaado =
|
cQaado qaado =
|
||||||
let qaa = init (init qaado)
|
let qaa = init (init qaado)
|
||||||
in mkVerb qaado -- Imperative sg, with the vowel
|
in mkVerb qaado -- Imperative sg, with the vowel
|
||||||
@@ -421,24 +463,24 @@ oper
|
|||||||
|
|
||||||
copula : Verb = {
|
copula : Verb = {
|
||||||
s = table {
|
s = table {
|
||||||
VPres Sg1 pol => if_then_Pol pol "ahay" "ihi" ;
|
VPres _ Sg1 pol => if_then_Pol pol "ahay" "ihi" ;
|
||||||
VPres Sg2 pol => if_then_Pol pol "tahay" "ihid" ;
|
VPres _ Sg2 pol => if_then_Pol pol "tahay" "ihid" ;
|
||||||
VPres (Sg3 Masc|Impers) pol => if_then_Pol pol "yahay" "aha" ;
|
VPres _ (Sg3 Masc|Impers) pol => if_then_Pol pol "yahay" "aha" ;
|
||||||
VPres (Sg3 Fem) pol => if_then_Pol pol "tahay" "aha" ;
|
VPres _ (Sg3 Fem) pol => if_then_Pol pol "tahay" "aha" ;
|
||||||
VPres (Pl1 _) pol => if_then_Pol pol "nahay" "ihin" ;
|
VPres _ (Pl1 _) pol => if_then_Pol pol "nahay" "ihin" ;
|
||||||
VPres Pl2 pol => if_then_Pol pol "tihiin" "ihidin" ;
|
VPres _ Pl2 pol => if_then_Pol pol "tihiin" "ihidin" ;
|
||||||
VPres Pl3 pol => if_then_Pol pol "yihiin" "aha" ;
|
VPres _ Pl3 pol => if_then_Pol pol "yihiin" "aha" ;
|
||||||
VImp Sg pol => if_then_Pol pol "ahaw" "ahaanin" ;
|
VImp Sg pol => if_then_Pol pol "ahaw" "ahaanin" ;
|
||||||
VImp Pl pol => if_then_Pol pol "ahaada" "ahaanina" ;
|
VImp Pl pol => if_then_Pol pol "ahaada" "ahaanina" ;
|
||||||
|
|
||||||
VPast (Sg1|Sg3 Masc|Impers)
|
VPast _ (Sg1|Sg3 Masc|Impers)
|
||||||
=> "ahaa" ;
|
=> "ahaa" ;
|
||||||
VPast (Sg2|Sg3 Fem)
|
VPast _ (Sg2|Sg3 Fem)
|
||||||
=> "ahayd" ;
|
=> "ahayd" ;
|
||||||
VPast (Pl1 _) => "ahayn" ;
|
VPast _ (Pl1 _) => "ahayn" ;
|
||||||
VPast Pl2 => "ahaydeen" ;
|
VPast _ Pl2 => "ahaydeen" ;
|
||||||
VPast Pl3 => "ahaayeen" ;
|
VPast _ Pl3 => "ahaayeen" ;
|
||||||
VNegPast => "ahi" ;
|
VNegPast _ => "ahi" ;
|
||||||
VRel => "ah" ;
|
VRel => "ah" ;
|
||||||
VInf => "ahaan" }
|
VInf => "ahaan" }
|
||||||
} ;
|
} ;
|
||||||
@@ -449,15 +491,15 @@ oper
|
|||||||
have_V : Verb =
|
have_V : Verb =
|
||||||
let hold_V = mkVerb "hayso" "haysat" "haysa" in {
|
let hold_V = mkVerb "hayso" "haysat" "haysa" in {
|
||||||
s = table {
|
s = table {
|
||||||
VPres Sg1 Pos => "leeyahay" ;
|
VPres _ Sg1 Pos => "leeyahay" ;
|
||||||
VPres Sg2 Pos => "leedahay" ;
|
VPres _ Sg2 Pos => "leedahay" ;
|
||||||
VPres (Sg3 Fem) Pos => "leedahay" ;
|
VPres _ (Sg3 Fem) Pos => "leedahay" ;
|
||||||
VPres (Sg3 Masc|Impers) Pos
|
VPres _ (Sg3 Masc|Impers) Pos
|
||||||
=> "leeyahay" ;
|
=> "leeyahay" ;
|
||||||
VPres (Pl1 _) Pos => "leenahay" ;
|
VPres _ (Pl1 _) Pos => "leenahay" ;
|
||||||
VPres Pl2 Pos => "leedihiin" ;
|
VPres _ Pl2 Pos => "leedihiin" ;
|
||||||
VPres Pl3 Pos => "leeyihiin" ;
|
VPres _ Pl3 Pos => "leeyihiin" ;
|
||||||
VPast x => "l" + copula.s ! VPast x ;
|
VPast asp agr => "l" + copula.s ! VPast asp agr ;
|
||||||
VRel => "leh" ;
|
VRel => "leh" ;
|
||||||
x => hold_V.s ! x }
|
x => hold_V.s ! x }
|
||||||
} ;
|
} ;
|
||||||
@@ -508,24 +550,27 @@ oper
|
|||||||
ClSlash,
|
ClSlash,
|
||||||
Sentence : Type = SS ; ---- TODO
|
Sentence : Type = SS ; ---- TODO
|
||||||
|
|
||||||
doonaa : Str -> Verb = \inf ->
|
|
||||||
let doon : Verb = cSug "doon" in {s = \\vf => inf ++ doon.s ! vf} ;
|
|
||||||
|
|
||||||
vf : Tense -> Anteriority -> Polarity -> Agreement -> Verb
|
vf : Tense -> Anteriority -> Polarity -> Agreement -> Verb
|
||||||
-> {fin : Str ; inf : Str} = \t,ant,p,agr,vp ->
|
-> {fin : Str ; inf : Str} = \t,ant,p,agr,vp ->
|
||||||
let pastV : Verb -> Str = \v ->
|
case <t,ant> of {
|
||||||
case p of { Neg => v.s ! VNegPast ;
|
|
||||||
Pos => v.s ! VPast agr } ;
|
|
||||||
presV : Verb -> Str = \v -> v.s ! VPres agr p ;
|
|
||||||
in case <t,ant> of {
|
|
||||||
<Pres,Simul> => {fin = presV vp ; inf = [] } ;
|
<Pres,Simul> => {fin = presV vp ; inf = [] } ;
|
||||||
<Pres,Anter> => {fin = presV copula ; inf = vp.s ! VInf } ; ---- just guessing
|
<Pres,Anter> => {fin = presV copula ; inf = vp.s ! VInf } ; ---- just guessing
|
||||||
<Past,Simul> => {fin = pastV vp ; inf = [] } ;
|
<Past,Simul> => {fin = pastV vp ; inf = [] } ;
|
||||||
<Past,Anter> => {fin = pastV copula ; inf = vp.s ! VInf } ; ---- TODO: habitual aspect
|
<Past,Anter> => {fin = pastV (aux "jir" vp) ; inf = []} ;
|
||||||
<Fut,Simul> => {fin = presV (doonaa (vp.s ! VInf)) ; inf = []} ;
|
<Fut,Simul> => {fin = presV (aux "doon" vp) ; inf = []} ;
|
||||||
<Fut,Anter> => {fin = pastV (doonaa (vp.s ! VInf)) ; inf = []} ;
|
<Fut,Anter> => {fin = pastV (aux "doon" vp) ; inf = []} ;
|
||||||
<_,Simul> => {fin = presV vp ; inf = []} ; -- TODO conditional
|
<_,Simul> => {fin = presV vp ; inf = []} ; -- TODO conditional
|
||||||
<_,Anter> => {fin = pastV vp ; inf = []} -- TODO conditional
|
<_,Anter> => {fin = pastV vp ; inf = []} -- TODO conditional
|
||||||
|
}
|
||||||
|
where {
|
||||||
|
pastV : Verb -> Str = \v ->
|
||||||
|
case p of { Neg => v.s ! VNegPast Simple ;
|
||||||
|
Pos => v.s ! VPast Simple agr } ;
|
||||||
|
|
||||||
|
presV : Verb -> Str = \v -> v.s ! VPres Simple agr p ;
|
||||||
|
|
||||||
|
aux : Str -> Verb -> Verb = \jir,v ->
|
||||||
|
let jir : Verb = cSug jir in {s = \\vf => v.s ! VInf ++ jir.s ! vf}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
stmarker : Agreement => Polarity => Str = \\a,b =>
|
stmarker : Agreement => Polarity => Str = \\a,b =>
|
||||||
@@ -547,5 +592,5 @@ oper
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
linVP : VerbPhrase -> Str = \vp -> vp.s ! VInf ; ----
|
linVP : VerbPhrase -> Str = \vp -> vp.s ! VInf ; ----
|
||||||
linCN : CNoun -> Str = \cn -> cn.s ! IndefNom ;
|
linCN : CNoun -> Str = \cn -> cn.s ! NomSg ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,39 +121,39 @@ lin with_Prep = prepTable ! la ;
|
|||||||
-- Pronouns are closed class, no constructor in ParadigmsSom.
|
-- Pronouns are closed class, no constructor in ParadigmsSom.
|
||||||
|
|
||||||
i_Pron = {
|
i_Pron = {
|
||||||
s = table {Nom => "aan" ; Abs => "i"} ;
|
s = table {Nom => "aan" ; Voc => "aniga" ; _Abs => "i"} ;
|
||||||
a = Sg1 ; isPron = True ; sp = "aniga" ;
|
a = Sg1 ; isPron = True ;
|
||||||
poss = {s = "ay" ; v = vA ; sp = gnTable "ayg" "ayd" "uwayg"}
|
poss = {s = "ay" ; v = vA ; sp = gnTable "ayg" "ayd" "uwayg"}
|
||||||
} ;
|
} ;
|
||||||
youPol_Pron, -- TODO check
|
youPol_Pron, -- TODO check
|
||||||
youSg_Pron = {
|
youSg_Pron = {
|
||||||
s = table {Nom => "aad" ; Abs => "ku"} ;
|
s = table {Nom => "aad" ; Voc => "adiga" ; _Abs => "ku"} ;
|
||||||
a = Sg2 ; isPron = True ; sp = "adiga" ;
|
a = Sg2 ; isPron = True ;
|
||||||
poss = {s = "aa" ; v = vA ; sp = gnTable "aag" "aad" "uwaag"}
|
poss = {s = "aa" ; v = vA ; sp = gnTable "aag" "aad" "uwaag"}
|
||||||
} ;
|
} ;
|
||||||
he_Pron = {
|
he_Pron = {
|
||||||
s = table {Nom => "uu" ; Abs => []} ;
|
s = table {Nom => "uu" ; Voc => "isaga" ; _Abs => []} ;
|
||||||
a = Sg3 Masc ; isPron = True ; sp = "isaga" ;
|
a = Sg3 Masc ; isPron = True ;
|
||||||
poss = {s = "iis" ; v = vI ; sp = gnTable "iis" "iis" "uwiis"}
|
poss = {s = "iis" ; v = vI ; sp = gnTable "iis" "iis" "uwiis"}
|
||||||
} ;
|
} ;
|
||||||
she_Pron = {
|
she_Pron = {
|
||||||
s = table {Nom => "ay" ; Abs => []} ;
|
s = table {Nom => "ay" ; Voc => "iyada" ; _Abs => []} ;
|
||||||
a = Sg3 Fem ; isPron = True ; sp = "iyada" ;
|
a = Sg3 Fem ; isPron = True ;
|
||||||
poss = {s = "eed" ; v = vE ; sp = gnTable "eed" "eed" "uweed"}
|
poss = {s = "eed" ; v = vE ; sp = gnTable "eed" "eed" "uweed"}
|
||||||
} ;
|
} ;
|
||||||
we_Pron = {
|
we_Pron = {
|
||||||
s = table {Nom => "aan" ; Abs => "na"} ;
|
s = table {Nom => "aan" ; Voc => "innaga" ; _Abs => "na"} ;
|
||||||
a = Pl1 Incl ; isPron = True ; sp = "innaga" ;
|
a = Pl1 Incl ; isPron = True ;
|
||||||
poss = {s = "een" ; v = vE ; sp = gnTable "eenn" "eenn" "uweenn"}
|
poss = {s = "een" ; v = vE ; sp = gnTable "eenn" "eenn" "uweenn"}
|
||||||
} ;
|
} ;
|
||||||
youPl_Pron = {
|
youPl_Pron = {
|
||||||
s = table {Nom => "aad" ; Abs => "idin"} ;
|
s = table {Nom => "aad" ; Voc => "idinka" ; _Abs => "idin"} ;
|
||||||
a = Pl2 ; isPron = True ; sp = "idinka" ;
|
a = Pl2 ; isPron = True ;
|
||||||
poss = {s = "iin" ; v = vI ; sp = gnTable "iinn" "iinn" "uwiinn"}
|
poss = {s = "iin" ; v = vI ; sp = gnTable "iinn" "iinn" "uwiinn"}
|
||||||
} ;
|
} ;
|
||||||
they_Pron = {
|
they_Pron = {
|
||||||
s = table {Nom => "ay" ; Abs => []} ;
|
s = table {Nom => "ay" ; Voc => "iyaga" ; _Abs => []} ;
|
||||||
a = Pl3 ; isPron = True ; sp = "iyaga" ;
|
a = Pl3 ; isPron = True ;
|
||||||
poss = {s = "ood" ; v = vO ; sp = gnTable "ood" "ood" "uwood"}
|
poss = {s = "ood" ; v = vO ; sp = gnTable "ood" "ood" "uwood"}
|
||||||
} ;
|
} ;
|
||||||
{-
|
{-
|
||||||
|
|||||||
Reference in New Issue
Block a user