forked from GitHub/gf-core
Updated to be consistent with the new verb forms in MorphoGer.gf
This commit is contained in:
@@ -77,10 +77,12 @@ oper
|
|||||||
|
|
||||||
nBuch : (_,_ : Str) -> N ; -- Buch, (Buches, Bücher) (neut)
|
nBuch : (_,_ : Str) -> N ; -- Buch, (Buches, Bücher) (neut)
|
||||||
nMesser : Str -> N ; -- Messer, (Messers, Messer) (neut)
|
nMesser : Str -> N ; -- Messer, (Messers, Messer) (neut)
|
||||||
|
nBein : Str -> N ; -- Bein, (Beins, Beine) (neut)
|
||||||
nAuto : Str -> N ; -- Auto, (Autos, Autos) (neut)
|
nAuto : Str -> N ; -- Auto, (Autos, Autos) (neut)
|
||||||
|
|
||||||
-- Feminine patterns. Duplicated "e" is avoided in $nFrau$.
|
-- Feminine patterns. Duplicated "e" is avoided in $nFrau$.
|
||||||
|
|
||||||
|
nStudentin : Str -> N ; -- Studentin (Studentinne)
|
||||||
nHand : (_,_ : Str) -> N ; -- Hand, Hände; Mutter, Mütter (fem)
|
nHand : (_,_ : Str) -> N ; -- Hand, Hände; Mutter, Mütter (fem)
|
||||||
nFrau : Str -> N ; -- Frau (, Frauen) ; Wiese (, Wiesen) (fem)
|
nFrau : Str -> N ; -- Frau (, Frauen) ; Wiese (, Wiesen) (fem)
|
||||||
|
|
||||||
@@ -158,7 +160,7 @@ oper
|
|||||||
|
|
||||||
apReg : Str -> AP ;
|
apReg : Str -> AP ;
|
||||||
|
|
||||||
|
--OLD:
|
||||||
--2 Verbs
|
--2 Verbs
|
||||||
--
|
--
|
||||||
-- The fragment only has present tense so far, but in all persons.
|
-- The fragment only has present tense so far, but in all persons.
|
||||||
@@ -170,11 +172,61 @@ oper
|
|||||||
-- The function recognizes if the stem ends with "s" or "t" and performs the
|
-- The function recognizes if the stem ends with "s" or "t" and performs the
|
||||||
-- appropriate contractions.
|
-- appropriate contractions.
|
||||||
|
|
||||||
mkV : (_,_,_,_ : Str) -> V ; -- geben, gibt, gib, gegeben
|
--NEW (By Harald Hammarström):
|
||||||
|
--2 Verbs
|
||||||
|
-- The worst-case macro needs six forms:
|
||||||
|
-- x Infinitive,
|
||||||
|
-- x 3p sg pres. indicative,
|
||||||
|
-- x 2p sg imperative,
|
||||||
|
-- x 1/3p sg imperfect indicative,
|
||||||
|
-- x 1/3p sg imperfect subjunctive (because this uncommon form can have umlaut)
|
||||||
|
-- x the perfect participle
|
||||||
|
|
||||||
-- Regular verbs are those where no Umlaut occurs.
|
-- But you'll only want to use one of the five macros:
|
||||||
|
-- x weakVerb -- For a regular verb like legen
|
||||||
|
-- x verbGratulieren -- For a regular verb without ge- in the perfect
|
||||||
|
-- particple. Like gratulieren, beweisen etc
|
||||||
|
-- x verbStrongSingen -- A strong verb without umlauting present tense.
|
||||||
|
-- You'll need to supply the strong imperfect forms
|
||||||
|
-- as well as the participle.
|
||||||
|
-- x verbStrongSehen -- A strong verb that umlauts in the 2/3p sg pres
|
||||||
|
-- indicative as well as the imperative. You'll
|
||||||
|
-- need to give (only) the 3rd p sg pres ind. in
|
||||||
|
-- addition to the strong imperfect forms and the
|
||||||
|
-- part participle.
|
||||||
|
-- x verbStrongLaufen -- A strong verb that umlauts in the 2/3p sg pres
|
||||||
|
-- indicative but NOT the imperative. You'll
|
||||||
|
-- need to give (only) the 3rd p sg pres ind. in
|
||||||
|
-- addition to the strong imperfect forms and the
|
||||||
|
-- part participle.
|
||||||
|
--
|
||||||
|
-- Things that are handled automatically
|
||||||
|
-- x Imperative e (although optional forms are not given)
|
||||||
|
-- x Extra e in verbs like arbeitete, regnet, findet, atmet.
|
||||||
|
-- NOTE: If pres. umlauting strong verbs are defined through the verbumStrong
|
||||||
|
-- macro (which they should) it is automatically handled so they avoid
|
||||||
|
-- falling into this rule e.g er tritt (rather than *er tritet)
|
||||||
|
-- x s is dropped in the 2p sg if appropriate du setzt
|
||||||
|
-- x verbs that end in -rn, -ln rather than -en
|
||||||
|
|
||||||
vReg : Str -> V ; -- führen
|
-- Things that are not handled:
|
||||||
|
-- x -ß-/-ss-
|
||||||
|
-- x Optional dropping of -e- in e.g wand(e)re etc
|
||||||
|
-- x Optional indicative forms instead of pres. subj. 2p sg. and 2p pl.
|
||||||
|
-- x (Weak) verbs without the ge- on the participle (in wait for a systematic
|
||||||
|
-- treatment of the insep. prefixes and stress). You have to manually use
|
||||||
|
-- the verbGratulieren for this. E.g do verbGratulieren "beweisen" -
|
||||||
|
-- verbWeak "beweisen" would yield *gebeweist.
|
||||||
|
|
||||||
|
mkV : (_,_,_,_,_,_ : Str) -> V ; -- geben, gibt, gib, gab, gäbe, gegeben
|
||||||
|
|
||||||
|
-- Weak verbs are sometimes called regular verbs.
|
||||||
|
|
||||||
|
vWeak : Str -> V ; -- führen
|
||||||
|
|
||||||
|
vGratulieren : Str -> V ; -- gratulieren
|
||||||
|
vSehen : (_,_,_,_,_ : Str) -> V ; -- sehen, sieht, sah, sähe, gesehen
|
||||||
|
vLaufen : (_,_,_,_,_ : Str) -> V ; -- laufen, lauft, liefe, liefe, gelaufen
|
||||||
|
|
||||||
-- The verbs 'be' and 'have' are special.
|
-- The verbs 'be' and 'have' are special.
|
||||||
|
|
||||||
@@ -187,16 +239,23 @@ oper
|
|||||||
|
|
||||||
-- Verbs with a detachable particle, with regular ones as a special case.
|
-- Verbs with a detachable particle, with regular ones as a special case.
|
||||||
|
|
||||||
vPart : (_,_,_,_,_ : Str) -> V ; -- sehen, sieht, sieh, gesehen, aus
|
vPartWeak : (_,_ : Str) -> V ; -- führen, aus
|
||||||
vPartReg : (_,_ : Str) -> V ; -- bringen, um
|
|
||||||
|
-- vPartGratulieren (_,_ : Str) -> V ;
|
||||||
|
vPartSehen : (_,_,_,_,_,_ : Str) -> V ; -- sehen, sieht, sah, sähe, gesehen
|
||||||
|
vPartLaufen : (_,_,_,_,_,_ : Str) -> V ; -- laufen, lauft, liefe, liefe, gelaufen
|
||||||
mkVPart : V -> Str -> V ; -- vFahren, aus
|
mkVPart : V -> Str -> V ; -- vFahren, aus
|
||||||
|
|
||||||
|
-- Obsolete; use vPartWeak etc instead
|
||||||
|
--vPart : (_,_,_,_,_ : Str) -> V ; -- sehen, sieht, sieh, gesehen, aus
|
||||||
|
--vPartReg : (_,_ : Str) -> V ; -- bringen, um
|
||||||
|
|
||||||
-- Two-place verbs, and the special case with direct object. Notice that
|
-- Two-place verbs, and the special case with direct object. Notice that
|
||||||
-- a particle can be included in a $V$.
|
-- a particle can be included in a $V$.
|
||||||
|
|
||||||
mkTV : V -> Str -> Case -> TV ; -- hören, zu, dative
|
mkTV : V -> Str -> Case -> TV ; -- hören, zu, dative
|
||||||
|
|
||||||
tvReg : Str -> Str -> Case -> TV ; -- hören, zu, dative
|
tvWeak : Str -> Str -> Case -> TV ; -- hören, zu, dative
|
||||||
tvDir : V -> TV ; -- umbringen
|
tvDir : V -> TV ; -- umbringen
|
||||||
tvDirReg : Str -> TV ; -- lieben
|
tvDirReg : Str -> TV ; -- lieben
|
||||||
|
|
||||||
@@ -271,11 +330,13 @@ oper
|
|||||||
} in
|
} in
|
||||||
mkN soldat soldaten soldaten soldaten soldaten soldaten masculine ;
|
mkN soldat soldaten soldaten soldaten soldaten soldaten masculine ;
|
||||||
|
|
||||||
|
nBein = \bein -> declN2n bein ** {lock_N = <>};
|
||||||
nBuch = \buch, bücher -> nGen buch (buch + "es") bücher neuter ;
|
nBuch = \buch, bücher -> nGen buch (buch + "es") bücher neuter ;
|
||||||
nMesser = \messer -> nGen messer (messer + "s") messer neuter ;
|
nMesser = \messer -> nGen messer (messer + "s") messer neuter ;
|
||||||
nAuto = \auto -> let {autos = auto + "s"} in
|
nAuto = \auto -> let {autos = auto + "s"} in
|
||||||
mkNoun4 auto autos autos autos neuter ** {lock_N = <>} ;
|
mkNoun4 auto autos autos autos neuter ** {lock_N = <>} ;
|
||||||
|
|
||||||
|
nStudentin = \studentin -> declN1in studentin ** {lock_N = <>};
|
||||||
nHand = \hand, hände -> nGen hand hand hände feminine ;
|
nHand = \hand, hände -> nGen hand hand hände feminine ;
|
||||||
|
|
||||||
nFrau = \frau -> let {
|
nFrau = \frau -> let {
|
||||||
@@ -310,21 +371,31 @@ oper
|
|||||||
aPastPart = \v -> {s = table AForm {a => v.s ! VPart a} ; lock_Adj1 = <>} ;
|
aPastPart = \v -> {s = table AForm {a => v.s ! VPart a} ; lock_Adj1 = <>} ;
|
||||||
apReg = \s -> AdjP1 (adjGen s) ;
|
apReg = \s -> AdjP1 (adjGen s) ;
|
||||||
|
|
||||||
mkV = \sehen, sieht, sieh, gesehen ->
|
mkV a b c d e f = mkVerbSimple (mkVerbum a b c d e f) ** {lock_V = <>} ;
|
||||||
mkVerbSimple (mkVerbum sehen (Predef.tk 1 sieht) sieh gesehen) ** {lock_V = <>} ;
|
vWeak a = mkVerbSimple (verbumWeak a) ** {lock_V = <>} ;
|
||||||
vReg = \s -> mkVerbSimple (regVerb s) ** {lock_V = <>} ;
|
vGratulieren a = mkVerbSimple (verbumGratulieren a) ** {lock_V = <>} ;
|
||||||
|
vSehen a b c d e = mkVerbSimple (verbumStrongSehen a b c d e) ** {lock_V = <>} ;
|
||||||
|
vLaufen a b c d e = mkVerbSimple (verbumStrongLaufen a b c d e) ** {lock_V = <>} ;
|
||||||
|
|
||||||
|
-- vReg = \s -> mkVerbSimple (regVerb s) ** {lock_V = <>} ;
|
||||||
vSein = verbSein ** {lock_V = <>} ;
|
vSein = verbSein ** {lock_V = <>} ;
|
||||||
vHaben = verbHaben ** {lock_V = <>} ;
|
vHaben = verbHaben ** {lock_V = <>} ;
|
||||||
vFahren = mkV "fahren" "fährt" "fuhr" "gefahren" ;
|
vFahren = mkVerbSimple (verbumStrongLaufen "fahren" "fährt" "fuhr" "führe" "gefahren") ** {lock_V = <>} ;
|
||||||
vPart = \sehen, sieht, sieh, gesehen, aus ->
|
|
||||||
mkVerb (mkVerbum sehen sieht sieh gesehen) aus ** {lock_V = <>} ;
|
vPartWeak = \führen, aus -> (mkVerb (verbumWeak führen) aus) ** {lock_V = <>} ;
|
||||||
vPartReg = \sehen, aus -> mkVerb (regVerb sehen) aus ** {lock_V = <>} ;
|
--vGratulieren = verbumGratulieren ** {lock_V = <>} ;
|
||||||
|
vPartSehen a b c d e aus = (mkVerb (verbumStrongSehen a b c d e) aus) ** {lock_V = <>} ;
|
||||||
|
vPartLaufen a b c d e aus = (mkVerb (verbumStrongLaufen a b c d e) aus) ** {lock_V = <>} ;
|
||||||
|
|
||||||
|
--vPart = \sehen, sieht, sieh, gesehen, aus ->
|
||||||
|
-- mkVerb (mkVerbum sehen sieht sieh gesehen) aus ** {lock_V = <>} ;
|
||||||
|
--vPartReg = \sehen, aus -> mkVerb (regVerb sehen) aus ** {lock_V = <>} ;
|
||||||
mkVPart v p = mkVerb v.s p ** {lock_V = <>} ;
|
mkVPart v p = mkVerb v.s p ** {lock_V = <>} ;
|
||||||
|
|
||||||
mkTV v p c = mkTransVerb v p c ** {lock_TV = <>} ;
|
mkTV v p c = mkTransVerb v p c ** {lock_TV = <>} ;
|
||||||
tvReg = \hören, zu, dat -> mkTV (vReg hören) zu dat ;
|
tvWeak = \hören, zu, dat -> mkTV (vWeak hören) zu dat ;
|
||||||
tvDir = \v -> mkTV v [] accusative ;
|
tvDir = \v -> mkTV v [] accusative ;
|
||||||
tvDirReg = \v -> tvReg v [] accusative ;
|
tvDirReg = \v -> tvWeak v [] accusative ;
|
||||||
mkV3 v s c t d = mkDitransVerb v s c t d ** {lock_V3 = <>} ;
|
mkV3 v s c t d = mkDitransVerb v s c t d ** {lock_V3 = <>} ;
|
||||||
|
|
||||||
mkVS v = v ** {lock_VS = <>} ;
|
mkVS v = v ** {lock_VS = <>} ;
|
||||||
|
|||||||
Reference in New Issue
Block a user