diff --git a/src/portuguese/ExtendPor.gf b/src/portuguese/ExtendPor.gf index 2130689e5..6719ca65d 100644 --- a/src/portuguese/ExtendPor.gf +++ b/src/portuguese/ExtendPor.gf @@ -3,11 +3,33 @@ concrete ExtendPor of Extend = CatPor ** ExtendFunctor - [ - GenNP, GenIP, GenModNP, GenModIP, iFem_Pron, weFem_Pron, youFem_Pron - , youPlFem_Pron, youPolPl_Pron, youPolFem_Pron, youPolPlFem_Pron, theyFem_Pron - , ProDrop, PassVPSlash, ExistsNP, VPS, ListVPS, BaseVPS, ConsVPS, PassVPSlash - , ExistsNP, CompoundN - ] -- put the names of your own definitions here + BaseVPS, + CompoundAP, + CompoundN, + ConsVPS, + ExistsNP, + GenIP, + GenModIP, + GenModNP, + GenNP, + GerundCN, + IAdvAdv, + ICompAP, + iFem_Pron, + ListVPS, + PassVPSlash, + PassVPSlash, + ProDrop, + theyFem_Pron, + VPS, + weFem_Pron, + youFem_Pron, + youPlFem_Pron, + youPolFem_Pron, + youPolPl_Pron, + youPolPlFem_Pron + ] -- don't forget to put the names of your own + -- definitions here with (Grammar = GrammarPor), (Syntax = SyntaxPor) ** open @@ -58,6 +80,19 @@ concrete ExtendPor of Extend = isNeg = False } ; + ICompAP ap = { + s =\\a => "o quão" ++ ap.s ! AF a.g a.n ; + cop = serCopula + } ; + + IAdvAdv adv = { + s = "o quão" ++ adv.s + } ; + + 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} ; + lin PassVPSlash vps = let auxvp = predV copula @@ -87,6 +122,20 @@ concrete ExtendPor of Extend = g = noun2.g } ; + CompoundAP noun adj = { + s = \\af => case af of { + AF g n => adj.s ! Posit ! AF noun.g n ++ "de" ++ noun.s ! n ; + -- do I need do(s)/da(s)? + _ => adj.s ! Posit ! AF noun.g Sg ++ "de" ++ noun.s ! Sg + } ; + isPre = adj.isPre + } ; + + GerundCN vp = { + s = \\n => infVP vp {g = Masc ; n = n ; p = P3} ; + g = Masc + } ; + lin -- Romance iFem_Pron = pronAgr S.i_Pron Fem Sg P1 ; diff --git a/src/portuguese/IdiomPor.gf b/src/portuguese/IdiomPor.gf index 39b99578f..fb14ea638 100644 --- a/src/portuguese/IdiomPor.gf +++ b/src/portuguese/IdiomPor.gf @@ -20,13 +20,23 @@ concrete IdiomPor of Idiom = CatPor ** ExistNP np = mkClause [] True False (agrP3 Masc Sg) - (insertComplement (\\_ => (np.s ! Acc).ton) (predV B.haver_V)) ; + (insertComplement (\\_ => (np.s ! Acc).ton) (predV B.haver_V)) ; + ExistIP ip = { s = \\t,a,p,_ => ip.s ! Nom ++ (mkClause [] True False (agrP3 Masc Sg) (predV B.haver_V)).s ! DDir ! t ! a ! p ! Indic } ; + ExistNPAdv np adv = mkClause [] True False (agrP3 Masc Sg) (insertComplement (\\_ => (np.s ! Acc).ton ++ adv.s) (predV B.haver_V)) ; + + ExistIPAdv ip adv = { + s = \\t,a,p,_ => + ip.s ! Nom ++ + (mkClause [] True False (agrP3 Masc Sg) (predV B.haver_V)).s ! DDir ! t ! a ! p ! Indic + ++ adv.s + } ; + ProgrVP vp = insertComplement (\\agr =>