forked from GitHub/gf-core
finished french vp (but buggy)
This commit is contained in:
@@ -1,17 +1,21 @@
|
||||
--# -path=.:resource/french:resource/romance:resource/abstract:resource/../prelude
|
||||
|
||||
concrete AnimalsFre of Animals = open ResourceFre, ParadigmsFre, VerbsFre in {
|
||||
concrete AnimalsFre of Animals =
|
||||
open
|
||||
--- ResourceFre,
|
||||
RulesFre, StructuralFre, VerbphraseFre,
|
||||
ParadigmsFre, VerbsFre in {
|
||||
lincat
|
||||
Phrase = Phr ;
|
||||
Animal = N ;
|
||||
Action = V2 ;
|
||||
lin
|
||||
Who act obj = QuestPhrase (UseQCl (PosTP TPresent ASimul)
|
||||
(QPredV2 who8one_IP act (IndefNumNP NoNum (UseN obj)))) ;
|
||||
(IntVP who8one_IP (ComplV2 act (IndefNumNP NoNum (UseN obj))))) ;
|
||||
Whom subj act = QuestPhrase (UseQCl (PosTP TPresent ASimul)
|
||||
(IntSlash who8one_IP (SlashV2 (DefOneNP (UseN subj)) act))) ;
|
||||
Answer subj act obj = IndicPhrase (UseCl (PosTP TPresent ASimul)
|
||||
(SPredV2 (DefOneNP (UseN subj)) act (IndefNumNP NoNum (UseN obj)))) ;
|
||||
(PredVP (DefOneNP (UseN subj)) (ComplV2 act (IndefNumNP NoNum (UseN obj))))) ;
|
||||
Dog = regN "chien" masculine ;
|
||||
Cat = regN "chat" masculine ;
|
||||
Mouse = regN "souris" feminine ;
|
||||
|
||||
@@ -167,7 +167,10 @@ families, using the module system of GF.
|
||||
<!-- NEW -->
|
||||
<h2>These are not our success criteria</h2>
|
||||
|
||||
Language coverage: you can parse all expressions.
|
||||
Language coverage: you can parse all expressions. Example:
|
||||
the French <i>passé simple</i> tense, although covered by the
|
||||
morhology, is not used in the language-independent API, but
|
||||
only the <i>passé composé</i> is.
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
@@ -1122,8 +1122,6 @@ oper
|
||||
Question = {s : Bool => SForm => QuestForm => Str} ;
|
||||
QuestionSent = {s : QuestForm => Str} ;
|
||||
|
||||
--- TODO: questions in all tenses.
|
||||
|
||||
--3 Yes-no questions
|
||||
--
|
||||
-- Yes-no questions are used both independently
|
||||
|
||||
@@ -315,19 +315,19 @@ oper
|
||||
|
||||
mkV0 v = v ** {lock_V0 = <>} ;
|
||||
mkVS v = v ** {mn,mp = Ind ; lock_VS = <>} ; ---- more moods
|
||||
mkV2S v p = mkV2 v p ** {lock_V2S = <>} ;
|
||||
mkV2S v p = mkV2 v p ** {mn,mp = Ind ; lock_V2S = <>} ;
|
||||
mkVV v = v ** {c = accusative ; lock_VV = <>} ;
|
||||
deVV v = v ** {c = genitive.p1 ; lock_VV = <>} ;
|
||||
aVV v = v ** {c = dative.p1 ; lock_VV = <>} ;
|
||||
mkV2V v p t = mkV2 v p ** {c3 = t.p1 ; lock_V2V = <>} ;
|
||||
mkV2V v p t = mkV2 v p ** {c3 = t.p1 ; s3 = p.p2 ; lock_V2V = <>} ;
|
||||
mkVA v = v ** {lock_VA = <>} ;
|
||||
mkV2A v p = mkV2 v p ** {lock_V2A = <>} ;
|
||||
mkVQ v = v ** {lock_VQ = <>} ;
|
||||
mkV2Q v p = mkV2 v p ** {lock_V2Q = <>} ;
|
||||
|
||||
mkAS v = v ** {mn,mp = Ind ; lock_AS = <>} ; ---- more moods
|
||||
mkA2S v p = mkA2 v p ** {lock_A2S = <>} ;
|
||||
mkAV v p = v ** {c = p.p1 ; lock_AV = <>} ;
|
||||
mkA2S v p = mkA2 v p ** {mn,mp = Ind ; lock_A2S = <>} ;
|
||||
mkAV v p = v ** {c = p.p1 ; s2 = p.p2 ; lock_AV = <>} ;
|
||||
mkA2V v p q = mkA2 v p ** {s3 = q.p2 ; c3 = q.p1 ; lock_A2V = <>} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -119,6 +119,11 @@ oper
|
||||
AEsse => verbEtre
|
||||
} ;
|
||||
|
||||
progressiveVerbPhrase : VerbPhrase -> VerbGroup = \vp ->
|
||||
predClauseBeGroup
|
||||
(complCopula (\\g,n,p =>
|
||||
"en" ++ "train" ++ elisDe ++ vp.s ! VIInfinit ! g ! n ! p)) ;
|
||||
|
||||
-- The "ne - pas" negation.
|
||||
|
||||
posNeg = \b,v,c ->
|
||||
@@ -179,13 +184,6 @@ oper
|
||||
|
||||
-- Questions
|
||||
{- ----
|
||||
questVerbPhrase = \jean,dort ->
|
||||
{s = table {
|
||||
DirQ => optStr (estCeQue Acc) ++ (predVerbPhrase jean dort).s ! Ind ;
|
||||
IndirQ => elisSi ++ (predVerbPhrase jean dort).s ! Ind
|
||||
}
|
||||
} ;
|
||||
|
||||
existNounPhraseQuest = \duvin -> {
|
||||
s = \\m =>
|
||||
case m of {
|
||||
@@ -194,22 +192,17 @@ oper
|
||||
}
|
||||
++ duvin.s ! stressed accusative --- il y en a ; have to define "y"
|
||||
} ;
|
||||
|
||||
intVerbPhrase = \qui, dormir ->
|
||||
let dort = dormir.s ! qui.g ! VPF Simul (VFin presInd qui.n P3)
|
||||
in
|
||||
{s = table {
|
||||
DirQ => qui.s ! Nom ++ optStr (estCeQue Nom) ++ dort ;
|
||||
IndirQ => "ce" ++ qui.s ! Nom ++ dort
|
||||
}
|
||||
} ;
|
||||
|
||||
-}
|
||||
intSlash = \Qui, Tuvois ->
|
||||
let {qui = Tuvois.s2 ++ Qui.s ! Tuvois.c ; tuvois = Tuvois.s ! Ind} in
|
||||
{s = table {
|
||||
DirQ => qui ++ optStr (estCeQue Acc) ++ tuvois ;
|
||||
IndirQ => ifCe Tuvois.c ++ qui ++ tuvois
|
||||
}
|
||||
{s = \\b,cl =>
|
||||
let
|
||||
qui = Tuvois.s2 ++ Qui.s ! Tuvois.c ;
|
||||
tuvois = Tuvois.s ! b ! cl
|
||||
in
|
||||
table {
|
||||
DirQ => qui ++ optStr (estCeQue Acc) ++ tuvois ;
|
||||
IndirQ => ifCe Tuvois.c ++ qui ++ tuvois
|
||||
}
|
||||
} ;
|
||||
|
||||
-- An auxiliary to distinguish between
|
||||
@@ -221,14 +214,6 @@ oper
|
||||
_ => []
|
||||
} ;
|
||||
|
||||
questAdverbial = \quand, jean, dort ->
|
||||
let {jeandort = (predVerbPhrase jean dort).s ! Ind} in
|
||||
{s = table {
|
||||
DirQ => quand.s ++ optStr (estCeQue Acc) ++ jeandort ;
|
||||
IndirQ => quand.s ++ jeandort
|
||||
}
|
||||
} ;
|
||||
-}
|
||||
----- moved from Morpho
|
||||
|
||||
--2 Articles
|
||||
|
||||
@@ -48,9 +48,9 @@ lincat
|
||||
ADeg = {s : Degree => AForm => Str ; p : Bool} ;
|
||||
AP = Adjective ;
|
||||
AS = Adjective ** {mp,mn : Mode} ; --- "more difficult for him to come than..."
|
||||
A2S = Adjective ** {s2 : Preposition} ;
|
||||
AV = Adjective ** {c : CaseA} ;
|
||||
A2V = Adjective ** {s2 : Preposition} ;
|
||||
A2S = Adjective ** {mp,mn : Mode ; c : CaseA ; s2 : Preposition} ;
|
||||
AV = Adjective ** {c : CaseA ; s2 : Preposition} ;
|
||||
A2V = Adjective ** {c : CaseA ; s2 : Preposition} ;
|
||||
|
||||
V = Verb ;
|
||||
-- = {s : VF => Str} ;
|
||||
@@ -64,13 +64,13 @@ lincat
|
||||
VQ = Verb ;
|
||||
VA = Verb ;
|
||||
|
||||
V2S = TransVerb ;
|
||||
V2S = TransVerb ** {mp,mn : Mode} ;
|
||||
V2Q = TransVerb ;
|
||||
V2V = TransVerb ** {c3 : CaseA} ;
|
||||
V2V = TransVerb ** {c3 : CaseA ; s3 : Preposition} ;
|
||||
V2A = TransVerb ;
|
||||
V0 = Verb ;
|
||||
|
||||
TP = {s : Str ; b : Bool ; t : Tense ; a : Anteriority} ; --- the Str field is dummy
|
||||
TP = {s : Str ; b : Bool ; t : Tense ; a : Anteriority} ; --- s-field is dummy
|
||||
Tense = {s : Str ; t : Tense} ;
|
||||
Ant = {s : Str ; a : Anteriority} ;
|
||||
|
||||
@@ -84,7 +84,7 @@ lincat
|
||||
-- = {s : Mode => Str} ;
|
||||
Cl = Clause ;
|
||||
-- = {s : Bool => ClForm => Str} ;
|
||||
Slash = Sentence ** {s2 : Preposition ; c : CaseA} ;
|
||||
Slash = Clause ** {s2 : Preposition ; c : CaseA} ;
|
||||
|
||||
RP = {s : RelForm => Str ; g : RelGen} ;
|
||||
RS = {s : Mode => Gender => Number => Person => Str} ;
|
||||
|
||||
@@ -45,14 +45,20 @@ lin
|
||||
|
||||
UseV2 = transAsVerb ;
|
||||
|
||||
-- Formation of infinitival phrases.
|
||||
UseV2V x = x ** {isAux = False} ;
|
||||
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} ;
|
||||
{- ----
|
||||
-- Formation of fixed-tense fixed-polarity clauses.
|
||||
|
||||
UseCl tp cl =
|
||||
{s = \\m => tp.s ++ cl.s ! tp.b ! useClForm tp.t tp.a m} ;
|
||||
UseRCl tp cl =
|
||||
{s = \\gn,p => tp.s ++ cl.s ! tp.b ! VFinite tp.t tp.a ! gn ! p} ;
|
||||
UseQCl tp cl = {s = \\q => tp.s ++ cl.s ! tp.b ! VFinite tp.t tp.a ! q} ;
|
||||
-}
|
||||
{s = \\m,g,n,p => tp.s ++ cl.s ! tp.b ! useClForm tp.t tp.a m ! g ! n ! p} ;
|
||||
UseQCl tp cl =
|
||||
{s = \\q => tp.s ++ cl.s ! tp.b ! useClForm tp.t tp.a Ind ! q} ;
|
||||
|
||||
PosTP t a = {s = t.s ++ a.s ; b = True ; t = t.t ; a = a.a} ;
|
||||
NegTP t a = {s = t.s ++ a.s ; b = False ; t = t.t ; a = a.a} ;
|
||||
@@ -77,23 +83,18 @@ lin
|
||||
AdvAP = advAdjPhrase ;
|
||||
AdvAdv = cc2 ;
|
||||
|
||||
{-
|
||||
--3 Sentences and relative clauses
|
||||
--
|
||||
|
||||
SlashV2 = slashTransVerb ;
|
||||
SlashVV2 = slashVerbVerb ;
|
||||
SlashAdv cl p = slashAdverb cl p.s ;
|
||||
|
||||
--PosSlashV2 = slashTransVerb True ;
|
||||
--NegSlashV2 = slashTransVerb False ;
|
||||
-}
|
||||
---- SlashVV2 = slashVerbVerb ;
|
||||
---- SlashAdv cl p = slashAdverb cl p.s ;
|
||||
|
||||
IdRP = identRelPron ;
|
||||
FunRP = funRelPron ;
|
||||
---- RelSlash = relSlash ;
|
||||
---- ModRS = modRelClause ;
|
||||
---- RelCl = relSuch ;
|
||||
RelSlash = relSlash ;
|
||||
ModRS = modRelClause ;
|
||||
RelCl = relSuch ;
|
||||
|
||||
--!
|
||||
--3 Questions and imperatives
|
||||
@@ -102,9 +103,9 @@ lin
|
||||
---- IDetCN d n = detNounPhrase d n ;
|
||||
FunIP = funIntPron ;
|
||||
|
||||
---- QuestCl = questClause ;
|
||||
---- IntSlash = intSlash ;
|
||||
---- QuestAdv = questAdverbial ;
|
||||
QuestCl = questClause ;
|
||||
IntSlash = intSlash ;
|
||||
QuestAdv = questAdverbial ;
|
||||
|
||||
---- PosImpVP = imperVerbPhrase True ;
|
||||
---- NegImpVP = imperVerbPhrase False ;
|
||||
@@ -132,6 +133,11 @@ lin
|
||||
ConjNP = conjunctNounPhrase ;
|
||||
ConjDNP = conjunctDistrNounPhrase ;
|
||||
|
||||
TwoAdv = twoAdverb ;
|
||||
ConsAdv = consAdverb ;
|
||||
ConjAdv = conjunctAdverb ;
|
||||
ConjDAdv = conjunctDistrAdverb ;
|
||||
|
||||
SubjS = subjunctSentence ; -- stack
|
||||
SubjImper = subjunctImperative ;
|
||||
SubjQS = subjunctQuestion ;
|
||||
|
||||
@@ -493,11 +493,20 @@ oper
|
||||
complAdverb : Adverb -> Complemnt = \dehors ->
|
||||
complCopula (\\_,_,_ => dehors.s) ;
|
||||
|
||||
complVerbAdj : (Adjective ** {c : CaseA}) -> VerbPhrase -> Complemnt = \facile,ouvrir ->
|
||||
complVerbAdj : AdjCompl -> VerbPhrase -> Complemnt = \facile,ouvrir ->
|
||||
complCopula (\\g,n,p =>
|
||||
facile.s ! AF g n ++ prepCase facile.c ++
|
||||
facile.s ! AF g n ++ prepCase facile.c ++ facile.s2 ++
|
||||
ouvrir.s ! VIInfinit ! g ! n ! p) ;
|
||||
|
||||
complVerbAdj2 : Bool -> AdjCompl -> NounPhrase -> VerbPhrase -> Complemnt =
|
||||
\b,facile,lui,nager ->
|
||||
complTransVerbGen (copula ** {c = dative ; s2=[]}) lui
|
||||
(\\g,n,p =>
|
||||
facile.s ! AF g n ++ prepCase facile.c ++ facile.s2 ++
|
||||
nager.s ! VIInfinit ! g ! n ! p) ; ---- agr dep on b
|
||||
|
||||
progressiveVerbPhrase : VerbPhrase -> VerbGroup ;
|
||||
|
||||
-- Passivization is like adjectival predication.
|
||||
|
||||
passVerb : Verb -> Complemnt = \aimer ->
|
||||
@@ -670,10 +679,10 @@ oper
|
||||
-- as well as the position: "est toujours heureux" / "est heureux à Paris".)
|
||||
|
||||
Adverb : Type = SS ;
|
||||
{-
|
||||
adVerbPhrase : VerbPhrase -> Adverb -> VerbPhrase = \chante, bien ->
|
||||
{s = \\g,v => chante.s ! g ! v ++ bien.s} ;
|
||||
-}
|
||||
|
||||
adVerbPhrase : VerbGroup -> Adverb -> VerbGroup = \chante, bien ->
|
||||
{s = \\b,g,v => chante.s ! b ! g ! v ++ bien.s} ;
|
||||
|
||||
-- Adverbs are typically generated by prefixing prepositions.
|
||||
-- The rule for prepositional phrases also comprises the use of prepositions
|
||||
-- treated as cases. Therefore, both a preposition and a case are needed
|
||||
@@ -726,6 +735,14 @@ param
|
||||
;
|
||||
|
||||
oper
|
||||
useClForm : Tense -> Anteriority -> Mode -> ClForm =
|
||||
\t,a,m -> case t of {
|
||||
Present => ClPres a m ;
|
||||
Past => ClImperf a m ; --- no passé simple
|
||||
Future => ClFut a ; ---- mode
|
||||
Condit => ClCondit a
|
||||
} ;
|
||||
|
||||
Clause = {s : Bool => ClForm => Str} ;
|
||||
|
||||
---- VIForm = VIInfinit | VIImperat Bool Number ;
|
||||
@@ -828,11 +845,25 @@ oper
|
||||
----- let m = if_then_else Mode b croire.mp croire.mn
|
||||
embedConj ++ jeanboit.s ! croire.mp) ;
|
||||
|
||||
complQuestVerb : Verb -> Question -> Complemnt = \demander,sijeanboit ->
|
||||
complDitransSentVerb :
|
||||
(TransVerb ** {mp, mn : Mode}) -> NounPhrase -> Sentence -> Complemnt =
|
||||
\dire,lui,jeanboit ->
|
||||
complTransVerbGen
|
||||
dire lui
|
||||
(\\g,n,p =>
|
||||
embedConj ++ jeanboit.s ! dire.mp) ;
|
||||
|
||||
complQuestVerb : Verb -> QuestionSent -> Complemnt = \demander,sijeanboit ->
|
||||
mkCompl
|
||||
demander
|
||||
(\\g,n,p => sijeanboit.s ! IndirQ) ;
|
||||
|
||||
complDitransQuestVerb : TransVerb -> NounPhrase -> QuestionSent -> Complemnt =
|
||||
\dire,lui,jeanboit ->
|
||||
complTransVerbGen
|
||||
dire lui
|
||||
(\\g,n,p => jeanboit.s ! IndirQ) ;
|
||||
|
||||
complAdjVerb : Verb -> AdjPhrase -> Complemnt = \sent,bon ->
|
||||
mkCompl sent (\\g,n,_ => bon.s ! AF g n) ;
|
||||
|
||||
@@ -869,14 +900,12 @@ oper
|
||||
-- Notice that the slash category has the same relation to sentences as
|
||||
-- transitive verbs have to verbs: it's like a *sentence taking a complement*.
|
||||
|
||||
SentenceSlashNounPhrase = Sentence ** Complement ;
|
||||
ClauseSlashNounPhrase = Clause ** Complement ;
|
||||
|
||||
{- ----
|
||||
slashTransVerb : Bool -> NounPhrase -> TransVerb -> SentenceSlashNounPhrase =
|
||||
\b,jean,aimer ->
|
||||
predVerbPhrase jean (predVerbGroup b (predVerb (verbOfTransVerb aimer))) **
|
||||
slashTransVerb : NounPhrase -> TransVerb -> ClauseSlashNounPhrase =
|
||||
\jean,aimer ->
|
||||
predVerbGroupClause jean (predClauseGroup aimer (complVerb aimer)) **
|
||||
complementOfTransVerb aimer ;
|
||||
-}
|
||||
|
||||
--2 Relative pronouns and relative clauses
|
||||
--
|
||||
@@ -890,7 +919,9 @@ oper
|
||||
oper
|
||||
|
||||
RelPron : Type = {s : RelFormA => Str ; g : RelGen} ;
|
||||
RelClause : Type = {s : Mode => Gender => Number => Str} ;
|
||||
|
||||
RelClause : Type = {s : Bool => ClForm => Gender => Number => Person => Str} ;
|
||||
RelSentence : Type = {s : Mode => Gender => Number => Person => Str} ;
|
||||
|
||||
mkGenRel : RelGen -> Gender -> Gender = \rg,g -> case rg of {
|
||||
RG gen => gen ;
|
||||
@@ -915,21 +946,22 @@ oper
|
||||
|
||||
-- Relative clauses can be formed from both verb phrases ("qui dort") and
|
||||
-- slash expressions ("que je vois", "dont je parle").
|
||||
{- -----
|
||||
relVerbPhrase : RelPron -> VerbPhrase -> RelClause = \qui,dort ->
|
||||
{s = \\m,g,n =>
|
||||
allRelForms qui g n nominative ++ dort.s ! g ! VPF Simul (VFin (VPres m) n P3)
|
||||
|
||||
relVerbPhrase : RelPron -> VerbGroup -> RelClause = \qui,dort ->
|
||||
{s = \\b,cl,g,n,p =>
|
||||
allRelForms qui g n nominative ++ dort.s ! b ! g ! cl2vp cl n p
|
||||
} ;
|
||||
-}
|
||||
relSlash : RelPron -> SentenceSlashNounPhrase -> RelClause = \dont,jeparle ->
|
||||
{s = \\m,g,n => jeparle.s2 ++ allRelForms dont g n jeparle.c ++ jeparle.s ! m
|
||||
|
||||
relSlash : RelPron -> ClauseSlashNounPhrase -> RelClause = \dont,jeparle ->
|
||||
{s = \\b,cl,g,n,p =>
|
||||
jeparle.s2 ++ allRelForms dont g n jeparle.c ++ jeparle.s ! b ! cl
|
||||
} ;
|
||||
|
||||
-- A 'degenerate' relative clause is the one often used in mathematics, e.g.
|
||||
-- "nombre x tel que x soit pair".
|
||||
|
||||
relSuch : Sentence -> RelClause = \A ->
|
||||
{s = \\m,g,n => suchPron g n ++ embedConj ++ A.s ! m
|
||||
relSuch : Clause -> RelClause = \A ->
|
||||
{s = \\b,cl,g,n,p => suchPron g n ++ embedConj ++ A.s ! b ! cl
|
||||
} ;
|
||||
|
||||
suchPron : Gender -> Number -> Str ;
|
||||
@@ -942,8 +974,8 @@ oper
|
||||
-- ("je cherche un mec qui sache chanter") must have another structure
|
||||
-- (unless common noun phrases are given a mode parameter...).
|
||||
|
||||
modRelClause : CommNounPhrase -> RelClause -> CommNounPhrase = \mec,quidort ->
|
||||
{s = \\n => mec.s ! n ++ quidort.s ! Ind ! mec.g ! n ;
|
||||
modRelClause : CommNounPhrase -> RelSentence -> CommNounPhrase = \mec,quidort ->
|
||||
{s = \\n => mec.s ! n ++ quidort.s ! Ind ! mec.g ! n ! P3 ;
|
||||
g = mec.g
|
||||
} ;
|
||||
|
||||
@@ -990,7 +1022,7 @@ oper
|
||||
Utterance = SS ;
|
||||
|
||||
indicUtt : Sentence -> Utterance = \x -> ss (x.s ! Ind ++ ".") ;
|
||||
interrogUtt : Question -> Utterance = \x -> ss (x.s ! DirQ ++ "?") ;
|
||||
interrogUtt : QuestionSent -> Utterance = \x -> ss (x.s ! DirQ ++ "?") ;
|
||||
|
||||
--2 Questions
|
||||
--
|
||||
@@ -1001,7 +1033,8 @@ param
|
||||
QuestForm = DirQ | IndirQ ;
|
||||
|
||||
oper
|
||||
Question = SS1 QuestForm ;
|
||||
Question = {s : Bool => ClForm => QuestForm => Str} ;
|
||||
QuestionSent = {s : QuestForm => Str} ;
|
||||
|
||||
|
||||
--3 Yes-no questions
|
||||
@@ -1017,6 +1050,13 @@ oper
|
||||
-- The leading "est-ce que" is recognized as a variant, and requires
|
||||
-- direct word order.
|
||||
|
||||
questClause : Clause -> Question = \cl ->
|
||||
{s = \\b,c => table {
|
||||
DirQ => cl.s ! b ! c ;
|
||||
IndirQ => cl.s ! b ! c
|
||||
}
|
||||
} ;
|
||||
|
||||
----- questVerbPhrase : NounPhrase -> VerbPhrase -> Question ;
|
||||
|
||||
-- The existence question is treated separately.
|
||||
@@ -1030,9 +1070,10 @@ oper
|
||||
--
|
||||
-- N.B. inversion variants and "est-ce que" are treated as above.
|
||||
|
||||
----- intVerbPhrase : IntPron -> VerbPhrase -> Question ;
|
||||
intVerbPhrase : IntPron -> VerbGroup -> Question = \ip,vg ->
|
||||
questClause (predVerbGroupClause (ip ** {p = P3 ; c = Clit0}) vg) ;
|
||||
|
||||
intSlash : IntPron -> SentenceSlashNounPhrase -> Question ;
|
||||
intSlash : IntPron -> ClauseSlashNounPhrase -> Question ;
|
||||
|
||||
|
||||
--3 Interrogative adverbials
|
||||
@@ -1047,7 +1088,18 @@ oper
|
||||
|
||||
IntAdverb = SS ;
|
||||
|
||||
----- questAdverbial : IntAdverb -> NounPhrase -> VerbPhrase -> Question ;
|
||||
questAdverbial : IntAdverb -> Clause -> Question =
|
||||
\quand, jeanDort ->
|
||||
{s = \\b,cl =>
|
||||
let
|
||||
jeandort = jeanDort.s ! b ! cl
|
||||
in
|
||||
table {
|
||||
DirQ => quand.s ++ jeandort ; ---- est-ce que
|
||||
IndirQ => quand.s ++ jeandort
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
--2 Imperatives
|
||||
@@ -1175,6 +1227,7 @@ oper
|
||||
{s = \\c => co.s1++ xs.s1 ! pform2case c ++ co.s2 ++ xs.s2 ! pform2case c} **
|
||||
{n = conjNumber co.n xs.n ; g = xs.g ; p = xs.p ; c = Clit0} ;
|
||||
|
||||
|
||||
-- We have to define a calculus of numbers of genders. For numbers,
|
||||
-- it is like the conjunction with $Pl$ corresponding to $False$. For genders,
|
||||
-- $Masc$ corresponds to $False$.
|
||||
@@ -1204,6 +1257,34 @@ oper
|
||||
<_,P1> => P1 ;
|
||||
_ => P2
|
||||
} ;
|
||||
--3 Coordinating adverbs
|
||||
--
|
||||
-- We need a category of lists of adverbs. It is a discontinuous
|
||||
-- category, the parts corresponding to 'init' and 'last' segments
|
||||
-- (rather than 'head' and 'tail', because we have to keep track of the slot between
|
||||
-- the last two elements of the list). A list has at least two elements.
|
||||
|
||||
ListAdverb : Type = SD2 ;
|
||||
|
||||
twoAdverb : (_,_ : Adverb) -> ListAdverb = CO.twoSS ;
|
||||
|
||||
consAdverb : ListAdverb -> Adverb -> ListAdverb =
|
||||
CO.consSS CO.comma ;
|
||||
|
||||
-- To coordinate a list of adverbs by a simple conjunction, we place
|
||||
-- it between the last two elements; commas are put in the other slots,
|
||||
|
||||
conjunctAdverb : Conjunction -> ListAdverb -> Adverb = \c,xs ->
|
||||
ss (CO.conjunctX c xs) ;
|
||||
|
||||
-- To coordinate a list of adverbs by a distributed conjunction, we place
|
||||
-- the first part (e.g. "either") in front of the first element, the second
|
||||
-- part ("or") between the last two elements, and commas in the other slots.
|
||||
|
||||
conjunctDistrAdverb : ConjunctionDistr -> ListAdverb -> Adverb =
|
||||
\c,xs ->
|
||||
ss (CO.conjunctDistrX c xs) ;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1226,7 +1307,7 @@ oper
|
||||
{s = \\g,n => subjunctVariants si A (B.s ! g ! n)
|
||||
} ;
|
||||
|
||||
subjunctQuestion : Subjunction -> Sentence -> Question -> Question = \si,A,B ->
|
||||
subjunctQuestion : Subjunction -> Sentence -> QuestionSent -> QuestionSent = \si,A,B ->
|
||||
{s = \\q => subjunctVariants si A (B.s ! q)
|
||||
} ;
|
||||
|
||||
@@ -1241,11 +1322,9 @@ oper
|
||||
B ++ si.s ++ As
|
||||
} ;
|
||||
|
||||
{- -----
|
||||
subjunctVerbPhrase : VerbPhrase -> Subjunction -> Sentence -> VerbPhrase =
|
||||
subjunctVerbPhrase : VerbGroup -> Subjunction -> Sentence -> VerbGroup =
|
||||
\V, si, A ->
|
||||
adVerbPhrase V (ss (si.s ++ A.s ! si.m)) ;
|
||||
-}
|
||||
|
||||
--2 One-word utterances
|
||||
--
|
||||
@@ -1266,7 +1345,7 @@ oper
|
||||
defaultNounPhrase : NounPhrase -> SS = \jean ->
|
||||
ss (jean.s ! stressed nominative) ;
|
||||
|
||||
defaultQuestion : Question -> SS = \quiesttu ->
|
||||
defaultQuestion : QuestionSent -> SS = \quiesttu ->
|
||||
ss (quiesttu.s ! DirQ) ;
|
||||
|
||||
defaultSentence : Sentence -> SS = \x -> ss (x.s ! Ind) ;
|
||||
|
||||
@@ -36,8 +36,8 @@ incomplete concrete VerbphraseRomance of Verbphrase = CategoriesRomance **
|
||||
ComplV2A v x y = predClauseGroup v (complDitransAdjVerb v x y) ;
|
||||
ComplSubjV2V v x y = predClauseGroup v (complDitransVerbVerb False v x y) ;
|
||||
ComplObjV2V v x y = predClauseGroup v (complDitransVerbVerb True v x y) ;
|
||||
---- ComplV2S v x y = predClauseGroup v (complDitransSentVerb v x y) ;
|
||||
---- ComplV2Q v x y = predClauseGroup v (complDitransQuestVerb v x y) ;
|
||||
ComplV2S v x y = predClauseGroup v (complDitransSentVerb v x y) ;
|
||||
ComplV2Q v x y = predClauseGroup v (complDitransQuestVerb v x y) ;
|
||||
|
||||
PredAP v = predClauseBeGroup (complAdjective v) ;
|
||||
PredSuperl a = predClauseBeGroup (complAdjective (superlAdjPhrase a)) ;
|
||||
@@ -46,20 +46,20 @@ incomplete concrete VerbphraseRomance of Verbphrase = CategoriesRomance **
|
||||
PredPP v = predClauseBeGroup (complAdverb v) ;
|
||||
|
||||
PredAV v x = predClauseBeGroup (complVerbAdj v x) ;
|
||||
---- PredObjA2V v x y = predClauseBeGroup (complVerbAdj2 True v x y) ;
|
||||
PredObjA2V v x y = predClauseBeGroup (complVerbAdj2 True v x y) ;
|
||||
|
||||
---- PredProgVP = progressiveVerbPhrase ;
|
||||
PredProgVP = progressiveVerbPhrase ;
|
||||
|
||||
-- Use VPs
|
||||
|
||||
PredVP = predVerbGroupClause ;
|
||||
|
||||
---- RelVP = relVerbPhrase ;
|
||||
---- IntVP = intVerbPhrase ;
|
||||
RelVP = relVerbPhrase ;
|
||||
IntVP = intVerbPhrase ;
|
||||
|
||||
PosVP tp = predVerbGroup True tp ;
|
||||
NegVP tp = predVerbGroup False tp ;
|
||||
|
||||
---- AdvVP = adVerbPhrase ;
|
||||
---- SubjVP = subjunctVerbPhrase ;
|
||||
}
|
||||
AdvVP = adVerbPhrase ;
|
||||
SubjVP = subjunctVerbPhrase ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user