forked from GitHub/gf-rgl
Merge pull request #26 from inariksit/arabic
Arabic: compound nouns, verb paradigms, assimilations, whitespace
This commit is contained in:
@@ -85,7 +85,6 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in {
|
|||||||
V2V, V2S, V2Q = ResAra.Verb ** {c2 : Str} ; --- AR
|
V2V, V2S, V2Q = ResAra.Verb ** {c2 : Str} ; --- AR
|
||||||
V3 = ResAra.Verb ** {c2, c3 : Str} ;
|
V3 = ResAra.Verb ** {c2, c3 : Str} ;
|
||||||
VV = ResAra.Verb ** {c2 : Str ; isAux : Bool} ; --- IL
|
VV = ResAra.Verb ** {c2 : Str ; isAux : Bool} ; --- IL
|
||||||
-- VV = {s : VVForm => Str ; isAux : Bool} ;
|
|
||||||
|
|
||||||
A = ResAra.Adj ;
|
A = ResAra.Adj ;
|
||||||
A2 = ResAra.Adj ** {c2 : Str} ;
|
A2 = ResAra.Adj ** {c2 : Str} ;
|
||||||
|
|||||||
@@ -16,5 +16,4 @@ concrete ExtendAra of Extend =
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
GenNP np = { s = \\_,_,_,_ => np.s ! Gen ; d = Const ; isNum, isPron = False } ;
|
GenNP np = { s = \\_,_,_,_ => np.s ! Gen ; d = Const ; isNum, isPron = False } ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ flags optimize = all ;--noexpand;
|
|||||||
case g of {
|
case g of {
|
||||||
Masc => waHid;
|
Masc => waHid;
|
||||||
Fem => waHida
|
Fem => waHida
|
||||||
} in Al ! state + word + dec1sg ! state ! c;
|
} in defArt state waHid + word + dec1sg ! state ! c;
|
||||||
n = num;
|
n = num;
|
||||||
d = state;
|
d = state;
|
||||||
isPron = False;
|
isPron = False;
|
||||||
|
|||||||
@@ -53,7 +53,9 @@ resource ParadigmsAra = open
|
|||||||
mkN : NTable -> Gender -> Species -> N -- loan words, irregular
|
mkN : NTable -> Gender -> Species -> N -- loan words, irregular
|
||||||
= mkFullN ;
|
= mkFullN ;
|
||||||
mkN : (root,sgPatt,brokenPlPatt : Str) -> Gender -> Species -> N -- broken plural
|
mkN : (root,sgPatt,brokenPlPatt : Str) -> Gender -> Species -> N -- broken plural
|
||||||
= brkN ;
|
= brkN ;
|
||||||
|
mkN : N -> (attr : Str) -> N -- Compound nouns
|
||||||
|
= \n,attr -> n ** { s = \\num,s,c => n.s ! num ! s ! c ++ attr } ; --- IL (TODO: all kinds of compounds)
|
||||||
--- mkN : (root,sgPatt : Str) -> Gender -> Species -> N -- sound feminine plural
|
--- mkN : (root,sgPatt : Str) -> Gender -> Species -> N -- sound feminine plural
|
||||||
--- = sdfN ;
|
--- = sdfN ;
|
||||||
} ;
|
} ;
|
||||||
@@ -278,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
|
||||||
};
|
};
|
||||||
@@ -351,10 +353,10 @@ resource ParadigmsAra = open
|
|||||||
\rootStr ->
|
\rootStr ->
|
||||||
let {
|
let {
|
||||||
rbT = mkRoot3 rootStr ;
|
rbT = mkRoot3 rootStr ;
|
||||||
} in {
|
v8fun = case rbT.f of {
|
||||||
s = (v8sound rbT).s ;
|
("و"|"ي"|"ّ") => v8assimilated ;
|
||||||
lock_V = <>
|
_ => v8sound }
|
||||||
};
|
} in lin V (v8fun rbT) ;
|
||||||
|
|
||||||
Preposition = Str ;
|
Preposition = Str ;
|
||||||
|
|
||||||
@@ -560,6 +562,6 @@ formV : (root : Str) -> VerbForm -> V = \s,f -> case f of {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
param VerbForm =
|
param VerbForm =
|
||||||
FormI | FormIII | FormIII | FormIV | FormV | FormVI | FormVIII ;
|
FormI | FormII | FormIII | FormIV | FormV | FormVI | FormVIII ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -4,103 +4,106 @@ flags coding=utf8 ;
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
fA' = { h = "" ; m1 = ""; m2 = ""; t = "َاء"} ;
|
fA' = { h = "" ; m1 = ""; m2 = ""; t = "َاء"} ;
|
||||||
|
|
||||||
eafAcI = { h = "أَ"; m1 = "َا"; m2 = ""; t = "ِي" } ;
|
eafAcI = { h = "أَ"; m1 = "َا"; m2 = ""; t = "ِي" } ;
|
||||||
eafcA' = { h = "أَ"; m1 = "ْ" ; m2 = ""; t = "َاء"} ;
|
eafcA' = { h = "أَ"; m1 = "ْ" ; m2 = ""; t = "َاء"} ;
|
||||||
eafcI = { h = "أَ"; m1 = "ْ" ; m2 = ""; t = "ِي" } ;
|
eafcI = { h = "أَ"; m1 = "ْ" ; m2 = ""; t = "ِي" } ;
|
||||||
fac = { h = "" ; m1 = "َ" ; m2 = ""; t = "" } ;
|
fac = { h = "" ; m1 = "َ" ; m2 = ""; t = "" } ;
|
||||||
facc = { h = "" ; m1 = "َ" ; m2 = ""; t = "ّ" } ;
|
facc = { h = "" ; m1 = "َ" ; m2 = ""; t = "ّ" } ;
|
||||||
facca = { h = "" ; m1 = "َ" ; m2 = ""; t = "َّ" } ;
|
facca = { h = "" ; m1 = "َ" ; m2 = ""; t = "َّ" } ;
|
||||||
facci = { h = "" ; m1 = "َ" ; m2 = ""; t = "ِّ" } ;
|
facci = { h = "" ; m1 = "َ" ; m2 = ""; t = "ِّ" } ;
|
||||||
faccu = { h = "" ; m1 = "َ" ; m2 = ""; t = "ُّ" } ;
|
faccu = { h = "" ; m1 = "َ" ; m2 = ""; t = "ُّ" } ;
|
||||||
facp = { h = "" ; m1 = "َ" ; m2 = ""; t = "َة" } ;
|
facp = { h = "" ; m1 = "َ" ; m2 = ""; t = "َة" } ;
|
||||||
faca = { h = "" ; m1 = "َ" ; m2 = ""; t = "َ" } ;
|
faca = { h = "" ; m1 = "َ" ; m2 = ""; t = "َ" } ;
|
||||||
facA = { h = "" ; m1 = "َ" ; m2 = ""; t = "َا" } ;
|
facA = { h = "" ; m1 = "َ" ; m2 = ""; t = "َا" } ;
|
||||||
facA' = { h = "" ; m1 = "َ" ; m2 = ""; t = "َاء"} ;
|
facA' = { h = "" ; m1 = "َ" ; m2 = ""; t = "َاء"} ;
|
||||||
fAc = { h = "" ; m1 = "َا"; m2 = ""; t = "" } ;
|
fAc = { h = "" ; m1 = "َا"; m2 = ""; t = "" } ;
|
||||||
fAcp = { h = "" ; m1 = "َا"; m2 = ""; t = "َة" } ;
|
fAcp = { h = "" ; m1 = "َا"; m2 = ""; t = "َة" } ;
|
||||||
fic = { h = "" ; m1 = "ِ" ; m2 = ""; t = "" } ;
|
fic = { h = "" ; m1 = "ِ" ; m2 = ""; t = "" } ;
|
||||||
ficc = { h = "" ; m1 = "ِ" ; m2 = ""; t = "ّ" } ;
|
ficc = { h = "" ; m1 = "ِ" ; m2 = ""; t = "ّ" } ;
|
||||||
ficA' = { h = "" ; m1 = "ِ" ; m2 = ""; t = "َاء"} ;
|
ficA' = { h = "" ; m1 = "ِ" ; m2 = ""; t = "َاء"} ;
|
||||||
fIc = { h = "" ; m1 = "ِي"; m2 = ""; t = "" } ;
|
fIc = { h = "" ; m1 = "ِي"; m2 = ""; t = "" } ;
|
||||||
fIcAn = { h = "" ; m1 = "ِي"; m2 = ""; t = "َان"} ;
|
fIcAn = { h = "" ; m1 = "ِي"; m2 = ""; t = "َان"} ;
|
||||||
fca = { h = "" ; m1 = "ْ" ; m2 = ""; t = "َ" } ;
|
fca = { h = "" ; m1 = "ْ" ; m2 = ""; t = "َ" } ;
|
||||||
fci = { h = "" ; m1 = "ْ" ; m2 = ""; t = "ِ" } ;
|
fci = { h = "" ; m1 = "ْ" ; m2 = ""; t = "ِ" } ;
|
||||||
fcu = { h = "" ; m1 = "ْ" ; m2 = ""; t = "ُ" } ;
|
fcu = { h = "" ; m1 = "ْ" ; m2 = ""; t = "ُ" } ;
|
||||||
fuc = { h = "" ; m1 = "ُ" ; m2 = ""; t = "" } ;
|
fuc = { h = "" ; m1 = "ُ" ; m2 = ""; t = "" } ;
|
||||||
fucc = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ّ" } ;
|
fucc = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ّ" } ;
|
||||||
fucci = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ِّ" } ;
|
fucci = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ِّ" } ;
|
||||||
fuccu = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ُّ" } ;
|
fuccu = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ُّ" } ;
|
||||||
fuci = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ِ" } ;
|
fuci = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ِ" } ;
|
||||||
fucu = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ُ" } ;
|
fucu = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ُ" } ;
|
||||||
fUc = { h = "" ; m1 = "ُو"; m2 = ""; t = "" } ;
|
fUc = { h = "" ; m1 = "ُو"; m2 = ""; t = "" } ;
|
||||||
ufAc = { h = "ُ" ; m1 = "َا"; m2 = ""; t = "" } ;
|
ufAc = { h = "ُ" ; m1 = "َا"; m2 = ""; t = "" } ;
|
||||||
ufca = { h = "ُ" ; m1 = "ْ" ; m2 = ""; t = "َ" } ;
|
ufca = { h = "ُ" ; m1 = "ْ" ; m2 = ""; t = "َ" } ;
|
||||||
|
|
||||||
eafAcil = { h = "أَ"; m1 = "َا" ; m2 = "ِ" ; t = "" } ;
|
eafAcil = { h = "أَ"; m1 = "َا" ; m2 = "ِ" ; t = "" } ;
|
||||||
eafAcIl = { h = "أَ"; m1 = "َا" ; m2 = "ِي" ; t = "" } ;
|
eafAcIl = { h = "أَ"; m1 = "َا" ; m2 = "ِي" ; t = "" } ;
|
||||||
eafcilp = { h = "أَ"; m1 = "ْ" ; m2 = "ِ" ; t = "َة" } ;
|
eafcilp = { h = "أَ"; m1 = "ْ" ; m2 = "ِ" ; t = "َة" } ;
|
||||||
eafcal = { h = "أَ"; m1 = "ْ" ; m2 = "َ" ; t = "" } ;
|
eafcal = { h = "أَ"; m1 = "ْ" ; m2 = "َ" ; t = "" } ;
|
||||||
eafcAl = { h = "أَ"; m1 = "ْ" ; m2 = "َا" ; t = "" } ;
|
eafcAl = { h = "أَ"; m1 = "ْ" ; m2 = "َا" ; t = "" } ;
|
||||||
eafcil = { h = "أَ"; m1 = "ْ" ; m2 = "ِ" ; t = "" } ;
|
eafcil = { h = "أَ"; m1 = "ْ" ; m2 = "ِ" ; t = "" } ;
|
||||||
eafcul = { h = "أَ"; m1 = "ْ" ; m2 = "ُ" ; t = "" } ;
|
eafcul = { h = "أَ"; m1 = "ْ" ; m2 = "ُ" ; t = "" } ;
|
||||||
eiftacal = { h = "إِ"; m1 = "ْتَ" ; m2 = "َ" ; t = "" } ;
|
eiftacal = { h = "إِ"; m1 = "ْتَ" ; m2 = "َ" ; t = "" } ;
|
||||||
eufcil = { h = "أُ"; m1 = "ْ" ; m2 = "ِ" ; t = "" } ;
|
eufcil = { h = "أُ"; m1 = "ْ" ; m2 = "ِ" ; t = "" } ;
|
||||||
euftucil = { h = "أُ"; m1 = "ْتُ" ; m2 = "ِ" ; t = "" } ;
|
euftucil = { h = "أُ"; m1 = "ْتُ" ; m2 = "ِ" ; t = "" } ;
|
||||||
afcul = { h = "َ" ; m1 = "ْ" ; m2 = "ُ" ; t = "" } ;
|
euttucil = euftucil ** { h = "تُّأُ" ; m1 = "" } ; ---- IL assimilated VIII
|
||||||
faccalo = { h = "" ; m1 = "َ" ; m2 = "َّ" ; t = "ْ" } ;
|
afcul = { h = "َ" ; m1 = "ْ" ; m2 = "ُ" ; t = "" } ;
|
||||||
facal = { h = "" ; m1 = "َ" ; m2 = "َ" ; t = "" } ;
|
faccalo = { h = "" ; m1 = "َ" ; m2 = "َّ" ; t = "ْ" } ;
|
||||||
facalo = { h = "" ; m1 = "َ" ; m2 = "َ" ; t = "ْ" } ;
|
facal = { h = "" ; m1 = "َ" ; m2 = "َ" ; t = "" } ;
|
||||||
facalp = { h = "" ; m1 = "َ" ; m2 = "َ" ; t = "َة" } ;
|
facalo = { h = "" ; m1 = "َ" ; m2 = "َ" ; t = "ْ" } ;
|
||||||
facA'il = { h = "" ; m1 = "َ" ; m2 = "َائِ"; t = "" } ;
|
facalp = { h = "" ; m1 = "َ" ; m2 = "َ" ; t = "َة" } ;
|
||||||
facAl = { h = "" ; m1 = "َ" ; m2 = "َا" ; t = "" } ;
|
facA'il = { h = "" ; m1 = "َ" ; m2 = "َائِ"; t = "" } ;
|
||||||
facAlI = { h = "" ; m1 = "َ" ; m2 = "َا" ; t = "ِي" } ;
|
facAl = { h = "" ; m1 = "َ" ; m2 = "َا" ; t = "" } ;
|
||||||
facil = { h = "" ; m1 = "َ" ; m2 = "ِ" ; t = "" } ;
|
facAlI = { h = "" ; m1 = "َ" ; m2 = "َا" ; t = "ِي" } ;
|
||||||
facIl = { h = "" ; m1 = "َ" ; m2 = "ِي" ; t = "" } ;
|
facil = { h = "" ; m1 = "َ" ; m2 = "ِ" ; t = "" } ;
|
||||||
facl = { h = "" ; m1 = "َ" ; m2 = "ْ" ; t = "" } ;
|
facIl = { h = "" ; m1 = "َ" ; m2 = "ِي" ; t = "" } ;
|
||||||
faclp = { h = "" ; m1 = "َ" ; m2 = "ْ" ; t = "َة" } ;
|
facl = { h = "" ; m1 = "َ" ; m2 = "ْ" ; t = "" } ;
|
||||||
facul = { h = "" ; m1 = "َ" ; m2 = "ُ" ; t = "" } ;
|
faclp = { h = "" ; m1 = "َ" ; m2 = "ْ" ; t = "َة" } ;
|
||||||
fAcal = { h = "" ; m1 = "َا" ; m2 = "َ" ; t = "" } ;
|
facul = { h = "" ; m1 = "َ" ; m2 = "ُ" ; t = "" } ;
|
||||||
fAcil = { h = "" ; m1 = "َا" ; m2 = "ِ" ; t = "" } ;
|
fAcal = { h = "" ; m1 = "َا" ; m2 = "َ" ; t = "" } ;
|
||||||
faccal = { h = "" ; m1 = "َ" ; m2 = "َّ" ; t = "" } ;
|
fAcil = { h = "" ; m1 = "َا" ; m2 = "ِ" ; t = "" } ;
|
||||||
faccil = { h = "" ; m1 = "َ" ; m2 = "ِّ" ; t = "" } ;
|
faccal = { h = "" ; m1 = "َ" ; m2 = "َّ" ; t = "" } ;
|
||||||
faclA' = { h = "" ; m1 = "َ" ; m2 = "ْ" ; t = "َاء"} ;
|
faccil = { h = "" ; m1 = "َ" ; m2 = "ِّ" ; t = "" } ;
|
||||||
fAcilp = { h = "" ; m1 = "َا" ; m2 = "ِ" ; t = "َة" } ;
|
faclA' = { h = "" ; m1 = "َ" ; m2 = "ْ" ; t = "َاء"} ;
|
||||||
fawAcil = { h = "" ; m1 = "َوَا"; m2 = "ِ" ; t = "" } ;
|
fAcilp = { h = "" ; m1 = "َا" ; m2 = "ِ" ; t = "َة" } ;
|
||||||
ficAlp = { h = "" ; m1 = "ِ" ; m2 = "َا" ; t = "َة" } ;
|
fawAcil = { h = "" ; m1 = "َوَا"; m2 = "ِ" ; t = "" } ;
|
||||||
fcal = { h = "" ; m1 = "ْ" ; m2 = "َ" ; t = "" } ;
|
ficAlp = { h = "" ; m1 = "ِ" ; m2 = "َا" ; t = "َة" } ;
|
||||||
fcil = { h = "" ; m1 = "ْ" ; m2 = "ِ" ; t = "" } ;
|
fcal = { h = "" ; m1 = "ْ" ; m2 = "َ" ; t = "" } ;
|
||||||
fcul = { h = "" ; m1 = "ْ" ; m2 = "ُ" ; t = "" } ;
|
fcil = { h = "" ; m1 = "ْ" ; m2 = "ِ" ; t = "" } ;
|
||||||
ficl = { h = "" ; m1 = "ِ" ; m2 = "ْ" ; t = "" } ;
|
fcul = { h = "" ; m1 = "ْ" ; m2 = "ُ" ; t = "" } ;
|
||||||
ficAl = { h = "" ; m1 = "ِ" ; m2 = "َا" ; t = "" } ;
|
ficl = { h = "" ; m1 = "ِ" ; m2 = "ْ" ; t = "" } ;
|
||||||
ficlp = { h = "" ; m1 = "ِ" ; m2 = "ْ" ; t = "َة" } ;
|
ficAl = { h = "" ; m1 = "ِ" ; m2 = "َا" ; t = "" } ;
|
||||||
ftacal = { h = "" ; m1 = "ْتَ" ; m2 = "َ" ; t = "" } ;
|
ficlp = { h = "" ; m1 = "ِ" ; m2 = "ْ" ; t = "َة" } ;
|
||||||
ftacil = { h = "" ; m1 = "ْتَ" ; m2 = "ِ" ; t = "" } ;
|
ftacal = { h = "" ; m1 = "ْتَ" ; m2 = "َ" ; t = "" } ;
|
||||||
fuccAl = { h = "" ; m1 = "ُ" ; m2 = "َّا" ; t = "" } ;
|
ftacil = { h = "" ; m1 = "ْتَ" ; m2 = "ِ" ; t = "" } ;
|
||||||
fuccil = { h = "" ; m1 = "ُ" ; m2 = "ِّ" ; t = "" } ;
|
ttacal = ftacal ** { m1 = "" ; h = "تَّ" } ; ---- IL assimilated VIII
|
||||||
fuccilo = { h = "" ; m1 = "ُ" ; m2 = "ِّ" ; t = "ْ" } ;
|
ttacil = ftacil ** { m1 = "" ; h = "تَّ" } ; ---- IL assimilated VIII
|
||||||
fucal = { h = "" ; m1 = "ُ" ; m2 = "َ" ; t = "" } ;
|
fuccAl = { h = "" ; m1 = "ُ" ; m2 = "َّا" ; t = "" } ;
|
||||||
fucaylp = { h = "" ; m1 = "ُ" ; m2 = "َيْ" ; t = "َة" } ;
|
fuccil = { h = "" ; m1 = "ُ" ; m2 = "ِّ" ; t = "" } ;
|
||||||
fucAl = { h = "" ; m1 = "ُ" ; m2 = "َا" ; t = "" } ;
|
fuccilo = { h = "" ; m1 = "ُ" ; m2 = "ِّ" ; t = "ْ" } ;
|
||||||
fucl = { h = "" ; m1 = "ُ" ; m2 = "ْ" ; t = "" } ;
|
fucal = { h = "" ; m1 = "ُ" ; m2 = "َ" ; t = "" } ;
|
||||||
fucil = { h = "" ; m1 = "ُ" ; m2 = "ِ" ; t = "" } ;
|
fucaylp = { h = "" ; m1 = "ُ" ; m2 = "َيْ" ; t = "َة" } ;
|
||||||
fuclp = { h = "" ; m1 = "ُ" ; m2 = "ْ" ; t = "َة" } ;
|
fucAl = { h = "" ; m1 = "ُ" ; m2 = "َا" ; t = "" } ;
|
||||||
fucilo = { h = "" ; m1 = "ُ" ; m2 = "ِ" ; t = "ْ" } ;
|
fucl = { h = "" ; m1 = "ُ" ; m2 = "ْ" ; t = "" } ;
|
||||||
fucul = { h = "" ; m1 = "ُ" ; m2 = "ُ" ; t = "" } ;
|
fucil = { h = "" ; m1 = "ُ" ; m2 = "ِ" ; t = "" } ;
|
||||||
fuculo = { h = "" ; m1 = "ُ" ; m2 = "ُ" ; t = "ْ" } ;
|
fuclp = { h = "" ; m1 = "ُ" ; m2 = "ْ" ; t = "َة" } ;
|
||||||
fucUl = { h = "" ; m1 = "ُ" ; m2 = "ُو" ; t = "" } ;
|
fucilo = { h = "" ; m1 = "ُ" ; m2 = "ِ" ; t = "ْ" } ;
|
||||||
fUcil = { h = "" ; m1 = "ُو" ; m2 = "ِ" ; t = "" } ;
|
fucul = { h = "" ; m1 = "ُ" ; m2 = "ُ" ; t = "" } ;
|
||||||
|
fuculo = { h = "" ; m1 = "ُ" ; m2 = "ُ" ; t = "ْ" } ;
|
||||||
|
fucUl = { h = "" ; m1 = "ُ" ; m2 = "ُو" ; t = "" } ;
|
||||||
|
fUcil = { h = "" ; m1 = "ُو" ; m2 = "ِ" ; t = "" } ;
|
||||||
mafcUl = { h = "مَ"; m1 = "ْ" ; m2 = "ُو" ; t = "" } ;
|
mafcUl = { h = "مَ"; m1 = "ْ" ; m2 = "ُو" ; t = "" } ;
|
||||||
mafcil = { h = "مَ"; m1 = "ْ" ; m2 = "ِ" ; t = "" } ;
|
mafcil = { h = "مَ"; m1 = "ْ" ; m2 = "ِ" ; t = "" } ;
|
||||||
tafAcal = { h = "تَ"; m1 = "َا" ; m2 = "َ" ; t = "" } ;
|
tafAcal = { h = "تَ"; m1 = "َا" ; m2 = "َ" ; t = "" } ;
|
||||||
tafaccal = { h = "تَ"; m1 = "َ" ; m2 = "َّ" ; t = "" } ;
|
tafaccal = { h = "تَ"; m1 = "َ" ; m2 = "َّ" ; t = "" } ;
|
||||||
tufuccil = { h = "تُ"; m1 = "ُ" ; m2 = "ِّ" ; t = "" } ;
|
tufuccil = { h = "تُ"; m1 = "ُ" ; m2 = "ِّ" ; t = "" } ;
|
||||||
tufUcil = { h = "تُ"; m1 = "ُو" ; m2 = "ِ" ; t = "" } ;
|
tufUcil = { h = "تُ"; m1 = "ُو" ; m2 = "ِ" ; t = "" } ;
|
||||||
ufAcal = { h = "ُ" ; m1 = "َا" ; m2 = "َ" ; t = "" } ;
|
ufAcal = { h = "ُ" ; m1 = "َا" ; m2 = "َ" ; t = "" } ;
|
||||||
ufAcil = { h = "ُ" ; m1 = "َا" ; m2 = "ِ" ; t = "" } ;
|
ufAcil = { h = "ُ" ; m1 = "َا" ; m2 = "ِ" ; t = "" } ;
|
||||||
ufcal = { h = "ُ" ; m1 = "ْ" ; m2 = "َ" ; t = "" } ;
|
ufcal = { h = "ُ" ; m1 = "ْ" ; m2 = "َ" ; t = "" } ;
|
||||||
ufcil = { h = "ُ" ; m1 = "ْ" ; m2 = "ِ" ; t = "" } ;
|
ufcil = { h = "ُ" ; m1 = "ْ" ; m2 = "ِ" ; t = "" } ;
|
||||||
ufcul = { h = "ُ" ; m1 = "ْ" ; m2 = "ُ" ; t = "" } ;
|
ufcul = { h = "ُ" ; m1 = "ْ" ; m2 = "ُ" ; t = "" } ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,12 +76,11 @@ resource ResAra = PatternsAra ** open Prelude, Predef, ParamX in {
|
|||||||
|
|
||||||
-- takes a weak pattern and a triliteral root and makes
|
-- takes a weak pattern and a triliteral root and makes
|
||||||
-- a word, deducing which root consonant is weak
|
-- a word, deducing which root consonant is weak
|
||||||
mkWeak : Pattern -> Str -> Str = \pat,root ->
|
mkWeak : Pattern -> Root3 -> Str = \pat,fcl ->
|
||||||
let fcl = mkRoot3 root in
|
case <fcl.f,fcl.c,fcl.l> of {
|
||||||
case root of {
|
<_,_,("و"|"ي"|"ّ")> => mkDefective pat fcl;
|
||||||
_ + ("و"|"ي"|"ّ") => mkDefective pat fcl;
|
<_,("و"|"ي"),_> => mkHollow pat fcl;
|
||||||
_ + ("و"|"ي") + _ => mkHollow pat fcl;
|
<("و"|"ي"),_,_> => mkAssimilated pat fcl
|
||||||
("و"|"ي") + _ => mkAssimilated pat fcl
|
|
||||||
};
|
};
|
||||||
|
|
||||||
mkBilit : Pattern -> Root2 -> Str = \p,fcl ->
|
mkBilit : Pattern -> Root2 -> Str = \p,fcl ->
|
||||||
@@ -95,7 +94,7 @@ resource ResAra = PatternsAra ** open Prelude, Predef, ParamX in {
|
|||||||
w@_ + "ف" + x@_ + "ع" + y@_ =>
|
w@_ + "ف" + x@_ + "ع" + y@_ =>
|
||||||
let pat = { h = w ; m1 = x; m2 = ""; t = y} in
|
let pat = { h = w ; m1 = x; m2 = ""; t = y} in
|
||||||
case <length rS : Ints 100> of {
|
case <length rS : Ints 100> of {
|
||||||
6 | 5 => mkWeak pat rS ; --3=>
|
6 | 5 => mkWeak pat (mkRoot3 rS) ; --3=>
|
||||||
4 | 3 => mkBilit pat (mkRoot2 rS) ; --2=>
|
4 | 3 => mkBilit pat (mkRoot2 rS) ; --2=>
|
||||||
_ => rS ---- AR error "expected 3--6"
|
_ => rS ---- AR error "expected 3--6"
|
||||||
}
|
}
|
||||||
@@ -232,33 +231,45 @@ oper
|
|||||||
verbHollow : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
verbHollow : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||||
\xAf,xif,xyf,xuf,axAf,axaf,uxAf,uxaf,xaf,xAf',ppart ->
|
\xAf,xif,xyf,xuf,axAf,axaf,uxAf,uxaf,xaf,xAf',ppart ->
|
||||||
let { perfPattern = patHollowPerf xAf xif xyf xuf ;
|
let { perfPattern = patHollowPerf xAf xif xyf xuf ;
|
||||||
impfPattern = patHollowImpf axAf axaf uxAf uxaf ;
|
impfPattern = patHollowImpf axAf axaf uxAf uxaf ;
|
||||||
impPattern = patHollowImp axaf xAf' ;
|
impPattern = patHollowImp axaf xAf' ;
|
||||||
jusPattern = patHollowJus axaf axAf uxaf uxAf ;
|
jusPattern = patHollowJus axaf axAf uxaf uxAf ;
|
||||||
} in
|
} in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
VPerf v pgn => perfPattern ! v ! pgn + suffixPerf ! pgn ;
|
VPerf v pgn => perfPattern ! v ! pgn + suffixPerf ! pgn ;
|
||||||
VImpf Ind v pgn => prefixImpf ! pgn + impfPattern ! v ! pgn + suffixImpfInd ! pgn ;
|
VImpf Ind v pgn => prefixImpf ! pgn + impfPattern ! v ! pgn + suffixImpfInd ! pgn ;
|
||||||
VImpf Cnj v pgn => prefixImpf ! pgn + impfPattern ! v ! pgn + suffixImpfCJ Cnj ! pgn ;
|
VImpf Cnj v pgn => prefixImpf ! pgn + impfPattern ! v ! pgn + suffixImpfCJ Cnj ! pgn ;
|
||||||
VImpf Jus v pgn => prefixImpf ! pgn + jusPattern ! v ! pgn + suffixImpfCJ Jus ! pgn ;
|
VImpf Jus v pgn => prefixImpf ! pgn + jusPattern ! v ! pgn + suffixImpfCJ Jus ! pgn ;
|
||||||
VImp g n => impPattern ! g ! n + suffixImpfCJ Jus ! (Per2 g n);
|
VImp g n => impPattern ! g ! n + suffixImpfCJ Jus ! (Per2 g n);
|
||||||
VPPart => ppart
|
VPPart => ppart
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--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 {
|
||||||
patPerf = patDefPerf rama ramay rumi rumu rumiy ;
|
rama = vforms ! 0 ; -- VPerf Act (Per3 Masc Sg)
|
||||||
patImpfAct = patDefImpfAct armi armu ;
|
ramay = vforms ! 1 ; -- VPerf Act (Per3 Fem Pl)
|
||||||
patImp = patDefImp Irmi Irmu
|
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 ;
|
||||||
|
patImpfAct = patDefImpfAct armi armu ;
|
||||||
|
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
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
@@ -268,15 +279,15 @@ oper
|
|||||||
Act =>
|
Act =>
|
||||||
table {
|
table {
|
||||||
Per3 Fem Pl => ramay ;
|
Per3 Fem Pl => ramay ;
|
||||||
Per3 _ _ => rama ;
|
Per3 _ _ => rama ;
|
||||||
_ => ramay
|
_ => ramay
|
||||||
} ;
|
} ;
|
||||||
Pas =>
|
Pas =>
|
||||||
table {
|
table {
|
||||||
Per3 Masc Pl => rumu ;
|
Per3 Masc Pl => rumu ;
|
||||||
Per3 Fem Pl => rumy ;
|
Per3 Fem Pl => rumy ;
|
||||||
Per3 _ _ => rumi ;
|
Per3 _ _ => rumi ;
|
||||||
_ => rumy
|
_ => rumy
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -284,15 +295,15 @@ oper
|
|||||||
patDefImpfAct : (_,_ : Str) -> PerGenNum => Str = \rmi,rmu ->
|
patDefImpfAct : (_,_ : Str) -> PerGenNum => Str = \rmi,rmu ->
|
||||||
table {
|
table {
|
||||||
Per3 Masc Pl => rmu ;
|
Per3 Masc Pl => rmu ;
|
||||||
Per2 Masc Pl => rmu ;
|
Per2 Masc Pl => rmu ;
|
||||||
_ => rmi
|
_ => rmi
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
patDefImp : (_,_ : Str) -> Gender => Number => Str = \rmi, rmu ->
|
patDefImp : (_,_ : Str) -> Gender => Number => Str = \rmi, rmu ->
|
||||||
table {
|
table {
|
||||||
Masc => table {Pl => rmu ; _ => rmi} ;
|
Masc => table {Pl => rmu ; _ => rmi} ;
|
||||||
_ => table {_ => rmi}
|
_ => table {_ => rmi}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -368,18 +379,18 @@ v1sound : Root3 -> Vowel -> Vowel -> Verb =
|
|||||||
let {
|
let {
|
||||||
qf = {f = fcl.c ; c = fcl.l} ;
|
qf = {f = fcl.c ; c = fcl.l} ;
|
||||||
qif = mkBilit (fvc ! vImpf) qf;
|
qif = mkBilit (fvc ! vImpf) qf;
|
||||||
katab = mkStrong (patV1Perf ! vPerf) fcl ;
|
katab = mkStrong (patV1Perf ! vPerf) fcl ;
|
||||||
kutib = mkStrong fucil fcl ; --FIXME no passive if vPerf == u
|
kutib = mkStrong fucil fcl ; --FIXME no passive if vPerf == u
|
||||||
ktub = mkStrong (patV1Impf ! vImpf) fcl ;
|
ktub = mkStrong (patV1Impf ! vImpf) fcl ;
|
||||||
aktub = "َ" +
|
aktub = "َ" +
|
||||||
case fcl.f of {
|
case fcl.f of {
|
||||||
"و"|"ي" => qif ;
|
"و"|"ي" => qif ;
|
||||||
_ => ktub
|
_ => ktub
|
||||||
};
|
};
|
||||||
uktab = mkStrong ufcal fcl ;
|
uktab = mkStrong ufcal fcl ;
|
||||||
euktub = case fcl.f of {
|
euktub = case fcl.f of {
|
||||||
"؟"|"و"|"ي" => qif ;
|
"؟"|"و"|"ي" => qif ;
|
||||||
_ => prefixImp ! vImpf + ktub
|
_ => prefixImp ! vImpf + ktub
|
||||||
};
|
};
|
||||||
maktUb = mkStrong mafcUl fcl
|
maktUb = mkStrong mafcUl fcl
|
||||||
} in
|
} in
|
||||||
@@ -419,8 +430,8 @@ patHol3 : Vowel => Pattern =
|
|||||||
fvc : Vowel => Pattern =
|
fvc : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
u => fuc ;
|
u => fuc ;
|
||||||
i => fic ;
|
i => fic ;
|
||||||
a => fac
|
a => fac
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -446,80 +457,116 @@ v1geminate : Str -> Vowel -> Vowel -> Verb =
|
|||||||
patGem1 : Vowel => Pattern =
|
patGem1 : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
a => facal ;
|
a => facal ;
|
||||||
u => facul ;
|
u => facul ;
|
||||||
i => facil
|
i => facil
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
patGem2 : Vowel => Pattern =
|
patGem2 : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
u => fucc ;
|
u => fucc ;
|
||||||
a => facc ;
|
a => facc ;
|
||||||
i => ficc --no such verb probably exists
|
i => ficc --no such verb probably exists
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
patGem3 : Vowel => Pattern =
|
patGem3 : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
u => fcul ;
|
u => fcul ;
|
||||||
a => fcal ;
|
a => fcal ;
|
||||||
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 =
|
||||||
let {
|
\rama,ramay,rumi,rumu,rumiy,armi,armu,urma,eirmi,eirmu,marmiy ->
|
||||||
rama = mkDefective faca rmy ;
|
table {
|
||||||
ramay = mkStrong facalo rmy ;
|
0 => rama ;
|
||||||
rumi = mkDefective fuci rmy ;
|
1 => ramay ;
|
||||||
rumu = mkDefective fucu rmy ;
|
2 => rumi ;
|
||||||
rumiy = mkStrong fucilo rmy ;
|
3 => rumu ;
|
||||||
rmi = mkDefective (patDef1 ! vowel) rmy ;
|
4 => rumiy ;
|
||||||
armi = "َ" + rmi ;
|
5 => armi ;
|
||||||
rmu = mkDefective (patDef2 ! vowel) rmy ;
|
6 => armu ;
|
||||||
armu = "َ" + rmu ;
|
7 => urma ;
|
||||||
urma = mkDefective ufca rmy ;
|
8 => eirmi ;
|
||||||
eirmi = prefixImp ! vowel + rmi;
|
9 => eirmu ;
|
||||||
eirmu = prefixImp ! vowel + rmu;
|
10 => marmiy
|
||||||
marmiy = mkStrong mafcil rmy
|
} ;
|
||||||
} in verbDef rama ramay rumi rumu rumiy armi armu urma eirmi eirmu marmiy vowel ;
|
|
||||||
|
|
||||||
|
def1Forms_vPerfA : Root3 -> Vowel -> DefForms = \rmy,vImpf ->
|
||||||
|
let {
|
||||||
|
rama = mkDefective faca rmy ;
|
||||||
|
ramay = mkStrong facalo rmy ;
|
||||||
|
rumi = mkDefective fuci rmy ;
|
||||||
|
rumu = mkDefective fucu rmy ;
|
||||||
|
rumiy = mkStrong fucilo rmy ;
|
||||||
|
rmi = mkDefective (patDef1 ! vImpf) rmy ;
|
||||||
|
armi = "َ" + rmi ;
|
||||||
|
rmu = mkDefective (patDef2 ! vImpf) rmy ;
|
||||||
|
armu = "َ" + rmu ;
|
||||||
|
urma = mkDefective ufca rmy ;
|
||||||
|
eirmi = prefixImp ! vImpf + rmi;
|
||||||
|
eirmu = prefixImp ! vImpf + rmu;
|
||||||
|
marmiy = mkStrong mafcil rmy
|
||||||
|
} 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 {
|
||||||
u => fcu ;
|
u => fcu ;
|
||||||
a => fca ;
|
a => fca ;
|
||||||
i => fci
|
i => fci
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
patDef2 : Vowel => Pattern =
|
patDef2 : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
a => fca ;
|
a => fca ;
|
||||||
_ => fcu
|
_ => fcu
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
v2sound : Root3 -> Verb = \qsm ->
|
v2sound : Root3 -> Verb = \qsm ->
|
||||||
let {
|
let {
|
||||||
qassam = mkStrong faccal qsm ;
|
qassam = mkStrong faccal qsm ;
|
||||||
qussim = mkStrong fuccil qsm ;
|
qussim = mkStrong fuccil qsm ;
|
||||||
qassim = mkStrong faccil qsm ;
|
qassim = mkStrong faccil qsm ;
|
||||||
uqassim = "ُ" + qassim ;
|
uqassim = "ُ" + qassim ;
|
||||||
uqassam = "ُ" + qassam ;
|
uqassam = "ُ" + qassam ;
|
||||||
muqassam = "مُ" + qassam
|
muqassam = "مُ" + qassam
|
||||||
} in
|
} in
|
||||||
verb qassam qussim uqassim uqassam qassim muqassam;
|
verb qassam qussim uqassim uqassam qassim muqassam;
|
||||||
|
|
||||||
v2defective : Root3 -> Verb = \gny ->
|
v2defective : Root3 -> Verb = \gny ->
|
||||||
let {
|
let {
|
||||||
ganna = mkDefective facca gny ;
|
ganna = mkDefective facca gny ;
|
||||||
gannay = mkStrong faccalo gny ;
|
gannay = mkStrong faccalo gny ;
|
||||||
gunni = mkDefective fucci gny ;
|
gunni = mkDefective fucci gny ;
|
||||||
gunnu = mkDefective fuccu gny ;
|
gunnu = mkDefective fuccu gny ;
|
||||||
gunniy = mkStrong fuccilo gny ;
|
gunniy = mkStrong fuccilo gny ;
|
||||||
ganni = mkDefective facci gny;
|
ganni = mkDefective facci gny;
|
||||||
uganni = "ُ" + ganni;
|
uganni = "ُ" + ganni;
|
||||||
gannu = mkDefective faccu gny;
|
gannu = mkDefective faccu 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 ->
|
||||||
@@ -547,21 +594,21 @@ v4sound : Root3 -> Verb =
|
|||||||
|
|
||||||
v4defective : Root3 -> Verb = \cTy ->
|
v4defective : Root3 -> Verb = \cTy ->
|
||||||
let {
|
let {
|
||||||
cTa = mkDefective fca cTy;
|
cTa = mkDefective fca cTy;
|
||||||
cTu = mkDefective fcu cTy;
|
cTu = mkDefective fcu cTy;
|
||||||
cTi = mkDefective fci cTy;
|
cTi = mkDefective fci cTy;
|
||||||
eacTa = "أَ" + cTa;
|
eacTa = "أَ" + cTa;
|
||||||
eacTay = mkStrong eafcal cTy ;
|
eacTay = mkStrong eafcal cTy ;
|
||||||
ucTi = "ُ" + cTi;
|
ucTi = "ُ" + cTi;
|
||||||
eucTi = "أُ" + cTi;
|
eucTi = "أُ" + cTi;
|
||||||
ucTu = "ُ" + cTu;
|
ucTu = "ُ" + cTu;
|
||||||
eucTu = "أُ" + cTu;
|
eucTu = "أُ" + cTu;
|
||||||
eucTiy = mkStrong eufcil cTy ;
|
eucTiy = mkStrong eufcil cTy ;
|
||||||
ucTa = "ُ" + cTa;
|
ucTa = "ُ" + cTa;
|
||||||
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 ->
|
||||||
@@ -596,18 +643,32 @@ v8sound : Root3 -> Verb =
|
|||||||
murtabaT = "م" + urtabaT
|
murtabaT = "م" + urtabaT
|
||||||
} in verb eirtabaT eurtubiT artabiT urtabaT eirtabiT murtabaT;
|
} in verb eirtabaT eurtubiT artabiT urtabaT eirtabiT murtabaT;
|
||||||
|
|
||||||
|
v8assimilated : Root3 -> Verb = --- IL 8a1
|
||||||
|
\wfq ->
|
||||||
|
let {
|
||||||
|
ttafiq = mkWeak ttacil wfq ;
|
||||||
|
ttafaq = mkWeak ttacal wfq ;
|
||||||
|
eittafaq = "إِ" + ttafaq ;
|
||||||
|
euttufiq = mkWeak euttucil wfq ;
|
||||||
|
attafiq = "َ" + ttafiq ;
|
||||||
|
uttafaq = "ُ" + ttafaq ;
|
||||||
|
eittafiq = "إِ" + ttafiq ;
|
||||||
|
muttafaq = "م" + uttafaq
|
||||||
|
} in verb eittafaq euttufiq attafiq uttafaq eittafiq muttafaq;
|
||||||
|
|
||||||
|
|
||||||
patV1Perf : Vowel => Pattern =
|
patV1Perf : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
a => facal ; --katab
|
a => facal ; --katab
|
||||||
u => facul ; --Hasun
|
u => facul ; --Hasun
|
||||||
i => facil --rabiH
|
i => facil --rabiH
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
patV1Impf : Vowel => Pattern =
|
patV1Impf : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
u => fcul ; --ktub
|
u => fcul ; --ktub
|
||||||
a => fcal ; --rbaH
|
a => fcal ; --rbaH
|
||||||
i => fcil --Hsin
|
i => fcil --Hsin
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
endVowel : Mood => Str =
|
endVowel : Mood => Str =
|
||||||
@@ -715,7 +776,7 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
|
|
||||||
-- indeclinable nominal word (mamnuu3 mina S-Sarf)
|
-- indeclinable nominal word (mamnuu3 mina S-Sarf)
|
||||||
indeclN : Str -> State => Case => Str =
|
indeclN : Str -> State => Case => Str =
|
||||||
\aHmar -> \\s,c => Al!s + aHmar + indecl!c;
|
\aHmar -> \\s,c => defArt s aHmar + indecl!c;
|
||||||
|
|
||||||
-- takes 2 words, singular and broken plural, and gives the
|
-- takes 2 words, singular and broken plural, and gives the
|
||||||
-- complete noun inflection table
|
-- complete noun inflection table
|
||||||
@@ -752,41 +813,62 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
sing : Str -> State => Case => Str =
|
sing : Str -> State => Case => Str =
|
||||||
\word ->
|
\word ->
|
||||||
case word of {
|
case word of {
|
||||||
lemma + "ِي" => \\s,c => Al ! s + lemma + dec2sg ! s ! c ;
|
lemma + "ِي" => \\s,c => defArt s lemma + dec2sg ! s ! c ;
|
||||||
_ + ("ا"|"ى") => \\s,c => Al ! s + word + dec3sg ! s ! c ;
|
_ + ("ا"|"ى") => \\s,c => defArt s word + dec3sg ! s ! c ;
|
||||||
_ => \\s,c => Al ! s + word + dec1sg ! s ! c
|
_ => \\s,c => defArt s word + dec1sg ! s ! c
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
-- takes a singular word and tests the ending to
|
-- takes a singular word and tests the ending to
|
||||||
-- determine the declension and gives the corresponding dual inf table
|
-- determine the declension and gives the corresponding dual inf table
|
||||||
dual : Str -> State => Case => Str =
|
dual : Str -> State => Case => Str =
|
||||||
\caSaA ->
|
\caSaA ->
|
||||||
case caSaA of {
|
case caSaA of {
|
||||||
lemma + ("ا"|"ى") => \\s,c => Al ! s + lemma + "ي" + dl ! s ! c ;
|
lemma + ("ا"|"ى") => \\s,c => defArt s lemma + "ي" + dl ! s ! c ;
|
||||||
_ => \\s,c => Al ! s + caSaA + dl ! s ! c
|
_ => \\s,c => defArt s caSaA + dl ! s ! c
|
||||||
};
|
};
|
||||||
|
|
||||||
-- takes a singular word and gives the corresponding sound
|
-- takes a singular word and gives the corresponding sound
|
||||||
--plural feminine table
|
--plural feminine table
|
||||||
plurF : Str -> State => Case => Str =
|
plurF : Str -> State => Case => Str =
|
||||||
\kalima ->
|
\kalima ->
|
||||||
\\s,c => Al ! s + (mkAt kalima) + f_pl ! s ! c ;
|
\\s,c => defArt s (mkAt kalima) + f_pl ! s ! c ;
|
||||||
|
|
||||||
-- takes a singular word and gives the corresponding sound
|
-- takes a singular word and gives the corresponding sound
|
||||||
--plural masculine table. FIXME: consider declension 3
|
--plural masculine table. FIXME: consider declension 3
|
||||||
plurM : Str -> State => Case => Str =
|
plurM : Str -> State => Case => Str =
|
||||||
\mucallim ->
|
\mucallim ->
|
||||||
\\s,c => Al ! s + mucallim + m_pl ! s ! c ;
|
\\s,c => defArt s mucallim + m_pl ! s ! c ;
|
||||||
|
|
||||||
|
|
||||||
-- to add the Al prefix for Definite words
|
-- to add the Al prefix for Definite words
|
||||||
Al : State => Str =
|
Al : State => Str =
|
||||||
table {
|
table {
|
||||||
Def => "ال";
|
Def => "ال" ;
|
||||||
_ => ""
|
_ => ""
|
||||||
};
|
};
|
||||||
|
|
||||||
--declection 1 (strong ending) of the singular or broken plural words
|
defArt : State -> Str -> Str = \st,stem ->
|
||||||
|
let arra = "الرَّ" ;
|
||||||
|
arri = "الرِّ" ;
|
||||||
|
arr = "الرِّ" ;
|
||||||
|
atta = "التَ" ;
|
||||||
|
atti = "التِّ";
|
||||||
|
att = "التّ" ;
|
||||||
|
al = "ال" ;
|
||||||
|
in case st of { -- TODO rest of the assimilations
|
||||||
|
Def => case stem of {
|
||||||
|
ra@"رَ" + x => arra + x ;
|
||||||
|
ri@"رِ" + x => arri + x ;
|
||||||
|
r@"ر" + x => arr + x ; -- no vowel specified
|
||||||
|
ta@"تَ" + x => atta + x ;
|
||||||
|
ti@"تِ" + x => atti + x ;
|
||||||
|
t@"ت" + x => att + x ; -- no vowel specified
|
||||||
|
_ => al + stem
|
||||||
|
} ;
|
||||||
|
_ => "" + stem
|
||||||
|
};
|
||||||
|
|
||||||
|
--declension 1 (strong ending) of the singular or broken plural words
|
||||||
dec1sg : State => Case => Str =
|
dec1sg : State => Case => Str =
|
||||||
table {
|
table {
|
||||||
Indef =>
|
Indef =>
|
||||||
@@ -1140,16 +1222,16 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
NCard => table {
|
NCard => table {
|
||||||
Masc => \\s,c => (sing wAhid) ! s ! c ;
|
Masc => \\s,c => (sing wAhid) ! s ! c ;
|
||||||
--all fem are first declension:
|
--all fem are first declension:
|
||||||
Fem => \\s,c => Al ! s + wAhida + dec1sg ! s ! c
|
Fem => \\s,c => defArt s wAhida + dec1sg ! s ! c
|
||||||
};
|
};
|
||||||
NOrd => table {
|
NOrd => table {
|
||||||
Masc => \\s,c => Al ! s + awwal + dec1sg ! s ! c;
|
Masc => \\s,c => defArt s awwal + dec1sg ! s ! c;
|
||||||
Fem => \\s,c => (sing Ula) ! s ! c
|
Fem => \\s,c => (sing Ula) ! s ! c
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
ten => table {
|
ten => table {
|
||||||
NCard => \\_,s,c => Al ! s + wAhid + m_pl ! Indef ! c;
|
NCard => \\_,s,c => defArt s wAhid + m_pl ! Indef ! c;
|
||||||
NOrd => \\_,s,c => Al ! s + awwal + m_pl ! Indef ! c
|
NOrd => \\_,s,c => defArt s awwal + m_pl ! Indef ! c
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ concrete SentenceAra of Sentence = CatAra ** open
|
|||||||
ResAra,
|
ResAra,
|
||||||
Prelude,
|
Prelude,
|
||||||
ResAra,
|
ResAra,
|
||||||
|
TenseX,
|
||||||
ParamX,
|
ParamX,
|
||||||
CommonX in {
|
CommonX in {
|
||||||
|
|
||||||
@@ -59,13 +60,13 @@ concrete SentenceAra of Sentence = CatAra ** open
|
|||||||
case o of {
|
case o of {
|
||||||
Verbal =>
|
Verbal =>
|
||||||
--case <False, np.a.isPron> of { ---- AR workaround 18/12/2008
|
--case <False, np.a.isPron> of { ---- AR workaround 18/12/2008
|
||||||
case <vp.obj.a.isPron, np.a.isPron> of {
|
case <vp.obj.a.isPron, np.a.isPron> of {
|
||||||
{- IL: I don't think we should do prodrop here. vStr drops the copula in present tense,
|
{- IL: I don't think we should do prodrop here. vStr drops the copula in present tense,
|
||||||
so there's hardly anything left for a predicative clause: e.g.
|
so there's hardly anything left for a predicative clause: e.g.
|
||||||
PredVP (UsePron i_Pron) (UseComp (CompCN (UseN car_N))) "I am a car"
|
PredVP (UsePron i_Pron) (UseComp (CompCN (UseN car_N))) "I am a car"
|
||||||
would be linearised just as "car", if we have both prodrop and copula drop.
|
would be linearised just as "car", if we have both prodrop and copula drop.
|
||||||
Leaving it up to someone who knows Arabic to decide what is better.
|
Leaving it up to someone who knows Arabic to decide what is better.
|
||||||
Original here:
|
Original here:
|
||||||
<True,True> => (vStr t p) ++ vp.obj.s ++ vp.s2 ++ (pred t p) ;
|
<True,True> => (vStr t p) ++ vp.obj.s ++ vp.s2 ++ (pred t p) ;
|
||||||
-- ya2kuluhu
|
-- ya2kuluhu
|
||||||
<False,True> => (vStr t p) ++ vp.obj.s ++ vp.s2 ++ (pred t p); -}
|
<False,True> => (vStr t p) ++ vp.obj.s ++ vp.s2 ++ (pred t p); -}
|
||||||
@@ -111,31 +112,22 @@ concrete SentenceAra of Sentence = CatAra ** open
|
|||||||
-- EmbedVP vp = {s = infVP False vp (agrP3 Sg)} ; --- agr
|
-- EmbedVP vp = {s = infVP False vp (agrP3 Sg)} ; --- agr
|
||||||
--
|
--
|
||||||
|
|
||||||
--FIXME, all tenses
|
UseCl t p cl =
|
||||||
UseCl t ap cl =
|
{s = case <t.t,t.a> of { --- IL guessed tenses
|
||||||
{s = cl.s ! ResAra.Pres ! ap.p ! Verbal
|
<(Pres|Cond),Simul> => cl.s ! ResAra.Pres ! p.p ! Verbal ;
|
||||||
{- case t of {
|
<Fut ,_ > => cl.s ! ResAra.Fut ! p.p ! Verbal ;
|
||||||
TPres => cl.s ! ResAra.Pres ! p.p ! Verbal ;
|
<_ ,_ > => cl.s ! ResAra.Past ! p.p ! Verbal
|
||||||
TCond => cl.s ! ResAra.Pres ! p.p ! Verbal ;
|
}
|
||||||
TPast => cl.s ! ResAra.Past ! p.p ! Verbal ;
|
};
|
||||||
TFut => cl.s ! ResAra.Fut ! p.p ! Verbal
|
|
||||||
}
|
|
||||||
-} };
|
|
||||||
|
|
||||||
--FIXME, all tenses
|
UseQCl t p qcl =
|
||||||
UseQCl t ap qcl = --{s = cl.s ! t ! p ! Verbal } ;
|
{s = \\q =>
|
||||||
{s =
|
case <t.t,t.a> of { --- IL guessed tenses
|
||||||
table {
|
<(Pres|Cond),Simul> => qcl.s ! ResAra.Pres ! p.p ! q ;
|
||||||
QDir => qcl.s ! ResAra.Pres ! ap.p ! QDir;
|
<Fut ,_ > => qcl.s ! ResAra.Fut ! p.p ! q ;
|
||||||
QIndir => qcl.s ! ResAra.Pres ! ap.p ! QIndir
|
<_ ,_ > => qcl.s ! ResAra.Past ! p.p ! q
|
||||||
}
|
}
|
||||||
{- case t of {
|
};
|
||||||
TPres => "هَل" ++ qcl.s ! ResAra.Pres ! p.p ! q ;
|
|
||||||
TCond => "هَل" ++ qcl.s ! ResAra.Pres ! p.p ! q ;
|
|
||||||
TPast => "هَل" ++ qcl.s ! ResAra.Past ! p.p ! q ;
|
|
||||||
TFut => "هَل" ++ qcl.s ! ResAra.Fut ! p.p ! q
|
|
||||||
}
|
|
||||||
-} };
|
|
||||||
|
|
||||||
-- UseRCl t a p cl = {s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r} ;
|
-- UseRCl t a p cl = {s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r} ;
|
||||||
|
|
||||||
|
|||||||
@@ -97,13 +97,13 @@ concrete StructuralAra of Structural = CatAra **
|
|||||||
where_IAdv = ss "أَينَ" ;
|
where_IAdv = ss "أَينَ" ;
|
||||||
which_IQuant = {
|
which_IQuant = {
|
||||||
s = \\s,c => case <c,s> of {
|
s = \\s,c => case <c,s> of {
|
||||||
<Nom,Indef> => "أيٌّ" ;
|
<Nom,Indef> => "أيٌّ" ;
|
||||||
<Nom,_> => "أيُّ" ;
|
<Nom,_> => "أيُّ" ;
|
||||||
<Acc,Indef> => "أيّاً" ;
|
<Acc,Indef> => "أيّاً" ;
|
||||||
<Acc,_> => "أيَّ" ;
|
<Acc,_> => "أيَّ" ;
|
||||||
<Gen,Indef> => "أيٍّ" ;
|
<Gen,Indef> => "أيٍّ" ;
|
||||||
<Gen,_> => "أيِّ"
|
<Gen,_> => "أيِّ"
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
whoSg_IP = mkIP "مَنْ" Sg ;
|
whoSg_IP = mkIP "مَنْ" Sg ;
|
||||||
whoPl_IP = mkIP "مَنْ" Pl ;
|
whoPl_IP = mkIP "مَنْ" Pl ;
|
||||||
|
|||||||
@@ -46,4 +46,3 @@ oper
|
|||||||
{ pgn = Per3 Masc n ; isPron = False } ;
|
{ pgn = Per3 Masc n ; isPron = False } ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user