mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-24 03:52:50 -06:00
Inari's additions to ParadigmsSpa
This commit is contained in:
@@ -50,6 +50,7 @@ oper
|
|||||||
_ => mkNoun (nomPilar mec) Masc
|
_ => mkNoun (nomPilar mec) Masc
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
--2 Adjectives
|
--2 Adjectives
|
||||||
--
|
--
|
||||||
-- Adjectives are conveniently seen as gender-dependent nouns.
|
-- Adjectives are conveniently seen as gender-dependent nouns.
|
||||||
@@ -71,16 +72,47 @@ oper
|
|||||||
in
|
in
|
||||||
mkAdj solo (sol + "a") (sol + "os") (sol + "as") (sol + "amente") ;
|
mkAdj solo (sol + "a") (sol + "os") (sol + "as") (sol + "amente") ;
|
||||||
|
|
||||||
|
-- masculine and feminine are identical:
|
||||||
|
-- adjectives ending with -e, -a and many but not all that end in a consonant
|
||||||
adjUtil : Str -> Str -> Adj = \util,utiles ->
|
adjUtil : Str -> Str -> Adj = \util,utiles ->
|
||||||
mkAdj util util utiles utiles (util + "mente") ;
|
mkAdj util util utiles utiles (util + "mente") ;
|
||||||
|
|
||||||
|
-- adjectives that end in consonant but have different masc and fem forms
|
||||||
|
-- español, hablador ...
|
||||||
|
adjEspanol : Str -> Str -> Adj = \espanol,espanola ->
|
||||||
|
mkAdj espanol espanola (espanol + "es") (espanol + "as") (espanola + "mente") ;
|
||||||
|
|
||||||
adjBlu : Str -> Adj = \blu ->
|
adjBlu : Str -> Adj = \blu ->
|
||||||
mkAdj blu blu blu blu blu ; ---
|
mkAdj blu blu blu blu blu ; ---
|
||||||
|
|
||||||
|
-- francés francesa franceses francesas
|
||||||
|
adjEs : Str -> Adj = \francEs ->
|
||||||
|
let franc : Str = Predef.tk 2 francEs ;
|
||||||
|
frances : Str = franc + "es" ;
|
||||||
|
in mkAdj francEs (frances + "a") (frances + "es") (frances + "as") (frances + "amente") ;
|
||||||
|
|
||||||
|
|
||||||
|
-- alemán alemana alemanes alemanas
|
||||||
|
adjVn : Str -> Adj = \alemAn ->
|
||||||
|
let alemA : Str = init alemAn ;
|
||||||
|
alem : Str = init alemA ;
|
||||||
|
A : Str = last alemA ;
|
||||||
|
V : Str = case A of {
|
||||||
|
"á" => "a" ;
|
||||||
|
"é" => "e" ;
|
||||||
|
"í" => "i" ;
|
||||||
|
"ó" => "o"
|
||||||
|
} ;
|
||||||
|
alemVn : Str = alem + V + "n" ;
|
||||||
|
in mkAdj alemAn (alemVn + "a") (alemVn + "es")
|
||||||
|
(alemVn + "as") (alemVn + "amente") ;
|
||||||
|
|
||||||
mkAdjReg : Str -> Adj = \solo ->
|
mkAdjReg : Str -> Adj = \solo ->
|
||||||
case last solo of {
|
case solo of {
|
||||||
"o" => adjSolo solo ;
|
_ + "o" => adjSolo solo ;
|
||||||
"e" => adjUtil solo (solo + "s") ;
|
_ + ("e" | "a") => adjUtil solo (solo + "s") ;
|
||||||
|
_ + "és" => adjEs solo ;
|
||||||
|
_ + ("á" | "é" | "í" | "ó") + "n" => adjVn solo ;
|
||||||
_ => adjUtil solo (solo + "es")
|
_ => adjUtil solo (solo + "es")
|
||||||
---- _ => adjBlu solo
|
---- _ => adjBlu solo
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -142,6 +142,10 @@ oper
|
|||||||
|
|
||||||
mkA : (util : Str) -> A ; -- predictable adjective
|
mkA : (util : Str) -> A ; -- predictable adjective
|
||||||
|
|
||||||
|
-- Some adjectives need the feminine form separately.
|
||||||
|
|
||||||
|
mkA : (espanol,espanola : Str) -> A ;
|
||||||
|
|
||||||
-- One-place adjectives compared with "mas" need five forms in the worst
|
-- One-place adjectives compared with "mas" need five forms in the worst
|
||||||
-- case (masc and fem singular, masc plural, adverbial).
|
-- case (masc and fem singular, masc plural, adverbial).
|
||||||
|
|
||||||
@@ -168,6 +172,14 @@ oper
|
|||||||
mkA2 : A -> Prep -> A2 ; -- e.g. "casado" + dative
|
mkA2 : A -> Prep -> A2 ; -- e.g. "casado" + dative
|
||||||
|
|
||||||
|
|
||||||
|
-- Quantifiers
|
||||||
|
|
||||||
|
mkQuant : (ese,esa,esos,esas : Str) -> Quant ;
|
||||||
|
|
||||||
|
mkDet : (mucho,mucha : Str) -> Number -> Det ;
|
||||||
|
|
||||||
|
mkOrd : A -> Ord ;
|
||||||
|
|
||||||
|
|
||||||
--2 Adverbs
|
--2 Adverbs
|
||||||
|
|
||||||
@@ -184,6 +196,8 @@ oper
|
|||||||
|
|
||||||
mkAdA : Str -> AdA ;
|
mkAdA : Str -> AdA ;
|
||||||
|
|
||||||
|
mkAdN : Str -> AdN ;
|
||||||
|
|
||||||
|
|
||||||
--2 Verbs
|
--2 Verbs
|
||||||
|
|
||||||
@@ -318,6 +332,10 @@ oper
|
|||||||
|
|
||||||
mk5A a b c d e =
|
mk5A a b c d e =
|
||||||
compADeg {s = \\_ => (mkAdj a b c d e).s ; isPre = False ; lock_A = <>} ;
|
compADeg {s = \\_ => (mkAdj a b c d e).s ; isPre = False ; lock_A = <>} ;
|
||||||
|
|
||||||
|
mk2A a b =
|
||||||
|
compADeg {s = \\_ => (adjEspanol a b).s ; isPre = False ; lock_A = <>} ;
|
||||||
|
|
||||||
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; lock_A = <>} ;
|
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; lock_A = <>} ;
|
||||||
prefA a = {s = a.s ; isPre = True ; lock_A = <>} ;
|
prefA a = {s = a.s ; isPre = True ; lock_A = <>} ;
|
||||||
|
|
||||||
@@ -335,6 +353,38 @@ oper
|
|||||||
mkAdv x = ss x ** {lock_Adv = <>} ;
|
mkAdv x = ss x ** {lock_Adv = <>} ;
|
||||||
mkAdV x = ss x ** {lock_AdV = <>} ;
|
mkAdV x = ss x ** {lock_AdV = <>} ;
|
||||||
mkAdA x = ss x ** {lock_AdA = <>} ;
|
mkAdA x = ss x ** {lock_AdA = <>} ;
|
||||||
|
mkAdN x = ss x ** {lock_AdN = <>} ;
|
||||||
|
|
||||||
|
mkOrd adj = lin Ord {
|
||||||
|
s = \\ag => adj.s ! Posit ! AF ag.g ag.n ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkQuant ese esa esos esas =
|
||||||
|
let
|
||||||
|
se : Str = Predef.drop 1 ese ;
|
||||||
|
sa : Str = Predef.drop 1 esa ;
|
||||||
|
sos : Str = Predef.drop 1 esos ;
|
||||||
|
sas : Str = Predef.drop 1 esas ;
|
||||||
|
E : Str = "é" ;
|
||||||
|
attrforms : Number => Gender => Case => Str = table {
|
||||||
|
Sg => \\g,c => prepCase c ++ genForms ese esa ! g ;
|
||||||
|
Pl => \\g,c => prepCase c ++ genForms esos esas ! g ----
|
||||||
|
} ;
|
||||||
|
npforms : Number => Gender => Case => Str = table {
|
||||||
|
Sg => \\g,c => prepCase c ++ genForms (E + se) (E + sa) ! g ;
|
||||||
|
Pl => \\g,c => prepCase c ++ genForms (E + sos) (E + sas) ! g }
|
||||||
|
in lin Quant {
|
||||||
|
s = \\_ => attrforms ;
|
||||||
|
s2 = [] ;
|
||||||
|
sp = npforms
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkDet mucho mucha number =
|
||||||
|
lin Det {
|
||||||
|
s,sp = \\g,c => prepCase c ++ genForms mucho mucha ! g ;
|
||||||
|
n = number;
|
||||||
|
s2 = []
|
||||||
|
} ;
|
||||||
|
|
||||||
regV x = -- cortar actuar cazar guiar pagar sacar
|
regV x = -- cortar actuar cazar guiar pagar sacar
|
||||||
let
|
let
|
||||||
@@ -428,11 +478,13 @@ oper
|
|||||||
|
|
||||||
mkA = overload {
|
mkA = overload {
|
||||||
mkA : (util : Str) -> A = regA ;
|
mkA : (util : Str) -> A = regA ;
|
||||||
|
mkA : (espanol,espanola : Str) -> A = mk2A ;
|
||||||
mkA : (solo,sola,solos,solas,solamente : Str) -> A = mk5A ;
|
mkA : (solo,sola,solos,solas,solamente : Str) -> A = mk5A ;
|
||||||
mkA : (bueno : A) -> (mejor : A) -> A = mkADeg ;
|
mkA : (bueno : A) -> (mejor : A) -> A = mkADeg ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mk5A : (solo,sola,solos,solas, solamente : Str) -> A ;
|
mk5A : (solo,sola,solos,solas,solamente : Str) -> A ;
|
||||||
|
mk2A : (espanol,espanola : Str) -> A ;
|
||||||
regA : Str -> A ;
|
regA : Str -> A ;
|
||||||
mkADeg : A -> A -> A ;
|
mkADeg : A -> A -> A ;
|
||||||
compADeg : A -> A ;
|
compADeg : A -> A ;
|
||||||
|
|||||||
Reference in New Issue
Block a user