1
0
forked from GitHub/gf-core

cleaning up VP to Cl

This commit is contained in:
aarne
2005-02-02 08:30:40 +00:00
parent 1df951b93d
commit 176dccf78b
6 changed files with 64 additions and 30 deletions

View File

@@ -89,7 +89,7 @@ fun
PredV0 : V0 -> Cl ; -- "it is raining"
-- These rules *use* verb phrases:
-- $PredVP$, $IntVP$, $RelVP$, $QuestVP$, $QuestAdv$.
-- $PredVP$, $IntVP$, $RelVP$.
-- Partial saturation.
@@ -110,9 +110,9 @@ fun
PosVP, NegVP : Ant -> VP -> VPI ;
ProgVG : VP -> VP ; -- he is eating
ProgVG : VP -> VP ; -- he is eating
AdjPart : V -> A ; -- forgotten
AdjPart : V -> A ; -- forgotten
UseCl : TP -> Cl -> S ;
UseRCl : TP -> RCl -> RS ;
@@ -166,10 +166,10 @@ fun
FunIP : N2 -> IP -> IP ; -- "the mother of whom"
NounIPOne, NounIPMany : CN -> IP ; -- "which car", "which cars"
QuestVP : NP -> VP -> QCl ; -- "does John walk"; "doesn't John walk"
IntVP : IP -> VP -> QCl ; -- "who walks"
IntSlash : IP -> Slash -> QCl ; -- "whom does John see"
QuestAdv : IAdv -> NP -> VP -> QCl ; -- "why do you walk"
QuestCl : Cl -> QCl ; -- "does John walk"; "doesn't John walk"
IntVP : IP -> VP -> QCl ; -- "who walks"
IntSlash : IP -> Slash -> QCl ; -- "whom does John see"
QuestAdv : IAdv -> Cl -> QCl ; -- "why do you walk"
PosImperVP, NegImperVP : VP -> Imp ; -- "(don't) be a man"

View File

@@ -81,7 +81,7 @@ lincat
S = {s : Str} ;
Cl = Clause ;
-- = {s : Bool => SForm => Str} ;
-- = {s : Order => Bool => SForm => Str} ;
Slash = {s : QuestForm => Bool => SForm => Str ; s2 : Preposition} ;
RP = {s : Gender => Number => NPForm => Str} ;
RCl = {s : Bool => SForm => Agr => Str} ;

View File

@@ -116,7 +116,7 @@ lin
ProgVG = progressiveVerbPhrase ;
UseCl tp cl = {s = tp.s ++ cl.s ! tp.b ! VFinite tp.t tp.a} ;
UseCl tp cl = {s = tp.s ++ cl.s ! Dir ! tp.b ! VFinite tp.t tp.a} ;
UseQCl tp cl = {s = \\q => tp.s ++ cl.s ! tp.b ! VFinite tp.t tp.a ! q} ;
UseRCl tp cl = {s = \\a => tp.s ++ cl.s ! tp.b ! VFinite tp.t tp.a ! a} ;
@@ -168,7 +168,7 @@ lin
NounIPOne = nounIntPron singular ;
NounIPMany = nounIntPron plural ;
QuestVP = questVerbPhrase ;
QuestCl = questClause ;
IntVP = intVerbPhrase ;
IntSlash = intSlash ;
QuestAdv = questAdverbial ;

View File

@@ -646,18 +646,33 @@ oper
--3 Tensed clauses
Clause = {s : Bool => SForm => Str} ;
-- We have direct (declarative) and inverted (interrogative) clauses.
ClForm = SForm ; ---- to be removed
Clause = {s : Order => Bool => SForm => Str} ;
param Order = Dir | Inv ;
oper
predVerbGroupClause : NounPhrase -> VerbGroup -> Clause =
\yo,sleep -> {
s = \\b,c =>
\yo,dosleep -> {
s = \\o,b,c =>
let
a = yo.a ;
you = yo.s ! NomP
a = yo.a ;
you = yo.s ! NomP ;
do = dosleep.s ! b ! c ! a ;
sleeps = dosleep.s2 ! b ! c ! a ;
does = auxTense b Present a ;
did = auxTense b Past a ;
sleep = dosleep.s2 ! False ! c ! a
in
you ++ sleep.s ! b ! c ! a ++ sleep.s2 ! b ! c ! a
case o of {
Dir => you ++ do ++ sleeps ;
Inv => case <c,dosleep.isAux> of {
<VFinite Present Simul,False> => does ++ you ++ sleep ;
<VFinite Past Simul,False> => did ++ you ++ sleep ;
_ => do ++ you ++ sleeps
}
}
} ;
@@ -799,7 +814,7 @@ oper
{s = table {
DirQ => \\b,f => (questVerbPhrase you (predVerb
lookat)).s ! b ! f ! DirQ ;
IndirQ => (predVerbGroupClause you (predVerb lookat)).s
IndirQ => (predVerbGroupClause you (predVerb lookat)).s ! Dir
} ;
s2 = lookat.s3
} ;
@@ -834,7 +849,8 @@ oper
relVerbPhrase : RelPron -> VerbGroup -> RelClause = \who,walks ->
{s = \\b,sf,a =>
let wa = fromAgr a in
(predVerbGroupClause (relNounPhrase who wa.g wa.n) walks).s ! b ! sf
(predVerbGroupClause (relNounPhrase who wa.g wa.n) walks).s ! Dir
! b ! sf
} ;
--- TODO: full tense variation in relative clauses.
@@ -855,7 +871,7 @@ oper
-- "number x such that x is even".
relSuch : Clause -> RelClause = \A ->
{s = \\b,sf,_ => "such" ++ "that" ++ A.s ! b ! sf} ;
{s = \\b,sf,_ => "such" ++ "that" ++ A.s ! Dir ! b ! sf} ;
-- The main use of relative clauses is to modify common nouns.
-- The result is a common noun, out of which noun phrases can be formed
@@ -953,6 +969,13 @@ oper
-- rule, $questVerbPhrase'$. The word ("ob" / "whether") never appears
-- if there is an adverbial.
questClause : Clause -> Question = \cl ->
{s = \\b,c => table {
DirQ => cl.s ! Inv ! b ! c ;
IndirQ => cl.s ! Dir ! b ! c
}
} ;
questVerbPhrase : NounPhrase -> VerbGroup -> Question =
questVerbPhrase' False ;
@@ -973,7 +996,7 @@ oper
_ => walk.s ! b ! cl ! John.a ++ john ++ walk.s2 ! b ! cl ! John.a
} ;
IndirQ => if_then_else Str adv [] (variants {"if" ; "whether"}) ++
(predVerbGroupClause John walk).s ! b ! cl
(predVerbGroupClause John walk).s ! Dir ! b ! cl
}
} ;
@@ -987,7 +1010,7 @@ oper
who : NounPhrase = {s = who.s ; a = toAgr who.n P3 who.g} ;
whowalks : Clause = predVerbGroupClause who walk
in
{s = \\b,sf,_ => whowalks.s ! b ! sf} ;
{s = \\b,sf,_ => whowalks.s ! Dir ! b ! sf} ;
intSlash : IntPron -> ClauseSlashNounPhrase -> Question = \who,yousee ->
{s = \\b,cl,q =>
@@ -1016,10 +1039,10 @@ oper
-- A question adverbial can be applied to anything, and whether this makes
-- sense is a semantic question.
questAdverbial : IntAdverb -> NounPhrase -> VerbGroup -> Question =
\why, you, walk ->
questAdverbial : IntAdverb -> Clause -> Question =
\why, youwalk ->
{s = \\b,cf,q =>
why.s ++ (questVerbPhrase' True you walk).s ! b ! cf ! q} ;
why.s ++ (questClause youwalk).s ! b ! cf ! q} ;
--2 Imperatives
--
@@ -1042,7 +1065,7 @@ oper
-- e.g. prepositional phrases.
advClause : Clause -> Adverb -> Clause = \yousing,well ->
{s = \\b,c => yousing.s ! b ! c ++ well.s} ;
{s = \\o,b,c => yousing.s ! o ! b ! c ++ well.s} ;
-- Conjunctive adverbs are such as "otherwise", "therefore", which are prefixed
-- to a sentence to form a phrase.

View File

@@ -151,7 +151,7 @@ lin
NounIPOne = nounIntPron singular ;
NounIPMany = nounIntPron plural ;
QuestVP = questVerbPhrase ;
QuestCl = questClause ;
IntVP = intVerbPhrase ;
IntSlash = intSlash ;
QuestAdv = questAdverbial ;

View File

@@ -1071,6 +1071,17 @@ oper
-- rule, $questVerbPhrase'$. The only difference is if "om" appears
-- in the indirect form.
questClause : Clause -> Question = \dusover ->
{s = \\b,sf =>
let
dusov : Order => Str = \\o => dusover.s ! b ! s2cl sf o
in
table {
DirQ => dusov ! Inv ;
IndirQ => dusov ! Sub
}
} ;
questVerbPhrase : NounPhrase -> VerbGroup -> Question =
questVerbPhrase' False ;
@@ -1143,9 +1154,9 @@ oper
-- A question adverbial can be applied to anything, and whether this makes
-- sense is a semantic question.
questAdverbial : IntAdverb -> NounPhrase -> VerbGroup -> Question =
\hur, du, mår ->
{s = \\b,sf,q => hur.s ++ (questVerbPhrase' True du mår).s ! b ! sf ! q} ;
questAdverbial : IntAdverb -> Clause -> Question =
\hur, dumår ->
{s = \\b,sf,q => hur.s ++ (questClause dumår).s ! b ! sf ! q} ;
--2 Imperatives
--