diff --git a/src/catalan/StructuralCat.gf b/src/catalan/StructuralCat.gf index 4833b786..65ae557b 100644 --- a/src/catalan/StructuralCat.gf +++ b/src/catalan/StructuralCat.gf @@ -30,11 +30,16 @@ lin during_Prep = mkPrep "durant" ; ---- either7or_DConj = {s1,s2 = "o" ; n = Sg} ; everybody_NP = makeNP ["tothom"] Masc Sg ; - every_Det = {s,sp = \\_,_ => "cada" ; n = Sg ; s2 = [] ; isNeg = False} ; + every_Det = { + s,sp = \\_,_ => "cada"; + spn =\\c => prepCase c ++ "tot" ; + n = Sg ; s2 = [] ; isNeg = False} ; everything_NP = pn2np (mkPN "tot" Masc) ; everywhere_Adv = ss ["a tot arreu"] ; few_Det = { - s,sp = \\g,c => prepCase c ++ genForms "pocs" "poques" ! g ; n = Pl ; s2 = [] ; isNeg = False} ; + s,sp = \\g,c => prepCase c ++ genForms "pocs" "poques" ! g ; + spn = \\c => prepCase c ++ "pocs" ; + n = Pl ; s2 = [] ; isNeg = False} ; --- first_Ord = {s = \\ag => (regA "primer").s ! Posit ! AF ag.g ag.n} ; for_Prep = mkPrep ["per a"] ; from_Prep = complGen ; --- @@ -64,12 +69,16 @@ lin less_CAdv = X.mkCAdv "menys" conjThan ; ---- many_Det = { - s,sp = \\g,c => prepCase c ++ genForms "molts" "moltes" ! g ; n = Pl ; s2 = [] ; isNeg = False} ; + s,sp = \\g,c => prepCase c ++ genForms "molts" "moltes" ! g ; + spn = \\c => prepCase c ++ "molts" ; + n = Pl ; s2 = [] ; isNeg = False} ; more_CAdv = X.mkCAdv "més" conjThan ; most_Predet = {s = \\_,c => prepCase c ++ ["la majoria"] ; c = CPrep P_de ; a = PNoAg} ; much_Det = { - s,sp = \\g,c => prepCase c ++ genForms "molt" "molta" ! g ; n = Sg ; s2 = [] ; isNeg = False} ; + s,sp = \\g,c => prepCase c ++ genForms "molt" "molta" ! g ; + spn = \\c => prepCase c ++ "molt" ; + n = Sg ; s2 = [] ; isNeg = False} ; must_VV = deVV (verbV (haver_59 "haver" True)) ; no_Utt = ss "no" ; on_Prep = mkPrep "sobre" ; @@ -89,10 +98,14 @@ lin Fem Sg P3 ; so_AdA = ss "tan" ; somebody_NP = pn2np (mkPN ["alg˙"] Masc) ; - somePl_Det = {s,sp = - \\g,c => prepCase c ++ genForms "alguns" "algunes" ! g ; n = Pl ; s2 = [] ; isNeg = False} ; + somePl_Det = { + s,sp = \\g,c => prepCase c ++ genForms "alguns" "algunes" ! g ; + spn = \\c => prepCase c ++ "alguns" ; + n = Pl ; s2 = [] ; isNeg = False} ; someSg_Det = { - s,sp = \\g,c => prepCase c ++ genForms "algun" "alguna" ! g ; n = Sg ; s2 = [] ; isNeg = False} ; + s,sp = \\g,c => prepCase c ++ genForms "algun" "alguna" ! g ; + spn = \\c => prepCase c ++ "quelcom" ; + n = Sg ; s2 = [] ; isNeg = False} ; something_NP = pn2np (mkPN ["quelcom"] Masc) ; somewhere_Adv = ss ["a algun lloc"] ; that_Quant = @@ -103,6 +116,7 @@ lin in { s = \\_ => aquell ; sp = aquell ; + spn= aquell ! Sg ! Masc ; s2 = [] ; isNeg = False } ; there_Adv = mkAdv "allà" ; -- all· @@ -122,6 +136,7 @@ lin in { s = \\_ => aquest ; sp = aquest ; + spn= aquest ! Sg ! Masc ; s2 = [] ; isNeg = False } ; through_Prep = mkPrep "mitjançant" ; @@ -172,7 +187,7 @@ oper lin if_then_Conj = {s1 = "si" ; s2 = "llavors" ; n = Sg ; lock_Conj = <>} ; - + no_Quant = let capS : Str = "cap" ; @@ -183,6 +198,7 @@ lin in { s = \\_ => cap ; sp = cap ; + spn= \\c => prepCase c ++ "res" ; s2 = [] ; isNeg = True } ; nobody_NP = pn2npNeg (mkPN "ningú") ; diff --git a/src/french/ExtendFre.gf b/src/french/ExtendFre.gf index 02b2915e..61ea2f9d 100644 --- a/src/french/ExtendFre.gf +++ b/src/french/ExtendFre.gf @@ -61,4 +61,32 @@ lin ApposNP np1 np2 = np1 ** { -- guessed by KA lin CompoundN a b = lin N {s = \\n => b.s ! n ++ a.s ! Sg ; g = b.g} ; -- connessione internet = internet connection +lin UseDAP = \dap -> + let + g = Masc ; + n = dap.n + in heavyNPpol dap.isNeg { + s = dap.spn ; + a = agrP3 g n ; + hasClit = False + } ; + UseDAPMasc = \dap -> + let + g = Masc ; + n = dap.n + in heavyNPpol dap.isNeg { + s = dap.sp ! g ; + a = agrP3 g n ; + hasClit = False + } ; + UseDAPFem dap = + let + g = Fem ; + n = dap.n + in heavyNPpol dap.isNeg { + s = dap.sp ! g ; + a = agrP3 g n ; + hasClit = False + } ; + } diff --git a/src/french/ExtraFre.gf b/src/french/ExtraFre.gf index 73f76d6d..8be0ae77 100644 --- a/src/french/ExtraFre.gf +++ b/src/french/ExtraFre.gf @@ -74,8 +74,8 @@ concrete ExtraFre of ExtraFreAbs = ExtraRomanceFre ** lin tout_Det = { - s = \\g,c => prepCase c ++ genForms "tout" "toute" ! g ; - sp = \\g,c => prepCase c ++ genForms "tout" "toute" ! g ; + s,sp = \\g,c => prepCase c ++ genForms "tout" "toute" ! g ; + spn= \\c => prepCase c ++ "tout" ; n = Sg ; s2 = [] ; isNeg = False diff --git a/src/french/MakeStructuralFre.gf b/src/french/MakeStructuralFre.gf index 5969d05a..c7285f90 100644 --- a/src/french/MakeStructuralFre.gf +++ b/src/french/MakeStructuralFre.gf @@ -23,6 +23,7 @@ oper in lin Quant { s = \\_ => aucun ; sp = aucun ; + spn= \\c => prepCase c ++ sm ; s2 = [] ; isNeg = False } ; @@ -38,9 +39,15 @@ oper mkInterj : Str -> Interj = \s -> lin Interj (ss s) ; mkDet = overload { - mkDet : Str -> Det = \s -> lin Det {s,sp = \\_,c => prepCase c ++ s ; n = Sg ; s2 = [] ; isNeg = False} ; + mkDet : Str -> Det = \s -> lin Det { + s,sp = \\_,c => prepCase c ++ s ; + spn = \\c => prepCase c ++ s ; + n = Sg ; s2 = [] ; isNeg = False + } ; mkDet : Str -> Str -> Number -> Det = \m,f,n -> lin Det { - s,sp = \\g,c => prepCase c ++ case g of {Masc => m ; Fem => f} ; n = n ; s2 = [] ; isNeg = False + s,sp = \\g,c => prepCase c ++ case g of {Masc => m ; Fem => f} ; + spn = \\c => prepCase c ++ m ; + n = n ; s2 = [] ; isNeg = False } ; } ; diff --git a/src/french/StructuralFre.gf b/src/french/StructuralFre.gf index 9af3fb3e..0a9028e3 100644 --- a/src/french/StructuralFre.gf +++ b/src/french/StructuralFre.gf @@ -36,13 +36,17 @@ lin every_Det = { s = \\_,c => prepCase c ++ "chaque" ; sp = \\g,c => prepCase c ++ genForms "chacun" "chacune" ! g ; - n = Sg ; + spn= \\c => prepCase c ++ "tout" ; + n = Sg ; s2 = [] ; isNeg = False } ; everything_NP = pn2np (mkPN ["tout"] Masc) ; everywhere_Adv = ss "partout" ; - few_Det = {s,sp = \\g,c => prepCase c ++ "peu" ++ elisDe ; n = Pl ; s2 = [] ; isNeg = False} ; + few_Det = { + s,sp = \\g,c => prepCase c ++ "peu" ++ elisDe ; + spn = \\c => prepCase c ++ "peu" ++ elisDe ; + n = Pl ; s2 = [] ; isNeg = False} ; --- DEPREC first_Ord = {s = \\ag => (regA "premier").s ! Posit ! AF ag.g ag.n} ; for_Prep = mkPreposition "pour" ; from_Prep = complGen ; --- @@ -68,10 +72,15 @@ lin "il" (elision "l") "lui" "lui" "son" (elisPoss "s") "ses" Masc Sg P3 ; less_CAdv = X.mkCAdv "moins" conjThan ; - many_Det = {s,sp = \\_,c => prepCase c ++ "plusieurs" ; n = Pl ; s2 = [] ; isNeg = False} ; + many_Det = { + s,sp = \\_,c => prepCase c ++ "plusieurs" ; + spn = \\c => prepCase c ++ "plusieurs" ; + n = Pl ; s2 = [] ; isNeg = False} ; more_CAdv = X.mkCAdv "plus" conjThan ; most_Predet = {s = \\_,c => prepCase c ++ ["la plupart"] ; c = CPrep P_de ; a = PNoAg} ; - much_Det = {s,sp = \\_,c => prepCase c ++ "beaucoup" ++ elisDe ; n = Pl ; s2 = [] ; isNeg = False} ; + much_Det = {s,sp = \\_,c => prepCase c ++ "beaucoup" ++ elisDe ; + spn = \\c => prepCase c ++ "beaucoup" ++ elisDe ; + n = Pl ; s2 = [] ; isNeg = False} ; must_VV = mkVV (devoir_V2 ** {lock_V = <>}) ; ---b no_Phr = ss "non" ; no_Utt = ss "non" ; @@ -91,8 +100,14 @@ lin so_AdA = ss "si" ; somebody_NP = pn2np (mkPN ["quelqu'un"] Masc) ; - somePl_Det = {s,sp = \\_,c => prepCase c ++ "quelques" ; n = Pl ; s2 = [] ; isNeg = False} ; ---- sp - someSg_Det = {s,sp = \\_,c => prepCase c ++ "quelque" ; n = Sg ; s2 = [] ; isNeg = False} ; ----sp + somePl_Det = { + s,sp = \\_,c => prepCase c ++ "quelques" ; + spn = \\c => prepCase c ++ "quelque chose" ; + n = Pl ; s2 = [] ; isNeg = False} ; ---- sp + someSg_Det = { + s,sp = \\_,c => prepCase c ++ "quelque" ; + spn = \\c => prepCase c ++ "quelque chose" ; + n = Sg ; s2 = [] ; isNeg = False} ; ----sp something_NP = pn2np (mkPN ["quelque chose"] Masc) ; somewhere_Adv = ss ["quelque part"] ; --- ne - pas @@ -106,6 +121,7 @@ lin Sg => \\g,c => prepCase c ++ genForms "celui-là" "celle-là" ! g ; Pl => \\g,c => prepCase c ++ genForms "ceux-là" "celles-là" ! g } ; + spn= \\c => prepCase c ++ "celui-là" ; s2 = [] ; ---- "-là" ; isNeg = False } ; @@ -130,6 +146,7 @@ lin Sg => \\g,c => prepCase c ++ genForms "celui-ci" "celle-ci" ! g ; Pl => \\g,c => prepCase c ++ genForms "ceux-ci" "celles-ci" ! g } ; + spn= \\c => prepCase c ++ "cela" ; s2 = [] ; ---- "-ci" isNeg = False } ; @@ -188,6 +205,7 @@ lin in { s = \\_ => aucun ; sp = aucun ; + spn= aucun ! Sg ! Masc ; s2 = [] ; isNeg = True } ; diff --git a/src/italian/ExtraIta.gf b/src/italian/ExtraIta.gf index 40933568..79eeee9c 100644 --- a/src/italian/ExtraIta.gf +++ b/src/italian/ExtraIta.gf @@ -39,6 +39,7 @@ concrete ExtraIta of ExtraItaAbs = ExtraRomanceIta ** PossFamQuant p = { s = \\_,n,g,c => case n of {Sg => prepCase c ; _ => possCase g n c} ++ p.poss ! n ! g ; sp = \\ n,g,c => case n of {Sg => prepCase c ; _ => possCase g n c} ++ p.poss ! n ! g ; + spn= \\ c => prepCase c ++ p.poss ! Sg ! Masc ; s2 = [] ; isNeg = False } ; diff --git a/src/italian/MakeStructuralIta.gf b/src/italian/MakeStructuralIta.gf index 8cd9aa6c..34a4d365 100644 --- a/src/italian/MakeStructuralIta.gf +++ b/src/italian/MakeStructuralIta.gf @@ -34,6 +34,7 @@ oper in lin Quant { s = \\b => questo ; sp = questo ; + spn= \\c => prepCase c ++ s ; s2 = [] ; isNeg = False } ; @@ -53,6 +54,7 @@ oper in lin Quant { s = \\b => questo ; sp = questo ; + spn= \\c => prepCase c ++ tutto ; s2 = [] ; isNeg = False } ; @@ -62,6 +64,7 @@ oper -- Does not inflect for number mkDet : Str -> Number -> Det = \piu,n -> lin Det { s,sp = \\_,_ => piu ; + spn = \\_ => piu ; n = n ; s2 = [] ; isNeg = False @@ -72,6 +75,7 @@ oper Masc => \\_ => alcuni ; Fem => \\_ => alcune } ; + spn = \\_ => alcuni ; n = n ; s2 = [] ; isNeg = False diff --git a/src/italian/StructuralIta.gf b/src/italian/StructuralIta.gf index 257e9ecb..4001dffe 100644 --- a/src/italian/StructuralIta.gf +++ b/src/italian/StructuralIta.gf @@ -31,10 +31,16 @@ lin during_Prep = mkPrep "durante" ; either7or_DConj = {s1,s2 = "o" ; n = Sg} ; everybody_NP = makeNP ["tutti"] Masc Pl ; - every_Det = {s,sp = \\_,_ => "ogni" ; n = Sg ; s2 = [] ; isNeg = False} ; + every_Det = { + s,sp = \\_,_ => "ogni" ; + spn = \\c => prepCase c ++ "tutto" ; + n = Sg ; s2 = [] ; isNeg = False} ; everything_NP = pn2np (mkPN ["tutto"] Masc) ; everywhere_Adv = ss "dappertutto" ; - few_Det = {s,sp = \\g,c => prepCase c ++ genForms "pochi" "poche" ! g ; n = Pl ; s2 = [] ; isNeg = False} ; + few_Det = { + s,sp = \\g,c => prepCase c ++ genForms "pochi" "poche" ! g ; + spn = \\c => prepCase c ++ "pochi" ; + n = Pl ; s2 = [] ; isNeg = False} ; ---- first_Ord = {s = \\ag => (regA "primo").s ! Posit ! AF ag.g ag.n} ; for_Prep = mkPrep "per" ; from_Prep = da_Prep ; @@ -60,11 +66,17 @@ lin "lui" "lo" "gli" "glie" "lui" "suo" "sua" "suoi" "sue" Masc Sg P3 ; less_CAdv = X.mkCAdv "meno" conjThan ; - many_Det = {s,sp = \\g,c => prepCase c ++ genForms "molti" "molte" ! g ; n = Pl ; s2 = [] ; isNeg = False} ; + many_Det = { + s,sp = \\g,c => prepCase c ++ genForms "molti" "molte" ! g ; + spn = \\c => prepCase c ++ "molto" ; + n = Pl ; s2 = [] ; isNeg = False} ; more_CAdv = X.mkCAdv "più" conjThan ; most_Predet = {s = \\_,c => prepCase c ++ ["la maggior parte"] ; c = CPrep P_di ; a = PNoAg} ; - much_Det = {s,sp = \\g,c => prepCase c ++ genForms "molto" "molta" ! g ; n = Sg ; s2 = [] ; isNeg = False} ; + much_Det = { + s,sp = \\g,c => prepCase c ++ genForms "molto" "molta" ! g ; + spn = \\c => prepCase c ++ "molto" ; + n = Sg ; s2 = [] ; isNeg = False} ; must_VV = mkVV (verboV (dovere_47 "dovere")) ; no_Utt = ss "no" ; on_Prep = {s = [] ; c = CPrep P_su ; isDir = False} ; @@ -83,8 +95,14 @@ lin Fem Sg P3 ; so_AdA = ss "così" ; somebody_NP = pn2np (mkPN ["qualcuno"] Masc) ; - somePl_Det = {s,sp = \\_,c => prepCase c ++ "qualche" ; n = Pl ; s2 = [] ; isNeg = False} ; - someSg_Det = {s,sp = \\_,c => prepCase c ++ "qualche" ; n = Sg ; s2 = [] ; isNeg = False} ; + somePl_Det = { + s,sp = \\_,c => prepCase c ++ "qualche" ; + spn = \\c => prepCase c ++ "qualche cosa" ; + n = Pl ; s2 = [] ; isNeg = False} ; + someSg_Det = { + s,sp = \\_,c => prepCase c ++ "qualche" ; + spn = \\c => prepCase c ++ "qualche cosa" ; + n = Sg ; s2 = [] ; isNeg = False} ; something_NP = pn2np (mkPN ["qualche cosa"] Masc) ; somewhere_Adv = ss ["qualche parte"] ; that_Quant = let @@ -98,6 +116,7 @@ lin quello (elision "quel" "quell'" "quello") (elision "quei" "quegli" "quegli") ; sp = quello "quello" "quelli" ; + spn= \\c => prepCase c ++ "quello" ; s2 = [] ; isNeg = False } ; @@ -118,6 +137,7 @@ lin in { s = \\_ => questo ; sp = questo ; + spn= \\c => prepCase c ++ "questo" ; s2 = [] ; isNeg = False } ; @@ -169,6 +189,7 @@ lin in { s = \\_ => aucun ; sp = aucun ; + spn= \\c => prepCase c ++ "nessuno" ; s2 = [] ; isNeg = True } ; diff --git a/src/portuguese/MorphoPor.gf b/src/portuguese/MorphoPor.gf index ac95daef..982f96b0 100644 --- a/src/portuguese/MorphoPor.gf +++ b/src/portuguese/MorphoPor.gf @@ -254,7 +254,7 @@ oper s = \\ag => adj.s ! genNum2Aform ag.g ag.n ; } ; - mkQuantifier : (esse,essa,esses,essas : Str) -> Quant = \esse,essa,esses,essas-> + mkQuantifier : (esse,essa,esses,essas,esso : Str) -> Quant = \esse,essa,esses,essas,esso-> let attrforms : Number => Gender => Case => Str = table { Sg => \\g,c => prepCase c ++ genForms esse essa ! g ; @@ -264,12 +264,14 @@ oper s = \\_ => attrforms ; s2 = [] ; sp = attrforms ; -- in spanish it was different + spn= \\c => prepCase c ++ esso ; isNeg = False } ; mkDeterminer : (muito,muita : Str) -> Number -> Bool -> Det = \muito,muita,number,neg -> lin Det { s,sp = \\g,c => prepCase c ++ genForms muito muita ! g ; + spn = \\c => prepCase c ++ muito ; n = number; s2 = [] ; isNeg = neg diff --git a/src/portuguese/StructuralPor.gf b/src/portuguese/StructuralPor.gf index 953bfe7a..782e1964 100644 --- a/src/portuguese/StructuralPor.gf +++ b/src/portuguese/StructuralPor.gf @@ -102,6 +102,7 @@ concrete StructuralPor of Structural = CatPor ** in { s = \\_ => nenhum ; sp = nenhum ; + spn= \\c => prepCase c ++ "nada" ; s2 = [] ; isNeg = True } ; no_Utt = ss "não" ; @@ -124,13 +125,13 @@ concrete StructuralPor of Structural = CatPor ** someSg_Det = mkDeterminer "algum" "alguma" Sg False ; something_NP = pn2np (mkPN "algo" Masc) ; somewhere_Adv = ss ["em algum lugar"] ; - that_Quant = mkQuantifier "esse" "essa" "esses" "essas" ; + that_Quant = mkQuantifier "esse" "essa" "esses" "essas" "isso" ; there_Adv = mkAdv "ali" ; -- lá there7to_Adv = mkAdv ["para lá"] ; there7from_Adv = mkAdv "dali" ; therefore_PConj = ss ["por isso"] ; - this_Quant = mkQuantifier "este" "esta" "estes" "estas" ; + this_Quant = mkQuantifier "este" "esta" "estes" "estas" "isto" ; through_Prep = mkPrep [] ablative ; -- por too_AdA = ss "demasiado" ; -- o certo seria demais como postfix to_Prep = complDat ; diff --git a/src/romance/CatRomance.gf b/src/romance/CatRomance.gf index 14af013d..4fe38778 100644 --- a/src/romance/CatRomance.gf +++ b/src/romance/CatRomance.gf @@ -67,12 +67,14 @@ incomplete concrete CatRomance of Cat = CommonX - [SC,Pol,MU] n : Number ; s2 : Str ; -- -ci sp : Gender => Case => Str ; -- substantival: mien, mienne + spn: Case => Str ; isNeg : Bool -- negative element, e.g. aucun } ; Quant = { s : Bool => Number => Gender => Case => Str ; s2 : Str ; sp : Number => Gender => Case => Str ; + spn: Case => Str ; -- neutral Spa: esto, eso, Por: isto, isso isNeg : Bool -- negative element, e.g. aucun } ; Predet = { diff --git a/src/romance/ExtendRomanceFunctor.gf b/src/romance/ExtendRomanceFunctor.gf index 03c24e01..8e752710 100644 --- a/src/romance/ExtendRomanceFunctor.gf +++ b/src/romance/ExtendRomanceFunctor.gf @@ -27,6 +27,7 @@ incomplete concrete ExtendRomanceFunctor of Extend = let denp = (np.s ! ResRomance.genitive).ton in { s = \\_,_,_,_ => [] ; sp = \\_,_,_ => denp ; + spn= \\_ => denp ; s2 = denp ; isNeg = False ; } ; @@ -240,7 +241,16 @@ incomplete concrete ExtendRomanceFunctor of Extend = } ; - UseDAP, UseDAPMasc = \dap -> + UseDAP = \dap -> + let + g = Masc ; + n = dap.n + in heavyNPpol dap.isNeg { + s = dap.spn ; + a = agrP3 g n ; + hasClit = False + } ; + UseDAPMasc = \dap -> let g = Masc ; n = dap.n diff --git a/src/romance/NounRomance.gf b/src/romance/NounRomance.gf index d35f04cd..0fe65659 100644 --- a/src/romance/NounRomance.gf +++ b/src/romance/NounRomance.gf @@ -55,6 +55,8 @@ incomplete concrete NounRomance of Noun = DetQuantOrd quant num ord = { s,sp = \\g,c => quant.s ! num.isNum ! num.n ! g ! c ++ num.s ! g ++ ord.s ! aagr g num.n ; + spn = \\c => quant.s ! num.isNum ! num.n ! Masc ! c ++ num.s ! Masc ++ + ord.s ! aagr Masc num.n ; s2 = quant.s2 ; n = num.n ; isNeg = quant.isNeg @@ -66,6 +68,10 @@ incomplete concrete NounRomance of Noun = True => quant.s ! True ! num.n ! g ! c ++ num.s ! g ; False => quant.sp ! num.n ! g ! c ++ num.s ! g } ; + spn= \\c => case num.isNum of { + True => quant.s ! True ! num.n ! Masc ! c ++ num.s ! Masc ; + False => quant.spn ! c ++ num.s ! Masc + } ; s2 = quant.s2 ; n = num.n ; isNeg = quant.isNeg @@ -84,6 +90,7 @@ incomplete concrete NounRomance of Noun = PossPron p = { s = \\_,n,g,c => possCase g n c ++ p.poss ! n ! g ; ---- il mio! sp = \\ n,g,c => possCase g n c ++ p.poss ! n ! g ; ---- not for Fre + spn= \\ c => possCase Masc Sg c ++ p.poss ! Sg ! Masc ; ---- not for Fre s2 = [] ; isNeg = False } ; @@ -117,6 +124,7 @@ incomplete concrete NounRomance of Noun = DefArt = { s = \\_,n,g,c => artDef False g n c ; sp = \\n,g,c => artDef True g n c ; + spn= \\c => artDef True Masc Sg c ; s2 = [] ; isNeg = False } ; @@ -124,6 +132,7 @@ incomplete concrete NounRomance of Noun = IndefArt = { s = \\b,n,g,c => if_then_Str b (prepCase c) (artIndef False g n c) ; sp = \\n,g,c => artIndef True g n c ; + spn= \\c => artIndef True Masc Sg c ; s2 = [] ; isNeg = False } ; @@ -202,6 +211,7 @@ incomplete concrete NounRomance of Noun = n = det.n ; s2 = det.s2 ; -- -ci sp = \\g,c => det.s ! g ! c ++ ap.s ! genNum2Aform g det.n ; + spn= \\c => det.s ! Masc ! c ++ ap.s ! genNum2Aform Masc det.n ; isNeg = det.isNeg } ; diff --git a/src/spanish/MakeStructuralSpa.gf b/src/spanish/MakeStructuralSpa.gf index bda2f96f..42768b33 100644 --- a/src/spanish/MakeStructuralSpa.gf +++ b/src/spanish/MakeStructuralSpa.gf @@ -28,11 +28,12 @@ oper in lin Quant { s = \\b => questo ; sp = questo ; + spn= \\c => prepCase c ++ s ; s2 = [] ; isNeg = False } ; -- Inflects for number and gender - mkQuant : Str -> Str -> Str -> Str -> Quant = \tutto,tutta,tutti,tutte -> + mkQuant : Str -> Str -> Str -> Str -> Str -> Quant = \tutto,tutta,tutti,tutte,esto -> let questo : Number => Gender => Case => Str = table { Sg => table { @@ -47,6 +48,7 @@ oper in lin Quant { s = \\b => questo ; sp = questo ; + spn= \\c => prepCase c ++ "esto" ; s2 = [] ; isNeg = False } ; @@ -56,6 +58,7 @@ oper -- Does not inflect for number mkDet : Str -> Number -> Det = \piu,n -> lin Det { s,sp = \\_,c => prepCase c ++ piu ; + spn = \\c => prepCase c ++ piu ; n = n ; s2 = [] ; isNeg = False @@ -63,6 +66,7 @@ oper -- Inflects for number mkDet : Str -> Str -> Number -> Det = \alcuni,alcune,n -> lin Det { s,sp = \\g,c => prepCase c ++ genForms alcuni alcune ! g ; + spn = \\c => prepCase c ++ alcuni ; n = n ; s2 = [] ; isNeg = False diff --git a/src/spanish/MorphoSpa.gf b/src/spanish/MorphoSpa.gf index fd13665c..28516ddb 100644 --- a/src/spanish/MorphoSpa.gf +++ b/src/spanish/MorphoSpa.gf @@ -239,29 +239,27 @@ oper s = \\ag => adj.s ! genNum2Aform ag.g ag.n ; } ; - mkQuantifier : (ese,esa,esos,esas : Str) -> Quant = \ese,esa,esos,esas-> + mkQuantifier : (ese,esa,esos,esas,eso : Str) -> Quant = \ese,esa,esos,esas,eso-> let - se : Str = Predef.drop 1 ese ; - sa : Str = Predef.drop 1 esa ; - sos : Str = Predef.drop 1 esos ; - sas : Str = Predef.drop 1 esas ; - E : Str = "é" ; attrforms : Number => Gender => Case => Str = table { Sg => \\g,c => prepCase c ++ genForms ese esa ! g ; Pl => \\g,c => prepCase c ++ genForms esos esas ! g ---- } ; npforms : Number => Gender => Case => Str = table { - Sg => \\g,c => prepCase c ++ genForms (E + se) (E + sa) ! g ; - Pl => \\g,c => prepCase c ++ genForms (E + sos) (E + sas) ! g } + Sg => \\g,c => prepCase c ++ genForms ese esa ! g ; + Pl => \\g,c => prepCase c ++ genForms esos esas ! g } in lin Quant { s = \\_ => attrforms ; s2 = [] ; - sp = npforms ; isNeg = False + sp = npforms ; + spn= \\c => prepCase c ++ eso ; + isNeg = False } ; mkDeterminer : (mucho,mucha : Str) -> Number -> Bool -> Det = \mucho,mucha,number,neg -> lin Det { s,sp = \\g,c => prepCase c ++ genForms mucho mucha ! g ; + spn = \\c => prepCase c ++ mucho ; n = number; s2 = [] ; isNeg = neg diff --git a/src/spanish/StructuralSpa.gf b/src/spanish/StructuralSpa.gf index 8efabbab..c617dc8b 100644 --- a/src/spanish/StructuralSpa.gf +++ b/src/spanish/StructuralSpa.gf @@ -35,7 +35,10 @@ lin during_Prep = mkPrep "durante" ; either7or_DConj = {s1,s2 = "o" ; n = Sg} ; everybody_NP = makeNP ["todos"] Masc Pl ; - every_Det = mkDeterminer "cada" "cada" Sg False ; + every_Det = mkDeterminer "cada" "cada" Sg False ** { + sp = \\g,c => prepCase c ++ genForms "todos" "todas" ! g ; + spn = \\c => prepCase c ++ "todo" + }; everything_NP = pn2np (mkPN ["todo"] Masc) ; everywhere_Adv = ss ["en todas partes"] ; except_Prep = mkPrep "excepto" ; @@ -75,7 +78,8 @@ lin } in { s = \\_ => ningun ; - sp = ningun ; + sp = \\_,_,_ => "nadie" ; + spn= \\c => prepCase c ++ "nada" ; s2 = [] ; isNeg = True } ; no_Utt = ss "no" ; @@ -100,13 +104,13 @@ lin someSg_Det = mkDeterminer "algún" "alguna" Sg False ; something_NP = pn2np (mkPN ["algo"] Masc) ; somewhere_Adv = ss ["en alguna parte"] ; - that_Quant = mkQuantifier "ese" "esa" "esos" "esas" ; + that_Quant = mkQuantifier "ese" "esa" "esos" "esas" "eso" ; there_Adv = mkAdv "allí" ; -- allá there7to_Adv = mkAdv ["para allí"] ; there7from_Adv = mkAdv ["de allí"] ; therefore_PConj = ss ["por eso"] ; they_Pron = agr2pron ! {g=Masc ; n=Pl ; p=P3} ; - this_Quant = mkQuantifier "este" "esta" "estos" "estas" ; + this_Quant = mkQuantifier "este" "esta" "estos" "estas" "esto" ; through_Prep = mkPrep "por" ; too_AdA = ss "demasiado" ; to_Prep = complDat ;