reflexive possessives in Fin and Ger ; in Fin, it also makes a difference in the recognized strings, because it always involves pro-drop unlike ordinary possessives

This commit is contained in:
aarne
2016-06-07 13:59:09 +00:00
parent 9a83e683a3
commit b528a5b4a9
5 changed files with 70 additions and 2 deletions

View File

@@ -270,4 +270,27 @@ concrete ExtraFin of ExtraFinAbs = CatFin **
h = Back ; ---- TODO should be ap.h, which does not exist
} ;
lincat
RNP = {s : Agr => NPForm => Str ; isPron : Bool} ;
lin
ReflRNP vps rnp = insertObjPre False
(\fin,b,agr -> appCompl fin b vps.c2
{s = \\npf => rnp.s ! agr ! npf ; a = agr ; isPron = rnp.isPron})
vps ;
ReflPoss num cn = {
s = \\agr, npf =>
let
quant : NounFin.Quant = lin Quant { -- possessive pronoun with suffix only
s2 : Harmony => Str = \\harm => possSuffixGen harm agr ;
s1,sp = \\_,_ => [] ; isNum,isNeg = False ; isPoss,isDef = True
} ;
det = NounFin.DetQuant quant num
in
(NounFin.DetCN det cn).s ! npf ;
isPron = False
} ;
}

View File

@@ -4,7 +4,9 @@ abstract ExtraFinAbs = Extra [
PassVPSlash, PassAgentVPSlash,
VPI,ListVPI,BaseVPI,ConsVPI,MkVPI,ComplVPIVV,ConjVPI,
VPS,ListVPS,BaseVPS,ConsVPS,ConjVPS,MkVPS,PredVPS,ConjVPS,Tense,Temp,Pol,S,
VV,VP,Conj,NP,Quant,IAdv,IComp,ICompAP,IAdvAdv,Adv,AP, Pron, RP, ProDrop, AdjAsCN] ** {
VV,VP,Conj,NP,Quant,IAdv,IComp,ICompAP,IAdvAdv,Adv,AP, Pron, RP, ProDrop, AdjAsCN,
RNP,ReflRNP,ReflPoss
] ** {
flags coding=utf8 ;
fun

View File

@@ -149,6 +149,14 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
ConjVPS = conjunctDistrTable2 Order Agr ;
lincat
RNP = {s : Agr => Case => Str} ;
lin
ReflRNP vps rnp =
insertObj (\\a => appPrep vps.c2
(\\k => usePrepC k (\c -> rnp.s ! a ! c))) vps ;
ReflPoss num cn = {s = \\a,c => num.s ! cn.g ! c ++ possPron a num.n cn.g c ++ cn.s ! adjfCase Strong c ! num.n ! c} ;
-- implementation of some of the relevant Foc rules from Extra

View File

@@ -3,7 +3,9 @@ abstract ExtraGerAbs = Extra [
VPS,ListVPS,BaseVPS,ConsVPS,ConjVPS,MkVPS,PredVPS,EmptyRelSlash,
VPSlash, PassVPSlash, PassAgentVPSlash, CompIQuant, PastPartAP, PastPartAgentAP,
Temp,Tense,Pol,S,NP,VV,VP,Conj,IAdv,IQuant,IComp,ICompAP,IAdvAdv,Adv,AP,
Foc,FocObj,FocAdv,FocAP,UseFoc] ** {
Foc,FocObj,FocAdv,FocAP,UseFoc,
RNP,ReflRNP,ReflPoss
] ** {
flags coding=utf8;
cat
@@ -23,4 +25,5 @@ abstract ExtraGerAbs = Extra [
VPass : V -> FClause ; -- (es) wird getanzt
AdvFor : Adv -> FClause -> FClause ; -- es wird heute gelacht - addition of adverbs
FtoCl : FClause -> Cl ; -- embedding FClause within the RGL, to allow generation of S, Utt, etc.
}

View File

@@ -780,6 +780,38 @@ resource ResGer = ParamX ** open Prelude in {
Ag _ Pl P3 => caselist "sie" "sich" "sich" "ihrer"
} ;
possPron : Agr -> Number -> Gender -> Case -> Str = \a,n,g,c -> case <a,n,g> of {
<Ag _ Sg P1,Sg,Masc> => caselist "mein" "meinen" "meinem" "meines" ! c ;
<Ag _ Sg P1,Sg,Fem> => caselist "meine" "meine" "meiner" "meiner" ! c ;
<Ag _ Sg P1,Sg,Neutr> => caselist "mein" "mein" "meinem" "meines" ! c ;
<Ag _ Sg P1,Pl,_> => caselist "meine" "meine" "meinen" "meiner" ! c ;
<Ag _ Sg P2,Sg,Masc> => caselist "dein" "deinen" "deinem" "deines" ! c ;
<Ag _ Sg P2,Sg,Fem> => caselist "deine" "deine" "deiner" "deiner" ! c ;
<Ag _ Sg P2,Sg,Neutr> => caselist "dein" "dein" "deinem" "deines" ! c ;
<Ag _ Sg P2,Pl,_> => caselist "deine" "deine" "deinen" "deiner" ! c ;
<Ag (Masc|Neutr) Sg P3,Sg,Masc> => caselist "sein" "seinen" "seinem" "seines" ! c ;
<Ag (Masc|Neutr) Sg P3,Sg,Fem> => caselist "seine" "seine" "seiner" "seiner" ! c ;
<Ag (Masc|Neutr) Sg P3,Sg,Neutr> => caselist "sein" "sein" "seinem" "seines" ! c ;
<Ag (Masc|Neutr) Sg P3,Pl,_> => caselist "seine" "seine" "seinen" "seiner" ! c ;
<Ag _ _ P3,Sg,Masc> => caselist "ihr" "ihren" "ihrem" "ihres" ! c ;
<Ag _ _ P3,Sg,Fem> => caselist "ihre" "ihre" "ihrer" "ihrer" ! c ;
<Ag _ _ P3,Sg,Neutr> => caselist "ihr" "ihr" "ihrem" "ihres" ! c ;
<Ag _ _ P3,Pl,_> => caselist "ihre" "ihre" "ihren" "ihrer" ! c ;
<Ag _ Pl P1,Sg,Masc> => caselist "unser" "unseren" "unserem" "unseres" ! c ;
<Ag _ Pl P1,Sg,Fem> => caselist "unsere" "unsere" "unserer" "unserer" ! c ;
<Ag _ Pl P1,Sg,Neutr> => caselist "unser" "unser" "unserem" "unseres" ! c ;
<Ag _ Pl P1,Pl,_> => caselist "unsere" "unsere" "unseren" "unserer" ! c ;
<Ag _ Pl P2,Sg,Masc> => caselist "euer" "euren" "eurem" "eures" ! c ;
<Ag _ Pl P2,Sg,Fem> => caselist "eure" "eure" "eurer" "eurer" ! c ;
<Ag _ Pl P2,Sg,Neutr> => caselist "euer" "euer" "eurem" "eures" ! c ;
<Ag _ Pl P2,Pl,_> => caselist "eure" "eure" "euren" "eurer" ! c
} ;
conjThat : Str = "dass" ;
conjThan : Str = "als" ;