copula in romance: ser/estar for Cat,Spa, just essere/etre in Ita,Fra. Controlled by the param type CopulaType in DiffRomance.

This commit is contained in:
aarne
2015-07-20 13:41:01 +00:00
parent 42d5efbe08
commit 53c477d2a2
16 changed files with 58 additions and 27 deletions

View File

@@ -124,6 +124,10 @@ oper
in
neg.p1 ++ verb ++ bindIf refl.p2 ++ refl.p1 ++ bindIf clpr.p3 ++ clpr.p1 ++ compl
;
CopulaType = Bool ;
selectCopula = \isEstar -> case isEstar of {True => estar_V ; False => copula} ;
serCopula = False ;
estarCopula = True ;
negation : RPolarity => (Str * Str) = table {
RPos => <[],[]> ;
@@ -194,6 +198,7 @@ oper
auxPassive : Verb = verbBeschH (estar_54 "estar") ;
copula = verbBeschH (ser_52 "ser") ;
estar_V = verbBeschH (estar_54 "estar") ;
haver_V : Verb = verbBeschH (haver_59 "haver" True) ;

View File

@@ -19,7 +19,7 @@ oper
emptyNP = mkNP (P.mkPN []) ;
lin
copula_inf_Chunk = ss "ser" ;
copula_inf_Chunk = ss "ser" | ss "estar" ;
refl_SgP1_Chunk = ss "yo mismo" ;
refl_SgP2_Chunk = ss "tu mismo" ;
@@ -28,8 +28,8 @@ lin
refl_PlP2_Chunk = ss "vosotros mismos" ;
refl_PlP3_Chunk = ss "ellos mismos" ;
neg_Chunk = ss "no" ;
copula_Chunk = ss "es" ;
copula_neg_Chunk = ss "no es" ;
copula_Chunk = ss "es" | ss "está" ;
copula_neg_Chunk = ss "no es" | ss "no está" ;
past_copula_Chunk = ss "era" ;
past_copula_neg_Chunk = ss "no era" ;
future_Chunk = ss "va" ; ----

View File

@@ -154,6 +154,11 @@ instance DiffFre of DiffRomance - [
bindHyphen : Str = BIND ++ "-" ++ BIND ;
CopulaType = {} ;
selectCopula = \isEstar -> copula ;
serCopula = <> ;
estarCopula = <> ;
negation : RPolarity => (Str * Str) = table {
RPos => <[],[]> ;
RNeg True => <elisNe,[]> ;

View File

@@ -146,6 +146,11 @@ instance DiffIta of DiffRomance - [contractInf] = open CommonRomance, PhonoIta,
in
neg.p1 ++ verb ++ bindIf refl.p2 ++ refl.p1 ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ;
CopulaType = {} ;
selectCopula = \isEstar -> copula ;
serCopula = <> ;
estarCopula = <> ;
negation : RPolarity => (Str * Str) = table {
RPos => <[],[]> ;
RNeg _ => <"non",[]>

View File

@@ -35,7 +35,7 @@ incomplete concrete CatRomance of Cat = CommonX - [SC,Pol]
QCl = {s : RTense => Anteriority => RPolarity => QForm => Str} ;
IP = {s : Case => Str ; a : AAgr} ;
IComp = {s : AAgr => Str} ;
IComp = {s : AAgr => Str ; cop : CopulaType} ;
IDet = {s : Gender => Case => Str ; n : Number} ;
IQuant = {s : Number => Gender => Case => Str} ;
@@ -51,7 +51,7 @@ incomplete concrete CatRomance of Cat = CommonX - [SC,Pol]
VP = ResRomance.VP ;
VPSlash = ResRomance.VP ** {c2 : Compl} ;
Comp = {s : Agr => Str} ;
Comp = {s : Agr => Str ; cop : CopulaType} ;
-- Adjective

View File

@@ -52,6 +52,13 @@ interface DiffRomance = open CommonRomance, Prelude in {
oper mkImperative : Bool -> Person -> VP -> RPolarity => Gender => Number => Str ;
-- To render the copula (ser/estar in Spa,Cat)
oper CopulaType : PType ;
oper selectCopula : CopulaType -> Verb ;
oper serCopula : CopulaType ;
oper estarCopula : CopulaType ;
--2 Constants that must derivatively depend on language

View File

@@ -34,7 +34,7 @@ incomplete concrete ExtraRomance of ExtraRomanceAbs = CatRomance **
isNeg = False
} ;
CompIQuant iq = {s = \\aa => iq.s ! aa.n ! aa.g ! Nom} ;
CompIQuant iq = {s = \\aa => iq.s ! aa.n ! aa.g ! Nom ; cop = serCopula} ;
PrepCN prep cn = {s = prep.s ++ prepCase prep.c ++ cn.s ! Sg} ;

View File

@@ -49,7 +49,7 @@ incomplete concrete QuestionRomance of Question =
QuestIComp icomp np = {
s = \\t,a,p,_ =>
let
vp = predV copula ;
vp = predV (selectCopula icomp.cop) ;
cls = (mkClause (np.s ! Nom).comp np.hasClit np.isPol np.a vp).s !
DInv ! t ! a ! p ! Indic ;
why = icomp.s ! complAgr np.a ;
@@ -95,9 +95,9 @@ incomplete concrete QuestionRomance of Question =
AdvIAdv i a = {s = i.s ++ a.s} ;
CompIAdv a = {s = \\_ => a.s} ;
CompIAdv a = {s = \\_ => a.s ; cop = estarCopula} ;
CompIP p = {s = \\_ => p.s ! Nom} ;
CompIP p = {s = \\_ => p.s ! Nom ; cop = serCopula} ;
lincat
QVP = ResRomance.VP ;

View File

@@ -87,17 +87,18 @@ incomplete concrete VerbRomance of Verb =
-}
UseComp comp = insertComplement comp.s (predV copula) ;
UseComp comp = insertComplement comp.s (predV (selectCopula comp.cop)) ;
UseCopula = predV copula ;
CompAP ap = {s = \\ag => let agr = complAgr ag in ap.s ! AF agr.g agr.n} ;
CompAP ap = {s = \\ag => let agr = complAgr ag in ap.s ! AF agr.g agr.n ; cop = serCopula} ;
CompCN cn = { s = \\ag =>
let agr = complAgr ag in
artIndef False cn.g agr.n Nom ++ cn.s ! agr.n
let agr = complAgr ag in
artIndef False cn.g agr.n Nom ++ cn.s ! agr.n ;
cop = serCopula
}; --- RE 7/12/2010 -- AR added indef 2/8/2011
CompNP np = {s = \\_ => (np.s ! Nom).ton} ;
CompAdv a = {s = \\_ => a.s} ;
CompNP np = {s = \\_ => (np.s ! Nom).ton ; cop = serCopula} ;
CompAdv a = {s = \\_ => a.s ; cop = estarCopula} ;
AdvVP vp adv = insertAdv adv.s vp ;
ExtAdvVP vp adv = insertAdv (embedInCommas adv.s) vp ;

View File

@@ -134,6 +134,11 @@ instance DiffSpa of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRo
in
neg.p1 ++ verb ++ bindIf refl.p2 ++ refl.p1 ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ;
CopulaType = Bool ;
selectCopula = \isEstar -> case isEstar of {True => estar_V ; False => copula} ;
serCopula = False ;
estarCopula = True ;
negation : RPolarity => (Str * Str) = table {
RPos => <[],[]> ;
RNeg _ => <"no",[]>
@@ -201,8 +206,10 @@ instance DiffSpa of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRo
auxPassive : Verb = verbBeschH (estar_2 "estar") ;
copula = verbBeschH (ser_1 "ser") ;
copula : Verb = verbBeschH (ser_1 "ser") ;
estar_V : Verb = verbBeschH (estar_2 "estar") ;
haber_V : Verb = verbBeschH (haber_3 "haber") ;
verbBeschH : Verbum -> Verb = \v -> verbBesch v ** {vtyp = VHabere ; p = []} ;

View File

@@ -27773,6 +27773,7 @@ lin jamaican_A = mkWA (compoundA "jam" (k38 "aikalainen")) ;
lin jamaican_N = mkWN (compoundN "jam" (k38 "aikalainen")) ; --UNCHK
lin jamb_N = mkWN (k26 "pieli") ; --UNCHK
lin jambalaya_N = mkWN "jambalaya" ; --UNCHK
lin james_PN = mkPN "James" ;
lin jamjar_N = mkWN (compoundN "hillo" (k5A "purkki")) ; --UNCHK
lin jammer_N = mkWN (compoundN "häirintä" (k33A "lähetin")) ; --UNCHK
lin jamming_N = mkWN (k9A "häirintä") ; --UNCHK
@@ -48335,7 +48336,7 @@ lin sleep_over_V = mkWV (k63 "jäädä") "yöksi" ; --UNCHK
lin sleep_through_V2 = prepV2 OP_sleep_V OP_through_Prep ; -- guess-p-verb
lin sleeper_N = mkWN (k39 "menestys") ; --UNCHK
lin sleepiness_N = mkWN (k40 "raukeus") ; --UNCHK
lin sleeping_A = variants {} ; --
lin sleeping_A = mkA "nukkuva" ;
lin sleeping_N = mkWN (compoundN "nuk" (k38 "kuminen")) ; --UNCHK
lin sleeping_bag_N = mkWN (compoundN "makuu" (k5 "pussi")) ; --UNCHK
lin sleeping_car_N = mkWN (compoundN "makuu" (k1 "vaunu")) ; --UNCHK

View File

@@ -104,7 +104,7 @@ lin
PredVPovs np vp = mkCl (lin NP np) (lin VP vp) ;
CompS s = {s = \\_ => "de" ++ "què" ++ s.s ! Indic} ; ---- de ?
CompS s = {s = \\_ => "de" ++ "què" ++ s.s ! Indic ; cop = serCopula} ; ---- de ?
{-
CompQS qs = {s = \\_ => qs.s ! QIndir} ;

View File

@@ -57,19 +57,19 @@ lin
<Pl,Nom> => Predef.BIND ++ "s" ;
<Pl,Gen> => Predef.BIND ++ "s'"
} ++
vp.s2 ! AgP3Sg Neutr ++ vp.ext ;
vp.p ++ vp.s2 ! AgP3Sg Neutr ++ vp.ext ;
g = Neutr
} ;
GerundNP vp =
let a = AgP3Sg Neutr ---- agr
in
{s = \\_ => vp.ad ! a ++ vp.prp ++ vp.s2 ! a ++ vp.ext ; a = a} ;
{s = \\_ => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a ++ vp.ext ; a = a} ;
GerundAdv vp =
let a = AgP3Sg Neutr
in
{s = vp.ad ! a ++ vp.prp ++ vp.s2 ! a ++ vp.ext} ;
{s = vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a ++ vp.ext} ;
WithoutVP vp = {s = "without" ++ (GerundAdv (lin VP vp)).s} ;
@@ -80,11 +80,11 @@ lin
PresPartAP = E.PartVP ;
PastPartAP vp = {
s = \\a => vp.ad ! a ++ vp.ptp ++ vp.c2 ++ vp.s2 ! a ++ vp.ext ;
s = \\a => vp.ad ! a ++ vp.ptp ++ vp.p ++ vp.c2 ++ vp.s2 ! a ++ vp.ext ;
isPre = vp.isSimple -- depends on whether there are complements
} ;
PastPartAgentAP vp np = {
s = \\a => vp.ad ! a ++ vp.ptp ++ vp.c2 ++ vp.s2 ! a ++ "by" ++ np.s ! NPAcc ++ vp.ext ;
s = \\a => vp.ad ! a ++ vp.ptp ++ vp.p ++ vp.c2 ++ vp.s2 ! a ++ "by" ++ np.s ! NPAcc ++ vp.ext ;
isPre = False
} ;
@@ -142,7 +142,7 @@ lin
{c2 = ""; gapInMiddle = False} ;
PastPartRS ant pol vps = {
s = \\agr => vps.ad ! agr ++ vps.ptp ++ vps.s2 ! agr ;
s = \\agr => vps.ad ! agr ++ vps.ptp ++ vps.p ++ vps.s2 ! agr ;
c = npNom
} ;

View File

@@ -119,7 +119,7 @@ lin
PredVPovs np vp = mkCl (lin NP np) (lin VP vp) ;
CompS s = {s = \\_ => "de" ++ "que" ++ s.s ! Indic} ; ---- de ?
CompS s = {s = \\_ => "de" ++ "que" ++ s.s ! Indic ; cop = serCopula} ; ---- de ?
{-
CompQS qs = {s = \\_ => qs.s ! QIndir} ;

View File

@@ -118,7 +118,7 @@ lin
PredVPovs np vp = mkCl (lin NP np) (lin VP vp) ;
CompS s = {s = \\_ => "di" ++ "che" ++ s.s ! Indic} ; ---- de ?
CompS s = {s = \\_ => "di" ++ "che" ++ s.s ! Indic ; cop = serCopula} ; ---- de ?
{-
CompQS qs = {s = \\_ => qs.s ! QIndir} ;

View File

@@ -119,7 +119,7 @@ lin
PredVPovs np vp = mkCl (lin NP np) (lin VP vp) ;
CompS s = {s = \\_ => "de" ++ "que" ++ s.s ! Indic} ; ---- de ?
CompS s = {s = \\_ => "de" ++ "que" ++ s.s ! Indic ; cop = serCopula} ; ---- de ?
{-
CompQS qs = {s = \\_ => qs.s ! QIndir} ;