diff options
| author | aarne <aarne@chalmers.se> | 2009-06-22 15:39:08 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2009-06-22 15:39:08 +0000 |
| commit | e89fdae2fa1626348d8025824a7469252fa85e42 (patch) | |
| tree | c7d46bbd0494043b4bd6f917a25a7687517d0547 /next-lib/src/german | |
| parent | 3049b59b35b25381a7c6787444165c200d66e08b (diff) | |
next-lib renamed to lib, lib to old-lib
Diffstat (limited to 'next-lib/src/german')
28 files changed, 0 insertions, 3219 deletions
diff --git a/next-lib/src/german/AdjectiveGer.gf b/next-lib/src/german/AdjectiveGer.gf deleted file mode 100644 index a0ced749c..000000000 --- a/next-lib/src/german/AdjectiveGer.gf +++ /dev/null @@ -1,55 +0,0 @@ -concrete AdjectiveGer of Adjective = CatGer ** open ResGer, Prelude in { - - flags optimize=all_subs ; - - lin - - PositA a = { - s = a.s ! Posit ; - isPre = True - } ; - ComparA a np = { - s = \\af => a.s ! Compar ! af ++ conjThan ++ np.s ! Nom ; - isPre = True - } ; - CAdvAP ad ap np = { - s = \\af => ad.s ++ ap.s ! af ++ ad.p ++ np.s ! Nom ; - isPre = False - } ; - UseComparA a = { - s = \\af => a.s ! Compar ! af ; - isPre = True - } ; - AdjOrd a = { - s = a.s ; - isPre = True - } ; - --- $SuperlA$ belongs to determiner syntax in $Noun$. - - ComplA2 a np = { - s = \\af => a.s ! Posit ! af ++ appPrep a.c2 np.s ; - isPre = True - } ; - - ReflA2 a = { - s = \\af => a.s ! Posit ! APred ++ appPrep a.c2 (reflPron ! agrP3 Sg) ; --- agr - isPre = True - } ; - - SentAP ap sc = { - s = \\a => ap.s ! a ++ sc.s ; - isPre = False - } ; - - AdAP ada ap = { - s = \\a => ada.s ++ ap.s ! a ; - isPre = ap.isPre - } ; - - UseA2 a = { - s = a.s ! Posit ; - isPre = True - } ; - -} diff --git a/next-lib/src/german/AdverbGer.gf b/next-lib/src/german/AdverbGer.gf deleted file mode 100644 index 82ccd6193..000000000 --- a/next-lib/src/german/AdverbGer.gf +++ /dev/null @@ -1,23 +0,0 @@ -concrete AdverbGer of Adverb = CatGer ** open ResGer, Prelude in { - - lin - PositAdvAdj a = {s = a.s ! Posit ! APred} ; - - ComparAdvAdj cadv a np = { - s = cadv.s ++ a.s ! Posit ! APred ++ cadv.p ++ np.s ! Nom - } ; - ComparAdvAdjS cadv a s = { - s = cadv.s ++ a.s ! Posit ! APred ++ cadv.p ++ s.s ! Sub - } ; - - PrepNP prep np = {s = appPrep prep np.s} ; - - AdAdv = cc2 ; - - SubjS subj s = {s = subj.s ++ s.s ! Sub} ; - - AdnCAdv cadv = {s = cadv.s ++ conjThan} ; - -} - ----b AdvSC s = s ; diff --git a/next-lib/src/german/AllGer.gf b/next-lib/src/german/AllGer.gf deleted file mode 100644 index 7795174e4..000000000 --- a/next-lib/src/german/AllGer.gf +++ /dev/null @@ -1,7 +0,0 @@ ---# -path=.:../abstract:../common:prelude - -concrete AllGer of AllGerAbs = - LangGer, - IrregGer, - ExtraGer - ** {} ; diff --git a/next-lib/src/german/AllGerAbs.gf b/next-lib/src/german/AllGerAbs.gf deleted file mode 100644 index 85ef801a4..000000000 --- a/next-lib/src/german/AllGerAbs.gf +++ /dev/null @@ -1,7 +0,0 @@ ---# -path=.:../abstract:../common:prelude - -abstract AllGerAbs = - Lang, - IrregGerAbs, - ExtraGerAbs - ** {} ; diff --git a/next-lib/src/german/CatGer.gf b/next-lib/src/german/CatGer.gf deleted file mode 100644 index e1dae718b..000000000 --- a/next-lib/src/german/CatGer.gf +++ /dev/null @@ -1,103 +0,0 @@ -concrete CatGer of Cat = - CommonX - [Tense,TPres,TPast,TFut,TCond,TTAnt,Temp] ** - open ResGer, Prelude in { - - flags optimize=all_subs ; - - lincat - --- Tensed/Untensed - - S = {s : Order => Str} ; - QS = {s : QForm => Str} ; - RS = {s : GenNum => Str ; c : Case} ; - SSlash = {s : Order => Str} ** {c2 : Preposition} ; - --- Sentence - - Cl = {s : Mood => ResGer.Tense => Anteriority => Polarity => Order => Str} ; - ClSlash = { - s : Mood => ResGer.Tense => Anteriority => Polarity => Order => Str ; - c2 : Preposition - } ; - Imp = {s : Polarity => ImpForm => Str} ; - --- Question - - QCl = {s : Mood => ResGer.Tense => Anteriority => Polarity => QForm => Str} ; - IP = {s : Case => Str ; n : Number} ; - IComp = {s : Agr => Str} ; - IDet = {s : Gender => Case => Str ; n : Number} ; - IQuant = {s : Number => Gender => Case => Str} ; - --- Relative - - RCl = {s : Mood => ResGer.Tense => Anteriority => Polarity => GenNum => Str ; c : Case} ; - RP = {s : GenNum => Case => Str ; a : RAgr} ; - --- Verb - - VP = ResGer.VP ; - VPSlash = ResGer.VP ** {c2 : Preposition} ; - Comp = {s : Agr => Str} ; - --- Adjective - - AP = {s : AForm => Str ; isPre : Bool} ; - --- Noun - - CN = {s : Adjf => Number => Case => Str ; g : Gender} ; - NP = {s : Case => Str ; a : Agr} ; - Pron = {s : NPForm => Str ; a : Agr} ; - Det = {s,sp : Gender => Case => Str ; n : Number ; a : Adjf} ; - Quant = { - s : Bool => Number => Gender => Case => Str ; - sp : Number => Gender => Case => Str ; - a : Adjf - } ; - Predet = {s : Number => Gender => Case => Str ; c : PredetCase} ; - Num = {s : Gender => Case => Str ; n : Number ; isNum : Bool} ; - Card = {s : Gender => Case => Str ; n : Number} ; - Ord = {s : AForm => Str} ; - --- Numeral - - Numeral = {s : CardOrd => Str ; n : Number } ; - Digits = {s : CardOrd => Str ; n : Number } ; - --- Structural - - Conj = {s1,s2 : Str ; n : Number} ; - Subj = {s : Str} ; - Prep = {s : Str ; c : Case} ; - --- Open lexical classes, e.g. Lexicon - - V, VS, VQ, VA = ResGer.Verb ; -- = {s : VForm => Str} ; - VV = Verb ** {isAux : Bool} ; - V2, V2A, V2S, V2Q = Verb ** {c2 : Preposition} ; - V2V = Verb ** {c2 : Preposition ; isAux : Bool} ; - V3 = Verb ** {c2, c3 : Preposition} ; - - A = {s : Degree => AForm => Str} ; - A2 = {s : Degree => AForm => Str ; c2 : Preposition} ; - - N = {s : Number => Case => Str ; g : Gender} ; - N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Preposition} ; - N3 = {s : Number => Case => Str ; g : Gender} ** {c2,c3 : Preposition} ; - PN = {s : Case => Str} ; - --- tense with possibility to choose conjunctive forms - - Temp = {s : Str ; t : ResGer.Tense ; a : Anteriority ; m : Mood} ; - Tense = {s : Str ; t : ResGer.Tense ; m : Mood} ; - - lin - TTAnt t a = {s = t.s ++ a.s ; t = t.t ; a = a.a ; m = t.m} ; - - TPres = {s = [] ; t = Pres ; m = MIndic} ; - TPast = {s = [] ; t = Past ; m = MIndic} ; --# notpresent - TFut = {s = [] ; t = Fut ; m = MIndic} ; --# notpresent - TCond = {s = [] ; t = Cond ; m = MIndic} ; --# notpresent -} diff --git a/next-lib/src/german/ConjunctionGer.gf b/next-lib/src/german/ConjunctionGer.gf deleted file mode 100644 index 3aea69d1d..000000000 --- a/next-lib/src/german/ConjunctionGer.gf +++ /dev/null @@ -1,45 +0,0 @@ -concrete ConjunctionGer of Conjunction = - CatGer ** open ResGer, Coordination, Prelude in { - - flags optimize=all_subs ; - - lin - - ConjS conj ss = conjunctDistrTable Order conj ss ; - - ConjAdv conj ss = conjunctDistrSS conj ss ; - - ConjNP conj ss = conjunctDistrTable Case conj ss ** { - a = {g = Fem ; n = conjNumber conj.n ss.a.n ; p = ss.a.p} - } ; - - ConjAP conj ss = conjunctDistrTable AForm conj ss ** { - isPre = ss.isPre - } ; - - ConjRS conj ss = conjunctDistrTable GenNum conj ss ** { - c = ss.c - } ; - - --- These fun's are generated from the list cat's. - - BaseS = twoTable Order ; - ConsS = consrTable Order comma ; - BaseAdv = twoSS ; - ConsAdv = consrSS comma ; - BaseNP x y = twoTable Case x y ** {a = conjAgr x.a y.a} ; - ConsNP xs x = consrTable Case comma xs x ** {a = conjAgr xs.a x.a} ; - BaseAP x y = twoTable AForm x y ** {isPre = andB x.isPre y.isPre} ; - ConsAP xs x = consrTable AForm comma xs x ** {isPre = andB xs.isPre x.isPre} ; - BaseRS x y = twoTable GenNum x y ** {c = y.c} ; - ConsRS xs x = consrTable GenNum comma xs x ** {c = xs.c} ; - - lincat - [S] = {s1,s2 : Order => Str} ; - [Adv] = {s1,s2 : Str} ; - [NP] = {s1,s2 : Case => Str ; a : Agr} ; - [AP] = {s1,s2 : AForm => Str ; isPre : Bool} ; - [RS] = {s1,s2 : GenNum => Str ; c : Case} ; - -} diff --git a/next-lib/src/german/ExtGer.gf b/next-lib/src/german/ExtGer.gf deleted file mode 100644 index b87b483e6..000000000 --- a/next-lib/src/german/ExtGer.gf +++ /dev/null @@ -1,26 +0,0 @@ ---concrete ExtGer of ExtGerAbs = CatGer ** open ResGer in { --- --- lincat --- --- Aux = {s : Polarity => Str} ; --- --- lin --- --- PredAux np aux vp = mkClause (np.s ! Nom) np.a { --- s = \\t,ant,b,ord,agr => --- let --- fin = aux.s ! b ; --- vf : Str -> Str -> {fin, inf : Str} = \x,y -> --- {fin = x ; inf = y} ; --- in --- case ant of { --- Simul => vf fin [] ; --- Anter => vf fin "have" --- } ; --- s2 = \\agr => infVP vp agr --- } ; --- --- can_Aux = {s = \\p => posneg p "can"} ; ---- cannt --- must_Aux = {s = \\p => posneg p "must"} ; --- ---} diff --git a/next-lib/src/german/ExtraGer.gf b/next-lib/src/german/ExtraGer.gf deleted file mode 100644 index 518fe1713..000000000 --- a/next-lib/src/german/ExtraGer.gf +++ /dev/null @@ -1,34 +0,0 @@ -concrete ExtraGer of ExtraGerAbs = CatGer ** - open ResGer, Coordination, Prelude, IrregGer in { - - lincat - VPI = {s : Bool => Str} ; - [VPI] = {s1,s2 : Bool => Str} ; - lin - BaseVPI = twoTable Bool ; - ConsVPI = consrTable Bool comma ; - - MkVPI vp = {s = \\b => useInfVP b vp} ; - ConjVPI = conjunctDistrTable Bool ; - - ComplVPIVV v vpi = - insertInf (vpi.s ! v.isAux) ( - predVGen v.isAux v) ; ---- -{- - insertExtrapos vpi.p3 ( - insertInf vpi.p2 ( - insertObj vpi.p1 ( - predVGen v.isAux v))) ; --} - - PPzuAdv cn = {s = case cn.g of { - Masc | Neutr => "zum" ; - Fem => "zur" - } ++ cn.s ! adjfCase Weak Dat ! Sg ! Dat - } ; - - TImpfSubj = {s = [] ; t = Past ; m = MConjunct} ; --# notpresent - - moegen_VV = auxVV mögen_V ; - -} diff --git a/next-lib/src/german/ExtraGerAbs.gf b/next-lib/src/german/ExtraGerAbs.gf deleted file mode 100644 index 886b666c3..000000000 --- a/next-lib/src/german/ExtraGerAbs.gf +++ /dev/null @@ -1,11 +0,0 @@ -abstract ExtraGerAbs = Extra [ - VPI,ListVPI,BaseVPI,ConsVPI,MkVPI,ComplVPIVV,ConjVPI, - VV,VP,Conj] ** { - - fun - PPzuAdv : CN -> Adv ; -- zum Lied, zur Flasche - TImpfSubj : Tense ; -- ich möchte... --# notpresent - - moegen_VV : VV ; -- ich mag/möchte singen - -} diff --git a/next-lib/src/german/GrammarGer.gf b/next-lib/src/german/GrammarGer.gf deleted file mode 100644 index 2df4bf203..000000000 --- a/next-lib/src/german/GrammarGer.gf +++ /dev/null @@ -1,21 +0,0 @@ ---# -path=.:../abstract:../common:prelude - -concrete GrammarGer of Grammar = - NounGer, - VerbGer, - AdjectiveGer, - AdverbGer, - NumeralGer, - SentenceGer, - QuestionGer, - RelativeGer, - ConjunctionGer, - PhraseGer, - TextX - [Tense,TPres,TPast,TFut,TCond,TTAnt,Temp], - IdiomGer, - StructuralGer - ** { - -flags startcat = Phr ; unlexer = text ; lexer = text ; - -} ; diff --git a/next-lib/src/german/IdiomGer.gf b/next-lib/src/german/IdiomGer.gf deleted file mode 100644 index 4392a38b5..000000000 --- a/next-lib/src/german/IdiomGer.gf +++ /dev/null @@ -1,46 +0,0 @@ -concrete IdiomGer of Idiom = CatGer ** - open MorphoGer, ParadigmsGer, Prelude in { - - flags optimize=all_subs ; - - lin - ImpersCl vp = mkClause "es" (agrP3 Sg) vp ; - GenericCl vp = mkClause "man" (agrP3 Sg) vp ; - - CleftNP np rs = mkClause "es" (agrP3 Sg) - (insertExtrapos (rs.s ! gennum np.a.g np.a.n) ---- - (insertObj (\\_ => np.s ! rs.c) (predV MorphoGer.sein_V))) ; - - CleftAdv ad s = mkClause "es" (agrP3 Sg) - (insertExtrapos (conjThat ++ s.s ! Sub) - (insertObj (\\_ => ad.s) (predV MorphoGer.sein_V))) ; - - - ExistNP np = - mkClause "es" (agrP3 Sg) - (insertObj (\\_ => appPrep geben.c2 np.s) - (predV geben)) ; - - ExistIP ip = { - s = \\m,t,a,p => - let - cls = - (mkClause "es" (agrP3 Sg) (predV geben)).s ! m ! t ! a ! p ; - who = ip.s ! Acc - in table { - QDir => who ++ cls ! Inv ; - QIndir => who ++ cls ! Sub - } - } ; - - ProgrVP = insertAdv "eben" ; ---- - - ImpPl1 vp = {s = - (mkClause "wir" {g = Fem ; n = Pl ; p = P1} vp).s ! - MConjunct ! Pres ! Simul ! Pos ! Inv - } ; - - oper - geben = dirV2 (mk6V "geben" "gibt" "gib" "gab" "gäbe" "gegeben") ; -} - diff --git a/next-lib/src/german/IrregGer.gf b/next-lib/src/german/IrregGer.gf deleted file mode 100644 index 35f85aafb..000000000 --- a/next-lib/src/german/IrregGer.gf +++ /dev/null @@ -1,228 +0,0 @@ ---# -path=.:prelude:../abstract:../common - --- adapted from verb list in --- http://www.iee.et.tu-dresden.de/~wernerr/grammar/verben_dt.html - -concrete IrregGer of IrregGerAbs = CatGer ** open - ParadigmsGer, - (M = MorphoGer) -in { - - flags optimize=values ; - - lin backen_V = irregV "backen" "bäckt" (variants {"backt" ; "buk"}) (variants {"backt" ; "buke"}) "gebacken" ; - lin befehlen_V = irregV "befehlen" "befiehlt" "befahl" "beföhle" "befähle)" ; - lin beginnen_V = irregV "beginnen" "beginnt" "begann" "begönne" "begänne)" ; - lin beißen_V = irregV "beißen" "beißt" "biß" "biße" "gebissen" ; - lin bergen_V = irregV "bergen" "birgt" "barg" "bärge" "geborgen" ; - lin bersten_V = irregV "bersten" "birst" "barst" "bärste" "geborsten" ; - lin bewegen_V = irregV "bewegen" "bewegt" "bewog" "bewöge" "bewogen" ; - lin biegen_V = irregV "biegen" "biegt" "bog" "böge" "gebogen" ; - lin bieten_V = irregV "bieten" "bietet" "bot" "böte" "geboten" ; - lin binden_V = irregV "binden" "bindt" "band" "bände" "gebunden" ; - lin bitten_V = irregV "bitten" "bittet" "bat" "bäte" "gebeten" ; - lin blasen_V = irregV "blasen" "bläst" "blies" "bliese" "geblasen" ; - lin bleiben_V = irregV "bleiben" "bleibt" "blieb" "bliebe" "geblieben" ; - lin braten_V = irregV "braten" "brät" "briet" "briete" "gebraten" ; - lin brechen_V = irregV "brechen" "bricht" "brach" "bräche" "gebrochen" ; - lin brennen_V = irregV "brennen" "brennt" "brannte" "brennte" "gebrannt" ; - lin bringen_V = irregV "bringen" "bringt" "brachte" "brachte" "gebracht" ; - lin denken_V = irregV "denken" "denkt" "dachte" "dachte" "gedacht" ; - lin dingen_V = irregV "dingen" "dingt" "dingte" "dang" "gedungen" ; - lin dreschen_V = irregV "dreschen" "drischt" "drosch" "drösche" "gedroschen" ; - lin dringen_V = irregV "dringen" "dringt" "drang" "dränge" "gedrungen" ; - lin dürfen_V = M.mkV - "dürfen" "darf" "darfst" "darf" "dürft" "dürf" - "durfte" "durftest" "durften" "durftet" - "dürfte" "gedurft" [] - M.VHaben ** {lock_V = <>} ; - lin empfehlen_V = irregV "empfehlen" "empfiehlt" "empfahl" - (variants {"empföhle" ; "empfähle"}) "empfohlen" ; - lin erlöschen_V = irregV "erlöschen" "erlischt" "erlosch" "erlösche" "erloschen" ; - lin erkennen_V = irregV "erkennen" "erkennt" "erkannte" "erkannte" "erkannt" ; - lin erschrecken_V = irregV "erschrecken" "erschrickt" "erschrak" "erschräke" "erschrocken" ; - lin essen_V = irregV "essen" "ißt" "aß" "äße" "gegessen" ; - lin fahren_V = irregV "fahren" "fährt" "fuhr" "führe" "gefahren" ; - lin fallen_V = irregV "fallen" "fällt" "fiel" "fiele" "gefallen" ; - lin fangen_V = irregV "fangen" "fängt" "fing" "finge" "gefangen" ; - lin fechten_V = irregV "fechten" "fechtet" "focht" "föchte" "gefochten" ; - lin finden_V = irregV "finden" "findt" "fand" "fände" "gefunden" ; - lin flechten_V = irregV "flechten" "flicht" "flocht" "flöchte" "geflochten" ; - lin fliegen_V = irregV "fliegen" "fliegt" "flog" "flöge" "geflogen" ; - lin fliehen_V = irregV "fliehen" "flieht" "floh" "flöhe" "geflohen" ; - lin fließen_V = irregV "fließen" "fließt" "floß" "flösse" "geflossen" ; - lin fressen_V = irregV "fressen" "frißt" "fraß" "fräße" "gefressen" ; - lin frieren_V = irregV "frieren" "friert" "fror" "fröre" "gefroren" ; - lin gären_V = irregV "gären" "gärt" (variants {"gor" ; "gärte"}) "göre" "gegoren" ; - lin gebären_V = irregV "gebären" "gebiert" "gebar" "gebäre" "geboren" ; - lin geben_V = irregV "geben" "gibt" "gab" "gäbe" "gegeben" ; - lin gedeihen_V = irregV "gedeihen" "gedeiht" "gedieh" "gediehe" "gediehen" ; - lin gehen_V = irregV "gehen" "geht" "ging" "ginge" "gegangen" ; - lin gelingen_V = irregV "gelingen" "gelingt" "gelang" "gelange" "gelungen" ; - lin gelten_V = irregV "gelten" "gilt" "galt" (variants {"galte" ; "golte"}) "gegolten" ; - lin genesen_V = irregV "genesen" "genest" "genas" "genäse" "genesen" ; - lin genießen_V = irregV "genießen" "genießt" "genoß" "genösse" "genossen" ; - lin geschehen_V = irregV "geschehen" "geschieht" "geschah" "geschehen" "geschähe" ; - lin gewinnen_V = irregV "gewinnen" "gewinnt" "gewann" (variants {"gewönne" ; "gewänne"}) "gewonnen" ; - lin gießen_V = irregV "gießen" "gießt" "goß" "gösse" "gegossen" ; - lin gleichen_V = irregV "gleichen" "gleicht" "glich" "gliche" "geglichen" ; - lin gleiten_V = irregV "gleiten" "gleitet" "glitt" "glitte" "geglitten" ; - lin glimmen_V = irregV "glimmen" "glimmt" "glomm" "glimmte" "glömme" ; - lin graben_V = irregV "graben" "gräbt" "grub" "grübe" "gegraben" ; - lin greifen_V = irregV "greifen" "greift" "griff" "griffe" "gegriffen" ; - lin haben_V = irregV "haben" "hat" "hatte" "hatte" "gehabt" ; - lin halten_V = irregV "halten" "hält" "hielt" "hielte" "gehalten" ; - lin hängen_V = irregV "hängen" "hängt" "hing" "hinge" "gehangen" ; - lin hauen_V = irregV "hauen" "haut" (variants {"haute" ; "hieb"}) (variants {"haute" ; "hiebe"}) "gehauen" ; - lin heben_V = irregV "heben" "hebt" "hob" "höbe" "gehoben" ; - lin heißen_V = irregV "heißen" "heißt" "hieß" "hieße" "geheißen" ; - lin helfen_V = irregV "helfen" "hilft" "half" "hülfe" "geholfen" ; - lin kennen_V = irregV "kennen" "kennt" "kannte" "kennte" "gekannt" ; - lin klimmen_V = irregV "klimmen" "klimmt" "klomm" "klömme" "geklommen" ; - lin klingen_V = irregV "klingen" "klingt" "klang" "klänge" "geklungen" ; - lin kneifen_V = irregV "kneifen" "kneift" "kniff" "kniffe" "gekniffen" ; - lin kommen_V = irregV "kommen" "kommt" "kam" "käme" "gekommen" ; - lin können_V = M.mkV - "können" "kann" "kannst" "kann" "könnt" "könn" - "konnte" "konntest" "konnten" "konntet" - "könnte" "gekonnt" [] - M.VHaben ** {lock_V = <>} ; - lin kriechen_V = irregV "kriechen" "kriecht" "kroch" "kröche" "gekrochen" ; - lin küren_V = irregV "küren" "kürt" "kürte" "kor" "gekürt" ; - lin laden_V = irregV "laden" "lädt" "lud" "lüde" "geladen" ; - lin lassen_V = irregV "lassen" "läßt" "ließ" "ließe" "gelassen" ; - lin laufen_V = irregV "laufen" "läuft" "lief" "liefe" "gelaufen" ; - lin leiden_V = irregV "leiden" "leidt" "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 melken_V = irregV "melken" (variants {"melkt" ; "milkt"}) (variants {"melkte" ; "molk"}) "gemolken" "gemelkt" ; - lin messen_V = irregV "messen" "mißt" "maß" "mäße" "gemessen" ; - lin mißlingen_V = irregV "mißlingen" "mißlingt" "mißlang" "mißlungen" "mißlänge" ; - lin mögen_V = M.mkV - "mögen" "mag" "magst" "mag" "mögt" "mög" - "mochte" "mochtest" "mochten" "mochtet" - "möchte" "gemocht" [] - M.VHaben ** {lock_V = <>} ; - lin müssen_V = M.mkV - "müssen" "muß" "mußt" "muß" "müßt" "müß" - "mußte" "mußtest" "mußten" "mußtet" - "müßte" "gemußt" [] - M.VHaben ** {lock_V = <>} ; - lin nehmen_V = mk6V "nehmen" "nimmt" "nimm" "nahm" "nähme" "genommen" ; - lin nennen_V = irregV "nennen" "nennt" "nannte" "nennte" "genannt" ; - lin pfeifen_V = irregV "pfeifen" "pfeift" "pfiff" "pfiffe" "gepfiffen" ; - lin preisen_V = irregV "preisen" "preist" "pries" "priese" "gepriesen" ; - lin quellen_V = irregV "quellen" "quillt" "quoll" "quölle" "gequollen" ; - lin raten_V = irregV "raten" "rät" "riet" "riete" "geraten" ; - lin reiben_V = irregV "reiben" "reibt" "rieb" "riebe" "gerieben" ; - lin reißen_V = irregV "reißen" "reißt" "riß" "riße" "gerissen" ; - lin reiten_V = irregV "reiten" "reitet" "ritt" "ritte" "geritten" ; - lin rennen_V = irregV "rennen" "rennt" "rannte" "rennte" "gerannt" ; - lin riechen_V = irregV "riechen" "riecht" "roch" "röche" "gerochen" ; - lin ringen_V = irregV "ringen" "ringt" "rang" "ränge" "gerungen" ; - lin rinnen_V = irregV "rinnen" "rinnt" "rann" "ränne" "geronnen" ; - lin rufen_V = irregV "rufen" "ruft" "rief" "riefe" "gerufen" ; - lin salzen_V = irregV "salzen" "salzt" "salzte" "salzte" "gesalzen" ; - lin saufen_V = irregV "saufen" "säuft" "soff" "söffe" "gesoffen" ; - lin saugen_V = irregV "saugen" "saugt" (variants {"saugte" ; "sog"}) (variants {"saugte" ; "soge"}) (variants {"gesaugt" ; "gesogen"}) ; - lin schaffen_V = irregV "schaffen" "schafft" "schuf" "schüfe" "geschaffen" ; - lin scheiden_V = irregV "scheiden" "scheidt" "schied" "schiede" "geschieden" ; - lin scheinen_V = irregV "scheinen" "scheint" "schien" "schiene" "geschienen" ; - lin scheißen_V = irregV "scheißen" "scheißt" "schiß" "schiße" "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" "schoß" "schösse" "geschossen" ; - lin schinden_V = irregV "schinden" "schindt" "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" ; - lin schleifen_V = irregV "schleifen" "schleift" "schliff" "schliffe" "geschliffen" ; - lin schleißen_V = irregV "schleißen" "schleißt" (variants {"schliß" ; "schleißte"}) (variants {"schliß" ; "schleißte"}) (variants {"geschlissen" ; "geschleißt"}) ; - lin schließen_V = irregV "schließen" "schließt" "schloß" "schlösse" "geschlossen" ; - lin schlingen_V = irregV "schlingen" "schlingt" "schlang" "schlünge" "geschlungen" ; - lin schmeißen_V = irregV "schmeißen" "schmeißt" "schmiß" "schmiße" "geschmissen" ; - lin schmelzen_V = irregV "schmelzen" "schmilzt" "schmolz" "schmölze" "geschmolzen" ; - lin schneiden_V = irregV "schneiden" "schneidt" "schnitt" "schnitte" "geschnitten" ; - lin schreiben_V = irregV "schreiben" "schreibt" "schrieb" "schriebe" "geschrieben" ; - lin schreien_V = irregV "schreien" "schreit" "schrie" "schrie" "geschrien" ; - lin schreiten_V = irregV "schreiten" "schreitet" "schritt" "schritte" "geschritten" ; - lin schweigen_V = irregV "schweigen" "schweigt" "schwieg" "schwiege" "geschwiegen" ; - lin schwellen_V = irregV "schwellen" "schwillt" "schwoll" "schwölle" "geschwollen" ; - lin schwimmen_V = irregV "schwimmen" "schwimmt" "schwamm" (variants {"schwömme" ; "schwämme"}) "geschwommen" ; - lin schwinden_V = irregV "schwinden" "schwindt" "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" ; - lin sein_V = irregV "sein" "ist" "war" "wäre" "gewesen" ; - lin senden_V = irregV "senden" "sendt" (variants {"sandte" ; "sendete"}) (variants {"sandte" ; "sendete"}) (variants {"gesandt" ; "gesendet"}) ; - lin sieden_V = irregV "sieden" "siedt" (variants {"siedete" ; "sott"}) (variants {"siedete" ; "sotte"}) (variants {"gesotten" ; "gesiedet"}) ; - lin singen_V = irregV "singen" "singt" "sang" "sänge" "gesungen" ; - lin sinken_V = irregV "sinken" "sinkt" "sank" "sänke" "gesunken" ; - lin sinnen_V = irregV "sinnen" "sinnt" "sann" "sänne" "gesonnen" ; - lin sitzen_V = irregV "sitzen" "sitzt" "saß" "säße" "gesessen" ; - lin sollen_V = M.mkV - "sollen" "soll" "sollst" "soll" "sollt" "soll" - "sollte" "solltest" "sollten" "solltet" - "sollte" "gesollt" [] - M.VHaben ** {lock_V = <>} ; - - lin speien_V = irregV "speien" "speit" "spie" "spie" "gespien" ; - lin spinnen_V = irregV "spinnen" "spinnt" "spann" (variants {"spönne" ; "spänne"}) "gesponnen" ; - lin spleißen_V = irregV "spleißen" "spleißt" "spliß" "spliße" "gesplissen" ; - lin sprechen_V = irregV "sprechen" "spricht" "sprach" "spräche" "gesprochen" ; - lin sprießen_V = irregV "sprießen" "sprießt" "sproß" "sprösse" "gesprossen" ; - lin springen_V = irregV "springen" "springt" "sprang" "spränge" "gesprungen" ; - lin stechen_V = irregV "stechen" "sticht" "stach" "stäche" "gestochen" ; - lin stehen_V = irregV "stehen" "steht" "stand" (variants {"stünde" ; "stände"}) "gestanden" ; - lin stehlen_V = irregV "stehlen" "stiehlt" "stahl" "stähle" "gestohlen" ; - lin steigen_V = irregV "steigen" "steigt" "stieg" "stiege" "gestiegen" ; - lin sterben_V = irregV "sterben" "stirbt" "starb" "stürbe" "gestorben" ; - lin stieben_V = irregV "stieben" "stiebt" "stob" "stöbe" "gestoben" ; - lin stinken_V = irregV "stinken" "stinkt" "stank" "stänke" "gestunken" ; - lin stoßen_V = irregV "stoßen" "stößt" "stieß" "stieße" "gestoßen" ; - lin streichen_V = irregV "streichen" "streicht" "strich" "striche" "gestrichen" ; - lin streiten_V = irregV "streiten" "streitet" "stritt" "stritte" "gestritten" ; - lin tragen_V = irregV "tragen" "trägt" "trug" "trüge" "getragen" ; - lin treffen_V = irregV "treffen" "trifft" "traf" "träfe" "getroffen" ; - lin treiben_V = irregV "treiben" "treibt" "trieb" "triebe" "getrieben" ; - lin treten_V = irregV "treten" "tritt" "trat" "träte" "getreten" ; - lin trinken_V = irregV "trinken" "trinkt" "trank" "tränke" "getrunken" ; - lin trügen_V = irregV "trügen" "trügt" "trog" "tröge" "getrogen" ; - lin tun_V = irregV "tun" "tut" "tat" "täte" "getan" ; - lin verderben_V = irregV "verderben" "verdirbt" "verdarb" "verdarbe" "verdorben" ; - lin verlieren_V = irregV "verlieren" "verliert" "verlor" "verlöre" "verloren" ; - lin wachsen_V = irregV "wachsen" "wächst" "wuchs" "wüchse" "gewachsen" ; - lin wägen_V = irregV "wägen" "wägt" "wog" "woge" "gewogen" ; - lin waschen_V = irregV "waschen" "wäscht" "wusch" "wüsche" "gewaschen" ; - lin weben_V = irregV "weben" "webt" (variants {"wob" ; "webte"}) "wöbe" (variants {"gewoben" ; "gewebt"}) ; - lin weichen_V = irregV "weichen" "weicht" "wich" "wiche" "gewichen" ; - lin weisen_V = irregV "weisen" "weist" "wies" "wiese" "gewiesen" ; - lin wenden_V = irregV "wenden" "wendt" (variants {"wandte" ; "wendete"}) (variants {"wandte" ; "wendete"}) (variants {"gewandt" ; "gewendet"}) ; - lin werben_V = irregV "werben" "wirbt" "warb" "würbe" "geworben" ; - lin werden_V = M.mkV - "werden" "werde" "wirst" "wird" "werdet" "werd" - "wurde" "wurdest" "wurden" "wurdet" - "würde" "geworden" [] - M.VHaben ** {lock_V = <>} ; - 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 wissen_V = irregV "wissen" "weiß" "wußte" "wüßte" "gewußt" ; - lin wollen_V = M.mkV - "wollen" "will" "willst" "will" "wollt" "woll" - "wollte" "wolltest" "wollten" "wolltet" - "wollte" "gewollt" [] - M.VHaben ** {lock_V = <>} ; - - - lin wringen_V = irregV "wringen" "wringt" "wrang" "wränge" "gewrungen" ; - lin zeihen_V = irregV "zeihen" "zeiht" "zieh" "ziehe" "geziehen" ; - lin ziehen_V = irregV "ziehen" "zieht" "zog" "zöge" "gezogen" ; - lin zwingen_V = irregV "zwingen" "zwingt" "zwang" "zwänge" "gezwungen" ; - -} diff --git a/next-lib/src/german/IrregGerAbs.gf b/next-lib/src/german/IrregGerAbs.gf deleted file mode 100644 index 0d68f94ed..000000000 --- a/next-lib/src/german/IrregGerAbs.gf +++ /dev/null @@ -1,185 +0,0 @@ -abstract IrregGerAbs = Cat ** { - - fun backen_V : V ; - fun befehlen_V : V ; - fun beginnen_V : V ; - fun beißen_V : V ; - fun bergen_V : V ; - fun bersten_V : V ; - fun bewegen_V : V ; - fun biegen_V : V ; - fun bieten_V : V ; - fun binden_V : V ; - fun bitten_V : V ; - fun blasen_V : V ; - fun bleiben_V : V ; - fun braten_V : V ; - fun brechen_V : V ; - fun brennen_V : V ; - fun bringen_V : V ; - fun denken_V : V ; - fun dingen_V : V ; - fun dreschen_V : V ; - fun dringen_V : V ; - fun dürfen_V : V ; - fun empfehlen_V : V ; - fun erlöschen_V : V ; - fun erkennen_V : V ; - fun erschrecken_V : V ; - fun essen_V : V ; - fun fahren_V : V ; - fun fallen_V : V ; - fun fangen_V : V ; - fun fechten_V : V ; - fun finden_V : V ; - fun flechten_V : V ; - fun fliegen_V : V ; - fun fliehen_V : V ; - fun fließen_V : V ; - fun fressen_V : V ; - fun frieren_V : V ; - fun gären_V : V ; - fun gebären_V : V ; - fun geben_V : V ; - fun gedeihen_V : V ; - fun gehen_V : V ; - fun gelingen_V : V ; - fun gelten_V : V ; - fun genesen_V : V ; - fun genießen_V : V ; - fun geschehen_V : V ; - fun gewinnen_V : V ; - fun gießen_V : V ; - fun gleichen_V : V ; - fun gleiten_V : V ; - fun glimmen_V : V ; - fun graben_V : V ; - fun greifen_V : V ; - fun haben_V : V ; - fun halten_V : V ; - fun hängen_V : V ; - fun hauen_V : V ; - fun heben_V : V ; - fun heißen_V : V ; - fun helfen_V : V ; - fun kennen_V : V ; - fun klimmen_V : V ; - fun klingen_V : V ; - fun kneifen_V : V ; - fun kommen_V : V ; - fun können_V : V ; - fun kriechen_V : V ; - fun küren_V : V ; - fun laden_V : V ; - fun lassen_V : V ; - fun laufen_V : V ; - fun leiden_V : V ; - fun leihen_V : V ; - fun lesen_V : V ; - fun liegen_V : V ; - fun lügen_V : V ; - fun mahlen_V : V ; - fun meiden_V : V ; - fun melken_V : V ; - fun messen_V : V ; - fun mißlingen_V : V ; - fun mögen_V : V ; - fun müssen_V : V ; - fun nehmen_V : V ; - fun nennen_V : V ; - fun pfeifen_V : V ; - fun preisen_V : V ; - fun quellen_V : V ; - fun raten_V : V ; - fun reiben_V : V ; - fun reißen_V : V ; - fun reiten_V : V ; - fun rennen_V : V ; - fun riechen_V : V ; - fun ringen_V : V ; - fun rinnen_V : V ; - fun rufen_V : V ; - fun salzen_V : V ; - fun saufen_V : V ; - fun saugen_V : V ; - fun schaffen_V : V ; - fun scheiden_V : V ; - fun scheinen_V : V ; - fun scheißen_V : V ; - fun schelten_V : V ; - fun scheren_V : V ; - fun schieben_V : V ; - fun schießen_V : V ; - fun schinden_V : V ; - fun schlafen_V : V ; - fun schlagen_V : V ; - fun schleichen_V : V ; - fun schleifen_V : V ; - fun schleißen_V : V ; - fun schließen_V : V ; - fun schlingen_V : V ; - fun schmeißen_V : V ; - fun schmelzen_V : V ; - fun schneiden_V : V ; - fun schreiben_V : V ; - fun schreien_V : V ; - fun schreiten_V : V ; - fun schweigen_V : V ; - fun schwellen_V : V ; - fun schwimmen_V : V ; - fun schwinden_V : V ; - fun schwingen_V : V ; - fun schwören_V : V ; - fun sehen_V : V ; - fun sein_V : V ; - fun senden_V : V ; - fun sieden_V : V ; - fun singen_V : V ; - fun sinken_V : V ; - fun sinnen_V : V ; - fun sitzen_V : V ; - fun sollen_V : V ; - fun speien_V : V ; - fun spinnen_V : V ; - fun spleißen_V : V ; - fun sprechen_V : V ; - fun sprießen_V : V ; - fun springen_V : V ; - fun stechen_V : V ; - fun stehen_V : V ; - fun stehlen_V : V ; - fun steigen_V : V ; - fun sterben_V : V ; - fun stieben_V : V ; - fun stinken_V : V ; - fun stoßen_V : V ; - fun streichen_V : V ; - fun streiten_V : V ; - fun tragen_V : V ; - fun treffen_V : V ; - fun treiben_V : V ; - fun treten_V : V ; - fun trinken_V : V ; - fun trügen_V : V ; - fun tun_V : V ; - fun verderben_V : V ; - fun verlieren_V : V ; - fun wachsen_V : V ; - fun wägen_V : V ; - fun waschen_V : V ; - fun weben_V : V ; - fun weichen_V : V ; - fun weisen_V : V ; - fun wenden_V : V ; - fun werben_V : V ; - fun werden_V : V ; - fun werfen_V : V ; - fun wiegen_V : V ; - fun winden_V : V ; - fun wissen_V : V ; - fun wollen_V : V ; - fun wringen_V : V ; - fun zeihen_V : V ; - fun ziehen_V : V ; - fun zwingen_V : V ; -} diff --git a/next-lib/src/german/LangGer.gf b/next-lib/src/german/LangGer.gf deleted file mode 100644 index 260da090d..000000000 --- a/next-lib/src/german/LangGer.gf +++ /dev/null @@ -1,10 +0,0 @@ ---# -path=.:../abstract:../common - -concrete LangGer of Lang = - GrammarGer, - LexiconGer - ** { - -flags startcat = Phr ; unlexer = text ; lexer = text ; - -} ; diff --git a/next-lib/src/german/LexiconGer.gf b/next-lib/src/german/LexiconGer.gf deleted file mode 100644 index 61ab8dd32..000000000 --- a/next-lib/src/german/LexiconGer.gf +++ /dev/null @@ -1,366 +0,0 @@ ---# -path=.:../common:../abstract:../../prelude - --- work by Aarne Ranta, Andreas Priesnitz, and Henning Thielemann. - -concrete LexiconGer of Lexicon = CatGer ** - open Prelude, ParadigmsGer, (Mo = MorphoGer), IrregGer in { - -flags - optimize=all_subs ; - -lin - add_V3 = dirV3 (prefixV "hinzu" (regV "fügen")) zu_Prep ; - airplane_N = mkN "Flugzeug" ; - 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 ; ---- - bad_A = regA "schlecht" ; - bank_N = reg2N "Bank" "Banken" feminine ; - beautiful_A = regA "schön" ; - become_VA = mkVA IrregGer.werden_V ; - beer_N = reg2N "Bier" "Biere" neuter ; - beg_V2V = mkV2V (mk6V "bitten" "bittet" "bitte" "bat" "bäte" "gebeten") accPrep ; - big_A = mk3A "groß" "größer" "größte" ; - bike_N = reg2N "Fahrrad" "Fahrräder" neuter ; - bird_N = reg2N "Vogel" "Vögel" masculine ; - black_A = regA "schwarz" ; - blue_A = regA "blau"; - 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 ; ---- - boy_N = reg2N "Junge" "Jungen" masculine ; - bread_N = reg2N "Brot" "Brote" neuter ; - break_V2 = dirV2 - (irregV "zerschlagen" "zerschlägt" "zerschlug" "zerschlüge" "zerschlagen") ; - 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 - buy_V2 = dirV2 (regV "kaufen") ; - camera_N = reg2N "Kamera" "Kameras" feminine ; - cap_N = mkN "Mütze" ; - car_N = mkN "Wagen" ; - carpet_N = mkN "Teppich" ; - cat_N = mkN "Katze" ; - ceiling_N = reg2N "Dach" "Dächer" neuter ; - chair_N = reg2N "Stuhl" "Stühle" masculine ; - cheese_N = mkN "Käse" "Käse" masculine ; - child_N = reg2N "Kind" "Kinder" neuter ; - church_N = mkN "Kirche" ; - city_N = reg2N "Stadt" "Städte" feminine ; - clean_A = regA "rein" ; - clever_A = mk3A "klug" "klüger" "klügste" ; - close_V2 = dirV2 (irregV "schließen" "schließt" "schloß" "schlösse" "geschlossen") ; - coat_N = mkN "Jacke" ; - cold_A = regA "kalt" ; - 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 - cow_N = reg2N "Kuh" "Kühe" feminine ; - die_V = seinV (irregV "sterben" "stirbt" "starb" "stürbe" "gestorben") ; - distance_N3 = mkN3 (mkN "Entfernung") von_Prep zu_Prep ; - dirty_A = regA "schmutzig" ; - do_V2 = dirV2 (irregV "tun" "tut" "tat" "täte" "getan") ; - doctor_N = reg2N "Arzt" "Ärzte" masculine ; - dog_N = mkN "Hund" ; - door_N = reg2N "Tür" "Türen" feminine ; - drink_V2 = dirV2 (irregV "trinken" "trinkt" "trank" "tränke" "getrunken") ; - easy_A2V = mkA2V (regA "leicht") (mkPrep "für" accusative) ; - eat_V2 = dirV2 (irregV "essen" "ißt" "aß" "äße" "gegessen") ; - empty_A = regA "leer" ; ---- check infl - enemy_N = mkN "Feind" ; - factory_N = mkN "Fabrik" "Fabriken" feminine ; - father_N2 = mkN2 (reg2N "Vater" "Väter" masculine) von_Prep ; - fear_VS = mkVS (regV "fürchten") ; - find_V2 = dirV2 (irregV "finden" "findet" "fand" "fände" "gefunden") ; - fish_N = mkN "Fisch" ; - floor_N = reg2N "Fußboden" "Fußböden" masculine ; - forget_V2 = dirV2 (irregV "vergessen" "vergißt" "vergaß" "vergäße" "vergessen") ; - fridge_N = reg2N "Kühlschrank" "Kühlschränke" masculine ; - friend_N = mkN "Freund" ; - fruit_N = reg2N "Frucht" "Früchte" feminine ; - fun_AV = mkAV (regA "toll") ; - 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 - good_A = mk3A "gut" "besser" "beste" ; - go_V = seinV (irregV "gehen" "geht" "ging" "ginge" "gegangen") ; - green_A = regA "grün" ; - harbour_N = reg2N "Hafen" "Häfen" masculine ; - hate_V2 = dirV2 (regV "hassen") ; - hat_N = reg2N "Hut" "Hüte" masculine ; - hear_V2 = dirV2 (regV "hören") ; - hill_N = mkN "Hügel" ; - hope_VS = mkVS (regV "hoffen") ; - horse_N = reg2N "Pferd" "Pferde" neuter ; - hot_A = regA "heiß" ; - house_N = reg2N "Haus" "Häuser" neuter ; - important_A = regA "wichtig" ; - industry_N = mkN "Industrie" ; - iron_N = reg2N "Eisen" "Eisen" neuter ; - jump_V = seinV (irregV "springen" "springt" "sprang" "spränge" "gesprungen") ; - king_N = mkN "König" ; - know_V2 = dirV2 (irregV "kennen" "kennt" "kannte" "kännte" "gekannt") ; ---- infl - know_VS = mkVS (irregV "wissen" "weiß" "wußte" "wüßte" "gewußt") ; ---- infl - lake_N = reg2N "See" "Seen" masculine ; --- infl - lamp_N = mkN "Lampe"; - learn_V2 = dirV2 (regV "lernen") ; - leather_N = reg2N "Leder" "Leder" neuter ; - leave_V2 = dirV2 (irregV "verlassen" "verläßt" "verließ" "verließe" "verlassen") ; - like_V2 = dirV2 (irregV "mögen" "mag" "mochte" "möchte" "gemocht") ; - listen_V2 = prepV2 (prefixV "zu" (regV "hören")) datPrep ; ---- dat - live_V = regV "leben" ; - long_A = mk3A "lang" "länger" "längste" ; - lose_V2 = dirV2 (irregV "verlieren" "verliert" "verlor" "verlöre" "verloren") ; - love_N = mkN "Liebe" ; - 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 - moon_N = mkN "Mond" ; - mother_N2 = mkN2 (reg2N "Mutter" "Mütter" feminine) von_Prep ; - mountain_N = mkN "Berg" ; - music_N = reg2N "Musik" "Musiken" feminine ; - narrow_A = regA "schmal" ; - new_A = regA "neu" ; - newspaper_N = mkN "Zeitung" ; - now_Adv = mkAdv "jetzt" ; - number_N = reg2N "Zahl" "Zahlen" feminine ; - oil_N = reg2N "Öl" "Öle" neuter ; - old_A = mk3A "alt" "älter" "älteste" ; - open_V2 = dirV2 (regV "öffnen") ; - paint_V2A = mkV2A (regV "malen") accPrep ; - paper_N = reg2N "Papier" "Papiere" neuter ; - paris_PN = mkPN "Paris" "Paris" ; - peace_N = mk6N "Friede" "Frieden" "Frieden" "Friedens" "Frieden" "Frieden" masculine ; - pen_N = mkN "Bleistift" ; ---- - planet_N = reg2N "Planet" "Planeten" masculine ; - plastic_N = reg2N "Plastik" "Plastiken" feminine ; ---- - play_V2 = dirV2 (regV "spielen") ; - policeman_N = reg2N "Polizist" "Polizisten" masculine ; - priest_N = mkN "Priester" ; - probable_AS = mkAS (regA "wahrscheinlich") ; - put_V2 = dirV2 (regV "setzen") ; - queen_N = reg2N "Königin" "Königinnen" feminine ; - radio_N = reg2N "Radio" "Radios" neuter ; ---- - rain_V0 = mkV0 (regV "regnen") ; - read_V2 = dirV2 (irregV "lesen" "liest" "las" "läse" "gelesen") ; - red_A = regA "rot" ; - religion_N = mkN "Religion" ; - restaurant_N = reg2N "Restaurant" "Restaurants" neuter ; - river_N = reg2N "Fluß" "Flüsse" masculine ; - rock_N = mkN "Stein" ; - roof_N = reg2N "Dach" "Dächer" neuter ; - rubber_N = reg2N "Gummi" "Gummis" neuter ; - run_V = seinV (irregV "laufen" "läuft" "lief" "liefe" "gelaufen") ; - say_VS = mkVS (regV "sagen") ; - school_N = mkN "Schule"; - science_N = reg2N "Wissenschaft" "Wissenschaften" feminine ; - sea_N = reg2N "Meer" "Meere" neuter ; - seek_V2 = dirV2 (regV "suchen") ; - see_V2 = dirV2 (irregV "sehen" "sieht" "sah" "sähe" "gesehen") ; - sell_V3 = accdatV3 (no_geV (regV "verkaufen")) ; - send_V3 = accdatV3 (regV "schicken") ; - sheep_N = reg2N "Schaf" "Schafe" neuter ; - ship_N = reg2N "Schiff" "Schiffe" neuter ; - shirt_N = reg2N "Hemd" "Hemden" neuter ; ---- infl - 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 - sister_N = reg2N "Schwester" "Schwestern" feminine ; - sleep_V = irregV "schlafen" "schläft" "schlief" "schliefe" "geschlafen" ; - small_A = regA "klein" ; - snake_N = mkN "Schlange" ; - sock_N = reg2N "Strumpf" "Strümpfe" masculine ; - song_N = reg2N "Lied" "Lieder" neuter ; - speak_V2 = dirV2 (irregV "sprechen" "spricht" "sprach" "spräche" "gesprochen") ; - star_N = mkN "Sterne" ; - steel_N = mkN "Stahl" ; - stone_N = mkN "Stein" ; - stop_V = seinV (irregV "halten" "hält" "hielt" "hielte" "gehalten") ; - stove_N = mkN "Herd" ; - student_N = reg2N "Student" "Studenten" masculine ; - stupid_A = mk3A "dumm" "dümmer" "dümmste" ; ---- - sun_N = mkN "Sonne" ; - 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 ; - teacher_N = reg2N "Lehrer" "Lehrer" masculine ; - teach_V2 = dirV2 (no_geV (regV "unterrichten")) ; - television_N = reg2N "Fernsehen" "Fernsehen" neuter; - thick_A = regA "dick" ; - thin_A = regA "dünn" ; - train_N = reg2N "Zug" "Züge" masculine ; - travel_V = regV "reisen" ; - tree_N = reg2N "Baum" "Bäume" masculine ; - ---- trousers_N = mkN "trousers" ; ---- pl t ! - ugly_A = regA "häßlich" ; - understand_V2 = - dirV2 (irregV "verstehen" "versteht" "verstand" "verstände" "verstanden") ; - university_N = reg2N "Universität" "Universitäten" feminine ; - village_N = reg2N "Dorf" "Dörfer" neuter ; - wait_V2 = prepV2 (regV "warten") (mkPrep "auf" accusative) ; - walk_V = seinV (irregV "gehen" "geht" "ging" "ginge" "gegangen") ; - warm_A = mk3A "warm" "wärmer" "wärmste" ; - war_N = mkN "Krieg" ; - watch_V2 = prepV2 (regV "schauen") (mkPrep "an" accusative) ; - water_N = reg2N "Wasser" "Wasser" neuter ; - white_A = regA "weiß" ; - window_N = reg2N "Fenster" "Fenster" neuter ; - wine_N = mkN "Wein" ; - win_V2 = dirV2 (irregV "gewinnen" "gewinnt" "gewann" "gewänne" "gewonnen") ; - woman_N = reg2N "Frau" "Frauen" feminine ; - wonder_VQ = mkVQ (reflV (regV "wundern") accusative) ; - wood_N = reg2N "Holz" "Hölzer" neuter ; - write_V2 = dirV2 (irregV "schreiben" "schreibt" "schrieb" "schriebe" "geschrieben") ; - yellow_A = regA "gelb" ; - young_A = mk3A "jung" "jünger" "jüngste" ; - left_Ord = Mo.mkOrd (regA "link") ; - right_Ord = Mo.mkOrd (regA "recht") ; - far_Adv = mkAdv "weit" ; - correct_A = regA "richtig" ; - dry_A = regA "trocken" ; - dull_A = regA "stumpf" ; - full_A = regA "voll" ; - heavy_A = mkA "schwer" "schwere" "schwerer" "schwerste" ; - near_A = mk3A "nahe" "näher" "nächste" ; - rotten_A = regA "verdorben" ; - round_A = regA "rund" ; - sharp_A = mk3A "scharf" "schärfer" "schärfste" ; - smooth_A = regA "glatt" ; - straight_A = regA "gerade" ; - wet_A = regA "naß" ; - wide_A = regA "breit" ; - animal_N = reg2N "Tier" "Tiere" neuter ; - ashes_N = mkN "Asche" ; - 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 ; - bone_N = reg2N "Knochen" "Knochen" masculine ; - breast_N = reg2N "Brust" "Brüste" feminine ; - cloud_N = mkN "Wolke" ; - day_N = mkN "Tag" ; - dust_N = reg2N "Staub" "Stäube" masculine ; - ear_N = mkN "Ohr" "Ohren" neuter ; - earth_N = mkN "Erde" ; - egg_N = mkN "Ei" "Eier" neuter ; - eye_N = mkN "Auge" "Augen" neuter; - fat_N = mkN "Fett" "Fetter" neuter ; - feather_N = mkN "Feder" "Federn" feminine ; - fingernail_N = reg2N "Fingernagel" "Fingernägel" masculine ; - fire_N = mkN "Feuer" "Feuer" neuter ; - flower_N = mkN "Blume" ; - fog_N = mkN "Nebel" "Nebel" masculine ; - 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" ; - hair_N = mkN "Haar" "Haare" neuter ; - hand_N = mkN "Hand" "Hände" feminine ; - head_N = mkN "Kopf" "Köpfe" masculine ; - heart_N = mkN "Herz" "Herzen" neuter ; - horn_N = mkN "Horn" "Hörner" neuter ; - husband_N = mkN "Ehemann" "Ehemänner" masculine ; - ice_N = mkN "Eis" "Eise" neuter ; - knee_N = mkN "Knie" "Knien" neuter ; - leaf_N = reg2N "Blatt" "Blätter" neuter ; - leg_N = mkN "Bein" "Beine" neuter ; - liver_N = mkN "Leber" "Lebern" feminine ; - louse_N = reg2N "Laus" "Läuse" feminine ; - mouth_N = mkN "Mund" "Münder" masculine ; - name_N = mkN "Name" "Namen" "Namen" "Namens" "Namen" "Namen" masculine ; - neck_N = mkN "Nacken" "Nacken" masculine ; - night_N = reg2N "Nacht" "Nächte" feminine ; - nose_N = mkN "Nase" ; - person_N = mkN "Person" "Personen" feminine ; - rain_N = mkN "Regen" ; - road_N = mkN "Straße" ; - root_N = mkN "Wurzel" "Wurzeln" feminine ; - rope_N = mkN "Seil" "Seile" neuter ; - salt_N = mkN "Salz" "Salze" neuter ; - sand_N = mkN "Sand" ; - seed_N = mkN "Same" ; - skin_N = mkN "Haut" "Häute" feminine ; - sky_N = mkN "Himmel" ; ---- pl - smoke_N = mkN "Rauch" ; - snow_N = mkN "Schnee" "Schneen" masculine ; ---- pl - stick_N = mkN "Stock" "Stöcke" masculine ; - tail_N = mkN "Schwanz" "Schwänze" masculine ; - tongue_N = mkN "Zunge" ; - tooth_N = mkN "Zahn" "Zähne" masculine ; - wife_N = mkN "Ehefrau" "Ehefrauen" feminine ; - wind_N = mkN "Wind" ; - wing_N = reg2N "Flügel" "Flügel" masculine ; - worm_N = mkN "Wurm" "Würmer" masculine ; - year_N = mkN "Jahr" "Jahre" neuter ; - blow_V = regV "blasen" ; - breathe_V = regV "atmen" ; - burn_V = regV "brennen" ; - dig_V = regV "graben" ; - fall_V = regV "fallen" ; - float_V = regV "treiben" ; - flow_V = regV "fließen" ; - fly_V = regV "fliegen" ; - freeze_V = regV "frieren" ; - give_V3 = accdatV3 (irregV "geben" "gibt" "gab" "gäbe" "gegeben") ; - laugh_V = regV "lachen" ; - lie_V = regV "lügen" ; - play_V = regV "spielen" ; - sew_V = regV "nähen" ; - sing_V = regV "singen" ; - sit_V = irregV "sitzen" "sitzt" "saß" "säße" "gesessen" ; - smell_V = regV "riechen" ; - spit_V = regV "spucken" ; - stand_V = regV "stehen" ; - swell_V = prefixV "an" (regV "schwellen") ; - swim_V = regV "schwimmen" ; - think_V = regV "denken" ; - turn_V = regV "drehen" ; - vomit_V = regV "kotzen" ; - - bite_V2 = dirV2 (irregV "beißen" "beißt" "biss" "bisse" "gebissen") ; - count_V2 = dirV2 (regV "zählen") ; - cut_V2 = dirV2 (irregV "schneiden" "schneidet" "schnitt" "schnitte" "geschnitten") ; - fear_V2 = dirV2 (regV "fürchten") ; - fight_V2 = dirV2 (regV "bekämpfen") ; - hit_V2 = dirV2 (irregV "schlagen" "schlägt" "schlug" "schlüge" "geschlagen") ; - hold_V2 = dirV2 (irregV "halten" "hält" "hielt" "hielte" "gehalten") ; - hunt_V2 = dirV2 (regV "jagen") ; - kill_V2 = dirV2 (regV "töten") ; - pull_V2 = dirV2 (irregV "ziehen" "zieht" "zog" "zöge" "gezogen") ; - push_V2 = dirV2 (irregV "schieben" "schiebt" "schub" "schübe" "geschoben") ; - rub_V2 = dirV2 (irregV "reiben" "reibt" "rieb" "riebe" "gerieben") ; - scratch_V2 = dirV2 (regV "kratzen") ; - split_V2 = dirV2 (prefixV "auf" (regV "teilen")) ; - squeeze_V2 = dirV2 (regV "pressen") ; - stab_V2 = dirV2 (irregV "stechen" "sticht" "stach" "stäche" "gestochen") ; - suck_V2 = dirV2 (regV "saugen") ; - throw_V2 = dirV2 (irregV "werfen" "wirft" "warf" "würfe" "geworfen") ; - tie_V2 = dirV2 (irregV "binden" "bindet" "band" "bände" "gebunden") ; - wash_V2 = dirV2 (irregV "waschen" "wäscht" "wusch" "wüsche" "gewaschen") ; - wipe_V2 = dirV2 (regV "wischen") ; - - grammar_N = reg2N "Grammatik" "Grammatiken" feminine ; - language_N = mkN "Sprache" ; - rule_N = reg2N "Regel" "Regeln" feminine ; - - john_PN = regPN "Johann" ; - question_N = mkN "Frage" ; - ready_A = regA "fertig" ; - reason_N = reg2N "Grund" "Gründe" masculine ; - today_Adv = mkAdv "heute" ; - uncertain_A = regA "unsicher" ; - - -} ; diff --git a/next-lib/src/german/MakeStructuralGer.gf b/next-lib/src/german/MakeStructuralGer.gf deleted file mode 100644 index 1a26e59cd..000000000 --- a/next-lib/src/german/MakeStructuralGer.gf +++ /dev/null @@ -1,13 +0,0 @@ ---# -path=.:../common:../abstract - -resource MakeStructuralGer = open CatGer, ParadigmsGer, MorphoGer, Prelude in { - -oper - mkConj : Str -> Str -> Number -> Conj = \x,y,n -> - {s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ; - mkSubj : Str -> Subj = \x -> - {s = x ; lock_Subj = <>} ; - mkIQuant : Str -> IQuant = \s -> - {s = \\_,_,_ => s ; lock_IQuant = <>} ; - -} diff --git a/next-lib/src/german/MorphoGer.gf b/next-lib/src/german/MorphoGer.gf deleted file mode 100644 index c4c28fa1e..000000000 --- a/next-lib/src/german/MorphoGer.gf +++ /dev/null @@ -1,96 +0,0 @@ ---# -path=.:../common:../../prelude --- -----1 A Simple German Resource Morphology ----- ----- Aarne Ranta & Harald Hammarström 2002 -- 2006 ----- ----- This resource morphology contains definitions needed in the resource ----- syntax. To build a lexicon, it is better to use $ParadigmsGer$, which ----- gives a higher-level access to this module. --- -resource MorphoGer = ResGer ** open Prelude, (Predef=Predef) in { - - flags optimize=all ; - -oper - --- For $StructuralGer$. - - mkPrep : Str -> Case -> Preposition = \s,c -> - {s = s ; c = c} ; - - nameNounPhrase : {s : Case => Str} -> {s : Case => Str ; a : Agr} = \name -> - name ** {a = agrP3 Sg} ; - - detLikeAdj : Number -> Str -> - {s,sp : Gender => Case => Str ; n : Number ; a : Adjf} = \n,dies -> - {s,sp = appAdj (regA dies) ! n ; n = n ; a = Weak} ; - - mkOrd : {s : Degree => AForm => Str} -> {s : AForm => Str} = \a -> - {s = a.s ! Posit} ; - --- For $ParadigmsGer$. - - genitS : Str -> Str = \hund -> case hund of { - _ + ("el" | "en" | "er") => hund + "s" ; - _ + ("s" | "ß" | "sch" | "st" | "x" | "z") => hund + "es" ; - _ => hund + variants {"s" ; "es"} - } ; - pluralN : Str -> Str = \hund -> case hund of { - _ + ("el" | "er" | "e") => hund + "n" ; - _ + "en" => hund ; - _ => hund + "en" - } ; - dativE : Str -> Str = \hund -> case hund of { - _ + ("el" | "en" | "er" | "e") => hund ; - _ => variants {hund ; hund + "e"} - } ; - --- Duden, p. 119 - - verbT : Str -> Str = \v -> case v of { - _ + ("t" | "d") => v + "et" ; -- gründen, reden, betten - _ + ("ch" | "k" | "p" | "t" | "g" | "b" | "d" | "f" | "s") + - ("m" | "n") => v + "et" ; -- atmen, widmen, öffnen, rechnen - _ => v + "t" -- lernen, lärmen, qualmen etc - } ; - - verbST : Str -> Str = \v -> case v of { - _ + ("s" | "ss" | "ß" | "sch" | "x" | "z") => v + "t" ; - _ => v + "st" - } ; - - stemVerb : Str -> Str = \v -> case v of { - _ + ("rn" | "ln") => init v ; - _ => Predef.tk 2 v - } ; - --- For $Numeral$. - - LinDigit = {s : DForm => CardOrd => Str} ; - - cardOrd : Str -> Str -> CardOrd => Str = \drei,dritte -> - table { - NCard _ _ => drei ; - NOrd a => (regA (init dritte)).s ! Posit ! a - } ; - - cardReg : Str -> CardOrd => Str = \zehn -> - cardOrd zehn (zehn + "te") ; - - mkDigit : (x1,_,_,x4 : Str) -> LinDigit = - \drei,dreizehn,dreissig,dritte -> - {s = table { - DUnit => cardOrd drei dritte ; - DTeen => cardReg dreizehn ; - DTen => cardOrd dreissig (dreissig + "ste") - } - } ; - - regDigit : Str -> LinDigit = \vier -> - mkDigit vier (vier + "zehn") (vier + "zig") (vier + "te") ; - - invNum : CardOrd = NCard Masc Nom ; - -} ; - diff --git a/next-lib/src/german/NounGer.gf b/next-lib/src/german/NounGer.gf deleted file mode 100644 index a25167d72..000000000 --- a/next-lib/src/german/NounGer.gf +++ /dev/null @@ -1,181 +0,0 @@ -concrete NounGer of Noun = CatGer ** open ResGer, Prelude in { - - flags optimize=all_subs ; - - lin - DetCN det cn = { - s = \\c => det.s ! cn.g ! c ++ cn.s ! adjfCase det.a c ! det.n ! c ; - a = agrP3 det.n ; - isPron = False - } ; - - DetNP det = { - s = \\c => det.sp ! Neutr ! c ; ---- genders - a = agrP3 det.n ; - isPron = False - } ; - - UsePN pn = pn ** {a = agrP3 Sg} ; - - UsePron pron = { - s = \\c => pron.s ! NPCase c ; - a = pron.a - } ; - - PredetNP pred np = { - s = \\c0 => - let c = case pred.c of {NoCase => c0 ; PredCase k => k} in - pred.s ! np.a.n ! Masc ! c0 ++ np.s ! c ; ---- g - a = np.a - } ; - - PPartNP np v2 = { - s = \\c => np.s ! c ++ v2.s ! VPastPart APred ; --- invar part - a = np.a - } ; - - AdvNP np adv = { - s = \\c => np.s ! c ++ adv.s ; - a = np.a - } ; - - DetQuantOrd quant num ord = - let - n = num.n ; - a = quant.a - in { - s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++ - num.s!g!c ++ ord.s ! agrAdj g (adjfCase a c) n c ; - sp = \\g,c => quant.sp ! n ! g ! c ++ - num.s!g!c ++ ord.s ! agrAdj g (adjfCase a c) n c ; - n = n ; - a = a - } ; - - DetQuant quant num = - let - n = num.n ; - a = quant.a - in { - s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++ num.s!g!c ; - sp = \\g,c => quant.sp ! n ! g ! c ++ num.s!g!c ; - n = n ; - a = a - } ; - - - PossPron p = { - s = \\_,n,g,c => p.s ! NPPoss (gennum g n) c ; - sp = \\n,g,c => p.s ! NPPoss (gennum g n) c ; - a = Strong --- need separately weak for Pl ? - } ; - - NumCard n = n ** {isNum = True} ; - - NumPl = {s = \\g,c => []; n = Pl ; isNum = False} ; - NumSg = {s = \\g,c => []; n = Sg ; isNum = False} ; - - NumDigits numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ; - OrdDigits numeral = {s = \\af => numeral.s ! NOrd af} ; - - NumNumeral numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ; - OrdNumeral numeral = {s = \\af => numeral.s ! NOrd af} ; - - AdNum adn num = {s = \\g,c => adn.s ++ num.s!g!c; n = num.n } ; - - OrdSuperl a = {s = a.s ! Superl} ; - - DefArt = { - s = \\_,n,g,c => artDef ! gennum g n ! c ; - sp = \\n,g,c => artDef ! gennum g n ! c ; ---- deren, denem... - a = Weak - } ; - - IndefArt = { - s = table { - True => \\_,_,_ => [] ; - False => table { - Sg => \\g,c => "ein" + pronEnding ! GSg g ! c ; - Pl => \\_,_ => [] - } - } ; - sp = table { - Sg => \\g,c => "ein" + pronEnding ! GSg g ! c ; - Pl => \\_ => caselist "einige" "einige" "einigen" "einiger" - } ; - a = Strong - } ; - - MassNP cn = { - s = \\c => cn.s ! adjfCase Strong c ! Sg ! c ; - a = agrP3 Sg ; - isPron = False - } ; - - UseN, UseN2 = \n -> { - s = \\_ => n.s ; - g = n.g - } ; - - ComplN2 f x = { - s = \\_,n,c => f.s ! n ! c ++ appPrep f.c2 x.s ; - g = f.g - } ; - - ComplN3 f x = { - s = \\n,c => f.s ! n ! c ++ appPrep f.c2 x.s ; - g = f.g ; - c2 = f.c3 - } ; - - Use2N3 f = { - s = f.s ; - g = f.g ; - c2 = f.c2 - } ; - - Use3N3 f = { - s = f.s ; - g = f.g ; - c2 = f.c3 - } ; - - AdjCN ap cn = - let - g = cn.g - in { - s = \\a,n,c => - preOrPost ap.isPre - (ap.s ! agrAdj g a n c) - (cn.s ! a ! n ! c) ; - g = g - } ; - - RelCN cn rs = { - s = \\a,n,c => cn.s ! a ! n ! c ++ rs.s ! gennum cn.g n ; - g = cn.g - } ; - - RelNP np rs = { - s = \\c => np.s ! c ++ "," ++ rs.s ! gennum np.a.g np.a.n ; - a = np.a ; - isPron = False - } ; - - SentCN cn s = { - s = \\a,n,c => cn.s ! a ! n ! c ++ s.s ; - g = cn.g - } ; - - AdvCN cn s = { - s = \\a,n,c => cn.s ! a ! n ! c ++ s.s ; - g = cn.g - } ; - - ApposCN cn np = let g = cn.g in { - s = \\a,n,c => cn.s ! a ! n ! c ++ np.s ! c ; - g = g ; - isMod = cn.isMod - } ; - -} diff --git a/next-lib/src/german/NumeralGer.gf b/next-lib/src/german/NumeralGer.gf deleted file mode 100644 index f12280131..000000000 --- a/next-lib/src/german/NumeralGer.gf +++ /dev/null @@ -1,86 +0,0 @@ -concrete NumeralGer of Numeral = CatGer ** open MorphoGer in { - -flags optimize = all_subs ; - -lincat - Digit = {s : DForm => CardOrd => Str} ; - Sub10 = {s : DForm => CardOrd => Str ; n : Number} ; - Sub100, Sub1000, Sub1000000 = - {s : CardOrd => Str ; n : Number} ; - -lin - num x = x ; - - n2 = mkDigit "zwei" "zwölf" "zwanzig" "zweite" ; - n3 = mkDigit "drei" "dreizehn" "dreissig" "dritte" ; - n4 = regDigit "vier" ; - n5 = regDigit "fünf" ; - n6 = regDigit "sechs" ; - n7 = mkDigit "sieben" "siebzehn" "siebzig" "siebte" ; - n8 = mkDigit "acht" "achzehn" "achzig" "achte" ; - n9 = regDigit "neun" ; - - pot01 = { - s = \\f => table { - NCard g c => "ein" + pronEnding ! GSg g ! c ; - NOrd af => (regA "erst").s ! Posit ! af - } ; - n = Sg - } ; - pot0 d = {s = \\f,g => d.s ! f ! g ; n = Pl} ; - pot110 = {s = cardReg "zehn"; n = Pl} ; - pot111 = {s = cardReg "elf"; n = Pl} ; - pot1to19 d = {s = d.s ! DTeen; n = Pl} ; - pot0as1 n = {s = n.s ! DUnit; n = n.n } ; - pot1 d = {s = d.s ! DTen; n = Pl} ; - pot1plus d e = {s = \\g => e.s ! DUnit ! invNum ++ "und" ++ d.s ! DTen ! g; n = Pl} ; - pot1as2 n = n ; - pot2 d = - {s = \\g => d.s ! DUnit ! invNum ++ cardOrd "hundert" "hunderte" ! g ; n = Pl} ; - pot2plus d e = - {s = \\g => d.s ! DUnit ! invNum ++ "hundert" ++ e.s ! g ; n = Pl} ; - pot2as3 n = n ; - pot3 n = - {s = \\g => n.s ! invNum ++ cardOrd "tausend" "tausendte" ! g ; n = Pl} ; ---- - pot3plus n m = - {s = \\g => n.s ! invNum ++ "tausend" ++ m.s ! g ; n = Pl} ; - - - lincat - Dig = TDigit ; - - lin - IDig d = d ; - - IIDig d i = { - s = \\o => d.s ! invNum ++ i.s ! o ; - n = Pl - } ; - - ---- TODO: case endings of ordinals - D_0 = mkDig "0" ; - D_1 = mk3Dig "1" "1e" Sg ; - D_2 = mk2Dig "2" "2e" ; - D_3 = mkDig "3" ; - D_4 = mkDig "4" ; - D_5 = mkDig "5" ; - D_6 = mkDig "6" ; - D_7 = mkDig "7" ; - D_8 = mkDig "8" ; - D_9 = mkDig "9" ; - - oper - mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ; - mkDig : Str -> TDigit = \c -> mk2Dig c (c + "e") ; - - mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> { - s = table {NCard _ _ => c ; NOrd _ => o} ; - n = n - } ; - - TDigit = { - n : Number ; - s : CardOrd => Str - } ; - -} diff --git a/next-lib/src/german/ParadigmsGer.gf b/next-lib/src/german/ParadigmsGer.gf deleted file mode 100644 index 6fe99c6a5..000000000 --- a/next-lib/src/german/ParadigmsGer.gf +++ /dev/null @@ -1,518 +0,0 @@ ---# -path=.:../common:../abstract:../../prelude - ---1 German Lexical Paradigms --- --- Aarne Ranta, Harald Hammarström and Björn Bringert2003--2007 --- --- This is an API for the user of the resource grammar --- for adding lexical items. It gives functions for forming --- expressions of open categories: nouns, adjectives, verbs. --- --- Closed categories (determiners, pronouns, conjunctions) are --- accessed through the resource syntax API, $Structural.gf$. --- --- The structure of functions for each word class $C$ is the following: --- first we give a handful of patterns that aim to cover all --- cases, from the most regular (with just one argument) to the worst. --- The name of this function is $mkC$. --- --- There is also a module [``IrregGer`` ../../german/IrregGer.gf] --- which covers irregular verbs. - - -resource ParadigmsGer = open - (Predef=Predef), - Prelude, - MorphoGer, - CatGer - in { - ---2 Parameters - --- To abstract over gender names, we define the following identifiers. - -oper - Gender : Type ; - - masculine : Gender ; - feminine : Gender ; - neuter : Gender ; - --- To abstract over case names, we define the following. - - Case : Type ; - - nominative : Case ; - accusative : Case ; - dative : Case ; - genitive : Case ; - --- To abstract over number names, we define the following. - - Number : Type ; - - singular : Number ; - plural : Number ; - - ---2 Nouns - - -mkN : overload { --- The regular heuristics recognizes some suffixes, from which it --- guesses the gender and the declension: "e, ung, ion" give the --- feminine with plural ending "-n, -en", and the rest are masculines --- with the plural "-e" (without Umlaut). - - mkN : (Stufe : Str) -> N ; - --- The 'almost regular' case is much like the information given in an ordinary --- dictionary. It takes the singular and plural nominative and the --- gender, and infers the other forms from these. - - mkN : (Bild,Bilder : Str) -> Gender -> N ; - --- Worst case: give all four singular forms, two plural forms (others + dative), --- and the gender. - - mkN : (x1,_,_,_,_,x6 : Str) -> Gender -> N - -- mann, mann, manne, mannes, männer, männern - }; - - --- Relational nouns need a preposition. The most common is "von" with --- the dative, and there is a special case for regular nouns. - - mkN2 : overload { - mkN2 : Str -> N2 ; - mkN2 : N -> N2 ; - mkN2 : N -> Prep -> N2 - } ; - --- Use the function $mkPrep$ or see the section on prepositions below to --- form other prepositions. --- Some prepositions are moreover constructed in [StructuralGer StructuralGer.html]. --- --- Three-place relational nouns ("die Verbindung von x nach y") need two prepositions. - - mkN3 : N -> Prep -> Prep -> N3 ; - - ---3 Proper names and noun phrases --- --- Proper names, with an "s" genitive and other cases like the --- nominative, are formed from a string. Final "s" ("Johannes-Johannes") is --- taken into account. - - mkPN : overload { - mkPN : Str -> PN ; - --- If only the genitive differs, two strings are needed. - - mkPN : (nom,gen : Str) -> PN ; - --- In the worst case, all four forms are needed. - - mkPN : (nom,acc,dat,gen : Str) -> PN - } ; - - - ---2 Adjectives - - mkA : overload { - --- The regular adjective formation works for most cases, and includes --- variations such as "teuer - teurer", "böse - böser". - - mkA : Str -> A ; - --- Irregular adjectives need three forms - one for each degree. - - mkA : (gut,besser,beste : Str) -> A ; - --- Sometimes an extra form is needed for positive forms. - - mkA : (gut,gute,besser,beste : Str) -> A - - } ; - --- Invariable adjective are a special case. - - invarA : Str -> A ; -- prima - --- Two-place adjectives are formed by adding a preposition to an adjective. - - mkA2 : A -> Prep -> A2 ; - ---2 Adverbs - --- Adverbs are formed from strings. - - mkAdv : Str -> Adv ; - - ---2 Prepositions - --- A preposition is formed from a string and a case. - - mkPrep : Str -> Case -> Prep ; - --- Often just a case with the empty string is enough. - - accPrep : Prep ; - datPrep : Prep ; - genPrep : Prep ; - --- A couple of common prepositions (always with the dative). - - von_Prep : Prep ; - zu_Prep : Prep ; - ---2 Verbs - -mkV : overload { - --- Regular verbs ("weak verbs") need just the infinitive form. - - mkV : (führen : Str) -> V ; - --- Irregular verbs use Ablaut and, in the worst cases, also Umlaut. - - mkV : (sehen,sieht,sah,sähe,gesehen : Str) -> V ; - --- The worst-case constructor needs six forms: --- - Infinitive, --- - 3p sg pres. indicative, --- - 2p sg imperative, --- - 1/3p sg imperfect indicative, --- - 1/3p sg imperfect subjunctive (because this uncommon form can have umlaut) --- - the perfect participle --- --- - - mkV : (geben, gibt, gib, gab, gäbe, gegeben : Str) -> V ; - --- To add a movable suffix e.g. "auf(fassen)". - - mkV : Str -> V -> V -}; - - --- To remove the past participle prefix "ge", e.g. for the verbs --- prefixed by "be-, ver-". - - no_geV : V -> V ; - --- To change the auxiliary from "haben" (default) to "sein" and --- vice-versa. - - seinV : V -> V ; - habenV : V -> V ; - --- Reflexive verbs can take reflexive pronouns of different cases. - - reflV : V -> Case -> V ; - - ---3 Two-place verbs - -mkV2 : overload { - --- Two-place regular verbs with direct object (accusative, transitive verbs). - - mkV2 : Str -> V2 ; - --- Two-place verbs with direct object. - - mkV2 : V -> V2 ; - --- Two-place verbs with a preposition. - - mkV2 : V -> Prep -> V2 ; - --- Two-place verbs with object in the given case. - - mkV2 : V -> Case -> V2 -}; - - ---3 Three-place verbs --- --- Three-place (ditransitive) verbs need two prepositions, of which --- the first one or both can be absent. - - mkV3 : V -> Prep -> Prep -> V3 ; -- sprechen, mit, über - dirV3 : V -> Prep -> V3 ; -- senden,(accusative),nach - accdatV3 : V -> V3 ; -- give,accusative,dative - ---3 Other complement patterns --- --- Verbs and adjectives can take complements such as sentences, --- questions, verb phrases, and adjectives. - - mkV0 : V -> V0 ; - mkVS : V -> VS ; - mkV2S : V -> Prep -> V2S ; - mkVV : V -> VV ; - mkV2V : V -> Prep -> V2V ; - mkVA : V -> VA ; - mkV2A : V -> Prep -> V2A ; - mkVQ : V -> VQ ; - mkV2Q : V -> Prep -> V2Q ; - - mkAS : A -> AS ; - mkA2S : A -> Prep -> A2S ; - mkAV : A -> AV ; - mkA2V : A -> Prep -> A2V ; - --- Notice: categories $AS, A2S, AV, A2V$ are just $A$, --- and the second argument is given as an adverb. Likewise --- $V0$ is just $V$. - - V0 : Type ; - AS, A2S, AV, A2V : Type ; - - ---. ---2 Definitions of paradigms --- --- The definitions should not bother the user of the API. So they are --- hidden from the document. - - - - Gender = MorphoGer.Gender ; - Case = MorphoGer.Case ; - Number = MorphoGer.Number ; - masculine = Masc ; - feminine = Fem ; - neuter = Neutr ; - nominative = Nom ; - accusative = Acc ; - dative = Dat ; - genitive = Gen ; - singular = Sg ; - plural = Pl ; - - mk6N a b c d e f g = MorphoGer.mkN a b c d e f g ** {lock_N = <>} ; - - regN : Str -> N = \hund -> case hund of { - _ + "e" => mk6N hund hund hund hund (hund + "n") (hund + "n") Fem ; - _ + ("ion" | "ung") => mk6N hund hund hund hund (hund + "en") (hund + "en") Fem ; - _ + ("er" | "en" | "el") => mk6N hund hund hund (genitS hund) hund (pluralN hund) Masc ; - _ => mk6N hund hund hund (genitS hund) (hund + "e") (pluralN hund) Masc - } ; - - reg2N : (x1,x2 : Str) -> Gender -> N = \hund,hunde,g -> - let - hunds = genitS hund ; - hundE = dativE hund ; - hunden = pluralN hunde - in - case <hund,hunde,g> of { -- Duden p. 223 - <_,_ + ("e" | "er"), Masc | Neutr> => -- I,IV - mk6N hund hund hundE hunds hunde hunden g ; - <_ + ("el"|"er"|"en"),_ + ("el"|"er"|"en"), Masc | Neutr> => -- II - mk6N hund hund hund hunds hunde hunden g ; - <_,_ + "s", Masc | Neutr> => -- V - mk6N hund hund hund (hund + "s") hunde hunde g ; - <_,_ + "en", Masc> => -- VI - mk6N hund hunde hunde hunde hunde hunde g ; - <_,_ + ("e" | "er"), Fem> => -- VII,VIII - mk6N hund hund hund hund hunde hunden g ; - <_,_ + ("n" | "s"), Fem> => -- IX,X - mk6N hund hund hund hund hunde hunde g ; - _ => {s = (regN hund).s ; g = g ; lock_N = <>} - } ; - - mkN2 = overload { - mkN2 : Str -> N2 = \s -> vonN2 (regN s) ; - mkN2 : N -> N2 = vonN2 ; - mkN2 : N -> Prep -> N2 = mmkN2 - } ; - - - mmkN2 : N -> Prep -> N2 = \n,p -> n ** {c2 = p ; lock_N2 = <>} ; - vonN2 : N -> N2 = \n -> n ** {c2 = {s = "von" ; c = dative} ; lock_N2 = <>} ; - - mkN3 = \n,p,q -> n ** {c2 = p ; c3 = q ; lock_N3 = <>} ; - - mk2PN = \karolus, karoli -> - {s = table {Gen => karoli ; _ => karolus} ; lock_PN = <>} ; - regPN = \horst -> - mk2PN horst (ifTok Tok (Predef.dp 1 horst) "s" horst (horst + "s")) ; - - mkPN = overload { - mkPN : Str -> PN = regPN ; - mkPN : (nom,gen : Str) -> PN = mk2PN ; - mkPN : (nom,acc,dat,gen : Str) -> PN = \nom,acc,dat,gen -> - {s = table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ; lock_PN = <>} - } ; - - mk2PN : (karolus, karoli : Str) -> PN ; -- karolus, karoli - regPN : (Johann : Str) -> PN ; - -- Johann, Johanns ; Johannes, Johannes - - - mk3A : (gut,besser,beste : Str) -> A = \a,b,c -> - let aa : Str = case a of { - teu + "er" => teu + "r" ; - mud + "e" => mud ; - _ => a - } in - MorphoGer.mkA a aa b (init c) ** {lock_A = <>} ; - mk4A : (gut,gute,besser,beste : Str) -> A = \a,aa,b,c -> - MorphoGer.mkA a aa b (init c) ** {lock_A = <>} ; - - regA : Str -> A = \a -> case a of { - teu + "er" => mk3A a (teu + "rer") (teu + "reste") ; - _ + "e" => mk3A a (a + "r") (a + "ste") ; - _ => mk3A a (a + "er") (a + "este") - } ; - - invarA = \s -> {s = \\_,_ => s ; lock_A = <>} ; ---- comparison - - mkA2 = \a,p -> a ** {c2 = p ; lock_A2 = <>} ; - - mkAdv s = {s = s ; lock_Adv = <>} ; - - mkPrep s c = {s = s ; c = c ; lock_Prep = <>} ; - accPrep = mkPrep [] accusative ; - datPrep = mkPrep [] dative ; - genPrep = mkPrep [] genitive ; - von_Prep = mkPrep "von" dative ; - zu_Prep = mkPrep "zu" dative ; - - mk6V geben gibt gib gab gaebe gegeben = - let - geb = stemVerb geben ; - gebe = geb + "e" ; - gibst = verbST (init gibt) ; - gebt = verbT geb ; - gabst = verbST gab ; - gaben = pluralN gab ; - gabt = verbT gab - in - MorphoGer.mkV - geben gebe gibst gibt gebt gib gab gabst gaben gabt gaebe gegeben - [] VHaben ** {lock_V = <>} ; - - regV fragen = - let - frag = stemVerb fragen ; - fragt = verbT frag ; - fragte = fragt + "e" ; - gefragt = "ge" + fragt ; - in - mk6V fragen fragt (frag + "e") fragte fragte gefragt ; - - irregV singen singt sang saenge gesungen = - let - sing = stemVerb singen ; - in - mk6V singen singt sing sang saenge gesungen ; - - prefixV p v = MorphoGer.prefixV p v ** {lock_V = v.lock_V} ; - - habenV v = - {s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VHaben ; vtype = v.vtype} ; - seinV v = - {s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VSein ; vtype = v.vtype} ; - reflV v c = - {s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VHaben ; vtype = VRefl c} ; - - no_geV v = let vs = v.s in { - s = table { - p@(VPastPart _) => Predef.drop 2 (vs ! p) ; - p => vs ! p - } ; - prefix = v.prefix ; lock_V = v.lock_V ; aux = v.aux ; vtype = v.vtype - } ; - - haben_V = MorphoGer.haben_V ** {lock_V = <>} ; - sein_V = MorphoGer.sein_V ** {lock_V = <>} ; - werden_V = MorphoGer.werden_V ** {lock_V = <>} ; - - prepV2 v c = v ** {c2 = c ; lock_V2 = <>} ; - dirV2 v = prepV2 v (mkPrep [] accusative) ; - datV2 v = prepV2 v (mkPrep [] dative) ; - - mkV3 v c d = v ** {c2 = c ; c3 = d ; lock_V3 = <>} ; - dirV3 v p = mkV3 v (mkPrep [] accusative) p ; - accdatV3 v = dirV3 v (mkPrep [] dative) ; - - mkVS v = v ** {lock_VS = <>} ; - mkVQ v = v ** {lock_VQ = <>} ; - mkVV v = v ** {isAux = False ; lock_VV = <>} ; - - V0 : Type = V ; --- V2S, V2V, V2Q : Type = V2 ; - AS, A2S, AV : Type = A ; - A2V : Type = A2 ; - - mkV0 v = v ** {lock_V = <>} ; - mkV2S v p = prepV2 v p ** {lock_V2S = <>} ; - mkV2V v p = prepV2 v p ** {isAux = False ; lock_V2V = <>} ; - mkVA v = v ** {lock_VA = <>} ; - mkV2A v p = prepV2 v p ** {lock_V2A = <>} ; - mkV2Q v p = prepV2 v p ** {lock_V2Q = <>} ; - - mkAS v = v ** {lock_A = <>} ; - mkA2S v p = mkA2 v p ** {lock_A = <>} ; - mkAV v = v ** {lock_A = <>} ; - mkA2V v p = mkA2 v p ** {lock_A2 = <>} ; - --- pre-overload API and overload definitions - - regN : Str -> N ; - reg2N : (x1,x2 : Str) -> Gender -> N ; - mk6N : (x1,_,_,_,_,x6 : Str) -> Gender -> N ; - - mkN = overload { - mkN : Str -> N = regN ; - mkN : (x1,x2 : Str) -> Gender -> N = reg2N ; - mkN : (x1,_,_,_,_,x6 : Str) -> Gender -> N = mk6N - }; - - - - regA : Str -> A ; - mk3A : (gut,besser,beste : Str) -> A ; - - mkA = overload { - mkA : Str -> A = regA ; - mkA : (gut,besser,beste : Str) -> A = mk3A ; - mkA : (gut,gute,besser,beste : Str) -> A = mk4A - }; - - - - regV : Str -> V ; - irregV : (x1,_,_,_,x5 : Str) -> V ; - mk6V : (x1,_,_,_,_,x6 : Str) -> V ; - - prefixV : Str -> V -> V ; - - mkV = overload { - mkV : Str -> V = regV ; - mkV : (x1,_,_,_,x5 : Str) -> V = irregV ; - mkV : (x1,_,_,_,_,x6 : Str) -> V = mk6V ; - mkV : Str -> V -> V = prefixV - }; - - - prepV2 : V -> Prep -> V2 ; - - dirV2 : V -> V2 ; - - datV2 : V -> V2 ; - - mkV2 = overload { - mkV2 : Str -> V2 = \s -> dirV2 (regV s) ; - mkV2 : V -> V2 = dirV2 ; - mkV2 : V -> Prep -> V2 = prepV2; - mkV2 : V -> Case -> V2 = \v,c -> prepV2 v (mkPrep [] c) - } ; - -} diff --git a/next-lib/src/german/PhraseGer.gf b/next-lib/src/german/PhraseGer.gf deleted file mode 100644 index dc8cfe04e..000000000 --- a/next-lib/src/german/PhraseGer.gf +++ /dev/null @@ -1,26 +0,0 @@ -concrete PhraseGer of Phrase = CatGer ** open Prelude, ResGer in { - - flags optimize=all_subs ; - - lin - PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ; - - UttS s = {s = s.s ! Main} ; - UttQS qs = {s = qs.s ! QDir} ; - UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg False} ; - UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Pl False} ; - UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg True} ; - - UttIP ip = {s = ip.s ! Nom} ; --- Acc also - UttIAdv iadv = iadv ; - UttNP np = {s = np.s ! Nom} ; - UttVP vp = {s = useInfVP True vp} ; -- without zu - UttAdv adv = adv ; - - NoPConj = {s = []} ; - PConjConj conj = ss (conj.s2) ; - - NoVoc = {s = []} ; - VocNP np = {s = "," ++ np.s ! Nom} ; - -} diff --git a/next-lib/src/german/QuestionGer.gf b/next-lib/src/german/QuestionGer.gf deleted file mode 100644 index d94742c5f..000000000 --- a/next-lib/src/german/QuestionGer.gf +++ /dev/null @@ -1,101 +0,0 @@ -concrete QuestionGer of Question = CatGer ** open ResGer in { - - flags optimize=all_subs ; - - lin - - QuestCl cl = { - s = \\m,t,a,p => - let cls = cl.s ! m ! t ! a ! p - in table { - QDir => cls ! Inv ; - QIndir => "ob" ++ cls ! Sub - } - } ; - - QuestVP qp vp = { - s = \\m,t,a,b,q => - let - cl = (mkClause (qp.s ! Nom) (agrP3 qp.n) vp).s ! m ! t ! a ! b - in - case q of { - QIndir => cl ! Sub ; - _ => cl ! Main - } - } ; - - QuestSlash ip slash = { - s = \\m,t,a,p => - let - cls = slash.s ! m ! t ! a ! p ; - who = appPrep slash.c2 ip.s - in table { - QDir => who ++ cls ! Inv ; - QIndir => who ++ cls ! Sub - } - } ; - - QuestIAdv iadv cl = { - s = \\m,t,a,p => - let - cls = cl.s ! m ! t ! a ! p ; - why = iadv.s - in table { - QDir => why ++ cls ! Inv ; - QIndir => why ++ cls ! Sub - } - } ; - - QuestIComp icomp np = { - s = \\m,t,a,p => - let - vp = predV sein_V ; - cls = (mkClause (np.s ! Nom) np.a vp).s ! m ! t ! a ! p ; - why = icomp.s ! np.a - in table { - QDir => why ++ cls ! Inv ; - QIndir => why ++ cls ! Sub - } - } ; - - PrepIP p ip = { - s = appPrep p ip.s - } ; - - AdvIP ip adv = { - s = \\c => ip.s ! c ++ adv.s ; - n = ip.n - } ; - - IdetCN idet cn = - let - g = cn.g ; - n = idet.n - in { - s = \\c => idet.s ! g ! c ++ cn.s ! Weak ! n ! c ; - n = n - } ; - - IdetIP idet = - let - g = Neutr ; ---- - n = idet.n - in { - s = idet.s ! g ; - n = n - } ; - - IdetQuant idet num = - let - n = num.n - in { - s = \\g,c => idet.s ! n ! g ! c ++ num.s!g!c ; - n = n - } ; - - CompIAdv a = {s = \\_ => a.s} ; - - CompIP ip = {s = \\_ => ip.s ! Nom} ; - -} - diff --git a/next-lib/src/german/RelativeGer.gf b/next-lib/src/german/RelativeGer.gf deleted file mode 100644 index 2605ed3a4..000000000 --- a/next-lib/src/german/RelativeGer.gf +++ /dev/null @@ -1,48 +0,0 @@ -concrete RelativeGer of Relative = CatGer ** open ResGer in { - - flags optimize=all_subs ; - - lin - - RelCl cl = { - s = \\m,t,a,b,_ => "derart" ++ conjThat ++ cl.s ! m ! t ! a ! b ! Sub ; - c = Nom - } ; - - RelVP rp vp = { - s = \\m,t,ant,b,gn => - let - agr = case rp.a of { - RNoAg => agrP3 (numGenNum gn) ; - RAg a => a ** {g = Neutr} - } ; - cl = mkClause (rp.s ! gn ! Nom) agr vp - in - cl.s ! m ! t ! ant ! b ! Sub ; - c = Nom - } ; - - RelSlash rp slash = { - s = \\m,t,a,p,gn => - appPrep slash.c2 (rp.s ! gn) ++ slash.s ! m ! t ! a ! p ! Sub ; - c = slash.c2.c - } ; - - FunRP p np rp = { - s = \\gn,c => np.s ! c ++ appPrep p (rp.s ! gn) ; - a = RAg {n = np.a.n ; p = np.a.p} - } ; - - IdRP = {s = relPron ; a = RNoAg} ; - - oper - relPron : GenNum => Case => Str = \\gn,c => - case <gn,c> of { - <GSg Fem,Gen> => "deren" ; - <GSg g,Gen> => "dessen" ; - <GPl,Dat> => "denen" ; - <GPl,Gen> => "deren" ; - _ => artDef ! gn ! c - } ; - -} diff --git a/next-lib/src/german/ResGer.gf b/next-lib/src/german/ResGer.gf deleted file mode 100644 index ea87cabbd..000000000 --- a/next-lib/src/german/ResGer.gf +++ /dev/null @@ -1,638 +0,0 @@ ---# -path=.:../abstract:../common:prelude - ---1 German auxiliary operations. --- --- (c) 2002-2006 Aarne Ranta and Harald Hammarström --- --- This module contains operations that are needed to make the --- resource syntax work. To define everything that is needed to --- implement $Test$, it moreover contains some lexical --- patterns needed for $Lex$. - -resource ResGer = ParamX ** open Prelude in { - - flags optimize=all ; - ---2 For $Noun$ - --- These are the standard four-value case and three-value gender. - - param - Case = Nom | Acc | Dat | Gen ; - Gender = Masc | Fem | Neutr ; - --- Complex $CN$s, like adjectives, have strong and weak forms. - - Adjf = Strong | Weak ; - --- Gender distinctions are only made in the singular. - - GenNum = GSg Gender | GPl ; - --- Agreement of $NP$ is a record. - - oper Agr = {g : Gender ; n : Number ; p : Person} ; - --- Pronouns are the worst-case noun phrases, which have both case --- and possessive forms. - - param NPForm = NPCase Case | NPPoss GenNum Case ; - --- Predeterminers sometimes require a case ("ausser mir"), sometimes not ("nur ich"). - - param PredetCase = NoCase | PredCase Case ; - ---2 For $Adjective$ - --- The predicative form of adjectives is not inflected further. - - param AForm = APred | AMod GenNum Case ; - - ---2 For $Verb$ - - param VForm = - VInf Bool -- True = with the particle "zu" - | VFin Bool VFormFin -- True = prefix glued to verb - | VImper Number -- prefix never glued - | VPresPart AForm -- prefix always glued - | VPastPart AForm ; - - param VFormFin = - VPresInd Number Person - | VPresSubj Number Person - | VImpfInd Number Person --# notpresent - | VImpfSubj Number Person --# notpresent - ; - - param VPForm = - VPFinite Mood Tense Anteriority - | VPImperat Bool - | VPInfinit Anteriority ; - - param VAux = VHaben | VSein ; - - param VType = VAct | VRefl Case ; - --- The order of sentence is depends on whether it is used as a main --- clause, inverted, or subordinate. - - param - Order = Main | Inv | Sub ; - --- Main clause mood: "es sei, es wäre, es werde sein". --- Not relevant for $Fut$. --- - - Mood = MIndic | MConjunct ; - ---2 For $Relative$ - - RAgr = RNoAg | RAg {n : Number ; p : Person} ; - ---2 For $Numeral$ - - CardOrd = NCard Gender Case | NOrd AForm ; - DForm = DUnit | DTeen | DTen ; - ---2 Transformations between parameter types - - oper - agrP3 : Number -> Agr = agrgP3 Neutr ; - - agrgP3 : Gender -> Number -> Agr = \g,n -> - {g = g ; n = n ; p = P3} ; - - gennum : Gender -> Number -> GenNum = \g,n -> - case n of { - Sg => GSg g ; - Pl => GPl - } ; - --- Needed in $RelativeGer$. - - numGenNum : GenNum -> Number = \gn -> - case gn of { - GSg _ => Sg ; - GPl => Pl - } ; - --- Used in $NounGer$. - - agrAdj : Gender -> Adjf -> Number -> Case -> AForm = \g,a,n,c -> - let - gn = gennum g n ; - e = AMod (GSg Fem) Nom ; - en = AMod (GSg Masc) Acc ; - in - case a of { - Strong => AMod gn c ; - _ => case <gn,c> of { - <GSg _, Nom> => e ; - <GSg Masc,Acc> => en ; - <GSg _, Acc> => e ; - _ => en - } - } ; - --- This is used twice in NounGer. - - adjfCase : Adjf -> Case -> Adjf = \a,c -> case <a,c> of { - <Strong, Nom|Acc> => Strong ; - _ => Weak - } ; - - vFin : Bool -> Mood -> Tense -> Agr -> VForm = \b,m,t,a -> - case <t,m> of { - <Pres,MIndic> => VFin b (VPresInd a.n a.p) ; - <Pres,MConjunct> => VFin b (VPresSubj a.n a.p) - ; --# notpresent - <Past,MIndic> => VFin b (VImpfInd a.n a.p) ; --# notpresent - <Past,MConjunct> => VFin b (VImpfSubj a.n a.p) ; --# notpresent - _ => VInf False --# notpresent - } ; - - conjAgr : Agr -> Agr -> Agr = \a,b -> { - g = Neutr ; ---- - n = conjNumber a.n b.n ; - p = conjPerson a.p b.p - } ; - --- For $Lex$. - --- For conciseness and abstraction, we first define a method for --- generating a case-dependent table from a list of four forms. - - oper - caselist : (x1,_,_,x4 : Str) -> Case => Str = \n,a,d,g -> - table { - Nom => n ; - Acc => a ; - Dat => d ; - Gen => g - } ; - --- For each lexical category, here are the worst-case constructors and --- some practical special cases. --- More paradigms are given in $ParadigmsGer$. - --- The worst-case constructor for common nouns needs six forms: all plural forms --- are always the same except for the dative. Actually the six forms are never --- needed at the same time, but just subsets of them. - - Noun : Type = {s : Number => Case => Str ; g : Gender} ; - - mkN : (x1,_,_,_,_,x6 : Str) -> Gender -> Noun = - \mann, mannen, manne, mannes, maenner, maennern, g -> { - s = table { - Sg => caselist mann mannen manne mannes ; - Pl => caselist maenner maenner maennern maenner - } ; - g = g - } ; - --- Adjectives need four forms: two for the positive and one for the other degrees. - - Adjective : Type = {s : Degree => AForm => Str} ; - - mkA : (x1,_,_,x4 : Str) -> Adjective = \gut,gute,besser,best -> - {s = table { - Posit => adjForms gut gute ; - Compar => adjForms besser besser ; - Superl => adjForms best best - } - } ; - --- Verbs need as many as 12 forms, to cover the variations with --- suffixes "t" and "st". Auxiliaries like "sein" will have to --- make extra cases even for this. - - Verb : Type = { - s : VForm => Str ; - prefix : Str ; - aux : VAux ; - vtype : VType - } ; - - mkV : (x1,_,_,_,_,_,_,_,_,_,_,x12 : Str) -> Str -> VAux -> Verb = - \geben,gebe,gibst,gibt,gebt,gib, - gab,gabst,gaben,gabt, - gaebe,gegeben,ein,aux -> - let - einb : Bool -> Str -> Str = \b,geb -> - if_then_Str b (ein + geb) geb ; - in - {s = table { - VInf False => ein + geben ; - VInf True => - if_then_Str (isNil ein) ("zu" ++ geben) (ein + "zu" + geben) ; - VFin b vf => einb b (case vf of { - VPresInd Sg P1 => gebe ; - VPresInd Sg P2 => gibst ; - VPresInd Sg P3 => gibt ; - VPresInd Pl P2 => gebt ; - VPresInd Pl _ => geben ; - VImpfInd Sg P2 => gabst ; --# notpresent - VImpfInd Sg _ => gab ; --# notpresent - VImpfInd Pl P2 => gabt ; --# notpresent - VImpfInd Pl _ => gaben ; --# notpresent - VImpfSubj Sg P2 => gaebe + "st" ; --# notpresent - VImpfSubj Sg _ => gaebe ; --# notpresent - VImpfSubj Pl P2 => gaebe + "t" ; --# notpresent - VImpfSubj Pl _ => gaebe + "n" ; --# notpresent - VPresSubj Sg P2 => init geben + "st" ; - VPresSubj Sg _ => init geben ; - VPresSubj Pl P2 => init geben + "t" ; - VPresSubj Pl _ => geben - }) ; - VImper Sg => gib ; - VImper Pl => gebt ; - VPresPart a => ein + (regA (geben + "d")).s ! Posit ! a ; - VPastPart a => ein + (regA gegeben).s ! Posit ! a - } ; - prefix = ein ; - aux = aux ; - vtype = VAct - } ; - --- To add a prefix (like "ein") to an already existing verb. - - prefixV : Str -> Verb -> Verb = \ein,verb -> - let - vs = verb.s ; - geben = vs ! VInf False ; - einb : Bool -> Str -> Str = \b,geb -> - if_then_Str b (ein + geb) geb ; - in - {s = table { - VInf False => ein + geben ; - VInf True => - if_then_Str (isNil ein) ("zu" ++ geben) (ein + "zu" + geben) ; - VFin b vf => einb b (vs ! VFin b vf) ; - VImper n => vs ! VImper n ; - VPresPart a => ein + (regA (geben + "d")).s ! Posit ! a ; - VPastPart a => ein + vs ! VPastPart a - } ; - prefix = ein ; - aux = verb.aux ; - vtype = verb.vtype - } ; - - --- These functions cover many regular cases; full coverage inflectional patterns are --- defined in $MorphoGer$. - - mkN4 : (x1,_,_,x4 : Str) -> Gender -> Noun = \wein,weines,weine,weinen -> - mkN wein wein wein weines weine weinen ; - - regA : Str -> Adjective = \blau -> - mkA blau blau (blau + "er") (blau + "est") ; - - regV : Str -> Verb = \legen -> - let - lege = init legen ; - leg = init lege ; - legt = leg + "t" ; - legte = legt + "e" - in - mkV - legen lege (leg+"st") legt legt leg - legte (legte + "st") (legte + "n") (legte + "t") - legte ("ge" + legt) - [] VHaben ; - --- Prepositions for complements indicate the complement case. - - Preposition : Type = {s : Str ; c : Case} ; - --- To apply a preposition to a complement. - - appPrep : Preposition -> (Case => Str) -> Str = \prep,arg -> - prep.s ++ arg ! prep.c ; - --- To build a preposition from just a case. - - noPreposition : Case -> Preposition = \c -> - {s = [] ; c = c} ; - --- Pronouns and articles --- Here we define personal and relative pronouns. --- All personal pronouns, except "ihr", conform to the simple --- pattern $mkPronPers$. - - mkPronPers : (x1,_,_,_,x5 : Str) -> Gender -> Number -> Person -> - {s : NPForm => Str ; a : Agr} = - \ich,mich,mir,meiner,mein,g,n,p -> { - s = table { - NPCase c => caselist ich mich mir meiner ! c ; - NPPoss gn c => mein + pronEnding ! gn ! c - } ; - a = {g = g ; n = n ; p = p} - } ; - - pronEnding : GenNum => Case => Str = table { - GSg Masc => caselist "" "en" "em" "es" ; - GSg Fem => caselist "e" "e" "er" "er" ; - GSg Neut => caselist "" "" "em" "es" ; - GPl => caselist "e" "e" "en" "er" - } ; - - artDef : GenNum => Case => Str = table { - GSg Masc => caselist "der" "den" "dem" "des" ; - GSg Fem => caselist "die" "die" "der" "der" ; - GSg Neut => caselist "das" "das" "dem" "des" ; - GPl => caselist "die" "die" "den" "der" - } ; - --- This is used when forming determiners that are like adjectives. - - appAdj : Adjective -> Number => Gender => Case => Str = \adj -> - let - ad : GenNum -> Case -> Str = \gn,c -> - adj.s ! Posit ! AMod gn c - in - \\n,g,c => case n of { - Sg => ad (GSg g) c ; - _ => ad GPl c - } ; - --- This auxiliary gives the forms in each degree of adjectives. - - adjForms : (x1,x2 : Str) -> AForm => Str = \teuer,teur -> - table { - APred => teuer ; - AMod (GSg Masc) c => - caselist (teur+"er") (teur+"en") (teur+"em") (teur+"es") ! c ; - AMod (GSg Fem) c => - caselist (teur+"e") (teur+"e") (teur+"er") (teur+"er") ! c ; - AMod (GSg Neut) c => - caselist (teur+"es") (teur+"es") (teur+"em") (teur+"es") ! c ; - AMod GPl c => - caselist (teur+"e") (teur+"e") (teur+"en") (teur+"er") ! c - } ; - --- For $Verb$. - - VPC : Type = { - s : Bool => Agr => VPForm => { -- True = prefix glued to verb - fin : Str ; -- hat - inf : Str -- wollen - } - } ; - - VP : Type = { - s : Verb ; - a1 : Polarity => Str ; -- nicht - n2 : Agr => Str ; -- dich - a2 : Str ; -- heute - isAux : Bool ; -- is a double infinitive - inf : Str ; -- sagen - ext : Str -- dass sie kommt - } ; - - predV : Verb -> VP = predVGen False ; - - useVP : VP -> VPC = \vp -> - let - isAux = vp.isAux ; - verb = vp.s ; - vfin : Bool -> Mood -> Tense -> Agr -> Str = \b,m,t,a -> - verb.s ! vFin b m t a ; - vinf = verb.s ! VInf False ; - vpart = if_then_Str isAux vinf (verb.s ! VPastPart APred) ; - - vHaben = auxPerfect verb ; - hat : Mood -> Tense -> Agr -> Str = \m,t,a -> - vHaben ! vFin False m t a ; - haben : Str = vHaben ! VInf False ; - - wird : Mood -> Agr -> Str = \m,a -> case m of { - MIndic => werden_V.s ! VFin False (VPresInd a.n a.p) ; - MConjunct => werden_V.s ! VFin False (VPresSubj a.n a.p) - } ; - wuerde : Agr -> Str = \a -> --# notpresent - werden_V.s ! VFin False (VImpfSubj a.n a.p) ; --# notpresent - - auf = verb.prefix ; - - vf : Bool -> Str -> Str -> {fin,inf : Str} = \b,fin,inf -> { - fin = fin ; - inf = if_then_Str b [] auf ++ inf --- negation of main b - } ; - - in { - s = \\b,a => table { - VPFinite m t Simul => case t of { --- Pres | Past => vf (vfin m t a) [] ; -- the general rule - Past => vf b (vfin b m t a) [] ; --# notpresent - Fut => vf True (wird m a) vinf ; --# notpresent - 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 - VPImperat False => vf False (verb.s ! VImper a.n) [] ; - VPImperat True => vf False (verb.s ! VFin False (VPresSubj Pl P3)) [] ; - VPInfinit Anter => vf True [] (vpart ++ haben) ; --# notpresent - VPInfinit Simul => vf True [] (verb.s ! VInf b) - } - } ; - - - predVGen : Bool -> Verb -> VP = \isAux, verb -> { - s = { - s = verb.s ; - prefix = verb.prefix ; - aux = verb.aux ; - vtype = verb.vtype - } ; - - a1 : Polarity => Str = negation ; - n2 : Agr => Str = case verb.vtype of { - VAct => \\_ => [] ; - VRefl c => \\a => reflPron ! a ! c - } ; - a2 : Str = [] ; - isAux = isAux ; ---- - inf,ext : Str = [] - } ; - - auxPerfect : Verb -> VForm => Str = \verb -> - case verb.aux of { - VHaben => haben_V.s ; - VSein => sein_V.s - } ; - - haben_V : Verb = - mkV - "haben" "habe" "hast" "hat" "habt" "hab" - "hatte" "hattest" "hatten" "hattet" - "hätte" "gehabt" - [] VHaben ; - - werden_V : Verb = - mkV - "werden" "werde" "wirst" "wird" "werdet" "werd" - "wurde" "wurdest" "wurden" "wurdet" - "würde" "geworden" - [] VSein ; - - werdenPass : Verb = - mkV - "werden" "werde" "wirst" "wird" "werdet" "werd" - "wurde" "wurdest" "wurden" "wurdet" - "würde" "worden" - [] VSein ; - - sein_V : Verb = - let - sein = mkV - "sein" "bin" "bist" "ist" "seid" "sei" - "war" "warst" "waren" "wart" - "wäre" "gewesen" - [] VSein - in - {s = table { - VFin _ (VPresInd Pl (P1 | P3)) => "sind" ; - VFin _ (VPresSubj Sg P2) => (variants {"seiest" ; "seist"}) ; - VFin _ (VPresSubj Sg _) => "sei" ; - VFin _ (VPresSubj Pl P2) => "seiet" ; - VFin _ (VPresSubj Pl _) => "seien" ; - VPresPart a => (regA "seiend").s ! Posit ! a ; - v => sein.s ! v - } ; - prefix = [] ; - aux = VSein ; - vtype = VAct - } ; - - auxVV : Verb -> Verb ** {isAux : Bool} = \v -> v ** {isAux = True} ; - - negation : Polarity => Str = table { - Pos => [] ; - Neg => "nicht" - } ; - --- Extending a verb phrase with new constituents. - - insertObj : (Agr => Str) -> VP -> VP = \obj,vp -> { - s = vp.s ; - a1 = vp.a1 ; - n2 = \\a => obj ! a ++ vp.n2 ! a ; - a2 = vp.a2 ; - isAux = vp.isAux ; - inf = vp.inf ; - ext = vp.ext - } ; - - insertAdV : Str -> VP -> VP = \adv,vp -> { - s = vp.s ; - a1 = \\a => adv ++ vp.a1 ! a ; -- immer nicht - n2 = vp.n2 ; - a2 = vp.a2 ; - isAux = vp.isAux ; - inf = vp.inf ; - ext = vp.ext - } ; - - insertAdv : Str -> VP -> VP = \adv,vp -> { - s = vp.s ; - a1 = vp.a1 ; - n2 = vp.n2 ; - a2 = vp.a2 ++ adv ; - isAux = vp.isAux ; - inf = vp.inf ; - ext = vp.ext - } ; - - insertExtrapos : Str -> VP -> VP = \ext,vp -> { - s = vp.s ; - a1 = vp.a1 ; - n2 = vp.n2 ; - a2 = vp.a2 ; - isAux = vp.isAux ; - inf = vp.inf ; - ext = vp.ext ++ ext - } ; - - insertInf : Str -> VP -> VP = \inf,vp -> { - s = vp.s ; - a1 = vp.a1 ; - n2 = vp.n2 ; - a2 = vp.a2 ; - isAux = vp.isAux ; ---- - inf = inf ++ vp.inf ; - ext = vp.ext - } ; - --- For $Sentence$. - - Clause : Type = { - s : Mood => Tense => Anteriority => Polarity => Order => Str - } ; - - mkClause : Str -> Agr -> VP -> Clause = \subj,agr,vp -> let vps = useVP vp in { - s = \\m,t,a,b,o => - let - ord = case o of { - Sub => True ; -- glue prefix to verb - _ => False - } ; - verb = vps.s ! ord ! agr ! VPFinite m t a ; - neg = vp.a1 ! b ; - obj = vp.n2 ! agr ; - compl = obj ++ neg ++ vp.a2 ; - inf = vp.inf ++ verb.inf ; - extra = vp.ext ; - inffin = - case <a,vp.isAux> of { --# notpresent - <Anter,True> => verb.fin ++ inf ; -- double inf --# notpresent - _ => --# notpresent - inf ++ verb.fin --- or just auxiliary vp - } --# notpresent - in - case o of { - Main => subj ++ verb.fin ++ compl ++ inf ++ extra ; - Inv => verb.fin ++ subj ++ compl ++ inf ++ extra ; - Sub => subj ++ compl ++ inffin ++ extra - } - } ; - - infVP : Bool -> VP -> ((Agr => Str) * Str * Str) = \isAux, vp -> let vps = useVP vp in - < - \\agr => vp.n2 ! agr ++ vp.a2, - vp.a1 ! Pos ++ (vps.s ! (notB isAux) ! agrP3 Sg ! VPInfinit Simul).inf, - vp.inf ++ vp.ext - > ; - - useInfVP : Bool -> VP -> Str = \isAux,vp -> - let vpi = infVP isAux vp in - vpi.p1 ! agrP3 Sg ++ vpi.p3 ++ vpi.p2 ; - --- The nominative case is not used as reflexive, but defined here --- so that we can reuse this in personal pronouns. --- The missing Sg "ihrer" shows that a dependence on gender would --- be needed. - - reflPron : Agr => Case => Str = table { - {n = Sg ; p = P1} => caselist "ich" "mich" "mir" "meiner" ; - {n = Sg ; p = P2} => caselist "du" "dich" "dir" "deiner" ; - {g = Masc ; n = Sg ; p = P3} => caselist "er" "sich" "sich" "seiner" ; - {g = Fem ; n = Sg ; p = P3} => caselist "sie" "sich" "sich" "ihrer" ; - {g = Neutr ; n = Sg ; p = P3} => caselist "es" "sich" "sich" "seiner" ; - {n = Pl ; p = P1} => caselist "wir" "uns" "uns" "unser" ; - {n = Pl ; p = P2} => caselist "ihr" "euch" "euch" "euer" ; - {n = Pl ; p = P3} => caselist "sie" "sich" "sich" "ihrer" - } ; - - conjThat : Str = "daß" ; - - conjThan : Str = "als" ; - --- The infinitive particle "zu" is used if and only if $vv.isAux = False$. - - infPart : Bool -> Str = \b -> if_then_Str b [] "zu" ; - -} diff --git a/next-lib/src/german/SentenceGer.gf b/next-lib/src/german/SentenceGer.gf deleted file mode 100644 index b79938b1c..000000000 --- a/next-lib/src/german/SentenceGer.gf +++ /dev/null @@ -1,67 +0,0 @@ -concrete SentenceGer of Sentence = CatGer ** open ResGer, Prelude in { - - flags optimize=all_subs ; - - lin - - PredVP np vp = mkClause (np.s ! Nom) np.a vp ; - - PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ; - - ImpVP vp = let vps = useVP vp in { - s = \\pol,n => - let - ps = case n of { - ImpF _ True => <P3,"Sie",True> ; -- setzen Sie sich - _ => <P2,[],False> - } ; - agr = {g = Fem ; n = numImp n ; p = ps.p1} ; --- g does not matter - verb = vps.s ! False ! agr ! VPImperat ps.p3 ; - inf = vp.inf ++ verb.inf ; - in - verb.fin ++ ps.p2 ++ - vp.n2 ! agr ++ vp.a1 ! pol ++ vp.a2 ++ inf ++ vp.ext - } ; - - SlashVP np vp = - mkClause - (np.s ! Nom) np.a - vp ** - {c2 = vp.c2} ; - - AdvSlash slash adv = { - s = \\m,t,a,b,o => slash.s ! m ! t ! a ! b ! o ++ adv.s ; - c2 = slash.c2 - } ; - - SlashPrep cl prep = cl ** {c2 = prep} ; - - SlashVS np vs slash = - mkClause (np.s ! Nom) np.a - (insertExtrapos (conjThat ++ slash.s ! Sub) (predV vs)) ** - {c2 = slash.c2} ; - - EmbedS s = {s = conjThat ++ s.s ! Sub} ; - EmbedQS qs = {s = qs.s ! QIndir} ; - EmbedVP vp = {s = useInfVP False vp} ; - - UseCl t p cl = { - s = \\o => t.s ++ p.s ++ cl.s ! t.m ! t.t ! t.a ! p.p ! o - } ; - UseQCl t p cl = { - s = \\q => t.s ++ p.s ++ cl.s ! t.m ! t.t ! t.a ! p.p ! q - } ; - UseRCl t p cl = { - s = \\r => t.s ++ p.s ++ cl.s ! t.m ! t.t ! t.a ! p.p ! r ; - c = cl.c - } ; - UseSlash t p cl = { - s = \\o => t.s ++ p.s ++ cl.s ! t.m ! t.t ! t.a ! p.p ! o ; - c2 = cl.c2 - } ; - - AdvS a s = {s = \\o => a.s ++ s.s ! Inv} ; - - RelS s r = {s = \\o => s.s ! o ++ "," ++ r.s ! gennum Neutr Sg} ; --- "welches" - -} diff --git a/next-lib/src/german/StructuralGer.gf b/next-lib/src/german/StructuralGer.gf deleted file mode 100644 index a48a30143..000000000 --- a/next-lib/src/german/StructuralGer.gf +++ /dev/null @@ -1,151 +0,0 @@ -concrete StructuralGer of Structural = CatGer ** - - open MorphoGer, MakeStructuralGer, (X = ConstructX), - (P = ParadigmsGer), IrregGer, Prelude in { - - flags optimize=all ; - - lin - - above_Prep = mkPrep "über" Dat ; - after_Prep = mkPrep "nach" Dat ; - all_Predet = {s = appAdj (regA "all") ; c = NoCase} ; - almost_AdA, almost_AdN = ss "fast" ; - although_Subj = ss "obwohl" ; - always_AdV = ss "immer" ; - and_Conj = {s1 = [] ; s2 = "und" ; n = Pl} ; - because_Subj = ss "weil" ; - before_Prep = mkPrep "vor" Dat ; - behind_Prep = mkPrep "hinter" Dat ; - between_Prep = mkPrep "zwischen" Dat ; - both7and_DConj = sd2 "sowohl" ["als auch"] ** {n = Pl} ; - but_PConj = ss "aber" ; - by8agent_Prep = mkPrep "durch" Acc ; - by8means_Prep = mkPrep "mit" Dat ; - can8know_VV, can_VV = auxVV - (mkV - "können" "kann" "kannst" "kann" "könnt" "könn" - "konnte" "konntest" "konnten" "konntet" - "könnte" "gekonnt" [] - VHaben) ; - during_Prep = mkPrep "während" Gen ; - either7or_DConj = sd2 "entweder" "oder" ** {n = Sg} ; - everybody_NP = nameNounPhrase {s = caselist "jeder" "jeden" "jedem" "jedes"} ; - every_Det = detLikeAdj Sg "jed" ; - everything_NP = nameNounPhrase {s = caselist "alles" "alles" "allem" "alles"} ; - everywhere_Adv = ss "überall" ; - few_Det = detLikeAdj Pl "wenig" ; ----- first_Ord = {s = (regA "erst").s ! Posit} ; - for_Prep = mkPrep "für" Acc ; - from_Prep = mkPrep "aus" Dat ; - he_Pron = mkPronPers "er" "ihn" "ihm" "seiner" "sein" Masc Sg P3 ; - here7to_Adv = ss ["hierher"] ; - here7from_Adv = ss ["hieraus"] ; - here_Adv = ss "hier" ; - how_IAdv = ss "wie" ; - how8many_IDet = detLikeAdj Pl "wieviel" ; - if_Subj = ss "wenn" ; - in8front_Prep = mkPrep "vor" Dat ; - i_Pron = mkPronPers "ich" "mich" "mir" "meiner" "mein" Masc Sg P1 ; - in_Prep = mkPrep "in" Dat ; - it_Pron = mkPronPers "es" "es" "ihm" "seiner" "sein" Neutr Sg P3 ; - less_CAdv = X.mkCAdv "weniger" "als" ; - many_Det = detLikeAdj Pl "viel" ; - more_CAdv = X.mkCAdv "mehr" "als" ; - most_Predet = {s = appAdj (regA "meist") ; c = NoCase} ; - much_Det = detLikeAdj Sg "viel" ; - must_VV = auxVV - (mkV - "müssen" "muß" "mußt" "muß" "müßt" "müß" - "mußte" "mußtest" "mußten" "mußtet" - "müßte" "gemußt" [] - VHaben) ; ---- one_Quant = DEPREC - only_Predet = {s = \\_,_,_ => "nur" ; c = NoCase} ; - no_Utt = ss "nein" ; ----b no_Phr = ss "nein" ; - on_Prep = mkPrep "auf" Dat ; - or_Conj = {s1 = [] ; s2 = "oder" ; n = Sg} ; - otherwise_PConj = ss "sonst" ; - part_Prep = mkPrep "von" Dat ; - please_Voc = ss "bitte" ; - possess_Prep = mkPrep "von" Dat ; - quite_Adv = ss "ziemlich" ; - she_Pron = mkPronPers "sie" "sie" "ihr" "ihrer" "ihr" Fem Sg P3 ; - so_AdA = ss "so" ; - somebody_NP = nameNounPhrase {s = caselist "jemand" "jemanden" "jemandem" "jemands"} ; - somePl_Det = detLikeAdj Pl "einig" ; - someSg_Det = { - s,sp = \\g,c => "ein" + pronEnding ! GSg g ! c ; ---- einer,eines - n = Sg ; - a = Strong - } ; - something_NP = nameNounPhrase {s = \\_ => "etwas"} ; - somewhere_Adv = ss "irgendwo" ; - that_Quant = let - jener : Number => Gender => Case => Str = \\n => (detLikeAdj n "jen").s in - {s = \\_ => jener ; sp = jener ; a = Weak} ; ----b that_NP = nameNounPhrase {s = caselist "das" "das" "denem" "dessen"} ; ---- - there_Adv = ss "da" ; - there7to_Adv = ss "dahin" ; - there7from_Adv = ss ["daher"] ; - therefore_PConj = ss "deshalb" ; ----b these_NP = {s = caselist "diese" "diese" "diesen" "dieser" ; a = agrP3 Pl} ; - they_Pron = mkPronPers "sie" "sie" "ihnen" "ihrer" "ihr" Fem Pl P3 ; - this_Quant = let - dieser : Number => Gender => Case => Str = \\n => (detLikeAdj n "dies").s in - {s = \\_ => dieser ; sp = dieser ; a = Weak} ; ----b this_NP = nameNounPhrase {s = caselist "dies" "dies" "diesem" "dieses"} ; ---- ----b those_NP = {s = caselist "jene" "jene" "jenen" "jener" ; a = agrP3 Pl} ; - through_Prep = mkPrep "durch" Acc ; - too_AdA = ss "zu" ; - to_Prep = mkPrep "nach" Dat ; - under_Prep = mkPrep "unter" Dat ; - very_AdA = ss "sehr" ; - want_VV = auxVV - (mkV - "wollen" "will" "willst" "will" "wollt" "woll" - "wollte" "wolltest" "wollten" "wolltet" - "wollte" "gewollt" [] - VHaben) ; - 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} ; ---- - - when_IAdv = ss "wann" ; - when_Subj = ss "wenn" ; - where_IAdv = ss "wo" ; - which_IQuant = {s = \\n => (detLikeAdj n "welch").s} ; - - whoSg_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Sg} ; - whoPl_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Pl} ; - why_IAdv = ss "warum" ; - without_Prep = mkPrep "ohne" Acc ; - with_Prep = mkPrep "mit" Dat ; - youSg_Pron = mkPronPers "du" "dich" "dir" "deiner" "dein" Fem Sg P2 ; - youPl_Pron = mkPronPers "ihr" "euch" "euch" "eurer" "euer" Fem Pl P2 ; ---- poss - youPol_Pron = mkPronPers "Sie" "Sie" "Ihnen" "Ihrer" "Ihr" Fem Pl P3 ; - yes_Utt = ss "ja" ; - - not_Predet = {s = \\_,_,_ => "nicht" ; c = NoCase} ; - no_Quant = let - keiner : Number => Gender => Case => Str = table { - Sg => \\g,c => "kein" + pronEnding ! GSg g ! c ; - Pl => (detLikeAdj Pl "kein").s - } - in - {s = \\_ => keiner ; sp = keiner ; a = Strong} ; ---- sp - if_then_Conj = {s1 = "wenn" ; s2 = "dann" ; n = Sg ; lock_Conj = <>} ; - nobody_NP = - nameNounPhrase {s = caselist "niemand" "niemanden" "niemandem" "niemands"} ; - nothing_NP = - nameNounPhrase {s = \\_ => "nichts"} ; - at_least_AdN = ss "wenigstens" ; - at_most_AdN = ss "höchstens" ; - except_Prep = mkPrep "außer" Dat ; - - as_CAdv = X.mkCAdv "ebenso" "wie" ; - have_V2 = P.dirV2 IrregGer.haben_V ; - -} diff --git a/next-lib/src/german/SymbolGer.gf b/next-lib/src/german/SymbolGer.gf deleted file mode 100644 index c2e6b2a1d..000000000 --- a/next-lib/src/german/SymbolGer.gf +++ /dev/null @@ -1,45 +0,0 @@ ---# -path=.:abstract:common - -concrete SymbolGer of Symbol = CatGer ** open Prelude, ResGer in { - -lin - SymbPN i = {s = \\c => i.s ; g = Neutr} ; --- c - IntPN i = {s = \\c => i.s ; g = Neutr} ; --- c - FloatPN i = {s = \\c => i.s ; g = Neutr} ; --- c - NumPN i = {s = i.s ! Neutr ; g = Neutr} ; --- c - - CNIntNP cn i = { - s = \\c => cn.s ! Weak ! Sg ! Nom ++ i.s ; - a = agrP3 Sg ; - isPron = False - } ; - CNSymbNP det cn xs = let g = cn.g in { - s = \\c => det.s ! g ! c ++ cn.s ! adjfCase det.a c ! det.n ! c ++ xs.s ; - a = agrP3 det.n ; - isPron = False - } ; - CNNumNP cn i = { - s = \\c => artDef ! (GSg cn.g) ! c ++ cn.s ! Weak ! Sg ! Nom ++ i.s ! Neutr ! c ; - a = agrP3 Sg ; - isPron = False - } ; - - SymbS sy = {s = \\_ => sy.s} ; - - SymbNum n = {s = \\_,_ => n.s ; n = Pl ; isNum = True} ; - SymbOrd n = {s = \\_ => n.s ++ "."} ; - - -lincat - - Symb, [Symb] = SS ; - -lin - - MkSymb s = s ; - - BaseSymb = infixSS "und" ; - ConsSymb = infixSS "," ; - -} - diff --git a/next-lib/src/german/VerbGer.gf b/next-lib/src/german/VerbGer.gf deleted file mode 100644 index 83b7ae9e5..000000000 --- a/next-lib/src/german/VerbGer.gf +++ /dev/null @@ -1,82 +0,0 @@ -concrete VerbGer of Verb = CatGer ** open Prelude, ResGer in { - - flags optimize=all_subs ; - - lin - UseV = predV ; - - ComplVV v vp = - let - vpi = infVP v.isAux vp - in - insertExtrapos vpi.p3 ( - insertInf vpi.p2 ( - insertObj vpi.p1 ( - predVGen v.isAux v))) ; - - ComplVS v s = - insertExtrapos (conjThat ++ s.s ! Sub) (predV v) ; - ComplVQ v q = - insertExtrapos (q.s ! QIndir) (predV v) ; - ComplVA v ap = insertObj (\\ _ => ap.s ! APred) (predV v) ; - - SlashV2a v = predV v ** {c2 = v.c2} ; - - Slash2V3 v np = - insertObj (\\_ => appPrep v.c2 np.s) (predV v) ** {c2 = v.c3} ; - Slash3V3 v np = - insertObj (\\_ => appPrep v.c3 np.s) (predV v) ** {c2 = v.c2} ; - - SlashV2S v s = - insertExtrapos (conjThat ++ s.s ! Sub) (predV v) ** {c2 = v.c2} ; - SlashV2Q v q = - insertExtrapos (q.s ! QIndir) (predV v) ** {c2 = v.c2} ; - SlashV2V v vp = - let - vpi = infVP False vp - in - insertExtrapos vpi.p3 ( - insertInf vpi.p2 ( - insertObj vpi.p1 ((predV v)))) ** {c2 = v.c2} ; - - SlashV2A v ap = - insertObj (\\_ => ap.s ! APred) (predV v) ** {c2 = v.c2} ; - - ComplSlash vp np = insertObj (\\_ => appPrep vp.c2 np.s) vp ; - - SlashVV v vp = - let - vpi = infVP v.isAux vp - in - insertExtrapos vpi.p3 ( - insertInf vpi.p2 ( - insertObj vpi.p1 ( - predVGen v.isAux v))) ** {c2 = vp.c2} ; - - SlashV2VNP v np vp = - let - vpi = infVP False vp - in - insertExtrapos vpi.p3 ( - insertInf vpi.p2 ( - insertObj vpi.p1 ( - insertObj (\\_ => appPrep v.c2 np.s) ( - predV v)))) ** {c2 = v.c2} ; - - UseComp comp = insertAdv (comp.s ! agrP3 Sg) (predV sein_V) ; -- agr not used - -- we want to say "ich liebe sie nicht" but not "ich bin alt nicht" - - CompAP ap = {s = \\_ => ap.s ! APred} ; - CompNP np = {s = \\_ => np.s ! Nom} ; - CompAdv a = {s = \\_ => a.s} ; - - AdvVP vp adv = insertAdv adv.s vp ; - AdVVP adv vp = insertAdV adv.s vp ; - - ReflVP vp = insertObj (\\a => appPrep vp.c2 (reflPron ! a)) vp ; - - PassV2 v = insertInf (v.s ! VPastPart APred) (predV werdenPass) ; - ----b UseVS, UseVQ = \v -> v ** {c2 = noPreposition Acc} ; - -} |
