diff --git a/lib/src/spanish/DiffSpa.gf b/lib/src/spanish/DiffSpa.gf index 98cbc83ba..b19f618c9 100644 --- a/lib/src/spanish/DiffSpa.gf +++ b/lib/src/spanish/DiffSpa.gf @@ -20,12 +20,15 @@ instance DiffSpa of DiffRomance = open CommonRomance, PhonoSpa, BeschSpa, Prelud CPrep P_a => "a" } ; + artDef : Gender -> Number -> Case -> Str = \g,n,c -> case of { => "del" ; => "al" ; => prepCase c ++ "el" ; - => prepCase c ++ "la" ; + => chooseDeLa ; + => chooseALa ; + => prepCase c ++ chooseLa ; => prepCase c ++ "los" ; => prepCase c ++ "las" } ; diff --git a/lib/src/spanish/ExtraSpa.gf b/lib/src/spanish/ExtraSpa.gf index 0e2c80848..c6477a9a9 100644 --- a/lib/src/spanish/ExtraSpa.gf +++ b/lib/src/spanish/ExtraSpa.gf @@ -45,12 +45,20 @@ concrete ExtraSpa of ExtraSpaAbs = ExtraRomanceSpa ** "su" "su" "sus" "sus" Fem Pl P3 ; - --IL 2012-10-12 ImpNeg np vp = lin Utt{ s = (mkClause (np.s ! Nom).comp np.hasClit False np.a vp).s ! DInv ! RPres ! Simul ! RNeg False ! Conjunct } ; + InvQuestCl cl = { + s = \\t,a,p => + let cls = cl.s ! DInv ! t ! a ! p + in table { + QDir => cls ! Indic ; + QIndir => subjIf ++ cls ! Indic + } + } ; + -- ExtraRomance.PassVPSlash uses estar PassVPSlash_ser vps = let auxvp = predV copula diff --git a/lib/src/spanish/ExtraSpaAbs.gf b/lib/src/spanish/ExtraSpaAbs.gf index 784a68849..55fa2c642 100644 --- a/lib/src/spanish/ExtraSpaAbs.gf +++ b/lib/src/spanish/ExtraSpaAbs.gf @@ -26,7 +26,9 @@ abstract ExtraSpaAbs = ExtraRomanceAbs ** { youPolPl8fem_Pron : Pron ; - ImpNeg : NP -> VP -> Utt ; --IL 2012-10-12 + ImpNeg : NP -> VP -> Utt ; --"no fumes" + InvQuestCl : Cl -> QCl ; + PassVPSlash_ser : VPSlash -> VP ; diff --git a/lib/src/spanish/LexiconSpa.gf b/lib/src/spanish/LexiconSpa.gf index f1cebf19c..5a5a45391 100644 --- a/lib/src/spanish/LexiconSpa.gf +++ b/lib/src/spanish/LexiconSpa.gf @@ -18,7 +18,7 @@ lin bad_A = prefA (mkADeg (regA "malo") (regA "peor")) ; bank_N = regN "banco" ; beautiful_A = prefA (regADeg "bello") ; -- bella - become_VA = reflV (regV "convertir") ; --- convertirse en, volverse, ponerse + become_VA = reflV (mkV "convertir" "convierto") ; --- convertirse en, volverse, ponerse beer_N = regN "cerveza" ; beg_V2V = mkV2V (mkV "rogar" "ruego") accusative dative ; -- pedir big_A = prefA (regADeg "grande") ; @@ -205,7 +205,7 @@ lin warm_A = regADeg "caliente" ; war_N = mkN "guerra" ; watch_V2 = dirV2 (regV "mirar") ; -- ver - water_N = mkN "agua" ; ---- feminine, but uses masculine article "el". TODO defArt pre {} thingy for the nouns (limited set) that behave like this. + water_N = mkN "agua" ; white_A = compADeg (regA "blanco") ; window_N = regN "ventana" ; wine_N = regN "vino" ; diff --git a/lib/src/spanish/PhonoSpa.gf b/lib/src/spanish/PhonoSpa.gf index f6f9cf50f..da1d4d7c9 100644 --- a/lib/src/spanish/PhonoSpa.gf +++ b/lib/src/spanish/PhonoSpa.gf @@ -10,5 +10,29 @@ oper "a" ; "e" ; "h" ; "i" ; "o" ; "u" } ; + --Feminine nouns that start with stressed a use the masculine article el for phonetic reasons: + --e.g. "el agua pura" but "la pura agua". + --To prevent "el aguamarina", we list explicitly words that begin with these words + falseAWords : pattern Str = #("aguam"|"aguaf"|"almac"|"alab"|"alac"|"alam"|"alan"|"alar") ; + aWords : pattern Str = #("agua" | "alma" | "ala") ; + chooseLa = pre { + falseAWords => "la" ; + aWords => "el" ; + "á" => "el" ; + _ => "la" + } ; + chooseDeLa = pre { + falseAWords => "de la" ; + aWords => "del" ; + "á" => "del" ; + _ => "de la" + } ; + + chooseALa = pre { + falseAWords => "a la" ; + aWords => "al" ; + "á" => "al" ; + _ => "a la" + } ; }