1
0
forked from GitHub/gf-core

Romance inverted questions

This commit is contained in:
aarne
2007-02-24 11:35:46 +00:00
parent 5c7bd4c5c7
commit a11bb7a23c
10 changed files with 46 additions and 29 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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 =

View File

@@ -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} ;

View File

@@ -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").

View File

@@ -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
} ; } ;

View File

@@ -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
} ; } ;

View File

@@ -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

View File

@@ -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 ;

View File

@@ -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 =