forked from GitHub/gf-core
Finished Finnish and German.
This commit is contained in:
@@ -566,6 +566,46 @@ getHarmony : Str -> Str = \u ->
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mikaanPron : Number => Case => Str = \\n,c =>
|
||||||
|
case <n,c> of {
|
||||||
|
<Sg,Nom> => "mikään" ;
|
||||||
|
<_,Part> => "mitään" ;
|
||||||
|
<Sg,Gen> => "minkään" ;
|
||||||
|
<Pl,Nom> => "mitkään" ;
|
||||||
|
<Pl,Gen> => "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 =
|
jokuPron : Number => Case => Str =
|
||||||
let
|
let
|
||||||
ku = sPuu "ku" ;
|
ku = sPuu "ku" ;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
-- expressions of basic categories: nouns, adjectives, verbs.
|
-- expressions of basic categories: nouns, adjectives, verbs.
|
||||||
--
|
--
|
||||||
-- Closed categories (determiners, pronouns, conjunctions) are
|
-- 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
|
-- The main difference with $morpho.Fin.gf$ is that the types
|
||||||
-- referred to are compiled resource grammar types. We have moreover
|
-- referred to are compiled resource grammar types. We have moreover
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
--
|
--
|
||||||
-- The following modules are presupposed:
|
-- 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
|
--2 Parameters
|
||||||
--
|
--
|
||||||
@@ -241,7 +241,7 @@ oper
|
|||||||
fGen = \n -> mkFun n genitive ;
|
fGen = \n -> mkFun n genitive ;
|
||||||
mkPN n = mkProperName n ** {lock_PN = <>} ;
|
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 = <>} ;
|
mkAdj2 = \x,c -> mkAdj1 x ** {c = NPCase c ; lock_Adj2 = <>} ;
|
||||||
mkAdjDeg x y z = regAdjDegr x y z ** {lock_AdjDeg = <>} ;
|
mkAdjDeg x y z = regAdjDegr x y z ** {lock_AdjDeg = <>} ;
|
||||||
|
|
||||||
|
|||||||
3
lib/resource-0.6/finnish/ResourceFin.gf
Normal file
3
lib/resource-0.6/finnish/ResourceFin.gf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--# -path=.:../abstract:../../prelude
|
||||||
|
|
||||||
|
resource ResourceFin = reuse StructuralFin ;
|
||||||
@@ -45,6 +45,19 @@ concrete StructuralFin of Structural =
|
|||||||
p = NP3
|
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 ;
|
EveryDet = jokainenDet ;
|
||||||
AllDet = mkDeterminer singular (kaikkiPron Sg) ;
|
AllDet = mkDeterminer singular (kaikkiPron Sg) ;
|
||||||
@@ -56,6 +69,17 @@ concrete StructuralFin of Structural =
|
|||||||
ManyDet = mkDeterminer singular moniPron ;
|
ManyDet = mkDeterminer singular moniPron ;
|
||||||
MuchDet = mkDeterminer singular (caseTable singular (sNauris "runsasta")) ;
|
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) ;
|
ThisDet = mkDeterminer Sg (\\c => pronTama.s ! PCase c) ;
|
||||||
ThatDet = mkDeterminer Sg (\\c => pronTuo.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) ;
|
SomeDet = mkDeterminerGen Sg (jokinPron ! Sg) (jokuPron ! Sg) ;
|
||||||
SomesDet n = mkDeterminerGenNum n (jokinPron ! Pl) (jokuPron ! Pl) ;
|
SomesDet n = mkDeterminerGenNum n (jokinPron ! Pl) (jokuPron ! Pl) ;
|
||||||
|
|
||||||
|
--- These two don't work in Finnish sentences.
|
||||||
|
|
||||||
|
|
||||||
HowIAdv = ss "kuinka" ;
|
HowIAdv = ss "kuinka" ;
|
||||||
WhenIAdv = ss "koska" ;
|
WhenIAdv = ss "koska" ;
|
||||||
|
|||||||
@@ -18,7 +18,8 @@
|
|||||||
--
|
--
|
||||||
-- The following modules are presupposed:
|
-- 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
|
--2 Parameters
|
||||||
@@ -304,7 +305,7 @@ oper
|
|||||||
mkV3 v s c t d = mkDitransVerb v s c t d ** {lock_V3 = <>} ;
|
mkV3 v s c t d = mkDitransVerb v s c t d ** {lock_V3 = <>} ;
|
||||||
|
|
||||||
mkAdV a = ss a ** {lock_AdV = <>} ;
|
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 = <>} ;
|
mkAdA a = ss a ** {lock_AdA = <>} ;
|
||||||
mkAdS a = ss a ** {lock_AdS = <>} ;
|
mkAdS a = ss a ** {lock_AdS = <>} ;
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
3
lib/resource-0.6/german/ResourceGer.gf
Normal file
3
lib/resource-0.6/german/ResourceGer.gf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--# -path=.:../abstract:../../prelude
|
||||||
|
|
||||||
|
resource ResourceGer = reuse StructuralGer ;
|
||||||
@@ -33,13 +33,30 @@ lin
|
|||||||
ItNP = pronNounPhrase pronEs ;
|
ItNP = pronNounPhrase pronEs ;
|
||||||
ThisNP = nameNounPhrase {s = dieserDet.s ! Neut} ; ---
|
ThisNP = nameNounPhrase {s = dieserDet.s ! Neut} ; ---
|
||||||
ThatNP = nameNounPhrase {s = jenerDet.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 ;
|
EveryDet = jederDet ;
|
||||||
AllDet = allesDet ;
|
AllDet = allesDet ;
|
||||||
AllsDet = alleDet ;
|
AllsDet = alleDet ;
|
||||||
WhichDet = welcherDet ;
|
WhichDet = welcherDet ;
|
||||||
WhichsDet = welcheDet ;
|
WhichsDet = welcheDet ;
|
||||||
MostDet = meistDet ;
|
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" ;
|
HowIAdv = ss "wie" ;
|
||||||
WhenIAdv = ss "wann" ;
|
WhenIAdv = ss "wann" ;
|
||||||
@@ -62,6 +79,16 @@ lin
|
|||||||
OtherwiseAdv = ss "sonst" ;
|
OtherwiseAdv = ss "sonst" ;
|
||||||
ThereforeAdv = ss "deshalb" ;
|
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 =
|
CanVV =
|
||||||
|
|||||||
@@ -142,6 +142,8 @@ oper
|
|||||||
|
|
||||||
mkDeterminerNum : Numeral -> DetPl -> Adjf -> Determiner = \nu,alle,a ->
|
mkDeterminerNum : Numeral -> DetPl -> Adjf -> Determiner = \nu,alle,a ->
|
||||||
{s = \\_,c => alle ! c ++ nu.s ; n = Pl ; a = 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
|
detLikeAdj : Str -> Determiner = \jed -> mkDeterminerSg
|
||||||
(\\g,c => (adjReg jed).s ! AMod Strong (GSg g) c) Weak ;
|
(\\g,c => (adjReg jed).s ! AMod Strong (GSg g) c) Weak ;
|
||||||
@@ -153,11 +155,15 @@ oper
|
|||||||
alleDet : Numeral -> Determiner = \n ->
|
alleDet : Numeral -> Determiner = \n ->
|
||||||
mkDeterminerNum n (caselist "alle" "alle" "allen" "aller") Weak ;
|
mkDeterminerNum n (caselist "alle" "alle" "allen" "aller") Weak ;
|
||||||
einDet = mkDeterminerSg artIndef Strong ;
|
einDet = mkDeterminerSg artIndef Strong ;
|
||||||
|
keinDet = mkDeterminerSg (\\g,c => "k" + artIndef ! g ! c) Strong ;
|
||||||
derDet = mkDeterminerSg (table {g => artDef ! GSg g}) Weak ;
|
derDet = mkDeterminerSg (table {g => artDef ! GSg g}) Weak ;
|
||||||
dieDet : Numeral -> Determiner = \nu ->
|
dieDet : Numeral -> Determiner = \nu ->
|
||||||
mkDeterminerNum nu (artDef ! GPl) Weak ;
|
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" ;
|
welcherDet = detLikeAdj "welch" ;
|
||||||
welcheDet : Numeral -> Determiner = \n ->
|
welcheDet : Numeral -> Determiner = \n ->
|
||||||
mkDeterminerNum n (caselist "welche" "welche" "welchen" "welcher") Weak ;
|
mkDeterminerNum n (caselist "welche" "welche" "welchen" "welcher") Weak ;
|
||||||
|
|||||||
@@ -67,7 +67,8 @@ concrete StructuralSwe of Structural =
|
|||||||
OtherwiseAdv = ss "annars" ;
|
OtherwiseAdv = ss "annars" ;
|
||||||
ThereforeAdv = ss "därför" ;
|
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) ;
|
SomebodyNP = nameNounPhrase (mkProperName "någon" Utr Masc) ;
|
||||||
NobodyNP = nameNounPhrase (mkProperName "ingen" Utr Masc) ;
|
NobodyNP = nameNounPhrase (mkProperName "ingen" Utr Masc) ;
|
||||||
EverythingNP = nameNounPhrase (mkProperName "allting" Neutr NoMasc) ;
|
EverythingNP = nameNounPhrase (mkProperName "allting" Neutr NoMasc) ;
|
||||||
|
|||||||
Reference in New Issue
Block a user