forked from GitHub/gf-rgl
@@ -9,38 +9,89 @@ concrete BackwardZul of Backward = CatZul ** open ResZul,Prelude,ParamX in {
|
|||||||
|
|
||||||
-- from Verb 19/4/2008
|
-- from Verb 19/4/2008
|
||||||
|
|
||||||
ComplV2 v2 np = {
|
ComplV2 v2 np = let
|
||||||
|
oc = objConc np.agr v2.r v2.syl ;
|
||||||
|
longform = case np.heavy of {
|
||||||
|
True => False ;
|
||||||
|
False => True
|
||||||
|
} ;
|
||||||
|
obj = np.s!NFull
|
||||||
|
in {
|
||||||
s = table {
|
s = table {
|
||||||
MainCl => \\a,p,t,l => let
|
MainCl => \\a,p,t,l => let
|
||||||
vform = (VFIndic MainCl p t) ;
|
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-
|
tp = tensePref vform v2.r v2.syl ; -- [] / zo- / zuku-
|
||||||
oc = objConc np.agr v2.r v2.syl ; -- [] / m -
|
-- oc = objConc np.agr v2.r v2.syl ; -- [] / m -
|
||||||
longform = case np.heavy of {
|
-- longform = case np.heavy of {
|
||||||
True => False ;
|
-- True => False ;
|
||||||
False => True
|
-- False => True
|
||||||
} ;
|
-- } ;
|
||||||
r = v2.s!(rform (VFIndic MainCl p t) longform) ; -- bona / boni
|
r = v2.s!(rform (VFIndic MainCl p t) longform) ; -- bona / boni
|
||||||
obj = np.s!NFull -- [] / inkomo
|
-- obj = np.s!NFull -- [] / inkomo
|
||||||
in case np.proDrop of {
|
in case np.proDrop of {
|
||||||
True => tp ++ oc ++ r ++ obj ;
|
True => vpref_with_oc ++ tp ++ oc ++ r ++ obj ;
|
||||||
False => tp ++ r ++ obj
|
False => vpref_no_oc ++ tp ++ r ++ obj
|
||||||
} ;
|
} ;
|
||||||
RelCl => \\a,p,t,l => let
|
RelCl => \\a,p,t,l => let
|
||||||
vform = (VFIndic RelCl p t) ;
|
vform = (VFIndic RelCl p t) ;
|
||||||
rc = relConc vform a v2.r ; -- o- / onga-
|
rc = relConc vform a v2.r ; -- o- / onga-
|
||||||
tp = tensePref vform v2.r v2.syl ; -- [] / zo- / zuku-
|
tp = tensePref vform v2.r v2.syl ; -- [] / zo- / zuku-
|
||||||
oc = objConc np.agr v2.r v2.syl ; -- [] / m -
|
-- oc = objConc np.agr v2.r v2.syl ; -- [] / m -
|
||||||
longform = case np.heavy of {
|
-- longform = case np.heavy of {
|
||||||
True => False ;
|
-- True => False ;
|
||||||
False => True
|
-- False => True
|
||||||
} ;
|
-- } ;
|
||||||
r = v2.s!(rform vform longform) ; -- bona / boni
|
r = v2.s!(rform vform longform) ; -- bona / boni
|
||||||
obj = np.s!NFull -- [] / inkomo
|
-- obj = np.s!NFull -- [] / inkomo
|
||||||
in case np.proDrop of {
|
in case np.proDrop of {
|
||||||
True => rc ++ tp ++ oc ++ r ++ obj ;
|
True => rc ++ tp ++ oc ++ r ++ obj ;
|
||||||
False => rc ++ tp ++ r ++ obj
|
False => rc ++ tp ++ r ++ obj
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
imp_s = table {
|
||||||
|
Sg => table {
|
||||||
|
Pos => case np.proDrop of {
|
||||||
|
True => oc ++ v2.s!R_e ++ obj ;
|
||||||
|
False => v2.s!R_a ++ obj
|
||||||
|
} ;
|
||||||
|
Neg => case np.proDrop of {
|
||||||
|
True => "unga" ++BIND++ oc ++ v2.s!R_i ++ obj ;
|
||||||
|
False => "unga" ++BIND++ v2.s!R_i ++ obj
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
Pos => case np.proDrop of {
|
||||||
|
True => oc ++ v2.s!R_e ++BIND++"ni" ++ obj ;
|
||||||
|
False => v2.s!R_a ++BIND++"ni" ++ obj
|
||||||
|
} ;
|
||||||
|
Neg => case np.proDrop of {
|
||||||
|
True => "ninga" ++BIND++ oc ++ v2.s!R_i ++ obj ;
|
||||||
|
False => "ninga" ++BIND++ v2.s!R_i ++ obj
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
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 = [] ;
|
iadv, advs, comp = [] ;
|
||||||
ap_comp = \\_ => [] ;
|
ap_comp = \\_ => [] ;
|
||||||
hasComp = np.heavy ;
|
hasComp = np.heavy ;
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
concrete CatExtZul of CatExt = open ResZul,Prelude,ParamX in {
|
concrete CatExtZul of CatExt = open ResZul,Prelude,ParamX in {
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
Loc = { s : CType => Agr => Polarity => BasicTense => Str } ;
|
Loc = {
|
||||||
|
s : CType => Agr => Polarity => BasicTense => Str ;
|
||||||
|
imp_s : Number => Polarity => Str ;
|
||||||
|
inf_s : NForm => Polarity => Str
|
||||||
|
} ;
|
||||||
LocN = { s : Str } ;
|
LocN = { s : Str } ;
|
||||||
|
LocAdv = { s : Str ; reqLocS : Bool } ;
|
||||||
QuantStem = { s : Agr => Str } ;
|
QuantStem = { s : Agr => Str } ;
|
||||||
RelStem = { s : Str } ;
|
RelStem = { s : Str } ;
|
||||||
VAux = { s : Str ; at : AuxType } ;
|
VAux = { s : Str ; at : AuxType } ;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ concrete CatZul of Cat = CommonX - [Temp,Tense,Adv,IAdv] **
|
|||||||
-- s : ResZul.Tense => Anteriority => CPolarity => Order => Str ;
|
-- s : ResZul.Tense => Anteriority => CPolarity => Order => Str ;
|
||||||
-- c2 : Str
|
-- c2 : Str
|
||||||
-- } ;
|
-- } ;
|
||||||
Imp = { s : Polarity => Str } ;
|
Imp = { s : Number => Polarity => Str } ;
|
||||||
|
|
||||||
-- Question
|
-- Question
|
||||||
|
|
||||||
@@ -47,11 +47,13 @@ concrete CatZul of Cat = CommonX - [Temp,Tense,Adv,IAdv] **
|
|||||||
|
|
||||||
VP = {
|
VP = {
|
||||||
s : CType => Agr => Polarity => BasicTense => Bool => Str ; -- TODO: mood
|
s : CType => Agr => Polarity => BasicTense => Bool => Str ; -- TODO: mood
|
||||||
|
imp_s : Number => Polarity => Str ;
|
||||||
|
inf_s : NForm => Polarity => Str ;
|
||||||
-- oc : Str ;
|
-- oc : Str ;
|
||||||
comp : Str ;
|
comp : Str ;
|
||||||
iadv : Str ;
|
iadv : Str ;
|
||||||
advs : Str ;
|
advs : Str ;
|
||||||
hasComp : Bool ;
|
hasComp : Bool ; -- indicates whether to use long form
|
||||||
r : RInit ;
|
r : RInit ;
|
||||||
syl : Syl ;
|
syl : Syl ;
|
||||||
-- asp : Aspect ;
|
-- asp : Aspect ;
|
||||||
@@ -137,7 +139,7 @@ concrete CatZul of Cat = CommonX - [Temp,Tense,Adv,IAdv] **
|
|||||||
-- CAdv = {s : Polarity => Str; p : Str} ;
|
-- CAdv = {s : Polarity => Str; p : Str} ;
|
||||||
|
|
||||||
-- Open lexical classes, e.g. Lexicon
|
-- Open lexical classes, e.g. Lexicon
|
||||||
V,V2,VA,VS,V3 = {
|
V,V2,VA,VS,V3,VV = {
|
||||||
s : RForm => Str ;
|
s : RForm => Str ;
|
||||||
r : RInit ;
|
r : RInit ;
|
||||||
syl : Syl ;
|
syl : Syl ;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
concrete ExtraExtZul of ExtraExt =
|
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,Conj],
|
CatZul [NP,VP,CN,V,Temp,S,Cl,Adv,Pron,QCl,QS,A,RS,IAdv,IComp,Pol,Det,Quant,N,PN,Conj,VV],
|
||||||
CatExtZul
|
CatExtZul
|
||||||
** open ResZul,Prelude,ParamX in {
|
** open ResZul,Prelude,ParamX in {
|
||||||
|
|
||||||
@@ -19,6 +19,19 @@ concrete ExtraExtZul of ExtraExt =
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
ExistNP np = {
|
||||||
|
s = let
|
||||||
|
cp = (id_cop_pref np.agr) ; -- ng-
|
||||||
|
cop_base = np.s!NFull -- umfundi
|
||||||
|
in
|
||||||
|
cp ++ cop_base ;
|
||||||
|
} ;
|
||||||
|
GreetSg = {
|
||||||
|
s = "sawubona"
|
||||||
|
} ;
|
||||||
|
GreetPl = {
|
||||||
|
s = "sanibonani"
|
||||||
|
} ;
|
||||||
-- PotQS pol qcl = {
|
-- PotQS pol qcl = {
|
||||||
-- s = pol.s ++ qcl.potqcl!pol.p!Princ ;
|
-- s = pol.s ++ qcl.potqcl!pol.p!Princ ;
|
||||||
-- qword_pre = qcl.qword_pre ;
|
-- qword_pre = qcl.qword_pre ;
|
||||||
@@ -160,12 +173,19 @@ concrete ExtraExtZul of ExtraExt =
|
|||||||
|
|
||||||
PossLocNP locn np = {
|
PossLocNP locn np = {
|
||||||
empty = np.empty ;
|
empty = np.empty ;
|
||||||
s = \\n,nform => locn.s ;
|
s = \\n,nform => locn.s ++ poss_concord!(C17)!n!np.i ++BIND++ (poss_NP np);
|
||||||
mod = \\num => poss_concord!(C17)!Sg!np.i ++BIND++ (poss_NP np) ;
|
-- mod = \\num => poss_concord!(C17)!Sg!np.i ++BIND++ (poss_NP np) ;
|
||||||
c = C17 ;
|
c = C17 ;
|
||||||
emph = False
|
emph = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
PossNPLoc cn np = {
|
||||||
|
empty = np.empty ;
|
||||||
|
s = \\n,nform => cn.s!n!nform ++ poss_concord!cn.c!n!RC ++BIND++"s"++BIND++ (loc_NP np);
|
||||||
|
c = cn.c ;
|
||||||
|
emph = False
|
||||||
|
} ;
|
||||||
|
|
||||||
InstrNPAdv np =
|
InstrNPAdv np =
|
||||||
let
|
let
|
||||||
pref = instrPref!(initNP np.isPron np.agr)
|
pref = instrPref!(initNP np.isPron np.agr)
|
||||||
@@ -184,14 +204,14 @@ concrete ExtraExtZul of ExtraExt =
|
|||||||
reqLocS = False
|
reqLocS = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
LocNPAdv np = {
|
-- LocNPAdv np = {
|
||||||
s = np.s!NLoc ;
|
-- s = np.s!NLoc ;
|
||||||
-- asp = Null ;
|
-- -- asp = Null ;
|
||||||
reqLocS = case np.isPron of {
|
-- reqLocS = case np.isPron of {
|
||||||
False => True ;
|
-- False => True ;
|
||||||
True => False -- ki-
|
-- True => False -- ki-
|
||||||
} ;
|
-- } ;
|
||||||
} ;
|
-- } ;
|
||||||
|
|
||||||
LocAdvNPAdv adv np = {
|
LocAdvNPAdv adv np = {
|
||||||
s = adv.s ++ (np.s!NLoc) ;
|
s = adv.s ++ (np.s!NLoc) ;
|
||||||
@@ -207,23 +227,11 @@ concrete ExtraExtZul of ExtraExt =
|
|||||||
reqLocS = False
|
reqLocS = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- -- NOTE: this seems to be a specific construction. Not yet found in Poulos+Msimang
|
-- NOTE: this seems to be a specific construction. Not yet found in Poulos+Msimang
|
||||||
-- KwaAdvNPAdv adv np =
|
KwaAdvNPAdv adv np = {
|
||||||
-- let
|
s = adv.s ++ (poss_concord_agr!(Third C17 Sg)!np.i) ++BIND++ (np.s!NReduced) ;
|
||||||
-- c = case np.agr of {
|
reqLocS = False
|
||||||
-- (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
|
-- locative ku
|
||||||
KuNPAdv np = {
|
KuNPAdv np = {
|
||||||
@@ -263,6 +271,37 @@ concrete ExtraExtZul of ExtraExt =
|
|||||||
reqLocS = False
|
reqLocS = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
NPAdv np = {
|
||||||
|
s = case np.proDrop of {
|
||||||
|
False => np.s!NFull ;
|
||||||
|
True => "*" ++ np.s!NFull
|
||||||
|
} ;
|
||||||
|
reqLocS = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
LocAdvAdv l = l ** { reqLocS = False } ;
|
||||||
|
|
||||||
|
LocAdvNP adv np = {
|
||||||
|
s = adv.s ++ (poss_concord_agr!(Third C17 Sg)!np.i) ++BIND++ (np.s!NReduced) ;
|
||||||
|
reqLocS = False
|
||||||
|
} ; -- ngaphezu kwamahora amabili adlule
|
||||||
|
|
||||||
|
LocNAdv locn = locn ** { reqLocS = False } ;
|
||||||
|
|
||||||
|
LocNNgaAdv locn = {
|
||||||
|
s = "nga" ++BIND++ locn.s ;
|
||||||
|
reqLocS = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
LocNPAdv np = {
|
||||||
|
s = np.s!NLoc ;
|
||||||
|
-- asp = Null ;
|
||||||
|
reqLocS = case np.isPron of {
|
||||||
|
False => True ;
|
||||||
|
True => False -- ki-
|
||||||
|
} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
RelAdv adv = {
|
RelAdv adv = {
|
||||||
s = \\a => relConcLookup!a!RC ++BIND++ adv.s
|
s = \\a => relConcLookup!a!RC ++BIND++ adv.s
|
||||||
} ;
|
} ;
|
||||||
@@ -541,6 +580,12 @@ concrete ExtraExtZul of ExtraExt =
|
|||||||
phakade_LocN = { s = "phakade" ; empty = [] } ;
|
phakade_LocN = { s = "phakade" ; empty = [] } ;
|
||||||
phezulu_LocN = { s = "phezulu" ; 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 = {
|
lapha_Loc = {
|
||||||
s = table {
|
s = table {
|
||||||
MainCl => \\a,p,t => let
|
MainCl => \\a,p,t => let
|
||||||
@@ -562,11 +607,59 @@ concrete ExtraExtZul of ExtraExt =
|
|||||||
VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base;
|
VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base;
|
||||||
VFIndic _ _ _ => rcp ++ pcp ++ cop_base
|
VFIndic _ _ _ => rcp ++ pcp ++ cop_base
|
||||||
}
|
}
|
||||||
|
} ;
|
||||||
|
imp_s = table {
|
||||||
|
Sg => table {
|
||||||
|
Pos => "yiba" ++ "lapha" ;
|
||||||
|
Neg => "ungabi" ++ "lapha"
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
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"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
khona_Loc = {
|
khona_Loc = {
|
||||||
s = \\c,a,p,t => kho_cop (VFIndic c p t) a ;
|
s = \\c,a,p,t => kho_cop (VFIndic c p t) a ;
|
||||||
|
imp_s = table {
|
||||||
|
Sg => table {
|
||||||
|
Pos => "yiba" ++ "khona" ;
|
||||||
|
Neg => "ungabi" ++ "khona" -- this is a guess
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
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"
|
||||||
|
}
|
||||||
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
kakhulu_Adv = { s = "kakhulu" ; reqLocS = False } ;
|
kakhulu_Adv = { s = "kakhulu" ; reqLocS = False } ;
|
||||||
@@ -588,6 +681,9 @@ concrete ExtraExtZul of ExtraExt =
|
|||||||
fix = True
|
fix = True
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
want_VV = regVerb "fun" ;
|
||||||
|
prepare_to_VV = regVerb "lungiselel" ;
|
||||||
|
|
||||||
-- Deverb15 v =
|
-- Deverb15 v =
|
||||||
-- let
|
-- let
|
||||||
-- agr = Third C15 Sg ;
|
-- agr = Third C15 Sg ;
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ concrete NounExtZul of NounExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
|||||||
|
|
||||||
-- TODO : check mod
|
-- TODO : check mod
|
||||||
ApposCN cn n = {
|
ApposCN cn n = {
|
||||||
s = \\num,nform => cn.s!num!nform ++ n.s!num!nform ;
|
s = \\num,nform => cn.s!num!nform ++ n.s!num!NFull ;
|
||||||
-- mod = \\num => n.s!num!Full ++ cn.mod!num ;
|
-- mod = \\num => n.s!num!Full ++ cn.mod!num ;
|
||||||
c = cn.c ; -- takes agr of cn
|
c = cn.c ; -- takes agr of cn
|
||||||
empty = cn.empty ;
|
empty = cn.empty ;
|
||||||
@@ -66,7 +66,7 @@ concrete NounExtZul of NounExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
|||||||
|
|
||||||
-- TODO : check mod
|
-- TODO : check mod
|
||||||
ApposN cn n = {
|
ApposN cn n = {
|
||||||
s = \\num,nform => cn.s!num!nform ++ n.s!num!nform ;
|
s = \\num,nform => cn.s!num!nform ++ n.s!num!NFull ;
|
||||||
-- mod = \\num => n.s!num!Full ++ cn.mod!num ;
|
-- mod = \\num => n.s!num!Full ++ cn.mod!num ;
|
||||||
c = n.c ; -- takes agr of n
|
c = n.c ; -- takes agr of n
|
||||||
empty = cn.empty ;
|
empty = cn.empty ;
|
||||||
@@ -136,35 +136,74 @@ concrete NounExtZul of NounExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
|||||||
heavy = True
|
heavy = True
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
Deverb15 v =
|
-- Deverb15 v =
|
||||||
let
|
-- let
|
||||||
agr = Third C15 Sg ;
|
-- agr = Third C15 Sg ;
|
||||||
in
|
-- in
|
||||||
{
|
-- {
|
||||||
s = \\_ => table {
|
-- s = \\_ => table {
|
||||||
NFull => case v.r of {
|
-- NFull => case v.r of {
|
||||||
RC => "uku"++BIND++(v.s!R_a) ;
|
-- RC => "uku"++BIND++(v.s!R_a) ;
|
||||||
(RA|RE) => "ukw"++BIND++(v.s!R_a) ;
|
-- (RA|RE) => "ukw"++BIND++(v.s!R_a) ;
|
||||||
_ => "uk"++BIND++(v.s!R_a)
|
-- _ => "uk"++BIND++(v.s!R_a)
|
||||||
} ;
|
-- } ;
|
||||||
NReduced => case v.r of {
|
-- NReduced => case v.r of {
|
||||||
RC => "ku"++BIND++(v.s!R_a) ;
|
-- RC => "ku"++BIND++(v.s!R_a) ;
|
||||||
(RA|RE) => "kw"++BIND++(v.s!R_a) ;
|
-- (RA|RE) => "kw"++BIND++(v.s!R_a) ;
|
||||||
_ => "k"++BIND++(v.s!R_a)
|
-- _ => "k"++BIND++(v.s!R_a)
|
||||||
} ;
|
-- } ;
|
||||||
NPoss => case v.r of {
|
-- NPoss => case v.r of {
|
||||||
RC => "ku"++BIND++(v.s!R_a) ;
|
-- RC => "ku"++BIND++(v.s!R_a) ;
|
||||||
(RA|RE) => "kw"++BIND++(v.s!R_a) ;
|
-- (RA|RE) => "kw"++BIND++(v.s!R_a) ;
|
||||||
_ => "k"++BIND++(v.s!R_a)
|
-- _ => "k"++BIND++(v.s!R_a)
|
||||||
} ;
|
-- } ;
|
||||||
NLoc => case v.r of {
|
-- NLoc => case v.r of {
|
||||||
RC => "eku"++BIND++(v.s!R_e)++BIND++"ni" ;
|
-- RC => "eku"++BIND++(v.s!R_e)++BIND++"ni" ;
|
||||||
(RA|RE) => "ekw"++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"
|
-- _ => "ek"++BIND++(v.s!R_e)++BIND++"ni"
|
||||||
}
|
-- }
|
||||||
} ;
|
-- } ;
|
||||||
c = C15 ;
|
-- c = C15 ;
|
||||||
empty = []
|
-- empty = []
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- not built to work for copulative VPs for now (specifically for agreement)
|
||||||
|
Deverb15 pol vp =
|
||||||
|
let
|
||||||
|
agr = Third C15 Sg
|
||||||
|
in
|
||||||
|
{
|
||||||
|
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 ;
|
||||||
|
isPron = False ;
|
||||||
|
heavy = True ;
|
||||||
|
empty = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
LocNP np = {
|
LocNP np = {
|
||||||
@@ -191,28 +230,94 @@ concrete NounExtZul of NounExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
|||||||
} ;
|
} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
LocNLoc locn = {
|
-- LocNLoc locn = {
|
||||||
|
-- s = table {
|
||||||
|
-- MainCl => \\a,p,t => let
|
||||||
|
-- vform = VFIndic MainCl p t ;
|
||||||
|
-- pcp = ap_cop_pref vform a RelType ; -- u- / uzoba / akazukuba
|
||||||
|
-- cop_base = locn.s
|
||||||
|
-- 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 ; -- u- / uzoba / akazukuba
|
||||||
|
-- cop_base = locn.s
|
||||||
|
-- in
|
||||||
|
-- case vform of {
|
||||||
|
-- VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base;
|
||||||
|
-- VFIndic _ _ _ => rcp ++ pcp ++ cop_base
|
||||||
|
-- }
|
||||||
|
-- } ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- LocNPossNP locn np = {
|
||||||
|
-- s = locn.s ++ poss_concord_agr!(Third C17 Sg)!(np.i) ++BIND++ np.s!NPoss;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
LocAdvLoc locadv = {
|
||||||
s = table {
|
s = table {
|
||||||
MainCl => \\a,p,t => let
|
MainCl => \\a,p,t => let
|
||||||
vform = VFIndic MainCl p t ;
|
vform = VFIndic MainCl p t ;
|
||||||
pcp = ap_cop_pref vform a RelType ; -- u- / uzoba / akazukuba
|
pcp = ap_cop_pref vform a RelType ; -- u- / uzoba / akazukuba
|
||||||
cop_base = locn.s
|
s = case locadv.reqLocS of {
|
||||||
|
True => "s"++BIND ;
|
||||||
|
False => []
|
||||||
|
} ;
|
||||||
|
cop_base = locadv.s
|
||||||
in
|
in
|
||||||
case vform of {
|
case vform of {
|
||||||
VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base;
|
VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base;
|
||||||
VFIndic _ _ _ => pcp ++ cop_base
|
VFIndic _ _ _ => pcp ++ s ++ cop_base
|
||||||
} ;
|
} ;
|
||||||
RelCl => \\a,p,t => let
|
RelCl => \\a,p,t => let
|
||||||
vform = VFIndic RelCl p t ;
|
vform = VFIndic RelCl p t ;
|
||||||
rcp = (relConcCop vform a RC) ; -- o- / onge-
|
rcp = (relConcCop vform a RC) ; -- o- / onge-
|
||||||
pcp = ap_cop_pref vform a RelType ; -- u- / uzoba / akazukuba
|
pcp = ap_cop_pref vform a RelType ; -- u- / uzoba / akazukuba
|
||||||
cop_base = locn.s
|
s = case locadv.reqLocS of {
|
||||||
|
True => "s"++BIND ;
|
||||||
|
False => []
|
||||||
|
} ;
|
||||||
|
cop_base = locadv.s
|
||||||
in
|
in
|
||||||
case vform of {
|
case vform of {
|
||||||
VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base;
|
VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base;
|
||||||
VFIndic _ _ _ => rcp ++ pcp ++ cop_base
|
VFIndic _ _ _ => rcp ++ pcp ++ s ++ cop_base
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
imp_s = table {
|
||||||
|
Sg => table {
|
||||||
|
Pos => "yiba" ++ "s"++BIND++ locadv.s ;
|
||||||
|
Neg => "ungabi" ++ "s"++BIND++ locadv.s
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,17 @@ concrete NounZul of Noun = CatZul ** open ResZul, Prelude, ParamX in {
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- PredetNP, PPartNP, AdvNP, ExtAdvNP : not implemented
|
-- PredetNP, PPartNP, ExtAdvNP : not implemented
|
||||||
|
|
||||||
|
AdvNP np adv = {
|
||||||
|
empty = np.empty ;
|
||||||
|
s = \\nform => np.s!nform ++ adv.s ;
|
||||||
|
agr = np.agr ;
|
||||||
|
i = np.i ;
|
||||||
|
proDrop = False ; -- probably right?
|
||||||
|
isPron = np.isPron ;
|
||||||
|
heavy = True
|
||||||
|
} ;
|
||||||
|
|
||||||
-- TODO: refactor
|
-- TODO: refactor
|
||||||
RelNP np rs = {
|
RelNP np rs = {
|
||||||
@@ -91,7 +101,10 @@ concrete NounZul of Noun = CatZul ** open ResZul, Prelude, ParamX in {
|
|||||||
-- TODO: check refactor (no change?)
|
-- TODO: check refactor (no change?)
|
||||||
PossNP cn np = {
|
PossNP cn np = {
|
||||||
empty = cn.empty ;
|
empty = cn.empty ;
|
||||||
s = \\num,nform => cn.s!num!nform ++ poss_concord!cn.c!num!np.i ++BIND++ np.s!NPoss;
|
s = \\num,nform => case np.agr of {
|
||||||
|
Third C1a_2a Sg => cn.s!num!nform ++ poss_concord_c1a!cn.c!num ++BIND++ np.s!NPoss ;
|
||||||
|
(First _ | Second _ | Third _ _) => cn.s!num!nform ++ poss_concord!cn.c!num!np.i ++BIND++ np.s!NPoss
|
||||||
|
} ;
|
||||||
-- mod = \\num => cn.mod!num ++ poss_concord!cn.c!num!np.i ++BIND++ (poss_NP np) ;
|
-- mod = \\num => cn.mod!num ++ poss_concord!cn.c!num!np.i ++BIND++ (poss_NP np) ;
|
||||||
c = cn.c ;
|
c = cn.c ;
|
||||||
emph = cn.emph
|
emph = cn.emph
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ concrete PChunkZul of PChunk = CatZul, CatExtZul, SymbolZul [Symb] **
|
|||||||
lincat
|
lincat
|
||||||
Chunks = {s : Str} ;
|
Chunks = {s : Str} ;
|
||||||
Chunk = {s : Str};
|
Chunk = {s : Str};
|
||||||
Chunk_AP, Chunk_Adv, Chunk_S, Chunk_RS, Chunk_QS, 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 ;
|
VC = V ;
|
||||||
|
|
||||||
@@ -15,10 +15,14 @@ concrete PChunkZul of PChunk = CatZul, CatExtZul, SymbolZul [Symb] **
|
|||||||
PlusChunk c cs = cc2 c cs ;
|
PlusChunk c cs = cc2 c cs ;
|
||||||
ChunkPhr c = ss ("*" ++ c.s) | c ;
|
ChunkPhr c = ss ("*" ++ c.s) | c ;
|
||||||
|
|
||||||
|
Phr_Chunker c = c ;
|
||||||
Adv_Chunker c = c ;
|
Adv_Chunker c = c ;
|
||||||
|
Imp_Chunker c = c ;
|
||||||
S_Chunker c = c ;
|
S_Chunker c = c ;
|
||||||
RS_Chunker c = c ;
|
RS_Chunker c = c ;
|
||||||
QS_Chunker c = c ;
|
QS_Chunker c = c ;
|
||||||
|
VP_Chunker c = c ;
|
||||||
|
V_Chunker c = c ;
|
||||||
CN_Chunker c = c ;
|
CN_Chunker c = c ;
|
||||||
NP_Chunker c = c ;
|
NP_Chunker c = c ;
|
||||||
N_Chunker c = c ;
|
N_Chunker c = c ;
|
||||||
@@ -26,10 +30,22 @@ concrete PChunkZul of PChunk = CatZul, CatExtZul, SymbolZul [Symb] **
|
|||||||
Postdet_Chunker c = c ;
|
Postdet_Chunker c = c ;
|
||||||
Symb_Chunker c = c ;
|
Symb_Chunker c = c ;
|
||||||
|
|
||||||
|
Phr_Chunk p = {s = p.s } ;
|
||||||
Adv_Chunk a = { s = a.s } ;
|
Adv_Chunk a = { s = a.s } ;
|
||||||
|
Imp_Sg_Chunk i = { s = variants { i.s!Sg!Pos ; i.s!Sg!Neg} } ;
|
||||||
|
Imp_Pl_Chunk i = { s = variants { i.s!Pl!Pos ; i.s!Pl!Neg} } ;
|
||||||
S_Chunk s = { s = s.s } ;
|
S_Chunk s = { s = s.s } ;
|
||||||
RS_Chunk rs = { s = rs.s!agr_vars } ;
|
RS_Chunk pron rs = { s = pron.s!NFull ++ rs.s!pron.agr } ;
|
||||||
QS_Chunk s = { s = s.qword_pre ++ s.s ++ s.qword_post } ;
|
QS_Chunk s = { s = s.qword_pre ++ s.s ++ s.qword_post } ;
|
||||||
|
VP_RelYo_Chunk temp pol pron vp = {
|
||||||
|
s = temp.s ++ pol.s ++ pron.s!NFull ++ vp.s!RelCl!pron.agr!pol.p!temp.t!True
|
||||||
|
} ;
|
||||||
|
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 = {
|
CN_Sg_Chunk cn = {
|
||||||
s = cn.s!Sg!NFull
|
s = cn.s!Sg!NFull
|
||||||
} ;
|
} ;
|
||||||
@@ -42,14 +58,20 @@ concrete PChunkZul of PChunk = CatZul, CatExtZul, SymbolZul [Symb] **
|
|||||||
np.s!NReduced
|
np.s!NReduced
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
NP_Gen_Chunk np = {
|
NP_Loc_Chunk np = {
|
||||||
s = poss_concord_agr!agr_vars!np.i ++BIND++ np.s!NPoss
|
s = np.s!NLoc
|
||||||
} ;
|
} ;
|
||||||
Predet_Chunk predet = {
|
NP_Gen_Chunk pron np = {
|
||||||
s = predet.s!agr_vars
|
s = pron.s!NFull ++ poss_concord_agr!pron.agr!np.i ++BIND++ np.s!NPoss
|
||||||
} ;
|
} ;
|
||||||
Postdet_Chunk postdet = {
|
-- NP_Gen_Chunk np = {
|
||||||
s = postdet.s!agr_vars
|
-- s = poss_concord_agr!agr_vars!np.i ++BIND++ np.s!NPoss
|
||||||
|
-- } ;
|
||||||
|
Predet_Chunk pron predet = {
|
||||||
|
s = pron.s!NFull ++ predet.s!pron.agr
|
||||||
|
} ;
|
||||||
|
Postdet_Chunk pron postdet = {
|
||||||
|
s = pron.s!NFull ++ postdet.s!pron.agr
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- for unknown words that are not names
|
-- for unknown words that are not names
|
||||||
@@ -96,4 +118,6 @@ concrete PChunkZul of PChunk = CatZul, CatExtZul, SymbolZul [Symb] **
|
|||||||
Second Pl
|
Second Pl
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
bool_vars : Bool = variants { True | False } ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,11 +72,13 @@ resource ParadigmsZul = open
|
|||||||
oper
|
oper
|
||||||
mkN = overload {
|
mkN = overload {
|
||||||
mkN : (ngane : Str) -> ClassGender -> N = \n,c -> lin N (regNoun n c) ; -- "thing" nouns
|
mkN : (ngane : Str) -> ClassGender -> N = \n,c -> lin N (regNoun n c) ; -- "thing" nouns
|
||||||
|
mkN : (khaya, khaya : Str) -> ClassGender -> N = \n,n2,c -> lin N (mkELocN n c) ; -- "thing" nouns
|
||||||
mkN : (nyaka,onyakeni,eminyakeni : Str) -> ClassGender -> N = \n,ls,lp,c -> lin N (semiRegNoun n ls lp c) ;
|
mkN : (nyaka,onyakeni,eminyakeni : Str) -> ClassGender -> N = \n,ls,lp,c -> lin N (semiRegNoun n ls lp c) ;
|
||||||
mkN : (iso,amehlo,esweni,emehlweni : Str) -> ClassGender -> N = \ns,np,ls,lp,c -> lin N (mkNoun ns np ls lp c) ;
|
mkN : (iso,amehlo,esweni,emehlweni : Str) -> ClassGender -> N = \ns,np,ls,lp,c -> lin N (mkNoun ns np ls lp c) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkPN = overload {
|
mkPN = overload {
|
||||||
|
mkPN : (John : Str) -> N = \n -> lin N (regNoun n C1a_2a) ;
|
||||||
mkPN : (John : Str) -> ClassGender -> N = \n,c -> lin N (regNoun n c) ; -- "thing" nouns
|
mkPN : (John : Str) -> ClassGender -> N = \n,c -> lin N (regNoun n c) ; -- "thing" nouns
|
||||||
mkPN : (nyaka,onyakeni,eminyakeni : Str) -> ClassGender -> N = \n,ls,lp,c -> lin N (semiRegNoun n ls lp c) ;
|
mkPN : (nyaka,onyakeni,eminyakeni : Str) -> ClassGender -> N = \n,ls,lp,c -> lin N (semiRegNoun n ls lp c) ;
|
||||||
mkPN : (iso,amehlo,esweni,emehlweni : Str) -> ClassGender -> N = \ns,np,ls,lp,c -> lin N (mkNoun ns np ls lp c) ;
|
mkPN : (iso,amehlo,esweni,emehlweni : Str) -> ClassGender -> N = \ns,np,ls,lp,c -> lin N (mkNoun ns np ls lp c) ;
|
||||||
@@ -106,7 +108,7 @@ oper
|
|||||||
mkV : (hamb : Str) -> V = \hamb -> lin V (regVerb hamb) ;
|
mkV : (hamb : Str) -> V = \hamb -> lin V (regVerb hamb) ;
|
||||||
mkV : (th,thi : Str) -> V = \th,thi -> lin V (th_Verb th thi) ;
|
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 : 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 {
|
passV = overload {
|
||||||
|
|||||||
41
src/zulu/PhraseExtZul.gf
Normal file
41
src/zulu/PhraseExtZul.gf
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
concrete PhraseExtZul of PhraseExt = CatZul,CatExtZul ** open ResZul, Prelude, ParamX in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
DirectSpeech phr t v np = {
|
||||||
|
s = let
|
||||||
|
vform = case t.t of {
|
||||||
|
PastTense => v.s!R_e ;
|
||||||
|
PresTense => v.s!R_a ;
|
||||||
|
_ => v.s!R_a ++ "*"
|
||||||
|
} ;
|
||||||
|
in
|
||||||
|
phr.s ++ "ku" ++ BIND ++ vform ++ np.s!NFull ++ t.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
DirectSpeechNP np1 t v np2 = {
|
||||||
|
s = let
|
||||||
|
vform = case t.t of {
|
||||||
|
PastTense => v.s!R_e ;
|
||||||
|
PresTense => v.s!R_a ;
|
||||||
|
_ => v.s!R_a ++ "*"
|
||||||
|
} ;
|
||||||
|
in
|
||||||
|
np1.s!NFull ++ "ku" ++ BIND ++ vform ++ np2.s!NFull ++ t.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
DirectSpeechAdv adv t v np = {
|
||||||
|
s = let
|
||||||
|
vform = case t.t of {
|
||||||
|
PastTense => v.s!R_e ;
|
||||||
|
PresTense => v.s!R_a ;
|
||||||
|
_ => v.s!R_a ++ "*"
|
||||||
|
} ;
|
||||||
|
in
|
||||||
|
adv.s ++ "ku" ++ BIND ++ vform ++ np.s!NFull ++ t.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ExtPhrConj p1 p2 = {
|
||||||
|
s = p1.s ++ p2.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
concrete PhraseZul of Phrase = CatZul ** open Prelude, ResZul in {
|
concrete PhraseZul of Phrase = CatZul ** open Prelude, ParamX, ResZul in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||||
--
|
--
|
||||||
UttS sent = { s = sent.s } ;
|
UttS sent = { s = sent.s } ;
|
||||||
UttQS sent = { s = sent.qword_pre ++ sent.s ++ sent.qword_post } ;
|
UttQS sent = { s = sent.qword_pre ++ sent.s ++ sent.qword_post } ;
|
||||||
UttImpSg pol imp = { s = pol.s ++ imp.s!pol.p } ;
|
UttImpSg pol imp = { s = pol.s ++ imp.s!Sg!pol.p } ;
|
||||||
-- UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Pl False} ;
|
UttImpPl pol imp = {s = pol.s ++ imp.s!Pl!pol.p } ;
|
||||||
-- UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg True} ;
|
-- UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg True} ;
|
||||||
|
|
||||||
-- UttIP ip = {s = ip.s ! npNom} ; --- Acc also
|
-- UttIP ip = {s = ip.s ! npNom} ; --- Acc also
|
||||||
@@ -23,6 +23,6 @@ concrete PhraseZul of Phrase = CatZul ** open Prelude, ResZul in {
|
|||||||
-- PConjConj conj = {s = conj.s2} ; ---
|
-- PConjConj conj = {s = conj.s2} ; ---
|
||||||
|
|
||||||
NoVoc = {s = []} ;
|
NoVoc = {s = []} ;
|
||||||
-- VocNP np = {s = frontComma ++ np.s ! npNom} ;
|
VocNP np = {s = np.s ! NReduced } ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
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 ;
|
True => False ;
|
||||||
False => True
|
False => True
|
||||||
} ;
|
} ;
|
||||||
relsuf = case vp.hasComp of {
|
rcform = RelC ;
|
||||||
True => [] ;
|
|
||||||
False => relSuf vform
|
|
||||||
} ;
|
|
||||||
rcform = RelC ; -- case vform_main of {
|
|
||||||
-- VFIndic Part Pos PastTense _ => RelCA ;
|
|
||||||
-- VFIndic _ _ _ _ => RelC ;
|
|
||||||
-- VFPot _ _ _ => RelC ;
|
|
||||||
-- VFSubj _ => RelC
|
|
||||||
-- } ;
|
|
||||||
in
|
in
|
||||||
-- naively only took out the subject
|
-- naively only took out the subject
|
||||||
rp.s
|
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
|
++ vp.s!RelCl!a!p!t!reqLF
|
||||||
-- ++ relsuf
|
|
||||||
++ vp.iadv
|
++ vp.iadv
|
||||||
++ vp.comp
|
++ vp.comp
|
||||||
++ vp.advs
|
++ vp.advs
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
VPType = CopIdent | CopAssoc | CopDescr | CopEq | VNPCompl | NoComp | VSCompl | AdvComp | CopLoc ; -- VACompl |
|
VPType = CopIdent | CopAssoc | CopDescr | CopEq | VNPCompl | NoComp | VSCompl | AdvComp | CopLoc ; -- VACompl |
|
||||||
AuxType = PartAux ; -- TODO: add SubjAux, InfAux, ConsecAux etc (p327)
|
AuxType = PartAux ; -- TODO: add SubjAux, InfAux, ConsecAux etc (p327)
|
||||||
AType = AdjType | RelType ;
|
AType = AdjType | RelType ;
|
||||||
|
LocAdvType = KwaAdv | NaAdv ;
|
||||||
|
|
||||||
AForm = AF1 | AF2 | AF3 ; -- two forms for implementing sound changes Poulos+Msimang p143, one for monosyllabic
|
AForm = AF1 | AF2 | AF3 ; -- two forms for implementing sound changes Poulos+Msimang p143, one for monosyllabic
|
||||||
SCForm = SC | SCVow | SCNeg | SCNegVow | SCPS | SCPart | SCVowP | SCBe | SCRP ;
|
SCForm = SC | SCVow | SCNeg | SCNegVow | SCPS | SCPart | SCVowP | SCBe | SCRP ;
|
||||||
@@ -48,16 +49,28 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
|
|
||||||
prefix_nasal : Str -> Str = \r -> case r of {
|
prefix_nasal : Str -> Str = \r -> case r of {
|
||||||
"ph"+x => "mp" + x ;
|
"ph"+x => "mp" + x ;
|
||||||
|
"Ph"+x => "mP" + x ;
|
||||||
"bh"+x => "mb" + x ;
|
"bh"+x => "mb" + x ;
|
||||||
#nasal_de_asp+"h"+x => "n"+(take 1 r) + x ;
|
"Bh"+x => "mB" + x ;
|
||||||
|
(#nasal_de_asp|#nasal_de_asp_cap)+"h"+x => "n"+(take 1 r) + x ;
|
||||||
"hl"+x => "nhl"+x ;
|
"hl"+x => "nhl"+x ;
|
||||||
|
"Hl"+x => "Nhl"+x ;
|
||||||
"h"+x => "nk"+x ;
|
"h"+x => "nk"+x ;
|
||||||
|
"H"+x => "Nk"+x ;
|
||||||
"sh"+x => "ntsh"+x ;
|
"sh"+x => "ntsh"+x ;
|
||||||
|
"Sh"+x => "Ntsh"+x ;
|
||||||
"l"+x => "nd"+x ;
|
"l"+x => "nd"+x ;
|
||||||
|
"L"+x => "Nd"+x ;
|
||||||
#nasal_m+x => "m"+r ;
|
#nasal_m+x => "m"+r ;
|
||||||
|
#nasal_m_cap+x => "M"+r ;
|
||||||
#nasal_ng+x => "ng"+r ;
|
#nasal_ng+x => "ng"+r ;
|
||||||
|
#nasal_ng_cap+x => "Ng"+r ;
|
||||||
#nasal+x => r ;
|
#nasal+x => r ;
|
||||||
|
#nasal_cap+x => r ;
|
||||||
"p"+x => "mp" + x ;
|
"p"+x => "mp" + x ;
|
||||||
|
"P"+x => "Mp" + x ;
|
||||||
|
#vowel_cap+x => "N" + r ;
|
||||||
|
#cons_cap+x => "N" + r ;
|
||||||
_ => "n"+r
|
_ => "n"+r
|
||||||
} ;
|
} ;
|
||||||
--------------
|
--------------
|
||||||
@@ -253,14 +266,24 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
R_ile => case root of {
|
R_ile => case root of {
|
||||||
_+"el" => root ++BIND++ "e" ;
|
_+"el" => root ++BIND++ "e" ;
|
||||||
_+"al" => (tk 2 root) + "el" ++BIND++ "e" ;
|
_+"al" => (tk 2 root) + "el" ++BIND++ "e" ;
|
||||||
|
_+"an" => (tk 2 root) + "en" ++BIND++ "e" ;
|
||||||
|
_+"w" => root ++BIND ++ "e" ;
|
||||||
_ => root ++BIND++ "ile"
|
_ => root ++BIND++ "ile"
|
||||||
} ;
|
} ;
|
||||||
R_e => case root of {
|
R_e => case root of {
|
||||||
|
_+"an" => (tk 2 root) + "en" ++BIND++ "e" ;
|
||||||
_+"al" => (tk 2 root) + "el" ++BIND++ "e" ;
|
_+"al" => (tk 2 root) + "el" ++BIND++ "e" ;
|
||||||
_ => root ++BIND++ "e"
|
_ => root ++BIND++ "e"
|
||||||
} ;
|
} ;
|
||||||
R_i => root ++BIND++ "i" ;
|
R_i => case root of {
|
||||||
R_anga => root ++BIND++ "anga"
|
_+"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 {
|
r = case root of {
|
||||||
"a"+_ => RA ;
|
"a"+_ => RA ;
|
||||||
@@ -421,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 --
|
-- VERB MORPHEMES --
|
||||||
|
|
||||||
-- tense prefix
|
-- tense prefix
|
||||||
@@ -546,46 +679,6 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
-- VFSubj _ => []
|
-- 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 --
|
-- ADVERBS --
|
||||||
-------------
|
-------------
|
||||||
@@ -672,8 +765,8 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
rel_yo_2 : Str = BIND++"yo" ;
|
rel_yo_2 : Str = BIND++"yo" ;
|
||||||
|
|
||||||
relSuf : VForm -> Str = \vform -> case vform of {
|
relSuf : VForm -> Str = \vform -> case vform of {
|
||||||
VFIndic _ Pos PresTense => rel_yo_2 ;
|
VFIndic RelCl Pos PresTense => rel_yo_2 ;
|
||||||
VFIndic _ Pos PastTense => rel_yo_2 ;
|
VFIndic RelCl Pos PastTense => rel_yo_2 ;
|
||||||
VFIndic _ _ _ => []
|
VFIndic _ _ _ => []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -871,6 +964,7 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
(First _ | Second _ ) => RC
|
(First _ | Second _ ) => RC
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
locinit : Agr => RInit =
|
locinit : Agr => RInit =
|
||||||
table {
|
table {
|
||||||
Third C1_2 Sg => RC ;
|
Third C1_2 Sg => RC ;
|
||||||
@@ -892,49 +986,49 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
<C1a_2a,Sg> => "ku"+root ;
|
<C1a_2a,Sg> => "ku"+root ;
|
||||||
<C1a_2a,Pl> => "ko"+root ;
|
<C1a_2a,Pl> => "ko"+root ;
|
||||||
<C3_4,Sg> => case root of {
|
<C3_4,Sg> => case root of {
|
||||||
"m"+_ => "e"+root ;
|
("m"|"M")+_ => "e"+root ;
|
||||||
_ => "em"+root
|
_ => "em"+root
|
||||||
} ;
|
} ;
|
||||||
<C3_4,Pl> => "emi"+root ;
|
<C3_4,Pl> => "emi"+root ;
|
||||||
<C5_6,Sg> => case root of {
|
<C5_6,Sg> => case root of {
|
||||||
"i"+_ => "e" + (last root) ;
|
("i"|"I")+_ => "e" + (last root) ;
|
||||||
#vowel+_ => "el" + root ;
|
(#vowel|#vowel_cap)+_ => "el" + root ;
|
||||||
_ => "e"+root -- ili long form (not used?)
|
_ => "e"+root -- ili long form (not used?)
|
||||||
} ;
|
} ;
|
||||||
<C5_6,Pl> => case root of {
|
<C5_6,Pl> => case root of {
|
||||||
"i"+_ => "eme"+ (last root) ;
|
("i"|"I")+_ => "eme"+ (last root) ;
|
||||||
#vowel+_ => "em"+root ;
|
(#vowel|#vowel_cap)+_ => "em"+root ;
|
||||||
_ => "ema"+root
|
_ => "ema"+root
|
||||||
} ; -- ame for roots starting with i
|
} ; -- ame for roots starting with i
|
||||||
<C7_8,Sg> => case root of {
|
<C7_8,Sg> => case root of {
|
||||||
#vowel+_ => "es"+root ;
|
(#vowel|#vowel_cap)+_ => "es"+root ;
|
||||||
_ => "esi"+root
|
_ => "esi"+root
|
||||||
} ; -- is for roots starting with vowel
|
} ; -- is for roots starting with vowel
|
||||||
<C7_8,Pl> => case root of {
|
<C7_8,Pl> => case root of {
|
||||||
#vowel+_ => "ez"+root ;
|
(#vowel|#vowel_cap)+_ => "ez"+root ;
|
||||||
_ => "ezi"+root -- iz for roots starting with vowel
|
_ => "ezi"+root -- iz for roots starting with vowel
|
||||||
} ;
|
} ;
|
||||||
<C9_10,Sg> => "e"+(prefix_nasal root) ; -- em for labial, en for alveolar (TODO: does this correctly split options?)
|
<C9_10,Sg> => "e"+(prefix_nasal root) ; -- em for labial, en for alveolar (TODO: does this correctly split options?)
|
||||||
<C9_10,Pl> => "ezi"+(prefix_nasal root) ; -- izim for labial, izin for alveolar (TODO: does this correctly split options?)
|
<C9_10,Pl> => "ezi"+(prefix_nasal root) ; -- izim for labial, izin for alveolar (TODO: does this correctly split options?)
|
||||||
<C11_10,Sg> => case root of {
|
<C11_10,Sg> => case root of {
|
||||||
#vowel+_ => "olw" + root ;
|
(#vowel|#vowel_cap)+_ => "olw" + root ;
|
||||||
"w"+_ => "ol"+root ;
|
("w"|"W")+_ => "ol"+root ;
|
||||||
_ => "o"+root
|
_ => "o"+root
|
||||||
} ;
|
} ;
|
||||||
<C11_10,Pl> => case root of {
|
<C11_10,Pl> => case root of {
|
||||||
#vowel+_ => "ezilw" + root ;
|
(#vowel|#vowel_cap)+_ => "ezilw" + root ;
|
||||||
"w"+_ => "ezil" + root ;
|
("w"|"W")+_ => "ezil" + root ;
|
||||||
_ => "ezi"+(prefix_nasal root)
|
_ => "ezi"+(prefix_nasal root)
|
||||||
} ; -- izim for labial, izin for alveolar, izi(n|m)k for roots starting with kh
|
} ; -- izim for labial, izin for alveolar, izi(n|m)k for roots starting with kh
|
||||||
<C9_6,Sg> => "e"+(prefix_nasal root) ; -- em for labial, en for alveolar (TODO: does this correctly split options?)
|
<C9_6,Sg> => "e"+(prefix_nasal root) ; -- em for labial, en for alveolar (TODO: does this correctly split options?)
|
||||||
<C9_6,Pl> => case root of {
|
<C9_6,Pl> => case root of {
|
||||||
"i"+_ => "eme"+root ;
|
("i"|"I")+_ => "eme"+root ;
|
||||||
_ => "ema"+root
|
_ => "ema"+root
|
||||||
} ; -- ame for roots starting with i
|
} ; -- ame for roots starting with i
|
||||||
<C14,_> => "ebu"+root ;
|
<C14,_> => "ebu"+root ;
|
||||||
<C15,_> => case root of {
|
<C15,_> => case root of {
|
||||||
("a"|"e")+_ => "ekw"+root ;
|
("a"|"e"|"A"|"E")+_ => "ekw"+root ;
|
||||||
(#cons|"y")+_ => "eku"+root ;
|
(#cons|"y"|#cons_cap|"Y")+_ => "eku"+root ;
|
||||||
_ => "ek"+root
|
_ => "ek"+root
|
||||||
} ; -- ukw for roots starting with a/e, uk for roots starting with o
|
} ; -- ukw for roots starting with a/e, uk for roots starting with o
|
||||||
<C17,_> => "eku"+root -- sometimes ukw
|
<C17,_> => "eku"+root -- sometimes ukw
|
||||||
@@ -960,7 +1054,7 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
_+"wo" => (init root)+"eni" ;
|
_+"wo" => (init root)+"eni" ;
|
||||||
_+"o" => (init root)+"weni" ;
|
_+"o" => (init root)+"weni" ;
|
||||||
_+"u" => (init root)+"wini" ;
|
_+"u" => (init root)+"wini" ;
|
||||||
_ => (init root)+"ini"
|
_ => root+"ini"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
drop_init_vowel : Str -> Str = \s ->
|
drop_init_vowel : Str -> Str = \s ->
|
||||||
@@ -970,74 +1064,80 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
vowel : pattern Str = #("a"|"e"|"i"|"o"|"u") ;
|
vowel : pattern Str = #("a"|"e"|"i"|"o"|"u") ;
|
||||||
|
vowel_cap : pattern Str = #("A"|"E"|"I"|"O"|"U") ;
|
||||||
cons : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"y"|"z") ;
|
cons : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"y"|"z") ;
|
||||||
|
cons_cap : pattern Str = #("B"|"C"|"D"|"F"|"G"|"H"|"J"|"K"|"L"|"M"|"N"|"P"|"Q"|"R"|"S"|"T"|"V"|"W"|"X"|"Y"|"Z") ;
|
||||||
labial_cons : pattern Str = #("p"|"b"|"f"|"v"|"w") ;
|
labial_cons : pattern Str = #("p"|"b"|"f"|"v"|"w") ;
|
||||||
alveolar_cons : pattern Str = #("s"|"d"|"t"|"z") ;
|
alveolar_cons : pattern Str = #("s"|"d"|"t"|"z") ;
|
||||||
nasal_de_asp : pattern Str = #("t"|"k"|"x"|"c"|"q") ;
|
nasal_de_asp : pattern Str = #("t"|"k"|"x"|"c"|"q") ;
|
||||||
|
nasal_de_asp_cap : pattern Str = #("T"|"K"|"X"|"C"|"Q") ;
|
||||||
nasal_m : pattern Str = #("v"|"f"|"b") ;
|
nasal_m : pattern Str = #("v"|"f"|"b") ;
|
||||||
|
nasal_m_cap : pattern Str = #("V"|"F"|"B") ;
|
||||||
nasal_ng : pattern Str = #("x"|"c"|"q") ;
|
nasal_ng : pattern Str = #("x"|"c"|"q") ;
|
||||||
|
nasal_ng_cap : pattern Str = #("X"|"C"|"Q") ;
|
||||||
nasal : pattern Str = #("n"|"m") ;
|
nasal : pattern Str = #("n"|"m") ;
|
||||||
|
nasal_cap : pattern Str = #("N"|"M") ;
|
||||||
|
|
||||||
nomNoun : Str -> Number -> ClassGender -> Str = \root,n,cg ->
|
nomNoun : Str -> Number -> ClassGender -> Str = \root,n,cg ->
|
||||||
case <cg,n> of
|
case <cg,n> of
|
||||||
{
|
{
|
||||||
<C1_2,Sg> => case root of {
|
<C1_2,Sg> => case root of {
|
||||||
#vowel+_ => "um"+root ;
|
(#vowel|#vowel_cap)+_ => "um"+root ;
|
||||||
_+#cons+#vowel+#cons+_+#vowel+_ => "um"+root ;
|
_+#cons+#vowel+#cons+_+#vowel+_ => "um"+root ;
|
||||||
_ => "umu"+root
|
_ => "umu"+root
|
||||||
} ; -- umu for single syllables, um for the rest
|
} ; -- umu for single syllables, um for the rest
|
||||||
<C1_2,Pl> => case root of {
|
<C1_2,Pl> => case root of {
|
||||||
#vowel+_ => "ab"+root ;
|
(#vowel|#vowel_cap)+_ => "ab"+root ;
|
||||||
_ => "aba"+root -- abe for tribes or guilds
|
_ => "aba"+root -- abe for tribes or guilds
|
||||||
} ;
|
} ;
|
||||||
<C1a_2a,Sg> => "u"+root ;
|
<C1a_2a,Sg> => "u"+root ;
|
||||||
<C1a_2a,Pl> => "o"+root ;
|
<C1a_2a,Pl> => "o"+root ;
|
||||||
<C3_4,Sg> => case root of {
|
<C3_4,Sg> => case root of {
|
||||||
"m"+_+#vowel+#cons+_+#vowel+_ => "u"+root ;
|
("m"|"M")+_+#vowel+#cons+_+#vowel+_ => "u"+root ;
|
||||||
_+(#cons|"y")+#vowel+#cons+_+#vowel+_ => "um"+root ;
|
_+(#cons|"y")+#vowel+#cons+_+#vowel+_ => "um"+root ;
|
||||||
"o"+_ => "um"+root ;
|
("o"|"O")+_ => "um"+root ;
|
||||||
_ => "umu"+root
|
_ => "umu"+root
|
||||||
} ; -- umu for single syllables, um for the rest
|
} ; -- umu for single syllables, um for the rest
|
||||||
<C3_4,Pl> => "imi"+root ;
|
<C3_4,Pl> => "imi"+root ;
|
||||||
<C5_6,Sg> => case root of {
|
<C5_6,Sg> => case root of {
|
||||||
"i"+_ => root ;
|
("i"|"I")+_ => root ;
|
||||||
#vowel+_ => "il"+root ;
|
(#vowel|#vowel_cap)+_ => "il"+root ;
|
||||||
_ => "i"+root -- ili long form (not used?)
|
_ => "i"+root -- ili long form (not used?)
|
||||||
} ;
|
} ;
|
||||||
<C5_6,Pl> => case root of {
|
<C5_6,Pl> => case root of {
|
||||||
"i"+_ => "ame"+(drop 1 root) ;
|
("i"|"I")+_ => "ame"+(drop 1 root) ;
|
||||||
#vowel+_ => "am"+root ;
|
(#vowel|#vowel_cap)+_ => "am"+root ;
|
||||||
_ => "ama"+root
|
_ => "ama"+root
|
||||||
} ; -- ame for roots starting with i
|
} ; -- ame for roots starting with i
|
||||||
<C7_8,Sg> => case root of {
|
<C7_8,Sg> => case root of {
|
||||||
#vowel+_ => "is"+root ;
|
(#vowel|#vowel_cap)+_ => "is"+root ;
|
||||||
_ => "isi"+root
|
_ => "isi"+root
|
||||||
} ; -- is for roots starting with vowel
|
} ; -- is for roots starting with vowel
|
||||||
<C7_8,Pl> => case root of {
|
<C7_8,Pl> => case root of {
|
||||||
#vowel+_ => "iz"+root ;
|
(#vowel|#vowel_cap)+_ => "iz"+root ;
|
||||||
_ => "izi" + root
|
_ => "izi" + root
|
||||||
} ;
|
} ;
|
||||||
<C9_10,Sg> => "i" + prefix_nasal root ;
|
<C9_10,Sg> => "i" + prefix_nasal root ;
|
||||||
<C9_10,Pl> => "izi" + prefix_nasal root ;
|
<C9_10,Pl> => "izi" + prefix_nasal root ;
|
||||||
<C11_10,Sg> => case root of {
|
<C11_10,Sg> => case root of {
|
||||||
#vowel+_ => "ulw"+root ;
|
(#vowel|#vowel_cap)+_ => "ulw"+root ;
|
||||||
"w"+_ => "ul"+root ;
|
("w"|"W")+_ => "ul"+root ;
|
||||||
_ => "u"+root
|
_ => "u"+root
|
||||||
} ;
|
} ;
|
||||||
<C11_10,Pl> => case root of {
|
<C11_10,Pl> => case root of {
|
||||||
#vowel+_ => "izilw"+root ;
|
(#vowel|#vowel_cap)+_ => "izilw"+root ;
|
||||||
"w"+_ => "izil"+root ;
|
("w"|"W")+_ => "izil"+root ;
|
||||||
_ => "izi" + prefix_nasal root
|
_ => "izi" + prefix_nasal root
|
||||||
} ;
|
} ;
|
||||||
<C9_6,Sg> => "i" + prefix_nasal root ;
|
<C9_6,Sg> => "i" + prefix_nasal root ;
|
||||||
<C9_6,Pl> => case root of {
|
<C9_6,Pl> => case root of {
|
||||||
"i"+_ => "ame"+root ;
|
("i"|"I")+_ => "ame"+root ;
|
||||||
_ => "ama"+root
|
_ => "ama"+root
|
||||||
} ; -- ame for roots starting with i
|
} ; -- ame for roots starting with i
|
||||||
<C14,_> => "ubu"+root ;
|
<C14,_> => "ubu"+root ;
|
||||||
<C15,_> => case root of {
|
<C15,_> => case root of {
|
||||||
("a"|"e")+_ => "ukw"+root ;
|
("a"|"e"|"A"|"E")+_ => "ukw"+root ;
|
||||||
(#cons|"y")+_ => "uku"+root ;
|
(#cons|#cons_cap|"y"|"Y")+_ => "uku"+root ;
|
||||||
_ => "uk"+root
|
_ => "uk"+root
|
||||||
} ; -- ukw for roots starting with a/e, uk for roots starting with o
|
} ; -- ukw for roots starting with a/e, uk for roots starting with o
|
||||||
<C17,_> => "uku"+root -- sometimes ukw
|
<C17,_> => "uku"+root -- sometimes ukw
|
||||||
@@ -1047,65 +1147,66 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
case <cg,n> of
|
case <cg,n> of
|
||||||
{
|
{
|
||||||
<C1_2,Sg> => case root of {
|
<C1_2,Sg> => case root of {
|
||||||
#vowel+_ => "kum"+root ;
|
(#vowel|#vowel_cap)+_ => "kum"+root ;
|
||||||
_+#cons+#vowel+#cons+_+#vowel+_ => "kum"+root ;
|
_+#cons+#vowel+#cons+_+#vowel+_ => "kum"+root ;
|
||||||
_ => "kumu"+root
|
_ => "kumu"+root
|
||||||
} ; -- umu for single syllables, um for the rest
|
} ; -- umu for single syllables, um for the rest
|
||||||
<C1_2,Pl> => case root of {
|
<C1_2,Pl> => case root of {
|
||||||
#vowel+_ => "kub"+root ;
|
(#vowel|#vowel_cap)+_ => "kub"+root ;
|
||||||
_ => "kuba"+root -- abe for tribes or guilds
|
_ => "kuba"+root -- abe for tribes or guilds
|
||||||
} ;
|
} ;
|
||||||
<C1a_2a,Sg> => "ku"+root ;
|
<C1a_2a,Sg> => "ku"+root ;
|
||||||
<C1a_2a,Pl> => "ko"+root ;
|
<C1a_2a,Pl> => "ko"+root ;
|
||||||
<C3_4,Sg> => case root of {
|
<C3_4,Sg> => case root of {
|
||||||
"m"+_ => "e"+(addLocSuffix root) ;
|
("m"|"M")+_ => "e"+(addLocSuffix root) ;
|
||||||
_ => "em"+(addLocSuffix root)
|
_ => "em"+(addLocSuffix root)
|
||||||
} ;
|
} ;
|
||||||
<C3_4,Pl> => "emi"+(addLocSuffix root) ;
|
<C3_4,Pl> => "emi"+(addLocSuffix root) ;
|
||||||
<C5_6,Sg> => case root of {
|
<C5_6,Sg> => case root of {
|
||||||
"i"+_ => "e"+(addLocSuffix (drop 1 root)) ;
|
("i"|"I")+_ => "e"+(addLocSuffix (drop 1 root)) ;
|
||||||
#vowel+_ => "el"+(addLocSuffix root) ;
|
(#vowel|#vowel_cap)+_ => "el"+(addLocSuffix root) ;
|
||||||
_ => "e"+(addLocSuffix root) -- ili long form (not used?)
|
_ => "e"+(addLocSuffix root) -- ili long form (not used?)
|
||||||
} ;
|
} ;
|
||||||
<C5_6,Pl> => case root of {
|
<C5_6,Pl> => case root of {
|
||||||
"i"+_ => "eme"+(addLocSuffix (drop 1 root)) ;
|
("i"|"I")+_ => "eme"+(addLocSuffix (drop 1 root)) ;
|
||||||
#vowel+_ => "em"+(addLocSuffix root) ;
|
(#vowel|#vowel_cap)+_ => "em"+(addLocSuffix root) ;
|
||||||
_ => "ema"+(addLocSuffix root)
|
_ => "ema"+(addLocSuffix root)
|
||||||
} ; -- ame for roots starting with i
|
} ; -- ame for roots starting with i
|
||||||
<C7_8,Sg> => case root of {
|
<C7_8,Sg> => case root of {
|
||||||
#vowel+_ => "es"+(addLocSuffix root) ;
|
(#vowel|#vowel_cap)+_ => "es"+(addLocSuffix root) ;
|
||||||
_ => "esi"+(addLocSuffix root)
|
_ => "esi"+(addLocSuffix root)
|
||||||
} ; -- is for roots starting with vowel
|
} ; -- is for roots starting with vowel
|
||||||
<C7_8,Pl> => case root of {
|
<C7_8,Pl> => case root of {
|
||||||
#vowel+_ => "ez"+(addLocSuffix root) ;
|
(#vowel|#vowel_cap)+_ => "ez"+(addLocSuffix root) ;
|
||||||
_ => "ezi"+(addLocSuffix root) -- iz for roots starting with vowel
|
_ => "ezi"+(addLocSuffix root) -- iz for roots starting with vowel
|
||||||
} ;
|
} ;
|
||||||
<C9_10,Sg> => "e"+(addLocSuffix (prefix_nasal root)) ; -- em for labial, en for alveolar (TODO: does this correctly split options?)
|
<C9_10,Sg> => "e"+(addLocSuffix (prefix_nasal root)) ; -- em for labial, en for alveolar (TODO: does this correctly split options?)
|
||||||
<C9_10,Pl> => "ezi"+(addLocSuffix (prefix_nasal root)) ; -- izim for labial, izin for alveolar (TODO: does this correctly split options?)
|
<C9_10,Pl> => "ezi"+(addLocSuffix (prefix_nasal root)) ; -- izim for labial, izin for alveolar (TODO: does this correctly split options?)
|
||||||
<C11_10,Sg> => case root of {
|
<C11_10,Sg> => case root of {
|
||||||
#vowel+_ => "olw"+(addLocSuffix root) ;
|
(#vowel|#vowel_cap)+_ => "olw"+(addLocSuffix root) ;
|
||||||
"w"+_ => "ol"+(addLocSuffix root) ;
|
("w"|"W")+_ => "ol"+(addLocSuffix root) ;
|
||||||
_ => "o"+(addLocSuffix root)
|
_ => "o"+(addLocSuffix root)
|
||||||
} ;
|
} ;
|
||||||
<C11_10,Pl> => case root of {
|
<C11_10,Pl> => case root of {
|
||||||
#vowel+_ => "ezilw"+(addLocSuffix root) ;
|
(#vowel|#vowel_cap)+_ => "ezilw"+(addLocSuffix root) ;
|
||||||
"w"+_ => "ezil"+(addLocSuffix root) ;
|
("w"|"W")+_ => "ezil"+(addLocSuffix root) ;
|
||||||
_ => "ezi"+(addLocSuffix (prefix_nasal root)) -- izim for labial, izin for alveolar, izi(n|m)k for roots starting with kh
|
_ => "ezi"+(addLocSuffix (prefix_nasal root)) -- izim for labial, izin for alveolar, izi(n|m)k for roots starting with kh
|
||||||
} ;
|
} ;
|
||||||
<C9_6,Sg> => "e"+(addLocSuffix (prefix_nasal root)) ; -- em for labial, en for alveolar (TODO: does this correctly split options?)
|
<C9_6,Sg> => "e"+(addLocSuffix (prefix_nasal root)) ; -- em for labial, en for alveolar (TODO: does this correctly split options?)
|
||||||
<C9_6,Pl> => case root of {
|
<C9_6,Pl> => case root of {
|
||||||
"i"+_ => "eme"+(addLocSuffix root) ;
|
("i"|"I")+_ => "eme"+(addLocSuffix root) ;
|
||||||
_ => "ema"+(addLocSuffix root)
|
_ => "ema"+(addLocSuffix root)
|
||||||
} ; -- ame for roots starting with i
|
} ; -- ame for roots starting with i
|
||||||
<C14,_> => "ebu"+(addLocSuffix root) ;
|
<C14,_> => "ebu"+(addLocSuffix root) ;
|
||||||
<C15,_> => case root of {
|
<C15,_> => case root of {
|
||||||
("a"|"e")+_ => "ekw"+(addLocSuffix root) ;
|
("a"|"e"|"A"|"E")+_ => "ekw"+(addLocSuffix root) ;
|
||||||
(#cons|"y")+_ => "eku"+root ;
|
(#cons|"y"|#cons_cap|"Y")+_ => "eku"+root ;
|
||||||
_ => "ek"+(addLocSuffix root)
|
_ => "ek"+(addLocSuffix root)
|
||||||
} ; -- ukw for roots starting with a/e, uk for roots starting with o
|
} ; -- ukw for roots starting with a/e, uk for roots starting with o
|
||||||
<C17,_> => "eku"+(addLocSuffix root) -- sometimes ukw
|
<C17,_> => "eku"+(addLocSuffix root) -- sometimes ukw
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
locS : Agr => Str = table {
|
locS : Agr => Str = table {
|
||||||
Third C1_2 _ => [] ;
|
Third C1_2 _ => [] ;
|
||||||
Third C1a_2a _ => [] ;
|
Third C1a_2a _ => [] ;
|
||||||
@@ -1154,16 +1255,16 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
loc_NP : {
|
loc_NP : {
|
||||||
empty : Str ;
|
empty : Str ;
|
||||||
s : NForm => Str ;
|
s : NForm => Str ;
|
||||||
mod : Str ;
|
-- mod : Str ;
|
||||||
dem : Str ;
|
-- dem : Str ;
|
||||||
predet_pre : Str ;
|
-- predet_pre : Str ;
|
||||||
predet_post : Str ;
|
-- predet_post : Str ;
|
||||||
agr : Agr ;
|
agr : Agr ;
|
||||||
proDrop : Bool ;
|
proDrop : Bool ;
|
||||||
isPron : Bool ;
|
isPron : Bool ;
|
||||||
-- reqLocS : Bool ;
|
-- reqLocS : Bool ;
|
||||||
qdef : QuantDef
|
-- qdef : QuantDef
|
||||||
} -> Str = \np -> np.s!NLoc ++ np.dem ++ np.mod ++ np.predet_pre ++ np.predet_post ;
|
} -> Str = \np -> np.s!NLoc ;
|
||||||
|
|
||||||
poss_NP : {
|
poss_NP : {
|
||||||
empty : Str ;
|
empty : Str ;
|
||||||
@@ -1210,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" } ;
|
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" } ;
|
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 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 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 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 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" } ;
|
Third C5_6 Sg => table {SC => "li" ; SCVow => "l"++BIND ; SCNeg => "li" ; SCNegVow => "l" ; SCPart => "li" ; SCPS => "li" ; SCVowP => "li" ; SCBe => "beli" ; SCRP => "lali" } ;
|
||||||
@@ -1226,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 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 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 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 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" }
|
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 {
|
subjConc : VForm -> Agr -> Bool -> Str = \vform,agr,vow ->
|
||||||
-- (Third C5_6 Pl|Third C9_6 Pl) => [] ;
|
case <vow,vform> of {
|
||||||
-- _ => subjConcLookup ! agr ! SCVow ++BIND
|
|
||||||
-- } ;
|
|
||||||
|
|
||||||
subjConc : VForm -> Agr -> Bool -> Str = \vform,agr,prevow ->
|
|
||||||
case <prevow,vform> of {
|
|
||||||
<False,VFIndic _ Neg _> => subjConcLookup ! agr ! SCNeg ++BIND ;
|
<False,VFIndic _ Neg _> => subjConcLookup ! agr ! SCNeg ++BIND ;
|
||||||
<True,VFIndic _ Neg _> => subjConcLookup ! agr ! SCNegVow ++BIND ;
|
<True,VFIndic _ Neg _> => subjConcLookup ! agr ! SCNegVow ++BIND ;
|
||||||
<True,VFIndic _ _ _> => subjConcLookup ! agr ! SCVow ;
|
<True,VFIndic _ _ _> => subjConcLookup ! agr ! SCVow ;
|
||||||
@@ -1245,19 +1341,6 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
<_,VFIndic _ _ _> => subjConcLookup ! agr ! SC ++BIND
|
<_,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 {
|
impPref : Polarity -> Str = \pol -> case pol of {
|
||||||
Pos => [] ;
|
Pos => [] ;
|
||||||
Neg => "u" ++BIND++ "nga" ++BIND
|
Neg => "u" ++BIND++ "nga" ++BIND
|
||||||
@@ -1270,7 +1353,7 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
in
|
in
|
||||||
case vform of {
|
case vform of {
|
||||||
VFIndic _ Pos PresTense => subjConcLookup ! agr ! SC ++BIND ;
|
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 RemPastTense => subjConcLookup ! agr ! SC ++BIND++ "be" ++ subjConcLookup ! agr ! SCBe ++BIND ;
|
||||||
VFIndic _ Pos FutTense => subjConcLookup ! agr ! SC ++BIND ++ "zobe" ++ subjConcLookup ! agr ! SC ++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 ;
|
VFIndic _ Pos RemFutTense => subjConcLookup ! agr ! SC ++BIND ++ "yobe" ++ subjConcLookup ! agr ! SC ++BIND ;
|
||||||
@@ -1325,8 +1408,7 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
|
|
||||||
-- ADJECTIVE ANTECEDENT AGREEMENT MORPHEME --
|
-- ADJECTIVE ANTECEDENT AGREEMENT MORPHEME --
|
||||||
|
|
||||||
relAdjPrefLookup : Agr => Str = --table {
|
relAdjPrefLookup : Agr => Str =
|
||||||
-- Pos =>
|
|
||||||
table {
|
table {
|
||||||
Third C1_2 Sg => "m" ;
|
Third C1_2 Sg => "m" ;
|
||||||
Third C1_2 Pl => "" ;
|
Third C1_2 Pl => "" ;
|
||||||
@@ -1348,29 +1430,6 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
Third C15 _ => "ku" ;
|
Third C15 _ => "ku" ;
|
||||||
Third C17 _ => "ku" ;
|
Third C17 _ => "ku" ;
|
||||||
(First _ | Second _ ) => "m"
|
(First _ | Second _ ) => "m"
|
||||||
-- } ;
|
|
||||||
-- Neg => table {
|
|
||||||
-- Third C1_2 Sg => "ongem" ;
|
|
||||||
-- Third C1_2 Pl => "angeba" ;
|
|
||||||
-- Third C1a_2a Sg => "ongem" ;
|
|
||||||
-- Third C1a_2a Pl => "angeba" ;
|
|
||||||
-- Third C3_4 Sg => "ongem" ;
|
|
||||||
-- Third C3_4 Pl => "engemi" ;
|
|
||||||
-- Third C5_6 Sg => "engeli" ;
|
|
||||||
-- Third C5_6 Pl => "angema" ;
|
|
||||||
-- Third C7_8 Sg => "engesi" ;
|
|
||||||
-- Third C7_8 Pl => "engezi" ;
|
|
||||||
-- Third C9_10 Sg => "enge" ;
|
|
||||||
-- Third C9_10 Pl => "engezi" ;
|
|
||||||
-- Third C11_10 Sg => "ongelu" ;
|
|
||||||
-- Third C11_10 Pl => "engezi" ;
|
|
||||||
-- Third C9_6 Sg => "enge" ;
|
|
||||||
-- Third C9_6 Pl => "angema" ;
|
|
||||||
-- Third C14 _ => "ongebu" ;
|
|
||||||
-- Third C15 _ => "ongeku" ;
|
|
||||||
-- Third C17 _ => "ongeku" ;
|
|
||||||
-- (First _ | Second _ ) => "ongem"
|
|
||||||
-- }
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- RELATIVE ANTECEDENT AGREEMENT MORPHEME --
|
-- RELATIVE ANTECEDENT AGREEMENT MORPHEME --
|
||||||
@@ -1405,7 +1464,30 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
VFIndic _ _ PastTense => relCopConcBeLookup!a ;
|
VFIndic _ _ PastTense => relCopConcBeLookup!a ;
|
||||||
VFIndic _ _ RemPastTense => case a of {
|
VFIndic _ _ RemPastTense => case a of {
|
||||||
Third C5_6 Pl => [] ; -- relConcLookup!a!RA ; -- a + aye = aye
|
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
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
adjConcCop : VForm -> Agr -> RInit ->Str = \vform,a,r -> case vform of {
|
||||||
|
VFIndic _ Pos PresTense => shortRelConc!a ;
|
||||||
|
VFIndic _ Neg PresTense => adjConcLookup!a!RC ;
|
||||||
|
VFIndic _ _ FutTense => adjConcLookup!a!RC ;
|
||||||
|
VFIndic _ _ RemFutTense => adjConcLookup!a!RC ;
|
||||||
|
VFIndic _ _ PastTense => relCopConcBeLookup!a ;
|
||||||
|
VFIndic _ _ RemPastTense => case a of {
|
||||||
|
Third C5_6 Pl => [] ; -- relConcLookup!a!RA ; -- a + aye = aye
|
||||||
|
(First _ | Second _ | Third _ _ ) => shortRelConc!a
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -1436,6 +1518,33 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
Second Pl => table { RC => "eni"++BIND ; _ => "en"++BIND }
|
Second Pl => table { RC => "eni"++BIND ; _ => "en"++BIND }
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
adjConcLookup : Agr => RInit => Str =
|
||||||
|
table {
|
||||||
|
Third C1_2 Sg => table { RO => [] ; (RA|RE) => "ow"++BIND ; _ => "o"++BIND } ;
|
||||||
|
Third C1_2 Pl => table { RC => "aba"++BIND ; _ => "ab"++BIND } ;
|
||||||
|
Third C1a_2a Sg => table { RO => [] ; (RA|RE) => "ow"++BIND ; _ => "o"++BIND } ;
|
||||||
|
Third C1a_2a Pl => table { RC => "aba"++BIND ; _ => "ab"++BIND } ;
|
||||||
|
Third C3_4 Sg => table { RO => [] ; (RA|RE) => "ow"++BIND ; _ => "o"++BIND } ;
|
||||||
|
Third C3_4 Pl => table { RC => "emi"++BIND ; _ => "em"++BIND } ;
|
||||||
|
Third C5_6 Sg => table { RC => "eli"++BIND ; _ => "el"++BIND } ;
|
||||||
|
Third C5_6 Pl => table { RC => "a"++BIND ; _ => [] } ;
|
||||||
|
Third C7_8 Sg => table { RC => "esi"++BIND ; _ => "es"++BIND } ;
|
||||||
|
Third C7_8 Pl => table { RC => "ezi"++BIND ; _ => "ez"++BIND } ;
|
||||||
|
Third C9_10 Sg => table { RE => [] ; (RA|RO) => "ey" ++BIND ; _ => "e"++BIND } ;
|
||||||
|
Third C9_10 Pl => table { RC => "ezi"++BIND ; _ => "ez"++BIND } ;
|
||||||
|
Third C11_10 Sg => table { RC => "olu"++BIND ; (RA|RE) => "olw" ; _ => "ol"++BIND } ;
|
||||||
|
Third C11_10 Pl => table { RC => "ezi"++BIND ; _ => "ez"++BIND } ;
|
||||||
|
Third C9_6 Sg => table { RE => [] ; (RA|RO) => "ey" ; _ => "e"++BIND } ;
|
||||||
|
Third C9_6 Pl => table { RC => "a"++BIND ; _ => [] } ;
|
||||||
|
Third C14 _ => table { RC => "obu"++BIND ; _ => "ob"++BIND } ;
|
||||||
|
Third C15 _ => table { RC => "oku"++BIND ; (RA|RE) => "okw" ; _ => "ok"++BIND } ;
|
||||||
|
Third C17 _ => table { RC => "oku"++BIND ; (RA|RE) => "okw" ; _ => "ok"++BIND } ;
|
||||||
|
First Sg => table { RC => "engi"++BIND ; _ => "eng"++BIND } ;
|
||||||
|
First Pl => table { RC => "esi"++BIND ; _ => "es"++BIND } ;
|
||||||
|
Second Sg => table { RE => "ow"++BIND ; _ => "o"++BIND } ;
|
||||||
|
Second Pl => table { RC => "eni"++BIND ; _ => "en"++BIND }
|
||||||
|
} ;
|
||||||
|
|
||||||
relCopConcBeLookup : Agr => Str =
|
relCopConcBeLookup : Agr => Str =
|
||||||
table {
|
table {
|
||||||
Third C1_2 Sg => "obe"++BIND ;
|
Third C1_2 Sg => "obe"++BIND ;
|
||||||
@@ -1463,6 +1572,60 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
Second Pl => "ebeni"++BIND
|
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 =
|
-- relCopConcBeLookup : Agr => RInit => Str =
|
||||||
-- table {
|
-- table {
|
||||||
-- Third C1_2 Sg => table { _ => "obe"++BIND } ;
|
-- Third C1_2 Sg => table { _ => "obe"++BIND } ;
|
||||||
@@ -1622,54 +1785,62 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
poss_concord_c1a : ClassGender => Number => RInit => Str =
|
poss_concord_c1a : ClassGender => Number => Str =
|
||||||
table {
|
table {
|
||||||
C1_2 => table {
|
C1_2 => table {
|
||||||
Sg => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" } ;
|
Sg => "ka" ;
|
||||||
Pl => table {(RA|RC) => "baka" ; (RE|RI) => "bake" ; (RO|RU) => "bako" }
|
Pl => "baka"
|
||||||
} ;
|
} ;
|
||||||
C1a_2a => table {
|
C1a_2a => table {
|
||||||
Sg => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" } ;
|
Sg => "ka" ;
|
||||||
Pl => table {(RA|RC) => "baka" ; (RE|RI) => "bake" ; (RO|RU) => "bako" }
|
Pl => "baka"
|
||||||
} ;
|
} ;
|
||||||
C3_4 => table {
|
C3_4 => table {
|
||||||
Sg => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" } ;
|
Sg => "ka" ;
|
||||||
Pl => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" }
|
Pl => "ka"
|
||||||
} ;
|
} ;
|
||||||
C5_6 => table {
|
C5_6 => table {
|
||||||
Sg => table {(RA|RC) => "lika" ; (RE|RI) => "like" ; (RO|RU) => "liko" } ;
|
Sg => "lika" ;
|
||||||
Pl => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" }
|
Pl => "ka"
|
||||||
} ;
|
} ;
|
||||||
C7_8 => table {
|
C7_8 => table {
|
||||||
Sg => table {(RA|RC) => "sika" ; (RE|RI) => "sike" ; (RO|RU) => "siko" } ;
|
Sg => "sika" ;
|
||||||
Pl => table {(RA|RC) => "zika" ; (RE|RI) => "zike" ; (RO|RU) => "ziko" }
|
Pl => "zika"
|
||||||
} ;
|
} ;
|
||||||
C9_10 => table {
|
C9_10 => table {
|
||||||
Sg => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" } ;
|
Sg => "ka" ;
|
||||||
Pl => table {(RA|RC) => "zika" ; (RE|RI) => "zike" ; (RO|RU) => "ziko" }
|
Pl => "zika"
|
||||||
} ;
|
} ;
|
||||||
C11_10 => table {
|
C11_10 => table {
|
||||||
Sg => table {(RA|RC) => "luka" ; (RE|RI) => "luke" ; (RO|RU) => "luko" } ;
|
Sg => "luka" ;
|
||||||
Pl => table {(RA|RC) => "zika" ; (RE|RI) => "zike" ; (RO|RU) => "ziko" }
|
Pl => "zika"
|
||||||
} ;
|
} ;
|
||||||
C9_6 => table {
|
C9_6 => table {
|
||||||
Sg => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" } ;
|
Sg => "ka" ;
|
||||||
Pl => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" }
|
Pl => "ka"
|
||||||
} ;
|
} ;
|
||||||
C14 => table {
|
C14 => table {
|
||||||
_ => table {(RA|RC) => "buka" ; (RE|RI) => "buke" ; (RO|RU) => "buko" }
|
_ => "buka"
|
||||||
} ;
|
} ;
|
||||||
C15 => table {
|
C15 => table {
|
||||||
_ => table {(RA|RC) => "kuka" ; (RE|RI) => "kuke" ; (RO|RU) => "kuko" }
|
_ => "kuka"
|
||||||
} ;
|
} ;
|
||||||
C17 => table {
|
C17 => table {
|
||||||
_ => table {(RA|RC) => "kuka" ; (RE|RI) => "kuke" ; (RO|RU) => "kuko" }
|
_ => "kuka"
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- QUANTITATIVE AGREEMENT MORPHEME --
|
-- QUANTITATIVE AGREEMENT MORPHEME --
|
||||||
-- (demonstatives)
|
-- (demonstatives)
|
||||||
|
|
||||||
|
quantinit : Agr => RInit =
|
||||||
|
table {
|
||||||
|
Third C5_6 Pl => RO ;
|
||||||
|
Third C9_6 Pl => RO ;
|
||||||
|
Third _ _ => RC ;
|
||||||
|
(First _ | Second _ ) => RC
|
||||||
|
} ;
|
||||||
|
|
||||||
exclQuantConc : Agr => Str = table {
|
exclQuantConc : Agr => Str = table {
|
||||||
Third C1_2 Sg => "ye" ;
|
Third C1_2 Sg => "ye" ;
|
||||||
Third C1_2 Pl => "bo" ;
|
Third C1_2 Pl => "bo" ;
|
||||||
@@ -1882,7 +2053,7 @@ resource ResZul = open Prelude,Predef,ParamX in {
|
|||||||
|
|
||||||
kho_cop : VForm -> Agr -> Str = \vform,agr -> case vform of {
|
kho_cop : VForm -> Agr -> Str = \vform,agr -> case vform of {
|
||||||
VFIndic MainCl Neg PresTense => neg_kho_cop_pref agr ++ "kho";
|
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 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"
|
VFIndic MainCl p t => (ap_cop_pref (VFIndic MainCl p t) agr RelType) ++ "khona"
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -19,44 +19,59 @@ concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in {
|
|||||||
False => True
|
False => True
|
||||||
}
|
}
|
||||||
in {
|
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
|
_ => cl_with_verb_predicate np vp
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ;
|
-- PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ;
|
||||||
|
|
||||||
ImpVP vp = let
|
-- ImpVP vp = let
|
||||||
np = {
|
-- np = {
|
||||||
empty = [] ;
|
-- empty = [] ;
|
||||||
s = table {NFull|NReduced|NPoss|NLoc => []} ;
|
-- s = table {NFull|NReduced|NPoss|NLoc => []} ;
|
||||||
-- loc = [] ;
|
-- -- loc = [] ;
|
||||||
-- desc = [] ;
|
-- -- desc = [] ;
|
||||||
-- det = [] ;
|
-- -- det = [] ;
|
||||||
agr = Second Sg ;
|
-- agr = Second Sg ;
|
||||||
i = nominit!(Second Sg) ;
|
-- i = nominit!(Second Sg) ;
|
||||||
proDrop = True ;
|
-- proDrop = True ;
|
||||||
isPron = True ;
|
-- isPron = True ;
|
||||||
heavy = False
|
-- heavy = False
|
||||||
-- reqLocS = True ;
|
-- -- reqLocS = True ;
|
||||||
-- qdef = Article Spec
|
-- -- qdef = Article Spec
|
||||||
} ;
|
-- } ;
|
||||||
impTense = PresTense
|
-- impTense = PresTense
|
||||||
in case vp.vptype of {
|
-- in case vp.vptype of {
|
||||||
VNPCompl => {
|
-- NoComp => let
|
||||||
s = table {
|
-- yi = case vp.syl of {
|
||||||
Pos => vp.s!MainCl!np.agr!Pos!impTense!False ++ vp.comp ++ vp.iadv ++ vp.advs ;
|
-- SylMono => "yi"++BIND ;
|
||||||
Neg => "unga" ++ vp.s!MainCl!np.agr!Neg!impTense!False ++ vp.comp ++ vp.iadv ++ vp.advs
|
-- _ => []
|
||||||
}
|
-- }
|
||||||
} ;
|
-- in {
|
||||||
|
-- s = table {
|
||||||
|
-- Pos => yi ++ vp.s!MainCl!np.agr!Pos!impTense!False ++ vp.comp ++ vp.iadv ++ vp.advs ;
|
||||||
|
-- Neg => "unga" ++ vp.s!MainCl!np.agr!Neg!impTense!False ++ vp.comp ++ vp.iadv ++ vp.advs
|
||||||
|
-- }
|
||||||
|
-- } ;
|
||||||
|
-- VNPCompl => {
|
||||||
|
-- s = table {
|
||||||
|
-- Pos => vp.s!MainCl!np.agr!Pos!impTense!False ++ vp.comp ++ vp.iadv ++ vp.advs ;
|
||||||
|
-- Neg => "unga" ++ vp.s!MainCl!np.agr!Neg!impTense!False ++ vp.comp ++ vp.iadv ++ vp.advs
|
||||||
|
-- }
|
||||||
|
-- } ;
|
||||||
|
--
|
||||||
|
-- CopIdent => {s = \\pol => (comp_pred np vp).s!pol!impTense } ;
|
||||||
|
-- CopAssoc => {s = \\pol => (comp_pred np vp).s!pol!impTense } ;
|
||||||
|
-- CopDescr => {s = \\pol => (comp_pred np vp).s!pol!impTense } ;
|
||||||
|
-- CopEq => {s = \\pol => (cl_with_eq_cop_predicate np vp).s!pol!impTense } ;
|
||||||
|
-- -- VACompl => {s = \\pol => (cl_with_ap_comp_predicate np vp).s!pol!impTense!Princ } ;
|
||||||
|
-- AdvComp => {s = \\pol => (cl_with_adv_comp_predicate np vp).s!pol!impTense } ;
|
||||||
|
-- _ => {s = \\pol => (imp_verb_predicate np vp).s!pol!impTense }
|
||||||
|
-- } ;
|
||||||
|
|
||||||
CopIdent => {s = \\pol => (comp_pred np vp).s!pol!impTense } ;
|
ImpVP vp = {
|
||||||
CopAssoc => {s = \\pol => (comp_pred np vp).s!pol!impTense } ;
|
s = \\n,p => vp.imp_s!n!p ++ vp.comp ++ vp.iadv ++ vp.advs
|
||||||
CopDescr => {s = \\pol => (comp_pred np vp).s!pol!impTense } ;
|
|
||||||
CopEq => {s = \\pol => (cl_with_eq_cop_predicate np vp).s!pol!impTense } ;
|
|
||||||
-- VACompl => {s = \\pol => (cl_with_ap_comp_predicate np vp).s!pol!impTense!Princ } ;
|
|
||||||
AdvComp => {s = \\pol => (cl_with_adv_comp_predicate np vp).s!pol!impTense } ;
|
|
||||||
_ => {s = \\pol => (imp_verb_predicate np vp).s!pol!impTense }
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- SlashVP np vp =
|
-- SlashVP np vp =
|
||||||
@@ -95,7 +110,7 @@ concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in {
|
|||||||
-- c2 = cl.c2
|
-- c2 = cl.c2
|
||||||
-- } ;
|
-- } ;
|
||||||
--
|
--
|
||||||
-- AdvS a s = {s = a.s ++ s.s} ;
|
AdvS a s = {s = a.s ++ s.s} ;
|
||||||
-- ExtAdvS a s = {s = a.s ++ frontComma ++ s.s} ;
|
-- ExtAdvS a s = {s = a.s ++ frontComma ++ s.s} ;
|
||||||
--
|
--
|
||||||
-- SSubjS a s b = {s = a.s ++ frontComma ++ s.s ++ b.s} ;
|
-- SSubjS a s b = {s = a.s ++ frontComma ++ s.s ++ b.s} ;
|
||||||
@@ -168,44 +183,42 @@ concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in {
|
|||||||
}
|
}
|
||||||
in
|
in
|
||||||
subj
|
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.s!MainCl!np.agr!p!t!longform_suffix
|
||||||
++ vp.iadv
|
++ vp.iadv
|
||||||
++ vp.comp
|
++ vp.comp
|
||||||
++ vp.advs
|
++ vp.advs
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
verb_prefix : VP -> Polarity -> BasicTense -> Agr -> Str = \vp,p,t,agr ->
|
-- verb_prefix : VP -> Polarity -> BasicTense -> Agr -> Str = \vp,p,t,agr ->
|
||||||
let
|
-- let
|
||||||
lfya = case <vp.hasComp,p,t,vp.r> of {
|
-- lfya = case <vp.hasComp,p,t,vp.r> of {
|
||||||
<False,Pos,PresTense,RC> => "ya" ++BIND ;
|
-- <False,Pos,PresTense,RC> => "ya" ++BIND ;
|
||||||
<False,Pos,PresTense,_> => "y" ++BIND ;
|
-- <False,Pos,PresTense,_> => "y" ++BIND ;
|
||||||
<_,_,_> => []
|
-- <_,_,_> => []
|
||||||
} ;
|
-- } ;
|
||||||
-- vow = case <vp.hasComp,vp.r,p,t> of {
|
-- -- vow = case <vp.hasComp,vp.r,p,t> of {
|
||||||
vow = case <vp.hasComp,p,t,vp.r> 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,RC> => False ; -- force the compiler to understand the table
|
||||||
<False,Pos,PresTense,_> => False ; -- long form ya
|
-- <False,Pos,PresTense,_> => False ; -- long form ya
|
||||||
|
--
|
||||||
<_,_,PresTense,RC> => False ;
|
-- <_,_,PresTense,RC> => False ;
|
||||||
<_,_,PresTense,_> => True ;
|
-- <_,_,PresTense,_> => True ;
|
||||||
-- <_,Pos,PerfTense,RC> => False ;
|
-- <_,_,PastTense,RC> => False ;
|
||||||
-- <_,Pos,PerfTense,_> => True ;
|
-- <_,_,PastTense,_> => True ;
|
||||||
<_,_,PastTense,RC> => False ;
|
-- <_,_,RemPastTense,RC> => False ;
|
||||||
<_,_,PastTense,_> => True ;
|
-- <_,_,RemPastTense,_> => True ;
|
||||||
<_,_,RemPastTense,RC> => False ;
|
-- <_,_,_,_> => False
|
||||||
<_,_,RemPastTense,_> => True ;
|
-- } ;
|
||||||
<_,_,_,_> => False
|
-- vform = VFIndic MainCl p t
|
||||||
} ;
|
-- in
|
||||||
vform = VFIndic MainCl p t
|
-- (negPref vform)
|
||||||
in
|
-- -- ++ (exclSePref vform_main)
|
||||||
(negPref vform)
|
-- ++ (subjConc vform agr vow)
|
||||||
-- ++ (exclSePref vform_main)
|
-- -- ++ (negPref2 vform_main)
|
||||||
++ (subjConc vform agr vow)
|
-- ++ lfya
|
||||||
-- ++ (negPref2 vform_main)
|
-- -- ++ (tensePref vform)
|
||||||
++ lfya
|
-- ;
|
||||||
-- ++ (tensePref vform)
|
|
||||||
;
|
|
||||||
|
|
||||||
-- TODO: aspect
|
-- TODO: aspect
|
||||||
cl_with_eq_cop_predicate : NP -> VP -> { s : Polarity => BasicTense => Str } = \np,vp -> {
|
cl_with_eq_cop_predicate : NP -> VP -> { s : Polarity => BasicTense => Str } = \np,vp -> {
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ concrete StructuralZul of Structural = CatZul **
|
|||||||
|
|
||||||
-- VV
|
-- VV
|
||||||
-- can8know_VV
|
-- can8know_VV
|
||||||
-- can_VV
|
can_VV = lin VV (mkV "yakwaz" "yakwazi") ;
|
||||||
-- must_VV
|
-- must_VV
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
|||||||
pcp ++ adjpref ++ cop_base ;
|
pcp ++ adjpref ++ cop_base ;
|
||||||
RelCl => \\a,p,t,l => let
|
RelCl => \\a,p,t,l => let
|
||||||
vform = VFIndic RelCl p t ;
|
vform = VFIndic RelCl p t ;
|
||||||
rcp = shortRelConc!a ; -- o-
|
rcp = (adjConcCop vform a RC) ; -- o-
|
||||||
pcp = ap_cop_pref vform a AdjType ; -- [] / -nge- / zoba / -be- / -benge- -waye- / -wayenge-
|
pcp = ap_cop_pref vform a AdjType ; -- [] / -nge- / zoba / -be- / -benge- -waye- / -wayenge-
|
||||||
adjpref = adjPref a vform ; -- m-
|
adjpref = adjPref a vform ; -- m-
|
||||||
cop_base = ap.s!(aformN a) -- khulu
|
cop_base = ap.s!(aformN a) -- khulu
|
||||||
@@ -37,6 +37,34 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
|||||||
rcp ++ pcp ++ cop_base
|
rcp ++ pcp ++ cop_base
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
imp_s = table {
|
||||||
|
Sg => let
|
||||||
|
agr = (Second Sg)
|
||||||
|
in table {
|
||||||
|
Pos => "yiba" ++ ap.s!AF1 ;
|
||||||
|
Neg => "ungabi" ++ ap.s!AF1
|
||||||
|
} ;
|
||||||
|
Pl => let
|
||||||
|
agr = (Second Pl)
|
||||||
|
in table {
|
||||||
|
Pos => "yibani" ++ ap.s!AF1 ;
|
||||||
|
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 = [] ;
|
comp, iadv, advs = [] ;
|
||||||
hasComp = True ;
|
hasComp = True ;
|
||||||
r = RC ; -- should not be used
|
r = RC ; -- should not be used
|
||||||
@@ -62,6 +90,30 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
|||||||
in
|
in
|
||||||
rcp ++ pcp ++ cp ++ cop_base
|
rcp ++ pcp ++ cp ++ cop_base
|
||||||
} ;
|
} ;
|
||||||
|
imp_s = table {
|
||||||
|
Sg => table {
|
||||||
|
Pos => "yiba" ++ (id_cop_pref np.agr) ++ np.s!NFull ;
|
||||||
|
Neg => "ungabi" ++ (id_cop_pref np.agr) ++ np.s!NFull
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
Pos => "yibani" ++ (id_cop_pref np.agr) ++ np.s!NFull ;
|
||||||
|
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 = [] ;
|
comp, iadv, advs = [] ;
|
||||||
hasComp = np.heavy ;
|
hasComp = np.heavy ;
|
||||||
r = RC ; -- should not be used
|
r = RC ; -- should not be used
|
||||||
@@ -87,6 +139,32 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
|||||||
in
|
in
|
||||||
rcp ++ pcp ++ cp ++ cop_base
|
rcp ++ pcp ++ cp ++ cop_base
|
||||||
} ;
|
} ;
|
||||||
|
imp_s = let
|
||||||
|
cop = (assoc_cop_pref Pos np.agr) ++ np.s!NReduced
|
||||||
|
in table {
|
||||||
|
Sg => table {
|
||||||
|
Pos => "yiba" ++ cop ;
|
||||||
|
Neg => "ungabi" ++ cop
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
Pos => "yibani" ++ cop ;
|
||||||
|
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 = [] ;
|
comp, iadv, advs = [] ;
|
||||||
hasComp = np.heavy ;
|
hasComp = np.heavy ;
|
||||||
r = RC ; -- should not be used
|
r = RC ; -- should not be used
|
||||||
@@ -94,34 +172,90 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
|||||||
vptype = CopAssoc
|
vptype = CopAssoc
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ComplV2Nonspec v2 np = {
|
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 {
|
||||||
|
True => False ;
|
||||||
|
False => True
|
||||||
|
}
|
||||||
|
in {
|
||||||
s = table {
|
s = table {
|
||||||
MainCl => \\a,p,t,l => let
|
MainCl => \\a,p,t,l => let
|
||||||
vform = VFIndic MainCl p t ;
|
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 ;
|
tp = tensePref vform v2.r v2.syl ;
|
||||||
oc = objConc np.agr v2.r v2.syl ;
|
-- oc = objConc np.agr v2.r v2.syl ;
|
||||||
longform = case np.heavy of {
|
-- longform = case np.heavy of {
|
||||||
True => False ;
|
-- True => False ;
|
||||||
False => True
|
-- False => True
|
||||||
} ;
|
-- } ;
|
||||||
r = v2.s!(rform (VFIndic MainCl p t) longform) ;
|
r = v2.s!(rform (VFIndic MainCl p t) longform) ;
|
||||||
obj = case p of {
|
obj = case p of {
|
||||||
Pos => np.s!NFull ;
|
Pos => np.s!NFull ;
|
||||||
Neg => np.s!NReduced
|
Neg => np.s!NReduced
|
||||||
} ;
|
} ;
|
||||||
in case np.proDrop of {
|
in case np.proDrop of {
|
||||||
True => tp ++ oc ++ r ++ obj ;
|
True => vpref_with_oc ++ tp ++ oc ++ r ++ obj ;
|
||||||
False => tp ++ r ++ obj
|
False => vpref_no_oc ++ tp ++ r ++ obj
|
||||||
} ;
|
} ;
|
||||||
RelCl => \\a,p,t,l => let
|
RelCl => \\a,p,t,l => let
|
||||||
vform = (VFIndic RelCl p t) ;
|
vform = (VFIndic RelCl p t) ;
|
||||||
rc = relConc vform a v2.r ;
|
rc = relConc vform a v2.r ;
|
||||||
tp = tensePref vform v2.r v2.syl ;
|
tp = tensePref vform v2.r v2.syl ;
|
||||||
oc = objConc np.agr v2.r v2.syl ;
|
-- oc = objConc np.agr v2.r v2.syl ;
|
||||||
longform = case np.heavy of {
|
-- longform = case np.heavy of {
|
||||||
True => False ;
|
-- True => False ;
|
||||||
False => True
|
-- False => True
|
||||||
} ;
|
-- } ;
|
||||||
r = v2.s!(rform vform longform) ;
|
r = v2.s!(rform vform longform) ;
|
||||||
obj = case p of {
|
obj = case p of {
|
||||||
Pos => np.s!NFull ;
|
Pos => np.s!NFull ;
|
||||||
@@ -132,6 +266,53 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
|||||||
False => rc ++ tp ++ r ++ obj
|
False => rc ++ tp ++ r ++ obj
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
imp_s = let
|
||||||
|
obj_full = np.s!NFull ;
|
||||||
|
obj_red = np.s!NReduced
|
||||||
|
in table {
|
||||||
|
Sg => table {
|
||||||
|
Pos => case np.proDrop of {
|
||||||
|
True => oc ++ v2.s!R_e ++ obj_full ;
|
||||||
|
False => v2.s!R_a ++ obj_full
|
||||||
|
} ;
|
||||||
|
Neg => case np.proDrop of {
|
||||||
|
True => "unga" ++BIND++ oc ++ v2.s!R_i ++ obj_red ;
|
||||||
|
False => "unga" ++BIND++ v2.s!R_i ++ obj_red
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
Pos => case np.proDrop of {
|
||||||
|
True => oc ++ v2.s!R_e ++BIND++"ni" ++ obj_full ;
|
||||||
|
False => v2.s!R_a ++BIND++"ni" ++ obj_full
|
||||||
|
} ;
|
||||||
|
Neg => case np.proDrop of {
|
||||||
|
True => "ninga" ++BIND++ oc ++ v2.s!R_i ++ obj_red ;
|
||||||
|
False => "ninga" ++BIND++ v2.s!R_i ++ obj_red
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
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 = [] ;
|
iadv, advs, comp = [] ;
|
||||||
ap_comp = \\_ => [] ;
|
ap_comp = \\_ => [] ;
|
||||||
hasComp = np.heavy ;
|
hasComp = np.heavy ;
|
||||||
@@ -140,8 +321,10 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
|||||||
vptype = VNPCompl
|
vptype = VNPCompl
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
CopLoc loc = {
|
CopLocative loc = {
|
||||||
s = \\c,a,p,t,l => loc.s!c!a!p!t ;
|
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 = [] ;
|
comp,advs,iadv = [] ;
|
||||||
hasComp = True ;
|
hasComp = True ;
|
||||||
r = RC ;
|
r = RC ;
|
||||||
@@ -149,4 +332,114 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param
|
|||||||
vptype = CopLoc
|
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
|
||||||
|
-- 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 ++ 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 ++ 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 {
|
||||||
|
MainCl => \\a,p,t,l => let
|
||||||
|
vform = VFIndic MainCl p t ;
|
||||||
|
pcp = ap_cop_pref vform a RelType ; -- u-
|
||||||
|
cop_base = qs.s!a -- qotho
|
||||||
|
in
|
||||||
|
pcp ++ cop_base ;
|
||||||
|
RelCl => \\a,p,t,l => let
|
||||||
|
vform = VFIndic RelCl p t ;
|
||||||
|
rcp = (quantConcCop vform a) ; -- o-
|
||||||
|
pcp = ap_cop_pref vform a RelType ; -- [] / -nge- / zoba / -benge-
|
||||||
|
cop_base = qs.s!a -- qotho
|
||||||
|
in
|
||||||
|
rcp ++ pcp ++ cop_base
|
||||||
|
} ;
|
||||||
|
imp_s = let
|
||||||
|
imp_vform = VFIndic MainCl Pos PresTense
|
||||||
|
in table {
|
||||||
|
Sg => let
|
||||||
|
agr = (Second Sg)
|
||||||
|
in table {
|
||||||
|
Pos => "yiba" ++ qs.s!agr ;
|
||||||
|
Neg => "ungabi" ++ qs.s!agr
|
||||||
|
} ;
|
||||||
|
Pl => let
|
||||||
|
agr = (Second Pl)
|
||||||
|
in table {
|
||||||
|
Pos => "yibani" ++ qs.s!agr ;
|
||||||
|
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
|
||||||
|
syl = SylMult ;
|
||||||
|
vptype = CopDescr
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,10 +7,11 @@ concrete VerbZul of Verb = CatZul ** open ResZul, Prelude, ParamX in {
|
|||||||
s = table {
|
s = table {
|
||||||
MainCl => \\a,p,t,l => let
|
MainCl => \\a,p,t,l => let
|
||||||
vform = VFIndic MainCl p t ;
|
vform = VFIndic MainCl p t ;
|
||||||
|
vpref = verb_prefix_no_oc vform l v.r a ;
|
||||||
tp = tensePref vform v.r v.syl ; -- [] / zo- / zuku-
|
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)
|
-- 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
|
RelCl => \\a,p,t,l => let
|
||||||
vform = VFIndic RelCl p t ;
|
vform = VFIndic RelCl p t ;
|
||||||
rc = relConc vform a v.r ; -- o-
|
rc = relConc vform a v.r ; -- o-
|
||||||
@@ -22,6 +23,36 @@ concrete VerbZul of Verb = CatZul ** open ResZul, Prelude, ParamX in {
|
|||||||
} ;
|
} ;
|
||||||
in rc ++ tp ++ r ++ suf
|
in rc ++ tp ++ r ++ suf
|
||||||
} ;
|
} ;
|
||||||
|
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_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 = [] ;
|
iadv, advs, comp = [] ;
|
||||||
-- ap_comp = \\_ => [] ;
|
-- ap_comp = \\_ => [] ;
|
||||||
hasComp = False ;
|
hasComp = False ;
|
||||||
@@ -30,7 +61,62 @@ concrete VerbZul of Verb = CatZul ** open ResZul, Prelude, ParamX in {
|
|||||||
vptype = NoComp
|
vptype = NoComp
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- ComplVV v vp = insertObj (\\a => infVP v.typ vp False Simul CPos a) (predVV v) ; ---- insertExtra?
|
ComplVV v vp = {
|
||||||
|
s = table {
|
||||||
|
MainCl => \\a,p,t,l => let
|
||||||
|
vform = VFIndic MainCl p t ;
|
||||||
|
tp = tensePref vform v.r v.syl ; -- [] / zo- / zuku-
|
||||||
|
r = v.s!(rform (VFIndic MainCl p t) l) -- hamba
|
||||||
|
-- rest of verb prefix built later (eg no "ya" with certain question words)
|
||||||
|
in tp ++ r ++ "uku" ++ BIND ++ vp.s!MainCl!(First Sg)!Pos!PresTense!False ;
|
||||||
|
RelCl => \\a,p,t,l => let
|
||||||
|
vform = VFIndic RelCl p t ;
|
||||||
|
rc = relConc vform a v.r ; -- o-
|
||||||
|
tp = tensePref vform v.r v.syl ; -- [] / zo- / zuku-
|
||||||
|
r = v.s!(rform vform l) ; -- hamba
|
||||||
|
suf = case l of {
|
||||||
|
True => relSuf vform ;
|
||||||
|
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 ++ vp.inf_s!NFull!Pos ;
|
||||||
|
SylMult => v.s!R_a
|
||||||
|
} ;
|
||||||
|
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" ++ vp.inf_s!NFull!Pos ;
|
||||||
|
SylMult => v.s!R_a ++BIND++"ni" ++ vp.inf_s!NFull!Pos
|
||||||
|
} ;
|
||||||
|
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 = [] ;
|
||||||
|
-- ap_comp = \\_ => [] ;
|
||||||
|
hasComp = True ;
|
||||||
|
r = v.r ;
|
||||||
|
syl = v.syl ;
|
||||||
|
vptype = VNPCompl
|
||||||
|
} ;
|
||||||
|
|
||||||
-- ComplVS vs s = vs ** {
|
-- ComplVS vs s = vs ** {
|
||||||
-- -- s = vs.s ;
|
-- -- s = vs.s ;
|
||||||
@@ -195,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 ;
|
-- s = vp.s ;
|
||||||
-- oc = vp.oc ;
|
-- oc = vp.oc ;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ abstract CatExt = {
|
|||||||
cat
|
cat
|
||||||
Loc ;
|
Loc ;
|
||||||
LocN ;
|
LocN ;
|
||||||
|
LocAdv ;
|
||||||
QuantStem ;
|
QuantStem ;
|
||||||
RelStem ;
|
RelStem ;
|
||||||
VAux ;
|
VAux ;
|
||||||
|
|||||||
@@ -6,6 +6,9 @@ abstract ExtraExt =
|
|||||||
ProDrop : Pron -> Pron ; -- unstressed subject pronoun becomes empty: "am tired"
|
ProDrop : Pron -> Pron ; -- unstressed subject pronoun becomes empty: "am tired"
|
||||||
|
|
||||||
fun
|
fun
|
||||||
|
ExistNP : NP -> S ;
|
||||||
|
GreetSg : Utt ;
|
||||||
|
GreetPl : Utt ;
|
||||||
-- PotQS : Pol -> QCl -> QS ;
|
-- PotQS : Pol -> QCl -> QS ;
|
||||||
-- SubjunctS : S -> Utt ;
|
-- SubjunctS : S -> Utt ;
|
||||||
|
|
||||||
@@ -27,18 +30,29 @@ abstract ExtraExt =
|
|||||||
-- PossPronZul : CN -> Pron -> CN ; -- of you (yours)
|
-- PossPronZul : CN -> Pron -> CN ; -- of you (yours)
|
||||||
-- RelV : CN -> V -> Temp -> Pol -> CN ; -- lights that flash
|
-- RelV : CN -> V -> Temp -> Pol -> CN ; -- lights that flash
|
||||||
|
|
||||||
PossLocNP : LocN -> NP -> CN ;
|
-- PossLocNP : LocN -> NP -> CN ;
|
||||||
|
PossNPLoc : CN -> NP -> CN ; -- zasepulazini
|
||||||
|
|
||||||
InstrNPAdv : NP -> Adv ; -- ngokuhlinzwa
|
InstrNPAdv : NP -> Adv ; -- ngokuhlinzwa
|
||||||
InstrAdvNPAdv : Adv -> NP -> Adv ; -- cishe ngehora
|
InstrAdvNPAdv : Adv -> NP -> Adv ; -- cishe ngehora
|
||||||
LocNPAdv : NP -> Adv ; -- emahoreni
|
|
||||||
LocAdvNPAdv : Adv -> NP -> Adv ; -- cishe emahoreni
|
LocAdvNPAdv : Adv -> NP -> Adv ; -- cishe emahoreni amabili
|
||||||
KwaNPAdv : NP -> Adv ; -- kwa-Laurette
|
KwaNPAdv : NP -> Adv ; -- kwa-Laurette
|
||||||
-- KwaAdvNPAdv : Adv -> NP -> Adv ; -- ngaphezu kwamahora amabili adlule
|
-- KwaAdvNPAdv : LocAdv -> NP -> Adv ; -- ngaphezu kwamahora amabili adlule
|
||||||
KuNPAdv : NP -> Adv ; -- kwixesha [elingangeyure enye egqithileyo]
|
KuNPAdv : NP -> Adv ; -- kwixesha [elingangeyure enye egqithileyo]
|
||||||
KuAdvNPAdv : Adv -> NP -> Adv ; -- ngaphezu kwamahora amabili adlule
|
KuAdvNPAdv : Adv -> NP -> Adv ; -- ngaphezu kwamahora amabili adlule
|
||||||
NaNPAdv : NP -> Adv ;
|
NaNPAdv : NP -> Adv ;
|
||||||
|
|
||||||
|
-- LocNAdv : LocN -> Adv ; -- phansi kwetafula
|
||||||
|
|
||||||
|
LocAdvAdv : LocAdv -> Adv ;
|
||||||
|
LocAdvNP : LocAdv -> NP -> LocAdv ; -- ngaphezu kwamahora amabili adlule
|
||||||
|
LocNAdv : LocN -> LocAdv ;
|
||||||
|
LocNNgaAdv : LocN -> LocAdv ;
|
||||||
|
LocNPAdv : NP -> LocAdv ; -- emahoreni
|
||||||
|
|
||||||
|
NPAdv : NP -> Adv ; -- sonke lesi sikhathi
|
||||||
|
|
||||||
-- InstrAdvNP : NP -> NP -> NP ; -- questions about your pregnancy
|
-- InstrAdvNP : NP -> NP -> NP ; -- questions about your pregnancy
|
||||||
|
|
||||||
-- RelAdv : Adv -> RS ;
|
-- RelAdv : Adv -> RS ;
|
||||||
@@ -60,13 +74,6 @@ abstract ExtraExt =
|
|||||||
-- painful_RelStem : RelStem ;
|
-- painful_RelStem : RelStem ;
|
||||||
-- sharp_RelStem : RelStem ;
|
-- sharp_RelStem : RelStem ;
|
||||||
|
|
||||||
-- TPerfPast : Temp ;
|
|
||||||
-- TPastPast : Temp ;
|
|
||||||
-- TPresPres : Temp ;
|
|
||||||
-- TPastPres : Temp ;
|
|
||||||
-- TPastPerf : Temp ;
|
|
||||||
-- TPerfPerf : Temp ;
|
|
||||||
|
|
||||||
-- PredNP : NP -> Cl ;
|
-- PredNP : NP -> Cl ;
|
||||||
-- IAdvQS : NP -> INAdv -> QS ; -- where is the wine? iwayini liphi?
|
-- IAdvQS : NP -> INAdv -> QS ; -- where is the wine? iwayini liphi?
|
||||||
-- IAdvQCl : NP -> INAdv -> QCl ; -- where is the wine? iwayini liphi?
|
-- IAdvQCl : NP -> INAdv -> QCl ; -- where is the wine? iwayini liphi?
|
||||||
@@ -121,6 +128,11 @@ abstract ExtraExt =
|
|||||||
phakade_LocN : LocN ;
|
phakade_LocN : LocN ;
|
||||||
phezulu_LocN : LocN ;
|
phezulu_LocN : LocN ;
|
||||||
|
|
||||||
|
ngemuva_LocAdv : LocAdv ;
|
||||||
|
emuva_LocAdv : LocAdv ;
|
||||||
|
ecaleni_LocAdv : LocAdv ;
|
||||||
|
ngaphezu_LocAdv : LocAdv ;
|
||||||
|
|
||||||
lapha_Loc : Loc ;
|
lapha_Loc : Loc ;
|
||||||
khona_Loc : Loc ;
|
khona_Loc : Loc ;
|
||||||
|
|
||||||
@@ -130,6 +142,9 @@ abstract ExtraExt =
|
|||||||
|
|
||||||
with_Conj : Conj ;
|
with_Conj : Conj ;
|
||||||
|
|
||||||
|
want_VV : VV ;
|
||||||
|
prepare_to_VV : VV ;
|
||||||
|
|
||||||
-- Deverb15 : V -> N ;
|
-- Deverb15 : V -> N ;
|
||||||
|
|
||||||
-- AdvQS : IAdv -> S -> QS ; -- maybe it is a pain that burns 2020-01-15: consider that this should rather be dealt with using QuestIAdv)
|
-- AdvQS : IAdv -> S -> QS ; -- maybe it is a pain that burns 2020-01-15: consider that this should rather be dealt with using QuestIAdv)
|
||||||
|
|||||||
@@ -38,10 +38,15 @@ abstract NounExt = Cat,CatExt ** {
|
|||||||
|
|
||||||
UsePNPl : PN -> NP ;
|
UsePNPl : PN -> NP ;
|
||||||
|
|
||||||
Deverb15 : V -> N ;
|
Deverb15 : Pol -> VP -> NP ;
|
||||||
|
-- DeverbV215 : Pol -> V2 -> NP -> NP ;
|
||||||
|
|
||||||
LocNP : NP -> Loc ;
|
-- LocNP : NP -> Loc ;
|
||||||
|
|
||||||
LocNLoc : LocN -> Loc ;
|
-- LocNLoc : LocN -> Loc ;
|
||||||
|
|
||||||
|
-- LocNPossNP : LocN -> NP -> LocN ;
|
||||||
|
|
||||||
|
LocAdvLoc : LocAdv -> Loc ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,15 @@ abstract PChunk = Cat, CatExt, Symbol [Symb] ** {
|
|||||||
cat
|
cat
|
||||||
Chunks ;
|
Chunks ;
|
||||||
Chunk ;
|
Chunk ;
|
||||||
|
Chunk_Phr ;
|
||||||
Chunk_AP ;
|
Chunk_AP ;
|
||||||
Chunk_Adv ;
|
Chunk_Adv ;
|
||||||
|
Chunk_Imp ;
|
||||||
Chunk_S ;
|
Chunk_S ;
|
||||||
Chunk_RS ;
|
Chunk_RS ;
|
||||||
Chunk_QS ;
|
Chunk_QS ;
|
||||||
|
Chunk_VP ;
|
||||||
|
Chunk_V ;
|
||||||
Chunk_CN ;
|
Chunk_CN ;
|
||||||
Chunk_NP ;
|
Chunk_NP ;
|
||||||
Chunk_N ;
|
Chunk_N ;
|
||||||
@@ -21,11 +25,15 @@ fun
|
|||||||
PlusChunk : Chunk -> Chunks -> Chunks ;
|
PlusChunk : Chunk -> Chunks -> Chunks ;
|
||||||
ChunkPhr : Chunks -> Phr ;
|
ChunkPhr : Chunks -> Phr ;
|
||||||
|
|
||||||
|
Phr_Chunker : Chunk_Phr -> Chunk ;
|
||||||
-- AP_Chunker : Chunk_AP -> Chunk ;
|
-- AP_Chunker : Chunk_AP -> Chunk ;
|
||||||
Adv_Chunker : Chunk_Adv -> Chunk ;
|
Adv_Chunker : Chunk_Adv -> Chunk ;
|
||||||
|
Imp_Chunker : Chunk_Imp -> Chunk ;
|
||||||
S_Chunker : Chunk_S -> Chunk ;
|
S_Chunker : Chunk_S -> Chunk ;
|
||||||
RS_Chunker : Chunk_RS -> Chunk ;
|
RS_Chunker : Chunk_RS -> Chunk ;
|
||||||
QS_Chunker : Chunk_QS -> Chunk ;
|
QS_Chunker : Chunk_QS -> Chunk ;
|
||||||
|
VP_Chunker : Chunk_VP -> Chunk ;
|
||||||
|
V_Chunker : Chunk_V -> Chunk ; -- wordnet
|
||||||
CN_Chunker : Chunk_CN -> Chunk ;
|
CN_Chunker : Chunk_CN -> Chunk ;
|
||||||
NP_Chunker : Chunk_NP -> Chunk ;
|
NP_Chunker : Chunk_NP -> Chunk ;
|
||||||
N_Chunker : Chunk_N -> Chunk ;
|
N_Chunker : Chunk_N -> Chunk ;
|
||||||
@@ -33,17 +41,24 @@ fun
|
|||||||
Postdet_Chunker : Chunk_Postdet -> Chunk ;
|
Postdet_Chunker : Chunk_Postdet -> Chunk ;
|
||||||
Symb_Chunker : Chunk_Symb -> Chunk ;
|
Symb_Chunker : Chunk_Symb -> Chunk ;
|
||||||
|
|
||||||
-- AP_Chunk : AP -> Chunk_AP ;
|
Phr_Chunk : Phr -> Chunk_Phr ;
|
||||||
|
AP_Chunk : AP -> Chunk_AP ;
|
||||||
Adv_Chunk : Adv -> Chunk_Adv ;
|
Adv_Chunk : Adv -> Chunk_Adv ;
|
||||||
|
Imp_Chunk : Imp -> Chunk_Imp ;
|
||||||
S_Chunk : S -> Chunk_S ;
|
S_Chunk : S -> Chunk_S ;
|
||||||
RS_Chunk : RS -> Chunk_RS ;
|
RS_Chunk : Pron -> RS -> Chunk_RS ;
|
||||||
QS_Chunk : QS -> Chunk_QS ;
|
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_Pl_Chunk : CN -> Chunk_CN ;
|
||||||
CN_Sg_Chunk : CN -> Chunk_CN ;
|
CN_Sg_Chunk : CN -> Chunk_CN ;
|
||||||
NP_Nom_Chunk : NP -> Chunk_NP ;
|
NP_Nom_Chunk : NP -> Chunk_NP ;
|
||||||
NP_Gen_Chunk : NP -> Chunk_NP ;
|
NP_Loc_Chunk : NP -> Chunk_NP ;
|
||||||
Predet_Chunk : Predet -> Chunk_Predet ;
|
NP_Gen_Chunk : Pron -> NP -> Chunk_NP ;
|
||||||
Postdet_Chunk : Postdet -> Chunk_Postdet ;
|
-- NP_Gen_Chunk : NP -> Chunk_NP ;
|
||||||
|
Predet_Chunk : Pron -> Predet -> Chunk_Predet ;
|
||||||
|
Postdet_Chunk : Pron -> Postdet -> Chunk_Postdet ;
|
||||||
-- N_Sg_Chunk : N -> Chunk_N ;
|
-- N_Sg_Chunk : N -> Chunk_N ;
|
||||||
-- N_Pl_Chunk : N -> Chunk_N ;
|
-- N_Pl_Chunk : N -> Chunk_N ;
|
||||||
|
|
||||||
|
|||||||
10
src/zulu/abstract_ext/PhraseExt.gf
Normal file
10
src/zulu/abstract_ext/PhraseExt.gf
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
abstract PhraseExt = Cat,CatExt ** {
|
||||||
|
|
||||||
|
fun
|
||||||
|
|
||||||
|
-- direct speech
|
||||||
|
DirectSpeech: Phr -> Temp -> V -> NP -> Phr ;
|
||||||
|
DirectSpeechNP : NP -> Temp -> V -> NP -> Phr ;
|
||||||
|
DirectSpeechAdv : Adv -> Temp -> V -> NP -> Phr ;
|
||||||
|
ExtPhrConj : Phr -> Phr -> Phr ;
|
||||||
|
}
|
||||||
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,13 +5,17 @@ abstract VerbExt = Cat,CatExt ** {
|
|||||||
CopAP : AP -> VP ;
|
CopAP : AP -> VP ;
|
||||||
CopNP : NP -> VP ;
|
CopNP : NP -> VP ;
|
||||||
CopNPAssoc : NP -> VP ;
|
CopNPAssoc : NP -> VP ;
|
||||||
CopLoc : Loc -> VP ;
|
CopLocative : Loc -> VP ;
|
||||||
|
|
||||||
|
CopPoss : NP -> VP ;
|
||||||
|
CopQuant : QuantStem -> VP ;
|
||||||
|
|
||||||
-- BecomeAP : AP -> VP ;
|
-- BecomeAP : AP -> VP ;
|
||||||
-- BecomeNP : NP -> VP ;
|
-- BecomeNP : NP -> VP ;
|
||||||
-- BecomeNPAssoc : NP -> VP ;
|
-- BecomeNPAssoc : NP -> VP ;
|
||||||
-- BecomeLoc : Loc -> VP ;
|
-- BecomeLoc : Loc -> VP ;
|
||||||
|
|
||||||
|
UseVStative : V -> VP ;
|
||||||
ComplV2Nonspec : V2 -> NP -> VP ;
|
ComplV2Nonspec : V2 -> NP -> VP ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ abstract NguniChunk =
|
|||||||
Backward[ComplV2,ComplV3],
|
Backward[ComplV2,ComplV3],
|
||||||
ExtraExt,
|
ExtraExt,
|
||||||
NounExt,
|
NounExt,
|
||||||
|
RelativeExt,
|
||||||
VerbExt,
|
VerbExt,
|
||||||
|
PhraseExt,
|
||||||
-- MonoLexAbs,
|
-- MonoLexAbs,
|
||||||
PChunk,
|
PChunk,
|
||||||
Symbol - [Symb]
|
Symbol - [Symb]
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ concrete NguniChunkZul of NguniChunk =
|
|||||||
BackwardZul[ComplV2,ComplV3],
|
BackwardZul[ComplV2,ComplV3],
|
||||||
ExtraExtZul,
|
ExtraExtZul,
|
||||||
NounExtZul,
|
NounExtZul,
|
||||||
|
RelativeExtZul,
|
||||||
VerbExtZul,
|
VerbExtZul,
|
||||||
|
PhraseExtZul,
|
||||||
-- MonoLexZul,
|
-- MonoLexZul,
|
||||||
PChunkZul,
|
PChunkZul,
|
||||||
SymbolZul - [Symb]
|
SymbolZul - [Symb]
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
-- All functions are explicitly inherited, in order to allow useful probabilities
|
-- All functions are explicitly inherited, in order to allow useful probabilities
|
||||||
|
|
||||||
abstract NguniGrammar =
|
abstract NguniGrammar =
|
||||||
Noun [DetCN, UsePron, DetQuant, NumSg, NumPl, UseN, AdjCN, RelCN, PossNP,UsePN, RelNP, PredetNP], -- MassNP,AdvCN, AdvNP,
|
Noun [DetCN, UsePron, DetQuant, NumSg, NumPl, UseN, AdjCN, RelCN, PossNP,UsePN, RelNP, PredetNP,AdvNP], -- MassNP,AdvCN, AdvNP,
|
||||||
Verb [UseV, ComplVS, ComplVA, SlashV2a, UseComp, AdvVP, CompAP, CompNP, CompAdv, ComplSlash],
|
Verb [UseV, ComplVS, ComplVA, SlashV2a, UseComp, AdvVP, CompAP, CompNP, CompAdv, ComplSlash, ComplVV],
|
||||||
Adjective [PositA, AdAP],
|
Adjective [PositA, AdAP],
|
||||||
Adverb [PositAdvAdj, SubjS],
|
Adverb [PositAdvAdj, SubjS],
|
||||||
-- Numeral,
|
-- Numeral,
|
||||||
Sentence [PredVP, ImpVP, UseCl, UseQCl, UseRCl],
|
Sentence [PredVP, ImpVP, UseCl, UseQCl, UseRCl,AdvS],
|
||||||
Question [QuestCl, QuestIAdv, QuestIComp],
|
Question [QuestCl, QuestIAdv, QuestIComp],
|
||||||
Relative [RelVP, IdRP],
|
Relative [RelVP, IdRP],
|
||||||
-- Conjunction,
|
-- Conjunction,
|
||||||
Phrase [PhrUtt, UttS, UttQS, UttImpSg, NoPConj, NoVoc],
|
Phrase [PhrUtt, UttS, UttQS, UttImpSg, NoPConj, NoVoc, VocNP],
|
||||||
Text - [Temp,Adv,IAdv],
|
Text - [Temp,Adv,IAdv],
|
||||||
Structural [and_Conj,how_IAdv,how8much_IAdv,i_Pron,youSg_Pron,he_Pron,she_Pron,we_Pron,youPl_Pron,they_Pron,this_Quant,that_Quant,all_Predet,only_Predet,very_AdA],
|
Structural [and_Conj,how_IAdv,how8much_IAdv,i_Pron,youSg_Pron,he_Pron,she_Pron,we_Pron,youPl_Pron,they_Pron,this_Quant,that_Quant,all_Predet,only_Predet,very_AdA],
|
||||||
-- Idiom,
|
-- Idiom,
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
-- All functions are explicitly inherited, in order to allow useful probabilities
|
-- All functions are explicitly inherited, in order to allow useful probabilities
|
||||||
|
|
||||||
concrete NguniGrammarZul of NguniGrammar =
|
concrete NguniGrammarZul of NguniGrammar =
|
||||||
NounZul [DetCN, UsePron, DetQuant, NumSg, NumPl, UseN, AdjCN, RelCN, PossNP,UsePN, RelNP, PredetNP], -- MassNP, AdvCN,AdvNP,
|
NounZul [DetCN, UsePron, DetQuant, NumSg, NumPl, UseN, AdjCN, RelCN, PossNP,UsePN, RelNP, PredetNP,AdvNP], -- MassNP, AdvCN,AdvNP,
|
||||||
VerbZul [UseV, ComplVS, ComplVA, SlashV2a, UseComp, AdvVP, CompAP, CompNP, CompAdv, ComplSlash],
|
VerbZul [UseV, ComplVS, ComplVA, SlashV2a, UseComp, AdvVP, CompAP, CompNP, CompAdv, ComplSlash, ComplVV],
|
||||||
AdjectiveZul [PositA, AdAP],
|
AdjectiveZul [PositA, AdAP],
|
||||||
AdverbZul [PositAdvAdj, SubjS],
|
AdverbZul [PositAdvAdj, SubjS],
|
||||||
-- Numeral,
|
-- Numeral,
|
||||||
SentenceZul [PredVP, ImpVP, UseCl, UseQCl, UseRCl],
|
SentenceZul [PredVP, ImpVP, UseCl, UseQCl, UseRCl,AdvS],
|
||||||
QuestionZul [QuestCl, QuestIAdv, QuestIComp],
|
QuestionZul [QuestCl, QuestIAdv, QuestIComp],
|
||||||
RelativeZul [RelVP, IdRP],
|
RelativeZul [RelVP, IdRP],
|
||||||
-- ConjunctionZul,
|
-- ConjunctionZul,
|
||||||
PhraseZul [PhrUtt, UttS, UttQS, UttImpSg, NoPConj, NoVoc],
|
PhraseZul [PhrUtt, UttS, UttQS, UttImpSg, NoPConj, NoVoc, VocNP],
|
||||||
TextX - [Temp,Adv,IAdv],
|
TextX - [Temp,Adv,IAdv],
|
||||||
StructuralZul [and_Conj,how_IAdv,how8much_IAdv,i_Pron,youSg_Pron,he_Pron,she_Pron,we_Pron,youPl_Pron,they_Pron,this_Quant,that_Quant,all_Predet,only_Predet,very_AdA],
|
StructuralZul [and_Conj,how_IAdv,how8much_IAdv,i_Pron,youSg_Pron,he_Pron,she_Pron,we_Pron,youPl_Pron,they_Pron,this_Quant,that_Quant,all_Predet,only_Predet,very_AdA],
|
||||||
-- Idiom,
|
-- Idiom,
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ abstract NguniLang =
|
|||||||
Backward[ComplV2,ComplV3],
|
Backward[ComplV2,ComplV3],
|
||||||
ExtraExt,
|
ExtraExt,
|
||||||
NounExt,
|
NounExt,
|
||||||
VerbExt
|
RelativeExt,
|
||||||
|
VerbExt,
|
||||||
|
PhraseExt
|
||||||
-- MonoLexAbs,
|
-- MonoLexAbs,
|
||||||
-- Chunk
|
-- Chunk
|
||||||
-- Symbol - [Symb],
|
-- Symbol - [Symb],
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ concrete NguniLangZul of NguniLang =
|
|||||||
BackwardZul[ComplV2,ComplV3],
|
BackwardZul[ComplV2,ComplV3],
|
||||||
ExtraExtZul,
|
ExtraExtZul,
|
||||||
NounExtZul,
|
NounExtZul,
|
||||||
VerbExtZul
|
RelativeExtZul,
|
||||||
|
VerbExtZul,
|
||||||
|
PhraseExtZul
|
||||||
-- MonoLexZul,
|
-- MonoLexZul,
|
||||||
-- ChunkZul,
|
-- ChunkZul,
|
||||||
-- SymbolZul - [Symb],
|
-- SymbolZul - [Symb],
|
||||||
|
|||||||
@@ -2877,6 +2877,7 @@ abstract MonoLex = Cat ** {
|
|||||||
phothwe_5_6_N : N ;
|
phothwe_5_6_N : N ;
|
||||||
phoyinti_5_6_N : N ;
|
phoyinti_5_6_N : N ;
|
||||||
phoyisa_5_6_N : N ;
|
phoyisa_5_6_N : N ;
|
||||||
|
phrojekthi_5_6_N : N ;
|
||||||
phucuko_9_N : N ;
|
phucuko_9_N : N ;
|
||||||
phucuzeko_9_10_N : N ;
|
phucuzeko_9_10_N : N ;
|
||||||
phuhle_5_6_N : N ;
|
phuhle_5_6_N : N ;
|
||||||
@@ -5114,11 +5115,12 @@ zozo_1a_2a_N : N ;
|
|||||||
zuka_1a_2a_N : N ;
|
zuka_1a_2a_N : N ;
|
||||||
zulu_1a_2a_N : N ;
|
zulu_1a_2a_N : N ;
|
||||||
zwa_1a_2a_N : N ;
|
zwa_1a_2a_N : N ;
|
||||||
|
zwekazi_5_6_N : N ;
|
||||||
zwelonke_1a_2a_N : N ;
|
zwelonke_1a_2a_N : N ;
|
||||||
|
|
||||||
-- verb roots
|
-- verb roots
|
||||||
ab_V : V ;
|
-- ab_V : V ;
|
||||||
ab_V2 : V2 ;
|
-- ab_V2 : V2 ;
|
||||||
aban_V : V ;
|
aban_V : V ;
|
||||||
aban_V2 : V2 ;
|
aban_V2 : V2 ;
|
||||||
abanelis_V : V ;
|
abanelis_V : V ;
|
||||||
@@ -5225,8 +5227,8 @@ zwelonke_1a_2a_N : N ;
|
|||||||
aluk_V2 : V2 ;
|
aluk_V2 : V2 ;
|
||||||
alus_V : V ;
|
alus_V : V ;
|
||||||
alus_V2 : V2 ;
|
alus_V2 : V2 ;
|
||||||
amb_V : V ;
|
-- amb_V : V ;
|
||||||
amb_V2 : V2 ;
|
-- amb_V2 : V2 ;
|
||||||
amban_V : V ;
|
amban_V : V ;
|
||||||
amban_V2 : V2 ;
|
amban_V2 : V2 ;
|
||||||
ambanis_V : V ;
|
ambanis_V : V ;
|
||||||
@@ -5239,8 +5241,8 @@ zwelonke_1a_2a_N : N ;
|
|||||||
ambek_V2 : V2 ;
|
ambek_V2 : V2 ;
|
||||||
ambekel_V : V ;
|
ambekel_V : V ;
|
||||||
ambekel_V2 : V2 ;
|
ambekel_V2 : V2 ;
|
||||||
ambel_V : V ;
|
-- ambel_V : V ;
|
||||||
ambel_V2 : V2 ;
|
-- ambel_V2 : V2 ;
|
||||||
ambelan_V : V ;
|
ambelan_V : V ;
|
||||||
ambelan_V2 : V2 ;
|
ambelan_V2 : V2 ;
|
||||||
ambelel_V : V ;
|
ambelel_V : V ;
|
||||||
@@ -5271,8 +5273,8 @@ zwelonke_1a_2a_N : N ;
|
|||||||
amulel_V2 : V2 ;
|
amulel_V2 : V2 ;
|
||||||
amulis_V : V ;
|
amulis_V : V ;
|
||||||
amulis_V2 : V2 ;
|
amulis_V2 : V2 ;
|
||||||
and_V : V ;
|
-- and_V : V ;
|
||||||
and_V2 : V2 ;
|
-- and_V2 : V2 ;
|
||||||
andel_V : V ;
|
andel_V : V ;
|
||||||
andel_V2 : V2 ;
|
andel_V2 : V2 ;
|
||||||
andelan_V : V ;
|
andelan_V : V ;
|
||||||
@@ -5315,8 +5317,8 @@ zwelonke_1a_2a_N : N ;
|
|||||||
anganis_V2 : V2 ;
|
anganis_V2 : V2 ;
|
||||||
angek_V : V ;
|
angek_V : V ;
|
||||||
angek_V2 : V2 ;
|
angek_V2 : V2 ;
|
||||||
angel_V : V ;
|
-- angel_V : V ;
|
||||||
angel_V2 : V2 ;
|
-- angel_V2 : V2 ;
|
||||||
angelekelel_V : V ;
|
angelekelel_V : V ;
|
||||||
angelekelel_V2 : V2 ;
|
angelekelel_V2 : V2 ;
|
||||||
angis_V : V ;
|
angis_V : V ;
|
||||||
@@ -5325,8 +5327,8 @@ zwelonke_1a_2a_N : N ;
|
|||||||
angisan_V2 : V2 ;
|
angisan_V2 : V2 ;
|
||||||
any_V : V ;
|
any_V : V ;
|
||||||
any_V2 : V2 ;
|
any_V2 : V2 ;
|
||||||
anyan_V : V ;
|
-- anyan_V : V ;
|
||||||
anyan_V2 : V2 ;
|
-- anyan_V2 : V2 ;
|
||||||
anyelel_V : V ;
|
anyelel_V : V ;
|
||||||
anyelel_V2 : V2 ;
|
anyelel_V2 : V2 ;
|
||||||
anyuk_V : V ;
|
anyuk_V : V ;
|
||||||
@@ -9221,8 +9223,8 @@ zwelonke_1a_2a_N : N ;
|
|||||||
kholis_V2 : V2 ;
|
kholis_V2 : V2 ;
|
||||||
kholisek_V : V ;
|
kholisek_V : V ;
|
||||||
kholisek_V2 : V2 ;
|
kholisek_V2 : V2 ;
|
||||||
-- kholw_V : V ;
|
kholw_V : V ;
|
||||||
-- kholw_V2 : V2 ;
|
kholw_V2 : V2 ;
|
||||||
khomb_V : V ;
|
khomb_V : V ;
|
||||||
khomb_V2 : V2 ;
|
khomb_V2 : V2 ;
|
||||||
khomban_V : V ;
|
khomban_V : V ;
|
||||||
@@ -11931,6 +11933,8 @@ zwelonke_1a_2a_N : N ;
|
|||||||
seshis_V2 : V2 ;
|
seshis_V2 : V2 ;
|
||||||
seshisek_V : V ;
|
seshisek_V : V ;
|
||||||
seshisek_V2 : V2 ;
|
seshisek_V2 : V2 ;
|
||||||
|
setshenzisw_V : V ;
|
||||||
|
setshenzisw_V2 : V2 ;
|
||||||
sev_V : V ;
|
sev_V : V ;
|
||||||
sev_V2 : V2 ;
|
sev_V2 : V2 ;
|
||||||
sevel_V : V ;
|
sevel_V : V ;
|
||||||
@@ -12287,8 +12291,8 @@ zwelonke_1a_2a_N : N ;
|
|||||||
siphuzelis_V2 : V2 ;
|
siphuzelis_V2 : V2 ;
|
||||||
sis_V : V ;
|
sis_V : V ;
|
||||||
sis_V2 : V2 ;
|
sis_V2 : V2 ;
|
||||||
sisek_V : V ;
|
-- sisek_V : V ;
|
||||||
sisek_V2 : V2 ;
|
-- sisek_V2 : V2 ;
|
||||||
sisel_V : V ;
|
sisel_V : V ;
|
||||||
sisel_V2 : V2 ;
|
sisel_V2 : V2 ;
|
||||||
sising_V : V ;
|
sising_V : V ;
|
||||||
@@ -16967,8 +16971,8 @@ zwelonke_1a_2a_N : N ;
|
|||||||
zuziw_V2 : V2 ;
|
zuziw_V2 : V2 ;
|
||||||
zuzw_V : V ;
|
zuzw_V : V ;
|
||||||
zuzw_V2 : V2 ;
|
zuzw_V2 : V2 ;
|
||||||
-- zw_V : V ;
|
zw_V : V ;
|
||||||
-- zw_V2 : V2 ;
|
zw_V2 : V2 ;
|
||||||
zwisw_V : V ;
|
zwisw_V : V ;
|
||||||
zwisw_V2 : V2 ;
|
zwisw_V2 : V2 ;
|
||||||
zwiw_V : V ;
|
zwiw_V : V ;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1147,5 +1147,4 @@ abstract MultiLex = Cat ** {
|
|||||||
|
|
||||||
-- adjectivals
|
-- adjectivals
|
||||||
colourful_R : A ;
|
colourful_R : A ;
|
||||||
big_A : A ;
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user