diff --git a/src/portuguese/ConstructionPor.gf b/src/portuguese/ConstructionPor.gf index 585f3b1a2..e946ad798 100644 --- a/src/portuguese/ConstructionPor.gf +++ b/src/portuguese/ConstructionPor.gf @@ -33,7 +33,10 @@ lin n_units_AP card cn a = mkAP (lin AdA (mkUtt (mkNP (lin CN cn)))) (lin A a) ; n_units_of_NP card cn np = mkNP card (mkCN (lin N2 cn) np) ; - n_unit_CN card cn cn = mkCN (invarA ("de" ++ card.s ! cn.g ++ cn.s ! card.n)) cn ; + n_unit_CN card cn cn = + let s : Str = "de" ++ card.s ! cn.g ++ cn.s ! card.n ; + adj : A = mkA s s s s s ; + in mkCN adj cn ; bottle_of_CN np = mkCN (lin N2 (mkN2 (mkN "garrafa" feminine) part_Prep)) np ; cup_of_CN np = mkCN (lin N2 (mkN2 (mkN "copo") part_Prep)) np ; diff --git a/src/portuguese/MorphoPor.gf b/src/portuguese/MorphoPor.gf index 4d39b406d..ffb7f8659 100644 --- a/src/portuguese/MorphoPor.gf +++ b/src/portuguese/MorphoPor.gf @@ -64,7 +64,7 @@ oper "i" => "í" ; "o" => "ó" ; "u" => "ú" ; - _ => error ("input '" ++ v ++ "' must be vowel character.") + _ => error ("input" ++ v ++ "must be vowel character.") } ; diacriticToVowel : Str -> Str = \v -> @@ -74,7 +74,7 @@ oper "í" => "i" ; ("ó"|"ô"|"õ") => "o" ; "ú" => "u" ; - _ => error ("input '" ++ v ++ "' must be a vowel character with an accent.") + _ => error ("input" ++ v ++ "must be a vowel character with an accent.") } ; -- Common nouns are inflected in number and have an inherent gender. @@ -130,7 +130,7 @@ oper home + "m" => mkNoun (nomNuvem vinho) Masc ; - g + v@("á"|"é"|"í"|"ó"|"ú"|"ê") + "s" => mkNoun (numForms vinho (g + diacriticToVowel v + "ses")) Masc ; + g + v@("á"|"é"|"í"|"ó"|"ú"|"ê") + "s" => mkNoun (numForms vinho (g + (diacriticToVowel v) + "ses")) Masc ; ônibu + "s" => mkNoun (nomAreia vinho) Masc ; @@ -158,19 +158,21 @@ oper } ; mkAdj4 : (_,_,_,_ : Str) -> Adj ; - mkAdj4 ms fs mp fp = { - s = table { - ASg g _ => genForms ms fs ! g ; - APl g => genForms mp fp ! g ; - AA => case fs of { - exeg + v@("é"|"á"|"í"|"ó"|"ú"|"ê"|"ô") + tica - => exeg + (diacriticToVowel v) + tica + "mente" ; + mkAdj4 ms fs mp fp = + let adv : Str = case fs of { + exeg + vo@("é"|"á"|"í"|"ó"|"ú"|"ê"|"ô") + tica + => exeg + (diacriticToVowel vo) + tica ; - comu + "m" => comu + "mente" ; -- for Brazilian Portuguese + comu + "m" => comu ; -- for Brazilian Portuguese - _ => fs + "mente" + _ => fs + } + "mente" ; + in { + s = table { + ASg g _ => genForms ms fs ! g ; + APl g => genForms mp fp ! g ; + AA => adv } - } } ; mkAdjFromNouns : Noun -> Noun -> Adj ; diff --git a/src/portuguese/ParadigmsPor.gf b/src/portuguese/ParadigmsPor.gf index 9c39c5ac3..eead08203 100644 --- a/src/portuguese/ParadigmsPor.gf +++ b/src/portuguese/ParadigmsPor.gf @@ -245,7 +245,7 @@ oper -- One-place adjectives compared with "mais" need five forms in -- the worst case (masc and fem singular, masc and fem plural, -- adverbial). - mkA : (bobo,boba,bobos,bobas,bobamente : Str) -> A = mk5A ; + mkA : (gabarolas,gabarolas,gabarolas,gabarolas,gabarolamente : Str) -> A = mk5A ; -- In the worst case, two separate adjectives are given: the positive -- ("bom"), and the comparative ("melhor"). special comparison with