From 1bc3e39d7d62013296ee85d691adaaff6cc6fb4f Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 11 Mar 2005 09:00:56 +0000 Subject: [PATCH] swedish mk2V and regV improved --- lib/resource/swedish/BasicSwe.gf | 12 +++---- lib/resource/swedish/MorphoSwe.gf | 51 ++++++++++++++++++++++----- lib/resource/swedish/ParadigmsSwe.gf | 16 ++++++--- lib/resource/swedish/SwadeshLexSwe.gf | 14 ++++---- 4 files changed, 66 insertions(+), 27 deletions(-) diff --git a/lib/resource/swedish/BasicSwe.gf b/lib/resource/swedish/BasicSwe.gf index 1761e933b..5ce59b305 100644 --- a/lib/resource/swedish/BasicSwe.gf +++ b/lib/resource/swedish/BasicSwe.gf @@ -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" ; diff --git a/lib/resource/swedish/MorphoSwe.gf b/lib/resource/swedish/MorphoSwe.gf index 0b64f1bf3..111cfd8d0 100644 --- a/lib/resource/swedish/MorphoSwe.gf +++ b/lib/resource/swedish/MorphoSwe.gf @@ -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" ; diff --git a/lib/resource/swedish/ParadigmsSwe.gf b/lib/resource/swedish/ParadigmsSwe.gf index f0b8fe306..41afd5727 100644 --- a/lib/resource/swedish/ParadigmsSwe.gf +++ b/lib/resource/swedish/ParadigmsSwe.gf @@ -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 diff --git a/lib/resource/swedish/SwadeshLexSwe.gf b/lib/resource/swedish/SwadeshLexSwe.gf index 88985ceb5..8a686b569 100644 --- a/lib/resource/swedish/SwadeshLexSwe.gf +++ b/lib/resource/swedish/SwadeshLexSwe.gf @@ -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" ;