spanish works although with bugs

This commit is contained in:
aarne
2004-12-10 07:13:01 +00:00
parent 666496eee9
commit a3b75f842f
7 changed files with 196 additions and 232 deletions

View File

@@ -1,4 +1,4 @@
--# -path=.:../romance:../abstract:../../prelude
concrete CategoriesIta of Categories =
CategoriesRomance with (SyntaxRomance=SyntaxIta) ;
concrete CategoriesSpa of Categories =
CategoriesRomance with (SyntaxRomance=SyntaxSpa) ;

View File

@@ -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 <n,p> of {
<Sg,P1> => "mi" ;
<Sg,P2> => "ti" ;
<_, P3> => "si" ;
<Pl,P1> => "ci" ;
<Pl,P2> => "vi"
<Sg,P1> => "me" ;
<Sg,P2> => "te" ;
<_, P3> => "se" ;
<Pl,P1> => "nos" ;
<Pl,P2> => "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 <g,n,c> of {
<_, _, CPrep P_de> => prepArt g n "de" ;
<_, _, CPrep P_a> => prepArt g n "a" ;
<Masc,Sg, Nom> => elision "il" "l'" "lo" ;
<Masc,Sg, _> => elision "il" "l'" "lo" ;
<Masc,Sg, CPrep P_de> => "del" ;
<Masc,Sg, CPrep P_a> => "al" ;
<Masc,Sg, _> => prepCase c ++ "el" ;
<Fem ,Sg, _> => elision "la" "l'" "la" ;
<Masc,Pl, _> => elision "i" "gli" "gli" ;
<Fem ,Pl, _> => "le"
} ;
-- This auxiliary expresses the uniform rule.
prepArt : Gender -> Number -> Tok -> Tok = \g,n,de -> case <g,n> of {
<Masc,Sg> => elision (de + "l") (de + "ll'") (de + "llo") ;
<Masc,Pl> => elision (de + "i") (de + "gli") (de + "gli") ;
<Fem, Sg> => elision (de + "lla") (de + "ll'") (de + "lla") ;
<Fem, Pl> => de + "lle"
<Fem ,Sg, _> => prepCase c ++ "la" ;
<Masc,Pl, _> => prepCase c ++ "los" ;
<Fem ,Pl, _> => 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

View File

@@ -1,4 +1,4 @@
--# -path=.:../romance:../abstract:../../prelude
concrete RulesIta of Rules =
RulesRomance with (SyntaxRomance=SyntaxIta) ;
concrete RulesSpa of Rules =
RulesRomance with (SyntaxRomance=SyntaxSpa) ;

View File

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

View File

@@ -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 ."] ;
}

View File

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

View File

@@ -36,6 +36,8 @@ oper
P_a => "a"
} ;
prepositional = accusative ;
oper
CaseA = Case ;
NPFormA = NPForm ;