mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
(zul) mostly changes to VP
This commit is contained in:
@@ -20,6 +20,8 @@ concrete BackwardZul of Backward = CatZul ** open ResZul,Prelude,ParamX in {
|
||||
s = table {
|
||||
MainCl => \\a,p,t,l => let
|
||||
vform = (VFIndic MainCl p t) ;
|
||||
vpref_no_oc = verb_prefix_no_oc vform l v2.r a ;
|
||||
vpref_with_oc = verb_prefix_with_oc vform l a ;
|
||||
tp = tensePref vform v2.r v2.syl ; -- [] / zo- / zuku-
|
||||
-- oc = objConc np.agr v2.r v2.syl ; -- [] / m -
|
||||
-- longform = case np.heavy of {
|
||||
@@ -29,8 +31,8 @@ concrete BackwardZul of Backward = CatZul ** open ResZul,Prelude,ParamX in {
|
||||
r = v2.s!(rform (VFIndic MainCl p t) longform) ; -- bona / boni
|
||||
-- obj = np.s!NFull -- [] / inkomo
|
||||
in case np.proDrop of {
|
||||
True => tp ++ oc ++ r ++ obj ;
|
||||
False => tp ++ r ++ obj
|
||||
True => vpref_with_oc ++ tp ++ oc ++ r ++ obj ;
|
||||
False => vpref_no_oc ++ tp ++ r ++ obj
|
||||
} ;
|
||||
RelCl => \\a,p,t,l => let
|
||||
vform = (VFIndic RelCl p t) ;
|
||||
@@ -70,6 +72,26 @@ concrete BackwardZul of Backward = CatZul ** open ResZul,Prelude,ParamX in {
|
||||
}
|
||||
}
|
||||
} ;
|
||||
inf_s = let
|
||||
inf_oc = case np.proDrop of {
|
||||
True => oc ;
|
||||
False => []
|
||||
}
|
||||
in
|
||||
table {
|
||||
NFull => table {
|
||||
Pos => "uku" ++BIND++ inf_oc ++ v2.s!R_a ++ obj ;
|
||||
Neg => "uku" ++BIND++ "nga" ++BIND++ inf_oc ++ v2.s!R_i ++ obj
|
||||
} ;
|
||||
NReduced | NPoss => table {
|
||||
Pos => "ku" ++BIND++ inf_oc ++ v2.s!R_a ++ obj ;
|
||||
Neg => "ku" ++BIND++ "nga" ++BIND++ inf_oc ++ v2.s!R_i ++ obj
|
||||
} ;
|
||||
NLoc => table {
|
||||
Pos => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++ "uku"++BIND++inf_oc ++ v2.s!R_a ++ obj ;
|
||||
Neg => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++ "uku"++BIND++"nga"++BIND++inf_oc ++ v2.s!R_a ++ obj
|
||||
}
|
||||
} ;
|
||||
iadv, advs, comp = [] ;
|
||||
ap_comp = \\_ => [] ;
|
||||
hasComp = np.heavy ;
|
||||
|
||||
@@ -3,7 +3,8 @@ concrete CatExtZul of CatExt = open ResZul,Prelude,ParamX in {
|
||||
lincat
|
||||
Loc = {
|
||||
s : CType => Agr => Polarity => BasicTense => Str ;
|
||||
imp_s : Number => Polarity => Str
|
||||
imp_s : Number => Polarity => Str ;
|
||||
inf_s : NForm => Polarity => Str
|
||||
} ;
|
||||
LocN = { s : Str } ;
|
||||
LocAdv = { s : Str ; reqLocS : Bool } ;
|
||||
|
||||
@@ -48,11 +48,12 @@ concrete CatZul of Cat = CommonX - [Temp,Tense,Adv,IAdv] **
|
||||
VP = {
|
||||
s : CType => Agr => Polarity => BasicTense => Bool => Str ; -- TODO: mood
|
||||
imp_s : Number => Polarity => Str ;
|
||||
inf_s : NForm => Polarity => Str ;
|
||||
-- oc : Str ;
|
||||
comp : Str ;
|
||||
iadv : Str ;
|
||||
advs : Str ;
|
||||
hasComp : Bool ;
|
||||
hasComp : Bool ; -- indicates whether to use long form
|
||||
r : RInit ;
|
||||
syl : Syl ;
|
||||
-- asp : Aspect ;
|
||||
|
||||
@@ -272,7 +272,10 @@ concrete ExtraExtZul of ExtraExt =
|
||||
} ;
|
||||
|
||||
NPAdv np = {
|
||||
s = np.s!NFull ;
|
||||
s = case np.proDrop of {
|
||||
False => np.s!NFull ;
|
||||
True => "*" ++ np.s!NFull
|
||||
} ;
|
||||
reqLocS = False
|
||||
} ;
|
||||
|
||||
@@ -577,9 +580,11 @@ concrete ExtraExtZul of ExtraExt =
|
||||
phakade_LocN = { s = "phakade" ; empty = [] } ;
|
||||
phezulu_LocN = { s = "phezulu" ; empty = [] } ;
|
||||
|
||||
|
||||
ngemuva_LocAdv = { s = "ngemuva" ; reqLocS = False } ;
|
||||
emuva_LocAdv = { s = "emuva" ; reqLocS = False } ;
|
||||
ecaleni_LocAdv = { s = "ecaleni" ; reqLocS = False } ;
|
||||
ngaphezu_LocAdv = { s = "ngaphezu" ; reqLocS = False } ;
|
||||
|
||||
lapha_Loc = {
|
||||
s = table {
|
||||
@@ -612,6 +617,20 @@ concrete ExtraExtZul of ExtraExt =
|
||||
Pos => "yibani" ++ "lapha" ;
|
||||
Neg => "ningabi" ++ "lapha"
|
||||
}
|
||||
} ;
|
||||
inf_s = table {
|
||||
NFull => table {
|
||||
Pos => "ukuba" ++ "lapha" ;
|
||||
Neg => "ukungabi" ++ "lapha"
|
||||
} ;
|
||||
NReduced | NPoss => table {
|
||||
Pos => "kuba" ++ "lapha" ;
|
||||
Neg => "kungabi" ++ "lapha"
|
||||
} ;
|
||||
NLoc => table {
|
||||
Pos => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukuba" ++ "lapha" ;
|
||||
Neg => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukungabi" ++ "lapha"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -626,6 +645,20 @@ concrete ExtraExtZul of ExtraExt =
|
||||
Pos => "yibani" ++ "khona" ;
|
||||
Neg => "ningabi" ++ "khona"
|
||||
}
|
||||
} ;
|
||||
inf_s = table {
|
||||
NFull => table {
|
||||
Pos => "ukuba" ++ "khona" ;
|
||||
Neg => "ukungabi" ++ "khona"
|
||||
} ;
|
||||
NReduced | NPoss => table {
|
||||
Pos => "kuba" ++ "khona" ;
|
||||
Neg => "kungabi" ++ "khona"
|
||||
} ;
|
||||
NLoc => table {
|
||||
Pos => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukuba" ++ "khona" ;
|
||||
Neg => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukungabi" ++ "khona"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
@@ -170,34 +170,34 @@ concrete NounExtZul of NounExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
-- not built to work for copulative VPs for now (specifically for agreement)
|
||||
Deverb15 pol vp =
|
||||
let
|
||||
agr = Third C15 Sg ;
|
||||
v = vp.s!MainCl!(Third C15 Sg)!pol.p!PresTense!False
|
||||
agr = Third C15 Sg
|
||||
in
|
||||
{
|
||||
s = table {
|
||||
NFull => case <pol.p,vp.r> of {
|
||||
<Neg,_ > => "uku"++BIND++"nga"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s ;
|
||||
<_,RC> => "uku"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s ;
|
||||
<_,(RA|RE)> => "ukw"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s ;
|
||||
<_,_> => "uk"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s
|
||||
} ;
|
||||
NReduced => case <pol.p,vp.r> of {
|
||||
<Neg,_ > => "ku"++BIND++"nga"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s ;
|
||||
<_,RC> => "ku"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s ;
|
||||
<_,(RA|RE)> => "kw"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s ;
|
||||
<_,_> => "k"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s
|
||||
} ;
|
||||
NPoss => case <pol.p,vp.r> of {
|
||||
<Neg,_ > => "ku"++BIND++"nga"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s ;
|
||||
<_,RC> => "ku"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s ;
|
||||
<_,(RA|RE)> => "kw"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s ;
|
||||
<_,_> => "k"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s
|
||||
} ;
|
||||
NLoc => case <pol.p,vp.r> of {
|
||||
<Neg,_ > => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++ "uku"++BIND++"nga"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s ;
|
||||
<_,_> => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++ "uku"++BIND++v ++ vp.comp ++ vp.advs ++ vp.iadv ++ pol.s
|
||||
}
|
||||
} ;
|
||||
s = \\nform => vp.inf_s!nform!pol.p ++ pol.s ;
|
||||
-- s = table {
|
||||
-- NFull => case <pol.p,vp.r> of {
|
||||
-- <Neg,_ > => "uku"++BIND++"nga"++BIND++v.s!R_i ;
|
||||
-- <_,RC> => "uku"++BIND++v.s!R_a ;
|
||||
-- <_,(RA|RE)> => "ukw"++BIND++v.s!R_a ;
|
||||
-- <_,_> => "uk"++BIND++v.s!R_a
|
||||
-- } ;
|
||||
-- NReduced => case <pol.p,vp.r> of {
|
||||
-- <Neg,_ > => "ku"++BIND++"nga"++BIND++v.s!R_i ;
|
||||
-- <_,RC> => "ku"++BIND++v.s!R_a ;
|
||||
-- <_,(RA|RE)> => "kw"++BIND++v.s!R_a ;
|
||||
-- <_,_> => "k"++BIND++v.s!R_a
|
||||
-- } ;
|
||||
-- NPoss => case <pol.p,vp.r> of {
|
||||
-- <Neg,_ > => "ku"++BIND++"nga"++BIND++v.s!R_i ;
|
||||
-- <_,RC> => "ku"++BIND++v.s!R_a ;
|
||||
-- <_,(RA|RE)> => "kw"++BIND++v.s!R_a ;
|
||||
-- <_,_> => "k"++BIND++v.s!R_a
|
||||
-- } ;
|
||||
-- NLoc => case <pol.p,vp.r> of {
|
||||
-- <Neg,_ > => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++ "uku"++BIND++"nga"++BIND++v.s!R_i ;
|
||||
-- <_,_> => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++ "uku"++BIND++v.s!R_a
|
||||
-- }
|
||||
-- } ;
|
||||
agr = agr ;
|
||||
i = RU ;
|
||||
proDrop = False ;
|
||||
@@ -297,6 +297,24 @@ concrete NounExtZul of NounExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
Pos => "yibani" ++ "s"++BIND++ locadv.s ;
|
||||
Neg => "ningabi" ++ "s"++BIND++ locadv.s
|
||||
}
|
||||
} ;
|
||||
-- inf_s = table {
|
||||
-- Pos => "ukuba" ++ "s"++BIND++ locadv.s ;
|
||||
-- Neg => "ukungabi" ++ "s"++BIND++ locadv.s
|
||||
-- } ;
|
||||
inf_s = table {
|
||||
NFull => table {
|
||||
Pos => "ukuba" ++ "s"++BIND++ locadv.s ;
|
||||
Neg => "ukungabi" ++ "s"++BIND++ locadv.s
|
||||
} ;
|
||||
NReduced | NPoss => table {
|
||||
Pos => "kuba" ++ "s"++BIND++ locadv.s ;
|
||||
Neg => "kungabi" ++ "s"++BIND++ locadv.s
|
||||
} ;
|
||||
NLoc => table {
|
||||
Pos => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukuba" ++ "s"++BIND++ locadv.s ;
|
||||
Neg => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukungabi" ++ "s"++BIND++ locadv.s
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ concrete PChunkZul of PChunk = CatZul, CatExtZul, SymbolZul [Symb] **
|
||||
lincat
|
||||
Chunks = {s : Str} ;
|
||||
Chunk = {s : Str};
|
||||
Chunk_Phr, Chunk_AP, Chunk_Adv, Chunk_Imp, Chunk_S, Chunk_RS, Chunk_QS, Chunk_VP, Chunk_CN, Chunk_NP, Chunk_N, Chunk_Symb = {s: Str} ;
|
||||
Chunk_Phr, Chunk_AP, Chunk_Adv, Chunk_Imp, Chunk_S, Chunk_RS, Chunk_QS, Chunk_VP, Chunk_V, Chunk_CN, Chunk_NP, Chunk_N, Chunk_Symb = {s: Str} ;
|
||||
|
||||
VC = V ;
|
||||
|
||||
@@ -22,6 +22,7 @@ concrete PChunkZul of PChunk = CatZul, CatExtZul, SymbolZul [Symb] **
|
||||
RS_Chunker c = c ;
|
||||
QS_Chunker c = c ;
|
||||
VP_Chunker c = c ;
|
||||
V_Chunker c = c ;
|
||||
CN_Chunker c = c ;
|
||||
NP_Chunker c = c ;
|
||||
N_Chunker c = c ;
|
||||
@@ -42,6 +43,9 @@ concrete PChunkZul of PChunk = CatZul, CatExtZul, SymbolZul [Symb] **
|
||||
VP_Rel_Chunk temp pol pron vp = {
|
||||
s = temp.s ++ pol.s ++ pron.s!NFull ++ vp.s!RelCl!pron.agr!pol.p!temp.t!False
|
||||
} ;
|
||||
V_Chunk v = {
|
||||
s = variants { v.s!R_a ; v.s!R_ile ; v.s!R_e ; v.s!R_i ; v.s!R_anga }
|
||||
} ;
|
||||
CN_Sg_Chunk cn = {
|
||||
s = cn.s!Sg!NFull
|
||||
} ;
|
||||
|
||||
@@ -108,7 +108,7 @@ oper
|
||||
mkV : (hamb : Str) -> V = \hamb -> lin V (regVerb hamb) ;
|
||||
mkV : (th,thi : Str) -> V = \th,thi -> lin V (th_Verb th thi) ;
|
||||
mkV : (guqubal,guqubala,guqubele : Str) -> V = \guqubal,guqubala,guqubele -> lin V (three_Verb guqubal guqubala guqubele) ;
|
||||
mkV : (guqubal,guqubala,guqubele,guqubele_2 : Str) -> V = \guqubal,guqubala,guqubele,guqubele_2 -> lin V (four_Verb guqubal guqubala guqubele guqubele_2) ;
|
||||
mkV : (dlal,dlala,dlalile,dlale : Str) -> V = \dlal,dlala,dlalile,dlale -> lin V (four_Verb dlal dlala dlalile dlale) ;
|
||||
} ;
|
||||
|
||||
passV = overload {
|
||||
|
||||
129
src/zulu/RelativeExtZul.gf
Normal file
129
src/zulu/RelativeExtZul.gf
Normal file
@@ -0,0 +1,129 @@
|
||||
concrete RelativeExtZul of RelativeExt = CatZul ** open ResZul,Prelude,ParamX in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
|
||||
RelVPShort rp vp = case vp.vptype of {
|
||||
CopIdent => rcl_with_id_cop_predicate_short rp vp ;
|
||||
CopAssoc => rcl_with_ass_cop_predicate_short rp vp ;
|
||||
CopEq => rcl_with_eq_cop_predicate_short rp vp ;
|
||||
CopDescr => rcl_with_descr_predicate_short rp vp ;
|
||||
_ => rcl_with_verb_predicate_short rp vp
|
||||
} ;
|
||||
|
||||
oper
|
||||
|
||||
rcl_with_verb_predicate_short : RP -> VP -> { s : Agr => Polarity => BasicTense => Str } = \rp,vp -> {
|
||||
s = \\a,p,t =>
|
||||
let
|
||||
vform = VFIndic RelCl p t ;
|
||||
vow = case <vp.r,p,t> of {
|
||||
<RC,Pos,PresTense> => False ;
|
||||
<_,Pos,PresTense> => True ;
|
||||
<RC,_,PastTense> => False ;
|
||||
<_,_,PastTense> => True ;
|
||||
<_,_,_> => False
|
||||
} ;
|
||||
rcform = RelC ;
|
||||
in
|
||||
-- naively only took out the subject
|
||||
rp.s
|
||||
++ vp.s!RelCl!a!p!t!False
|
||||
++ vp.iadv
|
||||
++ vp.comp
|
||||
++ vp.advs
|
||||
} ;
|
||||
|
||||
rcl_with_ass_cop_predicate_short : RP -> VP -> { s : Agr => Polarity => BasicTense => Str } = \rp,vp -> {
|
||||
s = \\a,p,t =>
|
||||
let
|
||||
vform_main = VFIndic RelCl p t ;
|
||||
pcp = relConcLookup!a!vp.r ++BIND;
|
||||
-- cp = (assoc_cop_pref vp.comp_agr) ;
|
||||
-- cb = (withPref ! vp.r) ++ BIND ++ vp.comp ;
|
||||
-- asp = case vp.asp of {
|
||||
-- Prog => progPref vform_main ;
|
||||
-- _ => []
|
||||
-- } ;
|
||||
in
|
||||
-- naively removed subject
|
||||
"*" ++
|
||||
rp.s ++
|
||||
-- pcp ++
|
||||
vp.s!RelCl!a!p!t!False ++
|
||||
vp.iadv ++
|
||||
vp.advs
|
||||
} ;
|
||||
|
||||
rcl_with_id_cop_predicate_short : RP -> VP -> { s : Agr => Polarity => BasicTense => Str } = \rp,vp -> {
|
||||
s = \\a,p,t =>
|
||||
let
|
||||
vform_main = VFIndic RelCl p t ;
|
||||
pcp = relConcLookup!a!vp.r ++BIND ;
|
||||
-- cp = id_cop_pref vp.comp_agr ;
|
||||
cb = vp.comp ;
|
||||
in
|
||||
-- naively removed subject
|
||||
"*" ++
|
||||
rp.s ++
|
||||
-- pcp ++
|
||||
vp.s!RelCl!a!p!t!False ++
|
||||
vp.iadv ++
|
||||
vp.advs
|
||||
} ;
|
||||
|
||||
rcl_with_ass_cop_predicate_short : RP -> VP -> { s : Agr => Polarity => BasicTense => Str } = \rp,vp -> {
|
||||
s = \\a,p,t =>
|
||||
let
|
||||
vform_main = VFIndic RelCl p t ;
|
||||
pcp = relConcLookup!a!vp.r ++BIND;
|
||||
-- cp = (assoc_cop_pref vp.comp_agr) ;
|
||||
-- cb = (withPref ! vp.r) ++ BIND ++ vp.comp ;
|
||||
-- asp = case vp.asp of {
|
||||
-- Prog => progPref vform_main ;
|
||||
-- _ => []
|
||||
-- } ;
|
||||
in
|
||||
-- naively removed subject
|
||||
"*" ++
|
||||
rp.s ++
|
||||
-- pcp ++
|
||||
vp.s!RelCl!a!p!t!False ++
|
||||
vp.iadv ++
|
||||
vp.advs
|
||||
} ;
|
||||
|
||||
rcl_with_eq_cop_predicate_short : RP -> VP -> { s : Agr => Polarity => BasicTense => Str } = \rp,vp -> {
|
||||
s = \\a,p,t =>
|
||||
let
|
||||
vform_main = VFIndic RelCl p t ;
|
||||
pcp = relConcLookup!a!vp.r ++BIND;
|
||||
-- cb = (eqPref ! vp.r) ++ BIND ++ vp.comp ;
|
||||
in
|
||||
-- naively removed subject
|
||||
"*" ++
|
||||
rp.s ++
|
||||
pcp ++
|
||||
vp.s!RelCl!a!p!t!False ++
|
||||
vp.iadv ++
|
||||
vp.advs
|
||||
} ;
|
||||
|
||||
rcl_with_descr_predicate_short : RP -> VP -> { s : Agr => Polarity => BasicTense => Str } = \rp,vp -> {
|
||||
s = \\a,p,t =>
|
||||
let
|
||||
vform_main = VFIndic RelCl p t ;
|
||||
pcp = pre_cop_pref vform_main a ;
|
||||
-- adjf = aformN a ;
|
||||
-- adjpref = relAdjAgrLookup!p!a ++BIND ;
|
||||
-- comp = vp.ap_comp!adjf ++ vp.comp
|
||||
in
|
||||
"*" ++
|
||||
rp.s ++
|
||||
-- adjpref ++
|
||||
vp.s!RelCl!a!p!t!False
|
||||
++ vp.iadv ++ vp.advs
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -50,29 +50,11 @@ concrete RelativeZul of Relative = CatZul ** open ResZul,Prelude,ParamX in {
|
||||
True => False ;
|
||||
False => True
|
||||
} ;
|
||||
relsuf = case vp.hasComp of {
|
||||
True => [] ;
|
||||
False => relSuf vform
|
||||
} ;
|
||||
rcform = RelC ; -- case vform_main of {
|
||||
-- VFIndic Part Pos PastTense _ => RelCA ;
|
||||
-- VFIndic _ _ _ _ => RelC ;
|
||||
-- VFPot _ _ _ => RelC ;
|
||||
-- VFSubj _ => RelC
|
||||
-- } ;
|
||||
rcform = RelC ;
|
||||
in
|
||||
-- naively only took out the subject
|
||||
rp.s
|
||||
-- ++ (negPref vform_main)
|
||||
-- -- ++ (exclSePref vform_main)
|
||||
-- ++ relConc!a!rcform ++BIND
|
||||
-- -- ++ (negPref2 vform_main)
|
||||
-- -- ++ (exclKaPref vform)
|
||||
-- ++ (tensePref vform)
|
||||
-- ++ vp.oc
|
||||
-- ++ vp.s!(rform vform_main reqLF)
|
||||
++ vp.s!RelCl!a!p!t!reqLF
|
||||
-- ++ relsuf
|
||||
++ vp.iadv
|
||||
++ vp.comp
|
||||
++ vp.advs
|
||||
|
||||
@@ -267,14 +267,23 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
_+"el" => root ++BIND++ "e" ;
|
||||
_+"al" => (tk 2 root) + "el" ++BIND++ "e" ;
|
||||
_+"an" => (tk 2 root) + "en" ++BIND++ "e" ;
|
||||
_+"w" => root ++BIND ++ "e" ;
|
||||
_ => root ++BIND++ "ile"
|
||||
} ;
|
||||
R_e => case root of {
|
||||
_+"an" => (tk 2 root) + "en" ++BIND++ "e" ;
|
||||
_+"al" => (tk 2 root) + "el" ++BIND++ "e" ;
|
||||
_ => root ++BIND++ "e"
|
||||
} ;
|
||||
R_i => root ++BIND++ "i" ;
|
||||
R_anga => root ++BIND++ "anga"
|
||||
R_i => case root of {
|
||||
_+"w" => root ++BIND++ "a" ;
|
||||
_ => root ++BIND++ "i"
|
||||
} ;
|
||||
R_anga => case root of {
|
||||
_+"al" => (tk 2 root) + "el" ++BIND++ "anga" ;
|
||||
_+"an" => (tk 2 root) + "en" ++BIND++ "anga" ;
|
||||
_ => root ++BIND++ "anga"
|
||||
}
|
||||
} ;
|
||||
r = case root of {
|
||||
"a"+_ => RA ;
|
||||
@@ -435,6 +444,116 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
}
|
||||
} ;
|
||||
|
||||
longform_ya : VForm -> Bool -> RInit -> Str = \vform,longform,rinit -> case <vform,longform,rinit> of {
|
||||
<VFIndic _ Pos PresTense,True,RC> => "ya"++BIND ;
|
||||
<VFIndic _ Pos PresTense,True,_> => "y"++BIND ;
|
||||
<VFIndic _ _ _,_,_> => []
|
||||
} ;
|
||||
|
||||
verb_prefix_stative : VForm -> Agr -> RInit -> Syl -> Str = \vform,agr,rinit,syl -> case vform of {
|
||||
VFIndic MainCl Pos PresTense => subjConcLookup!agr!SC ++BIND ;
|
||||
VFIndic MainCl Pos PastTense => subjConcLookup!agr!SCBe ++BIND ;
|
||||
VFIndic MainCl Pos RemPastTense => subjConcLookup!agr!SCRP ++BIND ;
|
||||
VFIndic MainCl Pos FutTense => subjConcLookup!agr!SC ++BIND++ "zo" ++BIND ;
|
||||
VFIndic MainCl Pos RemFutTense => subjConcLookup!agr!SC ++BIND++ "yo" ++BIND ;
|
||||
|
||||
VFIndic MainCl Neg PresTense => "a" ++BIND++ subjConcLookup!agr!SCVowP ++BIND ;
|
||||
VFIndic MainCl Neg PastTense => subjConcLookup!agr!SCBe ++BIND++ "nga" ++BIND ;
|
||||
VFIndic MainCl Neg RemPastTense => subjConcLookup!agr!SCRP ++BIND++ "nga" ++BIND ;
|
||||
VFIndic MainCl Neg FutTense => "a" ++BIND++ subjConcLookup!agr!SCVowP ++BIND++ (tensePref vform rinit syl) ;
|
||||
VFIndic MainCl Neg RemFutTense => "a" ++BIND++ subjConcLookup!agr!SCVowP ++BIND++ (tensePref vform rinit syl) ;
|
||||
|
||||
VFIndic RelCl Pos PresTense => relConcLookup!agr!rinit ;
|
||||
VFIndic RelCl Pos PastTense => relCopConcBeLookup!agr ;
|
||||
VFIndic RelCl Pos RemPastTense => relCopConcRemPastLookup!agr ;
|
||||
VFIndic RelCl Pos FutTense => relConcLookup!agr!rinit ++ (tensePref vform rinit syl) ;
|
||||
VFIndic RelCl Pos RemFutTense => relConcLookup!agr!rinit ++ (tensePref vform rinit syl) ;
|
||||
|
||||
VFIndic RelCl Neg PresTense => relConcLookup!agr!RC ++ "nga" ++BIND ;
|
||||
VFIndic RelCl Neg PastTense => relCopConcBeLookup!agr ++ "nga" ++BIND ;
|
||||
VFIndic RelCl Neg RemPastTense => relCopConcRemPastLookup!agr ++ "nga" ++BIND ;
|
||||
VFIndic RelCl Neg FutTense => relConcLookup!agr!RC ++ "nga" ++BIND++ (tensePref vform rinit syl) ;
|
||||
VFIndic RelCl Neg RemFutTense => relConcLookup!agr!RC ++ "nga" ++BIND++ (tensePref vform rinit syl)
|
||||
} ;
|
||||
|
||||
rform_stative : VForm -> RForm = \vform -> case vform of {
|
||||
VFIndic _ _ PresTense => R_ile ;
|
||||
VFIndic _ _ PastTense => R_ile ;
|
||||
VFIndic _ _ RemPastTense => R_ile ;
|
||||
VFIndic _ _ FutTense => R_a ;
|
||||
VFIndic _ _ RemFutTense => R_a
|
||||
} ;
|
||||
|
||||
verb_prefix_no_oc : VForm -> Bool -> RInit -> Agr -> Str = \vform,longform,rinit,agr -> let
|
||||
sc = case <vform,longform,rinit> of {
|
||||
<VFIndic MainCl Pos PresTense,False,RC> => subjConcLookup!agr!SC ++BIND ;
|
||||
<VFIndic _ Pos PresTense,True,_> => subjConcLookup!agr!SC ++BIND ;
|
||||
<VFIndic _ Pos PresTense,False,_> => subjConcLookup!agr!SCVow ;
|
||||
<VFIndic _ Neg PresTense,_,RC> => subjConcLookup!agr!SCNeg ++BIND ;
|
||||
<VFIndic _ Neg PresTense,_,_> => subjConcLookup!agr!SCNegVow ++BIND ;
|
||||
|
||||
<VFIndic _ Pos PastTense,_,RC> => subjConcLookup!agr!SC ++BIND ;
|
||||
<VFIndic _ Pos PastTense,_,_> => subjConcLookup!agr!SCVow ;
|
||||
|
||||
<VFIndic _ Neg PastTense,_,RC> => subjConcLookup!agr!SCNeg ++BIND ;
|
||||
<VFIndic _ Neg PastTense,_,_> => subjConcLookup!agr!SCNegVow ++BIND ;
|
||||
|
||||
<VFIndic _ Pos RemPastTense,_,RC> => subjConcLookup!agr!SCVow ;
|
||||
<VFIndic _ Pos RemPastTense,_,_> => subjConcLookup!agr!SCVow ;
|
||||
|
||||
<VFIndic _ Neg RemPastTense,_,RC> => subjConcLookup!agr!SCNeg ++BIND ;
|
||||
<VFIndic _ Neg RemPastTense,_,_> => subjConcLookup!agr!SCNegVow ++BIND ;
|
||||
|
||||
<VFIndic _ Pos _,_,_> => subjConcLookup!agr!SC ++BIND ;
|
||||
<VFIndic _ Neg _,_,_> => subjConcLookup!agr!SCNeg ++BIND
|
||||
} ;
|
||||
ya = longform_ya vform longform rinit ;
|
||||
in
|
||||
(negPref vform) ++
|
||||
sc ++
|
||||
ya ;
|
||||
|
||||
verb_prefix_with_oc : VForm -> Bool -> Agr -> Str = \vform,longform,agr -> let
|
||||
sc = case <vform,longform> of {
|
||||
<VFIndic MainCl Pos PresTense> => subjConcLookup!agr!SC ++BIND ;
|
||||
<VFIndic MainCl Pos RemPastTense> => subjConcLookup!agr!SCVow ;
|
||||
<VFIndic _ Pos _> => subjConcLookup!agr!SC ++BIND ;
|
||||
<VFIndic _ Neg _> => subjConcLookup!agr!SCNeg ++BIND
|
||||
} ;
|
||||
ya = longform_ya vform longform RC ;
|
||||
in
|
||||
(negPref vform) ++
|
||||
sc ++
|
||||
ya ;
|
||||
|
||||
-- rform : VForm -> Bool -> RInit -> RForm = \vform,longform,rinit -> case longform of {
|
||||
-- True => case vform of {
|
||||
-- VFIndic _ Pos PresTense => case rinit of {
|
||||
-- RC => "ya" ++BIND++ R_a ;
|
||||
-- _ => "y" ++BIND++ R_a
|
||||
-- } ;
|
||||
-- VFIndic MainCl Neg PresTense => R_i ;
|
||||
-- VFIndic RelCl Neg PresTense => R_i ;
|
||||
-- VFIndic _ _ FutTense => R_a ;
|
||||
-- VFIndic _ _ RemFutTense => R_a ;
|
||||
-- VFIndic _ Pos PastTense => R_ile ;
|
||||
-- VFIndic _ Neg PastTense => R_anga ;
|
||||
-- VFIndic _ Pos RemPastTense => R_a ;
|
||||
-- VFIndic _ Neg RemPastTense => R_anga
|
||||
-- } ;
|
||||
-- False => case vform of {
|
||||
-- VFIndic _ Pos PresTense => R_a ;
|
||||
-- VFIndic MainCl Neg PresTense => R_i ;
|
||||
-- VFIndic RelCl Neg PresTense => R_i ;
|
||||
-- VFIndic _ _ FutTense => R_a ;
|
||||
-- VFIndic _ _ RemFutTense => R_a ;
|
||||
-- VFIndic _ Pos PastTense => R_e ;
|
||||
-- VFIndic _ Neg PastTense => R_anga ;
|
||||
-- VFIndic _ Pos RemPastTense => R_a ;
|
||||
-- VFIndic _ Neg RemPastTense => R_anga
|
||||
-- }
|
||||
-- } ;
|
||||
|
||||
-- VERB MORPHEMES --
|
||||
|
||||
-- tense prefix
|
||||
@@ -560,46 +679,6 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
-- VFSubj _ => []
|
||||
-- } ;
|
||||
|
||||
-- VForm = VFIndic DMood Polarity BasicTense Aspect | VFPot DMood Polarity Aspect | VFSubj Polarity ;
|
||||
-- aux_be : VForm -> Agr -> Str = \vform,agr ->
|
||||
-- let
|
||||
-- sc = subjConc vform agr False ;
|
||||
-- scvow = subjConc vform agr True ;
|
||||
-- short_be = case agr of {
|
||||
-- -- Second Pl => sc ++ "bu" ;
|
||||
-- -- Third C3_4 Sg => sc ++ "bu" ;
|
||||
-- -- Third C3_4 Pl => sc ++ "bi" ;
|
||||
-- -- Third C9_6 Sg | Third C9_10 Sg => sc ++ "bi" ;
|
||||
-- First _ | Second _ | Third _ _ => subjConcLookup!agr!SCBe
|
||||
-- }
|
||||
-- in
|
||||
-- case vform of {
|
||||
-- VFIndic Princ Pos PresTense _ => [] ;
|
||||
-- VFIndic Princ Pos PerfTense _ => short_be ++BIND ; -- 2021-01-26, chose to only implement short form
|
||||
-- VFIndic Princ Pos FutTense _ => sc ++ "zobe" ;
|
||||
-- VFIndic Princ Pos PastTense _ => scvow ++ "abe" ;
|
||||
--
|
||||
-- VFIndic Princ Neg PresTense _ => [] ;
|
||||
-- VFIndic Princ Neg PerfTense _ => short_be ++BIND ;
|
||||
-- VFIndic Princ Neg FutTense _ => sc ++ "zobe" ;
|
||||
-- VFIndic Princ Neg PastTense _ => scvow ++ "abe" ;
|
||||
--
|
||||
-- VFIndic Part Pos PresTense _ => [] ;
|
||||
-- VFIndic Part Pos PerfTense _ => short_be ++BIND ;
|
||||
-- VFIndic Part Pos FutTense _ => sc ++ "zobe" ;
|
||||
-- VFIndic Part Pos PastTense _ => scvow ++ "abe" ;
|
||||
--
|
||||
-- VFIndic Part Neg PresTense _ => [] ;
|
||||
-- VFIndic Part Neg PerfTense _ => short_be ++BIND ;
|
||||
-- VFIndic Part Neg FutTense _ => sc ++ "zobe" ;
|
||||
-- VFIndic Part Neg PastTense _ => scvow ++ "abe" ;
|
||||
--
|
||||
-- VFPot _ Pos _ => sc ++ "ngaba" ;
|
||||
-- VFPot _ Neg _ => sc ++ "ngebe" ;
|
||||
-- VFSubj Pos => sc ++ "be" ++BIND ;
|
||||
-- VFSubj Neg => sc ++ "ngabi"
|
||||
-- } ;
|
||||
|
||||
-------------
|
||||
-- ADVERBS --
|
||||
-------------
|
||||
@@ -686,8 +765,8 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
rel_yo_2 : Str = BIND++"yo" ;
|
||||
|
||||
relSuf : VForm -> Str = \vform -> case vform of {
|
||||
VFIndic _ Pos PresTense => rel_yo_2 ;
|
||||
VFIndic _ Pos PastTense => rel_yo_2 ;
|
||||
VFIndic RelCl Pos PresTense => rel_yo_2 ;
|
||||
VFIndic RelCl Pos PastTense => rel_yo_2 ;
|
||||
VFIndic _ _ _ => []
|
||||
} ;
|
||||
|
||||
@@ -885,6 +964,7 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
(First _ | Second _ ) => RC
|
||||
} ;
|
||||
|
||||
|
||||
locinit : Agr => RInit =
|
||||
table {
|
||||
Third C1_2 Sg => RC ;
|
||||
@@ -1231,9 +1311,9 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
First Pl => table {SC => "si" ; SCVow => "s"++BIND ; SCNeg => "si" ; SCNegVow => "s" ; SCPart => "si" ; SCPS => "si" ; SCVowP => "si" ; SCBe => "besi" ; SCRP => "sasi" } ;
|
||||
Second Pl => table {SC => "ni" ; SCVow => "n"++BIND ; SCNeg => "ni" ; SCNegVow => "n" ; SCPart => "ni" ; SCPS => "ni" ; SCVowP => "ni" ; SCBe => "beni" ; SCRP => "nani" } ;
|
||||
Third C1_2 Sg => table {SC => "u" ; SCVow => "w"++BIND ; SCNeg => "ka" ; SCNegVow => "k" ; SCPart => "e" ; SCPS => "a" ; SCVowP => "wu" ; SCBe => "ube" ; SCRP => "waye" } ;
|
||||
Third C1_2 Pl => table {SC => "ba" ; SCVow => "b"++BIND ; SCNeg => "ba" ; SCNegVow => "b" ; SCPart => "be" ; SCPS => "ba" ; SCVowP => "ba" ; SCBe => "babe" ; SCRP => "babe" } ;
|
||||
Third C1_2 Pl => table {SC => "ba" ; SCVow => "b"++BIND ; SCNeg => "ba" ; SCNegVow => "b" ; SCPart => "be" ; SCPS => "ba" ; SCVowP => "ba" ; SCBe => "bebe" ; SCRP => "babe" } ;
|
||||
Third C1a_2a Sg => table {SC => "u" ; SCVow => "w"++BIND ; SCNeg => "ka" ; SCNegVow => "k" ; SCPart => "e" ; SCPS => "a" ; SCVowP => "wu" ; SCBe => "ube" ; SCRP => "waye" } ;
|
||||
Third C1a_2a Pl => table {SC => "ba" ; SCVow => "b"++BIND ; SCNeg => "ba" ; SCNegVow => "b" ; SCPart => "be" ; SCPS => "ba" ; SCVowP => "ba" ; SCBe => "babe" ; SCRP => "babe" } ;
|
||||
Third C1a_2a Pl => table {SC => "ba" ; SCVow => "b"++BIND ; SCNeg => "ba" ; SCNegVow => "b" ; SCPart => "be" ; SCPS => "ba" ; SCVowP => "ba" ; SCBe => "bebe" ; SCRP => "babe" } ;
|
||||
Third C3_4 Sg => table {SC => "u" ; SCVow => "w"++BIND ; SCNeg => "wu" ; SCNegVow => "w" ; SCPart => "u" ; SCPS => "u" ; SCVowP => "wu" ; SCBe => "ubu" ; SCRP => "wawu" } ;
|
||||
Third C3_4 Pl => table {SC => "i" ; SCVow => "y"++BIND ; SCNeg => "yi" ; SCNegVow => "y" ; SCPart => "i" ; SCPS => "i" ; SCVowP => "yi" ; SCBe => "ibi" ; SCRP => "yayi" } ;
|
||||
Third C5_6 Sg => table {SC => "li" ; SCVow => "l"++BIND ; SCNeg => "li" ; SCNegVow => "l" ; SCPart => "li" ; SCPS => "li" ; SCVowP => "li" ; SCBe => "beli" ; SCRP => "lali" } ;
|
||||
@@ -1247,18 +1327,13 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
Third C11_10 Pl => table {SC => "zi" ; SCVow => "z"++BIND ; SCNeg => "zi" ; SCNegVow => "z" ; SCPart => "zi" ; SCPS => "zi" ; SCVowP => "zi" ; SCBe => "bezi" ; SCRP => "zazi" } ;
|
||||
Third C9_6 Sg => table {SC => "i" ; SCVow => "y"++BIND ; SCNeg => "yi" ; SCNegVow => "y" ; SCPart => "yi" ; SCPS => "i" ; SCVowP => "yi" ; SCBe => "ibi" ; SCRP => "yayi" } ;
|
||||
Third C9_6 Pl => table {SC => "a" ; SCVow => [] ; SCNeg => "wa" ; SCNegVow => "w" ; SCPart => "e" ; SCPS => "a" ; SCVowP => "wa" ; SCBe => "abe" ; SCRP => "aye" } ;
|
||||
Third C14 _ => table {SC => "bu" ; SCVow => "b"++BIND ; SCNeg => "bu" ; SCNegVow => "b" ; SCPart => "bu" ; SCPS => "bu" ; SCVowP => "bu" ; SCBe => "bebu" ; SCRP => "kwaku" } ;
|
||||
Third C14 _ => table {SC => "bu" ; SCVow => "b"++BIND ; SCNeg => "bu" ; SCNegVow => "b" ; SCPart => "bu" ; SCPS => "bu" ; SCVowP => "bu" ; SCBe => "bebu" ; SCRP => "babu" } ;
|
||||
Third C15 _ => table {SC => "ku" ; SCVow => "kw"++BIND ; SCNeg => "ku" ; SCNegVow => "k" ; SCPart => "ku" ; SCPS => "ku" ; SCVowP => "ku" ; SCBe => "beku" ; SCRP => "kwaku" } ;
|
||||
Third C17 _ => table {SC => "ku" ; SCVow => "kw"++BIND ; SCNeg => "ku" ; SCNegVow => "k" ; SCPart => "ku" ; SCPS => "ku" ; SCVowP => "ku" ; SCBe => "beku" ; SCRP => "kwaku" }
|
||||
} ;
|
||||
|
||||
-- scvow_bind : Agr -> Str = \agr -> case agr of {
|
||||
-- (Third C5_6 Pl|Third C9_6 Pl) => [] ;
|
||||
-- _ => subjConcLookup ! agr ! SCVow ++BIND
|
||||
-- } ;
|
||||
|
||||
subjConc : VForm -> Agr -> Bool -> Str = \vform,agr,prevow ->
|
||||
case <prevow,vform> of {
|
||||
subjConc : VForm -> Agr -> Bool -> Str = \vform,agr,vow ->
|
||||
case <vow,vform> of {
|
||||
<False,VFIndic _ Neg _> => subjConcLookup ! agr ! SCNeg ++BIND ;
|
||||
<True,VFIndic _ Neg _> => subjConcLookup ! agr ! SCNegVow ++BIND ;
|
||||
<True,VFIndic _ _ _> => subjConcLookup ! agr ! SCVow ;
|
||||
@@ -1266,19 +1341,6 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
<_,VFIndic _ _ _> => subjConcLookup ! agr ! SC ++BIND
|
||||
} ;
|
||||
|
||||
-- -be aux: reference time in relation to coding time
|
||||
-- relSubjConc : BasicTense -> Agr -> Str = \tense,agr ->
|
||||
-- relSubjConc : BasicTense -> Agr -> Str = \tense,agr ->
|
||||
-- case tense of {
|
||||
-- PastTense => (subjConcLookup ! agr ! SCVow) ++ "a" ++BIND++ case agr of {
|
||||
-- Second Sg | Third C3_4 Sg => "w" ++BIND ;
|
||||
-- Third C1_2 Sg | Third C1a_2a Sg | Third C3_4 Pl | Third C5_6 Pl | Third C9_10 Sg => "y" ++BIND ;
|
||||
-- First _ | Second _ | Third _ _ => []
|
||||
-- } ;
|
||||
-- PerfTense | PresTense => subjConcLookup ! agr ! SC ++BIND++ "be" ; -- NOTE: present tense doesn't make much sense here, so default to perf
|
||||
-- FutTense => subjConcLookup ! agr ! SC ++BIND++ "zobe"
|
||||
-- } ;
|
||||
|
||||
impPref : Polarity -> Str = \pol -> case pol of {
|
||||
Pos => [] ;
|
||||
Neg => "u" ++BIND++ "nga" ++BIND
|
||||
@@ -1291,7 +1353,7 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
in
|
||||
case vform of {
|
||||
VFIndic _ Pos PresTense => subjConcLookup ! agr ! SC ++BIND ;
|
||||
VFIndic _ Pos PastTense => [] ; -- "be"++BIND++ subjConcLookup ! agr ! SCBe ++BIND ;
|
||||
VFIndic _ Pos PastTense => [] ;
|
||||
VFIndic _ Pos RemPastTense => subjConcLookup ! agr ! SC ++BIND++ "be" ++ subjConcLookup ! agr ! SCBe ++BIND ;
|
||||
VFIndic _ Pos FutTense => subjConcLookup ! agr ! SC ++BIND ++ "zobe" ++ subjConcLookup ! agr ! SC ++BIND ;
|
||||
VFIndic _ Pos RemFutTense => subjConcLookup ! agr ! SC ++BIND ++ "yobe" ++ subjConcLookup ! agr ! SC ++BIND ;
|
||||
@@ -1402,7 +1464,18 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
VFIndic _ _ PastTense => relCopConcBeLookup!a ;
|
||||
VFIndic _ _ RemPastTense => case a of {
|
||||
Third C5_6 Pl => [] ; -- relConcLookup!a!RA ; -- a + aye = aye
|
||||
(First _ | Second _ | Third _ _ ) => shortRelConc!a --++ subjConcLookup!a!SCRP
|
||||
(First _ | Second _ | Third _ _ ) => shortRelConc!a
|
||||
}
|
||||
} ;
|
||||
|
||||
quantConcCop : VForm -> Agr -> Str = \vform,a -> case vform of {
|
||||
VFIndic _ _ PresTense => relConcLookup!a!(quantinit!a) ;
|
||||
VFIndic _ _ FutTense => relConcLookup!a!(quantinit!a) ;
|
||||
VFIndic _ _ RemFutTense => relConcLookup!a!(quantinit!a) ;
|
||||
VFIndic _ _ PastTense => relCopConcBeLookup!a ;
|
||||
VFIndic _ _ RemPastTense => case a of {
|
||||
Third C5_6 Pl => [] ; -- relConcLookup!a!RA ; -- a + aye = aye
|
||||
(First _ | Second _ | Third _ _ ) => shortRelConc!a
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -1414,7 +1487,7 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
VFIndic _ _ PastTense => relCopConcBeLookup!a ;
|
||||
VFIndic _ _ RemPastTense => case a of {
|
||||
Third C5_6 Pl => [] ; -- relConcLookup!a!RA ; -- a + aye = aye
|
||||
(First _ | Second _ | Third _ _ ) => shortRelConc!a --++ subjConcLookup!a!SCRP
|
||||
(First _ | Second _ | Third _ _ ) => shortRelConc!a
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -1499,6 +1572,60 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
Second Pl => "ebeni"++BIND
|
||||
} ;
|
||||
|
||||
-- relCopConcBeLookup : Agr => RInit => Str =
|
||||
-- table {
|
||||
-- Third C1_2 Sg => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "obe"++BIND } ;
|
||||
-- Third C1_2 Pl => table { (RA|RE|RI|RO|RU) => "abab"++BIND ; _ => "ababe"++BIND } ;
|
||||
-- Third C1a_2a Sg => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "obe"++BIND } ;
|
||||
-- Third C1a_2a Pl => table { (RA|RE|RI|RO|RU) => "abab"++BIND ; _ => "ababe"++BIND } ;
|
||||
-- Third C3_4 Sg => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "obu"++BIND } ;
|
||||
-- Third C3_4 Pl => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "ebi"++BIND } ;
|
||||
-- Third C5_6 Sg => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "ebeli"++BIND } ;
|
||||
-- Third C5_6 Pl => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "abe"++BIND } ;
|
||||
-- Third C7_8 Sg => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "ebesi"++BIND } ;
|
||||
-- Third C7_8 Pl => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "ebezi"++BIND } ;
|
||||
-- Third C9_10 Sg => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "ebi"++BIND } ;
|
||||
-- Third C9_10 Pl => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "ebezi"++BIND } ;
|
||||
-- Third C11_10 Sg => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "obelu"++BIND } ;
|
||||
-- Third C11_10 Pl => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "ebezi"++BIND } ;
|
||||
-- Third C9_6 Sg => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "ebi"++BIND } ;
|
||||
-- Third C9_6 Pl => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "abe"++BIND } ;
|
||||
-- Third C14 _ => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "obebu"++BIND } ;
|
||||
-- Third C15 _ => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "obeku"++BIND } ;
|
||||
-- Third C17 _ => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "obeku"++BIND } ;
|
||||
-- First Sg => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "ebengi"++BIND } ;
|
||||
-- First Pl => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "ebesi"++BIND } ;
|
||||
-- Second Sg => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "obu"++BIND } ;
|
||||
-- Second Pl => table { (RA|RE|RI|RO|RU) => "ob"++BIND ; _ => "ebeni"++BIND }
|
||||
-- } ;
|
||||
|
||||
relCopConcRemPastLookup : Agr => Str =
|
||||
table {
|
||||
Third C1_2 Sg => "owaye"++BIND ;
|
||||
Third C1_2 Pl => "ababe"++BIND ;
|
||||
Third C1a_2a Sg => "owaye"++BIND ;
|
||||
Third C1a_2a Pl => "ababe"++BIND ;
|
||||
Third C3_4 Sg => "owawu"++BIND ;
|
||||
Third C3_4 Pl => "eyayi"++BIND ;
|
||||
Third C5_6 Sg => "elali"++BIND ;
|
||||
Third C5_6 Pl => "aye"++BIND ;
|
||||
Third C7_8 Sg => "esasi"++BIND ;
|
||||
Third C7_8 Pl => "ezazi"++BIND ;
|
||||
Third C9_10 Sg => "eyayi"++BIND ;
|
||||
Third C9_10 Pl => "ezazi"++BIND ;
|
||||
Third C11_10 Sg => "olwalu"++BIND ;
|
||||
Third C11_10 Pl => "ezazi"++BIND ;
|
||||
Third C9_6 Sg => "eyayi"++BIND ;
|
||||
Third C9_6 Pl => "aye"++BIND ;
|
||||
Third C14 _ => "obabu"++BIND ;
|
||||
Third C15 _ => "okwaku"++BIND ;
|
||||
Third C17 _ => "okwaku"++BIND ;
|
||||
First Sg => "engangi"++BIND ;
|
||||
First Pl => "esasi"++BIND ;
|
||||
Second Sg => "owawu"++BIND ;
|
||||
Second Pl => "enani"++BIND
|
||||
} ;
|
||||
|
||||
-- relCopConcBeLookup : Agr => RInit => Str =
|
||||
-- table {
|
||||
-- Third C1_2 Sg => table { _ => "obe"++BIND } ;
|
||||
@@ -1706,6 +1833,14 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
-- QUANTITATIVE AGREEMENT MORPHEME --
|
||||
-- (demonstatives)
|
||||
|
||||
quantinit : Agr => RInit =
|
||||
table {
|
||||
Third C5_6 Pl => RO ;
|
||||
Third C9_6 Pl => RO ;
|
||||
Third _ _ => RC ;
|
||||
(First _ | Second _ ) => RC
|
||||
} ;
|
||||
|
||||
exclQuantConc : Agr => Str = table {
|
||||
Third C1_2 Sg => "ye" ;
|
||||
Third C1_2 Pl => "bo" ;
|
||||
@@ -1918,7 +2053,7 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
||||
|
||||
kho_cop : VForm -> Agr -> Str = \vform,agr -> case vform of {
|
||||
VFIndic MainCl Neg PresTense => neg_kho_cop_pref agr ++ "kho";
|
||||
VFIndic RelCl Neg PresTense => (relConcCop vform agr RC) ++ (ap_cop_pref (VFIndic RelCl Neg PresTense) agr RelType) ++BIND++ "kho" ;
|
||||
VFIndic RelCl Neg PresTense => (relConcCop vform agr RC) ++ (ap_cop_pref (VFIndic RelCl Neg PresTense) agr RelType) ++ "kho" ;
|
||||
VFIndic RelCl p t => (relConcCop vform agr RC) ++ (ap_cop_pref (VFIndic RelCl p t) agr RelType) ++ "khona" ;
|
||||
VFIndic MainCl p t => (ap_cop_pref (VFIndic MainCl p t) agr RelType) ++ "khona"
|
||||
} ;
|
||||
|
||||
@@ -19,7 +19,7 @@ concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in {
|
||||
False => True
|
||||
}
|
||||
in {
|
||||
s = \\p,t => np.s!NFull ++ (verb_prefix vp p t np.agr) ++ vp.s!MainCl!np.agr!p!t!longform_suffix ++ vp.comp ++ vp.iadv ++ vp.advs ;
|
||||
s = \\p,t => np.s!NFull ++ vp.s!MainCl!np.agr!p!t!longform_suffix ++ vp.comp ++ vp.iadv ++ vp.advs ;
|
||||
} ;
|
||||
_ => cl_with_verb_predicate np vp
|
||||
} ;
|
||||
@@ -183,42 +183,42 @@ concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in {
|
||||
}
|
||||
in
|
||||
subj
|
||||
++ (verb_prefix vp p t np.agr)
|
||||
-- ++ (verb_prefix vp p t np.agr)
|
||||
++ vp.s!MainCl!np.agr!p!t!longform_suffix
|
||||
++ vp.iadv
|
||||
++ vp.comp
|
||||
++ vp.advs
|
||||
} ;
|
||||
|
||||
verb_prefix : VP -> Polarity -> BasicTense -> Agr -> Str = \vp,p,t,agr ->
|
||||
let
|
||||
lfya = case <vp.hasComp,p,t,vp.r> of {
|
||||
<False,Pos,PresTense,RC> => "ya" ++BIND ;
|
||||
<False,Pos,PresTense,_> => "y" ++BIND ;
|
||||
<_,_,_> => []
|
||||
} ;
|
||||
-- vow = case <vp.hasComp,vp.r,p,t> of {
|
||||
vow = case <vp.hasComp,p,t,vp.r> of {
|
||||
<False,Pos,PresTense,RC> => False ; -- force the compiler to understand the table
|
||||
<False,Pos,PresTense,_> => False ; -- long form ya
|
||||
|
||||
<_,_,PresTense,RC> => False ;
|
||||
<_,_,PresTense,_> => True ;
|
||||
<_,_,PastTense,RC> => False ;
|
||||
<_,_,PastTense,_> => True ;
|
||||
<_,_,RemPastTense,RC> => False ;
|
||||
<_,_,RemPastTense,_> => True ;
|
||||
<_,_,_,_> => False
|
||||
} ;
|
||||
vform = VFIndic MainCl p t
|
||||
in
|
||||
(negPref vform)
|
||||
-- ++ (exclSePref vform_main)
|
||||
++ (subjConc vform agr vow)
|
||||
-- ++ (negPref2 vform_main)
|
||||
++ lfya
|
||||
-- ++ (tensePref vform)
|
||||
;
|
||||
-- verb_prefix : VP -> Polarity -> BasicTense -> Agr -> Str = \vp,p,t,agr ->
|
||||
-- let
|
||||
-- lfya = case <vp.hasComp,p,t,vp.r> of {
|
||||
-- <False,Pos,PresTense,RC> => "ya" ++BIND ;
|
||||
-- <False,Pos,PresTense,_> => "y" ++BIND ;
|
||||
-- <_,_,_> => []
|
||||
-- } ;
|
||||
-- -- vow = case <vp.hasComp,vp.r,p,t> of {
|
||||
-- vow = case <vp.hasComp,p,t,vp.r> of {
|
||||
-- <False,Pos,PresTense,RC> => False ; -- force the compiler to understand the table
|
||||
-- <False,Pos,PresTense,_> => False ; -- long form ya
|
||||
--
|
||||
-- <_,_,PresTense,RC> => False ;
|
||||
-- <_,_,PresTense,_> => True ;
|
||||
-- <_,_,PastTense,RC> => False ;
|
||||
-- <_,_,PastTense,_> => True ;
|
||||
-- <_,_,RemPastTense,RC> => False ;
|
||||
-- <_,_,RemPastTense,_> => True ;
|
||||
-- <_,_,_,_> => False
|
||||
-- } ;
|
||||
-- vform = VFIndic MainCl p t
|
||||
-- in
|
||||
-- (negPref vform)
|
||||
-- -- ++ (exclSePref vform_main)
|
||||
-- ++ (subjConc vform agr vow)
|
||||
-- -- ++ (negPref2 vform_main)
|
||||
-- ++ lfya
|
||||
-- -- ++ (tensePref vform)
|
||||
-- ;
|
||||
|
||||
-- TODO: aspect
|
||||
cl_with_eq_cop_predicate : NP -> VP -> { s : Polarity => BasicTense => Str } = \np,vp -> {
|
||||
|
||||
@@ -37,9 +37,7 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
rcp ++ pcp ++ cop_base
|
||||
}
|
||||
} ;
|
||||
imp_s = let
|
||||
imp_vform = VFIndic MainCl Pos PresTense
|
||||
in table {
|
||||
imp_s = table {
|
||||
Sg => let
|
||||
agr = (Second Sg)
|
||||
in table {
|
||||
@@ -53,6 +51,20 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
Neg => "ningabi" ++ ap.s!AF1
|
||||
}
|
||||
} ;
|
||||
inf_s = table {
|
||||
NFull => table {
|
||||
Pos => "ukuba" ++ ap.s!AF1 ;
|
||||
Neg => "ukungabi" ++ ap.s!AF1
|
||||
} ;
|
||||
NReduced | NPoss => table {
|
||||
Pos => "kuba" ++ ap.s!AF1 ;
|
||||
Neg => "kungabi" ++ ap.s!AF1
|
||||
} ;
|
||||
NLoc => table {
|
||||
Pos => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukuba" ++ ap.s!AF1 ;
|
||||
Neg => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukungabi" ++ ap.s!AF1
|
||||
}
|
||||
} ;
|
||||
comp, iadv, advs = [] ;
|
||||
hasComp = True ;
|
||||
r = RC ; -- should not be used
|
||||
@@ -88,6 +100,20 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
Neg => "ningabi" ++ (id_cop_pref np.agr) ++ np.s!NFull
|
||||
}
|
||||
} ;
|
||||
inf_s = table {
|
||||
NFull => table {
|
||||
Pos => "ukuba" ++ np.s!NFull ;
|
||||
Neg => "ukungabi" ++ np.s!NFull
|
||||
} ;
|
||||
NReduced | NPoss => table {
|
||||
Pos => "kuba" ++ np.s!NFull ;
|
||||
Neg => "kungabi" ++ np.s!NFull
|
||||
} ;
|
||||
NLoc => table {
|
||||
Pos => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukuba" ++ np.s!NFull ;
|
||||
Neg => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukungabi" ++ np.s!NFull
|
||||
}
|
||||
} ;
|
||||
comp, iadv, advs = [] ;
|
||||
hasComp = np.heavy ;
|
||||
r = RC ; -- should not be used
|
||||
@@ -125,6 +151,20 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
Neg => "ningabi" ++ cop
|
||||
}
|
||||
} ;
|
||||
inf_s = table {
|
||||
NFull => table {
|
||||
Pos => "ukuba" ++ (assoc_cop_pref Pos np.agr) ++ np.s!NReduced ;
|
||||
Neg => "ukungabi" ++ (assoc_cop_pref Pos np.agr) ++ np.s!NReduced
|
||||
} ;
|
||||
NReduced | NPoss => table {
|
||||
Pos => "kuba" ++ (assoc_cop_pref Pos np.agr) ++ np.s!NReduced ;
|
||||
Neg => "kungabi" ++ (assoc_cop_pref Pos np.agr) ++ np.s!NReduced
|
||||
} ;
|
||||
NLoc => table {
|
||||
Pos => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukuba" ++ (assoc_cop_pref Pos np.agr) ++ np.s!NReduced ;
|
||||
Neg => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukungabi" ++ (assoc_cop_pref Pos np.agr) ++ np.s!NReduced
|
||||
}
|
||||
} ;
|
||||
comp, iadv, advs = [] ;
|
||||
hasComp = np.heavy ;
|
||||
r = RC ; -- should not be used
|
||||
@@ -132,6 +172,54 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
vptype = CopAssoc
|
||||
} ;
|
||||
|
||||
UseVStative v = {
|
||||
s = \\c,a,p,t,l => let
|
||||
vform = VFIndic c p t ;
|
||||
vpref = verb_prefix_stative vform a v.r v.syl ;
|
||||
r = v.s!(rform_stative vform) ;
|
||||
yo = case l of {
|
||||
True => relSuf vform ;
|
||||
False => []
|
||||
}
|
||||
in vpref ++ r ++ yo ;
|
||||
imp_s = table {
|
||||
Sg => table {
|
||||
Pos => case v.syl of {
|
||||
SylMono => "*" ++ "yi"++BIND++v.s!R_a ;
|
||||
SylMult => "*" ++ v.s!R_a
|
||||
} ;
|
||||
Neg => "*" ++ "unga" ++BIND++ v.s!R_i
|
||||
} ;
|
||||
Pl => table {
|
||||
Pos => case v.syl of {
|
||||
SylMono => "*" ++ "yi"++BIND++v.s!R_a ++BIND++"ni" ;
|
||||
SylMult => "*" ++ v.s!R_a ++BIND++"ni"
|
||||
} ;
|
||||
Neg => "*" ++ "ninga" ++BIND++ v.s!R_i
|
||||
}
|
||||
} ;
|
||||
inf_s = table {
|
||||
NFull => table {
|
||||
Pos => "uku" ++BIND++ v.s!R_ile ;
|
||||
Neg => "uku" ++BIND++ "nga" ++BIND++ v.s!R_i
|
||||
} ;
|
||||
NReduced | NPoss => table {
|
||||
Pos => "ku" ++BIND++ v.s!R_ile ;
|
||||
Neg => "ku" ++BIND++ "nga" ++BIND++ v.s!R_i
|
||||
} ;
|
||||
NLoc => table {
|
||||
Pos => "e" ++BIND++ "ku"++BIND++v.s!R_e ++BIND++ "ni" ;
|
||||
Neg => "e" ++BIND++ "ku"++BIND++"nga"++BIND++v.s!R_e ++BIND++ "ni"
|
||||
}
|
||||
} ;
|
||||
iadv, advs, comp = [] ;
|
||||
-- ap_comp = \\_ => [] ;
|
||||
hasComp = False ;
|
||||
r = v.r ;
|
||||
syl = v.syl ;
|
||||
vptype = NoComp
|
||||
} ;
|
||||
|
||||
ComplV2Nonspec v2 np = let
|
||||
oc = objConc np.agr v2.r v2.syl ;
|
||||
longform = case np.heavy of {
|
||||
@@ -142,6 +230,8 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
s = table {
|
||||
MainCl => \\a,p,t,l => let
|
||||
vform = VFIndic MainCl p t ;
|
||||
vpref_no_oc = verb_prefix_no_oc vform l v2.r a ;
|
||||
vpref_with_oc = verb_prefix_with_oc vform l a ;
|
||||
tp = tensePref vform v2.r v2.syl ;
|
||||
-- oc = objConc np.agr v2.r v2.syl ;
|
||||
-- longform = case np.heavy of {
|
||||
@@ -154,8 +244,8 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
Neg => np.s!NReduced
|
||||
} ;
|
||||
in case np.proDrop of {
|
||||
True => tp ++ oc ++ r ++ obj ;
|
||||
False => tp ++ r ++ obj
|
||||
True => vpref_with_oc ++ tp ++ oc ++ r ++ obj ;
|
||||
False => vpref_no_oc ++ tp ++ r ++ obj
|
||||
} ;
|
||||
RelCl => \\a,p,t,l => let
|
||||
vform = (VFIndic RelCl p t) ;
|
||||
@@ -201,6 +291,28 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
}
|
||||
}
|
||||
} ;
|
||||
inf_s = let
|
||||
inf_oc = case np.proDrop of {
|
||||
True => oc ;
|
||||
False => []
|
||||
} ;
|
||||
obj_full = np.s!NFull ;
|
||||
obj_red = np.s!NReduced
|
||||
in
|
||||
table {
|
||||
NFull => table {
|
||||
Pos => "uku" ++BIND++ inf_oc ++ v2.s!R_a ++ obj_full ;
|
||||
Neg => "uku" ++BIND++ "nga" ++BIND++ inf_oc ++ v2.s!R_i ++ obj_red
|
||||
} ;
|
||||
NReduced | NPoss => table {
|
||||
Pos => "ku" ++BIND++ inf_oc ++ v2.s!R_a ++ obj_full ;
|
||||
Neg => "ku" ++BIND++ "nga" ++BIND++ inf_oc ++ v2.s!R_i ++ obj_red
|
||||
} ;
|
||||
NLoc => table {
|
||||
Pos => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++ "uku"++BIND++inf_oc ++ v2.s!R_a ++ obj_full ;
|
||||
Neg => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++ "uku"++BIND++"nga"++BIND++inf_oc ++ v2.s!R_a ++ obj_red
|
||||
}
|
||||
} ;
|
||||
iadv, advs, comp = [] ;
|
||||
ap_comp = \\_ => [] ;
|
||||
hasComp = np.heavy ;
|
||||
@@ -209,9 +321,10 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
vptype = VNPCompl
|
||||
} ;
|
||||
|
||||
CopLoc loc = {
|
||||
CopLocative loc = {
|
||||
s = \\c,a,p,t,l => loc.s!c!a!p!t ;
|
||||
imp_s = loc.imp_s ;
|
||||
inf_s = loc.inf_s ;
|
||||
comp,advs,iadv = [] ;
|
||||
hasComp = True ;
|
||||
r = RC ;
|
||||
@@ -219,30 +332,58 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
vptype = CopLoc
|
||||
} ;
|
||||
|
||||
-- CopPoss np = {
|
||||
-- s = table {
|
||||
-- MainCl => \\a,p,t,l => let
|
||||
-- vform = VFIndic MainCl p t ;
|
||||
-- pcp = (id_pre_cop_pref vform a) ; -- u- / uzoba / akazukuba
|
||||
CopPoss np = {
|
||||
s = table {
|
||||
MainCl => \\a,p,t,l => let
|
||||
vform = VFIndic MainCl p t ;
|
||||
pcp = (id_pre_cop_pref vform a) ; -- u- / uzoba / akazukuba
|
||||
-- cp = (id_cop_pref np.agr) ; -- ng-
|
||||
-- cop_base = poss_concord_agr!(Third C17 Sg)!(nominit!np.agr) ++BIND++ np.s!NPoss -- utshani
|
||||
-- in
|
||||
-- pcp ++ cp ++ cop_base ;
|
||||
-- RelCl => \\a,p,t,l => let
|
||||
-- vform = VFIndic RelCl p t ;
|
||||
-- rcp = (relConcCop vform a RC) ; -- o-
|
||||
-- pcp = (id_pre_cop_pref vform a) ; -- [] / zoba / zukuba
|
||||
cop_base = poss_concord_agr!(Third C17 Sg)!(nominit!np.agr) ++BIND++ np.s!NPoss -- utshani
|
||||
in
|
||||
pcp ++ cop_base ;
|
||||
RelCl => \\a,p,t,l => let
|
||||
vform = VFIndic RelCl p t ;
|
||||
rcp = (relConcCop vform a RC) ; -- o-
|
||||
pcp = (id_pre_cop_pref vform a) ; -- [] / zoba / zukuba
|
||||
-- cp = (id_cop_pref np.agr) ; -- ng-
|
||||
-- cop_base = poss_concord_agr!(Third C17 Sg)!(nominit!np.agr) ++BIND++ np.s!NPoss -- utshani
|
||||
-- in
|
||||
-- rcp ++ pcp ++ cp ++ cop_base
|
||||
-- } ;
|
||||
-- comp, iadv, advs = [] ;
|
||||
-- hasComp = np.heavy ;
|
||||
-- r = RC ; -- should not be used
|
||||
-- syl = SylMult ;
|
||||
-- vptype = CopIdent
|
||||
-- } ;
|
||||
cop_base = poss_concord_agr!(Third C17 Sg)!(nominit!np.agr) ++BIND++ np.s!NPoss -- utshani
|
||||
in
|
||||
rcp ++ pcp ++ cop_base
|
||||
} ;
|
||||
imp_s = let
|
||||
cop = poss_concord_agr!(Third C17 Sg)!(nominit!np.agr) ++BIND++ np.s!NPoss
|
||||
in table {
|
||||
Sg => table {
|
||||
Pos => "yiba" ++ cop ;
|
||||
Neg => "ungabi" ++ cop
|
||||
} ;
|
||||
Pl => table {
|
||||
Pos => "yibani" ++ cop ;
|
||||
Neg => "ningabi" ++ cop
|
||||
}
|
||||
} ;
|
||||
inf_s = let
|
||||
cop = poss_concord_agr!(Third C17 Sg)!(nominit!np.agr) ++BIND++ np.s!NPoss
|
||||
in table {
|
||||
NFull => table {
|
||||
Pos => "ukuba" ++ cop ;
|
||||
Neg => "ukungabi" ++ cop
|
||||
} ;
|
||||
NReduced | NPoss => table {
|
||||
Pos => "kuba" ++ cop ;
|
||||
Neg => "kungabi" ++ cop
|
||||
} ;
|
||||
NLoc => table {
|
||||
Pos => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukuba" ++ cop ;
|
||||
Neg => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukungabi" ++ cop
|
||||
}
|
||||
} ;
|
||||
comp, iadv, advs = [] ;
|
||||
hasComp = np.heavy ;
|
||||
r = RC ; -- should not be used
|
||||
syl = SylMult ;
|
||||
vptype = CopIdent
|
||||
} ;
|
||||
|
||||
CopQuant qs = {
|
||||
s = table {
|
||||
@@ -254,7 +395,7 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
pcp ++ cop_base ;
|
||||
RelCl => \\a,p,t,l => let
|
||||
vform = VFIndic RelCl p t ;
|
||||
rcp = (relConcCop vform a RC) ; -- o-
|
||||
rcp = (quantConcCop vform a) ; -- o-
|
||||
pcp = ap_cop_pref vform a RelType ; -- [] / -nge- / zoba / -benge-
|
||||
cop_base = qs.s!a -- qotho
|
||||
in
|
||||
@@ -276,6 +417,24 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
||||
Neg => "ningabi" ++ qs.s!agr
|
||||
}
|
||||
} ;
|
||||
-- inf_s = table {
|
||||
-- Pos => "ukuba" ++ qs.s!(Third C15 Sg) ; -- this agr doesn't really make sense
|
||||
-- Neg => "ukungabi" ++ qs.s!(Third C15 Sg)
|
||||
-- } ;
|
||||
inf_s = table {
|
||||
NFull => table {
|
||||
Pos => "ukuba" ++ qs.s!(Third C15 Sg) ;
|
||||
Neg => "ukungabi" ++ qs.s!(Third C15 Sg)
|
||||
} ;
|
||||
NReduced | NPoss => table {
|
||||
Pos => "kuba" ++ qs.s!(Third C15 Sg) ;
|
||||
Neg => "kungabi" ++ qs.s!(Third C15 Sg)
|
||||
} ;
|
||||
NLoc => table {
|
||||
Pos => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukuba" ++ qs.s!(Third C15 Sg) ;
|
||||
Neg => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++"ukungabi" ++ qs.s!(Third C15 Sg)
|
||||
}
|
||||
} ;
|
||||
comp, iadv, advs = [] ;
|
||||
hasComp = True ;
|
||||
r = RC ; -- should not be used
|
||||
|
||||
@@ -7,10 +7,11 @@ concrete VerbZul of Verb = CatZul ** open ResZul, Prelude, ParamX in {
|
||||
s = table {
|
||||
MainCl => \\a,p,t,l => let
|
||||
vform = VFIndic MainCl p t ;
|
||||
vpref = verb_prefix_no_oc vform l v.r a ;
|
||||
tp = tensePref vform v.r v.syl ; -- [] / zo- / zuku-
|
||||
r = v.s!(rform (VFIndic MainCl p t) l) -- hamba
|
||||
r = v.s!(rform vform l) -- hamba
|
||||
-- rest of verb prefix built later (eg no "ya" with certain question words)
|
||||
in tp ++ r ;
|
||||
in vpref ++ tp ++ r ;
|
||||
RelCl => \\a,p,t,l => let
|
||||
vform = VFIndic RelCl p t ;
|
||||
rc = relConc vform a v.r ; -- o-
|
||||
@@ -38,6 +39,20 @@ concrete VerbZul of Verb = CatZul ** open ResZul, Prelude, ParamX in {
|
||||
Neg => "ninga" ++BIND++ v.s!R_i
|
||||
}
|
||||
} ;
|
||||
inf_s = table {
|
||||
NFull => table {
|
||||
Pos => "uku" ++BIND++ v.s!R_a ;
|
||||
Neg => "uku" ++BIND++ "nga" ++BIND++ v.s!R_i
|
||||
} ;
|
||||
NReduced | NPoss => table {
|
||||
Pos => "ku" ++BIND++ v.s!R_a ;
|
||||
Neg => "ku" ++BIND++ "nga" ++BIND++ v.s!R_i
|
||||
} ;
|
||||
NLoc => table {
|
||||
Pos => "e" ++BIND++ "ku"++BIND++v.s!R_e ++BIND++ "ni" ;
|
||||
Neg => "e" ++BIND++ "ku"++BIND++"nga"++BIND++v.s!R_e ++BIND++ "ni"
|
||||
}
|
||||
} ;
|
||||
iadv, advs, comp = [] ;
|
||||
-- ap_comp = \\_ => [] ;
|
||||
hasComp = False ;
|
||||
@@ -63,22 +78,36 @@ concrete VerbZul of Verb = CatZul ** open ResZul, Prelude, ParamX in {
|
||||
True => relSuf vform ;
|
||||
False => []
|
||||
} ;
|
||||
in rc ++ tp ++ r ++ "uku" ++ BIND ++ vp.s!MainCl!(First Sg)!Pos!PresTense!False
|
||||
in rc ++ tp ++ r ++ vp.inf_s!NFull!Pos
|
||||
} ;
|
||||
imp_s = table {
|
||||
Sg => table {
|
||||
Pos => case v.syl of {
|
||||
SylMono => "yi"++BIND++v.s!R_a ++ "uku" ++ BIND ++ vp.s!MainCl!(First Sg)!Pos!PresTense!False ;
|
||||
SylMono => "yi"++BIND++v.s!R_a ++ vp.inf_s!NFull!Pos ;
|
||||
SylMult => v.s!R_a
|
||||
} ;
|
||||
Neg => "unga" ++BIND++ v.s!R_i ++ "uku" ++ BIND ++ vp.s!MainCl!(First Sg)!Pos!PresTense!False
|
||||
Neg => "unga" ++BIND++ v.s!R_i ++ vp.inf_s!NFull!Pos
|
||||
} ;
|
||||
Pl => table {
|
||||
Pos => case v.syl of {
|
||||
SylMono => "yi"++BIND++v.s!R_a ++BIND++"ni" ++ "uku" ++ BIND ++ vp.s!MainCl!(First Sg)!Pos!PresTense!False ;
|
||||
SylMult => v.s!R_a ++BIND++"ni" ++ "uku" ++ BIND ++ vp.s!MainCl!(First Sg)!Pos!PresTense!False
|
||||
SylMono => "yi"++BIND++v.s!R_a ++BIND++"ni" ++ vp.inf_s!NFull!Pos ;
|
||||
SylMult => v.s!R_a ++BIND++"ni" ++ vp.inf_s!NFull!Pos
|
||||
} ;
|
||||
Neg => "ninga" ++BIND++ v.s!R_i ++ "uku" ++ BIND ++ vp.s!MainCl!(First Sg)!Pos!PresTense!False
|
||||
Neg => "ninga" ++BIND++ v.s!R_i ++ vp.inf_s!NFull!Pos
|
||||
}
|
||||
} ;
|
||||
inf_s = table {
|
||||
NFull => table {
|
||||
Pos => "uku" ++BIND++ v.s!R_a ++ vp.inf_s!NFull!Pos ;
|
||||
Neg => "uku" ++BIND++ "nga" ++BIND++ v.s!R_i ++ vp.inf_s!NFull!Pos
|
||||
} ;
|
||||
NReduced | NPoss => table {
|
||||
Pos => "ku" ++BIND++ v.s!R_a ++ vp.inf_s!NFull!Pos ;
|
||||
Neg => "ku" ++BIND++ "nga" ++BIND++ v.s!R_i ++ vp.inf_s!NFull!Pos
|
||||
} ;
|
||||
NLoc => table {
|
||||
Pos => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++ "uku"++BIND++v.s!R_a ++ vp.inf_s!NFull!Pos ;
|
||||
Neg => "ku"++BIND++poss_pron_stem!(Third C15 Sg) ++ "uku"++BIND++"nga"++BIND++v.s!R_i ++ vp.inf_s!NFull!Pos
|
||||
}
|
||||
} ;
|
||||
iadv, advs, comp = [] ;
|
||||
@@ -252,7 +281,10 @@ concrete VerbZul of Verb = CatZul ** open ResZul, Prelude, ParamX in {
|
||||
-- }
|
||||
-- } ;
|
||||
|
||||
AdvVP vp adv = vp ** { advs = vp.advs ++ adv.s ; hasComp = True } ;
|
||||
AdvVP vp adv = vp ** {
|
||||
advs = vp.advs ++ adv.s ;
|
||||
hasComp = True
|
||||
} ;
|
||||
-- {
|
||||
-- s = vp.s ;
|
||||
-- oc = vp.oc ;
|
||||
|
||||
@@ -74,13 +74,6 @@ abstract ExtraExt =
|
||||
-- painful_RelStem : RelStem ;
|
||||
-- sharp_RelStem : RelStem ;
|
||||
|
||||
-- TPerfPast : Temp ;
|
||||
-- TPastPast : Temp ;
|
||||
-- TPresPres : Temp ;
|
||||
-- TPastPres : Temp ;
|
||||
-- TPastPerf : Temp ;
|
||||
-- TPerfPerf : Temp ;
|
||||
|
||||
-- PredNP : NP -> Cl ;
|
||||
-- IAdvQS : NP -> INAdv -> QS ; -- where is the wine? iwayini liphi?
|
||||
-- IAdvQCl : NP -> INAdv -> QCl ; -- where is the wine? iwayini liphi?
|
||||
@@ -138,6 +131,7 @@ abstract ExtraExt =
|
||||
ngemuva_LocAdv : LocAdv ;
|
||||
emuva_LocAdv : LocAdv ;
|
||||
ecaleni_LocAdv : LocAdv ;
|
||||
ngaphezu_LocAdv : LocAdv ;
|
||||
|
||||
lapha_Loc : Loc ;
|
||||
khona_Loc : Loc ;
|
||||
|
||||
@@ -11,6 +11,7 @@ cat
|
||||
Chunk_RS ;
|
||||
Chunk_QS ;
|
||||
Chunk_VP ;
|
||||
Chunk_V ;
|
||||
Chunk_CN ;
|
||||
Chunk_NP ;
|
||||
Chunk_N ;
|
||||
@@ -32,6 +33,7 @@ fun
|
||||
RS_Chunker : Chunk_RS -> Chunk ;
|
||||
QS_Chunker : Chunk_QS -> Chunk ;
|
||||
VP_Chunker : Chunk_VP -> Chunk ;
|
||||
V_Chunker : Chunk_V -> Chunk ; -- wordnet
|
||||
CN_Chunker : Chunk_CN -> Chunk ;
|
||||
NP_Chunker : Chunk_NP -> Chunk ;
|
||||
N_Chunker : Chunk_N -> Chunk ;
|
||||
@@ -48,6 +50,7 @@ fun
|
||||
QS_Chunk : QS -> Chunk_QS ;
|
||||
VP_RelYo_Chunk : Temp -> Pol -> Pron -> VP -> Chunk_VP ;
|
||||
VP_Rel_Chunk : Temp -> Pol -> Pron -> VP -> Chunk_VP ;
|
||||
V_Chunk : V -> Chunk_V ;
|
||||
CN_Pl_Chunk : CN -> Chunk_CN ;
|
||||
CN_Sg_Chunk : CN -> Chunk_CN ;
|
||||
NP_Nom_Chunk : NP -> Chunk_NP ;
|
||||
|
||||
9
src/zulu/abstract_ext/RelativeExt.gf
Normal file
9
src/zulu/abstract_ext/RelativeExt.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
--1 Relative clauses and pronouns
|
||||
|
||||
abstract RelativeExt = Cat ** {
|
||||
|
||||
fun
|
||||
|
||||
RelVPShort : RP -> VP -> RCl ; -- who loves John
|
||||
|
||||
}
|
||||
@@ -5,9 +5,9 @@ abstract VerbExt = Cat,CatExt ** {
|
||||
CopAP : AP -> VP ;
|
||||
CopNP : NP -> VP ;
|
||||
CopNPAssoc : NP -> VP ;
|
||||
CopLoc : Loc -> VP ;
|
||||
CopLocative : Loc -> VP ;
|
||||
|
||||
-- CopPoss : NP -> VP ;
|
||||
CopPoss : NP -> VP ;
|
||||
CopQuant : QuantStem -> VP ;
|
||||
|
||||
-- BecomeAP : AP -> VP ;
|
||||
@@ -15,6 +15,7 @@ abstract VerbExt = Cat,CatExt ** {
|
||||
-- BecomeNPAssoc : NP -> VP ;
|
||||
-- BecomeLoc : Loc -> VP ;
|
||||
|
||||
UseVStative : V -> VP ;
|
||||
ComplV2Nonspec : V2 -> NP -> VP ;
|
||||
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ abstract NguniChunk =
|
||||
Backward[ComplV2,ComplV3],
|
||||
ExtraExt,
|
||||
NounExt,
|
||||
RelativeExt,
|
||||
VerbExt,
|
||||
PhraseExt,
|
||||
-- MonoLexAbs,
|
||||
|
||||
@@ -5,6 +5,7 @@ concrete NguniChunkZul of NguniChunk =
|
||||
BackwardZul[ComplV2,ComplV3],
|
||||
ExtraExtZul,
|
||||
NounExtZul,
|
||||
RelativeExtZul,
|
||||
VerbExtZul,
|
||||
PhraseExtZul,
|
||||
-- MonoLexZul,
|
||||
|
||||
@@ -5,6 +5,7 @@ abstract NguniLang =
|
||||
Backward[ComplV2,ComplV3],
|
||||
ExtraExt,
|
||||
NounExt,
|
||||
RelativeExt,
|
||||
VerbExt,
|
||||
PhraseExt
|
||||
-- MonoLexAbs,
|
||||
|
||||
@@ -5,6 +5,7 @@ concrete NguniLangZul of NguniLang =
|
||||
BackwardZul[ComplV2,ComplV3],
|
||||
ExtraExtZul,
|
||||
NounExtZul,
|
||||
RelativeExtZul,
|
||||
VerbExtZul,
|
||||
PhraseExtZul
|
||||
-- MonoLexZul,
|
||||
|
||||
Reference in New Issue
Block a user