mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
spanish works although with bugs
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
--# -path=.:../romance:../abstract:../../prelude
|
||||
|
||||
concrete CategoriesIta of Categories =
|
||||
CategoriesRomance with (SyntaxRomance=SyntaxIta) ;
|
||||
concrete CategoriesSpa of Categories =
|
||||
CategoriesRomance with (SyntaxRomance=SyntaxSpa) ;
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
--# -path=.:../romance:../abstract:../../prelude
|
||||
|
||||
concrete RulesIta of Rules =
|
||||
RulesRomance with (SyntaxRomance=SyntaxIta) ;
|
||||
concrete RulesSpa of Rules =
|
||||
RulesRomance with (SyntaxRomance=SyntaxSpa) ;
|
||||
|
||||
@@ -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" ;
|
||||
|
||||
}
|
||||
|
||||
@@ -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 ."] ;
|
||||
|
||||
}
|
||||
|
||||
@@ -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 ;
|
||||
}
|
||||
|
||||
@@ -36,6 +36,8 @@ oper
|
||||
P_a => "a"
|
||||
} ;
|
||||
|
||||
prepositional = accusative ;
|
||||
|
||||
oper
|
||||
CaseA = Case ;
|
||||
NPFormA = NPForm ;
|
||||
|
||||
Reference in New Issue
Block a user