diff --git a/src/portuguese/AllPor.gf b/src/portuguese/AllPor.gf index 67b192158..aa8048e2d 100644 --- a/src/portuguese/AllPor.gf +++ b/src/portuguese/AllPor.gf @@ -1,7 +1,7 @@ --# -path=.:../romance:../abstract:../common:../api:../prelude -concrete AllPor of AllPorAbs = +concrete AllPor of AllPorAbs = LangPor, IrregPor, - ExtraPor + ExtendPor ** {} ; diff --git a/src/portuguese/AllPorAbs.gf b/src/portuguese/AllPorAbs.gf index 057c97a11..5fef5fca1 100644 --- a/src/portuguese/AllPorAbs.gf +++ b/src/portuguese/AllPorAbs.gf @@ -1,5 +1,5 @@ -abstract AllPorAbs = +abstract AllPorAbs = Lang, IrregPorAbs, - ExtraPorAbs + Extend ** {} ; diff --git a/src/portuguese/ExtendPor.gf b/src/portuguese/ExtendPor.gf new file mode 100644 index 000000000..c432ab3e9 --- /dev/null +++ b/src/portuguese/ExtendPor.gf @@ -0,0 +1,68 @@ +--# -path=alltenses:../common:../abstract + +concrete ExtendPor of Extend = + CatPor ** ExtendFunctor - + [ + iFem_Pron, weFem_Pron, youFem_Pron, youPlFem_Pron, youPolPl_Pron, youPolFem_Pron, youPolPlFem_Pron, theyFem_Pron, + ProDrop, + PassVPSlash, ExistsNP + ] -- put the names of your own definitions here + with + (Grammar = GrammarPor), (Syntax = SyntaxPor) ** + open + GrammarPor, + ResPor, + MorphoPor, + Coordination, + Prelude, + ParadigmsPor, + (S = StructuralPor) in { + + lin + ProDrop p = { + s = table { + Nom => let pn = p.s ! Nom in {c1 = pn.c1 ; c2 = pn.c2 ; comp = [] ; ton = pn.ton} ; + c => p.s ! c + } ; + a = p.a ; + poss = p.poss ; + hasClit = p.hasClit ; + isPol = p.isPol ; + isNeg = False + } ; + + lin + PassVPSlash vps = + let auxvp = predV copula + in + insertComplement (\\a => let agr = complAgr a in vps.s.s ! VPart agr.g agr.n) { + s = auxvp.s ; + agr = auxvp.agr ; + neg = vps.neg ; + clit1 = vps.clit1 ; + clit2 = vps.clit2 ; + clit3 = vps.clit3 ; + isNeg = vps.isNeg ; + comp = vps.comp ; + ext = vps.ext + } ; + + ExistsNP np = + mkClause [] True False np.a + (insertComplement (\\_ => (np.s ! Nom).ton) + (predV (mkV "existir"))) ; + + lin + -- Romance + iFem_Pron = pronAgr S.i_Pron Fem Sg P1 ; + weFem_Pron = pronAgr S.we_Pron Fem Pl P1 ; + youFem_Pron = pronAgr S.youSg_Pron Fem Sg P3 ; + youPlFem_Pron = pronAgr S.youPl_Pron Fem Pl P3 ; + youPolPl_Pron = mkPronoun "vós" "vos" "vos" "vós" + "vosso" "vossa" "vossos" "vossas" + Masc Pl P2 ; + youPolFem_Pron = pronAgr S.youPol_Pron Fem Sg P2 ; + youPolPlFem_Pron = pronAgr youPolPl_Pron Fem Pl P2 ; + theyFem_Pron = mkPronFrom S.they_Pron "elas" "as" "lhes" "elas" Fem Pl P3 ; + +} ; diff --git a/src/portuguese/ExtraPor.gf b/src/portuguese/ExtraPor.gf index 6c8e181c5..1b81445ac 100644 --- a/src/portuguese/ExtraPor.gf +++ b/src/portuguese/ExtraPor.gf @@ -1,18 +1,20 @@ +-- the Extra* modules are to be deprecated in favour of the Extend* +-- module. concrete ExtraPor of ExtraPorAbs = ExtraRomancePor ** - open CommonRomance, PhonoPor, MorphoPor, ParadigmsPor, ParamX, ResPor, BeschPor, (I = IrregPor), (S = StructuralPor), + open CommonRomance, PhonoPor, MorphoPor, ParadigmsPor, ParamX, ResPor, BeschPor, (I = IrregPor), (E = ExtendPor), Prelude in { flags coding=utf8 ; lin --- Prons - i8fem_Pron = pronAgr S.i_Pron Fem Sg P1 ; - youSg8fem_Pron = pronAgr S.youSg_Pron Fem Sg P3 ; - we8fem_Pron = pronAgr S.we_Pron Fem Pl P1 ; - youPl8fem_Pron = pronAgr S.youPl_Pron Fem Pl P3 ; - youPolPl_Pron = S.youPol_Pron ** pronLin "vós" "vos" "vos" "vós" ; - youPol8fem_Pron = pronAgr S.youPol_Pron Fem Sg P2 ; - youPolPl8fem_Pron = pronAgr youPolPl_Pron Fem Pl P2 ; - they8fem_Pron = mkPronFrom S.they_Pron "elas" "as" "lhes" "elas" Fem Pl P3 ; + i8fem_Pron = E.iFem_Pron ; + youSg8fem_Pron = E.youFem_Pron ; + we8fem_Pron = E.weFem_Pron ; + youPl8fem_Pron = E.youPlFem_Pron ; + youPolPl_Pron = E.youPolPl_Pron ; + youPol8fem_Pron = E.youPolFem_Pron ; + youPolPl8fem_Pron = E.youPolPlFem_Pron ; + they8fem_Pron = E.theyFem_Pron ; these8fem_NP = makeNP ["estas"] Fem Pl ; @@ -37,23 +39,9 @@ concrete ExtraPor of ExtraPorAbs = ExtraRomancePor ** } ; -- ExtraRomance.PassVPSlash uses estar - PassVPSlash_ser vps = - let auxvp = predV copula - in - insertComplement (\\a => let agr = complAgr a in vps.s.s ! VPart agr.g agr.n) { - s = auxvp.s ; - agr = auxvp.agr ; - neg = vps.neg ; - clit1 = vps.clit1 ; - clit2 = vps.clit2 ; - clit3 = vps.clit3 ; - isNeg = vps.isNeg ; - comp = vps.comp ; - ext = vps.ext - } ; + PassVPSlash_ser = E.PassVPSlash ; - ExistsNP np = - mkClause [] True False np.a (insertComplement (\\_ => (np.s ! Nom).ton) (predV (mkV "existir"))) ; + ExistsNP = E.ExistsNP ; UseComp_estar comp = insertComplement comp.s (predV I.estar_V) ; diff --git a/src/portuguese/ExtraPorAbs.gf b/src/portuguese/ExtraPorAbs.gf index 4355aa89a..5a709c5f1 100644 --- a/src/portuguese/ExtraPorAbs.gf +++ b/src/portuguese/ExtraPorAbs.gf @@ -14,19 +14,19 @@ abstract ExtraPorAbs = ExtraRomanceAbs ** { this8fem_NP : NP ; those8fem_NP : NP ; - we8fem_Pron : Pron ; -- nosotras + we8fem_Pron : Pron ; whoPl8fem_IP : IP ; whoSg8fem_IP : IP ; youSg8fem_Pron : Pron ; - youPl8fem_Pron : Pron ; -- vosotras - youPol8fem_Pron : Pron ; -- usted + youPl8fem_Pron : Pron ; + youPol8fem_Pron : Pron ; - youPolPl_Pron : Pron ; -- ustedes + youPolPl_Pron : Pron ; youPolPl8fem_Pron : Pron ; - ImpNeg : NP -> VP -> Utt ; --"no fumes" + ImpNeg : NP -> VP -> Utt ; --"não fume" InvQuestCl : Cl -> QCl ;