From a5ae8729684ac0185b5d268b38d5991017d9c4b3 Mon Sep 17 00:00:00 2001 From: aarne Date: Wed, 12 Mar 2014 20:34:38 +0000 Subject: [PATCH] insanely fast AppEngChiFinSwe --- lib/src/experimental/AppChi.gf | 10 +- lib/src/experimental/AppFin.gf | 3 +- lib/src/experimental/SmallPred.gf | 12 +- lib/src/experimental/SmallPredEng.gf | 23 ++-- lib/src/experimental/SmallPredFin.gf | 175 ++++++++++++++++++--------- lib/src/experimental/SmallPredSwe.gf | 23 ++-- 6 files changed, 144 insertions(+), 102 deletions(-) diff --git a/lib/src/experimental/AppChi.gf b/lib/src/experimental/AppChi.gf index 5672a7cfb..66c55fce5 100644 --- a/lib/src/experimental/AppChi.gf +++ b/lib/src/experimental/AppChi.gf @@ -1,8 +1,12 @@ --# -path=.:../translator:../../../examples/phrasebook concrete AppChi of App = - NDTransChi + SmallPredChi + , ExtensionsChi [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] + , DocumentationChi - [Pol,Tense,Ant] + , DictionaryChi - [Pol,Tense,Ant] , PhrasebookChi - [Ant,Pol,Tense,at_Prep] + ** { flags @@ -11,4 +15,6 @@ flags lin PhrasePhr p = {s = "+" ++ p.s} | p ; -} \ No newline at end of file +} + + diff --git a/lib/src/experimental/AppFin.gf b/lib/src/experimental/AppFin.gf index 0e701448b..343d0d11d 100644 --- a/lib/src/experimental/AppFin.gf +++ b/lib/src/experimental/AppFin.gf @@ -5,8 +5,7 @@ concrete AppFin of App = , ExtensionsFin [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] , DocumentationFin - [Pol,Tense] , DictionaryFin - [Pol,Tense] - - , PhrasebookFin + , PhrasebookFin - [open_A] ** { diff --git a/lib/src/experimental/SmallPred.gf b/lib/src/experimental/SmallPred.gf index a930f6ad7..1625599f2 100644 --- a/lib/src/experimental/SmallPred.gf +++ b/lib/src/experimental/SmallPred.gf @@ -46,7 +46,7 @@ fun -- ComplV2_none : PrVP_np -> NP -> PrVP_none ; - UseAP_none : Ant -> Tense -> Pol -> PrAP_none -> PrVP_none ; +-- UseAP_none : Ant -> Tense -> Pol -> PrAP_none -> PrVP_none ; UseAdv_none : Ant -> Tense -> Pol -> PrAdv_none -> PrVP_none ; @@ -78,24 +78,18 @@ fun Pred2VP_np_s : NP -> PrVP_s -> NP -> PrCl_none ; Pred2VP_np_q : NP -> PrVP_q -> NP -> PrCl_none ; + PredAP_none : Ant -> Tense -> Pol -> NP -> PrAP_none -> 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 diff --git a/lib/src/experimental/SmallPredEng.gf b/lib/src/experimental/SmallPredEng.gf index 700f00be6..bce2ee119 100644 --- a/lib/src/experimental/SmallPredEng.gf +++ b/lib/src/experimental/SmallPredEng.gf @@ -171,27 +171,14 @@ oper } ; 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} ; + 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 --} + UseQCl_none cl = lin PrS cl ; 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 @@ -207,6 +194,12 @@ lin q = let qq = v.qq ! (agr2vagr s.a) in qq.p1 ++ appSubjCase s ++ qq.p2 ++ appObjCase o ; } ; + PredAP_none + = \a, t, p, np, ap -> + let cl = P.PredVP P.aNone np (P.UseAP P.aNone a t p ap) in { + s = declCl cl ; + q = questCl (P.QuestCl P.aNone cl) + } ; Cl_Chunk cl = cl ; QCl_Chunk cl = cl ; diff --git a/lib/src/experimental/SmallPredFin.gf b/lib/src/experimental/SmallPredFin.gf index 4e2370355..0f550fa57 100644 --- a/lib/src/experimental/SmallPredFin.gf +++ b/lib/src/experimental/SmallPredFin.gf @@ -1,3 +1,5 @@ +--# -path=.:../finnish/stemmed:../finnish:../api:../translator:../../../examples/phrasebook:alltenses + concrete SmallPredFin of SmallPred = RGLBaseFin - [Pol,Tense], @@ -8,51 +10,14 @@ concrete SmallPredFin of SmallPred = 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 + PrAdv_none , + PrS, + PrAP_none , + PrCN_none, + UttPrS ], @@ -97,8 +62,6 @@ ChunkFin [ Adv_Chunk, AdV_Chunk, AdN_Chunk, - Cl_Chunk, - QCl_Chunk, CN_Pl_Chunk, CN_Sg_Chunk, CN_Pl_Gen_Chunk, @@ -120,18 +83,6 @@ ChunkFin [ 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, @@ -169,16 +120,122 @@ ChunkFin [ ] - ** open (ND=NDPredFin) in { + ** open (P=PredFin), PredInstanceFin 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 ; + ko : 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 -> SmallPredFin.PrVP_none = \vp -> + lin PrVP_none { + v = \\a => + let + vv = vp.v ! a ; + vpa = vagr2agr a ; + in + vv.fin ++ vp.adV ++ vv.inf ++ vp.adj ! vpa ++ + vp.obj1 ! vpa ++ vp.obj2 ! vpa ++ vp.adv ++ vp.ext ; + inf = \\vt => infVP vt defaultAgr vp ; + qq = \\a => + let + vv = vp.v ! a ; + vpa = vagr2agr a ; + in + ; + ko = Predef.BIND ++ case vp.h of {Back => "ko" ; Front => "kö"} + + } ; + +lin + 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 ; + 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 ; + = \np, vp -> + { + s = appSubjCase np ++ vp.v ! (agr2vagr np.a) ; + q = let qq = vp.qq ! (agr2vagr np.a) in qq.p1 ++ vp.ko ++ 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 -> ND.PredVP_none s (ND.ComplV2_none v o) ; + = \s,v,o -> + { + s = appSubjCase s ++ v.v ! (agr2vagr s.a) ++ appObjCase o ; + q = let qq = v.qq ! (agr2vagr s.a) in qq.p1 ++ v.ko ++ appSubjCase s ++ qq.p2 ++ appObjCase o ; + } ; + PredAP_none + = \a, t, p, np, ap -> + let cl = P.PredVP P.aNone np (P.UseAP P.aNone a t p ap) in { + s = declCl cl ; + q = questCl (P.QuestCl P.aNone cl) ; + } ; + + 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 ! defaultAgr} ; + + 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/SmallPredSwe.gf b/lib/src/experimental/SmallPredSwe.gf index ad362cdfa..c97e8b267 100644 --- a/lib/src/experimental/SmallPredSwe.gf +++ b/lib/src/experimental/SmallPredSwe.gf @@ -171,27 +171,14 @@ oper } ; 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} ; + 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 --} + UseQCl_none cl = lin PrS cl ; 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 @@ -207,6 +194,12 @@ lin q = let qq = v.qq ! (agr2vagr s.a) in qq.p1 ++ appSubjCase s ++ qq.p2 ++ appObjCase o ; } ; + PredAP_none + = \a, t, p, np, ap -> + let cl = P.PredVP P.aNone np (P.UseAP P.aNone a t p ap) in { + s = declCl cl ; + q = questCl (P.QuestCl P.aNone cl) ; + } ; Cl_Chunk cl = cl ; QCl_Chunk cl = cl ;