three new uses of "self" in Idion(Eng,Fin,Ger,Swe): SelfAdvVP (he is singing himself), SelfAdVVP (he is himself singing), SelfNP (he himself is singing; I know the president himself)

This commit is contained in:
aarne
2013-12-03 18:54:56 +00:00
parent dd78657191
commit 996e0141e2
20 changed files with 98 additions and 51 deletions

View File

@@ -38,9 +38,9 @@ concrete ExtraEng of ExtraEngAbs = CatEng **
MkVPI vp = {
s = table {
VVAux => \\a => vp.ad ++ vp.inf ++ vp.p ++ vp.s2 ! a;
VVInf => \\a => "to" ++ vp.ad ++ vp.inf ++ vp.p ++ vp.s2 ! a;
VVPresPart => \\a => vp.ad ++ vp.prp ++ vp.p ++ vp.s2 ! a
VVAux => \\a => vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a;
VVInf => \\a => "to" ++ vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a;
VVPresPart => \\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a
}
} ;
ConjVPI = conjunctDistrTable2 VVType Agr ;
@@ -79,7 +79,7 @@ concrete ExtraEng of ExtraEngAbs = CatEng **
let
verb = vp.s ! t.t ! t.a ! p.p ! oDir ! a ;
verbf = verb.aux ++ verb.adv ++ verb.fin ++ verb.inf ;
in t.s ++ p.s ++ vp.ad ++ verbf ++ vp.p ++ vp.s2 ! a ++ vp.ext
in t.s ++ p.s ++ vp.ad ! a ++ verbf ++ vp.p ++ vp.s2 ! a ++ vp.ext
} ;
ConjVPS = conjunctDistrTable Agr ;
@@ -89,7 +89,7 @@ concrete ExtraEng of ExtraEngAbs = CatEng **
IAdvAdv adv = {s = "how" ++ adv.s} ;
PartVP vp = {
s = \\a => vp.ad ++ vp.prp ++ vp.s2 ! a ;
s = \\a => vp.ad ! a ++ vp.prp ++ vp.s2 ! a ;
isPre = False ---- depends on whether there are complements
} ;
@@ -141,9 +141,10 @@ concrete ExtraEng of ExtraEngAbs = CatEng **
NominalizeVPSlashNP vpslash np =
let vp : ResEng.VP = insertObjPre (\\_ => vpslash.c2 ++ np.s ! NPAcc) vpslash
let vp : ResEng.VP = insertObjPre (\\_ => vpslash.c2 ++ np.s ! NPAcc) vpslash ;
a = AgP3Sg Neutr
in
lin NP {s=\\_=>vp.ad ++ vp.prp ++ vp.s2! (AgP3Sg Neutr); a=AgP3Sg Neutr } ;
lin NP {s = \\_ => vp.ad ! a ++ vp.prp ++ vp.s2 ! a ; a = a} ;
lin
UncNeg = {s = [] ; p = CNeg False} ;
@@ -158,8 +159,8 @@ lin
prp = be.prp ;
ptp = be.ptp ;
inf = be.inf ;
ad = [] ;
s2 = \\a => vps.ad ++ ppt ++ vps.p ++ vps.s2 ! a ++ vps.c2 ; ---- order
ad = \\_ => [] ;
s2 = \\a => vps.ad ! a ++ ppt ++ vps.p ++ vps.s2 ! a ++ vps.c2 ; ---- order
ext = vps.ext
} ;

View File

@@ -30,11 +30,18 @@ concrete IdiomEng of Idiom = CatEng ** open Prelude, ResEng in {
mkQuestion (ss (ip.s ! npNom))
(mkClause "there" (agrP3 ip.n) (insertObj (\\_ => adv.s) (predAux auxBe))) ;
ProgrVP vp = insertObj (\\a => vp.ad ++ vp.prp ++ vp.p ++ vp.s2 ! a) (predAux auxBe) ;
ProgrVP vp = insertObj (\\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a) (predAux auxBe) ;
ImpPl1 vp = {s = "let's" ++ infVP VVAux vp Simul CPos (AgP1 Pl)} ;
ImpP3 np vp = {s = "let" ++ np.s ! NPAcc ++ infVP VVAux vp Simul CPos np.a} ;
SelfAdvVP vp = insertObj reflPron vp ;
SelfAdVVP vp = insertAdVAgr reflPron vp ;
SelfNP np = {
s = \\c => np.s ! c ++ reflPron ! np.a ;
a = np.a
} ;
}

View File

@@ -13,7 +13,7 @@ concrete ParseEng of ParseEngAbs =
SentenceEng - [UseCl], -- replaced by UseCl | ContractedUseCl
QuestionEng,
RelativeEng,
IdiomEng [NP, VP, Tense, Cl, ProgrVP, ExistNP],
IdiomEng [NP, VP, Tense, Cl, ProgrVP, ExistNP, SelfAdvVP, SelfAdVVP, SelfNP],
ExtraEng [NP, Quant, VPSlash, VP, Tense, GenNP, PassVPSlash,
Temp, Pol, Conj, VPS, ListVPS, S, Num, CN, RP, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS, GenRP,
VPI, VPIForm, VPIInf, VPIPresPart, ListVPI, VV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV,
@@ -94,8 +94,8 @@ lin
compl = vp.s2 ! np.a
in
case o of {
ODir _ => compl ++ frontComma ++ np.s ! npNom ++ verb.aux ++ vp.ad ++ verb.fin ++ verb.adv ++ verb.inf ;
OQuest => verb.aux ++ compl ++ frontComma ++ np.s ! npNom ++ verb.adv ++ vp.ad ++ verb.fin ++ verb.inf
ODir _ => compl ++ frontComma ++ np.s ! npNom ++ verb.aux ++ vp.ad ! np.a ++ verb.fin ++ verb.adv ++ verb.inf ;
OQuest => verb.aux ++ compl ++ frontComma ++ np.s ! npNom ++ verb.adv ++ vp.ad ! np.a ++ verb.fin ++ verb.inf
}
} ;
@@ -106,8 +106,8 @@ lin
compl = vp.s2 ! np.a
in
case o of {
ODir _ => compl ++ frontComma ++ verb.aux ++ verb.adv ++ vp.ad ++ verb.fin ++ verb.inf ++ np.s ! npNom ;
OQuest => verb.aux ++ compl ++ verb.adv ++ vp.ad ++ verb.fin ++ verb.inf ++ np.s ! npNom
ODir _ => compl ++ frontComma ++ verb.aux ++ verb.adv ++ vp.ad ! np.a ++ verb.fin ++ verb.inf ++ np.s ! npNom ;
OQuest => verb.aux ++ compl ++ verb.adv ++ vp.ad ! np.a ++ verb.fin ++ verb.inf ++ np.s ! npNom
}
} ;
@@ -131,12 +131,12 @@ lin
{c2 = ""; gapInMiddle = False} ;
PastPartRS ant pol vps = {
s = \\agr => vps.ad ++ vps.ptp ++ vps.s2 ! agr ;
s = \\agr => vps.ad ! agr ++ vps.ptp ++ vps.s2 ! agr ;
c = npNom
} ;
PresPartRS ant pol vp = {
s = \\agr => vp.ad ++ vp.prp ++ vp.p ++ vp.s2 ! agr;
s = \\agr => vp.ad ! agr ++ vp.prp ++ vp.p ++ vp.s2 ! agr;
c = npNom
} ;

View File

@@ -12,7 +12,7 @@ abstract ParseEngAbs =
Sentence,
Question,
Relative,
Idiom [NP, VP, Cl, Tense, ProgrVP, ExistNP],
Idiom [NP, VP, Cl, Tense, ProgrVP, ExistNP, SelfAdvVP, SelfAdVVP, SelfNP],
ExtraEngAbs [NP, Quant, VPSlash, VP, GenNP, PassVPSlash,
Temp, Tense, Pol, Conj, VPS, ListVPS, S, Num, CN, RP, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS, GenRP,
VPI, ListVPI, VV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV, ComplSlashPartLast,
@@ -62,8 +62,6 @@ fun CompoundCN : Num -> N -> CN -> CN ;
VPSlashVS : VS -> VP -> VPSlash ;
UncNeg : Pol ;
PastPartRS : Ant -> Pol -> VPSlash -> RS ;
PresPartRS : Ant -> Pol -> VP -> RS ;

View File

@@ -235,7 +235,7 @@ param
prp : Str ; -- present participle
ptp : Str ; -- past participle
inf : Str ; -- the infinitive form ; VerbForms would be the logical place
ad : Str ; -- sentence adverb
ad : Agr => Str ; -- sentence adverb (can be Xself, hence Agr)
s2 : Agr => Str ; -- complement
ext : Str -- extreposed field such as S, QS, VP
} ;
@@ -291,7 +291,7 @@ param
prp = verb.s ! VPresPart ;
ptp = verb.s ! VPPart ;
inf = verb.s ! VInf ;
ad = [] ;
ad = \\_ => [] ;
ext = [] ;
s2 = \\a => if_then_Str verb.isRefl (reflPron ! a) []
} ;
@@ -349,7 +349,7 @@ param
prp = verb.prpart ;
ptp = verb.ppart ;
inf = verb.inf ;
ad = [] ;
ad = \\_ => [] ;
ext = [] ;
s2 = \\_ => []
} ;
@@ -407,13 +407,15 @@ param
--- The adverb should be before the finite verb.
insertAdV : Str -> VP -> VP = \ad,vp -> {
insertAdV : Str -> VP -> VP = \ad -> insertAdVAgr (\\_ => ad) ;
insertAdVAgr : (Agr => Str) -> VP -> VP = \ad,vp -> {
s = vp.s ;
p = vp.p ;
prp = vp.prp ;
ptp = vp.ptp ;
inf = vp.inf ;
ad = vp.ad ++ ad ;
ad = \\a => vp.ad ! a ++ ad ! a ;
s2 = \\a => vp.s2 ! a ;
ext = vp.ext
} ;
@@ -459,14 +461,14 @@ param
case cb of {CPos => ""; _ => "not"} ++
case ant of {
Simul => case typ of {
VVAux => vp.ad ++ vp.inf ;
VVInf => "to" ++ vp.ad ++ vp.inf ;
_ => vp.ad ++ vp.prp
VVAux => vp.ad ! a ++ vp.inf ;
VVInf => "to" ++ vp.ad ! a ++ vp.inf ; ---- this is the "split infinitive"
_ => vp.ad ! a ++ vp.prp
}
; Anter => case typ of { --# notpresent
VVAux => "have" ++ vp.ad ++ vp.ptp ; --# notpresent
VVInf => "to" ++ "have" ++ vp.ad ++ vp.ptp ; --# notpresent
_ => "having" ++ vp.ad ++ vp.ptp --# notpresent
VVAux => "have" ++ vp.ad ! a ++ vp.ptp ; --# notpresent
VVInf => "to" ++ "have" ++ vp.ad ! a ++ vp.ptp ; --# notpresent
_ => "having" ++ vp.ad ! a ++ vp.ptp --# notpresent
} --# notpresent
} ++ vp.p ++
vp.s2 ! a ++ vp.ext ;
@@ -544,8 +546,8 @@ param
compl = vp.s2 ! agr ++ vp.ext
in
case o of {
ODir _ => subj ++ verb.aux ++ verb.adv ++ vp.ad ++ verb.fin ++ verb.inf ++ vp.p ++ compl ;
OQuest => verb.aux ++ subj ++ verb.adv ++ vp.ad ++ verb.fin ++ verb.inf ++ vp.p ++ compl
ODir _ => subj ++ verb.aux ++ verb.adv ++ vp.ad ! agr ++ verb.fin ++ verb.inf ++ vp.p ++ compl ;
OQuest => verb.aux ++ subj ++ verb.adv ++ vp.ad ! agr ++ verb.fin ++ verb.inf ++ vp.p ++ compl
}
} ;