forked from GitHub/gf-core
romance postverbal clitic details
This commit is contained in:
@@ -335,7 +335,6 @@ Danish
|
||||
|
||||
|
||||
English
|
||||
- -
|
||||
|
||||
|
||||
Finnish
|
||||
@@ -343,16 +342,14 @@ Finnish
|
||||
|
||||
|
||||
French
|
||||
- no inverted word order in questions
|
||||
- multiple clitics (with V3) not always right
|
||||
- no pronominal questions with inverted word order
|
||||
|
||||
|
||||
German
|
||||
- -
|
||||
|
||||
|
||||
Italian
|
||||
- no contraction of infinitives before clitics
|
||||
- multiple clitics (with V3) not always right
|
||||
|
||||
|
||||
@@ -367,10 +364,11 @@ Russian
|
||||
|
||||
Spanish
|
||||
- multiple clitics (with V3) not always right
|
||||
- missing contractions with imperatives and clitics
|
||||
|
||||
|
||||
Swedish
|
||||
- -
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ oper mkNV : Verbe -> VerbeN = \ve -> {s = vvf ve} ;
|
||||
oper conj : Str -> Verbe = conj1aimer ; --- temp. default
|
||||
|
||||
oper v_nancy100inf : Str -> VerbeN = \ve -> {s = table {
|
||||
VInfin => ve ;
|
||||
VInfin _ => ve ;
|
||||
_ => nonExist
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -66,23 +66,24 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in {
|
||||
|
||||
---- pronArg = pronArgGen Neg ; --- takes more space and time
|
||||
|
||||
pronArg : Number -> Person -> CAgr -> CAgr -> Str * Str = \n,p,acc,dat ->
|
||||
pronArg : Number -> Person -> CAgr -> CAgr -> Str * Str * Bool =
|
||||
\n,p,acc,dat ->
|
||||
let
|
||||
pacc = case acc of {
|
||||
CRefl => case p of {
|
||||
CRefl => <case p of {
|
||||
P3 => elision "s" ; --- use of reflPron incred. expensive
|
||||
_ => argPron Fem n p Acc
|
||||
} ;
|
||||
CPron a => argPron a.g a.n a.p Acc ;
|
||||
_ => []
|
||||
},True> ;
|
||||
CPron a => <argPron a.g a.n a.p Acc,True> ;
|
||||
_ => <[],False>
|
||||
} ;
|
||||
in
|
||||
case dat of {
|
||||
CPron a => let pdat = argPron a.g a.n a.p dative in case a.p of {
|
||||
P3 => <pacc ++ pdat,[]> ;
|
||||
_ => <pdat ++ pacc,[]>
|
||||
P3 => <pacc.p1 ++ pdat,[],True> ;
|
||||
_ => <pdat ++ pacc.p1,[],True>
|
||||
} ;
|
||||
_ => <pacc, []>
|
||||
_ => <pacc.p1, [],pacc.p2>
|
||||
} ;
|
||||
|
||||
|
||||
@@ -119,11 +120,12 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in {
|
||||
agr = aag ** {p = p} ;
|
||||
verb = (vp.s ! VPImperat).fin ! agr ;
|
||||
neg = vp.neg ! pol ;
|
||||
hascl = (pronArg agr.n agr.p vp.clAcc vp.clDat).p3 ;
|
||||
clpr = pronArgGen pol agr.n agr.p vp.clAcc vp.clDat ;
|
||||
compl = neg.p2 ++ clpr.p2 ++ vp.comp ! agr ++ vp.ext ! pol
|
||||
in
|
||||
case pol of {
|
||||
Pos => verb ++ clpr.p1 ++ compl ;
|
||||
Pos => verb ++ if_then_Str hascl "-" [] ++ clpr.p1 ++ compl ;
|
||||
Neg => neg.p1 ++ clpr.p1 ++ verb ++ compl
|
||||
}
|
||||
} ;
|
||||
@@ -137,7 +139,7 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in {
|
||||
conjThan = elisQue ;
|
||||
conjThat = elisQue ;
|
||||
|
||||
clitInf cli inf = cli ++ inf ;
|
||||
clitInf _ cli inf = cli ++ inf ;
|
||||
|
||||
relPron : Bool => AAgr => Case => Str = \\b,a,c =>
|
||||
let
|
||||
@@ -198,8 +200,8 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in {
|
||||
|
||||
auxPassive : Verb = copula ;
|
||||
|
||||
copula : Verb = {s = table VF ["être";"suis";"es";"est";"sommes";"êtes";"sont";"sois";"sois";"soit";"soyons";"soyez";"soient";"étais";"étais";"était";"étions";"étiez";"étaient";"fusse";"fusses";"fût";"fussions";"fussiez";"fussent";"fus";"fus";"fut";"fûmes";"fûtes";"furent";"serai";"seras";"sera";"serons";"serez";"seront";"serais";"serais";"serait";"serions";"seriez";"seraient";"sois";"soyons";"soyez";"été";"étés";"étée";"étées";"étant"]; vtyp=VHabere} ;
|
||||
copula : Verb = {s = table VF ["être";"être";"suis";"es";"est";"sommes";"êtes";"sont";"sois";"sois";"soit";"soyons";"soyez";"soient";"étais";"étais";"était";"étions";"étiez";"étaient";"fusse";"fusses";"fût";"fussions";"fussiez";"fussent";"fus";"fus";"fut";"fûmes";"fûtes";"furent";"serai";"seras";"sera";"serons";"serez";"seront";"serais";"serais";"serait";"serions";"seriez";"seraient";"sois";"soyons";"soyez";"été";"étés";"étée";"étées";"étant"]; vtyp=VHabere} ;
|
||||
|
||||
avoir_V : Verb = {s=table VF ["avoir";"ai";"as";"a";"avons";"avez";"ont";"aie";"aies";"ait";"ayons";"ayez";"aient";"avais";"avais";"avait";"avions";"aviez";"avaient";"eusse";"eusses";"eût";"eussions";"eussiez";"eussent";"eus";"eus";"eut";"eûmes";"eûtes";"eurent";"aurai";"auras";"aura";"aurons";"aurez";"auront";"aurais";"aurais";"aurait";"aurions";"auriez";"auraient";"aie";"ayons";"ayez";"eu";"eus";"eue";"eues";"ayant"];vtyp=VHabere};
|
||||
avoir_V : Verb = {s=table VF ["avoir";"avoir";"ai";"as";"a";"avons";"avez";"ont";"aie";"aies";"ait";"ayons";"ayez";"aient";"avais";"avais";"avait";"avions";"aviez";"avaient";"eusse";"eusses";"eût";"eussions";"eussiez";"eussent";"eus";"eus";"eut";"eûmes";"eûtes";"eurent";"aurai";"auras";"aura";"aurons";"aurez";"auront";"aurais";"aurais";"aurait";"aurions";"auriez";"auraient";"aie";"ayons";"ayez";"eu";"eus";"eue";"eues";"ayant"];vtyp=VHabere};
|
||||
|
||||
}
|
||||
|
||||
@@ -220,11 +220,11 @@ param
|
||||
| Imper NumPersI
|
||||
| Part TPart ;
|
||||
|
||||
-- This is a conversion to the type in $ParamRomance$.
|
||||
-- This is a conversion to the type in $CommonRomance$.
|
||||
|
||||
oper
|
||||
vvf : (VForm => Str) -> (VF => Str) = \aller -> table {
|
||||
VInfin => aller ! Inf ;
|
||||
VInfin _ => aller ! Inf ;
|
||||
VFin (VPres Indic) n p => aller ! Indi Presn n p ;
|
||||
VFin (VPres Subjunct) n p => aller ! Subjo SPres n p ;
|
||||
VFin (VImperf Indic) n p => aller ! Indi Imparf n p ; --# notpresent
|
||||
|
||||
@@ -6491,7 +6491,8 @@ oper venire_110 : Str -> Verbo = \venire ->
|
||||
} ;
|
||||
|
||||
verbBesch : {s : VForm => Str} -> {s : VF => Str} = \amare -> {s = table {
|
||||
VInfin => amare.s ! Inf ;
|
||||
VInfin False => amare.s ! Inf ;
|
||||
VInfin True => amare.s ! InfClit ;
|
||||
VFin (VPres Indic) n p => amare.s ! Indi Pres n p ;
|
||||
VFin (VPres Conjunct) n p => amare.s ! Cong Pres n p ;
|
||||
VFin (VImperf Indic) n p => amare.s ! Indi Imperf n p ; --# notpresent
|
||||
|
||||
@@ -94,26 +94,30 @@ instance DiffIta of DiffRomance = open CommonRomance, PhonoIta, BeschIta, Prelud
|
||||
CNone => False ;
|
||||
_ => True
|
||||
} ;
|
||||
hasDat = case dat of {
|
||||
CNone => False ;
|
||||
_ => True
|
||||
} ;
|
||||
pdat = case dat of {
|
||||
CPron a => argPron a.g a.n a.p dative hasAcc ;
|
||||
_ => []
|
||||
} ;
|
||||
in
|
||||
<pdat ++ pacc, []> ;
|
||||
<pdat ++ pacc, [], orB hasAcc hasDat> ;
|
||||
|
||||
mkImperative p vp = {
|
||||
s = \\pol,aag =>
|
||||
let
|
||||
agr = aag ** {p = p} ;
|
||||
clpr = pronArg agr.n agr.p vp.clAcc vp.clDat ;
|
||||
verb = case <aag.n, pol> of {
|
||||
<Sg,Neg> => (vp.s ! VPInfinit Simul).inf ! aag ;
|
||||
<Sg,Neg> => (vp.s ! VPInfinit Simul clpr.p3).inf ! aag ;
|
||||
_ => (vp.s ! VPImperat).fin ! agr
|
||||
} ;
|
||||
neg = vp.neg ! pol ;
|
||||
clpr = pronArg agr.n agr.p vp.clAcc vp.clDat ;
|
||||
compl = neg.p2 ++ clpr.p2 ++ vp.comp ! agr ++ vp.ext ! pol
|
||||
in
|
||||
neg.p1 ++ verb ++ clpr.p1 ++ compl ;
|
||||
neg.p1 ++ verb ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ;
|
||||
} ;
|
||||
|
||||
negation : Polarity => (Str * Str) = table {
|
||||
@@ -124,7 +128,7 @@ instance DiffIta of DiffRomance = open CommonRomance, PhonoIta, BeschIta, Prelud
|
||||
conjThan = "che" ; --- di
|
||||
conjThat = "che" ;
|
||||
|
||||
clitInf cli inf = inf ++ cli ; --- contraction of inf
|
||||
clitInf b cli inf = inf ++ bindIf b ++ cli ;
|
||||
|
||||
relPron : Bool => AAgr => Case => Str = \\b,a,c =>
|
||||
case c of {
|
||||
|
||||
@@ -85,7 +85,7 @@ oper
|
||||
|
||||
param
|
||||
VF =
|
||||
VInfin
|
||||
VInfin Bool
|
||||
| VFin TMood Number Person
|
||||
| VImper NumPersI
|
||||
| VPart Gender Number
|
||||
@@ -106,7 +106,7 @@ param
|
||||
VPFinite TMood Anteriority
|
||||
| VPImperat
|
||||
| VPGerund
|
||||
| VPInfinit Anteriority ;
|
||||
| VPInfinit Anteriority Bool ;
|
||||
|
||||
RTense =
|
||||
RPres
|
||||
@@ -149,7 +149,7 @@ oper
|
||||
<Sg,P2> => VImper SgP2 ;
|
||||
<Pl,P1> => VImper PlP1 ;
|
||||
<Pl,P2> => VImper PlP2 ;
|
||||
_ => VInfin
|
||||
_ => VInfin False
|
||||
} ;
|
||||
|
||||
---
|
||||
@@ -183,6 +183,10 @@ oper
|
||||
mkOrd : {s : Degree => AForm => Str} -> {s : AAgr => Str} ;
|
||||
mkOrd x = {s = \\ag => x.s ! Posit ! AF ag.g ag.n} ;
|
||||
|
||||
-- This is used in Spanish and Italian to bind clitics with preceding verb.
|
||||
|
||||
bindIf : Bool -> Str = \b -> if_then_Str b BIND [] ;
|
||||
|
||||
param
|
||||
VPAgr =
|
||||
VPAgrSubj -- elle est partie, elle s'est vue
|
||||
|
||||
@@ -37,13 +37,15 @@ interface DiffRomance = open CommonRomance, Prelude in {
|
||||
oper conjunctCase : NPForm -> NPForm ;
|
||||
|
||||
-- How infinitives and clitics are placed relative to each other
|
||||
-- (Fre "la voir", Ita "vederla").
|
||||
-- (Fre "la voir", Ita "vederla"). The $Bool$ is used for indicating
|
||||
-- if there are any clitics.
|
||||
|
||||
oper clitInf : Str -> Str -> Str ;
|
||||
oper clitInf : Bool -> Str -> Str -> Str ;
|
||||
|
||||
-- To render pronominal arguments as clitics and/or ordinary complements.
|
||||
-- Returns $True$ if there are any clitics.
|
||||
|
||||
oper pronArg : Number -> Person -> CAgr -> CAgr -> Str * Str ;
|
||||
oper pronArg : Number -> Person -> CAgr -> CAgr -> Str * Str * Bool ;
|
||||
|
||||
-- To render imperatives (with their clitics etc).
|
||||
|
||||
|
||||
@@ -52,14 +52,14 @@ oper
|
||||
let
|
||||
vfin : TMood -> Agr -> Str = \tm,a -> verb.s ! VFin tm a.n a.p ;
|
||||
vpart : AAgr -> Str = \a -> verb.s ! VPart a.g a.n ;
|
||||
vinf = verb.s ! VInfin ;
|
||||
vinf : Bool -> Str = \b -> verb.s ! VInfin b ;
|
||||
vger = verb.s ! VGer ;
|
||||
|
||||
typ = verb.vtyp ;
|
||||
aux = auxVerb typ ;
|
||||
|
||||
habet : TMood -> Agr -> Str = \tm,a -> aux ! VFin tm a.n a.p ;
|
||||
habere : Str = aux ! VInfin ;
|
||||
habere : Str = aux ! VInfin False ;
|
||||
|
||||
vimp : Agr -> Str = \a -> verb.s ! VImper (case <a.n,a.p> of {
|
||||
<Pl,P1> => PlP1 ;
|
||||
@@ -80,10 +80,10 @@ oper
|
||||
s = table {
|
||||
VPFinite t Simul => vf (vfin t) (\_ -> []) ;
|
||||
VPFinite t Anter => vf (habet t) vpart ; --# notpresent
|
||||
VPInfinit Anter => vf (\_ -> []) (\a -> habere ++ vpart a) ; --# notpresent
|
||||
VPInfinit Anter _=> vf (\_ -> []) (\a -> habere ++ vpart a) ; --# notpresent
|
||||
VPImperat => vf vimp (\_ -> []) ;
|
||||
VPGerund => vf (\_ -> []) (\_ -> vger) ;
|
||||
VPInfinit Simul => vf (\_ -> []) (\_ -> vinf)
|
||||
VPInfinit Simul b=> vf (\_ -> []) (\_ -> vinf b)
|
||||
} ;
|
||||
agr = partAgr typ ;
|
||||
neg = negation ;
|
||||
@@ -217,12 +217,12 @@ oper
|
||||
|
||||
infVP : VP -> Agr -> Str = \vp,agr ->
|
||||
let
|
||||
inf = (vp.s ! VPInfinit Simul).inf ! (aagr agr.g agr.n) ;
|
||||
neg = vp.neg ! Pos ; --- Neg not in API
|
||||
clpr = pronArg agr.n agr.p vp.clAcc vp.clDat ;
|
||||
inf = (vp.s ! VPInfinit Simul clpr.p3).inf ! (aagr agr.g agr.n) ;
|
||||
neg = vp.neg ! Pos ; --- Neg not in API
|
||||
obj = neg.p2 ++ clpr.p2 ++ vp.comp ! agr ++ vp.ext ! Pos ---- pol
|
||||
in
|
||||
clitInf (clpr.p1 ++ vp.clit2) inf ++ obj ;
|
||||
clitInf clpr.p3 (clpr.p1 ++ vp.clit2) inf ++ obj ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ incomplete concrete SentenceRomance of Sentence =
|
||||
(mkClause
|
||||
(np.s ! Aton Nom) np.a
|
||||
(insertComplement
|
||||
(\\a => prepCase vv.c2.c ++ v2.s ! VInfin) (predV vv))).s ;
|
||||
(\\a => prepCase vv.c2.c ++ v2.s ! VInfin False) (predV vv))).s ;
|
||||
c2 = v2.c2
|
||||
} ;
|
||||
|
||||
|
||||
@@ -5829,8 +5829,23 @@ oper llover_89 : Str -> Verbum = \llover ->
|
||||
|
||||
-- Verbs: conversion from full verbs to present-tense verbs.
|
||||
|
||||
verbBesch : {s : VFB => Str} -> {s : CommonRomance.VF => Str} = \amar -> {s = table {
|
||||
VInfin => amar.s ! VI Infn ;
|
||||
verbBesch : {s : VFB => Str} -> {s : CommonRomance.VF => Str} = \amar ->
|
||||
{-
|
||||
-- even imperatives should be modified this way, so let's postpone this
|
||||
-- AR 21/6/2006
|
||||
let
|
||||
amare = amar.s ! VI Infn ;
|
||||
a'r = case last (init amare) of {
|
||||
"i" => "ír" ;
|
||||
"e" => "ér" ;
|
||||
_ => "ár"
|
||||
} ;
|
||||
ama'r = Predef.tk 2 amare ++ a'r
|
||||
in
|
||||
-}
|
||||
{s = table {
|
||||
-- VInfin True => ama'r ;
|
||||
VInfin _ => amar.s ! VI Infn ;
|
||||
VFin (VPres Indic) n p => amar.s ! VP (Pres Ind n p) ;
|
||||
VFin (VPres Conjunct) n p => amar.s ! VP (Pres Sub n p) ;
|
||||
VFin (VImperf Indic) n p => amar.s ! VP (Impf Ind n p) ; --# notpresent --# notpresent
|
||||
|
||||
@@ -58,21 +58,18 @@ instance DiffSpa of DiffRomance = open CommonRomance, PhonoSpa, BeschSpa, Prelud
|
||||
pronArg = \n,p,acc,dat ->
|
||||
let
|
||||
paccp = case acc of {
|
||||
CRefl => <reflPron n p Acc, p> ;
|
||||
CPron a => <argPron a.g a.n a.p Acc, a.p> ;
|
||||
_ => <[],P2>
|
||||
CRefl => <reflPron n p Acc, p,True> ;
|
||||
CPron a => <argPron a.g a.n a.p Acc, a.p,True> ;
|
||||
_ => <[],P2,False>
|
||||
} ;
|
||||
pdatp = case dat of {
|
||||
CPron a => <argPron a.g a.n a.p dative, a.p> ;
|
||||
_ => <[],P2>
|
||||
CPron a => <argPron a.g a.n a.p dative, a.p,True> ;
|
||||
_ => <[],P2,False>
|
||||
}
|
||||
in case <paccp.p2, pdatp.p2> of {
|
||||
<P3,P3> => <"se" ++ paccp.p1, []> ;
|
||||
_ => <pdatp.p1 ++ paccp.p1, []>
|
||||
<P3,P3> => <"se" ++ paccp.p1, [],True> ;
|
||||
_ => <pdatp.p1 ++ paccp.p1, [],orB paccp.p3 pdatp.p3>
|
||||
} ;
|
||||
-- case <p,acc,dat> of {
|
||||
-- <Sg,P2,CRefl,CPron {n = Sg ; p = P1}> => <"te" ++ "me", []> ;
|
||||
-- <_,_,CPron {n = Sg ; p = P2},CPron {n = Sg ; p = P1}> => <"te" ++ "me", []> ;
|
||||
|
||||
mkImperative p vp = {
|
||||
s = \\pol,aag =>
|
||||
@@ -86,7 +83,7 @@ instance DiffSpa of DiffRomance = open CommonRomance, PhonoSpa, BeschSpa, Prelud
|
||||
clpr = pronArg agr.n agr.p vp.clAcc vp.clDat ;
|
||||
compl = neg.p2 ++ clpr.p2 ++ vp.comp ! agr ++ vp.ext ! pol
|
||||
in
|
||||
neg.p1 ++ verb ++ clpr.p1 ++ compl ;
|
||||
neg.p1 ++ verb ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ;
|
||||
} ;
|
||||
|
||||
negation : Polarity => (Str * Str) = table {
|
||||
@@ -97,7 +94,7 @@ instance DiffSpa of DiffRomance = open CommonRomance, PhonoSpa, BeschSpa, Prelud
|
||||
conjThan = "que" ;
|
||||
conjThat = "que" ;
|
||||
|
||||
clitInf cli inf = inf ++ cli ; --- contraction of inf
|
||||
clitInf b cli inf = inf ++ bindIf b ++ cli ;
|
||||
|
||||
relPron : Bool => AAgr => Case => Str = \\b,a,c =>
|
||||
case c of {
|
||||
|
||||
Reference in New Issue
Block a user