diff --git a/lib/resource-1.0/README b/lib/resource-1.0/README index 0c3490ea8..4edba6dc9 100644 --- a/lib/resource-1.0/README +++ b/lib/resource-1.0/README @@ -49,6 +49,8 @@ When will it be ready? Hopefully around February 2005. ---------- later history and status: + 3/2 Spanish added, except ordinal numerals. Much remains to do in Spa & Ita clitics. + 1/2 Italian added. 26/1 Norwegian added. diff --git a/lib/resource-1.0/doc/index.html b/lib/resource-1.0/doc/index.html index 7b122d3c6..45a935381 100644 --- a/lib/resource-1.0/doc/index.html +++ b/lib/resource-1.0/doc/index.html @@ -7,7 +7,7 @@

GF Resource Grammar Library v. 1.0

Author: Aarne Ranta <aarne (at) cs.chalmers.se>
-Last update: Wed Feb 1 17:41:25 2006 +Last update: Fri Feb 3 10:25:39 2006

@@ -72,6 +72,7 @@ The documentation of the individual modules:
  • ParadigmsIta: Italian lexical paradigms
  • ParadigmsGer: German lexical paradigms
  • ParadigmsNor: Norwegian lexical paradigms +
  • ParadigmsSpa: Spanish lexical paradigms
  • ParadigmsSwe: Swedish lexical paradigms diff --git a/lib/resource-1.0/doc/index.txt b/lib/resource-1.0/doc/index.txt index 6a74bc5b5..e54734a61 100644 --- a/lib/resource-1.0/doc/index.txt +++ b/lib/resource-1.0/doc/index.txt @@ -51,6 +51,7 @@ The documentation of the individual modules: - [ParadigmsIta gfdoc/ParadigmsIta.html]: Italian lexical paradigms - [ParadigmsGer gfdoc/ParadigmsGer.html]: German lexical paradigms - [ParadigmsNor gfdoc/ParadigmsNor.html]: Norwegian lexical paradigms +- [ParadigmsSpa gfdoc/ParadigmsSpa.html]: Spanish lexical paradigms - [ParadigmsSwe gfdoc/ParadigmsSwe.html]: Swedish lexical paradigms diff --git a/lib/resource-1.0/italian/StructuralIta.gf b/lib/resource-1.0/italian/StructuralIta.gf index d519b4bca..35d1eec48 100644 --- a/lib/resource-1.0/italian/StructuralIta.gf +++ b/lib/resource-1.0/italian/StructuralIta.gf @@ -27,7 +27,7 @@ lin can_VV = mkVV (verboV (potere_69 "potere")) ; during_Prep = mkPreposition "durante" ; either7or_DConj = {s1,s2 = "o" ; n = Sg} ; - everybody_NP = pn2np (mkPN ["tutto il mondo"] Masc) ; + everybody_NP = mkNP ["tutti"] Masc Pl ; every_Det = {s = \\_,_ => "ogni" ; n = Sg} ; everything_NP = pn2np (mkPN ["tutto"] Masc) ; everywhere_Adv = ss "dappertutto" ; @@ -74,7 +74,7 @@ lin "lei" "la" "le" "lei" "suo" "sua" "suoi" "sue" Fem Sg P3 Clit2 ; so_AdA = ss "così" ; - somebody_NP = pn2np (mkPN ["quelcuno"] Masc) ; + somebody_NP = pn2np (mkPN ["qualcuno"] Masc) ; somePl_Det = {s = \\_,c => prepCase c ++ "qualche" ; n = Pl} ; someSg_Det = {s = \\_,c => prepCase c ++ "qualche" ; n = Sg} ; something_NP = pn2np (mkPN ["qualche cosa"] Masc) ; @@ -131,6 +131,10 @@ lin mkPronoun "voi" "vi" "vi" "voi" "vostro" "vostra" "vostri" "vostre" Fem Pl P2 Clit3 ; + youPol_Pron = + mkPronoun + "Lei" "La" "Le" "Lei" "Suo" "Sua" "Suoi" "Sue" + Fem Sg P3 Clit2 ; } diff --git a/lib/resource-1.0/spanish/LangSpa.gf b/lib/resource-1.0/spanish/LangSpa.gf index 0b883fdf6..ca795db86 100644 --- a/lib/resource-1.0/spanish/LangSpa.gf +++ b/lib/resource-1.0/spanish/LangSpa.gf @@ -11,7 +11,7 @@ concrete LangSpa of Lang = RelativeSpa, ConjunctionSpa, PhraseSpa, --- StructuralSpa, + StructuralSpa, LexiconSpa ** { diff --git a/lib/resource-1.0/spanish/LexiconSpa.gf b/lib/resource-1.0/spanish/LexiconSpa.gf index 9a4806ffd..b631b8315 100644 --- a/lib/resource-1.0/spanish/LexiconSpa.gf +++ b/lib/resource-1.0/spanish/LexiconSpa.gf @@ -129,6 +129,7 @@ lin open_V2 = dirV2 (special_ppV (regV "abrir") "abierto") ; paint_V2A = mkV2A (regV "pintar") accusative ; paper_N = regN "papel" ; + paris_PN = mkPN "Paris" masculine ; peace_N = femN (regN "paz") ; pen_N = regN "lapicera" ; planet_N = mascN (regN "planeta") ; diff --git a/lib/resource-1.0/spanish/MorphoSpa.gf b/lib/resource-1.0/spanish/MorphoSpa.gf index e1f933dd9..d893b2e25 100644 --- a/lib/resource-1.0/spanish/MorphoSpa.gf +++ b/lib/resource-1.0/spanish/MorphoSpa.gf @@ -14,7 +14,6 @@ resource MorphoSpa = CommonRomance, ResSpa ** flags optimize=all ; - --2 Nouns -- -- The following macro is useful for creating the forms of number-dependent @@ -26,14 +25,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 ; @@ -46,31 +42,13 @@ oper mkNounIrreg : Str -> Str -> Gender -> Noun = \mec,mecs -> mkNoun (numForms mec mecs) ; - mkNomReg : Str -> Noun = \vino -> - let - o = last vino ; - vin = init vino ; - n = last vin - in - case o of { - "o" => {s = case n of { - "c" | "g" => numForms vino (vin + "hi") ; - "i" => numForms vino vin ; - _ => numForms vino (vin + "i") - } ; g = Masc} ; - "a" => {s = case n of { - "c" | "g" => numForms vino (vin + "he") ; - _ => numForms vino (vin + "e") - } ; g = Fem} ; - "e" => {s = numForms vino (vin + "i") - ; g = Masc} ; - "à" | "ù" => {s = numForms vino vino - ; g = Fem} ; - _ => {s = numForms vino vino - ; g = Masc} - } ; - - + mkNomReg : Str -> Noun = \mec -> + case last mec of { + "o" | "e" => mkNoun (nomVino mec) Masc ; + "a" => mkNoun (nomVino mec) Fem ; + "z" => mkNounIrreg mec (init mec + "ces") Fem ; + _ => mkNoun (nomPilar mec) Masc + } ; --2 Adjectives -- @@ -91,40 +69,21 @@ 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 ; --- - - mkAdjReg : Str -> Adj = \solo -> - let - o = last solo ; - sol = init solo ; - l = last sol ; - solamente = (sol + "amente") - in - case o of { - "o" => case l of { - "c" | "g" => mkAdj solo (sol + "a") (sol + "hi") (sol + "he") solamente ; - "i" => mkAdj solo (sol + "a") sol (sol + "e") solamente ; - _ => mkAdj solo (sol + "a") (sol + "i") (sol + "e") solamente - } ; - "e" => mkAdj solo solo (sol + "i") (sol + "i") (case l of { - "l" => sol + "mente" ; - _ => solo + "mente" - }) ; - _ => mkAdj solo solo solo solo (sol + "mente") - } ; - + mkAdjReg : Str -> Adj = \solo -> + case last solo of { + "o" => adjSolo solo ; + "e" => adjUtil solo (solo + "s") ; + _ => adjUtil solo (solo + "es") +---- _ => adjBlu solo + } ; --2 Personal pronouns -- @@ -140,7 +99,6 @@ oper Ton x => prepCase x ++ Lui ; Aton Nom => il ; ---- [] ; Aton Acc => le ; - Aton (CPrep P_di) => "ne" ; --- hmm Aton (CPrep P_a) => lui ; Aton q => prepCase q ++ Lui ; ---- GF bug with c or p! Poss {n = Sg ; g = Masc} => son ; @@ -151,6 +109,34 @@ oper a = {g = g ; n = n ; p = p} ; c = c } ; +{- + -- used in constructions like "(no) hay ..." + + pronEmpty : Number -> Pronoun = \n -> mkPronoun + [] + [] + [] + [] + [] [] [] [] + (PGen Masc) + n + P3 + Clit2 ; + +--2 Reflexive pronouns +-- +-- It is simply a function depending on number and person. + + pronRefl : Number -> Person -> Str = \n,p -> case of { + => "me" ; + => "te" ; + <_, P3> => "se" ; + => "nos" ; + => "vos" + } ; + +-} + --2 Determiners -- diff --git a/lib/resource-1.0/spanish/NumeralSpa.gf b/lib/resource-1.0/spanish/NumeralSpa.gf index 5bc341e91..88fce62f0 100644 --- a/lib/resource-1.0/spanish/NumeralSpa.gf +++ b/lib/resource-1.0/spanish/NumeralSpa.gf @@ -1,72 +1,80 @@ concrete NumeralSpa of Numeral = CatSpa ** open CommonRomance, ResRomance, MorphoSpa, Prelude in { -lincat - Digit = {s : DForm => CardOrd => Str} ; - Sub10 = {s : DForm => CardOrd => Str ; n : Number} ; - Sub100 = {s : CardOrd => Str ; n : Number} ; - Sub1000 = {s : CardOrd => Str ; n : Number} ; - Sub1000000 = {s : CardOrd => Str ; n : Number} ; +-- by Carlos Gonzalia, Chalmers, 1999 +-- original source automatically translated to new GF by AR +-- modified by addition of gender and number 30/3/2005 +---- ordinals and feminine hundreds missing 3/2/2006 AR -lin num x = x ; -lin n2 = mkTal "due" "dodici" "venti" "secondo" ; -lin n3 = mkTal "tre" "tredici" "trenta" "terzo" ; -lin n4 = mkTal "quattro" "quattordici" "quaranta" "quarto" ; -lin n5 = mkTal "cinque" "quindici" "cinquanta" "quinto" ; -lin n6 = mkTal "sei" "sedici" "sessanta" "sesto" ; -lin n7 = mkTal "sette" "diciassette" "settanta" "settimo" ; --- diciasettesimo? -lin n8 = mkTal "otto" "diciotto" "ottanta" "ottavo" ; -lin n9 = mkTal "nove" "diciannove" "novanta" "nono" ; +lincat Digit = {inh : Modif ; s : {p1 : DForm ; p2 : Modif} => Str} ; +lincat Sub10 = {s : {p1 : DForm ; p2 : Modif} => Gender => Str ; n : Number} ; +lincat Sub100 = {s : Gender => Str ; n : Number} ; +lincat Sub1000 = {s : Gender => Str ; n : Number} ; +lincat Sub1000000 = {s : Gender => Str ; n : Number} ; -lin pot01 = - let uno = (mkTal "uno" "undici" "dieci" "primo").s in - {s =\\f,g => case f of { - ental pred => [] ; - _ => uno ! f ! g - } ; - n = Pl} ; - -lin pot0 d = {s = d.s ; n = Pl} ; -lin pot110 = spl ((mkTal "dieci" [] [] "decimo").s ! ental indip) ; -lin pot111 = spl ((mkTal "undici" [] [] "undicesimo").s ! ental indip) ; -lin pot1to19 d = spl (d.s ! ton) ; -lin pot0as1 n = {s = n.s ! ental indip ; n = n.n} ; -lin pot1 d = spl (d.s ! tiotal) ; -lin pot1plus d e = - {s = \\g => d.s ! tiotal ! NCard Masc ++ e.s ! ental indip ! g ; n = Pl} ; +lin num x = { + s = table { + NCard g => x.s ! g ; + NOrd _ _ => "número" ++ x.s ! Masc ---- TODO + } + } ; +lin n2 = + {inh = mod ; s = table {{p1 = unit ; p2 = mod} => "dos" ; {p1 = unit ; p2 = unmod} => "dos" ; {p1 = unit ; p2 = conj} => "y" ++ "dos" ; {p1 = teen ; p2 = mod} => "doce" ; {p1 = teen ; p2 = unmod} => "doce" ; {p1 = teen ; p2 = conj} => "doce" ; {p1 = ten ; p2 = mod} => "veinti" ; {p1 = ten ; p2 = unmod} => "veinte" ; {p1 = ten ; p2 = conj} => "veinte" ; {p1 = hundred ; p2 = mod} => "doscientos" ; {p1 = hundred ; p2 = unmod} => "doscientos" ; {p1 = hundred ; p2 = conj} => "doscientos"}} ; +lin n3 = + {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "tres" ; {p1 = unit ; p2 = unmod} => "tres" ; {p1 = unit ; p2 = conj} => "y" ++ "tres" ; {p1 = teen ; p2 = mod} => "trece" ; {p1 = teen ; p2 = unmod} => "trece" ; {p1 = teen ; p2 = conj} => "trece" ; {p1 = ten ; p2 = mod} => "treinta" ; {p1 = ten ; p2 = unmod} => "treinta" ; {p1 = ten ; p2 = conj} => "treinta" ; {p1 = hundred ; p2 = mod} => "trescientos" ; {p1 = hundred ; p2 = unmod} => "trescientos" ; {p1 = hundred ; p2 = conj} => "trescientos"}} ; +lin n4 = + {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "cuatro" ; {p1 = unit ; p2 = unmod} => "cuatro" ; {p1 = unit ; p2 = conj} => "y" ++ "cuatro" ; {p1 = teen ; p2 = mod} => "catorce" ; {p1 = teen ; p2 = unmod} => "catorce" ; {p1 = teen ; p2 = conj} => "catorce" ; {p1 = ten ; p2 = mod} => "cuarenta" ; {p1 = ten ; p2 = unmod} => "cuarenta" ; {p1 = ten ; p2 = conj} => "cuarenta" ; {p1 = hundred ; p2 = mod} => "cuatrocientos" ; {p1 = hundred ; p2 = unmod} => "cuatrocientos" ; {p1 = hundred ; p2 = conj} => "cuatrocientos"}} ; +lin n5 = + {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "cinco" ; {p1 = unit ; p2 = unmod} => "cinco" ; {p1 = unit ; p2 = conj} => "y" ++ "cinco" ; {p1 = teen ; p2 = mod} => "quince" ; {p1 = teen ; p2 = unmod} => "quince" ; {p1 = teen ; p2 = conj} => "quince" ; {p1 = ten ; p2 = mod} => "cincuenta" ; {p1 = ten ; p2 = unmod} => "cincuenta" ; {p1 = ten ; p2 = conj} => "cincuenta" ; {p1 = hundred ; p2 = mod} => "quinientos" ; {p1 = hundred ; p2 = unmod} => "quinientos" ; {p1 = hundred ; p2 = conj} => "quinientos"}} ; +lin n6 = + {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "seis" ; {p1 = unit ; p2 = unmod} => "seis" ; {p1 = unit ; p2 = conj} => "y" ++ "seis" ; {p1 = teen ; p2 = mod} => "dieciseis" ; {p1 = teen ; p2 = unmod} => "dieciseis" ; {p1 = teen ; p2 = conj} => "dieciseis" ; {p1 = ten ; p2 = mod} => "sesenta" ; {p1 = ten ; p2 = unmod} => "sesenta" ; {p1 = ten ; p2 = conj} => "sesenta" ; {p1 = hundred ; p2 = mod} => "seiscientos" ; {p1 = hundred ; p2 = unmod} => "seiscientos" ; {p1 = hundred ; p2 = conj} => "seiscientos"}} ; +lin n7 = + {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "siete" ; {p1 = unit ; p2 = unmod} => "siete" ; {p1 = unit ; p2 = conj} => "y" ++ "siete" ; {p1 = teen ; p2 = mod} => "diecisiete" ; {p1 = teen ; p2 = unmod} => "diecisiete" ; {p1 = teen ; p2 = conj} => "diecisiete" ; {p1 = ten ; p2 = mod} => "setenta" ; {p1 = ten ; p2 = unmod} => "setenta" ; {p1 = ten ; p2 = conj} => "setenta" ; {p1 = hundred ; p2 = mod} => "setecientos" ; {p1 = hundred ; p2 = unmod} => "setecientos" ; {p1 = hundred ; p2 = conj} => "setecientos"}} ; +lin n8 = + {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "ocho" ; {p1 = unit ; p2 = unmod} => "ocho" ; {p1 = unit ; p2 = conj} => "y" ++ "ocho" ; {p1 = teen ; p2 = mod} => "dieciocho" ; {p1 = teen ; p2 = unmod} => "dieciocho" ; {p1 = teen ; p2 = conj} => "dieciocho" ; {p1 = ten ; p2 = mod} => "ochenta" ; {p1 = ten ; p2 = unmod} => "ochenta" ; {p1 = ten ; p2 = conj} => "ochenta" ; {p1 = hundred ; p2 = mod} => "ochocientos" ; {p1 = hundred ; p2 = unmod} => "ochocientos" ; {p1 = hundred ; p2 = conj} => "ochocientos"}} ; +lin n9 = + {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "nueve" ; {p1 = unit ; p2 = unmod} => "nueve" ; {p1 = unit ; p2 = conj} => "y" ++ "nueve" ; {p1 = teen ; p2 = mod} => "diecinueve" ; {p1 = teen ; p2 = unmod} => "diecinueve" ; {p1 = teen ; p2 = conj} => "diecinueve" ; {p1 = ten ; p2 = mod} => "noventa" ; {p1 = ten ; p2 = unmod} => "noventa" ; {p1 = ten ; p2 = conj} => "noventa" ; {p1 = hundred ; p2 = mod} => "novecientos" ; {p1 = hundred ; p2 = unmod} => "novecientos" ; {p1 = hundred ; p2 = conj} => "novecientos"}} ; +lin pot01 = + {s = table {{p1 = unit ; p2 = mod} => uno ; {p1 = unit ; p2 = unmod} + => uno ; {p1 = unit ; p2 = conj} => yuno ; {p1 = teen ; p2 = mod} => + uno ; {p1 = teen ; p2 = unmod} => uno ; {p1 = teen ; p2 = conj} => + yuno ; {p1 = ten ; p2 = mod} => uno ; {p1 = ten ; p2 = unmod} => uno + ; {p1 = ten ; p2 = conj} => yuno ; {p1 = hundred ; p2 = mod} => + \\_ => "ciento" ; {p1 = hundred ; p2 = unmod} => \\_ => "cien" ; {p1 = hundred ; p2 = conj} => yuno} ; n = Sg} ; +lin pot0 d = + {s = \\f,g => d.s ! f ; n = Pl} ; +lin pot110 = + spl "diez" ; +lin pot111 = + spl "once" ; +lin pot1to19 d = + spl (d.s ! {p1 = teen ; p2 = unmod}) ; +lin pot0as1 n = + {s = n.s ! {p1 = unit ; p2 = unmod} ; n = n.n} ; +lin pot1 d = + spl (d.s ! {p1 = ten ; p2 = unmod}) ; +lin pot1plus d e = + {s = \\g => (d.s ! {p1 = ten ; p2 = mod}) ++ e.s ! {p1 = unit ; p2 = + d.inh} ! g ; n = Pl} ; lin pot1as2 n = n ; -lin pot2 d = spl (\\co => d.s ! ental pred ! NCard Masc ++ - (mkTal "cento" [] [] "centesimo").s ! ental indip ! co) ; -lin pot2plus d e = - {s = \\g => d.s ! ental pred ! NCard Masc ++ "cento" ++ e.s ! g ; n = Pl} ; +lin pot2 d = + spl (d.s ! {p1 = hundred ; p2 = unmod} ! Masc) ; +lin pot2plus d e = + {s = \\g => (d.s ! {p1 = hundred ; p2 = mod}) ! Masc ++ e.s ! g ; n = Pl} ; lin pot2as3 n = n ; -lin pot3 n = spl (\\co => n.s ! NCard Masc ++ - (mkTal (mille ! n.n) [] [] "millesimo").s ! ental indip ! co) ; -lin pot3plus n m = {s = \\g => n.s ! NCard Masc ++ mille ! n.n ++ m.s ! g ; n = Pl} ; +lin pot3 n = + spl (n.s ! Masc ++ "mil") ; +lin pot3plus n m = + {s = \\g => n.s ! Masc ++ "mil" ++ m.s ! g ; n = Pl} ; -oper - mkTal : (x1,_,_,x4 : Str) -> {s : DForm => CardOrd => Str} = - \due,dodici,venti,secondo -> {s = \\d,co => case of { - => due ; - => pronForms (adjSolo secondo) g n ; - => venti ; - => regCard venti g n ; - => venti ; - => regCard venti g n - } - } ; +param DForm = unit | teen | ten | hundred ; +param Modif = mod | unmod | conj ; - regCard : Str -> Gender -> Number -> Str = \venti -> - pronForms (adjSolo (init venti + "esimo")) ; +oper spl : Str -> {s : Gender => Str ; n : Number} = \s -> {s = \\_ => + s ; n = Pl} ; - spl : (CardOrd => Str) -> {s : CardOrd => Str ; n : Number} = \s -> { - s = s ; - n = Pl - } ; - -oper mille : Number => Str = table {Sg => "mille" ; Pl => "mila"} ; -param DForm = ental Pred | ton | tiotal ; -param Pred = pred | indip ; + uno : Gender => Str = table {Masc => "uno" ; Fem => "una"} ; + yuno : Gender => Str = \\g => "y" ++ uno ! g ; } diff --git a/lib/resource-1.0/spanish/StructuralSpa.gf b/lib/resource-1.0/spanish/StructuralSpa.gf index 6b31fcfee..09175259a 100644 --- a/lib/resource-1.0/spanish/StructuralSpa.gf +++ b/lib/resource-1.0/spanish/StructuralSpa.gf @@ -5,132 +5,154 @@ concrete StructuralSpa of Structural = CatSpa ** lin - above_Prep = {s = ["sopra"] ; c = MorphoSpa.genitive ; isDir = False} ; - after_Prep = mkPreposition "dopo" ; + above_Prep = mkPreposition "sobre" ; + after_Prep = {s = ["despues"] ; c = MorphoSpa.genitive ; isDir = False} ; all_Predet = { - s = \\a,c => prepCase c ++ aagrForms "tutto" "tutta" "tutti" "tutte" ! a ; + s = \\a,c => prepCase c ++ aagrForms "todo" "toda" "todos" "todas" ! a ; c = Nom } ; - almost_AdA, almost_AdN = ss "quasi" ; - always_AdV = ss "sempre" ; + almost_AdA, almost_AdN = ss "casi" ; + always_AdV = ss "siempre" ; although_Subj = ss "benché" ** {m = Conjunct} ; - and_Conj = ss "e" ** {n = Pl} ; - because_Subj = ss "perché" ** {m = Indic} ; - before_Prep = mkPreposition "prima" ; - behind_Prep = mkPreposition "dietro" ; - between_Prep = mkPreposition "fra" ; - both7and_DConj = {s1,s2 = "e" ; n = Pl} ; - but_PConj = ss "ma" ; - by8agent_Prep = {s = [] ; c = CPrep P_da} ; - by8means_Prep = mkPreposition "per" ; - can8know_VV = mkVV (verboV (sapere_78 "sapere")) ; - can_VV = mkVV (verboV (potere_69 "potere")) ; - during_Prep = mkPreposition "durante" ; + and_Conj = etConj ; + because_Subj = ss "porque" ** {m = Indic} ; + before_Prep = {s = "antes" ; c = MorphoSpa.genitive ; isDir = False} ; + behind_Prep = {s = "detrás" ; c = MorphoSpa.genitive ; isDir = False} ; + between_Prep = mkPreposition "entre" ; + both7and_DConj = {s1,s2 = etConj.s ; n = Pl} ; + but_PConj = ss "mas" ; + by8agent_Prep = mkPreposition "por" ; + by8means_Prep = mkPreposition "por" ; + can8know_VV = mkVV (verboV (saber_71 "saber")) ; + can_VV = mkVV (verboV (poder_58 "poder")) ; + during_Prep = mkPreposition "durante" ; ---- either7or_DConj = {s1,s2 = "o" ; n = Sg} ; - everybody_NP = pn2np (mkPN ["tutto il mondo"] Masc) ; - every_Det = {s = \\_,_ => "ogni" ; n = Sg} ; - everything_NP = pn2np (mkPN ["tutto"] Masc) ; - everywhere_Adv = ss "dappertutto" ; - first_Ord = {s = \\ag => (regA "primo").s ! Posit ! AF ag.g ag.n} ; + everybody_NP = mkNP ["todos"] Masc Pl ; + every_Det = {s = \\_,_ => "cada" ; n = Sg} ; + everything_NP = pn2np (mkPN ["todo"] Masc) ; + everywhere_Adv = ss ["en todas partes"] ; + first_Ord = {s = \\ag => (regA "primero").s ! Posit ! AF ag.g ag.n} ; from_Prep = complGen ; --- he_Pron = - mkPronoun - "lui" "lo" "gli" "lui" "suo" "sua" "suoi" "sue" + mkPronoun + "el" "lo" "le" "él" + "su" "su" "sus" "sus" Masc Sg P3 Clit2 ; - here7from_Adv = ss ["da quì"] ; - here7to_Adv = ss "quì" ; - here_Adv = ss "quì" ; - how_IAdv = ss "come" ; - how8many_IDet = {s = \\g,c => prepCase c ++ genForms "quanti" "quante" ! g ; n = Pl} ; - if_Subj = ss "se" ** {m = Indic} ; - in8front_Prep = mkPreposition "davanti" ; + here_Adv = mkAdv "aquí" ; -- acá + here7to_Adv = mkAdv ["para acá"] ; + here7from_Adv = mkAdv ["de acá"] ; + how_IAdv = ss "como" ; + how8many_IDet = + {s = \\g,c => prepCase c ++ genForms "cuantos" "cuantas" ! g ; n = Pl} ; + if_Subj = ss "si" ** {m = Indic} ; + in8front_Prep = {s = "delante" ; c = MorphoSpa.genitive ; isDir = False} ; i_Pron = mkPronoun - "io" "mi" "mi" "me" "mio" "mia" "miei" "mie" + "yo" "me" "me" "mí" + "mi" "mi" "mis" "mis" Fem Sg P1 Clit1 ; - in_Prep = {s = [] ; c = CPrep P_in} ; + in_Prep = mkPreposition "en" ; it_Pron = mkPronoun - "lui" "lo" "gli" "lui" "suo" "sua" "suoi" "sue" + "el" "lo" "le" "él" + "su" "su" "sus" "sus" Masc Sg P3 Clit2 ; - less_CAdv = ss "meno" ; - many_Det = {s = \\g,c => prepCase c ++ genForms "molti" "molte" ! g ; n = Pl} ; - more_CAdv = ss "più" ; - most_Predet = {s = \\_,c => prepCase c ++ ["la maggior parte"] ; c = CPrep P_di} ; - much_Det = {s = \\g,c => prepCase c ++ genForms "molto" "molta" ! g ; n = Sg} ; - must_VV = mkVV (verboV (dovere_47 "dovere")) ; + less_CAdv = ss "meno" ; ---- + many_Det = {s = \\g,c => prepCase c ++ genForms "muchos" "muchas" ! g ; n = Pl} ; + more_CAdv = ss "mas" ; + most_Predet = {s = \\_,c => prepCase c ++ ["la mayor parte"] ; c = CPrep P_de} ; + much_Det = {s = \\g,c => prepCase c ++ genForms "mucho" "mucha" ! g ; n = Sg} ; + must_VV = mkVV (verboV (deber_6 "deber")) ; no_Phr = ss "no" ; - on_Prep = {s = [] ; c = CPrep P_su} ; + on_Prep = mkPreposition "sobre" ; one_Quant = {s = \\g,c => prepCase c ++ genForms "uno" "una" ! g} ; - only_Predet = {s = \\_,c => prepCase c ++ "soltanto" ; c = Nom} ; --- solo|a|i|e + only_Predet = {s = \\_,c => prepCase c ++ "solamente" ; c = Nom} ; or_Conj = {s = "o" ; n = Sg} ; - otherwise_PConj = ss "altramente" ; + otherwise_PConj = ss "otramente" ; part_Prep = complGen ; - please_Voc = ss ["per favore"] ; + please_Voc = ss ["por favor"] ; possess_Prep = complGen ; - quite_Adv = ss "assai" ; + quite_Adv = ss "bastante" ; she_Pron = mkPronoun - "lei" "la" "le" "lei" "suo" "sua" "suoi" "sue" + "ella" "la" "le" "ella" + "su" "su" "sus" "sus" Fem Sg P3 Clit2 ; - so_AdA = ss "così" ; - somebody_NP = pn2np (mkPN ["quelcuno"] Masc) ; - somePl_Det = {s = \\_,c => prepCase c ++ "qualche" ; n = Pl} ; - someSg_Det = {s = \\_,c => prepCase c ++ "qualche" ; n = Sg} ; - something_NP = pn2np (mkPN ["qualche cosa"] Masc) ; - somewhere_Adv = ss ["qualche parte"] ; + so_AdA = ss "tanto" ; + somebody_NP = pn2np (mkPN ["algún"] Masc) ; + somePl_Det = {s = \\g,c => prepCase c ++ genForms "algunos" "algunas" ! g ; n = Pl} ; + someSg_Det = {s = \\g,c => prepCase c ++ "algun" ; n = Sg} ; + something_NP = pn2np (mkPN ["algo"] Masc) ; + somewhere_Adv = ss ["en ninguna parte"] ; that_Quant = { s = table { - Sg => \\g,c => prepCase c ++ genForms "quello" "quella" ! g ; - Pl => \\g,c => prepCase c ++ genForms "quelli" "quelle" ! g ---- quegli + Sg => \\g,c => prepCase c ++ genForms "ese" "esa" ! g ; + Pl => \\g,c => prepCase c ++ genForms "esos" "esas" ! g } } ; - that_NP = mkNP ["questo"] Masc Sg ; - there7from_Adv = ss ["di là"] ; - there7to_Adv = ss "là" ; --- ci - there_Adv = ss "là" ; - therefore_PConj = ss "quindi" ; - these_NP = mkNP ["queste"] Fem Pl ; + that_NP = mkNP ["eso"] Masc Sg ; + there_Adv = mkAdv "allí" ; -- allá + there7to_Adv = mkAdv ["para allá"] ; + there7from_Adv = mkAdv ["de allá"] ; + therefore_PConj = ss ["por eso"] ; + these_NP = mkNP ["estas"] Fem Pl ; they_Pron = mkPronoun - "loro" "loro" "li" "loro" "loro" "loro" "loro" "loro" + "ellas" "las" "les" "ellas" + "su" "su" "sus" "sus" Fem Pl P3 Clit1 ; this_Quant = { s = table { - Sg => \\g,c => prepCase c ++ genForms "questo" "questa" ! g ; - Pl => \\g,c => prepCase c ++ genForms "questi" "queste" ! g + Sg => \\g,c => prepCase c ++ genForms "este" "esta" ! g ; + Pl => \\g,c => prepCase c ++ genForms "estos" "estas" ! g } } ; - this_NP = pn2np (mkPN ["questo"] Masc) ; - those_NP = mkNP ["quelle"] Fem Pl ; - through_Prep = mkPreposition "per" ; - too_AdA = ss "troppo" ; + this_NP = pn2np (mkPN ["esto"] Masc) ; + those_NP = mkNP ["esas"] Fem Pl ; + through_Prep = mkPreposition "por" ; + too_AdA = ss "demasiado" ; to_Prep = complDat ; - under_Prep = mkPreposition "sotto" ; - very_AdA = ss "molto" ; - want_VV = mkVV (verboV (volere_96 "volere")) ; + under_Prep = mkPreposition "bajo" ; + very_AdA = ss "muy" ; + want_VV = mkVV (verboV (querer_64 "querer")) ; we_Pron = - mkPronoun "noi" "ci" "ci" "noi" "nostro" "nostra" "nostri" "nostre" - Fem Pl P1 Clit3 ; - whatSg_IP = {s = \\c => prepCase c ++ ["che cosa"] ; a = aagr Fem Sg} ; - whatPl_IP = {s = \\c => prepCase c ++ ["che cose"] ; a = aagr Fem Pl} ; --- - when_IAdv = ss "quando" ; - when_Subj = ss "quando" ** {m = Indic} ; - where_IAdv = ss "dove" ; - whichPl_IDet = {s = \\g,c => prepCase c ++ genForms "quale" "quale" ! g ; n = Sg} ; - whichSg_IDet = {s = \\g,c => prepCase c ++ genForms "quali" "quali" ! g; n = Pl} ; - whoPl_IP = {s = \\c => prepCase c ++ "chi" ; a = aagr Fem Pl} ; - whoSg_IP = {s = \\c => prepCase c ++ "chi" ; a = aagr Fem Sg} ; - why_IAdv = ss "perché" ; - without_Prep = mkPreposition "senza" ; - with_Prep = {s = [] ; c = CPrep P_con} ; - yes_Phr = ss "sì" ; + mkPronoun + "nosotras" "nos" "nos" "nosotras" + "nuestro" "nuestra" "nuestros" "nuestras" + Fem Pl P1 Clit3 ; + whatSg_IP = {s = \\c => prepCase c ++ ["qué"] ; a = aagr Masc Sg} ; + whatPl_IP = {s = \\c => prepCase c ++ ["qué"] ; a = aagr Masc Pl} ; --- + when_IAdv = ss "cuando" ; + when_Subj = ss "cuando" ** {m = Indic} ; + where_IAdv = ss "donde" ; + whichPl_IDet = {s = \\g,c => prepCase c ++ "cuale" ; n = Sg} ; + whichSg_IDet = {s = \\g,c => prepCase c ++ "cuali" ; n = Pl} ; + whoPl_IP = {s = \\c => prepCase c ++ "quién" ; a = aagr Fem Pl} ; + whoSg_IP = {s = \\c => prepCase c ++ "quién" ; a = aagr Fem Sg} ; + why_IAdv = ss "porqué" ; + without_Prep = mkPreposition "sin" ; + with_Prep = mkPreposition "con" ; + yes_Phr = ss "sí" ; youSg_Pron = mkPronoun - "tu" "ti" "ti" "te" "tuo" "tua" "tuoi" "tue" + "tu" "te" "te" "tí" + "tu" "tu" "tus" "tus" Fem Sg P2 Clit1 ; youPl_Pron = mkPronoun - "voi" "vi" "vi" "voi" "vostro" "vostra" "vostri" "vostre" - Fem Pl P2 Clit3 ; + "vosotras" "vos" "vos" "vosotras" + "vuestro" "vuestra" "vuestros" "vuestras" + Fem Pl P2 Clit3 ; + youPol_Pron = + mkPronoun + "usted" "la" "le" "usted" + "su" "su" "sus" "sus" + Fem Pl P2 Clit3 ; + +oper + etConj : {s : Str ; n : Number} = {s = pre { + "y" ; + "y" / strs {"ya" ; "ye" ; "yo" ; "yu"} ; + "e" / strs {"i" ; "hi" ; "y"} + }} ** {n = Pl} ; }