mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 03:32:51 -06:00
fixed the inverted negated word order with pronouns in French
This commit is contained in:
@@ -382,8 +382,8 @@ Finnish
|
|||||||
French
|
French
|
||||||
- multiple clitics (with V3) not always right
|
- multiple clitics (with V3) not always right
|
||||||
- third person pronominal questions with inverted word order
|
- third person pronominal questions with inverted word order
|
||||||
have wrong form and position w.r.t. "pas"
|
have wrong forms if "t" is required e.g.
|
||||||
(e.g. "comment ne fera-t-il pas " becomes "comment ne fera pas il")
|
(e.g. "comment fera-t-il" becomes "comment fera il")
|
||||||
|
|
||||||
|
|
||||||
German
|
German
|
||||||
|
|||||||
@@ -4,25 +4,26 @@ concrete IdiomFre of Idiom = CatFre **
|
|||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
ImpersCl vp = mkClause "il" (agrP3 Masc Sg) vp ;
|
ImpersCl vp = mkClause "il" True (agrP3 Masc Sg) vp ;
|
||||||
GenericCl vp = mkClause "on" (agrP3 Masc Sg) vp ;
|
GenericCl vp = mkClause "on" True (agrP3 Masc Sg) vp ;
|
||||||
|
|
||||||
ExistNP np =
|
ExistNP np =
|
||||||
mkClause "il" (agrP3 Masc Sg)
|
mkClause "il" True (agrP3 Masc Sg)
|
||||||
(insertClit2 "y" (insertComplement (\\_ => np.s ! Ton Acc) (predV avoir_V))) ;
|
(insertClit2 "y" (insertComplement (\\_ => np.s ! Ton Acc) (predV avoir_V))) ;
|
||||||
|
|
||||||
ExistIP ip = {
|
ExistIP ip = {
|
||||||
s = \\t,a,p,_ =>
|
s = \\t,a,p,_ =>
|
||||||
ip.s ! Nom ++
|
ip.s ! Nom ++
|
||||||
(mkClause "il" (agrP3 Masc Sg) (insertClit2 "y" (predV avoir_V))).s
|
(mkClause "il" True (agrP3 Masc Sg)
|
||||||
|
(insertClit2 "y" (predV avoir_V))).s
|
||||||
! DDir ! t ! a ! p ! Indic ---- DInv
|
! DDir ! t ! a ! p ! Indic ---- DInv
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
CleftNP np rs = mkClause elisCe (agrP3 Masc Sg)
|
CleftNP np rs = mkClause elisCe True (agrP3 Masc Sg)
|
||||||
(insertComplement (\\_ => rs.s ! Indic ! np.a)
|
(insertComplement (\\_ => rs.s ! Indic ! np.a)
|
||||||
(insertComplement (\\_ => np.s ! Ton rs.c) (predV copula))) ;
|
(insertComplement (\\_ => np.s ! Ton rs.c) (predV copula))) ;
|
||||||
|
|
||||||
CleftAdv ad s = mkClause elisCe (agrP3 Masc Sg)
|
CleftAdv ad s = mkClause elisCe True (agrP3 Masc Sg)
|
||||||
(insertComplement (\\_ => conjThat ++ s.s ! Indic)
|
(insertComplement (\\_ => conjThat ++ s.s ! Indic)
|
||||||
(insertComplement (\\_ => ad.s) (predV copula))) ;
|
(insertComplement (\\_ => ad.s) (predV copula))) ;
|
||||||
|
|
||||||
|
|||||||
@@ -4,19 +4,19 @@ concrete IdiomIta of Idiom = CatIta **
|
|||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
ImpersCl vp = mkClause [] (agrP3 Masc Sg) vp ;
|
ImpersCl vp = mkClause [] True (agrP3 Masc Sg) vp ;
|
||||||
GenericCl vp = mkClause "si" (agrP3 Masc Sg) vp ; ---- non se ci fanno cose
|
GenericCl vp = mkClause "si" True (agrP3 Masc Sg) vp ; ---- non se ci fanno cose
|
||||||
|
|
||||||
CleftNP np rs = mkClause [] (agrP3 Masc Sg)
|
CleftNP np rs = mkClause [] True (agrP3 Masc Sg)
|
||||||
(insertComplement (\\_ => rs.s ! Indic ! np.a)
|
(insertComplement (\\_ => rs.s ! Indic ! np.a)
|
||||||
(insertComplement (\\_ => np.s ! Ton rs.c) (predV copula))) ;
|
(insertComplement (\\_ => np.s ! Ton rs.c) (predV copula))) ;
|
||||||
|
|
||||||
CleftAdv ad s = mkClause [] (agrP3 Masc Sg)
|
CleftAdv ad s = mkClause [] True (agrP3 Masc Sg)
|
||||||
(insertComplement (\\_ => conjThat ++ s.s ! Indic)
|
(insertComplement (\\_ => conjThat ++ s.s ! Indic)
|
||||||
(insertComplement (\\_ => ad.s) (predV copula))) ;
|
(insertComplement (\\_ => ad.s) (predV copula))) ;
|
||||||
|
|
||||||
ExistNP np =
|
ExistNP np =
|
||||||
mkClause [] (agrP3 np.a.g np.a.n)
|
mkClause [] True (agrP3 np.a.g np.a.n)
|
||||||
(insertClit2 (elision "ci" "c'" "ci")
|
(insertClit2 (elision "ci" "c'" "ci")
|
||||||
(insertComplement (\\_ => np.s ! Ton Nom)
|
(insertComplement (\\_ => np.s ! Ton Nom)
|
||||||
(predV copula))) ;
|
(predV copula))) ;
|
||||||
@@ -24,7 +24,7 @@ concrete IdiomIta of Idiom = CatIta **
|
|||||||
ExistIP ip = {
|
ExistIP ip = {
|
||||||
s = \\t,a,p,_ =>
|
s = \\t,a,p,_ =>
|
||||||
ip.s ! Nom ++
|
ip.s ! Nom ++
|
||||||
(mkClause [] (agrP3 ip.a.g ip.a.n)
|
(mkClause [] True (agrP3 ip.a.g ip.a.n)
|
||||||
(insertClit2 (elision "ci" "c'" "ci")
|
(insertClit2 (elision "ci" "c'" "ci")
|
||||||
(predV copula))).s ! DDir ! t ! a ! p ! Indic
|
(predV copula))).s ! DDir ! t ! a ! p ! Indic
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ incomplete concrete QuestionRomance of Question =
|
|||||||
QuestVP qp vp = {
|
QuestVP qp vp = {
|
||||||
s = \\t,a,b,_ =>
|
s = \\t,a,b,_ =>
|
||||||
let
|
let
|
||||||
cl = mkClause (qp.s ! Nom) (agrP3 qp.a.g qp.a.n) vp
|
cl = mkClause (qp.s ! Nom) False (agrP3 qp.a.g qp.a.n) vp
|
||||||
in
|
in
|
||||||
cl.s ! DDir ! t ! a ! b ! Indic
|
cl.s ! DDir ! t ! a ! b ! Indic
|
||||||
} ;
|
} ;
|
||||||
@@ -46,7 +46,7 @@ incomplete concrete QuestionRomance of Question =
|
|||||||
s = \\t,a,p,_ =>
|
s = \\t,a,p,_ =>
|
||||||
let
|
let
|
||||||
vp = predV copula ;
|
vp = predV copula ;
|
||||||
cls = (mkClause (np.s ! Aton Nom) np.a vp).s !
|
cls = (mkClause (np.s ! Aton Nom) np.hasClit np.a vp).s !
|
||||||
DInv ! t ! a ! p ! Indic ;
|
DInv ! t ! a ! p ! Indic ;
|
||||||
why = icomp.s ! {g = np.a.g ; n = np.a.n}
|
why = icomp.s ! {g = np.a.g ; n = np.a.n}
|
||||||
in why ++ cls
|
in why ++ cls
|
||||||
|
|||||||
@@ -15,12 +15,12 @@ incomplete concrete RelativeRomance of Relative =
|
|||||||
RelVP rp vp = case rp.hasAgr of {
|
RelVP rp vp = case rp.hasAgr of {
|
||||||
True => {s = \\ag =>
|
True => {s = \\ag =>
|
||||||
(mkClause
|
(mkClause
|
||||||
(rp.s ! False ! {g = ag.g ; n = ag.n} ! Nom)
|
(rp.s ! False ! {g = ag.g ; n = ag.n} ! Nom) False
|
||||||
{g = rp.a.g ; n = rp.a.n ; p = P3}
|
{g = rp.a.g ; n = rp.a.n ; p = P3}
|
||||||
vp).s ! DDir ; c = Nom} ;
|
vp).s ! DDir ; c = Nom} ;
|
||||||
False => {s = \\ag =>
|
False => {s = \\ag =>
|
||||||
(mkClause
|
(mkClause
|
||||||
(rp.s ! False ! {g = ag.g ; n = ag.n} ! Nom)
|
(rp.s ! False ! {g = ag.g ; n = ag.n} ! Nom) False
|
||||||
ag
|
ag
|
||||||
vp).s ! DDir ; c = Nom
|
vp).s ! DDir ; c = Nom
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -194,9 +194,9 @@ oper
|
|||||||
ext = \\p => vp.ext ! p ++ co ! p ;
|
ext = \\p => vp.ext ! p ++ co ! p ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkClause : Str -> Agr -> VP ->
|
mkClause : Str -> Bool -> Agr -> VP ->
|
||||||
{s : Direct => RTense => Anteriority => Polarity => Mood => Str} =
|
{s : Direct => RTense => Anteriority => Polarity => Mood => Str} =
|
||||||
\subj,agr,vp -> {
|
\subj,hasClit,agr,vp -> {
|
||||||
s = \\d,t,a,b,m =>
|
s = \\d,t,a,b,m =>
|
||||||
let
|
let
|
||||||
tm = case t of {
|
tm = case t of {
|
||||||
@@ -217,13 +217,14 @@ oper
|
|||||||
DDir =>
|
DDir =>
|
||||||
subj ++ neg.p1 ++ clpr.p1 ++ vp.clit2 ++ verb ++ neg.p2 ++ inf ;
|
subj ++ neg.p1 ++ clpr.p1 ++ vp.clit2 ++ verb ++ neg.p2 ++ inf ;
|
||||||
DInv =>
|
DInv =>
|
||||||
neg.p1 ++ clpr.p1 ++ vp.clit2 ++ verb ++ neg.p2 ++ inf ++ subj
|
neg.p1 ++ clpr.p1 ++ vp.clit2 ++ verb ++
|
||||||
|
preOrPost hasClit subj (neg.p2 ++ inf)
|
||||||
}
|
}
|
||||||
++ compl
|
++ compl
|
||||||
} ;
|
} ;
|
||||||
--- in French, pronouns should be before neg.v2 in inverted clauses
|
--- in French, pronouns should
|
||||||
--- and have a "-" with possibly a special verb form with "t":
|
--- have a "-" with possibly a special verb form with "t":
|
||||||
--- "comment ne fera-t-il pas" vs. "comment ne fera pas Pierre"
|
--- "comment fera-t-il" vs. "comment fera Pierre"
|
||||||
|
|
||||||
infVP : VP -> Agr -> Str = \vp,agr ->
|
infVP : VP -> Agr -> Str = \vp,agr ->
|
||||||
let
|
let
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ incomplete concrete SentenceRomance of Sentence =
|
|||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
PredVP np vp = mkClause (np.s ! Aton Nom) np.a vp ;
|
PredVP np vp = mkClause (np.s ! Aton Nom) np.hasClit np.a vp ;
|
||||||
|
|
||||||
PredSCVP sc vp = mkClause sc.s (agrP3 Masc Sg) vp ;
|
PredSCVP sc vp = mkClause sc.s False (agrP3 Masc Sg) vp ;
|
||||||
|
|
||||||
ImpVP vp = {
|
ImpVP vp = {
|
||||||
s = \\p,i,g => case i of {
|
s = \\p,i,g => case i of {
|
||||||
@@ -17,9 +17,9 @@ incomplete concrete SentenceRomance of Sentence =
|
|||||||
SlashV2 np v2 =
|
SlashV2 np v2 =
|
||||||
{s = \\d,ag =>case <v2.c2.c,v2.c2.isDir> of {
|
{s = \\d,ag =>case <v2.c2.c,v2.c2.isDir> of {
|
||||||
<Acc,True> =>
|
<Acc,True> =>
|
||||||
(mkClause (np.s ! Aton Nom) np.a
|
(mkClause (np.s ! Aton Nom) np.hasClit np.a
|
||||||
(insertAgr ag (predV v2))).s ! d ;
|
(insertAgr ag (predV v2))).s ! d ;
|
||||||
_ => (mkClause (np.s ! Aton Nom) np.a (predV v2)).s ! d
|
_ => (mkClause (np.s ! Aton Nom) np.hasClit np.a (predV v2)).s ! d
|
||||||
} ;
|
} ;
|
||||||
c2 = v2.c2
|
c2 = v2.c2
|
||||||
} ;
|
} ;
|
||||||
@@ -27,7 +27,7 @@ incomplete concrete SentenceRomance of Sentence =
|
|||||||
SlashVVV2 np vv v2 =
|
SlashVVV2 np vv v2 =
|
||||||
{s = \\d,_ =>
|
{s = \\d,_ =>
|
||||||
(mkClause
|
(mkClause
|
||||||
(np.s ! Aton Nom) np.a
|
(np.s ! Aton Nom) np.hasClit np.a
|
||||||
(insertComplement
|
(insertComplement
|
||||||
(\\a => prepCase vv.c2.c ++ v2.s ! VInfin False) (predV vv))).s ! d;
|
(\\a => prepCase vv.c2.c ++ v2.s ! VInfin False) (predV vv))).s ! d;
|
||||||
c2 = v2.c2
|
c2 = v2.c2
|
||||||
|
|||||||
@@ -4,25 +4,25 @@ concrete IdiomSpa of Idiom = CatSpa **
|
|||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
ImpersCl vp = mkClause [] (agrP3 Masc Sg) vp ;
|
ImpersCl vp = mkClause [] True (agrP3 Masc Sg) vp ;
|
||||||
GenericCl vp = mkClause "se" (agrP3 Masc Sg) vp ; ---- just Italian ?
|
GenericCl vp = mkClause "se" True (agrP3 Masc Sg) vp ; ---- just Italian ?
|
||||||
|
|
||||||
CleftNP np rs = mkClause [] (agrP3 Masc Sg)
|
CleftNP np rs = mkClause [] True (agrP3 Masc Sg)
|
||||||
(insertComplement (\\_ => rs.s ! Indic ! np.a)
|
(insertComplement (\\_ => rs.s ! Indic ! np.a)
|
||||||
(insertComplement (\\_ => np.s ! Ton rs.c) (predV copula))) ;
|
(insertComplement (\\_ => np.s ! Ton rs.c) (predV copula))) ;
|
||||||
|
|
||||||
CleftAdv ad s = mkClause [] (agrP3 Masc Sg)
|
CleftAdv ad s = mkClause [] True (agrP3 Masc Sg)
|
||||||
(insertComplement (\\_ => conjThat ++ s.s ! Indic)
|
(insertComplement (\\_ => conjThat ++ s.s ! Indic)
|
||||||
(insertComplement (\\_ => ad.s) (predV copula))) ;
|
(insertComplement (\\_ => ad.s) (predV copula))) ;
|
||||||
|
|
||||||
|
|
||||||
ExistNP np =
|
ExistNP np =
|
||||||
mkClause [] (agrP3 Masc Sg)
|
mkClause [] True (agrP3 Masc Sg)
|
||||||
(insertComplement (\\_ => np.s ! Ton Acc) (predV (verboV (hay_3 "haber")))) ;
|
(insertComplement (\\_ => np.s ! Ton Acc) (predV (verboV (hay_3 "haber")))) ;
|
||||||
ExistIP ip = {
|
ExistIP ip = {
|
||||||
s = \\t,a,p,_ =>
|
s = \\t,a,p,_ =>
|
||||||
ip.s ! Nom ++
|
ip.s ! Nom ++
|
||||||
(mkClause [] (agrP3 Masc Sg) (predV (verboV (hay_3 "haber")))).s ! DDir ! t ! a ! p ! Indic
|
(mkClause [] True (agrP3 Masc Sg) (predV (verboV (hay_3 "haber")))).s ! DDir ! t ! a ! p ! Indic
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ProgrVP vp =
|
ProgrVP vp =
|
||||||
|
|||||||
Reference in New Issue
Block a user