From c0b8ec02fd86db06eba8216afa24f98310cacef9 Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 30 Jan 2006 19:59:24 +0000 Subject: [PATCH] parametrized participle-clitic agreement --- lib/resource-1.0/french/DiffFre.gf | 5 ++- lib/resource-1.0/romance/CommonRomance.gf | 8 ++-- lib/resource-1.0/romance/DiffRomance.gf | 49 +++++++++++++++-------- lib/resource-1.0/romance/ResRomance.gf | 2 +- 4 files changed, 41 insertions(+), 23 deletions(-) diff --git a/lib/resource-1.0/french/DiffFre.gf b/lib/resource-1.0/french/DiffFre.gf index f08052117..57576c215 100644 --- a/lib/resource-1.0/french/DiffFre.gf +++ b/lib/resource-1.0/french/DiffFre.gf @@ -49,10 +49,13 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in { } ; partAgr : VType -> VPAgr = \vtyp -> case vtyp of { - VHabere => VPAgrNone ; + VHabere => vpAgrNone ; _ => VPAgrSubj } ; + vpAgrClit : Agr -> VPAgr = \a -> + VPAgrClit (aagr a.g a.n) ; --- subty + negation : Polarity => (Str * Str) = table { Pos => <[],[]> ; Neg => diff --git a/lib/resource-1.0/romance/CommonRomance.gf b/lib/resource-1.0/romance/CommonRomance.gf index c936640a9..b24cfafa6 100644 --- a/lib/resource-1.0/romance/CommonRomance.gf +++ b/lib/resource-1.0/romance/CommonRomance.gf @@ -40,16 +40,16 @@ resource CommonRomance = ParamRomance ** open Prelude in { appVPAgr : VPAgr -> AAgr -> AAgr = \vp,agr -> case vp of { - VPAgrNone => aagr Masc Sg ; VPAgrSubj => agr ; VPAgrClit a => a } ; + vpAgrNone : VPAgr = VPAgrClit (aagr Masc Sg) ; + param VPAgr = - VPAgrNone -- elle a dormi - | VPAgrSubj -- elle est partie, elle s'est vue - | VPAgrClit -- elle les a vues + VPAgrSubj -- elle est partie, elle s'est vue + | VPAgrClit -- elle a dormi; elle les a vues {g : Gender ; n : Number} ; } diff --git a/lib/resource-1.0/romance/DiffRomance.gf b/lib/resource-1.0/romance/DiffRomance.gf index 26dd145f6..d9489bb8f 100644 --- a/lib/resource-1.0/romance/DiffRomance.gf +++ b/lib/resource-1.0/romance/DiffRomance.gf @@ -1,19 +1,44 @@ interface DiffRomance = open CommonRomance, Prelude in { ---2 Constants whose definitions depend on language. +--2 Constants whose definitions fundamentally depend on language --- Prepositions that fuse with the article vary. +-- Prepositions that fuse with the article +-- (Fre, Spa "de", "a"; Ita also "in", "con"). -param + param Prep ; - Prep ; - VType ; +-- Which types of verbs exist, in terms of auxiliaries. +-- (Fre, Ita "avoir", "être", and refl; Spa only "haber" and refl). -oper + param VType ; + +-- Derivatively, if/when the participle agrees to the subject. +-- (Fre "elle est partie", Ita "lei è partita", Spa not) + + oper partAgr : VType -> VPAgr ; + +-- Whether participle agrees to foregoing clitic. +-- (Fre "je l'ai vue", Ita "io la ho visto") + + oper vpAgrClit : Agr -> VPAgr ; + +-- Whether a preposition is repeated in conjunction +-- (Fre "la somme de 3 et de 4", Ita "la somma di 3 e 4"). + + oper conjunctCase : NPForm -> NPForm ; + + +--2 Constants that must derivatively depend on language dative : Case ; genitive : Case ; + vRefl : VType ; + isVRefl : VType -> Bool ; + + +--2 Strings + prepCase : Case -> Str ; partitive : Gender -> Case -> Str ; @@ -21,17 +46,10 @@ oper artDef : Gender -> Number -> Case -> Str ; artIndef : Gender -> Number -> Case -> Str ; --- This regulates whether a preposition is repeated in conjunction --- (Fre "la somme de 3 et de 4", Ita "la somma di 3 e 4"). - - conjunctCase : NPForm -> NPForm ; - auxVerb : VType -> (VF => Str) ; negation : Polarity => (Str * Str) ; copula : Verb ; - partAgr : VType -> VPAgr ; - conjThan : Str ; conjThat : Str ; @@ -44,13 +62,10 @@ oper reflPron : Number => Person => Case => Str ; - vRefl : VType ; - isVRefl : VType -> Bool ; - auxPassive : Verb ; --- These are needed above. +--2 Contants needed in type signatures above param Case = Nom | Acc | CPrep Prep ; diff --git a/lib/resource-1.0/romance/ResRomance.gf b/lib/resource-1.0/romance/ResRomance.gf index c04c8fb71..4c145263e 100644 --- a/lib/resource-1.0/romance/ResRomance.gf +++ b/lib/resource-1.0/romance/ResRomance.gf @@ -86,7 +86,7 @@ oper cc : Str * Str * VPAgr = case of { | <_,_,Clit0> => <[], c.s ++ np.s ! Ton c.c, vp.agr> ; - <_,Acc,_> => ; --- subty + <_,Acc,_> => ; _ => } ; high = case np.c of { -- whether the new clitic comes closer to verb