From 2f4db8e0bc713717499c20015228413d0b76002d Mon Sep 17 00:00:00 2001 From: odanoburu Date: Sun, 13 Jan 2019 18:25:53 -0200 Subject: [PATCH] (Por) change copula type from bool to sum param Portuguese actually has several verbs that can act as copulas, although the main ones are ser and estar. this allows other types of copulas to be added. --- src/portuguese/DiffPor.gf | 17 +++++++++++++---- src/portuguese/ParadigmsPor.gf | 2 +- src/romance/DiffRomance.gf | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/portuguese/DiffPor.gf b/src/portuguese/DiffPor.gf index dc14eba22..f5f9e72cc 100644 --- a/src/portuguese/DiffPor.gf +++ b/src/portuguese/DiffPor.gf @@ -72,11 +72,20 @@ instance DiffPor of DiffRomance - [chooseTA,partAgr,vpAgrSubj,vpAgrClits] = open in neg.p1 ++ verb ++ bindIf refl.p2 ++ refl.p1 ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ; + param + Copula = SerCop | EstarCop | FicarCop ; + oper - CopulaType = Bool ; - selectCopula = \isEstar -> case isEstar of {True => estar_V ; False => copula} ; - serCopula = False ; - estarCopula = True ; + CopulaType = Copula ; + selectCopula coptyp = case coptyp of { + SerCop => copula ; + EstarCop => estar_V ; + FicarCop => ficar_V + } ; + + serCopula = SerCop ; + estarCopula = EstarCop ; + ficarCopula = FicarCop ; oper -- the other Cases are defined in ResRomance diff --git a/src/portuguese/ParadigmsPor.gf b/src/portuguese/ParadigmsPor.gf index c648d2893..2d2bdeb32 100644 --- a/src/portuguese/ParadigmsPor.gf +++ b/src/portuguese/ParadigmsPor.gf @@ -256,7 +256,7 @@ oper mkA : (blanco : A) -> (hueso : Str) -> A -- noninflecting component after the adjective = mkNonInflectA ; - mkA : A -> CopulaType -> A -- force copula type, e.g. "João está doente", "João é doente" + mkA : A -> CopulaType -> A -- force copula type, e.g. "João está doente", "João é doente". Choose among ``serCopula``, ``estarCopula``, and ``ficarCopula`` = adjCopula ; } ; diff --git a/src/romance/DiffRomance.gf b/src/romance/DiffRomance.gf index 22021c0d8..83be33120 100644 --- a/src/romance/DiffRomance.gf +++ b/src/romance/DiffRomance.gf @@ -52,7 +52,7 @@ interface DiffRomance = open CommonRomance, Prelude in { oper mkImperative : Bool -> Person -> VP -> RPolarity => Gender => Number => Str ; --- To render the copula (ser/estar in Spa,Cat) +-- To render the copula (ser/estar in Spa,Cat,Por) oper CopulaType : PType ; oper selectCopula : CopulaType -> Verb ;