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} ;
}