diff --git a/src/romance/AdjectiveRomance.gf b/src/romance/AdjectiveRomance.gf index 700300756..597da0edc 100644 --- a/src/romance/AdjectiveRomance.gf +++ b/src/romance/AdjectiveRomance.gf @@ -6,7 +6,7 @@ incomplete concrete AdjectiveRomance of Adjective = PositA a = { s = a.s ! Posit ; isPre = a.isPre ; - copTyp = a.copTyp + copTyp = a.copTyp } ; ComparA a np = { s = \\af => a.s ! Compar ! af ++ conjThan ++ (np.s ! Nom).ton ; @@ -34,7 +34,7 @@ incomplete concrete AdjectiveRomance of Adjective = ComplA2 adj np = { s = \\af => adj.s ! Posit ! af ++ appCompl adj.c2 np ; isPre = False ; - copTyp = serCopula + copTyp = adj.copTyp } ; ReflA2 adj = { @@ -42,7 +42,7 @@ incomplete concrete AdjectiveRomance of Adjective = adj.s ! Posit ! af ++ adj.c2.s ++ prepCase adj.c2.c ++ reflPron Sg P3 Nom ; --- agr isPre = False ; - copTyp = serCopula + copTyp = adj.copTyp } ; SentAP ap sc = { @@ -60,7 +60,7 @@ incomplete concrete AdjectiveRomance of Adjective = UseA2 a = { s = a.s ! Posit ; isPre = False ; ---- A2 has no isPre - copTyp = serCopula ---- A2 has no copTyp (yet) + copTyp = a.copTyp } ; AdvAP ap adv = { diff --git a/src/romance/CatRomance.gf b/src/romance/CatRomance.gf index 93e5e8c4a..cb4dcee75 100644 --- a/src/romance/CatRomance.gf +++ b/src/romance/CatRomance.gf @@ -106,7 +106,7 @@ incomplete concrete CatRomance of Cat = CommonX - [SC,Pol] VS = Verb ** {m : RPolarity => Mood} ; A = {s : Degree => AForm => Str ; isPre : Bool ; copTyp : CopulaType} ; - A2 = {s : Degree => AForm => Str ; c2 : Compl} ; + A2 = {s : Degree => AForm => Str ; c2 : Compl ; copTyp : CopulaType} ; N = Noun ; N2 = Noun ** {c2 : Compl} ; diff --git a/src/spanish/DiffSpa.gf b/src/spanish/DiffSpa.gf index d91b68b8f..9e4960ec1 100644 --- a/src/spanish/DiffSpa.gf +++ b/src/spanish/DiffSpa.gf @@ -13,7 +13,7 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg contractInf : Bool -> Bool -> Bool = orB ; --- the effect of this is that the clitic is bound to the infinitive: matarte -------------------------------- - param + param Prepos = P_de | P_a ; VType = VHabere | VRefl ; @@ -23,7 +23,7 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg prepCase = \c -> case c of { Nom => [] ; - Acc => [] ; + Acc => [] ; CPrep P_de => "de" ; CPrep P_a => "a" } ; @@ -52,11 +52,11 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg artIndef = \isNP,g,n,c -> case isNP of { True => case n of { Sg => prepCase c ++ genForms "uno" "una" ! g ; - _ => prepCase c ++ genForms "unos" "unas" ! g + _ => prepCase c ++ genForms "unos" "unas" ! g } ; _ => case n of { Sg => prepCase c ++ genForms "un" "una" ! g ; - _ => prepCase c + _ => prepCase c } } ; @@ -73,7 +73,7 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg conjunctCase : Case -> Case = \c -> case c of { Nom => Nom ; - _ => Acc + _ => Acc } ; auxVerb : VType -> (VF => Str) = \_ -> haber_V.s ; @@ -81,8 +81,8 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg vpAgrClit : Agr -> VPAgr = \a -> vpAgrNone ; - pronArg = \n,p,acc,dat -> - let + pronArg = \n,p,acc,dat -> + let paccp = case acc of { CRefl => ; CPron ag an ap => ; @@ -101,7 +101,7 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg } ; defaultPronArg = ---- defaultPronArg = - in + in ---- case < : Person * Person> of { ---- => <"se" ++ paccp.p1, [], True> ; ---- _ => defaultPronArg @@ -116,14 +116,15 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg mkImperative isPol p vp = \\pol,g,n => case pol of { RPos => neg.p1 ++ imper ++ bindIf refl.isRefl ++ refl.pron - ++ bindIf hasClit ++ clit ++ compl ; - RNeg _ => neg.p1 ++ refl.pron ++ clit ++ subj ++ compl + ++ bindIf hasClit ++ clit ++ particle ++ compl ; + RNeg _ => neg.p1 ++ refl.pron ++ clit ++ subj ++ particle ++ compl } where { pe = case isPol of {True => P3 ; _ => p} ; refl = case vp.s.vtyp of { VRefl => {pron = reflPron n pe Acc ; isRefl = True} ; _ => {pron = [] ; isRefl = False} } ; + particle = vp.s.p ; clit = vp.clit1 ++ vp.clit2 ; hasClit = vp.clit3.hasClit ; imper = vp.s.s ! vImper n pe ; @@ -154,7 +155,7 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg clitInf b cli inf = inf ++ bindIf b ++ cli ; - relPron : Bool => AAgr => Case => Str = \\b,a,c => + relPron : Bool => AAgr => Case => Str = \\b,a,c => case c of { Nom | Acc => "que" ; CPrep P_a => "cuyo" ; @@ -167,19 +168,19 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg partQIndir = [] ; ---- ? - reflPron : Number -> Person -> Case -> Str = \n,p,c -> - let pro = argPron Fem n p c + reflPron : Number -> Person -> Case -> Str = \n,p,c -> + let pro = argPron Fem n p c in - case p of { + case p of { P3 => case c of { Acc | CPrep P_a => "se" ; _ => "sí" } ; _ => pro - } ; + } ; - argPron : Gender -> Number -> Person -> Case -> Str = - let + argPron : Gender -> Number -> Person -> Case -> Str = + let cases : (x,y : Str) -> Case -> Str = \me,moi,c -> case c of { Acc | CPrep P_a => me ; _ => moi @@ -189,8 +190,8 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg CPrep P_a => leur ; _ => eux } ; - in - \g,n,p -> case < : Gender * Number * Person> of { + in + \g,n,p -> case < : Gender * Number * Person> of { <_,Sg,P1> => cases "me" "mí" ; <_,Sg,P2> => cases "te" "tí" ; <_,Pl,P1> => cases "nos" "nosotras" ; --- nosotros @@ -210,7 +211,7 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg copula, essere_V : Verb = verbBeschH (ser_1 "ser") ; estar_V, stare_V, auxPassive : Verb = verbBeschH (estar_2 "estar") ; - + haber_V : Verb = verbBeschH (haber_3 "haber") ; verbBeschH : Verbum -> Verb = \v -> verbBesch v ** {vtyp = VHabere ; p = []} ; diff --git a/src/spanish/ParadigmsSpa.gf b/src/spanish/ParadigmsSpa.gf index 0993d935e..a276334dd 100644 --- a/src/spanish/ParadigmsSpa.gf +++ b/src/spanish/ParadigmsSpa.gf @@ -436,6 +436,23 @@ oper _ => verboV (regAlternVEr x y) } ; + -- hack for verbs like parecer. + -- NB. doesn't work properly for gustar, which agrees with the object. + dativeV : V -> V = \parecer -> parecer ** { + s = table { + VFin m n p => case of { + => "me" ; + => "te" ; + => "le" ; + => "nos" ; + => "os" ; + => "les" } ++ parecer.s ! VFin m Sg P3 ; + VImper n => case n of { + SgP2 => "que te" ; + PlP1 => "que nos" ; + PlP2 => "que os" } ++ parecer.s ! VFin (VPres Conjunct) Sg P3 ; + x => parecer.s ! x } + } ; mk2V2 v p = lin V2 (v ** {c2 = p}) ;