summaryrefslogtreecommitdiff
path: root/examples/translator/SmallPredEng.gf
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2014-03-14 13:28:42 +0000
committeraarne <aarne@chalmers.se>2014-03-14 13:28:42 +0000
commit7899bb8cbe09b925304737ee7eb8e54560f7064a (patch)
tree5156a5cf5d24423b87179156510e9ee7817f3532 /examples/translator/SmallPredEng.gf
parent566df8e4aefd02443c240a38c1d488f01413bda7 (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.gf234
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} ;
+
+ }