fixed details of Romance clitics for reflexives, imperatives, infinitives. A change in the type of VP.clit3 was needed.

This commit is contained in:
aarne
2013-02-20 19:34:20 +00:00
parent 07eaf86ab4
commit 8eaf3c319e
10 changed files with 62 additions and 37 deletions

View File

@@ -230,22 +230,6 @@ oper
VPAgrSubj -- elle est partie, elle s'est vue
| VPAgrClit Gender Number ; -- elle a dormi; elle les a vues
oper
VPC : Type = {
s : VPForm => {
fin : Agr => Str ; -- ai
inf : AAgr => Str -- dit
} ;
agr : VPAgr ; -- dit/dite dep. on verb, subj, and clitic
neg : RPolarity => (Str * Str) ; -- ne-pas
clit1 : Str ; -- le/se
clit2 : Str ; -- lui
clit3 : Str ; -- y en
isNeg : Bool ; -- includes a negative element, such as "rien"
comp : Agr => Str ; -- content(e) ; à ma mère ; hier
ext : RPolarity => Str ; -- que je dors / que je dorme
} ;
-- Polarity: three values (Fre positive,ne-pas,ne), presence of polarity element line "aucun"
param RPolarity = RPos | RNeg Bool ; -- RNeg True = "ne", RNeg False = "ne - pas"

View File

@@ -110,12 +110,20 @@ oper
neg : RPolarity => (Str * Str) ; -- ne-pas
clit1 : Str ; -- le/se
clit2 : Str ; -- lui
clit3 : Str ; -- y en
clit3 : Clit3 ; -- y en
isNeg : Bool ; -- includes a negative element, such as "rien"
comp : Agr => Str ; -- content(e) ; à ma mère ; hier
ext : RPolarity => Str ; -- que je dors / que je dorme
} ;
Clit3 : Type = {s : Str ; imp : Str ; hasClit : Bool} ; --- imp encodes special imperative clitic, hasClit whether there is a clitic
addClit3 : Bool -> Str -> Str -> Clit3 -> Clit3 = \hasClit,s,imp,clit -> {
s = clit.s ++ s ; imp = clit.imp ++ imp ; hasClit = hasClit ---- in Fre, imp is "moi" for "me"
} ;
imperClit : Agr -> Str -> Str -> Str = \a,c1,c2 -> c1 ++ c2 ;
-- The pronoun to be repeated in $VPS$ coordination, and also in Fre inverted questions.
-- Empty in other languages than Fre (as a kind of prodrop).

View File

@@ -85,7 +85,7 @@ oper
neg = negation ;
clit1 = [] ;
clit2 = [] ;
clit3 = [] ;
clit3 = {s,imp = [] ; hasClit = False} ;
isNeg = False ;
comp = \\a => [] ;
ext = \\p => []
@@ -102,7 +102,7 @@ oper
} ;
clit1 = vp.clit1 ++ obj.c1 ;
clit2 = vp.clit2 ++ obj.c2 ;
clit3 = vp.clit3 ;
clit3 = addClit3 np.hasClit [] (imperClit np.a obj.c1 obj.c2) vp.clit3 ;
isNeg = orB vp.isNeg np.isNeg ;
comp = \\a => c.s ++ obj.comp ++ vp.comp ! a ;
neg = vp.neg ;
@@ -178,7 +178,7 @@ oper
agr = vp.agr ;
clit1 = vp.clit1 ;
clit2 = vp.clit2 ;
clit3 = vp.clit3 ++ co ;
clit3 = addClit3 True co vp.clit3.imp vp.clit3 ;
isNeg = vp.isNeg ;
neg = vp.neg ;
comp = vp.comp ;
@@ -232,7 +232,7 @@ oper
VRefl => reflPron num per Acc ; ---- case ?
_ => []
} ;
clit = refl ++ vp.clit1 ++ vp.clit2 ++ vp.clit3 ; ---- refl first?
clit = refl ++ vp.clit1 ++ vp.clit2 ++ vp.clit3.s ; ---- refl first?
verb = vp.s.s ;
vaux = auxVerb vp.s.vtyp ;
@@ -271,7 +271,7 @@ oper
infVP : VP -> Agr -> Str = \vp,agr ->
let
iform = False ; ---- meaning: no clitics
iform = vp.clit3.hasClit ;
inf = vp.s.s ! VInfin iform ;
neg = vp.neg ! RPos ; --- Neg not in API
obj = neg.p2 ++ vp.comp ! agr ++ vp.ext ! RPos ; ---- pol
@@ -280,7 +280,7 @@ oper
_ => []
} ;
in
neg.p1 ++ clitInf iform (refl ++ vp.clit1 ++ vp.clit2 ++ vp.clit3) inf ++ obj ;
neg.p1 ++ clitInf iform (refl ++ vp.clit1 ++ vp.clit2 ++ vp.clit3.s) inf ++ obj ;
}