forked from GitHub/gf-core
Romance inverted questions
This commit is contained in:
@@ -381,7 +381,9 @@ Finnish
|
|||||||
|
|
||||||
French
|
French
|
||||||
- multiple clitics (with V3) not always right
|
- multiple clitics (with V3) not always right
|
||||||
- no pronominal questions with inverted word order
|
- third person pronominal questions with inverted word order
|
||||||
|
have wrong form and position w.r.t. "pas"
|
||||||
|
(e.g. "comment ne fera-t-il pas " becomes "comment ne fera pas il")
|
||||||
|
|
||||||
|
|
||||||
German
|
German
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ concrete IdiomFre of Idiom = CatFre **
|
|||||||
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 ! t ! a ! p ! Indic
|
(mkClause "il" (agrP3 Masc Sg) (insertClit2 "y" (predV avoir_V))).s
|
||||||
|
! DDir ! t ! a ! p ! Indic ---- DInv
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
CleftNP np rs = mkClause elisCe (agrP3 Masc Sg)
|
CleftNP np rs = mkClause elisCe (agrP3 Masc Sg)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ concrete IdiomIta of Idiom = CatIta **
|
|||||||
ip.s ! Nom ++
|
ip.s ! Nom ++
|
||||||
(mkClause [] (agrP3 ip.a.g ip.a.n)
|
(mkClause [] (agrP3 ip.a.g ip.a.n)
|
||||||
(insertClit2 (elision "ci" "c'" "ci")
|
(insertClit2 (elision "ci" "c'" "ci")
|
||||||
(predV copula))).s ! t ! a ! p ! Indic
|
(predV copula))).s ! DDir ! t ! a ! p ! Indic
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ProgrVP vp =
|
ProgrVP vp =
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ incomplete concrete CatRomance of Cat =
|
|||||||
|
|
||||||
-- Sentence
|
-- Sentence
|
||||||
|
|
||||||
Cl = {s : RTense => Anteriority => Polarity => Mood => Str} ;
|
Cl = {s : Direct => RTense => Anteriority => Polarity => Mood => Str} ;
|
||||||
Slash = {
|
Slash = {
|
||||||
s : AAgr => RTense => Anteriority => Polarity => Mood => Str ;
|
s : Direct => AAgr => RTense => Anteriority => Polarity => Mood => Str ;
|
||||||
c2 : Compl
|
c2 : Compl
|
||||||
} ;
|
} ;
|
||||||
Imp = {s : Polarity => ImpForm => Gender => Str} ;
|
Imp = {s : Polarity => ImpForm => Gender => Str} ;
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ param
|
|||||||
|
|
||||||
Mood = Indic | Conjunct ;
|
Mood = Indic | Conjunct ;
|
||||||
|
|
||||||
|
Direct = DDir | DInv ;
|
||||||
|
|
||||||
-- Adjectives are inflected in gender and number, and there is also an
|
-- Adjectives are inflected in gender and number, and there is also an
|
||||||
-- adverbial form (e.g. "infiniment"), which has different paradigms and
|
-- adverbial form (e.g. "infiniment"), which has different paradigms and
|
||||||
-- can even be irregular ("bien").
|
-- can even be irregular ("bien").
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
incomplete concrete QuestionRomance of Question =
|
incomplete concrete QuestionRomance of Question =
|
||||||
CatRomance ** open CommonRomance, ResRomance in {
|
CatRomance ** open CommonRomance, ResRomance, Prelude in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@ incomplete concrete QuestionRomance of Question =
|
|||||||
|
|
||||||
QuestCl cl = {
|
QuestCl cl = {
|
||||||
s = \\t,a,p =>
|
s = \\t,a,p =>
|
||||||
let cls = cl.s ! t ! a ! p
|
let cls = cl.s ! DDir ! t ! a ! p ---- DInv?
|
||||||
in table {
|
in table {
|
||||||
QDir => cls ! Indic ;
|
QDir => cls ! Indic ;
|
||||||
QIndir => subjIf ++ cls ! Indic
|
QIndir => subjIf ++ cls ! Indic
|
||||||
@@ -19,24 +19,25 @@ incomplete concrete QuestionRomance of Question =
|
|||||||
let
|
let
|
||||||
cl = mkClause (qp.s ! Nom) (agrP3 qp.a.g qp.a.n) vp
|
cl = mkClause (qp.s ! Nom) (agrP3 qp.a.g qp.a.n) vp
|
||||||
in
|
in
|
||||||
cl.s ! t ! a ! b ! Indic
|
cl.s ! DDir ! t ! a ! b ! Indic
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
QuestSlash ip slash = {
|
QuestSlash ip slash = {
|
||||||
s = \\t,a,p =>
|
s = \\t,a,p =>
|
||||||
let
|
let
|
||||||
cls = slash.s ! ip.a ! t ! a ! p ! Indic ;
|
cls : Direct -> Str =
|
||||||
|
\d -> slash.s ! d ! ip.a ! t ! a ! p ! Indic ;
|
||||||
who = slash.c2.s ++ ip.s ! slash.c2.c
|
who = slash.c2.s ++ ip.s ! slash.c2.c
|
||||||
in table {
|
in table {
|
||||||
QDir => who ++ cls ;
|
QDir => who ++ cls DInv ;
|
||||||
QIndir => partQIndir ++ who ++ cls
|
QIndir => partQIndir ++ who ++ cls DDir
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
QuestIAdv iadv cl = {
|
QuestIAdv iadv cl = {
|
||||||
s = \\t,a,p,_ =>
|
s = \\t,a,p,_ =>
|
||||||
let
|
let
|
||||||
cls = cl.s ! t ! a ! p ! Indic ;
|
cls = cl.s ! DInv ! t ! a ! p ! Indic ;
|
||||||
why = iadv.s
|
why = iadv.s
|
||||||
in why ++ cls
|
in why ++ cls
|
||||||
} ;
|
} ;
|
||||||
@@ -45,7 +46,8 @@ 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 ! t ! a ! p ! Indic ;
|
cls = (mkClause (np.s ! Aton Nom) np.a vp).s !
|
||||||
|
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
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ incomplete concrete RelativeRomance of Relative =
|
|||||||
lin
|
lin
|
||||||
|
|
||||||
RelCl cl = {
|
RelCl cl = {
|
||||||
s = \\ag,t,a,p,m => pronSuch ! ag ++ conjThat ++ cl.s ! t ! a ! p ! m ;
|
s = \\ag,t,a,p,m => pronSuch ! ag ++ conjThat ++
|
||||||
|
cl.s ! DDir ! t ! a ! p ! m ;
|
||||||
c = Nom
|
c = Nom
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -16,12 +17,12 @@ incomplete concrete RelativeRomance of Relative =
|
|||||||
(mkClause
|
(mkClause
|
||||||
(rp.s ! False ! {g = ag.g ; n = ag.n} ! Nom)
|
(rp.s ! False ! {g = ag.g ; n = ag.n} ! Nom)
|
||||||
{g = rp.a.g ; n = rp.a.n ; p = P3}
|
{g = rp.a.g ; n = rp.a.n ; p = P3}
|
||||||
vp).s ; 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)
|
||||||
ag
|
ag
|
||||||
vp).s ; c = Nom
|
vp).s ! DDir ; c = Nom
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -31,7 +32,7 @@ incomplete concrete RelativeRomance of Relative =
|
|||||||
in
|
in
|
||||||
slash.c2.s ++
|
slash.c2.s ++
|
||||||
rp.s ! False ! aag ! slash.c2.c ++
|
rp.s ! False ! aag ! slash.c2.c ++
|
||||||
slash.s ! aag ! t ! a ! p ! m ; --- ragr
|
slash.s ! DDir ! aag ! t ! a ! p ! m ; --- ragr
|
||||||
c = Acc
|
c = Acc
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -195,9 +195,9 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkClause : Str -> Agr -> VP ->
|
mkClause : Str -> Agr -> VP ->
|
||||||
{s : RTense => Anteriority => Polarity => Mood => Str} =
|
{s : Direct => RTense => Anteriority => Polarity => Mood => Str} =
|
||||||
\subj,agr,vp -> {
|
\subj,agr,vp -> {
|
||||||
s = \\t,a,b,m =>
|
s = \\d,t,a,b,m =>
|
||||||
let
|
let
|
||||||
tm = case t of {
|
tm = case t of {
|
||||||
RPast => VImperf m ; --# notpresent
|
RPast => VImperf m ; --# notpresent
|
||||||
@@ -213,8 +213,17 @@ oper
|
|||||||
clpr = pronArg agr.n agr.p vp.clAcc vp.clDat ;
|
clpr = pronArg agr.n agr.p vp.clAcc vp.clDat ;
|
||||||
compl = clpr.p2 ++ vp.comp ! agr ++ vp.ext ! b
|
compl = clpr.p2 ++ vp.comp ! agr ++ vp.ext ! b
|
||||||
in
|
in
|
||||||
subj ++ neg.p1 ++ clpr.p1 ++ vp.clit2 ++ verb ++ neg.p2 ++ inf ++ compl
|
case d of {
|
||||||
|
DDir =>
|
||||||
|
subj ++ neg.p1 ++ clpr.p1 ++ vp.clit2 ++ verb ++ neg.p2 ++ inf ;
|
||||||
|
DInv =>
|
||||||
|
neg.p1 ++ clpr.p1 ++ vp.clit2 ++ verb ++ neg.p2 ++ inf ++ subj
|
||||||
|
}
|
||||||
|
++ compl
|
||||||
} ;
|
} ;
|
||||||
|
--- in French, pronouns should be before neg.v2 in inverted clauses
|
||||||
|
--- and have a "-" with possibly a special verb form with "t":
|
||||||
|
--- "comment ne fera-t-il pas" vs. "comment ne fera pas Pierre"
|
||||||
|
|
||||||
infVP : VP -> Agr -> Str = \vp,agr ->
|
infVP : VP -> Agr -> Str = \vp,agr ->
|
||||||
let
|
let
|
||||||
|
|||||||
@@ -15,31 +15,31 @@ incomplete concrete SentenceRomance of Sentence =
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
SlashV2 np v2 =
|
SlashV2 np v2 =
|
||||||
{s = \\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.a
|
||||||
(insertAgr ag (predV v2))).s ;
|
(insertAgr ag (predV v2))).s ! d ;
|
||||||
_ => (mkClause (np.s ! Aton Nom) np.a (predV v2)).s
|
_ => (mkClause (np.s ! Aton Nom) np.a (predV v2)).s ! d
|
||||||
} ;
|
} ;
|
||||||
c2 = v2.c2
|
c2 = v2.c2
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
SlashVVV2 np vv v2 =
|
SlashVVV2 np vv v2 =
|
||||||
{s = \\_ =>
|
{s = \\d,_ =>
|
||||||
(mkClause
|
(mkClause
|
||||||
(np.s ! Aton Nom) np.a
|
(np.s ! Aton Nom) np.a
|
||||||
(insertComplement
|
(insertComplement
|
||||||
(\\a => prepCase vv.c2.c ++ v2.s ! VInfin False) (predV vv))).s ;
|
(\\a => prepCase vv.c2.c ++ v2.s ! VInfin False) (predV vv))).s ! d;
|
||||||
c2 = v2.c2
|
c2 = v2.c2
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdvSlash slash adv = {
|
AdvSlash slash adv = {
|
||||||
s = \\ag,t,a,b,m => slash.s ! ag ! t ! a ! b ! m ++ adv.s ;
|
s = \\d,ag,t,a,b,m => slash.s ! d! ag ! t ! a ! b ! m ++ adv.s ;
|
||||||
c2 = slash.c2
|
c2 = slash.c2
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
SlashPrep cl prep = {
|
SlashPrep cl prep = {
|
||||||
s = \\_ => cl.s ;
|
s = \\d,_ => cl.s ! d ;
|
||||||
c2 = {s = prep.s ; c = prep.c ; isDir = False}
|
c2 = {s = prep.s ; c = prep.c ; isDir = False}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ incomplete concrete SentenceRomance of Sentence =
|
|||||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||||
EmbedVP vp = {s = infVP vp (agrP3 Masc Sg)} ; --- agr ---- compl
|
EmbedVP vp = {s = infVP vp (agrP3 Masc Sg)} ; --- agr ---- compl
|
||||||
|
|
||||||
UseCl t a p cl = {s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! o} ;
|
UseCl t a p cl = {s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! DDir ! t.t ! a.a ! p.p ! o} ;
|
||||||
UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ;
|
UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ;
|
||||||
UseRCl t a p cl = {
|
UseRCl t a p cl = {
|
||||||
s = \\r,ag => t.s ++ a.s ++ p.s ++ cl.s ! ag ! t.t ! a.a ! p.p ! r ;
|
s = \\r,ag => t.s ++ a.s ++ p.s ++ cl.s ! ag ! t.t ! a.a ! p.p ! r ;
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ concrete IdiomSpa of Idiom = CatSpa **
|
|||||||
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 ! t ! a ! p ! Indic
|
(mkClause [] (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