diff --git a/lib/resource-1.0/german/ParadigmsGer.gf b/lib/resource-1.0/german/ParadigmsGer.gf index 4018b155e..70de9494f 100644 --- a/lib/resource-1.0/german/ParadigmsGer.gf +++ b/lib/resource-1.0/german/ParadigmsGer.gf @@ -149,6 +149,11 @@ oper --2 Verbs +mkV : overload { +-- Weak verbs are sometimes called regular verbs. + mkV : Str -> V ; -- führen +-- Irregular verbs use Ablaut and, in the worst cases, also Umlaut. + mkV : (x1,_,_,_,x5 : Str) -> V ; -- sehen, sieht, sah, sähe, gesehen -- The worst-case constructor needs six forms: -- - Infinitive, -- - 3p sg pres. indicative, @@ -156,26 +161,18 @@ oper -- - 1/3p sg imperfect indicative, -- - 1/3p sg imperfect subjunctive (because this uncommon form can have umlaut) -- - the perfect participle --- --- mkV : (x1,_,_,_,_,x6 : Str) -> V ; -- geben, gibt, gib, gab, gäbe, gegeben +-- To add a movable suffix e.g. "auf(fassen)". + mkV : Str -> V -> V +}; --- Weak verbs are sometimes called regular verbs. - - regV : Str -> V ; -- führen --- Irregular verbs use Ablaut and, in the worst cases, also Umlaut. - - irregV : (x1,_,_,_,x5 : Str) -> V ; -- sehen, sieht, sah, sähe, gesehen -- To remove the past participle prefix "ge", e.g. for the verbs -- prefixed by "be-, ver-". no_geV : V -> V ; --- To add a movable suffix e.g. "auf(fassen)". - - prefixV : Str -> V -> V ; -- To change the auxiliary from "haben" (default) to "sein" and -- vice-versa. @@ -325,7 +322,7 @@ oper von_Prep = mkPrep "von" dative ; zu_Prep = mkPrep "zu" dative ; - mkV geben gibt gib gab gaebe gegeben = + mk6V geben gibt gib gab gaebe gegeben = let geb = stemVerb geben ; gebe = geb + "e" ; @@ -346,13 +343,13 @@ oper fragte = fragt + "e" ; gefragt = "ge" + fragt ; in - mkV fragen fragt (frag + "e") fragte fragte gefragt ; + mk6V fragen fragt (frag + "e") fragte fragte gefragt ; irregV singen singt sang saenge gesungen = let sing = stemVerb singen ; in - mkV singen singt sing sang saenge gesungen ; + mk6V singen singt sing sang saenge gesungen ; prefixV p v = MorphoGer.prefixV p v ** {lock_V = v.lock_V} ; @@ -404,4 +401,20 @@ oper mkAV v = v ** {lock_A = <>} ; mkA2V v p = mkA2 v p ** {lock_A2 = <>} ; +-- pre-overload API and overload definitions + + regV : Str -> V ; + irregV : (x1,_,_,_,x5 : Str) -> V ; + mk6V : (x1,_,_,_,_,x6 : Str) -> V ; + + prefixV : Str -> V -> V ; + + mkV = overload { + mkV : Str -> V = regV ; + mkV : (x1,_,_,_,x5 : Str) -> V = irregV ; + mkV : (x1,_,_,_,_,x6 : Str) -> V = mk6V ; + mkV : Str -> V -> V = prefixV + }; + + } ;