1
0
forked from GitHub/gf-rgl

(Ara) Add verb paradigm for defective v1 with perf. vowel i

This commit is contained in:
Inari Listenmaa
2018-09-24 16:42:16 +02:00
parent a2551f783b
commit 53fde8d963
2 changed files with 113 additions and 65 deletions

View File

@@ -280,7 +280,7 @@ resource ParadigmsAra = open
l = dp 2 rootStr } in --last rootStr l = dp 2 rootStr } in --last rootStr
case <l, root.c> of { case <l, root.c> of {
<"ّ",_> => v1geminate rootStr vPerf vImpf ; <"ّ",_> => v1geminate rootStr vPerf vImpf ;
<"و"|"ي",_> => v1defective root vImpf ; <"و"|"ي",_> => v1defective root vPerf vImpf ;
<_,"و"|"ي"> => v1hollow root vImpf ; <_,"و"|"ي"> => v1hollow root vImpf ;
_ => v1sound root vPerf vImpf _ => v1sound root vPerf vImpf
}; };

View File

@@ -247,18 +247,30 @@ oper
} ; } ;
--macro for defective verbs: --macro for defective verbs:
verbDef: (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Vowel -> Verb = verbDef : DefForms -> Vowel -> Verb =
\rama,ramay,rumi,rumu,rumiy,armi,armu,urma,Irmi,Irmu,ppart,vowel -> \vforms,vImpf ->
let { let {
rama = vforms ! 0 ; -- VPerf Act (Per3 Masc Sg)
ramay = vforms ! 1 ; -- VPerf Act (Per3 Fem Pl)
rumi = vforms ! 2 ; -- VPerf Pas (Per3 _ Sg)
rumu = vforms ! 3 ; -- VPerf Pas (Per3 Masc Pl)
rumiy = vforms ! 4 ; -- VPerf Pas (Per3 Fem Pl)
armi = vforms ! 5 ; -- VImpf _ Act (Per1 _ _ | Per2/3 Fem _ | Per2/3 Masc Sg)
armu = vforms ! 6 ; -- VImpf _ Act (Per2/3 Masc Pl)
urma = vforms ! 7 ; -- VImpf _ Pas
Irmi = vforms ! 8 ; -- VImp Masc Sg | VImp Fem _
Irmu = vforms ! 9 ; -- VImp Masc Pl
ppart = vforms ! 10 ; -- VPPart
patPerf = patDefPerf rama ramay rumi rumu rumiy ; patPerf = patDefPerf rama ramay rumi rumu rumiy ;
patImpfAct = patDefImpfAct armi armu ; patImpfAct = patDefImpfAct armi armu ;
patImp = patDefImp Irmi Irmu patImp = patDefImp Irmi Irmu
} in } in
{ s = table { { s = table {
VPerf v pgn => patPerf ! v ! pgn + (suffixPerfDef v) ! pgn ; VPerf v pgn => patPerf ! v ! pgn + (suffixPerfDef v) ! pgn ;
VImpf m Act pgn => prefixImpf ! pgn + patImpfAct ! pgn + (suffixImpfDef Act vowel) ! m ! pgn ; VImpf m Act pgn => prefixImpf ! pgn + patImpfAct ! pgn + (suffixImpfDef Act vImpf) ! m ! pgn ;
VImpf m Pas pgn => prefixImpf ! pgn + urma + (suffixImpfDef Pas vowel) ! m ! pgn ; VImpf m Pas pgn => prefixImpf ! pgn + urma + (suffixImpfDef Pas vImpf) ! m ! pgn ;
VImp g n => patImp ! g ! n + (suffixImpfDef Act vowel) ! Jus ! (Per2 g n) ; VImp g n => patImp ! g ! n + (suffixImpfDef Act vImpf) ! Jus ! (Per2 g n) ;
VPPart => ppart VPPart => ppart
} }
} ; } ;
@@ -464,23 +476,59 @@ patGem3 : Vowel => Pattern =
i => fcil --no such verb probably exists i => fcil --no such verb probably exists
} ; } ;
v1defective : Root3 -> Vowel -> Verb = DefForms : Type = Predef.Ints 10 => Str ;
\rmy,vowel -> toDefForms : (x1,_,_,_,_,_,_,_,_,_,x11 : Str) -> DefForms =
\rama,ramay,rumi,rumu,rumiy,armi,armu,urma,eirmi,eirmu,marmiy ->
table {
0 => rama ;
1 => ramay ;
2 => rumi ;
3 => rumu ;
4 => rumiy ;
5 => armi ;
6 => armu ;
7 => urma ;
8 => eirmi ;
9 => eirmu ;
10 => marmiy
} ;
def1Forms_vPerfA : Root3 -> Vowel -> DefForms = \rmy,vImpf ->
let { let {
rama = mkDefective faca rmy ; rama = mkDefective faca rmy ;
ramay = mkStrong facalo rmy ; ramay = mkStrong facalo rmy ;
rumi = mkDefective fuci rmy ; rumi = mkDefective fuci rmy ;
rumu = mkDefective fucu rmy ; rumu = mkDefective fucu rmy ;
rumiy = mkStrong fucilo rmy ; rumiy = mkStrong fucilo rmy ;
rmi = mkDefective (patDef1 ! vowel) rmy ; rmi = mkDefective (patDef1 ! vImpf) rmy ;
armi = "َ" + rmi ; armi = "َ" + rmi ;
rmu = mkDefective (patDef2 ! vowel) rmy ; rmu = mkDefective (patDef2 ! vImpf) rmy ;
armu = "َ" + rmu ; armu = "َ" + rmu ;
urma = mkDefective ufca rmy ; urma = mkDefective ufca rmy ;
eirmi = prefixImp ! vowel + rmi; eirmi = prefixImp ! vImpf + rmi;
eirmu = prefixImp ! vowel + rmu; eirmu = prefixImp ! vImpf + rmu;
marmiy = mkStrong mafcil rmy marmiy = mkStrong mafcil rmy
} in verbDef rama ramay rumi rumu rumiy armi armu urma eirmi eirmu marmiy vowel ; } in toDefForms rama ramay rumi rumu rumiy armi armu urma eirmi eirmu marmiy ;
v1defective : Root3 -> Vowel -> Vowel -> Verb = \rmy,vPerf,vImpf ->
case vPerf of {
i => v1defective_i rmy vImpf ;
_ => v1defective_a rmy vImpf
} ;
v1defective_a : Root3 -> Vowel -> Verb = \rmy,vImpf ->
let vforms = def1Forms_vPerfA rmy vImpf
in verbDef vforms vImpf ;
v1defective_i : Root3 -> Vowel -> Verb = \bqy,vImpf -> -- IL (conjugation 1d4)
let vforms_a = def1Forms_vPerfA bqy vImpf ;
baqI = mkDefective facIl bqy ;
baqiy = mkDefective facil bqy ;
vforms_i = table { 0 => baqI ;
1 => baqiy ;
x => vforms_a ! x } ;
in verbDef vforms_i vImpf ;
patDef1 : Vowel => Pattern = patDef1 : Vowel => Pattern =
table { table {
@@ -519,7 +567,7 @@ v2defective : Root3 -> Verb = \gny ->
ugannu = "ُ" + gannu; ugannu = "ُ" + gannu;
uganna = "ُ" + ganna; uganna = "ُ" + ganna;
mugannaY = "مُ" + ganna + "ى" mugannaY = "مُ" + ganna + "ى"
} in verbDef ganna gannay gunni gunnu gunniy uganni ugannu uganna ganni gannu mugannaY i; } in verbDef (toDefForms ganna gannay gunni gunnu gunniy uganni ugannu uganna ganni gannu mugannaY) i;
v3sound : Root3 -> Verb = v3sound : Root3 -> Verb =
\tbc -> \tbc ->
@@ -561,7 +609,7 @@ v4defective : Root3 -> Verb = \cTy ->
eacTi = "أَ" + cTi; eacTi = "أَ" + cTi;
eacTu = "أَ" + cTu; eacTu = "أَ" + cTu;
mucTaY = "م" + ucTa +"ى" mucTaY = "م" + ucTa +"ى"
} in verbDef eacTa eacTay eucTi eucTu eucTiy ucTi ucTu ucTa eacTi eacTu mucTaY i; } in verbDef (toDefForms eacTa eacTay eucTi eucTu eucTiy ucTi ucTu ucTa eacTi eacTu mucTaY) i;
v5sound : Root3 -> Verb = v5sound : Root3 -> Verb =
\nfs -> \nfs ->