forked from GitHub/gf-core
swedish mk2V and regV improved
This commit is contained in:
@@ -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" ;
|
||||
|
||||
@@ -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" ;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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" ;
|
||||
|
||||
Reference in New Issue
Block a user