forked from GitHub/gf-rgl
Merge branch 'master' of https://github.com/GrammaticalFramework/gf-rgl
This commit is contained in:
@@ -47,7 +47,7 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in {
|
|||||||
|
|
||||||
-- Noun
|
-- Noun
|
||||||
|
|
||||||
CN = ResAra.Noun ** {adj : NTable};
|
CN = ResAra.CN;
|
||||||
NP, Pron = ResAra.NP; --{s : Case => Str ; a : Agr } ;
|
NP, Pron = ResAra.NP; --{s : Case => Str ; a : Agr } ;
|
||||||
Num,
|
Num,
|
||||||
Ord,
|
Ord,
|
||||||
@@ -57,10 +57,7 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in {
|
|||||||
Det = ResAra.Det ;
|
Det = ResAra.Det ;
|
||||||
-- {s : Species => Gender => Case => Str ;
|
-- {s : Species => Gender => Case => Str ;
|
||||||
-- d : State; n : Size; isNum : Bool } ;
|
-- d : State; n : Size; isNum : Bool } ;
|
||||||
Quant = {s : ResAra.Number => Species => Gender => Case => Str;
|
Quant = ResAra.Quant ;
|
||||||
d : State;
|
|
||||||
isNum : Bool;
|
|
||||||
isPron: Bool} ;
|
|
||||||
Art = {s : ResAra.Number => Species => Gender => Case => Str;
|
Art = {s : ResAra.Number => Species => Gender => Case => Str;
|
||||||
d : State} ;
|
d : State} ;
|
||||||
|
|
||||||
@@ -93,4 +90,8 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in {
|
|||||||
N3 = ResAra.Noun ** {c2, c3 : Str} ;
|
N3 = ResAra.Noun ** {c2, c3 : Str} ;
|
||||||
PN = {s : Case => Str; g : Gender; h : Species} ;
|
PN = {s : Case => Str; g : Gender; h : Species} ;
|
||||||
|
|
||||||
|
linref
|
||||||
|
|
||||||
|
CN = \cn -> uttCN cn ! Masc ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,16 +11,16 @@ flags
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
airplane_N = sdfN "ط؟ر" "فاعِلة" Fem NoHum ;
|
airplane_N = sdfN "طءر" "فاعِلة" Fem NoHum ;
|
||||||
answer_V2S = dirV2 (v3 "جوب") ;
|
answer_V2S = dirV2 (v3 "جوب") ;
|
||||||
apartment_N = brkN "شقّ" "فِعّة" "فِعَل" Fem NoHum ;
|
apartment_N = brkN "شقّ" "فِعّة" "فِعَل" Fem NoHum ;
|
||||||
apple_N = sdfN "تفح" "فِعّالة" Fem NoHum ;
|
apple_N = sdfN "تفح" "فِعّالة" Fem NoHum ;
|
||||||
art_N = brkN "فنّ" "فَعّ" "فُعُول" Masc NoHum ;
|
art_N = brkN "فنن" "فَعّ" "فُعُول" Masc NoHum ;
|
||||||
ask_V2Q = dirV2 (regV "يَس؟َل") ;
|
ask_V2Q = dirV2 (regV "يَسءَل") ;
|
||||||
-- ask_V2Q = dirV2 (v1 "س؟ل" a a) ;
|
-- ask_V2Q = dirV2 (v1 "سءل" a a) ;
|
||||||
baby_N = brkN "طفل" "فِعل" "أَفعال" Masc Hum;
|
baby_N = brkN "طفل" "فِعل" "أَفعَال" Masc Hum;
|
||||||
-- bad_A = sndA "سو؟" "فَيِّع" ;
|
-- bad_A = sndA "سوء" "فَيِّع" ;
|
||||||
bad_A = mkA "سَيِّئ" "سَيِّئَة" "سَيِّئِين" ;
|
bad_A = degrA "سَيِّئ" "سَيِّئَة" "سَيِّئِين" ;
|
||||||
bank_N = brkN "بنك" "فَعل" "فُعُول" Masc NoHum ;
|
bank_N = brkN "بنك" "فَعل" "فُعُول" Masc NoHum ;
|
||||||
beautiful_A = sndA "جمل" "فَعِيل" ;
|
beautiful_A = sndA "جمل" "فَعِيل" ;
|
||||||
become_VA = mkVA (v4 "صبح") ;
|
become_VA = mkVA (v4 "صبح") ;
|
||||||
@@ -32,89 +32,90 @@ flags
|
|||||||
black_A = clrA "سود" ;
|
black_A = clrA "سود" ;
|
||||||
blue_A = clrA "زرق" ;
|
blue_A = clrA "زرق" ;
|
||||||
boat_N = brkN "قرب" "فاعِل" "فَواعِل" Masc NoHum ;
|
boat_N = brkN "قرب" "فاعِل" "فَواعِل" Masc NoHum ;
|
||||||
book_N = brkN "كتب" "فِعال" "فُعُل" Masc NoHum ;
|
book_N = brkN "كتب" "فِعَال" "فُعُل" Masc NoHum ;
|
||||||
boot_N = sdfN "جزم" "فَعلة" Fem NoHum ;
|
boot_N = sdfN "جزم" "فَعلة" Fem NoHum ;
|
||||||
boss_N = brkN "دور" "مُفِيع" "مُفَعاء" Masc Hum ;
|
boss_N = sdmN "دور" "مُفِيع" Masc Hum ;
|
||||||
|
--boss_N = brkN "دور" "مُفِيع" "مُفَعَاء" Masc Hum ;
|
||||||
boy_N = brkN "صبي" "فَعِل" "فُعلان" Masc Hum ;
|
boy_N = brkN "صبي" "فَعِل" "فُعلان" Masc Hum ;
|
||||||
bread_N = brkN "خبز" "فُعل" "أَفعال" Masc NoHum ;
|
bread_N = brkN "خبز" "فُعل" "أَفعَال" Masc NoHum ;
|
||||||
break_V2 = dirV2 (regV "يَكسُر") ;
|
break_V2 = dirV2 (regV "يَكسُر") ;
|
||||||
-- break_V2 = dirV2 (v1 "كسر" a u) ;
|
-- break_V2 = dirV2 (v1 "كسر" a u) ;
|
||||||
broad_A = sndA "وسع" "فاعِل" ;
|
broad_A = sndA "وسع" "فاعِل" ;
|
||||||
brother_N2 = mkN2 (brkN "؟خو" "فَع" "فِعلة" Masc Hum) ; --FIXME
|
brother_N2 = mkN2 (brkN "ءخو" "فَع" "فِعلة" Masc Hum) ; --FIXME dual
|
||||||
brown_A = sndA "بني" "فُعِّل";
|
brown_A = sndA "بني" "فُعِّل";
|
||||||
butter_N = sdfN "سبد" "فُعلة" Fem NoHum ;
|
butter_N = sdfN "سبد" "فُعلة" Fem NoHum ;
|
||||||
buy_V2 = dirV2 (v8 "شري") ;
|
buy_V2 = dirV2 (v8 "شري") ;
|
||||||
camera_N = sdfN "كمر" "فاعِيلا" Fem NoHum ; -- |Alö taSwIr
|
camera_N = sdfN "كمر" "فاعِيلا" Fem NoHum ; -- |Alö taSwIr
|
||||||
cap_N = sdfN "قبع" "فُعَّلة" Fem NoHum ; --qalnUsö
|
cap_N = sdfN "قبع" "فُعَّلة" Fem NoHum ; --qalnUsö
|
||||||
car_N = sdfN "سير" "فَعّالة" Fem NoHum ;
|
car_N = sdfN "سير" "فَعّالة" Fem NoHum ;
|
||||||
carpet_N = sdfN "سجد" "فَعّالة" Fem NoHum ;
|
carpet_N = sdfN "سجد" "فَعّالة" Fem NoHum ;
|
||||||
cat_N = brkN "هرّ" "فِعّة" "فِعَل" Fem NoHum ;
|
cat_N = brkN "هرّ" "فِعّ" "فِعَلَة" Fem NoHum ;
|
||||||
ceiling_N = brkN "سقف" "فَعل" "أَفعُل" Masc NoHum ;
|
ceiling_N = brkN "سقف" "فَعل" "أَفعُل" Masc NoHum ;
|
||||||
chair_N = brkN "كرس" "فُعلِي" "فَعالِي" Masc NoHum ;
|
chair_N = brkN "كرس" "فُعلِي" "فَعَالِي" Masc NoHum ;
|
||||||
cheese_N = brkN "جبن" "فُعلة" "أَفعال" Fem NoHum ;
|
cheese_N = brkN "جبن" "فُعلة" "أَفعَال" Fem NoHum ;
|
||||||
child_N = brkN "ولد" "فَعَل" "أَفعال" Masc Hum ;
|
child_N = brkN "ولد" "فَعَل" "أَفعَال" Masc Hum ;
|
||||||
church_N = brkN "كنس" "فَعِيلة" "فَعاٱِل" Fem Hum ;
|
church_N = brkN "كنس" "فَعِيلة" "فَعَاٱِل" Fem Hum ;
|
||||||
city_N = brkN "مدن" "فَعِيلة" "فُعُل" Fem NoHum ;
|
city_N = brkN "مدن" "فَعِيلة" "فُعُل" Fem NoHum ;
|
||||||
clean_A = sndA "نظف" "فَعِيل" ;
|
clean_A = sndA "نظف" "فَعِيل" ;
|
||||||
clever_A = sndA "جهد" "مُفتَعِل" ;
|
clever_A = sndA "جهد" "مُفتَعِل" ;
|
||||||
close_V2 = dirV2 (v4 "غلق") ;
|
close_V2 = dirV2 (v4 "غلق") ;
|
||||||
coat_N = brkN "عطف" "مِفعَل" "مَفاعِل" Masc NoHum ;
|
coat_N = brkN "عطف" "مِفعَل" "مَفاعِل" Masc NoHum ;
|
||||||
cold_A = sndA "برد" "فاعِل" ;
|
cold_A = sndA "برد" "فاعِل" ;
|
||||||
come_V = v1 "جي؟" a i ; --check
|
come_V = v1 "جيء" a i ; --check
|
||||||
computer_N = brkN "حسب" "فاعُول" "فَواعِيل" Masc NoHum ;
|
computer_N = brkN "حسب" "فاعُول" "فَواعِيل" Masc NoHum ;
|
||||||
country_N = brkN "بلد" "فَعَل" "فِعال" Masc NoHum ;
|
country_N = brkN "بلد" "فَعَل" "فِعَال" Masc NoHum ;
|
||||||
cousin_N = brkN "قرب" "فَعِيل" "أَفعِلاء" Masc Hum ; -- (<bn / bnt) (cam[ö] / xAl[ö])
|
cousin_N = brkN "قرب" "فَعِيل" "أَفعِلاء" Masc Hum ; -- (<bn / bnt) (cam[ö] / xAl[ö])
|
||||||
cow_N = sdfN "بقر" "فَعلة" Fem NoHum ;
|
cow_N = sdfN "بقر" "فَعلة" Fem NoHum ;
|
||||||
die_V = v1 "موت" a u ; --check
|
die_V = v1 "موت" a u ; --check
|
||||||
dirty_A = sndA "وسخ" "فَعِل" ;
|
dirty_A = sndA "وسخ" "فَعِل" ;
|
||||||
distance_N3 = mkN3 (sdfN "سوف" "مَفاعة" Fem NoHum) "مِن" "إِلَى" ;
|
distance_N3 = mkN3 (sdfN "سوف" "مَفاعة" Fem NoHum) "مِن" "إِلَى" ;
|
||||||
doctor_N = brkN "طبّ" "فَعِيل" "أَفِعّاء" Masc Hum ;
|
doctor_N = brkN "طبب" "فَعِيل" "أَفِعّاء" Masc Hum ;
|
||||||
dog_N = brkN "كلب" "فَعل" "فِعال" Masc NoHum ;
|
dog_N = brkN "كلب" "فَعل" "فِعَال" Masc NoHum ;
|
||||||
door_N = brkN "بوب" "فاع" "أَفعال" Masc NoHum ;
|
door_N = brkN "بوب" "فاع" "أَفعَال" Masc NoHum ;
|
||||||
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 (mkV "ءكل" FormI) ;
|
eat_V2 = dirV2 (mkV "ءكل" FormI) ;
|
||||||
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 ;
|
||||||
father_N2 = mkN2 (brkN "؟ب" "فَع" "أَفعاء" Masc Hum);
|
father_N2 = mkN2 (brkN "ءب" "فَع" "أَفعَاء" Masc Hum);
|
||||||
fear_VS = mkVS (v1 "خشي" i a );
|
fear_VS = mkVS (v1 "خشي" i a );
|
||||||
find_V2 = dirV2 (v1 "وجد" a i ) ;
|
find_V2 = dirV2 (v1 "وجد" a i ) ;
|
||||||
fish_N = brkN "سمك" "فَعَلة" "أَفعال" Fem NoHum ;
|
fish_N = brkN "سمك" "فَعَلة" "أَفعَال" Fem NoHum ;
|
||||||
floor_N = brkN "؟رض" "فَعل" "فَعالِي" Fem NoHum;
|
floor_N = brkN "ءرض" "فَعل" "فَعَالِي" Fem NoHum;
|
||||||
forget_V2 = dirV2 (v1 "نسي" i a ) ;
|
forget_V2 = dirV2 (v1 "نسي" i a ) ;
|
||||||
fridge_N = sdfN "برد" "فَعّال" Masc NoHum ;
|
fridge_N = sdfN "برد" "فَعّال" Masc NoHum ;
|
||||||
friend_N = brkN "صدق" "فَعِيل" "أَفعِلاء" Masc Hum ; --SadIqö
|
friend_N = brkN "صدق" "فَعِيل" "أَفعِلاء" Masc Hum ; --SadIqö
|
||||||
fruit_N = brkN "فكه" "فاعِلة" "فَواعِل" Fem NoHum ;
|
fruit_N = brkN "فكه" "فاعِلة" "فَواعِل" Fem NoHum ;
|
||||||
fun_AV = sndA "متع" "مُفعِل" ;
|
fun_AV = sndA "متع" "مُفعِل" ;
|
||||||
garden_N = brkN "حدق" "فَعِيلة" "فَعاٱِل" Fem NoHum ;
|
garden_N = brkN "حدق" "فَعِيلة" "فَعَاٱِل" Fem NoHum ;
|
||||||
girl_N = brkN "بنت" "فِعل" "فَعال" Fem Hum ;
|
girl_N = brkN "بنت" "فِعل" "فَعَال" Fem Hum ;
|
||||||
glove_N = sdfN "قفز" "فُعّال" Masc NoHum ;
|
glove_N = sdfN "قفز" "فُعّال" Masc NoHum ;
|
||||||
gold_N = sdfN "ذهب" "فَعَل" Masc NoHum ;
|
gold_N = sdfN "ذهب" "فَعَل" Masc NoHum ;
|
||||||
good_A = sndA "جود" "فَيِّع" ; -- Hasan, HisAn
|
good_A = sndA "جود" "فَيِّع" ; -- Hasan, HisAn
|
||||||
go_V = regV "يَذهَب" ;
|
go_V = regV "يَذهَب" ;
|
||||||
-- go_V = v1 "ذهب" a a ;
|
-- go_V = v1 "ذهب" a a ;
|
||||||
green_A = clrA "خضر" ;
|
green_A = clrA "خضر" ;
|
||||||
harbour_N = brkN "رف؟" "مَفعَل" "مَفاعِل" Masc NoHum ; --mInA', marsaY
|
harbour_N = brkN "رفء" "مَفعَل" "مَفاعِل" Masc NoHum ; --mInA', marsaY
|
||||||
hate_V2 = dirV2 (regV "كَرِه") ;
|
hate_V2 = dirV2 (regV "كَرِه") ;
|
||||||
hat_N = sdfN "قبع" "فُعَّلة" Fem NoHum ;
|
hat_N = sdfN "قبع" "فُعَّلة" Fem NoHum ;
|
||||||
-- have_V2 = dirV2 (v1 "ملك" a i) ;
|
-- have_V2 = dirV2 (v1 "ملك" a i) ;
|
||||||
hear_V2 = dirV2 (regV "سَمِع") ;
|
hear_V2 = dirV2 (regV "سَمِع") ;
|
||||||
-- hear_V2 = dirV2 (v1 "سمع" i a) ;
|
-- hear_V2 = dirV2 (v1 "سمع" i a) ;
|
||||||
hill_N = brkN "هضب" "فَعلة" "فِعال" Fem NoHum ; --tallö, rAbiyö
|
hill_N = brkN "هضب" "فَعلة" "فِعَال" Fem NoHum ; --tallö, rAbiyö
|
||||||
hope_VS = mkVS (v1 "رجو" a u) ; --check
|
hope_VS = mkVS (v1 "رجو" a u) ; --check
|
||||||
horse_N = brkN "حصن" "فِعال" "أَفعِلة" Masc NoHum ;
|
horse_N = brkN "حصن" "فِعَال" "أَفعِلة" Masc NoHum ;
|
||||||
hot_A = sndA "سخن" "فاعِل" ; --HAr
|
hot_A = sndA "سخن" "فاعِل" ; --HAr
|
||||||
house_N = brkN "بيت" "فَعل" "فُعُول" Masc NoHum ; --manzil
|
house_N = brkN "بيت" "فَعل" "فُعُول" Masc NoHum ; --manzil
|
||||||
important_A = sndA "هيم" "فاعّ" ;
|
important_A = sndA "هيم" "فاعّ" ;
|
||||||
industry_N = sdfN "صنع" "فِعالة" Fem NoHum ;
|
industry_N = sdfN "صنع" "فِعَالة" Fem NoHum ;
|
||||||
iron_N = brkN "حدّ" "فَعِيل" "فَعائِل" Masc NoHum ;
|
iron_N = brkN "حدد" "فَعِيل" "فَعَائِل" Masc NoHum ;
|
||||||
king_N = brkN "ملك" "فَعِل" "فُعُول" Masc Hum ;
|
king_N = brkN "ملك" "فَعِل" "فُعُول" Masc Hum ;
|
||||||
know_V2 = dirV2 (regV "عَرِف") ;
|
know_V2 = dirV2 (regV "عَرِف") ;
|
||||||
know_VS = mkVS (regV "عَرِف") ; -- or with ع ل م?
|
know_VS = mkVS (regV "عَرِف") ; -- or with ع ل م?
|
||||||
lake_N = sdfN "بحر" "فُعَيلة" Fem NoHum ;
|
lake_N = sdfN "بحر" "فُعَيلة" Fem NoHum ;
|
||||||
lamp_N = brkN "صبح" "مِفعال" "مَفاعِيل" Masc NoHum ; --qanDIl, fAnUs
|
lamp_N = brkN "صبح" "مِفعَال" "مَفاعِيل" Masc NoHum ; --qanDIl, fAnUs
|
||||||
learn_V2 = dirV2 (v5 "علم") ;
|
learn_V2 = dirV2 (v5 "علم") ;
|
||||||
leather_N = brkN "جلد" "فِعل" "فُعُول" Masc NoHum ;
|
leather_N = brkN "جلد" "فِعل" "فُعُول" Masc NoHum ;
|
||||||
leave_V2 = dirV2 (regV "يَترُك") ;
|
leave_V2 = dirV2 (regV "يَترُك") ;
|
||||||
@@ -128,16 +129,16 @@ flags
|
|||||||
-- lose_V2 = dirV2 (v1 "خسر" i a) ; --Dayyac, >aDAc
|
-- lose_V2 = dirV2 (v1 "خسر" i a) ; --Dayyac, >aDAc
|
||||||
love_N = brkN "حبّ" "فُعّ" "فُعّ" Masc NoHum ; -- no plur
|
love_N = brkN "حبّ" "فُعّ" "فُعّ" Masc NoHum ; -- no plur
|
||||||
love_V2 = dirV2 (v1 "حبّ" a i) ;
|
love_V2 = dirV2 (v1 "حبّ" a i) ;
|
||||||
man_N = brkN "رجل" "فَعُل" "فِعال" Masc Hum ;
|
man_N = brkN "رجل" "فَعُل" "فِعَال" Masc Hum ;
|
||||||
married_A2 = mkA2 (sndA "زوج" "مُتَفَعِّل") "مِن" ;
|
married_A2 = mkA2 (sndA "زوج" "مُتَفَعِّل") "مِن" ;
|
||||||
meat_N = brkN "لحم" "فَعلة" "فُعُول" Masc NoHum ;
|
meat_N = brkN "لحم" "فَعلة" "فُعُول" Masc NoHum ;
|
||||||
milk_N = brkN "حلب" "فَعِيل" "فَعِيل" Masc NoHum ; --no plur
|
milk_N = brkN "حلب" "فَعِيل" "فَعِيل" Masc NoHum ; --no plur
|
||||||
moon_N = brkN "قمر" "فَعَل" "أَفعال" Masc NoHum ;
|
moon_N = brkN "قمر" "فَعَل" "أَفعَال" Masc NoHum ;
|
||||||
mother_N2 = mkN2 (sdfN "؟م" "فُعّ" Fem Hum) ;
|
mother_N2 = mkN2 (sdfN "ءم" "فُعَّ" Fem Hum) ;
|
||||||
mountain_N = brkN "جبل" "فَعَل" "فِعال" Masc NoHum ;
|
mountain_N = brkN "جبل" "فَعَل" "فِعَال" Masc NoHum ;
|
||||||
music_N = mkN (reg "مُوسِيقَى" "مُوسِيقَى") Fem NoHum ; --no plur
|
music_N = mkN (reg "مُوسِيقَى" "مُوسِيقَى") Fem NoHum ; --no plur
|
||||||
narrow_A = sndA "ضيق" "فَعِّل" ;
|
narrow_A = sndA "ضيق" "فَعِّل" ;
|
||||||
new_A = sndA "جدّ" "فَعِيل" ;
|
new_A = mkA "جدد" "فَعِيل" "فُعُل" ;
|
||||||
newspaper_N = brkN "صحف" "فَعِيلة" "فُعُل" Fem NoHum ;
|
newspaper_N = brkN "صحف" "فَعِيلة" "فُعُل" Fem NoHum ;
|
||||||
oil_N = brkN "زيت" "فَعل" "فُعُول" Masc NoHum ;
|
oil_N = brkN "زيت" "فَعل" "فُعُول" Masc NoHum ;
|
||||||
old_A = sndA "قدم" "فَعِيل" ;
|
old_A = sndA "قدم" "فَعِيل" ;
|
||||||
@@ -145,30 +146,30 @@ flags
|
|||||||
-- open_V2 = dirV2 (v1 "فتح" a a ) ;
|
-- open_V2 = dirV2 (v1 "فتح" a a ) ;
|
||||||
paint_V2A = mkV2A (regV "يَدهَن" ) [] ;
|
paint_V2A = mkV2A (regV "يَدهَن" ) [] ;
|
||||||
-- paint_V2A = mkV2A (v1 "دهن" a a ) [] ;
|
-- paint_V2A = mkV2A (v1 "دهن" a a ) [] ;
|
||||||
paper_N = brkN "ورق" "فَعَلة" "أَفعال" Fem NoHum ;
|
paper_N = brkN "ورق" "فَعَلة" "أَفعَال" Fem NoHum ;
|
||||||
paris_PN = mkPN "بارِيس" Fem NoHum ;
|
paris_PN = mkPN "بارِيس" Fem NoHum ;
|
||||||
peace_N = brkN "سلم" "فَعال" "فَعال" Masc NoHum; --no plur
|
peace_N = brkN "سلم" "فَعَال" "فَعَال" Masc NoHum; --no plur
|
||||||
pen_N = brkN "قلم" "فَعَل" "أَفعال" Masc NoHum;
|
pen_N = brkN "قلم" "فَعَل" "أَفعَال" Masc NoHum;
|
||||||
planet_N = mkN (reg "كَوكَب" "كَواكِب") Masc NoHum ; -- quadriconsonantal
|
planet_N = mkN (reg "كَوكَب" "كَواكِب") Masc NoHum ; -- quadriconsonantal
|
||||||
plastic_N = mkN (sndf "بلاستِيك") Masc NoHum ;
|
plastic_N = mkN (sndf "بلاستِيك") Masc NoHum ;
|
||||||
play_V2 = dirV2 (regV "لَعِب") ;
|
play_V2 = dirV2 (regV "لَعِب") ;
|
||||||
-- play_V2 = dirV2 (v1 "لعب" i a) ;
|
-- play_V2 = dirV2 (v1 "لعب" i a) ;
|
||||||
policeman_N = sdmN "شرط" "فِعلِي" Masc Hum ;
|
policeman_N = sdmN "شرط" "فِعلِي" Masc Hum ;
|
||||||
priest_N = brkN "قسّ" "فِعِّيل" "أَفِعّة" Masc Hum ;
|
priest_N = brkN "قسّ" "فِعِّيل" "أَفِعّة" Masc Hum ;
|
||||||
probable_AS = mkAS (sndA "مكن" "مُفعِل") ;
|
probable_AS = mkAS (sndA "مكن" "مُفعِل") ;
|
||||||
queen_N = sdfN "ملك" "فَعِلة" Fem Hum ;
|
queen_N = sdfN "ملك" "فَعِلة" Fem Hum ;
|
||||||
radio_N = mkN (sndf "راديُو") Masc NoHum ;
|
radio_N = mkN (sndf "راديُو") Masc NoHum ;
|
||||||
rain_V0 = mkV0 (regV "يَمطُر") ;
|
rain_V0 = mkV0 (regV "يَمطُر") ;
|
||||||
-- rain_V0 = mkV0 (v1 "مطر" a u) ;
|
-- rain_V0 = mkV0 (v1 "مطر" a u) ;
|
||||||
read_V2 = dirV2 (regV "يَقرَ؟") ;
|
read_V2 = dirV2 (regV "يَقرَء") ;
|
||||||
-- read_V2 = dirV2 (v1 "قر؟" a a ) ;
|
-- read_V2 = dirV2 (v1 "قرء" a a ) ;
|
||||||
red_A = clrA "حمر" ;
|
red_A = clrA "حمر" ;
|
||||||
religion_N = brkN "دين" "فِعل" "أَفعال" Masc NoHum ;
|
religion_N = brkN "دين" "فِعل" "أَفعَال" Masc NoHum ;
|
||||||
restaurant_N = brkN "طعم" "مَفعَل" "مَفاعِل" Masc NoHum ;
|
restaurant_N = brkN "طعم" "مَفعَل" "مَفاعِل" Masc NoHum ;
|
||||||
river_N = brkN "نهر" "فَعل" "أَفعال" Masc NoHum ;
|
river_N = brkN "نهر" "فَعل" "أَفعَال" Masc NoHum ;
|
||||||
rock_N = brkN "صخر" "فَعلة" "فُعُول" Fem NoHum ;
|
rock_N = brkN "صخر" "فَعلة" "فُعُول" Fem NoHum ;
|
||||||
roof_N = brkN "سطح" "فَعل" "أَفعُل" Masc NoHum ;
|
roof_N = brkN "سطح" "فَعل" "أَفعُل" Masc NoHum ;
|
||||||
rubber_N = brkN "مطّ" "فَعّال" "فَعّال" Masc NoHum ; -- no hum
|
rubber_N = brkN "مطط" "فَعَّال" "فَعَّال" Masc NoHum ; -- no hum
|
||||||
run_V = regV "يَركُض" ;
|
run_V = regV "يَركُض" ;
|
||||||
-- run_V = v1 "ركض" a u ;
|
-- run_V = v1 "ركض" a u ;
|
||||||
say_VS = mkVS (v1 "قول" a u) ; --check
|
say_VS = mkVS (v1 "قول" a u) ; --check
|
||||||
@@ -177,41 +178,41 @@ flags
|
|||||||
sea_N = brkN "بحر" "فَعل" "فُعُول" Masc NoHum ;
|
sea_N = brkN "بحر" "فَعل" "فُعُول" Masc NoHum ;
|
||||||
seek_V2 = dirV2 (regV "يَطلُب") ;
|
seek_V2 = dirV2 (regV "يَطلُب") ;
|
||||||
-- seek_V2 = dirV2 (v1 "طلب" a u) ;
|
-- seek_V2 = dirV2 (v1 "طلب" a u) ;
|
||||||
see_V2 = dirV2 (v1 "ر؟ي" a a) ;
|
see_V2 = dirV2 (v1 "رءي" a a) ;
|
||||||
sell_V3 = dirdirV3 (v1 "بيع" a i) ; --check
|
sell_V3 = dirdirV3 (v1 "بيع" a i) ; --check
|
||||||
send_V3 = dirdirV3 (v4 "رسل") ;
|
send_V3 = dirdirV3 (v4 "رسل") ;
|
||||||
sheep_N = brkN "خرف" "فَعُول" "فِعال" Masc NoHum ;
|
sheep_N = brkN "خرف" "فَعُول" "فِعَال" Masc NoHum ;
|
||||||
ship_N = brkN "سفن" "فَعِيلة" "فُعُل" Fem NoHum ;
|
ship_N = brkN "سفن" "فَعِيلة" "فُعُل" Fem NoHum ;
|
||||||
shirt_N = brkN "قمص" "فَعِيل" "فُعلان" Masc NoHum ;
|
shirt_N = brkN "قمص" "فَعِيل" "فُعلان" Masc NoHum ;
|
||||||
shoe_N = brkN "حذو" "فِعاء" "أَفعِية" Masc NoHum ;
|
shoe_N = brkN "حذو" "فِعَاء" "أَفعِية" Masc NoHum ;
|
||||||
shop_N = brkN "تجر" "مَفعَل" "مَفاعِل" Masc NoHum ;
|
shop_N = brkN "تجر" "مَفعَل" "مَفاعِل" Masc NoHum ;
|
||||||
short_A = sndA "قصر" "فَعِيل" ;
|
short_A = sndA "قصر" "فَعِيل" ;
|
||||||
silver_N = brkN "فضّ" "فِعّة" "فِعَل" Fem NoHum ;
|
silver_N = brkN "فضض" "فِعَّة" "فِعَل" Fem NoHum ;
|
||||||
sister_N = brkN "؟خو" "فُعت" "فَعَوات" Fem Hum ; --FIXME
|
sister_N = brkN "ءخو" "فُعت" "فَعَوَات" Fem Hum ; --FIXME
|
||||||
sleep_V = v1 "نوم" i a ; --check
|
sleep_V = v1 "نوم" i a ; --check
|
||||||
small_A = sndA "صغر" "فَعِيل" ;
|
small_A = sndA "صغر" "فَعِيل" ;
|
||||||
snake_N = sdfN "حيّ" "فَعّة" Fem NoHum ;
|
snake_N = sdfN "حيّ" "فَعَّة" Fem NoHum ;
|
||||||
sock_N = brkN "جرب" "فَوعَل" "فَواعِل" Masc NoHum ;
|
sock_N = brkN "جرب" "فَوعَل" "فَواعِل" Masc NoHum ;
|
||||||
speak_V2 = dirV2 (v5 "كلم") ;
|
speak_V2 = dirV2 (v5 "كلم") ;
|
||||||
star_N = brkN "نجم" "فَعل" "فُعُول" Masc NoHum ; --najmö
|
star_N = brkN "نجم" "فَعل" "فُعُول" Masc NoHum ; --najmö
|
||||||
steel_N = brkN "فلذ" "فُوعال" "فَواعِل" Masc NoHum ;
|
steel_N = brkN "فلذ" "فُوعَال" "فَواعِل" Masc NoHum ;
|
||||||
stone_N = brkN "حجر" "فَعَل" "أَفعال" Masc NoHum ;
|
stone_N = brkN "حجر" "فَعَل" "أَفعَال" Masc NoHum ;
|
||||||
stove_N = brkN "وقد" "مَفعِل" "مَفاعِل" Masc NoHum ;
|
stove_N = brkN "وقد" "مَفعِل" "مَفاعِل" Masc NoHum ;
|
||||||
student_N = brkN "طلب" "فاعِل" "فُعّال" Masc Hum ; --tilmI*
|
student_N = brkN "طلب" "فاعِل" "فُعّال" Masc Hum ; --tilmI*
|
||||||
stupid_A = clrA "بله" ;
|
stupid_A = clrA "بله" ;
|
||||||
sun_N = brkN "شمس" "فَعل" "فُعُول" Fem NoHum ;
|
sun_N = brkN "شمس" "فَعل" "فُعُول" Fem NoHum ;
|
||||||
switch8off_V2 = dirV2 (v4 "طف؟") ;
|
switch8off_V2 = dirV2 (v4 "طفء") ;
|
||||||
switch8on_V2 = dirV2 (v4 "شعل") ;
|
switch8on_V2 = dirV2 (v4 "شعل") ;
|
||||||
table_N = sdfN "طول" "فاعِلة" Fem NoHum ;
|
table_N = sdfN "طول" "فاعِلة" Fem NoHum ;
|
||||||
talk_V3 = mkV3 (v5 "حدث") "لِ" "عَن" ;
|
talk_V3 = mkV3 (v5 "حدث") "لِ" "عَن" ;
|
||||||
teacher_N = sdmN "علم" "مُفَعِّل" Masc Hum ; --mucal~imö
|
teacher_N = sdmN "علم" "مُفَعِّل" Masc Hum ; --mucal~imö
|
||||||
teach_V2 = dirV2 (v2 "علم") ;
|
teach_V2 = dirV2 (v2 "علم") ;
|
||||||
television_N = mkN (sndf "تِلِفِزيُون") Masc NoHum ;
|
television_N = mkN (sndf "تِلِفِزيُون") Masc NoHum ;
|
||||||
thick_A = sndA "سمك" "فَعِيل" ;
|
thick_A = sndA "سمك" "فَعِيل" ;
|
||||||
thin_A = sndA "رفع" "فَعِيل" ;
|
thin_A = sndA "رفع" "فَعِيل" ;
|
||||||
train_N = sdfN "قطر" "فِعال" Masc NoHum;
|
train_N = sdfN "قطر" "فِعَال" Masc NoHum;
|
||||||
travel_V = v3 "سفر" ;
|
travel_V = v3 "سفر" ;
|
||||||
tree_N = brkN "شجر" "فَعلة" "أَفعال" Fem NoHum ;
|
tree_N = brkN "شجر" "فَعلة" "أَفعَال" Fem NoHum ;
|
||||||
ugly_A = sndA "قبح" "فَعِيل" ;
|
ugly_A = sndA "قبح" "فَعِيل" ;
|
||||||
understand_V2 = dirV2 (regV "فَهِم") ;
|
understand_V2 = dirV2 (regV "فَهِم") ;
|
||||||
-- understand_V2 = dirV2 (v1 "فهم" i a ) ;
|
-- understand_V2 = dirV2 (v1 "فهم" i a ) ;
|
||||||
@@ -219,7 +220,7 @@ flags
|
|||||||
village_N = brkN "قري" "فَعلة" "فُعَى" Fem NoHum ; --Daycö
|
village_N = brkN "قري" "فَعلة" "فُعَى" Fem NoHum ; --Daycö
|
||||||
wait_V2 = dirV2 (v8 "نظر") ;
|
wait_V2 = dirV2 (v8 "نظر") ;
|
||||||
walk_V = v1 "مشي" a i ; --check
|
walk_V = v1 "مشي" a i ; --check
|
||||||
warm_A = sndA "دف؟" "فاعِل" ;
|
warm_A = sndA "دفء" "فاعِل" ;
|
||||||
war_N = brkN "حرب" "فَعل" "فُعُول" Fem NoHum ;
|
war_N = brkN "حرب" "فَعل" "فُعُول" Fem NoHum ;
|
||||||
watch_V2 = dirV2 (v3 "شهد") ;
|
watch_V2 = dirV2 (v3 "شهد") ;
|
||||||
water_N = mkN (reg "ماء" "مِياه") Fem NoHum ; --"موه" "فاء" "فِياع" ??
|
water_N = mkN (reg "ماء" "مِياه") Fem NoHum ; --"موه" "فاء" "فِياع" ??
|
||||||
@@ -229,21 +230,21 @@ flags
|
|||||||
win_V2 = dirV2 (regV "رَبِح") ;
|
win_V2 = dirV2 (regV "رَبِح") ;
|
||||||
-- win_V2 = dirV2 (v1 "ربح" i a) ;
|
-- win_V2 = dirV2 (v1 "ربح" i a) ;
|
||||||
woman_N = mkN (reg "إِمرَأَة" "نِسوَة") Fem Hum ;
|
woman_N = mkN (reg "إِمرَأَة" "نِسوَة") Fem Hum ;
|
||||||
wonder_VQ = mkVQ (v6 "س؟ل") ;
|
wonder_VQ = mkVQ (v6 "سءل") ;
|
||||||
wood_N = brkN "خشب" "فَعَل" "أَفعال" Masc NoHum ;
|
wood_N = brkN "خشب" "فَعَل" "أَفعَال" Masc NoHum ;
|
||||||
write_V2 = dirV2 (regV "يَكتُب") ;
|
write_V2 = dirV2 (regV "يَكتُب") ;
|
||||||
-- write_V2 = dirV2 (v1 "كتب" a u) ;
|
-- write_V2 = dirV2 (v1 "كتب" a u) ;
|
||||||
yellow_A = clrA "صفر" ;
|
yellow_A = clrA "صفر" ;
|
||||||
young_A = sndA "شبّ" "فاعّ" ;
|
young_A = sndA "شبب" "فَاعّ" ;
|
||||||
|
|
||||||
do_V2 = dirV2 (regV "يَفعَل") ;
|
do_V2 = dirV2 (regV "يَفعَل") ;
|
||||||
-- do_V2 = dirV2 (v1 "فعل" a a ) ;
|
-- do_V2 = dirV2 (v1 "فعل" a a ) ;
|
||||||
now_Adv = mkAdv "الآن" ;
|
now_Adv = mkAdv "الآن" ;
|
||||||
already_Adv = mkAdv "سابِقاً" ;
|
already_Adv = mkAdv "سابِقاً" ;
|
||||||
song_N = brkN "غني" "أَفعِلة" "أَفاعِي" Fem NoHum ;
|
song_N = brkN "غني" "أُفعِلَة" "أَفَاعِي" Fem NoHum ;
|
||||||
add_V3 = dirV3 (regV "يَجمَع") "وَ" ;
|
add_V3 = dirV3 (regV "يَجمَع") "وَ" ;
|
||||||
-- add_V3 = dirV3 (v1 "جمع" a a) "وَ" ;
|
-- add_V3 = dirV3 (v1 "جمع" a a) "وَ" ;
|
||||||
number_N = brkN "رقم" "فَعل" "أَفعال" Masc NoHum ; --cadad
|
number_N = brkN "رقم" "فَعل" "أَفعَال" Masc NoHum ; --cadad
|
||||||
put_V2 = dirV2 (v1 "وضع" a a );
|
put_V2 = dirV2 (v1 "وضع" a a );
|
||||||
stop_V = v5 "وقف" ;
|
stop_V = v5 "وقف" ;
|
||||||
jump_V = regV "يَقفِز" ;
|
jump_V = regV "يَقفِز" ;
|
||||||
@@ -253,14 +254,14 @@ flags
|
|||||||
right_Ord = mkOrd "أَيمَن" "يُمنَى" One;
|
right_Ord = mkOrd "أَيمَن" "يُمنَى" One;
|
||||||
|
|
||||||
far_Adv = mkAdv "بَعِيداً" ;
|
far_Adv = mkAdv "بَعِيداً" ;
|
||||||
correct_A = sndA "صحّ" "فَعِيل" ;
|
correct_A = sndA "صحّ" "فَعِيل" ; -- TODO broken plural
|
||||||
dry_A = sndA "نشف" "فاعِل" ;
|
dry_A = sndA "نشف" "فاعِل" ;
|
||||||
dull_A = sndA "بهت" "فاعِل" ;
|
dull_A = sndA "بهت" "فاعِل" ;
|
||||||
full_A = sndA "مل؟" "فَعِيل" ;
|
full_A = sndA "ملء" "فَعِيل" ;
|
||||||
heavy_A = sndA "ثقل" "فَعِيل" ;
|
heavy_A = sndA "ثقل" "فَعِيل" ;
|
||||||
near_A = sndA "قرب" "فَعِيل" ;
|
near_A = sndA "قرب" "فَعِيل" ;
|
||||||
rotten_A = sndA "فسد" "فاعِل" ;
|
rotten_A = sndA "فسد" "فاعِل" ;
|
||||||
round_A = sndA "دور" "مُفَعَّل" ;
|
round_A = sndA "دور" "مُفَعَّل" ;
|
||||||
sharp_A = sndA "حدّ" "فاعّ" ;
|
sharp_A = sndA "حدّ" "فاعّ" ;
|
||||||
smooth_A = sndA "نعم" "فاعِل" ;
|
smooth_A = sndA "نعم" "فاعِل" ;
|
||||||
straight_A = sndA "قوم" "مُستَفِيع" ;
|
straight_A = sndA "قوم" "مُستَفِيع" ;
|
||||||
@@ -268,68 +269,68 @@ flags
|
|||||||
wide_A = sndA "وسع" "فاعِل" ;
|
wide_A = sndA "وسع" "فاعِل" ;
|
||||||
|
|
||||||
animal_N = sdfN "حيّ" "فَعَوان" Masc NoHum ;
|
animal_N = sdfN "حيّ" "فَعَوان" Masc NoHum ;
|
||||||
ashes_N = brkN "رمد" "فَعال" "أَفعِلة" Masc NoHum;
|
ashes_N = brkN "رمد" "فَعَال" "أَفعِلة" Masc NoHum;
|
||||||
back_N = brkN "ظهر" "فَعل" "فُعُول" Masc NoHum;
|
back_N = brkN "ظهر" "فَعل" "فُعُول" Masc NoHum;
|
||||||
bark_N = brkN "نبح" "فَعل" "فُعال" Masc NoHum;
|
bark_N = brkN "نبح" "فَعل" "فُعَال" Masc NoHum;
|
||||||
belly_N = brkN "بطن" "فَعل" "فُعُول" Fem NoHum;
|
belly_N = brkN "بطن" "فَعل" "فُعُول" Fem NoHum;
|
||||||
blood_N = brkN "دم" "فَع" "فِعاء" Masc NoHum;
|
blood_N = brkN "دم" "فَع" "فِعَاء" Masc NoHum;
|
||||||
bone_N = brkN "عظم" "فَعلة" "فِعال" Fem NoHum;
|
bone_N = brkN "عظم" "فَعلة" "فِعَال" Fem NoHum;
|
||||||
breast_N = brkN "صدر" "فَعل" "فُعُول" Masc NoHum;
|
breast_N = brkN "صدر" "فَعل" "فُعُول" Masc NoHum;
|
||||||
cloud_N = brkN "غيم" "فَعلة" "فُعُول" Fem NoHum;
|
cloud_N = brkN "غيم" "فَعلة" "فُعُول" Fem NoHum;
|
||||||
day_N = brkN "يوم" "فَعل" "أَفّاع" Masc NoHum;
|
day_N = brkN "يوم" "فَعل" "أَفَّاع" Masc NoHum;
|
||||||
dust_N = brkN "غبر" "فُعال" "أَفعِلة" Masc NoHum;
|
dust_N = brkN "غبر" "فُعَال" "أَفعِلة" Masc NoHum;
|
||||||
ear_N = brkN "؟ذن" "فُعل" "أَفعال" Fem NoHum;
|
ear_N = brkN "ءذن" "فُعل" "أَفعَال" Fem NoHum;
|
||||||
earth_N = brkN "ترب" "فُعلة" "فُعَل" Fem NoHum;
|
earth_N = brkN "ترب" "فُعلة" "فُعَل" Fem NoHum;
|
||||||
egg_N = sdfN "بيض" "فَعلة" Fem NoHum;
|
egg_N = sdfN "بيض" "فَعلة" Fem NoHum;
|
||||||
eye_N = brkN "عين" "فَعل" "فُعُول" Fem NoHum;
|
eye_N = brkN "عين" "فَعل" "فُعُول" Fem NoHum;
|
||||||
fat_N = brkN "دهن" "فُعل" "فُعُول" Masc NoHum ;
|
fat_N = brkN "دهن" "فُعل" "فُعُول" Masc NoHum ;
|
||||||
feather_N = sdfN "ريش" "فِعلة" Fem NoHum;
|
feather_N = sdfN "ريش" "فِعلة" Fem NoHum;
|
||||||
fingernail_N = brkN "ظفر" "فُعل" "أَفاعِل" Masc NoHum;
|
fingernail_N = brkN "ظفر" "فُعل" "أَفاعِل" Masc NoHum;
|
||||||
fire_N = brkN "نور" "فاع" "فِيعان" Fem NoHum;
|
fire_N = brkN "نور" "فاع" "فِيعَان" Fem NoHum;
|
||||||
flower_N = brkN "زهر" "فَعلة" "فُعُول" Fem NoHum;
|
flower_N = brkN "زهر" "فَعلة" "فُعُول" Fem NoHum;
|
||||||
fog_N = brkN "ضبّ" "فَعال" "فَعال" Masc NoHum; --no plural ?
|
fog_N = brkN "ضبب" "فَعَال" "فَعَال" Masc NoHum; --no plural ?
|
||||||
foot_N = brkN "قدم" "فَعَل" "أَفعال" Fem NoHum;
|
foot_N = brkN "قدم" "فَعَل" "أَفعَال" Fem NoHum;
|
||||||
forest_N = sdfN "غيب" "فاعة" Fem NoHum;
|
forest_N = sdfN "غيب" "فاعة" Fem NoHum;
|
||||||
grass_N = brkN "عشب" "فُعلة" "أَفعال" Fem NoHum;
|
grass_N = brkN "عشب" "فُعلة" "أَفعَال" Fem NoHum;
|
||||||
guts_N = brkN "حشو" "فَعا" "أَفعاء" Fem NoHum;
|
guts_N = brkN "حشو" "فَعَا" "أَفعَاء" Fem NoHum;
|
||||||
hair_N = sdfN "شعر" "فَعلة" Fem NoHum ;
|
hair_N = sdfN "شعر" "فَعلة" Fem NoHum ;
|
||||||
hand_N = brkN "يد" "فَع" "أَفاعِي" Fem NoHum ;
|
hand_N = brkN "يد" "فَع" "أَفَاعِي" Fem NoHum ;
|
||||||
head_N = brkN "ر؟س" "فَعل" "فُعُول" Masc NoHum;
|
head_N = brkN "رءس" "فَعل" "فُعُول" Masc NoHum;
|
||||||
heart_N = brkN "قلب" "فَعل" "فُعُول" Masc NoHum;
|
heart_N = brkN "قلب" "فَعل" "فُعُول" Masc NoHum;
|
||||||
horn_N = brkN "قرن" "فَعل" "فُعُول" Masc NoHum;
|
horn_N = brkN "قرن" "فَعل" "فُعُول" Masc NoHum;
|
||||||
husband_N = brkN "زوج" "فَعل" "أَفعال" Masc NoHum;
|
husband_N = brkN "زوج" "فَعل" "أَفعَال" Masc NoHum;
|
||||||
ice_N = brkN "ثلج" "فَعل" "فُعُول" Masc NoHum;
|
ice_N = brkN "ثلج" "فَعل" "فُعُول" Masc NoHum;
|
||||||
knee_N = brkN "ركب" "فُعلة" "فُعَل" Fem NoHum;
|
knee_N = brkN "ركب" "فُعلة" "فُعَل" Fem NoHum;
|
||||||
leaf_N = brkN "ورق" "فَعَلة" "أَفعال" Fem NoHum;
|
leaf_N = brkN "ورق" "فَعَلة" "أَفعَال" Fem NoHum;
|
||||||
leg_N = brkN "رجل" "فِعل" "أَفعُل" Fem NoHum;
|
leg_N = brkN "رجل" "فِعل" "أَفعُل" Fem NoHum;
|
||||||
liver_N = brkN "كبد" "فَعِل" "أَفعال" Masc NoHum ;
|
liver_N = brkN "كبد" "فَعِل" "أَفعَال" Masc NoHum ;
|
||||||
louse_N = sdfN "قمل" "فَعلة" Fem NoHum;
|
louse_N = sdfN "قمل" "فَعلة" Fem NoHum;
|
||||||
mouth_N = brkN "فوه" "فُعل" "أَفعال" Masc NoHum ;
|
mouth_N = brkN "فوه" "فُعل" "أَفعَال" Masc NoHum ;
|
||||||
name_N = brkN "؟سم" "فِعل" "فَعالِي" Masc NoHum;
|
name_N = brkN "ءسم" "فِعل" "فَعَالِي" Masc NoHum;
|
||||||
neck_N = brkN "رقب" "فَعَلة" "فِعال" Fem NoHum;
|
neck_N = brkN "رقب" "فَعَلة" "فِعَال" Fem NoHum;
|
||||||
night_N = brkN "ليل" "فَعلة" "فَعالِي" Fem NoHum; --plural?
|
night_N = brkN "ليل" "فَعلة" "فَعَالِي" Fem NoHum; --plural?
|
||||||
nose_N = brkN "؟نف" "فَعل" "فُعُول" Masc NoHum;
|
nose_N = brkN "ءنف" "فَعل" "فُعُول" Masc NoHum;
|
||||||
person_N = brkN "شخص" "فَعل" "أَفعال" Masc Hum;
|
person_N = brkN "شخص" "فَعل" "أَفعَال" Masc Hum;
|
||||||
question_N = mkN "سؤال" ; ----IL
|
question_N = mkN "سؤال" ; ----IL
|
||||||
rain_N = brkN "مطر" "فَعَل" "أَفعال" Masc NoHum;
|
rain_N = brkN "مطر" "فَعَل" "أَفعَال" Masc NoHum;
|
||||||
road_N = brkN "طرق" "فَعِيل" "فُعُل" Fem NoHum;
|
road_N = brkN "طرق" "فَعِيل" "فُعُل" Fem NoHum;
|
||||||
root_N = brkN "جذر" "فَعل" "فُعُول" Masc NoHum ;
|
root_N = brkN "جذر" "فَعل" "فُعُول" Masc NoHum ;
|
||||||
rope_N = brkN "حبل" "فَعل" "فِعال" Masc NoHum;
|
rope_N = brkN "حبل" "فَعل" "فِعَال" Masc NoHum;
|
||||||
salt_N = brkN "ملح" "فِعل" "أَفعال" Masc NoHum;
|
salt_N = brkN "ملح" "فِعل" "أَفعَال" Masc NoHum;
|
||||||
sand_N = brkN "رمل" "فَعل" "فِعال" Masc NoHum;
|
sand_N = brkN "رمل" "فَعل" "فِعَال" Masc NoHum;
|
||||||
seed_N = brkN "بذر" "فَعل" "فُعُول" Masc NoHum;
|
seed_N = brkN "بذر" "فَعل" "فُعُول" Masc NoHum;
|
||||||
skin_N = brkN "جلد" "فِعل" "فُعُول" Masc NoHum;
|
skin_N = brkN "جلد" "فِعل" "فُعُول" Masc NoHum;
|
||||||
sky_N = sdfN "سمو" "فَعاء" Fem NoHum;
|
sky_N = sdfN "سمو" "فَعَاء" Fem NoHum;
|
||||||
smoke_N = brkN "دخن" "فُعال" "أَفعِلة" Masc NoHum;
|
smoke_N = brkN "دخن" "فُعَال" "أَفعِلة" Masc NoHum;
|
||||||
snow_N = brkN "ثلج" "فَعل" "فُعُول" Masc NoHum;
|
snow_N = brkN "ثلج" "فَعل" "فُعُول" Masc NoHum;
|
||||||
stick_N = brkN "عصو" "فَعا" "فِعِي" Masc NoHum ; --"عصو"
|
stick_N = brkN "عصو" "فَعَا" "فِعِي" Masc NoHum ; --"عصو"
|
||||||
tail_N = brkN "ذنب" "فَعَل" "أَفعال" Masc NoHum;
|
tail_N = brkN "ذنب" "فَعَل" "أَفعَال" Masc NoHum;
|
||||||
tongue_N = brkN "لسن" "فِعال" "أَفعِلة" Masc NoHum;
|
tongue_N = brkN "لسن" "فِعَال" "أَفعِلة" Masc NoHum;
|
||||||
tooth_N = brkN "سنّ" "فِعل" "أَفعال" Masc NoHum ;
|
tooth_N = brkN "سنن" "فِعّ" "أَفعَال" Masc NoHum ;
|
||||||
wife_N = sdfN "زوج" "فَعلة" Fem Hum;
|
wife_N = sdfN "زوج" "فَعلة" Fem Hum;
|
||||||
wind_N = brkN "ريح" "فِعل" "فِعال" Fem NoHum;
|
wind_N = brkN "ريح" "فِعل" "فِعَال" Fem NoHum;
|
||||||
wing_N = brkN "جنح" "فَعال" "أَفعِلة" Masc NoHum ;
|
wing_N = brkN "جنح" "فَعَال" "أَفعِلة" Masc NoHum ;
|
||||||
worm_N = brkN "دود" "فُعلة" "فِيعان" Fem NoHum ;
|
worm_N = brkN "دود" "فُعلة" "فِيعَان" Fem NoHum ;
|
||||||
year_N = mkN "سَنَة" "سَنَوَات" Fem NoHum ;
|
year_N = mkN "سَنَة" "سَنَوَات" Fem NoHum ;
|
||||||
|
|
||||||
blow_V = regV "يَنفُخ" ;
|
blow_V = regV "يَنفُخ" ;
|
||||||
@@ -355,7 +356,7 @@ flags
|
|||||||
swim_V = regV "يَسبَح" ;
|
swim_V = regV "يَسبَح" ;
|
||||||
think_V = v2 "فكر" ;
|
think_V = v2 "فكر" ;
|
||||||
turn_V = regV "يَبرُم" ;
|
turn_V = regV "يَبرُم" ;
|
||||||
vomit_V = v5 "قي؟" ;
|
vomit_V = v5 "قيء" ;
|
||||||
|
|
||||||
bite_V2 = dirV2 ( v1 "عضّ" a a ) ;
|
bite_V2 = dirV2 ( v1 "عضّ" a a ) ;
|
||||||
count_V2 = dirV2 (v1 "عدّ" a u) ;
|
count_V2 = dirV2 (v1 "عدّ" a u) ;
|
||||||
@@ -378,7 +379,5 @@ flags
|
|||||||
tie_V2 = dirV2 (regV "يَربُط" ) ;
|
tie_V2 = dirV2 (regV "يَربُط" ) ;
|
||||||
wash_V2 = dirV2 ( regV "يَغسِل" ) ;
|
wash_V2 = dirV2 ( regV "يَغسِل" ) ;
|
||||||
wipe_V2 = dirV2 ( regV "يَمسَح" ) ;
|
wipe_V2 = dirV2 ( regV "يَمسَح" ) ;
|
||||||
|
|
||||||
-- other_A = sndA "ْتهر" ;
|
-- other_A = sndA "ْتهر" ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -7,9 +7,10 @@ flags optimize = all ;--noexpand;
|
|||||||
|
|
||||||
mkDet : Str -> Number -> State -> Det
|
mkDet : Str -> Number -> State -> Det
|
||||||
= \word,num,state ->
|
= \word,num,state ->
|
||||||
{ s = \\_,_,c => word + vowel ! c ;
|
{ s = \\_,_,c => word + caseTbl ! c ;
|
||||||
n = numberToSize num;
|
n = numberToSize num;
|
||||||
d = state; --only Const is used now. check StructuralAra
|
d = state; --only Const is used now. check StructuralAra
|
||||||
|
is1sg = False;
|
||||||
isNum = False;
|
isNum = False;
|
||||||
isPron = False
|
isPron = False
|
||||||
};
|
};
|
||||||
@@ -18,7 +19,7 @@ flags optimize = all ;--noexpand;
|
|||||||
= \word,decl ->
|
= \word,decl ->
|
||||||
{ s = \\c =>
|
{ s = \\c =>
|
||||||
case decl of {
|
case decl of {
|
||||||
True => word + vowel!c;
|
True => word + caseTbl!c;
|
||||||
False => word
|
False => word
|
||||||
};
|
};
|
||||||
isDecl = decl
|
isDecl = decl
|
||||||
@@ -40,11 +41,4 @@ flags optimize = all ;--noexpand;
|
|||||||
isNum = True
|
isNum = True
|
||||||
};
|
};
|
||||||
|
|
||||||
vowel : Case => Str =
|
|
||||||
table {
|
|
||||||
Nom => "ُ";
|
|
||||||
Acc => "َ";
|
|
||||||
Gen => "ِ"
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,19 +5,29 @@ flags optimize=noexpand ;
|
|||||||
lin
|
lin
|
||||||
|
|
||||||
DetCN det cn = let {
|
DetCN det cn = let {
|
||||||
number = sizeToNumber det.n;
|
cas : Case -> Case = if_then_else Case det.is1sg Bare ;
|
||||||
|
number = sizeToNumber det.n ;
|
||||||
determiner : Case -> Str = \c ->
|
determiner : Case -> Str = \c ->
|
||||||
det.s ! cn.h ! (detGender cn.g det.n) ! c;
|
det.s ! cn.h ! (detGender cn.g det.n) ! c ;
|
||||||
noun : Case -> NTable -> Str = \c,nt -> nt !
|
noun : Case -> Str = \c ->
|
||||||
number ! (nounState det.d number) ! (nounCase c det.n det.d)
|
cn.s ! number
|
||||||
|
! nounState det.d number
|
||||||
|
! nounCase c det.n det.d ;
|
||||||
|
adj : Case -> Str = \c ->
|
||||||
|
cn.adj ! number
|
||||||
|
! (definite ! det.d) -- Indef remains Indef, rest become Def
|
||||||
|
! c
|
||||||
} in {
|
} in {
|
||||||
s = \\c =>
|
s = \\c =>
|
||||||
case cnB4det det.isPron det.isNum det.n det.d of {
|
case cnB4det det.isPron det.isNum det.n det.d of {
|
||||||
False => determiner c ++ noun c cn.s ++ noun c cn.adj ;
|
False => determiner c
|
||||||
--FIXME use the adj -> cn -> cn rule from below instead of
|
++ noun c
|
||||||
--repeating code
|
++ adj c
|
||||||
True => cn.s ! number ! det.d ! c ++ det.s ! cn.h ! cn.g ! c
|
++ cn.np ! c ;
|
||||||
++ cn.adj ! number ! det.d ! c
|
True => noun (cas c) -- deal with possessive suffix
|
||||||
|
++ determiner c
|
||||||
|
++ adj c
|
||||||
|
++ cn.np ! c
|
||||||
};
|
};
|
||||||
a = { pgn = agrP3 cn.h cn.g number;
|
a = { pgn = agrP3 cn.h cn.g number;
|
||||||
isPron = False }
|
isPron = False }
|
||||||
@@ -37,23 +47,20 @@ lin
|
|||||||
};
|
};
|
||||||
a = np.a
|
a = np.a
|
||||||
} ;
|
} ;
|
||||||
{-
|
|
||||||
--should compile.. not working :( wierd error message.. bug?
|
{-
|
||||||
PPartNP np v2 =
|
PPartNP np v2 =
|
||||||
let x = case np.a.pgn of {
|
let x = case np.a.pgn of {
|
||||||
Per3 g n => ( positAdj (v2.s ! VPPart) ) ! g ! n ! Indef ;
|
Per3 g n => positAdj (v2.s ! VPPart) ) ! g ! n ! Indef ; -- doesn't work because trying to glue runtime tokens
|
||||||
_ => \\_ => [] -- not occuring anyway
|
Per2 g n => \\_ => [] ;
|
||||||
} in {
|
_ => \\_ => []
|
||||||
s = \\c => np.s ! c ++ x ! c ;
|
} in np ** {
|
||||||
a = np.a
|
s = \\c => np.s ! c ++ v2.s ! VPPart ---- TODO: agreement
|
||||||
};
|
};
|
||||||
-}
|
-}
|
||||||
|
|
||||||
-- FIXME try parsing something like "this house now" and you'll get
|
AdvNP np adv = np ** {
|
||||||
-- an internal compiler error, but it still works.. wierd..
|
s = \\c => np.s ! c ++ adv.s
|
||||||
AdvNP np adv = {
|
|
||||||
s = \\c => np.s ! c ++ adv.s;
|
|
||||||
a = np.a
|
|
||||||
};
|
};
|
||||||
{-
|
{-
|
||||||
DetSg quant ord = {
|
DetSg quant ord = {
|
||||||
@@ -70,36 +77,33 @@ lin
|
|||||||
} ;
|
} ;
|
||||||
-}
|
-}
|
||||||
|
|
||||||
DetQuantOrd quant num ord = {
|
DetQuantOrd quant num ord = quant ** {
|
||||||
s = \\h,g,c => quant.s ! Pl ! h ! g ! c
|
s = \\h,g,c => quant.s ! Pl ! h ! g ! c
|
||||||
++ num.s ! g ! (toDef quant.d num.n) ! c
|
++ num.s ! g ! (toDef quant.d num.n) ! c
|
||||||
--FIXME check this:
|
--FIXME check this:
|
||||||
++ ord.s ! g ! (toDef quant.d num.n) ! c ;
|
++ ord.s ! g ! (toDef quant.d num.n) ! c ;
|
||||||
n = num.n;
|
n = num.n;
|
||||||
d = quant.d;
|
isNum = orB num.isNum ord.isNum ;
|
||||||
isPron = quant.isPron;
|
-- ord may come from OrdDigits or OrdNumeral
|
||||||
isNum = case num.n of {
|
-- num may come from NumCard : Card -> Num
|
||||||
None => ord.isNum ; -- ord may come from OrdDigits or OrdNumeral
|
|
||||||
_ => True
|
|
||||||
}
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
DetQuant quant num = {
|
DetQuant quant num = quant ** {
|
||||||
s = \\h,g,c => quant.s ! Pl ! h ! g ! c
|
s = \\h,g,c => quant.s ! Pl ! h ! g ! c
|
||||||
++ num.s ! g ! (toDef quant.d num.n) ! c ;
|
++ num.s ! g ! (toDef quant.d num.n) ! c ;
|
||||||
n = num.n;
|
n = num.n;
|
||||||
d = quant.d;
|
|
||||||
isPron = quant.isPron;
|
|
||||||
isNum = -- Num may come from NumCard : Card -> Num
|
isNum = -- Num may come from NumCard : Card -> Num
|
||||||
case num.n of {
|
case num.n of {
|
||||||
None => False;
|
None => False;
|
||||||
_ => True
|
_ => num.isNum
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
PossPron p = {
|
PossPron p = {
|
||||||
s = \\_,_,_,_ => p.s ! Gen;
|
s = \\_,_,_,_ => p.s ! Gen;
|
||||||
d = Const;
|
d = Poss;
|
||||||
|
is1sg = case p.a.pgn of { Per1 Sing => True ; _ => False } ;
|
||||||
isPron = True;
|
isPron = True;
|
||||||
isNum = False } ;
|
isNum = False } ;
|
||||||
|
|
||||||
@@ -152,24 +156,26 @@ lin
|
|||||||
DefArt = {
|
DefArt = {
|
||||||
s = \\_,_,_,_ => [];
|
s = \\_,_,_,_ => [];
|
||||||
d = Def ;
|
d = Def ;
|
||||||
isNum,isPron = False
|
isNum,isPron,is1sg = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IndefArt = {
|
IndefArt = {
|
||||||
s = \\_,_,_,_ => [];
|
s = \\_,_,_,_ => [];
|
||||||
d = Indef ;
|
d = Indef ;
|
||||||
isNum,isPron = False
|
isNum,isPron,is1sg = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
MassNP cn = ---- AR
|
MassNP cn = ---- AR
|
||||||
{s = \\c => cn.s ! Sg ! Indef ! c ++ cn.adj ! Sg ! Indef ! c ;
|
{s = \\c => cn.s ! Sg ! Indef ! c ++ cn.np ! c ++ cn.adj ! Sg ! Indef ! c ;
|
||||||
a = {pgn = Per3 cn.g Sg ; isPron = False}} ;
|
a = {pgn = Per3 cn.g Sg ; isPron = False}} ;
|
||||||
|
|
||||||
-- MassDet = {s = \\_,_,_,_ => [] ; d = Indef;
|
-- MassDet = {s = \\_,_,_,_ => [] ; d = Indef;
|
||||||
-- isNum = False; isPron = False} ;
|
-- isNum = False; isPron = False} ;
|
||||||
|
|
||||||
UseN,
|
UseN,
|
||||||
UseN2 = \n -> n ** {adj = \\_,_,_ => []};
|
UseN2 = \n -> n ** {
|
||||||
|
adj = \\_,_,_ => [];
|
||||||
|
np = \\_ => []};
|
||||||
Use2N3 n3 = n3 ;
|
Use2N3 n3 = n3 ;
|
||||||
Use3N3 n3 = n3 ** {c2 = n3.c3} ;
|
Use3N3 n3 = n3 ** {c2 = n3.c3} ;
|
||||||
|
|
||||||
@@ -179,16 +185,22 @@ lin
|
|||||||
|
|
||||||
ComplN3 n3 np = ComplN2 n3 np ** {c2 = n3.c3} ;
|
ComplN3 n3 np = ComplN2 n3 np ** {c2 = n3.c3} ;
|
||||||
|
|
||||||
AdjCN ap cn = {
|
AdjCN ap cn = cn ** {
|
||||||
s = \\n,d,c => cn.s ! n ! d ! c;
|
adj = \\n,d,c => ap.s ! cn.h ! cn.g ! n ! (definite ! d) ! c
|
||||||
adj = \\n,d,c => ap.s ! cn.h ! cn.g ! n ! (definite ! d) ! c ;
|
|
||||||
g = cn.g;
|
|
||||||
h = cn.h
|
|
||||||
};
|
};
|
||||||
-- RelCN cn rs = {s = \\n,c => cn.s ! n ! c ++ rs.s ! {n = n ; p = P3}} ;
|
-- RelCN cn rs = {s = \\n,c => cn.s ! n ! c ++ rs.s ! {n = n ; p = P3}} ;
|
||||||
-- AdvCN cn ad = {s = \\n,c => cn.s ! n ! c ++ ad.s} ;
|
-- AdvCN cn ad = {s = \\n,c => cn.s ! n ! c ++ ad.s} ;
|
||||||
--
|
--
|
||||||
-- SentCN cn sc = {s = \\n,c => cn.s ! n ! c ++ sc.s} ;
|
-- SentCN cn sc = {s = \\n,c => cn.s ! n ! c ++ sc.s} ;
|
||||||
ApposCN cn np = cn ** {
|
ApposCN cn np = cn ** { np = \\c => cn.np ! c ++ np.s ! c } ;
|
||||||
s = \\n,d,c => cn.s ! n ! d ! c ++ np.s ! c } ;
|
|
||||||
|
-- : CN -> NP -> CN ; -- house of Paris, house of mine
|
||||||
|
PossNP cn np = cn ** {
|
||||||
|
s = \\n,_d,c => cn.s ! n ! Const ! c ;
|
||||||
|
np = \\c => cn.np ! c ++ np.s ! Gen
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
-- : CN -> NP -> CN ; -- glass of wine
|
||||||
|
--PartNP
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,18 +4,16 @@ flags coding=utf8 ;
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
-- Definite article assimilation
|
vow : pattern Str = #("َ" | "ِ" | "ُ" | "ً" | "ٍ" | "ٌ") ;
|
||||||
vow : pattern Str = #("َ" | "ِ" | "ُ") ;
|
|
||||||
|
|
||||||
|
|
||||||
-- "Sun letters": assimilate with def. article
|
-- "Sun letters": assimilate with def. article
|
||||||
sun : pattern Str = #("ت"|"ث"|"د"|"ذ"|"ر"|"ز"|"س"|"ش"|"ص"|"ض"|"ط"|"ظ"|"ل"|"ن") ;
|
sun : pattern Str = #("ت"|"ث"|"د"|"ذ"|"ر"|"ز"|"س"|"ش"|"ص"|"ض"|"ط"|"ظ"|"ل"|"ن") ;
|
||||||
|
|
||||||
-- Shadda: https://www.unicode.org/L2/L2017/17253-arabic-ordering.pdf
|
-- Shadda: https://www.unicode.org/L2/L2017/17253-arabic-ordering.pdf
|
||||||
fixShd : Str -> Str -> Str = \word,vowel ->
|
fixShd : Str -> Str -> Str = \word,suffix ->
|
||||||
case word of {
|
case <word,suffix> of {
|
||||||
x + "ّ" => x + vowel + "ّ" ;
|
<x + "ّ", v@#vow + y> => x + v + "ّ" + y ;
|
||||||
x => x + vowel
|
_ => word + suffix
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Hamza
|
-- Hamza
|
||||||
@@ -23,8 +21,11 @@ flags coding=utf8 ;
|
|||||||
|
|
||||||
rectifyHmz: Str -> Str = \word ->
|
rectifyHmz: Str -> Str = \word ->
|
||||||
case word of {
|
case word of {
|
||||||
|
l@(""|"ال") + ("أ"|"أَ") + #hamza + "ْ" + tail => l + "آ" + tail;
|
||||||
|
l@(""|"ال") + ("أ"|"أَ") + #hamza + tail => l + "آ" + tail;
|
||||||
l@(""|"ال") + #hamza + v@("َ"|"ُ") + tail => l + "أ" + v + tail;
|
l@(""|"ال") + #hamza + v@("َ"|"ُ") + tail => l + "أ" + v + tail;
|
||||||
l@(""|"ال") + #hamza + v@("ِ") + tail => l + "إ" + v + tail;
|
l@(""|"ال") + #hamza + v@("ِ") + tail => l + "إ" + v + tail;
|
||||||
|
|
||||||
head + v1@("ِ"|"ُ"|"َ"|"ْ"|"ا"|"ي"|"و") + #hamza + v2@(""|"ُ"|"َ"|"ْ"|"ِ") => head + v1 + (tHmz v1) + v2;
|
head + v1@("ِ"|"ُ"|"َ"|"ْ"|"ا"|"ي"|"و") + #hamza + v2@(""|"ُ"|"َ"|"ْ"|"ِ") => head + v1 + (tHmz v1) + v2;
|
||||||
head + #hamza + 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
|
||||||
|
|||||||
@@ -107,19 +107,21 @@ resource ParadigmsAra = open
|
|||||||
|
|
||||||
mkA = overload {
|
mkA = overload {
|
||||||
mkA : (root,patt : Str) -> A
|
mkA : (root,patt : Str) -> A
|
||||||
= sndA ;
|
= \r,p -> lin A (sndA r p);
|
||||||
mkA : (root : Str) -> A -- forms adjectives with positive form aFCal
|
mkA : (root : Str) -> A -- forms adjectives with positive form aFCal
|
||||||
= clrA ;
|
= \r -> lin A (clrA r);
|
||||||
mkA : (posit,compar,plur : Str) -> A
|
mkA : (root,sg,pl : Str) -> A
|
||||||
= degrA ;
|
= \r,s,p -> lin A (brkA r s p) ;
|
||||||
|
-- mkA : (posit,compar,plur : Str) -> A
|
||||||
|
-- = degrA ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
--Takes a root string and a pattern string
|
--Takes a root string and a pattern string
|
||||||
sndA : (root,patt : Str) -> A ;
|
sndA : (root,patt : Str) -> Adj ;
|
||||||
|
|
||||||
--Takes a root string only
|
--Takes a root string only
|
||||||
clrA : (root : Str) -> A ; -- forms adjectives of type aFCal
|
clrA : (root : Str) -> Adj ; -- forms adjectives of type aFCal
|
||||||
|
|
||||||
--3 Two-place adjectives
|
--3 Two-place adjectives
|
||||||
--
|
--
|
||||||
@@ -284,10 +286,9 @@ resource ParadigmsAra = open
|
|||||||
|
|
||||||
v1' : Str -> Vowel -> Vowel -> Verb =
|
v1' : Str -> Vowel -> Vowel -> Verb =
|
||||||
\rootStr,vPerf,vImpf ->
|
\rootStr,vPerf,vImpf ->
|
||||||
let { root = mkRoot3 rootStr ;
|
let { root = mkRoot3 rootStr } in
|
||||||
l = dp 2 rootStr } in --last rootStr
|
case <root.l, root.c> of {
|
||||||
case <l, root.c> of {
|
<"ّ", _> => v1geminate rootStr vPerf vImpf ;
|
||||||
<"ّ",_> => v1geminate rootStr vPerf vImpf ;
|
|
||||||
<"و"|"ي",_> => case vPerf of {
|
<"و"|"ي",_> => case vPerf of {
|
||||||
i => v1defective_i root vImpf ;
|
i => v1defective_i root vImpf ;
|
||||||
_ => v1defective_a root vImpf } ;
|
_ => v1defective_a root vImpf } ;
|
||||||
@@ -405,8 +406,14 @@ resource ParadigmsAra = open
|
|||||||
|
|
||||||
sdfN =
|
sdfN =
|
||||||
\root,sg,gen,spec ->
|
\root,sg,gen,spec ->
|
||||||
let { kalima = mkWord sg root;
|
let { kalimaStr = mkWord sg root;
|
||||||
} in mkFullN (sndf kalima) gen spec;
|
kalimaRaw = sndf kalimaStr;
|
||||||
|
kalima : NTable = \\n,d,c => case root of {
|
||||||
|
_ + #hamza + _
|
||||||
|
=> rectifyHmz (kalimaRaw ! n ! d ! c);
|
||||||
|
_ => kalimaRaw ! n ! d ! c
|
||||||
|
};
|
||||||
|
} in mkFullN kalima gen spec;
|
||||||
|
|
||||||
sdmN =
|
sdmN =
|
||||||
\root,sg,gen,spec ->
|
\root,sg,gen,spec ->
|
||||||
@@ -428,9 +435,9 @@ resource ParadigmsAra = open
|
|||||||
mkPron : (_,_,_ : Str) -> PerGenNum -> NP = \ana,nI,I,pgn ->
|
mkPron : (_,_,_ : Str) -> PerGenNum -> NP = \ana,nI,I,pgn ->
|
||||||
{ s =
|
{ s =
|
||||||
table {
|
table {
|
||||||
Nom => ana;
|
Acc => BIND ++ nI; -- object suffix
|
||||||
Acc => nI;
|
Gen => BIND ++ I; -- possessive suffix
|
||||||
Gen => I
|
_ => ana
|
||||||
};
|
};
|
||||||
a = {pgn = pgn; isPron = True };
|
a = {pgn = pgn; isPron = True };
|
||||||
lock_NP = <>
|
lock_NP = <>
|
||||||
@@ -451,7 +458,7 @@ resource ParadigmsAra = open
|
|||||||
};
|
};
|
||||||
|
|
||||||
mkQuant7 : (_,_,_,_,_,_,_ : Str) -> State -> Quant =
|
mkQuant7 : (_,_,_,_,_,_,_ : Str) -> State -> Quant =
|
||||||
\hava,havihi,havAn,havayn,hAtAn,hAtayn,hA'ulA,det ->
|
\hava,havihi,havAn,havayn,hAtAn,hAtayn,hA'ulA,det -> lin Quant (baseQuant **
|
||||||
{ s = \\n,s,g,c =>
|
{ s = \\n,s,g,c =>
|
||||||
case <s,g,c,n> of {
|
case <s,g,c,n> of {
|
||||||
<_,Masc,_,Sg> => hava;
|
<_,Masc,_,Sg> => hava;
|
||||||
@@ -463,14 +470,11 @@ resource ParadigmsAra = open
|
|||||||
<Hum,_,_,Pl> => hA'ulA;
|
<Hum,_,_,Pl> => hA'ulA;
|
||||||
_ => havihi
|
_ => havihi
|
||||||
};
|
};
|
||||||
d = Def;
|
d = det
|
||||||
isPron = False;
|
});
|
||||||
isNum = False;
|
|
||||||
lock_Quant = <>
|
|
||||||
};
|
|
||||||
|
|
||||||
mkQuant3 : (_,_,_ : Str) -> State -> Quant =
|
mkQuant3 : (_,_,_ : Str) -> State -> Quant =
|
||||||
\dalika,tilka,ula'ika,det ->
|
\dalika,tilka,ula'ika,det -> lin Quant (baseQuant **
|
||||||
{ s = \\n,s,g,c =>
|
{ s = \\n,s,g,c =>
|
||||||
case <s,g,c,n> of {
|
case <s,g,c,n> of {
|
||||||
<_,Masc,_,Sg> => dalika;
|
<_,Masc,_,Sg> => dalika;
|
||||||
@@ -478,11 +482,21 @@ resource ParadigmsAra = open
|
|||||||
<Hum,_,_,_> => ula'ika;
|
<Hum,_,_,_> => ula'ika;
|
||||||
_ => tilka
|
_ => tilka
|
||||||
};
|
};
|
||||||
d = det;
|
d = det
|
||||||
isPron = False;
|
});
|
||||||
isNum = False;
|
|
||||||
lock_Quant = <>
|
brkA : (root,sg,pl : Str) -> Adj = \root,sg,pl ->
|
||||||
};
|
let jadId = mkWord sg root ;
|
||||||
|
jadIda = jadId + "َة" ;
|
||||||
|
judud = mkWord pl root ;
|
||||||
|
akbar = mkWord "أَفعَل" root ;
|
||||||
|
mascTbl = reg jadId judud ;
|
||||||
|
femTbl = reg jadIda judud ;
|
||||||
|
in { s = table {
|
||||||
|
APosit Masc n d c => mascTbl ! n ! d ! c ;
|
||||||
|
APosit Fem n d c => femTbl ! n ! d ! c ;
|
||||||
|
AComp d c => indeclN akbar ! d ! c }
|
||||||
|
} ;
|
||||||
|
|
||||||
degrA : (posit,compar,plur : Str) -> A
|
degrA : (posit,compar,plur : Str) -> A
|
||||||
= \posit,compar,plur -> lin A {s = clr posit compar plur} ;
|
= \posit,compar,plur -> lin A {s = clr posit compar plur} ;
|
||||||
@@ -493,20 +507,18 @@ resource ParadigmsAra = open
|
|||||||
case root of {
|
case root of {
|
||||||
_ + #hamza + _ => rectifyHmz(raw.s ! af);
|
_ + #hamza + _ => rectifyHmz(raw.s ! af);
|
||||||
_ => raw.s ! af
|
_ => raw.s ! af
|
||||||
};
|
}
|
||||||
lock_A = <>
|
|
||||||
};
|
};
|
||||||
|
|
||||||
sndA' : Str -> Str -> A =
|
sndA' : Str -> Str -> Adj =
|
||||||
\root,pat ->
|
\root,pat ->
|
||||||
let { kabIr = mkWord pat root;
|
let { kabIr = mkWord pat root;
|
||||||
akbar = mkWord "أَفعَل" root
|
akbar = mkWord "أَفعَل" root
|
||||||
} in {
|
} in {
|
||||||
s = table {
|
s = table {
|
||||||
APosit g n d c => (positAdj kabIr) ! g ! n ! d ! c ;
|
APosit g n d c => positAdj kabIr ! g ! n ! d ! c ;
|
||||||
AComp d c => (indeclN akbar) ! d ! c
|
AComp d c => indeclN akbar ! d ! c
|
||||||
};
|
}
|
||||||
lock_A = <>
|
|
||||||
};
|
};
|
||||||
|
|
||||||
clrA root =
|
clrA root =
|
||||||
@@ -515,7 +527,6 @@ resource ParadigmsAra = open
|
|||||||
Humr = mkWord "فُعل" root
|
Humr = mkWord "فُعل" root
|
||||||
} in {
|
} in {
|
||||||
s = clr eaHmar HamrA' Humr;
|
s = clr eaHmar HamrA' Humr;
|
||||||
lock_A = <>
|
|
||||||
};
|
};
|
||||||
|
|
||||||
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ concrete PhraseAra of Phrase = CatAra ** open
|
|||||||
UttAP ap = {s = ResAra.uttAP ap} ; --IL
|
UttAP ap = {s = ResAra.uttAP ap} ; --IL
|
||||||
UttCard c = {s = ResAra.uttNum c} ; --IL
|
UttCard c = {s = ResAra.uttNum c} ; --IL
|
||||||
|
|
||||||
UttCN cn = {s = \\_ => cn.s ! Sg ! Def ! Nom} ; --IL
|
UttCN cn = {s = ResAra.uttCN cn } ; --IL
|
||||||
UttNP np = {s = \\_ => np.s ! Nom} ;
|
UttNP np = {s = \\_ => np.s ! Nom} ;
|
||||||
UttVP vp = {s = \\g => (compVP vp).s ! {g=g ; n=Sg} ! Nom} ; --IL
|
UttVP vp = {s = \\g => (compVP vp).s ! {g=g ; n=Sg} ! Nom} ; --IL
|
||||||
UttS,
|
UttS,
|
||||||
|
|||||||
@@ -17,10 +17,14 @@ resource ResAra = PatternsAra ** open Prelude, Predef, OrthoAra, ParamX in {
|
|||||||
Vowel = u | a | i ;
|
Vowel = u | a | i ;
|
||||||
Number = Sg | Dl | Pl;
|
Number = Sg | Dl | Pl;
|
||||||
Gender = Masc | Fem ;
|
Gender = Masc | Fem ;
|
||||||
Case = Nom | Acc | Gen ;
|
Case = Nom | Acc | Gen
|
||||||
|
| Bare ; -- 1st person poss. suff. overrides case
|
||||||
Person = P1 | P2 | P3 ;
|
Person = P1 | P2 | P3 ;
|
||||||
Species = NoHum | Hum ;
|
Species = NoHum | Hum ;
|
||||||
State = Def | Indef | Const ;
|
State = Def | Indef | Const
|
||||||
|
| Poss ; -- ة turns into ت
|
||||||
|
-- sound masculine plural drops ن
|
||||||
|
-- case vowel retained
|
||||||
Mood = Ind | Cnj | Jus ;
|
Mood = Ind | Cnj | Jus ;
|
||||||
Voice = Act | Pas ;
|
Voice = Act | Pas ;
|
||||||
Tense = Pres | Past | Fut ;
|
Tense = Pres | Past | Fut ;
|
||||||
@@ -37,26 +41,17 @@ resource ResAra = PatternsAra ** open Prelude, Predef, OrthoAra, ParamX in {
|
|||||||
|
|
||||||
-- AR 7/12/2009 changed this to avoid duplication of consonants
|
-- AR 7/12/2009 changed this to avoid duplication of consonants
|
||||||
mkRoot3 : Str -> Root3 = \fcl -> case fcl of {
|
mkRoot3 : Str -> Root3 = \fcl -> case fcl of {
|
||||||
f@? + c@? + l => {f = f ; c = c ; l = l}
|
f@? + c@? + l => {f = f ; c = c ; l = l} ;
|
||||||
|
_ => error ("mkRoot3: too short root" ++ fcl)
|
||||||
} ;
|
} ;
|
||||||
{-
|
|
||||||
mkRoot3 : Str -> Root3 = \fcl ->
|
|
||||||
let { cl = drop 2 fcl; --drop 1 fcl
|
|
||||||
l' = dp 2 fcl; --last fcl
|
|
||||||
c' = take 2 cl} in --take 1 cl
|
|
||||||
{f = take 2 fcl; c = c'; --take 1 fcl
|
|
||||||
l = case l' of {
|
|
||||||
"ّ" => c';
|
|
||||||
_ => l'
|
|
||||||
}
|
|
||||||
};
|
|
||||||
-}
|
|
||||||
|
|
||||||
--for roots with 2 consonants (works also for assimilated strs, like fc~,
|
--for roots with 2 consonants (works also for assimilated strs, like fc~,
|
||||||
--because the function discards anything after the first two characters
|
--because the function discards anything after the first two characters
|
||||||
mkRoot2 : Str -> Root2 = \fcl ->
|
mkRoot2 : Str -> Root2 = \fcl ->
|
||||||
let { cl = drop 2 fcl} in --drop 1 fcl
|
case fcl of {
|
||||||
{f = take 2 fcl; c = take 2 cl}; --take 1
|
f@? + c@? + _ => { f = f ; c = c } ;
|
||||||
|
_ => error ("mkRoot2: too short root" ++ fcl)
|
||||||
|
};
|
||||||
|
|
||||||
--opers to interdigitize (make words out of roots and patterns:
|
--opers to interdigitize (make words out of roots and patterns:
|
||||||
|
|
||||||
@@ -89,15 +84,23 @@ resource ResAra = PatternsAra ** open Prelude, Predef, OrthoAra, ParamX in {
|
|||||||
--takes a pattern string and root string and makes a word
|
--takes a pattern string and root string and makes a word
|
||||||
mkWord : Str -> Str -> Str =\pS, rS ->
|
mkWord : Str -> Str -> Str =\pS, rS ->
|
||||||
case pS of {
|
case pS of {
|
||||||
w@_ + "ف" + x@_ + "ع" + y@_ + "ل" + z@_ =>
|
w + "ف" + x + "ع" + y + "ل" + z =>
|
||||||
mkStrong { h = w ; m1 = x; m2 = y; t = z} (mkRoot3 rS);
|
let pat = { h = w ; m1 = x; m2 = y; t = z} in
|
||||||
w@_ + "ف" + x@_ + "ع" + y@_ =>
|
case rS of {
|
||||||
|
x@? + y@? + "ّ" => mkStrong pat (mkRoot3 (x+y+y)) ; -- In principle, shadda shouldn't be in the root, but if someone puts one, this should fix it. /IL
|
||||||
|
_ => mkStrong pat (mkRoot3 rS) } ;
|
||||||
|
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 rS of {
|
||||||
-- 6 | 5 => mkWeak pat (mkRoot3 rS) ; --3=>
|
x + "ّ" => mkBilit pat (mkRoot2 x) ; -- fc~
|
||||||
6 | 5 => mkHollow pat (mkRoot3 rS) ; --3=>
|
x@? + y@? + ("و"|"ي")
|
||||||
4 | 3 => mkBilit pat (mkRoot2 rS) ; --2=>
|
=> mkDefective pat (mkRoot3 rS) ;
|
||||||
_ => rS ---- AR error "expected 3--6"
|
x@? + ("و"|"ي") + z@?
|
||||||
|
=> mkHollow pat (mkRoot3 rS) ;
|
||||||
|
("و"|"ي") + y@? + z@?
|
||||||
|
=> mkAssimilated pat (mkRoot3 rS) ;
|
||||||
|
? + ? + _ => mkBilit pat (mkRoot2 rS) ; --2=>
|
||||||
|
_=> error rS ---- AR error "expected 3--6"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -114,6 +117,10 @@ resource ResAra = PatternsAra ** open Prelude, Predef, OrthoAra, ParamX in {
|
|||||||
uttAP : AP -> (Gender => Str) ;
|
uttAP : AP -> (Gender => Str) ;
|
||||||
uttAP ap = \\g => ap.s ! NoHum ! g ! Sg ! Def ! Nom ; ----IL
|
uttAP ap = \\g => ap.s ! NoHum ! g ! Sg ! Def ! Nom ; ----IL
|
||||||
|
|
||||||
|
CN : Type = Noun ** {adj : NTable ; np : Case => Str};
|
||||||
|
uttCN : CN -> (Gender => Str) ;
|
||||||
|
uttCN cn = \\_ => cn.s ! Sg ! Indef ! Bare ;
|
||||||
|
|
||||||
NumOrdCard : Type = {
|
NumOrdCard : Type = {
|
||||||
s : Gender => State => Case => Str ;
|
s : Gender => State => Case => Str ;
|
||||||
n : Size ;
|
n : Size ;
|
||||||
@@ -129,7 +136,7 @@ resource ResAra = PatternsAra ** open Prelude, Predef, OrthoAra, ParamX in {
|
|||||||
VPerf Voice PerGenNum
|
VPerf Voice PerGenNum
|
||||||
| VImpf Mood Voice PerGenNum
|
| VImpf Mood Voice PerGenNum
|
||||||
| VImp Gender Number
|
| VImp Gender Number
|
||||||
| VPPart ;
|
| VPPart ; -- TODO: add gender and number (or check if easy to use BIND)
|
||||||
|
|
||||||
PerGenNum =
|
PerGenNum =
|
||||||
Per3 Gender Number
|
Per3 Gender Number
|
||||||
@@ -783,6 +790,14 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
|
|
||||||
--Nominal Morphology
|
--Nominal Morphology
|
||||||
|
|
||||||
|
caseTbl : Case => Str =
|
||||||
|
table {
|
||||||
|
Bare => [] ;
|
||||||
|
Nom => "ُ";
|
||||||
|
Acc => "َ";
|
||||||
|
Gen => "ِ"
|
||||||
|
};
|
||||||
|
|
||||||
--takes the adjective lemma and gives the Posit table
|
--takes the adjective lemma and gives the Posit table
|
||||||
positAdj : Str -> Gender => NTable =
|
positAdj : Str -> Gender => NTable =
|
||||||
\kabIr ->
|
\kabIr ->
|
||||||
@@ -848,20 +863,22 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
\\s,c => defArt s (case word of {
|
\\s,c => defArt s (case word of {
|
||||||
lemma + "ِي" => fixShd lemma (dec2sg ! s ! c) ;
|
lemma + "ِي" => fixShd lemma (dec2sg ! s ! c) ;
|
||||||
_ + ("ا"|"ى") => fixShd word (dec3sg ! s ! c) ;
|
_ + ("ا"|"ى") => fixShd word (dec3sg ! s ! c) ;
|
||||||
|
lemma + "ة" => case s of {
|
||||||
|
Poss => lemma + "ت" + dec1sg ! s ! c ;
|
||||||
|
_ => word + dec1sg ! s ! c
|
||||||
|
} ;
|
||||||
_ => fixShd word (dec1sg ! s ! c)
|
_ => fixShd 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 ->
|
\\s,c => defArt s (case caSaA of {
|
||||||
case caSaA of {
|
lemma + ("ا"|"ى") => lemma + "ي" + dl ! s ! c ;
|
||||||
lemma + ("ا"|"ى") => \\s,c => defArt s lemma + "ي" + dl ! s ! c ;
|
lemma + "ة" => lemma + "ت" + dl ! s ! c ;
|
||||||
lemma + "ة" =>
|
_ => fixShd caSaA (dl ! s ! c)
|
||||||
\\s,c => defArt s (lemma + "ت") + 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
|
||||||
@@ -898,59 +915,46 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
table {
|
table {
|
||||||
Indef =>
|
Indef =>
|
||||||
table {
|
table {
|
||||||
|
Bare => [];
|
||||||
Nom => "ٌ";
|
Nom => "ٌ";
|
||||||
Acc => "ً";
|
Acc => "ً";
|
||||||
Gen => "ٍ"
|
Gen => "ٍ"
|
||||||
};
|
};
|
||||||
_ =>
|
_ => caseTbl --think of ?axU, ?axA, (the five nouns)
|
||||||
table { --think of ?axU, ?axA, (the five nouns)
|
|
||||||
Nom => "ُ";
|
|
||||||
Acc => "َ";
|
|
||||||
Gen => "ِ"
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
--indeclinables (mamnuu3 mina S-Sarf)
|
--indeclinables (mamnuu3 mina S-Sarf)
|
||||||
indecl : Case => Str =
|
indecl : Case => Str =
|
||||||
table {
|
table {
|
||||||
Nom => "ُ";
|
Gen => "َ" ;
|
||||||
_ => "َ"
|
x => caseTbl ! x
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
--declection 2 (ends in yaa')
|
--declension 2 (ends in yaa')
|
||||||
dec2sg : State => Case => Str =
|
dec2sg : State => Case => Str = \\s,c =>
|
||||||
table {
|
case <s,c> of {
|
||||||
Indef =>
|
<_, Bare> => [] ;
|
||||||
table {
|
<Indef,Acc> => "ِياً" ;
|
||||||
Acc => "ِياً";
|
<Indef> => "ٍ" ;
|
||||||
_ => "ٍ"
|
<_, Acc> => "ِيَ" ;
|
||||||
};
|
|
||||||
_ =>
|
|
||||||
table {
|
|
||||||
Acc => "ِيَ";
|
|
||||||
_ => "ِي"
|
_ => "ِي"
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
--declention 3 (ending in alif)
|
--declension 3 (ending in alif)
|
||||||
dec3sg : State => Case => Str =
|
dec3sg : State => Case => Str = \\s,c =>
|
||||||
table {
|
case <s,c> of {
|
||||||
Indef =>
|
<Indef,Bare> => [] ;
|
||||||
table {
|
<Indef> => "ً" ;
|
||||||
_ => "ً"
|
_ => []
|
||||||
};
|
|
||||||
_ =>
|
|
||||||
table {
|
|
||||||
_ => ""
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
--dual suffixes
|
--dual suffixes
|
||||||
dl : State => Case => Str =
|
dl : State => Case => Str =
|
||||||
table {
|
table {
|
||||||
Const =>
|
(Const|Poss) =>
|
||||||
table {
|
table {
|
||||||
Nom => "َا";
|
Nom => "َا";
|
||||||
_ => "َيْ"
|
_ => "َيْ"
|
||||||
@@ -958,20 +962,22 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
_ =>
|
_ =>
|
||||||
table {
|
table {
|
||||||
Nom => "َانِ";
|
Nom => "َانِ";
|
||||||
|
Bare => "َيْن";
|
||||||
_ => "َيْنِ"
|
_ => "َيْنِ"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
--sound mascualine plural suffixes
|
--sound masculine plural suffixes
|
||||||
m_pl : State => Case => Str =
|
m_pl : State => Case => Str =
|
||||||
table {
|
table {
|
||||||
Const =>
|
(Const|Poss) =>
|
||||||
table {
|
table {
|
||||||
Nom => "ُو";
|
Nom => "ُو";
|
||||||
_ => "ِي"
|
_ => "ِي"
|
||||||
};
|
};
|
||||||
_ =>
|
_ =>
|
||||||
table {
|
table {
|
||||||
|
Bare => "ِين";
|
||||||
Nom => "ُونَ";
|
Nom => "ُونَ";
|
||||||
_ => "ِينَ"
|
_ => "ِينَ"
|
||||||
}
|
}
|
||||||
@@ -982,11 +988,13 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
table {
|
table {
|
||||||
Indef =>
|
Indef =>
|
||||||
table {
|
table {
|
||||||
|
Bare => [];
|
||||||
Nom => "ٌ";
|
Nom => "ٌ";
|
||||||
_ => "ٍ"
|
_ => "ٍ"
|
||||||
};
|
};
|
||||||
_ =>
|
_ =>
|
||||||
table {
|
table {
|
||||||
|
Bare => [];
|
||||||
Nom => "ُ";
|
Nom => "ُ";
|
||||||
_ => "ِ"
|
_ => "ِ"
|
||||||
}
|
}
|
||||||
@@ -1030,11 +1038,11 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
case <s,n> of {
|
case <s,n> of {
|
||||||
<Const,Pl> => Def; --kullu l-kutubi, bacDu l-kutubi
|
<Const,Pl> => Def; --kullu l-kutubi, bacDu l-kutubi
|
||||||
<Const,Sg> => Indef; --kullu kitaabin
|
<Const,Sg> => Indef; --kullu kitaabin
|
||||||
<Indef,_> => Indef; --kitaabun
|
<Indef> => Indef; --kitaabun
|
||||||
|
<Poss> => Poss;
|
||||||
_ => Def --Lkitaabu
|
_ => Def --Lkitaabu
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
--FIXME needs testing
|
--FIXME needs testing
|
||||||
nounCase : Case -> Size -> State -> Case =
|
nounCase : Case -> Size -> State -> Case =
|
||||||
\c,size,s ->
|
\c,size,s ->
|
||||||
@@ -1112,14 +1120,24 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
Det : Type = {
|
BaseQuant : Type = {
|
||||||
s : Species => Gender => Case => Str ;
|
|
||||||
d : State;
|
d : State;
|
||||||
n : Size;
|
is1sg : Bool; -- To force no case marker for 1st person poss. suff.
|
||||||
isNum : Bool;
|
isNum : Bool;
|
||||||
-- for genitive pronouns (suffixes). if true, then "cn ++ det"
|
-- for genitive pronouns (suffixes). if true, then "cn ++ det"
|
||||||
--should be used instead of "det ++ cn" when constructing the NP
|
--should be used instead of "det ++ cn" when constructing the NP
|
||||||
isPron : Bool
|
isPron: Bool} ;
|
||||||
|
|
||||||
|
baseQuant = { d = Indef ;
|
||||||
|
is1sg,isNum,isPron = False } ;
|
||||||
|
|
||||||
|
Quant : Type = BaseQuant ** {
|
||||||
|
s : ResAra.Number => Species => Gender => Case => Str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Det : Type = BaseQuant ** {
|
||||||
|
s : Species => Gender => Case => Str ;
|
||||||
|
n : Size
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
Predet : Type = {
|
Predet : Type = {
|
||||||
@@ -1183,7 +1201,7 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
case vf of {
|
case vf of {
|
||||||
VPPerf => v.s ! (VPerf Act pgn);
|
VPPerf => v.s ! (VPerf Act pgn);
|
||||||
VPImpf m => v.s ! (VImpf m Act pgn);
|
VPImpf m => v.s ! (VImpf m Act pgn);
|
||||||
VPImp => v.s ! (VImp Masc Sg)--gn.g gn.n)
|
VPImp => v.s ! (VImp gn.g gn.n)
|
||||||
};
|
};
|
||||||
obj = {
|
obj = {
|
||||||
s = [] ;
|
s = [] ;
|
||||||
@@ -1248,7 +1266,10 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
mkNum : Str -> Str -> Str ->
|
mkNum : Str -> Str -> Str ->
|
||||||
{s : DForm => CardOrd => Gender => State => Case => Str} =
|
{s : DForm => CardOrd => Gender => State => Case => Str} =
|
||||||
\wAhid,awwal,Ula ->
|
\wAhid,awwal,Ula ->
|
||||||
let { wAhida = wAhid + "َة"} in
|
let wAhida : Str = case wAhid of {
|
||||||
|
x + "ة" => mkAt wAhid ;
|
||||||
|
_ => wAhid + "َة" }
|
||||||
|
in
|
||||||
{ s= table {
|
{ s= table {
|
||||||
unit => table {
|
unit => table {
|
||||||
NCard => table {
|
NCard => table {
|
||||||
|
|||||||
@@ -43,9 +43,9 @@ concrete StructuralAra of Structural = CatAra **
|
|||||||
-- how8many_IDet = mkDet "كَمْ" Pl Const ; -- IL: check (was ["هْو مَني"]) ;
|
-- how8many_IDet = mkDet "كَمْ" Pl Const ; -- IL: check (was ["هْو مَني"]) ;
|
||||||
-- if_Subj = ss "ِف" ;
|
-- if_Subj = ss "ِف" ;
|
||||||
in8front_Prep = ss "مُقَابِلَ" ;
|
in8front_Prep = ss "مُقَابِلَ" ;
|
||||||
i_Pron = mkPron "أَنَا" "نِي" "ِي" (Per1 Sing);
|
i_Pron = mkPron "أَنَا" "نِي" "ي" (Per1 Sing);
|
||||||
in_Prep = ss "فِي" ;
|
in_Prep = ss "فِي" ;
|
||||||
it_Pron = mkPron "ِت" "ِت" "ِتس" (Per3 Masc Sg); -- IL: check
|
it_Pron = he_Pron ; -- was: it_Pron = mkPron "ِت" "ِت" "ِتس" (Per3 Masc Sg);
|
||||||
-- less_CAdv = ss "لسّ" ;
|
-- less_CAdv = ss "لسّ" ;
|
||||||
many_Det = mkDet "جَمِيع" Pl Const ;
|
many_Det = mkDet "جَمِيع" Pl Const ;
|
||||||
-- more_CAdv = ss "مْري" ;
|
-- more_CAdv = ss "مْري" ;
|
||||||
@@ -69,7 +69,7 @@ concrete StructuralAra of Structural = CatAra **
|
|||||||
she_Pron = mkPron "هِيَ" "ها" "ها" (Per3 Fem Sg) ;
|
she_Pron = mkPron "هِيَ" "ها" "ها" (Per3 Fem Sg) ;
|
||||||
-- so_AdA = ss "سْ" ;
|
-- so_AdA = ss "سْ" ;
|
||||||
somebody_NP = regNP "أَحَد" Sg ;
|
somebody_NP = regNP "أَحَد" Sg ;
|
||||||
someSg_Det = mkDet "أَحَد" Pl Const ;
|
someSg_Det = mkDet "أَحَد" Sg Const ;
|
||||||
somePl_Det = mkDet "بَعض" Pl Const ;
|
somePl_Det = mkDet "بَعض" Pl Const ;
|
||||||
something_NP = regNP "شَيْء" Sg ;
|
something_NP = regNP "شَيْء" Sg ;
|
||||||
-- somewhere_Adv = ss "سْموهري" ;
|
-- somewhere_Adv = ss "سْموهري" ;
|
||||||
@@ -98,6 +98,7 @@ 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 {
|
||||||
|
<Bare,_> => "أيّ" ;
|
||||||
<Nom,Indef> => "أيٌّ" ;
|
<Nom,Indef> => "أيٌّ" ;
|
||||||
<Nom,_> => "أيُّ" ;
|
<Nom,_> => "أيُّ" ;
|
||||||
<Acc,Indef> => "أيّاً" ;
|
<Acc,Indef> => "أيّاً" ;
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra in {
|
|||||||
--
|
--
|
||||||
-- UseVS, UseVQ = \vv -> {s = vv.s ; c2 = [] ; isRefl = vv.isRefl} ; -- no
|
-- UseVS, UseVQ = \vv -> {s = vv.s ; c2 = [] ; isRefl = vv.isRefl} ; -- no
|
||||||
|
|
||||||
CompCN cn = {s = \\agr,c => cn.s ! agr.n ! Indef ! c} ; ----IL
|
CompCN cn = {s = \\agr,c => cn.s ! agr.n ! Indef ! c ++ cn.np ! c ++ cn.adj ! agr.n ! Indef ! c} ; ----IL
|
||||||
CompAP ap = {s = \\agr,c => ap.s ! Hum ! agr.g ! agr.n ! Indef ! c} ; --FIXME
|
CompAP ap = {s = \\agr,c => ap.s ! Hum ! agr.g ! agr.n ! Indef ! c} ; --FIXME
|
||||||
CompNP np = {s = \\_,c => np.s ! c};
|
CompNP np = {s = \\_,c => np.s ! c};
|
||||||
CompAdv a = {s = \\_,_ => a.s} ;
|
CompAdv a = {s = \\_,_ => a.s} ;
|
||||||
|
|||||||
@@ -18,7 +18,9 @@ concrete ExtendPor of Extend =
|
|||||||
iFem_Pron,
|
iFem_Pron,
|
||||||
ListVPS,
|
ListVPS,
|
||||||
PassVPSlash,
|
PassVPSlash,
|
||||||
PassVPSlash,
|
PassAgentVPSlash,
|
||||||
|
PastPartAP,
|
||||||
|
PastPartAgentAP,
|
||||||
ProDrop,
|
ProDrop,
|
||||||
theyFem_Pron,
|
theyFem_Pron,
|
||||||
VPS,
|
VPS,
|
||||||
@@ -94,31 +96,42 @@ concrete ExtendPor of Extend =
|
|||||||
PrepCN prep cn = {s = prep.s ++ prepCase prep.c ++ cn.s ! Sg} ;
|
PrepCN prep cn = {s = prep.s ++ prepCase prep.c ++ cn.s ! Sg} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
PassVPSlash vps =
|
PastPartAP vps = pastPartAP vps [] ;
|
||||||
let auxvp = predV copula
|
|
||||||
in
|
PastPartAgentAP vps np = pastPartAP vps (let by = <Grammar.by8agent_Prep : Prep> in by.s ++ (np.s ! by.c).ton) ;
|
||||||
insertComplement (\\a => let agr = complAgr a in vps.s.s ! VPart agr.g agr.n) {
|
|
||||||
s = auxvp.s ;
|
oper
|
||||||
agr = auxvp.agr ;
|
pastPartAP : VPSlash -> Str -> AP ;
|
||||||
neg = vps.neg ;
|
pastPartAP vps agent = lin AP {
|
||||||
clit1 = vps.clit1 ;
|
s = \\af => vps.comp ! (aform2aagr af ** {p = P3}) ++ vps.s.s ! VPart (aform2gender af) (aform2number af) ++ agent ;
|
||||||
clit2 = vps.clit2 ;
|
isPre = False
|
||||||
clit3 = vps.clit3 ;
|
|
||||||
isNeg = vps.isNeg ;
|
|
||||||
comp = vps.comp ;
|
|
||||||
ext = vps.ext
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
PassVPSlash vps = passVPSlash vps [] ;
|
||||||
|
|
||||||
|
PassAgentVPSlash vps np = passVPSlash vps (let by = <Grammar.by8agent_Prep : Prep> in by.s ++ (np.s ! by.c).ton) ;
|
||||||
|
|
||||||
ExistsNP np =
|
ExistsNP np =
|
||||||
mkClause [] True False np.a
|
mkClause [] True False np.a
|
||||||
(insertComplement (\\_ => (np.s ! Nom).ton)
|
(insertComplement (\\_ => (np.s ! Nom).ton)
|
||||||
(predV (mkV "existir"))) ;
|
(predV (mkV "existir"))) ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
passVPSlash : VPSlash -> Str -> VP = \vps, agent ->
|
||||||
|
let auxvp = predV auxPassive
|
||||||
|
in
|
||||||
|
vps ** {
|
||||||
|
s = auxvp.s ;
|
||||||
|
agr = auxvp.agr ;
|
||||||
|
comp = \\a => vps.comp ! a ++ (let agr = complAgr a in vps.s.s ! VPart agr.g agr.n) ++ agent ;
|
||||||
|
} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
CompoundN noun noun2 = { -- order is different because that's needed for correct translation from english
|
CompoundN noun noun2 = { -- order is different because that's needed for correct translation from english
|
||||||
s = \\n => noun2.s ! n
|
s = \\n => noun2.s ! n
|
||||||
++ variants {genNumForms "do" "da" "dos" "das" ! noun.g ! n; "de"}
|
++ variants {"de" ; genForms "do" "da" ! noun.g}
|
||||||
++ noun.s ! n ;
|
++ noun.s ! Sg ;
|
||||||
g = noun2.g
|
g = noun2.g
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -19,5 +19,4 @@ oper
|
|||||||
a = if_then_else PAgr p (PAg Sg) PNoAg ---- e,g, "chacun de"; other possibilities?
|
a = if_then_else PAgr p (PAg Sg) PNoAg ---- e,g, "chacun de"; other possibilities?
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
} ;
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user