(Por,Spa) fix negative imperative

- reflexive pronoun is before the verb in the negative, not after
- verb form is not the same as positive imperative, but the same as
  present subjunctive

thanks to @inariksit for catching this bug!

(Por) handle politeness better
formal -> 2nd person singular (tu)
informal sg -> 3rd person singular (você, conjugated correctly)
informal pl -> 3rd person plural (vocês, conjugated correctly)

unlike Spa, Por uses 2nd person as polite form; the PorRG thus would
have no direct access to vós (second person plural), which is rather
rare (in Brazilian Por, at least). colloquial speech in Brazil
actually mangles both, using tu with você conjugation, etc; but this
out of scope for the RGL.

(Por) fix imperative
- should use hyphen to bind the reflexive pronoun
This commit is contained in:
odanoburu
2019-02-05 12:04:07 -02:00
parent 28a9453750
commit 2679717852
2 changed files with 44 additions and 35 deletions

View File

@@ -55,22 +55,31 @@ instance DiffPor of DiffRomance - [chooseTA,partAgr,vpAgrSubj,vpAgrClits] = open
defaultPronArg ;
oper
mkImperative b p vp =
\\pol,g,n =>
let
pe = case b of {True => P3 ; _ => p} ;
agr = {g = g ; n = n ; p = pe} ;
refl = case vp.s.vtyp of {
VRefl => <reflPron n pe Acc,True> ;
_ => <[],False>
} ;
mkImperative isPol p vp =
\\pol,g,n => case pol of {
RPos => neg.p1 ++ imper ++ bindHyphenIf refl.isRefl ++ refl.pron
++ bindIf hasClit ++ clit ++ compl ;
RNeg _ => neg.p1 ++ refl.pron ++ clit ++ subj ++ compl
} where {
pe = case isPol of {True => P2 ; _ => P3} ;
refl = case vp.s.vtyp of {
VRefl => {pron = reflPron n pe Acc ; isRefl = True} ;
_ => {pron = [] ; isRefl = False}
} ;
clit = vp.clit1 ++ vp.clit2 ;
hasClit = vp.clit3.hasClit ;
imper = vp.s.s ! vImper n pe ;
subj = vp.s.s ! VFin (VPres Conjunct) n p ;
neg = vp.neg ! pol ;
agr = {g = g ; n = n ; p = pe} ;
compl = neg.p2 ++ vp.comp ! agr ++ vp.ext ! pol
} ;
clpr = <vp.clit1 ++ vp.clit2, [],vp.clit3.hasClit> ;
verb = vp.s.s ! vImper n pe ;
neg = vp.neg ! pol ;
compl = neg.p2 ++ clpr.p2 ++ vp.comp ! agr ++ vp.ext ! pol
in
neg.p1 ++ verb ++ bindIf refl.p2 ++ refl.p1 ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ;
bindHyphenIf : Bool -> Str ;
bindHyphenIf b = case b of {
True => BIND ++ "-" ++ BIND ;
_ => []
} ;
param
Copula = SerCop | EstarCop | FicarCop ;

View File

@@ -112,27 +112,27 @@ instance DiffSpa of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits,contractInf] = o
infForm _ _ _ _ = True ;
mkImperative b p vp =
\\pol,g,n =>
let
pe = case b of {True => P3 ; _ => p} ;
agr = {g = g ; n = n ; p = pe} ;
refl = case vp.s.vtyp of {
VRefl => <reflPron n pe Acc,True> ;
_ => <[],False>
} ;
clpr = <vp.clit1 ++ vp.clit2, [],vp.clit3.hasClit> ;
---- clpr = <[],[],False> ; ----e pronArg agr.n agr.p vp.clAcc vp.clDat ;
----e verb = case <aag.n, pol,pe> of {
----e <Sg,Neg,P2> => (vp.s ! VPInfinit Simul clpr.p3).inf ! aag ;
----e _ => (vp.s ! VPImperat).fin ! agr
----e } ;
verb = vp.s.s ! vImper n pe ;
neg = vp.neg ! pol ;
compl = neg.p2 ++ clpr.p2 ++ vp.comp ! agr ++ vp.ext ! pol
in
neg.p1 ++ verb ++ bindIf refl.p2 ++ refl.p1 ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ;
mkImperative isPol p vp =
\\pol,g,n => case pol of {
RPos => neg.p1 ++ imper ++ bindIf refl.isRefl ++ refl.pron
++ bindIf hasClit ++ clit ++ compl ;
RNeg _ => neg.p1 ++ refl.pron ++ clit ++ subj ++ compl
} where {
pe = case isPol of {True => P3 ; _ => p} ;
refl = case vp.s.vtyp of {
VRefl => {pron = reflPron n pe Acc ; isRefl = True} ;
_ => {pron = [] ; isRefl = False}
} ;
clit = vp.clit1 ++ vp.clit2 ;
hasClit = vp.clit3.hasClit ;
imper = vp.s.s ! vImper n pe ;
subj = vp.s.s ! VFin (VPres Conjunct) n pe ;
neg = vp.neg ! pol ;
agr = {g = g ; n = n ; p = pe} ;
compl = neg.p2 ++ vp.comp ! agr ++ vp.ext ! pol
} ;
CopulaType = Bool ;
selectCopula = \isEstar -> case isEstar of {True => estar_V ; False => copula} ;