diff options
| author | aarne <aarne@chalmers.se> | 2009-06-22 15:39:08 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2009-06-22 15:39:08 +0000 |
| commit | e89fdae2fa1626348d8025824a7469252fa85e42 (patch) | |
| tree | c7d46bbd0494043b4bd6f917a25a7687517d0547 /next-lib/src/arabic | |
| parent | 3049b59b35b25381a7c6787444165c200d66e08b (diff) | |
next-lib renamed to lib, lib to old-lib
Diffstat (limited to 'next-lib/src/arabic')
26 files changed, 0 insertions, 3547 deletions
diff --git a/next-lib/src/arabic/AdjectiveAra.gf b/next-lib/src/arabic/AdjectiveAra.gf deleted file mode 100644 index a2ca6dcee..000000000 --- a/next-lib/src/arabic/AdjectiveAra.gf +++ /dev/null @@ -1,43 +0,0 @@ -concrete AdjectiveAra of Adjective = CatAra ** open ResAra, Prelude in { - - lin - - - PositA a = { - s = \\h,g,n,d,c => case h of { - Hum => a.s ! APosit g n d c; - NoHum => case n of { - Pl => a.s ! APosit Fem Sg d c ; - _ => a.s ! APosit g n d c - } - } - }; ----- guessed by AR - ComparA a np = { - s = \\sp,g,n,st,c => a.s ! AComp st c ++ "مِنْ" ++ np.s ! Gen ; - } ; --- --- $SuperlA$ belongs to determiner syntax in $Noun$. --- --- ComplA2 a np = { --- s = \\_ => a.s ! AAdj Posit ++ a.c2 ++ np.s ! Acc ; --- isPre = False --- } ; --- --- ReflA2 a = { --- s = \\ag => a.s ! AAdj Posit ++ a.c2 ++ reflPron ! ag ; --- isPre = False --- } ; --- --- SentAP ap sc = { --- s = \\a => ap.s ! a ++ sc.s ; --- isPre = False --- } ; --- - AdAP ada ap = { - s = \\sp,g,n,st,c => ada.s ++ ap.s ! sp ! g ! n ! st ! c - } ; --- --- UseA2 a = a ; --- -} diff --git a/next-lib/src/arabic/AdverbAra.gf b/next-lib/src/arabic/AdverbAra.gf deleted file mode 100644 index 5c2cbdfb6..000000000 --- a/next-lib/src/arabic/AdverbAra.gf +++ /dev/null @@ -1,21 +0,0 @@ -concrete AdverbAra of Adverb = CatAra ** open ResAra, Prelude in { - - lin - PositAdvAdj a = {s = a.s ! APosit Masc Sg Indef Acc} ; --- ComparAdvAdj cadv a np = { --- s = cadv.s ++ a.s ! AAdv ++ "مِنْ" ++ np.s ! Gen --- } ; --- ComparAdvAdjS cadv a s = { --- s = cadv.s ++ a.s ! AAdv ++ "تهَن" ++ s.s --- } ; - - PrepNP prep np = {s = prep.s ++ np.s ! Gen} ; - --- AdAdv = cc2 ; --- --- SubjS = cc2 ; --- AdvSC s = s ; --- this rule give stack overflow in ordinary parsing --- --- AdnCAdv cadv = {s = cadv.s ++ "تهَن"} ; --- -} diff --git a/next-lib/src/arabic/AllAra.gf b/next-lib/src/arabic/AllAra.gf deleted file mode 100644 index d23f9b997..000000000 --- a/next-lib/src/arabic/AllAra.gf +++ /dev/null @@ -1,3 +0,0 @@ ---# -path=.:../abstract:../common:prelude - -concrete AllAra of AllAraAbs = LangAra ; diff --git a/next-lib/src/arabic/AllAraAbs.gf b/next-lib/src/arabic/AllAraAbs.gf deleted file mode 100644 index 9889c81ed..000000000 --- a/next-lib/src/arabic/AllAraAbs.gf +++ /dev/null @@ -1,3 +0,0 @@ ---# -path=.:../abstract:../common:prelude - -abstract AllAraAbs = Lang ; diff --git a/next-lib/src/arabic/CatAra.gf b/next-lib/src/arabic/CatAra.gf deleted file mode 100644 index 88557540d..000000000 --- a/next-lib/src/arabic/CatAra.gf +++ /dev/null @@ -1,103 +0,0 @@ -concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in { - - flags optimize=all_subs ; - - lincat - --- Phrase - - Utt = {s : Gender => Str}; - --- Tensed/Untensed - - S = {s : Str} ; - QS = {s : QForm => Str} ; --- RS = {s : Agr => Str} ; - --- Sentence - - Cl = {s : ResAra.Tense => Polarity => Order => Str} ; --- Slash = {s : Tense => Anteriority => Polarity => Order => Str} ** {c2 : Str} ; - Imp = {s : Polarity => Gender => ResAra.Number => Str} ; - --- Question - - QCl = {s : ResAra.Tense => Polarity => QForm => Str} ; - IP = {s : Str ; n : ResAra.Number} ; --- IAdv = {s : Str} ; - IDet = {s : Case => Str ; n : ResAra.Number} ; ---- AR add Case --- ----- Relative --- --- RCl = {s : Tense => Anteriority => Polarity => Agr => Str} ; --- RP = {s : Case => Str ; a : RAgr} ; --- --- Verb - - VP = ResAra.VP ; - VPSlash = ResAra.VP ** {c2 : Str} ; - Comp = ResAra.Comp ; --{s : AAgr => Case => Str} ; --- SC = {s : Str} ; --- --- Adjective - - AP = {s : Species => Gender => NTable } ; - --- Noun - - CN = ResAra.Noun ** {adj : NTable}; - NP, Pron = ResAra.NP; --{s : Case => Str ; a : Agr } ; - Num, Ord, Card = {s : Gender => State => Case => Str ; - n : Size }; - Predet = ResAra.Predet ; - --- DEPRECATED --- QuantSg, QuantPl = --- {s : Species => Gender => Case => Str; --- n : ResAra.Number; --- d : State; --- isNum : Bool; --- isPron : Bool} ; - - Det = ResAra.Det ; --- {s : Species => Gender => Case => Str ; --- d : State; n : Size; isNum : Bool } ; - Quant = {s : ResAra.Number => Species => Gender => Case => Str; - d : State; - isNum : Bool; - isPron: Bool} ; - Art = {s : ResAra.Number => Species => Gender => Case => Str; - d : State} ; - --- Numeral - - Numeral = {s : CardOrd => Gender => State => Case => Str ; - n : Size } ; - Digits = {s : Str; - n : Size}; - --- Structural - - Conj = {s : Str ; n : ResAra.Number} ; --- DConj = {s1,s2 : Str ; n : ResAra.Number} ; --- Subj = {s : Str} ; - Prep = {s : Str} ; - --- Open lexical classes, e.g. Lexicon - - V, VS, VQ, VA = ResAra.Verb ; -- = {s : VForm => Str} ; - V2, V2A = ResAra.Verb ** {c2 : Str} ; - V2V, V2S, V2Q = ResAra.Verb ** {c2 : Str} ; --- AR - V3 = ResAra.Verb ** {c2, c3 : Str} ; --- VV = {s : VVForm => Str ; isAux : Bool} ; - - A = ResAra.Adj ; - A2 = ResAra.Adj ** {c2 : Str} ; - - N, N2 = ResAra.Noun ; ---{s : ResAra.Number => State => Case => Str; g : Gender ; h = Species} ; --- N2 = {s : ResAra.Number => Case => Str} ** {c2 : Str} ;?? - N3 = ResAra.Noun ** {c2,c3 : Str} ; - PN = {s : Case => Str; g : Gender; h : Species} ; - -} diff --git a/next-lib/src/arabic/ConjunctionAra.gf b/next-lib/src/arabic/ConjunctionAra.gf deleted file mode 100644 index f7683c6cc..000000000 --- a/next-lib/src/arabic/ConjunctionAra.gf +++ /dev/null @@ -1,45 +0,0 @@ -concrete ConjunctionAra of Conjunction = - CatAra ** open ResAra, Coordination, Prelude in { --- --- flags optimize=all_subs ; --- --- lin --- --- ConjS = conjunctSS ; --- DConjS = conjunctDistrSS ; --- --- ConjAdv = conjunctSS ; --- DConjAdv = conjunctDistrSS ; --- --- ConjNP conj ss = conjunctTable Case conj ss ** { --- a = {n = conjNumber conj.n ss.a.n ; p = ss.a.p} --- } ; --- DConjNP conj ss = conjunctDistrTable Case conj ss ** { --- a = {n = conjNumber conj.n ss.a.n ; p = ss.a.p} --- } ; --- --- ConjAP conj ss = conjunctTable Agr conj ss ** { --- isPre = ss.isPre --- } ; --- DConjAP conj ss = conjunctDistrTable Agr conj ss ** { --- isPre = ss.isPre --- } ; --- ----- These fun's are generated from the list cat's. --- --- BaseS = twoSS ; --- ConsS = consrSS comma ; --- BaseAdv = twoSS ; --- ConsAdv = consrSS comma ; --- BaseNP x y = twoTable Case x y ** {a = conjAgr x.a y.a} ; --- ConsNP xs x = consrTable Case comma xs x ** {a = conjAgr xs.a x.a} ; --- BaseAP x y = twoTable Agr x y ** {isPre = andB x.isPre y.isPre} ; --- ConsAP xs x = consrTable Agr comma xs x ** {isPre = andB xs.isPre x.isPre} ; --- --- lincat --- [S] = {s1,s2 : Str} ; --- [Adv] = {s1,s2 : Str} ; --- [NP] = {s1,s2 : Case => Str ; a : Agr} ; --- [AP] = {s1,s2 : Agr => Str ; isPre : Bool} ; --- -} diff --git a/next-lib/src/arabic/ExtAra.gf b/next-lib/src/arabic/ExtAra.gf deleted file mode 100644 index 120c7caea..000000000 --- a/next-lib/src/arabic/ExtAra.gf +++ /dev/null @@ -1,26 +0,0 @@ -concrete ExtAra of ExtAraAbs = CatAra ** open ResAra in { --- --- lincat --- --- Aux = {s : Polarity => Str} ; --- --- lin --- --- PredAux np aux vp = mkClause (np.s ! Nom) np.a { --- s = \\t,ant,b,ord,agr => --- let --- fin = aux.s ! b ; --- vf : Str -> Str -> {fin, inf : Str} = \x,y -> --- {fin = x ; inf = y} ; --- in --- case ant of { --- Simul => vf fin [] ; --- Anter => vf fin "هَثي" --- } ; --- s2 = \\agr => infVP vp agr --- } ; --- --- can_Aux = {s = \\p => posneg p "عَن"} ; ---- cannt --- must_Aux = {s = \\p => posneg p "مُست"} ; --- -} diff --git a/next-lib/src/arabic/GrammarAra.gf b/next-lib/src/arabic/GrammarAra.gf deleted file mode 100644 index f276984ad..000000000 --- a/next-lib/src/arabic/GrammarAra.gf +++ /dev/null @@ -1,21 +0,0 @@ ---# -path=.:../abstract:../common:prelude - -concrete GrammarAra of Grammar = - NounAra, - VerbAra, - AdjectiveAra, - AdverbAra, - NumeralAra, - SentenceAra, - QuestionAra, - RelativeAra, - ConjunctionAra, - PhraseAra, - TextX - [Utt], - StructuralAra, - IdiomAra - ** { - -flags startcat = Phr ; unlexer = text ; lexer = text ; - -} ; diff --git a/next-lib/src/arabic/IdiomAra.gf b/next-lib/src/arabic/IdiomAra.gf deleted file mode 100644 index d185c5aa7..000000000 --- a/next-lib/src/arabic/IdiomAra.gf +++ /dev/null @@ -1,14 +0,0 @@ -concrete IdiomAra of Idiom = CatAra ** open Prelude, ResAra in { --- --- flags optimize=all_subs ; --- --- lin --- ExistNP np = --- mkClause "تهري" (agrP3 np.a.n) (insertObj (\\_ => np.s ! Acc) (predAux auxBe)) ; --- ImpersCl vp = mkClause "ِت" (agrP3 Sg) vp ; --- GenericCl vp = mkClause "ْني" (agrP3 Sg) vp ; --- --- ProgrVP vp = insertObj (\\a => vp.ad ++ vp.prp ++ vp.s2 ! a) (predAux auxBe) ; --- -} - diff --git a/next-lib/src/arabic/IrregAra.gf b/next-lib/src/arabic/IrregAra.gf deleted file mode 100644 index 0d463bb83..000000000 --- a/next-lib/src/arabic/IrregAra.gf +++ /dev/null @@ -1,181 +0,0 @@ ---# -path=.:prelude:../abstract:../common --- -concrete IrregAra of IrregAraAbs = CatAra ** open ParadigmsAra in { --- ---flags optimize=values ; --- --- lin --- awake_V = irregV "َوَكي" "َوْكي" "َوْكن" ; --- bear_V = irregV "بَر" "بْري" "بْرن" ; --- beat_V = irregV "بَت" "بَت" "بَت" ; --- become_V = irregV "بعْمي" "بعَمي" "بعْمي" ; --- begin_V = irregV "بغِن" "بغَن" "بغُن" ; --- bend_V = irregV "بند" "بنت" "بنت" ; --- beset_V = irregV "بست" "بست" "بست" ; --- bet_V = irregDuplV "بت" "بت" "بت" ; --- bid_V = irregDuplV "بِد" (variants {"بِد" ; "بَدي"}) (variants {"بِد" ; "بِدّن"}) ; --- bind_V = irregV "بِند" "بُْند" "بُْند" ; --- bite_V = irregV "بِتي" "بِت" "بِتّن" ; --- bleed_V = irregV "بلّد" "بلد" "بلد" ; --- blow_V = irregV "بلْو" "بلو" "بلْون" ; --- break_V = irregV "برَك" "برْكي" "برْكن" ; --- breed_V = irregV "برّد" "برد" "برد" ; --- bring_V = irregV "برِنغ" "برُْغهت" "برُْغهت" ; --- broadcast_V = irregV "برَْدعَست" "برَْدعَست" "برَْدعَست" ; --- build_V = irregV "بُِلد" "بُِلت" "بُِلت" ; --- burn_V = irregV "بُرن" (variants {"بُرند" ; "بُرنت"}) (variants {"بُرند" ; "بُرنت"}) ; --- burst_V = irregV "بُرست" "بُرست" "بُرست" ; --- buy_V = irregV "بُي" "بُْغهت" "بُْغهت" ; --- cast_V = irregV "عَست" "عَست" "عَست" ; --- catch_V = irregV "عَتعه" "عَُغهت" "عَُغهت" ; --- choose_V = irregV "عهّْسي" "عهْسي" "عهْسن" ; --- cling_V = irregV "علِنغ" "علُنغ" "علُنغ" ; --- come_V = irregV "عْمي" "عَمي" "عْمي" ; --- cost_V = irregV "عْست" "عْست" "عْست" ; --- creep_V = irregV "عرّة" "عرةت" "عرةت" ; --- cut_V = irregDuplV "عُت" "عُت" "عُت" ; --- deal_V = irregV "دَل" "دَلت" "دَلت" ; --- dig_V = irregDuplV "دِغ" "دُغ" "دُغ" ; --- dive_V = irregV "دِثي" (variants {"دِثد" ; "دْثي"}) "دِثد" ; --- do_V = mkV "دْ" "دْس" "دِد" "دْني" "دِْنغ" ; --- draw_V = irregV "درَو" "درو" "درَون" ; --- dream_V = irregV "درَم" (variants {"درَمد" ; "درَمت"}) (variants {"درَمد" ; "درَمت"}) ; --- drive_V = irregV "درِثي" "درْثي" "درِثن" ; --- drink_V = irregV "درِنك" "درَنك" "درُنك" ; --- eat_V = irregV "َت" "َتي" "َتن" ; --- fall_V = irregV "فَلّ" "فلّ" "فَلّن" ; --- feed_V = irregV "فّد" "فد" "فد" ; --- feel_V = irregV "فّل" "فلت" "فلت" ; --- fight_V = irregV "فِغهت" "فُْغهت" "فُْغهت" ; --- find_V = irregV "فِند" "فُْند" "فُْند" ; --- fit_V = irregDuplV "فِت" "فِت" "فِت" ; --- flee_V = irregV "فلّ" "فلد" "فلد" ; --- fling_V = irregV "فلِنغ" "فلُنغ" "فلُنغ" ; --- fly_V = irregV "فلي" "فلو" "فلْون" ; --- forbid_V = irregDuplV "فْربِد" "فْربَدي" "فْربِدّن" ; --- forget_V = irregDuplV "فْرغت" "فْرغْت" "فْرغْتّن" ; --- forgive_V = irregV "فْرغِثي" "فْرغَثي" "فْرغِثن" ; --- forsake_V = irregV "فْرسَكي" "فْرسّْك" "فْرسَكن" ; --- freeze_V = irregV "فرّزي" "فرْزي" "فرْزن" ; --- get_V = irregDuplV "غت" "غْت" "غْتّن" ; --- give_V = irregV "غِثي" "غَثي" "غِثن" ; --- go_V = irregV "غْ" "ونت" "غْني" ; --- grind_V = irregV "غرِند" "غرُْند" "غرُْند" ; --- grow_V = irregV "غرْو" "غرو" "غرْون" ; --- hang_V = irregV "هَنغ" "هُنغ" "هُنغ" ; --- have_V = mkV "هَثي" "هَس" "هَد" "هَد" "هَثِنغ" ; --- hear_V = irregV "هَر" "هَرد" "هَرد" ; --- hide_V = irregV "هِدي" "هِد" "هِدّن" ; --- hit_V = irregDuplV "هِت" "هِت" "هِت" ; --- hold_V = irregV "هْلد" "هلد" "هلد" ; --- hurt_V = irregV "هُرت" "هُرت" "هُرت" ; --- keep_V = irregV "كّة" "كةت" "كةت" ; --- kneel_V = irregV "كنّل" "كنلت" "كنلت" ; --- knit_V = irregDuplV "كنِت" "كنِت" "كنِت" ; --- know_V = irregV "كنْو" "كنو" "كنْو" ; --- lay_V = irregV "لَي" "لَِد" "لَِد" ; --- lead_V = irregV "لَد" "لد" "لد" ; --- leap_V = irregV "لَة" (variants {"لَةد" ; "لةت"}) (variants {"لَةد" ; "لةت"}) ; --- learn_V = irregV "لَرن" (variants {"لَرند" ; "لَرنت"}) (variants {"لَرند" ; "لَرنت"}) ; --- leave_V = irregV "لَثي" "لفت" "لفت" ; --- lend_V = irregV "لند" "لنت" "لنت" ; --- let_V = irregDuplV "لت" "لت" "لت" ; --- lie_V = irregV "لِي" "لَي" "لَِن" ; --- light_V = irregV "لِغهت" (variants {"لِغهتد" ; "لِت"}) "لِغهتد" ; --- lose_V = irregV "لْسي" "لْست" "لْست" ; --- make_V = irregV "مَكي" "مَدي" "مَدي" ; --- mean_V = irregV "مَن" "مَنت" "مَنت" ; --- meet_V = irregV "مّت" "مت" "مت" ; --- misspell_V = irregV "مِسّةلّ" (variants {"مِسّةلّد" ; "مِسّةلت"}) (variants {"مِسّةلّد" ; "مِسّةلت"}) ; --- mistake_V = irregV "مِستَكي" "مِستّْك" "مِستَكن" ; --- mow_V = irregV "مْو" "مْود" (variants {"مْود" ; "مْون"}) ; --- overcome_V = irregV "ْثرعْمي" "ْثرعَمي" "ْثرعْمي" ; --- overdo_V = mkV "ْثردْ" "ْثردْس" "ْثردِد" "ْثردْني" "ْثردِْنغ" ; --- overtake_V = irregV "ْثرتَكي" "ْثرتّْك" "ْثرتَكن" ; --- overthrow_V = irregV "ْثرتهرْو" "ْثرتهرو" "ْثرتهرْون" ; --- pay_V = irregV "ةَي" "ةَِد" "ةَِد" ; --- plead_V = irregV "ةلَد" "ةلد" "ةلد" ; --- prove_V = irregV "ةرْثي" "ةرْثد" (variants {"ةرْثد" ; "ةرْثن"}) ; --- put_V = irregDuplV "ةُت" "ةُت" "ةُت" ; --- quit_V = irregDuplV "قُِت" "قُِت" "قُِت" ; --- read_V = irregV "رَد" "رَد" "رَد" ; --- rid_V = irregDuplV "رِد" "رِد" "رِد" ; --- ride_V = irregV "رِدي" "رْدي" "رِدّن" ; --- ring_V = irregV "رِنغ" "رَنغ" "رُنغ" ; --- rise_V = irregV "رِسي" "رْسي" "رِسن" ; --- run_V = irregDuplV "رُن" "رَن" "رُن" ; --- saw_V = irregV "سَو" "سَود" (variants {"سَود" ; "سَون"}) ; --- say_V = irregV "سَي" "سَِد" "سَِد" ; --- see_V = irregV "سّ" "سَو" "سّن" ; --- seek_V = irregV "سّك" "سُْغهت" "سُْغهت" ; --- sell_V = irregV "سلّ" "سْلد" "سْلد" ; --- send_V = irregV "سند" "سنت" "سنت" ; --- set_V = irregDuplV "ست" "ست" "ست" ; --- sew_V = irregV "سو" "سود" (variants {"سود" ; "سون"}) ; --- shake_V = irregV "سهَكي" "سهّْك" "سهَكن" ; --- shave_V = irregV "سهَثي" "سهَثد" (variants {"سهَثد" ; "سهَثن"}) ; --- shear_V = irregV "سهَر" "سهْري" "سهْرن" ; --- shed_V = irregDuplV "سهد" "سهد" "سهد" ; --- shine_V = irregV "سهِني" "سهْني" "سهْني" ; --- shoe_V = irregV "سهْي" "سهْد" (variants {"سهْد" ; "سهْد"}) ; --- shoot_V = irregV "سهّْت" "سهْت" "سهْت" ; --- show_V = irregV "سهْو" "سهْود" (variants {"سهْود" ; "سهْون"}) ; --- shrink_V = irregV "سهرِنك" "سهرَنك" "سهرُنك" ; --- shut_V = irregDuplV "سهُت" "سهُت" "سهُت" ; --- sing_V = irregV "سِنغ" "سَنغ" "سُنغ" ; --- sink_V = irregV "سِنك" "سَنك" "سُنك" ; --- sit_V = irregDuplV "سِت" "سَت" "سَت" ; --- sleep_V = irregV "سلّة" "سلةت" "سلةت" ; --- slay_V = irregV "سلَي" "سلو" "سلَِن" ; --- slide_V = irregV "سلِدي" "سلِد" "سلِد" ; --- sling_V = irregV "سلِنغ" "سلُنغ" "سلُنغ" ; --- slit_V = irregDuplV "سلِت" "سلِت" "سلِت" ; --- smite_V = irregV "سمِتي" "سمْتي" "سمِتّن" ; --- sow_V = irregV "سْو" "سْود" (variants {"سْود" ; "سْون"}) ; --- speak_V = irregV "سةَك" "سةْكي" "سةْكن" ; --- speed_V = irregV "سةّد" "سةد" "سةد" ; --- spend_V = irregV "سةند" "سةنت" "سةنت" ; --- spill_V = irregV "سةِلّ" (variants {"سةِلّد" ; "سةِلت"}) (variants {"سةِلّد" ; "سةِلت"}) ; --- spin_V = irregDuplV "سةِن" "سةُن" "سةُن" ; --- spit_V = irregDuplV "سةِت" (variants {"سةِت" ; "سةَت"}) "سةِت" ; --- split_V = irregDuplV "سةلِت" "سةلِت" "سةلِت" ; --- spread_V = irregV "سةرَد" "سةرَد" "سةرَد" ; --- spring_V = irregV "سةرِنغ" (variants {"سةرَنغ" ; "سةرُنغ"}) "سةرُنغ" ; --- stand_V = irregV "ستَند" "ستّْد" "ستّْد" ; --- steal_V = irregV "ستَل" "ستْلي" "ستْلن" ; --- stick_V = irregV "ستِعك" "ستُعك" "ستُعك" ; --- sting_V = irregV "ستِنغ" "ستُنغ" "ستُنغ" ; --- stink_V = irregV "ستِنك" "ستَنك" "ستُنك" ; --- stride_V = irregV "سترِدي" "سترْد" "سترِدّن" ; --- strike_V = irregV "سترِكي" "سترُعك" "سترُعك" ; --- string_V = irregV "سترِنغ" "سترُنغ" "سترُنغ" ; --- strive_V = irregV "سترِثي" "سترْثي" "سترِثن" ; --- swear_V = irregV "سوَر" "سوْري" "سوْرن" ; --- sweep_V = irregV "سوّة" "سوةت" "سوةت" ; --- swell_V = irregV "سولّ" "سولّد" (variants {"سولّد" ; "سوْلّن"}) ; --- swim_V = irregDuplV "سوِم" "سوَم" "سوُم" ; --- swing_V = irregV "سوِنغ" "سوُنغ" "سوُنغ" ; --- take_V = irregV "تَكي" "تّْك" "تَكن" ; --- teach_V = irregV "تَعه" "تَُغهت" "تَُغهت" ; --- tear_V = irregV "تَر" "تْري" "تْرن" ; --- tell_V = irregV "تلّ" "تْلد" "تْلد" ; --- think_V = irregV "تهِنك" "تهُْغهت" "تهُْغهت" ; --- thrive_V = irregV "تهرِثي" (variants {"تهرِثد" ; "تهرْثي"}) "تهرِثد" ; --- throw_V = irregV "تهرْو" "تهرو" "تهرْون" ; --- thrust_V = irregV "تهرُست" "تهرُست" "تهرُست" ; --- tread_V = irregV "ترَد" "ترْد" "ترْدّن" ; --- understand_V = irregV "ُندرستَند" "ُندرستّْد" "ُندرستّْد" ; --- uphold_V = irregV "ُةهْلد" "ُةهلد" "ُةهلد" ; --- upset_V = irregDuplV "ُةست" "ُةست" "ُةست" ; --- wake_V = irregV "وَكي" "وْكي" "وْكن" ; --- wear_V = irregV "وَر" "وْري" "وْرن" ; --- weave_V = irregV "وَثي" (variants {"وَثد" ; "وْثي"}) (variants {"وَثد" ; "وْثن"}) ; --- wed_V = irregDuplV "ود" "ود" "ود" ; --- weep_V = irregV "وّة" "وةت" "وةت" ; --- wind_V = irregV "وِند" "وُْند" "وُْند" ; --- win_V = irregDuplV "وِن" "وْن" "وْن" ; --- withhold_V = irregV "وِتهّْلد" "وِتهّلد" "وِتهّلد" ; --- withstand_V = irregV "وِتهستَند" "وِتهستّْد" "وِتهستّْد" ; --- wring_V = irregV "ورِنغ" "ورُنغ" "ورُنغ" ; --- write_V = irregV "ورِتي" "ورْتي" "ورِتّن" ; -} diff --git a/next-lib/src/arabic/LangAra.gf b/next-lib/src/arabic/LangAra.gf deleted file mode 100644 index 2a1dc95b5..000000000 --- a/next-lib/src/arabic/LangAra.gf +++ /dev/null @@ -1,12 +0,0 @@ ---# -path=.:../abstract:../common:prelude - -concrete LangAra of Lang = - GrammarAra, - LexiconAra - ** { - - flags startcat = Phr ; unlexer = text ; lexer = text ; coding = utf8 ; - -} - - diff --git a/next-lib/src/arabic/LexiconAra.gf b/next-lib/src/arabic/LexiconAra.gf deleted file mode 100644 index 7f52d52bd..000000000 --- a/next-lib/src/arabic/LexiconAra.gf +++ /dev/null @@ -1,383 +0,0 @@ ---# -path=.:prelude --- -concrete LexiconAra of Lexicon = CatAra ** open - ParadigmsAra, - ResAra, - MorphoAra, --shouldn't open it here, only needed reg &sndf - Prelude in { - -flags - optimize=values ; coding=utf8 ; - - lin - - airplane_N = sdfN "ط؟ر" "فاعِلة" Fem NoHum ; - answer_V2S = dirV2 (v3 "جوب") ; - apartment_N = brkN "شقّ" "فِعّة" "فِعَل" Fem NoHum ; - apple_N = sdfN "تفح" "فِعّالة" Fem NoHum ; - art_N = brkN "فنّ" "فَعّ" "فُعُول" Masc NoHum ; - ask_V2Q = dirV2 (regV "يَس؟َل") ; --- ask_V2Q = dirV2 (v1 "س؟ل" a a) ; - baby_N = brkN "طفل" "فِعل" "أَفعال" Masc Hum; - bad_A = sndA "سو؟" "فَيِّع" ; - bank_N = brkN "بنك" "فَعل" "فُعُول" Masc NoHum ; - beautiful_A = sndA "جمل" "فَعِيل" ; - become_VA = mkVA (v4 "صبح") ; - beer_N = sdfN "بير" "فِعلة" Fem NoHum ; - beg_V2V = dirV2 (v5 "وسل") ; - big_A = sndA "كبر" "فَعِيل" ; - bike_N = sdfN "درج" "فَعّالة" Fem NoHum ; - bird_N = brkN "طير" "فَعل" "فُعُول" Masc NoHum; - black_A = clrA "سود" ; - blue_A = clrA "زرق" ; - boat_N = brkN "قرب" "فاعِل" "فَواعِل" Masc NoHum ; - book_N = brkN "كتب" "فِعال" "فُعُل" Masc NoHum ; - boot_N = sdfN "جزم" "فَعلة" Fem NoHum ; - boss_N = brkN "دور" "مُفِيع" "مُفَعاء" Masc Hum ; - boy_N = brkN "صبي" "فَعِل" "فُعلان" Masc Hum ; - bread_N = brkN "خبز" "فُعل" "أَفعال" Masc NoHum ; - break_V2 = dirV2 (regV "يَكسُر") ; --- break_V2 = dirV2 (v1 "كسر" a u) ; - broad_A = sndA "وسع" "فاعِل" ; - brother_N2 = brkN "؟خو" "فَع" "فِعلة" Masc Hum ; --FIXME - brown_A = sndA "بني" "فُعِّل"; - butter_N = sdfN "سبد" "فُعلة" Fem NoHum ; - buy_V2 = dirV2 (v8 "شري") ; - camera_N = sdfN "كمر" "فاعِيلا" Fem NoHum ; -- |Alö taSwIr - cap_N = sdfN "قبع" "فُعَّلة" Fem NoHum ; --qalnUsö - car_N = sdfN "سير" "فَعّالة" Fem NoHum ; - carpet_N = sdfN "سجد" "فَعّالة" Fem NoHum ; - cat_N = brkN "هرّ" "فِعّة" "فِعَل" Fem NoHum ; - ceiling_N = brkN "سقف" "فَعل" "أَفعُل" Masc NoHum ; - chair_N = brkN "كرس" "فُعلِي" "فَعالِي" Masc NoHum ; - cheese_N = brkN "جبن" "فُعلة" "أَفعال" Fem NoHum ; - child_N = brkN "ولد" "فَعَل" "أَفعال" Masc Hum ; - church_N = brkN "كنس" "فَعِيلة" "فَعاٱِل" Fem Hum ; - city_N = brkN "مدن" "فَعِيلة" "فُعُل" Fem NoHum ; - clean_A = sndA "نظف" "فَعِيل" ; - clever_A = sndA "جهد" "مُفتَعِل" ; - close_V2 = dirV2 (v4 "غلق") ; - coat_N = brkN "عطف" "مِفعَل" "مَفاعِل" Masc NoHum ; - cold_A = sndA "برد" "فاعِل" ; - come_V = v1 "جي؟" a i ; --check - computer_N = brkN "حسب" "فاعُول" "فَواعِيل" Masc NoHum ; - country_N = brkN "بلد" "فَعَل" "فِعال" Masc NoHum ; - cousin_N = brkN "قرب" "فَعِيل" "أَفعِلاء" Masc Hum ; -- (<bn / bnt) (cam[ö] / xAl[ö]) - cow_N = sdfN "بقر" "فَعلة" Fem NoHum ; - die_V = v1 "موت" a u ; --check - dirty_A = sndA "وسخ" "فَعِل" ; - distance_N3 = mkN3 (sdfN "سوف" "مَفاعة" Fem NoHum) "مِن" "إِلَى" ; - doctor_N = brkN "طبّ" "فَعِيل" "أَفِعّاء" Masc Hum ; - dog_N = brkN "كلب" "فَعل" "فِعال" Masc NoHum ; - door_N = brkN "بوب" "فاع" "أَفعال" Masc NoHum ; - drink_V2 = dirV2 (regV "شَرِب") ; --- drink_V2 = dirV2 (v1 "شرب" i a) ; - easy_A2V = mkA2 (sndA "سهل" "فَعل") "لِ" ; - eat_V2 = dirV2 (regV "يَ؟كُل") ; --- eat_V2 = dirV2 (v1 "؟كل" a u) ; - empty_A = sndA "فرغ" "فاعِل" ; - enemy_N = brkN "عدو" "فَعُلّ" "أَفعاء" Masc Hum ; - factory_N = brkN "صنع" "مَفعَل" "مَفاعِل" Masc NoHum ; - father_N2 = brkN "؟ب" "فَع" "أَفعاء" Masc Hum; - fear_VS = mkVS (v1 "خشي" i a ); - find_V2 = dirV2 (v1 "وجد" a i ) ; - fish_N = brkN "سمك" "فَعَلة" "أَفعال" Fem NoHum ; - floor_N = brkN "؟رض" "فَعل" "فَعالِي" Fem NoHum; - forget_V2 = dirV2 (v1 "نسي" i a ) ; - fridge_N = sdfN "برد" "فَعّال" Masc NoHum ; - friend_N = brkN "صدق" "فَعِيل" "أَفعِلاء" Masc Hum ; --SadIqö - fruit_N = brkN "فكه" "فاعِلة" "فَواعِل" Fem NoHum ; - fun_AV = sndA "متع" "مُفعِل" ; - garden_N = brkN "حدق" "فَعِيلة" "فَعاٱِل" Fem NoHum ; - girl_N = brkN "بنت" "فِعل" "فَعال" Fem Hum ; - glove_N = sdfN "قفز" "فُعّال" Masc NoHum ; - gold_N = sdfN "ذهب" "فَعَل" Masc NoHum ; - good_A = sndA "جود" "فَيِّع" ; -- Hasan, HisAn - go_V = regV "يَذهَب" ; --- go_V = v1 "ذهب" a a ; - green_A = clrA "خضر" ; - harbour_N = brkN "رف؟" "مَفعَل" "مَفاعِل" Masc NoHum ; --mInA', marsaY - hate_V2 = dirV2 (regV "كَرِه") ; - hat_N = sdfN "قبع" "فُعَّلة" Fem NoHum ; --- have_V2 = dirV2 (v1 "ملك" a i) ; - hear_V2 = dirV2 (regV "سَمِع") ; --- hear_V2 = dirV2 (v1 "سمع" i a) ; - hill_N = brkN "هضب" "فَعلة" "فِعال" Fem NoHum ; --tallö, rAbiyö - hope_VS = mkVS (v1 "رجو" a u) ; --check - horse_N = brkN "حصن" "فِعال" "أَفعِلة" Masc NoHum ; - hot_A = sndA "سخن" "فاعِل" ; --HAr - house_N = brkN "بيت" "فَعل" "فُعُول" Masc NoHum ; --manzil - important_A = sndA "هيم" "فاعّ" ; - industry_N = sdfN "صنع" "فِعالة" Fem NoHum ; - iron_N = brkN "حدّ" "فَعِيل" "فَعائِل" Masc NoHum ; - king_N = brkN "ملك" "فَعِل" "فُعُول" Masc Hum ; - know_V2 = dirV2 (regV "عَرِف") ; --- know_V2 = dirV2 (v1 "عرف" i a) ; - lake_N = sdfN "بحر" "فُعَيلة" Fem NoHum ; - lamp_N = brkN "صبح" "مِفعال" "مَفاعِيل" Masc NoHum ; --qanDIl, fAnUs - learn_V2 = dirV2 (v5 "علم") ; - leather_N = brkN "جلد" "فِعل" "فُعُول" Masc NoHum ; - leave_V2 = dirV2 (regV "يَترُك") ; --- leave_V2 = dirV2 (v1 "ترك" a u) ; - like_V2 = dirV2 (regV "هَوِي") ; --- like_V2 = dirV2 (v1 "هوي" i a) ; --check - listen_V2 = mkV2 (v8 "سمع") "إِلَى" ; - live_V = v1 "عيش" a i ; --check - long_A = sndA "طول" "فَعِيل" ; - lose_V2 = dirV2 (regV "خَسِر") ; --Dayyac, >aDAc --- lose_V2 = dirV2 (v1 "خسر" i a) ; --Dayyac, >aDAc - love_N = brkN "حبّ" "فُعّ" "فُعّ" Masc NoHum ; -- no plur - love_V2 = dirV2 (v1 "حبّ" a i) ; - man_N = brkN "رجل" "فَعُل" "فِعال" Masc Hum ; - married_A2 = mkA2 (sndA "زوج" "مُتَفَعِّل") "مِن" ; - meat_N = brkN "لحم" "فَعلة" "فُعُول" Masc NoHum ; - milk_N = brkN "حلب" "فَعِيل" "فَعِيل" Masc NoHum ; --no plur - moon_N = brkN "قمر" "فَعَل" "أَفعال" Masc NoHum ; - mother_N2 = sdfN "؟م" "فُعّ" Fem Hum ; - mountain_N = brkN "جبل" "فَعَل" "فِعال" Masc NoHum ; - music_N = mkN (reg "مُوسِيقَى" "مُوسِيقَى") Fem NoHum ; --no plur - narrow_A = sndA "ضيق" "فَعِّل" ; - new_A = sndA "جدّ" "فَعِيل" ; - newspaper_N = brkN "صحف" "فَعِيلة" "فُعُل" Fem NoHum ; - oil_N = brkN "زيت" "فَعل" "فُعُول" Masc NoHum ; - old_A = sndA "قدم" "فَعِيل" ; - open_V2 = dirV2 (regV "يَفتَح") ; --- open_V2 = dirV2 (v1 "فتح" a a ) ; - paint_V2A = mkV2A (regV "يَدهَن" ) [] ; --- paint_V2A = mkV2A (v1 "دهن" a a ) [] ; - paper_N = brkN "ورق" "فَعَلة" "أَفعال" Fem NoHum ; - paris_PN = mkPN "بارِيس" Fem NoHum ; - peace_N = brkN "سلم" "فَعال" "فَعال" Masc NoHum; --no plur - pen_N = brkN "قلم" "فَعَل" "أَفعال" Masc NoHum; - planet_N = mkN (reg "كَوكَب" "كَواكِب") Masc NoHum ; -- quadriconsonantal - plastic_N = mkN (sndf "بلاستِيك") Masc NoHum ; - play_V2 = dirV2 (regV "لَعِب") ; --- play_V2 = dirV2 (v1 "لعب" i a) ; - policeman_N = sdmN "شرط" "فِعلِي" Masc Hum ; - priest_N = brkN "قسّ" "فِعِّيل" "أَفِعّة" Masc Hum ; - probable_AS = mkAS (sndA "مكن" "مُفعِل") ; - queen_N = sdfN "ملك" "فَعِلة" Fem Hum ; - radio_N = mkN (sndf "راديُو") Masc NoHum ; - rain_V0 = mkV0 (regV "يَمطُر") ; --- rain_V0 = mkV0 (v1 "مطر" a u) ; - read_V2 = dirV2 (regV "يَقرَ؟") ; --- read_V2 = dirV2 (v1 "قر؟" a a ) ; - red_A = clrA "حمر" ; - religion_N = brkN "دين" "فِعل" "أَفعال" Masc NoHum ; - restaurant_N = brkN "طعم" "مَفعَل" "مَفاعِل" Masc NoHum ; - river_N = brkN "نهر" "فَعل" "أَفعال" Masc NoHum ; - rock_N = brkN "صخر" "فَعلة" "فُعُول" Fem NoHum ; - roof_N = brkN "سطح" "فَعل" "أَفعُل" Masc NoHum ; - rubber_N = brkN "مطّ" "فَعّال" "فَعّال" Masc NoHum ; -- no hum - run_V = regV "يَركُض" ; --- run_V = v1 "ركض" a u ; - say_VS = mkVS (v1 "قول" a u) ; --check - school_N = brkN "درس" "مَفعَلة" "مَفاعِل" Fem NoHum ; - science_N = brkN "علم" "فِعل" "فُعُول" Masc NoHum ; - sea_N = brkN "بحر" "فَعل" "فُعُول" Masc NoHum ; - seek_V2 = dirV2 (regV "يَطلُب") ; --- seek_V2 = dirV2 (v1 "طلب" a u) ; - see_V2 = dirV2 (v1 "ر؟ي" a a) ; - sell_V3 = dirdirV3 (v1 "بيع" a i) ; --check - send_V3 = dirdirV3 (v4 "رسل") ; - sheep_N = brkN "خرف" "فَعُول" "فِعال" Masc NoHum ; - ship_N = brkN "سفن" "فَعِيلة" "فُعُل" Fem NoHum ; - shirt_N = brkN "قمص" "فَعِيل" "فُعلان" Masc NoHum ; - shoe_N = brkN "حذو" "فِعاء" "أَفعِية" Masc NoHum ; - shop_N = brkN "تجر" "مَفعَل" "مَفاعِل" Masc NoHum ; - short_A = sndA "قصر" "فَعِيل" ; - silver_N = brkN "فضّ" "فِعّة" "فِعَل" Fem NoHum ; - sister_N = brkN "؟خو" "فُعت" "فَعَوات" Fem Hum ; --FIXME - sleep_V = v1 "نوم" i a ; --check - small_A = sndA "صغر" "فَعِيل" ; - snake_N = sdfN "حيّ" "فَعّة" Fem NoHum ; - sock_N = brkN "جرب" "فَوعَل" "فَواعِل" Masc NoHum ; - speak_V2 = dirV2 (v5 "كلم") ; - star_N = brkN "نجم" "فَعل" "فُعُول" Masc NoHum ; --najmö - steel_N = brkN "فلذ" "فُوعال" "فَواعِل" Masc NoHum ; - stone_N = brkN "حجر" "فَعَل" "أَفعال" Masc NoHum ; - stove_N = brkN "وقد" "مَفعِل" "مَفاعِل" Masc NoHum ; - student_N = brkN "طلب" "فاعِل" "فُعّال" Masc Hum ; --tilmI* - stupid_A = clrA "بله" ; - sun_N = brkN "شمس" "فَعل" "فُعُول" Fem NoHum ; - switch8off_V2 = dirV2 (v4 "طف؟") ; - switch8on_V2 = dirV2 (v4 "شعل") ; - table_N = sdfN "طول" "فاعِلة" Fem NoHum ; - talk_V3 = mkV3 (v5 "حدث") "لِ" "عَن" ; - teacher_N = sdmN "علم" "مُفَعِّل" Masc Hum ; --mucal~imö - teach_V2 = dirV2 (v2 "علم") ; - television_N = mkN (sndf "تِلِفِزيُون") Masc NoHum ; - thick_A = sndA "سمك" "فَعِيل" ; - thin_A = sndA "رفع" "فَعِيل" ; - train_N = sdfN "قطر" "فِعال" Masc NoHum; - travel_V = v3 "سفر" ; - tree_N = brkN "شجر" "فَعلة" "أَفعال" Fem NoHum ; - ugly_A = sndA "قبح" "فَعِيل" ; - understand_V2 = dirV2 (regV "فَهِم") ; --- understand_V2 = dirV2 (v1 "فهم" i a ) ; - university_N = sdfN "جمع" "فاعِلة" Fem NoHum ; - village_N = brkN "قري" "فَعلة" "فُعَى" Fem NoHum ; --Daycö - wait_V2 = dirV2 (v8 "نظر") ; - walk_V = v1 "مشي" a i ; --check - warm_A = sndA "دف؟" "فاعِل" ; - war_N = brkN "حرب" "فَعل" "فُعُول" Fem NoHum ; - watch_V2 = dirV2 (v3 "شهد") ; - water_N = mkN (reg "ماء" "مِياه") Fem NoHum ; --"موه" "فاء" "فِياع" ?? - white_A = clrA "بيض" ; - window_N = brkN "نفذ" "فاعِلة" "فَواعِل" Fem NoHum ; --$ub~Ak - wine_N = brkN "خمر" "فَعل" "فُعُول" Masc NoHum ; - win_V2 = dirV2 (regV "رَبِح") ; --- win_V2 = dirV2 (v1 "ربح" i a) ; - woman_N = mkN (reg "إِمرَأَة" "نِسوَة") Fem Hum ; - wonder_VQ = mkVQ (v6 "س؟ل") ; - wood_N = brkN "خشب" "فَعَل" "أَفعال" Masc NoHum ; - write_V2 = dirV2 (regV "يَكتُب") ; --- write_V2 = dirV2 (v1 "كتب" a u) ; - yellow_A = clrA "صفر" ; - young_A = sndA "شبّ" "فاعّ" ; - - do_V2 = dirV2 (regV "يَفعَل") ; --- do_V2 = dirV2 (v1 "فعل" a a ) ; - now_Adv = mkAdv "الآن" ; - already_Adv = mkAdv "سابِقاً" ; - song_N = brkN "غني" "أَفعِلة" "أَفاعِي" Fem NoHum ; - add_V3 = dirV3 (regV "يَجمَع") "وَ" ; --- add_V3 = dirV3 (v1 "جمع" a a) "وَ" ; - number_N = brkN "رقم" "فَعل" "أَفعال" Masc NoHum ; --cadad - put_V2 = dirV2 (v1 "وضع" a a ); - stop_V = v5 "وقف" ; - jump_V = regV "يَقفِز" ; --- jump_V = v1 "قفز" a i ; - - left_Ord = mkOrd "أَيسَر" "يُسرَى"; - right_Ord = mkOrd "أَيمَن" "يُمنَى" ; - - far_Adv = mkAdv "بَعِيداً" ; - correct_A = sndA "صحّ" "فَعِيل" ; - dry_A = sndA "نشف" "فاعِل" ; - dull_A = sndA "بهت" "فاعِل" ; - full_A = sndA "مل؟" "فَعِيل" ; - heavy_A = sndA "ثقل" "فَعِيل" ; - near_A = sndA "قرب" "فَعِيل" ; - rotten_A = sndA "فسد" "فاعِل" ; - round_A = sndA "دور" "مُفَعَّل" ; - sharp_A = sndA "حدّ" "فاعّ" ; - smooth_A = sndA "نعم" "فاعِل" ; - straight_A = sndA "قوم" "مُستَفِيع" ; - wet_A = sndA "رطب" "فَعِل" ; - wide_A = sndA "وسع" "فاعِل" ; - - animal_N = sdfN "حيّ" "فَعَوان" Masc NoHum ; - ashes_N = brkN "رمد" "فَعال" "أَفعِلة" Masc NoHum; - back_N = brkN "ظهر" "فَعل" "فُعُول" Masc NoHum; - bark_N = brkN "نبح" "فَعل" "فُعال" Masc NoHum; - belly_N = brkN "بطن" "فَعل" "فُعُول" Fem NoHum; - blood_N = brkN "دم" "فَع" "فِعاء" Masc NoHum; - bone_N = brkN "عظم" "فَعلة" "فِعال" Fem NoHum; - breast_N = brkN "صدر" "فَعل" "فُعُول" Masc NoHum; - cloud_N = brkN "غيم" "فَعلة" "فُعُول" Fem NoHum; - day_N = brkN "يوم" "فَعل" "أَفّاع" Masc NoHum; - dust_N = brkN "غبر" "فُعال" "أَفعِلة" Masc NoHum; - ear_N = brkN "؟ذن" "فُعل" "أَفعال" Fem NoHum; - earth_N = brkN "ترب" "فُعلة" "فُعَل" Fem NoHum; - egg_N = sdfN "بيض" "فَعلة" Fem NoHum; - eye_N = brkN "عين" "فَعل" "فُعُول" Fem NoHum; - fat_N = brkN "دهن" "فُعل" "فُعُول" Masc NoHum ; - feather_N = sdfN "ريش" "فِعلة" Fem NoHum; - fingernail_N = brkN "ظفر" "فُعل" "أَفاعِل" Masc NoHum; - fire_N = brkN "نور" "فاع" "فِيعان" Fem NoHum; - flower_N = brkN "زهر" "فَعلة" "فُعُول" Fem NoHum; - fog_N = brkN "ضبّ" "فَعال" "فَعال" Masc NoHum; --no plural ? - foot_N = brkN "قدم" "فَعَل" "أَفعال" Fem NoHum; - forest_N = sdfN "غيب" "فاعة" Fem NoHum; - grass_N = brkN "عشب" "فُعلة" "أَفعال" Fem NoHum; - guts_N = brkN "حشو" "فَعا" "أَفعاء" Fem NoHum; - hair_N = sdfN "شعر" "فَعلة" Fem NoHum ; - hand_N = brkN "يد" "فَع" "أَفاعِي" Fem NoHum ; - head_N = brkN "ر؟س" "فَعل" "فُعُول" Masc NoHum; - heart_N = brkN "قلب" "فَعل" "فُعُول" Masc NoHum; - horn_N = brkN "قرن" "فَعل" "فُعُول" Masc NoHum; - husband_N = brkN "زوج" "فَعل" "أَفعال" Masc NoHum; - ice_N = brkN "ثلج" "فَعل" "فُعُول" Masc NoHum; - knee_N = brkN "ركب" "فُعلة" "فُعَل" Fem NoHum; - leaf_N = brkN "ورق" "فَعَلة" "أَفعال" Fem NoHum; - leg_N = brkN "رجل" "فِعل" "أَفعُل" Fem NoHum; - liver_N = brkN "كبد" "فَعِل" "أَفعال" Masc NoHum ; - louse_N = sdfN "قمل" "فَعلة" Fem NoHum; - mouth_N = brkN "فوه" "فُعل" "أَفعال" Masc NoHum ; - name_N = brkN "؟سم" "فِعل" "فَعالِي" Masc NoHum; - neck_N = brkN "رقب" "فَعَلة" "فِعال" Fem NoHum; - night_N = brkN "ليل" "فَعلة" "فَعالِي" Fem NoHum; --plural? - nose_N = brkN "؟نف" "فَعل" "فُعُول" Masc NoHum; - person_N = brkN "شخص" "فَعل" "أَفعال" Masc Hum; - rain_N = brkN "مطر" "فَعَل" "أَفعال" Masc NoHum; - road_N = brkN "طرق" "فَعِيل" "فُعُل" Fem NoHum; - root_N = brkN "جذر" "فَعل" "فُعُول" Masc NoHum ; - rope_N = brkN "حبل" "فَعل" "فِعال" Masc NoHum; - salt_N = brkN "ملح" "فِعل" "أَفعال" Masc NoHum; - sand_N = brkN "رمل" "فَعل" "فِعال" Masc NoHum; - seed_N = brkN "بذر" "فَعل" "فُعُول" Masc NoHum; - skin_N = brkN "جلد" "فِعل" "فُعُول" Masc NoHum; - sky_N = sdfN "سمو" "فَعاء" Fem NoHum; - smoke_N = brkN "دخن" "فُعال" "أَفعِلة" Masc NoHum; - snow_N = brkN "ثلج" "فَعل" "فُعُول" Masc NoHum; - stick_N = brkN "عصو" "فَعا" "فِعِي" Masc NoHum ; --"عصو" - tail_N = brkN "ذنب" "فَعَل" "أَفعال" Masc NoHum; - tongue_N = brkN "لسن" "فِعال" "أَفعِلة" Masc NoHum; - tooth_N = brkN "سنّ" "فِعل" "أَفعال" Masc NoHum ; - wife_N = sdfN "زوج" "فَعلة" Fem Hum; - wind_N = brkN "ريح" "فِعل" "فِعال" Fem NoHum; - wing_N = brkN "جنح" "فَعال" "أَفعِلة" Masc NoHum ; - worm_N = brkN "دود" "فُعلة" "فِيعان" Fem NoHum ; - year_N = sdfN "سن" "فَعة" Fem NoHum ; - - blow_V = regV "يَنفُخ" ; - breathe_V = dirV2 (v5 "نفس") ; - burn_V = regV "يَحرِق" ; - dig_V = regV "يَحفِر" ; - fall_V = v1 "وقع" a a ; - float_V = v1 "عوم" a u ; - flow_V = v1 "سيل" a i ; - fly_V = v1 "طير" a i ; - freeze_V = v2 "جمد" ; - give_V3 = dirdirV3 (v4 "عطي") ; - laugh_V = regV "ضَحِك" ; - lie_V = regV "يَكذِب" ; - play_V = regV "لَعِب" ; - sew_V = v1 "خيط" a i ; - sing_V = v2 "غني" ; - sit_V = regV "يَقعُد" ; - smell_V = v1 "شمّ" i a ; - spit_V = regV "يَبصُق" ; - stand_V = v1 "وقف" a i ; - swell_V = v8 "نفخ" ; - swim_V = regV "يَسبَح" ; - think_V = v2 "فكر" ; - turn_V = regV "يَبرُم" ; - vomit_V = v5 "قي؟" ; - - bite_V2 = dirV2 ( v1 "عضّ" a a ) ; - count_V2 = dirV2 (v1 "عدّ" a u) ; - cut_V2 = dirV2 (v1 "قصّ" a u) ; - fear_V2 = dirV2 (v1 "خوف" i a) ; - fight_V2 = dirV2 (v3 "قتل") ; - hit_V2 = dirV2 (regV "يَضرِب" ) ; - hold_V2 = dirV2 (regV "يَمسِك" ) ; - hunt_V2 = dirV2 (v1 "صيد" a i) ; - kill_V2 = dirV2 (regV "يَقتُل" ) ; - pull_V2 = dirV2 (regV "يَسحَب") ; - push_V2 = dirV2 (regV "يَدفَع" ) ; - rub_V2 = dirV2 ( regV "يَفرُك" ) ; - scratch_V2 = dirV2 (regV "يَخدِش" ) ; - split_V2 = dirV2 ( v2 "قسم" ) ; - squeeze_V2 = dirV2 (regV "يَعصِر" ) ; - stab_V2 = dirV2 ( regV "يَطعُن" ) ; - suck_V2 = dirV2 (v1 "مصّ" a u) ; - throw_V2 = dirV2 (v1 "رمي" a i) ; - tie_V2 = dirV2 (regV "يَربُط" ) ; - wash_V2 = dirV2 ( regV "يَغسِل" ) ; - wipe_V2 = dirV2 ( regV "يَمسَح" ) ; - --- other_A = sndA "ْتهر" ; - -} ; diff --git a/next-lib/src/arabic/MorphoAra.gf b/next-lib/src/arabic/MorphoAra.gf deleted file mode 100644 index 8846e11a6..000000000 --- a/next-lib/src/arabic/MorphoAra.gf +++ /dev/null @@ -1,49 +0,0 @@ -resource MorphoAra = ResAra ** open Prelude in { - -flags optimize = all ;--noexpand; coding=utf8 ; - - oper - - mkDet : Str -> Number -> State -> Det - = \word,num,state -> - { s = \\_,_,c => word + vowel ! c ; - n = numberToSize num; - d = state; --only Const is used now. check StructuralAra - isNum = False; - isPron = False - }; - - mkPredet : Str -> Bool -> Predet - = \word,decl -> - { s = \\c => - case decl of { - True => word + vowel!c; - False => word - }; - isDecl = decl - }; - - mkQuantNum : Str -> Number -> State -> { - s: Species => Gender => Case => Str; n: Number; d : State; isPron: Bool; isNum : Bool} = - \waHid,num,state -> - let waHida = waHid + "َة" in - { s = \\_,g,c => - let word = - case g of { - Masc => waHid; - Fem => waHida - } in Al ! state + word + dec1sg ! state ! c; - n = num; - d = state; - isPron = False; - isNum = True - }; - - vowel : Case => Str = - table { - Nom => "ُ"; - Acc => "َ"; - Gen => "ِ" - }; - -} diff --git a/next-lib/src/arabic/NounAra.gf b/next-lib/src/arabic/NounAra.gf deleted file mode 100644 index 350d7b4db..000000000 --- a/next-lib/src/arabic/NounAra.gf +++ /dev/null @@ -1,193 +0,0 @@ -concrete NounAra of Noun = CatAra ** open ResAra, Prelude in { - -flags optimize=noexpand ; - -lin - - DetCN det cn = let { - number = sizeToNumber det.n; - determiner : Case -> Str = \c -> - det.s ! cn.h ! (detGender cn.g det.n) ! c; - noun : Case -> Str = \c -> cn.s ! - number ! (nounState det.d number) ! (nounCase c det.n det.d) - } in { - s = \\c => - case cnB4det det.isPron det.isNum det.n det.d of { - False => determiner c ++ noun c; - --FIXME use the adj -> cn -> cn rule from below instead of - --repeating code - True => cn.s ! number ! det.d ! c ++ det.s ! cn.h ! cn.g ! c - ++ cn.adj ! number ! det.d ! c - }; - a = { pgn = agrP3 cn.h cn.g number; - isPron = False } - }; - - UsePN pn = { - s = pn.s; - a = {pgn = (Per3 pn.g Sg); isPron = False } - }; - - UsePron p = p ; - - PredetNP pred np = { - s = \\c => case pred.isDecl of { - True => pred.s!c ++ np.s ! Gen ; -- akvaru l-awlAdi - False => pred.s!c ++ np.s ! c - }; - a = np.a - } ; - {- - --should compile.. not working :( wierd error message.. bug? - PPartNP np v2 = - let x = case np.a.pgn of { - Per3 g n => ( positAdj (v2.s ! VPPart) ) ! g ! n ! Indef ; - _ => \\_ => [] -- not occuring anyway - } in { - s = \\c => np.s ! c ++ x ! c ; - a = np.a - }; - -} - - -- FIXME try parsing something like "this house now" and you'll get - -- an internal compiler error, but it still works.. wierd.. - AdvNP np adv = { - s = \\c => np.s ! c ++ adv.s; - a = np.a - }; -{- - DetSg quant ord = { - s = \\h,g,c => - quant.s ! Sg ! h ! g ! c ++ ord.s ! g ! quant.d ! c ; - n = One; - d = quant.d; - isPron = quant.isPron; - isNum = - case ord.n of { - None => False; - _ => True - } - } ; --} - - DetQuantOrd quant num ord = { - s = \\h,g,c => quant.s ! Pl ! h ! g ! c - ++ num.s ! g ! (toDef quant.d num.n) ! c - --FIXME check this: - ++ ord.s ! g ! (toDef quant.d num.n) ! c ; - n = num.n; - d = quant.d; - isPron = quant.isPron; - isNum = - case num.n of { - None => False; - _ => True - } - } ; - - DetQuant quant num = { - s = \\h,g,c => quant.s ! Pl ! h ! g ! c - ++ num.s ! g ! (toDef quant.d num.n) ! c ; - n = num.n; - d = quant.d; - isPron = quant.isPron; - isNum = - case num.n of { - None => False; - _ => True - } - } ; - - - --DEPRECATED - -- SgQuant quant = {s = quant.s ! Sg ; d = quant.d; - -- isPron = quant.isPron; isNum = False} ; - -- PlQuant quant = {s = quant.s ! Pl ; d = quant.d; - -- isPron = quant.isPron; isNum = False} ; - - PossPron p = { - s = \\_,_,_,_ => p.s ! Gen; - d = Const; - isPron = True; - isNum = False } ; - - NumSg = { - s = \\_,_,_ => [] ; - n = One } ; - - NumPl = { - s = \\_,_,_ => [] ; - n = None } ; - - NumDigits digits = { - s = \\_,_,_ => digits.s; - n = digits.n - }; - - NumNumeral numeral = { - s = numeral.s ! NCard ; - n = numeral.n - }; - - NumCard n = n ; - - AdNum adn num = { - s = \\g,d,c => adn.s ++ num.s ! g ! d ! c ; - n = num.n } ; - - OrdDigits digits = { - s = \\_,d,_ => Al ! d ++ digits.s; - n = digits.n - }; - - -- OrdNumeral : Numeral -> Ord ; -- fifty-first - OrdNumeral numeral = { - s = numeral.s ! NOrd ; - n = numeral.n - }; - - -- FIXME, "the biggest house" would better translate into - -- akbaru baytin rather than al-baytu l-2akbaru - -- DetCN (DetSg DefArt (OrdSuperl big_A)) (UseN house_N) - OrdSuperl a = { - s = \\_,d,c => a.s ! AComp d c; - n = One - } ; - - DefArt = { - s = \\_,_,_,_ => []; - d = Def ; - isNum,isPron = False - } ; - - IndefArt = { - s = \\_,_,_,_ => []; - d = Indef ; - isNum,isPron = False - } ; - - MassNP cn = ---- AR - {s = cn.s ! Sg ! Indef ; a = {pgn = Per3 cn.g Sg ; isPron = False}} ; - --- MassDet = {s = \\_,_,_,_ => [] ; d = Indef; --- isNum = False; isPron = False} ; - - UseN n = n ** {adj = \\_,_,_ => []}; - -- ComplN2 f x = {s = \\n,c => f.s ! n ! Nom ++ f.c2 ++ x.s ! c} ; - -- ComplN3 f x = {s = \\n,c => f.s ! n ! Nom ++ f.c2 ++ x.s ! c ; c2 = f.c3} ; - -- - -- UseN2 n = n ; - -- UseN3 n = n ; - -- - AdjCN ap cn = { - s = \\n,d,c => cn.s ! n ! 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}} ; - -- AdvCN cn ad = {s = \\n,c => cn.s ! n ! c ++ ad.s} ; - -- - -- SentCN cn sc = {s = \\n,c => cn.s ! n ! c ++ sc.s} ; - -- ApposCN cn np = -} diff --git a/next-lib/src/arabic/NumeralAra.gf b/next-lib/src/arabic/NumeralAra.gf deleted file mode 100644 index 12c7548f8..000000000 --- a/next-lib/src/arabic/NumeralAra.gf +++ /dev/null @@ -1,154 +0,0 @@ -concrete NumeralAra of Numeral = CatAra ** - open Predef, Prelude, ResAra, MorphoAra in { - - - -lincat - - Digit = {s : DForm => CardOrd => Gender => State => Case => Str ; - n : Size } ; - Sub10 = {s : DForm => CardOrd => Gender => State => Case => Str ; - n : Size } ; - Sub100 = {s : CardOrd => Gender => State => Case => Str ; - n : Size} ; - Sub1000 = {s : CardOrd => Gender => State => Case => Str ; - n : Size } ; - Sub1000000 = {s : CardOrd => Gender => State => Case => Str ; - n : Size} ; - - - - lin num x = x ; - - lin n2 = num2 ** {n = Two }; - - lin n3 = num3_10 "ثَلاث" "ثالِث"; - lin n4 = num3_10 "أَربَع" "رابِع"; - lin n5 = num3_10 "خَمس" "خامِس"; - lin n6 = num3_10 "سِتّ" "سادِس"; - lin n7 = num3_10 "سَبع" "سابِع"; - lin n8 = num3_10 "ثَمانِي" "ثامِن"; - lin n9 = num3_10 "تِسع" "تاسِع"; - - lin pot01 = mkNum "واحِد" "أَوَّل" "أُولى" ** { n = One } ; - - lin pot0 d = d ; - - lin pot110 = { - s= ((num3_10 "عَشر" "عاشِر").s ! unit ) ; - n = ThreeTen - }; - - lin pot111 = { - s = \\_,g,d,_ => - case g of { - Masc => Al ! d + "أَحَدَ" ++ teen ! Masc ; - Fem => Al ! d + "إِحدَى" ++ teen ! Fem - }; - n = NonTeen - }; - - lin pot1to19 dig = { - s = \\co,g,d,c => case dig.n of { - Two => Al ! d + num2.s ! unit ! co ! g ! Const ! c ++ teen ! g ; - _ => dig.s ! unit ! co ! g ! (toDef d ThreeTen) ! Acc ++ - teen ! (genPolarity ! g) - }; - n = case dig.n of { - Two => NonTeen; - _ => Teen - } - }; - - lin pot0as1 num = { - s= num.s ! unit; - n = num.n - } ; - - lin pot1 dig = { - s = dig.s ! ten; - n = NonTeen - } ; - - lin pot1plus dig n = { - s = \\co,g,d,c => n.s ! unit ! co ! g ! d ! c - ++ "وَ" ++ dig.s ! ten ! co ! g ! d ! c ; - n = NonTeen - }; - - lin pot1as2 n = n ; - - lin pot2 dig = { - s = \\co,_,d,c => case dig.n of { - One => num100 ! d ! c ; - Two => num200 ! d ! c ; - _ => dig.s ! unit ! co ! Masc ! (toDef d ThreeTen) ! c ++ "مِٱَةِ" - }; - n = Hundreds - }; - - lin pot2plus m e = { - s = \\co,g,d,c => case m.n of { - One => num100 ! d ! c; - Two => num200 ! d ! c; - _ => m.s ! unit ! co ! Masc ! (toDef d ThreeTen) ! c ++ "مِٱَةٌ" - } ++ "وَ" ++ e.s ! co ! g ! d ! c ; - n = e.n - }; - - lin pot2as3 n = n ; - - lin pot3 m = { - s = \\co,_,d,c => case m.n of { - One => num1000 ! (definite ! d) ! c; - Two => num2000 ! (definite ! d) ! c; - _ => m.s ! co ! Fem ! (toDef d ThreeTen) ! c ++ "آلافٌ" - } ; - n = m.n - }; ---lin pot3plus n m = { --- s = \\c => n.s ! NCard ++ "تهُْسَند" ++ m.s ! c ; n = Pl} ; - --- numerals as sequences of digits - - lincat - Dig = Digits ; --- Numeral,Digits = {s : Gender => State => Case => Str ; --- n : Size } ; - - - lin - IDig d = d ; - - IIDig d i = { - s = d.s ++ i.s; - n = ThreeTen ; - } ; - - D_0 = mk1Dig "0" ; - D_1 = mk2Dig "1" One ; - D_2 = mk2Dig "2" Two ; - D_3 = mk1Dig "3" ; - D_4 = mk1Dig "4" ; - D_5 = mk1Dig "5" ; - D_6 = mk1Dig "6" ; - D_7 = mk1Dig "7" ; - D_8 = mk1Dig "8" ; - D_9 = mk1Dig "9" ; - - oper - - - mk2Dig : Str -> Size -> Digits = \str,sz -> { - s = str ; - n = sz ; - lock_Digits = <> - }; - - mk1Dig : Str -> Digits = \str -> { - s = str ; - n = ThreeTen; - lock_Digits = <> - }; - -} diff --git a/next-lib/src/arabic/OrthoAra.gf b/next-lib/src/arabic/OrthoAra.gf deleted file mode 100644 index 62ebc9b58..000000000 --- a/next-lib/src/arabic/OrthoAra.gf +++ /dev/null @@ -1,41 +0,0 @@ -resource OrthoAra = open Prelude, Predef in { - -flags coding=utf8 ; - - oper - - rectifyHmz: Str -> Str = \word -> - case word of { - l@(""|"ال") + "؟" + v@("َ"|"ُ") + tail => l + "أ" + v + tail; - l@(""|"ال") + "؟" + v@("ِ") + tail => l + "إ" + v + tail; - head + v1@("ِ"|"ُ"|"َ"|"ْ"|"ا"|"ي"|"و") + "؟" + v2@(""|"ُ"|"َ"|"ْ"|"ِ") => head + v1 + (tHmz v1) + v2; - head + "؟" + tail => head + (bHmz (dp 2 head) (take 2 tail)) + tail; --last head , take 1 tail - _ => word - }; - - --hamza at beginning of word (head) - hHmz : Str -> Str = \d -> - case d of { - "ِ" => "إ"; - _ => "أ" - }; - - --hamza in middle of word (body) - bHmz : Str -> Str -> Str = \d1,d2 -> - case <d1,d2> of { - <"ِ",_> | <_,"ِ"> => "ئ"; - <"ُ",_> | <_,"ُ"> => "ؤ"; - <"َ",_> | <_,"َ"> => "أ"; - _ => "ء" - }; - - --hamza carrier sequence - tHmz : Str -> Str = \d -> - case d of { - "ِ" => "ئ"; - "ُ" => "ؤ"; - "َ" => "أ"; - "ْ"|"ا"|"و"|"ي" => "ء" - }; - -} diff --git a/next-lib/src/arabic/ParadigmsAra.gf b/next-lib/src/arabic/ParadigmsAra.gf deleted file mode 100644 index 9e9a1c598..000000000 --- a/next-lib/src/arabic/ParadigmsAra.gf +++ /dev/null @@ -1,470 +0,0 @@ ---# -path=.:../abstract:../../prelude:../common - ---1 Arabic Lexical Paradigms --- --- Ali El Dada 2005--2006 --- --- This is an API to the user of the resource grammar --- for adding lexical items. It gives functions for forming --- expressions of open categories: nouns, adjectives, verbs. --- --- Closed categories (determiners, pronouns, conjunctions) are --- accessed through the resource syntax API, $Structural.gf$. --- --- The main difference with $MorphoAra.gf$ is that the types --- referred to are compiled resource grammar types. We have moreover --- had the design principle of always having existing forms, rather --- than stems, as string arguments of the paradigms. --- --- The structure of functions for each word class $C$ is the following: --- first we give a handful of patterns that aim to cover all --- regular cases. Then we give a worst-case function $mkC$, which serves as an --- escape to construct the most irregular words of type $C$. --- --- The following modules are presupposed: - -resource ParadigmsAra = open - Predef, - Prelude, - MorphoAra, - OrthoAra,(ResAra=ResAra), - CatAra - in { - - flags optimize = noexpand; coding=utf8 ; - - oper - --- Prepositions are used in many-argument functions for rection. - - Preposition : Type ; - ---2 Nouns - ---This is used for loan words or anything that has untreated irregularities ---in the interdigitization process of its words - mkN : NTable -> Gender -> Species -> N ; - ---Takes a root string, a singular pattern string, a broken plural ---pattern string, a gender, and species. Gives a noun. - brkN : Str -> Str -> Str -> Gender -> Species -> N ; - ---Takes a root string, a singular pattern string, a gender, ---and species. Gives a noun whose plural is sound feminine. - sdfN : Str -> Str -> Gender -> Species -> N ; - ---takes a root string, a singular pattern string, a gender, ---and species. Gives a noun whose plural is sound masculine - sdmN : Str -> Str -> Gender -> Species -> N ; - - mkPN : Str -> Gender -> Species -> PN ; - ---3 Relational nouns - - mkN2 : N -> Preposition -> N2 ; - - mkN3 : N -> Preposition -> Preposition -> N3 ; - ---2 Adjectives - ---Takes a root string and a pattern string - sndA : Str -> Str -> A ; - ---Takes a root string only - clrA : Str -> A ; - ---3 Two-place adjectives --- --- Two-place adjectives need a preposition for their second argument. - - mkA2 : A -> Preposition -> A2 ; - ---2 Adverbs - --- Adverbs are not inflected. Most lexical ones have position --- after the verb. Some can be preverbal. - - mkAdv : Str -> Adv ; - mkAdV : Str -> AdV ; - --- Adverbs modifying adjectives and sentences can also be formed. - - mkAdA : Str -> AdA ; - ---2 Prepositions --- --- A preposition as used for rection in the lexicon, as well as to --- build $PP$s in the resource API, just requires a string. - - mkPreposition : Str -> Preposition ; - --- (These two functions are synonyms.) - ---2 Verbs - ---The verb in the imperfect tense gives the most information - - regV : Str -> V ; - ---Verb Form I : fa`ala, fa`ila, fa`ula - - v1 : Str -> Vowel -> Vowel -> V ; - ---Verb Form II : fa``ala - - v2 : Str -> V ; - ---Verb Form III : faa`ala - - v3 : Str -> V ; - ---Verb Form IV : 'af`ala - - v4 : Str -> V ; - ---Verb Form V : tafa``ala - - v5 : Str -> V ; - ---Verb Form VI : tafaa`ala - - v6 : Str -> V ; - ---Verb Form VIII 'ifta`ala - - v8 : Str -> V ; - ---3 Two-place verbs - --- Two-place verbs need a preposition, except the special case with direct object. --- (transitive verbs). Notice that a particle comes from the $V$. - - mkV2 : V -> Preposition -> V2 ; - - dirV2 : V -> V2 ; - ---3 Three-place verbs - --- Three-place (ditransitive) verbs need two prepositions, of which --- the first one or both can be absent. - - mkV3 : V -> Preposition -> Preposition -> V3 ; -- speak, with, about - dirV3 : V -> Preposition -> V3 ; -- give,_,to - dirdirV3 : V -> V3 ; -- give,_,_ - ---3 Other complement patterns --- --- Verbs and adjectives can take complements such as sentences, --- questions, verb phrases, and adjectives. - - mkV0 : V -> V0 ; - mkVS : V -> VS ; - mkV2S : V -> Str -> V2S ; --- mkVV : V -> VV ; - mkV2V : V -> Str -> Str -> V2V ; - mkVA : V -> VA ; - mkV2A : V -> Str -> V2A ; - mkVQ : V -> VQ ; - mkV2Q : V -> Str -> V2Q ; - - mkAS : A -> AS ; - mkA2S : A -> Str -> A2S ; - mkAV : A -> AV ; - mkA2V : A -> Str -> A2V ; - --- Notice: categories $AS, A2S, AV, A2V$ are just $A$, --- and the second argument is given --- as an adverb. Likewise --- $V0$ is just $V$. - - V0 : Type ; - AS, A2S, AV, A2V : Type ; - - ---. ---2 Definitions of paradigms - --- The definitions should not bother the user of the API. So they are --- hidden from the document. - - regV : Str -> V = \wo -> - let rau : Str * Vowel * Vowel = - case wo of { - "يَ" + fc + "ُ" + l => <fc+l, a, u> ; - "يَ" + fc + "ِ" + l => <fc+l, a, i> ; - "يَ" + fc + "َ" + l => <fc+l, a, a> ; - f@? + "َ" + c@? + "ِ" + l => <f+c+l, i, a> ; - _ => Predef.error ("regV not applicable to" ++ wo) - } - in v1 rau.p1 rau.p2 rau.p3 ; - - v1 = \rootStr,vPerf,vImpf -> - let { raw = v1' rootStr vPerf vImpf } in - { s = \\vf => - case rootStr of { - _ + "؟" + _ => rectifyHmz(raw.s ! vf); - _ => raw.s ! vf - }; - lock_V = <> - } ; - - va : Vowel = ResAra.a ; - - v1' : Str -> Vowel -> Vowel -> Verb = - \rootStr,vPerf,vImpf -> - let { root = mkRoot3 rootStr ; - l = dp 2 rootStr } in --last rootStr - case <l, root.c> of { - <"ّ",_> => v1geminate rootStr vPerf vImpf ; - <"و"|"ي",_> => v1defective root vImpf ; - <_,"و"|"ي"> => v1hollow root vImpf ; - _ => v1sound root vPerf vImpf - }; - - v2 = - \rootStr -> - let { - root = mkRoot3 rootStr - } in { - s = - case root.l of { - "و"|"ي" => (v2defective root).s; - _ => (v2sound root).s - }; - lock_V = <> - }; - - v3 = - \rootStr -> - let { - tbc = mkRoot3 rootStr ; - } in { - s = (v3sound tbc).s ; - lock_V = <> - }; - - v4 = - \rootStr -> - let { - root = mkRoot3 rootStr - } in { - s = - case root.l of { - "و"|"ي" => (v4defective root).s; - _ => (v4sound root).s - }; - lock_V = <> - }; - - - v5 = - \rootStr -> - let { raw = v5' rootStr } in - { s = \\vf => - case rootStr of { - _ + "؟" + _ => rectifyHmz(raw.s ! vf); - _ => raw.s ! vf - }; - lock_V = <> - }; - - v5' : Str -> V = - \rootStr -> - let { - nfs = mkRoot3 rootStr ; - } in { - s = (v5sound nfs).s ; lock_V = <> - }; - - v6 = - \rootStr -> - let { - fqm = mkRoot3 rootStr ; - } in { - s = (v6sound fqm).s ; - lock_V = <> - }; - - v8 = - \rootStr -> - let { - rbT = mkRoot3 rootStr ; - } in { - s = (v8sound rbT).s ; - lock_V = <> - }; - - Preposition = Str ; - - mkN nsc gen spec = - { s = nsc; --NTable - g = gen; - h = spec; - lock_N = <> - }; - - brkN' : Str -> Str -> Str -> Gender -> Species -> N = - \root,sg,pl,gen,spec -> - let { kitAb = mkWord sg root; - kutub = mkWord pl root - } in mkN (reg kitAb kutub) gen spec; - - brkN root sg pl gen spec = - let { raw = brkN' root sg pl gen spec} in - { s = \\n,d,c => - case root of { - _ + "؟" + _ => rectifyHmz(raw.s ! n ! d ! c); - _ => raw.s ! n ! d ! c - }; - g = gen; - h = spec ; lock_N = <> - }; - - sdfN = - \root,sg,gen,spec -> - let { kalima = mkWord sg root; - } in mkN (sndf kalima) gen spec; - - sdmN = - \root,sg,gen,spec -> - let { mucallim = mkWord sg root; - } in mkN (sndm mucallim) gen spec; - - mkPN = \str,gen,species -> - { s = \\c => str + indecl!c ; - g = gen; - h = species; - lock_PN = <> - }; - - - mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p} ; - - mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p ; c3 = q} ; - - mkPron : (_,_,_ : Str) -> PerGenNum -> NP = \ana,nI,I,pgn -> - { s = - table { - Nom => ana; - Acc => nI; - Gen => I - }; - a = {pgn = pgn; isPron = True }; - lock_NP = <> - }; - - -- e.g. al-jamii3, 2a7ad - regNP : Str -> Number -> NP = \word,n -> - { s = \\c => word + vowel ! c ; - a = {pgn = Per3 Masc n; isPron = False }; - lock_NP = <> - }; - - -- e.g. hadha, dhaalika - indeclNP : Str -> Number -> NP = \word,n -> - { s = \\c => word ; - a = {pgn = Per3 Masc n; isPron = False }; - lock_NP = <> - }; - - mkQuant7 : (_,_,_,_,_,_,_ : Str) -> State -> Quant = - \hava,havihi,havAn,havayn,hAtAn,hAtayn,hA'ulA,det -> - { s = \\n,s,g,c => - case <s,g,c,n> of { - <_,Masc,_,Sg> => hava; - <_,Fem,_,Sg> => havihi; - <_,Masc,Nom,Dl>=> havAn; - <_,Masc,_,Dl> => havayn; - <_,Fem,Nom,Dl> => hAtAn; - <_,Fem,_,Dl> => hAtayn; - <Hum,_,_,Pl> => hA'ulA; - _ => havihi - }; - d = Def; - isPron = False; - isNum = False; - lock_Quant = <> - }; - - mkQuant3 : (_,_,_ : Str) -> State -> Quant = - \dalika,tilka,ula'ika,det -> - { s = \\n,s,g,c => - case <s,g,c,n> of { - <_,Masc,_,Sg> => dalika; - <_,Fem,_,Sg> => tilka; - <Hum,_,_,_> => ula'ika; - _ => tilka - }; - d = Def; - isPron = False; - isNum = False; - lock_Quant = <> - }; - - sndA root pat = - let raw = sndA' root pat in { - s = \\af => - case root of { - _ + "؟" + _ => rectifyHmz(raw.s ! af); - _ => raw.s ! af - }; - lock_A = <> - }; - - sndA' : Str -> Str -> A = - \root,pat -> - let { kabIr = mkWord pat root; - akbar = mkWord "أَفعَل" root - } in { - s = table { - APosit g n d c => (positAdj kabIr) ! g ! n ! d ! c ; - AComp d c => (indeclN akbar) ! d ! c - }; - lock_A = <> - }; - - clrA root = - let { eaHmar = mkWord "أَفعَل" root; - HamrA' = mkWord "فَعلاء" root; - Humr = mkWord "فُعل" root - } in { - s = clr eaHmar HamrA' Humr; - lock_A = <> - }; - - mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ; - - mkAdv x = ss x ** {lock_Adv = <>} ; - mkAdV x = ss x ** {lock_AdV = <>} ; - mkAdA x = ss x ** {lock_AdA = <>} ; - - mkPreposition p = p ; - mkV2 v p = v ** {s = v.s ; c2 = p ; lock_V2 = <>} ; - dirV2 v = mkV2 v [] ; - - mkV3 v p q = v ** {s = v.s ; c2 = p ; c3 = q ; lock_V3 = <>} ; - dirV3 v p = mkV3 v [] p ; - dirdirV3 v = dirV3 v [] ; - - mkVS v = v ** {lock_VS = <>} ; - mkVQ v = v ** {lock_VQ = <>} ; - - V0 : Type = V ; ----- V2S, V2V, V2Q, V2A : Type = V2 ; - AS, A2S, AV : Type = A ; - A2V : Type = A2 ; - - mkV0 v = v ** {lock_V = <>} ; - mkV2S v p = mkV2 v p ** {lock_V2S = <>} ; - mkV2V v p t = mkV2 v p ** {s4 = t ; lock_V2V = <>} ; - mkVA v = v ** {lock_VA = <>} ; - mkV2A v p = mkV2 v p ** {lock_V2A = <>} ; - mkV2Q v p = mkV2 v p ** {lock_V2Q = <>} ; - - mkAS v = v ** {lock_A = <>} ; - mkA2S v p = mkA2 v p ** {lock_A = <>} ; - mkAV v = v ** {lock_A = <>} ; - mkA2V v p = mkA2 v p ** {lock_A2 = <>} ; - - -} ; diff --git a/next-lib/src/arabic/PatternsAra.gf b/next-lib/src/arabic/PatternsAra.gf deleted file mode 100644 index 611fd262a..000000000 --- a/next-lib/src/arabic/PatternsAra.gf +++ /dev/null @@ -1,106 +0,0 @@ -resource PatternsAra = { - -flags coding=utf8 ; - - oper - - fA' = { h = "" ; m1 = ""; m2 = ""; t = "َاء"} ; - - eafAcI = { h = "أَ"; m1 = "َا"; m2 = ""; t = "ِي" } ; - eafcA' = { h = "أَ"; m1 = "ْ" ; m2 = ""; t = "َاء"} ; - eafcI = { h = "أَ"; m1 = "ْ" ; m2 = ""; t = "ِي" } ; - fac = { h = "" ; m1 = "َ" ; m2 = ""; t = "" } ; - facc = { h = "" ; m1 = "َ" ; m2 = ""; t = "ّ" } ; - facca = { h = "" ; m1 = "َ" ; m2 = ""; t = "َّ" } ; - facci = { h = "" ; m1 = "َ" ; m2 = ""; t = "ِّ" } ; - faccu = { h = "" ; m1 = "َ" ; m2 = ""; t = "ُّ" } ; - facp = { h = "" ; m1 = "َ" ; m2 = ""; t = "َة" } ; - faca = { h = "" ; m1 = "َ" ; m2 = ""; t = "َ" } ; - facA = { h = "" ; m1 = "َ" ; m2 = ""; t = "َا" } ; - facA' = { h = "" ; m1 = "َ" ; m2 = ""; t = "َاء"} ; - fAc = { h = "" ; m1 = "َا"; m2 = ""; t = "" } ; - fAcp = { h = "" ; m1 = "َا"; m2 = ""; t = "َة" } ; - fic = { h = "" ; m1 = "ِ" ; m2 = ""; t = "" } ; - ficc = { h = "" ; m1 = "ِ" ; m2 = ""; t = "ّ" } ; - ficA' = { h = "" ; m1 = "ِ" ; m2 = ""; t = "َاء"} ; - fIc = { h = "" ; m1 = "ِي"; m2 = ""; t = "" } ; - fIcAn = { h = "" ; m1 = "ِي"; m2 = ""; t = "َان"} ; - fca = { h = "" ; m1 = "ْ" ; m2 = ""; t = "َ" } ; - fci = { h = "" ; m1 = "ْ" ; m2 = ""; t = "ِ" } ; - fcu = { h = "" ; m1 = "ْ" ; m2 = ""; t = "ُ" } ; - fuc = { h = "" ; m1 = "ُ" ; m2 = ""; t = "" } ; - fucc = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ّ" } ; - fucci = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ِّ" } ; - fuccu = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ُّ" } ; - fuci = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ِ" } ; - fucu = { h = "" ; m1 = "ُ" ; m2 = ""; t = "ُ" } ; - fUc = { h = "" ; m1 = "ُو"; m2 = ""; t = "" } ; - ufAc = { h = "ُ" ; m1 = "َا"; m2 = ""; t = "" } ; - ufca = { h = "ُ" ; m1 = "ْ" ; m2 = ""; t = "َ" } ; - - eafAcil = { h = "أَ"; m1 = "َا" ; m2 = "ِ" ; t = "" } ; - eafAcIl = { h = "أَ"; m1 = "َا" ; m2 = "ِي" ; t = "" } ; - eafcilp = { h = "أَ"; m1 = "ْ" ; m2 = "ِ" ; t = "َة" } ; - eafcal = { h = "أَ"; m1 = "ْ" ; m2 = "َ" ; t = "" } ; - eafcAl = { h = "أَ"; m1 = "ْ" ; m2 = "َا" ; t = "" } ; - eafcil = { h = "أَ"; m1 = "ْ" ; m2 = "ِ" ; t = "" } ; - eafcul = { h = "أَ"; m1 = "ْ" ; m2 = "ُ" ; t = "" } ; - eiftacal = { h = "إِ"; m1 = "ْتَ" ; m2 = "َ" ; t = "" } ; - eufcil = { h = "أُ"; m1 = "ْ" ; m2 = "ِ" ; t = "" } ; - euftucil = { h = "أُ"; m1 = "ْتُ" ; m2 = "ِ" ; t = "" } ; - afcul = { h = "َ" ; m1 = "ْ" ; m2 = "ُ" ; t = "" } ; - faccalo = { h = "" ; m1 = "َ" ; m2 = "َّ" ; t = "ْ" } ; - facal = { h = "" ; m1 = "َ" ; m2 = "َ" ; t = "" } ; - facalo = { h = "" ; m1 = "َ" ; m2 = "َ" ; t = "ْ" } ; - facalp = { h = "" ; m1 = "َ" ; m2 = "َ" ; t = "َة" } ; - facA'il = { h = "" ; m1 = "َ" ; m2 = "َائِ"; t = "" } ; - facAl = { h = "" ; m1 = "َ" ; m2 = "َا" ; t = "" } ; - facAlI = { h = "" ; m1 = "َ" ; m2 = "َا" ; t = "ِي" } ; - facil = { h = "" ; m1 = "َ" ; m2 = "ِ" ; t = "" } ; - facIl = { h = "" ; m1 = "َ" ; m2 = "ِي" ; t = "" } ; - facl = { h = "" ; m1 = "َ" ; m2 = "ْ" ; t = "" } ; - faclp = { h = "" ; m1 = "َ" ; m2 = "ْ" ; t = "َة" } ; - facul = { h = "" ; m1 = "َ" ; m2 = "ُ" ; t = "" } ; - fAcal = { h = "" ; m1 = "َا" ; m2 = "َ" ; t = "" } ; - fAcil = { h = "" ; m1 = "َا" ; m2 = "ِ" ; t = "" } ; - faccal = { h = "" ; m1 = "َ" ; m2 = "َّ" ; t = "" } ; - faccil = { h = "" ; m1 = "َ" ; m2 = "ِّ" ; t = "" } ; - faclA' = { h = "" ; m1 = "َ" ; m2 = "ْ" ; t = "َاء"} ; - fAcilp = { h = "" ; m1 = "َا" ; m2 = "ِ" ; t = "َة" } ; - fawAcil = { h = "" ; m1 = "َوَا"; m2 = "ِ" ; t = "" } ; - ficAlp = { h = "" ; m1 = "ِ" ; m2 = "َا" ; t = "َة" } ; - fcal = { h = "" ; m1 = "ْ" ; m2 = "َ" ; t = "" } ; - fcil = { h = "" ; m1 = "ْ" ; m2 = "ِ" ; t = "" } ; - fcul = { h = "" ; m1 = "ْ" ; m2 = "ُ" ; t = "" } ; - ficl = { h = "" ; m1 = "ِ" ; m2 = "ْ" ; t = "" } ; - ficAl = { h = "" ; m1 = "ِ" ; m2 = "َا" ; t = "" } ; - ficlp = { h = "" ; m1 = "ِ" ; m2 = "ْ" ; t = "َة" } ; - ftacal = { h = "" ; m1 = "ْتَ" ; m2 = "َ" ; t = "" } ; - ftacil = { h = "" ; m1 = "ْتَ" ; m2 = "ِ" ; t = "" } ; - fuccAl = { h = "" ; m1 = "ُ" ; m2 = "َّا" ; t = "" } ; - fuccil = { h = "" ; m1 = "ُ" ; m2 = "ِّ" ; t = "" } ; - fuccilo = { h = "" ; m1 = "ُ" ; m2 = "ِّ" ; t = "ْ" } ; - fucal = { h = "" ; m1 = "ُ" ; m2 = "َ" ; t = "" } ; - fucaylp = { h = "" ; m1 = "ُ" ; m2 = "َيْ" ; t = "َة" } ; - fucAl = { h = "" ; m1 = "ُ" ; m2 = "َا" ; t = "" } ; - fucl = { h = "" ; m1 = "ُ" ; m2 = "ْ" ; t = "" } ; - fucil = { h = "" ; m1 = "ُ" ; m2 = "ِ" ; t = "" } ; - fuclp = { h = "" ; m1 = "ُ" ; m2 = "ْ" ; t = "َة" } ; - fucilo = { 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 = "" } ; - mafcil = { h = "مَ"; m1 = "ْ" ; m2 = "ِ" ; t = "" } ; - tafAcal = { h = "تَ"; m1 = "َا" ; m2 = "َ" ; t = "" } ; - tafaccal = { h = "تَ"; m1 = "َ" ; m2 = "َّ" ; t = "" } ; - tufuccil = { h = "تُ"; m1 = "ُ" ; m2 = "ِّ" ; t = "" } ; - tufUcil = { h = "تُ"; m1 = "ُو" ; m2 = "ِ" ; t = "" } ; - ufAcal = { h = "ُ" ; m1 = "َا" ; m2 = "َ" ; t = "" } ; - ufAcil = { h = "ُ" ; m1 = "َا" ; m2 = "ِ" ; t = "" } ; - ufcal = { h = "ُ" ; m1 = "ْ" ; m2 = "َ" ; t = "" } ; - ufcil = { h = "ُ" ; m1 = "ْ" ; m2 = "ِ" ; t = "" } ; - ufcul = { h = "ُ" ; m1 = "ْ" ; m2 = "ُ" ; t = "" } ; - -} diff --git a/next-lib/src/arabic/PhraseAra.gf b/next-lib/src/arabic/PhraseAra.gf deleted file mode 100644 index 2604ac4cb..000000000 --- a/next-lib/src/arabic/PhraseAra.gf +++ /dev/null @@ -1,29 +0,0 @@ -concrete PhraseAra of Phrase = CatAra ** open - ParamX, - Prelude, - ResAra in { - - lin - PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ! Masc ++ voc.s} ;--FIXME - - UttS s = {s = \\g => s.s} ; ---- OK? AR - - UttIAdv s = {s = \\g => s.s} ; ---- OK? AR - - UttQS qs = {s = \\g => qs.s ! QDir} ; - UttImpSg pol imp = {s = \\g => imp.s ! pol.p ! g ! ResAra.Sg} ; --- UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ; --- - UttIP ip = {s = \\_ => ip.s} ; ---- AR --- UttIAdv iadv = iadv ; - UttNP np = {s = \\_ => np.s ! Nom} ; --- UttVP vp = {s = infVP False vp (agrP3 Sg)} ; - UttAdv adv = {s = \\_ => adv.s} ; --- - NoPConj = {s = []} ; --- PConjConj conj = conj ; --- - NoVoc = {s = []} ; --- VocNP np = {s = "،" ++ np.s ! Nom} ; --- -} diff --git a/next-lib/src/arabic/QuestionAra.gf b/next-lib/src/arabic/QuestionAra.gf deleted file mode 100644 index 0a02db4af..000000000 --- a/next-lib/src/arabic/QuestionAra.gf +++ /dev/null @@ -1,106 +0,0 @@ -concrete QuestionAra of Question = CatAra ** open ResAra, ParamX, Prelude in { - - flags optimize=all_subs ; - - lin - - QuestCl cl = { - s = \\t,p => - table { - QIndir => "إِذا" ++ cl.s ! t ! p ! Verbal ; - QDir => cl.s ! t ! p ! Verbal - } - }; - - --- AR copied from PredVP - QuestVP qp vp = - { s =\\t,p,_ => - let { ----- o = Verbal ; ---- AR - np = {s = table Case {_ => qp.s} ; a ={pgn = Per3 Masc qp.n ; isPron = False}} ; - pgn = np.a.pgn ; - gn = pgn2gn pgn; - kataba = vp.s ! pgn ! VPPerf ; - yaktubu = vp.s ! pgn ! VPImpf Ind ; - yaktuba = vp.s ! pgn ! VPImpf Cnj ; - yaktub = vp.s ! pgn ! VPImpf Jus ; - vStr : ResAra.Tense -> Polarity -> Str = - \tn,pl -> case<vp.isPred,tn,pl> of { - <False, ResAra.Pres, Pos> => yaktubu ; - <False, ResAra.Pres, Neg> => "لَا" ++ yaktubu ; - <True, ResAra.Pres, Pos> => "" ; --no verb "to be" in present - <True, ResAra.Pres, Neg> => "لَيسَ" ;--same here, just add negation particle - <_, ResAra.Past, Pos> => kataba ; - <_, ResAra.Past, Neg> => "لَمْ" ++ yaktub ; - <_, ResAra.Fut, Pos> => "سَ" ++ yaktubu ; - <_, ResAra.Fut, Neg> => "لَنْ" ++ yaktuba - }; - pred : ResAra.Tense -> Polarity -> Str = - \tn,pl -> case <vp.isPred,tn,pl> of { - <True, ResAra.Pres, Pos> => vp.pred.s ! gn ! Nom; --xabar marfooc - _ => vp.pred.s ! gn ! Acc --xabar kaana wa laysa manSoob - } ; - - } in ---- case o of { ----- _ => - case <False, np.a.isPron> of { ----- AR workaround 18/12/2008 case <vp.obj.a.isPron, np.a.isPron> of { - -- ya2kuluhu - <False,True> => (vStr t p) ++ vp.obj.s ++ vp.s2 ++ (pred t p); - -- ya2kuluhu al-waladu, yakuluhu al-2awlaadu - <False,False> => (vStr t p) ++ np.s ! Nom ++ vp.obj.s ++ vp.s2 ++ (pred t p); - <True,False> => (vStr t p) ++ vp.obj.s ++ np.s ! Nom ++ vp.s2 ++ (pred t p); - <True,True> => (vStr t p) ++ vp.obj.s ++ vp.s2 ++ (pred t p) - }; - ---- Nominal => - ---- np.s ! Nom ++ (vStr t p) ++ vp.obj.s ++ vp.s2 ++ (pred t p) - } - ; ---- }; - - --- QuestSlash ip slash = { --- s = \\t,a,p => --- let --- cls = slash.s ! t ! a ! p ; --- who = slash.c2 ++ ip.s ! Acc --- stranding in ExtAra --- in table { --- QDir => who ++ cls ! OQuest ; --- QIndir => who ++ cls ! ODir --- } --- } ; --- - ----- AR guessed - QuestIAdv iadv cl = {s = \\t,p,_ => iadv.s ++ cl.s ! t ! p ! Verbal} ; - --- s = \\t,a,p => --- let --- cls = cl.s ! t ! a ! p ; --- why = iadv.s --- in table { --- QDir => why ++ cls ! OQuest ; --- QIndir => why ++ cls ! ODir --- } --- } ; --- --- PrepIP p ip = {s = p.s ++ ip.s ! Nom} ; --- --- AdvIP ip adv = { --- s = \\c => ip.s ! c ++ adv.s ; --- n = ip.n --- } ; --- - ----- AR guesses - IdetCN idet cn = { - s = idet.s ! Nom ++ cn.s ! idet.n ! Indef ! Nom ; - n = idet.n - } ; - IdetQuant idet num = { - s = \\c => idet.s ++ num.s ! Masc ! Indef ! c; - n = ResAra.Sg ---- size of Num - } ; --- -} diff --git a/next-lib/src/arabic/RelativeAra.gf b/next-lib/src/arabic/RelativeAra.gf deleted file mode 100644 index 13cf7c5f1..000000000 --- a/next-lib/src/arabic/RelativeAra.gf +++ /dev/null @@ -1,34 +0,0 @@ -concrete RelativeAra of Relative = CatAra ** open ResAra in { --- --- flags optimize=all_subs ; --- --- lin --- --- RelCl cl = { --- s = \\t,a,p,_ => "سُعه" ++ "تهَت" ++ cl.s ! t ! a ! p ! ODir --- } ; --- --- RelVP rp vp = { --- s = \\t,ant,b,ag => --- let --- agr = case rp.a of { --- RNoAg => ag ; --- RAg a => a --- } ; --- cl = mkClause (rp.s ! Nom) agr vp --- in --- cl.s ! t ! ant ! b ! ODir --- } ; --- --- RelSlash rp slash = { --- s = \\t,a,p,_ => slash.c2 ++ rp.s ! Acc ++ slash.s ! t ! a ! p ! ODir --- } ; --- --- FunRP p np rp = { --- s = \\c => np.s ! c ++ p.s ++ rp.s ! Acc ; --- a = RAg np.a --- } ; --- --- IdRP = mkIP "وهِعه" "وهِعه" "وهْسي" Sg ** {a = RNoAg} ; --- -} diff --git a/next-lib/src/arabic/ResAra.gf b/next-lib/src/arabic/ResAra.gf deleted file mode 100644 index e18dc5ebe..000000000 --- a/next-lib/src/arabic/ResAra.gf +++ /dev/null @@ -1,1171 +0,0 @@ ---# -path=.:../abstract:../common:../../prelude --- -----1 Arabic auxiliary operations. --- ----- This module contains operations that are needed to make the ----- resource syntax work. To define everything that is needed to ----- implement $Test$, it moreover contains regular lexical ----- patterns needed for $Lex$. --- -resource ResAra = PatternsAra ** open Prelude, Predef in { - - flags optimize=noexpand ; coding=utf8 ; - - - param - - Vowel = u | a | i ; - Number = Sg | Dl | Pl; - Gender = Masc | Fem ; - Case = Nom | Acc | Gen ; - Person = P1 | P2 | P3 ; - Species = NoHum | Hum ; - State = Def | Indef | Const ; - Mood = Ind | Cnj | Jus ; - Voice = Act | Pas ; - Tense = Pres | Past | Fut ; - Order = Verbal | Nominal ; - - oper - - --roots, patterns, and making words: - - Pattern : Type = {h, m1, m2, t : Str}; - Root : Type = {f : Str}; - Root2 : Type = Root ** {c : Str} ; - Root3 : Type = Root2 ** {l : Str} ; - - 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~, - --because the function discards anything after the first two characters - mkRoot2 : Str -> Root2 = \fcl -> - let { cl = drop 2 fcl} in --drop 1 fcl - {f = take 2 fcl; c = take 2 cl}; --take 1 - - --opers to interdigitize (make words out of roots and patterns: - - oper - --regular case, 3 non-weak consonants - mkStrong : Pattern -> Root3 -> Str = \p,fcl -> - p.h + fcl.f + p.m1 + fcl.c + p.m2 + fcl.l + p.t; - - mkDefective: Pattern -> Root3 -> Str = \p,fcl -> - p.h + fcl.f + p.m1 + fcl.c + p.t; - - mkHollow: Pattern -> Root3 -> Str = \p,fcl -> - p.h + fcl.f + p.m1 + fcl.l + p.t; - - mkAssimilated: Pattern -> Root3 -> Str = \p,fcl -> - p.h + fcl.c + p.m1 + fcl.l + p.t; - - -- takes a weak pattern and a triliteral root and makes - -- a word, deducing which root consonant is weak - mkWeak : Pattern -> Str -> Str = \pat,root -> - let fcl = mkRoot3 root in - case root of { - _ + ("و"|"ي"|"ّ") => mkDefective pat fcl; - _ + ("و"|"ي") + _ => mkHollow pat fcl; - ("و"|"ي") + _ => mkAssimilated pat fcl - }; - - mkBilit : Pattern -> Root2 -> Str = \p,fcl -> - p.h + fcl.f + p.m1 + fcl.c + p.t; - - --takes a pattern string and root string and makes a word - mkWord : Str -> Str -> Str =\pS, rS -> - case pS of { - w@_ + "ف" + x@_ + "ع" + y@_ + "ل" + z@_ => - mkStrong { h = w ; m1 = x; m2 = y; t = z} (mkRoot3 rS); - w@_ + "ف" + x@_ + "ع" + y@_ => - let pat = { h = w ; m1 = x; m2 = ""; t = y} in - case <length rS : Ints 100> of { - 6 | 5 => mkWeak pat rS ; --3=> - 4 | 3 => mkBilit pat (mkRoot2 rS) ; --2=> - _ => rS ---- AR error "expected 3--6" - } - }; - - --types of open classes: - - NTable = Number => State => Case => Str; - - Noun : Type = {s : NTable ; g : Gender; h : Species} ; --- Adj : Type = {s : Gender => NTable} ; - Adj : Type = {s : AForm => Str} ; - Verb : Type = {s : VForm => Str} ; - - param - VForm = - VPerf Voice PerGenNum - | VImpf Mood Voice PerGenNum - | VImp Gender Number - | VPPart ; - - PerGenNum = - Per3 Gender Number - | Per2 Gender Number - | Per1 SgPl; - - SgPl = Sing | Plur; - - AForm = - APosit Gender Number State Case - | AComp State Case ; - - --verbal morphology - -oper - - --macro for sound verb - --PerfAct, PerfPas, ImpfAct, ImpfPas, Imp, PPart - verb : (_,_,_,_,_,_ : Str) -> Verb = - \katab,kutib,aktub,uktab,euktub,maktUb -> { - s = table { - VPerf Act pgn => katab + suffixPerf ! pgn ; - VPerf Pas pgn => kutib + suffixPerf ! pgn ; - VImpf Ind Act pgn => prefixImpf!pgn + aktub + suffixImpfInd !pgn; - VImpf Ind Pas pgn => prefixImpf!pgn + uktab + suffixImpfInd !pgn; - VImpf m Act pgn => prefixImpf!pgn + aktub + suffixImpfCJ m ! pgn; - VImpf m Pas pgn => prefixImpf !pgn + uktab + suffixImpfCJ m !pgn; - VImp g n => euktub + suffixImpfCJ Jus ! (Per2 g n); - VPPart => maktUb - } - } ; - - --affixes of sound verbs - - suffixPerf : PerGenNum => Str = - table { - Per3 Masc Sg => "َ" ; - Per3 Masc Dl => "َا" ; - Per3 Masc Pl => "ُوا" ; - Per3 Fem Sg => "َتْ" ; - Per3 Fem Dl => "َتَا" ; - Per3 Fem Pl => "ْنَ" ; - Per2 Masc Sg => "ْتَ" ; - Per2 _ Dl => "ْتُمَا" ; - Per2 Masc Pl => "ْتُمْ" ; - Per2 Fem Sg => "ْتِ" ; - Per2 Fem Pl => "ْتُنَّ" ; - Per1 Sing => "ْتُ" ; - Per1 Plur => "ْنَا" - } ; - - prefixImpf : PerGenNum => Str = - table { - Per1 Sing => "أ" ; - Per1 Plur => "ن" ; - Per3 Masc _ => "ي" ; - Per3 Fem Pl => "ي" ; - _ => "ت" - } ; - - suffixImpfInd : PerGenNum => Str = - table { - Per3 Masc Pl => "ُونَ" ; - Per3 Fem Pl => "ْنَ" ; - Per3 g Dl => "َانِ" ; - Per2 Masc Pl => "ُونَ" ; - Per2 Fem Sg => "ِينَ" ; - Per2 g Dl => "َانِ" ; - Per2 Fem Pl => "ْنَ" ; - _ => "ُ" - } ; - - suffixImpfCJ : Mood -> PerGenNum => Str = \m -> - table { - Per3 Masc Pl => "ُوا" ; - Per3 Fem Pl => "ْنَ" ; - Per3 g Dl => "َا" ; - Per2 Masc Pl => "ُوا" ; - Per2 Fem Sg => "ِي" ; - Per2 g Dl => "َا" ; - Per2 Fem Pl => "ْنَ" ; - _ => endVowel ! m - } ; - - --macro for geminate verbs: FIXME, change the misleading variable names - verbGeminate : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb = - \xAf,xif,xyf,xuf,axAf,axaf,uxAf,uxaf,xaf,xAf',ppart -> - let { perfPattern = patHollowPerf xAf xif xyf xuf ; - impfPattern = patHollowImpf axAf axaf uxAf uxaf ; - impPattern = patHollowImp xaf xAf' - } in - { s = table { - VPerf v pgn => perfPattern ! v ! pgn + suffixPerf ! pgn ; - VImpf Ind v pgn => prefixImpf ! pgn + impfPattern ! v ! pgn + suffixImpfInd ! pgn ; - VImpf m v pgn => prefixImpf ! pgn + impfPattern ! v ! pgn + suffixImpfCJ m ! pgn ; - VImp g n => impPattern ! g ! n + suffixImpfCJ Jus ! (Per2 g n); - VPPart => ppart - } - } ; - - --macro for hollow verbs: - verbHollow : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb = - \xAf,xif,xyf,xuf,axAf,axaf,uxAf,uxaf,xaf,xAf',ppart -> - let { perfPattern = patHollowPerf xAf xif xyf xuf ; - impfPattern = patHollowImpf axAf axaf uxAf uxaf ; - impPattern = patHollowImp axaf xAf' ; - jusPattern = patHollowJus axaf axAf uxaf uxAf ; - } in - { s = table { - VPerf v pgn => perfPattern ! v ! pgn + suffixPerf ! 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 Jus v pgn => prefixImpf ! pgn + jusPattern ! v ! pgn + suffixImpfCJ Jus ! pgn ; - VImp g n => impPattern ! g ! n + suffixImpfCJ Jus ! (Per2 g n); - VPPart => ppart - } - } ; - - --macro for defective verbs: - verbDef: (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Vowel -> Verb = - \rama,ramay,rumi,rumu,rumiy,armi,armu,urma,Irmi,Irmu,ppart,vowel -> - let { - patPerf = patDefPerf rama ramay rumi rumu rumiy ; - patImpfAct = patDefImpfAct armi armu ; - patImp = patDefImp Irmi Irmu - } in - { s = table { - VPerf v pgn => patPerf ! v ! pgn + (suffixPerfDef v) ! pgn ; - VImpf m Act pgn => prefixImpf ! pgn + patImpfAct ! pgn + (suffixImpfDef Act vowel) ! m ! pgn ; - VImpf m Pas pgn => prefixImpf ! pgn + urma + (suffixImpfDef Pas vowel) ! m ! pgn ; - VImp g n => patImp ! g ! n + (suffixImpfDef Act vowel) ! Jus ! (Per2 g n) ; - VPPart => ppart - } - } ; - - patDefPerf : (_,_,_,_,_ :Str) -> Voice => PerGenNum => Str = \rama,ramay,rumi,rumu,rumy -> - table { - Act => - table { - Per3 Fem Pl => ramay ; - Per3 _ _ => rama ; - _ => ramay - } ; - Pas => - table { - Per3 Masc Pl => rumu ; - Per3 Fem Pl => rumy ; - Per3 _ _ => rumi ; - _ => rumy - } - } ; - - --ignores the vowel=u case, eg "دعو" - patDefImpfAct : (_,_ : Str) -> PerGenNum => Str = \rmi,rmu -> - table { - Per3 Masc Pl => rmu ; - Per2 Masc Pl => rmu ; - _ => rmi - } ; - - - patDefImp : (_,_ : Str) -> Gender => Number => Str = \rmi, rmu -> - table { - Masc => table {Pl => rmu ; _ => rmi} ; - _ => table {_ => rmi} - } ; - - - suffixPerfDef : Voice -> PerGenNum => Str = \v -> - let {p3ms = - case v of { - Act => "ى" ; - Pas => "يَ" - } ; - ya = - case v of { - Act => "" ; - Pas => "يَ" - } - } in - table { - Per3 Masc Sg => p3ms ; - Per3 Masc Dl => "يَا" ; - Per3 Masc Pl => "وْا" ; - Per3 Fem Sg => ya + "تْ" ; - Per3 Fem Dl => ya + "تَا" ; - Per3 Fem Pl => "نَ" ; - Per2 Masc Sg => "تَ" ; - Per2 _ Dl => "تُمَا" ; - Per2 Masc Pl => "تُمْ" ; - Per2 Fem Sg => "تِ" ; - Per2 Fem Pl => "تُنَّ" ; - Per1 Sing => "تُ" ; - Per1 Plur => "نَا" - } ; - - - suffixImpfDef : Voice -> Vowel -> Mood => PerGenNum => Str = \vc,vw -> - let { - default : Mood -> Str = \m -> - case vc of { - Pas => case m of {Jus => "" ; _ => "ى"} ; - Act => case vw of { - u => case m of {Ind => "و" ; Cnj => "وَ" ; Jus => ""} ; - i => case m of {Ind => "ي" ; Cnj => "يَ" ; Jus => ""} ; - a => case m of {Ind => "ى" ; Cnj => "ى" ; Jus => ""} - } - } - } in - table { - Ind => - table { - Per3 Masc Pl => "وْنَ" ; - Per2 Masc Pl => "وْنَ" ; - Per3 g Dl => "يَانِ" ; - Per2 g Dl => "يَانِ" ; - Per3 Fem Pl => "يْنَ" ; - Per2 Fem _ => "يْنَ" ; - _ => default Ind - } ; - m => - table { - Per3 Masc Pl => "وْا" ; - Per2 Masc Pl => "وْا" ; - Per3 g Dl => "يَا" ; - Per2 g Dl => "يَا" ; - Per3 Fem Pl => "يْنَ" ; - Per2 Fem Pl => "يْنَ" ; - Per2 Fem Sg => "ي" ; - _ => default m - } - } ; - ---now is used for the sound, assimilated (weak C1), and when C1 = hamza: - -v1sound : Root3 -> Vowel -> Vowel -> Verb = - \fcl,vPerf,vImpf -> - let { - qf = {f = fcl.c ; c = fcl.l} ; - qif = mkBilit (fvc ! vImpf) qf; - katab = mkStrong (patV1Perf ! vPerf) fcl ; - kutib = mkStrong fucil fcl ; --FIXME no passive if vPerf == u - ktub = mkStrong (patV1Impf ! vImpf) fcl ; - aktub = "َ" + - case fcl.f of { - "و"|"ي" => qif ; - _ => ktub - }; - uktab = mkStrong ufcal fcl ; - euktub = case fcl.f of { - "؟"|"و"|"ي" => qif ; - _ => prefixImp ! vImpf + ktub - }; - maktUb = mkStrong mafcUl fcl - } in - verb katab kutib aktub uktab euktub maktUb ; - -v1hollow : Root3 -> Vowel -> Verb = - \xwf,vowel -> - let { - xAf = mkHollow fAc xwf ; - xif = mkHollow (patHol1 ! vowel) xwf ; - xyf = mkHollow fIc xwf ; - xuf = mkHollow (patHol2 ! vowel) xwf ; - xaf = mkHollow (fvc ! vowel) xwf ; - axaf= "َ" + xaf ; - uxAf= mkHollow ufAc xwf ; - uxaf= "ُ" + xaf ; - xAf'= mkHollow (patHol3 ! vowel) xwf ; - axAf= "َ" + xAf'; - ppart = "مَ" + xAf' -- FIXME actually wierd anomalies happen with the a vowel.. - - } in verbHollow xAf xif xyf xuf axAf axaf uxAf uxaf xaf xAf' ppart ; - -patHol1 : Vowel => Pattern = - table { u => fuc ; _ => fic} ; - -patHol2 : Vowel => Pattern = - table { u => fic ; _ => fuc} ; - -patHol3 : Vowel => Pattern = - table { - u => fUc ; - i => fIc ; - a => fAc - } ; - ---used in assimilated (wqf -> qif, wqc -> qac..) and hollow (qwl -> qul, xwf->xaf..) -fvc : Vowel => Pattern = - table { - u => fuc ; - i => fic ; - a => fac - } ; - - -v1geminate : Str -> Vowel -> Vowel -> Verb = - \rootStr,vPerf,vImpf -> - let { - mdd = mkRoot3 rootStr ; --fcc - md = mkRoot2 rootStr ; --fc - madd = mkBilit facc md ; - madad = mkStrong (patGem1 ! vPerf) mdd ; - mudd = mkBilit fucc md ; - mudid = mkStrong fucil mdd ; - mudd' = mkBilit (patGem2 ! vImpf) md ; - amudd = "َ" + mudd' ; - mdud = mkStrong (patGem3 ! vImpf) mdd ; - amdud = "َ" + mdud ; - umadd = "ُ" + madd ; - umdad = "ُ" + mkStrong fcal mdd ; - Umdud = (prefixImp ! vImpf) + mdud; - mamdUd = mkStrong mafcUl mdd - } in verbGeminate madd madad mudd mudid amudd amdud umadd umdad Umdud mudd' mamdUd; - -patGem1 : Vowel => Pattern = - table { - a => facal ; - u => facul ; - i => facil - } ; - -patGem2 : Vowel => Pattern = - table { - u => fucc ; - a => facc ; - i => ficc --no such verb probably exists - } ; - -patGem3 : Vowel => Pattern = - table { - u => fcul ; - a => fcal ; - i => fcil --no such verb probably exists - } ; - -v1defective : Root3 -> Vowel -> Verb = - \rmy,vowel -> - let { - rama = mkDefective faca rmy ; - ramay = mkStrong facalo rmy ; - rumi = mkDefective fuci rmy ; - rumu = mkDefective fucu rmy ; - rumiy = mkStrong fucilo rmy ; - rmi = mkDefective (patDef1 ! vowel) rmy ; - armi = "َ" + rmi ; - rmu = mkDefective (patDef2 ! vowel) rmy ; - armu = "َ" + rmu ; - urma = mkDefective ufca rmy ; - eirmi = prefixImp ! vowel + rmi; - eirmu = prefixImp ! vowel + rmu; - marmiy = mkStrong mafcil rmy - } in verbDef rama ramay rumi rumu rumiy armi armu urma eirmi eirmu marmiy vowel ; - -patDef1 : Vowel => Pattern = - table { - u => fcu ; - a => fca ; - i => fci - } ; - -patDef2 : Vowel => Pattern = - table { - a => fca ; - _ => fcu - } ; - -v2sound : Root3 -> Verb = \qsm -> - let { - qassam = mkStrong faccal qsm ; - qussim = mkStrong fuccil qsm ; - qassim = mkStrong faccil qsm ; - uqassim = "ُ" + qassim ; - uqassam = "ُ" + qassam ; - muqassam = "مُ" + qassam - } in - verb qassam qussim uqassim uqassam qassim muqassam; - -v2defective : Root3 -> Verb = \gny -> - let { - ganna = mkDefective facca gny ; - gannay = mkStrong faccalo gny ; - gunni = mkDefective fucci gny ; - gunnu = mkDefective fuccu gny ; - gunniy = mkStrong fuccilo gny ; - ganni = mkDefective facci gny; - uganni = "ُ" + ganni; - gannu = mkDefective faccu gny; - ugannu = "ُ" + gannu; - uganna = "ُ" + ganna; - mugannaY = "مُ" + ganna + "ى" - } in verbDef ganna gannay gunni gunnu gunniy uganni ugannu uganna ganni gannu mugannaY i; - -v3sound : Root3 -> Verb = - \tbc -> - let { - tAbac = mkStrong fAcal tbc ; - twbic = mkStrong fUcil tbc ; - tAbic = mkStrong fAcil tbc ; - utAbic = "ُ" + tAbic ; - utAbac = mkStrong ufAcal tbc ; - mutAbac = "م" + utAbac - } in verb tAbac twbic utAbic utAbac tAbic mutAbac; - -v4sound : Root3 -> Verb = - \qnc -> - let { - eaqnac = mkStrong eafcal qnc; - euqnic = mkStrong eufcil qnc; - uqnic = mkStrong ufcil qnc; - uqnac = mkStrong ufcal qnc; - eaqnic = mkStrong eafcil qnc; - muqnac = "م" + uqnac - } in - verb eaqnac euqnic uqnic uqnac eaqnic muqnac; - - -v4defective : Root3 -> Verb = \cTy -> - let { - cTa = mkDefective fca cTy; - cTu = mkDefective fcu cTy; - cTi = mkDefective fci cTy; - eacTa = "أَ" + cTa; - eacTay = mkStrong eafcal cTy ; - ucTi = "ُ" + cTi; - eucTi = "أُ" + cTi; - ucTu = "ُ" + cTu; - eucTu = "أُ" + cTu; - eucTiy = mkStrong eufcil cTy ; - ucTa = "ُ" + cTa; - eacTi = "أَ" + cTi; - eacTu = "أَ" + cTu; - mucTaY = "م" + ucTa +"ى" - } in verbDef eacTa eacTay eucTi eucTu eucTiy ucTi ucTu ucTa eacTi eacTu mucTaY i; - -v5sound : Root3 -> Verb = - \nfs -> - let { - tanaffas = mkStrong tafaccal nfs ; - tunuffis = mkStrong tufuccil nfs ; - atanaffas = "َ" + tanaffas ; - utanaffas = "ُ" + tanaffas ; - mutanaffas = "م" + tanaffas - } in verb tanaffas tunuffis atanaffas utanaffas tanaffas mutanaffas; - -v6sound : Root3 -> Verb = - \fqm -> - let { - tafAqam = mkStrong tafAcal fqm ; - tufUqim = mkStrong tufUcil fqm ; - atafAqam = "َ" + tafAqam ; - utafAqam = "ُ" + tafAqam ; - mutafAqam = "م" + utafAqam - } in verb tafAqam tufUqim atafAqam utafAqam tafAqam mutafAqam; - -v8sound : Root3 -> Verb = - \rbT -> - let { - rtabiT = mkStrong ftacil rbT ; - rtabaT = mkStrong ftacal rbT ; - eirtabaT = "إِ" + rtabaT ; - eurtubiT = mkStrong euftucil rbT ; - artabiT = "َ" + rtabiT ; - urtabaT = "ُ" + rtabaT ; - eirtabiT = "إِ" + rtabiT ; - murtabaT = "م" + urtabaT - } in verb eirtabaT eurtubiT artabiT urtabaT eirtabiT murtabaT; - -patV1Perf : Vowel => Pattern = - table { - a => facal ; --katab - u => facul ; --Hasun - i => facil --rabiH - } ; - -patV1Impf : Vowel => Pattern = - table { - u => fcul ; --ktub - a => fcal ; --rbaH - i => fcil --Hsin - } ; - -endVowel : Mood => Str = - table { - Cnj => "َ" ; - Jus => "ْ" ; - Ind => "" - } ; - -prefixImp : Vowel => Str = - table { - u => "أُ" ; - _ => "إِ" - } ; - -patHollowPerf : (_,_,_,_ :Str) -> Voice => PerGenNum => Str = \xAf,xif,xyf,xuf -> - table { - Act => - table { - Per3 Fem Pl => xif ; - Per3 _ _ => xAf ; - _ => xif - } ; - Pas => - table { - Per3 Fem Pl => xuf ; - Per3 _ _ => xyf ; - _ => xuf - } - } ; - ---this is the pattern of imperfect hollow (ind & conj) and geminate verbs (all) -patHollowImpf : (_,_,_,_ :Str) -> Voice => PerGenNum => Str = \axAf,axaf,uxAf,uxaf -> - table { - Act => - table { - Per3 Fem Pl => axaf ; - Per2 Fem Pl => axaf ; - _ => axAf - } ; - Pas => - table { - Per3 Fem Pl => uxaf ; - Per2 Fem Pl => uxaf ; - _ => uxAf - } - } ; - -patHollowJus : (_,_,_,_ : Str) -> Voice => PerGenNum => Str =\axaf,axAf,uxaf,uxAf-> - table { - Act => - table { - Per3 g Sg => axaf ; - Per3 Fem Pl => axaf; - Per2 Fem Pl => axaf; - Per2 Masc Sg => axaf; - Per1 _ => axaf; - _ => axAf - } ; - Pas => - table { - Per3 g Sg => uxaf ; - Per3 Fem Pl => uxaf; - Per2 Fem Pl => uxaf; - Per2 Masc Sg => uxaf; - Per1 _ => uxaf; - _ => uxAf - } - } ; - - - -patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> - table { - Masc => table { Sg => xaf ; _ => xAf} ; - Fem => table { Pl => xaf ; _ => xAf} - } ; - ---Nominal Morphology - ---takes the adjective lemma and gives the Posit table - positAdj : Str -> Gender => NTable = - \kabIr -> - let kabIra = kabIr + "َة" in - table { - Masc => sndm kabIr; - Fem => sndf kabIra - }; - - clr : Str -> Str -> Str -> AForm => Str = - \aHmar,HamrA',Humr -> - table { - APosit Masc n d c => case n of { - Sg => indeclN aHmar ! d ! c ; - Dl => dual aHmar ! d ! c ; - Pl => sing Humr ! d ! c - }; - APosit Fem n d c => case n of { - Sg => indeclN HamrA' ! d ! c; - Dl => dual ((tk 2 HamrA') + "و") ! d ! c; - Pl => sing Humr ! d ! c - }; - AComp d c => indeclN aHmar ! d ! c - }; - - -- indeclinable nominal word (mamnuu3 mina S-Sarf) - indeclN : Str -> State => Case => Str = - \aHmar -> \\s,c => Al!s + aHmar + indecl!c; - - -- takes 2 words, singular and broken plural, and gives the - -- complete noun inflection table - reg : Str -> Str -> NTable = - \kitAb,kutub -> - table { - Sg => sing kitAb ; - Dl => dual kitAb ; - Pl => sing kutub - }; - - --takes the sound noun in singular and gives the - --complete noun inflection table of sound feminine plural - sndf : Str -> NTable = - \lawHa -> - table { - Sg => sing lawHa ; - Dl => dual lawHa ; - Pl => plurF lawHa - }; - - --takes the sound noun in singular and gives the - --complete inflection table of sound masculine plural nominals - sndm : Str -> NTable = - \muzAric -> - table { - Sg => sing muzAric ; - Dl => dual muzAric ; - Pl => plurM muzAric - }; - - -- takes a singular or broken plural word and tests the ending to - -- determine the declension and gives the corresponding inf table - sing : Str -> State => Case => Str = - \word -> - case word of { - lemma + "ِي" => \\s,c => Al ! s + lemma + dec2sg ! s ! c ; - _ + ("ا"|"ى") => \\s,c => Al ! s + word + dec3sg ! s ! c ; - _ => \\s,c => Al ! s + word + dec1sg ! s ! c - }; - - -- takes a singular word and tests the ending to - -- determine the declension and gives the corresponding dual inf table - dual : Str -> State => Case => Str = - \caSaA -> - case caSaA of { - lemma + ("ا"|"ى") => \\s,c => Al ! s + lemma + "ي" + dl ! s ! c ; - _ => \\s,c => Al ! s + caSaA + dl ! s ! c - }; - - -- takes a singular word and gives the corresponding sound - --plural feminine table - plurF : Str -> State => Case => Str = - \kalima -> - \\s,c => Al ! s + (mkAt kalima) + f_pl ! s ! c ; - - -- takes a singular word and gives the corresponding sound - --plural masculine table. FIXME: consider declension 3 - plurM : Str -> State => Case => Str = - \mucallim -> - \\s,c => Al ! s + mucallim + m_pl ! s ! c ; - - - -- to add the Al prefix for Definite words - Al : State => Str = - table { - Def => "ال"; - _ => "" - }; - - --declection 1 (strong ending) of the singular or broken plural words - dec1sg : State => Case => Str = - table { - Indef => - table { - Nom => "ٌ"; - Acc => "ً"; - Gen => "ٍ" - }; - _ => - table { --think of ?axU, ?axA, (the five nouns) - Nom => "ُ"; - Acc => "َ"; - Gen => "ِ" - } - }; - - --indeclinables (mamnuu3 mina S-Sarf) - indecl : Case => Str = - table { - Nom => "ُ"; - _ => "َ" - }; - - - --declection 2 (ends in yaa') - dec2sg : State => Case => Str = - table { - Indef => - table { - Acc => "ِياً"; - _ => "ٍ" - }; - _ => - table { - Acc => "ِيَ"; - _ => "ِي" - } - }; - - --declention 3 (ending in alif) - dec3sg : State => Case => Str = - table { - Indef => - table { - _ => "ً" - }; - _ => - table { - _ => "" - } - }; - - - --dual suffixes - dl : State => Case => Str = - table { - Const => - table { - Nom => "َا"; - _ => "َي" - }; - _ => - table { - Nom => "َانِ"; - _ => "َينِ" - } - }; - - --sound mascualine plural suffixes - m_pl : State => Case => Str = - table { - Const => - table { - Nom => "ُو"; - _ => "ِي" - }; - _ => - table { - Nom => "ُونَ"; - _ => "ِينَ" - } - }; - - --sound feminine plural suffixes - f_pl : State => Case => Str = - table { - Indef => - table { - Nom => "ٌ"; - _ => "ٍ" - }; - _ => - table { - Nom => "ُ"; - _ => "ِ" - } - }; - - - mkAt : Str -> Str = \bayDo -> - case bayDo of { - bayD + "ة" => bayD + "ات"; - bayD + "اء" => bayD + "اوات"; - bayD + "ى" => bayD + "يَات"; - _ => bayDo + "ات" - }; - - - oper - - sizeToNumber : Size -> Number = \s -> - case s of { - ThreeTen | None => Pl; - Two => Dl; - _ => Sg - } ; - - numberToSize : Number -> Size = \n -> - case n of { - Pl => ThreeTen; - Dl => Two ; - Sg => One -- or Hundreds or NonTeen - } ; - - detGender : Gender -> Size -> Gender = - \g,s -> - case s of { - ThreeTen | Teen => genPolarity ! g; - _ => g - }; - - nounState : State -> Number -> State = - \s,n -> - case <s,n> of { - <Const,Pl> => Def; --kullu l-kutubi, bacDu l-kutubi - <Const,Sg> => Indef; --kullu kitaabin - <Indef,_> => Indef; --kitaabun - _ => Def --Lkitaabu - }; - - - --FIXME needs testing - nounCase : Case -> Size -> State -> Case = - \c,size,s -> - case <size,s> of { - <Teen,_> => Acc; - <NonTeen,_> => Acc; - <ThreeTen,_> => Gen; - <Hundreds,_> => Gen; - <_,Const> => Gen; - _ => c - }; - - definite : State => State = - table { - Indef => Indef; - _ => Def - }; - - --things like mi{aö and vlAva and >alf should be treated as Const - --before the counted noun, so (vlAvaöN kutubK) is wrong - toDef : State -> Size -> State = - \s,n -> - case <s,n> of { - <Indef,Hundreds> => Const; - <Indef,ThreeTen> => Const; - _ => s - }; - - -- in a NP, sometimes the common noun preceedes the determiner - -- e.g. some determiners act as adjectives modifying the noun they count - -- "the three children, two children" - -- e.g. possesive pronouns: his book (kitaabuhu" - cnB4det : Bool -> Bool -> Size -> State -> Bool = \isPron,isNum,s,d -> - case <isPron,isNum,s,d> of { - <True,_,_,_> => True; - <_,False,_,_> => False; --non-numerals - <_,True,_,Def> => True; --definite numbers act as adjectives - <_,True,Two,_> => True; --numerals one and two always adjectives - <_,True,One,_> => True; --numerals one and two always adjectives - _ => False - }; - - agrP3 : Species -> Gender -> Number -> PerGenNum= \h,g,n -> - case <h,n> of { - <NoHum,Pl> => Per3 Fem Sg; - _ => Per3 g n - }; - - pgn2gn : PerGenNum -> {g : Gender; n : Number} = \pgn -> - case pgn of { - Per3 gn nm => {g = gn; n = nm}; - Per2 gn nm => {g = gn; n = nm}; - _ => {g = Masc; n = Sg} --randomly - }; - - - mkIP : Str -> Number -> {s : Str ; n : Number} = - \s,n -> {s = s ; n = n} ; - - mkOrd : (_,_ : Str) -> {s : Gender => State => Case => Str ; n : Size } = - \aysar,yusra -> - { s = \\g,s,c => - case g of { - Masc => (sing aysar) ! s ! c; - Fem => (sing yusra) ! s ! c - }; - n = None - }; - - - oper - - Det : Type = { - s : Species => Gender => Case => Str ; - d : State; - n : Size; - isNum : Bool; - -- for genitive pronouns (suffixes). if true, then "cn ++ det" - --should be used instead of "det ++ cn" when constructing the NP - isPron : Bool - } ; - - Predet : Type = { - s : Case => Str; - isDecl : Bool - }; - - Agr = { pgn : PerGenNum; isPron : Bool} ; - AAgr = { g : Gender ; n : Number} ; - - Comp : Type = { - s : AAgr => Case => Str - } ; - - Obj : Type = { - s : Str ; - a : Agr - }; - - NP : Type = { - s : Case => Str ; - a : Agr - } ; - - param VPForm = - VPPerf - | VPImpf Mood - | VPImp ; - - oper - - VP : Type = { - s : PerGenNum => VPForm => Str; - obj : Obj; - pred : Comp; - isPred : Bool; --indicates if there is a predicate (xabar) - s2 : Str - }; - - predV : Verb -> VP = \v -> - { s = \\pgn,vf => - let gn = pgn2gn pgn in - case vf of { - VPPerf => v.s ! (VPerf Act pgn); - VPImpf m => v.s ! (VImpf m Act pgn); - VPImp => v.s ! (VImp Masc Sg)--gn.g gn.n) - }; - obj = { - s = [] ; - a = {pgn = Per3 Masc Sg ; isPron = False} - }; --or anything! - s2 = []; - pred = { s = \\_,_ => []}; - isPred = False - }; - - - -- in verbal sentences, the verb agrees with the subject - -- in Gender but not in number - verbalAgr : PerGenNum -> PerGenNum = \pgn -> - case pgn of { - Per3 g _ => Per3 g Sg; - _ => pgn - }; - - insertObj : NP -> VP -> VP = \np,vp -> - { s = vp.s; - obj = {s = np.s ! Acc ; a = np.a}; - s2 = vp.s2; - pred = vp.pred; - isPred = vp.isPred - }; - - insertPred : {s : AAgr => Case => Str} -> VP -> VP = \p,vp -> - { s = vp.s; - obj = vp.obj; - s2 = vp.s2; - pred = p; - isPred = True - }; - - insertStr : Str -> VP -> VP = \str,vp -> - { s = vp.s; - obj = vp.obj; - s2 = str; - pred = vp.pred; - isPred = vp.isPred - }; - - kaan : {s : AAgr => Case => Str} -> VP = \xabar -> - insertPred xabar (predV (v1hollow {f = "ك"; c = "و" ; l = "ن"} u) ); - - param - - Size = One | Two | ThreeTen | Teen | NonTeen | Hundreds | None ; - DForm = unit | ten ; - CardOrd = NCard | NOrd ; - - oper - --digits 1, 3 - 10: take the lemmas of the card ords & in masculine - --form and calculates the whole table - - regNum : Str -> Str -> - {s : DForm => CardOrd => Gender => State => Case => Str} = - \xams,xAmis -> - let { xamsa = xams + "َة"; - xAmisa = xAmis + "َة"} in - mkNum xamsa xAmis xAmisa; - - mkNum : Str -> Str -> Str -> - {s : DForm => CardOrd => Gender => State => Case => Str} = - \wAhid,awwal,Ula -> - let { wAhida = wAhid + "َة"} in - { s= table { - unit => table { - NCard => table { - Masc => \\s,c => (sing wAhid) ! s ! c ; - --all fem are first declension: - Fem => \\s,c => Al ! s + wAhida + dec1sg ! s ! c - }; - NOrd => table { - Masc => \\s,c => Al ! s + awwal + dec1sg ! s ! c; - Fem => \\s,c => (sing Ula) ! s ! c - } - }; - ten => table { - NCard => \\_,s,c => Al ! s + wAhid + m_pl ! Indef ! c; - NOrd => \\_,s,c => Al ! s + awwal + m_pl ! Indef ! c - } - } - }; - - num3_10 : Str -> Str -> { s : DForm => CardOrd => Gender - => State => Case => Str ; n : Size } = - \xams,xAmis -> - regNum xams xAmis ** { n = ThreeTen }; - - num2 : { s : DForm => CardOrd => Gender => State => Case => Str} = - { s = table { - unit => table { - NCard => table { - Masc => \\s,c => Al ! s + "ٱِثن" + dl ! s ! c ; - Fem => \\s,c => Al ! s + "ٱِثنَت" + dl ! s ! c - }; - NOrd => table { - Masc => \\s,c => Al ! s + "ثان" + dec2sg ! s ! c ; - Fem => \\s,c => Al ! s + "ثانِيَة" + dec1sg ! s ! c - } - }; - ten => \\_,_,s,c => Al ! s + "عِشر" + m_pl ! Indef ! c - } - }; - - num100 : State => Case => Str = - \\s,c => Al ! s + "مِٱَة" + dec1sg ! s ! c; - - num200 : State => Case => Str = - \\s,c => Al ! s + "مِٱَة" + dl ! s ! c ; - - num1000 : State => Case => Str = - \\s,c => Al ! s + "أَلف" + dec1sg ! s ! c; - - num2000 : State => Case => Str = - \\s,c => Al ! s + "أَلف" + dl ! s ! c ; - - teen : Gender => Str = - table { - Masc => "عَشَرَ"; - Fem => "عَشرَةَ" - }; - - genPolarity : Gender => Gender = - table { - Masc => Fem; - Fem => Masc - }; - - -} diff --git a/next-lib/src/arabic/SentenceAra.gf b/next-lib/src/arabic/SentenceAra.gf deleted file mode 100644 index 72b529a29..000000000 --- a/next-lib/src/arabic/SentenceAra.gf +++ /dev/null @@ -1,135 +0,0 @@ ---# -path=.:abstract:common:prelude - -concrete SentenceAra of Sentence = CatAra ** open - ResAra, - Prelude, - ResAra, - ParamX, - CommonX in { - - - flags optimize=all_subs ; - - lin -{- - PredVP np vp = - { s = \\t,p,o => - case o of { - Verbal => - case vp.comp.a.isPron of { - False => vp.s ! t ! p ! Verbal ! np.a ++ np.s ! Nom ++ vp.comp.s ! Acc ; - True => vp.s ! t ! p ! Verbal ! np.a ++ vp.comp.s ! Acc ++ np.s ! Nom - }; - Nominal => - np.s ! Nom ++ vp.s ! t ! p ! Nominal ! np.a ++ vp.comp.s ! Acc - } - }; --} - PredVP np vp = - { s =\\t,p,o => - let { - pgn = - case <o,np.a.isPron> of { - <Verbal, False> => verbalAgr np.a.pgn; - _ => np.a.pgn - }; - gn = pgn2gn pgn; - kataba = vp.s ! pgn ! VPPerf ; - yaktubu = vp.s ! pgn ! VPImpf Ind ; - yaktuba = vp.s ! pgn ! VPImpf Cnj ; - yaktub = vp.s ! pgn ! VPImpf Jus ; - vStr : ResAra.Tense -> Polarity -> Str = - \tn,pl -> case<vp.isPred,tn,pl> of { - <False, ResAra.Pres, Pos> => yaktubu ; - <False, ResAra.Pres, Neg> => "لَا" ++ yaktubu ; - <True, ResAra.Pres, Pos> => "" ; --no verb "to be" in present - <True, ResAra.Pres, Neg> => "لَيسَ" ;--same here, just add negation particle - <_, ResAra.Past, Pos> => kataba ; - <_, ResAra.Past, Neg> => "لَمْ" ++ yaktub ; - <_, ResAra.Fut, Pos> => "سَ" ++ yaktubu ; - <_, ResAra.Fut, Neg> => "لَنْ" ++ yaktuba - }; - pred : ResAra.Tense -> Polarity -> Str = - \tn,pl -> case <vp.isPred,tn,pl> of { - <True, ResAra.Pres, Pos> => vp.pred.s ! gn ! Nom; --xabar marfooc - _ => vp.pred.s ! gn ! Acc --xabar kaana wa laysa manSoob - }; - - } in - case o of { - Verbal => - case <False, np.a.isPron> of { ----- AR workaround 18/12/2008 case <vp.obj.a.isPron, np.a.isPron> of { - -- ya2kuluhu - <False,True> => (vStr t p) ++ vp.obj.s ++ vp.s2 ++ (pred t p); - -- ya2kuluhu al-waladu, yakuluhu al-2awlaadu - <False,False> => (vStr t p) ++ np.s ! Nom ++ vp.obj.s ++ vp.s2 ++ (pred t p); - <True,False> => (vStr t p) ++ vp.obj.s ++ np.s ! Nom ++ vp.s2 ++ (pred t p); - <True,True> => (vStr t p) ++ vp.obj.s ++ vp.s2 ++ (pred t p) - }; - Nominal => - np.s ! Nom ++ (vStr t p) ++ vp.obj.s ++ vp.s2 ++ (pred t p) - } - }; - -- PredVP np vp = mkClause (np.s ! Nom) np.a vp ; - --- PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ; - - ImpVP vp = { - s = \\p,g,n => - case p of { - Pos => vp.s ! (Per2 g n) ! VPImp ++ vp.obj.s ++ vp.s2 ; - Neg => "لا" ++ vp.s ! (Per2 g n) ! (VPImpf Jus) ++ vp.obj.s ++ vp.s2 - } - }; - --- --- SlashV2 np v2 = --- mkClause (np.s ! Nom) np.a (predV v2) ** {c2 = v2.c2} ; --- --- SlashVVV2 np vv v2 = --- mkClause (np.s ! Nom) np.a --- (insertObj (\\a => infVP vv.isAux (predV v2) a) (predVV vv)) ** --- {c2 = v2.c2} ; --- --- AdvSlash slash adv = { --- s = \\t,a,b,o => slash.s ! t ! a ! b ! o ++ adv.s ; --- c2 = slash.c2 --- } ; --- --- SlashPrep cl prep = cl ** {c2 = prep.s} ; --- --- EmbedS s = {s = conjThat ++ s.s} ; --- EmbedQS qs = {s = qs.s ! QIndir} ; --- EmbedVP vp = {s = infVP False vp (agrP3 Sg)} ; --- agr --- - - --FIXME, all tenses - UseCl t ap cl = - {s = cl.s ! ResAra.Pres ! ap.p ! Verbal -{- case t of { - TPres => cl.s ! ResAra.Pres ! 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 ap qcl = --{s = cl.s ! t ! p ! Verbal } ; - {s = - table { - QDir => "هَل" ++ qcl.s ! ResAra.Pres ! ap.p ! QDir; - QIndir => qcl.s ! ResAra.Pres ! ap.p ! QIndir - } -{- 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} ; - -} diff --git a/next-lib/src/arabic/StructuralAra.gf b/next-lib/src/arabic/StructuralAra.gf deleted file mode 100644 index 98b52523e..000000000 --- a/next-lib/src/arabic/StructuralAra.gf +++ /dev/null @@ -1,112 +0,0 @@ -concrete StructuralAra of Structural = CatAra ** - open MorphoAra, ResAra, ParadigmsAra, Prelude in { - - flags optimize=all ; coding=utf8 ; - - lin - above_Prep = ss "فَوْقَ" ; - after_Prep = ss "بَعْدَ" ; - all_Predet = mkPredet "كُلّ" True ; - almost_AdA = ss "تَقْرِيباً"; - almost_AdN = ss "حَوَالي" ; -- or "تَقرِيبا" --- although_Subj = ss "َلتهُْغه" ; --- always_AdV = ss "َلوَيس" ; - and_Conj = ss "وَ" ** {n = Pl} ; --- because_Subj = ss "بعَُسي" ; - before_Prep = ss "قَبْلَ" ; - behind_Prep = ss "خَلْفَ" ; - between_Prep = ss "بَيْنَ" ; --- both7and_DConj = sd2 "بْته" "َند" ** {n = Pl} ; --- but_PConj = ss "بُت" ; - by8agent_Prep = ss "بِ" ; - by8means_Prep = ss "بِ" ; --- can8know_VV, can_VV = { --- s = table VVForm [["بي َبلي تْ"] ; "عَن" ; "عُْلد" ; --- ["بّن َبلي تْ"] ; ["بِنغ َبلي تْ"] ; "عَنءت" ; "عُْلدنءت"] ; --- isAux = True --- } ; - during_Prep = ss "خِلَالَ" ; --- either7or_DConj = sd2 "ِتهر" "ْر" ** {n = Sg} ; - everybody_NP = regNP "الجَمِيع" Pl ; - every_Det = mkDet "كُلّ" Sg Const ; - everything_NP = regNP "كُلّ" Sg ; --- everywhere_Adv = ss "ثريوهري" ; - few_Det = mkDet "بَعض" Pl Const ; --- first_Ord = ss "فِرست" ; - from_Prep = ss "مِنَ" ; - he_Pron = mkPron "هُوَ" "هُ" "هُ" (Per3 Masc Sg) ; - here_Adv = ss "هُنا" ; --- here7to_Adv = ss ["تْ هري"] ; --- here7from_Adv = ss ["فرْم هري"] ; - how_IAdv = ss "كَيفَ" ; --- how8many_IDet = mkDeterminer Pl ["هْو مَني"] ; --- if_Subj = ss "ِف" ; - in8front_Prep = ss "مُقَابِلَ" ; - i_Pron = mkPron "أَنَا" "نِي" "ِي" (Per1 Sing); - in_Prep = ss "فِي" ; --- it_Pron = mkPron "ِت" "ِت" "ِتس" Sg P3 ; --- less_CAdv = ss "لسّ" ; - many_Det = mkDet "جَمِيع" Pl Const ; --- more_CAdv = ss "مْري" ; - most_Predet = mkPredet "أَكثَر" True ; - much_Det = mkDet "الكَثِير مِنَ" Pl Const ; --- must_VV = { --- s = table VVForm [["بي هَثي تْ"] ; "مُست" ; ["هَد تْ"] ; --- ["هَد تْ"] ; ["هَثِنغ تْ"] ; "مُستنءت" ; ["هَدنءت تْ"]] ; ---- --- isAux = True --- } ; - no_Utt = {s = \\_ => "لا"} ; - on_Prep = ss "عَلى" ; ---- DEPREC one_Quant = mkQuantNum "واحِد" Sg Indef ; - only_Predet = mkPredet "فَقَط" False; --- or_Conj = ss "ْر" ** {n = Sg} ; --- otherwise_PConj = ss "ْتهروِسي" ; - part_Prep = ss "مِنَ" ; --- please_Voc = ss "ةلَسي" ; - possess_Prep = ss "ل" ; --- quite_Adv = ss "قُِتي" ; - she_Pron = mkPron "هِيَ" "ها" "ها" (Per3 Fem Sg) ; --- so_AdA = ss "سْ" ; - somebody_NP = regNP "أَحَد" Sg ; - someSg_Det = mkDet "أَحَد" Pl Const ; - somePl_Det = mkDet "بَعض" Pl Const ; - something_NP = regNP "شَيْء" Sg ; --- somewhere_Adv = ss "سْموهري" ; - that_Quant = mkQuant3 "ذَلِكَ" "تِلكَ" "أُلٱِكَ" Def; -----b that_NP = indeclNP "ذَلِكَ" Sg ; - there_Adv = ss "هُناك" ; --- there7to_Adv = ss "تهري" ; --- there7from_Adv = ss ["فرْم تهري"] ; --- therefore_PConj = ss "تهرفْري" ; -----b these_NP = indeclNP "هَؤُلَاء" Pl ; - they_Pron = mkPron "هُمْ" "هُمْ" "هُمْ" (Per3 Masc Pl) ; - this_Quant = mkQuant7 "هَذا" "هَذِهِ" "هَذَان" "هَذَيْن" "هَاتَان" "هَاتَيْن" "هَؤُلَاء" Def; -----b this_NP = indeclNP "هَذا" Sg ; -----b those_NP = indeclNP "هَؤُلَاءكَ" Pl ; - through_Prep = ss "عَبْرَ" ; --- too_AdA = ss "تّْ" ; - to_Prep = ss "إِلى" ; - under_Prep = ss "تَحْتَ" ; --- very_AdA = ss "ثري" ; --- want_VV = P.mkVV (P.regV "وَنت") ; - we_Pron = mkPron "نَحنُ" "نا" "نا" (Per1 Plur) ; - whatPl_IP = mkIP "ماذا" Pl ; - whatSg_IP = mkIP "ماذا" Sg ; - when_IAdv = ss "مَتَى" ; --- when_Subj = ss "وهن" ; - where_IAdv = ss "أَينَ" ; --- whichPl_IDet = mkDeterminer Pl ["وهِعه"] ; --- whichSg_IDet = mkDeterminer Sg ["وهِعه"] ; - whoSg_IP = mkIP "مَنْ" Sg ; - whoPl_IP = mkIP "مَنْ" Pl ; --- why_IAdv = ss "وهي" ; - without_Prep = ss "بِدُونِ" ; - with_Prep = ss "مَع" ; - yes_Utt = {s = \\_ => "نَعَم"} ; - youSg_Pron = mkPron "أَنتَ" "كَ" "كَ" (Per2 Masc Sg) ; - youPl_Pron = mkPron "أَنتُمْ" "كُمْ" "كُمْ" (Per2 Masc Sg) ; - youPol_Pron = mkPron "أَنتِ" "كِ" "كِ" (Per2 Fem Sg) ; - - have_V2 = dirV2 (regV "يَملِك") ; - -} diff --git a/next-lib/src/arabic/SymbolAra.gf b/next-lib/src/arabic/SymbolAra.gf deleted file mode 100644 index d8003eaf8..000000000 --- a/next-lib/src/arabic/SymbolAra.gf +++ /dev/null @@ -1,47 +0,0 @@ ---# -path=.:abstract:common - -concrete SymbolAra of Symbol = CatAra ** open Prelude, ResAra in { - -{- -lin - SymbPN i = {s = \\c => i.s ; g = Neutr} ; --- c - IntPN i = {s = \\c => i.s ; g = Neutr} ; --- c - FloatPN i = {s = \\c => i.s ; g = Neutr} ; --- c - NumPN i = {s = i.s ! Neutr ; g = Neutr} ; --- c - - CNIntNP cn i = { - s = \\c => cn.s ! Weak ! Sg ! Nom ++ i.s ; - a = agrP3 Sg ; - isPron = False - } ; - CNSymbNP det cn xs = let g = cn.g in { - s = \\c => det.s ! g ! c ++ cn.s ! adjfCase det.a c ! det.n ! c ++ xs.s ; - a = agrP3 det.n ; - isPron = False - } ; - CNNumNP cn i = { - s = \\c => artDef ! (GSg cn.g) ! c ++ cn.s ! Weak ! Sg ! Nom ++ i.s ! Neutr ! c ; - a = agrP3 Sg ; - isPron = False - } ; - - SymbS sy = {s = \\_ => sy.s} ; - - SymbNum n = {s = \\_,_ => n.s ; n = Pl ; isNum = True} ; - SymbOrd n = {s = \\_ => n.s ++ "."} ; - - -lincat - - Symb, [Symb] = SS ; - -lin - - MkSymb s = s ; - - BaseSymb = infixSS "und" ; - ConsSymb = infixSS "," ; --} - -} - diff --git a/next-lib/src/arabic/VerbAra.gf b/next-lib/src/arabic/VerbAra.gf deleted file mode 100644 index 06ea487cd..000000000 --- a/next-lib/src/arabic/VerbAra.gf +++ /dev/null @@ -1,45 +0,0 @@ -concrete VerbAra of Verb = CatAra ** open Prelude, ResAra in { - - flags optimize=all_subs ; - - lin - UseV = predV ; - - SlashV2a v = predV v ** {c2 = v.c2}; - Slash3V3 v np = insertObj np (predV v) ** {c2 = v.c2}; - - ComplSlash vp np = insertObj np vp ; - --- ComplV3 v np np2 = insertObj np2 (insertObj np (predV v)) ; - -{-{s = \\_ => v.c2 ++ np.s ! Acc ++ v.c3 ++ np2.s ! Acc ; - a = {pgn = Per3 Masc Sg ; isPron = False} } --FIXME - (predV v) ;-} --- --- ComplVV v vp = insertObj (\\a => infVP v.isAux vp a) (predVV v) ; --- --- ComplVS v s = insertObj (\\_ => conjThat ++ s.s) (predV v) ; --- ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ; --- --- ComplVA v ap = insertObj (ap.s) (predV v) ; --- ComplV2A v np ap = --- insertObj (\\_ => v.c2 ++ np.s ! Acc ++ ap.s ! np.a) (predV v) ; --- - UseComp xabar = kaan xabar ; - - AdvVP vp adv = insertStr adv.s vp ; - --- AdVVP adv vp = insertAdV adv.s vp ; --- --- ReflV2 v = insertObj (\\a => v.c2 ++ reflPron ! a) (predV v) ; --- --- PassV2 v = insertObj (\\_ => v.s ! VPPart) (predAux auxBe) ; --- - -- UseVS, UseVQ = \vv -> {s = vv.s ; c2 = [] ; isRefl = vv.isRefl} ; -- no "تْ" --- - CompAP ap = {s = \\agr,c => ap.s ! Hum ! agr.g ! agr.n ! Indef ! c} ; --FIXME - CompNP np = {s = \\_,c => np.s ! c}; - CompAdv a = {s = \\_,_ => a.s} ; --- --- -} |
