1
0
forked from GitHub/gf-core

swedish mk2V and regV improved

This commit is contained in:
aarne
2005-03-11 09:00:56 +00:00
parent 624caf098f
commit 1bc3e39d7d
4 changed files with 66 additions and 27 deletions

View File

@@ -35,7 +35,7 @@ lin
brother_N2 = mkN2 (mascN (mkN "bror" "brodern" "bröder" "bröderna")) "till" ;
brown_ADeg = regADeg "brun" ;
butter_N = regN "smör" neutrum ;
buy_V2 = dirV2 (mk2V "köpa" "köper") ;
buy_V2 = dirV2 (mk2V "köpa" "köpte") ;
camera_N = regN "kamera" utrum ;
cap_N = regN "mössa" utrum ;
car_N = regN "bil" utrum ;
@@ -49,7 +49,7 @@ lin
city_N = mk2N "stad" "städer" ;
clean_ADeg = regADeg "ren" ;
clever_ADeg = regADeg "klok" ;
close_V2 = dirV2 (mk2V "stänga" "stänger") ;
close_V2 = dirV2 (mk2V "stänga" "stängde") ;
coat_N = regN "rock" utrum ;
cold_ADeg = regADeg "kall" ;
come_V = (mkV "komma" "kommer" "kom" "kom" "kommit" "kommen") ;
@@ -104,7 +104,7 @@ lin
learn_V2 = dirV2 (mkV "lära" "lär" "lär" "lärde" "lärt" "lärd") ; ---- refl!
leather_N = mkN "läder" "lädret" "läder" "lädren" ;
leave_V2 = dirV2 (regV "lämna") ;
like_V2 = mkV2 (mk2V "tycka" "tycker") "om" ;
like_V2 = mkV2 (mk2V "tycka" "tyckte") "om" ;
listen_V2 = mkV2 (regV "lyssna") "på" ;
live_V = (irregV "leva" "levde" "levt") ; ---- ?
long_ADeg = irregADeg "lång" "längre" "längst" ;
@@ -139,7 +139,7 @@ lin
queen_N = regN "drottning" utrum ;
radio_N = regN "radio" utrum ; ----
rain_V0 = mkV0 (regV "regna") ;
read_V2 = dirV2 (mk2V "läsa" "läser") ;
read_V2 = dirV2 (mk2V "läsa" "läste") ;
red_ADeg = mk2ADeg "röd" "rött" ;
religion_N = mk2N "religion" "religioner" ;
restaurant_N = mk2N "restaurang" "restauranger" ;
@@ -152,7 +152,7 @@ lin
school_N = regN "skola" utrum;
science_N = mk2N "vetenskap" "vetenskaper" ;
sea_N = mkN "sjö" "sjön" "sjöar" "sjöarna" ;
seek_V2 = dirV2 (mk2V "söka" "söker") ;
seek_V2 = dirV2 (mk2V "söka" "sökte") ;
see_V2 = dirV2 (mkV "se" "ser" "se" "såg" "sett" "sedd") ;
sell_V3 = dirV3 (irregV "sälja" "sålde" "sålt") "till" ;
send_V3 = dirV3 (regV "skicka") "till" ;
@@ -186,7 +186,7 @@ lin
thick_ADeg = regADeg "tjock" ;
thin_ADeg = mk2ADeg "tunn" "tunt" ;
train_N = regN "tåg" neutrum ;
travel_V = mk2V "resa" "reser" ;
travel_V = mk2V "resa" "reste" ;
tree_N = regN "träd" neutrum ;
---- trousers_N = regN "trousers" ; ---- pl t !
ugly_ADeg = regADeg "ful" ;

View File

@@ -202,16 +202,23 @@ adj2Reg : Str -> Str -> Adj = \vid,vitt -> adjAlmostReg vid vitt (vid + "a") ;
in
mkVerb sälja (sälj + er) sälj sålde sålt såld ;
regVerb : (_,_ : Str) -> Verb = \tala,talar ->
regVerb : (_,_ : Str) -> Verb = \tala,talade ->
let
ar = Predef.dp 2 talar ;
tal = Predef.tk 2 talar ;
forms = case ar of {
"ar" => vTala tal ;
"er" => vLeka tal ;
_ => case last tala of {
"a" => mkVerb tala talar tal (tal + "de") (tala + "t") (tala + "d") ;
_ => mkVerb tala talar tala (tala + "dde") (tala + "tt") (tala + "dd")
ade = Predef.dp 3 talade ;
de = Predef.dp 2 ade ;
tal = Predef.tk 1 tala ;
forms = case ade of {
"ade" => vTala tal ;
"dde" => case last tala of {
"a" => vTyda (init tal) ;
_ => mkVerb tala (tala + "r") tala (tala + "dde") (tala + "tt") (tala + "dd")
} ;
"tte" => vByta (init tal) ;
"nde" => vVända (init tal) ;
"rde" => vHyra tal ;
_ => case de of {
"te" => vLeka tal ;
_ => vGräva tal
}
}
in forms ** {s1 = []} ;
@@ -784,6 +791,32 @@ oper vLeka : Str -> Verbum = \lek ->
}
} ;
oper vGräva : Str -> Verbum = \gräv ->
{s = table {
VF (Pres Act) => gräv + "er" ;
VF (Pres Pass) => mkVoice Pass gräv ;
VF (Pret Act) => gräv + "de" ;
VF (Pret Pass) => gräv + "des" ;
VF (Imper v) => mkVoice v gräv ;
VI (Inf Act) => gräv + "a" ;
VI (Inf Pass) => gräv + "as" ;
VI (Supin Act) => gräv + "t" ;
VI (Supin Pass) => gräv + "ts" ;
VI (PtPret (Strong (ASg Utr)) Nom) => gräv + "d" ;
VI (PtPret (Strong (ASg Utr)) Gen) => gräv + "ds" ;
VI (PtPret (Strong (ASg Neutr)) Nom) => gräv + "t" ;
VI (PtPret (Strong (ASg Neutr)) Gen) => gräv + "ts" ;
VI (PtPret (Strong APl) Nom) => gräv + "da" ;
VI (PtPret (Strong APl) Gen) => gräv + "das" ;
VI (PtPret (Weak (AxSg NoMasc)) Nom) => gräv + "da" ;
VI (PtPret (Weak (AxSg NoMasc)) Gen) => gräv + "das" ;
VI (PtPret (Weak (AxSg Masc)) Nom) => gräv + "de" ;
VI (PtPret (Weak (AxSg Masc)) Gen) => gräv + "des" ;
VI (PtPret (Weak AxPl) Nom) => gräv + "da" ;
VI (PtPret (Weak AxPl) Gen) => gräv + "das"
}
} ;
oper vTyda : Str -> Verbum = \ty ->
{s = table {
VF (Pres Act) => ty + "der" ;

View File

@@ -200,18 +200,24 @@ oper
mkV : (supa,super,sup,söp,supit,supen : Str) -> V ;
-- The 'regular verb' function is the first conjugation.
-- The 'regular verb' function is the first conjugation if the
-- infinitive ends with "a" ("tala" - "talar" - "talade" - "talat"),
-- the third in other cases ("bo" - "bor" - "bodde" - "bott").
regV : (tala : Str) -> V ;
-- The almost regular verb function needs the infinitive and the present.
-- The almost regular verb function needs the infinitive and the preteritum.
-- It can deal with almost all cases in the first, second, and third
-- conjugation: "tala" - "talade", "leka" - "lekte",
-- "gräva" - "grävde", "byta" - "bytte", "vända" - "vände",
-- "tyda" - "tydde", "bo" - "bodde".
mk2V : (leka,leker : Str) -> V ;
mk2V : (leka,lekte : Str) -> V ;
-- There is an extensive list of irregular verbs in the module $IrregularSwe$.
-- In practice, it is enough to give three forms, as in school books.
irregV : (dricka, drack, druckit : Str) -> V ;
irregV : (dricka, drack, druckit : Str) -> V ;
--3 Verbs with a particle.
@@ -316,7 +322,7 @@ oper
mkV a b c d e f = mkVerb a b c d e f ** {s1 = [] ; lock_V = <>} ;
regV a = mk2V a (a + "r") ;
regV a = mk2V a (a + de) where {de = case last a of {"a" => "de" ; _ => "dde"}} ;
mk2V a b = regVerb a b ** {s1 = [] ; lock_V = <>} ;
irregV x y z = vSälja x y z

View File

@@ -190,14 +190,14 @@ concrete SwadeshLexSwe of SwadeshLex = CategoriesSwe
-- Verbs
bite_V = bita_V ;
blow_V = mk2V "blåsa" "blåser" ;
blow_V = mk2V "blåsa" "blåste" ;
breathe_V = depV (regV "anda") ;
burn_V = brinna_V ; -- FIXME: bränna?
come_V = komma_V ;
count_V = regV "räkna" ;
cut_V = skära_V ;
die_V = dö_V ;
dig_V = mk2V "gräva" "gräver" ;
dig_V = mk2V "gräva" "grävde" ;
drink_V = dricka_V ;
eat_V = äta_V ;
fall_V = falla_V ;
@@ -209,7 +209,7 @@ concrete SwadeshLexSwe of SwadeshLex = CategoriesSwe
fly_V = flyga_V ;
freeze_V = frysa_V ;
give_V = giva_V ;
hear_V = mk2V "höra" "hör" ;
hear_V = mk2V "höra" "hörde" ;
hit_V = slå_V;
hold_V = hålla_V ;
hunt_V = regV "jaga" ;
@@ -218,9 +218,9 @@ concrete SwadeshLexSwe of SwadeshLex = CategoriesSwe
laugh_V = regV "skratta" ;
lie_V = ligga_V ;
live_V = leva_V ;
play_V = mk2V "leka" "leker" ;
play_V = mk2V "leka" "lekte" ;
pull_V = draga_V ;
push_V = mk2V "trycka" "trycker" ;
push_V = mk2V "trycka" "tryckte" ;
rub_V = gnida_V ;
say_V = säga_V ;
scratch_V = regV "klia" ;
@@ -238,11 +238,11 @@ concrete SwadeshLexSwe of SwadeshLex = CategoriesSwe
suck_V = suga_V ;
swell_V = svälla_V ;
swim_V = regV "simma" ;
think_V = mk2V "tänka" "tänker" ;
think_V = mk2V "tänka" "tänkte" ;
throw_V = regV "kasta" ;
tie_V = knyta_V ;
turn_V = vända_V ;
vomit_V = mk2V "spy" "spyr" ;
vomit_V = mk2V "spy" "spydde" ;
walk_V = gå_V ;
wash_V = regV "tvätta" ;
wipe_V = regV "torka" ;