Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/api/TryGer.gf
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
--# -path=.:../german:../common:../abstract:../prelude

resource TryGer = SyntaxGer, ExtraGer, LexiconGer, ParadigmsGer - [mkAdv], MakeStructuralGer ;
resource TryGer = SyntaxGer, ExtraGer, LexiconGer, ParadigmsGer - [mkAdv,mkIAdv], MakeStructuralGer ;
9 changes: 5 additions & 4 deletions src/german/CatGer.gf
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,11 @@ concrete CatGer of Cat =
-- Question

QCl = {s : Mood => ResGer.Tense => Anteriority => Polarity => QForm => Str} ;
IP = {s : Case => Str ; n : Number} ;

IP = {s : Case => Str ; a : GenNum ; isPron : Bool} ;
IComp = {s : Agr => Str ; ext : Str} ;
IDet = {s : Gender => Case => Str ; n : Number} ;
IQuant = {s : GenNum => Case => Str} ;
IDet = {s : Gender => Case => Str ; n : Number ; a : Adjf} ;
IQuant = {s : GenNum => Case => Str ; a : Adjf} ;

-- Relative

Expand Down Expand Up @@ -114,7 +115,7 @@ concrete CatGer of Cat =
GN = {s : Case => Str; g : Sex} ;
SN = {s : Sex => Case => Str} ;
PN = {s : Case => Str; g : Gender; n : Number} ;
LN = {s : Adjf => Case => Str; hasArt : Bool; g : Gender; n : Number} ;
LN = {s : Adjf => Case => Str; hasDefArt : Bool; g : Gender; n : Number} ;

-- tense with possibility to choose conjunctive forms

Expand Down
9 changes: 5 additions & 4 deletions src/german/ExtendGer.gf
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
concrete ExtendGer of Extend =
CatGer ** ExtendFunctor
- [ -- remove the default implementations of:
GenNP, GenRP, EmptyRelSlash,
GenNP, GenRP, EmptyRelSlash, GenIP, GenModIP,
VPS, ListVPS, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS,
VPI, ListVPI, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV,
ICompAP, IAdvAdv, CompIQuant, PrepCN,
PastPartAP, PastPartAgentAP,
PassVPSlash, PassAgentVPSlash,
AdvIsNP,
RNP, RNPList, Base_rr_RNP, Base_nr_RNP, Base_rn_RNP, Cons_rr_RNP, Cons_nr_RNP, Conj_RNP,
RNP, RNPList, Base_rr_RNP, Base_nr_RNP, Base_rn_RNP, Cons_rr_RNP, Cons_nr_RNP, ConjRNP,
ReflRNP, ReflPron, ReflPoss, PredetRNP, AdvRNP, ReflA2RNP, PossPronRNP,
CompoundN, DetNPMasc, DetNPFem, UseDAP, UseDAPMasc, UseDAPFem,
CardCNCard,
Expand All @@ -37,11 +37,12 @@ concrete ExtendGer of Extend =
} ;

GenRP nu cn = {
s = \\gn,c => relPron ! gn ! Gen ++ cn.s ! Weak ! nu.n ! c ;
s = \\gn,c => relPron ! gn ! Gen ++ cn.s ! Strong ! nu.n ! c ;
a = RAg nu.n P3
} ;


GenIP ip = {s = \\gn,c => ip.s!Gen ; a = Strong} ;
GenModIP num ip cn = IdetCN (IdetQuant (GenIP ip) num) cn ;

EmptyRelSlash slash = {
s = \\m,t,a,p,gn =>
Expand Down
2 changes: 0 additions & 2 deletions src/german/ExtraGer.gf
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,4 @@ concrete ExtraGer of ExtraGerAbs = CatGer **

-- this function is not entirely satisfactory as largely
-- though not entirely duplicating mkClause in ResGer


}
16 changes: 8 additions & 8 deletions src/german/IrregGer.gf
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,13 @@ in {
lin laden_V = irregV "laden" "lädt" "lud" "lüde" "geladen" ;
lin lassen_V = irregV "lassen" "lässt" "ließ" "ließe" "gelassen" ;
lin laufen_V = irregV "laufen" "läuft" "lief" "liefe" "gelaufen" ;
lin leiden_V = irregV "leiden" "leidt" "litt" "litte" "gelitten" ;
lin leiden_V = irregV "leiden" "leidet" "litt" "litte" "gelitten" ;
lin leihen_V = irregV "leihen" "leiht" "lieh" "liehe" "geliehen" ;
lin lesen_V = irregV "lesen" "liest" "las" "läse" "gelesen" ;
lin liegen_V = irregV "liegen" "liegt" "lag" "läge" "gelegen" ;
lin lügen_V = irregV "lügen" "lügt" "log" "löge" "gelogen" ;
lin mahlen_V = irregV "mahlen" "mahlt" "mahlte" "mahlte" "gemahlen" ;
lin meiden_V = irregV "meiden" "meidt" "mied" "miede" "gemieden" ;
lin meiden_V = irregV "meiden" "meidet" "mied" "miede" "gemieden" ;
lin melken_V = irregV "melken" "milkt" "molk" "mölke" "gemolken" ;
lin messen_V = irregV "messen" "misst" "maß" "mäße" "gemessen" ;
lin mißlingen_V = irregV "misslingen" "misslingt" "misslang" "misslungen" "misslänge" ; -- old spelling
Expand Down Expand Up @@ -131,14 +131,14 @@ in {
lin saufen_V = irregV "saufen" "säuft" "soff" "söffe" "gesoffen" ;
lin saugen_V = irregV "saugen" "saugt" "sog" "soge" "gesogen" ;
lin schaffen_V = irregV "schaffen" "schafft" "schuf" "schüfe" "geschaffen" ;
lin scheiden_V = irregV "scheiden" "scheidt" "schied" "schiede" "geschieden" ;
lin scheiden_V = irregV "scheiden" "scheidet" "schied" "schiede" "geschieden" ;
lin scheinen_V = irregV "scheinen" "scheint" "schien" "schiene" "geschienen" ;
lin scheißen_V = irregV "scheißen" "scheißt" "schiss" "schisse" "geschissen" ;
lin schelten_V = irregV "schelten" "schilt" "schalt" "schölte" "gescholten" ;
lin scheren_V = irregV "scheren" "schert" "schor" "schöre" "geschoren" ;
lin schieben_V = irregV "schieben" "schiebt" "schob" "schöbe" "geschoben" ;
lin schießen_V = irregV "schießen" "schießt" "schoss" "schösse" "geschossen" ;
lin schinden_V = irregV "schinden" "schindt" "schund" "schunde" "geschunden" ;
lin schinden_V = irregV "schinden" "schindet" "schund" "schunde" "geschunden" ;
lin schlafen_V = irregV "schlafen" "schläft" "schlief" "schliefe" "geschlafen" ;
lin schlagen_V = irregV "schlagen" "schlägt" "schlug" "schlüge" "geschlagen" ;
lin schleichen_V = irregV "schleichen" "schleicht" "schlich" "schliche" "geschlichen" ;
Expand All @@ -156,7 +156,7 @@ in {
lin schwellen_V = irregV "schwellen" "schwillt" "schwoll" "schwölle" "geschwollen" ;
lin schwimmen_V = irregV "schwimmen" "schwimmt" "schwamm" "schwämme" "geschwommen" ;
lin schwimmen_o_V = irregV "schwimmen" "schwimmt" "schwamm" "schwömme" "geschwommen" ;
lin schwinden_V = irregV "schwinden" "schwindt" "schwand" "schwände" "geschwunden" ;
lin schwinden_V = irregV "schwinden" "schwindet" "schwand" "schwände" "geschwunden" ;
lin schwingen_V = irregV "schwingen" "schwingt" "schwang" "schwänge" "geschwungen" ;
lin schwören_V = irregV "schwören" "schwört" "schwor" "schwüre" "geschworen" ;
lin sehen_V = irregV "sehen" "sieht" "sah" "sähe" "gesehen" ;
Expand Down Expand Up @@ -200,7 +200,7 @@ in {
"tun" "tue" "tust" "tut" "tut" "tue"
"tat" "tatest" "taten" "tatet"
"täte" "getan" [] M.VHaben) ;
lin verderben_V = irregV "verderben" "verdirbt" "verdarb" "verdarbe" "verdorben" ;
lin verderben_V = irregV "verderben" "verdirbt" "verdarb" "verdürbe" "verdorben" ;
lin vergessen_V = irregV "vergessen" "vergisst" "vergaß" "vergäße" "vergessen" ;
lin verlieren_V = irregV "verlieren" "verliert" "verlor" "verlöre" "verloren" ;
lin wachsen_V = irregV "wachsen" "wächst" "wuchs" "wüchse" "gewachsen" ;
Expand All @@ -209,14 +209,14 @@ in {
lin weben_V = irregV "weben" "webt" "wob" "wöbe" "gewoben" ;
lin weichen_V = irregV "weichen" "weicht" "wich" "wiche" "gewichen" ;
lin weisen_V = irregV "weisen" "weist" "wies" "wiese" "gewiesen" ;
lin wenden_V = irregV "wenden" "wendt" "wandte" "wandte" "gewandt" ;
lin wenden_V = irregV "wenden" "wendet" "wandte" "wandte" "gewandt" ;
lin werben_V = irregV "werben" "wirbt" "warb" "würbe" "geworben" ;
lin werden_V = lin V (M.mkV "werden" "werde" "wirst" "wird" "werdet" "werd"
"wurde" "wurdest" "wurden" "wurdet"
"würde" "geworden" [] M.VSein) ;
lin werfen_V = irregV "werfen" "wirft" "warf" "würfe" "geworfen" ;
lin wiegen_V = irregV "wiegen" "wiegt" "wog" "wöge" "gewogen" ;
lin winden_V = irregV "winden" "windt" "wand" "wände" "gewunden" ;
lin winden_V = irregV "winden" "windet" "wand" "wände" "gewunden" ;
lin wissen_V = lin V (M.mkV "wissen" "weiß" "weißt" "weiß" "wisst" "wisse"
"wusste" "wusstest" "wussten" "wusstet"
"wüsste" "gewusst" [] M.VHaben) ;
Expand Down
49 changes: 26 additions & 23 deletions src/german/LexiconGer.gf
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,26 @@

-- work by Aarne Ranta, Andreas Priesnitz, and Henning Thielemann.
-- a few corrections by Hans Leiß, and using the better IrregGer
-- sg/pl t = singulare/plurale tantum

concrete LexiconGer of Lexicon = CatGer **
open Prelude, ParadigmsGer, (Mo = MorphoGer), (Irreg = IrregGer) in {

flags
coding=utf8 ;
coding=utf8 ;
optimize=all_subs ;

lin
add_V3 = dirV3 (prefixV "hinzu" (regV "fügen")) zu_Prep ;
airplane_N = mkN "Flugzeug" "Flugzeuge" neuter ;
alas_Interj = {s = "ach"} ;
alas_Interj = ss "leider" ; -- {s = "ach"} ;
already_Adv = mkAdv "schon" ;
answer_V2S = mkV2S (regV "antworten") datPrep ;
apartment_N = mkN "Wohnung" ;
apple_N = reg2N "Apfel" "Äpfel" masculine ;
art_N = reg2N "Kunst" "Künste" feminine ;
ask_V2Q = mkV2Q (regV "fragen") accPrep ;
baby_N = reg2N "Baby" "Babies" neuter ; ----
baby_N = reg2N "Baby" "Babies" neuter ; ---- "Kleinkind"
bad_A = regA "schlecht" ;
bank_N = reg2N "Bank" "Banken" feminine ;
beautiful_A = regA "schön" ;
Expand All @@ -35,21 +36,21 @@ lin
boat_N = reg2N "Boot" "Boote" neuter ;
book_N = reg2N "Buch" "Bücher" neuter ;
boot_N = reg2N "Stiefel" "Stiefel" masculine ;
boss_N = reg2N "Chef" "Chefs" masculine ; ----
boss_N = reg2N "Chef" "Chefs" masculine ; ---- "Vorgesetzte"
boy_N = reg2N "Junge" "Jungen" masculine ;
bread_N = reg2N "Brot" "Brote" neuter ;
break_V2 = dirV2 (fixprefixV "zer" Irreg.schlagen_V) ;
broad_A = regA "breit" ;
brother_N2 = mkN2 (reg2N "Bruder" "Brüder" masculine) von_Prep ;
brown_A = regA "braun" ;
butter_N = reg2N "Butter" "Butter" feminine ; ---- infl
butter_N = reg2N "Butter" "Butter" feminine ; ---- sg t
buy_V2 = dirV2 (regV "kaufen") ;
camera_N = reg2N "Kamera" "Kameras" feminine ;
cap_N = mkN "Mütze" ;
car_N = mkN "Auto" "Autos" neuter | mkN "Wagen" "Wagen" masculine ;
carpet_N = mkN "Teppich" ;
cat_N = mkN "Katze" ;
ceiling_N = reg2N "Dach" "Dächer" neuter ;
ceiling_N = mkN "Zimmerdecke" ;
chair_N = reg2N "Stuhl" "Stühle" masculine ;
cheese_N = mkN "Käse" "Käse" masculine ;
child_N = reg2N "Kind" "Kinder" neuter ;
Expand All @@ -58,12 +59,12 @@ lin
clean_A = regA "rein" ;
clever_A = mk3A "klug" "klüger" "klügste" ;
close_V2 = dirV2 Irreg.schließen_V ;
coat_N = mkN "Jacke" | mkN "Mantel" "Mantel" masculine;
coat_N = mkN "Jacke" | mkN "Mantel" "Mäntel" masculine;
cold_A = mk3A "kalt" "kälter" "kälteste" ;
come_V = seinV (mk6V "kommen" "kommt" "komm" "kam" "käme" "gekommen") ;
computer_N = reg2N "Rechner" "Rechner" masculine ;
country_N = reg2N "Land" "Länder" neuter ;
cousin_N = reg2N "Vetter" "Vetter" masculine ; --- Kusine
cousin_N = reg2N "Vetter" "Vettern" masculine ; --- "Kusine" feminine
cow_N = reg2N "Kuh" "Kühe" feminine ;
die_V = seinV Irreg.sterben_V | seinV (prefixV "um" Irreg.kommen_V);
distance_N3 = mkN3 (mkN "Entfernung") von_Prep zu_Prep ;
Expand Down Expand Up @@ -91,7 +92,7 @@ lin
garden_N = reg2N "Garten" "Gärten" masculine ;
girl_N = reg2N "Mädchen" "Mädchen" neuter ;
glove_N = mkN "Handschuh" ;
gold_N = reg2N "Gold" "Golde" neuter ; ---- infl
gold_N = reg2N "Gold" "Golde" neuter ; ---- sg t
good_A = mk3A "gut" "besser" "beste" ;
go_V = seinV Irreg.gehen_V ;
green_A = regA "grün" ;
Expand All @@ -112,7 +113,7 @@ lin
know_V2 = dirV2 Irreg.kennen_V ;
know_VQ = mkVQ Irreg.wissen_V ;
know_VS = mkVS Irreg.wissen_V ;
lake_N = reg2N "See" "Seen" masculine ; --- infl
lake_N = mkN "See" "See" "See" "Sees" "Seen" "Seen" masculine ;
lamp_N = mkN "Lampe";
learn_V2 = dirV2 (regV "lernen") ;
leather_N = reg2N "Leder" "Leder" neuter ;
Expand All @@ -126,8 +127,8 @@ lin
love_V2 = dirV2 (regV "lieben") ;
man_N = reg2N "Mann" "Männer" masculine ;
married_A2 = mkA2 (regA "verheiratet") (mkPrep "mit" dative) ;
meat_N = reg2N "Fleisch" "Fleische" neuter ; ---- infl
milk_N = reg2N "Milch" "Milche" feminine ; ---- infl
meat_N = reg2N "Fleisch" "Fleische" neuter ; ---- sg t
milk_N = reg2N "Milch" "Milche" feminine ; ---- sg t
moon_N = mkN "Mond" ;
mother_N2 = mkN2 (reg2N "Mutter" "Mütter" feminine) von_Prep ;
mountain_N = mkN "Berg" ;
Expand All @@ -144,9 +145,10 @@ lin
paper_N = reg2N "Papier" "Papiere" neuter ;
paris_PN = mkPN "Paris" neuter ;
peace_N = mk6N "Friede" "Frieden" "Frieden" "Friedens" "Frieden" "Frieden" masculine ;
pen_N = mkN "Bleistift" ; ----
pen_N = mkN "Bleistift" ;
planet_N = reg2N "Planet" "Planeten" masculine ;
plastic_N = reg2N "Plastik" "Plastiken" feminine ; ----
-- plastic_N = reg2N "Plastik" "Plastiken" feminine ; ----
plastic_N = regN "Kunststoff" ;
play_V2 = dirV2 (regV "spielen") ;
policeman_N = reg2N "Polizist" "Polizisten" masculine ;
priest_N = mkN "Priester" ;
Expand All @@ -160,7 +162,8 @@ lin
religion_N = mkN "Religion" ;
restaurant_N = reg2N "Restaurant" "Restaurants" neuter ;
river_N = reg2N "Fluß" "Flüsse" masculine ;
rock_N = mkN "Stein" ;
-- rock_N = mkN "Stein" ; -- cf. stone_N = mkN "Stein" ;
rock_N = mkN "Felsen" ; -- "Felsbrocken"; infl "Fels" ; HL 6/17
roof_N = reg2N "Dach" "Dächer" neuter ;
rubber_N = reg2N "Gummi" "Gummis" neuter ;
run_V = seinV Irreg.laufen_V ;
Expand All @@ -174,11 +177,11 @@ lin
send_V3 = mkV3 (regV "schicken") ; -- Ger mkV3 v = Ger: mkV3 v accPrep datPrep
sheep_N = reg2N "Schaf" "Schafe" neuter ;
ship_N = reg2N "Schiff" "Schiffe" neuter ;
shirt_N = reg2N "Hemd" "Hemden" neuter ; ---- infl
shirt_N = mkN "Hemd" "Hemd" "Hemd" "Hemds" "Hemden" "Hemden" neuter ;
shoe_N = mkN "Schuh" ;
shop_N = reg2N "Laden" "Läden" masculine ;
short_A = mk3A "kurz" "kürzer" "kürzeste" ;
silver_N = reg2N "Silber" "Silber" neuter ; ---- infl
silver_N = reg2N "Silber" "Silber" neuter ; ---- sg t
sister_N = reg2N "Schwester" "Schwestern" feminine ;
sleep_V = Irreg.schlafen_V ;
small_A = regA "klein" ;
Expand All @@ -200,7 +203,7 @@ lin
talk_V3 = mkV3 (regV "reden") (mkPrep "mit" dative) (mkPrep "über" accusative) ; -- 6/2019
teacher_N = reg2N "Lehrer" "Lehrer" masculine ;
teach_V2 = dirV2 (no_geV (regV "unterrichten")) ;
television_N = reg2N "Fernsehen" "Fernsehen" neuter;
television_N = reg2N "Fernsehen" "Fernsehen" neuter; ---- sg t
thick_A = regA "dick" ;
thin_A = regA "dünn" ;
train_N = reg2N "Zug" "Züge" masculine ;
Expand Down Expand Up @@ -251,7 +254,7 @@ lin
back_N = reg2N "Rücken" "Rücken" masculine ;
bark_N = mkN "Rinde" ;
belly_N = reg2N "Bauch" "Bäuche" masculine ;
blood_N = mkN "Blut" "Blute" neuter ;
blood_N = mkN "Blut" "Blute" neuter ; ---- sg t
bone_N = reg2N "Knochen" "Knochen" masculine ;
breast_N = reg2N "Brust" "Brüste" feminine ;
cloud_N = mkN "Wolke" ;
Expand All @@ -261,7 +264,7 @@ lin
earth_N = mkN "Erde" ;
egg_N = mkN "Ei" "Eier" neuter ;
eye_N = mkN "Auge" "Augen" neuter;
fat_N = mkN "Fett" "Fetter" neuter ;
fat_N = mkN "Fett" "Fette" neuter ;
feather_N = mkN "Feder" "Federn" feminine ;
fingernail_N = reg2N "Fingernagel" "Fingernägel" masculine ;
fire_N = mkN "Feuer" "Feuer" neuter ;
Expand All @@ -270,7 +273,7 @@ lin
foot_N = reg2N "Fuß" "Füße" masculine ;
forest_N = reg2N "Wald" "Wälder" masculine ;
grass_N = mkN "Gras" "Gräser" neuter ;
guts_N = mkN "Eingeweide" ;
guts_N = mkN "Eingeweide" "Eingeweide" neuter ; ---- pl t ?
hair_N = mkN "Haar" "Haare" neuter ;
hand_N = mkN "Hand" "Hände" feminine ;
head_N = mkN "Kopf" "Köpfe" masculine ;
Expand All @@ -295,11 +298,11 @@ lin
rope_N = mkN "Seil" "Seile" neuter ;
salt_N = mkN "Salz" "Salze" neuter ;
sand_N = mkN "Sand" ;
seed_N = mkN "Same" ;
seed_N = mkN "Same" "Samen" masculine ;
skin_N = mkN "Haut" "Häute" feminine ;
sky_N = mkN "Himmel" ;
smoke_N = mkN "Rauch" ;
snow_N = mkN "Schnee" "Schneen" masculine ; ---- pl
snow_N = mkN "Schnee" "Schneen" masculine ; ---- sg t
stick_N = mkN "Stock" "Stöcke" masculine ;
tail_N = mkN "Schwanz" "Schwänze" masculine ;
tongue_N = mkN "Zunge" ;
Expand Down
2 changes: 1 addition & 1 deletion src/german/MakeStructuralGer.gf
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ oper
mkSubj : Str -> Subj = \x ->
{s = x ; lock_Subj = <>} ;
mkIQuant : Str -> IQuant = \s ->
{s = \\_,_ => s ; lock_IQuant = <>} ;
{s = \\_,_ => s ; a = Strong ; lock_IQuant = <>} ;

mkPredet = overload {
mkPredet : A -> Predet = \a ->
Expand Down
12 changes: 12 additions & 0 deletions src/german/MorphoGer.gf
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,18 @@ oper
_ => Predef.tk 2 v
} ;

stemVerbImpSg : Str -> Str -> Str = \inf,pres3Sg ->
let stem = stemVerb inf ; -- vergeb.en, piss.en
stemI = init pres3Sg -- vergib.t , piß.t
in case <stem,stemI> of {
<_ + ("e"|"i") + #nonvowels,
_ + ("i"|"ie") + #nonvowels> => stemI ; -- vergib , piß
_ => stem } ; -- HL 7/17 (always the final vowel?)

nonvowels : pattern Str =
#(("p"|"b"|"f"|"t"|"d"|"v"|"k"|"g"|"c"|"h"|"j"
|"l"|"r"|"m"|"n"|"s"|"x"|"q"|"z"|"s"|"ß")*) ;

-- For $Numeral$.

LinDigit = {s : DForm => CardOrd => Str} ;
Expand Down
4 changes: 2 additions & 2 deletions src/german/NamesGer.gf
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ lin FullName gn sn = {

-- UseLN : LN -> NP ;
lin UseLN ln = {
s = \\b,c => case ln.hasArt of {
s = \\b,c => case ln.hasDefArt of {
True => case b of {
True => [] ; -- defart dropped
False => artDef ! (gennum ln.g ln.n) ! c
Expand All @@ -61,7 +61,7 @@ lin PlainLN ln = {
-- InLN : LN -> Adv ;
lin InLN ln = {
s = appPrepNP P.inDat_Prep {
s = \\b,c => case ln.hasArt of {
s = \\b,c => case ln.hasDefArt of {
True => case b of {
True => [] ; -- defart dropped
False => artDef ! (gennum ln.g ln.n) ! c
Expand Down
Loading
Loading