mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-20 08:32:50 -06:00
more predications
This commit is contained in:
@@ -26,6 +26,10 @@ lincat
|
||||
A2 = Adjective ** {s2 : Preposition} ;
|
||||
ADeg = {s : AdjForm => Str} ;
|
||||
AP = Adjective ** {p : IsPostfixAdj} ;
|
||||
AS = Adjective ; --- "more difficult for him to come than..."
|
||||
A2S = Adjective ** {s2 : Preposition} ;
|
||||
AV = Adjective ;
|
||||
A2V = Adjective ** {s2 : Preposition} ;
|
||||
|
||||
V = Verb ;
|
||||
-- = {s : VerbForm => Str ; s1 : Str} ;
|
||||
@@ -38,14 +42,14 @@ lincat
|
||||
|
||||
VS = Verb ;
|
||||
VQ = Verb ;
|
||||
VV = Verb ** {isAux : Bool} ;
|
||||
VV = Verb ** {s3 : Str} ;
|
||||
VA = Verb ;
|
||||
|
||||
V3S = TransVerb ;
|
||||
V3Q = TransVerb ;
|
||||
V3VObj = DitransVerbVerb ;
|
||||
V3VSubj = DitransVerbVerb ;
|
||||
V3A = DitransAdjVerb ;
|
||||
V2S = TransVerb ;
|
||||
V2Q = TransVerb ;
|
||||
V2V = DitransVerbVerb ;
|
||||
V2A = DitransAdjVerb ;
|
||||
V0 = Verb ;
|
||||
|
||||
TP = {s : Str ; b : Bool ; t : Tense ; a : Anteriority} ; --- the Str field is dummy
|
||||
Tense = {s : Str ; t : Tense} ;
|
||||
|
||||
@@ -41,15 +41,23 @@ lin
|
||||
|
||||
CNthatS = nounThatSentence ;
|
||||
|
||||
PredVV2 = transVerbVerb ;
|
||||
AdjPart = adjPastPart ;
|
||||
PredVV2 = transVerbVerb ;
|
||||
AdjPart = adjPastPart ;
|
||||
|
||||
PredV3A = complDitransAdjVerb ;
|
||||
PredV3VSubj = complDitransVerbVerb False ;
|
||||
PredV3VObj = complDitransVerbVerb True ;
|
||||
PredV3S = complDitransSentVerb ;
|
||||
PredV3Q = complDitransQuestVerb ;
|
||||
PredVA = complAdjVerb ;
|
||||
PredV2A = complDitransAdjVerb ;
|
||||
PredSubjV2V = complDitransVerbVerb False ;
|
||||
PredObjV2V = complDitransVerbVerb True ;
|
||||
PredV2S = complDitransSentVerb ;
|
||||
PredV2Q = complDitransQuestVerb ;
|
||||
PredVA = complAdjVerb ;
|
||||
|
||||
UseV2V x = x ;
|
||||
UseV2S x = x ;
|
||||
UseV2Q x = x ;
|
||||
UseA2S x = x ;
|
||||
UseA2V x = x ;
|
||||
|
||||
|
||||
|
||||
UseCl tp cl = {s = \\o => tp.s ++ cl.s ! tp.b ! ClFinite tp.t tp.a o} ;
|
||||
UseVG tp = predVerbGroup tp.b tp.t tp.a ;
|
||||
@@ -80,6 +88,13 @@ lin
|
||||
PredVQ = complQuestVerb ;
|
||||
PredVV = complVerbVerb ;
|
||||
VTrans = transAsVerb ;
|
||||
PredV0 = predVerb0 ;
|
||||
|
||||
PredAS = predAdjSent ;
|
||||
PredA2S = predAdjSent2 ;
|
||||
PredAV = complVerbAdj ;
|
||||
PredSubjA2V = complVerbAdj2 False ;
|
||||
PredObjA2V = complVerbAdj2 True ;
|
||||
|
||||
AdjAdv a = advPost (a.s ! adverbForm ! Nom) ;
|
||||
AdvPP p = p ;
|
||||
|
||||
@@ -549,6 +549,10 @@ oper
|
||||
|
||||
negation : Bool => Str = \\b => if_then_Str b [] negInte ;
|
||||
|
||||
predVerb0 : Verb -> Clause = \regna ->
|
||||
predVerbGroupClause npDet (predVerb regna) ;
|
||||
|
||||
|
||||
-- Verb phrases can also be formed from adjectives ("är snäll"),
|
||||
-- common nouns ("är en man"), and noun phrases ("är den yngste mannen").
|
||||
-- The third rule is overgenerating: "är varje man" has to be ruled out
|
||||
@@ -572,6 +576,16 @@ oper
|
||||
predAdverb : Adverb -> VerbGroup = \ute ->
|
||||
vara (\\_,_,_ => ute.s) ;
|
||||
|
||||
predAdjSent : Adjective -> Sentence -> Clause = \bra,hansover ->
|
||||
predVerbGroupClause
|
||||
npDet
|
||||
(vara (
|
||||
\\g,n,_ => bra.s ! predFormAdj g n ! Nom ++ infinAtt ++ hansover.s ! Sub)) ;
|
||||
|
||||
predAdjSent2 : AdjCompl -> NounPhrase -> Adjective = \bra,han ->
|
||||
{s = \\af,c => bra.s ! af ! c ++ bra.s2 ++ han.s ! PAcc} ;
|
||||
|
||||
|
||||
--3 Transitive verbs
|
||||
--
|
||||
-- Transitive verbs are verbs with a preposition for the complement,
|
||||
@@ -810,23 +824,31 @@ oper
|
||||
-- ("försöka"); this distinction cannot be done in the multilingual
|
||||
-- API and leads to some anomalies in Swedish, but less so than in English.
|
||||
|
||||
VerbVerb : Type = Verb ** {isAux : Bool} ;
|
||||
VerbVerb : Type = Verb ** {s3 : Str} ;
|
||||
|
||||
complVerbVerb : VerbVerb -> VerbGroup -> VerbGroup = \vilja, simma ->
|
||||
useVerb vilja
|
||||
(\\g,n,p =>
|
||||
vilja.s1 ++
|
||||
if_then_Str vilja.isAux [] infinAtt ++
|
||||
vilja.s3 ++
|
||||
simma.s ! VInfinit Simul ++ simma.s2 ! True ++ ---- Anter!
|
||||
simma.s3 ! VInfinit Simul ! g ! n ! p) ;
|
||||
|
||||
transVerbVerb : VerbVerb -> TransVerb -> TransVerb = \vilja,hitta ->
|
||||
{s = vilja.s ;
|
||||
s1 = vilja.s1 ++ if_then_Str vilja.isAux [] infinAtt ++
|
||||
s1 = vilja.s1 ++ vilja.s3 ++
|
||||
hitta.s ! VI (Inf Act) ++ hitta.s1 ; ---- Anter!
|
||||
s2 = hitta.s2
|
||||
} ;
|
||||
|
||||
complVerbAdj : Adjective -> VerbGroup -> VerbGroup = \grei, simma ->
|
||||
vara
|
||||
(\\g,n,p =>
|
||||
grei.s ! predFormAdj g n ! Nom ++
|
||||
infinAtt ++
|
||||
simma.s ! VInfinit Simul ++ simma.s2 ! True ++ ---- Anter!
|
||||
simma.s3 ! VInfinit Simul ! g ! n ! p) ;
|
||||
|
||||
-- Notice agreement to object vs. subject:
|
||||
|
||||
DitransVerbVerb = TransVerb ** {s3 : Str} ;
|
||||
@@ -842,6 +864,18 @@ oper
|
||||
(simma.s3 ! VInfinit Simul ! g ! n ! p)
|
||||
) ;
|
||||
|
||||
complVerbAdj2 :
|
||||
Bool -> AdjCompl -> NounPhrase -> VerbGroup -> VerbGroup = \obj,grei,dig,simma ->
|
||||
vara
|
||||
(\\g,n,p =>
|
||||
grei.s ! predFormAdj g n ! Nom ++
|
||||
grei.s2 ++ dig.s ! PAcc ++
|
||||
infinAtt ++
|
||||
simma.s ! VInfinit Simul ++ simma.s2 ! True ++ ---- Anter!
|
||||
if_then_Str obj
|
||||
(simma.s3 ! VInfinit Simul ! dig.g ! dig.n ! dig.p)
|
||||
(simma.s3 ! VInfinit Simul ! g ! n ! p)
|
||||
) ;
|
||||
|
||||
--2 Sentences missing noun phrases
|
||||
--
|
||||
|
||||
Reference in New Issue
Block a user