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 = instance LexAttemptoGer of LexAttempto =
open ExtraGer, SyntaxGer, ParadigmsGer, ConstructX, open ExtraGer, SyntaxGer, ParadigmsGer, ConstructX,
MakeStructuralGer, MakeStructuralGer,
IrregGer in { IrregGer, Prelude in {
oper oper
possible_A = mkA "möglich" ; possible_A = mkA "möglich" ;
@@ -25,7 +25,7 @@ oper
whose_IDet = mkIDet (mkIQuant "wessen") ; 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)) ; 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 ; sp : Number => Gender => Case => Str ;
a : Adjf 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} ; Num = {s : Gender => Case => Str ; n : Number ; isNum : Bool} ;
Card = {s : Gender => Case => Str ; n : Number} ; Card = {s : Gender => Case => Str ; n : Number} ;
Ord = {s : AForm => Str} ; Ord = {s : AForm => Str} ;

View File

@@ -1,6 +1,6 @@
--# -path=.:../common:../abstract --# -path=.:../common:../abstract
resource MakeStructuralGer = open CatGer, ParadigmsGer, MorphoGer, Prelude in { resource MakeStructuralGer = open CatGer, (P = ParadigmsGer), MorphoGer, Prelude in {
oper oper
mkConj : Str -> Str -> Number -> Conj = \x,y,n -> mkConj : Str -> Str -> Number -> Conj = \x,y,n ->
@@ -10,4 +10,18 @@ oper
mkIQuant : Str -> IQuant = \s -> mkIQuant : Str -> IQuant = \s ->
{s = \\_,_,_ => s ; lock_IQuant = <>} ; {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 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 ++ cn.s ! adjfCase det.a c ! det.n ! c ;
a = agrP3 det.n ; a = agrgP3 cn.g det.n ;
isPron = False isPron = False
} ; } ;
@@ -22,12 +22,13 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in {
a = pron.a a = pron.a
} ; } ;
PredetNP pred np = { PredetNP pred np =
s = \\c0 => let ag = case pred.a of {PAg n => agrP3 n ; _ => np.a} in {
let c = case pred.c of {NoCase => c0 ; PredCase k => k} in s = \\c0 =>
pred.s ! numberAgr np.a ! Masc ! c0 ++ np.s ! c ; ---- g let c = case pred.c.k of {NoCase => c0 ; PredCase k => k} in
a = np.a pred.s ! numberAgr ag ! genderAgr np.a ! c0 ++ pred.c.p ++ np.s ! c ;
} ; a = ag
} ;
PPartNP np v2 = { PPartNP np v2 = {
s = \\c => np.s ! c ++ v2.s ! VPastPart APred ; --- invar part 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 ; param NPForm = NPCase Case | NPPoss GenNum Case ;
-- Predeterminers sometimes require a case ("ausser mir"), sometimes not ("nur ich"). -- 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$ --2 For $Adjective$

View File

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