Romance clitics almost OK ; bug fix in tb -c

This commit is contained in:
aarne
2006-02-14 20:42:36 +00:00
parent a8d99d9571
commit 87ff64e0fc
19 changed files with 165 additions and 250 deletions

View File

@@ -4,6 +4,7 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in {
param
Prep = P_de | P_a ;
NPForm = Ton Case | Aton Case | Poss {g : Gender ; n : Number} ; --- AAgr
VType = VHabere | VEsse | VRefl ;
oper
@@ -56,6 +57,14 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in {
vpAgrClit : Agr -> VPAgr = \a ->
VPAgrClit (aagr a.g a.n) ; --- subty
placeNewClitic = \ci,c,pro,isc,old ->
let new = if_then_Str isc (pro.s ! Aton c) []
in
case pro.a.p of {
P1 | P2 => new ++ old ;
_ => old ++ new
} ;
negation : Polarity => (Str * Str) = table {
Pos => <[],[]> ;
Neg => <elisNe,"pas">

View File

@@ -161,8 +161,8 @@ oper
-- The use of "en" as atonic genitive is debatable.
mkPronoun : (_,_,_,_,_,_,_ : Str) ->
Gender -> Number -> Person -> ClitType -> Pronoun =
\il,le,lui,Lui,son,sa,ses,g,n,p,c ->
Gender -> Number -> Person -> Pronoun =
\il,le,lui,Lui,son,sa,ses,g,n,p ->
{s = table {
Ton x => prepCase x ++ Lui ;
Aton Nom => il ;
@@ -174,128 +174,13 @@ oper
Poss {n = Pl} => ses
} ;
a = {g = g ; n = n ; p = p} ;
c = c
hasClit = True
} ;
elisPoss : Str -> Str = \s ->
pre {s + "a" ; s + "on" / voyelle} ;
{-
pronJe = mkPronoun
(elision "j")
(elision "m")
(elision "m")
"moi"
"mon" (elisPoss "m") "mes"
PNoGen -- gender cannot be known from pronoun alone
Sg
P1
Clit1 ;
pronTu = mkPronoun
"tu"
(elision "t")
(elision "t")
"toi"
"ton" (elisPoss "t") "tes"
PNoGen
Sg
P2
Clit1 ;
pronIl = mkPronoun
"il"
(elision "l")
"lui"
"lui"
"son" (elisPoss "s") "ses"
(PGen Masc)
Sg
P3
Clit2 ;
---- A hack to get the dative form "y".
pronY = mkPronoun
"il"
(elision "l")
"y"
"lui"
"en" "en" "en"
(PGen Masc)
Sg
P3
Clit2 ;
pronElle = mkPronoun
"elle"
elisLa
"lui"
"elle"
"son" (elisPoss "s") "ses"
(PGen Fem)
Sg
P3
Clit2 ;
pronNous = mkPronoun
"nous"
"nous"
"nous"
"nous"
"notre" "notre" "nos"
PNoGen
Pl
P1
Clit3 ;
pronVous = mkPronoun
"vous"
"vous"
"vous"
"vous"
"votre" "votre" "vos"
PNoGen
Pl --- depends!
P2
Clit3 ;
pronIls = mkPronoun
"ils"
"les"
"leur"
"eux"
"leur" "leur" "leurs"
(PGen Masc)
Pl
P3
Clit1 ;
pronElles = mkPronoun
"elles"
"les"
"leur"
"elles"
"leur" "leur" "leurs"
(PGen Fem)
Pl
P3
Clit1 ;
personPron : Gender -> Number -> Person -> Pronoun = \g,n,p ->
case <n,p> of {
<Sg,P1> => pronJe ;
<Sg,P2> => pronTu ;
<Sg,P3> => case g of {
Masc => pronIl ;
Fem => pronElle
} ;
<Pl,P1> => pronNous ;
<Pl,P2> => pronVous ;
<Pl,P3> => case g of {
Masc => pronIls ;
Fem => pronElles
}
} ;
-}
--2 Determiners
--
-- Determiners, traditionally called indefinite pronouns, are inflected

View File

@@ -167,10 +167,6 @@ oper
compADeg : A -> A ;
-- From a given $A$, it is possible to get back to $A$.
adegA : A -> A ;
-- For prefixed adjectives, the following function is
-- provided.
@@ -259,7 +255,6 @@ oper
mkV2Q : V -> Preposition -> V2Q ;
mkAS : A -> AS ;
subjAS : A -> AS ;
mkA2S : A -> Preposition -> A2S ;
mkAV : A -> Preposition -> AV ;
mkA2V : A -> Preposition -> Preposition -> A2V ;
@@ -301,7 +296,7 @@ oper
mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p ; c3 = q} ;
mkPN x g = {s = x ; g = g} ** {lock_PN = <>} ;
mkNP x g n = {s = (pn2np (mkPN x g)).s; a = agrP3 g n ; c = Clit0} ** {lock_NP = <>} ;
mkNP x g n = {s = (pn2np (mkPN x g)).s; a = agrP3 g n ; hasClit = False} ** {lock_NP = <>} ;
mkA a b c d = compADeg {s = \\_ => (mkAdj a c b d).s ; isPre = False ; lock_A = <>} ;
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; lock_A = <>} ;

View File

@@ -36,7 +36,7 @@ lin
he_Pron =
mkPronoun
"il" (elision "l") "lui" "lui" "son" (elisPoss "s") "ses"
Masc Sg P3 Clit2 ;
Masc Sg P3 ;
here7from_Adv = ss "d'ici" ;
here7to_Adv = ss "ici" ;
here_Adv = ss "ici" ;
@@ -47,12 +47,12 @@ lin
i_Pron =
mkPronoun
(elision "j") (elision "m") (elision "m") "moi" "mon" (elisPoss "m") "mes"
Fem Sg P1 Clit1 ;
Fem Sg P1 ;
in_Prep = mkPreposition "dans" ;
it_Pron =
mkPronoun
"il" (elision "l") "lui" "lui" "son" (elisPoss "s") "ses"
Masc Sg P3 Clit2 ;
Masc Sg P3 ;
less_CAdv = ss "moins" ;
many_Det = {s = \\_,c => prepCase c ++ "plusieurs" ; n = Pl} ;
more_CAdv = ss "plus" ;
@@ -72,7 +72,7 @@ lin
she_Pron =
mkPronoun
"elle" elisLa "lui" "elle" "son" (elisPoss "s") "ses"
Fem Sg P3 Clit2 ;
Fem Sg P3 ;
so_AdA = ss "si" ;
somebody_NP = pn2np (mkPN ["quelqu'un"] Masc) ;
@@ -94,7 +94,7 @@ lin
these_NP = mkNP ["celles-ci"] Fem Pl ;
they_Pron = mkPronoun
"elles" "les" "leur" "eux" "leur" "leur" "leurs"
Fem Pl P3 Clit1 ;
Fem Pl P3 ;
this_Quant = {s =
table {
Sg => \\g,c => prepCase c ++ genForms "ce" "cette" ! g ; ---- cet ; ci
@@ -111,7 +111,7 @@ lin
want_VV = mkVV (vouloir_V2 ** {lock_V = <>}) ;
we_Pron =
mkPronoun "nous" "nous" "nous" "nous" "notre" "notre" "nos"
Fem Pl P1 Clit3 ;
Fem Pl P1 ;
whatSg_IP = {s = \\c => prepCase c ++ "quoi" ; a = aagr Fem Sg} ;
whatPl_IP = {s = \\c => prepCase c ++ "quoi" ; a = aagr Fem Pl} ;
when_IAdv = ss "quand" ;
@@ -127,11 +127,11 @@ lin
yes_Phr = ss "oui" ; --- si
youSg_Pron = mkPronoun
"tu" (elision "t") (elision "t") "toi" "ton" (elisPoss "t") "tes"
Fem Sg P2 Clit1 ;
Fem Sg P2 ;
youPl_Pron, youPol_Pron =
mkPronoun
"vous" "vous" "vous" "vous" "votre" "votre" "vos"
Fem Pl P2 Clit3 ;
Fem Pl P2 ;
}