1
0
forked from GitHub/gf-rgl

Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl

This commit is contained in:
Krasimir Angelov
2025-11-06 11:48:06 +01:00
14 changed files with 142 additions and 82 deletions

View File

@@ -1,3 +1,3 @@
--# -path=.:../german:../common:../abstract:../prelude --# -path=.:../german:../common:../abstract:../prelude
resource TryGer = SyntaxGer, ExtraGer, LexiconGer, ParadigmsGer - [mkAdv], MakeStructuralGer ; resource TryGer = SyntaxGer, ExtraGer, LexiconGer, ParadigmsGer - [mkAdv,mkIAdv], MakeStructuralGer ;

View File

@@ -26,10 +26,11 @@ concrete CatGer of Cat =
-- Question -- Question
QCl = {s : Mood => ResGer.Tense => Anteriority => Polarity => QForm => Str} ; 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} ; IComp = {s : Agr => Str ; ext : Str} ;
IDet = {s : Gender => Case => Str ; n : Number} ; IDet = {s : Gender => Case => Str ; n : Number ; a : Adjf} ;
IQuant = {s : GenNum => Case => Str} ; IQuant = {s : GenNum => Case => Str ; a : Adjf} ;
-- Relative -- Relative
@@ -114,7 +115,7 @@ concrete CatGer of Cat =
GN = {s : Case => Str; g : Sex} ; GN = {s : Case => Str; g : Sex} ;
SN = {s : Sex => Case => Str} ; SN = {s : Sex => Case => Str} ;
PN = {s : Case => Str; g : Gender; n : Number} ; 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 -- tense with possibility to choose conjunctive forms

View File

@@ -3,14 +3,14 @@
concrete ExtendGer of Extend = concrete ExtendGer of Extend =
CatGer ** ExtendFunctor CatGer ** ExtendFunctor
- [ -- remove the default implementations of: - [ -- remove the default implementations of:
GenNP, GenRP, EmptyRelSlash, GenNP, GenRP, EmptyRelSlash, GenIP, GenModIP,
VPS, ListVPS, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS, VPS, ListVPS, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS,
VPI, ListVPI, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV, VPI, ListVPI, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV,
ICompAP, IAdvAdv, CompIQuant, PrepCN, ICompAP, IAdvAdv, CompIQuant, PrepCN,
PastPartAP, PastPartAgentAP, PastPartAP, PastPartAgentAP,
PassVPSlash, PassAgentVPSlash, PassVPSlash, PassAgentVPSlash,
AdvIsNP, 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, ReflRNP, ReflPron, ReflPoss, PredetRNP, AdvRNP, ReflA2RNP, PossPronRNP,
CompoundN, DetNPMasc, DetNPFem, UseDAP, UseDAPMasc, UseDAPFem, CompoundN, DetNPMasc, DetNPFem, UseDAP, UseDAPMasc, UseDAPFem,
CardCNCard, CardCNCard,
@@ -37,11 +37,12 @@ concrete ExtendGer of Extend =
} ; } ;
GenRP nu cn = { 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 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 = { EmptyRelSlash slash = {
s = \\m,t,a,p,gn => s = \\m,t,a,p,gn =>

View File

@@ -385,6 +385,4 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
-- this function is not entirely satisfactory as largely -- this function is not entirely satisfactory as largely
-- though not entirely duplicating mkClause in ResGer -- though not entirely duplicating mkClause in ResGer
} }

View File

@@ -96,13 +96,13 @@ in {
lin laden_V = irregV "laden" "lädt" "lud" "lüde" "geladen" ; lin laden_V = irregV "laden" "lädt" "lud" "lüde" "geladen" ;
lin lassen_V = irregV "lassen" "lässt" "ließ" "ließe" "gelassen" ; lin lassen_V = irregV "lassen" "lässt" "ließ" "ließe" "gelassen" ;
lin laufen_V = irregV "laufen" "läuft" "lief" "liefe" "gelaufen" ; 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 leihen_V = irregV "leihen" "leiht" "lieh" "liehe" "geliehen" ;
lin lesen_V = irregV "lesen" "liest" "las" "läse" "gelesen" ; lin lesen_V = irregV "lesen" "liest" "las" "läse" "gelesen" ;
lin liegen_V = irregV "liegen" "liegt" "lag" "läge" "gelegen" ; lin liegen_V = irregV "liegen" "liegt" "lag" "läge" "gelegen" ;
lin lügen_V = irregV "lügen" "lügt" "log" "löge" "gelogen" ; lin lügen_V = irregV "lügen" "lügt" "log" "löge" "gelogen" ;
lin mahlen_V = irregV "mahlen" "mahlt" "mahlte" "mahlte" "gemahlen" ; 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 melken_V = irregV "melken" "milkt" "molk" "mölke" "gemolken" ;
lin messen_V = irregV "messen" "misst" "maß" "mäße" "gemessen" ; lin messen_V = irregV "messen" "misst" "maß" "mäße" "gemessen" ;
lin mißlingen_V = irregV "misslingen" "misslingt" "misslang" "misslungen" "misslänge" ; -- old spelling lin mißlingen_V = irregV "misslingen" "misslingt" "misslang" "misslungen" "misslänge" ; -- old spelling
@@ -131,14 +131,14 @@ in {
lin saufen_V = irregV "saufen" "säuft" "soff" "söffe" "gesoffen" ; lin saufen_V = irregV "saufen" "säuft" "soff" "söffe" "gesoffen" ;
lin saugen_V = irregV "saugen" "saugt" "sog" "soge" "gesogen" ; lin saugen_V = irregV "saugen" "saugt" "sog" "soge" "gesogen" ;
lin schaffen_V = irregV "schaffen" "schafft" "schuf" "schüfe" "geschaffen" ; 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 scheinen_V = irregV "scheinen" "scheint" "schien" "schiene" "geschienen" ;
lin scheißen_V = irregV "scheißen" "scheißt" "schiss" "schisse" "geschissen" ; lin scheißen_V = irregV "scheißen" "scheißt" "schiss" "schisse" "geschissen" ;
lin schelten_V = irregV "schelten" "schilt" "schalt" "schölte" "gescholten" ; lin schelten_V = irregV "schelten" "schilt" "schalt" "schölte" "gescholten" ;
lin scheren_V = irregV "scheren" "schert" "schor" "schöre" "geschoren" ; lin scheren_V = irregV "scheren" "schert" "schor" "schöre" "geschoren" ;
lin schieben_V = irregV "schieben" "schiebt" "schob" "schöbe" "geschoben" ; lin schieben_V = irregV "schieben" "schiebt" "schob" "schöbe" "geschoben" ;
lin schießen_V = irregV "schießen" "schießt" "schoss" "schösse" "geschossen" ; 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 schlafen_V = irregV "schlafen" "schläft" "schlief" "schliefe" "geschlafen" ;
lin schlagen_V = irregV "schlagen" "schlägt" "schlug" "schlüge" "geschlagen" ; lin schlagen_V = irregV "schlagen" "schlägt" "schlug" "schlüge" "geschlagen" ;
lin schleichen_V = irregV "schleichen" "schleicht" "schlich" "schliche" "geschlichen" ; lin schleichen_V = irregV "schleichen" "schleicht" "schlich" "schliche" "geschlichen" ;
@@ -156,7 +156,7 @@ in {
lin schwellen_V = irregV "schwellen" "schwillt" "schwoll" "schwölle" "geschwollen" ; lin schwellen_V = irregV "schwellen" "schwillt" "schwoll" "schwölle" "geschwollen" ;
lin schwimmen_V = irregV "schwimmen" "schwimmt" "schwamm" "schwämme" "geschwommen" ; lin schwimmen_V = irregV "schwimmen" "schwimmt" "schwamm" "schwämme" "geschwommen" ;
lin schwimmen_o_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 schwingen_V = irregV "schwingen" "schwingt" "schwang" "schwänge" "geschwungen" ;
lin schwören_V = irregV "schwören" "schwört" "schwor" "schwüre" "geschworen" ; lin schwören_V = irregV "schwören" "schwört" "schwor" "schwüre" "geschworen" ;
lin sehen_V = irregV "sehen" "sieht" "sah" "sähe" "gesehen" ; lin sehen_V = irregV "sehen" "sieht" "sah" "sähe" "gesehen" ;
@@ -200,7 +200,7 @@ in {
"tun" "tue" "tust" "tut" "tut" "tue" "tun" "tue" "tust" "tut" "tut" "tue"
"tat" "tatest" "taten" "tatet" "tat" "tatest" "taten" "tatet"
"täte" "getan" [] M.VHaben) ; "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 vergessen_V = irregV "vergessen" "vergisst" "vergaß" "vergäße" "vergessen" ;
lin verlieren_V = irregV "verlieren" "verliert" "verlor" "verlöre" "verloren" ; lin verlieren_V = irregV "verlieren" "verliert" "verlor" "verlöre" "verloren" ;
lin wachsen_V = irregV "wachsen" "wächst" "wuchs" "wüchse" "gewachsen" ; lin wachsen_V = irregV "wachsen" "wächst" "wuchs" "wüchse" "gewachsen" ;
@@ -209,14 +209,14 @@ in {
lin weben_V = irregV "weben" "webt" "wob" "wöbe" "gewoben" ; lin weben_V = irregV "weben" "webt" "wob" "wöbe" "gewoben" ;
lin weichen_V = irregV "weichen" "weicht" "wich" "wiche" "gewichen" ; lin weichen_V = irregV "weichen" "weicht" "wich" "wiche" "gewichen" ;
lin weisen_V = irregV "weisen" "weist" "wies" "wiese" "gewiesen" ; 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 werben_V = irregV "werben" "wirbt" "warb" "würbe" "geworben" ;
lin werden_V = lin V (M.mkV "werden" "werde" "wirst" "wird" "werdet" "werd" lin werden_V = lin V (M.mkV "werden" "werde" "wirst" "wird" "werdet" "werd"
"wurde" "wurdest" "wurden" "wurdet" "wurde" "wurdest" "wurden" "wurdet"
"würde" "geworden" [] M.VSein) ; "würde" "geworden" [] M.VSein) ;
lin werfen_V = irregV "werfen" "wirft" "warf" "würfe" "geworfen" ; lin werfen_V = irregV "werfen" "wirft" "warf" "würfe" "geworfen" ;
lin wiegen_V = irregV "wiegen" "wiegt" "wog" "wöge" "gewogen" ; 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" lin wissen_V = lin V (M.mkV "wissen" "weiß" "weißt" "weiß" "wisst" "wisse"
"wusste" "wusstest" "wussten" "wusstet" "wusste" "wusstest" "wussten" "wusstet"
"wüsste" "gewusst" [] M.VHaben) ; "wüsste" "gewusst" [] M.VHaben) ;

View File

@@ -2,25 +2,26 @@
-- work by Aarne Ranta, Andreas Priesnitz, and Henning Thielemann. -- work by Aarne Ranta, Andreas Priesnitz, and Henning Thielemann.
-- a few corrections by Hans Leiß, and using the better IrregGer -- a few corrections by Hans Leiß, and using the better IrregGer
-- sg/pl t = singulare/plurale tantum
concrete LexiconGer of Lexicon = CatGer ** concrete LexiconGer of Lexicon = CatGer **
open Prelude, ParadigmsGer, (Mo = MorphoGer), (Irreg = IrregGer) in { open Prelude, ParadigmsGer, (Mo = MorphoGer), (Irreg = IrregGer) in {
flags flags
coding=utf8 ; coding=utf8 ;
optimize=all_subs ; optimize=all_subs ;
lin lin
add_V3 = dirV3 (prefixV "hinzu" (regV "fügen")) zu_Prep ; add_V3 = dirV3 (prefixV "hinzu" (regV "fügen")) zu_Prep ;
airplane_N = mkN "Flugzeug" "Flugzeuge" neuter ; airplane_N = mkN "Flugzeug" "Flugzeuge" neuter ;
alas_Interj = {s = "ach"} ; alas_Interj = ss "leider" ; -- {s = "ach"} ;
already_Adv = mkAdv "schon" ; already_Adv = mkAdv "schon" ;
answer_V2S = mkV2S (regV "antworten") datPrep ; answer_V2S = mkV2S (regV "antworten") datPrep ;
apartment_N = mkN "Wohnung" ; apartment_N = mkN "Wohnung" ;
apple_N = reg2N "Apfel" "Äpfel" masculine ; apple_N = reg2N "Apfel" "Äpfel" masculine ;
art_N = reg2N "Kunst" "Künste" feminine ; art_N = reg2N "Kunst" "Künste" feminine ;
ask_V2Q = mkV2Q (regV "fragen") accPrep ; ask_V2Q = mkV2Q (regV "fragen") accPrep ;
baby_N = reg2N "Baby" "Babies" neuter ; ---- baby_N = reg2N "Baby" "Babies" neuter ; ---- "Kleinkind"
bad_A = regA "schlecht" ; bad_A = regA "schlecht" ;
bank_N = reg2N "Bank" "Banken" feminine ; bank_N = reg2N "Bank" "Banken" feminine ;
beautiful_A = regA "schön" ; beautiful_A = regA "schön" ;
@@ -35,21 +36,21 @@ lin
boat_N = reg2N "Boot" "Boote" neuter ; boat_N = reg2N "Boot" "Boote" neuter ;
book_N = reg2N "Buch" "Bücher" neuter ; book_N = reg2N "Buch" "Bücher" neuter ;
boot_N = reg2N "Stiefel" "Stiefel" masculine ; 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 ; boy_N = reg2N "Junge" "Jungen" masculine ;
bread_N = reg2N "Brot" "Brote" neuter ; bread_N = reg2N "Brot" "Brote" neuter ;
break_V2 = dirV2 (fixprefixV "zer" Irreg.schlagen_V) ; break_V2 = dirV2 (fixprefixV "zer" Irreg.schlagen_V) ;
broad_A = regA "breit" ; broad_A = regA "breit" ;
brother_N2 = mkN2 (reg2N "Bruder" "Brüder" masculine) von_Prep ; brother_N2 = mkN2 (reg2N "Bruder" "Brüder" masculine) von_Prep ;
brown_A = regA "braun" ; brown_A = regA "braun" ;
butter_N = reg2N "Butter" "Butter" feminine ; ---- infl butter_N = reg2N "Butter" "Butter" feminine ; ---- sg t
buy_V2 = dirV2 (regV "kaufen") ; buy_V2 = dirV2 (regV "kaufen") ;
camera_N = reg2N "Kamera" "Kameras" feminine ; camera_N = reg2N "Kamera" "Kameras" feminine ;
cap_N = mkN "Mütze" ; cap_N = mkN "Mütze" ;
car_N = mkN "Auto" "Autos" neuter | mkN "Wagen" "Wagen" masculine ; car_N = mkN "Auto" "Autos" neuter | mkN "Wagen" "Wagen" masculine ;
carpet_N = mkN "Teppich" ; carpet_N = mkN "Teppich" ;
cat_N = mkN "Katze" ; cat_N = mkN "Katze" ;
ceiling_N = reg2N "Dach" "Dächer" neuter ; ceiling_N = mkN "Zimmerdecke" ;
chair_N = reg2N "Stuhl" "Stühle" masculine ; chair_N = reg2N "Stuhl" "Stühle" masculine ;
cheese_N = mkN "Käse" "Käse" masculine ; cheese_N = mkN "Käse" "Käse" masculine ;
child_N = reg2N "Kind" "Kinder" neuter ; child_N = reg2N "Kind" "Kinder" neuter ;
@@ -58,12 +59,12 @@ lin
clean_A = regA "rein" ; clean_A = regA "rein" ;
clever_A = mk3A "klug" "klüger" "klügste" ; clever_A = mk3A "klug" "klüger" "klügste" ;
close_V2 = dirV2 Irreg.schließen_V ; 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" ; cold_A = mk3A "kalt" "kälter" "kälteste" ;
come_V = seinV (mk6V "kommen" "kommt" "komm" "kam" "käme" "gekommen") ; come_V = seinV (mk6V "kommen" "kommt" "komm" "kam" "käme" "gekommen") ;
computer_N = reg2N "Rechner" "Rechner" masculine ; computer_N = reg2N "Rechner" "Rechner" masculine ;
country_N = reg2N "Land" "Länder" neuter ; 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 ; cow_N = reg2N "Kuh" "Kühe" feminine ;
die_V = seinV Irreg.sterben_V | seinV (prefixV "um" Irreg.kommen_V); die_V = seinV Irreg.sterben_V | seinV (prefixV "um" Irreg.kommen_V);
distance_N3 = mkN3 (mkN "Entfernung") von_Prep zu_Prep ; distance_N3 = mkN3 (mkN "Entfernung") von_Prep zu_Prep ;
@@ -91,7 +92,7 @@ lin
garden_N = reg2N "Garten" "Gärten" masculine ; garden_N = reg2N "Garten" "Gärten" masculine ;
girl_N = reg2N "Mädchen" "Mädchen" neuter ; girl_N = reg2N "Mädchen" "Mädchen" neuter ;
glove_N = mkN "Handschuh" ; 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" ; good_A = mk3A "gut" "besser" "beste" ;
go_V = seinV Irreg.gehen_V ; go_V = seinV Irreg.gehen_V ;
green_A = regA "grün" ; green_A = regA "grün" ;
@@ -112,7 +113,7 @@ lin
know_V2 = dirV2 Irreg.kennen_V ; know_V2 = dirV2 Irreg.kennen_V ;
know_VQ = mkVQ Irreg.wissen_V ; know_VQ = mkVQ Irreg.wissen_V ;
know_VS = mkVS 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"; lamp_N = mkN "Lampe";
learn_V2 = dirV2 (regV "lernen") ; learn_V2 = dirV2 (regV "lernen") ;
leather_N = reg2N "Leder" "Leder" neuter ; leather_N = reg2N "Leder" "Leder" neuter ;
@@ -126,8 +127,8 @@ lin
love_V2 = dirV2 (regV "lieben") ; love_V2 = dirV2 (regV "lieben") ;
man_N = reg2N "Mann" "Männer" masculine ; man_N = reg2N "Mann" "Männer" masculine ;
married_A2 = mkA2 (regA "verheiratet") (mkPrep "mit" dative) ; married_A2 = mkA2 (regA "verheiratet") (mkPrep "mit" dative) ;
meat_N = reg2N "Fleisch" "Fleische" neuter ; ---- infl meat_N = reg2N "Fleisch" "Fleische" neuter ; ---- sg t
milk_N = reg2N "Milch" "Milche" feminine ; ---- infl milk_N = reg2N "Milch" "Milche" feminine ; ---- sg t
moon_N = mkN "Mond" ; moon_N = mkN "Mond" ;
mother_N2 = mkN2 (reg2N "Mutter" "Mütter" feminine) von_Prep ; mother_N2 = mkN2 (reg2N "Mutter" "Mütter" feminine) von_Prep ;
mountain_N = mkN "Berg" ; mountain_N = mkN "Berg" ;
@@ -144,9 +145,10 @@ lin
paper_N = reg2N "Papier" "Papiere" neuter ; paper_N = reg2N "Papier" "Papiere" neuter ;
paris_PN = mkPN "Paris" neuter ; paris_PN = mkPN "Paris" neuter ;
peace_N = mk6N "Friede" "Frieden" "Frieden" "Friedens" "Frieden" "Frieden" masculine ; peace_N = mk6N "Friede" "Frieden" "Frieden" "Friedens" "Frieden" "Frieden" masculine ;
pen_N = mkN "Bleistift" ; ---- pen_N = mkN "Bleistift" ;
planet_N = reg2N "Planet" "Planeten" masculine ; 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") ; play_V2 = dirV2 (regV "spielen") ;
policeman_N = reg2N "Polizist" "Polizisten" masculine ; policeman_N = reg2N "Polizist" "Polizisten" masculine ;
priest_N = mkN "Priester" ; priest_N = mkN "Priester" ;
@@ -160,7 +162,8 @@ lin
religion_N = mkN "Religion" ; religion_N = mkN "Religion" ;
restaurant_N = reg2N "Restaurant" "Restaurants" neuter ; restaurant_N = reg2N "Restaurant" "Restaurants" neuter ;
river_N = reg2N "Fluß" "Flüsse" masculine ; 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 ; roof_N = reg2N "Dach" "Dächer" neuter ;
rubber_N = reg2N "Gummi" "Gummis" neuter ; rubber_N = reg2N "Gummi" "Gummis" neuter ;
run_V = seinV Irreg.laufen_V ; run_V = seinV Irreg.laufen_V ;
@@ -174,11 +177,11 @@ lin
send_V3 = mkV3 (regV "schicken") ; -- Ger mkV3 v = Ger: mkV3 v accPrep datPrep send_V3 = mkV3 (regV "schicken") ; -- Ger mkV3 v = Ger: mkV3 v accPrep datPrep
sheep_N = reg2N "Schaf" "Schafe" neuter ; sheep_N = reg2N "Schaf" "Schafe" neuter ;
ship_N = reg2N "Schiff" "Schiffe" 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" ; shoe_N = mkN "Schuh" ;
shop_N = reg2N "Laden" "Läden" masculine ; shop_N = reg2N "Laden" "Läden" masculine ;
short_A = mk3A "kurz" "kürzer" "kürzeste" ; 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 ; sister_N = reg2N "Schwester" "Schwestern" feminine ;
sleep_V = Irreg.schlafen_V ; sleep_V = Irreg.schlafen_V ;
small_A = regA "klein" ; small_A = regA "klein" ;
@@ -200,7 +203,7 @@ lin
talk_V3 = mkV3 (regV "reden") (mkPrep "mit" dative) (mkPrep "über" accusative) ; -- 6/2019 talk_V3 = mkV3 (regV "reden") (mkPrep "mit" dative) (mkPrep "über" accusative) ; -- 6/2019
teacher_N = reg2N "Lehrer" "Lehrer" masculine ; teacher_N = reg2N "Lehrer" "Lehrer" masculine ;
teach_V2 = dirV2 (no_geV (regV "unterrichten")) ; 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" ; thick_A = regA "dick" ;
thin_A = regA "dünn" ; thin_A = regA "dünn" ;
train_N = reg2N "Zug" "Züge" masculine ; train_N = reg2N "Zug" "Züge" masculine ;
@@ -251,7 +254,7 @@ lin
back_N = reg2N "Rücken" "Rücken" masculine ; back_N = reg2N "Rücken" "Rücken" masculine ;
bark_N = mkN "Rinde" ; bark_N = mkN "Rinde" ;
belly_N = reg2N "Bauch" "Bäuche" masculine ; 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 ; bone_N = reg2N "Knochen" "Knochen" masculine ;
breast_N = reg2N "Brust" "Brüste" feminine ; breast_N = reg2N "Brust" "Brüste" feminine ;
cloud_N = mkN "Wolke" ; cloud_N = mkN "Wolke" ;
@@ -261,7 +264,7 @@ lin
earth_N = mkN "Erde" ; earth_N = mkN "Erde" ;
egg_N = mkN "Ei" "Eier" neuter ; egg_N = mkN "Ei" "Eier" neuter ;
eye_N = mkN "Auge" "Augen" 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 ; feather_N = mkN "Feder" "Federn" feminine ;
fingernail_N = reg2N "Fingernagel" "Fingernägel" masculine ; fingernail_N = reg2N "Fingernagel" "Fingernägel" masculine ;
fire_N = mkN "Feuer" "Feuer" neuter ; fire_N = mkN "Feuer" "Feuer" neuter ;
@@ -270,7 +273,7 @@ lin
foot_N = reg2N "Fuß" "Füße" masculine ; foot_N = reg2N "Fuß" "Füße" masculine ;
forest_N = reg2N "Wald" "Wälder" masculine ; forest_N = reg2N "Wald" "Wälder" masculine ;
grass_N = mkN "Gras" "Gräser" neuter ; 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 ; hair_N = mkN "Haar" "Haare" neuter ;
hand_N = mkN "Hand" "Hände" feminine ; hand_N = mkN "Hand" "Hände" feminine ;
head_N = mkN "Kopf" "Köpfe" masculine ; head_N = mkN "Kopf" "Köpfe" masculine ;
@@ -295,11 +298,11 @@ lin
rope_N = mkN "Seil" "Seile" neuter ; rope_N = mkN "Seil" "Seile" neuter ;
salt_N = mkN "Salz" "Salze" neuter ; salt_N = mkN "Salz" "Salze" neuter ;
sand_N = mkN "Sand" ; sand_N = mkN "Sand" ;
seed_N = mkN "Same" ; seed_N = mkN "Same" "Samen" masculine ;
skin_N = mkN "Haut" "Häute" feminine ; skin_N = mkN "Haut" "Häute" feminine ;
sky_N = mkN "Himmel" ; sky_N = mkN "Himmel" ;
smoke_N = mkN "Rauch" ; 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 ; stick_N = mkN "Stock" "Stöcke" masculine ;
tail_N = mkN "Schwanz" "Schwänze" masculine ; tail_N = mkN "Schwanz" "Schwänze" masculine ;
tongue_N = mkN "Zunge" ; tongue_N = mkN "Zunge" ;

View File

@@ -8,7 +8,7 @@ oper
mkSubj : Str -> Subj = \x -> mkSubj : Str -> Subj = \x ->
{s = x ; lock_Subj = <>} ; {s = x ; lock_Subj = <>} ;
mkIQuant : Str -> IQuant = \s -> mkIQuant : Str -> IQuant = \s ->
{s = \\_,_ => s ; lock_IQuant = <>} ; {s = \\_,_ => s ; a = Strong ; lock_IQuant = <>} ;
mkPredet = overload { mkPredet = overload {
mkPredet : A -> Predet = \a -> mkPredet : A -> Predet = \a ->

View File

@@ -77,6 +77,18 @@ oper
_ => Predef.tk 2 v _ => 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$. -- For $Numeral$.
LinDigit = {s : DForm => CardOrd => Str} ; LinDigit = {s : DForm => CardOrd => Str} ;

View File

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

View File

@@ -1,4 +1,4 @@
--# -path=.:../common:../abstract:../../prelude --# -path=.:../common:../abstract:../prelude:
--1 German Lexical Paradigms --1 German Lexical Paradigms
-- --
@@ -174,15 +174,15 @@ mkN : overload {
mkLN : (nom,acc,dat,gen : Str) -> Gender -> LN = \nom,acc,dat,gen,g -> mkLN : (nom,acc,dat,gen : Str) -> Gender -> LN = \nom,acc,dat,gen,g ->
lin LN {s = \\a => table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ; lin LN {s = \\a => table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ;
g = g ; n = Sg ; g = g ; n = Sg ;
hasArt = False} hasDefArt = False}
} ; } ;
defLN : LN -> LN = \n -> n ** {hasArt = True} ; defLN : LN -> LN = \n -> n ** {hasDefArt = True} ;
mk2LN : (karolus, karoli : Str) -> Gender -> LN = \karolus, karoli, g -> mk2LN : (karolus, karoli : Str) -> Gender -> LN = \karolus, karoli, g ->
lin LN {s = \\a => table {Gen => karoli ; _ => karolus} ; g = g ; n = Sg ; lin LN {s = \\a => table {Gen => karoli ; _ => karolus} ; g = g ; n = Sg ;
hasArt = False} ; hasDefArt = False} ;
regLN : (horst : Str) -> Gender -> LN = \horst, g -> regLN : (horst : Str) -> Gender -> LN = \horst, g ->
mk2LN horst (ifTok Tok (Predef.dp 1 horst) "s" horst (horst + "s")) g ; mk2LN horst (ifTok Tok (Predef.dp 1 horst) "s" horst (horst + "s")) g ;
@@ -224,7 +224,7 @@ mkN : overload {
-- Adverbs are formed from strings. -- Adverbs are formed from strings.
mkAdv : Str -> Adv ; -- adverbs have just one form anyway mkAdv : Str -> Adv ; -- adverbs have just one form anyway
mkIAdv : Str -> IAdv ;
--2 Prepositions --2 Prepositions
@@ -576,6 +576,7 @@ mkV2 : overload {
mkA2 = \a,p -> a ** {c2 = p ; lock_A2 = <>} ; mkA2 = \a,p -> a ** {c2 = p ; lock_A2 = <>} ;
mkAdv s = {s = s ; lock_Adv = <>} ; mkAdv s = {s = s ; lock_Adv = <>} ;
mkIAdv s = {s = s ; lock_IAdv = <>} ;
mkPrep = overload { mkPrep = overload {
mkPrep : Str -> Case -> Prep = \s,c -> mkPrep : Str -> Case -> Prep = \s,c ->
@@ -633,7 +634,7 @@ mkV2 : overload {
irregV singen singt sang saenge gesungen = irregV singen singt sang saenge gesungen =
let let
sing = stemVerb singen ; sing = stemVerbImpSg singen singt -- geben gibt => gib, HL 7/17
in in
mk6V singen singt sing sang saenge gesungen ; mk6V singen singt sing sang saenge gesungen ;

View File

@@ -1,4 +1,4 @@
concrete QuestionGer of Question = CatGer ** open ResGer in { concrete QuestionGer of Question = CatGer ** open ResGer, Prelude in {
flags optimize=all_subs ; flags optimize=all_subs ;
@@ -17,7 +17,7 @@ concrete QuestionGer of Question = CatGer ** open ResGer in {
s = \\m,t,a,p => s = \\m,t,a,p =>
let let
who = appPrep vp.c1 ip.s ; who = appPrep vp.c1 ip.s ;
cl = (mkClause who (agrP3 ip.n) vp).s ! m ! t ! a ! p cl = (mkClause who (agrGenNum ip.a) vp).s ! m ! t ! a ! p
in table { in table {
QDir => cl ! Main ; QDir => cl ! Main ;
QIndir => cl ! Sub QIndir => cl ! Sub
@@ -36,8 +36,8 @@ concrete QuestionGer of Question = CatGer ** open ResGer in {
} ; } ;
QuestIAdv iadv cl = { QuestIAdv iadv cl = {
s = \\m,t,a,p => s = \\m,t,a,p =>
let let
cls = cl.s ! m ! t ! a ! p ; cls = cl.s ! m ! t ! a ! p ;
why = iadv.s why = iadv.s
in table { in table {
@@ -47,8 +47,8 @@ concrete QuestionGer of Question = CatGer ** open ResGer in {
} ; } ;
QuestIComp icomp np = { QuestIComp icomp np = {
s = \\m,t,a,p => s = \\m,t,a,p =>
let let
vp = predV sein_V ** {ext = icomp.ext}; vp = predV sein_V ** {ext = icomp.ext};
subj = mkSubject np vp.c1 ; subj = mkSubject np vp.c1 ;
cls = (mkClause subj.s subj.a vp).s ! m ! t ! a ! p ; cls = (mkClause subj.s subj.a vp).s ! m ! t ! a ! p ;
@@ -60,12 +60,13 @@ concrete QuestionGer of Question = CatGer ** open ResGer in {
} ; } ;
PrepIP p ip = { PrepIP p ip = {
s = appPrep p ip.s ; s = appPrep p ip.s -- todo: mit was => womit ; an was => woran etc.
} ; } ;
AdvIP ip adv = { AdvIP ip adv = {
s = \\c => ip.s ! c ++ adv.s ; s = \\c => ip.s ! c ++ adv.s ;
n = ip.n a = ip.a ;
isPron = False
} ; } ;
IdetCN idet cn = IdetCN idet cn =
@@ -73,8 +74,9 @@ concrete QuestionGer of Question = CatGer ** open ResGer in {
g = cn.g ; g = cn.g ;
n = idet.n n = idet.n
in { in {
s = \\c => idet.s ! g ! c ++ cn.s ! Weak ! n ! c ; s = \\c => idet.s ! g ! c ++ cn.s ! idet.a ! n ! c ++ cn.adv ++ cn.rc ! n ++ cn.ext ;
n = n a = case n of {Sg => GSg g ; _ => GPl} ;
isPron = False
} ; } ;
IdetIP idet = IdetIP idet =
@@ -82,16 +84,19 @@ concrete QuestionGer of Question = CatGer ** open ResGer in {
g = Neutr ; ---- g = Neutr ; ----
n = idet.n n = idet.n
in { in {
s = idet.s ! g ; s = idet.s ! g ;
n = n a = case n of {Sg => GSg g ; _ => GPl} ;
isPron = False ;
} ; } ;
IdetQuant idet num = IdetQuant iquant num =
let let
n = num.n n = num.n ;
a = iquant.a
in { in {
s = \\g,c => idet.s ! (gennum g n) ! c ++ num.s ! AMod (gennum g n) c ; s = \\g,c => let gn = gennum g n in iquant.s ! gn ! c ++ num.s ! agrAdj a gn c ;
n = n n = n ;
a = a
} ; } ;
AdvIAdv i a = {s = i.s ++ a.s} ; AdvIAdv i a = {s = i.s ++ a.s} ;
@@ -100,5 +105,36 @@ concrete QuestionGer of Question = CatGer ** open ResGer in {
CompIP ip = {s = \\_ => ip.s ! Nom ; ext = "" } ; CompIP ip = {s = \\_ => ip.s ! Nom ; ext = "" } ;
-- QVP (added 9/2025, HL)
lincat
QVP = ResGer.VP ;
linref
QVP = \vp -> useInfVP False vp ;
lin
ComplSlashIP vps ip = -- just as ComplSlash : VPSlash -> NP -> VP
let np = lin NP {s = table Bool {_ => ip.s} ;
a = agrGenNum ip.a ;
w = WLight ; -- guessed
rc,ext = []} ;
vp = case vps.objCtrl of { True => objAgr np vps ; _ => vps }
** { c2 = vps.c2 ; objCtrl = vps.objCtrl } ;
in insertObjNP np vps.c2 vp ;
AdvQVP vp iadv = insertAdv iadv.s vp ;
AddAdvQVP qvp iadv = insertAdv iadv.s qvp ;
QuestQVP ip qvp = { -- just as QuestVP, with qvp as vp
s = \\m,t,a,p =>
let
who = appPrep qvp.c1 ip.s ;
cl = (mkClause who (agrGenNum ip.a) qvp).s ! m ! t ! a ! p
in table {
QDir => cl ! Main ;
QIndir => cl ! Sub
}
} ;
} }

View File

@@ -18,9 +18,10 @@ concrete RelativeGer of Relative = CatGer ** open ResGer, Prelude in {
} ; } ;
agr = case rp.a of { agr = case rp.a of {
RNoAg => agrP3 (numGenNum gn) ; RNoAg => agrP3 (numGenNum gn) ;
RAg n p => case n of {Sg => AgSgP3 Neutr ; Pl => AgPl p} RAg Sg p => AgSgP3 Neutr ;
} ; RAg Pl p => AgPl p
cl = mkClause (rp.s ! rgn ! Nom) agr vp } ; -- subject may be non-nom, e.g. an dem gezweifelt wird
cl = mkClause (appPrep vp.c1 (rp.s ! rgn)) agr vp
in in
cl.s ! m ! t ! ant ! b ! Sub ; cl.s ! m ! t ! ant ! b ! Sub ;
c = Nom c = Nom

View File

@@ -181,6 +181,9 @@ resource ResGer = ParamX ** open Prelude in {
genGenNum : GenNum -> Gender = \gn -> genGenNum : GenNum -> Gender = \gn ->
case gn of {GSg g => g ; GPl => Masc} ; case gn of {GSg g => g ; GPl => Masc} ;
agrGenNum : GenNum -> Agr = \gn ->
case gn of {GSg g => AgSgP3 g ; _ => AgPl P3} ;
-- Used in $NounGer$. -- Used in $NounGer$.
agrAdj : Adjf -> GenNum -> Case -> AForm = \a,gn,c -> agrAdj : Adjf -> GenNum -> Case -> AForm = \a,gn,c ->

View File

@@ -50,7 +50,7 @@ concrete StructuralGer of Structural = CatGer **
here_Adv = ss "hier" ; here_Adv = ss "hier" ;
how_IAdv = ss "wie" ; how_IAdv = ss "wie" ;
how8much_IAdv = ss "wieviel" ; how8much_IAdv = ss "wieviel" ;
how8many_IDet = {s = \\g,c => "wie viel" + detEnding ! (gennum g Pl) ! c ; n = Pl} ; how8many_IDet = {s = \\g,c => "wie viel" + detEnding ! (gennum g Pl) ! c ; n = Pl ; a = Strong} ;
if_Subj = ss "wenn" ; --- no variants in the RGL! | ss "falls" ; if_Subj = ss "wenn" ; --- no variants in the RGL! | ss "falls" ;
in8front_Prep = mkPrep "vor" P.dative ; in8front_Prep = mkPrep "vor" P.dative ;
i_Pron = mkPronPers "ich" "mich" "mir" "meiner" "mein" Masc Sg P1 ; i_Pron = mkPronPers "ich" "mich" "mir" "meiner" "mein" Masc Sg P1 ;
@@ -74,8 +74,8 @@ concrete StructuralGer of Structural = CatGer **
sp = \\_,g,c => "viel" + detEnding ! (gennum g Sg) ! c ; ---- (GSg _ Sg) ! Gen ? sp = \\_,g,c => "viel" + detEnding ! (gennum g Sg) ! c ; ---- (GSg _ Sg) ! Gen ?
n = Sg ; a = Strong ; isDef = False ; hasDefArt = False} ; n = Sg ; a = Strong ; isDef = False ; hasDefArt = False} ;
must_VV = auxVV must_VV = auxVV
(mkV (mkV -- modal verb, has no imperative forms "müsse,müsst" HL 12/2024
"müssen" "muss" "musst" "muss" "müsst" "müss" "müssen" "muss" "musst" "muss" "müsst" "müsse"
"musste" "musstest" "mussten" "musstet" "musste" "musstest" "mussten" "musstet"
"müsste" "gemusst" [] "müsste" "gemusst" []
VHaben) ; VHaben) ;
@@ -123,22 +123,26 @@ concrete StructuralGer of Structural = CatGer **
under_Prep = mkPrep "unter" P.dative ; under_Prep = mkPrep "unter" P.dative ;
very_AdA = ss "sehr" ; very_AdA = ss "sehr" ;
want_VV = auxVV want_VV = auxVV
(mkV (mkV -- modal verb, has no imperative forms "wolle,woll(e)t" HL 12/2024
"wollen" "will" "willst" "will" "wollt" "woll" "wollen" "will" "willst" "will" "wollt" "wolle"
"wollte" "wolltest" "wollten" "wolltet" "wollte" "wolltest" "wollten" "wolltet"
"wollte" "gewollt" [] "wollte" "gewollt" []
VHaben) ; VHaben) ;
we_Pron = mkPronPers "wir" "uns" "uns" "unser" "unser" Fem Pl P1 ; we_Pron = mkPronPers "wir" "uns" "uns" "unser" "unser" Fem Pl P1 ;
whatSg_IP = {s = caselist "was" "was" "was" "wessen" ; n = Sg} ; ---- whatSg_IP = {s = caselist "was" "was" "was" "wessen" ;
whatPl_IP = {s = caselist "was" "was" "was" "wessen" ; n = Pl} ; -- HL 6/2016 a = GSg Neutr ; isPron = True} ; -- todo: mit was => womit
whatPl_IP = {s = caselist "was alles" "was alles" "was allem" "wessen allem" ;
a = GSg Neutr ; isPron = True} ; -- Duden 563
when_IAdv = ss "wann" ; when_IAdv = ss "wann" ;
when_Subj = ss "wenn" ; when_Subj = ss "wenn" ;
where_IAdv = ss "wo" ; where_IAdv = ss "wo" ;
which_IQuant = {s = \\gn,c => "welch" + detEnding ! gn ! c} ; which_IQuant = {s = \\gn,c => "welch" + detEnding ! gn ! c ; a = Weak} ;
whoSg_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Sg} ; whoSg_IP = {s = caselist "wer" "wen" "wem" "wessen" ;
whoPl_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Sg} ; -- HL 6/2016 a = GSg Masc ; isPron = True} ; -- Duden 563
whoPl_IP = {s = caselist "wer alles" "wen alles" "wem alles" "wessen alles" ;
a = GSg Masc ; isPron = True} ; -- Duden 563
why_IAdv = ss "warum" ; why_IAdv = ss "warum" ;
without_Prep = mkPrep "ohne" P.accusative ; without_Prep = mkPrep "ohne" P.accusative ;
with_Prep = mkPrep "mit" P.dative ; with_Prep = mkPrep "mit" P.dative ;
@@ -153,7 +157,7 @@ concrete StructuralGer of Structural = CatGer **
GPl => \\c => "kein" + detEnding ! GPl ! c} ; GPl => \\c => "kein" + detEnding ! GPl ! c} ;
sp = \\gn,c => "kein" + detEnding ! gn ! c ; sp = \\gn,c => "kein" + detEnding ! gn ! c ;
a = Mixed ; isDefArt = False ; delCardOne = True} ; -- HL kein+ein(er) => kein(er) a = Mixed ; isDefArt = False ; delCardOne = True} ; -- HL kein+ein(er) => kein(er)
if_then_Conj = {s1 = "wenn" ; s2 = "dann" ; n = Sg ; lock_Conj = <>} ; if_then_Conj = {s1 = "wenn" ; s2 = bindComma ++ "dann" ; n = Sg} ;
nobody_NP = nobody_NP =
nameNounPhrase Masc {s = caselist "niemand" "niemanden" "niemandem" "niemands"} ; nameNounPhrase Masc {s = caselist "niemand" "niemanden" "niemandem" "niemands"} ;
nothing_NP = nothing_NP =
@@ -166,7 +170,7 @@ concrete StructuralGer of Structural = CatGer **
have_V2 = P.dirV2 IrregGer.haben_V ; have_V2 = P.dirV2 IrregGer.haben_V ;
that_Subj = ss "dass" ; that_Subj = ss "dass" ;
lin language_title_Utt = ss "Deutsch" ; language_title_Utt = ss "Deutsch" ;
oper oper
asNum : (Gender => Case => Str) -> (Gender => Case => {quant,num:Str}) = asNum : (Gender => Case => Str) -> (Gender => Case => {quant,num:Str}) =