From a3b75f842fb0703bdc9e995c2191bc7ae0212e61 Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 10 Dec 2004 07:13:01 +0000 Subject: [PATCH] spanish works although with bugs --- lib/resource/spanish/CategoriesSpa.gf | 4 +- lib/resource/spanish/MorphoSpa.gf | 75 ++++------- lib/resource/spanish/RulesSpa.gf | 4 +- lib/resource/spanish/StructuralSpa.gf | 116 ++++++++--------- lib/resource/spanish/SyntaxSpa.gf | 160 +++++++++++------------- lib/resource/spanish/TestResourceSpa.gf | 67 +++++----- lib/resource/spanish/TypesSpa.gf | 2 + 7 files changed, 196 insertions(+), 232 deletions(-) diff --git a/lib/resource/spanish/CategoriesSpa.gf b/lib/resource/spanish/CategoriesSpa.gf index a67201863..938e9775e 100644 --- a/lib/resource/spanish/CategoriesSpa.gf +++ b/lib/resource/spanish/CategoriesSpa.gf @@ -1,4 +1,4 @@ --# -path=.:../romance:../abstract:../../prelude -concrete CategoriesIta of Categories = - CategoriesRomance with (SyntaxRomance=SyntaxIta) ; +concrete CategoriesSpa of Categories = + CategoriesRomance with (SyntaxRomance=SyntaxSpa) ; diff --git a/lib/resource/spanish/MorphoSpa.gf b/lib/resource/spanish/MorphoSpa.gf index 48702970a..dfa535eb2 100644 --- a/lib/resource/spanish/MorphoSpa.gf +++ b/lib/resource/spanish/MorphoSpa.gf @@ -25,14 +25,7 @@ oper "a" ; "e" ; "h" ; "i" ; "o" ; "u" } ; - sImpuro : Strs = strs { - "z" ; "sb" ; "sc" ; "sd" ; "sf" ; "sm" ; "sp" ; "sq" ; "sr" ; "st" ; "sv" - } ; - - elision : (_,_,_ : Str) -> Str = \il, l', lo -> - pre {il ; l' / vocale ; lo / sImpuro} ; - - elisQue = "che" ; --- no elision in Italian + elisQue = "que" ; --- no elision in Italian elisDe = "de" ; --2 Nouns @@ -45,14 +38,11 @@ oper -- For example: - nomVino : Str -> Number => Str = \vino -> let {vin = Predef.tk 1 vino} in - numForms vino (vin + "i") ; + nomVino : Str -> Number => Str = \vino -> + numForms vino (vino + "s") ; - nomRana : Str -> Number => Str = \rana -> let {ran = Predef.tk 1 rana} in - numForms rana (ran + "e") ; - - nomSale : Str -> Number => Str = \sale -> let {sal = Predef.tk 1 sale} in - numForms sale (sal + "i") ; + nomPilar : Str -> Number => Str = \pilar -> + numForms pilar (pilar + "es") ; nomTram : Str -> Number => Str = \tram -> numForms tram tram ; @@ -86,15 +76,10 @@ oper let sol = Predef.tk 1 solo in - mkAdj solo (sol + "a") (sol + "i") (sol + "e") (sol + "amente") ; + mkAdj solo (sol + "a") (sol + "os") (sol + "as") (sol + "amente") ; - adjTale : Str -> Adj = \tale -> - let - tal = Predef.tk 1 tale ; - tali = tal + "i" ; - tala = if_then_Str (pbool2bool (Predef.occur (Predef.dp 1 tal) "lr")) tal tale - in - mkAdj tale tale tali tali (tala + "mente") ; + adjUtil : Str -> Str -> Adj = \util,utiles -> + mkAdj util util utiles utiles (util + "mente") ; adjBlu : Str -> Adj = \blu -> mkAdj blu blu blu blu blu ; --- @@ -134,11 +119,11 @@ oper -- It is simply a function depending on number and person. pronRefl : Number -> Person -> Str = \n,p -> case of { - => "mi" ; - => "ti" ; - <_, P3> => "si" ; - => "ci" ; - => "vi" + => "me" ; + => "te" ; + <_, P3> => "se" ; + => "nos" ; + => "vos" } ; @@ -149,11 +134,11 @@ oper pronForms : Adj -> Gender -> Number -> Str = \tale,g,n -> tale.s ! AF g n ; - qualPron : Gender -> Number -> Str = pronForms (adjTale "quale") ; + qualPron : Gender -> Number -> Str = pronForms (adjUtil "cuál" "cuales") ; - talPron : Gender -> Number -> Str = pronForms (adjTale "tale") ; + talPron : Gender -> Number -> Str = pronForms (adjUtil "tál" "tales") ; - tuttoPron : Gender -> Number -> Str = pronForms (adjSolo "tutto") ; + tuttoPron : Gender -> Number -> Str = pronForms (adjSolo "todo") ; --2 Articles -- @@ -161,36 +146,26 @@ oper -- elision. This is the simples definition we have been able to find. artDefTable : Gender => Number => Case => Str = \\g,n,c => case of { - <_, _, CPrep P_de> => prepArt g n "de" ; - <_, _, CPrep P_a> => prepArt g n "a" ; - => elision "il" "l'" "lo" ; - => elision "il" "l'" "lo" ; + => "del" ; + => "al" ; + => prepCase c ++ "el" ; - => elision "la" "l'" "la" ; - => elision "i" "gli" "gli" ; - => "le" - } ; - --- This auxiliary expresses the uniform rule. - - prepArt : Gender -> Number -> Tok -> Tok = \g,n,de -> case of { - => elision (de + "l") (de + "ll'") (de + "llo") ; - => elision (de + "i") (de + "gli") (de + "gli") ; - => elision (de + "lla") (de + "ll'") (de + "lla") ; - => de + "lle" + => prepCase c ++ "la" ; + => prepCase c ++ "los" ; + => prepCase c ++ "las" } ; --2 Verbs -- ---3 The Bescherell conjugations. +--3 The Bescherelle conjugations. -- -- The following conjugations tables were generated using FM software -- from a Haskell source. -- -- The verb "essere" is often used in syntax. --- verbEssere = verbPres (essere_5 "essere") AEsse ; --- verbAvere = verbPres (avere_6 "avere") AHabere ; + verbSer = verbPres (ser_7 "ser") AHabere ; + verbHaber = verbPres (haber_10 "haber") AHabere ; -- machine-generated GF code diff --git a/lib/resource/spanish/RulesSpa.gf b/lib/resource/spanish/RulesSpa.gf index f357ccab6..fb04a1b5d 100644 --- a/lib/resource/spanish/RulesSpa.gf +++ b/lib/resource/spanish/RulesSpa.gf @@ -1,4 +1,4 @@ --# -path=.:../romance:../abstract:../../prelude -concrete RulesIta of Rules = - RulesRomance with (SyntaxRomance=SyntaxIta) ; +concrete RulesSpa of Rules = + RulesRomance with (SyntaxRomance=SyntaxSpa) ; diff --git a/lib/resource/spanish/StructuralSpa.gf b/lib/resource/spanish/StructuralSpa.gf index 1e21374ed..21ee7135c 100644 --- a/lib/resource/spanish/StructuralSpa.gf +++ b/lib/resource/spanish/StructuralSpa.gf @@ -1,7 +1,7 @@ --# -path=.:../romance:../abstract:../../prelude -concrete StructuralIta of Structural = CategoriesIta, NumeralsIta ** - open SyntaxIta, MorphoIta, Prelude in { +concrete StructuralSpa of Structural = CategoriesSpa, NumeralsSpa ** + open SyntaxSpa, MorphoSpa, Prelude in { lin INP = pronNounPhrase pronJe ; @@ -19,32 +19,32 @@ lin --- TheyNP = pronNounPhrase (variants {pronIls ; pronElles}) ; - ThisNP = mkNameNounPhrase ["questo"] Masc ; - ThatNP = mkNameNounPhrase ["quello"] Masc ; - TheseNumNP n = mkNameNounPhrase ("questi" ++ n.s ! Masc) Masc ; - ThoseNumNP n = mkNameNounPhrase ("quelli" ++ n.s ! Masc) Masc ; + ThisNP = mkNameNounPhrase ["esto"] Masc ; + ThatNP = mkNameNounPhrase ["eso"] Masc ; + TheseNumNP n = mkNameNounPhrase ("éstos" ++ n.s ! Masc) Masc ; + ThoseNumNP n = mkNameNounPhrase ("ésos" ++ n.s ! Masc) Masc ; ItNP = pronNounPhrase pronIl ; EveryDet = chaqueDet ; - AllMassDet = mkDeterminer singular "tutto" "tutta" ; - AllNumDet = mkDeterminerNum plural ["tutti i"] ["tutte le"] ; --- gli + AllMassDet = mkDeterminer singular "todo" "toda" ; + AllNumDet = mkDeterminerNum plural ["todos los"] ["todas las"] ; WhichDet = quelDet ; - WhichNumDet = mkDeterminerNum plural "quali" "quali" ; + WhichNumDet = mkDeterminerNum plural "cuales" "cuales" ; MostsDet = plupartDet ; - MostDet = mkDeterminer1 singular (["la maggior parte"] ++ elisDe) ; --- de - SomeDet = mkDeterminer1 singular "qualche" ; - SomeNumDet = mkDeterminerNum plural "alcuni" "alcune" ; - NoDet = mkDeterminer singular "nessuno" "nessuna" ; --- non - NoNumDet = mkDeterminerNum plural "nessuni" "nessune" ; ---- ?? - AnyDet = mkDeterminer1 singular "qualche" ; --- - AnyNumDet = mkDeterminerNum plural "alcuni" "alcune" ; --- - ManyDet = mkDeterminer plural "molti" "molte" ; - MuchDet = mkDeterminer1 singular "molto" ; - ThisDet = mkDeterminer singular "questo" "questa" ; - ThatDet = mkDeterminer singular "quello" "quella" ; - TheseNumDet = mkDeterminerNum plural "questi" "queste" ; --- ci - ThoseNumDet = mkDeterminerNum plural "quelli" "quelle" ; --- quegli + MostDet = mkDeterminer1 singular (["la mayor parte"] ++ elisDe) ; --- de + SomeDet = mkDeterminer singular "alguno" "alguna" ; + SomeNumDet = mkDeterminerNum plural "algunos" "algunas" ; + NoDet = mkDeterminer singular "ninguno" "ninguna" ; --- non + NoNumDet = mkDeterminerNum plural "ningunos" "ningunas" ; ---- ?? + AnyDet = mkDeterminer singular "alguno" "alguna" ; --- + AnyNumDet = mkDeterminerNum plural "algunos" "algunas" ; --- + ManyDet = mkDeterminer plural "muchos" "muchas" ; + MuchDet = mkDeterminer1 singular "mucho" ; + ThisDet = mkDeterminer singular "esto" "esta" ; + ThatDet = mkDeterminer singular "eso" "esa" ; + TheseNumDet = mkDeterminerNum plural "estos" "estas" ; + ThoseNumDet = mkDeterminerNum plural "esos" "esas" ; UseNumeral n = {s = \\_ => n.s} ; ---- gender @@ -57,57 +57,57 @@ lin OrConj = ouConj ; BothAnd = etetConj ; EitherOr = ououConj ; - NeitherNor = niniConj ; --- requires ne ! + NeitherNor = niniConj ; IfSubj = siSubj ; WhenSubj = quandSubj ; PhrYes = ouiPhr ; PhrNo = nonPhr ; --- and also Si! - VeryAdv = ss "molto" ; - TooAdv = ss "troppo" ; - OtherwiseAdv = ss "altramente" ; - ThereforeAdv = ss "quindi" ; + VeryAdv = ss "muy" ; + TooAdv = ss "demasiado" ; + OtherwiseAdv = ss "otramente" ; + ThereforeAdv = ss ["por eso"] ; - EverybodyNP = mkNameNounPhrase ["tutti"] Masc ; - SomebodyNP = mkNameNounPhrase ["qualcuno"] Masc ; - NobodyNP = mkNameNounPhrase ["nessuno"] Masc ; --- ne - EverythingNP = mkNameNounPhrase ["tutto"] Masc ; - SomethingNP = mkNameNounPhrase ["qualche cosa"] Masc ; - NothingNP = mkNameNounPhrase ["niente"] Masc ; --- ne + EverybodyNP = mkNameNounPhrase ["todos"] Masc ; + SomebodyNP = mkNameNounPhrase ["algún"] Masc ; + NobodyNP = mkNameNounPhrase ["nadién"] Masc ; --- ne + EverythingNP = mkNameNounPhrase ["todo"] Masc ; + SomethingNP = mkNameNounPhrase ["algo"] Masc ; + NothingNP = mkNameNounPhrase ["nada"] Masc ; --- ne - CanVV = mkVerbVerbDir (verbPres (potere_72 "potere") AHabere) ; - CanKnowVV = mkVerbVerbDir (verbPres (sapere_81 "sapere") AHabere) ; - MustVV = mkVerbVerbDir (verbPres (dovere_50 "dovere") AHabere) ; - WantVV = mkVerbVerbDir (verbPres (volere_99 "volere") AHabere) ; +---- CanVV = mkVerbVerbDir (verbPres (potere_72 "potere") AHabere) ; +---- CanKnowVV = mkVerbVerbDir (verbPres (sapere_81 "sapere") AHabere) ; +---- MustVV = mkVerbVerbDir (verbPres (dovere_50 "dovere") AHabere) ; +---- WantVV = mkVerbVerbDir (verbPres (volere_99 "volere") AHabere) ; - EverywhereNP = ss "dappertutto" ; - SomewhereNP = ss ["qualche parte"] ; --- ne - pas - NowhereNP = ss ["nessun parte"] ; + EverywhereNP = ss ["en todas partes"] ; + SomewhereNP = ss ["en ninguna parte"] ; + NowhereNP = ss ["en alguna parte"] ; ---- AlthoughSubj = ss "benché" ** {m = Con} ; - AlmostAdv = ss "quasi" ; - QuiteAdv = ss "assai" ; + AlmostAdv = ss "casi" ; + QuiteAdv = ss "bastante" ; - InPrep = justCase (CPrep P_in) ; - OnPrep = justCase (CPrep P_su) ; + InPrep = justPrep "en" ; + OnPrep = justPrep "sobre" ; ---- ToPrep = justCase dative ; --- - ThroughPrep = justPrep "per" ; - AbovePrep = justPrep "sopra" ; - UnderPrep = justPrep "sotto" ; - InFrontPrep = justPrep "davanti" ; - BehindPrep = justPrep "dietro" ; - BetweenPrep = justPrep "tra" ; - FromPrep = justCase (CPrep P_da) ; - BeforePrep = justPrep "prima" ; - DuringPrep = justPrep "durante" ; - AfterPrep = justPrep "dopo" ; - WithPrep = justCase (CPrep P_con) ; - WithoutPrep = justPrep "senza" ; - ByMeansPrep = justPrep "per" ; + ThroughPrep = justPrep "por" ; + AbovePrep = justPrep "sobre" ; + UnderPrep = justPrep "bajo" ; + InFrontPrep = {s = "delante" ; c = genitive} ; + BehindPrep = {s = "detrás" ; c = genitive} ; + BetweenPrep = justPrep "entre" ; + FromPrep = justCase (CPrep P_de) ; + BeforePrep = {s = "antes" ; c = genitive} ; + DuringPrep = justPrep "durante" ; ---- + AfterPrep = {s = "después" ; c = genitive} ; + WithPrep = justPrep "con" ; + WithoutPrep = justPrep "sin" ; + ByMeansPrep = justPrep "por" ; PossessPrep = justCase genitive ; PartPrep = justCase genitive ; --- - AgentPrep = justCase (CPrep P_da) ; + AgentPrep = justPrep "por" ; } diff --git a/lib/resource/spanish/SyntaxSpa.gf b/lib/resource/spanish/SyntaxSpa.gf index e7dbf4b18..a98452454 100644 --- a/lib/resource/spanish/SyntaxSpa.gf +++ b/lib/resource/spanish/SyntaxSpa.gf @@ -1,7 +1,7 @@ --# -path=.:../romance:../../prelude -instance SyntaxIta of SyntaxRomance = - TypesIta ** open Prelude, (CO=Coordination), MorphoIta in { +instance SyntaxSpa of SyntaxRomance = + TypesSpa ** open Prelude, (CO=Coordination), MorphoSpa in { oper nameNounPhrase = \jean -> normalNounPhrase @@ -9,25 +9,25 @@ oper jean.g Sg ; - nounPhraseOn = mkNameNounPhrase "si" Masc ; --- can be plural dep. on object + nounPhraseOn = mkNameNounPhrase "se" Masc ; --- can be plural dep. on object partitiveNounPhrase = \n,vino -> normalNounPhrase (table { - CPrep P_di => elisDe ++ vino.s ! n ; - c => prepCase c ++ artDef vino.g n (CPrep P_di) ++ vino.s ! n + CPrep P_de => elisDe ++ vino.s ! n ; + c => prepCase c ++ artDef vino.g n (CPrep P_de) ++ vino.s ! n } ) vino.g n ; - chaqueDet = mkDeterminer1 Sg "ogni" ; - tousDet = mkDeterminer Pl ["tutti i"] ["tutte le"] ; --- gli - plupartDet = mkDeterminer1 Pl ["la maggior parte di"] ; --- dei, degli, delle + chaqueDet = mkDeterminer1 Sg "cada" ; + tousDet = mkDeterminer Pl ["todos los"] ["todas las"] ; --- gli + plupartDet = mkDeterminer1 Pl ["la mayor parte de"] ; --- dei, degli, delle unDet = mkDeterminer Sg artUno artUna ; plDet = mkDeterminer1 Pl [] ; --- dei, degli, delle - quelDet = mkDeterminer1 Sg "quale" ; + quelDet = mkDeterminer1 Sg "cuál" ; ---- npGenPoss = \n,ton,mec -> \\c => artDef mec.g n c ++ ton.s ! Poss n mec.g ++ mec.s ! n ; --- mia madre @@ -38,26 +38,26 @@ oper existNounPhrase = \delvino -> { s = \\m => case m of { - Ind => case delvino.n of {Sg => "c'è" ; Pl => ["ci sono"]} ; - Con => case delvino.n of {Sg => ["ci sia"] ; Pl => ["ci siano"]} - } ++ delvino.s ! stressed accusative --- ce ne sono ; have to define "ci" + Ind => "hay" ; + Con => "haya" + } ++ delvino.s ! stressed accusative } ; mkAdjSolo : Str -> Bool -> Adjective = \adj,p -> mkAdjective (adjSolo adj) p ; - mkAdjTale : Str -> Bool -> Adjective = \adj,p -> - mkAdjective (adjTale adj) p ; + mkAdjUtil : Str -> Str -> Bool -> Adjective = \adj,as,p -> + mkAdjective (adjUtil adj as) p ; mkAdjDegrSolo : Str -> Bool -> AdjDegr = \adj,p -> mkAdjDegrLong (adjSolo adj) p ; - mkAdjDegrTale : Str -> Bool -> AdjDegr = \adj,p -> - mkAdjDegrLong (adjTale adj) p ; + mkAdjDegrUtil : Str -> Str -> Bool -> AdjDegr = \adj,as,p -> + mkAdjDegrLong (adjUtil adj as) p ; - comparConj = variants {"di" ; "che"} ; + comparConj = "que" ; --- The commonest case for functions is common noun + "di". +-- The commonest case for functions is common noun + "de". funGen : CommNounPhrase -> Function = \mere -> mere ** complementCas genitive ; @@ -68,7 +68,7 @@ oper {s = table { RComplex g n c => variants { case mere.c of { - CPrep P_di => artDef mere.g n c ++ + CPrep P_de => artDef mere.g n c ++ lequel.s ! RSimple dative ++ mere.s ! n ; _ => nonExist} ; artDef mere.g n c ++ mere.s ! n ++ @@ -81,9 +81,9 @@ oper -- Verbs - negVerb = \va -> "non" ++ va ; + negVerb = \va -> "no" ++ va ; - copula = \b,w -> let etre = (predVerb verbEssere).s in + copula = \b,w -> let etre = (predVerb verbSer).s in etre ! b ! Masc ! w ; ---- Masc isClitCase = \c -> case c of { @@ -92,19 +92,18 @@ oper _ => False } ; - auxVerb ve = case ve.aux of { - AHabere => verbAvere ; - AEsse => verbEssere - } ; +-- Spanish only has one compound auxiliary. + + auxVerb ve = verbHaber ; -- The negation of a verb. posNeg = \b,v,c -> if_then_else Str b (v ++ c) - ("non" ++ v ++ c) ; + ("no" ++ v ++ c) ; - embedConj = "che" ; + embedConj = "que" ; -- Relative pronouns @@ -135,14 +134,14 @@ oper } ; intPronWho = \num -> { - s = \\c => prepCase c ++ "chi" ; + s = \\c => prepCase c ++ "quién" ; g = Masc ; --- can we decide this? n = num } ; intPronWhat = \num -> { s = table { - c => prepCase c ++ "che" ++ optStr "cosa" + c => prepCase c ++ "qué" } ; g = Masc ; --- can we decide this? n = num @@ -153,14 +152,14 @@ oper questVerbPhrase = \jean,dort -> {s = table { DirQ => (predVerbPhrase jean dort).s ! Ind ; - IndirQ => "se" ++ (predVerbPhrase jean dort).s ! Ind + IndirQ => "si" ++ (predVerbPhrase jean dort).s ! Ind } } ; existNounPhraseQuest = \delvino -> let cedelvino = (existNounPhrase delvino).s ! Ind in { - s = \\m => case m of {DirQ => [] ; _ => "se"} ++ cedelvino + s = \\m => case m of {DirQ => [] ; _ => "si"} ++ cedelvino } ; intVerbPhrase = \qui, dormir -> @@ -175,19 +174,10 @@ oper let {qui = Tuvois.s2 ++ Qui.s ! Tuvois.c ; tuvois = Tuvois.s ! Ind} in {s = table { DirQ => qui ++ tuvois ; - IndirQ => ifCe Tuvois.c ++ qui ++ tuvois + IndirQ => qui ++ tuvois } } ; --- An auxiliary to distinguish between --- "je ne sais pas" ("ce qui dort" / "ce que tu veux" / "à qui tu penses"). - - ifCe : Case -> Str = \c -> case c of { --- - Nom => "ciò" ; - Acc => "ciò" ; - _ => [] - } ; - questAdverbial = \quand, jean, dort -> let {jeandort = (predVerbPhrase jean dort).s ! Ind} in {s = table { @@ -204,8 +194,8 @@ oper genForms = \matto, matta -> table {Masc => matto ; Fem => matta} ; - artUno : Str = elision "un" "un" "uno" ; - artUna : Str = elision "una" "un'" "una" ; + artUno : Str = "un" ; + artUna : Str = "una" ; artIndef = \g,n,c -> case n of { Sg => prepCase c ++ genForms artUno artUna ! g ; @@ -221,11 +211,11 @@ oper artDef g n c ++ qualPron g n ; pronJe = mkPronoun - "io" --- (variants {"io" ; []}) etc - "mi" - "mi" + "yo" --- (variants {"yo" ; []}) etc "me" - "mio" "mia" "miei" "mie" + "me" + "mí" + "mi" "mi" "mis" "mis" PNoGen -- gender cannot be known from pronoun alone Sg P1 @@ -233,86 +223,84 @@ oper pronTu = mkPronoun "tu" - "ti" - "ti" "te" - "tuo" "tua" "tuoi" "tue" + "te" + "tí" + "tu" "tu" "tus" "tus" PNoGen Sg P2 Clit1 ; pronIl = mkPronoun - "lui" + "el" "lo" - "gli" - "lui" - "suo" "sua" "suoi" "sue" + "le" + "él" + "su" "su" "sus" "sus" (PGen Masc) Sg P3 Clit2 ; pronElle = mkPronoun - "lei" + "ella" "la" "le" - "lei" - "suo" "sua" "suoi" "sue" + "ella" + "su" "su" "sus" "sus" (PGen Fem) Sg P3 Clit2 ; pronNous = mkPronoun - "noi" - "ci" - "ci" - "noi" - "nostro" "nostra" "nostri" "nostre" - PNoGen + "nosotros" ---- nosotras + "nos" + "nos" + "nosotros" + "nuestro" "nuestra" "nuestros" "nuestras" + (PGen Masc) Pl P1 Clit3 ; pronVous = mkPronoun - "voi" - "vi" - "vi" - "voi" - "vostro" "vostra" "vostri" "vostre" - PNoGen - Pl --- depends! + "vosotros" ---- vosotras + "vos" + "vos" + "vosotros" + "vuestro" "vuestra" "vuestros" "vuestras" + (PGen Masc) + Pl P2 Clit3 ; pronIls = mkPronoun - "loro" - "loro" - "li" --- le ! - "loro" - "loro" "loro" "loro" "loro" + "ellos" ---- ellas + "los" + "les" + "ellos" + "su" "su" "sus" "sus" PNoGen Pl P3 Clit1 ; --- moved from ResIta - - commentAdv = ss "comme" ; - quandAdv = ss "quando" ; + commentAdv = ss "como" ; + quandAdv = ss "cuando" ; ouAdv = ss "o" ; - pourquoiAdv = ss "perché" ; + pourquoiAdv = ss "porqué" ; - etConj = ss "e" ** {n = Pl} ; + etConj = ss "y" ** {n = Pl} ; ouConj = ss "o" ** {n = Sg} ; - etetConj = sd2 "e" "e" ** {n = Pl} ; + etetConj = sd2 "y" "y" ** {n = Pl} ; ououConj = sd2 "o" "o" ** {n = Sg} ; - niniConj = sd2 "né" "né" ** {n = Sg} ; --- requires ne ! - siSubj = ss "se" ** {m = Ind} ; - quandSubj = ss "quando" ** {m = Ind} ; + niniConj = sd2 "no" "ni" ** {n = Sg} ; ---- + siSubj = ss "si" ** {m = Ind} ; + quandSubj = ss "cuando" ** {m = Ind} ; - ouiPhr = ss ["Sì ."] ; + ouiPhr = ss ["Sí ."] ; nonPhr = ss ["No ."] ; } diff --git a/lib/resource/spanish/TestResourceSpa.gf b/lib/resource/spanish/TestResourceSpa.gf index 7b214eff3..82f99d868 100644 --- a/lib/resource/spanish/TestResourceSpa.gf +++ b/lib/resource/spanish/TestResourceSpa.gf @@ -1,48 +1,47 @@ --# -path=.:../romance:../abstract:../../prelude -concrete TestResourceIta of TestResource = - RulesIta, StructuralIta ** open Prelude, TypesIta, MorphoIta, SyntaxIta in { +concrete TestResourceSpa of TestResource = + RulesSpa, StructuralSpa ** open Prelude, TypesSpa, MorphoSpa, SyntaxSpa in { flags startcat=Phr ; lexer=text ; parser=chart ; unlexer=text ; lin - Big = mkAdjDegrTale "grande" adjPre ; - Small = mkAdjDegrSolo "piccolo" adjPre ; - Old = mkAdjDegrLong (mkAdj "vecchio" "vecchia" "vecchi" "vecchie" "vecchiamente") - adjPre ; - Young = mkAdjDegrTale "giovane" adjPre ; - Happy = mkAdjDegrTale "felice" adjPost ; + Big = mkAdjDegrUtil "grande" "grandes"adjPre ; + Small = mkAdjDegrSolo "pequeño" adjPre ; + Old = mkAdjDegrSolo "viejo" adjPre ; + Young = mkAdjDegrUtil "joven" "jovenes"adjPre ; + Happy = mkAdjDegrUtil "feliz" "felices" adjPost ; American = mkAdjective (adjSolo "americano") adjPost ; - Finnish = mkAdjective (adjTale "finlandese") adjPost ; - Married = mkAdjCompl (adjSolo "sposato") adjPost {s2 = [] ; c = dative} ; - Man = mkCNom (numForms "uomo" "uomini") Masc ; - Woman = mkCNom (nomRana "donna") Fem ; - Car = mkCNom (nomRana "macchina") Fem ; - Light = mkCNom (nomSale "luce") Fem ; - House = mkCNom (nomRana "casa") Fem ; + Finnish = mkAdjective (adjUtil "finlandes" "finlandeses") adjPost ; + Married = mkAdjCompl (adjSolo "casado") adjPost {s2 = "con" ; c = accusative} ; + Man = mkCNom (nomVino "hombre") Masc ; + Woman = mkCNom (nomPilar "mujer") Fem ; + Car = mkCNom (nomVino "coche") Masc ; + Light = mkCNom (nomPilar "luz") Fem ; + House = mkCNom (nomVino "casa") Fem ; Wine = mkCNom (nomVino "vino") Masc ; - Bottle = mkCNom (nomRana "bottiglia") Fem ; + Bottle = mkCNom (nomVino "botella") Fem ; Bar = mkCNom (nomTram "bar") Masc ; - Walk = verbPres (amare_7 "camminare") AHabere ; - Run = (verbPres (correre_41 "correre") AHabere) ; - Send = mkTransVerbDir (verbPres (amare_7 "mandare") AHabere) ; - Love = mkTransVerbDir (verbPres (amare_7 "amare") AHabere) ; - Wait = mkTransVerbCas (verbPres (amare_7 "aspettare") AHabere) dative ; - Drink = mkTransVerbDir (verbPres (bere_29 "bere") AHabere) ; - Give = mkDitransVerb (verbPres (dare_17 "dare") AHabere) [] dative [] accusative ; - Prefer = mkDitransVerb (verbPres (finire_103 "preferire") AHabere) [] accusative [] dative ; - Say = verbSent (verbPres (dire_44 "dire") AHabere) Ind Ind ; - Prove = verbSent (verbPres (amare_7 "dimostrare") AHabere) Ind Ind ; - SwitchOn = mkTransVerbDir (verbPres (amare_7 "allumare") AHabere) ; - SwitchOff = mkTransVerbDir (verbPres (spegnere_89 "spegnere") AHabere) ; - Mother = funGen (mkCNom (nomSale "madre") Fem) ; + Walk = verbPres (zurrar_3 "pasear") AHabere ; +---- Run = (verbPres (correre_41 "correre") AHabere) ; + Send = mkTransVerbDir (verbPres (zurrar_3 "mandar") AHabere) ; + Love = mkTransVerbDir (verbPres (zurrar_3 "amar") AHabere) ; + Wait = mkTransVerbCas (verbPres (zurrar_3 "esperar") AHabere) dative ; +---- Drink = mkTransVerbDir (verbPres (bere_29 "bere") AHabere) ; +---- Give = mkDitransVerb (verbPres (dare_17 "dare") AHabere) [] dative [] accusative ; + Prefer = mkDitransVerb (verbPres (zurrir_5 "preferir") AHabere) [] accusative [] dative ; +---- Say = verbSent (verbPres (dire_44 "dire") AHabere) Ind Ind ; + Prove = verbSent (verbPres (zurrar_3 "demonstrar") AHabere) Ind Ind ; +---- SwitchOn = mkTransVerbDir (verbPres (zurrar_3 "encender") AHabere) ; + SwitchOff = mkTransVerbDir (verbPres (zurrar_3 "apagar") AHabere) ; + Mother = funGen (mkCNom (nomVino "madre") Fem) ; Uncle = funGen (mkCNom (nomVino "zio") Masc) ; - Connection = mkCNom (nomSale "connessione") Fem ** - {s2 = [] ; c = CPrep P_da ; s3 = [] ; c3 = dative} ; + Connection = mkCNom (nomPilar "connexión") Fem ** + {s2 = [] ; c = CPrep P_de ; s3 = [] ; c3 = dative} ; - Well = ss "bene" ; - Always = ss "sempre" ; + Well = ss "bien" ; + Always = ss "siempre" ; - John = mkProperName "Giovanni" Masc ; + John = mkProperName "Juan" Masc ; Mary = mkProperName "Maria" Fem ; } diff --git a/lib/resource/spanish/TypesSpa.gf b/lib/resource/spanish/TypesSpa.gf index 7d4c8f5d8..b7ab1317f 100644 --- a/lib/resource/spanish/TypesSpa.gf +++ b/lib/resource/spanish/TypesSpa.gf @@ -36,6 +36,8 @@ oper P_a => "a" } ; + prepositional = accusative ; + oper CaseA = Case ; NPFormA = NPForm ;