diff --git a/src/spanish/DiffSpa.gf b/src/spanish/DiffSpa.gf index 3812175e4..ce847a365 100644 --- a/src/spanish/DiffSpa.gf +++ b/src/spanish/DiffSpa.gf @@ -1,6 +1,6 @@ --# -path=.:../romance:../abstract:../common:prelude -instance DiffSpa of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRomance, PhonoSpa, BeschSpa, Prelude in { +instance DiffSpa of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits,contractInf] = open CommonRomance, PhonoSpa, BeschSpa, Prelude in { flags optimize=noexpand ; coding=utf8 ; @@ -10,7 +10,7 @@ instance DiffSpa of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRo partAgr : VType -> Bool = \vtyp -> False ; vpAgrSubj : Verb -> VPAgrType = \v -> ; vpAgrClits : Verb -> AAgr -> VPAgrType = \v,a -> ; - + contractInf : Bool -> Bool -> Bool = orB ; --- the effect of this is that the clitic is bound to the infinitive: matarte -------------------------------- param diff --git a/src/spanish/MakeStructuralSpa.gf b/src/spanish/MakeStructuralSpa.gf index 4caa705e1..235cefe8a 100644 --- a/src/spanish/MakeStructuralSpa.gf +++ b/src/spanish/MakeStructuralSpa.gf @@ -20,4 +20,56 @@ oper } ; + mkQuant = overload { + -- Does not inflect for number or gender + mkQuant : Str -> Quant = \s -> + let + questo : Number => Gender => Case => Str = \\n,g,c => prepCase c ++ s ; + in lin Quant { + s = \\b => questo ; + sp = questo ; + s2 = [] ; + isNeg = False + } ; + -- Inflects for number and gender + mkQuant : Str -> Str -> Str -> Str -> Quant = \tutto,tutta,tutti,tutte -> + let + questo : Number => Gender => Case => Str = table { + Sg => table { + Masc => \\c => prepCase c ++ tutto ; + Fem => \\c => prepCase c ++ tutta + } ; + Pl => table { + Masc => \\c => prepCase c ++ tutti ; + Fem => \\c => prepCase c ++ tutte + } + } + in lin Quant { + s = \\b => questo ; + sp = questo ; + s2 = [] ; + isNeg = False + } ; + } ; + + mkDet = overload { + -- Does not inflect for number + mkDet : Str -> Number -> Det = \piu,n -> lin Det { + s,sp = \\_,_ => piu ; + n = n ; + s2 = [] ; + isNeg = False + } ; + -- Inflects for number + mkDet : Str -> Str -> Number -> Det = \alcuni,alcune,n -> lin Det { + s,sp = table { + Masc => \\_ => alcuni ; + Fem => \\_ => alcune + } ; + n = n ; + s2 = [] ; + isNeg = False + } ; + } ; + }