diff --git a/lib/src/experimental/Pred.gf b/lib/src/experimental/Pred.gf index d234cf755..73c285af6 100644 --- a/lib/src/experimental/Pred.gf +++ b/lib/src/experimental/Pred.gf @@ -58,7 +58,7 @@ fun QuestSlash : (a : Arg) -> IP -> PrQCl (aNP a) -> PrQCl a ; QuestCl : (a : Arg) -> PrCl a -> PrQCl a ; QuestIAdv : (a : Arg) -> IAdv -> PrCl a -> PrQCl a ; - QuestIComp : IComp -> NP -> PrQCl aNone ; + QuestIComp : Ant -> Tense -> Pol -> IComp -> NP -> PrQCl aNone ; -- where is she UseCl : PrCl aNone -> PrS ; UseQCl : PrQCl aNone -> PrS ; -- deprecate QS diff --git a/lib/src/experimental/PredEng.gf b/lib/src/experimental/PredEng.gf index f72aa142d..a0111b735 100644 --- a/lib/src/experimental/PredEng.gf +++ b/lib/src/experimental/PredEng.gf @@ -1,4 +1,20 @@ concrete PredEng of Pred = - CatEng [Ant,NP,Utt,IP,IAdv,Conj,RP,RS,Imp] ** - PredFunctor with - (PredInterface = PredInstanceEng) ; + CatEng [Ant,NP,Utt,IP,IAdv,IComp,Conj,RP,RS] ** + PredFunctor - [QuestIComp] ---- IComp has no parameters in Eng + with + (PredInterface = PredInstanceEng) + + ** open PredInstanceEng in { + +lin + QuestIComp a t p icomp np = + let vagr = (agr2vagr np.a) in + initPrClause ** { + v = tenseCopula (a.s ++ t.s ++ p.s) t.t a.a p.p vagr ; + subj = np.s ! subjCase ; + foc = icomp.s ; + focType = FocObj ; + qforms = qformsCopula (a.s ++ t.s ++ p.s) t.t a.a p.p vagr ; + } ; + +} diff --git a/lib/src/experimental/PredFunctor.gf b/lib/src/experimental/PredFunctor.gf index 935b728c3..ed45a9a03 100644 --- a/lib/src/experimental/PredFunctor.gf +++ b/lib/src/experimental/PredFunctor.gf @@ -1,4 +1,4 @@ -incomplete concrete PredFunctor of Pred = Cat [Ant,NP,Utt,IP,IAdv,Conj,RP,RS] ** +incomplete concrete PredFunctor of Pred = Cat [Ant,NP,Utt,IP,IAdv,IComp,Conj,RP,RS] ** open PredInterface, ParamX, @@ -221,6 +221,17 @@ lin } ; -} + QuestIComp a t p icomp np = + let vagr = (agr2vagr np.a) in + initPrClause ** { + v = tenseCopula (a.s ++ t.s ++ p.s) t.t a.a p.p vagr ; + subj = np.s ! subjCase ; + adV = negAdV p ; + foc = icomp.s ! agr2icagr np.a ; + focType = FocObj ; + qforms = qformsCopula (a.s ++ t.s ++ p.s) t.t a.a p.p vagr ; + } ; + RelVP rp vp = let cl : Agr -> PrClause = \a -> diff --git a/lib/src/experimental/PredInstanceEng.gf b/lib/src/experimental/PredInstanceEng.gf index 56b11e9de..bba3c641c 100644 --- a/lib/src/experimental/PredInstanceEng.gf +++ b/lib/src/experimental/PredInstanceEng.gf @@ -47,6 +47,7 @@ oper NAgr = Number ; IPAgr = Number ; RPAgr = ResEng.RAgr ; + ICAgr = Unit ; defaultAgr : Agr = AgP3Sg Neutr ; @@ -66,6 +67,8 @@ oper AgP3Pl => Pl } ; + agr2icagr : Agr -> ICAgr = \a -> UUnit ; + -- restoring full Agr ipagr2agr : IPAgr -> Agr = \n -> case n of { Sg => AgP3Sg Neutr ; ---- gender diff --git a/lib/src/experimental/PredInstanceSwe.gf b/lib/src/experimental/PredInstanceSwe.gf index 1a8302c52..61711c144 100644 --- a/lib/src/experimental/PredInstanceSwe.gf +++ b/lib/src/experimental/PredInstanceSwe.gf @@ -42,6 +42,7 @@ oper NAgr = Number ; --- only Indef Nom forms are needed here IPAgr = Number ; ----{g : Gender ; n : Number} ; --- two separate fields in RGL RPAgr = RAgr ; + ICAgr = AFormPos ; defaultAgr : Agr = {g = Utr ; n = Sg ; p = P3} ; @@ -50,6 +51,8 @@ oper agr2aagr : Agr -> AAgr = \a -> a ; + agr2icagr : Agr -> ICAgr = agr2aformpos ; + --- could use this? agr2aformpos : Agr -> AFormPos = \a -> case a.n of { diff --git a/lib/src/experimental/PredInterface.gf b/lib/src/experimental/PredInterface.gf index d9d4f86e8..5e796863f 100644 --- a/lib/src/experimental/PredInterface.gf +++ b/lib/src/experimental/PredInterface.gf @@ -66,14 +66,16 @@ oper AAgr = Agr ; -- because of reflexives: "happy with itself" IPAgr : PType ; -- agreement of IP RPAgr : PType ; -- agreement of RP + ICAgr : PType ; -- agreement to IComp defaultAgr : Agr ; -- omitting parts of Agr information - agr2vagr : Agr -> VAgr ; - agr2aagr : Agr -> AAgr ; - agr2nagr : Agr -> NAgr ; + agr2vagr : Agr -> VAgr ; + agr2aagr : Agr -> AAgr ; + agr2nagr : Agr -> NAgr ; + agr2icagr : Agr -> ICAgr ; -- restoring full Agr ipagr2agr : IPAgr -> Agr ; diff --git a/lib/src/experimental/PredSwe.gf b/lib/src/experimental/PredSwe.gf index 0b59d49af..e7d0b9d0f 100644 --- a/lib/src/experimental/PredSwe.gf +++ b/lib/src/experimental/PredSwe.gf @@ -1,5 +1,5 @@ concrete PredSwe of Pred = - CatSwe [Ant,NP,Utt,IP,IAdv,Conj,RP,RS,Imp] ** + CatSwe [Ant,NP,Utt,IP,IAdv,IComp,Conj,RP,RS,Imp] ** PredFunctor - [RelVP,RelSlash] ---- incompatible arity: to be fixed in RGL with (PredInterface = PredInstanceSwe) diff --git a/lib/src/experimental/RGLBase.gf b/lib/src/experimental/RGLBase.gf index 36b46a9fa..a97bf166c 100644 --- a/lib/src/experimental/RGLBase.gf +++ b/lib/src/experimental/RGLBase.gf @@ -9,7 +9,7 @@ abstract RGLBase = Adverb, Phrase, ---- Sentence, ----- Question, + Question - [QuestCl,QuestVP,QuestSlash,QuestIAdv,QuestIComp], Relative - [RelCl,RelVP,RelSlash], ---- Idiom [NP, VP, Cl, Tense, ProgrVP, ExistNP, SelfAdvVP, SelfAdVVP, SelfNP], ---- why only these? diff --git a/lib/src/experimental/RGLBaseEng.gf b/lib/src/experimental/RGLBaseEng.gf index b92bc025f..85f5a9840 100644 --- a/lib/src/experimental/RGLBaseEng.gf +++ b/lib/src/experimental/RGLBaseEng.gf @@ -9,7 +9,7 @@ concrete RGLBaseEng of RGLBase = AdverbEng, PhraseEng, ---- Sentence, ----- Question, + QuestionEng - [QuestCl,QuestVP,QuestSlash,QuestIAdv,QuestIComp], RelativeEng - [RelCl,RelVP,RelSlash], ---- Idiom [NP, VP, Cl, Tense, ProgrVP, ExistNP, SelfAdvVP, SelfAdVVP, SelfNP], ---- why only these? diff --git a/lib/src/experimental/RGLBaseSwe.gf b/lib/src/experimental/RGLBaseSwe.gf index bbe22d348..789b4ef25 100644 --- a/lib/src/experimental/RGLBaseSwe.gf +++ b/lib/src/experimental/RGLBaseSwe.gf @@ -9,7 +9,7 @@ concrete RGLBaseSwe of RGLBase = AdverbSwe, PhraseSwe, ---- Sentence, ----- Question, + QuestionSwe - [QuestCl,QuestVP,QuestSlash,QuestIAdv,QuestIComp], RelativeSwe - [RelCl,RelVP,RelSlash], ---- Idiom [NP, VP, Cl, Tense, ProgrVP, ExistNP, SelfAdvVP, SelfAdVVP, SelfNP], ---- why only these?