mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-25 02:38:55 -06:00
an optimization in the German grammar for the dative/genitive variants
This commit is contained in:
@@ -33,19 +33,19 @@ oper
|
|||||||
|
|
||||||
-- For $ParadigmsGer$.
|
-- For $ParadigmsGer$.
|
||||||
|
|
||||||
genitS : Str -> Str = \hund -> case hund of {
|
genitS : Bool -> Str -> Str = \flag,hund -> case hund of {
|
||||||
_ + ("el" | "en" | "er") => hund + "s" ;
|
_ + ("el" | "en" | "er") => hund + "s" ;
|
||||||
_ + ("s" | "ß" | "sch" | "st" | "x" | "z") => hund + "es" ;
|
_ + ("s" | "ß" | "sch" | "st" | "x" | "z") => hund + "es" ;
|
||||||
_ => hund + variants {"s" ; "es"}
|
_ => hund + case flag of {True => "s"; False => "es"}
|
||||||
} ;
|
} ;
|
||||||
pluralN : Str -> Str = \hund -> case hund of {
|
pluralN : Str -> Str = \hund -> case hund of {
|
||||||
_ + ("el" | "er" | "e") => hund + "n" ;
|
_ + ("el" | "er" | "e") => hund + "n" ;
|
||||||
_ + "en" => hund ;
|
_ + "en" => hund ;
|
||||||
_ => hund + "en"
|
_ => hund + "en"
|
||||||
} ;
|
} ;
|
||||||
dativE : Str -> Str = \hund -> case hund of {
|
dativE : Bool -> Str -> Str = \flag,hund -> case hund of {
|
||||||
_ + ("el" | "en" | "er" | "e") => hund ;
|
_ + ("el" | "en" | "er" | "e") => hund ;
|
||||||
_ => variants {hund ; hund + "e"}
|
_ => case flag of {True => hund; False => hund + "e"}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Duden, p. 119
|
-- Duden, p. 119
|
||||||
|
|||||||
@@ -319,21 +319,19 @@ mkV2 : overload {
|
|||||||
regN : Str -> N = \hund -> case hund of {
|
regN : Str -> N = \hund -> case hund of {
|
||||||
_ + "e" => mk6N hund hund hund hund (hund + "n") (hund + "n") Fem ;
|
_ + "e" => mk6N hund hund hund hund (hund + "n") (hund + "n") Fem ;
|
||||||
_ + ("ion" | "ung") => mk6N hund hund hund hund (hund + "en") (hund + "en") Fem ;
|
_ + ("ion" | "ung") => mk6N hund hund hund hund (hund + "en") (hund + "en") Fem ;
|
||||||
_ + ("er" | "en" | "el") => mk6N hund hund hund (genitS hund) hund (pluralN hund) Masc ;
|
_ + ("er" | "en" | "el") => mk6N hund hund hund (genitS (True | False) hund) hund (pluralN hund) Masc ;
|
||||||
_ => mk6N hund hund hund (genitS hund) (hund + "e") (pluralN hund) Masc
|
_ => mk6N hund hund hund (genitS (True | False) hund) (hund + "e") (pluralN hund) Masc
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
reg2N : (x1,x2 : Str) -> Gender -> N = \hund,hunde,g ->
|
reg2N : (x1,x2 : Str) -> Gender -> N = \hund,hunde,g ->
|
||||||
let
|
let hunden = pluralN hunde
|
||||||
hunds = genitS hund ;
|
|
||||||
hundE = dativE hund ;
|
|
||||||
hunden = pluralN hunde
|
|
||||||
in
|
in
|
||||||
case <hund,hunde,g> of { -- Duden p. 223
|
case <hund,hunde,g> of { -- Duden p. 223
|
||||||
<_,_ + ("e" | "er"), Masc | Neutr> => -- I,IV
|
<_,_ + ("e" | "er"), Masc | Neutr> => -- I,IV
|
||||||
mk6N hund hund hundE hunds hunde hunden g ;
|
variants {mk6N hund hund (dativE True hund) (genitS True hund) hunde hunden g ;
|
||||||
|
mk6N hund hund (dativE False hund) (genitS False hund) hunde hunden g} ;
|
||||||
<_ + ("el"|"er"|"en"),_ + ("el"|"er"|"en"), Masc | Neutr> => -- II
|
<_ + ("el"|"er"|"en"),_ + ("el"|"er"|"en"), Masc | Neutr> => -- II
|
||||||
mk6N hund hund hund hunds hunde hunden g ;
|
mk6N hund hund hund (genitS (True | False) hund) hunde hunden g ;
|
||||||
<_,_ + "s", Masc | Neutr> => -- V
|
<_,_ + "s", Masc | Neutr> => -- V
|
||||||
mk6N hund hund hund (hund + "s") hunde hunde g ;
|
mk6N hund hund hund (hund + "s") hunde hunde g ;
|
||||||
<_,_ + "en", Masc> => -- VI
|
<_,_ + "en", Masc> => -- VI
|
||||||
|
|||||||
Reference in New Issue
Block a user