Fixes in Catalan which_IQuant; added 2- and 3-arg smart paradigms for verbs + made 1-arg smart paradigm better

This commit is contained in:
inari
2014-04-10 18:12:36 +00:00
parent 73f1ab6e36
commit e9a9418753
4 changed files with 196 additions and 75 deletions

View File

@@ -5354,7 +5354,7 @@ let t_ = Predef.tk 5 t
VI Part => t_ + "ort" ;
-- VI Part => t_ + "orçut" ; -- AR why duplicate?
VP (Pres Ind Pl P1) => t_ + "orcem" ;
VP (Pres Ind Sg P1) => t_ + "orcem" ;
VP (Pres Ind Sg P1) => t_ + "orço" ;
VP (Pres Ind Pl P2) => t_ + "orceu" ;
VP (Pres Ind Sg P2) => t_ + "orces" ;
VP (Pres Ind Pl P3) => t_ + "orcen" ;
@@ -6044,8 +6044,92 @@ VP (Imp Sg P1) => variants {}
VGer => amar.s ! VI Ger
}
} ;
--
--
--Meta paradigms for verbs that end in -er.
--Handles accents in infinitive and changes for j/g, ç/c.
oper verbEr : Str -> Verbum = \vèncer ->
let vènc = Predef.tk 2 vèncer ;
venc = deaccent vènc ;
venç = soften venc ;
in {s = table {
VI Ger => venc + "ent" ;
VI Part => venç + "ut" ;
VP (Pres Ind Pl P1) => venc + "em" ;
VP (Pres Ind Sg P1) => venç + "o" ;
VP (Pres Ind Pl P2) => venc + "eu" ;
VP (Pres Ind Sg P2) => venc + "es" ;
VP (Pres Ind Pl P3) => venc + "en" ;
VP (Pres Ind Sg P3) => venç ;
VP (Pres Sub Pl P1) => venc + "em" ;
VP (Pres Sub Sg P1) => venc + "i" ;
VP (Pres Sub Pl P2) => venc + "eu" ;
VP (Pres Sub Sg P2) => venc + "is" ;
VP (Pres Sub Pl P3) => venc + "in" ;
VP (Pres Sub Sg P3) => venc + "i" ;
VP (Impf Ind Pl P1) => venc + "íem" ;--# notpresent
VP (Impf Ind Sg P1) => venc + "ia" ;--# notpresent
VP (Impf Ind Pl P2) => venc + "íeu" ;--# notpresent
VP (Impf Ind Sg P2) => venc + "ies" ;--# notpresent
VP (Impf Ind Pl P3) => venc + "ien" ;--# notpresent
VP (Impf Ind Sg P3) => venc + "ia" ;--# notpresent
VP (Impf Sub Pl P1) => venc + "éssim" ;--# notpresent
VP (Impf Sub Sg P1) => venc + "és" ;--# notpresent
VP (Impf Sub Pl P2) => venc + "éssiu" ;--# notpresent
VP (Impf Sub Sg P2) => venc + "essis" ;--# notpresent
VP (Impf Sub Pl P3) => venc + "essin" ;--# notpresent
VP (Impf Sub Sg P3) => venc + "és" ;--# notpresent
VP (Fut Pl P1) => venc + "erem" ;--# notpresent
VP (Fut Sg P1) => venc + "eré" ;--# notpresent
VP (Fut Pl P2) => venc + "ereu" ;--# notpresent
VP (Fut Sg P2) => venc + "eràs" ;--# notpresent
VP (Fut Pl P3) => venc + "eran" ;--# notpresent
VP (Fut Sg P3) => venc + "erà" ;--# notpresent
VP (Pret Pl P1) => venc + "éssim" ;--# notpresent
VP (Pret Sg P1) => venc + "és" ;--# notpresent
VP (Pret Pl P2) => venc + "éssiu" ;--# notpresent
VP (Pret Sg P2) => venc + "essis" ;--# notpresent
VP (Pret Pl P3) => venc + "essin" ;--# notpresent
VP (Pret Sg P3) => venc + "és" ;--# notpresent
VP (Cond Pl P1) => venc + "eríem" ;--# notpresent
VP (Cond Sg P1) => venc + "eria" ;--# notpresent
VP (Cond Pl P2) => venc + "eríeu" ;--# notpresent
VP (Cond Sg P2) => venc + "eries" ;--# notpresent
VP (Cond Pl P3) => venc + "erien" ;--# notpresent
VP (Cond Sg P3) => venc + "eria" ;--# notpresent
VP (Imp Pl P1) => venc + "em" ;
VP (Imp Pl P2) => venc + "eu" ;
VP (Imp Sg P2) => venç ;
VP (Imp Pl P3) => venc + "in" ;
VP (Imp Sg P3) => venc + "i" ;
VP (Pass Pl Fem) => venç + "udes" ;
VP (Pass Sg Fem) => venç + "uda" ;
VP (Pass Pl Masc) => venç + "uts" ;
VP (Pass Sg Masc) => venç + "ut" ;
VI Infn => vèncer ;
VP (Imp Sg P1) => variants {}
}
} ;
oper deaccent : Str -> Str = \témer ->
case témer of {
t@_ + "à" + mer@_ => t + "a" + mer ;
t@_ + "é" + mer@_ => t + "e" + mer ;
t@_ + "è" + mer@_ => t + "e" + mer ;
t@_ + "í" + mer@_ => t + "i" + mer ;
t@_ + "ó" + mer@_ => t + "o" + mer ;
t@_ + "ò" + mer@_ => t + "o" + mer ;
t@_ + "ú" + mer@_ => t + "u" + mer ;
_ => témer
} ;
oper soften : Str -> Str = \venc ->
case venc of {
ven + "c" => ven + "ç" ;
men + "g" => men + "j" ;
_ => venc
} ;
---- The full conjunction is a table on $VForm$:
--
param

View File

@@ -20,14 +20,14 @@ lin
apartment_N = regMN "pis" ;
apple_N = regFN "poma" ;
art_N = regMN "art" ;
ask_V2Q = mkV2Q (regV "preguntar") dative ;
ask_V2Q = mkV2Q (mkV "preguntar") dative ;
baby_N = regMN "nadó" ;
bad_A = mkADeg (regA "dolent") (regA "pitjor") ;
bank_N = regMN "banc" ;
beautiful_A = prefA (regADeg "bell") ;
become_VA = reflV (regV "tornar") ; -- esdevenir
become_VA = reflV (mkV "tornar") ; -- esdevenir
beer_N = regFN "cervesa" ;
beg_V2V = mkV2V (regV "demanar") accusative dative ;
beg_V2V = mkV2V (mkV "demanar") accusative dative ;
big_A = regADeg "gros" ;
bike_N = regFN "bicicleta" ;
bird_N = regMN "ocell" ;
@@ -44,7 +44,7 @@ lin
brother_N2 = deN2 (regMN "germà") ;
brown_A = compADeg (mkA "marró" "marrona" "marrons" "marrones" "marronament") ;
butter_N = regFN "mantega" ;
buy_V2 = dirV2 (regV "comprar") ;
buy_V2 = dirV2 (mkV "comprar") ;
camera_N = regFN "càmara" ;
cap_N = regFN "gorra" ;
car_N = regMN "cotxe" ;
@@ -80,10 +80,10 @@ lin
factory_N = regFN "fàbrica" ;
father_N2 = deN2 (regMN "pare") ;
fear_VS = mkVS (verbV (témer_107 "témer")) ;
find_V2 = dirV2 (regV "trobar") ;
find_V2 = dirV2 (mkV "trobar") ;
fish_N = regMN "peix" ;
floor_N = regMN "terra" ; -- sòl
forget_V2 = dirV2 (regV "oblidar") ;
forget_V2 = dirV2 (mkV "oblidar") ;
fridge_N = regFN "nevera" ;
friend_N = regMN "amic" ; -- amiga
fruit_N = regFN "fruita" ;
@@ -98,9 +98,9 @@ lin
harbour_N = regMN "port" ;
hate_V2 = dirV2 (verbV (canviar_16 "odiar")) ;
hat_N = regMN "barret" ;
hear_V2 = mkV2 (regV "escoltar") dative ; -- Must be "oir". Add it to Besch
hear_V2 = mkV2 (mkV "escoltar") dative ; -- Must be "oir". Add it to Besch
hill_N = regMN "turó" ;
hope_VS = mkVS (regV "esperar") ;
hope_VS = mkVS (mkV "esperar") ;
horse_N = regMN "cavall" ;
hot_A = regADeg "calent" ;
house_N = regFN "casa" ;
@@ -115,14 +115,14 @@ lin
lamp_N = regFN "làmpada" ;
learn_V2 = dirV2 (verbV (aprendre_6 "aprendre")) ;
leather_N = regMN "cuiro" ;
leave_V2 = dirV2 (regV "partir") ;
leave_V2 = dirV2 (mkV "partir") ;
like_V2 = dirV2 (verbV (canviar_16 "apreciar")) ;
listen_V2 = dirV2 (regV "escoltar") ;
listen_V2 = dirV2 (mkV "escoltar") ;
live_V = verbV (viure_119 "viure") ;
long_A = regADeg "llarg" ;
lose_V2 = dirV2 (verbV (perdre_83 "perdre")) ;
love_N = regMN "amor" ;
love_V2 = dirV2 (regV "estimar") ;
love_V2 = dirV2 (mkV "estimar") ;
man_N = regMN "home" ; -- masc
married_A2 = mkA2 (regA "casat") dative ;
meat_N = regFN "carn" ;
@@ -137,7 +137,7 @@ lin
oil_N = regMN "oli" ;
old_A = regADeg "vell" ;
open_V2 = dirV2 (verbV (obrir_77 "obrir")) ;
paint_V2A = mkV2A (regV "pintar") accusative (mkPrep "en") ;
paint_V2A = mkV2A (mkV "pintar") accusative (mkPrep "en") ;
paper_N = regMN "paper" ;
paris_PN = mkPN "Paris" masculine ;
peace_N = regFN "pau" ;
@@ -180,7 +180,7 @@ lin
small_A = prefA (mkA "petit" "petita" "petits" "petites" "petitament") ;
snake_N = regFN "serp" ; -- fem
sock_N = regMN "mitjó" ;
speak_V2 = dirV2 (regV "parlar") ;
speak_V2 = dirV2 (mkV "parlar") ;
star_N = regFN "estrella" ;
steel_N = regMN "acer" ;
stone_N = regFN "pedra" ;
@@ -191,9 +191,9 @@ lin
switch8off_V2 = dirV2 (verbV (pregar_86 "apagar")) ;
switch8on_V2 = dirV2 (verbV (atendre_8 "encendre")) ;
table_N = regFN "taula" ;
talk_V3 = mkV3 (regV "parlar") dative genitive ;
talk_V3 = mkV3 (mkV "parlar") dative genitive ;
teacher_N = regMN "mestre" ; -- mestra
teach_V2 = dirV2 (regV "ensenyar") ;
teach_V2 = dirV2 (mkV "ensenyar") ;
television_N = mkN "televisió" "televisions" feminine ; -- televisor masc
thick_A = compADeg (mkA "gruixut" "gruixuda" "gruixuts" "gruixudes" "gruixudament") ;
thin_A = compADeg (mkA "fi" "fina" "fins" "fines" "finament") ;
@@ -205,18 +205,18 @@ lin
understand_V2 = dirV2 (verbV (atendre_8 "entendre")) ;
university_N = regFN "universitat" ;
village_N = regMN "poble" ;
wait_V2 = mkV2 (regV "esperar") dative ;
walk_V = regV "caminar" ;
wait_V2 = mkV2 (mkV "esperar") dative ;
walk_V = mkV "caminar" ;
warm_A = compADeg (mkA "tebi" "tèbia" "tebis" "tèbies" "tèbiament") ;
war_N = regFN "guerra" ;
watch_V2 = dirV2 (regV "mirar") ;
watch_V2 = dirV2 (mkV "mirar") ;
water_N = regFN "aigua" ;
white_A = compADeg (mkA "blanc" "blanca" "blancs" "blanques" "blancament") ;
window_N = regFN "finestra" ;
wine_N = regMN "vi" ;
win_V2 = dirV2 (regV "guanyar") ;
win_V2 = dirV2 (mkV "guanyar") ;
woman_N = regFN "dona" ;
wonder_VQ = mkVQ (reflV (regV "preguntar")) ;
wonder_VQ = mkVQ (reflV (mkV "preguntar")) ;
wood_N = regFN "fusta" ;
write_V2 = dirV2 (verbV (escriure_50 "escriure")) ;
yellow_A = compADeg (mkA "groc" "groga" "grocs" "grogues" "grogament") ;
@@ -225,11 +225,11 @@ lin
now_Adv = mkAdv "ara" ;
already_Adv = mkAdv "ja" ;
song_N = mkN "cançó" "cançons" feminine ;
add_V3 = dirV3 (regV "afegir") dative ; -- also: (regV "sumar")
add_V3 = dirV3 (mkV "afegir") dative ; -- also: (mkV "sumar")
number_N = regMN "número" ;
put_V2 = dirV2 (regV "posar") ;
stop_V = regV "aturar" ;
jump_V = regV "saltar" ;
put_V2 = dirV2 (mkV "posar") ;
stop_V = mkV "aturar" ;
jump_V = mkV "saltar" ;
left_Ord = M.mkOrd (regA "esquerra") ;
right_Ord = M.mkOrd (regA "dreta") ;
far_Adv = mkAdv "lluny" ;
@@ -310,50 +310,50 @@ lin
worm_N = regMN "cuc" ;
year_N = regMN "any" ;
bite_V2 = dirV2 (verbV (pregar_86 "mossegar")) ;
blow_V = regV "bufar" ;
burn_V = regV "cremar" ;
count_V2 = dirV2 (regV "comptar") ;
cut_V2 = dirV2 (regV "tallar") ;
dig_V = regV "cavar" ;
blow_V = mkV "bufar" ;
burn_V = mkV "cremar" ;
count_V2 = dirV2 (mkV "comptar") ;
cut_V2 = dirV2 (mkV "tallar") ;
dig_V = mkV "cavar" ;
fall_V = verbV (caure_18 "caure") ;
fear_V2 = dirV2 (verbV (témer_107 "témer")) ;
fight_V2 = dirV2 (regV "lluitar") ;
float_V = regV "surar" ;
flow_V = verbV (reduir_94 "fluir") ; -- also: regV "circular"
fly_V = regV "volar" ;
freeze_V = regV "congelar" ;
fight_V2 = dirV2 (mkV "lluitar") ;
float_V = mkV "surar" ;
flow_V = verbV (reduir_94 "fluir") ; -- also: mkV "circular"
fly_V = mkV "volar" ;
freeze_V = mkV "congelar" ;
give_V3 = dirdirV3 (verbV (donar_43 "donar")) ;
hit_V2 = dirV2 (verbV (trencar_112 "picar")) ;
hold_V2 = dirV2 (verbV (obtenir_78 "sostenir")) ;
hunt_V2 = dirV2 (verbV (començar_22 "caçar")) ;
kill_V2 = dirV2 (regV "matar") ;
kill_V2 = dirV2 (mkV "matar") ;
laugh_V = verbV (riure_96 "riure") ;
lie_V = reflV (verbV (jeure_62 "jeure")) ;
play_V = verbV (pregar_86 "jugar") ;
pull_V2 = dirV2 (regV "tibar") ;
pull_V2 = dirV2 (mkV "tibar") ;
push_V2 = dirV2 (verbV (atènyer_59 "empènyer")) ;
rub_V2 = dirV2 (verbV (pregar_86 "refregar")) ;
scratch_V2 = dirV2 (regV "gratar") ;
scratch_V2 = dirV2 (mkV "gratar") ;
sew_V = verbV (cosir_31 "cosir") ;
sing_V = regV "cantar" ;
sing_V = mkV "cantar" ;
sit_V = reflV (verbV (seure_102 "seure")) ;
smell_V = regV "ensumar" ;
smell_V = mkV "ensumar" ;
spit_V = verbV (escopir_49 "escopir") ;
split_V2 = dirV2 (regV "separar") ; -- dividir,) ;
split_V2 = dirV2 (mkV "separar") ; -- dividir,) ;
squeeze_V2 = dirV2 (verbV (servir_101 "exprimir")) ;
stab_V2 = dirV2 (regV "apunyalar") ;
stab_V2 = dirV2 (mkV "apunyalar") ;
stand_V = verbV (estar_54 "estar") ; ---- "estar dret"
suck_V2 = dirV2 (regV "xuclar") ;
swell_V = regV "inflar" ;
swim_V = regV "nedar" ;
think_V = regV "pensar" ;
suck_V2 = dirV2 (mkV "xuclar") ;
swell_V = mkV "inflar" ;
swim_V = mkV "nedar" ;
think_V = mkV "pensar" ;
throw_V2 = dirV2 (verbV (començar_22 "llençar")) ;
tie_V2 = dirV2 (verbV (pregar_86 "lligar")) ;
turn_V = regV "girar" ;
vomit_V = regV "vomitar" ;
wash_V2 = dirV2 (regV "rentar") ;
turn_V = mkV "girar" ;
vomit_V = mkV "vomitar" ;
wash_V2 = dirV2 (mkV "rentar") ;
wipe_V2 = dirV2 (verbV (pregar_86 "eixugar")) ;
breathe_V = regV "respirar" ;
breathe_V = mkV "respirar" ;
john_PN = mkPN "Joan" masculine ;
today_Adv = mkAdv "avui" ;

View File

@@ -200,10 +200,11 @@ oper
mkV : (cantar : Str) -> V ; -- regular in models I, IIa, IIb
-- Verbs with vowel alternatition in the stem - easiest to give with
-- two forms, e.g. "mostrar"/"muestro". TODO
-- Verbs with predictable alternation:
-- a) inchoative verbs, servir serveixo
-- b) re verbs with c/g in root, vendre venc ; subj. vengui
--JS: Needed? mkV : (mostrar,muestro : Str) -> V ;
mkV : (servir,serveixo : Str) -> V ; --inchoative verbs and "re" verbs whose 1st person ends in c
-- Most irregular verbs are found in $IrregCat$. If this is not enough,
-- the module $BeschCat$ gives all the patterns of the "Bescherelle"
@@ -340,15 +341,50 @@ oper
mkAdV x = ss x ** {lock_AdV = <>} ;
mkAdA x = ss x ** {lock_AdA = <>} ;
regV x = -- cantar, perdre, tÈmer, dormir, (servir)
let
verb = case (Predef.dp 2 x) of {
"re" => perdre_83 x ;
"er" => témer_107 x ;
"ir" => dormir_44 x ; -- JS TODO: Consider "servir"
_ => cantar_15 x
}
in verbBesch verb ** {vtyp = VHabere ; lock_V = <>} ;
regV x = -- cantar, perdre, témer, dormir, (servir)
case (Predef.dp 3 x) of {
"jar" => envejar_48 x ;
"çar" => començar_22 x ;
"gir" => fugir_58 x ;
"ure" => beure_11 x ;
_ + "re" => perdre_83 x ;
_ + "er" => verbEr x ; -- handles accents in infinitives & c/ç, g/j
_ + "ir" => dormir_44 x ; -- inchoative verbs with regAltV
_ + "ur" => dur_45 x ;
_ => cantar_15 x } ;
regAltV x y =
let ure = Predef.dp 3 x ;
venc = Predef.dp 4 y ;
in case <ure,venc> of {
<"ure",_> => regV x ; --caure,viure etc. with non-smart paradigms
<_+"ir",_+"ixo"> => servir_101 x ;
<_+"ir","tinc"> => tenir_108 x ; --tenir,obtenir, ...
<_+"ir","vinc"> => venir_117 x ; --venir,prevenir, ...
<_+"ir","tenc"> => tenir_108 x ; --recognises balear, returns central
<_+"ir","venc"> => venir_117 x ;
<_+"er",_+"ig"> => fer_56 x ;
<_+"re",_+"ig"> => veure_118 x ;
<_+"ar",_+"ig"> => anar_4 x ;
<_+"er",_+ "c"> => valer_114 x ;
<_+"re",_+ "c"> => absoldre_1 x ; --participes of type "absolt"
--for other types, mk3V
<_ ,_> => regV x } ;
mk3V x y z =
let ure = Predef.dp 3 x ;
venc = Predef.dp 4 y ;
ut = Predef.dp 2 z
in case <ure,venc,ut> of {
<"ure",_,_> => regAltV x y ;
<_,_,"st"> => veure_118 x ; --TODO check
<_,_,"it"> => coure_32 x ; --TODO check
<"dre",_,"ut"> => vendre_116 x ;
<_+"re",_,"ès"> => atendre_8 x ;
<_+"re",_,"às"> => romandre_97 x ;
<_,_,_> => regAltV x y } ;
reflV v = {s = v.s ; vtyp = VRefl ; lock_V = <>} ;
@@ -365,7 +401,7 @@ oper
vtyp = VHabere
} ;
-- regAltV x y = verbV (regAlternV x y) ;
mk2V2 v p = {s = v.s ; vtyp = v.vtyp ; c2 = p ; lock_V2 = <>} ;
dirV2 v = mk2V2 v accusative ;
@@ -439,16 +475,18 @@ oper
prefixA = prefA ;
mkV = overload {
mkV : (cantar : Str) -> V = regV ;
--JS mkV : (mostrar,muestro : Str) -> V = regAltV ;
mkV : (cantar : Str) -> V = \x -> verbV (regV x) ;
mkV : (servir,serveixo : Str) -> V = \x,y -> verbV (regAltV x y) ;
mkV : (vendre,venc,venut : Str) -> V = \x,y,z -> verbV (mk3V x y z) ;
mkV : Verbum -> V = verbV
} ;
regV : Str -> V ;
--JS regAltV : (mostrar,muestro : Str) -> V ;
regV : Str -> Verbum ;
regAltV : (servir,serveixo : Str) -> Verbum ;
mk3V : (vendre,venc,venut : Str) -> Verbum ;
verbV : Verbum -> V ;
mkV2 = overload {
mkV2 : Str -> V2 = \s -> dirV2 (regV s) ;
mkV2 : Str -> V2 = \s -> dirV2 (mkV s) ;
mkV2 : V -> V2 = dirV2 ;
mkV2 : V -> Prep -> V2 = mk2V2
} ;

View File

@@ -140,11 +140,10 @@ lin
when_IAdv = ss "quan" ;
when_Subj = ss "quan" ** {m = Indic} ;
where_IAdv = ss "on" ;
which_IQuant = {s = table {
Sg => \\g,c => prepCase c ++ "quin" ; --per fer: femenÌ quina
Pl => \\g,c => prepCase c ++ "quins"
}
} ; --per fer: femenÌ quines
which_IQuant = {
s = \\n,g,c =>
prepCase c ++ aagrForms "quin" "quina" "quins" "quines" ! aagr g n
} ;
whoPl_IP = {s = \\c => prepCase c ++ "qui" ; a = aagr Fem Pl} ;
whoSg_IP = {s = \\c => prepCase c ++ "qui" ; a = aagr Fem Sg} ;
why_IAdv = ss ["per quË"] ;