diff --git a/lib/src/finnish/ExtraFinAbs.gf b/lib/src/finnish/ExtraFinAbs.gf index ce042b435..ce27aa857 100644 --- a/lib/src/finnish/ExtraFinAbs.gf +++ b/lib/src/finnish/ExtraFinAbs.gf @@ -1,7 +1,7 @@ abstract ExtraFinAbs = Extra [ GenNP, VPI,ListVPI,BaseVPI,ConsVPI,MkVPI,ComplVPIVV,ConjVPI, - VPS,ListVPS,BaseVPS,ConsVPS,ConjVPS,MkVPS,PredVPS,ConjVPS,Temp,Pol,S, + VPS,ListVPS,BaseVPS,ConsVPS,ConjVPS,MkVPS,PredVPS,ConjVPS,Tense,Temp,Pol,S, VV,VP,Conj,NP,Quant,IAdv,IComp,ICompAP,IAdvAdv,Adv,AP, Pron, ProDrop] ** { fun diff --git a/lib/src/german/DictEngGer.gf b/lib/src/german/DictEngGer.gf index 905b18a03..09750fef3 100644 --- a/lib/src/german/DictEngGer.gf +++ b/lib/src/german/DictEngGer.gf @@ -1,7 +1,12 @@ --# -path=.:../prelude:../abstract:../common:/Users/erzsebet/GF/lib/src/german/ concrete DictEngGer of DictEngAbs = CatGer ** - open ResGer, DictGer, Prelude in { + open ResGer, DictGer, Prelude, + MorphoGer, MakeStructuralGer, (X = ConstructX), + (P = ParadigmsGer), IrregGer + + +in { lin @@ -8692,4 +8697,164 @@ lin zoologist_N = DictGer.zoologe__N ; zoom_N = DictGer.aufstieg_N ; + +------- + +-- concrete StructuralGer of Structural = CatGer ** + + + flags optimize=all ; + + lin + + above_Prep = mkPrep "über" P.dative ; + after_Prep = mkPrep "nach" P.dative ; + all_Predet = {s = appAdj (regA "all") ; c = noCase ; a = PAgNone} ; + 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" P.dative ; + behind_Prep = mkPrep "hinter" P.dative ; + between_Prep = mkPrep "zwischen" P.dative ; + both7and_DConj = sd2 "sowohl" ["als auch"] ** {n = Pl} ; + but_PConj = ss "aber" ; + by8agent_Prep = mkPrep "durch" P.accusative ; + by8means_Prep = mkPrep "mit" P.dative ; + 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" P.genitive ; + either7or_DConj = sd2 "entweder" "oder" ** {n = Sg} ; + everybody_NP = nameNounPhrase {s = caselist "jeder" "jeden" "jedem" "jedes"} ; + every_Det = detLikeAdj False Sg "jed" ; + everything_NP = nameNounPhrase {s = caselist "alles" "alles" "allem" "alles"} ; + everywhere_Adv = ss "überall" ; + few_Det = detLikeAdj False Pl "wenig" ; +---- first_Ord = {s = (regA "erst").s ! Posit} ; + for_Prep = mkPrep "für" P.accusative ; + from_Prep = mkPrep "aus" P.dative ; + 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" ; + how8much_IAdv = ss "wieviel" ; + how8many_IDet = {s = \\g,c => (detLikeAdj False Pl "wieviel").s ! g ! NPC c ; n = Pl} ; + if_Subj = ss "wenn" ; + in8front_Prep = mkPrep "vor" P.dative ; + i_Pron = mkPronPers "ich" "mich" "mir" "meiner" "mein" Masc Sg P1 ; + in_Prep = mkPrep [] (NPP CInDat) ; + it_Pron = mkPronPers "es" "es" "ihm" "seiner" "sein" Neutr Sg P3 ; + less_CAdv = X.mkCAdv "weniger" "als" ; + many_Det = detLikeAdj False Pl "viel" ; + more_CAdv = X.mkCAdv "mehr" "als" ; + most_Predet = {s = appAdj (regA "meist") ; c = noCase ; a = PAgNone} ; + much_Det = detLikeAdj False 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 ; a = PAgNone} ; + no_Utt = ss "nein" ; +---b no_Phr = ss "nein" ; + on_Prep = mkPrep "auf" P.dative ; + or_Conj = {s1 = [] ; s2 = "oder" ; n = Sg} ; + otherwise_PConj = ss "sonst" ; + part_Prep = P.von_Prep ; -- mkPrep "von" P.dative ; + please_Voc = ss "bitte" ; + possess_Prep = P.von_Prep ;-- mkPrep "von" P.dative ; + 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 True Pl "einig" ; + someSg_Det = { + s,sp = \\g,c => + usePrepC c (\k -> "ein" + pronEnding ! GSg g ! k) ; ---- einer,eines + n = Sg ; + a = Strong ; + hasNum = True ; + isDef = False ; + } ; + something_NP = nameNounPhrase {s = \\_ => "etwas"} ; + somewhere_Adv = ss "irgendwo" ; + that_Quant = let + jener : Number => Gender => PCase => Str = \\n => (detLikeAdj True n "jen").s in + {s = \\_ => jener ; sp = jener ; a,aPl = 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 => PCase => Str = \\n => (detLikeAdj True n "dies").s in + {s = \\_ => dieser ; sp = dieser ; a,aPl = 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" P.accusative ; + too_AdA = ss "zu" ; + to_Prep = mkPrep "nach" P.dative ; + under_Prep = mkPrep "unter" P.dative ; + 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,g,c => (detLikeAdj True n "welch").s ! g ! NPC c} ; + + whoSg_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Sg} ; + whoPl_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Pl} ; + why_IAdv = ss "warum" ; + without_Prep = mkPrep "ohne" P.accusative ; + with_Prep = mkPrep "mit" P.dative ; + 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 ; a = PAgNone} ; + no_Quant = let + keiner : Number => Gender => PCase => Str = table { + Sg => \\g,c => usePrepC c (\k -> "kein" + pronEnding ! GSg g ! k) ; + Pl => (detLikeAdj False Pl "kein").s + } + in + {s = \\_ => keiner ; sp = keiner ; a = Strong ; aPl = Weak} ; ---- 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" P.dative ; + + as_CAdv = X.mkCAdv "ebenso" "wie" ; + have_V2 = P.dirV2 IrregGer.haben_V ; + that_Subj = ss "daß" ; + + lin language_title_Utt = ss "Deutsch" ; + } diff --git a/lib/src/german/ParseGer.gf b/lib/src/german/ParseGer.gf index b18d73f2b..bb5646c62 100644 --- a/lib/src/german/ParseGer.gf +++ b/lib/src/german/ParseGer.gf @@ -12,8 +12,6 @@ concrete ParseGer of ParseEngAbs = PhraseGer, SentenceGer, RelativeGer, --- LexiconGer, --- StructuralGer, IdiomGer [NP, VP, Tense, Cl, ProgrVP, ExistNP], ExtraGer [NP, Quant, VPSlash, VP, Tense, GenNP, PassVPSlash, Temp, Pol, Conj, VPS, ListVPS, S, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS,