mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
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:
@@ -25,4 +25,11 @@ abstract Idiom = Cat ** {
|
||||
ImpPl1 : VP -> Utt ; -- let's go
|
||||
|
||||
ImpP3 : NP -> VP -> Utt ; -- let John walk
|
||||
|
||||
-- 3/12/2013 non-reflexive uses of "self"
|
||||
|
||||
SelfAdvVP : VP -> VP ; -- is at home himself
|
||||
SelfAdVVP : VP -> VP ; -- is himself at home
|
||||
SelfNP : NP -> NP ; -- the president himself (is at home)
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
@@ -8708,8 +8708,6 @@ cisterna_N = mkWN (k3 "säiliö") ; --UNCHK
|
||||
citadel_N = mkWN (k39 "linnoitus") ; --UNCHK
|
||||
citation_N = mkWN "Citation" ; --UNCHK
|
||||
citified_A = mkWA (k38 "kaupunkilainen") ; --UNCHK
|
||||
citizenMasc_N = mkWN (k38 "kaupunkilainen") ; --UNCHK
|
||||
citizenFem_N = mkWN (k38 "kaupunkilainen") ; --UNCHK
|
||||
citizenry_N = mkWN (k2 "väestö") ; --UNCHK
|
||||
citizenship_N = mkWN (compoundN "kansalais" (k7A "henki")) ; --UNCHK
|
||||
citrate_N = mkWN "sitraatti" ; --UNCHK
|
||||
|
||||
@@ -73,6 +73,15 @@ concrete IdiomFin of Idiom = CatFin **
|
||||
vp.s2 ! True ! Pos ! Ag Pl P1 ++ vp.ext
|
||||
} ;
|
||||
|
||||
SelfAdvVP vp = insertAdv (\\_ => "itse") vp ;
|
||||
SelfAdVVP vp = insertAdv (\\_ => "itse") vp ;
|
||||
SelfNP np = {
|
||||
s = \\c => np.s ! c ++ (reflPron np.a).s ! c ;
|
||||
a = np.a ;
|
||||
isPron = False ; -- minun toloni --> minun itseni talo
|
||||
isNeg = np.isNeg
|
||||
} ;
|
||||
|
||||
oper
|
||||
olla = verbOlla ** {sc = NPCase Nom ; h = Back ; p = []} ;
|
||||
|
||||
|
||||
@@ -713,7 +713,8 @@ oper
|
||||
nsa = possSuffixFront agr
|
||||
in {
|
||||
s = table {
|
||||
NPCase (Nom | Gen) | NPAcc => itse ! NPossNom Sg + nsa ;
|
||||
NPCase Nom => itse ! NPossNom Sg ;
|
||||
NPCase Gen | NPAcc => itse ! NPossNom Sg + nsa ;
|
||||
NPCase Transl => itse ! NPossTransl Sg + nsa ;
|
||||
NPCase Illat => itse ! NPossIllat Sg + nsa ;
|
||||
NPCase c => itse ! NCase Sg c + nsa
|
||||
|
||||
@@ -14,7 +14,7 @@ concrete ParseFin of ParseEngAbs =
|
||||
SentenceFin,
|
||||
QuestionFin,
|
||||
RelativeFin,
|
||||
IdiomFin [NP, VP, Tense, Cl, ProgrVP, ExistNP]
|
||||
IdiomFin [NP, VP, Tense, Cl, ProgrVP, ExistNP, SelfAdvVP, SelfAdVVP, SelfNP]
|
||||
, ExtraFin [NP, Quant, VPSlash, VP, Tense, GenNP, PassVPSlash, Voc, RP, GenRP,
|
||||
Temp, Tense, Pol, Conj, VPS, ListVPS, S, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS,
|
||||
VPI, VPIForm, VPIInf, VPIPresPart, ListVPI, VV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV]
|
||||
|
||||
@@ -63,6 +63,14 @@ concrete IdiomGer of Idiom = CatGer **
|
||||
MConjunct ! Pres ! Simul ! Pos ! Inv
|
||||
} ;
|
||||
|
||||
SelfAdvVP vp = insertAdv "selbst" vp ;
|
||||
SelfAdVVP vp = insertAdv "selbst" vp ;
|
||||
SelfNP np = {
|
||||
s = \\c => np.s ! c ++ "selbst" ;
|
||||
a = np.a ;
|
||||
isPron = False
|
||||
} ;
|
||||
|
||||
oper
|
||||
geben = dirV2 (mk6V "geben" "gibt" "gib" "gab" "gäbe" "gegeben") ;
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ concrete ParseGer of ParseEngAbs =
|
||||
SentenceGer,
|
||||
QuestionGer,
|
||||
RelativeGer,
|
||||
IdiomGer [NP, VP, Tense, Cl, ProgrVP, ExistNP],
|
||||
IdiomGer [NP, VP, Tense, Cl, ProgrVP, ExistNP, SelfAdvVP, SelfAdVVP, SelfNP],
|
||||
ExtraGer [NP, Quant, VPSlash, VP, Tense, GenNP, PassVPSlash,
|
||||
Temp, Pol, Conj, VPS, ListVPS, S, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS,
|
||||
VPI, VPIForm, VPIInf, VPIPresPart, ListVPI, VV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV,
|
||||
|
||||
@@ -43,7 +43,7 @@ incomplete concrete CatScand of Cat =
|
||||
fin : Str ; -- V1 har ---s1
|
||||
inf : Str -- V2 sagt ---s4
|
||||
} ;
|
||||
a1 : Polarity => Str ; -- A1 inte ---s3
|
||||
a1 : Polarity => Agr => Str ; -- A1 inte ---s3
|
||||
n2 : Agr => Str ; -- N2 dig ---s5
|
||||
a2 : Str ; -- A2 idag ---s6
|
||||
ext : Str ; -- S-Ext att hon går ---s7
|
||||
|
||||
@@ -274,7 +274,7 @@ oper
|
||||
fin : Str ; -- V1 har ---s1
|
||||
inf : Str -- V2 sagt ---s4
|
||||
} ;
|
||||
a1 : Polarity => Str ; -- A1 inte ---s3
|
||||
a1 : Polarity => Agr => Str ; -- A1 inte ---s3 själv/själva/självt
|
||||
n2 : Agr => Str ; -- N2 dig ---s5
|
||||
a2 : Str ; -- A2 idag ---s6
|
||||
ext : Str ; -- S-Ext att hon går ---s7
|
||||
@@ -327,9 +327,11 @@ oper
|
||||
eext = True ;
|
||||
} ;
|
||||
|
||||
insertAdV : Str -> VP -> VP = \adv,vp -> {
|
||||
insertAdV : Str -> VP -> VP = \adv -> insertAdVAgr (\\_ => adv) ;
|
||||
|
||||
insertAdVAgr : (Agr => Str) -> VP -> VP = \adv,vp -> {
|
||||
s = vp.s ;
|
||||
a1 = \\b => vp.a1 ! b ++ adv ;
|
||||
a1 = \\b,a => vp.a1 ! b ! a ++ adv ! a ;
|
||||
n2 = vp.n2 ;
|
||||
a2 = vp.a2 ;
|
||||
ext = vp.ext ;
|
||||
@@ -352,7 +354,7 @@ oper
|
||||
infVP : VP -> Agr -> Str = \vp,a -> infVPPlus vp a Simul Pos ;
|
||||
|
||||
infVPPlus : VP -> Agr -> Anteriority -> Polarity -> Str = \vp,a,ant,pol ->
|
||||
vp.a1 ! pol ++ (vp.s ! Act ! VPInfinit ant).inf ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ; --- a1
|
||||
vp.a1 ! pol ! a ++ (vp.s ! Act ! VPInfinit ant).inf ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ; --- a1
|
||||
|
||||
|
||||
-- For $Sentence$.
|
||||
@@ -365,7 +367,7 @@ oper
|
||||
s = \\t,a,b,o =>
|
||||
let
|
||||
verb = vp.s ! Act ! VPFinite t a ;
|
||||
neg = vp.a1 ! b ;
|
||||
neg = vp.a1 ! b ! agr ;
|
||||
compl = vp.n2 ! agr ++ vp.a2 ++ vp.ext
|
||||
in
|
||||
case o of {
|
||||
|
||||
@@ -76,7 +76,7 @@ incomplete concrete ExtraScand of ExtraScandAbs = CatScand **
|
||||
MkVPS t p vp = {
|
||||
s = \\o,a =>
|
||||
let
|
||||
neg = vp.a1 ! p.p ;
|
||||
neg = vp.a1 ! p.p ! a ;
|
||||
verb = vp.s ! Act ! VPFinite t.t t.a ;
|
||||
compl = verb.inf ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ;
|
||||
in t.s ++ p.s ++ case o of {
|
||||
|
||||
@@ -66,7 +66,7 @@ interface ResScand = DiffScand ** open CommonScand, Prelude in {
|
||||
VPInfinit Anter => vf [] (ha ++ vsup d) ; --# notpresent
|
||||
VPInfinit Simul => vf [] (vinf d)
|
||||
} ;
|
||||
a1 : Polarity => Str = negation ;
|
||||
a1 : Polarity => Agr => Str = \\p,a => negation ! p ;
|
||||
n2 : Agr => Str = \\a => case verb.vtype of {
|
||||
VRefl => reflPron a ;
|
||||
_ => []
|
||||
|
||||
@@ -14,7 +14,7 @@ incomplete concrete SentenceScand of Sentence =
|
||||
agr = {g = Utr ; n = n ; p = P2} ;
|
||||
verb = vp.s ! Act ! VPImperat ;
|
||||
in
|
||||
verb.fin ++ vp.a1 ! pol ++ verb.inf ++ vp.n2 ! agr ++ vp.a2 ++ vp.ext
|
||||
verb.fin ++ vp.a1 ! pol ! agr ++ verb.inf ++ vp.n2 ! agr ++ vp.a2 ++ vp.ext
|
||||
} ;
|
||||
|
||||
SlashVP np vp =
|
||||
|
||||
@@ -90,7 +90,7 @@ lin
|
||||
verb = mkClause subj agr (predV do_V) ;
|
||||
comp = vp.n2 ! agr ++ vp.a2 ++ vp.ext
|
||||
in
|
||||
vf ++ comp ++ (verb.s ! t ! a ! p ! Inv) ++ vp.a1 ! Pos
|
||||
vf ++ comp ++ (verb.s ! t ! a ! p ! Inv) ++ vp.a1 ! Pos ! agr
|
||||
} ;
|
||||
|
||||
oper do_V : V = mkV "göra" "gör" "gör" "gjorde" "gjort" "gjord" ;
|
||||
@@ -110,7 +110,7 @@ lin
|
||||
let vps = vp.s ! Act ! VPInfinit Simul ;
|
||||
vvp = UseV vv ;
|
||||
vvs = vvp.s ! Act ! VPFinite t a ;
|
||||
always = vp.a1 ! Pos ++ vvp.a1 ! Pos ;
|
||||
always = vp.a1 ! Pos ! np.a ++ vvp.a1 ! Pos ! np.a ;
|
||||
already = vp.a2 ++ vvp.a2 in
|
||||
vps.inf ++ vp.n2 ! np.a ++ vvs.fin ++ np.s ! NPNom
|
||||
++ vv.c2.s ++ always ++ negation ! p ++ already ++ vvs.inf
|
||||
@@ -150,7 +150,7 @@ lin
|
||||
|
||||
SupCl np vp pol = let sub = np.s ! nominative ; --# notpresent
|
||||
verb = (vp.s ! Act ! VPFinite SPres Anter).inf ; --# notpresent
|
||||
neg = vp.a1 ! pol.p ++ pol.s ; --# notpresent
|
||||
neg = vp.a1 ! pol.p ! np.a ++ pol.s ; --# notpresent
|
||||
compl = vp.n2 ! np.a ++ vp.a2 ++ vp.ext in --# notpresent
|
||||
{s = \\_ => sub ++ neg ++ verb ++ compl }; --# notpresent
|
||||
|
||||
|
||||
@@ -55,6 +55,20 @@ concrete IdiomSwe of Idiom = CatSwe **
|
||||
|
||||
ImpPl1 vp = {s = ["låt oss"] ++ infVP vp {g = Utr ; n = Pl ; p = P1}} ;
|
||||
|
||||
SelfAdvVP vp = insertObj (\\a => sjalv a.g a.n) vp ;
|
||||
SelfAdVVP vp = insertAdVAgr (\\a => sjalv a.g a.n) vp ;
|
||||
SelfNP np = {
|
||||
s = \\c => np.s ! c ++ sjalv np.a.g np.a.n ;
|
||||
a = np.a
|
||||
} ;
|
||||
|
||||
oper
|
||||
sjalv : Gender -> Number -> Str = \g,n -> case <g,n> of {
|
||||
<Utr,Sg> => "själv" ;
|
||||
<Neutr,Sg> => "självt" ;
|
||||
_ => "själva"
|
||||
} ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ concrete ParseSwe of ParseEngAbs =
|
||||
SentenceSwe,
|
||||
QuestionSwe,
|
||||
RelativeSwe,
|
||||
IdiomSwe [NP, VP, Tense, Cl, ProgrVP, ExistNP],
|
||||
IdiomSwe [NP, VP, Tense, Cl, ProgrVP, ExistNP, SelfAdvVP, SelfAdVVP, SelfNP],
|
||||
ExtraSwe [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,
|
||||
|
||||
Reference in New Issue
Block a user