From 8ee66b41d329565ff6c0b8c039a990019bbd9aba Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 9 Jan 2004 14:34:30 +0000 Subject: [PATCH] Finished Finnish and German. --- lib/resource-0.6/finnish/MorphoFin.gf | 40 +++++++++++++++++++++++ lib/resource-0.6/finnish/ParadigmsFin.gf | 6 ++-- lib/resource-0.6/finnish/ResourceFin.gf | 3 ++ lib/resource-0.6/finnish/StructuralFin.gf | 26 +++++++++++++++ lib/resource-0.6/german/ParadigmsGer.gf | 5 +-- lib/resource-0.6/german/ResourceGer.gf | 3 ++ lib/resource-0.6/german/StructuralGer.gf | 27 +++++++++++++++ lib/resource-0.6/german/SyntaxGer.gf | 8 ++++- lib/resource-0.6/swedish/StructuralSwe.gf | 3 +- 9 files changed, 114 insertions(+), 7 deletions(-) create mode 100644 lib/resource-0.6/finnish/ResourceFin.gf create mode 100644 lib/resource-0.6/german/ResourceGer.gf diff --git a/lib/resource-0.6/finnish/MorphoFin.gf b/lib/resource-0.6/finnish/MorphoFin.gf index aa1e3a77c..66400574d 100644 --- a/lib/resource-0.6/finnish/MorphoFin.gf +++ b/lib/resource-0.6/finnish/MorphoFin.gf @@ -566,6 +566,46 @@ getHarmony : Str -> Str = \u -> } } ; + mikaanPron : Number => Case => Str = \\n,c => + case of { + => "mikään" ; + <_,Part> => "mitään" ; + => "minkään" ; + => "mitkään" ; + => "mittenkään" ; + <_,Ess> => "minään" ; + <_,Iness> => "missään" ; + <_,Elat> => "mistään" ; + <_,Adess> => "millään" ; + <_,Ablat> => "miltään" ; + _ => mikaInt ! n ! c + "kään" + } ; + + kukaanPron : Number => Case => Str = + table { + Sg => table { + Nom => "kukaan" ; + Part => "ketään" ; + Ess => "kenään" ; + Iness => "kessään" ; + Elat => "kestään" ; + Illat => "kehenkään" ; + Adess => "kellään" ; + Ablat => "keltään" ; + c => kukaInt ! Sg ! c + "kään" + } ; + Pl => table { + Nom => "ketkään" ; + Part => "keitään" ; + Ess => "keinään" ; + Iness => "keissään" ; + Elat => "keistään" ; + Adess => "keillään" ; + Ablat => "keiltään" ; + c => kukaInt ! Pl ! c + "kään" + } + } ; + jokuPron : Number => Case => Str = let ku = sPuu "ku" ; diff --git a/lib/resource-0.6/finnish/ParadigmsFin.gf b/lib/resource-0.6/finnish/ParadigmsFin.gf index a970c4d85..9e5ebbf80 100644 --- a/lib/resource-0.6/finnish/ParadigmsFin.gf +++ b/lib/resource-0.6/finnish/ParadigmsFin.gf @@ -7,7 +7,7 @@ -- expressions of basic categories: nouns, adjectives, verbs. -- -- Closed categories (determiners, pronouns, conjunctions) are --- accessed through the resource syntax API, $resource.Abs.gf$. +-- accessed through the resource syntax API, $Structural.gf$. -- -- The main difference with $morpho.Fin.gf$ is that the types -- referred to are compiled resource grammar types. We have moreover @@ -19,7 +19,7 @@ -- -- The following modules are presupposed: -resource ParadigmsFin = open (Predef=Predef), Prelude, SyntaxFin, Finnish in { +resource ParadigmsFin = open (Predef=Predef), Prelude, SyntaxFin, ResourceFin in { --2 Parameters -- @@ -241,7 +241,7 @@ oper fGen = \n -> mkFun n genitive ; mkPN n = mkProperName n ** {lock_PN = <>} ; - mkAdj1 = \x -> {s = x.s ; lock_Adj1 = <>} ; + mkAdj1 = \x -> noun2adj x ** {lock_Adj1 = <>} ; mkAdj2 = \x,c -> mkAdj1 x ** {c = NPCase c ; lock_Adj2 = <>} ; mkAdjDeg x y z = regAdjDegr x y z ** {lock_AdjDeg = <>} ; diff --git a/lib/resource-0.6/finnish/ResourceFin.gf b/lib/resource-0.6/finnish/ResourceFin.gf new file mode 100644 index 000000000..9a7e75421 --- /dev/null +++ b/lib/resource-0.6/finnish/ResourceFin.gf @@ -0,0 +1,3 @@ +--# -path=.:../abstract:../../prelude + +resource ResourceFin = reuse StructuralFin ; diff --git a/lib/resource-0.6/finnish/StructuralFin.gf b/lib/resource-0.6/finnish/StructuralFin.gf index 6e9e5b86c..8466234a2 100644 --- a/lib/resource-0.6/finnish/StructuralFin.gf +++ b/lib/resource-0.6/finnish/StructuralFin.gf @@ -45,6 +45,19 @@ concrete StructuralFin of Structural = p = NP3 } ; +--- This two don't work in Finnish except out of context +--- ("kenet tapasitte - emme ketään"). + + NobodyNP = { + s = \\f => "ei" ++ kukaanPron ! Sg ! (npForm2Case Sg f) ; + n = Sg ; + p = NP3 + } ; + NothingNP = { + s = \\f => "ei" ++ mikaanPron ! Sg ! (npForm2Case Sg f) ; + n = Sg ; + p = NP3 + } ; EveryDet = jokainenDet ; AllDet = mkDeterminer singular (kaikkiPron Sg) ; @@ -56,6 +69,17 @@ concrete StructuralFin of Structural = ManyDet = mkDeterminer singular moniPron ; MuchDet = mkDeterminer singular (caseTable singular (sNauris "runsasta")) ; +--- The following 4 only work this way in Finnish if used outside sentences +--- with a verb. + + AnyDet = mkDeterminerGen Sg (mikaanPron ! Sg) (kukaanPron ! Sg) ; + AnysDet n = mkDeterminerGenNum n (mikaanPron ! Pl) (kukaanPron ! Pl) ; + NoDet = mkDeterminerGen Sg + (\\c => "ei" ++ mikaanPron ! Sg ! c) + (\\c => "ei" ++ kukaanPron ! Sg ! c) ; + NosDet n = mkDeterminerGenNum n + (\\c => "ei" ++ mikaanPron ! Pl ! c) + (\\c => "ei" ++ kukaanPron ! Pl ! c) ; ThisDet = mkDeterminer Sg (\\c => pronTama.s ! PCase c) ; ThatDet = mkDeterminer Sg (\\c => pronTuo.s ! PCase c) ; @@ -65,6 +89,8 @@ concrete StructuralFin of Structural = SomeDet = mkDeterminerGen Sg (jokinPron ! Sg) (jokuPron ! Sg) ; SomesDet n = mkDeterminerGenNum n (jokinPron ! Pl) (jokuPron ! Pl) ; +--- These two don't work in Finnish sentences. + HowIAdv = ss "kuinka" ; WhenIAdv = ss "koska" ; diff --git a/lib/resource-0.6/german/ParadigmsGer.gf b/lib/resource-0.6/german/ParadigmsGer.gf index 1bfeb3fe6..0379456ec 100644 --- a/lib/resource-0.6/german/ParadigmsGer.gf +++ b/lib/resource-0.6/german/ParadigmsGer.gf @@ -18,7 +18,8 @@ -- -- The following modules are presupposed: -resource Paradigms = open (Predef=Predef), Prelude, (Morpho=Morpho), Syntax, Deutsch in { +resource ParadigmsGer = open (Predef=Predef), Prelude, + (Morpho=MorphoGer), SyntaxGer, ResourceGer in { --2 Parameters @@ -304,7 +305,7 @@ oper mkV3 v s c t d = mkDitransVerb v s c t d ** {lock_V3 = <>} ; mkAdV a = ss a ** {lock_AdV = <>} ; - mkPP x y z = prepPhrase x y z ** {lock_AdV = <>}; + mkPP x y = PrepNP {s = y ; c = x ; lock_Prep = <>} ; mkAdA a = ss a ** {lock_AdA = <>} ; mkAdS a = ss a ** {lock_AdS = <>} ; } ; diff --git a/lib/resource-0.6/german/ResourceGer.gf b/lib/resource-0.6/german/ResourceGer.gf new file mode 100644 index 000000000..6f9163e67 --- /dev/null +++ b/lib/resource-0.6/german/ResourceGer.gf @@ -0,0 +1,3 @@ +--# -path=.:../abstract:../../prelude + +resource ResourceGer = reuse StructuralGer ; diff --git a/lib/resource-0.6/german/StructuralGer.gf b/lib/resource-0.6/german/StructuralGer.gf index fbde504ba..e77385227 100644 --- a/lib/resource-0.6/german/StructuralGer.gf +++ b/lib/resource-0.6/german/StructuralGer.gf @@ -33,13 +33,30 @@ lin ItNP = pronNounPhrase pronEs ; ThisNP = nameNounPhrase {s = dieserDet.s ! Neut} ; --- ThatNP = nameNounPhrase {s = jenerDet.s ! Neut} ; --- + TheseNP nu = let diese = caselist "diese" "diese" "diesen" "diesen" in + normalNounPhrase (\\c => diese ! c ++ nu.s) plural ; + ThoseNP nu = let jene = caselist "jene" "jene" "jenen" "jenen" in + normalNounPhrase (\\c => jene ! c ++ nu.s) plural ; + AnyDet = detLikeAdj "irgendwelch" ; + AnysDet nu = mkDeterminerNumReg nu "irgendwelche" Weak ; EveryDet = jederDet ; AllDet = allesDet ; AllsDet = alleDet ; WhichDet = welcherDet ; WhichsDet = welcheDet ; MostDet = meistDet ; + MostsDet = meisteDet ; + ManyDet = mkDeterminerPl (caselist "viele" "viele" "vielen" "vieler") Strong ; + MuchDet = detLikeAdj "viel" ; + NoDet = keinDet ; + NosDet nu = mkDeterminerNumReg nu "keine" Strong ; + SomeDet = einDet ; --- + SomesDet nu = mkDeterminerNumReg nu "einige" Strong ; + ThatDet = detLikeAdj "jen" ; + ThisDet = detLikeAdj "dies" ; + TheseDet nu = mkDeterminerNumReg nu "diese" Strong ; + ThoseDet nu = mkDeterminerNumReg nu "jene" Strong ; HowIAdv = ss "wie" ; WhenIAdv = ss "wann" ; @@ -62,6 +79,16 @@ lin OtherwiseAdv = ss "sonst" ; ThereforeAdv = ss "deshalb" ; + EverybodyNP = nameNounPhrase + {s = caselist "jeder" "jeden" "jedem" "jedes"} ; + SomebodyNP = nameNounPhrase + {s = caselist "jemand" "jemanden" "jemandem" "jemands"} ; + NobodyNP = nameNounPhrase + {s = caselist "niemand" "niemanden" "niemandem" "niemands"} ; + EverythingNP = nameNounPhrase + {s = caselist "alles" "alles" "allem" "alles"} ; + SomethingNP = nameNounPhrase {s = \\_ => "etwas"} ; + NothingNP = nameNounPhrase {s = \\_ => "nichts"} ; CanVV = diff --git a/lib/resource-0.6/german/SyntaxGer.gf b/lib/resource-0.6/german/SyntaxGer.gf index 02c8f93d2..486447368 100644 --- a/lib/resource-0.6/german/SyntaxGer.gf +++ b/lib/resource-0.6/german/SyntaxGer.gf @@ -142,6 +142,8 @@ oper mkDeterminerNum : Numeral -> DetPl -> Adjf -> Determiner = \nu,alle,a -> {s = \\_,c => alle ! c ++ nu.s ; n = Pl ; a = a} ; + mkDeterminerNumReg : Numeral -> Str -> Adjf -> Determiner = \nu,alle,a -> + mkDeterminerNum nu (caselist alle alle (alle + "n") (alle + "n")) a ; detLikeAdj : Str -> Determiner = \jed -> mkDeterminerSg (\\g,c => (adjReg jed).s ! AMod Strong (GSg g) c) Weak ; @@ -153,11 +155,15 @@ oper alleDet : Numeral -> Determiner = \n -> mkDeterminerNum n (caselist "alle" "alle" "allen" "aller") Weak ; einDet = mkDeterminerSg artIndef Strong ; + keinDet = mkDeterminerSg (\\g,c => "k" + artIndef ! g ! c) Strong ; derDet = mkDeterminerSg (table {g => artDef ! GSg g}) Weak ; dieDet : Numeral -> Determiner = \nu -> mkDeterminerNum nu (artDef ! GPl) Weak ; - meistDet = mkDeterminerPl (table {c => artDef ! GPl ! c ++ "meisten"}) Weak ; + meistDet = mkDeterminerSg + (\\g,c => artDef ! GSg g ! c ++ (adjReg "meist").s ! AMod Weak (GSg g) c) Weak ; + meisteDet = mkDeterminerPl + (\\c => artDef ! GPl ! c ++ "meisten") Weak ; welcherDet = detLikeAdj "welch" ; welcheDet : Numeral -> Determiner = \n -> mkDeterminerNum n (caselist "welche" "welche" "welchen" "welcher") Weak ; diff --git a/lib/resource-0.6/swedish/StructuralSwe.gf b/lib/resource-0.6/swedish/StructuralSwe.gf index df49c58bf..9fb218439 100644 --- a/lib/resource-0.6/swedish/StructuralSwe.gf +++ b/lib/resource-0.6/swedish/StructuralSwe.gf @@ -67,7 +67,8 @@ concrete StructuralSwe of Structural = OtherwiseAdv = ss "annars" ; ThereforeAdv = ss "därför" ; - EverybodyNP = nameNounPhrase (mkProperName "alleman" Utr Masc) ; + EverybodyNP = let alla = table {Nom => "alla" ; Gen => "allas"} in + {s = \\c => alla ! npCase c ; g = Utr ; n = Pl} ; SomebodyNP = nameNounPhrase (mkProperName "någon" Utr Masc) ; NobodyNP = nameNounPhrase (mkProperName "ingen" Utr Masc) ; EverythingNP = nameNounPhrase (mkProperName "allting" Neutr NoMasc) ;