summaryrefslogtreecommitdiff
path: root/next-lib/src/german
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-11-03 16:52:54 +0000
committeraarne <aarne@cs.chalmers.se>2008-11-03 16:52:54 +0000
commit9ecc663d00fd91e8c0108785722c735348528f9e (patch)
tree0d448c553699345a6a556c014f3ccfbd6fad5e5d /next-lib/src/german
parent44ad7596b6e151000ef6155bbdc697c1896c5de8 (diff)
structural words needed for Attempto ; negative items are overgenerating
Diffstat (limited to 'next-lib/src/german')
-rw-r--r--next-lib/src/german/CatGer.gf2
-rw-r--r--next-lib/src/german/NounGer.gf4
-rw-r--r--next-lib/src/german/ResGer.gf4
-rw-r--r--next-lib/src/german/StructuralGer.gf31
4 files changed, 33 insertions, 8 deletions
diff --git a/next-lib/src/german/CatGer.gf b/next-lib/src/german/CatGer.gf
index 82a97c854..737b1d0c1 100644
--- a/next-lib/src/german/CatGer.gf
+++ b/next-lib/src/german/CatGer.gf
@@ -57,7 +57,7 @@ concrete CatGer of Cat =
a : Adjf
} ;
Art = {s : Bool => Number => Gender => Case => Str ; a : Adjf} ;
- Predet = {s : Number => Gender => Case => Str} ;
+ 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} ;
diff --git a/next-lib/src/german/NounGer.gf b/next-lib/src/german/NounGer.gf
index 2ebdccd9e..02252afbd 100644
--- a/next-lib/src/german/NounGer.gf
+++ b/next-lib/src/german/NounGer.gf
@@ -23,7 +23,9 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in {
} ;
PredetNP pred np = {
- s = \\c => pred.s ! np.a.n ! Masc ! c ++ np.s ! c ; ---- g
+ 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
} ;
diff --git a/next-lib/src/german/ResGer.gf b/next-lib/src/german/ResGer.gf
index 219749b6f..10c72082c 100644
--- a/next-lib/src/german/ResGer.gf
+++ b/next-lib/src/german/ResGer.gf
@@ -38,6 +38,10 @@ resource ResGer = ParamX ** open Prelude in {
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.
diff --git a/next-lib/src/german/StructuralGer.gf b/next-lib/src/german/StructuralGer.gf
index 6ea52c7b0..0f87fcee7 100644
--- a/next-lib/src/german/StructuralGer.gf
+++ b/next-lib/src/german/StructuralGer.gf
@@ -8,7 +8,7 @@ concrete StructuralGer of Structural = CatGer **
above_Prep = mkPrep "über" Dat ;
after_Prep = mkPrep "nach" Dat ;
- all_Predet = {s = appAdj (regA "all")} ;
+ all_Predet = {s = appAdj (regA "all") ; c = NoCase} ;
almost_AdA, almost_AdN = ss "fast" ;
although_Subj = ss "obwohl" ;
always_AdV = ss "immer" ;
@@ -51,7 +51,7 @@ concrete StructuralGer of Structural = CatGer **
less_CAdv = ss "weniger" ;
many_Det = detLikeAdj Pl "viel" ;
more_CAdv = ss "mehr" ;
- most_Predet = {s = appAdj (regA "meist")} ;
+ most_Predet = {s = appAdj (regA "meist") ; c = NoCase} ;
much_Det = detLikeAdj Sg "viel" ;
must_VV = auxVV
(mkV
@@ -60,7 +60,7 @@ concrete StructuralGer of Structural = CatGer **
"müßte" "gemußt" []
VHaben) ;
--- one_Quant = DEPREC
- only_Predet = {s = \\_,_,_ => "nur"} ;
+ only_Predet = {s = \\_,_,_ => "nur" ; c = NoCase} ;
no_Utt = ss "nein" ;
---b no_Phr = ss "nein" ;
on_Prep = mkPrep "auf" Dat ;
@@ -117,8 +117,6 @@ concrete StructuralGer of Structural = CatGer **
where_IAdv = ss "wo" ;
which_IQuant = {s = \\n => (detLikeAdj n "welch").s} ;
----b whichPl_IDet = detLikeAdj Pl "welch" ;
----b whichSg_IDet = detLikeAdj Sg "welch" ;
whoSg_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Sg} ;
whoPl_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Pl} ;
why_IAdv = ss "warum" ;
@@ -128,6 +126,27 @@ concrete StructuralGer of Structural = CatGer **
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" ;
----b yes_Phr = ss "ja" ;
+
+ not_Predet = {s = \\_,_,_ => "nicht" ; c = NoCase} ;
+ nothing_but_Predet = {s = \\_,_,_ => "nichts ausser" ; c = PredCase Dat} ;
+ nobody_but_Predet = {
+ s = \\_,_,c =>
+ caselist "niemand" "niemanden" "niemandem" "niemands" ! c ++ "ausser" ;
+ c = PredCase Dat
+ } ;
+ 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" ;
}