1
0
forked from GitHub/gf-rgl

Merge pull request #30 from inariksit/arabic

Arabic
This commit is contained in:
Inari Listenmaa
2018-10-02 15:35:16 +02:00
committed by GitHub
5 changed files with 28 additions and 20 deletions

View File

@@ -330,7 +330,7 @@ flags
wind_N = brkN "ريح" "فِعل" "فِعال" Fem NoHum;
wing_N = brkN "جنح" "فَعال" "أَفعِلة" Masc NoHum ;
worm_N = brkN "دود" "فُعلة" "فِيعان" Fem NoHum ;
year_N = sdfN "سن" "فَعة" Fem NoHum ;
year_N = mkN "سَنَة" "سَنَوَات" Fem NoHum ;
blow_V = regV "يَنفُخ" ;
breathe_V = dirV2 (v5 "نفس") ;

View File

@@ -159,7 +159,7 @@ resource ParadigmsAra = open
= regV ;
mkV : (root : Str) -> (perf,impf : Vowel) -> V -- verb form I ; vowel = a|i|u
= v1 ;
mkV : (root : Str) -> VerbForm -> V -- FormI .. FormVIII (no VII) ; default vowels a u for I
mkV : (root : Str) -> VerbForm -> V -- FormI .. FormX (no VII, IX) ; default vowels a u for I
= formV ;
} ;
@@ -195,6 +195,8 @@ resource ParadigmsAra = open
v8 : Str -> V ;
-- Verb Form X 'istaf`ala
v10 : Str -> V ;
--3 Two-place verbs
@@ -536,7 +538,7 @@ resource ParadigmsAra = open
mkVS v = v ** {lock_VS = <>} ;
mkVQ v = v ** {lock_VQ = <>} ;
regVV : V -> VV = \v -> lin VV v ** {c2 = []} ;
regVV : V -> VV = \v -> lin VV v ** {c2 = "أَنْ"} ;
c2VV : V -> Str -> VV = \v,prep -> regVV v ** {c2 = prep} ;
V0 : Type = V ;
@@ -557,8 +559,9 @@ resource ParadigmsAra = open
mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
smartN : Str -> N = \s -> case last s of {
"ة" => mkFullN (sndf s) Fem NoHum ;
smartN : Str -> N = \s -> case s of {
_ + "ة" => mkFullN (sndf s) Fem NoHum ;
_ + "ة" + #vow => mkFullN (sndf s) Fem NoHum ;
_ => mkFullN (sndm s) Masc NoHum
} ;

View File

@@ -856,6 +856,8 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
\caSaA ->
case caSaA of {
lemma + ("ا"|"ى") => \\s,c => defArt s lemma + "ي" + dl ! s ! c ;
lemma + "ة" =>
\\s,c => defArt s (lemma + "ت") + dl ! s ! c ;
_ => \\s,c => defArt s caSaA + dl ! s ! c
};
@@ -953,12 +955,12 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
Const =>
table {
Nom => "َا";
_ => "َي"
_ => "َيْ‎"
};
_ =>
table {
Nom => "َانِ";
_ => "َينِ"
_ => "َيْنِ"
}
};
@@ -1189,6 +1191,8 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
isPred = False
};
predVSlash : Verb ** {c2 : Str} -> VPSlash = \v ->
predV v ** {c2 = v.c2} ;
-- in verbal sentences, the verb agrees with the subject
-- in Gender but not in number
@@ -1198,8 +1202,8 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
_ => pgn
};
insertObj : NP -> VP -> VP = \np,vp -> vp **
{ obj = {s = np.s ! Acc ; a = np.a} };
insertObj : NP -> VPSlash -> VP = \np,vp -> vp **
{ obj = {s = vp.obj.s ++ vp.c2 ++ np.s ! Acc ; a = np.a} };
insertPred : {s : AAgr => Case => Str} -> VP -> VP = \p,vp -> vp **
{ pred = p;

View File

@@ -20,7 +20,8 @@ concrete StructuralAra of Structural = CatAra **
-- but_PConj = ss "بُت" ;
by8agent_Prep = ss "بِ" ;
by8means_Prep = ss "بِ" ;
-- can8know_VV, can_VV = {
can_VV = mkVV (mkV "طوع" FormX) ;
-- can8know_VV = {
-- s = table VVForm [["بي َبلي تْ"] ; "عَن" ; "عُْلد" ;
-- ["بّن َبلي تْ"] ; ["بِنغ َبلي تْ"] ; "عَنءت" ; "عُْلدنءت"] ;
-- isAux = True
@@ -50,7 +51,7 @@ concrete StructuralAra of Structural = CatAra **
-- more_CAdv = ss "مْري" ;
most_Predet = mkPredet "أَكثَر" True ;
much_Det = mkDet "الكَثِير مِنَ" Pl Const ;
must_VV = mkVV (v1 "وجب" a i) "أن" ;
must_VV = mkVV (v1 "وجب" a i) ;
-- s = table VVForm [["بي هَثي تْ"] ; "مُست" ; ["هَد تْ"] ;
-- ["هَد تْ"] ; ["هَثِنغ تْ"] ; "مُستنءت" ; ["هَدنءت تْ"]] ; ----
-- isAux = True

View File

@@ -6,8 +6,8 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra in {
UseV = predV ;
SlashVV vv vps = vps ** predV vv ; ----IL
SlashV2a v = predV v ** {c2 = v.c2};
Slash3V3 v np = insertObj np (predV v) ** {c2 = v.c2};
SlashV2a v = predVSlash v ;
Slash3V3 v np = insertObj np (predVSlash v) ** {c2 = v.c3};
ComplSlash vp np = insertObj np vp ;
@@ -17,12 +17,12 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra in {
a = {pgn = Per3 Masc Sg ; isPron = False} } --FIXME
(predV v) ;-}
ComplVV vv vp = --- IL
predV vv ** {
s2 = vv.c2 ; -- add the preposition of the VV. TODO: do we need a separate field in the VP?
pred = compVP vp ; -- add VP complement in pred. TODO: what agreement features are needed?
isPred = False } ; {- Despite verb complement being in pred, it's not predicative.
Changing this to True causes PredVP to not include the verb. -}
ComplVV vv vp = let vvVP = predV vv in --- IL
vp ** {
s = \\pgn,vpf => vvVP.s ! pgn ! vpf
++ vv.c2 -- أَنْ‎
++ vp.s ! pgn ! VPImpf Cnj
} ;
-- ComplVS v s = insertObj (\\_ => conjThat ++ s.s) (predV v) ;
-- ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ;