diff --git a/lib/src/catalan/DiffCat.gf b/lib/src/catalan/DiffCat.gf index 1d6bd8df7..0a4574fa2 100644 --- a/lib/src/catalan/DiffCat.gf +++ b/lib/src/catalan/DiffCat.gf @@ -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) ; diff --git a/lib/src/chunk/ChunkSpa.gf b/lib/src/chunk/ChunkSpa.gf index 319acd4ca..80805c026 100644 --- a/lib/src/chunk/ChunkSpa.gf +++ b/lib/src/chunk/ChunkSpa.gf @@ -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" ; ---- diff --git a/lib/src/french/DiffFre.gf b/lib/src/french/DiffFre.gf index 0651e40d6..6e78c50cb 100644 --- a/lib/src/french/DiffFre.gf +++ b/lib/src/french/DiffFre.gf @@ -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 => ; diff --git a/lib/src/italian/DiffIta.gf b/lib/src/italian/DiffIta.gf index 5cbec5569..fd0f0b63c 100644 --- a/lib/src/italian/DiffIta.gf +++ b/lib/src/italian/DiffIta.gf @@ -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",[]> diff --git a/lib/src/romance/CatRomance.gf b/lib/src/romance/CatRomance.gf index 7b2b7a3bf..8aee01c37 100644 --- a/lib/src/romance/CatRomance.gf +++ b/lib/src/romance/CatRomance.gf @@ -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 diff --git a/lib/src/romance/DiffRomance.gf b/lib/src/romance/DiffRomance.gf index 94a625501..902e489c5 100644 --- a/lib/src/romance/DiffRomance.gf +++ b/lib/src/romance/DiffRomance.gf @@ -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 diff --git a/lib/src/romance/ExtraRomance.gf b/lib/src/romance/ExtraRomance.gf index a340c0ffa..c238a8f24 100644 --- a/lib/src/romance/ExtraRomance.gf +++ b/lib/src/romance/ExtraRomance.gf @@ -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} ; diff --git a/lib/src/romance/QuestionRomance.gf b/lib/src/romance/QuestionRomance.gf index 478bda928..dde149fc5 100644 --- a/lib/src/romance/QuestionRomance.gf +++ b/lib/src/romance/QuestionRomance.gf @@ -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 ; diff --git a/lib/src/romance/VerbRomance.gf b/lib/src/romance/VerbRomance.gf index 29b9e8a6f..dcdabb026 100644 --- a/lib/src/romance/VerbRomance.gf +++ b/lib/src/romance/VerbRomance.gf @@ -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 ; diff --git a/lib/src/spanish/DiffSpa.gf b/lib/src/spanish/DiffSpa.gf index 0c3e26558..3812175e4 100644 --- a/lib/src/spanish/DiffSpa.gf +++ b/lib/src/spanish/DiffSpa.gf @@ -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 = []} ; diff --git a/lib/src/translator/DictionaryFin.gf b/lib/src/translator/DictionaryFin.gf index 9c9e66a2d..60c4bc685 100644 --- a/lib/src/translator/DictionaryFin.gf +++ b/lib/src/translator/DictionaryFin.gf @@ -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 diff --git a/lib/src/translator/ExtensionsCat.gf b/lib/src/translator/ExtensionsCat.gf index f6e6c7e69..c7c66e0a9 100644 --- a/lib/src/translator/ExtensionsCat.gf +++ b/lib/src/translator/ExtensionsCat.gf @@ -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} ; diff --git a/lib/src/translator/ExtensionsEng.gf b/lib/src/translator/ExtensionsEng.gf index ea4a60ec2..c48d3c16b 100644 --- a/lib/src/translator/ExtensionsEng.gf +++ b/lib/src/translator/ExtensionsEng.gf @@ -57,19 +57,19 @@ lin => Predef.BIND ++ "s" ; => 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 } ; diff --git a/lib/src/translator/ExtensionsFre.gf b/lib/src/translator/ExtensionsFre.gf index acd047b4b..be372d963 100644 --- a/lib/src/translator/ExtensionsFre.gf +++ b/lib/src/translator/ExtensionsFre.gf @@ -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} ; diff --git a/lib/src/translator/ExtensionsIta.gf b/lib/src/translator/ExtensionsIta.gf index 0a180b421..9ddb226f5 100644 --- a/lib/src/translator/ExtensionsIta.gf +++ b/lib/src/translator/ExtensionsIta.gf @@ -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} ; diff --git a/lib/src/translator/ExtensionsSpa.gf b/lib/src/translator/ExtensionsSpa.gf index df7b005f6..ba3a72708 100644 --- a/lib/src/translator/ExtensionsSpa.gf +++ b/lib/src/translator/ExtensionsSpa.gf @@ -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} ;