1
0
forked from GitHub/gf-core
Files
gf-core/lib/src/amharic/VerbAmh.gf
2010-11-10 17:01:12 +00:00

332 lines
14 KiB
Plaintext

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
}