From 5014c38e6ddfaeeef8069430bc9fa214c062159c Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 28 May 2012 07:38:25 +0000 Subject: [PATCH] Romance negation: word order dependence --- lib/src/catalan/DiffCat.gf | 2 ++ lib/src/french/DiffFre.gf | 2 ++ lib/src/italian/DiffIta.gf | 2 ++ lib/src/romance/DiffRomance.gf | 4 ++++ lib/src/romance/ResRomance.gf | 9 +++++---- lib/src/spanish/DiffSpa.gf | 3 +++ 6 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/src/catalan/DiffCat.gf b/lib/src/catalan/DiffCat.gf index 5106a42d5..3f9abfcbc 100644 --- a/lib/src/catalan/DiffCat.gf +++ b/lib/src/catalan/DiffCat.gf @@ -180,4 +180,6 @@ oper subjPron = \_ -> [] ; + polNegDirSubj = RPos ; + } diff --git a/lib/src/french/DiffFre.gf b/lib/src/french/DiffFre.gf index 4629f1d89..d20f693bb 100644 --- a/lib/src/french/DiffFre.gf +++ b/lib/src/french/DiffFre.gf @@ -236,4 +236,6 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in { {n = Pl ; p = P3 ; g = Fem} => "elles" } ; + polNegDirSubj = RNeg True ; + } diff --git a/lib/src/italian/DiffIta.gf b/lib/src/italian/DiffIta.gf index 448b6bb21..6981b613b 100644 --- a/lib/src/italian/DiffIta.gf +++ b/lib/src/italian/DiffIta.gf @@ -205,4 +205,6 @@ instance DiffIta of DiffRomance = open CommonRomance, PhonoIta, BeschIta, Prelud subjPron = \_ -> [] ; + polNegDirSubj = RPos ; + } diff --git a/lib/src/romance/DiffRomance.gf b/lib/src/romance/DiffRomance.gf index a93aed7d7..c98490f5a 100644 --- a/lib/src/romance/DiffRomance.gf +++ b/lib/src/romance/DiffRomance.gf @@ -121,6 +121,10 @@ oper subjPron : Agr -> Str ; +-- Whether subject negative in direct position causes negation to the sentence: "personne ne dort" vs. "nessuno dorme". + + polNegDirSubj : RPolarity ; + --2 Workarounds, to be eliminated -- This should be provided by $pronArg$ above, but causes trouble in compilation. diff --git a/lib/src/romance/ResRomance.gf b/lib/src/romance/ResRomance.gf index b92ecc4e4..72d526bce 100644 --- a/lib/src/romance/ResRomance.gf +++ b/lib/src/romance/ResRomance.gf @@ -209,12 +209,13 @@ oper \isNeg, subj, hasClit, isPol, agr, vp -> { s = \\d,te,a,b,m => let - isAnyNeg = orB isNeg vp.isNeg ; - pol = case of { - => RNeg True ; + + pol : RPolarity = case of { + <_,True,RPos,_> => RNeg True ; + => RNeg True ; + => polNegDirSubj ; _ => b } ; - neg = vp.neg ! pol ; gen = agr.g ; diff --git a/lib/src/spanish/DiffSpa.gf b/lib/src/spanish/DiffSpa.gf index 810bb5269..2c64f94e7 100644 --- a/lib/src/spanish/DiffSpa.gf +++ b/lib/src/spanish/DiffSpa.gf @@ -181,4 +181,7 @@ instance DiffSpa of DiffRomance = open CommonRomance, PhonoSpa, BeschSpa, Prelud verbBeschH : Verbum -> Verb = \v -> verbBesch v ** {vtyp = VHabere} ; subjPron = \_ -> [] ; + + polNegDirSubj = RPos ; + }