1
0
forked from GitHub/gf-core

lib/amharic by Markos Kassa Gobena

This commit is contained in:
aarne
2010-11-10 17:01:12 +00:00
parent 906b185d2f
commit ac54c8e6e5
35 changed files with 7552 additions and 2 deletions

View File

@@ -0,0 +1,69 @@
concrete AdjectiveAmh of Adjective = CatAmh ** open ResAmh,ParamX, Prelude in {
flags coding = utf8 ;
lin
PositA a = {
s = \\g,n,s,c => a.s ! g ! n ! s ! c
};
ComparA a np = {
s = \\g,n,s,c =>
case c of
{
Acc =>"ከ" ++ np.s ! Nom ++ "ይልቅ"++ a.s ! g ! n ! s ! c ;
_ => affix2 ("ከ")!c ++ np.s ! Nom ++ "ይልቅ"++ a.s ! g ! n ! s ! Nom
}
} ;
--FIX ada.s ? strange error :
{-
AdAP ada ap = {
s = \\g,n,s,c =>
case c of
{
Acc => ada.s ++ ap.s ! g ! Sg ! Indef ! c;
_ => affix2 ada.s !c ++ ap.s ! g ! Sg ! Indef ! Nom
}
} ;-}
AdAP ada ap = {
s = \\g,n,s,c => ada.s ++ ap.s ! g ! Sg ! Indef ! c
};
UseComparA a = {
s = \\g,n,s,c => "በደምብ" ++ a.s ! g ! Sg ! Indef ! Nom
};
AdjOrd ord = {
s = \\g,n,s,c =>
case c of
{
Acc =>"ከሁሉ" ++ ord.s!g!n!s!c ;
_ => affix2 ("ከሁሉ")!c ++ ord.s ! g!n!s!Nom
}
};
-- CAdvAP : CAdv -> AP -> NP -> AP ; -- as cool as John
CAdvAP ad ap np = {
s = \\g,n,s,c => ad.s ++ ad.p ++ np.s ! Nom ++ ap.s ! g ! n ! s ! c ;
} ;
}

View File

@@ -0,0 +1,17 @@
--# -path=.:../abstract:../common:../../prelude
concrete AdverbAmh of Adverb = CatAmh ** open ResAmh, Prelude,ParamX in {
flags coding = utf8;
--
lin
PositAdvAdj a = {s = "በ" ++ a.s ! Masc! Sg! Indef! Nom ++"ሁኔታ"} ;
PrepNP prep np = {s = preOrPost2 prep.isPre (prep.s)(np.s ! Nom)(prep.s2)};
AdAdv ada ad ={s = ada.s ++ ad.s };
ComparAdvAdj c a n = {s= "ከ" ++ n.s!Nom++c.s ++c.p ++ "በ" ++ a.s ! Masc! Sg! Indef! Nom ++"ሁኔታ"};
}

View File

@@ -0,0 +1,3 @@
--# -path=.:../abstract:../common:prelude
--
concrete AllAmh of AllAmhAbs = LangAmh, ExtAmh ;

View File

@@ -0,0 +1,3 @@
--# -path=.:../abstract:../common:prelude
abstract AllAmhAbs = Lang, ExtAmhAbs ;

44
lib/src/amharic/CatAmh.gf Normal file
View File

@@ -0,0 +1,44 @@
concrete CatAmh of Cat = CommonX ** open ResAmh, Prelude in {
lincat
CN,N = ResAmh.Noun ;-- {s :Number => Species => Case => Str; g : Gender} ;
N2 = ResAmh.N2 ;--{s : Number => Case => Str ; g : Gender} ** {c2 : Str} ;
N3 = ResAmh.N3 ;--{s : Number => Case => Str ; g : Gender} ** {c2,c3 : Str} ;
A2V,A= ResAmh.Adjective ;--{s : Gender => Number => Species => Case => Str} ;
V = ResAmh.Verb ;
V,V0,VS,VQ,VA,V2A,V2V,V2S,V2Q,VV= ResAmh.Verb ; -- = {s : VForm => Str} ;
V2 = ResAmh.Verb ** {c2 : Prep} ;
V3 = ResAmh.Verb ** {c2, c3 : Prep} ;
Pron,NP = ResAmh.NP ; --NP = {s : Case => Str ; a : Agr} ;
VP = ResAmh.VP ;
Comp =ResAmh.Comp;
PN = ResAmh.PN ; --{s : Number => Species => Case => Str ; g : Gender} ;
Quant = ResAmh.Quant;
Det = ResAmh.Det;--{s : Gender => Case => Str ; n : Number ; isDef : Bool };
Predet = ResAmh.Predet;
AP = ResAmh.AP;
Prep = ResAmh.Prep;
Numeral = ResAmh.Numeral; --{s : CardOrd => Case => Str ; n : Number} ;
Digits = ResAmh.Digits;--{s : CardOrd => Case => Str ; n : Number ; tail : DTail} ;
Ord = ResAmh.Ord ; --{ s : Case => Str } ;
Num = ResAmh.Num;--{s : Case => Str ; n : Number ; hasCard : Bool} ;
Card = ResAmh.Card;--{s : Case => Str ; n : Number} ;
Cl = ResAmh.Cl; -- {s : Tense => Pol => Str};
QCl = ResAmh.QCl;
Obj = ResAmh.Obj;
VPSlash = ResAmh.VPSlash;
ClSlash = ResAmh.ClSlash;
Imp = ResAmh.Imp;
S = ResAmh.S;
IP = ResAmh.IP;-- {s : Str ; n : ResAra.Number} ;
IDet = ResAmh.IDet ;
IQuant = ResAmh.IQuant;
Conj = ResAmh.Conj;
}

View File

@@ -0,0 +1,33 @@
concrete ConjunctionAmh of Conjunction =
CatAmh ** open ResAmh, Coordination, Prelude,ParamX, CommonX in {
flags optimize=all_subs ;
coding = utf8;
lin
ConjS = conjunctDistrSS ;
ConjAdv = conjunctDistrSS ;
ConjNP conj ss = conjunctDistrTable Case conj ss ** { a = {png= conjAgr (agrP3 conj.n) ss.a.png ;isPron =False}};
ConjAP conj ss = conjunctDistrTable4 Gender Number Species Case conj ss ;
BaseS = twoSS ;
ConsS = consrSS "፣" ;
BaseAdv = twoSS ;
ConsAdv = consrSS "፣" ;
BaseNP x y = twoTable Case x y ** {a = {png =conjAgr x.a.png y.a.png ;isPron = False}} ;
ConsNP xs x = consrTable Case "፣" xs x ** {a = { png = conjAgr xs.a.png x.a.png ;isPron =False} };
BaseAP x y = twoTable4 Gender Number Species Case x y ;
ConsAP xs x = consrTable4 Gender Number Species Case "፤" xs x ;
lincat
[S] = {s1,s2 : Str} ;
[Adv]= {s1,s2 : Str} ;
[NP] = {s1,s2 : Case => Str ; a : Agr} ;
[AP] = {s1,s2 : Gender => Number => Species => Case => Str} ;
}

12
lib/src/amharic/ExtAmh.gf Normal file
View File

@@ -0,0 +1,12 @@
concrete ExtAmh of ExtAmhAbs = CatAmh **
open MorphoAmh, ResAmh, ParadigmsAmh,ParamX, Prelude in {
--
flags optimize=all ; coding=utf8 ;
lin
youSgFem_Pron = pronNP "አንቺ" "አንቺን" "የአንቺ" "ለአንቺ" (Per2 Sg Fem);
hePol_pron = pronNP "እርሳቸው" "እርሳቸውን" "የእርሳቸው" "ለእርሳቸው" (Per3 Pl Masc) ;
shePol_pron = pronNP "እርሳቸው" "እርሳቸውን" "የእርሳቸው" "ለእርሳቸው" (Per3 Pl Masc) ;
}

View File

@@ -0,0 +1,11 @@
abstract ExtAmhAbs = Cat ** {
fun
youSgFem_Pron : Pron ;
shePol_pron : Pron ;
hePol_pron : Pron ;
}

View File

@@ -0,0 +1,26 @@
--# -path=.:../abstract:../common:prelude
-- (c) 2010 Markos KG
-- Licensed under LGPL
concrete GrammarAmh of Grammar =
NounAmh,
VerbAmh,
AdjectiveAmh,
AdverbAmh,
NumeralAmh,
SentenceAmh,
QuestionAmh,
RelativeAmh,
ConjunctionAmh,
PhraseAmh,
TextX,
StructuralAmh,
IdiomAmh,
TenseX
** {
flags startcat = Phr ; unlexer = text ; lexer = text ;coding=utf8 ;
} ;

View File

@@ -0,0 +1,14 @@
concrete IdiomAmh of Idiom = CatAmh ** open Prelude, ResAmh 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) ;
---- ProgrVP : VP -> VP ; -- be sleeping
}

181
lib/src/amharic/IrregAmh.gf Normal file
View File

@@ -0,0 +1,181 @@
--# -path=.:prelude:../abstract:../common
concrete IrregAmh of IrregAmhAbs = CatAmh ** open ParadigmsAmh 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 "ورِتي" "ورْتي" "ورِتّن" ;
}

View File

@@ -0,0 +1,15 @@
--# -path=.:../abstract:../common:../prelude
--(c) 2010 Markos KG
-- Licensed under LGPL
concrete LangAmh of Lang =
GrammarAmh,
LexiconAmh
** {
flags startcat = Phr ; unlexer = text ; lexer = text ; coding = utf8 ;
}

View File

@@ -0,0 +1,378 @@
--# -path=.:prelude
-- (c) 2010 Markos KG
-- Licensed under LGPL
concrete LexiconAmh of Lexicon = CatAmh ** open
ParadigmsAmh, ResAmh, Prelude in {
--
flags
optimize=values ;
coding = utf8;
lin
airplane_N = mkN "!wr/pl!n" ;
answer_V2S = mkV3mls"???";--answer_V2S = mkV2 (compoundV "????" (mkV "????")) ;
apartment_N = mkN "!p!rt!m!" ;
apple_N = mkN "b'l'?" ;
art_N = mkN "Tb'b" ;
ask_V2Q = mkV3mls "???";--ask_V2Q = mkV2 (mkV "??????") ;
baby_N = mkN "hS!n" ;
bad_A = mkA "m'Tf/" ;
bank_N = mkN "b!nk" ;
beautiful_A = mkA "q/nj/" ;
become_VA = mkV2nr"??";--become_VA = mkV "????";
beer_N = mkN "b#r!" ;
beg_V2V = mkV3mls "???";-- beg_V2V = mkV2V (compoundV "?????" (mkV "????")) "??" "??" False;
big_A = mkA "tlq" ;
bike_N = mkN "b#?kl%t";
bird_N = mkN "w'f" feminine ;
black_A = mkA "Tq&r" ;
bless_V = mkV3brk "???";
blue_A = mkA "?m!y!w#" ;
boat_N = mkN "j'lb!" feminine ;
book_N = mkN "m'Sh!f" ;
boot_N = mkN "b/t#" ;
boss_N = mkN "!l'q!" ;
boy_N = mkN "lj" ;
bread_N = mkN "?b/" ;
break_V2 = mkV3gdl"???";
broad_A = mkA "?f#" ;
brother_N = mkN "w'ndm";
brown_A = mkA "b&n#" ;
butter_N = mkN "qb%" ;
buy_V2 = mkV2bl "??";--buy_V2 = mkV2 (mkV "??????");
camera_N = mkN "k!m%r!" ;
cap_N = mkN "b!rn%T!" ;
car_N = mkN "m'k#n!" ;
carpet_N = mkN "mnT!f" ;
cat_N = mkN "?m't" feminine ;
ceiling_N = mkN "T!r!";
chair_N = mkN "w'nb'r" ;
cheese_N = mkN "!yb";
child_N = mkN "hS!n" ;
church_N = mkN (mkN "b%t'") (mkN "kr?ty!n" feminine);
city_N = mkN "k't'm!" feminine ;
clean_A = mkA "nS&h" ;
clever_A = mkA "blh" ;
close_V2 = mkV2bl "??";--close_V2 = mkV2 (compoundV "???" do_V2);
coat_N = mkN "k/t" ;
cold_A = mkA "q'zq!z!" ;
come_V = mkV2bl "??" ;
computer_N = mkN "k/mp#wt'r" ;
country_N = mkN "h!g'r" feminine ;
-- cousin_N = mkN "y'!k?t" (mkN "lj"); --cousin_N = mkCmpdNoun "???" (mkN "???") ; -- a compund noun made of two nouns
cow_N = mkN "l!m" feminine ;
die_V = mkV2nr "??" ;
dirty_A = mkA "q/x!x!" ;
distance_N3 = mkN3 (mkN (mkN "y!l'w") (mkN "rq't")) (mkPrep "k'" "" True) (mkPrep "w'd'" "" True);
doctor_N = mkN "h!k#m" ;
dog_N = mkN "wx!" ;
door_N = mkN "b'r" ;
drink_V2 = mkV2bl "??";
--easy_A2V = mkA2V "q'l!l";
eat_V2 = mkV2bl "??";
empty_A = mkA "b!d/" ;
enemy_N = mkN "T'l!t" ;
factory_N = mkN "f!br#k!" ;
father_N2 = mkN2 (mkN "!b!t") (mkPrep "y'" "" True) ;
fear_VS = mkV2bl "??";
--find_V2 = mkV2 (mkV "????") ;
fish_N = mkN "!?" ;
floor_N = mkN "w'l'l" ;
forget_V2 = mkV2bl"??";--forget_V2 = mkV2 (mkV "??????") ;
fridge_N = mkN "m!q'zq'Z!" ;
friend_N = mkN "g7d'N!";
fruit_N = mkN "fr!fr%" ;
-- fun_AV = mkAV (regA "???") ;
garden_N = mkN "m!?" ;
girl_N = mkN "lj#t" feminine ;
glove_N = mkN "g&w!nt" ;
gold_N = mkN "w'rq" ;
good_A = mkA "Tr&" ;
--go_V = mkV "????" ;
green_A = mkA "!r'ng&Ad%" ;
harbour_N = mkN "w'd'b" ; --harbour_N = mkCmpdNoun "????" (mkN "???") ;
hate_V2 = mkV2bl "??";--hate_V2 = mkV2 (compoundV "????" do_V2) ;
hat_N = mkN "b!rn%T!" ;
-- have_V2 = dirV2 (mk5V "????" "???" "???" "???" "??????") ;
hear_V2 = mkV2bl "??";--hear_V2 = mkV2 (mkV "????") ;
hill_N = mkN "!q'b't" ;
--hope_VS = (compoundV "????" do_V2); --
horse_N = mkN "f'r'?" ;
hot_A = mkA "tk&?" ;
house_N = mkN "b%t" ;
important_A = mkA "T'q!m#" ;
industry_N = mkN "#nd&?tr#" ;
iron_N = mkN "br't" ;
king_N = mkN "ng&?" ;
--know_V2 = mkV2 (mkV "?????") ;
--know_VS = mkV "?????";
lake_N = mkN "h!yq" ;
lamp_N = mkN "k&r!z" ;
--learn_V2 = mkV3brk "???"; --learn_V2 = mkV2 (mkV "??????") ;
leather_N = mkN "q/d!" ;
leave_V2 = mkV3gdl "???";--leave_V2 = mkV2 (mkV "????") ;
like_V2 = mkV3gdl "???";--like_V2 = mkV2 (compoundV "????" do_V2);
--listen_V2 = mkV2 (mkV "????") ;
live_V = mkV2nr "??" ; ---- touch
long_A = mkA "r'jm" ;
lose_V2 = mkV2bl "??";--lose_V2 = mkV2 (compoundV "???" do_V2) ;
love_N = mkN "fqr" ;
--love_V2 = mkV2 (compoundV "????" do_V2) "??";
man_N = mkN "?w" ; -- not correct according to rules should be discussed
--married_A2 = mkA "?????????" "??" ;
meat_N = mkN "?g!" ;
milk_N = mkN "w't't" ;
moon_N = mkN "C'r'q!" feminine ;
mother_N = mkN "(n!t" feminine; -- not covered need to be discussed
mountain_N = mkN "t'r!r!" ;
music_N = mkN "m&z#q!" feminine ;
narrow_A = mkA "T'b!b" ;
new_A = mkA "!d#?" ;
newspaper_N = mkN "g!z%T!" ;
oil_N = mkN "z'yt" ;
old_A = mkA "!r/g%" ;
open_V2 = mkV3gdl "???";--open_V2 = mkV2 (mkV "??????") ;
paint_V2A = mkV2bl "??";--paint_V2A = mkV2 (compoundV "???" do_V2) ;
paper_N = mkN "w'r'q't" ;
paris_PN = mkPN "p!r#?" Fem ;
peace_N = mkN "?l!m";
pen_N = mkN "b(r" ;
planet_N = mkN "pl!n%t" ;
plastic_N = mkN "pl!?t#k" ;
--play_V2 = mkV2 (mkV "??????") ;
policeman_N = mkN "p/l#?" ;
priest_N = (mkN "q%?") ;
-- probable_AS = mkAS (regA "????????") ;
queen_N = mkN "ng?t" feminine ;
radio_N = mkN "r!d#y/" ;
--rain_V0 = compoundV "????" (mkV "????" ) ;
--read_V2 = mkV2 (mkV "?????");
red_A = mkA "q'y" ;
religion_N = mkN "(mn't" ;
restaurant_N = mkN (mkN "mgb") (mkN "b%t");
river_N = mkN "w'nz";
rock_N = mkN "!l't" ;
roof_N = mkN "T!ry!";
rubber_N = mkN "g/m!" ;
run_V = mkV2nr "??" ;
--say_V = mkV "";--say_VS = mkV "????" ;
school_N = mkN (mkN "tmhrt") (mkN "b%t") ; -- will
science_N = mkN "?yn?" ;
sea_N = mkN "b!hr" ;
--seek_V2 = mkV2 (compoundV "????" do_V2) ;
--see_V2 = mkV2 (mkV "??????") ;
--sell_V3 = mkV3 (mkV "?????") "??" "";
send_V3 = mkV2yz "??";--send_V3 = mkV2yz "??";
sheep_N = mkN "b'g";
ship_N = mkN "m'rk'b" feminine ;
shirt_N = mkN "x'm#z";
shoe_N = mkN "C!m!" ;
shop_N = mkN "?q";
short_A = mkA "!Cr" ;
silver_N = mkN "br" ;
sister_N = mkN "(ht";
sleep_V = mkV2bl "??" ;
small_A = mkA "tnx" ;
snake_N = mkN "(b!b" ;
sock_N = mkN "k!l?" ;
--speak_V2 = mkV2 (mkV "?????");
star_N = mkN "k/k'b" feminine ;
steel_N = mkN "br't" ;
stone_N = mkN "dng!y" ;
stove_N = mkN "mdj!" ;
student_N =mkN "t'm!r#" ;
stupid_A = mkA "b!l'g%" ;
sun_N = mkN "S'h!y" feminine ;
switch8off_V2 = mkV2bl "??" ;--switch8off_V2 = mkV2 (mkV "?????") ; -- ADRAGI
switch8on_V2 = mkV2bl "??";--switch8on_V2 = mkV2 (compoundV "???" do_V2) ; -- ADRAGI -- abra
table_N = mkN "T'r'P%z!";
--talk_V3 = mkV3 (mkV "?????") "??" "???????????";
teacher_N = mkN "!?t'm!r#" ;
--teach_V2 = mkV2 (mkV "?????") ;
television_N = mkN "t%l%v#Zn" ;
thick_A = mkA "w'fr!m" ;
thin_A = mkA "q'Cn" ;
train_N = mkN "b!b&r" ;
--travel_V = mkV "????" ;
tree_N = mkN "z!f";
ugly_A = mkA "f&ng!" ;
--understand_V2 = mkV2 (mkV "??????") ;
university_N = mkN "y&nv'r?t#" ;
village_N = mkN "m'nd'r" feminine ;
wait_V2 = mkV3mls "???"; --wait_V2 = mkV2 (compoundV "??????" do_V2) ;
--walk_V = mkV "????" ;
warm_A = mkA "m&q" ;
war_N = mkN "T/rn't" ;
--watch_V2 = mkV2 (mkV "??????") ;
water_N = mkN "wh!" feminine ; -- not covered masculine ending with y
white_A = mkA "n'C" ;
window_N = mkN "m'?k/t" ;
wine_N = mkN "w'yn" ;
want_V = mkV3mls"???";
--win_V2 = mkV2 (mkV "?????") ;
woman_N = mkN "?t" feminine;
--wonder_VQ = compoundV "?????" (mkV "????") ;
wood_N = mkN "(nC't" ;
write_V2 = mkV3gdl "???";--write_V2 = mkV2 (mkV "?????") ;
yellow_A = mkA "b#C!" ;
young_A = mkA "w'T!t" ;
--do_V2 = mkV2 (mkV "????") ;
now_Adv = mkAdv "!h&n" ;
--already_Adv = mkAdv "?" ;
song_N = mkN "z'f'n" ;
add_V3 = mkV3mls "???";--add_V3 = mkV3 (compoundV "?????" do_V2) "" "" ;
number_N = mkN "q&Tr" ;
--put_V2 = mkV2 (mkV "?????") ;
stop_V = mkV2nr "??" ; -- some times A - qm ( later)
jump_V = mkV3gdl "???" ;
--left_Ord = {s = "gr!" ; n = singular};
--right_Ord = {s= "q'N" ; n = singular};
far_Adv = mkAdv "r&q" ;
correct_A = mkA "tkkl" ;
dry_A = mkA "d'r'q" ;
dull_A = mkA "d&ld&m" ;
full_A = mkA "m&l&" ;
heavy_A = mkA "k'b!d" ;
near_A = mkA "qrb" ;
rotten_A = mkA "gm" ;
round_A = mkA "kb" ;
sharp_A = mkA "x&l" ;
smooth_A = mkA "l'?l!?" ;
straight_A = mkA "q'Tt!" ;
wet_A = mkA "rTb" ; ----
wide_A = mkA "?f#" ;
animal_N = mkN "(n??" ;
ashes_N = mkN "!m'd" ;
back_N = mkN "j'rb!" ;
bark_N = mkN "qrf#" ;
belly_N = mkN "h/d" ;
blood_N = mkN "d'm" ;
bone_N = mkN "!Tnt" ;
breast_N = mkN "T&t" ;
cloud_N = mkN "d'm'n!" ;
day_N = mkN "q'n" ;
dust_N = mkN "!b&w!r!" ;
ear_N = mkN "j/r/" ;
earth_N = mkN "m'r%t" feminine ;
egg_N = mkN "(nq&l!l" ;
eye_N = mkN "!yn" ;
fat_N = mkN "w'fr!m" ;
feather_N = mkN "l!b!" ;
fingernail_N = mkN "Tfr" ;
fire_N = mkN "(?t" ;
flower_N = mkN "!b'b!" ;
fog_N = mkN "Cg!g";
foot_N = mkN "(gr" ; -- not properly covered need to be discussed
forest_N = mkN "C!k!" ;
grass_N = mkN "?r" ;
guts_N = mkN "" ;
hair_N = mkN "S'g&r" ;
hand_N = mkN "(j" ;
head_N = mkN "Cnql!t" ;
heart_N = mkN "lb" ;
horn_N = mkN "q'nd" ;
husband_N = mkN "b!l" ;
ice_N = mkN "b'r'd/";
knee_N = mkN "g&lb't" ;
leaf_N = mkN "qT'l" ;
leg_N = mkN "(gr" ;
liver_N = mkN "g&b't" ;
louse_N = mkN "qm!l" feminine ;
mouth_N = mkN "!f" ;
name_N = mkN "?m" ;
neck_N = mkN "!ng't";
night_N = mkN "mxt";
nose_N = mkN "!fnC!" ;
person_N = mkN "?w" ;
rain_N = mkN "zn!b";
road_N = mkN "m'ng'd" ;
root_N = mkN "?r" ;
rope_N = mkN "g'm'd" ;
salt_N = mkN "C'w" ;
sand_N = mkN "!x'w!" ;
seed_N = mkN "z'r" ;
skin_N = mkN "q/d!" ;
sky_N = mkN "?m!y" ;
smoke_N = mkN "C?"; -- singular masc nouns ending with aN,wN yet to be implemented
snow_N = mkN "b'r'd/";
stick_N = mkN "b'tr" ;
tail_N = mkN "Cr!" ;
tongue_N = mkN "ml!?";
tooth_N = mkN "Tr?";
wife_N = mkN "m#?t" feminine ;
wind_N = mkN "n'f!?" ;
wing_N = mkN "knf" ;
worm_N = mkN "tl" feminine;
year_N = mkN "!m't" ;
blow_V = mkV2bl "??" ;--blow_V3 = mkbela "??" ;
breathe_V = mkV4dbdb "????";--breathe_V = compoundV "????" (mkV "????" ) ;
--burn_V = mkV "????" ;
-- dig_V = mkV "???" ;
fall_V = mkV3gdl "???" ;
float_V = mkV3gdl "???" ; -- test!! WRONG
flow_V = mkV3gdl"???" ;
fly_V = mkV3gdl "???" ;
freeze_V = mkV4dbdb "????";
give_V3 = mkV2sT "??";--give_V3 = mkV3 (mkV "????") "??" "";
laugh_V = mkV2yz "??" ;
-- lie_N = mkN "????" masculine ;
lie_V = mkV2wN "??" ;
--play_V = mkV "??????" ;
sew_V = mkV2bl "??" ;
sing_V = mkV3mls"???" ;
--sit_V = mkV "??????" ;
--smell_V = mkV "??????" ;
spit_V = mkV2bl "??" ;
stand_V = mkV2nr "??";--stand_V = compoundV "????" (mkV "????" );
--swell_V = mkV "???" ;
swim_V = mkV2wN "??" ;
--think_V = mkV2sT "??" ;
turn_V = mkV3tTb "???";
--vomit_V = compoundV "????" (mkV "????") ;
bite_V2 = mkV3gdl "???";--bite_V2 = mkV2 (mkV "?????") ;
count_V2 = mkV3qTr"???";
cut_V2 = mkV3qTr"???";
fear_V2 = mkV2bl "??";--fear_V2 = mkV2 (mkV "????") ;
fight_V2 = mkV4dbdb "????";--fight_V2 = mkV2 (mkV "????") ;
hit_V2 = mkV2bl "??";--hit_V2 = mkV2 (compoundV "?????" (mkV "?????" ));
hold_V2 = mkV2yz "??";--hold_V2 = mkV2 (mkV "?????") ;
--hunt_V2 = mkV2 (compoundV "????" do_V2);
kill_V2 = mkV3gdl "???";--kill_V2 = mkV2 (compoundV "???" (mkV "?????" )) ;
pull_V2 = mkV2yz "??";--pull_V2 = mkV2 (mkV "??????");
push_V2 = mkV2bl "??";--push_V2 = mkV2 (mkV "???????") "??" ;
rub_V2 = mkV3gdl "???";--rub_V2 = mkV2 (mkV "?????") ;
scratch_V2 = mkV2yz "??";--scratch_V2 = mkV2 (mkV "??????") "??" ;
split_V2 = mkV3gdl "???";--split_V2 = mkV2 (mkV "?????") "??" ;
squeeze_V2 = mkV3gdl "???";
--squeeze_V2 = dirV2 (regV "???????") ;
stab_V2 = mkV2bl "??";--stab_V2 = dirV2 (regDuplV "????") ;
suck_V2 = mkV4dbdb "????";--suck_V2 = mkV2 (mkV "?????") ;
throw_V2 = mkV4dbdb "????";--throw_V2 = mkV2 (mkV "???????") ;
--tie_V2 = mkV2 (mkV "???????") ;
--wash_V2 = mkV2 (mkV "?????") ;
wipe_V2 = mkV3gdl "???";--wipe_V2 = mkV2 (compoundV "???" (mkV "????" ));
other_A = mkA "l%l!" ;
grammar_N = mkN "?w!?w" ;
language_N = mkN "?n?" ;
rule_N = mkN "hg" ;
---- added 4/6/2007
john_PN = mkPN "y/h!n?" Masc ;
question_N = mkN "Ty!q%" ;
ready_A = mkA "zgj&" ;
reason_N = mkN "m?l%" ;
today_Adv = mkAdv "z!r%" ;
--uncertain_A = mkA "y!lt'r'g!g'T'";
------------------------
}

View File

@@ -0,0 +1,378 @@
--# -path=.:prelude
-- (c) 2010 Markos KG
-- Licensed under LGPL
concrete LexiconAmh of Lexicon = CatAmh ** open
ParadigmsAmh, ResAmh, Prelude in {
--
flags
optimize=values ;
coding = utf8;
lin
airplane_N = mkN "አውሮፕላን" ;
answer_V2 = mkV2 (mkV3mls"mls") (mkPrep "" "" True);--answer_V2S = mkV2 (compoundV "جواب" (mkV "دینا")) ;
apartment_N = mkN "አፓርታማ" ;
apple_N = mkN "በለስ" ;
art_N = mkN "ጥበብ" ;
ask_V2Q = mkV3mls "Tyq";--ask_V2Q = mkV2 (mkV "پوچھنا") ;
baby_N = mkN "ህጻን" ;
bad_A = mkA "መጥፎ" ;
bank_N = mkN "ባንክ" ;
beautiful_A = mkA "ቆንጆ" ;
become_VA = mkV2nr"hn";--become_VA = mkV "بننا";
beer_N = mkN "ቢራ" ;
beg_V2V = mkV3mls "lmn";-- beg_V2V = mkV2V (compoundV "التجا" (mkV "كرنا")) "سے" "كہ" False;
big_A = mkA "ትልቅ" ;
bike_N = mkN "ቢስክሌት";
bird_N = mkN "ወፍ" feminine ;
black_A = mkA "ጥቁር" ;
bless_V = mkV3brk "brk";
blue_A = mkA "ሰማያዊ" ;
boat_N = mkN "ጀልባ" feminine ;
book_N = mkN "መጽሃፍ" ;
boot_N = mkN "ቦቲ" ;
boss_N = mkN "አለቃ" ;
boy_N = mkN "ልጅ" ;
bread_N = mkN "ዻቦ" ;
break_V2 = mkV2 (mkV3gdl"sbr") (mkPrep "" "" True);
broad_A = mkA "ሰፊ" ;
brother_N = mkN "ወንድም";
brown_A = mkA "ቡኒ" ;
butter_N = mkN "ቅቤ" ;
buy_V2 = mkV2 (mkV2bl "gz")(mkPrep "ከ" "" True);--buy_V2 = mkV2 (mkV "خریدنا");
camera_N = mkN "ካሜራ" ;
cap_N = mkN "ባርኔጣ" ;
car_N = mkN "መኪና" ;
carpet_N = mkN "ምንጣፍ" ;
cat_N = mkN "ዽመት" feminine ;
ceiling_N = mkN "ጣራ";
chair_N = mkN "ወንበር" ;
cheese_N = mkN "አይብ";
child_N = mkN "ህጻን" ;
church_N = mkN (mkN "ቤተ") (mkN "ክርስትያን" feminine);
city_N = mkN "ከተማ" feminine ;
clean_A = mkA "ንጹህ" ;
clever_A = mkA "ብልህ" ;
close_V2 = mkV2 (mkV2bl "zg") (mkPrep "" "" True);--close_V2 = mkV2 (compoundV "بند" do_V2);
coat_N = mkN "ኮት" ;
cold_A = mkA "ቀዝቃዛ" ;
come_V = mkV2bl "mT" ;
computer_N = mkN "ኮምፒውተር" ;
country_N = mkN "ሃገር" feminine ;
cousin_N = mkN( mkN "አክስት") (mkN "ልጅ"); --cousin_N = mkCmpdNoun "چچا" (mkN "زاد") ; -- a compund noun made of two nouns
cow_N = mkN "ላም" feminine ;
die_V = mkV2nr "mt" ;
dirty_A = mkA "ቆሻሻ" ;
-- distance_N3 = mkN3 (mkN (mkN "ያለው") (mkN "ርቀት")) (mkPrep "ከ" "" True) (mkPrep "ወደ" "" True);
doctor_N = mkN "ሃኪም" ;
dog_N = mkN "ውሻ" ;
door_N = mkN "በር" ;
drink_V2 = mkV2 (mkV2bl "TT") (mkPrep "" "" True);
-- easy_A2V = mkA "ቀላል";
eat_V2 = mkV2 (mkV2bl "bl" ) (mkPrep "" "" True);
empty_A = mkA "ባዶ" ;
enemy_N = mkN "ጠላት" ;
factory_N = mkN "ፋብሪካ" ;
father_N2 = mkN2 (mkN "አባት") (mkPrep "የ" "" True) ;
fear_VS = mkV2bl "fr";
find_V2 = mkV2( mkV3asr "'gN" ) (mkPrep "" "" True);
fish_N = mkN "አሳ" ;
floor_N = mkN "ወለል" ;
forget_V2 = mkV2 (mkV2bl"rs") (mkPrep "" "" True);--forget_V2 = mkV2 (mkV "بھولنا") ;
fridge_N = mkN "ማቀዝቀዣ" ;
friend_N = mkN "ጓደኛ";
fruit_N = mkN "ፍራፍሬ" ;
-- fun_AV = mkAV (regA "فuن") ;
garden_N = mkN "ማሳ" ;
girl_N = mkN "ልጃገረድ" feminine ;
glove_N = mkN "ጉዋንት" ;
gold_N = mkN "ወርቅ" ;
good_A = mkA "ጥሩ" ;
--go_V = mkV "جانا" ;
green_A = mkA "አረንጉኣዴ" ;
harbour_N = mkN "ወደብ" ; --harbour_N = mkCmpdNoun "بندر" (mkN "گاہ") ;
hate_V2 = mkV2 (mkV2bl "Tl") (mkPrep "" "" True);--hate_V2 = mkV2 (compoundV "نفرت" do_V2) ;
hat_N = mkN "ባርኔጣ" ;
-- have_V2 = mkV2 (mkV2sT "!l") (mkPrep "" "" True);
hear_V2 = mkV2 (mkV2bl "sm") (mkPrep "" "" True);--hear_V2 = mkV2 (mkV "سننا") ;
hill_N = mkN "አቀበት" ;
--hope_VS = (compoundV "امید" do_V2); --
horse_N = mkN "ፈረስ" ;
hot_A = mkA "ትኩስ" ;
house_N = mkN "ቤት" ;
important_A = mkA "ጠቃሚ" ;
industry_N = mkN "ኢንዱስትሪ" ;
iron_N = mkN "ብረት" ;
king_N = mkN "ንጉስ" ;
know_V2 = mkV2 (mkV3asr "wq") (mkPrep "" "" True);
--know_VS = mkV "جاننا";
lake_N = mkN "ሃይቅ" ;
lamp_N = mkN "ኩራዝ" ;
--learn_V2 = mkV2 (mkV3brk "tmr") (mkPrep "" "" True); --learn_V2 = mkV2 (mkV "سیكھنا") ;
leather_N = mkN "ቆዳ" ;
leave_V2 = mkV2 (mkV3gdl "lqq") (mkPrep "" "" True); --leave_V2 = mkV2 (mkV "جانا") ;
like_V2 = mkV2 (mkV3gdl "wdd" ) (mkPrep "" "" True);--like_V2 = mkV2 (compoundV "پسند" do_V2);
listen_V2 = mkV2 (mkV3brk "dmT") (mkPrep "" "" True);
live_V = mkV2nr "nr" ; ---- touch
long_A = mkA "ረጅም" ;
lose_V2 = mkV2 (mkV2bl "Tf" ) (mkPrep "" "" True);--lose_V2 = mkV2 (compoundV "كھو" do_V2) ;
love_N = mkN "ፍቅር" ;
love_V2 = mkV2 (mkV3gdl "wdd") (mkPrep "" "" True);
man_N = mkN "ሰው" ; -- not correct according to rules should be discussed
--married_A2 = mkA "شادی كرنا" "سے" ;
meat_N = mkN "ስጋ" ;
milk_N = mkN "ወተት" ;
moon_N = mkN "ጨረቃ" feminine ;
mother_N = mkN "እናት" feminine; -- not covered need to be discussed
mountain_N = mkN "ተራራ" ;
music_N = mkN "ሙዚቃ" feminine ;
narrow_A = mkA "ጠባብ" ;
new_A = mkA "አዲስ" ;
newspaper_N = mkN "ጋዜጣ" ;
oil_N = mkN "ዘይት" ;
old_A = mkA "አሮጌ" ;
open_V2 = mkV2 (mkV3gdl "kft") (mkPrep "" "" True);--open_V2 = mkV2 (mkV "كھولنا") ;
paint_V2 = mkV2 (mkV2bl "qb") (mkPrep "" "" True);--paint_V2A = mkV2 (compoundV "رنگ" do_V2) ;
paper_N = mkN "ወረቀት" ;
paris_PN = mkPN "ፓሪስ" Fem ;
peace_N = mkN "ሰላም";
pen_N = mkN "ብእር" ;
planet_N = mkN "ፕላኔት" ;
plastic_N = mkN "ፕላስቲክ" ;
play_V2 = mkV2 (mkV4dbdb "Cwt") (mkPrep "" "" True); ----
policeman_N = mkN "ፖሊስ" ;
priest_N = (mkN "ቄስ") ;
-- probable_AS = mkAS (regA "پرoبابلع") ;
queen_N = mkN "ንግስት" feminine ;
radio_N = mkN "ራዲዮ" ;
--rain_V0 = compoundV "بارش" (mkV "ہونا" ) ;
--read_V2 = mkV2 (mkV "پڑھنا");
red_A = mkA "ቀይ" ;
religion_N = mkN "እምነት" ;
restaurant_N = mkN (mkN "ምግብ") (mkN "ቤት");
river_N = mkN "ወንዝ";
rock_N = mkN "አለት" ;
roof_N = mkN "ጣርያ";
rubber_N = mkN "ጎማ" ;
run_V = mkV2nr "rT" ;
say_VS = mkV2sT "'l";--say_VS = mkV "كہنا" ;
school_N = mkN (mkN "ትምህርት") (mkN "ቤት") ; -- will
science_N = mkN "ሳይንስ" ;
sea_N = mkN "ባህር" ;
--seek_V2 = mkV2 () ;
see_V2 = mkV2 (mkV2sT "äy")(mkPrep "" "" True);
sell_V3 = mkV3 (mkV2sT "xT" ) (mkPrep "ለ" "" True) (mkPrep "" "" True);
send_V3 = mkV3 (mkV2yz "lk" ) (mkPrep "ለ" "" True) (mkPrep "" "" True);--send_V3 = mkV2yz "lk";
sheep_N = mkN "በግ";
ship_N = mkN "መርከብ" feminine ;
shirt_N = mkN "ሸሚዝ";
shoe_N = mkN "ጫማ" ;
shop_N = mkN "ሱቅ";
short_A = mkA "አጭር" ;
silver_N = mkN "ብር" ;
sister_N = mkN "እህት";
sleep_V = mkV2bl "tN" ;
small_A = mkA "ትንሽ" ;
snake_N = mkN "እባብ" ;
sock_N = mkN "ካልሲ" ;
speak_V2 = mkV2 ( mkV3brk ("ngr"))(mkPrep "" "" True);
star_N = mkN "ኮከብ" feminine ;
steel_N = mkN "ብረት" ;
stone_N = mkN "ድንጋይ" ;
stove_N = mkN "ምድጃ" ;
student_N =mkN "ተማሪ" ;
stupid_A = mkA "ባለጌ" ;
sun_N = mkN "ጸሃይ" feminine ;
switch8off_V2 = mkV2 (mkV2bl "Tf" )(mkPrep "" "" True) ;--switch8off_V2 = mkV2 (mkV "چلانا") ; -- ADRAGI
switch8on_V2 = mkV2 (mkV2bl "br")(mkPrep "" "" True) ;--switch8on_V2 = mkV2 (compoundV "بند" do_V2) ; -- ADRAGI -- abra
table_N = mkN "ጠረጴዛ";
talk_V3 = mkV3 (mkV3asr "'wr" ) (mkPrep "ለ" "" True) (mkPrep "" "" True);
teacher_N = mkN "አስተማሪ" ;
--teach_V2 = mkV2 (mkV "پڑھنا") ;
television_N = mkN "ቴሌቪዥን" ;
thick_A = mkA "ወፍራም" ;
thin_A = mkA "ቀጭን" ;
train_N = mkN "ባቡር" ;
--travel_V = mkV "gwz" ;
tree_N = mkN "ዛፍ";
ugly_A = mkA "ፉንጋ" ;
understand_V2 = mkV2 (mkV2bl"trd")(mkPrep "" "" True) ;
university_N = mkN "ዩንቨርሲቲ" ;
village_N = mkN "መንደር" feminine ;
wait_V2 = mkV2 (mkV3mls "Tbq")(mkPrep "" "" True) ;--wait_V2 = mkV2 (compoundV "انتظار" do_V2) ;
walk_V = mkV3tTb "rmd" ;
warm_A = mkA "ሙቅ" ;
war_N = mkN "ጦርነት" ;
watch_V2 = mkV2 (mkV4dbdb ("mlkt"))(mkPrep "" "" True) ;
water_N = mkN "ውሃ" feminine ; -- not covered masculine ending with y
white_A = mkA "ነጭ" ;
window_N = mkN "መስኮት" ;
wine_N = mkN "ወይን" ;
want_V = mkV3mls"flg";
--win_V2 = mkV2 (mkV "جیتنا") ;
woman_N = mkN "ሴት" feminine;
--wonder_VQ = compoundV "حعران" (mkV "ہونا") ;
wood_N = mkN "እንጨት" ;
write_V2 = mkV2 (mkV3gdl "ktb")(mkPrep "" "" True) ;--write_V2 = mkV2 (mkV "لكھنا") ;
yellow_A = mkA "ቢጫ" ;
young_A = mkA "ወጣት" ;
do_V2 = mkV2 (mkV2bl "sr")(mkPrep "" "" True) ;
now_Adv = ss "አሁን" ;
--already_Adv = mkAdv "ی" ;
song_N = mkN "ዘፈን" ;
add_V3 = mkV3(mkV3mls "Cmr" ) (mkPrep "" "" True) (mkPrep "" "" True);--add_V3 = mkV3 (compoundV "اضافہ" do_V2) "" "" ;
number_N = mkN "ቁጥር" ;
--put_V2 = mkV2 (mkV "ڈالنا") ;
stop_V = mkV2nr "qm" ; -- some times A - qm ( later)
jump_V = mkV3gdl "zll" ;
left_Ord = mkA"ግራ" ;
right_Ord =mkA"ቀኝ" ;
far_Adv = ss "ሩቅ" ;
correct_A = mkA "ትክክል" ;
dry_A = mkA "ደረቅ" ;
dull_A = mkA "ዱልዱም" ;
full_A = mkA "ሙሉ" ;
heavy_A = mkA "ከባድ" ;
near_A = mkA "ቅርብ" ;
rotten_A = mkA "ግም" ;
round_A = mkA "ክብ" ;
sharp_A = mkA "ሹል" ;
smooth_A = mkA "ለስላሳ" ;
straight_A = mkA "ቀጥታ" ;
wet_A = mkA "ርጥብ" ; ----
wide_A = mkA "ሰፊ" ;
animal_N = mkN "እንስሳ" ;
ashes_N = mkN "አመድ" ;
back_N = mkN "ጀርባ" ;
bark_N = mkN "ቅርፊት" ;
belly_N = mkN "ሆድ" ;
blood_N = mkN "ደም" ;
bone_N = mkN "አጥንት" ;
breast_N = mkN "ጡት" ;
cloud_N = mkN "ደመና" ;
day_N = mkN "ቀን" ;
dust_N = mkN "አቡዋራ" ;
ear_N = mkN "ጆሮ" ;
earth_N = mkN "መሬት" feminine ;
egg_N = mkN "እንቁላል" ;
eye_N = mkN "አይን" ;
fat_N = mkN "ወፍራም" ;
feather_N = mkN "ላባ" ;
fingernail_N = mkN "ጥፍር" ;
fire_N = mkN "እሳት" ;
flower_N = mkN "አበባ" ;
fog_N = mkN "ጭጋግ";
foot_N = mkN "እግር" ; -- not properly covered need to be discussed
forest_N = mkN "ጫካ" ;
grass_N = mkN "ሳር" ;
guts_N = mkN "" ;
hair_N = mkN "ጸጉር" ;
hand_N = mkN "እጅ" ;
head_N = mkN "ጭንቅላት" ;
heart_N = mkN "ልብ" ;
horn_N = mkN "ቀንድ" ;
husband_N = mkN "ባል" ;
ice_N = mkN "በረዶ";
knee_N = mkN "ጉልበት" ;
leaf_N = mkN "ቅጠል" ;
leg_N = mkN "እግር" ;
liver_N = mkN "ጉበት" ;
louse_N = mkN "ቅማል" feminine ;
mouth_N = mkN "አፍ" ;
name_N = mkN "ስም" ;
neck_N = mkN "አንገት";
night_N = mkN "ምሽት";
nose_N = mkN "አፍንጫ" ;
person_N = mkN "ሰው" ;
rain_N = mkN "ዝናብ";
road_N = mkN "መንገድ" ;
root_N = mkN "ስር" ;
rope_N = mkN "ገመድ" ;
salt_N = mkN "ጨው" ;
sand_N = mkN "አሸዋ" ;
seed_N = mkN "ዘር" ;
skin_N = mkN "ቆዳ" ;
sky_N = mkN "ሰማይ" ;
smoke_N = mkN "ጭስ"; -- singular masc nouns ending with aN,wN yet to be implemented
snow_N = mkN "በረዶ";
stick_N = mkN "በትር" ;
tail_N = mkN "ጭራ" ;
tongue_N = mkN "ምላስ";
tooth_N = mkN "ጥርስ";
wife_N = mkN "ሚስት" feminine ;
wind_N = mkN "ነፋስ" ;
wing_N = mkN "ክንፍ" ;
worm_N = mkN "ትል" feminine;
year_N = mkN "አመት" ;
blow_V = mkV2bl "nf" ;--blow_V3 = mkbela "nf" ;
breathe_V = mkV4dbdb "tnfs";--breathe_V = compoundV "سانس" (mkV "لینا" ) ;
burn_V = mkV3brk "qTl" ;
dig_V = mkV3qTr "qfr" ;
fall_V = mkV3gdl "wdq" ;
float_V = mkV3gdl "kbr" ; -- test!! WRONG
flow_V = mkV3gdl"fss" ;
fly_V = mkV3gdl "brr" ;
freeze_V = mkV4dbdb "qzqz";
give_V3 = mkV3 (mkV2sT "sT" ) (mkPrep "ለ" "" True) (mkPrep "" "" True);--give_V3 = mkV3 (mkV "دینا") "كو" "";
laugh_V = mkV2yz "sq" ;
-- lie_N = mkN "ሃሰት" ;
lie_V = mkV2wN "wx" ;
play_V = mkV3brk "Cwt" ;
sew_V = mkV2bl "sf" ;
sing_V = mkV3mls"zmr" ;
sit_V = mkV3gdl "qmT" ;
smell_V = mkV3gdl "xtt" ;
spit_V = mkV2bl "tf" ;
stand_V = mkV2nr "qm";--stand_V = compoundV "كھڑے" (mkV "ہونا" );
--swell_V = mkV "äbT" ;
swim_V = mkV2wN "wN" ;
think_V = mkV3asr "'sb" ;
turn_V = mkV3tTb "tTf";
--vomit_V = compoundV "التی" (mkV "كرنا") ;
bite_V2 = mkV2 (mkV3gdl "nks") (mkPrep "" "" True);--bite_V2 = mkV2 (mkV "كاتنا") ;
count_V2 = mkV2 (mkV3qTr"qTr") (mkPrep "" "" True);
cut_V2 = mkV2 (mkV3qTr"qrT") (mkPrep "" "" True);
fear_V2 = mkV2 (mkV2bl "fr") (mkPrep "" "" True);--fear_V2 = mkV2 (mkV "ڈرنا") ;
fight_V2 = mkV2 (mkV4dbdb "dbdb") (mkPrep "" "" True);--fight_V2 = mkV2 (mkV "لڑنا") ;
hit_V2 = mkV2 (mkV2sT "gC") (mkPrep "" "" True);--hit_V2 = mkV2 (compoundV "تھوكر" (mkV "مارنا" ));
hold_V2 = mkV2 (mkV2yz "yz") (mkPrep "" "" True);--hold_V2 = mkV2 (mkV "پكڑنا") ;
hunt_V2 = mkV2 (mkV3asr "'dn" )(mkPrep "" "" True);
kill_V2 = mkV2 (mkV3gdl "gdl") (mkPrep "" "" True);--kill_V2 = mkV2 (compoundV "مار" (mkV "ڈالنا" )) ;
pull_V2 = mkV2 (mkV2yz "sb") (mkPrep "" "" True);--pull_V2 = mkV2 (mkV "كھنچنا");
push_V2 = mkV2 (mkV2bl "gf") (mkPrep "" "" True);--push_V2 = mkV2 (mkV "دھكیلنا") "كو" ;
rub_V2 = mkV2 (mkV3gdl "Trg") (mkPrep "" "" True);--rub_V2 = mkV2 (mkV "رگڑنا") ;
scratch_V2 = mkV2 (mkV2yz "fq") (mkPrep "" "" True);--scratch_V2 = mkV2 (mkV "كھرچنا") "كو" ;
split_V2 = mkV2 (mkV3gdl "kfl") (mkPrep "" "" True);--split_V2 = mkV2 (mkV "بانتا") "كو" ;
squeeze_V2 = mkV2 (mkV3gdl "Cmq") (mkPrep "" "" True);
stab_V2 = mkV2 (mkV2bl "wg") (mkPrep "" "" True);--stab_V2 = dirV2 (regDuplV "ستاب") ;
suck_V2 = mkV2 (mkV4dbdb "mgmg") (mkPrep "" "" True);--suck_V2 = mkV2 (mkV "چوسنا") ;
throw_V2 = mkV2 (mkV4dbdb "wrwr") (mkPrep "" "" True);--throw_V2 = mkV2 (mkV "پھینكنا") ;
tie_V2 = mkV2 (mkV3asr "'sr")(mkPrep "" "" True);
wash_V2 = mkV2 (mkV3asr "'Tb")(mkPrep "" "" True);
wipe_V2 = mkV2 (mkV3gdl "Trg") (mkPrep "" "" True);--wipe_V2 = mkV2 (compoundV "صاف" (mkV "كرنا" ));
other_A = mkA "ሌላ" ;
grammar_N = mkN "ስዋሰው" ;
language_N = mkN "ቋንቋ" ;
rule_N = mkN "ህግ" ;
---- added 4/6/2007
john_PN = mkPN "ዮሃንስ" Masc ;
question_N = mkN "ጥያቄ" ;
ready_A = mkA "ዝግጁ" ;
reason_N = mkN "ምክንያት" ;
today_Adv = ss "ዛሬ" ;
--uncertain_A = mkA "ያልተረጋገጠ";
}

View File

@@ -0,0 +1,57 @@
--# -path=alltenses
concrete LexiconMlt of Lexicon = open ResMlt, Prelude in {
--CatMlt **
--open ParadigmsMlt, ResMlt, Prelude in {
flags optimize=values ; coding=utf8 ;
lin
{- ===== VERBS ===== -}
-- cut_V2 = mkVerb "qata'" "aqta'" "aqtgħu" ;
-- write_V2 = mkVerb "kiteb" ;
-- break_V2 = mkVerb "kiser" ;
-- find_V2 = mkVerb "ħareġ" ;
-- throw_V2 = mkVerb "tefa'" ;
-- hear_V2 = mkVerb "sama'" "isma'" "isimgħu" ;
-- fear_V2 = mkVerb "beża'" ;
-- fear_V2 = mkVerb "ħareġ" ;
-- pray_V = mkVerb "talab" "itlob" "itolbu"
-- understand_V2 = mkVerb "fehem" ;
-- pull_V2 = mkVerb "ġibed" ;
--walk_V = mkVerb "mexa'" ;
die_V = mkVerb "qarmeċ" ;
{- ===== NOUNS ===== -}
airplane_N = mkNoun "ajruplan" Masc ;
apple_N = mkNoun "tuffieħa" Fem ;
-- oper
-- Define different possible patterns
{-
pattern_AA : Pattern = { v1 = "a" ; v2 = "a" } ; -- eg QASAM
pattern_AE : Pattern = { v1 = "a" ; v2 = "e" } ; -- eg QABEŻ
pattern_EE : Pattern = { v1 = "e" ; v2 = "e" } ; -- eg QERED
pattern_EA : Pattern = { v1 = "e" ; v2 = "a" } ; -- eg SERAQ
pattern_IE : Pattern = { v1 = "i" ; v2 = "e" } ; -- eg KITEB
pattern_OO : Pattern = { v1 = "o" ; v2 = "o" } ; -- eg QOROB
pattern_OA : Pattern = { v1 = "o" ; v2 = "o" } ; -- GĦOLA, GĦOXA, ĦOLA (only!)
-}
--Define some roots
{-
root_HTF : Root = { K = "ħ" ; T = "t" ; B = "f" ; L=[] } ; -- pattern: AA
root_HRG : Root = { K = "ħ" ; T = "r" ; B = "ġ" ; L=[] } ; -- pattern: AE
root_QRD : Root = { K = "q" ; T = "r" ; B = "d" ; L=[] } ; -- pattern: EE
root_SRQ : Root = { K = "s" ; T = "r" ; B = "q" ; L=[] } ; -- pattern: EA
root_KTB : Root = { K = "k" ; T = "t" ; B = "b" ; L=[] } ; -- pattern: IE
root_QRB : Root = { K = "q" ; T = "r" ; B = "b" ; L=[] } ; -- pattern: oo
root_GMGM : Root = { K = "g" ; T = "m" ; B = "g" ; L = "m" } ;
root_MQDR : Root = { K = "m" ; T = "q" ; B = "d" ; L = "r" } ;
-}
} ;

View File

@@ -0,0 +1,81 @@
resource MorphoAmh = open Prelude,Predef in {
flags optimize = all ;--noexpand;
coding=utf8 ;
oper
-------------------------------------------------------------- Helps to regulate the use of endings for both nouns and adjectives: changes---------------------------------------------------------------
{--("ል"|"ሕ"|"ም"|"ሥ"|"ር"|"ስ"|"ሽ"|"ቅ"|"ብ"|"ቭ"|"ት"|"ች"|"ን"|"ኝ"|"እ"|"ክ"|"ው"|"ዝ"|"ዥ"|"ይ"|"ድ"|"ጅ"|"ግ"|"ጥ"|"ጭ"|"ጵ"|"ጽ"|"ፍ"|"ፕ") --}
-- Number
replaceLastLet6_7 : Str -> Str = \c ->
let y = last (c) in
case c of { "ህ" => "ሆች" ;
"ል" => "ሎች" ;
"ሕ" => "ሖች" ;
"ም" => "ሞች" ;
"ሥ" => "ሦች" ;
"ር" => "ሮች" ;
"ስ" => "ሶች" ;
"ሽ" => "ሾች" ;
"ቅ" => "ቆች" ;
"ብ" => "ቦች" ;
"ቭ" => "ቮች" ;
"ት" => "ቶች" ;
"ች" => "ቾች" ;
"ን" => "ኖች" ;
"ኝ" => "ኞች" ;
"እ" => "ኦች" ;
"ክ" => "ኮች" ;
"ው" => "ዎች" ;
"ዝ" => "ዞች" ;
"ዥ" => "ዦች" ;
"ይ" => "ዮች" ;
"ድ" => "ዶች" ;
"ጅ" => "ጆች" ;
"ግ" => "ጎች" ;
"ጥ" => "ጦች" ;
"ጭ" => "ጮች" ;
"ጵ" => "ጶች" ;
"ጽ" => "ጾች" ;
"ፍ" => "ፎች" ;
"ፕ" => "ፖች" ;
_ => y+"ዎች"
} ;
-- Species / Masculine
replaceLastLet6_2_M : Str -> Str = \c ->
let y = last (c) in
case y of { "ህ" => "ሁ" ; "ል" => "ሉ" ; "ሕ" => "ሁ" ; "ም" => "ሙ" ; "ሥ" => "ሱ" ; "ር" => "ሩ" ; "ስ" => "ሱ" ; "ሽ" => "ሹ" ;
"ቅ" => "ቁ" ; "ብ" => "ቡ" ; "ቭ" => "ቩ" ; "ት" => "ቱ" ; "ች" => "ቹ" ; "ን" => "ኑ" ; "ኝ" => "ኙ" ; "እ" => "ኡ" ; "ክ" => "ኩ" ;
"ው" => "ዉ" ; "ዝ" => "ዙ" ; "ዥ" => "ዡ" ; "ይ" => "ዩ" ; "ድ" => "ዱ" ; "ጅ" => "ጁ" ; "ግ" => "ጉ" ; "ጥ" => "ጡ" ; "ጭ" => "ጩ" ;
"ጵ" => "ጱ" ; "ጽ" => "ጹ" ; "ፍ" => "ፉ" ; "ፕ" => "ፑ" ; _ => y+"ዉ"} ;
-- Species / Feminine
replaceLastLet6_2_F: Str -> Str = \c ->
let y = last (c) in
case c of { "ህ" => "ኋ" ; "ል" => "ሏ" ; "ሕ" => "ኋ" ; "ም" => "ሟ" ; "ሥ" => "ሷ" ; "ር" => "ሯ" ; "ስ" => "ሷ" ; "ሽ" => "ሿ" ;
"ቅ" => "ቋ" ; "ብ" => "ቧ" ; "ቭ" => "ቯ" ; "ት" => "ቷ" ; "ች" => "ቿ" ; "ን" => "ኗ" ; "ኝ" => "ኟ" ; "ክ" => "ኳ" ;
"ዝ" => "ዟ" ; "ዥ" => "ዧ" ; "ድ" => "ዷ" ; "ጅ" => "ጇ" ; "ግ" => "ጓ" ; "ጥ" => "ጧ" ; "ጭ" => "ጩ" ;
"ጵ" => "ጷ" ; "ጽ" => "ጿ" ; "ፍ" => "ፏ" ; "ፕ" => "ፗ" ; _ => y+"ዋ"
} ;
-- pallatalization
pallatalize : Str -> Str = \c->
case c of {
"d" => "j";
"t" => "c";
"T" => "C";
"n" => "N";
"l" => "y";
"s" => "x";
"z" => "Z";
"S" => "C";
_ => c
} ;
}

201
lib/src/amharic/NounAmh.gf Normal file
View File

@@ -0,0 +1,201 @@
--# -path=.:../Romance:../common:../abstract:../common:prelude
concrete NounAmh of Noun = CatAmh ** open ResAmh,ParamX, Prelude in {
flags optimize=noexpand ;
flags coding = utf8;
lin
DetCN det cn =
{
s = \\ c => case c of
{
Acc => det.s ! cn.g ! Nom ++ cn.s ! det.n! det.d ! c ;
_ => det.s ! cn.g ! c ++ cn.s ! det.n! det.d ! Nom
};
a = {png = Per3 det.n cn.g; isPron = False}
};
--
UsePN pn = {
s = pn.s;
a = {png=Per3 Sg pn.g; isPron = False}
};
--
UsePron p = p ;
--
PredetNP pred np = {
s = \\c => case pred.isDecl of {
True => pred.s! c ++ np.s ! Nom ; -- amzaNaw temari, yeabzaNaw temari , lebzaNaw temari
False => np.s ! c ++ pred.s!c
};
a = np.a
} ;
-- FIX NEEDED! consider the case for number and gender later !!! --- arabic book table --- to solve affices
--Compound Participle : is formed by prefixing the relative pronoun yete : to the forms of the perfect mood -- there are three ways of building the participle in Amh
PPartNP np v2 =
{
s = \\c => "y'"++ (v2.s ! Perf!Pas! np.a.png) ++ np.s ! c;
a = np.a
} ;
DetNP det = {
s = \\_ => det.s!Masc!Nom;
a = { png = Per3 det.n Masc ; isPron = False}
};
AdvNP np adv = {
s = \\c => np.s ! c ++ adv.s;
a = np.a
};
DetQuantOrd quant num ord = {
s = \\g,c=> quant.s!num.n!g!c ++ num.s!quant.d!Nom ++ ord.s!g!num.n!quant.d!Nom;
d = Indef;
n = num.n;
isNum = True;
isPron = quant.isPron
} ;
DetQuant quant num = {
s = \\g,c =>quant.s!num.n!g!c ++ num.s!quant.d!c ;
d = quant.d;
n = num.n;
isNum = True;
isPron = quant.isPron
} ;
PossPron p = {
s = \\_,_,_ => p.s ! Gen;
d = Indef;
isNum = False;
isPron = True } ;
NumCard n = {s = \\s,c => n.s!Masc!Sg!s!c ; n = Pl; hasCard = True} ;
NumDigits n = {s = n.s ! NCard } ;
NumNumeral numeral = {s = numeral.s ! NCard} ;
OrdDigits n = {s = n.s ! NOrd} ;
OrdNumeral numeral = {s = numeral.s ! NOrd} ;
NumSg = {s = \\s,c => []; n = Sg ; hasCard = False} ;
NumPl = {s = \\s,c => []; n = Pl ; hasCard = False} ;
-- AdNum adn num = {
-- s = \\g,d,c => adn.s ++ num.s ! g ! d ! c ;
-- n = num.n } ;
--
OrdSuperl a = {
s = \\g,n,s,c => a.s!g!n!s!c ;
};
DefArt = {
s = \\_,_,_ => [];
d = Def ;
isNum,isPron = False
} ;
IndefArt = {
s = \\n,g,_ => case <n,g> of {
<Sg,Masc> =>"አንድ" ++ [];
<Sg,Fem> =>"አንዲት" ++ [];
<Pl,_> => [] };
d = Indef ;
isNum,isPron = False
} ;
MassNP cn =
{s = \\_=> cn.s ! Sg ! Indef!Nom ;
a = { png = Per3 Sg cn.g; isPron = False } };
UseN n = n ;
--UseN n = n ** {adj = \\_,_,_ => []};
ComplN2 f x = {s = \\n,s,c => f.c2++ x.s ! c ++ f.s ! n !Indef! Nom ;
g = f.g } ;
ComplN3 f x = {s = \\n,s,c => f.c2 ++ x.s ! c ++ f.s ! n !Indef! Nom ;g = f.g; c2 = f.c3} ;
--<Sg> => f.c2 ++ x.s ! c++"ያለው" ++ f.s ! n !Indef! Nom ;
--<Pl> => f.c2 ++ x.s ! c ++"ያሉት"++ f.s ! n !Indef! Nom };
-- g = f.g; c2 = f.c3;
UseN2 n = n ;
UseN3 n = n ;
Use2N3 f = {
s = \\n,s,c => f.s ! n !Indef! Nom ;
g = f.g ;
c2 = f.c2
} ;
Use3N3 f = {
s = \\n,s,c => f.s ! n !Indef! Nom ;
g = f.g ;
c2 = f.c3
} ;
--TO DO!!
AdjCN ap cn = {
s = \\n,s,c =>
case c of
{
Acc => ap.s ! cn.g !n ! s !Nom++ cn.s ! n! Indef ! c ;
_ => ap.s ! cn.g !n ! s !c ++ cn.s ! n! Indef ! Nom
};
g = cn.g
} ;
-- -- RelCN cn rs = {s = \\n,c => cn.s ! n ! c ++ rs.s ! {n = n ; p = P3}} ;
AdvCN cn ad = {s = \\n,s,c => ad.s ++ cn.s ! n ! Indef ! c ;
g = cn.g} ;
-- --
-- -- SentCN cn sc = {s = \\n,c => cn.s ! n ! c ++ sc.s} ;
ApposCN cn np = {s = \\n,s,c => cn.s ! n !Indef! Nom ++ np.s ! c ;
g = cn.g} ;
}

View File

@@ -0,0 +1,121 @@
concrete NumeralAmh of Numeral = CatAmh ** open ResAmh,ParamX in {
flags coding = UTF8;
lincat
Digit = {s : DForm => CardOrd => Gender=>Number=>Species=>Case=> Str} ;
Sub10 = {s : DForm => CardOrd =>Gender=>Number=>Species=>Case=> Str } ;
Sub100 = {s : CardOrd => Gender=>Number=>Species=>Case=> Str } ;
Sub1000 = {s : CardOrd => Gender=>Number=>Species=>Case=> Str } ;
Sub1000000 = {s : CardOrd => Gender=>Number=>Species=>Case=> Str } ;
lin num x = x ;
lin n2 = mkNum "ሁለት" "ሃያ" "ሁለተኛ" ;
lin n3 = mkNum "ሶስት" "ሰላሳ" "ሶስተኛ";
lin n4 = mkNum "አራት" "አርባ" "አራተኛ";
lin n5 = mkNum "አምስት" "ሃምሳ" "አምስተኛ";
lin n6 = mkNum "ስድስት" "ስድሳ" "ስድስተኛ";
lin n7 = mkNum "ሰባት" "ሰባ" "ሰባተኛ";
lin n8 = mkNum "ስምንት" "ሰማንያ" "ስምንተኛ";
lin n9 = mkNum "ዘጠኝ" "ዘጠና" "ዘጠነኛ";
lin pot01 = mkNum "አንድ" "አስር" "አንደኛ" ;
lin pot0 d = d ;
lin pot110 = regCardOrd "አስር" ;
lin pot111 = regCardOrd "አስራንድ" ;
lin pot1to19 d = {s = \\o,g,n,s,c =>case c of {
Gen => ("የአስራ"++ d.s ! unit ! o!g!n! s!c);
Dat => ("ለአስራ"++ d.s ! unit ! o!g!n! s!c) ;
_ => ( "አስራ"++ d.s ! unit ! o!g!n!s!c) } } ;
lin pot0as1 n = {s = n.s ! unit};
lin pot1 d = {s = d.s ! ten} ;
lin pot1plus d e = {
s = \\o,g,n,s,c => case c of {
Gen|Dat => d.s ! ten ! NCard !Masc!Sg!Indef! c ++ e.s ! unit ! o!g!n!s! Nom ;
_ =>d.s ! ten ! NCard !Masc!Sg!Indef! Nom ++ e.s ! unit ! o!g!n!s! c
}} ;
lin pot1as2 n = n ;
lin pot2 d = {s = \\o,g,n,s,c => case c of {
Gen|Dat => d.s ! unit ! NCard !Masc!Sg!Indef! c ++ mkCard o "መቶ" !g!n! s!Nom;
_ => d.s ! unit ! NCard !Masc!Sg! Indef! Nom ++ mkCard o "መቶ" !g!n!s!c}} ;
lin pot2plus d e = { s = \\o,g,n,s,c => case c of {
Gen|Dat => d.s ! unit ! NCard !Masc!Sg!Indef! c ++ "መቶ" ++ e.s ! o!g!n!s! Nom ;
_ => d.s ! unit ! NCard!Masc!Sg! Indef! Nom ++ "መቶ" ++ e.s ! o!g!n!s! c
}} ;
lin pot2as3 n = n ;
lin pot3 n = {
s = \\o,g,n2,s,c => case c of {
Gen|Dat => n.s ! NCard !Masc!Sg! Indef! c ++ mkCard o "ሺህ" !g!n2! s!Nom ;
_ => n.s ! NCard !Masc!Sg! Indef! Nom ++ mkCard o "ሺህ" !g!n2 ! s!c}} ;
lin pot3plus n m = {
s = \\o,g,n2,s,c => case c of {
Gen|Dat => n.s ! NCard !Masc!Sg! Indef!c ++ "ሺህ" ++ m.s ! o!g!n2!s! Nom;
_=> n.s ! NCard !Masc!Sg! Indef! Nom ++ "ሺህ" ++ m.s ! o!g!n2!s! c}};
--numerals as sequences of digits
lincat
Dig = TDigit ;
lin
IDig d = d ** {tail = T1} ;
IIDig d i = {
s = \\o,g,n,s,c => case c of {
Gen|Dat => d.s ! NCard !Masc!Sg!Indef!c ++ commaIf i.tail ++ i.s ! o!g!n!s! Nom ;
_ => d.s ! NCard !Masc!Sg!Indef! Nom ++ commaIf i.tail ++ i.s ! o!g!n!s! c };
tail = inc i.tail
} ;
D_0 = mk3Dig "0" "0ኛ" ;
D_1 = mk3Dig "1" "1ኛ" ;
D_2 = mkDig "2";
D_3 = mkDig "3";
D_4 = mkDig "4" ;
D_5 = mkDig "5" ;
D_6 = mkDig "6" ;
D_7 = mkDig "7" ;
D_8 = mkDig "8" ;
D_9 = mk2Dig "9" "9ኛ";
oper
commaIf : DTail -> Str = \t -> case t of {
T3 => "," ;
_ => []
} ;
inc : DTail -> DTail = \t -> case t of {
T1 => T2 ;
T2 => T3 ;
T3 => T1
} ;
------------------ :) what a releif
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o ;
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "ተኛ") ;
mk3Dig : Str -> Str -> TDigit = \c,o -> {
s = table {NCard => adjaffix c ; NOrd => adjaffix o}
} ;
TDigit = {
s : CardOrd => Gender=>Number=>Species=>Case=> Str
} ;
-- የማትረሳዋ ምሽት - ተመስገን አምላኬ!
}

View File

@@ -0,0 +1,35 @@
abstract Numerals = {
-- numerals from 1 to 999999 in decimal notation
flags startcat=Numeral ;
cat
Numeral ; -- 0..
Digit ; -- 2..9
Sub10 ; -- 1..9
Sub100 ; -- 1..99
Sub1000 ; -- 1..999
Sub1000000 ; -- 1..999999
fun
num : Sub1000000 -> Numeral ;
n2, n3, n4, n5, n6, n7, n8, n9 : Digit ;
pot01 : Sub10 ; -- 1
pot0 : Digit -> Sub10 ; -- d * 1
pot110 : Sub100 ; -- 10
pot111 : Sub100 ; -- 11
pot1to19 : Digit -> Sub100 ; -- 10 + d
pot0as1 : Sub10 -> Sub100 ; -- coercion of 1..9
pot1 : Digit -> Sub100 ; -- d * 10
pot1plus : Digit -> Sub10 -> Sub100 ; -- d * 10 + n
pot1as2 : Sub100 -> Sub1000 ; -- coercion of 1..99
pot2 : Sub10 -> Sub1000 ; -- m * 100
pot2plus : Sub10 -> Sub100 -> Sub1000 ; -- m * 100 + n
pot2as3 : Sub1000 -> Sub1000000 ; -- coercion of 1..999
pot3 : Sub1000 -> Sub1000000 ; -- m * 1000
pot3plus : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n
}

View File

@@ -0,0 +1,7 @@
resource OrthoAmh = open Prelude, Predef in {
flags coding=utf8 ;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,37 @@
concrete PhraseAmh of Phrase = CatAmh ** open
ParamX,
Prelude,
CommonX,
ResAmh in {
flags optimize=all_subs ;
coding = utf8;
lin
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
NoPConj = {s = []} ;
NoVoc = {s = []} ;
UttS s = s;
UttAdv adv = adv ;
UttNP np = {s = np.s ! Nom } ;
UttAP ap = {s = ap.s ! Masc!Sg!Indef!Nom } ;
UttCN n = {s = n.s ! Sg ! Indef! Nom} ;
UttCard n = {s = n.s ! Masc!Sg!Indef!Nom } ;
VocNP np = {s = "፤" ++ np.s ! Nom} ;
UttQS qs = {s = qs.s } ;
UttIP ip = ip ; --- Acc also
UttVP vp = {s = vp.obj.s ++ vp.inf} ;
UttIAdv iadv = iadv ;
UttCN n = {s = n.s ! Sg ! Indef!Nom} ;
UttCard n = {s = n.s ! Masc!Sg!Indef!Nom} ;
UttImpSg pol imp = {s = pol.s ++ imp.s!pol.p!Masc!Sg};
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p! Masc! Pl} ; --- TO DO
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Masc!Pl} ; -- TO DO ---
UttQS qs = {s = qs.s } ; -- TO DO
{-
PConjConj conj = {s = conj.s2} ; ---
-}
}

View File

@@ -0,0 +1,46 @@
concrete QuestionAmh of Question = CatAmh ** open ResAmh, ParamX, Prelude in {
flags optimize=all_subs ; coding = utf8 ;
--
lin
QuestCl cl = {
s = \\t,p => cl.s ! t ! p ++ "እንዴ"
};
IdetCN idet cn = {
s = idet.s ! Nom ++ cn.s ! idet.n ! Indef ! Nom ;
n = idet.n
} ; ---- FIX ME
IdetQuant idet num = {
s = \\c => idet.s!Sg ++ num.s ! Indef ! c;
n = Sg ---- size of Num
} ;
QuestVP qp vp =
let cl = mkClause (qp.s) (Per3 qp.n Masc) vp in
{s = \\t,p => cl.s ! t ! p } ;
QuestIAdv iadv cl = mkQuestion iadv cl ;
AdvIP ip adv = {
s = adv.s ++ ip.s;
n = ip.n
} ;
IdetIP idet = {
s = idet.s!Nom ;
n = idet.n
} ;
CompIAdv a = a ;
CompIP p = ss (p.s) ;
-- PrepIP p ip = {s = p.s ++ ip.s } ;
}

View File

@@ -0,0 +1,58 @@
concrete RelativeAmh of Relative = CatAmh ** open ResAmh 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} ;
{-
-- The simplest way to form a relative clause is from a clause by
-- a pronoun similar to "such that".
RelCl : Cl -> RCl ; -- such that John loves her
-- The more proper ways are from a verb phrase
-- (formed in [``Verb`` Verb.html]) or a sentence
-- with a missing noun phrase (formed in [``Sentence`` Sentence.html]).
RelVP : RP -> VP -> RCl ; -- who loves John
RelSlash : RP -> ClSlash -> RCl ; -- whom John loves
-- Relative pronouns are formed from an 'identity element' by prefixing
-- or suffixing (depending on language) prepositional phrases or genitives.
IdRP : RP ; -- which
FunRP : Prep -> NP -> RP -> RP ; -- the mother of whom
-}
----
}

1251
lib/src/amharic/ResAmh.gf Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,69 @@
--# -path=.:abstract:common:prelude
--
concrete SentenceAmh of Sentence = CatAmh ** open
ResAmh, ParamX
in {
--
--
flags optimize=all_subs ; coding=utf8 ;
--
lin
PredVP np vp = mkClause (np.s ! Nom) np.a.png vp ;
SlashVP np vp = mkClause (np.s ! Nom) np.a.png vp ** {c2 = vp.c2} ;
ImpVP vp = {
s = \\p,g,n =>
case p of {
Pos => vp.obj.s ++ vp.imp ;
Neg => vp.obj.s ++ "አት" ++ "&+" ++ vp.imp
}
};
--ImpVP : VP -> Imp ; -- love yourselves
--FIXME, all tenses
UseCl t ap cl =
let ss : Str = case t.t of
{
Pres => cl.s ! PresFut ! ap.p ;
Cond => cl.s ! PresFut ! ap.p ;
Past => cl.s ! SimplePast ! ap.p ;
Fut => cl.s ! PresFut ! ap.p
}
in {
s = ss
};
UseQCl t ap qcl =
let ss : Str = case t.t of
{
Pres => qcl.s ! PresFut ! ap.p ;
Cond => qcl.s ! PresFut ! ap.p ;
Past => qcl.s ! SimplePast ! ap.p ;
Fut => qcl.s ! PresFut ! ap.p
}
in {
s = ss
};
EmbedVP vp = {s = vp.obj.s ++ vp.inf} ;
AdvS a s = {s = a.s ++ "፤" ++ s.s} ;
SSubjS a s b = {s = b.s ++ s.s ++ a.s} ;
}

View File

@@ -0,0 +1,127 @@
--# -path=.:../Romance:../common:../abstract:../common:prelude
-- (c) 2010 Markos KG
-- Licensed under LGPL
concrete StructuralAmh of Structural = CatAmh **
open MorphoAmh, ResAmh, ParadigmsAmh,(C = ConstructX),ParamX, Prelude in {
--
flags optimize=all ; coding=utf8 ;
--
lin
above_Prep = mkPrep "ከ" "በላይ" False;
after_Prep = mkPrep "ከ" "በኋላ" False;
all_Predet = mkPredet"ሁሉ" False ;
-- almost_AdA = ss "ገደማ";
-- almost_AdN = ss "حَوَالي" ; -- or "تَقرِيبا"
although_Subj = ss "ይሁን እንጂ" ;
always_AdV = ss "ሁልጊዜ" ;
and_Conj = sd2 [] "እና" ** {n = Pl} ; --and_Conj = mkConj "እና" Pl ; -- and_Conj = ss "እና" ** {n = Pl} ;
because_Subj = ss "ሰለዚህ" ;
before_Prep = mkPrep "ከ" "በፊት " False ;
behind_Prep = mkPrep "ከ" "በስተጀርባ" False;
between_Prep = mkPrep "በ" "መካከል" False ;
both7and_DConj = sd2 "" "እና" ** {n = Pl} ;
but_PConj = ss "ነገር ግን" ;
by8means_Prep = mkPrep "በ" "" True ;
by8agent_Prep = mkPrep "" "ጋ" False ;
--can8know_VV, can_VV = {
--s = table VVForm [["بي َبلي تْ"] ; "عَن" ; "عُْلد" ;
---- ["بّن َبلي تْ"] ; ["بِنغ َبلي تْ"] ; "عَنءت" ; "عُْلدنءت"] ;
---- isAux = True
---- } ;
-- during_Prep = mkPrep "ሳለ" ;
either7or_DConj = sd2 "ወይ " " ካለበለዚያ" ** {n = Sg} ;
everybody_NP = regNP "ሁሉምሰው" Sg ;
every_Det = mkDet (regAdj "እያንዳንዱ") Sg Indef ;
everything_NP = regNP "ሁሉነገር" Sg ;
everywhere_Adv = ss "በየቦታው" ;
few_Det = mkDet (regAdj "ጥቂት") Pl Indef ;
first_Ord = ss "መጀመሪያ" ;
from_Prep = mkPrep "ከ" ""True ;
he_Pron = pronNP "እርሱ" "እርሱን" "የእርሱ" "ለእርሱ" (Per3 Sg Masc) ;
here_Adv = ss "እዚህ" ;
here7to_Adv = ss "ወደዚህ" ;
here7from_Adv = ss "ከዚህ" ;
how_IAdv = ss "እንዴት" ;
how8many_IDet = mkDeterminer Pl ["ስንት"] ;
--if_Subj = ss "ِف" ;
in8front_Prep = mkPrep "ከ" "ፊትለፊት" False;
i_Pron = pronNP "እኔ" "እኔን" "የእኔ" "ለእኔ" (Per1 Sg) ;
in_Prep = mkPrep "" "ውስጥ" False;
it_Pron = pronNP "" "" "" "" (Per3 Sg Masc) ;
less_CAdv = C.mkCAdv "በ" "አነስ";
many_Det = mkDet (regAdj "ብዙ") Pl Indef ;
more_CAdv = C.mkCAdv "በ" "ተሻለ";
as_CAdv = C.mkCAdv "ልክ" "እንደ" ;
most_Predet = mkPredet "አብዛኛው" True ;
much_Det = mkDet (regAdj "ብዙ") Pl Indef ;
--must_VV = {
--s = table VVForm [["بي هَثي تْ"] ; "مُست" ; ["هَد تْ"] ;
---- ["هَد تْ"] ; ["هَثِنغ تْ"] ; "مُستنءت" ; ["هَدنءت تْ"]] ; ----
-- isAux = True
-- } ;
-- no_Utt = {s = \\_ => "لا"} ;
on_Prep = mkPrep "በ" "ላይ" False ;
--DEPREC one_Quant = mkQuantNum "واحِد" Sg Indef ;
only_Predet = mkPredet "ብቻ" False;
or_Conj = sd2 [] "ወይም" ** {n = Sg} ;
otherwise_PConj = ss "ካለበለዚያ" ;
-- part_Prep = mkPrep "مِنَ" ;
please_Voc = ss "ስለእግዚአብሐር" ; -- cant be here in structural :
-- possess_Prep = mkPrep "ل" ;
-- quite_Adv = ss "قُِتي" ;
she_Pron = pronNP "እርሷ" "እርሷን" "የእርሷ" "ለእርሷ" (Per3 Sg Fem) ;
so_AdA = ss "በጣም";
somebody_NP = regNP "የሆነሰው" Sg ;
someSg_Det = mkDet (regAdj "የሆነ" ) Sg Indef ;
somePl_Det = mkDet (regAdj "ጥቂት" ) Pl Indef ;
something_NP = regNP "የሆነነገር" Sg ;
somewhere_Adv = ss "የሆነቦታ" ;
-- that_Quant = mkQuant3 "ذَلِكَ" "تِلكَ" "أُلٱِكَ" Def;
------b that_NP = indeclNP "ذَلِكَ" Sg ;
for_Prep = mkPrep "ለ" "" False;
there_Adv = ss "እዚያ" ;
there7to_Adv = ss "ወደዚያ" ;
there7from_Adv = ss "ከዚያ" ;
therefore_PConj = ss "ሰለዚህ" ;
--b these_NP = indeclNP "هَؤُلَاء" Pl ;
they_Pron = pronNP "እነርሱ" "እነርሱን" "የእነርሱ" "ለእነርሱ" (Per3 Pl Masc) ;
--this_Quant = mkQuant7 "هَذا" "هَذِهِ" "هَذَان" "هَذَيْن" "هَاتَان" "هَاتَيْن" "هَؤُلَاء" Def;
this_Quant = mkQuant (mkAdjyh "ይህ") Indef ;
--these_Quant = adjDet (mkDetyh "ይህ") Pl False;
that_Quant = mkQuant (mkAdjya "ያ") Indef;
--those_Quant = adjDet (mkDetya "ያ") Pl False;
--b this_NP = indeclNP "هَذا" Sg ;
--b those_NP = indeclNP "هَؤُلَاءكَ" Pl ;
through_Prep = mkPrep "በ" "በኩል" False ;
too_AdA = ss "በጣም" ;
to_Prep = mkPrep "ወደ" "" True;
under_Prep = mkPrep "ከ" "ታች" False ;
very_AdA = ss "በጣም" ;
want_VV = mkV3mls"flg";
we_Pron = pronNP "እኛ" "እኛን" "የእኛ" "ለእኛ" (Per1 Pl) ;
--whatPl_IP = mkIP "ماذا" Pl ;
--whatSg_IP = mkIP "ماذا" Sg ;
when_IAdv = ss "መቼ" ;
--when_Subj = ss "وهن" ;
where_IAdv = ss "የት" ;
which_IQuant = {s = \\_ =>"የምን"} ;
whichPl_IDet = mkDeterminer Pl ["የትኞቹ"] ;
whichSg_IDet = mkDeterminer Sg ["የትኛው"] ;
whoSg_IP = mkIP "ማን" Sg ;
whoPl_IP = mkIP "እነማን" Pl ;
why_IAdv = ss "ለምን" ;
without_Prep = mkPrep "ካለ" "" True ;
with_Prep = mkPrep "ከ" "ጋር" False ;
--yes_Utt = {s = \\_ => "نَعَم"} ;
youSg_Pron = pronNP "አንተ" "አንተን" "የአንተ" "ለአንተ" (Per2 Sg Masc);
youPl_Pron = pronNP "እናንተ" "እናንተን" "የእናንተ" "ለእናንተ" (Per2 Pl Masc);
youPol_Pron = pronNP "እርስዎ" "እርስዎን" "የእርስዎ" "ለእርስዎ" (Per3 Pl Masc) ; -- discuss this i the report :
have_V2 = mkV2 (mkV3al "äl") (mkPrep "" "" True);
-- dirV2 (regV "يَملِك") ;
lin language_title_Utt = ss "አማርኛ" ;
}

View File

@@ -0,0 +1,47 @@
--# -path=.:../abstract:../common
concrete SymbolAmh of Symbol = CatAmh ** open Prelude, ResAmh 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 "," ;
---}
--
}

331
lib/src/amharic/VerbAmh.gf Normal file
View File

@@ -0,0 +1,331 @@
concrete VerbAmh of Verb = CatAmh ** open Prelude,ParamX, ResAmh in {
--
flags optimize=all_subs ;
coding = utf8;
--
lin
UseV = predV ;
SlashV2a v = predVc v ;
Slash3V3 v np = insertObj np (predV v) ** {c2 = v.c2};
ComplSlash vp np = insertObj np vp ;
CompAP ap = {s = \\amhagr,c => ap.s ! amhagr.g ! amhagr.n ! Indef ! c} ; --FIXME
CompNP np = {s = \\_,c => np.s ! c};
CompAdv a = {s = \\_,_ => a.s} ;
-- PassV2 : V2 -> VP ; -- be loved
PassV2 v2 = {
s = \\t,p,png =>
let
teketebku = v2.s ! Perf !Pas! png ; --
eketebalehu = v2.s ! Imperf !Pas! png ;--
teketeb = v2.s ! Jus_Imperat !Pas! png ; -- imperative
teketbie = v2.s ! Gerund !Pas! png ; --
meketeb = v2.s ! Infinitive !Pas! png ; --
teketabi = v2.s ! Parti !Pas! png ;
teketbiealehu = v2.s ! CompPerf !Pas! png ; --
eketeb = v2.s ! Cont !Pas! png ; -- just play with the actives for now
in
case <t,p> of {
<PresFut,Pos> => eketebalehu ;
<PresFut,Neg> => "!" ++"&+"++ eketeb ++"&+" ++"m" ;-- case for I is unique but sticking to the general trend
<PresPerf,Pos> => teketbiealehu;
<PresPerf,Neg> => "!l"++"&+"++teketebku++"&+"++"m";
<PresCont,Pos> => "(y'"++ "&+"++teketebku ++"n'w" ;
<PresCont,Neg> => "(y'"++ "&+"++teketebku ++"Ayd'l'm" ;
<SimplePast,Pos> => teketebku;
<SimplePast,Neg> => "!l"++"&+"++teketebku++"&+"++"m";
<PastPerf,Pos> => teketbie ++ "n'b'r";
<PastPerf,Neg> => "!l"++"&+"++teketebku++"&+"++"m"++"n'b'r";
<PastCont,Pos> => "(y'"++ "&+"++teketebku ++ "n'b'r" ;
<PastCont,Neg> => "(y'"++ "&+"++teketebku ++ "Aln'b'r'm"
};
obj = {
s = [] ;
a = {png = Per3 Sg Masc ; isPron = False}
};
s2 = [];
imp = v2.s ! Jus_Imperat!Act !Per2 Sg Masc;
inf = v2.s ! Infinitive ! Pas ! Per3 Sg Masc ;
pred = { s = \\_,_ => []};
isPred = False
} ;
-- AdvVP : VP -> Adv -> VP ;
AdvVP vp adv = {
s = \\t,p,pgn => adv.s ++ vp.s!t!p!pgn ;
obj = vp.obj;
s2 = [];
imp = vp.imp ;
inf = vp.inf;
pred = { s = \\_,_ => []};
isPred = False
};
-- AdVVP : AdV -> VP -> VP ; -- always sleep
-- : Comp -> VP ; -- be warm --
--
UseComp comp = {s= \\t,p,png =>
let
gn = png2gn png
in
case <png,t,p> of {
<Per1 Sg,PresFut,Pos > => comp.s ! gn ! Nom ++ "ነኝ";
<Per1 Sg,PresFut,Neg > => comp.s ! gn ! Nom ++ "አይደለሁም";
<Per1 Sg,PresPerf,Pos> => comp.s ! gn ! Nom ++"ነበርኩ";
<Per1 Sg,PresPerf,Neg> => comp.s ! gn ! Nom ++"አልነበርኩም";
<Per1 Sg,PresCont,Pos> => comp.s ! gn ! Nom ++ "እየሆንኩ ነው";
<Per1 Sg,PresCont,Neg> => comp.s ! gn ! Nom ++ "እየሆንኩ አይደለም";
<Per1 Sg,SimplePast,Pos> => comp.s ! gn ! Nom ++"ነበርኩ";
<Per1 Sg,SimplePast,Neg > => comp.s ! gn ! Nom ++ "አልነበርኩም";
<Per1 Sg,PastPerf,Pos> => comp.s ! gn ! Nom ++ "ነበርኩ";
<Per1 Sg,PastPerf,Neg> => comp.s ! gn ! Nom ++ "አልነበርኩም" ;
<Per1 Sg,PastCont,Pos> => comp.s ! gn ! Nom ++ "እየሆንኩ ነበር";
<Per1 Sg,PastCont,Neg> => comp.s ! gn ! Nom ++ "እየሆንኩ አልነበረም";
<Per1 Pl,PresFut,Pos> => comp.s ! gn ! Nom ++ "ነን";
<Per1 Pl,PresFut,Neg > => comp.s ! gn ! Nom ++ "አይደለንም";
<Per1 Pl,PresPerf,Pos> => comp.s ! gn ! Nom ++"ነበርን";
<Per1 Pl,PresPerf,Neg> => comp.s ! gn ! Nom ++"አልነበርንም";
<Per1 Pl,PresCont,Pos> => comp.s ! gn ! Nom ++ "እየሆንን ነው";
<Per1 Pl,PresCont,Neg> => comp.s ! gn ! Nom ++ "እየሆንን አይደለም";
<Per1 Pl,SimplePast,Pos> => comp.s ! gn ! Nom ++"ነበርን";
<Per1 Pl,SimplePast,Neg > => comp.s ! gn ! Nom ++ "አልነበርንም";
<Per1 Pl,PastPerf,Pos> => comp.s ! gn ! Nom ++ "ነበርን";
<Per1 Pl,PastPerf,Neg> => comp.s ! gn ! Nom ++ "አልነበርንም" ;
<Per1 Pl,PastCont,Pos> => comp.s ! gn ! Nom ++ "እየሆንን ነበር";
<Per1 Pl,PastCont,Neg> => comp.s ! gn ! Nom ++ "እየሆንን አልነበረም";
<Per2 Sg Masc,PresFut,Pos > => comp.s ! gn ! Nom ++ "ነህ";
<Per2 Sg Masc,PresFut,Neg > => comp.s ! gn ! Nom ++ "አይደለህም";
<Per2 Sg Masc,PresPerf,Pos> => comp.s ! gn ! Nom ++"ነበርክ";
<Per2 Sg Masc,PresPerf,Neg> => comp.s ! gn ! Nom ++"አልነበርክም";
<Per2 Sg Masc,PresCont,Pos> => comp.s ! gn ! Nom ++ "እየሆንክ ነው";
<Per2 Sg Masc,PresCont,Neg> => comp.s ! gn ! Nom ++ "እየሆንክ አይደለም";
<Per2 Sg Masc,SimplePast,Pos> => comp.s ! gn ! Nom ++"ነበርክ";
<Per2 Sg Masc,SimplePast,Neg > => comp.s ! gn ! Nom ++ "አልነበርክም";
<Per2 Sg Masc,PastPerf,Pos> => comp.s ! gn ! Nom ++ "ነበርክ";
<Per2 Sg Masc,PastPerf,Neg> => comp.s ! gn ! Nom ++ "አልነበርክም" ;
<Per2 Sg Masc,PastCont,Pos> => comp.s ! gn ! Nom ++ "እየሆንክ ነበር";
<Per2 Sg Masc,PastCont,Neg> => comp.s ! gn ! Nom ++ "እየሆንክ አልነበረም";
<Per2 Sg Fem,PresFut,Pos > => comp.s ! gn ! Nom ++ "ነሽ";
<Per2 Sg Fem,PresFut,Neg > => comp.s ! gn ! Nom ++ "አይደለሽም";
<Per2 Sg Fem,PresPerf,Pos> => comp.s ! gn ! Nom ++"ነበርሽ";
<Per2 Sg Fem,PresPerf,Neg> => comp.s ! gn ! Nom ++"አልነበርሽም";
<Per2 Sg Fem,PresCont,Pos> => comp.s ! gn ! Nom ++ "እየሆንሽ ነው";
<Per2 Sg Fem,PresCont,Neg> => comp.s ! gn ! Nom ++ "እየሆንሽ አይደለም";
<Per2 Sg Fem,SimplePast,Pos> => comp.s ! gn ! Nom ++"ነበርሽ";
<Per2 Sg Fem,SimplePast,Neg > => comp.s ! gn ! Nom ++ "አልነበርሽም";
<Per2 Sg Fem,PastPerf,Pos> => comp.s ! gn ! Nom ++ "ነበርሽ";
<Per2 Sg Fem,PastPerf,Neg> => comp.s ! gn ! Nom ++ "አልነበርሽም" ;
<Per2 Sg Fem,PastCont,Pos> => comp.s ! gn ! Nom ++ "እየሆንሽ ነበር";
<Per2 Sg Fem,PastCont,Neg> => comp.s ! gn ! Nom ++ "እየሆንሽ አልነበረም";
<Per2 Pl _,PresFut,Pos > => comp.s ! gn ! Nom ++ "ናችሁ";
<Per2 Pl _,PresFut,Neg > => comp.s ! gn ! Nom ++ "አይደላችሁም";
<Per2 Pl _,PresPerf,Pos> => comp.s ! gn ! Nom ++"ነበራችሁ";
<Per2 Pl _,PresPerf,Neg> => comp.s ! gn ! Nom ++"አልነበራችሁም";
<Per2 Pl _,PresCont,Pos> => comp.s ! gn ! Nom ++ "እየሆናችሁ ነው";
<Per2 Pl _,PresCont,Neg> => comp.s ! gn ! Nom ++ "እየሆናችሁ አይደለም";
<Per2 Pl _,SimplePast,Pos> => comp.s ! gn ! Nom ++"ነበራችሁ";
<Per2 Pl _,SimplePast,Neg > => comp.s ! gn ! Nom ++ "አልነበራችሁም";
<Per2 Pl _,PastPerf,Pos> => comp.s ! gn ! Nom ++ "ነበራችሁ";
<Per2 Pl _,PastPerf,Neg> => comp.s ! gn ! Nom ++ "አልነበራችሁም" ;
<Per2 Pl _,PastCont,Pos> => comp.s ! gn ! Nom ++ "እየሆናችሁ ነበር";
<Per2 Pl _,PastCont,Neg> => comp.s ! gn ! Nom ++ "እየሆናችሁ አልነበረም";
<Per3 Sg Masc,PresFut,Pos > => comp.s ! gn ! Nom ++ "ነው";
<Per3 Sg Masc,PresFut,Neg > => comp.s ! gn ! Nom ++ "አይደለም";
<Per3 Sg Masc,PresPerf,Pos> => comp.s ! gn ! Nom ++"ነበረ";
<Per3 Sg Masc,PresPerf,Neg> => comp.s ! gn ! Nom ++"አልነበረም";
<Per3 Sg Masc,PresCont,Pos> => comp.s ! gn ! Nom ++ "እየሆነ ነው";
<Per3 Sg Masc,PresCont,Neg> => comp.s ! gn ! Nom ++ "እየሆነ አይደለም";
<Per3 Sg Masc,SimplePast,Pos> => comp.s ! gn ! Nom ++"ነበረ ";
<Per3 Sg Masc,SimplePast,Neg > => comp.s ! gn ! Nom ++ "አልነበረም";
<Per3 Sg Masc,PastPerf,Pos> => comp.s ! gn ! Nom ++ "ነበረ";
<Per3 Sg Masc,PastPerf,Neg> => comp.s ! gn ! Nom ++ "አልነበረም" ;
<Per3 Sg Masc,PastCont,Pos> => comp.s ! gn ! Nom ++ "እየሆነ ነበር";
<Per3 Sg Masc,PastCont,Neg> => comp.s ! gn ! Nom ++ "እየሆነ አልነበረም";
<Per3 Sg Fem,PresFut,Pos > => comp.s ! gn ! Nom ++ "ነች";
<Per3 Sg Fem,PresFut,Neg > => comp.s ! gn ! Nom ++ "አይደለችም";
<Per3 Sg Fem,PresPerf,Pos> => comp.s ! gn ! Nom ++"ነበረች";
<Per3 Sg Fem,PresPerf,Neg> => comp.s ! gn ! Nom ++"አልነበረችም";
<Per3 Sg Fem,PresCont,Pos> => comp.s ! gn ! Nom ++ "እየሆነች ነው";
<Per3 Sg Fem,PresCont,Neg> => comp.s ! gn ! Nom ++ "እየሆነች አይደለም";
<Per3 Sg Fem,SimplePast,Pos> => comp.s ! gn ! Nom ++"ነበረች ";
<Per3 Sg Fem,SimplePast,Neg > => comp.s ! gn ! Nom ++ "አልነበረችም";
<Per3 Sg Fem,PastPerf,Pos> => comp.s ! gn ! Nom ++ "ነበረች";
<Per3 Sg Fem,PastPerf,Neg> => comp.s ! gn ! Nom ++ "አልነበረችም" ;
<Per3 Sg Fem,PastCont,Pos> => comp.s ! gn ! Nom ++ "እየሆነች ነበር";
<Per3 Sg Fem,PastCont,Neg> => comp.s ! gn ! Nom ++ "እየሆነች አልነበረም";
<Per3 Pl _,PresFut,Pos > => comp.s ! gn ! Nom ++ "ናቸው";
<Per3 Pl _,PresFut,Neg > => comp.s ! gn ! Nom ++ "አይደሉም";
<Per3 Pl _,PresPerf,Pos> => comp.s ! gn ! Nom ++"ነበሩ";
<Per3 Pl _,PresPerf,Neg> => comp.s ! gn ! Nom ++"አልነበሩም";
<Per3 Pl _,PresCont,Pos> => comp.s ! gn ! Nom ++ "እየሆኑ ነው";
<Per3 Pl _,PresCont,Neg> => comp.s ! gn ! Nom ++ "እየሆኑ አይደለም";
<Per3 Pl _,SimplePast,Pos> => comp.s ! gn ! Nom ++"ነበሩ ";
<Per3 Pl _,SimplePast,Neg> => comp.s ! gn ! Nom ++ "አልነበሩም";
<Per3 Pl _,PastPerf,Pos> => comp.s ! gn ! Nom ++ "ነበሩ";
<Per3 Pl _,PastPerf,Neg> => comp.s ! gn ! Nom ++ "አልነበሩም" ;
<Per3 Pl _,PastCont,Pos> => comp.s ! gn ! Nom ++ "እየሆኑ ነበር";
<Per3 Pl _,PastCont,Neg> => comp.s ! gn ! Nom ++ "እየሆኑ አልነበረም"
};
obj = {
s = [] ;
a = {png = Per3 Sg Masc ; isPron = False}
};
s2 = [];
imp = [] ;
inf = [];
pred = { s = \\_,_ => []};
isPred = False
};
ComplVA v2 ap= {
s = \\t,p,png =>
let
teketebku = ap.s!Masc!Sg!Indef!Nom ++ v2.s ! Perf !Pas! png ; --
eketebalehu = ap.s!Masc!Sg!Indef!Nom ++ v2.s ! Imperf !Pas! png ;--
teketeb = ap.s!Masc!Sg!Indef!Nom ++ v2.s ! Jus_Imperat !Pas! png ; -- imperative
teketbie = ap.s!Masc!Sg!Indef!Nom ++ v2.s ! Gerund !Pas! png ; --
meketeb = ap.s!Masc!Sg!Indef!Nom ++ v2.s ! Infinitive !Pas! png ; --
teketabi = ap.s!Masc!Sg!Indef!Nom ++ v2.s ! Parti !Pas! png ;
teketbiealehu = ap.s!Masc!Sg!Indef!Nom ++ v2.s ! CompPerf !Pas! png ; --
eketeb = ap.s!Masc!Sg!Indef!Nom ++ v2.s ! Cont !Pas! png ; -- just play with the actives for now
in
case <t,p> of {
<PresFut,Pos> => eketebalehu ;
<PresFut,Neg> => "!" ++"&+"++ eketeb ++"&+" ++"m" ;-- case for I is unique but sticking to the general trend
<PresPerf,Pos> => teketbiealehu;
<PresPerf,Neg> => "!l"++"&+"++teketebku++"&+"++"m";
<PresCont,Pos> => "(y'"++ "&+"++teketebku ++"n'w" ;
<PresCont,Neg> => "(y'"++ "&+"++teketebku ++"Ayd'l'm" ;
<SimplePast,Pos> => teketebku;
<SimplePast,Neg> => "!l"++"&+"++teketebku++"&+"++"m";
<PastPerf,Pos> => teketbie ++ "n'b'r";
<PastPerf,Neg> => "!l"++"&+"++teketebku++"&+"++"m"++"n'b'r";
<PastCont,Pos> => "(y'"++ "&+"++teketebku ++ "n'b'r" ;
<PastCont,Neg> => "(y'"++ "&+"++teketebku ++ "Aln'b'r'm"
};
obj = {
s = [] ;
a = {png = Per3 Sg Masc ; isPron = False}
};
s2 = [];
imp = v2.s ! Jus_Imperat!Act!Per2 Sg Masc ;
inf = v2.s ! Infinitive ! Act ! Per3 Sg Masc ;
pred = { s = \\_,_ => []};
isPred = False
} ;
ComplVV v2 vp = {
s = \\t,p,png =>
let
teketebku = v2.s ! Perf !Act! png ; --
eketebalehu = v2.s ! Imperf !Act! png ;--
teketeb = v2.s ! Jus_Imperat !Act! png ; -- imperative
teketbie = v2.s ! Gerund !Act! png ; --
meketeb = v2.s ! Infinitive !Act! png ; --
teketabi = v2.s ! Parti !Act! png ;
teketbiealehu = v2.s ! CompPerf !Act! png ; --
eketeb = v2.s ! Cont !Act! png ; -- just play with the actives for now
in
case <t,p> of {
<PresFut,Pos> => vp.inf ++ eketebalehu ;
<PresFut,Neg> => vp.inf ++ "!" ++"&+"++ eketeb ++"&+" ++"m" ;-- case for I is unique but sticking to the general trend
<PresPerf,Pos> => vp.inf ++ teketbiealehu;
<PresPerf,Neg> => vp.inf ++ "!l"++"&+"++teketebku++"&+"++"m";
<PresCont,Pos> => vp.inf ++ "(y'"++ "&+"++teketebku ++"n'w" ;
<PresCont,Neg> => vp.inf ++ "(y'"++ "&+"++teketebku ++"Ayd'l'm" ;
<SimplePast,Pos> => vp.inf ++ teketebku;
<SimplePast,Neg> => vp.inf ++ "!l"++"&+"++teketebku++"&+"++"m";
<PastPerf,Pos> => vp.inf ++ teketbie ++ "n'b'r";
<PastPerf,Neg> => vp.inf ++ "!l"++"&+"++teketebku++"&+"++"m"++"n'b'r";
<PastCont,Pos> => vp.inf ++ "(y'"++ "&+"++teketebku ++ "n'b'r" ;
<PastCont,Neg> => vp.inf ++ "(y'"++ "&+"++teketebku ++ "Aln'b'r'm"
};
obj = vp.obj;
s2 = [];
imp = v2.s ! Jus_Imperat!Act!Per2 Sg Masc ;
inf = v2.s ! Infinitive ! Pas ! Per3 Sg Masc ;
pred = vp.pred;
isPred = False
} ;
-- v vp = vp.inf ++ (predV v)** {c2 = v.c2};
-- ReflVP : VPSlash -> VP ; -- love himself
-- ReflVP v = insertObj (\\a => reflPron ! a ++ v.c2) v ;
--Slash3V3 v np = insertObj np (predV v) ** {c2 = v.c2};
-- ComplVA : VA -> AP -> VP ; -- they become red
-- ComplVA v ap = insertObj2 (ap.s!Masc!Sing!Indef) (predV v) ;
-- ComplVV : VV -> VP -> VP ; -- want to run
}

View File

@@ -0,0 +1,86 @@
concrete amharic of Numerals = {
flags coding = utf8 ;
-- include numerals.Abs.gf ;
-- flags coding=ethiopic ;
-- 14, 15 have variants in pronounciation {asraratt, asrammIst}
-- No long consonants marked in the indigen. script
-- s is set intersection s
-- h is set union h
-- H is three-fork h
-- x is hook-looking h
-- L is sin-looking s
-- X is h looking like k with a roof
-- ) is chair-vowel i.e historically glottal stop
-- ( is round-shape vowel sign i.e historically 3ayn
-- Z is zh
-- $ is sh
-- N is n~
-- I is i" ዕ6ትህ ሮውእ
-- አ ኢስ ኣ" (1st row)
-- Capitalis for ejectives KPTCS
param DForm = unit | ten ;
param Size = sg | pl | tenplus ;
param S100 = indep | tenpart | tenelfu | sihpart ;
oper LinDigit = {s : DForm => Str ; size : Size} ;
oper LinSub100 = {s : S100 => Str ; size : Size} ;
lincat Numeral = {s : Str} ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = LinSub100 ;
lincat Sub1000 = {s : Str ; s2 : Str ; size : Size } ;
lincat Sub1000000 = {s : Str} ;
oper mkNum : Str -> Str -> LinDigit = \hulatt -> \haya ->
{s = table {unit => hulatt ; ten => haya} ; size = pl} ;
lin num x0 =
{s = [] ++ x0.s ++ []} ;
lin n2 = mkNum "ሁለት" (variants {"ሃያ" ; "ሓያ" ; "ኃያ" ; "ካያ" }) ;
lin n3 = mkNum "ሦስት" "ሠላሳ" ;
lin n4 = mkNum "ኣራት" "ኣርባ" ;
lin n5 = mkNum "ኣምስት" (variants { "ኣምሳ" ; "ኃምሳ" }) ;
lin n6 = mkNum "ስድስት" (variants { "ስድሳ" ; "ስልሳ" }) ;
lin n7 = mkNum "ሰባት" "ሰባ" ;
lin n8 = mkNum "ስምንት" "ሰማንያ" ;
lin n9 = mkNum "ዘጠኝ" "ዘጠና" ;
oper ss1 : Str -> Str -> Str -> LinSub100 = \assir -> \ten -> \unitpart ->
{s = table {indep => assir ; tenpart => ten ; tenelfu => [] ; sihpart => unitpart} ; size = tenplus } ;
oper ss : Str -> Str -> Str -> LinSub100 = \assir -> \ten -> \unitpart ->
{s = table {indep => assir ; tenpart => ten ; tenelfu => ten ; sihpart => unitpart} ; size = tenplus } ;
lin pot01 =
{s = table {unit => "ኣንድ" ; ten => "ኣስራ" }; size = sg};
lin pot0 d = d ;
lin pot110 = ss1 "ኣስር" "ኣንድ" [] ;
lin pot111 = ss1 (variants {"ኣስራንድ" ; "ኣስራ" ++ "ኣንድ" }) "ኣንድ" Sih ;
lin pot1to19 d = ss1 ("ኣስራ" ++ d.s ! unit) "ኣንድ" (mkSih d.size (d.s ! unit)) ;
lin pot0as1 n = {s = table {indep => n.s ! unit ; sihpart => mkSih n.size (n.s ! unit) ; _ => [] } ; size = n.size} ;
lin pot1 d = ss (d.s ! ten) (d.s ! unit) [] ;
lin pot1plus d e = ss ((d.s ! ten) ++ (e.s ! unit))
(d.s ! unit)
(mkSih e.size (e.s ! unit));
lin pot1as2 n = {s = n.s ! indep ; s2 = n.s ! tenelfu ++ "እሌፍ" ++ n.s ! sihpart ; size = n.size} ;
lin pot2 d = {s = (sel d.size [] (d.s ! unit)) ++ "መቶ" ;
s2 = sel d.size "ኣስር" (d.s ! ten) ; size = tenplus} ;
lin pot2plus d e = {s = (sel d.size [] (d.s ! unit)) ++ "መቶ" ++ e.s ! indep ; s2 = d.s ! ten ++ e.s ! tenpart ++ "እሌፍ" ++ e.s ! sihpart ; size = tenplus} ;
lin pot2as3 n = {s = n.s} ;
lin pot3 n = {s = table {pl => n.s ++ Sih ; sg => Sih ; tenplus => n.s2 } ! n.size} ;
lin pot3plus n m = {s = table {pl => n.s ++ Sih ; sg => Sih ; tenplus => n.s2 } ! n.size ++ m.s} ;
oper Sih : Str = variants {"ሺህ" ; "ሺ"} ;
oper mkSih : Size -> Str -> Str = \sz -> \attr -> (sel sz [] attr) ++ Sih ;
oper sel : Size -> Str -> Str -> Str = \sz -> \a -> \b -> table {sg => a ; _ => b} ! sz ;
}

View File

@@ -0,0 +1,8 @@
rf -file=transliterated/IdiomAmh.gf | ps -env=quotes -to_amharic | wf -file=IdiomAmh.gf
rf -file=transliterated/LexiconAmh.gf | ps -env=quotes -to_amharic | wf -file=LexiconAmh.gf
rf -file=transliterated/MorphoAmh.gf | ps -env=quotes -to_amharic | wf -file=MorphoAmh.gf
rf -file=transliterated/NumeralAmh.gf | ps -env=quotes -to_amharic | wf -file=NumeralAmh.gf
rf -file=transliterated/ResAmh.gf | ps -env=quotes -to_amharic | wf -file=ResAmh.gf
rf -file=transliterated/StructuralAmh.gf | ps -env=quotes -to_amharic | wf -file=StructuralAmh.gf
rf -file=LexiconAmh.gf | ps -env=quotes -from_amharic | wf -file=LexAmhTran.gf