diff options
| author | aarne <aarne@chalmers.se> | 2014-03-14 13:28:42 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2014-03-14 13:28:42 +0000 |
| commit | 7899bb8cbe09b925304737ee7eb8e54560f7064a (patch) | |
| tree | 5156a5cf5d24423b87179156510e9ee7817f3532 /examples/translator/SmallPredEng.gf | |
| parent | 566df8e4aefd02443c240a38c1d488f01413bda7 (diff) | |
moved the small app chunking grammars from lib/src/experimental to examples/translator; the proper place might be in the git contributions, but this can be decided later
Diffstat (limited to 'examples/translator/SmallPredEng.gf')
| -rw-r--r-- | examples/translator/SmallPredEng.gf | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/examples/translator/SmallPredEng.gf b/examples/translator/SmallPredEng.gf new file mode 100644 index 000000000..bce2ee119 --- /dev/null +++ b/examples/translator/SmallPredEng.gf @@ -0,0 +1,234 @@ +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 + <vv.p1, vp.adV ++ vv.p2 ++ 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 ! (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} ; + + } |
