agreement in German Predet

This commit is contained in:
aarne
2010-01-05 13:35:24 +00:00
parent 234a3d3633
commit 1bbc4ec91d
6 changed files with 41 additions and 16 deletions

View File

@@ -1,7 +1,7 @@
instance LexAttemptoGer of LexAttempto =
open ExtraGer, SyntaxGer, ParadigmsGer, ConstructX,
MakeStructuralGer,
IrregGer in {
IrregGer, Prelude in {
oper
possible_A = mkA "möglich" ;
@@ -25,7 +25,7 @@ oper
whose_IDet = mkIDet (mkIQuant "wessen") ;
eachOf np = mkNP (mkNP each_Det) (SyntaxGer.mkAdv part_Prep np) ; ---- gen agr
eachOf np = mkNP (mkPredet (mkA "jed") "von" dative True singular) np ;
adj_thatCl : A -> S -> Cl = \a,s -> mkCl (mkVP (mkAP (mkAP a) s)) ;

View File

@@ -56,7 +56,11 @@ concrete CatGer of Cat =
sp : Number => Gender => Case => Str ;
a : Adjf
} ;
Predet = {s : Number => Gender => Case => Str ; c : PredetCase} ;
Predet = {
s : Number => Gender => Case => Str ;
c : {p : Str ; k : PredetCase} ;
a : PredetAgr -- if an agr is forced, e.g. jeder von uns ist ...
} ;
Num = {s : Gender => Case => Str ; n : Number ; isNum : Bool} ;
Card = {s : Gender => Case => Str ; n : Number} ;
Ord = {s : AForm => Str} ;

View File

@@ -1,6 +1,6 @@
--# -path=.:../common:../abstract
resource MakeStructuralGer = open CatGer, ParadigmsGer, MorphoGer, Prelude in {
resource MakeStructuralGer = open CatGer, (P = ParadigmsGer), MorphoGer, Prelude in {
oper
mkConj : Str -> Str -> Number -> Conj = \x,y,n ->
@@ -10,4 +10,18 @@ oper
mkIQuant : Str -> IQuant = \s ->
{s = \\_,_,_ => s ; lock_IQuant = <>} ;
mkPredet = overload {
mkPredet : A -> Predet = \a ->
lin Predet {
s = appAdj a ;
c = noCase ;
a = PAgNone
} ;
mkPredet : A -> Str -> Case -> Bool -> Number -> Predet = \a,p,c,b,n ->
lin Predet {
s = appAdj a ;
c = {p = p ; k = PredCase c} ;
a = case b of {True => PAg n ; _ => PAgNone}
}
} ;
}

View File

@@ -5,7 +5,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in {
lin
DetCN det cn = {
s = \\c => det.s ! cn.g ! c ++ cn.s ! adjfCase det.a c ! det.n ! c ;
a = agrP3 det.n ;
a = agrgP3 cn.g det.n ;
isPron = False
} ;
@@ -22,12 +22,13 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in {
a = pron.a
} ;
PredetNP pred np = {
s = \\c0 =>
let c = case pred.c of {NoCase => c0 ; PredCase k => k} in
pred.s ! numberAgr np.a ! Masc ! c0 ++ np.s ! c ; ---- g
a = np.a
} ;
PredetNP pred np =
let ag = case pred.a of {PAg n => agrP3 n ; _ => np.a} in {
s = \\c0 =>
let c = case pred.c.k of {NoCase => c0 ; PredCase k => k} in
pred.s ! numberAgr ag ! genderAgr np.a ! c0 ++ pred.c.p ++ np.s ! c ;
a = ag
} ;
PPartNP np v2 = {
s = \\c => np.s ! c ++ v2.s ! VPastPart APred ; --- invar part

View File

@@ -46,8 +46,14 @@ resource ResGer = ParamX ** open Prelude in {
param NPForm = NPCase Case | NPPoss GenNum Case ;
-- Predeterminers sometimes require a case ("ausser mir"), sometimes not ("nur ich").
-- A number is sometimes inherited ("alle Menschen"),
-- sometimes forced ("jeder von Mwnschen").
param PredetCase = NoCase | PredCase Case ;
param
PredetCase = NoCase | PredCase Case ;
PredetAgr = PAg Number | PAgNone ;
oper
noCase : {p : Str ; k : PredetCase} = {p = [] ; k = NoCase} ;
--2 For $Adjective$

View File

@@ -9,7 +9,7 @@ concrete StructuralGer of Structural = CatGer **
above_Prep = mkPrep "über" Dat ;
after_Prep = mkPrep "nach" Dat ;
all_Predet = {s = appAdj (regA "all") ; c = NoCase} ;
all_Predet = {s = appAdj (regA "all") ; c = noCase ; a = PAgNone} ;
almost_AdA, almost_AdN = ss "fast" ;
although_Subj = ss "obwohl" ;
always_AdV = ss "immer" ;
@@ -52,7 +52,7 @@ concrete StructuralGer of Structural = CatGer **
less_CAdv = X.mkCAdv "weniger" "als" ;
many_Det = detLikeAdj Pl "viel" ;
more_CAdv = X.mkCAdv "mehr" "als" ;
most_Predet = {s = appAdj (regA "meist") ; c = NoCase} ;
most_Predet = {s = appAdj (regA "meist") ; c = noCase ; a = PAgNone} ;
much_Det = detLikeAdj Sg "viel" ;
must_VV = auxVV
(mkV
@@ -61,7 +61,7 @@ concrete StructuralGer of Structural = CatGer **
"müßte" "gemußt" []
VHaben) ;
--- one_Quant = DEPREC
only_Predet = {s = \\_,_,_ => "nur" ; c = NoCase} ;
only_Predet = {s = \\_,_,_ => "nur" ; c = noCase ; a = PAgNone} ;
no_Utt = ss "nein" ;
---b no_Phr = ss "nein" ;
on_Prep = mkPrep "auf" Dat ;
@@ -128,7 +128,7 @@ concrete StructuralGer of Structural = CatGer **
youPol_Pron = mkPronPers "Sie" "Sie" "Ihnen" "Ihrer" "Ihr" Fem Pl P3 ;
yes_Utt = ss "ja" ;
not_Predet = {s = \\_,_,_ => "nicht" ; c = NoCase} ;
not_Predet = {s = \\_,_,_ => "nicht" ; c = noCase ; a = PAgNone} ;
no_Quant = let
keiner : Number => Gender => Case => Str = table {
Sg => \\g,c => "kein" + pronEnding ! GSg g ! c ;