diff --git a/src/german/CatGer.gf b/src/german/CatGer.gf index 563a3962a..2dcbb13b0 100644 --- a/src/german/CatGer.gf +++ b/src/german/CatGer.gf @@ -106,13 +106,17 @@ concrete CatGer of Cat = Tense = {s : Str ; t : ResGer.Tense ; m : Mood} ; linref + NP = \np -> np.s!(NPC Nom) ++ np.adv ++ np.ext ++ np.rc ; -- HL 6/2019 + CN = \cn -> cn.s ! Strong ! Pl ! Nom ++ cn.adv ++ cn.ext ++ cn.rc ! Pl ; + SSlash = \ss -> ss.s ! Main ++ ss.c2.s ; ClSlash = \cls -> cls.s ! MIndic ! Pres ! Simul ! Pos ! Main ++ cls.c2.s ; VP = \vp -> useInfVP False vp ; VPSlash = \vps -> useInfVP False vps ++ vps.c2.s ; - AP = \ap -> ap.s ! APred ++ ap.ext ; + AP = \ap -> ap.c.p1 ++ ap.s ! APred ++ ap.c.p2 ++ ap.ext ; + A2 = \a2 -> a2.s ! Posit ! APred ++ a2.c2.s ; V, VS, VQ, VA = \v -> useInfVP False (predV v) ; V2, V2A, V2Q, V2S = \v -> useInfVP False (predV v) ++ v.c2.s ; diff --git a/src/german/ConstructionGer.gf b/src/german/ConstructionGer.gf index 540edf58d..83eef3e79 100644 --- a/src/german/ConstructionGer.gf +++ b/src/german/ConstructionGer.gf @@ -10,7 +10,7 @@ lin hungry_VP = mkVP (mkA "hungrig") ; thirsty_VP = mkVP (mkA "durstig") ; tired_VP = mkVP (mkA "müde") ; - scared_VP = mkVP have_V2 (mkNP (mkN "Angst" "Angsten" feminine)) ; + scared_VP = mkVP have_V2 (mkNP (mkN "Angst" "Ängste" feminine)) ; ill_VP = mkVP (mkA "krank") ; ready_VP = mkVP (mkA "bereit") ; diff --git a/src/german/DictVerbsGer.gf b/src/german/DictVerbsGer.gf index f77ddaad2..5e4f74c68 100644 --- a/src/german/DictVerbsGer.gf +++ b/src/german/DictVerbsGer.gf @@ -256,8 +256,8 @@ lin abgehen_V = prefixV "ab" (irregV "gehen" "geht" "ging" "ginge" "gegangen") ; abgenzern_V2 = dirV2 (prefixV "ab" (regV "genzern")) ; abgeraten_von_V2 = prepV2 (prefixV "ab" (irregV "geraten" "gerät" "geriet" "geriete" "geraten")) von_Prep ; - abgewoehnen_rV2 = reflV2 (prefixV "ab" (regV "gewöhnen")) accusative accPrep ; - abgewoehnen_rVV = reflVV (prefixV "ab" (regV "gewöhnen")) accusative ; + abgewoehnen_rV2 = reflV2 (prefixV "ab" (regV "gewöhnen")) dative accPrep ; + abgewoehnen_rVV = reflVV (prefixV "ab" (regV "gewöhnen")) dative ; abgraebeln_V = prefixV "ab" (regV "gräbeln") ; abgraten_V2 = dirV2 (prefixV "ab" (regV "graten")) ; abgrenzen_V2 = dirV2 (prefixV "ab" (regV "grenzen")) ; @@ -338,9 +338,9 @@ lin absahnen_V2 = dirV2 (prefixV "ab" (regV "sahnen")) ; abschachern_dat_V3 = accdatV3 (prefixV "ab" (regV "schachern")) ; abschaffen_V2 = dirV2 (prefixV "ab" (regV "schaffen")) ; - abschauen_bei_rV3 = reflV3 (prefixV "ab" (irregV "schauen" "schaut" "schaute" "schaute" "geschaut")) accusative accPrep bei_Prep ; + abschauen_bei_rV3 = reflV3 (prefixV "ab" (irregV "schauen" "schaut" "schaute" "schaute" "geschaut")) dative accPrep bei_Prep ; abschauen_bei_V3 = dirV3 (prefixV "ab" (irregV "schauen" "schaut" "schaute" "schaute" "geschaut")) bei_Prep ; - abschauen_rV2 = reflV2 (prefixV "ab" (irregV "schauen" "schaut" "schaute" "schaute" "geschaut")) accusative accPrep ; + abschauen_rV2 = reflV2 (prefixV "ab" (irregV "schauen" "schaut" "schaute" "schaute" "geschaut")) dative accPrep ; abschenken_V2 = dirV2 (prefixV "ab" (regV "schenken")) ; abschenken_V = prefixV "ab" (regV "schenken") ; abschicken_V2 = dirV2 (prefixV "ab" (regV "schicken")) ; @@ -350,7 +350,7 @@ lin abschliessen_V2 = dirV2 (prefixV "ab" (irregV "schließen" "schließt" "schloss" "schlösse" "geschlossen")) ; abschmettern_V2 = dirV2 (prefixV "ab" (irregV "schmettern" "schmettert" "schmetterte" "schmetterte" "geschmettert")) ; abschmieren_V = prefixV "ab" (regV "schmieren") ; - abschminken_rV2 = reflV2 (prefixV "ab" (regV "schminken")) accusative accPrep ; + abschminken_rV2 = reflV2 (prefixV "ab" (regV "schminken")) dative accPrep ; abschminken_V2 = dirV2 (prefixV "ab" (regV "schminken")) ; abschmirgeln_V2 = dirV2 (prefixV "ab" (regV "schmirgeln")) ; abschmuecken_V2 = dirV2 (prefixV "ab" (regV "schmücken")) ; @@ -580,7 +580,7 @@ lin anfreunden_mit_rV2 = reflV2 (prefixV "an" (regV "freunden")) accusative mit_Prep ; anfuehlen_V2 = dirV2 (prefixV "an" (regV "fühlen")) ; anfuehlen_wie_rV2 = reflV2 (prefixV "an" (regV "fühlen")) accusative (mkPrep "wie" nominative) ; - angeben_mit_V2 = prepV2 (prefixV "an" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) mit_Prep ; + angeben_mit_V2 = prepV2 (prefixV "an" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) mit_Prep ; angehen_sV = dassV (prefixV "an" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) ; angehen_V2 = dirV2 (prefixV "an" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) ; angehoeren_dat_V2 = mkV2 (prefixV "an" (regV "gehören")) datPrep ; @@ -797,9 +797,9 @@ lin auffassen_als_V3 = dirV3 (prefixV "auf" (regV "fassen")) (mkPrep "als" accusative) ; auffrieren_V = prefixV "auf" (irregV "frieren" "friert" "fror" "fröre" "gefroren") ; auffuehren_V2 = dirV2 (prefixV "auf" (regV "führen")) ; - aufgeben_V2 = dirV2 (prefixV "auf" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) ; - aufgeben_V = prefixV "auf" (irregV "geben" "gebt" "gab" "gäbe" "gegeben") ; - aufgeben_VV = mkVV (prefixV "auf" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) ; + aufgeben_V2 = dirV2 (prefixV "auf" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) ; + aufgeben_V = prefixV "auf" (irregV "geben" "gibt" "gab" "gäbe" "gegeben") ; + aufgeben_VV = mkVV (prefixV "auf" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) ; aufgehen_dat_V2 = mkV2 (prefixV "auf" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) datPrep ; aufgehen_V = prefixV "auf" (irregV "gehen" "geht" "ging" "ginge" "gegangen") ; aufhaengen_V2 = dirV2 (prefixV "auf" (regV "hängen")) ; @@ -925,7 +925,7 @@ lin ausbuexen_von_V2 = prepV2 (prefixV "aus" (regV "büxen")) von_Prep ; ausbuexen_V = prefixV "aus" (regV "büxen") ; ausdehnen_rV = reflV (prefixV "aus" (regV "dehnen")) accusative ; - ausdenken_rV2 = reflV2 (prefixV "aus" (irregV "denken" "denkt" "dachte" "dächte" "gedacht")) accusative accPrep ; + ausdenken_rV2 = reflV2 (prefixV "aus" (irregV "denken" "denkt" "dachte" "dächte" "gedacht")) dative accPrep ; ausdruecken_rVA = reflVA (prefixV "aus" (regV "drücken")) accusative ; ausdruecken_V2 = dirV2 (prefixV "aus" (regV "drücken")) ; -- ausdruecken_V = prefixV "aus" (irregV "drücken" "drückt" "drückte" "drückte" "gedrückt") ; @@ -938,7 +938,7 @@ lin ausfuehren_V2 = dirV2 (prefixV "aus" (regV "führen")) ; ausfuehren_VS = mkVS (prefixV "aus" (regV "führen")) ; ausfuellen_V2 = dirV2 (prefixV "aus" (regV "füllen")) ; - ausgeben_V2 = dirV2 (prefixV "aus" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) ; + ausgeben_V2 = dirV2 (prefixV "aus" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) ; ausgehen_mit_V2 = prepV2 (prefixV "aus" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) mit_Prep ; ausgehen_V = prefixV "aus" (irregV "gehen" "geht" "ging" "ginge" "gegangen") ; ausgleichen_durch_V3 = dirV3 (prefixV "aus" (irregV "gleichen" "gleicht" "glich" "gliche" "geglichen")) durch_Prep ; @@ -1194,7 +1194,7 @@ lin behandeln_als_V3 = dirV3 (regV "behandeln") (mkPrep "als" accusative) ; behandeln_mit_V3 = dirV3 (regV "behandeln") mit_Prep ; behaupten_VS = mkVS (irregV "behaupten" "behauptet" "behauptete" "behaupte" "behauptet") ; - behelfen_mit_rV2 = reflV2 (irregV "behelfen" "behilft" "behalf" "behalf" "beholfen") accusative mit_Prep ; + behelfen_mit_rV2 = reflV2 (irregV "behelfen" "behilft" "behalf" "behalf" "beholfen") dative mit_Prep ; behelligen_mit_V3 = dirV3 (regV "behelligen") mit_Prep ; beherbergen_V2 = dirV2 (regV "beherbergen") ; beherrschen_V2 = dirV2 (regV "beherrschen") ; @@ -1902,7 +1902,7 @@ lin einen_V2 = dirV2 (regV "einen") ; einfallen_dat_sV2 = dassV2 (prefixV "ein" (irregV "fallen" "fallt" "fiel" "fiele" "gefallen")) datPrep ; einfallen_in_V2 = prepV2 (prefixV "ein" (irregV "fallen" "fallt" "fiel" "fiele" "gefallen")) (mkPrep "in" accusative) ; - einfangen_rV2 = reflV2 (prefixV "ein" (irregV "fangen" "fängt" "fing" "fing" "gefangen")) accusative accPrep ; + einfangen_rV2 = reflV2 (prefixV "ein" (irregV "fangen" "fängt" "fing" "fing" "gefangen")) dative accPrep ; einfangen_V2 = dirV2 (prefixV "ein" (irregV "fangen" "fängt" "fing" "fing" "gefangen")) ; einfinden_loc_rV2 = reflV2 (prefixV "ein" (irregV "finden" "findet" "fand" "fände" "gefunden")) accusative loc_Prep ; einfloessen_dat_V2S = mkV2S (prefixV "ein" (irregV "flößen" "flößt" "flöße" "flöße" "geflößt")) datPrep ; @@ -1913,7 +1913,7 @@ lin einfuegen_rV = reflV (prefixV "ein" (regV "fügen")) accusative ; einfuehren_in_V3 = dirV3 (prefixV "ein" (regV "führen")) (mkPrep "in" accusative) ; einfuehren_V2 = dirV2 (prefixV "ein" (regV "führen")) ; - eingeben_in_V3 = dirV3 (prefixV "ein" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) (mkPrep "in" accusative) ; + eingeben_in_V3 = dirV3 (prefixV "ein" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) (mkPrep "in" accusative) ; eingehen_in_V2 = prepV2 (prefixV "ein" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) (mkPrep "in" accusative) ; eingehen_V = prefixV "ein" (irregV "gehen" "geht" "ging" "ginge" "gegangen") ; eingemeinden_V2 = dirV2 (prefixV "ein" (irregV "gemeinden" "gemeindet" "gemeindete" "gemeindete" "gemeindet")) ; @@ -2210,7 +2210,7 @@ lin ergaenzen_mit_V3 = dirV3 (irregV "ergänzen" "ergänzt" "ergänzte" "ergänzte" "ergänzt") mit_Prep ; ergattern_V2 = dirV2 (irregV "ergattern" "ergattert" "ergatterte" "ergattere" "ergattert") ; ergaunern_V2 = dirV2 (irregV "ergaunern" "ergaunert" "ergaunerte" "ergaunerte" "ergaunert") ; - ergeben_dat_rV2 = reflV2 (irregV "ergeben" "ergebt" "ergab" "ergäbe" "ergeben") accusative datPrep ; + ergeben_dat_rV2 = reflV2 (irregV "ergeben" "ergibt" "ergab" "ergäbe" "ergeben") accusative datPrep ; ergetzen_am_V2 = prepV2 (irregV "ergetzen" "ergetzt" "ergetzte" "ergetzte" "ergetzt") (mkPrep "an" dative) ; ergiessen_in_V2 = prepV2 (irregV "ergießen" "ergießt" "ergoss" "ergösse" "ergossen") (mkPrep "in" accusative) ; ergiessen_ueber_V2 = prepV2 (irregV "ergießen" "ergießt" "ergoss" "ergösse" "ergossen") (mkPrep "über" accusative) ; @@ -2266,7 +2266,7 @@ lin erleichtern_rV = reflV (irregV "erleichtern" "erleichtert" "erleichterte" "erleichtere" "erleichtert") accusative ; erleiden_V2 = dirV2 (irregV "erleiden" "erleidet" "erlitt" "erlitte" "erlitten") ; erlernen_V2 = dirV2 (irregV "erlernen" "erlernt" "erlernte" "erlernte" "erlernt") ; - erlesen_rV2 = reflV2 (irregV "erlesen" "erlest" "erlas" "erläse" "erlesen") accusative accPrep ; + erlesen_rV2 = reflV2 (irregV "erlesen" "erlest" "erlas" "erläse" "erlesen") dative accPrep ; erleuchten_V2 = dirV2 (irregV "erleuchten" "erleuchtet" "erleuchtete" "erleuchtete" "erleuchtet") ; erloeschen_V = irregV "erlöschen" "erlöscht" "erlosch" "erlösche" "erloschen" ; erloesen_V2 = dirV2 (irregV "erlösen" "erlöst" "erlöste" "erlöste" "erlöst") ; @@ -2369,7 +2369,7 @@ lin erwaermen_V2 = dirV2 (irregV "erwärmen" "erwärmt" "erwärmte" "erwärmte" "erwärmt") ; erwahren_V2 = dirV2 (irregV "erwahren" "erwahrt" "erwahrte" "erwahrte" "erwahrt") ; erwarten_V2 = dirV2 (irregV "erwarten" "erwartet" "erwartete" "erwarte" "erwartet") ; - erwarten_von_rV3 = reflV3 (irregV "erwarten" "erwartet" "erwartete" "erwarte" "erwartet") accusative accPrep von_Prep ; + erwarten_von_rV3 = reflV3 (irregV "erwarten" "erwartet" "erwartete" "erwarte" "erwartet") dative accPrep von_Prep ; erweichen_V2 = dirV2 (irregV "erweichen" "erweicht" "erweichte" "erweichte" "erweicht") ; erweisen_dat_V3 = accdatV3 (irregV "erweisen" "erweist" "erwies" "erwiese" "erwiesen") ; erweitern_V2 = dirV2 (irregV "erweitern" "erweitert" "erweiterte" "erweiterte" "erweitert") ; @@ -2761,7 +2761,7 @@ lin gebaerden_als_rV2 = reflV2 (irregV "gebärden" "gebärdet" "gebärdete" "gebärdete" "gebärdet") accusative (mkPrep "als" nominative) ; gebaerden_wie_rV2 = reflV2 (irregV "gebärden" "gebärdet" "gebärdete" "gebärdete" "gebärdet") accusative (mkPrep "wie" nominative) ; gebaeren_V2 = dirV2 (irregV "gebären" "gebärt" "gebar" "gebäre" "geboren") ; - geben_dat_V3 = accdatV3 (irregV "geben" "gebt" "gab" "gäbe" "gegeben") ; + geben_dat_V3 = accdatV3 (irregV "geben" "gibt" "gab" "gäbe" "gegeben") ; gebieten_dat_V2V = mkV2V (irregV "gebieten" "gebietet" "gebot" "geböte" "geboten") datPrep ; gebrauchen_V2 = dirV2 (irregV "gebrauchen" "gebraucht" "gebrauchte" "gebrauchte" "gebraucht") ; gebuehren_dat_sV2 = dassV2 (irregV "gebühren" "gebührt" "gebührte" "gebührte" "gebührt") datPrep ; @@ -2826,7 +2826,7 @@ lin gestatten_dat_V2S = mkV2S (irregV "gestatten" "gestattet" "gestattete" "gestattete" "gestattet") datPrep ; gestatten_dat_V3 = accdatV3 (irregV "gestatten" "gestattet" "gestattete" "gestattete" "gestattet") ; gestikulieren_V = regV "gestikulieren" ; - getrauen_rVV = reflVV (irregV "getrauen" "getraut" "getraute" "getraute" "getraut") dative ; + getrauen_rVV = reflVV (irregV "getrauen" "getraut" "getraute" "getraute" "getraut") accusative ; gettoisieren_V2 = dirV2 (regV "gettoisieren") ; gewaehren_dat_V3 = accdatV3 (irregV "gewähren" "gewährt" "gewährte" "gewährte" "gewährt") ; gewaehrleisten_dat_V2S = mkV2S (irregV "gewährleisten" "gewährleistet" "gewährleistete" "gewährleistete" "gewährleistet") datPrep ; @@ -2904,7 +2904,7 @@ lin grausen_sV2 = dassV2 (regV "grausen") accPrep ; grausen_V2 = dirV2 (regV "grausen") ; greifen_dir_V2 = prepV2 (irregV "greifen" "greift" "griff" "griffe" "gegriffen") dir_Prep ; - greifen_rV2 = reflV2 (irregV "greifen" "greift" "griff" "griffe" "gegriffen") accusative accPrep ; + greifen_rV2 = reflV2 (irregV "greifen" "greift" "griff" "griffe" "gegriffen") dative accPrep ; greinen_V = regV "greinen" ; grenzen_an_V2 = prepV2 (regV "grenzen") (mkPrep "an" accusative) ; grienen_V = regV "grienen" ; @@ -3041,7 +3041,7 @@ lin herausarbeiten_VS = mkVS (prefixV "heraus" (regV "arbeiten")) ; herausfinden_V2 = dirV2 (prefixV "heraus" (irregV "finden" "findet" "fand" "fände" "gefunden")) ; herausfinden_VS = mkVS (prefixV "heraus" (irregV "finden" "findet" "fand" "fände" "gefunden")) ; - herausgeben_V2 = dirV2 (prefixV "heraus" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) ; + herausgeben_V2 = dirV2 (prefixV "heraus" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) ; herauskommen_aus_V2 = prepV2 (prefixV "heraus" (irregV "kommen" "kommt" "kam" "käme" "gekommen")) aus_Prep ; herauskommen_sV = dassV (prefixV "heraus" (irregV "kommen" "kommt" "kam" "käme" "gekommen")) ; herauskristallisieren_rV = reflV (prefixV "heraus" (regV "kristallisieren")) accusative ; @@ -3677,7 +3677,7 @@ lin krakeelen_V = regV "krakeelen" ; krakeelen_VS = mkVS (regV "krakeelen") ; krakeln_dir_V3 = dirV3 (regV "krakeln") dir_Prep ; - krallen_rV2 = reflV2 (regV "krallen") accusative accPrep ; + krallen_rV2 = reflV2 (regV "krallen") dative accPrep ; kramen_aus_V3 = dirV3 (regV "kramen") aus_Prep ; kramen_in_nach_V3 = mkV3 (regV "kramen") (mkPrep "in" accusative) nach_Prep ; kranken_am_V2 = prepV2 (regV "kranken") (mkPrep "an" dative) ; @@ -3843,12 +3843,12 @@ lin leiden_V2 = dirV2 (irregV "leiden" "leidet" "litt" "litte" "gelitten") ; leidtun_dat_sV2 = dassV2 (prefixV "leid" (irregV "tun" "tut" "tat" "täte" "getan")) datPrep ; leidtun_dat_V2 = mkV2 (prefixV "leid" (irregV "tun" "tut" "tat" "täte" "getan")) datPrep ; - leihen_bei_rV3 = reflV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") accusative accPrep bei_Prep ; + leihen_bei_rV3 = reflV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") dative accPrep bei_Prep ; leihen_dat_V3 = accdatV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") ; - leihen_im_rV3 = reflV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") accusative accPrep (mkPrep "in" dative) ; - leihen_von_rV3 = reflV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") accusative accPrep von_Prep ; + leihen_im_rV3 = reflV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") dative accPrep (mkPrep "in" dative) ; + leihen_von_rV3 = reflV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") dative accPrep von_Prep ; leimen_V2 = dirV2 (regV "leimen") ; - leisten_rV2 = reflV2 (irregV "leisten" "leistet" "leistete" "leiste" "geleistet") accusative accPrep ; + leisten_rV2 = reflV2 (irregV "leisten" "leistet" "leistete" "leiste" "geleistet") dative accPrep ; leisten_V2 = dirV2 (irregV "leisten" "leistet" "leistete" "leiste" "geleistet") ; leitartikeln_V = regV "leitartikeln" ; leiten_V2 = dirV2 (irregV "leiten" "leitet" "leitete" "leite" "geleitet") ; @@ -4057,7 +4057,7 @@ lin miterleben_VS = mkVS (prefixV "mit" (irregV "erleben" "erlebt" "erlebte" "erlebte" "erlebt")) ; mitessen_mit_V2 = prepV2 (prefixV "mit" (irregV "essen" "isst" "aß" "aß" "gegessen")) mit_Prep ; mitfuehlen_mit_V2 = prepV2 (prefixV "mit" (regV "fühlen")) mit_Prep ; - mitgeben_V2 = dirV2 (prefixV "mit" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) ; + mitgeben_V2 = dirV2 (prefixV "mit" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) ; mitgehen_mit_V2 = prepV2 (prefixV "mit" (irregV "gehen" "geht" "ging" "ging" "gegangen")) mit_Prep ; mitkommen_mit_V2 = prepV2 (prefixV "mit" (irregV "kommen" "kommt" "kam" "käme" "gekommen")) mit_Prep ; mitmischen_bei_V2 = prepV2 (prefixV "mit" (regV "mischen")) bei_Prep ; @@ -4137,7 +4137,7 @@ lin nachforschen_VQ = mkVQ (prefixV "nach" (regV "forschen")) ; nachfuehlen_dat_V2S = mkV2S (prefixV "nach" (regV "fühlen")) datPrep ; nachfuehlen_dat_V3 = accdatV3 (prefixV "nach" (regV "fühlen")) ; - nachgeben_dat_V2 = mkV2 (prefixV "nach" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) datPrep ; + nachgeben_dat_V2 = mkV2 (prefixV "nach" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) datPrep ; nachgehen_dat_V2 = mkV2 (prefixV "nach" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) datPrep ; nachgruebeln_ueber_V2 = prepV2 (prefixV "nach" (regV "grübeln")) (mkPrep "über" dative) ; nachhaken_bei_V2 = prepV2 (prefixV "nach" (regV "haken")) bei_Prep ; @@ -4780,9 +4780,9 @@ lin reimen_auf_V3 = dirV3 (regV "reimen") (mkPrep "auf" accusative) ; reimen_V2 = dirV2 (regV "reimen") ; reinchecken_in_V2 = prepV2 (prefixV "rein" (regV "checken")) (mkPrep "in" accusative) ; - reinchecken_rV2 = reflV2 (prefixV "rein" (regV "checken")) accusative accPrep ; + reinchecken_rV2 = reflV2 (prefixV "rein" (regV "checken")) dative accPrep ; reinigen_V2 = dirV2 (regV "reinigen") ; - reinpfeifen_rV2 = reflV2 (prefixV "rein" (irregV "pfeifen" "pfeift" "pfiff" "priffe" "reingepfiffen")) accusative accPrep ; + reinpfeifen_rV2 = reflV2 (prefixV "rein" (irregV "pfeifen" "pfeift" "pfiff" "priffe" "reingepfiffen")) dative accPrep ; reinziehen_in_V3 = dirV3 (prefixV "rein" (irregV "ziehen" "zieht" "zog" "zöge" "gezogen")) (mkPrep "in" accusative) ; reisen_dir_V2 = prepV2 (regV "reisen") dir_Prep ; reissen_V2 = dirV2 (irregV "reißen" "reißt" "riss" "risse" "gerissen") ; @@ -5012,8 +5012,8 @@ lin schelten_V2 = dirV2 (irregV "schelten" "schilt" "schalt" "schölte" "gescholten") ; schematisieren_V2 = dirV2 (regV "schematisieren") ; schenken_dat_V3 = accdatV3 (regV "schenken") ; - schenken_rV2 = reflV2 (regV "schenken") accusative accPrep ; - schenken_rVV = reflVV (regV "schenken") accusative ; + schenken_rV2 = reflV2 (regV "schenken") dative accPrep ; + schenken_rVV = reflVV (regV "schenken") dative ; scheppen_V2 = dirV2 (regV "scheppen") ; scheppern_V = regV "scheppern" ; scheren_2_V = regV "scheren" ; @@ -5357,8 +5357,8 @@ lin spannen_VS = mkVS (regV "spannen") ; sparen_an_V2 = prepV2 (regV "sparen") (mkPrep "an" accusative) ; sparen_mit_V2 = prepV2 (regV "sparen") mit_Prep ; - sparen_rV2 = reflV2 (regV "sparen") accusative accPrep ; - sparen_rVV = reflVV (regV "sparen") accusative ; + sparen_rV2 = reflV2 (regV "sparen") dative accPrep ; + sparen_rVV = reflVV (regV "sparen") dative ; sparen_V2 = dirV2 (regV "sparen") ; spassen_mit_V2 = prepV2 (regV "spaßen") mit_Prep ; spassen_VS = mkVS (regV "spaßen") ; @@ -5867,8 +5867,8 @@ lin ueberfliegen_V2 = dirV2 (irregV "überfliegen" "überfliegt" "überflog" "überflögee" "überflogen") ; ueberfordern_V2 = dirV2 (irregV "überfordern" "überfordert" "überforderte" "überforderte" "überfordert") ; ueberfuehren_gen_V3 = mkV3 (irregV "überführen" "überführt" "überführte" "überführte" "überführt") genPrep accPrep ; - uebergeben_dat_V3 = accdatV3 (irregV "übergeben" "übergebt" "übergab" "übergäbe" "übergeben") ; - uebergeben_rV = reflV (irregV "übergeben" "übergebt" "übergab" "übergäbe" "übergeben") accusative ; + uebergeben_dat_V3 = accdatV3 (irregV "übergeben" "übergibt" "übergab" "übergäbe" "übergeben") ; + uebergeben_rV = reflV (irregV "übergeben" "übergibt" "übergab" "übergäbe" "übergeben") accusative ; uebergehen_V2 = dirV2 (irregV "übergehen" "übergeht" "überging" "überginge" "übergegangen") ; uebergehen_VS = mkVS (irregV "übergehen" "übergeht" "überging" "überginge" "übergegangen") ; ueberholen_V2 = dirV2 (irregV "überholen" "überholt" "überholte" "überholte" "überholt") ; @@ -5938,7 +5938,7 @@ lin umfriedigen_V2 = dirV2 (irregV "umfriedigen" "umfriedigt" "umfriedigte" "umfriedigte" "umfriedigt") ; umfunktionieren_zu_V3 = dirV3 (prefixV "um" (regV "funktionieren")) zu_Prep ; umgarnen_V2 = dirV2 (regV "umgarnen") ; - umgeben_mit_V3 = dirV3 (irregV "umgeben" "umgebt" "umgab" "umgäbe" "umgeben") mit_Prep ; + umgeben_mit_V3 = dirV3 (irregV "umgeben" "umgibt" "umgab" "umgäbe" "umgeben") mit_Prep ; umgehen_V2 = dirV2 (irregV "umgehen" "umgeht" "umging" "umging" "umgangen") ; umgestalten_V2 = dirV2 (prefixV "um" (irregV "gestalten" "gestaltet" "gestaltete" "gestaltete" "gestaltet")) ; umhinkoennen_VV = mkVV (prefixV "umhin" (irregV "können" "kann" "konnte" "konnte" "gekonnt")) ; @@ -6198,7 +6198,7 @@ lin vergammeln_V = irregV "vergammeln" "vergammelt" "vergammelte" "vergammelte" "vergammelt" ; vergasen_V2 = dirV2 (irregV "vergasen" "vergast" "vergaste" "vergaste" "vergast") ; vergattern_zu_V3 = dirV3 (irregV "vergattern" "vergatternt" "vergatterte" "vergatterte" "vergattert") zu_Prep ; - vergeben_dat_V2S = mkV2S (irregV "vergeben" "vergebt" "vergab" "vergäbe" "vergeben") datPrep ; + vergeben_dat_V2S = mkV2S (irregV "vergeben" "vergibt" "vergab" "vergäbe" "vergeben") datPrep ; vergegenstaendlichen_V2 = dirV2 (irregV "vergegenständlichen" "vergegenständlicht" "vergegenständlichte" "vergegenständlichte" "vergegenständlicht") ; vergegenwaertigen_dat_V2S = mkV2S (irregV "vergegenwärtigen" "vergegenwärtigt" "vergegenwärtigte" "vergegenwärtigte" "vergegenwärtigt") datPrep ; vergegenwaertigen_dat_V3 = accdatV3 (irregV "vergegenwärtigen" "vergegenwärtigt" "vergegenwärtigte" "vergegenwärtigte" "vergegenwärtigt") ; @@ -6638,7 +6638,7 @@ lin vorbeugen_dat_V2 = mkV2 (prefixV "vor" (regV "beugen")) datPrep ; vorfallen_sV = dassV (irregV "vorfallen" "fallt" "fiel" "fiele" "gefallen") ; vorfuehlen_bei_V2 = prepV2 (prefixV "vor" (regV "fühlen")) bei_Prep ; - vorgeben_VV = mkVV (prefixV "vor" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) ; + vorgeben_VV = mkVV (prefixV "vor" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) ; vorgehen_sV = dassV (prefixV "vor" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) ; vorhaben_VV = mkVV (prefixV "vor" (irregV "haben" "hat" "hatte" "hatte" "gehabt")) ; vorhergehen_dat_V2 = mkV2 (prefixV "vor" (irregV "hergehen" "hergeht" "hergehte" "hergehte" "gehergeht")) datPrep ; diff --git a/src/german/ExtraGer.gf b/src/german/ExtraGer.gf index 5e9e3b09a..64c590980 100644 --- a/src/german/ExtraGer.gf +++ b/src/german/ExtraGer.gf @@ -74,7 +74,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer ** insertObj (\\_ => (PastPartAgentAP (lin VPSlash vp) (lin NP np)).s ! APred) (predV werdenPass) ; PastPartAP vp = { - s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ vp.a2 ++ vp.inf ++ + s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ (vp.nn ! agrP3 Sg).p3 ++ vp.a2 ++ vp.inf ++ vp.ext ++ vp.infExt ++ vp.s.s ! VPastPart af ; isPre = True ; c = <[],[]> ; @@ -84,7 +84,8 @@ concrete ExtraGer of ExtraGerAbs = CatGer ** PastPartAgentAP vp np = let agent = appPrepNP P.von_Prep np in { - s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ vp.a2 ++ agent ++ vp.inf ++ + s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ (vp.nn ! agrP3 Sg).p3 ++ vp.a2 ++ agent ++ + vp.inf ++ vp.c2.s ++ --- junk if not TV vp.ext ++ vp.infExt ++ vp.s.s ! VPastPart af ; isPre = True ; @@ -129,9 +130,13 @@ concrete ExtraGer of ExtraGerAbs = CatGer ** subj = [] ; verb = vps.s ! ord ! agr ! VPFinite m t a ; neg = tm.s ++ p.s ++ vp.a1 ! b ; - obj0 = (vp.nn ! agr).p1 ; - obj = (vp.nn ! agr).p2 ; - compl = obj0 ++ neg ++ obj ++ vp.a2 ; -- from EG 15/5 + -- obj1 = (vp.nn ! agr).p1 ; + -- obj = (vp.nn ! agr).p2 ; + -- compl = obj1 ++ neg ++ obj ++ vp.a2 ; -- from EG 15/5 + obj1 = (vp.nn ! agr).p1 ++ (vp.nn ! agr).p2 ; -- refl ++ pronouns ++ nonpronouns + obj2 = (vp.nn ! agr).p3 ; -- pp-objects + obj3 = (vp.nn ! agr).p4 ++ vp.adj ++ vp.a2 ; -- pred.AP|CN|Adv, via useComp HL 6/2019 + compl = obj1 ++ neg ++ obj2 ++ obj3 ; inf = vp.inf ++ verb.inf ; extra = vp.ext ; inffin : Str = @@ -189,7 +194,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer ** lin EsVV vv vp = predV vv ** { - nn = \\a => let n = vp.nn ! a in <"es" ++ n.p1 , n.p2 > ; + nn = \\a => let n = vp.nn ! a in <"es" ++ n.p1 , n.p2 , n.p3, n.p4> ; inf = vp.s.s ! (VInf True) ++ vp.inf ; -- ich genieße es zu versuchen zu gehen; alternative word order could be produced by vp.inf ++ vp.s.s... (zu gehen zu versuchen) a1 = vp.a1 ; a2 = vp.a2 ; @@ -198,7 +203,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer ** adj = vp.adj } ; EsV2A v2a ap s = predV v2a ** { - nn = \\_ => <"es",[]> ; + nn = \\_ => <"es",[],[],[]> ; adj = ap.s ! APred ; ext = "," ++ "dass" ++ s.s ! Sub} ; @@ -243,9 +248,9 @@ concrete ExtraGer of ExtraGerAbs = CatGer ** } ; verb = vps.s ! ord ! agr ! VPFinite m t a ; neg = vp.a1 ! b ; - obj0 = (vp.nn ! agr).p1 ; - obj = (vp.nn ! agr).p2 ; - compl = obj0 ++ neg ++ vp.adj ++ obj ++ vp.a2 ; -- adj added + obj1 = (vp.nn ! agr).p1 ; + obj2 = (vp.nn ! agr).p2 ++ (vp.nn ! agr).p3 ; + compl = obj1 ++ neg ++ vp.adj ++ obj2 ++ vp.a2 ; -- adj added inf = vp.inf ++ verb.inf ; -- not used for linearisation of Main/Inv extra = vp.ext ; inffin : Str = diff --git a/src/german/IrregGer.gf b/src/german/IrregGer.gf index ea4263b5b..29129e1cc 100644 --- a/src/german/IrregGer.gf +++ b/src/german/IrregGer.gf @@ -212,7 +212,7 @@ in { 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.VHaben) ; + "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" ; diff --git a/src/german/LexiconGer.gf b/src/german/LexiconGer.gf index 8fa6f6fdf..68749547d 100644 --- a/src/german/LexiconGer.gf +++ b/src/german/LexiconGer.gf @@ -196,7 +196,7 @@ lin switch8off_V2 = dirV2 (prefixV "aus" (regV "schalten")) ; switch8on_V2 = dirV2 (prefixV "ein" (regV "schalten")) ; table_N = mkN "Tisch" ; - talk_V3 = mkV3 (regV "reden") datPrep von_Prep ; + 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; @@ -316,7 +316,7 @@ lin flow_V = seinV (Irreg.fließen_V) ; fly_V = seinV (Irreg.fliegen_V) ; freeze_V = Irreg.frieren_V ; - give_V3 = accdatV3 Irreg.geben_V ; + give_V3 = accdatV3 Irreg.geben_V ; laugh_V = regV "lachen" ; lie_V = Irreg.lügen_V ; play_V = regV "spielen" ; diff --git a/src/german/NounGer.gf b/src/german/NounGer.gf index c4fae0a8e..547a346df 100644 --- a/src/german/NounGer.gf +++ b/src/german/NounGer.gf @@ -6,24 +6,27 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { DetCN det cn = { s = \\c => det.s ! cn.g ! c ++ (let k = (prepC c).c in cn.s ! adjfCase det.a k ! det.n ! k) ; - a = agrgP3 cn.g det.n ; - isPron = det.isDef ; -- ich sehe den Mann nicht vs. ich sehe nicht einen Mann - rc = cn.rc ! det.n ; + a = agrgP3 cn.g det.n ; +-- isPron = det.isDef ; -- ich sehe den Mann nicht vs. ich sehe nicht einen Mann + isPron = False ; -- HL 6/2019 (but:) sehe (die|einige) Männer nicht + rc = cn.rc ! det.n ; -- don't see a|no man = sehe keinen Mann adv = cn.adv ; ext = cn.ext } ; DetNP det = { - s = \\c => det.sp ! Neutr ! c ; -- more genders in ExtraGer + s = \\c => det.sp ! Neutr ! c ; -- more genders in ExtraGer -- HL: der+er,den+en ; der drei,den drei+en a = agrP3 det.n ; - isPron = det.isDef ; + -- isPron = det.isDef ; + isPron = False ; -- HL 6/2019: don't apply pronoun switch: ich gebe ihr das vs. ich gebe es ihr rc, adv, ext = [] } ; UsePN pn = { s = \\c => usePrepC c (\k -> pn.s ! k) ; a = agrgP3 pn.g Sg ; - isPron = True ; --- means: this is not a heavy NP, but comes before negation +-- isPron = True ; --- means: this is not a heavy NP, but comes before negation + isPron = False ; -- HL 6/2019: to regulate Pron/NonPronNP order rc, adv, ext = [] } ; @@ -83,7 +86,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++ (let k = (prepC c).c in num.s!g!k) ; sp = \\g,c => quant.sp ! num.isNum ! n ! g ! c ++ (let k = (prepC c).c in - num.s!g!k) ; + num.s!g!k) ; -- HL: der+er,den+en ; der drei,den drei+en n = n ; a = case n of {Sg => a ; Pl => quant.aPl} ; isDef = case of { => False ; _ => True} ; @@ -116,7 +119,16 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { DefArt = { s = \\_,n,g,c => artDefContr (gennum g n) c ; - sp = \\_,n,g,c => artDefContr (gennum g n) c ; ---- deren, denem... +-- sp = \\_,n,g,c => artDefContr (gennum g n) c ; ---- deren, denen ... + sp = \\_,n,g,c => case of { + => let sp = prepC c ; gn = gennum g n + in sp.s ++ artDef ! gn ! sp.c ; + => let sp = prepC c in sp.s ++ "die" ; + => let sp = prepC c ; gn = gennum g n + in sp.s ++ (artDef ! gn ! sp.c + "en") ; + => "denen" ; -- HL 6/2019 + => "derer" ; -- HL 6/2019 + _ => artDefContr (gennum g n) c } ; -- von den+en a, aPl = Weak } ; diff --git a/src/german/ParadigmsGer.gf b/src/german/ParadigmsGer.gf index 263f4593a..e489d4370 100644 --- a/src/german/ParadigmsGer.gf +++ b/src/german/ParadigmsGer.gf @@ -584,11 +584,12 @@ mkV2 : overload { mkV3 : V -> V3 = \v -> lin V3 (v ** {c2 = accPrep ; c3 = datPrep}) ; mkV3 : V -> Prep -> Prep -> V3 - = \v,c,d -> v ** {c2 = c ; c3 = d ; lock_V3 = <>} ; + = \v,c,d -> lin V3 (v ** {c2 = c ; c3 = d}) ; } ; - dirV3 v p = mkV3 v (mkPrep [] accusative) p ; - accdatV3 v = mkV3 v (mkPrep [] dative) (mkPrep [] accusative) ; + dirV3 v p = mkV3 v accPrep p ; -- accPrep sets isPrep=False +-- accdatV3 v = mkV3 v datPrep accPrep ; + accdatV3 v = dirV3 v datPrep ; -- to fit to Eng: direct obj = c2, HL 6/2019 mkVS v = v ** {lock_VS = <>} ; mkVQ v = v ** {lock_VQ = <>} ; diff --git a/src/german/ResGer.gf b/src/german/ResGer.gf index f3a9e6627..be8bbe892 100644 --- a/src/german/ResGer.gf +++ b/src/german/ResGer.gf @@ -188,8 +188,7 @@ resource ResGer = ParamX ** open Prelude in { in case of { => VFin b (VPresInd an ap) ; - => VFin b (VPresSubj an ap) - ; --# notpresent + => VFin b (VPresSubj an ap) ; --# notpresent => VFin b (VImpfInd an ap) ; --# notpresent => VFin b (VImpfSubj an ap) ; --# notpresent _ => VInf False --# notpresent @@ -502,14 +501,14 @@ resource ResGer = ParamX ** open Prelude in { VPC : Type = { s : Bool => Agr => VPForm => { -- True = prefix glued to verb - fin : Str ; -- hat - inf : Str -- wollen - } + fin : Str ; -- hat|wird + inf : Str -- gelesen, lesen können|lesen (können),gelesen haben, + } -- HL 11/6/2019 todo: Fut Anter: haben lesen können = lesen gekonnt haben } ; VP : Type = { - s : Verb ; - nn : Agr => Str * Str ; -- dich/deine Frau + s : Verb ; -- HL 6/2019: + nn : Agr => Str * Str * Str * Str ; -- a1 : Polarity => Str ; -- nicht = adV a2 : Str ; -- heute = adv adj : Str ; -- space for adjectival complements ("ich finde dich schön") @@ -552,12 +551,10 @@ resource ResGer = ParamX ** open Prelude in { werden_V.s ! VFin False (VImpfSubj (numberAgr a) (personAgr a)) ; --# notpresent auf = verb.prefix ; - vf : Bool -> Str -> Str -> {fin,inf : Str} = \b,fin,inf -> { fin = fin ; inf = verb.particle ++ if_then_Str b [] auf ++ inf --- negation of main b - } ; - + } ; in { s = \\b,a => table { VPFinite m t Simul => case t of { @@ -567,18 +564,33 @@ resource ResGer = ParamX ** open Prelude in { Cond => vf True (wuerde a) vinf ; --# notpresent Pres => vf b (vfin b m t a) [] } ; - VPFinite m t Anter => case t of { --# notpresent - Pres | Past => vf True (hat m t a) vpart ; --# notpresent - Fut => vf True (wird m a) (vpart ++ haben) ; --# notpresent - Cond => vf True (wuerde a) (vpart ++ haben) --# notpresent - } ; --# notpresent + VPFinite m t Anter => case t of { --# notpresent + Pres | Past => vf True (hat m t a) vpart ; --# notpresent + Fut => vf True (wird m a) (vpart ++ haben) ; --# notpresent + Cond => vf True (wuerde a) (vpart ++ haben) --# notpresent + } ; --# notpresent VPImperat False => vf False (verb.s ! VImper (numberAgr a)) [] ; VPImperat True => vf False (verb.s ! VFin False (VPresSubj Pl P3)) [] ; - VPInfinit Anter => vf True [] (vpart ++ haben) ; --# notpresent + VPInfinit Anter => vf True [] (vpart ++ haben) ; --# notpresent VPInfinit Simul => vf True [] (verb.s ! VInf b) } } ; - + -- Remark (HL): something needs to be done for modal verbs: + -- vf : Bool -> Str -> Str -> Str -> {fin : Str ; inf : Str * Str} = \b,fin,inf,inf2 -> { + -- fin = fin ; + -- inf = --- negation of main b + -- } ; -- HL: {fin: wird, inf: }, + -- -- {fin: wird, inf: =gewollt haben} + -- -- but this does not work with (PassV2 v2) + -- VPFinite m t Anter => case t of { -- + -- Fut => case isAux of { -- HL 6/2019, Duden 318: Ersatzinfinitiv + -- False => vf True (wird m a) (vpart ++ haben) ; -- wird (nicht) schlafen gekonnt haben + -- True => vf True (wird m a) vpart haben } ; -- => wird (nicht) haben schlafen können + -- Cond => case isAux of { -- + -- False => vf True (wuerde a) (vpart ++ haben) [] ; -- + -- True => vf True (wuerde a) vpart haben } -- HL: würde (nicht) haben schlafen können + -- } ; + -- But this doesn't fit to (PassV2 v2). predVGen : Bool -> Verb -> VPSlash = \isAux, verb -> { s = { @@ -591,9 +603,9 @@ resource ResGer = ParamX ** open Prelude in { a1 : Polarity => Str = negation ; a2 : Str = [] ; - nn : Agr => Str * Str = case verb.vtype of { - VAct => \\_ => <[],[]> ; - VRefl c => \\a => + nn : Agr => Str * Str * Str * Str = case verb.vtype of { + VAct => \\_ => <[],[],[],[]> ; + VRefl c => \\a => } ; isAux = isAux ; ---- inf,ext,infExt,adj : Str = [] ; @@ -668,26 +680,39 @@ resource ResGer = ParamX ** open Prelude in { -- Extending a verb phrase with new constituents. - insertObj : (Agr => Str) -> VPSlash -> VPSlash = insertObjNP False ; + insertObj : (Agr => Str) -> VPSlash -> VPSlash = \obj,vp -> -- obj:Comp A|Adv|CN + vp ** { nn = \\a => let vpnn = vp.nn ! a in } ; insertObjc : (Agr => Str) -> VPSlash -> VPSlash = \obj,vp -> insertObj obj vp ** {c2 = vp.c2 ; missingAdv = vp.missingAdv } ; - insertObjNP : Bool -> (Agr => Str) -> VPSlash -> VPSlash = \isPron, obj,vp -> vp ** { - nn = \\a => - let vpnn = vp.nn ! a in - case isPron of { - True => ; - False => < vpnn.p1, obj ! a ++ vpnn.p2> - }} ; + insertObjNP : NP -> Preposition -> VPSlash -> VPSlash = \np,prep,vp -> + let c = case prep.c of { NPC cc => cc ; _ => Nom } ; + obj : Agr => Str = \\_ => appPrepNP prep np ; + in vp ** { + nn = \\a => -- HL 11/6/19: rough objNP order: + let vpnn = vp.nn ! a in -- vfin < accPron < refl < (gen|dat)Pron < nonPronNP < neg < prepNP < vinf|comp + case of { -- (assuming v.c2=acc) nonPron: dat < acc|gen (acc < gen not enforced) + => ; -- + => ; -- + => ; -- + => ; -- + <_, True, _> => -- + } + } ; -- the ordering of objects of v:V3 (and v:V4) is also determined by Slash?V3 (and Slash?V4) - isLightComplement : Bool -> Preposition -> Bool = \isPron,prep -> case isPron of { - False => False ; - _ => case prep.isPrep of { - True => False ; - _ => True - } - } ; + insertObjRefl : VPSlash -> VPSlash = \vp -> -- HL 6/2019, to order reflPron < neg < prep+reflPron + let prep = vp.c2 ; + b = notB prep.isPrep ; + c = case prep.c of { NPC cc => cc ; _ => Acc } ; + obj : Agr => Str = \\a => prep.s ++ reflPron ! a ! c ; + in vp ** { + nn = \\a => + let vpnn = vp.nn ! a in + case b of { + True => ; + False => } + } ; insertAdV : Str -> VP -> VP = \adv,vp -> vp ** { a1 = \\a => adv ++ vp.a1 ! a } ; -- immer nicht @@ -706,10 +731,9 @@ resource ResGer = ParamX ** open Prelude in { insertAdj : Str -> Str * Str -> Str -> VPSlash -> VPSlash = \adj,c,ext,vp -> vp ** { nn = \\a => - let vpnn = vp.nn ! a in - ; - adj = vp.adj ++ adj ++ c.p2 ; - ext = vp.ext ++ ext} ; + let vpnn = vp.nn ! a in ; -- ihr? | der Frau treu + adj = vp.adj ++ adj ++ c.p2 ; -- neugierig auf das Buch + ext = vp.ext ++ ext} ; -------------------------------------------- --CLAUSE CONSTRUCTION @@ -730,18 +754,19 @@ resource ResGer = ParamX ** open Prelude in { } ; verb = vps.s ! ord ! agr ! VPFinite m t a ; neg = vp.a1 ! b ; - obj0 = (vp.nn ! agr).p1 ; - obj = (vp.nn ! agr).p2 ; - compl = obj0 ++ neg ++ vp.adj ++ obj ++ vp.a2 ; -- adj added - inf = vp.inf ++ verb.inf ; -- not used for linearisation of Main/Inv + obj1 = (vp.nn ! agr).p1 ++ (vp.nn ! agr).p2 ; -- refl ++ pronouns ++ nonpronouns + obj2 = (vp.nn ! agr).p3 ; -- pp-objects + obj3 = (vp.nn ! agr).p4 ++ vp.adj ++ vp.a2 ; -- pred.AP|CN|Adv, via useComp HL 6/2019 + compl = obj1 ++ neg ++ obj2 ++ obj3 ; + inf = vp.inf ++ verb.inf ; extra = vp.ext ; - inffin : Str = + inffin : Str = -- not used for Main/Inv case of { => verb.fin ++ inf ; -- double inf --# notpresent - _ => inf ++ verb.fin --- or just auxiliary vp - } + _ => inf ++ verb.fin --- or just auxiliary vp + } ; in - case o of { + case o of { Main => subj ++ verb.fin ++ compl ++ vp.infExt ++ verb.inf ++ extra ++ vp.inf ; Inv => verb.fin ++ subj ++ compl ++ vp.infExt ++ verb.inf ++ extra ++ vp.inf ; Sub => subj ++ compl ++ vp.infExt ++ inffin ++ extra @@ -767,7 +792,7 @@ resource ResGer = ParamX ** open Prelude in { infVP : Bool -> VP -> ((Agr => Str) * Str * Str * Str) = \isAux, vp -> let vps = useVP vp in < - \\agr => (vp.nn ! agr).p1 ++ (vp.nn ! agr).p2 ++ vp.a2, + \\agr => (vp.nn ! agr).p1 ++ (vp.nn ! agr).p2 ++ (vp.nn ! agr).p3 ++ (vp.nn ! agr).p4 ++ vp.a2, vp.a1 ! Pos ++ vp.adj ++ (vps.s ! (notB isAux) ! agrP3 Sg ! VPInfinit Simul).inf, vp.inf, vp.infExt ++ vp.ext @@ -837,12 +862,10 @@ resource ResGer = ParamX ** open Prelude in { {s : PCase => Str ; a : Agr} -> {s : PCase => Str ; a : Agr ; isPron : Bool ; adv,ext,rc : Str} = \np -> np ** {isPron = False; adv,ext,rc = []} ; -- this could be wrong - oper - - relPron : RelGenNum => Case => Str = \\rgn,c => + relPron : RelGenNum => Case => Str = \\rgn,c => case rgn of { RGenNum gn => - case of { + case of { => "deren" ; => "dessen" ; => "denen" ; @@ -863,3 +886,4 @@ resource ResGer = ParamX ** open Prelude in { in ; } + diff --git a/src/german/SentenceGer.gf b/src/german/SentenceGer.gf index cf255a315..a144c00c9 100644 --- a/src/german/SentenceGer.gf +++ b/src/german/SentenceGer.gf @@ -13,7 +13,8 @@ concrete SentenceGer of Sentence = CatGer ** open ResGer, Prelude in { "uns graut" "*uns grauen" allows pre/post-positions in subjects --> "nach mir wurde gedürstet" "*mir wurde gedürstet" - can't think of case of postpositions in subject -} + can't think of case of postpositions in subject + HL: "des Geldes wegen wird gearbeitet" -} PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ; @@ -26,10 +27,10 @@ concrete SentenceGer of Sentence = CatGer ** open ResGer, Prelude in { } ; agr = Ag Fem (numImp n) ps.p1 ; --- g does not matter verb = vps.s ! False ! agr ! VPImperat ps.p3 ; - inf = vp.inf ++ verb.inf ; + inf = vp.inf ++ verb.inf ; -- HL .nn + obj = (vp.nn ! agr).p2 ++ (vp.nn ! agr).p3 ++ (vp.nn ! agr).p4 in - verb.fin ++ ps.p2 ++ - (vp.nn ! agr).p1 ++ vp.a1 ! pol ++ (vp.nn ! agr).p2 ++ vp.a2 ++ inf ++ vp.ext + verb.fin ++ ps.p2 ++ (vp.nn ! agr).p1 ++ vp.a1 ! pol ++ obj ++ vp.a2 ++ inf ++ vp.ext } ; SlashVP np vp = diff --git a/src/german/StructuralGer.gf b/src/german/StructuralGer.gf index 1d8394159..d4f92ba8b 100644 --- a/src/german/StructuralGer.gf +++ b/src/german/StructuralGer.gf @@ -116,7 +116,7 @@ concrete StructuralGer of Structural = CatGer ** we_Pron = mkPronPers "wir" "uns" "uns" "unser" "unser" Fem Pl P1 ; whatSg_IP = {s = caselist "was" "was" "was" "wessen" ; n = Sg} ; ---- - whatPl_IP = {s = caselist "was" "was" "was" "wessen" ; n = Pl} ; ---- + whatPl_IP = {s = caselist "was" "was" "was" "wessen" ; n = Sg} ; -- HL 6/2016 when_IAdv = ss "wann" ; when_Subj = ss "wenn" ; @@ -124,7 +124,7 @@ concrete StructuralGer of Structural = CatGer ** which_IQuant = {s = \\n,g,c => (detLikeAdj True n "welch").s ! g ! NPC c} ; whoSg_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Sg} ; - whoPl_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Pl} ; + whoPl_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Sg} ; -- HL 6/2016 why_IAdv = ss "warum" ; without_Prep = mkPrep "ohne" P.accusative ; with_Prep = mkPrep "mit" P.dative ; diff --git a/src/german/VerbGer.gf b/src/german/VerbGer.gf index 0786057fd..27688881f 100644 --- a/src/german/VerbGer.gf +++ b/src/german/VerbGer.gf @@ -21,12 +21,10 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer, Coordination in { insertExtrapos (comma ++ q.s ! QIndir) (predV v) ; ComplVA v ap = insertAdj (v.c2.s ++ ap.s ! APred) ap.c ap.ext (predV v) ; -- changed - SlashV2a v = predVc v ; + SlashV2a v = (predVc v) ** {missingAdv = True} ; -- HL 12/6/2019 for reflexive verbs with objects, rV2:V2, rV3:V3 - Slash2V3 v np = - insertObjc (\\_ => appPrepNP v.c2 np) (predVc v) ** {c2 = v.c3} ; - Slash3V3 v np = - insertObjc (\\_ => appPrepNP v.c3 np) (predVc v) ; + Slash2V3 v np = insertObjNP np v.c2 (predV v) ** {c2 = v.c3 ; missingAdv = True} ; + Slash3V3 v np = insertObjNP np v.c3 (predV v) ** {c2 = v.c2 ; missingAdv = True} ; SlashV2S v s = insertExtrapos (conjThat ++ s.s ! Sub) (predVc v) ; @@ -45,7 +43,7 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer, Coordination in { insertAdj (ap.s ! APred) ap.c ap.ext (predVc v) ; ComplSlash vps np = - let vp = insertObjNP (isLightComplement np.isPron vps.c2) (\\_ => appPrepNP vps.c2 np) vps ; + let vp = insertObjNP np vps.c2 vps ; in case vp.missingAdv of { True => vp ; False => objAgr np vp } ; -- IL 24/04/2018 force reflexive in the VPSlash to take the agreement of the object introduced by ComplSlash. @@ -68,6 +66,7 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer, Coordination in { insertInf vpi.p2 ( insertObj vpi.p1 ( insertObj (\\_ => appPrepNP v.c2 np) vps))) ; +-- insertObjNP v.c2 np vps))) ; UseComp comp = insertExtrapos comp.ext (insertObj comp.s (predV sein_V)) ; -- agr not used @@ -95,8 +94,9 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer, Coordination in { AdvVPSlash vp adv = vp ** insertAdv adv.s vp ; AdVVPSlash adv vp = vp ** insertAdv adv.s vp ; - ReflVP vp = insertObj (\\a => appPrep vp.c2 - (\\k => usePrepC k (\c -> reflPron ! a ! c))) vp ; + -- ReflVP vp = insertObj (\\a => appPrep vp.c2 + -- (\\k => usePrepC k (\c -> reflPron ! a ! c))) vp ; + ReflVP vp = insertObjRefl vp ; -- HL, 19/06/2019 PassV2 v = insertInf (v.s ! VPastPart APred) (predV werdenPass) ;