Files
gf-core/examples/translator/SmallPredSwe.gf

235 lines
5.0 KiB
Plaintext

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
<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> ;
} ;
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
= \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 ;
} ;
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 ! 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} ;
}