1
0
forked from GitHub/gf-rgl

Merge pull request #40 from inariksit/master

Arabic
This commit is contained in:
Inari Listenmaa
2018-10-11 17:08:38 +02:00
committed by GitHub
4 changed files with 22 additions and 16 deletions

View File

@@ -73,8 +73,7 @@ flags
drink_V2 = dirV2 (regV "شَرِب") ; drink_V2 = dirV2 (regV "شَرِب") ;
-- drink_V2 = dirV2 (v1 "شرب" i a) ; -- drink_V2 = dirV2 (v1 "شرب" i a) ;
easy_A2V = mkA2 (sndA "سهل" "فَعل") "لِ" ; easy_A2V = mkA2 (sndA "سهل" "فَعل") "لِ" ;
eat_V2 = dirV2 (regV "يَ؟كُل") ; eat_V2 = dirV2 (mkV "ء‎كل" FormI) ;
-- eat_V2 = dirV2 (v1 "؟كل" a u) ;
empty_A = sndA "فرغ" "فاعِل" ; empty_A = sndA "فرغ" "فاعِل" ;
enemy_N = brkN "عدو" "فَعُلّ" "أَفعاء" Masc Hum ; enemy_N = brkN "عدو" "فَعُلّ" "أَفعاء" Masc Hum ;
factory_N = brkN "صنع" "مَفعَل" "مَفاعِل" Masc NoHum ; factory_N = brkN "صنع" "مَفعَل" "مَفاعِل" Masc NoHum ;

View File

@@ -4,12 +4,22 @@ flags coding=utf8 ;
oper oper
-- Definite article assimilation
vow : pattern Str = #("َ" | "ِ" | "ُ") ;
-- "Sun letters": assimilate with def. article
sun : pattern Str = #("ت"|"ث"|"د"|"ذ"|"ر"|"ز"|"س"|"ش"|"ص"|"ض"|"ط"|"ظ"|"ل"|"ن") ;
-- Hamza
hamza : pattern Str = #("ء‎"|"؟") ;
rectifyHmz: Str -> Str = \word -> rectifyHmz: Str -> Str = \word ->
case word of { case word of {
l@(""|"ال") + "؟" + v@("َ"|"ُ") + tail => l + "أ" + v + tail; l@(""|"ال") + #hamza + v@("َ"|"ُ") + tail => l + "أ" + v + tail;
l@(""|"ال") + "؟" + v@("ِ") + tail => l + "إ" + v + tail; l@(""|"ال") + #hamza + v@("ِ") + tail => l + "إ" + v + tail;
head + v1@("ِ"|"ُ"|"َ"|"ْ"|"ا"|"ي"|"و") + "؟" + v2@(""|"ُ"|"َ"|"ْ"|"ِ") => head + v1 + (tHmz v1) + v2; head + v1@("ِ"|"ُ"|"َ"|"ْ"|"ا"|"ي"|"و") + #hamza + v2@(""|"ُ"|"َ"|"ْ"|"ِ") => head + v1 + (tHmz v1) + v2;
head + "؟" + tail => head + (bHmz (dp 2 head) (take 2 tail)) + tail; --last head , take 1 tail head + #hamza + tail => head + (bHmz (dp 2 head) (take 2 tail)) + tail; --last head , take 1 tail
_ => word _ => word
}; };

View File

@@ -274,7 +274,7 @@ resource ParadigmsAra = open
let { raw = v1' rootStr vPerf vImpf } in let { raw = v1' rootStr vPerf vImpf } in
{ s = \\vf => { s = \\vf =>
case rootStr of { case rootStr of {
_ + "؟" + _ => rectifyHmz(raw.s ! vf); _ + #hamza + _ => rectifyHmz(raw.s ! vf);
_ => raw.s ! vf _ => raw.s ! vf
}; };
lock_V = <> lock_V = <>
@@ -336,7 +336,7 @@ resource ParadigmsAra = open
let { raw = v5' rootStr } in let { raw = v5' rootStr } in
{ s = \\vf => { s = \\vf =>
case rootStr of { case rootStr of {
_ + "؟" + _ => rectifyHmz(raw.s ! vf); _ + #hamza + _ => rectifyHmz(raw.s ! vf);
_ => raw.s ! vf _ => raw.s ! vf
}; };
lock_V = <> lock_V = <>
@@ -396,7 +396,7 @@ resource ParadigmsAra = open
let { raw = brkN' root sg pl gen spec} in let { raw = brkN' root sg pl gen spec} in
{ s = \\n,d,c => { s = \\n,d,c =>
case root of { case root of {
_ + "؟" + _ => rectifyHmz(raw.s ! n ! d ! c); _ + #hamza + _ => rectifyHmz(raw.s ! n ! d ! c);
_ => raw.s ! n ! d ! c _ => raw.s ! n ! d ! c
}; };
g = gen; g = gen;
@@ -491,7 +491,7 @@ resource ParadigmsAra = open
let raw = sndA' root pat in { let raw = sndA' root pat in {
s = \\af => s = \\af =>
case root of { case root of {
_ + "؟" + _ => rectifyHmz(raw.s ! af); _ + #hamza + _ => rectifyHmz(raw.s ! af);
_ => raw.s ! af _ => raw.s ! af
}; };
lock_A = <> lock_A = <>

View File

@@ -7,7 +7,7 @@
---- implement $Test$, it moreover contains regular lexical ---- implement $Test$, it moreover contains regular lexical
---- patterns needed for $Lex$. ---- patterns needed for $Lex$.
-- --
resource ResAra = PatternsAra ** open Prelude, Predef, ParamX in { resource ResAra = PatternsAra ** open Prelude, Predef, OrthoAra, ParamX in {
flags optimize=noexpand ; coding=utf8 ; flags optimize=noexpand ; coding=utf8 ;
@@ -94,7 +94,8 @@ 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 (mkRoot3 rS) ; --3=> -- 6 | 5 => mkWeak pat (mkRoot3 rS) ; --3=>
6 | 5 => mkHollow 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"
} }
@@ -880,10 +881,6 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
_ => "" _ => ""
}; };
-- "Sun letters": assimilate with def. article
sun : pattern Str = #("ت"|"ث"|"د"|"ذ"|"ر"|"ز"|"س"|"ش"|"ص"|"ض"|"ط"|"ظ"|"ل"|"ن") ;
vow : pattern Str = #("َ" | "ِ" | "ُ") ;
defArt : State -> Str -> Str = \st,stem -> -- IL -- to be checked defArt : State -> Str -> Str = \st,stem -> -- IL -- to be checked
let al = "ال" in let al = "ال" in
case st of { case st of {