mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-22 17:42:51 -06:00
insanely fast AppEngChiFinSwe
This commit is contained in:
@@ -1,8 +1,12 @@
|
|||||||
--# -path=.:../translator:../../../examples/phrasebook
|
--# -path=.:../translator:../../../examples/phrasebook
|
||||||
|
|
||||||
concrete AppChi of App =
|
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]
|
, PhrasebookChi - [Ant,Pol,Tense,at_Prep]
|
||||||
|
|
||||||
** {
|
** {
|
||||||
|
|
||||||
flags
|
flags
|
||||||
@@ -12,3 +16,5 @@ lin
|
|||||||
PhrasePhr p = {s = "+" ++ p.s} | p ;
|
PhrasePhr p = {s = "+" ++ p.s} | p ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ concrete AppFin of App =
|
|||||||
, ExtensionsFin [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP]
|
, ExtensionsFin [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP]
|
||||||
, DocumentationFin - [Pol,Tense]
|
, DocumentationFin - [Pol,Tense]
|
||||||
, DictionaryFin - [Pol,Tense]
|
, DictionaryFin - [Pol,Tense]
|
||||||
|
, PhrasebookFin - [open_A]
|
||||||
, PhrasebookFin
|
|
||||||
|
|
||||||
** {
|
** {
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ fun
|
|||||||
|
|
||||||
-- ComplV2_none : PrVP_np -> NP -> PrVP_none ;
|
-- 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 ;
|
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_s : NP -> PrVP_s -> NP -> PrCl_none ;
|
||||||
Pred2VP_np_q : NP -> PrVP_q -> 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 ;
|
QuestVP_none : IP -> PrVP_none -> PrQCl_none ;
|
||||||
|
|
||||||
QuestCl_none : PrCl_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 ;
|
UseCl_none : PrCl_none -> PrS ;
|
||||||
|
|
||||||
UseQCl_none : PrQCl_none -> PrS ;
|
UseQCl_none : PrQCl_none -> PrS ;
|
||||||
|
|
||||||
UttPrS : PrS -> Utt ;
|
UttPrS : PrS -> Utt ;
|
||||||
|
|
||||||
PrImpSg : PrVP_none -> Utt ;
|
|
||||||
PrImpPl : PrVP_none -> Utt ;
|
|
||||||
|
|
||||||
|
|
||||||
---- Lift
|
---- Lift
|
||||||
|
|
||||||
fun
|
fun
|
||||||
|
|||||||
@@ -171,27 +171,14 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
lin
|
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) ;
|
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) ;
|
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) ;
|
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} ;
|
UseCl_none cl = lin PrS {s = cl.s} ;
|
||||||
-- UseQCl_none cl = lin PrS cl ;
|
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_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
|
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 ;
|
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 ;
|
Cl_Chunk cl = cl ;
|
||||||
QCl_Chunk cl = cl ;
|
QCl_Chunk cl = cl ;
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
--# -path=.:../finnish/stemmed:../finnish:../api:../translator:../../../examples/phrasebook:alltenses
|
||||||
|
|
||||||
concrete SmallPredFin of SmallPred =
|
concrete SmallPredFin of SmallPred =
|
||||||
RGLBaseFin - [Pol,Tense],
|
RGLBaseFin - [Pol,Tense],
|
||||||
|
|
||||||
@@ -8,51 +10,14 @@ concrete SmallPredFin of SmallPred =
|
|||||||
|
|
||||||
Tense ,
|
Tense ,
|
||||||
Pol ,
|
Pol ,
|
||||||
UttPrS,
|
TPres, TPast, TFut, TCond,
|
||||||
|
PPos, PNeg,
|
||||||
|
ASimul, AAnter,
|
||||||
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 ,
|
PrAdv_none ,
|
||||||
PrS,
|
PrS,
|
||||||
PrAP_none ,
|
PrAP_none ,
|
||||||
PrCN_none,
|
PrCN_none,
|
||||||
TPres, TPast, TFut, TCond,
|
UttPrS
|
||||||
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
|
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
@@ -97,8 +62,6 @@ ChunkFin [
|
|||||||
Adv_Chunk,
|
Adv_Chunk,
|
||||||
AdV_Chunk,
|
AdV_Chunk,
|
||||||
AdN_Chunk,
|
AdN_Chunk,
|
||||||
Cl_Chunk,
|
|
||||||
QCl_Chunk,
|
|
||||||
CN_Pl_Chunk,
|
CN_Pl_Chunk,
|
||||||
CN_Sg_Chunk,
|
CN_Sg_Chunk,
|
||||||
CN_Pl_Gen_Chunk,
|
CN_Pl_Gen_Chunk,
|
||||||
@@ -120,18 +83,6 @@ ChunkFin [
|
|||||||
RP_Acc_Chunk,
|
RP_Acc_Chunk,
|
||||||
Subj_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_none_prespart_Chunk, V_none_pastpart_Chunk,
|
||||||
V_np_prespart_Chunk, V_np_pastpart_Chunk,
|
V_np_prespart_Chunk, V_np_pastpart_Chunk,
|
||||||
V_s_prespart_Chunk, V_s_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
|
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
|
||||||
|
<vv.fin, vp.adV ++ vv.inf ++ vp.adj ! vpa ++
|
||||||
|
vp.obj1 ! vpa ++ vp.obj2 ! vpa ++ vp.adv ++ vp.ext> ;
|
||||||
|
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_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
|
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_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
|
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} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,27 +171,14 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
lin
|
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) ;
|
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) ;
|
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) ;
|
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} ;
|
UseCl_none cl = lin PrS {s = cl.s} ;
|
||||||
-- UseQCl_none cl = lin PrS cl ;
|
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_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
|
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 ;
|
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 ;
|
Cl_Chunk cl = cl ;
|
||||||
QCl_Chunk cl = cl ;
|
QCl_Chunk cl = cl ;
|
||||||
|
|||||||
Reference in New Issue
Block a user