mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-24 18:28:55 -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
|
in
|
||||||
neg.p1 ++ verb ++ bindIf refl.p2 ++ refl.p1 ++ bindIf clpr.p3 ++ clpr.p1 ++ compl
|
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 {
|
negation : RPolarity => (Str * Str) = table {
|
||||||
RPos => <[],[]> ;
|
RPos => <[],[]> ;
|
||||||
@@ -194,6 +198,7 @@ oper
|
|||||||
auxPassive : Verb = verbBeschH (estar_54 "estar") ;
|
auxPassive : Verb = verbBeschH (estar_54 "estar") ;
|
||||||
|
|
||||||
copula = verbBeschH (ser_52 "ser") ;
|
copula = verbBeschH (ser_52 "ser") ;
|
||||||
|
estar_V = verbBeschH (estar_54 "estar") ;
|
||||||
|
|
||||||
haver_V : Verb = verbBeschH (haver_59 "haver" True) ;
|
haver_V : Verb = verbBeschH (haver_59 "haver" True) ;
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ oper
|
|||||||
emptyNP = mkNP (P.mkPN []) ;
|
emptyNP = mkNP (P.mkPN []) ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
copula_inf_Chunk = ss "ser" ;
|
copula_inf_Chunk = ss "ser" | ss "estar" ;
|
||||||
|
|
||||||
refl_SgP1_Chunk = ss "yo mismo" ;
|
refl_SgP1_Chunk = ss "yo mismo" ;
|
||||||
refl_SgP2_Chunk = ss "tu mismo" ;
|
refl_SgP2_Chunk = ss "tu mismo" ;
|
||||||
@@ -28,8 +28,8 @@ lin
|
|||||||
refl_PlP2_Chunk = ss "vosotros mismos" ;
|
refl_PlP2_Chunk = ss "vosotros mismos" ;
|
||||||
refl_PlP3_Chunk = ss "ellos mismos" ;
|
refl_PlP3_Chunk = ss "ellos mismos" ;
|
||||||
neg_Chunk = ss "no" ;
|
neg_Chunk = ss "no" ;
|
||||||
copula_Chunk = ss "es" ;
|
copula_Chunk = ss "es" | ss "está" ;
|
||||||
copula_neg_Chunk = ss "no es" ;
|
copula_neg_Chunk = ss "no es" | ss "no está" ;
|
||||||
past_copula_Chunk = ss "era" ;
|
past_copula_Chunk = ss "era" ;
|
||||||
past_copula_neg_Chunk = ss "no era" ;
|
past_copula_neg_Chunk = ss "no era" ;
|
||||||
future_Chunk = ss "va" ; ----
|
future_Chunk = ss "va" ; ----
|
||||||
|
|||||||
@@ -154,6 +154,11 @@ instance DiffFre of DiffRomance - [
|
|||||||
|
|
||||||
bindHyphen : Str = BIND ++ "-" ++ BIND ;
|
bindHyphen : Str = BIND ++ "-" ++ BIND ;
|
||||||
|
|
||||||
|
CopulaType = {} ;
|
||||||
|
selectCopula = \isEstar -> copula ;
|
||||||
|
serCopula = <> ;
|
||||||
|
estarCopula = <> ;
|
||||||
|
|
||||||
negation : RPolarity => (Str * Str) = table {
|
negation : RPolarity => (Str * Str) = table {
|
||||||
RPos => <[],[]> ;
|
RPos => <[],[]> ;
|
||||||
RNeg True => <elisNe,[]> ;
|
RNeg True => <elisNe,[]> ;
|
||||||
|
|||||||
@@ -146,6 +146,11 @@ instance DiffIta of DiffRomance - [contractInf] = open CommonRomance, PhonoIta,
|
|||||||
in
|
in
|
||||||
neg.p1 ++ verb ++ bindIf refl.p2 ++ refl.p1 ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ;
|
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 {
|
negation : RPolarity => (Str * Str) = table {
|
||||||
RPos => <[],[]> ;
|
RPos => <[],[]> ;
|
||||||
RNeg _ => <"non",[]>
|
RNeg _ => <"non",[]>
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ incomplete concrete CatRomance of Cat = CommonX - [SC,Pol]
|
|||||||
|
|
||||||
QCl = {s : RTense => Anteriority => RPolarity => QForm => Str} ;
|
QCl = {s : RTense => Anteriority => RPolarity => QForm => Str} ;
|
||||||
IP = {s : Case => Str ; a : AAgr} ;
|
IP = {s : Case => Str ; a : AAgr} ;
|
||||||
IComp = {s : AAgr => Str} ;
|
IComp = {s : AAgr => Str ; cop : CopulaType} ;
|
||||||
IDet = {s : Gender => Case => Str ; n : Number} ;
|
IDet = {s : Gender => Case => Str ; n : Number} ;
|
||||||
IQuant = {s : Number => Gender => Case => Str} ;
|
IQuant = {s : Number => Gender => Case => Str} ;
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ incomplete concrete CatRomance of Cat = CommonX - [SC,Pol]
|
|||||||
|
|
||||||
VP = ResRomance.VP ;
|
VP = ResRomance.VP ;
|
||||||
VPSlash = ResRomance.VP ** {c2 : Compl} ;
|
VPSlash = ResRomance.VP ** {c2 : Compl} ;
|
||||||
Comp = {s : Agr => Str} ;
|
Comp = {s : Agr => Str ; cop : CopulaType} ;
|
||||||
|
|
||||||
-- Adjective
|
-- Adjective
|
||||||
|
|
||||||
|
|||||||
@@ -52,6 +52,13 @@ interface DiffRomance = open CommonRomance, Prelude in {
|
|||||||
|
|
||||||
oper mkImperative : Bool -> Person -> VP -> RPolarity => Gender => Number => Str ;
|
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
|
--2 Constants that must derivatively depend on language
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ incomplete concrete ExtraRomance of ExtraRomanceAbs = CatRomance **
|
|||||||
isNeg = False
|
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} ;
|
PrepCN prep cn = {s = prep.s ++ prepCase prep.c ++ cn.s ! Sg} ;
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ incomplete concrete QuestionRomance of Question =
|
|||||||
QuestIComp icomp np = {
|
QuestIComp icomp np = {
|
||||||
s = \\t,a,p,_ =>
|
s = \\t,a,p,_ =>
|
||||||
let
|
let
|
||||||
vp = predV copula ;
|
vp = predV (selectCopula icomp.cop) ;
|
||||||
cls = (mkClause (np.s ! Nom).comp np.hasClit np.isPol np.a vp).s !
|
cls = (mkClause (np.s ! Nom).comp np.hasClit np.isPol np.a vp).s !
|
||||||
DInv ! t ! a ! p ! Indic ;
|
DInv ! t ! a ! p ! Indic ;
|
||||||
why = icomp.s ! complAgr np.a ;
|
why = icomp.s ! complAgr np.a ;
|
||||||
@@ -95,9 +95,9 @@ incomplete concrete QuestionRomance of Question =
|
|||||||
|
|
||||||
AdvIAdv i a = {s = i.s ++ a.s} ;
|
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
|
lincat
|
||||||
QVP = ResRomance.VP ;
|
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 ;
|
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 =>
|
CompCN cn = { s = \\ag =>
|
||||||
let agr = complAgr ag in
|
let agr = complAgr ag in
|
||||||
artIndef False cn.g agr.n Nom ++ cn.s ! agr.n
|
artIndef False cn.g agr.n Nom ++ cn.s ! agr.n ;
|
||||||
|
cop = serCopula
|
||||||
}; --- RE 7/12/2010 -- AR added indef 2/8/2011
|
}; --- RE 7/12/2010 -- AR added indef 2/8/2011
|
||||||
CompNP np = {s = \\_ => (np.s ! Nom).ton} ;
|
CompNP np = {s = \\_ => (np.s ! Nom).ton ; cop = serCopula} ;
|
||||||
CompAdv a = {s = \\_ => a.s} ;
|
CompAdv a = {s = \\_ => a.s ; cop = estarCopula} ;
|
||||||
|
|
||||||
AdvVP vp adv = insertAdv adv.s vp ;
|
AdvVP vp adv = insertAdv adv.s vp ;
|
||||||
ExtAdvVP vp adv = insertAdv (embedInCommas 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
|
in
|
||||||
neg.p1 ++ verb ++ bindIf refl.p2 ++ refl.p1 ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ;
|
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 {
|
negation : RPolarity => (Str * Str) = table {
|
||||||
RPos => <[],[]> ;
|
RPos => <[],[]> ;
|
||||||
RNeg _ => <"no",[]>
|
RNeg _ => <"no",[]>
|
||||||
@@ -201,8 +206,10 @@ instance DiffSpa of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRo
|
|||||||
|
|
||||||
auxPassive : Verb = verbBeschH (estar_2 "estar") ;
|
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") ;
|
haber_V : Verb = verbBeschH (haber_3 "haber") ;
|
||||||
|
|
||||||
verbBeschH : Verbum -> Verb = \v -> verbBesch v ** {vtyp = VHabere ; p = []} ;
|
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 jamaican_N = mkWN (compoundN "jam" (k38 "aikalainen")) ; --UNCHK
|
||||||
lin jamb_N = mkWN (k26 "pieli") ; --UNCHK
|
lin jamb_N = mkWN (k26 "pieli") ; --UNCHK
|
||||||
lin jambalaya_N = mkWN "jambalaya" ; --UNCHK
|
lin jambalaya_N = mkWN "jambalaya" ; --UNCHK
|
||||||
|
lin james_PN = mkPN "James" ;
|
||||||
lin jamjar_N = mkWN (compoundN "hillo" (k5A "purkki")) ; --UNCHK
|
lin jamjar_N = mkWN (compoundN "hillo" (k5A "purkki")) ; --UNCHK
|
||||||
lin jammer_N = mkWN (compoundN "häirintä" (k33A "lähetin")) ; --UNCHK
|
lin jammer_N = mkWN (compoundN "häirintä" (k33A "lähetin")) ; --UNCHK
|
||||||
lin jamming_N = mkWN (k9A "häirintä") ; --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 sleep_through_V2 = prepV2 OP_sleep_V OP_through_Prep ; -- guess-p-verb
|
||||||
lin sleeper_N = mkWN (k39 "menestys") ; --UNCHK
|
lin sleeper_N = mkWN (k39 "menestys") ; --UNCHK
|
||||||
lin sleepiness_N = mkWN (k40 "raukeus") ; --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_N = mkWN (compoundN "nuk" (k38 "kuminen")) ; --UNCHK
|
||||||
lin sleeping_bag_N = mkWN (compoundN "makuu" (k5 "pussi")) ; --UNCHK
|
lin sleeping_bag_N = mkWN (compoundN "makuu" (k5 "pussi")) ; --UNCHK
|
||||||
lin sleeping_car_N = mkWN (compoundN "makuu" (k1 "vaunu")) ; --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) ;
|
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} ;
|
CompQS qs = {s = \\_ => qs.s ! QIndir} ;
|
||||||
|
|||||||
@@ -57,19 +57,19 @@ lin
|
|||||||
<Pl,Nom> => Predef.BIND ++ "s" ;
|
<Pl,Nom> => Predef.BIND ++ "s" ;
|
||||||
<Pl,Gen> => Predef.BIND ++ "s'"
|
<Pl,Gen> => Predef.BIND ++ "s'"
|
||||||
} ++
|
} ++
|
||||||
vp.s2 ! AgP3Sg Neutr ++ vp.ext ;
|
vp.p ++ vp.s2 ! AgP3Sg Neutr ++ vp.ext ;
|
||||||
g = Neutr
|
g = Neutr
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
GerundNP vp =
|
GerundNP vp =
|
||||||
let a = AgP3Sg Neutr ---- agr
|
let a = AgP3Sg Neutr ---- agr
|
||||||
in
|
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 =
|
GerundAdv vp =
|
||||||
let a = AgP3Sg Neutr
|
let a = AgP3Sg Neutr
|
||||||
in
|
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} ;
|
WithoutVP vp = {s = "without" ++ (GerundAdv (lin VP vp)).s} ;
|
||||||
|
|
||||||
@@ -80,11 +80,11 @@ lin
|
|||||||
PresPartAP = E.PartVP ;
|
PresPartAP = E.PartVP ;
|
||||||
|
|
||||||
PastPartAP vp = {
|
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
|
isPre = vp.isSimple -- depends on whether there are complements
|
||||||
} ;
|
} ;
|
||||||
PastPartAgentAP vp np = {
|
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
|
isPre = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ lin
|
|||||||
{c2 = ""; gapInMiddle = False} ;
|
{c2 = ""; gapInMiddle = False} ;
|
||||||
|
|
||||||
PastPartRS ant pol vps = {
|
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
|
c = npNom
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ lin
|
|||||||
PredVPovs np vp = mkCl (lin NP np) (lin VP vp) ;
|
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} ;
|
CompQS qs = {s = \\_ => qs.s ! QIndir} ;
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ lin
|
|||||||
PredVPovs np vp = mkCl (lin NP np) (lin VP vp) ;
|
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} ;
|
CompQS qs = {s = \\_ => qs.s ! QIndir} ;
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ lin
|
|||||||
PredVPovs np vp = mkCl (lin NP np) (lin VP vp) ;
|
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} ;
|
CompQS qs = {s = \\_ => qs.s ! QIndir} ;
|
||||||
|
|||||||
Reference in New Issue
Block a user