forked from GitHub/gf-rgl
@@ -16,7 +16,7 @@ lin
|
||||
-- Adverbs can be modified by 'adadjectives', just like adjectives.
|
||||
|
||||
--AdAdv : AdA -> Adv -> Adv ; -- very quickly
|
||||
AdAdv ada adv = adv ** {s = ada.s ++ adv.s} ;
|
||||
AdAdv ada adv = adv ** {berri = ada.s ++ adv.berri} ;
|
||||
-- Like adverbs, adadjectives can be produced by adjectives.
|
||||
|
||||
-- : A -> AdA ; -- extremely
|
||||
|
||||
@@ -86,7 +86,7 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
||||
-- Constructed in StructuralSom.
|
||||
Conj = { s1,s2 : Str ; n : Number } ;
|
||||
Subj = { s : Str ; isPre : Bool } ; --ba+dut vs. dut+en
|
||||
Prep = ResSom.Prep ** {c2 : Preposition} ;
|
||||
Prep = ResSom.Prep ** {c2 : Preposition ; berri, sii, dhex : Str} ;
|
||||
|
||||
|
||||
|
||||
@@ -123,4 +123,5 @@ linref
|
||||
-- Cl = linCl ;
|
||||
VP = linVP ;
|
||||
CN = linCN ;
|
||||
Prep = \prep -> prep.s ! Pl3 ++ prep.sii ++ prep.dhex ;
|
||||
}
|
||||
|
||||
@@ -103,12 +103,16 @@ oper
|
||||
|
||||
mkPrep = overload {
|
||||
mkPrep : Str -> CatSom.Prep = \s ->
|
||||
lin Prep ((ResSom.mkPrep s s s s s s) ** {c2=noPrep}) ;
|
||||
lin Prep ((ResSom.mkPrep s s s s s s) ** {
|
||||
c2=noPrep ; sii,dhex,berri=[]}) ;
|
||||
mkPrep : (x1,_,_,_,_,x6 : Str) -> CatSom.Prep = \a,b,c,d,e,f ->
|
||||
lin Prep ((ResSom.mkPrep a b c d e f) ** {c2=noPrep}) ;
|
||||
lin Prep ((ResSom.mkPrep a b c d e f) ** {
|
||||
c2=noPrep ; sii,dhex,berri=[]}) ;
|
||||
mkPrep : Preposition -> CatSom.Prep = \p ->
|
||||
lin Prep (prep p) ;
|
||||
} ;
|
||||
lin Prep ((prep p) ** {sii,dhex,berri=[]}) ;
|
||||
mkPrep : CatSom.Prep -> (x1,x2,x3 : Str) -> CatSom.Prep = \p,s,t,u ->
|
||||
p ** {berri = s ; sii = t ; dhex = u} ;
|
||||
} ;
|
||||
|
||||
-- mkConj : (_,_ : Str) -> Number -> Conj = \s1,s2,num ->
|
||||
-- lin Conj { s = s1 ; s2 = s2 } ;
|
||||
@@ -116,7 +120,12 @@ oper
|
||||
-- mkSubj : Str -> Bool -> Subj = \s,b ->
|
||||
-- lin Subj { } ;
|
||||
|
||||
mkAdv : Str -> Adv = \s -> lin Adv {s = s ; c2=noPrep ; np = emptyNP} ;
|
||||
mkAdv : Str -> Adv = \s -> lin Adv {
|
||||
berri = s ;
|
||||
c2 = noPrep ;
|
||||
np = emptyNP ;
|
||||
sii,dhex = []
|
||||
} ;
|
||||
|
||||
mkAdV : Str -> AdV = \s -> lin AdV {s = s} ;
|
||||
|
||||
|
||||
@@ -130,6 +130,17 @@ oper
|
||||
agr2agrplus : (isPron : Bool) -> Agreement -> AgreementPlus = \isPron,a ->
|
||||
case isPron of {True => IsPron a ; False => NotPronP3} ;
|
||||
|
||||
isP3 = overload {
|
||||
isP3 : Agreement -> Bool = \agr ->
|
||||
case agr of {Sg3 _ | Pl3 | Impers => True ; _ => False} ;
|
||||
isP3 : AgreementPlus -> Bool = \agr ->
|
||||
case agr of {
|
||||
IsPron (Sg3 _ | Pl3 | Impers) => True ;
|
||||
NotPronP3 => True ;
|
||||
Unassigned => True ; -- meaningful for "does it leave an overt pronoun"
|
||||
_ => False}
|
||||
} ;
|
||||
|
||||
-- gn2gennum : Gender -> Number -> GenNum = \g,n ->
|
||||
-- case <g,n> of {
|
||||
-- <Masc,Sg> => SgMasc ;
|
||||
|
||||
@@ -16,7 +16,7 @@ concrete PhraseSom of Phrase = CatSom ** open Prelude, ResSom in {
|
||||
UttIAdv iadv = iadv ;
|
||||
UttNP np = { s = np.s ! Abs} ;
|
||||
UttVP vp = { s = linVP vp } ;
|
||||
UttAdv adv = adv ;
|
||||
UttAdv adv = {s = linAdv adv} ;
|
||||
UttCN n = {s = linCN n } ;
|
||||
UttCard n = {s = n.s ! Mid} ;
|
||||
UttAP ap = { s = ap.s ! AF Sg Abs } ;
|
||||
|
||||
@@ -40,12 +40,12 @@ concrete QuestionSom of Question = CatSom ** open
|
||||
|
||||
-- Interrogative adverbs can be formed prepositionally.
|
||||
-- : Prep -> IP -> IAdv ; -- with whom
|
||||
PrepIP = AS.PrepNP ;
|
||||
PrepIP prep ip = let a = AS.PrepNP prep ip in a ** {s = a.berri} ;
|
||||
|
||||
-- They can be modified with other adverbs.
|
||||
|
||||
-- : IAdv -> Adv -> IAdv ; -- where in Paris
|
||||
AdvIAdv = AS.AdAdv ;
|
||||
AdvIAdv iadv adv = iadv ** {s = iadv.s ++ adv.berri} ;
|
||||
|
||||
-- Interrogative complements to copulas can be both adverbs and
|
||||
-- pronouns.
|
||||
|
||||
@@ -419,7 +419,14 @@ oper
|
||||
--------------------------------------------------------------------------------
|
||||
-- Verbs
|
||||
|
||||
Verb : Type = {s : VForm => Str} ;
|
||||
BaseVerb : Type = {
|
||||
s : VForm => Str ;
|
||||
} ;
|
||||
|
||||
Verb : Type = BaseVerb ** {
|
||||
sii : Str ; -- closed class of particles: sii, soo, kala, wada (Sayeed 171)
|
||||
dhex : Str ; -- closed class of adverbials: hoos, kor, dul, dhex, …
|
||||
} ;
|
||||
Verb2 : Type = Verb ** {c2 : Preposition} ;
|
||||
Verb3 : Type = Verb2 ** {c3 : Preposition} ;
|
||||
|
||||
@@ -509,6 +516,7 @@ oper
|
||||
|
||||
VInf => arki ;
|
||||
VRel => arki } ; -- TODO does this exist?
|
||||
sii, dhex = [] ;
|
||||
} ;
|
||||
|
||||
-------------------------
|
||||
@@ -543,7 +551,7 @@ oper
|
||||
(qaa + "da") ; -- Per2 Pl and others
|
||||
|
||||
-- Constructs verbs like u baahan+ahay
|
||||
prefixV : Str -> Verb -> Verb = \s,v -> {
|
||||
prefixV : Str -> Verb -> Verb = \s,v -> v ** {
|
||||
s = \\vf => s + v.s ! vf
|
||||
} ;
|
||||
|
||||
@@ -571,14 +579,15 @@ oper
|
||||
VPast _ Pl3 => "ahaayeen" ;
|
||||
VNegPast _ => "ahi" ;
|
||||
VRel => "ah" ;
|
||||
VInf => "ahaan" }
|
||||
VInf => "ahaan" } ;
|
||||
sii, dhex = []
|
||||
} ;
|
||||
-- I somaliskan används inte något kopulaverb motsvarande svenskans är mellan
|
||||
-- två substantivfraser som utgör subjekt respektive predikatsfyllnad.
|
||||
-- Observera också att kopulaverbet vara alltid hamnar efter det adjektiv
|
||||
-- som utgör predikatsfyllnaden.
|
||||
have_V : Verb =
|
||||
let hold_V = mkVerb "hayso" "haysat" "haysa" in {
|
||||
let hold_V = mkVerb "hayso" "haysat" "haysa" in hold_V ** {
|
||||
s = table {
|
||||
VPres _ Sg1 Pos => "leeyahay" ;
|
||||
VPres _ Sg2 Pos => "leedahay" ;
|
||||
@@ -606,29 +615,39 @@ oper
|
||||
|
||||
------------------
|
||||
-- VP
|
||||
Adverb : Type = {
|
||||
s : Str ;
|
||||
c2 : Preposition ; np : NounPhrase} ; -- So that adverbs can also contribute to preposition contraction
|
||||
|
||||
BaseAdv : Type = {
|
||||
sii, -- sii, soo, wala, kada go inside VP.
|
||||
dhex, -- dhex, hoos, koor, dul, … go inside VP.
|
||||
berri : Str -- e.g. "tomorrow"; goes before VP.
|
||||
} ;
|
||||
|
||||
Adverb : Type = BaseAdv ** {
|
||||
c2 : Preposition ; -- adverbs can contribute to preposition contraction.
|
||||
np : NounPhrase -- NP from PrepNP can be promoted into a core argument.
|
||||
} ;
|
||||
|
||||
Complement : Type = {
|
||||
comp : Agreement => {p1,p2 : Str} ; -- Agreement for AP complements
|
||||
pred : PredType ; -- to choose right sentence type marker and copula
|
||||
} ;
|
||||
|
||||
VerbPhrase : Type = Verb ** Complement ** {
|
||||
adv : Str ;
|
||||
c2 : PrepositionPlus ; -- hack to allow passives
|
||||
c3 : Preposition ; -- can combine together and with object pronoun(s?)
|
||||
VerbPhrase : Type = BaseVerb ** Complement ** BaseAdv ** {
|
||||
-- Prepositions can combine together and with object pronoun.
|
||||
c2 : PrepositionPlus ; -- hack to implement passives more efficiently:
|
||||
c3 : Preposition ; -- if c2 is Passive, the real preposition is in c3.
|
||||
obj2 : {s : Str ; a : AgreementPlus} ;
|
||||
secObj : Str ; -- if two overt pronoun objects
|
||||
} ;
|
||||
vComp : Str ; -- VV complement
|
||||
miscAdv : Str ; -- dump for any other kind of adverb, that isn't
|
||||
} ; -- in a closed class of particles or made with PrepNP.
|
||||
|
||||
VPSlash : Type = VerbPhrase ;
|
||||
|
||||
useV : Verb -> VerbPhrase = \v -> v ** {
|
||||
comp = \\_ => <[],[]> ;
|
||||
pred = NoPred ;
|
||||
adv = [] ;
|
||||
vComp,berri,miscAdv = [] ;
|
||||
c2 = P NoPrep ;
|
||||
c3 = NoPrep ;
|
||||
obj2 = {s = [] ; a = Unassigned} ;
|
||||
@@ -658,7 +677,7 @@ oper
|
||||
insertComp : VPSlash -> NounPhrase -> VerbPhrase = \vp,np ->
|
||||
let noun : Str = case <np.isPron,np.a> of {
|
||||
<False,_> => np.s ! Abs ;
|
||||
<True,(Sg3 _|Pl3)> => (pronTable ! np.a).sp ; -- long object pronoun for 3rd person object
|
||||
-- <True,(Sg3 _|Pl3)> => (pronTable ! np.a).sp ; -- uncomment if you want to add long object pronoun for 3rd person object
|
||||
_ => [] } -- no long object for other pronouns
|
||||
in case vp.obj2.a of {
|
||||
Unassigned =>
|
||||
@@ -685,15 +704,23 @@ oper
|
||||
} ;
|
||||
|
||||
insertAdv : VerbPhrase -> Adverb -> VerbPhrase = \vp,adv ->
|
||||
case adv.c2 of {
|
||||
NoPrep => vp ** {adv = adv.s} ; -- The adverb is not formed with PrepNP
|
||||
prep => case <vp.c2,vp.obj2.a,vp.c3> of {
|
||||
<P NoPrep,Unassigned,_> => insertComp (vp ** {c2 = P adv.c2}) adv.np ; -- should cover for obligatory argument that is not introduced with a preposition
|
||||
<_ ,_ ,NoPrep> => insertComp (vp ** {c3 = adv.c2}) adv.np ;
|
||||
-- if complement slots are full, put preposition just as a string. TODO check word order.
|
||||
_ => vp ** {adv = (prepTable ! P adv.c2).s ! adv.np.a ++ adv.np.s ! Abs}
|
||||
}
|
||||
} ;
|
||||
case <adv.c2, isP3 adv.np.a, adv.np.isPron> of {
|
||||
<NoPrep,_,_> => vp ** adv'' ; -- a) the adverb is not formed with PrepNP, e.g. "tomorrow"
|
||||
<_,True,False> => vp ** adv'' ; -- b) is formed with PrepNP, and has 3rd person obj, which is a noun.
|
||||
_ => case <vp.c2,vp.obj2.a,vp.c3> of {
|
||||
-- if free complement slots, introduce adv.np with insertComp
|
||||
<P NoPrep,Unassigned,_> => insertComp (vp ** {c2 = P adv.c2}) adv.np ** adv' ;
|
||||
<_ ,_ ,NoPrep> => insertComp (vp ** {c3 = adv.c2}) adv.np ** adv' ;
|
||||
|
||||
-- if complement slots are full, just insert strings.
|
||||
_ => vp ** adv''
|
||||
}
|
||||
} where {
|
||||
adv' : {sii,dhex,berri : Str} = adv ; -- adv.np done with insertComp
|
||||
adv'' : {sii,dhex,berri,miscAdv : Str} -- adv.np inserted into miscAdv
|
||||
= adv ** {dhex = (prepTable ! P adv.c2).s ! adv.np.a ++ adv.dhex ;
|
||||
miscAdv = adv.np.s ! Abs} -- TODO: check case
|
||||
} ;
|
||||
--------------------------------------------------------------------------------
|
||||
-- Sentences etc.
|
||||
Clause : Type = {s : Bool {-is question-} => Tense => Anteriority => Polarity => Str} ;
|
||||
@@ -702,6 +729,56 @@ oper
|
||||
ClSlash,
|
||||
Sentence : Type = SS ; ---- TODO
|
||||
|
||||
predVP : NounPhrase -> VerbPhrase -> Clause = \np,vps -> {
|
||||
s = \\isQ,t,a,p =>
|
||||
let predRaw : {fin : Str ; inf : Str} = vf t a p subj.a vp ;
|
||||
pred : {fin : Str ; inf : Str} = case <isQ,p,vp.pred> of {
|
||||
<False,Pos,NoCopula> => {fin,inf = []} ;
|
||||
_ => predRaw
|
||||
} ;
|
||||
subjnoun : Str = if_then_Str np.isPron [] (subj.s ! Nom) ;
|
||||
subjpron : Str = if_then_Str np.isPron (subj.s ! Nom) [] ;
|
||||
obj : {p1,p2 : Str} =
|
||||
let o : {p1,p2 : Str} = vp.comp ! subj.a ;
|
||||
bind : Str = case <isP3 vp.obj2.a, vp.c2> of {
|
||||
<True,P NoPrep> => [] ;
|
||||
_ => BIND } ;
|
||||
in case p of {
|
||||
Pos => o ;
|
||||
Neg => {p2 = [] ; p1 = o.p1 ++ o.p2 ++ bind} -- object pronoun, prepositions and negation all contract
|
||||
} ;
|
||||
stm : Str = case <isQ,p,vp.pred,subj.a> of {
|
||||
<False,Pos,Copula|NoCopula,Sg3 _|Impers> => "waa" ;
|
||||
<True ,Pos,_ ,_ > => "ma" ;
|
||||
_ => case <np.isPron,p> of {
|
||||
<True,Pos> => "waa" ++ subjpron ; -- to force some string from NP to show in the tree
|
||||
<True,Neg> => "ma" ; -- ++ subjpron ; -- TODO check subj pron or not?
|
||||
<False> => stmarkerNoContr ! subj.a ! p
|
||||
}
|
||||
} ;
|
||||
in wordOrder subjnoun subjpron stm obj pred vp ;
|
||||
} where {
|
||||
vp = case vps.c2 of {
|
||||
Passive => complSlash (insertComp vps np) ;
|
||||
_ => complSlash vps } ;
|
||||
subj = case vps.c2 of {Passive => impersNP ; _ => np} ;
|
||||
} ;
|
||||
|
||||
wordOrder : (sn,sp,stm : Str) -> {p1,p2 : Str} -> {fin,inf : Str} -> VerbPhrase -> Str =
|
||||
\subjnoun,subjpron,stm,obj,pred,vp -> vp.berri -- AdV
|
||||
++ subjnoun -- subject if it's a noun
|
||||
++ obj.p1 -- object if it's a noun
|
||||
++ stm -- sentence type marker + possible subj. pronoun
|
||||
++ obj.p2 -- object if it's a pronoun
|
||||
++ vp.sii -- restricted set of particles
|
||||
++ vp.dhex -- restricted set of nouns/adverbials
|
||||
++ vp.secObj -- "second object"
|
||||
++ vp.vComp -- VV complement
|
||||
++ pred.inf -- potential infinitive/participle
|
||||
++ pred.fin -- the verb inflected
|
||||
++ vp.miscAdv ; ---- NB. Only used if there are several adverbs.
|
||||
---- Primary places for adverbs are obj, sii or dhex.
|
||||
|
||||
vf : Tense -> Anteriority -> Polarity -> Agreement -> Verb
|
||||
-> {fin : Str ; inf : Str} = \t,ant,p,agr,vp ->
|
||||
case <t,ant> of {
|
||||
@@ -711,7 +788,7 @@ oper
|
||||
<Past,Anter> => {fin = pastV (cSug "jir") ; inf = vp.s ! VInf} ;
|
||||
<Fut,Simul> => {fin = presV (cSug "doon") ; inf = vp.s ! VInf} ;
|
||||
<Fut,Anter> => {fin = pastV (cSug "doon") ; inf = vp.s ! VInf} ;
|
||||
<Cond,Simul> => {fin = presV have_V ; inf = vp.s ! VInf} ; -- TODO check
|
||||
<Cond,Simul> => {fin = pastV have_V ; inf = vp.s ! VInf} ; -- TODO check
|
||||
<Cond,Anter> => {fin = pastV have_V ; inf = vp.s ! VInf} -- TODO check
|
||||
}
|
||||
where {
|
||||
@@ -722,6 +799,10 @@ oper
|
||||
presV : Verb -> Str = \v -> v.s ! VPres Simple agr p ;
|
||||
} ;
|
||||
|
||||
infVP : VerbPhrase -> Str = \vp ->
|
||||
let inf = (vf Past Anter Pos (Sg3 Masc) vp) ** {fin=[]}
|
||||
in wordOrder [] [] [] (vp.comp ! Pl3) inf vp ;
|
||||
|
||||
stmarker : Agreement => Polarity => Str = \\a,b =>
|
||||
let stm = if_then_Pol b "w" "m"
|
||||
in stm + subjpron ! a ;
|
||||
@@ -742,6 +823,13 @@ oper
|
||||
-- linrefs
|
||||
|
||||
oper
|
||||
linVP : VerbPhrase -> Str = \vp -> let obj = vp.comp ! Sg3 Masc in obj.p1 ++ obj.p2 ++ vp.s ! VInf ; ----
|
||||
linVP : VerbPhrase -> Str = infVP ;
|
||||
linCN : CNoun -> Str = \cn -> cn.s ! NomSg ++ cn.mod ! Sg ! Abs ;
|
||||
linAdv : Adverb -> Str = \adv ->
|
||||
adv.berri
|
||||
++ adv.sii
|
||||
++ (prepTable ! P adv.c2).s ! adv.np.a
|
||||
++ adv.dhex
|
||||
++ adv.np.s ! Abs ;
|
||||
|
||||
}
|
||||
|
||||
@@ -8,44 +8,8 @@ lin
|
||||
--2 Clauses
|
||||
|
||||
-- : NP -> VP -> Cl
|
||||
PredVP np vps =
|
||||
let vp = case vps.c2 of {
|
||||
Passive => complSlash (insertComp vps np) ;
|
||||
_ => complSlash vps } ;
|
||||
subj = case vps.c2 of {Passive => impersNP ; _ => np} ;
|
||||
in { s = \\isQ,t,a,p =>
|
||||
let predRaw : {fin : Str ; inf : Str} = vf t a p subj.a vp ;
|
||||
pred : {fin : Str ; inf : Str} = case <isQ,p,vp.pred> of {
|
||||
<False,Pos,NoCopula> => {fin,inf = []} ;
|
||||
_ => predRaw
|
||||
} ;
|
||||
subjnoun : Str = if_then_Str np.isPron [] (subj.s ! Nom) ;
|
||||
subjpron : Str = if_then_Str np.isPron (subj.s ! Nom) [] ;
|
||||
obj : {p1,p2 : Str} =
|
||||
let o : {p1,p2 : Str} = vp.comp ! subj.a ;
|
||||
in case p of {
|
||||
Pos => o ;
|
||||
Neg => {p2 = [] ; p1 = o.p1 ++ o.p2 ++ BIND} -- object pronoun, prepositions and negation all contract
|
||||
} ;
|
||||
stm : Str = case <isQ,p,vp.pred,subj.a> of {
|
||||
<False,Pos,Copula|NoCopula,Sg3 _|Impers> => "waa" ;
|
||||
<True ,Pos,_ ,_ > => "ma" ;
|
||||
_ => case <np.isPron,p> of {
|
||||
<True,Pos> => "waa" ++ subjpron ; -- to force some string from NP to show in the tree
|
||||
<True,Neg> => "ma" ++ subjpron ;
|
||||
<False> => stmarkerNoContr ! subj.a ! p
|
||||
}
|
||||
} ;
|
||||
PredVP = predVP ;
|
||||
|
||||
in subjnoun -- subject if it's a noun
|
||||
++ obj.p1 -- object if it's a noun
|
||||
++ stm -- sentence type marker + possible subj. pronoun
|
||||
++ vp.adv ---- TODO word order
|
||||
++ obj.p2 -- object if it's a pronoun
|
||||
++ vp.secObj -- "second object"
|
||||
++ pred.inf -- potential infinitive/participle
|
||||
++ pred.fin -- the verb inflected
|
||||
} ;
|
||||
{-
|
||||
-- : SC -> VP -> Cl ; -- that she goes is good
|
||||
PredSCVP sc vp = ;
|
||||
|
||||
@@ -92,7 +92,7 @@ oper
|
||||
-------
|
||||
-- Prep
|
||||
|
||||
-- lin above_Prep = mkPrep "" ;
|
||||
lin above_Prep = mkPrep (mkPrep ka) [] [] "dul" ;
|
||||
-- lin after_Prep = mkPrep "" ;
|
||||
-- lin before_Prep = mkPrep "" ;
|
||||
-- lin behind_Prep = mkPrep "" ;
|
||||
@@ -104,14 +104,14 @@ oper
|
||||
-- lin for_Prep = mkPrep ;
|
||||
-- lin from_Prep = mkPrep "" ;
|
||||
-- lin in8front_Prep = mkPrep "" ;
|
||||
lin in_Prep = prep ku ;
|
||||
lin on_Prep = prep ku ;
|
||||
lin in_Prep = mkPrep ku ;
|
||||
lin on_Prep = mkPrep ku ;
|
||||
-- lin part_Prep = mkPrep ;
|
||||
-- lin possess_Prep = mkPrep ;
|
||||
-- lin through_Prep = mkPrep ;
|
||||
-- lin to_Prep = mkPrep ;
|
||||
-- lin under_Prep = mkPrep "" ;
|
||||
lin with_Prep = prep la ;
|
||||
lin with_Prep = mkPrep la ;
|
||||
-- lin without_Prep = mkPrep ;
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ lin with_Prep = prep la ;
|
||||
-- Pron
|
||||
|
||||
-- Pronouns are closed class, no constructor in ParadigmsSom.
|
||||
it_Pron = he_Pron ** {s = \\_ => []} ;
|
||||
it_Pron = he_Pron ** {s = \\_ => [] ; sp = []} ;
|
||||
i_Pron = pronTable ! Sg1 ;
|
||||
youPol_Pron, -- TODO check
|
||||
youSg_Pron = pronTable ! Sg2 ;
|
||||
@@ -160,10 +160,9 @@ lin yes_Utt = ss "yes" ;
|
||||
-- Verb
|
||||
|
||||
lin have_V2 = mkV2 have_V noPrep ;
|
||||
{-
|
||||
lin can8know_VV = mkV "" ; -- can (capacity)
|
||||
lin can_VV = mkV "" ; -- can (possibility)
|
||||
lin must_VV = mkV "" ;
|
||||
lin can8know_VV = can_VV ; -- can (capacity)
|
||||
lin can_VV = mkV "kar" ; -- can (possibility)
|
||||
{-lin must_VV = mkV "" ;
|
||||
lin want_VV = mkV "" ;
|
||||
|
||||
|
||||
|
||||
@@ -10,10 +10,12 @@ lin
|
||||
|
||||
-- : V2 -> VP ; -- be loved
|
||||
PassV2 = ResSom.passV2 ;
|
||||
{-
|
||||
-- : VV -> VP -> VP ;
|
||||
ComplVV vv vp = ; -- TODO Sayeed p. 169
|
||||
|
||||
-- : VV -> VP -> VP ;
|
||||
ComplVV vv vp = useV vv ** { -- check Sayeed p. 169
|
||||
vComp = infVP vp
|
||||
} ;
|
||||
{-
|
||||
-- : VS -> S -> VP ;
|
||||
ComplVS vs s = ;
|
||||
|
||||
@@ -131,9 +133,7 @@ lin
|
||||
|
||||
-- : Adv -> Comp ;
|
||||
CompAdv adv = {
|
||||
comp = \\a =>
|
||||
<if_then_Str adv.np.isPron [] (adv.np.s ! Abs)
|
||||
, adv.s ++ prepCombTable ! adv.np.a ! Single (P adv.c2)> ;
|
||||
comp = \\a => <[], linAdv adv> ;
|
||||
pred = Copula ;
|
||||
} ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user