mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
(Ara) Cleanup in verbDefBool
This commit is contained in:
@@ -652,136 +652,110 @@ oper
|
|||||||
normalAlif : Root3 -> Bool = \r -> case r.l of {"و" => True ; _ => False} ;
|
normalAlif : Root3 -> Bool = \r -> case r.l of {"و" => True ; _ => False} ;
|
||||||
|
|
||||||
verbDefBool : Bool -> Bool -> DefForms -> Vowel -> Verb =
|
verbDefBool : Bool -> Bool -> DefForms -> Vowel -> Verb =
|
||||||
\isDoubleDef,alif,vforms,vowImpf ->
|
\isDoubleDef,normalAlif,vforms,vowImpf -> { s = table {
|
||||||
let {
|
VPerf v pgn => patPerf ! v ! pgn + suffixPerf v ! pgn ;
|
||||||
rama = vforms ! 0 ; -- VPerf Act (Per3 Masc Sg)
|
VImpf m Act pgn => prefixImpf ! pgn + patImpfAct ! pgn + suffixImpf Act ! m ! pgn ;
|
||||||
ramay = vforms ! 1 ; -- VPerf Act (Per3 Fem Pl)
|
VImpf m Pas pgn => prefixImpf ! pgn + urma + suffixImpf Pas ! m ! pgn ;
|
||||||
rumi = vforms ! 2 ; -- VPerf Pas (Per3 _ Sg)
|
VImp g n => patImp ! g ! n + suffixImpf Act ! Jus ! Per2 g n ;
|
||||||
rumu = vforms ! 3 ; -- VPerf Pas (Per3 Masc Pl)
|
VPPart => ppart ;
|
||||||
rumiy = vforms ! 4 ; -- VPerf Pas (Per3 Fem Pl)
|
Masdar => masdar }
|
||||||
armi = vforms ! 5 ; -- VImpf _ Act (Per1 _ _ | Per3 Fem _ | Per2/3 Masc Sg)
|
} where {
|
||||||
armu = vforms ! 6 ; -- VImpf _ Act (Per2/3 Masc Pl)
|
rama = vforms ! 0 ; -- VPerf Act (Per3 Masc Sg)
|
||||||
ad3i = vforms ! 7 ; -- VImpf _ Act (Per2 Fem)
|
ramay = vforms ! 1 ; -- VPerf Act (Per3 Fem Pl)
|
||||||
urma = vforms ! 8 ; -- VImpf _ Pas
|
rumi = vforms ! 2 ; -- VPerf Pas (Per3 _ Sg)
|
||||||
Irmi = vforms ! 9 ; -- VImp Masc Sg | VImp Fem _
|
rumu = vforms ! 3 ; -- VPerf Pas (Per3 Masc Pl)
|
||||||
Irmu = vforms ! 10 ; -- VImp Masc Pl
|
rumiy = vforms ! 4 ; -- VPerf Pas (Per3 Fem Pl)
|
||||||
ppart = vforms ! 11 ; -- VPPart
|
armi = vforms ! 5 ; -- VImpf _ Act (Per1 _ _ | Per3 Fem _ | Per2/3 Masc Sg)
|
||||||
masdar = vforms ! 12 ; -- verbal noun
|
armu = vforms ! 6 ; -- VImpf _ Act (Per2/3 Masc Pl)
|
||||||
|
ad3i = vforms ! 7 ; -- VImpf _ Act (Per2 Fem)
|
||||||
|
urma = vforms ! 8 ; -- VImpf _ Pas
|
||||||
|
Irmi = vforms ! 9 ; -- VImp Masc Sg | VImp Fem _
|
||||||
|
Irmu = vforms ! 10 ; -- VImp Masc Pl
|
||||||
|
ppart = vforms ! 11 ; -- VPPart
|
||||||
|
masdar = vforms ! 12 ; -- verbal noun
|
||||||
|
|
||||||
patPerf = patDefPerf rama ramay rumi rumu rumiy ;
|
patPerf : Voice => PerGenNum => Str = table {
|
||||||
patImpfAct = patDefImpfAct armi armu ad3i ;
|
Act => table {
|
||||||
patImp = patDefImp Irmi Irmu ;
|
Per3 Fem Pl => ramay ;
|
||||||
suffixImpf = case isDoubleDef of {True => suffixImpfDoubleDef ; _ => suffixImpfDef}
|
Per3 _ _ => rama ;
|
||||||
} in
|
_ => ramay } ;
|
||||||
{ s = table {
|
Pas => table {
|
||||||
VPerf v pgn => patPerf ! v ! pgn + suffixPerfDef v alif ! pgn ;
|
Per3 Masc Pl => rumu ;
|
||||||
VImpf m Act pgn => prefixImpf ! pgn + patImpfAct ! pgn + suffixImpf Act vowImpf ! m ! pgn ;
|
Per3 Fem Pl => rumiy ;
|
||||||
VImpf m Pas pgn => prefixImpf ! pgn + urma + suffixImpf Pas vowImpf ! m ! pgn ;
|
Per3 _ _ => rumi ;
|
||||||
VImp g n => patImp ! g ! n + suffixImpf Act vowImpf ! Jus ! Per2 g n ;
|
_ => rumiy }
|
||||||
VPPart => ppart ;
|
|
||||||
Masdar => masdar
|
|
||||||
}
|
|
||||||
} ;
|
|
||||||
|
|
||||||
patDefPerf : (_,_,_,_,_ :Str) -> Voice => PerGenNum => Str = \rama,ramay,rumi,rumu,rumy ->
|
|
||||||
table {
|
|
||||||
Act =>
|
|
||||||
table {
|
|
||||||
Per3 Fem Pl => ramay ;
|
|
||||||
Per3 _ _ => rama ;
|
|
||||||
_ => ramay
|
|
||||||
} ;
|
|
||||||
Pas =>
|
|
||||||
table {
|
|
||||||
Per3 Masc Pl => rumu ;
|
|
||||||
Per3 Fem Pl => rumy ;
|
|
||||||
Per3 _ _ => rumi ;
|
|
||||||
_ => rumy
|
|
||||||
}
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--now includes the vowel=u case, eg "دعو" /IL 2019-01-18
|
patImpfAct : PerGenNum => Str = table {
|
||||||
patDefImpfAct : (x1,_,x3 : Str) -> PerGenNum => Str = \rmi,rmu,d3i ->
|
Per3 Masc Pl => armu ;
|
||||||
table {
|
Per2 Masc Pl => armu ;
|
||||||
Per3 Masc Pl => rmu ;
|
Per2 Fem Sg => ad3i ; -- for 1d3: d3i different, rmi = rmu
|
||||||
Per2 Masc Pl => rmu ;
|
_ => armi -- for others: rmu different, rmi = d3i
|
||||||
Per2 Fem Sg => d3i ; -- for 1d3: d3i different, rmi = rmu
|
|
||||||
_ => rmi -- for others: rmu different, rmi = d3i
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
patImp : Gender => Number => Str = \\g,n =>
|
||||||
|
case <g,n> of { <Masc,Pl> => Irmu ; _ => Irmi } ;
|
||||||
|
|
||||||
patDefImp : (_,_ : Str) -> Gender => Number => Str = \rmi, rmu ->
|
suffixPerf : Voice -> PerGenNum => Str = \vc ->
|
||||||
table {
|
let p3ms = case vc of {
|
||||||
Masc => table {Pl => rmu ; _ => rmi} ;
|
|
||||||
_ => table {_ => rmi}
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
suffixPerfDef : Voice -> Bool -> PerGenNum => Str = \v,normalAlif ->
|
|
||||||
let p3ms = case v of {
|
|
||||||
Act => if_then_Str normalAlif "ا" "ى" ;
|
Act => if_then_Str normalAlif "ا" "ى" ;
|
||||||
Pas => "يَ" } ;
|
Pas => "يَ" } ;
|
||||||
ya = case v of {
|
ya = case vc of {
|
||||||
Act => "" ;
|
Act => "" ;
|
||||||
Pas => "يَ" }
|
Pas => "يَ" }
|
||||||
in
|
in table {
|
||||||
table {
|
Per3 Masc Sg => p3ms ;
|
||||||
Per3 Masc Sg => p3ms ;
|
Per3 Masc Dl => "يَا" ;
|
||||||
Per3 Masc Dl => "يَا" ;
|
Per3 Masc Pl => "وْا" ;
|
||||||
Per3 Masc Pl => "وْا" ;
|
Per3 Fem Sg => ya + "تْ" ;
|
||||||
Per3 Fem Sg => ya + "تْ" ;
|
Per3 Fem Dl => ya + "تَا" ;
|
||||||
Per3 Fem Dl => ya + "تَا" ;
|
Per3 Fem Pl => "نَ" ;
|
||||||
Per3 Fem Pl => "نَ" ;
|
Per2 Masc Sg => "تَ" ;
|
||||||
Per2 Masc Sg => "تَ" ;
|
Per2 _ Dl => "تُمَا" ;
|
||||||
Per2 _ Dl => "تُمَا" ;
|
Per2 Masc Pl => "تُمْ" ;
|
||||||
Per2 Masc Pl => "تُمْ" ;
|
Per2 Fem Sg => "تِ" ;
|
||||||
Per2 Fem Sg => "تِ" ;
|
Per2 Fem Pl => "تُنَّ" ;
|
||||||
Per2 Fem Pl => "تُنَّ" ;
|
Per1 Sing => "تُ" ;
|
||||||
Per1 Sing => "تُ" ;
|
Per1 Plur => "نَا"
|
||||||
Per1 Plur => "نَا"
|
} ;
|
||||||
} ;
|
|
||||||
|
|
||||||
suffixImpfDef : Voice -> Vowel -> Mood => PerGenNum => Str = \vc,vw ->
|
suffixImpfDef : Voice -> Mood => PerGenNum => Str = \vc ->
|
||||||
let {
|
let default : Mood -> Str = \m -> case vc of {
|
||||||
default : Mood -> Str = \m ->
|
|
||||||
case vc of {
|
|
||||||
Pas => case m of {Jus => "" ; _ => "ى"} ;
|
Pas => case m of {Jus => "" ; _ => "ى"} ;
|
||||||
Act => case vw of {
|
Act => case vowImpf of {
|
||||||
u => case m of {Ind => "و" ; Cnj => "وَ" ; Jus => ""} ;
|
u => case m of {Ind => "و" ; Cnj => "وَ" ; Jus => ""} ;
|
||||||
i => case m of {Ind => "ي" ; Cnj => "يَ" ; Jus => ""} ;
|
i => case m of {Ind => "ي" ; Cnj => "يَ" ; Jus => ""} ;
|
||||||
a => case m of {Ind => "ى" ; Cnj => "ى" ; Jus => ""}
|
a => case m of {Ind => "ى" ; Cnj => "ى" ; Jus => ""} }
|
||||||
}
|
|
||||||
}
|
|
||||||
} in
|
|
||||||
table {
|
|
||||||
Ind =>
|
|
||||||
table {
|
|
||||||
Per3 Masc Pl => "وْنَ" ;
|
|
||||||
Per2 Masc Pl => "وْنَ" ;
|
|
||||||
(Per3 _ Dl|Per2 _ Dl) => case vw of {
|
|
||||||
u => "وَانِ" ;
|
|
||||||
_ => "يَانِ" } ;
|
|
||||||
Per3 Fem Pl => "يْنَ" ;
|
|
||||||
Per2 Fem _ => "يْنَ" ;
|
|
||||||
_ => default Ind
|
|
||||||
} ;
|
|
||||||
m => -- TODO: check whether to remove sukuns
|
|
||||||
table {
|
|
||||||
Per3 Masc Pl => "وْا" ;
|
|
||||||
Per2 Masc Pl => "وْا" ;
|
|
||||||
(Per3 _ Dl|Per2 _ Dl) => case vw of {
|
|
||||||
u => "وَا" ;
|
|
||||||
_ => "يَا" } ;
|
|
||||||
Per3 Fem Pl => "يْنَ" ;
|
|
||||||
Per2 Fem Pl => "يْنَ" ;
|
|
||||||
Per2 Fem Sg => "ي" ;
|
|
||||||
_ => default m
|
|
||||||
}
|
}
|
||||||
|
in table { -- TODO: check whether to remove sukuns
|
||||||
|
Ind => table {
|
||||||
|
Per3 Masc Pl => "وْنَ" ;
|
||||||
|
Per2 Masc Pl => "وْنَ" ;
|
||||||
|
(Per3 _ Dl|Per2 _ Dl) => case vowImpf of {
|
||||||
|
u => "وَانِ" ;
|
||||||
|
_ => "يَانِ" } ;
|
||||||
|
Per3 Fem Pl => "يْنَ" ;
|
||||||
|
Per2 Fem _ => "يْنَ" ;
|
||||||
|
_ => default Ind
|
||||||
|
} ;
|
||||||
|
mood => table {
|
||||||
|
Per3 Masc Pl => "وْا" ;
|
||||||
|
Per2 Masc Pl => "وْا" ;
|
||||||
|
(Per3 _ Dl|Per2 _ Dl) => case vowImpf of {
|
||||||
|
u => "وَا" ;
|
||||||
|
_ => "يَا" } ;
|
||||||
|
Per3 Fem Pl => "يْنَ" ;
|
||||||
|
Per2 Fem Pl => "يْنَ" ;
|
||||||
|
Per2 Fem Sg => "ي" ;
|
||||||
|
_ => default mood
|
||||||
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- does this even happen other than with رءي? /IL
|
suffixImpf : Voice -> Mood => PerGenNum => Str = \vc -> case isDoubleDef of {
|
||||||
suffixImpfDoubleDef : Voice -> Vowel -> Mood => PerGenNum => Str = \vc,vw ->
|
False => suffixImpfDef vc ;
|
||||||
\\m,p => rmSukun (suffixImpfDef vc vw ! m ! p) ;
|
True => \\m,p => rmSukun (suffixImpfDef vc ! m ! p) } ;
|
||||||
|
|
||||||
|
} ;
|
||||||
------------------------------------------------------------
|
------------------------------------------------------------
|
||||||
-- Common affixes
|
-- Common affixes
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user