1
0
forked from GitHub/gf-rgl

Merge pull request #91 from inariksit/arabic

Arabic
This commit is contained in:
Inari Listenmaa
2018-12-01 00:06:48 +01:00
committed by GitHub
5 changed files with 43 additions and 17 deletions

View File

@@ -16,7 +16,7 @@ concrete IdiomAra of Idiom = CatAra ** open
in predVP it vp ;
-- : VP -> Cl ; -- one sleeps
GenericCl = predVP (regNP "المَرْء" Sg) ;
GenericCl = predVP (regNP "المَرْء" Sg Def) ;
-- : NP -> RS -> Cl ; -- it is I who did it
--CleftNP np rs =

View File

@@ -145,6 +145,8 @@ resource ParadigmsAra = open
degrA : (posit,compar,plur : Str) -> A ;
irregFemA : (masc : A) -> (fem : A) -> A ; -- adjective with irregular feminine. Takes two adjectives (masc. "regular" and fem. "regular") and puts them together.
--Takes a root string and a pattern string
sndA : (root,patt : Str) -> Adj ;
@@ -569,15 +571,6 @@ resource ParadigmsAra = open
proDrop : NP -> NP = \np -> lin NP (ResAra.proDrop np) ;
-- e.g. al-jamii3, 2a7ad
regNP : Str -> Number -> NP = \word,n -> lin NP (emptyNP ** {
s = \\c => fixShd word (dec1sg ! Def ! c)
});
-- e.g. hadha, dhaalika
indeclNP : Str -> Number -> NP = \word,n -> lin NP (emptyNP ** {
s = \\c => word
});
mkQuant7 : (_,_,_,_,_,_,_ : Str) -> State -> Quant =
\hava,havihi,havAn,havayn,hAtAn,hAtayn,hA'ulA,det -> lin Quant (baseQuant **
@@ -623,6 +616,8 @@ resource ParadigmsAra = open
degrA : (posit,compar,plur : Str) -> A
= \posit,compar,plur -> lin A {s = clr posit compar plur} ;
sndA root pat =
let raw = sndA' root pat in {
s = \\af =>
@@ -643,6 +638,13 @@ resource ParadigmsAra = open
}
};
irregFemA : (masc : A) -> (fem : A) -> A = \m,f -> m ** {
s = table {
APosit Masc n d c => m.s ! APosit Masc n d c ;
APosit Fem n d c => f.s ! APosit Masc n d c ; -- The fem. adjective is built as if the irregular fem. forms were Masc. This is on purpose.
x => m.s ! x }
} ;
nisbaA : Str -> Adj = \Haal ->
let Haaliyy = Haal + "ِيّ" in {
s = table {

View File

@@ -150,6 +150,16 @@ resource ResAra = PatternsAra ** open Prelude, Predef, OrthoAra, ParamX in {
Verb2 : Type = Verb ** {c2 : Preposition} ;
Verb3 : Type = Verb2 ** {c3 : Preposition} ;
-- Sometimes a verb is only used in one form (per3 masc sg);
-- ideally, one would use an impersonal syntactic construction,
-- less ideally, hardcode the verb to only contain forms of one person.
forcePerson : PerGenNum -> Verb -> Verb = \pgn,verb -> verb ** {
s = \\vf => case vf of {
VPerf v _ => verb.s ! VPerf v pgn ;
VImpf m v _ => verb.s ! VImpf m v pgn ;
_ => verb.s ! vf }
} ;
AP : Type = {s : Species => Gender => NTable } ;
uttAP : AP -> (Gender => Str) ;
uttAP ap = \\g => ap.s ! NoHum ! g ! Sg ! Def ! Nom ; ----IL
@@ -1376,6 +1386,17 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
agrNP : Agr -> NP = \agr -> emptyNP ** {a = agr} ;
-- e.g. al-jamii3, 2a7ad
regNP : Str -> Number -> State -> NP = \word,n,s ->
agrNP {pgn = Per3 Masc n ; isPron = False} ** {
s = \\c => fixShd word (dec1sg ! s ! c) ;
} ;
-- e.g. hadha, dhaalika
indeclNP : Str -> Number -> NP = \word,n -> emptyNP ** {
s = \\c => word
} ;
i_Pron : NP = mkPron "أَنَا" "نِي" "ي" (Per1 Sing) ;
we_Pron : NP = mkPron "نَحنُ" "نا" "نا" (Per1 Plur) ;
@@ -1701,6 +1722,7 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
Cl : Type = {s : Tense => Polarity => Order => Str} ;
QCl : Type = {s : Tense => Polarity => QForm => Str} ;
-- To override the default order; forces all orders in a Cl to be the chosen order.
forceOrder : Order -> Cl -> Cl = \o,cl ->
{s = \\t,p,_ => cl.s ! t ! p ! o} ;

View File

@@ -28,9 +28,9 @@ concrete StructuralAra of Structural = CatAra **
-- } ;
during_Prep = mkPrep "خِلَالَ" ;
-- either7or_DConj = sd2 "ِتهر" "ْر" ** {n = Sg} ;
everybody_NP = regNP "الجَمِيع" Pl ;
everybody_NP = regNP "الجَمِيع" Pl Def ;
every_Det = mkDet "كُلّ" Sg Const ;
everything_NP = regNP "كُلّ" Sg ;
everything_NP = regNP "كُلّ" Sg Def ;
-- everywhere_Adv = ss "ثريوهري" ;
few_Det = mkDet "بَعض" Pl Const ;
-- first_Ord = ss "فِرست" ;
@@ -72,10 +72,10 @@ concrete StructuralAra of Structural = CatAra **
-- quite_Adv = ss "قُِتي" ;
she_Pron = ResAra.she_Pron ;
-- so_AdA = ss "سْ" ;
somebody_NP = regNP "أَحَد" Sg ;
somebody_NP = regNP "أَحَد" Sg Indef ;
someSg_Det = mkDet "أَحَد" Sg Const ;
somePl_Det = mkDet "بَعض" Pl Const ;
something_NP = regNP "شَيْء" Sg ;
something_NP = regNP "شَيْء" Sg Indef ;
-- somewhere_Adv = ss "سْموهري" ;
that_Quant = mkQuant3 "ذَلِكَ" "تِلكَ" "أُلٱِكَ" Def;
that_Subj = mkSubj "أنَّ" ;
@@ -91,7 +91,7 @@ concrete StructuralAra of Structural = CatAra **
----b those_NP = indeclNP "هَؤُلَاءكَ" Pl ;
through_Prep = mkPrep "عَبْرَ" ;
-- too_AdA = ss "تّْ" ;
to_Prep = mkPrep "إِلى" ;
to_Prep = mkPrep "إِلَى" ;
under_Prep = mkPrep "تَحْتَ" ;
-- very_AdA = ss "ثري" ;
want_VV = mkVV (mkV "رود" FormIV) ;

View File

@@ -12,7 +12,9 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra, ParamX in {
vp ** {
s = v2vVP.s ;
agrObj = \\pgn => v2v.c3.s -- أَنْ
++ vp.s ! pgn ! VPImpf Cnj ; -- this will agree with the object added by ComplSlash
++ vp.s ! pgn ! VPImpf Cnj -- this will agree with the object added by ComplSlash
++ vp.obj.s ;
obj = emptyObj ;
isPred = False ;
c2 = v2v.c2 ; -- preposition for the direct object
sc = v2v.sc