diff --git a/lib/src/experimental/PredEng.gf b/lib/src/experimental/PredEng.gf index e26da81fc..2f9cddced 100644 --- a/lib/src/experimental/PredEng.gf +++ b/lib/src/experimental/PredEng.gf @@ -9,6 +9,8 @@ concrete PredEng of Pred = QuestVP, RelVP, + UseCl, -- for contracted forms + QuestIComp ---- IComp has no parameters in Eng ] with @@ -21,6 +23,7 @@ concrete PredEng of Pred = lin PassUseV x a t p v = initPrVerbPhraseV a t p v ** { v = \\agr => tenseV (a.s ++ t.s ++ p.s) t.t a.a p.p passive agr v ; + vc = \\agr => tenseVContracted (a.s ++ t.s ++ p.s) t.t a.a p.p passive agr v ; inf = \\vt => tenseInfV a.s a.a p.p passive v vt ; obj2 = ; -- becomes subject control even if object control otherwise "*she was promised by us to love ourselves" qforms = \\agr => qformsCopula (a.s ++ t.s ++ p.s) t.t a.a p.p agr ; @@ -28,6 +31,7 @@ lin AgentPassUseV x a t p v np = initPrVerbPhraseV a t p v ** { v = \\agr => tenseV (a.s ++ t.s ++ p.s) t.t a.a p.p passive agr v ; + v = \\agr => tenseVContracted (a.s ++ t.s ++ p.s) t.t a.a p.p passive agr v ; inf = \\vt => tenseInfV a.s a.a p.p passive v vt ; obj2 = ; -- becomes subject control even if object control otherwise "*she was promised by us to love ourselves" adv = appComplCase agentCase np ; @@ -37,6 +41,7 @@ lin PredVP x np vp = vp ** { v = applyVerb vp (agr2vagr np.a) ; + vc = vp.vc ! (agr2vagr np.a) ; subj = appSubjCase np ; adj = vp.adj ! np.a ; obj1 = vp.part ++ strComplCase vp.c1 ++ vp.obj1.p1 ! np.a ; ---- apply complCase ---- place of part depends on obj @@ -50,6 +55,7 @@ lin ipa = ipagr2agr ip.n in { v = applyVerb vp (ipagr2vagr ip.n) ; + vc = vp.vc ! (ipagr2vagr ip.n) ; foc = ip.s ! subjCase ; focType = FocSubj ; subj = [] ; @@ -63,6 +69,9 @@ lin qforms = qformsVP vp (ipagr2vagr ip.n) ; } ; + UseCl cl = {s = declCl cl} + | {s = declClContracted cl} ; + RelVP rp vp = let cl : Agr -> PrClause = \a -> @@ -70,6 +79,7 @@ lin vp ** { v = applyVerb vp (agr2vagr rpa) ; + vc = vp.vc ! (agr2vagr rpa) ; subj = rp.s ! subjRPCase a ; adj = vp.adj ! rpa ; obj1 = vp.part ++ strComplCase vp.c1 ++ vp.obj1.p1 ! rpa ; ---- apply complCase ---- place of part depends on obj @@ -92,7 +102,8 @@ 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 ; + v = tenseCopula (a.s ++ t.s ++ p.s) t.t a.a p.p vagr ; + vc = tenseCopulaC (a.s ++ t.s ++ p.s) t.t a.a p.p vagr ; subj = np.s ! subjCase ; foc = icomp.s ; focType = FocObj ; diff --git a/lib/src/experimental/PredInstanceEng.gf b/lib/src/experimental/PredInstanceEng.gf index 5fa8ceea4..8454bd3e5 100644 --- a/lib/src/experimental/PredInstanceEng.gf +++ b/lib/src/experimental/PredInstanceEng.gf @@ -10,28 +10,25 @@ instance PredInstanceEng of PredInterface - [ oper - PrVerbPhrase = BasePrVerbPhrase ** {qforms : VAgr => Str * Str} ; - PrClause = BasePrClause ** {qforms : Str * Str} ; +-- add contracted verb forms and forms for question + + PrVerbPhrase = BasePrVerbPhrase ** {vc : VAgr => Str * Str * Str ; qforms : VAgr => Str * Str} ; + PrClause = BasePrClause ** {vc : Str * Str * Str ; qforms : Str * Str} ; initPrVerbPhrase : PrVerbPhrase = initBasePrVerbPhrase ** { + vc : VAgr => Str * Str * Str = \\_ => <[],[],[]> ; qforms = \\agr => <[],[]> ; } ; initPrVerbPhraseV : {s : Str ; a : Anteriority} -> {s : Str ; t : STense} -> {s : Str ; p : Polarity} -> PrVerb -> PrVerbPhrase = \a,t,p,v -> initBasePrVerbPhraseV a t p v ** { + vc = \\agr => tenseVContracted (a.s ++ t.s ++ p.s) t.t a.a p.p active agr v ; qforms = \\agr => qformsV (a.s ++ t.s ++ p.s) t.t a.a p.p agr v } ; - initPrVerbPhraseVContracted : - {s : Str ; a : Anteriority} -> {s : Str ; t : STense} -> {s : Str ; p : Polarity} -> PrVerb -> PrVerbPhrase = - \a,t,p,v -> initPrVerbPhraseV a t p v ** { - v = \\agr => tenseVContracted (a.s ++ t.s ++ p.s) t.t a.a p.p active agr v ; - qforms = \\agr => qformsV (a.s ++ t.s ++ p.s) t.t a.a p.p agr v - } ; - - initPrClause : PrClause = initBasePrClause ** { + vc = <[],[],[]> ; qforms = <[],[]> ; } ; @@ -39,6 +36,7 @@ oper PrVerbPhrase = \a,t,p -> initPrVerbPhrase ** { v = \\agr => tenseCopula (a.s ++ t.s ++ p.s) t.t a.a p.p agr ; + vc = \\agr => tenseCopulaC (a.s ++ t.s ++ p.s) t.t a.a p.p agr ; inf = \\vt => tenseInfCopula a.s a.a p.p vt ; imp = \\n => tenseImpCopula p.s p.p n ; adV = negAdV p ; @@ -192,7 +190,9 @@ oper in ; -- is , not ---- TODO isn't , tenseCopula : Str -> STense -> Anteriority -> Polarity -> VAgr -> Str * Str * Str = \s,t,a,p,agr -> - be_Aux s t a p agr ; + be_AuxL s t a p agr ; + tenseCopulaC : Str -> STense -> Anteriority -> Polarity -> VAgr -> Str * Str * Str = \s,t,a,p,agr -> + be_AuxC s t a p agr ; tenseInfCopula : Str -> Anteriority -> Polarity -> VVType -> Str = \s,a,p,vt -> tenseInfV s a p Act be_V vt ; tenseImpCopula : Str -> Polarity -> ImpType -> Str = \s,p,n -> @@ -232,7 +232,6 @@ oper _ => case p of { Pos => <[], sta ++ v.s ! VVF vt, []> ; -- this is the deviating case Neg => -----slow | } } ; @@ -261,12 +260,12 @@ oper Neg => } } ; - => - | ; - => - | ; + => ; +---- | ; + => ; +---- | ; => - | +---- | } ; tensePassV : Str -> STense -> Anteriority -> Polarity -> VAgr -> PrVerb -> Str * Str * Str = \sta,t,a,p,agr,v -> @@ -313,8 +312,7 @@ oper ----- dangerous variants for PMCFG generation - keep apart as long as possible be_Aux : Str -> STense -> Anteriority -> Polarity -> VAgr -> Str * Str * Str = \sta,t,a,p,agr -> - be_AuxL sta t a p agr - | be_AuxC sta t a p agr ; + be_AuxL sta t a p agr ; be_AuxL : Str -> STense -> Anteriority -> Polarity -> VAgr -> Str * Str * Str = \sta,t,a,p,agr -> let @@ -340,26 +338,28 @@ oper => ; => ; => ; - => - | <"isn't" ++ sta, [], []> ; + => ---- + <"isn't" ++ sta, [], []> ; => ; - => - | <"aren't" ++ sta, [], []> ; + => ---- + <"aren't" ++ sta, [], []> ; => <"were" ++ sta, [], []> ; => <"weren't" ++ sta, [], []> ; => <"wasn't" ++ sta, [], []> ; _ => beV } ; - declCl : PrClause -> Str = \cl -> cl.subj ++ cl.v.p1 ++ cl.adV ++ cl.v.p2 ++ restCl cl ; + declCl : PrClause -> Str = \cl -> cl.subj ++ cl.v.p1 ++ cl.adV ++ cl.v.p2 ++ restCl cl ; declSubordCl : PrClause -> Str = declCl ; declInvCl : PrClause -> Str = declCl ; + declClContracted : PrClause -> Str = \cl -> cl.subj ++ cl.vc.p1 ++ cl.adV ++ cl.vc.p2 ++ restCl cl ; -- contracted forms + questSubordCl : PrQuestionClause -> Str = \cl -> let rest = cl.subj ++ cl.adV ++ cl.v.p1 ++ cl.v.p2 ++ restCl cl in case cl.focType of { - NoFoc => "if" ++ cl.foc ++ rest ; -- om she sleeps + NoFoc => "if" ++ cl.foc ++ rest ; -- if she sleeps FocObj => cl.foc ++ rest ; -- who she loves / why she sleeps FocSubj => cl.foc ++ rest -- who loves her } ; diff --git a/lib/src/translator/DictionarySwe.gf b/lib/src/translator/DictionarySwe.gf index 16df58e8c..e6ced6258 100644 --- a/lib/src/translator/DictionarySwe.gf +++ b/lib/src/translator/DictionarySwe.gf @@ -15712,7 +15712,7 @@ lin descent_N = mkN "börd" | mkN "överfall" neutrum ; -- SaldoWN -- comment=15 lin describable_A = mkA "beskrivbar" ; lin describe_V = mkV "beskriva" "beskrev" "beskrivit" ; -- SaldoWN lin describe_V2 = mkV2 "beskriva" "beskrev" "beskrivit" | dirV2 (partV (mkV "kallar")"ut") ; -- SaldoWN -lin describe_VS = mkVS (mkV "beskriva" "beskrev" "beskrivit" ; -- SaldoWN -- status=guess, src=wikt +lin describe_VS = mkVS (mkV "beskriva" "beskrev" "beskrivit") ; -- SaldoWN lin description_N = mkN "slag" neutrum; -- comment=7 lin descriptive_A = mkA "beskrivande" ; -- comment=2 lin descriptivism_N = variants {} ; @@ -15766,7 +15766,7 @@ lin desire_V2 = mkV2 (mkV "begära") | mkV2 (mkV "åtrå"); -- status=guess, src lin desirous_A = mkA "lysten" "lystet" ; -- SaldoWN lin desist_V = mkV "avstå" "avstod" "avstått" ; -- comment=2 lin desk_N = mkN "skolbänk" ; -- SaldoWN -lin desktop_N = mkN "c-p" ; -- status=guess +lin desktop_N = mkN "PC" ; lin desmid_N = variants {} ; lin desmond_PN = variants {} ; lin desolate_A = mkA "öde" ; -- comment=5