mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-17 00:39:32 -06:00
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:
@@ -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) ;
|
||||
|
||||
|
||||
@@ -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" ; ----
|
||||
|
||||
@@ -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,[]> ;
|
||||
|
||||
@@ -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",[]>
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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} ;
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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 = []} ;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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} ;
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
|
||||
|
||||
@@ -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} ;
|
||||
|
||||
@@ -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} ;
|
||||
|
||||
@@ -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} ;
|
||||
|
||||
Reference in New Issue
Block a user