mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-22 01:22:51 -06:00
german AForm and verb endings
This commit is contained in:
@@ -42,6 +42,24 @@ oper
|
|||||||
_ => variants {hund ; hund + "e"}
|
_ => variants {hund ; hund + "e"}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- Duden, p. 119
|
||||||
|
|
||||||
|
verbT : Str -> Str = \v -> case v of {
|
||||||
|
_ + ("t" | "d") => v + "et" ; -- gründen, reden, betten
|
||||||
|
_ + ("ch" | "k" | "p" | "t" | "g" | "b" | "d" | "f" | "s") +
|
||||||
|
("m" | "n") => v + "et" ; -- atmen, widmen, öffnen, rechnen
|
||||||
|
_ => v + "t" -- lernen, lärmen, qualmen etc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
verbST : Str -> Str = \v -> case v of {
|
||||||
|
_ + ("s" | "ss" | "ß" | "sch" | "x" | "z") => v + "t" ;
|
||||||
|
_ => v + "st"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
stemVerb : Str -> Str = \v -> case v of {
|
||||||
|
_ + ("rn" | "ln") => init v ;
|
||||||
|
_ => Predef.tk 2 v
|
||||||
|
} ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -289,12 +289,13 @@ oper
|
|||||||
|
|
||||||
mkV geben gibt gib gab gaebe gegeben =
|
mkV geben gibt gib gab gaebe gegeben =
|
||||||
let
|
let
|
||||||
gebe = init geben ; ----
|
geb = stemVerb geben ;
|
||||||
gibst = init gibt + "st" ; ----
|
gebe = geb + "e" ;
|
||||||
gebt = init gebe ; ----
|
gibst = verbST (init gibt) ;
|
||||||
gabst = gab + "st" ; ----
|
gebt = verbT geb ;
|
||||||
|
gabst = verbST gab ;
|
||||||
gaben = pluralN gab ;
|
gaben = pluralN gab ;
|
||||||
gabt = gab + "t" ----
|
gabt = verbT gab
|
||||||
in
|
in
|
||||||
MorphoGer.mkV
|
MorphoGer.mkV
|
||||||
geben gebe gibst gibt gebt gib gab gabst gaben gabt gaebe gegeben
|
geben gebe gibst gibt gebt gib gab gabst gaben gabt gaebe gegeben
|
||||||
@@ -302,16 +303,16 @@ oper
|
|||||||
|
|
||||||
regV fragen =
|
regV fragen =
|
||||||
let
|
let
|
||||||
frag = Predef.tk 2 fragen ; ----
|
frag = stemVerb fragen ;
|
||||||
fragt = frag + "t" ; ----
|
fragt = verbT frag ;
|
||||||
fragte = fragt + "e" ;
|
fragte = fragt + "e" ;
|
||||||
gefragt = "ge" + fragt ;
|
gefragt = "ge" + fragt ;
|
||||||
in
|
in
|
||||||
mkV fragen fragt frag fragte fragte gefragt ;
|
mkV fragen fragt (frag + "e") fragte fragte gefragt ;
|
||||||
|
|
||||||
irregV singen singt sang saenge gesungen =
|
irregV singen singt sang saenge gesungen =
|
||||||
let
|
let
|
||||||
sing = Predef.tk 2 singen ; ----
|
sing = stemVerb singen ;
|
||||||
in
|
in
|
||||||
mkV singen singt sing sang saenge gesungen ;
|
mkV singen singt sing sang saenge gesungen ;
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ resource ParamGer = ParamX ** {
|
|||||||
|
|
||||||
-- The predicative form of adjectives is not inflected further.
|
-- The predicative form of adjectives is not inflected further.
|
||||||
|
|
||||||
param AForm = APred | AMod Adjf GenNum Case ;
|
param AForm = APred | AMod GenNum Case ;
|
||||||
|
|
||||||
|
|
||||||
--2 For $Verb$
|
--2 For $Verb$
|
||||||
@@ -93,8 +93,23 @@ resource ParamGer = ParamX ** {
|
|||||||
GPl => Pl
|
GPl => Pl
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- Used in $NounGer$.
|
||||||
|
|
||||||
agrAdj : Gender -> Adjf -> Number -> Case -> AForm = \g,a,n,c ->
|
agrAdj : Gender -> Adjf -> Number -> Case -> AForm = \g,a,n,c ->
|
||||||
AMod a (gennum g n) c ;
|
let
|
||||||
|
gn = gennum g n ;
|
||||||
|
e = AMod (GSg Fem) Nom ;
|
||||||
|
en = AMod (GSg Masc) Acc ;
|
||||||
|
in
|
||||||
|
case a of {
|
||||||
|
Strong => AMod gn c ;
|
||||||
|
_ => case <gn,c> of {
|
||||||
|
<GSg _, Nom> => e ;
|
||||||
|
<GSg Masc,Acc> => en ;
|
||||||
|
<GSg _, Acc> => e ;
|
||||||
|
_ => en
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
-- This is used twice in NounGer.
|
-- This is used twice in NounGer.
|
||||||
|
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ resource ResGer = ParamGer ** open Prelude in {
|
|||||||
appAdj : Adjective -> Number => Gender => Case => Str = \adj ->
|
appAdj : Adjective -> Number => Gender => Case => Str = \adj ->
|
||||||
let
|
let
|
||||||
ad : GenNum -> Case -> Str = \gn,c ->
|
ad : GenNum -> Case -> Str = \gn,c ->
|
||||||
adj.s ! Posit ! AMod Strong gn c
|
adj.s ! Posit ! AMod gn c
|
||||||
in
|
in
|
||||||
\\n,g,c => case n of {
|
\\n,g,c => case n of {
|
||||||
Sg => ad (GSg g) c ;
|
Sg => ad (GSg g) c ;
|
||||||
@@ -176,20 +176,14 @@ resource ResGer = ParamGer ** open Prelude in {
|
|||||||
adjForms : (x1,x2 : Str) -> AForm => Str = \teuer,teur ->
|
adjForms : (x1,x2 : Str) -> AForm => Str = \teuer,teur ->
|
||||||
table {
|
table {
|
||||||
APred => teuer ;
|
APred => teuer ;
|
||||||
AMod Strong (GSg Masc) c =>
|
AMod (GSg Masc) c =>
|
||||||
caselist (teur+"er") (teur+"en") (teur+"em") (teur+"es") ! c ;
|
caselist (teur+"er") (teur+"en") (teur+"em") (teur+"es") ! c ;
|
||||||
AMod Strong (GSg Fem) c =>
|
AMod (GSg Fem) c =>
|
||||||
caselist (teur+"e") (teur+"e") (teur+"er") (teur+"er") ! c ;
|
caselist (teur+"e") (teur+"e") (teur+"er") (teur+"er") ! c ;
|
||||||
AMod Strong (GSg Neut) c =>
|
AMod (GSg Neut) c =>
|
||||||
caselist (teur+"es") (teur+"es") (teur+"em") (teur+"es") ! c ;
|
caselist (teur+"es") (teur+"es") (teur+"em") (teur+"es") ! c ;
|
||||||
AMod Strong GPl c =>
|
AMod GPl c =>
|
||||||
caselist (teur+"e") (teur+"e") (teur+"en") (teur+"er") ! c ;
|
caselist (teur+"e") (teur+"e") (teur+"en") (teur+"er") ! c
|
||||||
AMod Weak (GSg g) c => case <g,c> of {
|
|
||||||
<_,Nom> => teur+"e" ;
|
|
||||||
<Masc,Acc> => teur+"en" ;
|
|
||||||
<_,Acc> => teur+"e" ;
|
|
||||||
_ => teur+"en" } ;
|
|
||||||
AMod Weak GPl c => teur+"en"
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- For $Verb$.
|
-- For $Verb$.
|
||||||
|
|||||||
@@ -190,10 +190,16 @@ Ca. 4h more work was needed, so we have spent 16h now.
|
|||||||
|
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
14/1
|
15/1 (3h)
|
||||||
|
|
||||||
TensedGer: just uncomment, except S
|
TensedGer: just uncomment, except S
|
||||||
StructuralGer: almost complete with some determiner forms to revisit
|
StructuralGer: almost complete with some determiner forms to revisit
|
||||||
ParadigmsGer: almost complete with verb form variations to revisit
|
ParadigmsGer: almost complete with verb form variations to revisit
|
||||||
MorphoGer: very few functions in this module
|
MorphoGer: very few functions in this module
|
||||||
|
|
||||||
|
16/1
|
||||||
|
|
||||||
|
ParamGer: removed Strong/Weak from AForm to save lexicon storage. Done in agrAdj instead.
|
||||||
|
Only affects NounGer and QuestionGer. Notice that making case analysis on <a,gn,c> is
|
||||||
|
much less storage-efficient.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user