forked from GitHub/gf-rgl
662 lines
18 KiB
Plaintext
Executable File
662 lines
18 KiB
Plaintext
Executable File
concrete ExtraExtZul of ExtraExt =
|
|
CatZul [NP,VP,CN,V,Temp,S,Cl,Adv,Pron,QCl,QS,A,RS,IAdv,IComp,Pol,Det,Quant,N,PN],
|
|
CatExtZul
|
|
** open ResZul,Prelude,ParamX in {
|
|
|
|
lin
|
|
-- use with caution
|
|
ProDrop pron = {
|
|
s = table {
|
|
NFull => case pron.proDrop of {
|
|
True => "*" ++ pron.s!NFull ;
|
|
False => pron.empty
|
|
} ;
|
|
nform => "*" ++ pron.s!nform
|
|
} ;
|
|
agr = pron.agr ;
|
|
empty = pron.empty ;
|
|
proDrop = True
|
|
} ;
|
|
|
|
lin
|
|
-- PotQS pol qcl = {
|
|
-- s = pol.s ++ qcl.potqcl!pol.p!Princ ;
|
|
-- qword_pre = qcl.qword_pre ;
|
|
-- qword_post = qcl.qword_post
|
|
-- } ;
|
|
|
|
-- SubjunctS s = { s = s.subjs } ;
|
|
|
|
-- AssocCop np = {
|
|
-- s = \\_ => [] ;
|
|
-- oc = [] ;
|
|
-- comp = np.s!Reduced ;
|
|
-- iadv = [] ;
|
|
-- advs = [] ;
|
|
-- hasComp = True ;
|
|
-- r = case np.proDrop of {
|
|
-- True => RC ;
|
|
-- False => initNP np.isPron np.agr
|
|
-- } ;
|
|
-- syl = SylMult ;
|
|
-- asp = Null ;
|
|
-- asp_pref = \\_ => [] ;
|
|
-- vptype = CopAssoc ;
|
|
-- comp_agr = np.agr ;
|
|
-- ap_comp = \\_ => [] ;
|
|
-- aux_root = [] ;
|
|
-- hasAux = False
|
|
-- } ;
|
|
--
|
|
-- EqCop np = {
|
|
-- s = \\_ => [] ;
|
|
-- oc = [] ;
|
|
-- comp = np.s!Full ;
|
|
-- iadv = [] ;
|
|
-- advs = [] ;
|
|
-- hasComp = True ;
|
|
-- r = case np.isPron of {
|
|
-- True => RC ;
|
|
-- False => initNP np.isPron np.agr
|
|
-- } ;
|
|
-- syl = SylMult ;
|
|
-- asp = Null ;
|
|
-- asp_pref = \\_ => [] ;
|
|
-- vptype = CopEq ;
|
|
-- comp_agr = np.agr ;
|
|
-- ap_comp = \\_ => [] ;
|
|
-- aux_root = [] ;
|
|
-- hasAux = False
|
|
-- } ;
|
|
|
|
-- UsePNPl pn = let
|
|
-- agr = Third pn.c Pl
|
|
-- in {
|
|
-- empty,predet_pre,predet_post = pn.empty ;
|
|
-- s = pn.s!Pl ;
|
|
-- mod = pn.empty ;
|
|
-- dem = pn.empty ;
|
|
-- agr = agr ;
|
|
-- i = nominit!agr ;
|
|
-- proDrop = False ;
|
|
-- isPron = False ;
|
|
-- -- reqLocS = True ;
|
|
-- qdef = Article Spec ;
|
|
-- } ;
|
|
|
|
-- PNAsCN pn = pn ** { mod = \\_ => [] } ;
|
|
|
|
-- DemPron quant pron = let
|
|
-- d = case quant.qdef of {
|
|
-- Article _ => Dem1 ;
|
|
-- Demonstrative d => d
|
|
-- }
|
|
-- in {
|
|
-- empty,predet_pre,dem,predet_post = pron.empty ;
|
|
-- -- dem = case quant.qdef of {
|
|
-- -- Article _ => dem_pron!Dem1!pron.agr ;
|
|
-- -- Demonstrative d => dem_pron!d!pron.agr
|
|
-- -- } ;
|
|
-- -- s = \\nform => quant.s ++ pron.s!nform ;
|
|
-- s = table {
|
|
-- Full => quant.s ++ dem_pron!d!pron.agr ++ pron.empty ;
|
|
-- Reduced => quant.s ++ dem_pron!d!pron.agr ++ pron.empty ;
|
|
-- Poss => quant.s ++ dem_pron!d!pron.agr ++ pron.empty ;
|
|
-- Loc => quant.s ++ dem_pron!d!pron.agr ++ pron.empty
|
|
-- } ;
|
|
-- mod = pron.empty ;
|
|
-- agr = pron.agr ;
|
|
-- i = RC ;
|
|
-- proDrop = False ;
|
|
-- isPron = True ;
|
|
-- -- reqLocS = True ;
|
|
-- qdef = case quant.qdef of {
|
|
-- Article _ => Demonstrative Dem1 ;
|
|
-- Demonstrative d => Demonstrative d
|
|
-- }
|
|
-- } ;
|
|
|
|
-- EmphCN cn = {
|
|
-- s = \\num,nform => pron_stem!(Third cn.c num) ++BIND++ "na" ++ cn.s!num!nform ;
|
|
-- mod = cn.mod ;
|
|
-- c = cn.c ;
|
|
-- empty = cn.empty
|
|
-- } ;
|
|
--
|
|
-- ContrastCN cn = {
|
|
-- s = cn.s ;
|
|
-- mod = \\num => pron_stem!(Third cn.c num) ++BIND++ "na" ++ cn.mod!num ;
|
|
-- c = cn.c ;
|
|
-- empty = cn.empty
|
|
-- } ;
|
|
|
|
-- ApposCNCN cn1 cn2 = {
|
|
-- s = cn1.s ;
|
|
-- mod = \\n => cn1.mod!n ++ cn2.s!n!Full ++ cn2.mod!n ;
|
|
-- c = cn1.c ;
|
|
-- empty = cn1.empty ++ cn2.empty
|
|
-- } ;
|
|
|
|
-- ApposNPN np n = let
|
|
-- num = case np.agr of {
|
|
-- First n => n ;
|
|
-- Second n => n ;
|
|
-- Third c n => n
|
|
-- } ;
|
|
-- in {
|
|
-- empty = np.empty ;
|
|
-- s = np.s;
|
|
-- mod = np.mod ++ np.predet_post ++ n.s!num!Full ;
|
|
-- dem = np.dem ;
|
|
-- predet_pre = np.predet_pre ;
|
|
-- predet_post = np.empty ;
|
|
-- agr = Third n.c num ;
|
|
-- i = np.i ;
|
|
-- proDrop = np.proDrop ;
|
|
-- isPron = np.isPron ;
|
|
-- -- reqLocS = np.reqLocS ;
|
|
-- qdef = np.qdef ;
|
|
-- } ;
|
|
|
|
PossLocNP locn np = {
|
|
empty = np.empty ;
|
|
s = \\n,nform => locn.s ;
|
|
mod = \\num => poss_concord!(C17)!Sg!np.i ++BIND++ (poss_NP np) ;
|
|
c = C17 ;
|
|
emph = False
|
|
} ;
|
|
|
|
InstrNPAdv np =
|
|
let
|
|
pref = instrPref!(initNP np.isPron np.agr)
|
|
in {
|
|
s = pref ++BIND++ (np.s!NReduced) ;
|
|
-- asp = Null ;
|
|
reqLocS = False
|
|
} ;
|
|
|
|
InstrAdvNPAdv adv np =
|
|
let
|
|
pref = instrPref!(initNP np.isPron np.agr)
|
|
in {
|
|
s = adv.s ++ pref ++BIND++ (np.s!NReduced) ;
|
|
-- asp = adv.asp ;
|
|
reqLocS = False
|
|
} ;
|
|
|
|
LocNPAdv np = {
|
|
s = np.s!NLoc ;
|
|
-- asp = Null ;
|
|
reqLocS = case np.isPron of {
|
|
False => True ;
|
|
True => False -- ki-
|
|
} ;
|
|
} ;
|
|
|
|
LocAdvNPAdv adv np = {
|
|
s = adv.s ++ (np.s!NLoc) ;
|
|
-- asp = adv.asp ;
|
|
reqLocS = False
|
|
} ;
|
|
|
|
-- locative kwa
|
|
KwaNPAdv np = {
|
|
-- s = "kwa" ++BIND++ (np.s!Reduced) ;
|
|
s = (poss_concord_agr!(Third C17 Sg)!np.i) ++BIND++ (np.s!NReduced) ;
|
|
-- asp = Null ;
|
|
reqLocS = False
|
|
} ;
|
|
|
|
-- -- NOTE: this seems to be a specific construction. Not yet found in Poulos+Msimang
|
|
-- KwaAdvNPAdv adv np =
|
|
-- let
|
|
-- c = case np.agr of {
|
|
-- (First _ | Second _) => C1_2 ; -- people class as default
|
|
-- Third c _ => c
|
|
-- } ;
|
|
-- n = case np.agr of {
|
|
-- (First Sg | Second Sg | Third _ Sg) => Sg ;
|
|
-- (First Pl | Second Pl | Third _ Pl) => Pl
|
|
-- }
|
|
-- in
|
|
-- {
|
|
-- s = adv.s ++ poss_concord!C15!Sg!(initNP np.isPron np.agr) ++BIND++ np.s!Reduced ++ np.mod ++ np.predet_pre ++ np.predet_post ;
|
|
-- -- asp = adv.asp ;
|
|
-- reqLocS = False
|
|
-- } ;
|
|
|
|
-- locative ku
|
|
KuNPAdv np = {
|
|
s = case np.isPron of {
|
|
True => "ki" ;
|
|
False => case (initNP np.isPron np.agr) of {
|
|
-- RI => "ki" ;
|
|
RO => "ko" ;
|
|
RA => "kw" ;
|
|
_ => "ku"
|
|
}
|
|
}
|
|
++BIND++ (np.s!NReduced) ;
|
|
-- asp = Null ;
|
|
reqLocS = False
|
|
} ;
|
|
|
|
KuAdvNPAdv adv np = {
|
|
s = adv.s ++
|
|
case np.proDrop of {
|
|
True => "ki" ;
|
|
False => case (initNP np.isPron np.agr) of {
|
|
RI => "ki" ;
|
|
RO => "ko" ;
|
|
RA => "kw" ;
|
|
_ => "ku"
|
|
}
|
|
}
|
|
++BIND++ (np.s!NReduced) ;
|
|
-- asp = Null ;
|
|
reqLocS = False
|
|
} ;
|
|
|
|
NaNPAdv np = {
|
|
s = withPref ! (initNP np.isPron np.agr) ++BIND++ (np.s!NReduced) ;
|
|
-- asp = Null ;
|
|
reqLocS = False
|
|
} ;
|
|
|
|
RelAdv adv = {
|
|
s = \\a => relConcLookup!a!RC ++BIND++ adv.s
|
|
} ;
|
|
|
|
-- ProgVP vp = {
|
|
-- s = vp.s ;
|
|
-- perfSuff = vp.perfSuff ;
|
|
-- oc = vp.oc ;
|
|
-- comp = vp.comp ;
|
|
-- hasComp = vp.hasComp ;
|
|
-- r = vp.r ;
|
|
-- syl = vp.syl ;
|
|
-- asp = Prog ;
|
|
-- vptype = vp.vptype ;
|
|
-- comp_agr = vp.comp_agr ;
|
|
-- ap_comp = vp.ap_comp ;
|
|
-- ap_bool = vp.ap_bool ;
|
|
-- aux_root = vp.aux_root ;
|
|
-- hasAux = vp.hasAux
|
|
-- } ;
|
|
|
|
-- QuantRS quant = {
|
|
-- s = \\a => relConcLookup!a!RC ++BIND++ quantConc!a ++BIND++ quant.s
|
|
-- } ;
|
|
--
|
|
-- RelRS rel = {
|
|
-- s = \\a => relConcLookup!a!RC ++BIND++ rel.s
|
|
-- } ;
|
|
|
|
-- QuantCN quant cn = {
|
|
-- empty = cn.empty ;
|
|
-- s = \\num,nform =>
|
|
-- let
|
|
-- agr = Third cn.c num
|
|
-- in
|
|
-- case quant.isPost of {
|
|
-- True => cn.s ! num ! nform ++ quantConc!agr ++BIND++ quant.s ;
|
|
-- False => quantConc!agr ++BIND++ quant.s ++ cn.s ! num ! nform
|
|
-- } ;
|
|
-- c = cn.c
|
|
-- } ;
|
|
-- let
|
|
-- cn_agr = Third cn.c quant.n
|
|
-- in
|
|
-- {
|
|
-- empty = cn.empty ;
|
|
-- s = \\p => case quant.isPost of {
|
|
-- True => cn.s ! quant.n ! p ++ quantConc!cn_agr ++BIND++ quant.s ;
|
|
-- False => quantConc!cn_agr ++BIND++ quant.s ++ cn.s ! quant.n ! p
|
|
-- } ;
|
|
-- loc = quantConc!cn_agr ++BIND++ quant.s ++ cn.loc ! quant.n ;
|
|
-- desc = cn.desc ! quant.n ;
|
|
-- det = cn.empty ;
|
|
-- poss = poss_concord!cn.c!quant.n!(initNP False cn_agr) ++ cn.s ! quant.n ! Reduced ;
|
|
-- agr = cn_agr ;
|
|
-- proDrop = False ;
|
|
-- isPron = False ;
|
|
-- reqLocS = False ;
|
|
-- qdef = Article Def
|
|
-- } ;
|
|
|
|
NumAdjCN cn a = {
|
|
s = \\num,nform => cn.s!num!nform ++ "na" ++BIND++ a.s!AF2 ;
|
|
-- loc = cn.loc ;
|
|
-- desc = \\num =>
|
|
-- let
|
|
-- agr = Third cn.c num ;
|
|
-- in
|
|
-- cn.desc ! num ++ "na" ++BIND++ a.s!AF2 ;
|
|
c = cn.c ;
|
|
empty = cn.empty ++ a.empty
|
|
} ;
|
|
|
|
only_QuantStem = {
|
|
s = table {
|
|
Third C1_2 Sg => "yedwa" ;
|
|
Third C1_2 Pl => "bodwa" ;
|
|
Third C1a_2a Sg => "yedwa" ;
|
|
Third C1a_2a Pl => "bodwa" ;
|
|
Third C3_4 Sg => "wodwa" ;
|
|
Third C3_4 Pl => "yodwa" ;
|
|
Third C5_6 Sg => "lodwa" ;
|
|
Third C5_6 Pl => "odwa" ;
|
|
Third C7_8 Sg => "sodwa" ;
|
|
Third C7_8 Pl => "zodwa" ;
|
|
Third C9_10 Sg => "yodwa" ;
|
|
Third C9_10 Pl => "zodwa" ;
|
|
Third C11_10 Sg => "lodwa" ;
|
|
Third C11_10 Pl => "zodwa" ;
|
|
Third C9_6 Sg => "yodwa" ;
|
|
Third C9_6 Pl => "odwa" ;
|
|
Third C14 _ => "bodwa" ;
|
|
Third C15 _ => "kodwa" ;
|
|
Third C17 _ => "kodwa" ;
|
|
First Sg => "ngedwa" ;
|
|
First Pl => "sodwa" ;
|
|
Second Sg => "wedwa" ;
|
|
Second Pl => "nodwa"
|
|
}
|
|
} ;
|
|
all_QuantStem = {
|
|
s = table {
|
|
Third C1_2 Sg => "wonke" ;
|
|
Third C1_2 Pl => "bonke" ;
|
|
Third C1a_2a Sg => "wonke" ;
|
|
Third C1a_2a Pl => "bonke" ;
|
|
Third C3_4 Sg => "wonke" ;
|
|
Third C3_4 Pl => "yonke" ;
|
|
Third C5_6 Sg => "lonke" ;
|
|
Third C5_6 Pl => "onke" ;
|
|
Third C7_8 Sg => "sonke" ;
|
|
Third C7_8 Pl => "zonke" ;
|
|
Third C9_10 Sg => "yonke" ;
|
|
Third C9_10 Pl => "zonke" ;
|
|
Third C11_10 Sg => "lonke" ;
|
|
Third C11_10 Pl => "zonke" ;
|
|
Third C9_6 Sg => "yonke" ;
|
|
Third C9_6 Pl => "onke" ;
|
|
Third C14 _ => "bonke" ;
|
|
Third C15 _ => "konke" ;
|
|
Third C17 _ => "konke" ;
|
|
First Sg => "ngenke" ;
|
|
First Pl => "sonke" ;
|
|
Second Sg => "wenke" ;
|
|
Second Pl => "nonke"
|
|
}
|
|
} ;
|
|
-- all_pre_Predet = { s = "nke" ; isPost = False } ;
|
|
painful_RelStem = { s = "buhlungu" } ;
|
|
|
|
-- TPerfPast = { s = [] ; t = Relative PerfTense PastTense } ;
|
|
-- TPresPres = { s = [] ; t = PresTense } ;
|
|
-- TPastPres = { s = [] ; t = Relative PastTense PresTense } ;
|
|
-- TPastPerf = { s = [] ; t = Relative PastTense PerfTense } ;
|
|
|
|
PredNP np = cl_with_np_predicate np ;
|
|
|
|
-- IAdvQS np iadv = {
|
|
-- s = case np.proDrop of {
|
|
-- True => np.empty ;
|
|
-- False => np.s ! Full ++ np.desc
|
|
-- } ;
|
|
-- qword_pre = case iadv.postIAdv of {
|
|
-- False => let
|
|
-- vform = VFIndic Princ Pos PresTense Null
|
|
-- in
|
|
-- (subjConc vform np.agr False) ++ iadv.s ;
|
|
-- True => []
|
|
-- } ;
|
|
-- qword_post = case iadv.postIAdv of {
|
|
-- True => let
|
|
-- vform = VFIndic Princ Pos PresTense Null
|
|
-- in
|
|
-- (subjConc vform np.agr False) ++ iadv.s ;
|
|
-- False => []
|
|
-- } ;
|
|
-- } ;
|
|
|
|
AdvQCl adv qcl = {
|
|
s = \\p,t,m => qcl.s!p!t!m ++ adv.s ;
|
|
potqcl = \\p,m => qcl.potqcl!p!m ++ adv.s ;
|
|
qword_pre = qcl.qword_pre ;
|
|
qword_post = qcl.qword_post
|
|
} ;
|
|
|
|
ComplVAux vaux vp = {
|
|
s = vp.s ;
|
|
perfSuff = vp.perfSuff ;
|
|
suff = vp.suff ;
|
|
oc = vp.oc ;
|
|
comp = vp.comp ;
|
|
iadv = vp.iadv ;
|
|
advs = vp.advs ;
|
|
hasComp = vp.hasComp ;
|
|
r = vp.r ;
|
|
syl = vp.syl ;
|
|
asp = vp.asp ;
|
|
asp_pref = vp.asp_pref ;
|
|
vptype = vp.vptype ;
|
|
comp_agr = vp.comp_agr ;
|
|
ap_comp = vp.ap_comp ;
|
|
aux_root = vaux.s ;
|
|
hasAux = True
|
|
} ;
|
|
|
|
-- UseLocNP np = {
|
|
-- s = [] ;
|
|
-- perfSuff = [] ;
|
|
-- oc = [] ;
|
|
-- comp = "s" ++BIND++ np.loc ++ np.desc ;
|
|
-- hasComp = True ;
|
|
-- r = nominit!np.agr ;
|
|
-- syl = SylMult ;
|
|
-- asp = Null ;
|
|
-- vptype = CopIdent ;
|
|
-- comp_agr = np.agr ;
|
|
-- ap_comp = \\_ => [] ;
|
|
-- ap_bool = False ;
|
|
-- aux_root = [] ;
|
|
-- hasAux = False
|
|
-- } ;
|
|
|
|
ConjNAdv conj s = {
|
|
s = conj.s ++ s.s;
|
|
-- asp = Null ;
|
|
reqLocS = False
|
|
} ;
|
|
|
|
where_ConjN = { s = "lapho" } ;
|
|
|
|
-- IAdvVP vp iadv = {
|
|
-- s = vp.s ;
|
|
-- -- perfSuff = vp.perfSuff ;
|
|
-- -- suff = vp.suff ;
|
|
-- -- oc = vp.oc ;
|
|
-- iadv = vp.iadv ++ iadv.s ;
|
|
-- comp = vp.comp ;
|
|
-- advs = vp.advs ;
|
|
-- hasComp = True ;
|
|
-- r = vp.r ;
|
|
-- -- syl = vp.syl ;
|
|
-- -- asp = vp.asp ;
|
|
-- -- asp_pref = vp.asp_pref ;
|
|
-- vptype = vp.vptype -- ;
|
|
-- -- comp_agr = vp.comp_agr ;
|
|
-- -- ap_comp = vp.ap_comp ;
|
|
-- -- aux_root = vp.aux_root ;
|
|
-- -- hasAux = vp.hasAux
|
|
-- } ;
|
|
|
|
it3_Pron = mkPron (Third C3_4 Sg) ;
|
|
they4_Pron = mkPron (Third C3_4 Pl) ;
|
|
it5_Pron = mkPron (Third C5_6 Sg) ;
|
|
they6_Pron = mkPron (Third C5_6 Pl) ;
|
|
it7_Pron = mkPron (Third C7_8 Sg) ;
|
|
they8_Pron = mkPron (Third C7_8 Pl) ;
|
|
it9_Pron = mkPron (Third C9_10 Sg) ;
|
|
they10_Pron = mkPron (Third C9_10 Pl) ;
|
|
it11_Pron = mkPron (Third C11_10 Sg) ;
|
|
it14_Pron = mkPron (Third C14 Sg) ;
|
|
it15_Pron = mkPron (Third C15 Sg) ;
|
|
it17_Pron = mkPron (Third C17 Sg) ;
|
|
|
|
yonder_Quant = { s = [] ; dist = Dem3 } ;
|
|
|
|
at_which_IAdv np = {
|
|
s = "nga" ++BIND++ atwhichPhiPref!np.agr ++BIND++ "phi" ++ (np.s!NFull) ;
|
|
postIAdv = False
|
|
} ;
|
|
|
|
what_IAdv = {s = BIND++"ni" ; postIAdv = True } ;
|
|
|
|
how_many_IAdj = regAdj "ngaki" ;
|
|
|
|
-- IAdjIAdv np iadj = {
|
|
-- s = (np.s!Loc) ++ adjConcLookup!np.agr ++BIND++ iadj.s!(aformN np.agr) ;
|
|
-- postIAdv = False
|
|
-- } ;
|
|
|
|
how_IComp = { s = "njani" ; postIComp = False } ; -- -njani
|
|
where_IComp = { s = "phi" ; postIComp = True } ; -- -phi
|
|
how_much_IComp = { s = "ngakanani" ; postIComp = False } ; -- -ngakanani
|
|
|
|
how2_IAdv = {s = "anjani" ; postIAdv = False } ;
|
|
how8much2_IAdv = {s = "angakanani" ; postIAdv = False } ;
|
|
|
|
phakathi_LocN = { s = "phakathi" ; empty = [] } ;
|
|
phansi_LocN = { s = "phansi" ; empty = [] } ;
|
|
phesheya_LocN = { s = "phesheya" ; empty = [] } ;
|
|
phandle_LocN = { s = "phandle" ; empty = [] } ;
|
|
phambili_LocN = { s = "phambili" ; empty = [] } ;
|
|
phambi_LocN = { s = "phambi" ; empty = [] } ;
|
|
phakade_LocN = { s = "phakade" ; empty = [] } ;
|
|
phezulu_LocN = { s = "phezulu" ; empty = [] } ;
|
|
|
|
lapha_Loc = {
|
|
s = table {
|
|
MainCl => \\a,p,t => let
|
|
vform = VFIndic MainCl p t ;
|
|
pcp = ap_cop_pref vform a RelType ; -- u-
|
|
cop_base = "lapha"
|
|
in
|
|
case vform of {
|
|
VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base;
|
|
VFIndic _ _ _ => pcp ++ cop_base
|
|
} ;
|
|
RelCl => \\a,p,t => let
|
|
vform = VFIndic RelCl p t ;
|
|
rcp = (relConcCop vform a RC) ; -- o- / onge-
|
|
pcp = ap_cop_pref vform a RelType ; -- [] / zoba
|
|
cop_base = "lapha" -- lapha
|
|
in
|
|
case vform of {
|
|
VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base;
|
|
VFIndic _ _ _ => rcp ++ pcp ++ cop_base
|
|
}
|
|
}
|
|
} ;
|
|
|
|
khona_Loc = {
|
|
s = \\c,a,p,t => kho_cop (VFIndic c p t) a ;
|
|
} ;
|
|
|
|
kakhulu_Adv = { s = "kakhulu" ; reqLocS = False } ;
|
|
|
|
AdvQS adv qs = { s = adv.s ++ qs.s ; qword_pre = [] ; qword_post = [] } ;
|
|
|
|
-- Deverb15 v =
|
|
-- let
|
|
-- agr = Third C15 Sg ;
|
|
-- in
|
|
-- {
|
|
-- s = \\_ => table {
|
|
-- Full => case v.r of {
|
|
-- RC => "uku"++BIND++(v.s!R_a) ;
|
|
-- (RA|RE) => "ukw"++BIND++(v.s!R_a) ;
|
|
-- _ => "uk"++BIND++(v.s!R_a)
|
|
-- } ;
|
|
-- Reduced => case v.r of {
|
|
-- RC => "ku"++BIND++(v.s!R_a) ;
|
|
-- (RA|RE) => "kw"++BIND++(v.s!R_a) ;
|
|
-- _ => "k"++BIND++(v.s!R_a)
|
|
-- } ;
|
|
-- Poss => case v.r of {
|
|
-- RC => "ku"++BIND++(v.s!R_a) ;
|
|
-- (RA|RE) => "kw"++BIND++(v.s!R_a) ;
|
|
-- _ => "k"++BIND++(v.s!R_a)
|
|
-- } ;
|
|
-- Loc => case v.r of {
|
|
-- RC => "eku"++BIND++(v.s!R_e)++BIND++"ni" ;
|
|
-- (RA|RE) => "ekw"++BIND++(v.s!R_e)++BIND++"ni" ;
|
|
-- _ => "ek"++BIND++(v.s!R_e)++BIND++"ni"
|
|
-- }
|
|
-- } ;
|
|
-- c = C15 ;
|
|
-- empty = []
|
|
-- } ;
|
|
|
|
oper
|
|
-- qcl_np_iadv : NP -> IAdv -> {s : Polarity => ZTense => DMood => Str ; potqcl : Polarity => DMood => Str ; qword_pre : Str ; qword_post : Str } = \np,iadv -> {
|
|
-- s = \\p,t,dm =>
|
|
-- let
|
|
-- subj = case np.proDrop of {
|
|
-- True => np.empty ;
|
|
-- False => np.s ! Full ++ np.desc
|
|
-- } ;
|
|
-- aux_tense = case t of {
|
|
-- Absolute bt => bt ;
|
|
-- Relative b1 b2 => b1
|
|
-- } ;
|
|
-- main_tense = case t of {
|
|
-- Absolute bt => bt ;
|
|
-- Relative b1 b2 => b2
|
|
-- } ;
|
|
-- vform_aux = VFIndic dm p aux_tense Null ;
|
|
-- vform_main = VFIndic dm p main_tense Null ;
|
|
-- aux = case t of {
|
|
-- Absolute bt => [] ;
|
|
-- Relative _ _ => relSubjConc aux_tense np.agr -- (subjConcLookup!np.agr!SC) ++BIND++ "b" ++BIND++ (vtermSuff vform_aux False)
|
|
-- } ;
|
|
-- in
|
|
-- subj ++
|
|
-- aux ++
|
|
-- (subjConc vform_main np.agr False) ++
|
|
-- iadv.s ;
|
|
-- potqcl = \\p,dm =>
|
|
-- let
|
|
-- subj = case np.proDrop of {
|
|
-- True => np.empty ;
|
|
-- False => np.s ! Full ++ np.desc
|
|
-- } ;
|
|
-- vform_main = VFPot dm p Null ;
|
|
-- in
|
|
-- subj ++
|
|
-- -- aux ++
|
|
-- (subjConc vform_main np.agr False) ++
|
|
-- (potPref vform_main) ++
|
|
-- iadv.s ;
|
|
-- qword_pre = [] ;
|
|
-- qword_post = []
|
|
-- } ;
|
|
|
|
cl_with_np_predicate : NP -> { s : Polarity => BasicTense => Str } = \np -> {
|
|
-- advs = [] ;
|
|
s = \\p,t =>
|
|
let
|
|
vform_main = VFIndic MainCl p t ;
|
|
--pcp = pre_cop_pref vform_main np.agr ;
|
|
cp = id_cop_pref np.agr ;
|
|
cb = np.s!NFull
|
|
in
|
|
cp ++BIND++
|
|
cb
|
|
} ;
|
|
|
|
}
|