From ac39f379151dbe692660416e7f6b96e9aa81b46f Mon Sep 17 00:00:00 2001 From: aarne Date: Wed, 12 Mar 2014 16:37:00 +0000 Subject: [PATCH] SmallPred for optimized parsing speed: 20 times faster than NDPred --- lib/src/experimental/App.gf | 8 +- lib/src/experimental/AppEng.gf | 7 +- lib/src/experimental/AppFin.gf | 7 +- lib/src/experimental/AppSwe.gf | 6 +- lib/src/experimental/NDPredTrans.probs | 4 +- lib/src/experimental/SmallPred.gf | 212 ++++++++++++++++++++++ lib/src/experimental/SmallPredEng.gf | 241 +++++++++++++++++++++++++ lib/src/experimental/SmallPredFin.gf | 184 +++++++++++++++++++ lib/src/experimental/SmallPredSwe.gf | 241 +++++++++++++++++++++++++ 9 files changed, 903 insertions(+), 7 deletions(-) create mode 100644 lib/src/experimental/SmallPred.gf create mode 100644 lib/src/experimental/SmallPredEng.gf create mode 100644 lib/src/experimental/SmallPredFin.gf create mode 100644 lib/src/experimental/SmallPredSwe.gf diff --git a/lib/src/experimental/App.gf b/lib/src/experimental/App.gf index 9f3b79210..e53f335c9 100644 --- a/lib/src/experimental/App.gf +++ b/lib/src/experimental/App.gf @@ -1,11 +1,15 @@ --# -path=.:../translator:../../../examples/phrasebook abstract App = - NDTrans + SmallPred + , Extensions [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] + , Documentation - [Pol,Tense] + , Dictionary - [Pol,Tense] + , Phrasebook ** { flags - startcat=Phr; + startcat=Phr ; fun PhrasePhr : Phrase -> Phr ; diff --git a/lib/src/experimental/AppEng.gf b/lib/src/experimental/AppEng.gf index 4efc4e453..50f1d83c3 100644 --- a/lib/src/experimental/AppEng.gf +++ b/lib/src/experimental/AppEng.gf @@ -1,8 +1,13 @@ --# -path=.:../translator:../../../examples/phrasebook concrete AppEng of App = - NDTransEng + SmallPredEng + , ExtensionsEng [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] + , DocumentationEng - [Pol,Tense] + , DictionaryEng - [Pol,Tense] + , PhrasebookEng + ** { flags diff --git a/lib/src/experimental/AppFin.gf b/lib/src/experimental/AppFin.gf index d5f0e1eee..0e701448b 100644 --- a/lib/src/experimental/AppFin.gf +++ b/lib/src/experimental/AppFin.gf @@ -1,8 +1,13 @@ --# -path=.:../finnish/stemmed:../finnish:../api:../translator:../../../examples/phrasebook:alltenses concrete AppFin of App = - NDTransFin + SmallPredFin + , ExtensionsFin [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] + , DocumentationFin - [Pol,Tense] + , DictionaryFin - [Pol,Tense] + , PhrasebookFin + ** { flags diff --git a/lib/src/experimental/AppSwe.gf b/lib/src/experimental/AppSwe.gf index 56fb8f19c..7bab66ef9 100644 --- a/lib/src/experimental/AppSwe.gf +++ b/lib/src/experimental/AppSwe.gf @@ -1,8 +1,12 @@ --# -path=.:../translator:../../../examples/phrasebook concrete AppSwe of App = - NDTransSwe + SmallPredSwe + , ExtensionsSwe [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] + , DocumentationSwe - [Pol,Tense] + , DictionarySwe - [Pol,Tense] , PhrasebookSwe - [open_A] + ** { flags diff --git a/lib/src/experimental/NDPredTrans.probs b/lib/src/experimental/NDPredTrans.probs index 9442be6d6..a74c80b55 100644 --- a/lib/src/experimental/NDPredTrans.probs +++ b/lib/src/experimental/NDPredTrans.probs @@ -65288,8 +65288,8 @@ V_np_v_pastpart_Chunk 0.01 V_np_a_pastpart_Chunk 0.001 V_np_q_pastpart_Chunk 0.001 PhrasePhr 0.8 -PhrUtt 0.19 -PhrChunk 0.01 +PhrUtt 0.199 +PhrChunk 1.0e-6 OneChunk 0.8 PlusChunk 0.2 refl_SgP1_Chunk 5.751177721092363e-4 diff --git a/lib/src/experimental/SmallPred.gf b/lib/src/experimental/SmallPred.gf new file mode 100644 index 000000000..a930f6ad7 --- /dev/null +++ b/lib/src/experimental/SmallPred.gf @@ -0,0 +1,212 @@ +abstract SmallPred = + RGLBase - [Pol,Tense] +** { + +cat + PrV_none ; PrV_np ; PrV_v ; PrV_s ; PrV_q ; PrV_a ; PrV_n ; + PrV_np_np ; PrV_np_v ; PrV_np_s ; PrV_np_q ; PrV_np_a ; PrV_np_n ; + + PrVP_none ; PrVP_np ; PrVP_v ; PrVP_s ; PrVP_q ; PrVP_a ; PrVP_n ; + PrVP_np_np ; PrVP_np_v ; PrVP_np_s ; PrVP_np_q ; PrVP_np_a ; PrVP_np_n ; + + + Tense ; + Pol ; + + PrCl_none ; + + PrQCl_none ; + + PrAdv_none ; + + PrS ; + + PrAP_none ; + + PrCN_none ; + +fun + TPres, TPast, TFut, TCond : Tense ; + PPos, PNeg : Pol ; + ASimul, AAnter : Ant ; + + UseV_none : Ant -> Tense -> Pol -> PrV_none -> PrVP_none ; + UseV_np : Ant -> Tense -> Pol -> PrV_np -> PrVP_np ; + UseV_v : Ant -> Tense -> Pol -> PrV_v -> PrVP_v ; + UseV_s : Ant -> Tense -> Pol -> PrV_s -> PrVP_s ; + UseV_a : Ant -> Tense -> Pol -> PrV_a -> PrVP_a ; + UseV_q : Ant -> Tense -> Pol -> PrV_q -> PrVP_q ; + UseV_n : Ant -> Tense -> Pol -> PrV_v -> PrVP_n ; + UseV_np_np : Ant -> Tense -> Pol -> PrV_np_np -> PrVP_np_np ; + UseV_np_v : Ant -> Tense -> Pol -> PrV_np_v -> PrVP_np_v ; + UseV_np_s : Ant -> Tense -> Pol -> PrV_np_s -> PrVP_np_s ; + UseV_np_a : Ant -> Tense -> Pol -> PrV_np_a -> PrVP_np_a ; + UseV_np_q : Ant -> Tense -> Pol -> PrV_np_q -> PrVP_np_q ; + UseV_np_n : Ant -> Tense -> Pol -> PrV_np_n -> PrVP_np_n ; + +-- ComplV2_none : PrVP_np -> NP -> PrVP_none ; + + UseAP_none : Ant -> Tense -> Pol -> PrAP_none -> PrVP_none ; + + UseAdv_none : Ant -> Tense -> Pol -> PrAdv_none -> PrVP_none ; + + UseCN_none : Ant -> Tense -> Pol -> PrCN_none -> PrVP_none ; + + UseNP_none : Ant -> Tense -> Pol -> NP -> PrVP_none ; + + PredVP_none : NP -> PrVP_none -> PrCl_none ; + PredVP_np : NP -> PrVP_np -> PrCl_none ; + PredVP_v : NP -> PrVP_v -> PrCl_none ; + PredVP_a : NP -> PrVP_a -> PrCl_none ; + PredVP_s : NP -> PrVP_s -> PrCl_none ; + PredVP_q : NP -> PrVP_q -> PrCl_none ; + PredVP_np_np : NP -> PrVP_np -> PrCl_none ; + PredVP_np_v : NP -> PrVP_v -> PrCl_none ; + PredVP_np_a : NP -> PrVP_a -> PrCl_none ; + PredVP_np_s : NP -> PrVP_s -> PrCl_none ; + PredVP_np_q : NP -> PrVP_q -> PrCl_none ; + + Pred2VP_none : NP -> PrVP_none -> NP -> PrCl_none ; + Pred2VP_np : NP -> PrVP_np -> NP -> PrCl_none ; + Pred2VP_v : NP -> PrVP_v -> NP -> PrCl_none ; + Pred2VP_a : NP -> PrVP_a -> NP -> PrCl_none ; + Pred2VP_s : NP -> PrVP_s -> NP -> PrCl_none ; + Pred2VP_q : NP -> PrVP_q -> NP -> PrCl_none ; + Pred2VP_np_np : NP -> PrVP_np -> NP -> PrCl_none ; + Pred2VP_np_v : NP -> PrVP_v -> NP -> PrCl_none ; + Pred2VP_np_a : NP -> PrVP_a -> NP -> PrCl_none ; + Pred2VP_np_s : NP -> PrVP_s -> NP -> PrCl_none ; + Pred2VP_np_q : NP -> PrVP_q -> NP -> PrCl_none ; + + QuestVP_none : IP -> PrVP_none -> PrQCl_none ; + + QuestCl_none : PrCl_none -> PrQCl_none ; + + QuestIAdv_none : IAdv -> PrCl_none -> PrQCl_none ; + + QuestIComp_none : Ant -> Tense -> Pol -> IComp -> NP -> PrQCl_none ; -- where is she + + UseCl_none : PrCl_none -> PrS ; + + UseQCl_none : PrQCl_none -> PrS ; + + UttPrS : PrS -> Utt ; + + PrImpSg : PrVP_none -> Utt ; + PrImpPl : PrVP_none -> Utt ; + + +---- Lift + +fun + LiftV : V -> PrV_none ; + LiftV2 : V2 -> PrV_np ; + LiftVS : VS -> PrV_s ; + LiftVQ : VQ -> PrV_q ; + LiftVV : VV -> PrV_v ; + LiftVA : VA -> PrV_a ; + LiftVN : VA -> PrV_n ; ---- + + LiftV3 : V3 -> PrV_np_np ; + LiftV2S : V2S -> PrV_np_s ; + LiftV2Q : V2Q -> PrV_np_q ; + LiftV2V : V2V -> PrV_np_v ; + LiftV2A : V2A -> PrV_np_a ; + LiftV2N : V2A -> PrV_np_n ; ---- + + LiftAP : AP -> PrAP_none ; + LiftCN : CN -> PrCN_none ; + + LiftAdv : Adv -> PrAdv_none ; + LiftAdV : AdV -> PrAdv_none ; + + +------- Chunk + +cat + Chunks ; + Chunk ; + +fun + OneChunk : Chunk -> Chunks ; + PlusChunk : Chunk -> Chunks -> Chunks ; + + ChunkPhr : Chunks -> Phr ; + +fun + + AP_Chunk : AP -> Chunk ; + AdA_Chunk : AdA -> Chunk ; + Adv_Chunk : Adv -> Chunk ; + AdV_Chunk : AdV -> Chunk ; + AdN_Chunk : AdN -> Chunk ; + Cl_Chunk : PrCl_none -> Chunk ; + QCl_Chunk : PrQCl_none -> Chunk ; + CN_Pl_Chunk : CN -> Chunk ; + CN_Sg_Chunk : CN -> Chunk ; + CN_Pl_Gen_Chunk : CN -> Chunk ; + CN_Sg_Gen_Chunk : CN -> Chunk ; + Conj_Chunk : Conj -> Chunk ; + IAdv_Chunk : IAdv -> Chunk ; + IP_Chunk : IP -> Chunk ; + NP_Nom_Chunk : NP -> Chunk ; + NP_Acc_Chunk : NP -> Chunk ; + NP_Gen_Chunk : NP -> Chunk ; + Numeral_Nom_Chunk : Numeral -> Chunk ; + Numeral_Gen_Chunk : Numeral -> Chunk ; + Ord_Nom_Chunk : Ord -> Chunk ; + Ord_Gen_Chunk : Ord -> Chunk ; + Predet_Chunk : Predet -> Chunk ; + Prep_Chunk : Prep -> Chunk ; + RP_Nom_Chunk : RP -> Chunk ; + RP_Gen_Chunk : RP -> Chunk ; + RP_Acc_Chunk : RP -> Chunk ; + Subj_Chunk : Subj -> Chunk ; + + VP_none_Chunk, VP_none_inf_Chunk : PrVP_none -> Chunk ; + VP_np_Chunk, VP_np_inf_Chunk : PrVP_np -> Chunk ; + VP_s_Chunk, VP_s_inf_Chunk : PrVP_s -> Chunk ; + VP_v_Chunk, VP_v_inf_Chunk : PrVP_v -> Chunk ; + VP_a_Chunk, VP_a_inf_Chunk : PrVP_a -> Chunk ; + VP_q_Chunk, VP_q_inf_Chunk : PrVP_q -> Chunk ; + VP_np_np_Chunk, VP_np_np_inf_Chunk : PrVP_np_np -> Chunk ; + VP_np_s_Chunk, VP_np_s_inf_Chunk : PrVP_np_s -> Chunk ; + VP_np_v_Chunk, VP_np_v_inf_Chunk : PrVP_np_v -> Chunk ; + VP_np_q_Chunk, VP_np_q_inf_Chunk : PrVP_np_q -> Chunk ; + VP_np_a_Chunk, VP_np_a_inf_Chunk : PrVP_np_a -> Chunk ; + + V_none_prespart_Chunk, V_none_pastpart_Chunk : PrV_none -> Chunk ; + V_np_prespart_Chunk, V_np_pastpart_Chunk : PrV_np -> Chunk ; + V_s_prespart_Chunk, V_s_pastpart_Chunk : PrV_s -> Chunk ; + V_v_prespart_Chunk, V_v_pastpart_Chunk : PrV_v -> Chunk ; + V_q_prespart_Chunk, V_q_pastpart_Chunk : PrV_q -> Chunk ; + V_a_prespart_Chunk, V_a_pastpart_Chunk : PrV_q -> Chunk ; + + V_np_np_prespart_Chunk, V_np_np_pastpart_Chunk : PrV_np_np -> Chunk ; + V_np_s_prespart_Chunk, V_np_s_pastpart_Chunk : PrV_np_s -> Chunk ; + V_np_v_prespart_Chunk, V_np_v_pastpart_Chunk : PrV_np_v -> Chunk ; + V_np_q_prespart_Chunk, V_np_q_pastpart_Chunk : PrV_np_q -> Chunk ; + V_np_a_prespart_Chunk, V_np_a_pastpart_Chunk : PrV_np_q -> Chunk ; + + refl_SgP1_Chunk, + refl_SgP2_Chunk, + refl_SgP3_Chunk, + refl_PlP1_Chunk, + refl_PlP2_Chunk, + refl_PlP3_Chunk : Chunk ; + neg_Chunk : Chunk ; + copula_Chunk : Chunk ; + copula_neg_Chunk : Chunk ; + copula_inf_Chunk : Chunk ; + past_copula_Chunk : Chunk ; + past_copula_neg_Chunk : Chunk ; + future_Chunk : Chunk ; + future_neg_Chunk : Chunk ; + cond_Chunk : Chunk ; + cond_neg_Chunk : Chunk ; + perfect_Chunk : Chunk ; + perfect_neg_Chunk : Chunk ; + past_perfect_Chunk : Chunk ; + past_perfect_neg_Chunk : Chunk ; + +} diff --git a/lib/src/experimental/SmallPredEng.gf b/lib/src/experimental/SmallPredEng.gf new file mode 100644 index 000000000..700f00be6 --- /dev/null +++ b/lib/src/experimental/SmallPredEng.gf @@ -0,0 +1,241 @@ +concrete SmallPredEng of SmallPred = + RGLBaseEng - [Pol,Tense], + + NDPredEng [ + Ant,NP,Utt,IP,IAdv,IComp,Conj, + PrV_none, PrV_np , PrV_v , PrV_s , PrV_q , PrV_a , PrV_n , + PrV_np_np , PrV_np_v , PrV_np_s , PrV_np_q , PrV_np_a , PrV_np_n , + + Tense , + Pol , + TPres, TPast, TFut, TCond, + PPos, PNeg, + ASimul, AAnter, + PrAdv_none , + PrS, + PrAP_none , + PrCN_none, + UttPrS + + ], + +NDLiftEng [ + CN,AP,V,V2,VV,VS,VA,VQ,V2V,V2S,V2Q,V2A,V3, + PrV_none, PrV_np , PrV_v , PrV_s , PrV_q , PrV_a , PrV_n , + PrV_np_np , PrV_np_v , PrV_np_s , PrV_np_q , PrV_np_a , PrV_np_n , + + LiftV, + LiftV2, + LiftVS, + LiftVQ, + LiftVV, + LiftVA, + LiftVN, + + LiftV3, + LiftV2S, + LiftV2Q, + LiftV2V, + LiftV2A, + LiftV2N, + + LiftAP, + LiftCN, + + LiftAdv, + LiftAdV +], + +ChunkEng [ + Chunks, + Chunk, + + OneChunk, + PlusChunk, + + ChunkPhr, + + AP_Chunk, + AdA_Chunk, + Adv_Chunk, + AdV_Chunk, + AdN_Chunk, + CN_Pl_Chunk, + CN_Sg_Chunk, + CN_Pl_Gen_Chunk, + CN_Sg_Gen_Chunk, + Conj_Chunk, + IAdv_Chunk, + IP_Chunk, + NP_Nom_Chunk, + NP_Acc_Chunk, + NP_Gen_Chunk, + Numeral_Nom_Chunk, + Numeral_Gen_Chunk, + Ord_Nom_Chunk, + Ord_Gen_Chunk, + Predet_Chunk, + Prep_Chunk, + RP_Nom_Chunk, + RP_Gen_Chunk, + RP_Acc_Chunk, + Subj_Chunk, + + V_none_prespart_Chunk, V_none_pastpart_Chunk, + V_np_prespart_Chunk, V_np_pastpart_Chunk, + V_s_prespart_Chunk, V_s_pastpart_Chunk, + V_v_prespart_Chunk, V_v_pastpart_Chunk, + V_q_prespart_Chunk, V_q_pastpart_Chunk, + V_a_prespart_Chunk, V_a_pastpart_Chunk, + + V_np_np_prespart_Chunk, V_np_np_pastpart_Chunk, + V_np_s_prespart_Chunk, V_np_s_pastpart_Chunk, + V_np_v_prespart_Chunk, V_np_v_pastpart_Chunk, + V_np_q_prespart_Chunk, V_np_q_pastpart_Chunk, + V_np_a_prespart_Chunk, V_np_a_pastpart_Chunk, + + refl_SgP1_Chunk, + refl_SgP2_Chunk, + refl_SgP3_Chunk, + refl_PlP1_Chunk, + refl_PlP2_Chunk, + refl_PlP3_Chunk, + neg_Chunk, + copula_Chunk, + copula_neg_Chunk, + copula_inf_Chunk, + past_copula_Chunk, + past_copula_neg_Chunk, + future_Chunk, + future_neg_Chunk, + cond_Chunk, + cond_neg_Chunk, + perfect_Chunk, + perfect_neg_Chunk, + past_perfect_Chunk, + past_perfect_neg_Chunk + + +] + + ** open (P=PredEng), PredInstanceEng in { + +lincat + PrVP_none , PrVP_np , PrVP_v , PrVP_s , PrVP_q , PrVP_a , PrVP_n , + PrVP_np_np , PrVP_np_v , PrVP_np_s , PrVP_np_q , PrVP_np_a , PrVP_np_n + = { + v : VAgr => Str ; + inf : VVType => Str ; + qq : VAgr => Str * Str ; + } ; + + PrCl_none + = {s : Str ; q : Str} ; + PrQCl_none + = {s : Str} ; + +lin + UseV_none, + UseV_np, + UseV_v, + UseV_s, + UseV_a, + UseV_q, + UseV_n, + UseV_np_np, + UseV_np_v, + UseV_np_s, + UseV_np_a, + UseV_np_q, + UseV_np_n + = \a,t,p,v -> mkVP (P.UseV P.aNone a t p v) ; + +oper + mkVP : PrVerbPhrase -> SmallPredEng.PrVP_none = \vp -> + lin PrVP_none { + v = \\a => + let + vv = vp.v ! a ; + vpa = vagr2agr a ; + in + vv.p1 ++ vp.adV ++ vv.p2 ++ vv.p3 ++ vp.adj ! vpa ++ + vp.c1 ++ vp.obj1.p1 ! vpa ++ vp.c2 ++ vp.obj2.p1 ! vpa ++ vp.adv ++ vp.ext ; + inf = \\vt => infVP vt defaultAgr vp ; + qq = \\a => + let + vv = vp.qforms ! a ; + vpa = vagr2agr a ; + in + ; + } ; + +lin + UseAP_none = \a,t,p,v -> mkVP (P.UseAP P.aNone a t p v) ; + UseAdv_none = \a,t,p,v -> mkVP (P.UseAdv P.aNone a t p v) ; + UseCN_none = \a,t,p,v -> mkVP (P.UseCN P.aNone a t p v) ; + UseNP_none = \a,t,p,v -> mkVP (P.UseNP a t p v) ; + +-- QuestCl_none cl = {s = cl.q} ; + + UseCl_none cl = lin PrS {s = cl.s} ; +-- UseQCl_none cl = lin PrS cl ; + +{- + QuestVP_none, + + + QuestIAdv_none, + QuestIComp_none, + + + PrImpSg, + PrImpPl +-} + + PredVP_none, PredVP_np, PredVP_v, PredVP_a, PredVP_q, PredVP_s, + PredVP_np_np, PredVP_np_v, PredVP_np_a, PredVP_np_q, PredVP_np_s + = \np, vp -> { + s = appSubjCase np ++ vp.v ! (agr2vagr np.a) ; + q = let qq = vp.qq ! (agr2vagr np.a) in qq.p1 ++ appSubjCase np ++ qq.p2 + } ; + + Pred2VP_none, Pred2VP_np, Pred2VP_v, Pred2VP_a, Pred2VP_q, Pred2VP_s, + Pred2VP_np_np, Pred2VP_np_v, Pred2VP_np_a, Pred2VP_np_q, Pred2VP_np_s + = \s,v,o -> { + s = appSubjCase s ++ v.v ! (agr2vagr s.a) ++ appObjCase o ; + q = let qq = v.qq ! (agr2vagr s.a) in qq.p1 ++ appSubjCase s ++ qq.p2 ++ appObjCase o ; + } ; + + + Cl_Chunk cl = cl ; + QCl_Chunk cl = cl ; + + VP_none_Chunk, + VP_np_Chunk, + VP_s_Chunk, + VP_v_Chunk, + VP_a_Chunk, + VP_q_Chunk, + VP_np_np_Chunk, + VP_np_s_Chunk, + VP_np_a_Chunk, + VP_np_q_Chunk, + VP_np_v_Chunk + = \vp -> + {s = vp.v ! (VASgP1 | VASgP3 | VAPl)} ; + + VP_none_inf_Chunk, + VP_np_inf_Chunk, + VP_s_inf_Chunk, + VP_a_inf_Chunk, + VP_q_inf_Chunk, + VP_v_inf_Chunk, + VP_np_np_inf_Chunk, + VP_np_s_inf_Chunk, + VP_np_a_inf_Chunk, + VP_np_q_inf_Chunk, + VP_np_v_inf_Chunk + = \vp -> {s = vp.inf ! vvInfinitive} ; + + } diff --git a/lib/src/experimental/SmallPredFin.gf b/lib/src/experimental/SmallPredFin.gf new file mode 100644 index 000000000..4e2370355 --- /dev/null +++ b/lib/src/experimental/SmallPredFin.gf @@ -0,0 +1,184 @@ +concrete SmallPredFin of SmallPred = + RGLBaseFin - [Pol,Tense], + + NDPredFin [ + Ant,NP,Utt,IP,IAdv,IComp,Conj, + PrV_none, PrV_np , PrV_v , PrV_s , PrV_q , PrV_a , PrV_n , + PrV_np_np , PrV_np_v , PrV_np_s , PrV_np_q , PrV_np_a , PrV_np_n , + + Tense , + Pol , + UttPrS, + + + PrVP_none , PrVP_np , PrVP_v , PrVP_s , PrVP_q , PrVP_a , PrVP_n , + PrVP_np_np , PrVP_np_v , PrVP_np_s , PrVP_np_q , PrVP_np_a , PrVP_np_n , + + PrCl_none , + PrQCl_none , + PrAdv_none , + PrS , + PrAP_none , + PrCN_none , + TPres, TPast, TFut, TCond, + PPos, PNeg, + ASimul, AAnter, + + UseV_none, + UseV_np, + UseV_v, + UseV_s, + UseV_a, + UseV_q, + UseV_n, + UseV_np_np, + UseV_np_v, + UseV_np_s, + UseV_np_a, + UseV_np_q, + UseV_np_n, + + UseAP_none, + UseAdv_none, + UseCN_none, + UseNP_none, + + QuestVP_none, + QuestCl_none, + + QuestIAdv_none, + QuestIComp_none, + UseCl_none, + UseQCl_none, + + PrImpSg, + PrImpPl + + ], + +NDLiftFin [ + CN,AP,V,V2,VV,VS,VA,VQ,V2V,V2S,V2Q,V2A,V3, + PrV_none, PrV_np , PrV_v , PrV_s , PrV_q , PrV_a , PrV_n , + PrV_np_np , PrV_np_v , PrV_np_s , PrV_np_q , PrV_np_a , PrV_np_n , + + LiftV, + LiftV2, + LiftVS, + LiftVQ, + LiftVV, + LiftVA, + LiftVN, + + LiftV3, + LiftV2S, + LiftV2Q, + LiftV2V, + LiftV2A, + LiftV2N, + + LiftAP, + LiftCN, + + LiftAdv, + LiftAdV +], + +ChunkFin [ + Chunks, + Chunk, + + OneChunk, + PlusChunk, + + ChunkPhr, + + AP_Chunk, + AdA_Chunk, + Adv_Chunk, + AdV_Chunk, + AdN_Chunk, + Cl_Chunk, + QCl_Chunk, + CN_Pl_Chunk, + CN_Sg_Chunk, + CN_Pl_Gen_Chunk, + CN_Sg_Gen_Chunk, + Conj_Chunk, + IAdv_Chunk, + IP_Chunk, + NP_Nom_Chunk, + NP_Acc_Chunk, + NP_Gen_Chunk, + Numeral_Nom_Chunk, + Numeral_Gen_Chunk, + Ord_Nom_Chunk, + Ord_Gen_Chunk, + Predet_Chunk, + Prep_Chunk, + RP_Nom_Chunk, + RP_Gen_Chunk, + RP_Acc_Chunk, + Subj_Chunk, + + VP_none_Chunk, VP_none_inf_Chunk, + VP_np_Chunk, VP_np_inf_Chunk, + VP_s_Chunk, VP_s_inf_Chunk, + VP_v_Chunk, VP_v_inf_Chunk, + VP_a_Chunk, VP_a_inf_Chunk, + VP_q_Chunk, VP_q_inf_Chunk, + VP_np_np_Chunk, VP_np_np_inf_Chunk, + VP_np_s_Chunk, VP_np_s_inf_Chunk, + VP_np_v_Chunk, VP_np_v_inf_Chunk, + VP_np_q_Chunk, VP_np_q_inf_Chunk, + VP_np_a_Chunk, VP_np_a_inf_Chunk, + + V_none_prespart_Chunk, V_none_pastpart_Chunk, + V_np_prespart_Chunk, V_np_pastpart_Chunk, + V_s_prespart_Chunk, V_s_pastpart_Chunk, + V_v_prespart_Chunk, V_v_pastpart_Chunk, + V_q_prespart_Chunk, V_q_pastpart_Chunk, + V_a_prespart_Chunk, V_a_pastpart_Chunk, + + V_np_np_prespart_Chunk, V_np_np_pastpart_Chunk, + V_np_s_prespart_Chunk, V_np_s_pastpart_Chunk, + V_np_v_prespart_Chunk, V_np_v_pastpart_Chunk, + V_np_q_prespart_Chunk, V_np_q_pastpart_Chunk, + V_np_a_prespart_Chunk, V_np_a_pastpart_Chunk, + + refl_SgP1_Chunk, + refl_SgP2_Chunk, + refl_SgP3_Chunk, + refl_PlP1_Chunk, + refl_PlP2_Chunk, + refl_PlP3_Chunk, + neg_Chunk, + copula_Chunk, + copula_neg_Chunk, + copula_inf_Chunk, + past_copula_Chunk, + past_copula_neg_Chunk, + future_Chunk, + future_neg_Chunk, + cond_Chunk, + cond_neg_Chunk, + perfect_Chunk, + perfect_neg_Chunk, + past_perfect_Chunk, + past_perfect_neg_Chunk + + +] + + ** open (ND=NDPredFin) in { + +lin + PredVP_none, PredVP_np, PredVP_v, PredVP_a, PredVP_q, PredVP_s, + PredVP_np_np, PredVP_np_v, PredVP_np_a, PredVP_np_q, PredVP_np_s + = ND.PredVP_none ; + + Pred2VP_none, Pred2VP_np, Pred2VP_v, Pred2VP_a, Pred2VP_q, Pred2VP_s, + Pred2VP_np_np, Pred2VP_np_v, Pred2VP_np_a, Pred2VP_np_q, Pred2VP_np_s + = \s,v,o -> ND.PredVP_none s (ND.ComplV2_none v o) ; + + + } diff --git a/lib/src/experimental/SmallPredSwe.gf b/lib/src/experimental/SmallPredSwe.gf new file mode 100644 index 000000000..ad362cdfa --- /dev/null +++ b/lib/src/experimental/SmallPredSwe.gf @@ -0,0 +1,241 @@ +concrete SmallPredSwe of SmallPred = + RGLBaseSwe - [Pol,Tense], + + NDPredSwe [ + Ant,NP,Utt,IP,IAdv,IComp,Conj, + PrV_none, PrV_np , PrV_v , PrV_s , PrV_q , PrV_a , PrV_n , + PrV_np_np , PrV_np_v , PrV_np_s , PrV_np_q , PrV_np_a , PrV_np_n , + + Tense , + Pol , + TPres, TPast, TFut, TCond, + PPos, PNeg, + ASimul, AAnter, + PrAdv_none , + PrS, + PrAP_none , + PrCN_none, + UttPrS + + ], + +NDLiftSwe [ + CN,AP,V,V2,VV,VS,VA,VQ,V2V,V2S,V2Q,V2A,V3, + PrV_none, PrV_np , PrV_v , PrV_s , PrV_q , PrV_a , PrV_n , + PrV_np_np , PrV_np_v , PrV_np_s , PrV_np_q , PrV_np_a , PrV_np_n , + + LiftV, + LiftV2, + LiftVS, + LiftVQ, + LiftVV, + LiftVA, + LiftVN, + + LiftV3, + LiftV2S, + LiftV2Q, + LiftV2V, + LiftV2A, + LiftV2N, + + LiftAP, + LiftCN, + + LiftAdv, + LiftAdV +], + +ChunkSwe [ + Chunks, + Chunk, + + OneChunk, + PlusChunk, + + ChunkPhr, + + AP_Chunk, + AdA_Chunk, + Adv_Chunk, + AdV_Chunk, + AdN_Chunk, + CN_Pl_Chunk, + CN_Sg_Chunk, + CN_Pl_Gen_Chunk, + CN_Sg_Gen_Chunk, + Conj_Chunk, + IAdv_Chunk, + IP_Chunk, + NP_Nom_Chunk, + NP_Acc_Chunk, + NP_Gen_Chunk, + Numeral_Nom_Chunk, + Numeral_Gen_Chunk, + Ord_Nom_Chunk, + Ord_Gen_Chunk, + Predet_Chunk, + Prep_Chunk, + RP_Nom_Chunk, + RP_Gen_Chunk, + RP_Acc_Chunk, + Subj_Chunk, + + V_none_prespart_Chunk, V_none_pastpart_Chunk, + V_np_prespart_Chunk, V_np_pastpart_Chunk, + V_s_prespart_Chunk, V_s_pastpart_Chunk, + V_v_prespart_Chunk, V_v_pastpart_Chunk, + V_q_prespart_Chunk, V_q_pastpart_Chunk, + V_a_prespart_Chunk, V_a_pastpart_Chunk, + + V_np_np_prespart_Chunk, V_np_np_pastpart_Chunk, + V_np_s_prespart_Chunk, V_np_s_pastpart_Chunk, + V_np_v_prespart_Chunk, V_np_v_pastpart_Chunk, + V_np_q_prespart_Chunk, V_np_q_pastpart_Chunk, + V_np_a_prespart_Chunk, V_np_a_pastpart_Chunk, + + refl_SgP1_Chunk, + refl_SgP2_Chunk, + refl_SgP3_Chunk, + refl_PlP1_Chunk, + refl_PlP2_Chunk, + refl_PlP3_Chunk, + neg_Chunk, + copula_Chunk, + copula_neg_Chunk, + copula_inf_Chunk, + past_copula_Chunk, + past_copula_neg_Chunk, + future_Chunk, + future_neg_Chunk, + cond_Chunk, + cond_neg_Chunk, + perfect_Chunk, + perfect_neg_Chunk, + past_perfect_Chunk, + past_perfect_neg_Chunk + + +] + + ** open (P=PredSwe), PredInstanceSwe in { + +lincat + PrVP_none , PrVP_np , PrVP_v , PrVP_s , PrVP_q , PrVP_a , PrVP_n , + PrVP_np_np , PrVP_np_v , PrVP_np_s , PrVP_np_q , PrVP_np_a , PrVP_np_n + = { + v : VAgr => Str ; + inf : VVType => Str ; + qq : VAgr => Str * Str ; + } ; + + PrCl_none + = {s : Str ; q : Str} ; + PrQCl_none + = {s : Str} ; + +lin + UseV_none, + UseV_np, + UseV_v, + UseV_s, + UseV_a, + UseV_q, + UseV_n, + UseV_np_np, + UseV_np_v, + UseV_np_s, + UseV_np_a, + UseV_np_q, + UseV_np_n + = \a,t,p,v -> mkVP (P.UseV P.aNone a t p v) ; + +oper + mkVP : PrVerbPhrase -> SmallPredSwe.PrVP_none = \vp -> + lin PrVP_none { + v = \\a => + let + vv = vp.v ! a ; + vpa = vagr2agr a ; + in + vv.p1 ++ vp.adV ++ vv.p2 ++ vv.p3 ++ vp.adj ! vpa ++ + vp.c1 ++ vp.obj1.p1 ! vpa ++ vp.c2 ++ vp.obj2.p1 ! vpa ++ vp.adv ++ vp.ext ; + inf = \\vt => infVP vt defaultAgr vp ; + qq = \\a => + let + vv = vp.v ! a ; + vpa = vagr2agr a ; + in + ; + } ; + +lin + UseAP_none = \a,t,p,v -> mkVP (P.UseAP P.aNone a t p v) ; + UseAdv_none = \a,t,p,v -> mkVP (P.UseAdv P.aNone a t p v) ; + UseCN_none = \a,t,p,v -> mkVP (P.UseCN P.aNone a t p v) ; + UseNP_none = \a,t,p,v -> mkVP (P.UseNP a t p v) ; + +-- QuestCl_none cl = {s = cl.q} ; + + UseCl_none cl = lin PrS {s = cl.s} ; +-- UseQCl_none cl = lin PrS cl ; + +{- + QuestVP_none, + + + QuestIAdv_none, + QuestIComp_none, + + + PrImpSg, + PrImpPl +-} + + PredVP_none, PredVP_np, PredVP_v, PredVP_a, PredVP_q, PredVP_s, + PredVP_np_np, PredVP_np_v, PredVP_np_a, PredVP_np_q, PredVP_np_s + = \np, vp -> { + s = appSubjCase np ++ vp.v ! (agr2vagr np.a) ; + q = let qq = vp.qq ! (agr2vagr np.a) in qq.p1 ++ appSubjCase np ++ qq.p2 + } ; + + Pred2VP_none, Pred2VP_np, Pred2VP_v, Pred2VP_a, Pred2VP_q, Pred2VP_s, + Pred2VP_np_np, Pred2VP_np_v, Pred2VP_np_a, Pred2VP_np_q, Pred2VP_np_s + = \s,v,o -> { + s = appSubjCase s ++ v.v ! (agr2vagr s.a) ++ appObjCase o ; + q = let qq = v.qq ! (agr2vagr s.a) in qq.p1 ++ appSubjCase s ++ qq.p2 ++ appObjCase o ; + } ; + + + Cl_Chunk cl = cl ; + QCl_Chunk cl = cl ; + + VP_none_Chunk, + VP_np_Chunk, + VP_s_Chunk, + VP_v_Chunk, + VP_a_Chunk, + VP_q_Chunk, + VP_np_np_Chunk, + VP_np_s_Chunk, + VP_np_a_Chunk, + VP_np_q_Chunk, + VP_np_v_Chunk + = \vp -> + {s = vp.v ! UUnit} ; + + VP_none_inf_Chunk, + VP_np_inf_Chunk, + VP_s_inf_Chunk, + VP_a_inf_Chunk, + VP_q_inf_Chunk, + VP_v_inf_Chunk, + VP_np_np_inf_Chunk, + VP_np_s_inf_Chunk, + VP_np_a_inf_Chunk, + VP_np_q_inf_Chunk, + VP_np_v_inf_Chunk + = \vp -> {s = vp.inf ! vvInfinitive} ; + + }