mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-24 03:52:50 -06:00
German preposition contractions
This commit is contained in:
@@ -9,11 +9,11 @@ concrete AdjectiveGer of Adjective = CatGer ** open ResGer, Prelude in {
|
|||||||
isPre = True
|
isPre = True
|
||||||
} ;
|
} ;
|
||||||
ComparA a np = {
|
ComparA a np = {
|
||||||
s = \\af => a.s ! Compar ! af ++ conjThan ++ np.s ! Nom ;
|
s = \\af => a.s ! Compar ! af ++ conjThan ++ np.s ! NPC Nom ;
|
||||||
isPre = True
|
isPre = True
|
||||||
} ;
|
} ;
|
||||||
CAdvAP ad ap np = {
|
CAdvAP ad ap np = {
|
||||||
s = \\af => ad.s ++ ap.s ! af ++ ad.p ++ np.s ! Nom ;
|
s = \\af => ad.s ++ ap.s ! af ++ ad.p ++ np.s ! NPC Nom ;
|
||||||
isPre = False
|
isPre = False
|
||||||
} ;
|
} ;
|
||||||
UseComparA a = {
|
UseComparA a = {
|
||||||
@@ -33,7 +33,8 @@ concrete AdjectiveGer of Adjective = CatGer ** open ResGer, Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
ReflA2 a = {
|
ReflA2 a = {
|
||||||
s = \\af => a.s ! Posit ! APred ++ appPrep a.c2 (reflPron ! agrP3 Sg) ; --- agr
|
s = \\af => a.s ! Posit ! APred ++
|
||||||
|
appPrep a.c2 (\\k => usePrepC k (\c -> reflPron ! agrP3 Sg ! c)) ; --- agr
|
||||||
isPre = True
|
isPre = True
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ concrete AdverbGer of Adverb = CatGer ** open ResGer, Prelude in {
|
|||||||
PositAdvAdj a = {s = a.s ! Posit ! APred} ;
|
PositAdvAdj a = {s = a.s ! Posit ! APred} ;
|
||||||
|
|
||||||
ComparAdvAdj cadv a np = {
|
ComparAdvAdj cadv a np = {
|
||||||
s = cadv.s ++ a.s ! Posit ! APred ++ cadv.p ++ np.s ! Nom
|
s = cadv.s ++ a.s ! Posit ! APred ++ cadv.p ++ np.s ! NPC Nom
|
||||||
} ;
|
} ;
|
||||||
ComparAdvAdjS cadv a s = {
|
ComparAdvAdjS cadv a s = {
|
||||||
s = cadv.s ++ a.s ! Posit ! APred ++ cadv.p ++ s.s ! Sub
|
s = cadv.s ++ a.s ! Posit ! APred ++ cadv.p ++ s.s ! Sub
|
||||||
|
|||||||
@@ -48,16 +48,16 @@ concrete CatGer of Cat =
|
|||||||
-- Noun
|
-- Noun
|
||||||
|
|
||||||
CN = {s : Adjf => Number => Case => Str ; g : Gender} ;
|
CN = {s : Adjf => Number => Case => Str ; g : Gender} ;
|
||||||
NP = {s : Case => Str ; a : Agr} ;
|
NP = {s : PCase => Str ; a : Agr} ;
|
||||||
Pron = {s : NPForm => Str ; a : Agr} ;
|
Pron = {s : NPForm => Str ; a : Agr} ;
|
||||||
Det = {s,sp : Gender => Case => Str ; n : Number ; a : Adjf} ;
|
Det = {s,sp : Gender => PCase => Str ; n : Number ; a : Adjf} ;
|
||||||
Quant = {
|
Quant = {
|
||||||
s : Bool => Number => Gender => Case => Str ;
|
s : Bool => Number => Gender => PCase => Str ;
|
||||||
sp : Number => Gender => Case => Str ;
|
sp : Number => Gender => PCase => Str ;
|
||||||
a : Adjf
|
a : Adjf
|
||||||
} ;
|
} ;
|
||||||
Predet = {
|
Predet = {
|
||||||
s : Number => Gender => Case => Str ;
|
s : Number => Gender => PCase => Str ;
|
||||||
c : {p : Str ; k : PredetCase} ;
|
c : {p : Str ; k : PredetCase} ;
|
||||||
a : PredetAgr -- if an agr is forced, e.g. jeder von uns ist ...
|
a : PredetAgr -- if an agr is forced, e.g. jeder von uns ist ...
|
||||||
} ;
|
} ;
|
||||||
@@ -74,7 +74,7 @@ concrete CatGer of Cat =
|
|||||||
|
|
||||||
Conj = {s1,s2 : Str ; n : Number} ;
|
Conj = {s1,s2 : Str ; n : Number} ;
|
||||||
Subj = {s : Str} ;
|
Subj = {s : Str} ;
|
||||||
Prep = {s : Str ; c : Case} ;
|
Prep = {s : Str ; c : PCase} ;
|
||||||
|
|
||||||
-- Open lexical classes, e.g. Lexicon
|
-- Open lexical classes, e.g. Lexicon
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ concrete ConjunctionGer of Conjunction =
|
|||||||
|
|
||||||
ConjAdv conj ss = conjunctDistrSS conj ss ;
|
ConjAdv conj ss = conjunctDistrSS conj ss ;
|
||||||
|
|
||||||
ConjNP conj ss = conjunctDistrTable Case conj ss ** {
|
ConjNP conj ss = conjunctDistrTable PCase conj ss ** {
|
||||||
a = Ag Fem (conjNumber conj.n (numberAgr ss.a)) (personAgr ss.a)
|
a = Ag Fem (conjNumber conj.n (numberAgr ss.a)) (personAgr ss.a)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -28,8 +28,8 @@ concrete ConjunctionGer of Conjunction =
|
|||||||
ConsS = consrTable Order comma ;
|
ConsS = consrTable Order comma ;
|
||||||
BaseAdv = twoSS ;
|
BaseAdv = twoSS ;
|
||||||
ConsAdv = consrSS comma ;
|
ConsAdv = consrSS comma ;
|
||||||
BaseNP x y = twoTable Case x y ** {a = conjAgr x.a y.a} ;
|
BaseNP x y = twoTable PCase x y ** {a = conjAgr x.a y.a} ;
|
||||||
ConsNP xs x = consrTable Case comma xs x ** {a = conjAgr xs.a x.a} ;
|
ConsNP xs x = consrTable PCase comma xs x ** {a = conjAgr xs.a x.a} ;
|
||||||
BaseAP x y = twoTable AForm x y ** {isPre = andB x.isPre y.isPre} ;
|
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} ;
|
ConsAP xs x = consrTable AForm comma xs x ** {isPre = andB xs.isPre x.isPre} ;
|
||||||
BaseRS x y = twoTable GenNum x y ** {c = y.c} ;
|
BaseRS x y = twoTable GenNum x y ** {c = y.c} ;
|
||||||
@@ -38,7 +38,7 @@ concrete ConjunctionGer of Conjunction =
|
|||||||
lincat
|
lincat
|
||||||
[S] = {s1,s2 : Order => Str} ;
|
[S] = {s1,s2 : Order => Str} ;
|
||||||
[Adv] = {s1,s2 : Str} ;
|
[Adv] = {s1,s2 : Str} ;
|
||||||
[NP] = {s1,s2 : Case => Str ; a : Agr} ;
|
[NP] = {s1,s2 : PCase => Str ; a : Agr} ;
|
||||||
[AP] = {s1,s2 : AForm => Str ; isPre : Bool} ;
|
[AP] = {s1,s2 : AForm => Str ; isPre : Bool} ;
|
||||||
[RS] = {s1,s2 : GenNum => Str ; c : Case} ;
|
[RS] = {s1,s2 : GenNum => Str ; c : Case} ;
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ concrete IdiomGer of Idiom = CatGer **
|
|||||||
|
|
||||||
CleftNP np rs = mkClause "es" (agrP3 Sg)
|
CleftNP np rs = mkClause "es" (agrP3 Sg)
|
||||||
(insertExtrapos (rs.s ! gennum (genderAgr np.a) (numberAgr np.a)) ----
|
(insertExtrapos (rs.s ! gennum (genderAgr np.a) (numberAgr np.a)) ----
|
||||||
(insertObj (\\_ => np.s ! rs.c) (predV MorphoGer.sein_V))) ;
|
(insertObj (\\_ => np.s ! NPC rs.c) (predV MorphoGer.sein_V))) ;
|
||||||
|
|
||||||
CleftAdv ad s = mkClause "es" (agrP3 Sg)
|
CleftAdv ad s = mkClause "es" (agrP3 Sg)
|
||||||
(insertExtrapos (conjThat ++ s.s ! Sub)
|
(insertExtrapos (conjThat ++ s.s ! Sub)
|
||||||
@@ -41,7 +41,7 @@ concrete IdiomGer of Idiom = CatGer **
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
ImpP3 np vp = {
|
ImpP3 np vp = {
|
||||||
s = (mkClause (np.s ! Nom) np.a vp).s !
|
s = (mkClause (np.s ! NPC Nom) np.a vp).s !
|
||||||
MConjunct ! Pres ! Simul ! Pos ! Inv
|
MConjunct ! Pres ! Simul ! Pos ! Inv
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ oper
|
|||||||
c = noCase ;
|
c = noCase ;
|
||||||
a = PAgNone
|
a = PAgNone
|
||||||
} ;
|
} ;
|
||||||
mkPredet : A -> Str -> Case -> Bool -> Number -> Predet = \a,p,c,b,n ->
|
mkPredet : A -> Str -> PCase -> Bool -> Number -> Predet = \a,p,c,b,n ->
|
||||||
lin Predet {
|
lin Predet {
|
||||||
s = appAdj a ;
|
s = appAdj a ;
|
||||||
c = {p = p ; k = PredCase c} ;
|
c = {p = p ; k = PredCase c} ;
|
||||||
|
|||||||
@@ -16,14 +16,16 @@ oper
|
|||||||
|
|
||||||
-- For $StructuralGer$.
|
-- For $StructuralGer$.
|
||||||
|
|
||||||
mkPrep : Str -> Case -> Preposition = \s,c ->
|
mkPrep : Str -> PCase -> Preposition = \s,c ->
|
||||||
{s = s ; c = c} ;
|
{s = s ; c = c} ;
|
||||||
|
|
||||||
nameNounPhrase : {s : Case => Str} -> {s : Case => Str ; a : Agr} = \name ->
|
nameNounPhrase : {s : Case => Str} -> {s : PCase => Str ; a : Agr} = \name -> {
|
||||||
name ** {a = agrP3 Sg} ;
|
s = \\c => usePrepC c (\k -> name.s ! k) ;
|
||||||
|
a = agrP3 Sg
|
||||||
|
} ;
|
||||||
|
|
||||||
detLikeAdj : Number -> Str ->
|
detLikeAdj : Number -> Str ->
|
||||||
{s,sp : Gender => Case => Str ; n : Number ; a : Adjf} = \n,dies ->
|
{s,sp : Gender => PCase => Str ; n : Number ; a : Adjf} = \n,dies ->
|
||||||
{s,sp = appAdj (regA dies) ! n ; n = n ; a = Weak} ;
|
{s,sp = appAdj (regA dies) ! n ; n = n ; a = Weak} ;
|
||||||
|
|
||||||
mkOrd : {s : Degree => AForm => Str} -> {s : AForm => Str} = \a ->
|
mkOrd : {s : Degree => AForm => Str} -> {s : AForm => Str} = \a ->
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in {
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
DetCN det cn = {
|
DetCN det cn = {
|
||||||
s = \\c => det.s ! cn.g ! c ++ cn.s ! adjfCase det.a c ! det.n ! c ;
|
s = \\c => det.s ! cn.g ! c ++
|
||||||
|
(let k = (prepC c).c in cn.s ! adjfCase det.a k ! det.n ! k) ;
|
||||||
a = agrgP3 cn.g det.n ;
|
a = agrgP3 cn.g det.n ;
|
||||||
isPron = False
|
isPron = False
|
||||||
} ;
|
} ;
|
||||||
@@ -15,10 +16,13 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in {
|
|||||||
isPron = False
|
isPron = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UsePN pn = pn ** {a = agrP3 Sg} ;
|
UsePN pn = {
|
||||||
|
s = \\c => usePrepC c (\k -> pn.s ! k) ;
|
||||||
|
a = agrP3 Sg
|
||||||
|
} ;
|
||||||
|
|
||||||
UsePron pron = {
|
UsePron pron = {
|
||||||
s = \\c => pron.s ! NPCase c ;
|
s = \\c => usePrepC c (\k -> pron.s ! NPCase k) ;
|
||||||
a = pron.a
|
a = pron.a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -45,10 +49,10 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in {
|
|||||||
n = num.n ;
|
n = num.n ;
|
||||||
a = quant.a
|
a = quant.a
|
||||||
in {
|
in {
|
||||||
s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++
|
s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++ (let k = (prepC c).c in
|
||||||
num.s!g!c ++ ord.s ! agrAdj g (adjfCase a c) n c ;
|
num.s!g!k ++ ord.s ! agrAdj g (adjfCase a k) n k) ;
|
||||||
sp = \\g,c => quant.sp ! n ! g ! c ++
|
sp = \\g,c => quant.sp ! n ! g ! c ++ (let k = (prepC c).c in
|
||||||
num.s!g!c ++ ord.s ! agrAdj g (adjfCase a c) n c ;
|
num.s!g!k ++ ord.s ! agrAdj g (adjfCase a k) n k) ;
|
||||||
n = n ;
|
n = n ;
|
||||||
a = a
|
a = a
|
||||||
} ;
|
} ;
|
||||||
@@ -58,16 +62,18 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in {
|
|||||||
n = num.n ;
|
n = num.n ;
|
||||||
a = quant.a
|
a = quant.a
|
||||||
in {
|
in {
|
||||||
s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++ num.s!g!c ;
|
s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++ (let k = (prepC c).c in
|
||||||
sp = \\g,c => quant.sp ! n ! g ! c ++ num.s!g!c ;
|
num.s!g!k) ;
|
||||||
|
sp = \\g,c => quant.sp ! n ! g ! c ++ (let k = (prepC c).c in
|
||||||
|
num.s!g!k) ;
|
||||||
n = n ;
|
n = n ;
|
||||||
a = a
|
a = a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
PossPron p = {
|
PossPron p = {
|
||||||
s = \\_,n,g,c => p.s ! NPPoss (gennum g n) c ;
|
s = \\_,n,g,c => usePrepC c (\k -> p.s ! NPPoss (gennum g n) k) ;
|
||||||
sp = \\n,g,c => p.s ! NPPoss (gennum g n) c ;
|
sp = \\n,g,c => usePrepC c (\k -> p.s ! NPPoss (gennum g n) k) ;
|
||||||
a = Strong --- need separately weak for Pl ?
|
a = Strong --- need separately weak for Pl ?
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -87,28 +93,28 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in {
|
|||||||
OrdSuperl a = {s = a.s ! Superl} ;
|
OrdSuperl a = {s = a.s ! Superl} ;
|
||||||
|
|
||||||
DefArt = {
|
DefArt = {
|
||||||
s = \\_,n,g,c => artDef ! gennum g n ! c ;
|
s = \\_,n,g,c => artDefContr (gennum g n) c ;
|
||||||
sp = \\n,g,c => artDef ! gennum g n ! c ; ---- deren, denem...
|
sp = \\n,g,c => artDefContr (gennum g n) c ; ---- deren, denem...
|
||||||
a = Weak
|
a = Weak
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IndefArt = {
|
IndefArt = {
|
||||||
s = table {
|
s = table {
|
||||||
True => \\_,_,_ => [] ;
|
True => \\_,_,c => usePrepC c (\k -> []) ;
|
||||||
False => table {
|
False => table {
|
||||||
Sg => \\g,c => "ein" + pronEnding ! GSg g ! c ;
|
Sg => \\g,c => usePrepC c (\k -> "ein" + pronEnding ! GSg g ! k) ;
|
||||||
Pl => \\_,_ => []
|
Pl => \\_,c => usePrepC c (\k -> [])
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
sp = table {
|
sp = table {
|
||||||
Sg => \\g,c => "ein" + pronEnding ! GSg g ! c ;
|
Sg => \\g,c => usePrepC c (\k -> "ein" + pronEnding ! GSg g ! k) ;
|
||||||
Pl => \\_ => caselist "einige" "einige" "einigen" "einiger"
|
Pl => \\_,c => usePrepC c (\k -> caselist "einige" "einige" "einigen" "einiger" ! k)
|
||||||
} ;
|
} ;
|
||||||
a = Strong
|
a = Strong
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
MassNP cn = {
|
MassNP cn = {
|
||||||
s = \\c => cn.s ! adjfCase Strong c ! Sg ! c ;
|
s = \\c => usePrepC c (\k -> cn.s ! adjfCase Strong k ! Sg ! k) ;
|
||||||
a = agrP3 Sg ;
|
a = agrP3 Sg ;
|
||||||
isPron = False
|
isPron = False
|
||||||
} ;
|
} ;
|
||||||
@@ -175,7 +181,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
ApposCN cn np = let g = cn.g in {
|
ApposCN cn np = let g = cn.g in {
|
||||||
s = \\a,n,c => cn.s ! a ! n ! c ++ np.s ! c ;
|
s = \\a,n,c => cn.s ! a ! n ! c ++ np.s ! NPC c ;
|
||||||
g = g ;
|
g = g ;
|
||||||
isMod = cn.isMod
|
isMod = cn.isMod
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -47,6 +47,11 @@ oper
|
|||||||
dative : Case ;
|
dative : Case ;
|
||||||
genitive : Case ;
|
genitive : Case ;
|
||||||
|
|
||||||
|
anDat_Case : Case ;
|
||||||
|
inAcc_Case : Case ;
|
||||||
|
inDat_Case : Case ;
|
||||||
|
zuDat_Case : Case ;
|
||||||
|
|
||||||
-- To abstract over number names, we define the following.
|
-- To abstract over number names, we define the following.
|
||||||
|
|
||||||
Number : Type ;
|
Number : Type ;
|
||||||
@@ -156,7 +161,7 @@ mkN : overload {
|
|||||||
|
|
||||||
-- A preposition is formed from a string and a case.
|
-- A preposition is formed from a string and a case.
|
||||||
|
|
||||||
mkPrep : Str -> Case -> Prep ;
|
mkPrep : Str -> PCase -> Prep ;
|
||||||
|
|
||||||
-- Often just a case with the empty string is enough.
|
-- Often just a case with the empty string is enough.
|
||||||
|
|
||||||
@@ -164,10 +169,13 @@ mkN : overload {
|
|||||||
datPrep : Prep ;
|
datPrep : Prep ;
|
||||||
genPrep : Prep ;
|
genPrep : Prep ;
|
||||||
|
|
||||||
-- A couple of common prepositions (always with the dative).
|
-- A couple of common prepositions (the first two always with the dative).
|
||||||
|
|
||||||
von_Prep : Prep ;
|
von_Prep : Prep ;
|
||||||
zu_Prep : Prep ;
|
zu_Prep : Prep ;
|
||||||
|
anDat_Prep : Prep ;
|
||||||
|
inDat_Prep : Prep ;
|
||||||
|
inAcc_Prep : Prep ;
|
||||||
|
|
||||||
--2 Verbs
|
--2 Verbs
|
||||||
|
|
||||||
@@ -287,15 +295,20 @@ mkV2 : overload {
|
|||||||
|
|
||||||
|
|
||||||
Gender = MorphoGer.Gender ;
|
Gender = MorphoGer.Gender ;
|
||||||
Case = MorphoGer.Case ;
|
Case = MorphoGer.PCase ;
|
||||||
Number = MorphoGer.Number ;
|
Number = MorphoGer.Number ;
|
||||||
masculine = Masc ;
|
masculine = Masc ;
|
||||||
feminine = Fem ;
|
feminine = Fem ;
|
||||||
neuter = Neutr ;
|
neuter = Neutr ;
|
||||||
nominative = Nom ;
|
nominative = NPC Nom ;
|
||||||
accusative = Acc ;
|
accusative = NPC Acc ;
|
||||||
dative = Dat ;
|
dative = NPC Dat ;
|
||||||
genitive = Gen ;
|
genitive = NPC Gen ;
|
||||||
|
anDat_Case = NPP CAnDat ;
|
||||||
|
inAcc_Case = NPP CInAcc ;
|
||||||
|
inDat_Case = NPP CInDat ;
|
||||||
|
zuDat_Case = NPP CZuDat ;
|
||||||
|
|
||||||
singular = Sg ;
|
singular = Sg ;
|
||||||
plural = Pl ;
|
plural = Pl ;
|
||||||
|
|
||||||
@@ -386,7 +399,11 @@ mkV2 : overload {
|
|||||||
datPrep = mkPrep [] dative ;
|
datPrep = mkPrep [] dative ;
|
||||||
genPrep = mkPrep [] genitive ;
|
genPrep = mkPrep [] genitive ;
|
||||||
von_Prep = mkPrep "von" dative ;
|
von_Prep = mkPrep "von" dative ;
|
||||||
zu_Prep = mkPrep "zu" dative ;
|
zu_Prep = mkPrep [] zuDat_Case ;
|
||||||
|
anDat_Prep = mkPrep [] anDat_Case ;
|
||||||
|
inDat_Prep = mkPrep [] inDat_Case ;
|
||||||
|
inAcc_Prep = mkPrep [] inAcc_Case ;
|
||||||
|
|
||||||
|
|
||||||
mk6V geben gibt gib gab gaebe gegeben =
|
mk6V geben gibt gib gab gaebe gegeben =
|
||||||
let
|
let
|
||||||
@@ -424,7 +441,7 @@ mkV2 : overload {
|
|||||||
seinV v =
|
seinV v =
|
||||||
{s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VSein ; vtype = v.vtype} ;
|
{s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VSein ; vtype = v.vtype} ;
|
||||||
reflV v c =
|
reflV v c =
|
||||||
{s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VHaben ; vtype = VRefl c} ;
|
{s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VHaben ; vtype = VRefl (prepC c).c} ;
|
||||||
|
|
||||||
no_geV v = let vs = v.s in {
|
no_geV v = let vs = v.s in {
|
||||||
s = table {
|
s = table {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ concrete PhraseGer of Phrase = CatGer ** open Prelude, ResGer in {
|
|||||||
|
|
||||||
UttIP ip = {s = ip.s ! Nom} ; --- Acc also
|
UttIP ip = {s = ip.s ! Nom} ; --- Acc also
|
||||||
UttIAdv iadv = iadv ;
|
UttIAdv iadv = iadv ;
|
||||||
UttNP np = {s = np.s ! Nom} ;
|
UttNP np = {s = np.s ! NPC Nom} ;
|
||||||
UttVP vp = {s = useInfVP True vp} ; -- without zu
|
UttVP vp = {s = useInfVP True vp} ; -- without zu
|
||||||
UttAdv adv = adv ;
|
UttAdv adv = adv ;
|
||||||
UttCN n = {s = n.s ! Strong ! Sg ! Nom} ;
|
UttCN n = {s = n.s ! Strong ! Sg ! Nom} ;
|
||||||
@@ -24,6 +24,6 @@ concrete PhraseGer of Phrase = CatGer ** open Prelude, ResGer in {
|
|||||||
PConjConj conj = ss (conj.s2) ;
|
PConjConj conj = ss (conj.s2) ;
|
||||||
|
|
||||||
NoVoc = {s = []} ;
|
NoVoc = {s = []} ;
|
||||||
VocNP np = {s = "," ++ np.s ! Nom} ;
|
VocNP np = {s = "," ++ np.s ! NPC Nom} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ concrete QuestionGer of Question = CatGer ** open ResGer in {
|
|||||||
s = \\m,t,a,p =>
|
s = \\m,t,a,p =>
|
||||||
let
|
let
|
||||||
cls = slash.s ! m ! t ! a ! p ;
|
cls = slash.s ! m ! t ! a ! p ;
|
||||||
who = appPrep slash.c2 ip.s
|
who = appPrep slash.c2 (\\k => usePrepC k (\c -> ip.s ! c)) ;
|
||||||
in table {
|
in table {
|
||||||
QDir => who ++ cls ! Inv ;
|
QDir => who ++ cls ! Inv ;
|
||||||
QIndir => who ++ cls ! Sub
|
QIndir => who ++ cls ! Sub
|
||||||
@@ -50,7 +50,7 @@ concrete QuestionGer of Question = CatGer ** open ResGer in {
|
|||||||
s = \\m,t,a,p =>
|
s = \\m,t,a,p =>
|
||||||
let
|
let
|
||||||
vp = predV sein_V ;
|
vp = predV sein_V ;
|
||||||
cls = (mkClause (np.s ! Nom) np.a vp).s ! m ! t ! a ! p ;
|
cls = (mkClause (np.s ! NPC Nom) np.a vp).s ! m ! t ! a ! p ;
|
||||||
why = icomp.s ! np.a
|
why = icomp.s ! np.a
|
||||||
in table {
|
in table {
|
||||||
QDir => why ++ cls ! Inv ;
|
QDir => why ++ cls ! Inv ;
|
||||||
@@ -59,7 +59,7 @@ concrete QuestionGer of Question = CatGer ** open ResGer in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
PrepIP p ip = {
|
PrepIP p ip = {
|
||||||
s = appPrep p ip.s
|
s = appPrep p (\\k => usePrepC k (\c -> ip.s ! c)) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdvIP ip adv = {
|
AdvIP ip adv = {
|
||||||
|
|||||||
@@ -24,12 +24,13 @@ concrete RelativeGer of Relative = CatGer ** open ResGer in {
|
|||||||
|
|
||||||
RelSlash rp slash = {
|
RelSlash rp slash = {
|
||||||
s = \\m,t,a,p,gn =>
|
s = \\m,t,a,p,gn =>
|
||||||
appPrep slash.c2 (rp.s ! gn) ++ slash.s ! m ! t ! a ! p ! Sub ;
|
appPrep slash.c2 (\\k => usePrepC k (\c -> rp.s ! gn ! c)) ++
|
||||||
c = slash.c2.c
|
slash.s ! m ! t ! a ! p ! Sub ;
|
||||||
|
c = (prepC slash.c2.c).c
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
FunRP p np rp = {
|
FunRP p np rp = {
|
||||||
s = \\gn,c => np.s ! c ++ appPrep p (rp.s ! gn) ;
|
s = \\gn,c => np.s ! NPC c ++ appPrep p (\\k => usePrepC k (\c -> rp.s ! gn ! c)) ;
|
||||||
a = RAg (numberAgr np.a) (personAgr np.a)
|
a = RAg (numberAgr np.a) (personAgr np.a)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,24 @@ resource ResGer = ParamX ** open Prelude in {
|
|||||||
|
|
||||||
Agr = Ag Gender Number Person ;
|
Agr = Ag Gender Number Person ;
|
||||||
|
|
||||||
|
-- Case of $NP$ extended to deal with contractions like "zur", "im".
|
||||||
|
|
||||||
|
PCase = NPC Case | NPP CPrep ;
|
||||||
|
CPrep = CAnDat | CInAcc | CInDat | CZuDat ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
NPNom : PCase = NPC Nom ;
|
||||||
|
prepC : PCase -> {s : Str ; c : Case} = \cp -> case cp of {
|
||||||
|
NPC c => {s = [] ; c = c} ;
|
||||||
|
NPP CAnDat => {s = "an" ; c = Dat} ;
|
||||||
|
NPP CInAcc => {s = "an" ; c = Acc} ;
|
||||||
|
NPP CInDat => {s = "in" ; c = Dat} ;
|
||||||
|
NPP CZuDat => {s = "zu" ; c = Dat}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
usePrepC : PCase -> (Case -> Str) -> Str = \c,fs ->
|
||||||
|
let sc = prepC c in sc.s ++ fs sc.c ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
mkAgr : {g : Gender ; n : Number ; p : Person} -> Agr = \r ->
|
mkAgr : {g : Gender ; n : Number ; p : Person} -> Agr = \r ->
|
||||||
Ag r.g r.n r.p ;
|
Ag r.g r.n r.p ;
|
||||||
@@ -50,7 +68,7 @@ resource ResGer = ParamX ** open Prelude in {
|
|||||||
-- sometimes forced ("jeder von Mwnschen").
|
-- sometimes forced ("jeder von Mwnschen").
|
||||||
|
|
||||||
param
|
param
|
||||||
PredetCase = NoCase | PredCase Case ;
|
PredetCase = NoCase | PredCase PCase ;
|
||||||
PredetAgr = PAg Number | PAgNone ;
|
PredetAgr = PAg Number | PAgNone ;
|
||||||
oper
|
oper
|
||||||
noCase : {p : Str ; k : PredetCase} = {p = [] ; k = NoCase} ;
|
noCase : {p : Str ; k : PredetCase} = {p = [] ; k = NoCase} ;
|
||||||
@@ -319,17 +337,17 @@ resource ResGer = ParamX ** open Prelude in {
|
|||||||
|
|
||||||
-- Prepositions for complements indicate the complement case.
|
-- Prepositions for complements indicate the complement case.
|
||||||
|
|
||||||
Preposition : Type = {s : Str ; c : Case} ;
|
Preposition : Type = {s : Str ; c : PCase} ;
|
||||||
|
|
||||||
-- To apply a preposition to a complement.
|
-- To apply a preposition to a complement.
|
||||||
|
|
||||||
appPrep : Preposition -> (Case => Str) -> Str = \prep,arg ->
|
appPrep : Preposition -> (PCase => Str) -> Str = \prep,arg ->
|
||||||
prep.s ++ arg ! prep.c ;
|
prep.s ++ arg ! prep.c ;
|
||||||
|
|
||||||
-- To build a preposition from just a case.
|
-- To build a preposition from just a case.
|
||||||
|
|
||||||
noPreposition : Case -> Preposition = \c ->
|
noPreposition : Case -> Preposition = \c ->
|
||||||
{s = [] ; c = c} ;
|
{s = [] ; c = NPC c} ;
|
||||||
|
|
||||||
-- Pronouns and articles
|
-- Pronouns and articles
|
||||||
-- Here we define personal and relative pronouns.
|
-- Here we define personal and relative pronouns.
|
||||||
@@ -349,28 +367,42 @@ resource ResGer = ParamX ** open Prelude in {
|
|||||||
pronEnding : GenNum => Case => Str = table {
|
pronEnding : GenNum => Case => Str = table {
|
||||||
GSg Masc => caselist "" "en" "em" "es" ;
|
GSg Masc => caselist "" "en" "em" "es" ;
|
||||||
GSg Fem => caselist "e" "e" "er" "er" ;
|
GSg Fem => caselist "e" "e" "er" "er" ;
|
||||||
GSg Neut => caselist "" "" "em" "es" ;
|
GSg Neutr => caselist "" "" "em" "es" ;
|
||||||
GPl => caselist "e" "e" "en" "er"
|
GPl => caselist "e" "e" "en" "er"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
artDef : GenNum => Case => Str = table {
|
artDef : GenNum => Case => Str = table {
|
||||||
GSg Masc => caselist "der" "den" "dem" "des" ;
|
GSg Masc => caselist "der" "den" "dem" "des" ;
|
||||||
GSg Fem => caselist "die" "die" "der" "der" ;
|
GSg Fem => caselist "die" "die" "der" "der" ;
|
||||||
GSg Neut => caselist "das" "das" "dem" "des" ;
|
GSg Neutr => caselist "das" "das" "dem" "des" ;
|
||||||
GPl => caselist "die" "die" "den" "der"
|
GPl => caselist "die" "die" "den" "der"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
artDefContr : GenNum -> PCase -> Str = \gn,np -> case np of {
|
||||||
|
NPC c => artDef ! gn ! c ;
|
||||||
|
NPP p => case <p,gn> of {
|
||||||
|
<CAnDat, GSg (Masc | Neutr)> => "am" ;
|
||||||
|
<CInAcc, GSg Neutr> => "ins" ;
|
||||||
|
<CInDat, GSg (Masc | Neutr)> => "im" ;
|
||||||
|
<CZuDat, GSg Masc> => "zum" ;
|
||||||
|
<CZuDat, GSg Neutr> => "zum" ;
|
||||||
|
<CZuDat, GSg Fem> => "zur" ;
|
||||||
|
_ => let sp = prepC np in sp.s ++ artDef ! gn ! sp.c
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
-- This is used when forming determiners that are like adjectives.
|
-- This is used when forming determiners that are like adjectives.
|
||||||
|
|
||||||
appAdj : Adjective -> Number => Gender => Case => Str = \adj ->
|
appAdj : Adjective -> Number => Gender => PCase => Str = \adj ->
|
||||||
let
|
let
|
||||||
ad : GenNum -> Case -> Str = \gn,c ->
|
ad : GenNum -> Case -> Str = \gn,c ->
|
||||||
adj.s ! Posit ! AMod gn c
|
adj.s ! Posit ! AMod gn c
|
||||||
in
|
in
|
||||||
\\n,g,c => case n of {
|
\\n,g,c => usePrepC c (\k -> case n of {
|
||||||
Sg => ad (GSg g) c ;
|
Sg => ad (GSg g) k ;
|
||||||
_ => ad GPl c
|
_ => ad GPl k
|
||||||
} ;
|
}) ;
|
||||||
|
|
||||||
-- This auxiliary gives the forms in each degree of adjectives.
|
-- This auxiliary gives the forms in each degree of adjectives.
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ concrete SentenceGer of Sentence = CatGer ** open ResGer, Prelude in {
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
PredVP np vp = mkClause (np.s ! Nom) np.a vp ;
|
PredVP np vp = mkClause (np.s ! NPC Nom) np.a vp ;
|
||||||
|
|
||||||
PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ;
|
PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ;
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ concrete SentenceGer of Sentence = CatGer ** open ResGer, Prelude in {
|
|||||||
|
|
||||||
SlashVP np vp =
|
SlashVP np vp =
|
||||||
mkClause
|
mkClause
|
||||||
(np.s ! Nom) np.a
|
(np.s ! NPC Nom) np.a
|
||||||
vp **
|
vp **
|
||||||
{c2 = vp.c2} ;
|
{c2 = vp.c2} ;
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ concrete SentenceGer of Sentence = CatGer ** open ResGer, Prelude in {
|
|||||||
SlashPrep cl prep = cl ** {c2 = prep} ;
|
SlashPrep cl prep = cl ** {c2 = prep} ;
|
||||||
|
|
||||||
SlashVS np vs slash =
|
SlashVS np vs slash =
|
||||||
mkClause (np.s ! Nom) np.a
|
mkClause (np.s ! NPC Nom) np.a
|
||||||
(insertExtrapos (conjThat ++ slash.s ! Sub) (predV vs)) **
|
(insertExtrapos (conjThat ++ slash.s ! Sub) (predV vs)) **
|
||||||
{c2 = slash.c2} ;
|
{c2 = slash.c2} ;
|
||||||
|
|
||||||
|
|||||||
@@ -7,28 +7,28 @@ concrete StructuralGer of Structural = CatGer **
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
above_Prep = mkPrep "über" Dat ;
|
above_Prep = mkPrep "über" P.dative ;
|
||||||
after_Prep = mkPrep "nach" Dat ;
|
after_Prep = mkPrep "nach" P.dative ;
|
||||||
all_Predet = {s = appAdj (regA "all") ; c = noCase ; a = PAgNone} ;
|
all_Predet = {s = appAdj (regA "all") ; c = noCase ; a = PAgNone} ;
|
||||||
almost_AdA, almost_AdN = ss "fast" ;
|
almost_AdA, almost_AdN = ss "fast" ;
|
||||||
although_Subj = ss "obwohl" ;
|
although_Subj = ss "obwohl" ;
|
||||||
always_AdV = ss "immer" ;
|
always_AdV = ss "immer" ;
|
||||||
and_Conj = {s1 = [] ; s2 = "und" ; n = Pl} ;
|
and_Conj = {s1 = [] ; s2 = "und" ; n = Pl} ;
|
||||||
because_Subj = ss "weil" ;
|
because_Subj = ss "weil" ;
|
||||||
before_Prep = mkPrep "vor" Dat ;
|
before_Prep = mkPrep "vor" P.dative ;
|
||||||
behind_Prep = mkPrep "hinter" Dat ;
|
behind_Prep = mkPrep "hinter" P.dative ;
|
||||||
between_Prep = mkPrep "zwischen" Dat ;
|
between_Prep = mkPrep "zwischen" P.dative ;
|
||||||
both7and_DConj = sd2 "sowohl" ["als auch"] ** {n = Pl} ;
|
both7and_DConj = sd2 "sowohl" ["als auch"] ** {n = Pl} ;
|
||||||
but_PConj = ss "aber" ;
|
but_PConj = ss "aber" ;
|
||||||
by8agent_Prep = mkPrep "durch" Acc ;
|
by8agent_Prep = mkPrep "durch" P.accusative ;
|
||||||
by8means_Prep = mkPrep "mit" Dat ;
|
by8means_Prep = mkPrep "mit" P.dative ;
|
||||||
can8know_VV, can_VV = auxVV
|
can8know_VV, can_VV = auxVV
|
||||||
(mkV
|
(mkV
|
||||||
"können" "kann" "kannst" "kann" "könnt" "könn"
|
"können" "kann" "kannst" "kann" "könnt" "könn"
|
||||||
"konnte" "konntest" "konnten" "konntet"
|
"konnte" "konntest" "konnten" "konntet"
|
||||||
"könnte" "gekonnt" []
|
"könnte" "gekonnt" []
|
||||||
VHaben) ;
|
VHaben) ;
|
||||||
during_Prep = mkPrep "während" Gen ;
|
during_Prep = mkPrep "während" P.genitive ;
|
||||||
either7or_DConj = sd2 "entweder" "oder" ** {n = Sg} ;
|
either7or_DConj = sd2 "entweder" "oder" ** {n = Sg} ;
|
||||||
everybody_NP = nameNounPhrase {s = caselist "jeder" "jeden" "jedem" "jedes"} ;
|
everybody_NP = nameNounPhrase {s = caselist "jeder" "jeden" "jedem" "jedes"} ;
|
||||||
every_Det = detLikeAdj Sg "jed" ;
|
every_Det = detLikeAdj Sg "jed" ;
|
||||||
@@ -36,19 +36,19 @@ concrete StructuralGer of Structural = CatGer **
|
|||||||
everywhere_Adv = ss "überall" ;
|
everywhere_Adv = ss "überall" ;
|
||||||
few_Det = detLikeAdj Pl "wenig" ;
|
few_Det = detLikeAdj Pl "wenig" ;
|
||||||
---- first_Ord = {s = (regA "erst").s ! Posit} ;
|
---- first_Ord = {s = (regA "erst").s ! Posit} ;
|
||||||
for_Prep = mkPrep "für" Acc ;
|
for_Prep = mkPrep "für" P.accusative ;
|
||||||
from_Prep = mkPrep "aus" Dat ;
|
from_Prep = mkPrep "aus" P.dative ;
|
||||||
he_Pron = mkPronPers "er" "ihn" "ihm" "seiner" "sein" Masc Sg P3 ;
|
he_Pron = mkPronPers "er" "ihn" "ihm" "seiner" "sein" Masc Sg P3 ;
|
||||||
here7to_Adv = ss ["hierher"] ;
|
here7to_Adv = ss ["hierher"] ;
|
||||||
here7from_Adv = ss ["hieraus"] ;
|
here7from_Adv = ss ["hieraus"] ;
|
||||||
here_Adv = ss "hier" ;
|
here_Adv = ss "hier" ;
|
||||||
how_IAdv = ss "wie" ;
|
how_IAdv = ss "wie" ;
|
||||||
how8much_IAdv = ss "wieviel" ;
|
how8much_IAdv = ss "wieviel" ;
|
||||||
how8many_IDet = detLikeAdj Pl "wieviel" ;
|
how8many_IDet = {s = \\g,c => (detLikeAdj Pl "wieviel").s ! g ! NPC c ; n = Pl} ;
|
||||||
if_Subj = ss "wenn" ;
|
if_Subj = ss "wenn" ;
|
||||||
in8front_Prep = mkPrep "vor" Dat ;
|
in8front_Prep = mkPrep "vor" P.dative ;
|
||||||
i_Pron = mkPronPers "ich" "mich" "mir" "meiner" "mein" Masc Sg P1 ;
|
i_Pron = mkPronPers "ich" "mich" "mir" "meiner" "mein" Masc Sg P1 ;
|
||||||
in_Prep = mkPrep "in" Dat ;
|
in_Prep = mkPrep [] (NPP CInDat) ;
|
||||||
it_Pron = mkPronPers "es" "es" "ihm" "seiner" "sein" Neutr Sg P3 ;
|
it_Pron = mkPronPers "es" "es" "ihm" "seiner" "sein" Neutr Sg P3 ;
|
||||||
less_CAdv = X.mkCAdv "weniger" "als" ;
|
less_CAdv = X.mkCAdv "weniger" "als" ;
|
||||||
many_Det = detLikeAdj Pl "viel" ;
|
many_Det = detLikeAdj Pl "viel" ;
|
||||||
@@ -65,26 +65,27 @@ concrete StructuralGer of Structural = CatGer **
|
|||||||
only_Predet = {s = \\_,_,_ => "nur" ; c = noCase ; a = PAgNone} ;
|
only_Predet = {s = \\_,_,_ => "nur" ; c = noCase ; a = PAgNone} ;
|
||||||
no_Utt = ss "nein" ;
|
no_Utt = ss "nein" ;
|
||||||
---b no_Phr = ss "nein" ;
|
---b no_Phr = ss "nein" ;
|
||||||
on_Prep = mkPrep "auf" Dat ;
|
on_Prep = mkPrep "auf" P.dative ;
|
||||||
or_Conj = {s1 = [] ; s2 = "oder" ; n = Sg} ;
|
or_Conj = {s1 = [] ; s2 = "oder" ; n = Sg} ;
|
||||||
otherwise_PConj = ss "sonst" ;
|
otherwise_PConj = ss "sonst" ;
|
||||||
part_Prep = mkPrep "von" Dat ;
|
part_Prep = mkPrep "von" P.dative ;
|
||||||
please_Voc = ss "bitte" ;
|
please_Voc = ss "bitte" ;
|
||||||
possess_Prep = mkPrep "von" Dat ;
|
possess_Prep = mkPrep "von" P.dative ;
|
||||||
quite_Adv = ss "ziemlich" ;
|
quite_Adv = ss "ziemlich" ;
|
||||||
she_Pron = mkPronPers "sie" "sie" "ihr" "ihrer" "ihr" Fem Sg P3 ;
|
she_Pron = mkPronPers "sie" "sie" "ihr" "ihrer" "ihr" Fem Sg P3 ;
|
||||||
so_AdA = ss "so" ;
|
so_AdA = ss "so" ;
|
||||||
somebody_NP = nameNounPhrase {s = caselist "jemand" "jemanden" "jemandem" "jemands"} ;
|
somebody_NP = nameNounPhrase {s = caselist "jemand" "jemanden" "jemandem" "jemands"} ;
|
||||||
somePl_Det = detLikeAdj Pl "einig" ;
|
somePl_Det = detLikeAdj Pl "einig" ;
|
||||||
someSg_Det = {
|
someSg_Det = {
|
||||||
s,sp = \\g,c => "ein" + pronEnding ! GSg g ! c ; ---- einer,eines
|
s,sp = \\g,c =>
|
||||||
|
usePrepC c (\k -> "ein" + pronEnding ! GSg g ! k) ; ---- einer,eines
|
||||||
n = Sg ;
|
n = Sg ;
|
||||||
a = Strong
|
a = Strong
|
||||||
} ;
|
} ;
|
||||||
something_NP = nameNounPhrase {s = \\_ => "etwas"} ;
|
something_NP = nameNounPhrase {s = \\_ => "etwas"} ;
|
||||||
somewhere_Adv = ss "irgendwo" ;
|
somewhere_Adv = ss "irgendwo" ;
|
||||||
that_Quant = let
|
that_Quant = let
|
||||||
jener : Number => Gender => Case => Str = \\n => (detLikeAdj n "jen").s in
|
jener : Number => Gender => PCase => Str = \\n => (detLikeAdj n "jen").s in
|
||||||
{s = \\_ => jener ; sp = jener ; a = Weak} ;
|
{s = \\_ => jener ; sp = jener ; a = Weak} ;
|
||||||
---b that_NP = nameNounPhrase {s = caselist "das" "das" "denem" "dessen"} ; ----
|
---b that_NP = nameNounPhrase {s = caselist "das" "das" "denem" "dessen"} ; ----
|
||||||
there_Adv = ss "da" ;
|
there_Adv = ss "da" ;
|
||||||
@@ -94,14 +95,14 @@ concrete StructuralGer of Structural = CatGer **
|
|||||||
---b these_NP = {s = caselist "diese" "diese" "diesen" "dieser" ; a = agrP3 Pl} ;
|
---b these_NP = {s = caselist "diese" "diese" "diesen" "dieser" ; a = agrP3 Pl} ;
|
||||||
they_Pron = mkPronPers "sie" "sie" "ihnen" "ihrer" "ihr" Fem Pl P3 ;
|
they_Pron = mkPronPers "sie" "sie" "ihnen" "ihrer" "ihr" Fem Pl P3 ;
|
||||||
this_Quant = let
|
this_Quant = let
|
||||||
dieser : Number => Gender => Case => Str = \\n => (detLikeAdj n "dies").s in
|
dieser : Number => Gender => PCase => Str = \\n => (detLikeAdj n "dies").s in
|
||||||
{s = \\_ => dieser ; sp = dieser ; a = Weak} ;
|
{s = \\_ => dieser ; sp = dieser ; a = Weak} ;
|
||||||
---b this_NP = nameNounPhrase {s = caselist "dies" "dies" "diesem" "dieses"} ; ----
|
---b this_NP = nameNounPhrase {s = caselist "dies" "dies" "diesem" "dieses"} ; ----
|
||||||
---b those_NP = {s = caselist "jene" "jene" "jenen" "jener" ; a = agrP3 Pl} ;
|
---b those_NP = {s = caselist "jene" "jene" "jenen" "jener" ; a = agrP3 Pl} ;
|
||||||
through_Prep = mkPrep "durch" Acc ;
|
through_Prep = mkPrep "durch" P.accusative ;
|
||||||
too_AdA = ss "zu" ;
|
too_AdA = ss "zu" ;
|
||||||
to_Prep = mkPrep "nach" Dat ;
|
to_Prep = mkPrep "nach" P.dative ;
|
||||||
under_Prep = mkPrep "unter" Dat ;
|
under_Prep = mkPrep "unter" P.dative ;
|
||||||
very_AdA = ss "sehr" ;
|
very_AdA = ss "sehr" ;
|
||||||
want_VV = auxVV
|
want_VV = auxVV
|
||||||
(mkV
|
(mkV
|
||||||
@@ -117,13 +118,13 @@ concrete StructuralGer of Structural = CatGer **
|
|||||||
when_IAdv = ss "wann" ;
|
when_IAdv = ss "wann" ;
|
||||||
when_Subj = ss "wenn" ;
|
when_Subj = ss "wenn" ;
|
||||||
where_IAdv = ss "wo" ;
|
where_IAdv = ss "wo" ;
|
||||||
which_IQuant = {s = \\n => (detLikeAdj n "welch").s} ;
|
which_IQuant = {s = \\n,g,c => (detLikeAdj n "welch").s ! g ! NPC c} ;
|
||||||
|
|
||||||
whoSg_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Sg} ;
|
whoSg_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Sg} ;
|
||||||
whoPl_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Pl} ;
|
whoPl_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Pl} ;
|
||||||
why_IAdv = ss "warum" ;
|
why_IAdv = ss "warum" ;
|
||||||
without_Prep = mkPrep "ohne" Acc ;
|
without_Prep = mkPrep "ohne" P.accusative ;
|
||||||
with_Prep = mkPrep "mit" Dat ;
|
with_Prep = mkPrep "mit" P.dative ;
|
||||||
youSg_Pron = mkPronPers "du" "dich" "dir" "deiner" "dein" Fem Sg P2 ;
|
youSg_Pron = mkPronPers "du" "dich" "dir" "deiner" "dein" Fem Sg P2 ;
|
||||||
youPl_Pron = mkPronPers "ihr" "euch" "euch" "eurer" "euer" Fem Pl P2 ; ---- poss
|
youPl_Pron = mkPronPers "ihr" "euch" "euch" "eurer" "euer" Fem Pl P2 ; ---- poss
|
||||||
youPol_Pron = mkPronPers "Sie" "Sie" "Ihnen" "Ihrer" "Ihr" Fem Pl P3 ;
|
youPol_Pron = mkPronPers "Sie" "Sie" "Ihnen" "Ihrer" "Ihr" Fem Pl P3 ;
|
||||||
@@ -131,8 +132,8 @@ concrete StructuralGer of Structural = CatGer **
|
|||||||
|
|
||||||
not_Predet = {s = \\_,_,_ => "nicht" ; c = noCase ; a = PAgNone} ;
|
not_Predet = {s = \\_,_,_ => "nicht" ; c = noCase ; a = PAgNone} ;
|
||||||
no_Quant = let
|
no_Quant = let
|
||||||
keiner : Number => Gender => Case => Str = table {
|
keiner : Number => Gender => PCase => Str = table {
|
||||||
Sg => \\g,c => "kein" + pronEnding ! GSg g ! c ;
|
Sg => \\g,c => usePrepC c (\k -> "kein" + pronEnding ! GSg g ! k) ;
|
||||||
Pl => (detLikeAdj Pl "kein").s
|
Pl => (detLikeAdj Pl "kein").s
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
@@ -144,7 +145,7 @@ concrete StructuralGer of Structural = CatGer **
|
|||||||
nameNounPhrase {s = \\_ => "nichts"} ;
|
nameNounPhrase {s = \\_ => "nichts"} ;
|
||||||
at_least_AdN = ss "wenigstens" ;
|
at_least_AdN = ss "wenigstens" ;
|
||||||
at_most_AdN = ss "höchstens" ;
|
at_most_AdN = ss "höchstens" ;
|
||||||
except_Prep = mkPrep "außer" Dat ;
|
except_Prep = mkPrep "außer" P.dative ;
|
||||||
|
|
||||||
as_CAdv = X.mkCAdv "ebenso" "wie" ;
|
as_CAdv = X.mkCAdv "ebenso" "wie" ;
|
||||||
have_V2 = P.dirV2 IrregGer.haben_V ;
|
have_V2 = P.dirV2 IrregGer.haben_V ;
|
||||||
|
|||||||
@@ -14,12 +14,13 @@ lin
|
|||||||
isPron = False
|
isPron = False
|
||||||
} ;
|
} ;
|
||||||
CNSymbNP det cn xs = let g = cn.g in {
|
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 ;
|
s = \\c => det.s ! g ! c ++
|
||||||
|
(let k = (prepC c).c in cn.s ! adjfCase det.a k ! det.n ! k) ++ xs.s ;
|
||||||
a = agrP3 det.n ;
|
a = agrP3 det.n ;
|
||||||
isPron = False
|
isPron = False
|
||||||
} ;
|
} ;
|
||||||
CNNumNP cn i = {
|
CNNumNP cn i = {
|
||||||
s = \\c => artDef ! (GSg cn.g) ! c ++ cn.s ! Weak ! Sg ! Nom ++ i.s ! Neutr ! c ;
|
s = \\c => artDefContr (GSg cn.g) c ++ cn.s ! Weak ! Sg ! Nom ++ i.s ! Neutr ! (prepC c).c ;
|
||||||
a = agrP3 Sg ;
|
a = agrP3 Sg ;
|
||||||
isPron = False
|
isPron = False
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -67,13 +67,14 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer in {
|
|||||||
-- we want to say "ich liebe sie nicht" but not "ich bin alt nicht"
|
-- we want to say "ich liebe sie nicht" but not "ich bin alt nicht"
|
||||||
|
|
||||||
CompAP ap = {s = \\_ => ap.s ! APred} ;
|
CompAP ap = {s = \\_ => ap.s ! APred} ;
|
||||||
CompNP np = {s = \\_ => np.s ! Nom} ;
|
CompNP np = {s = \\_ => np.s ! NPC Nom} ;
|
||||||
CompAdv a = {s = \\_ => a.s} ;
|
CompAdv a = {s = \\_ => a.s} ;
|
||||||
|
|
||||||
AdvVP vp adv = insertAdv adv.s vp ;
|
AdvVP vp adv = insertAdv adv.s vp ;
|
||||||
AdVVP adv vp = insertAdV adv.s vp ;
|
AdVVP adv vp = insertAdV adv.s vp ;
|
||||||
|
|
||||||
ReflVP vp = insertObj (\\a => appPrep vp.c2 (reflPron ! a)) vp ;
|
ReflVP vp = insertObj (\\a => appPrep vp.c2
|
||||||
|
(\\k => usePrepC k (\c -> reflPron ! a ! c))) vp ;
|
||||||
|
|
||||||
PassV2 v = insertInf (v.s ! VPastPart APred) (predV werdenPass) ;
|
PassV2 v = insertInf (v.s ! VPastPart APred) (predV werdenPass) ;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user