diff --git a/examples/translator/App.gf b/examples/translator/App.gf new file mode 100644 index 000000000..e53f335c9 --- /dev/null +++ b/examples/translator/App.gf @@ -0,0 +1,17 @@ +--# -path=.:../translator:../../../examples/phrasebook + +abstract App = + SmallPred + , Extensions [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] + , Documentation - [Pol,Tense] + , Dictionary - [Pol,Tense] + + , Phrasebook + ** { +flags + startcat=Phr ; + +fun + PhrasePhr : Phrase -> Phr ; + +} diff --git a/examples/translator/AppChi.gf b/examples/translator/AppChi.gf new file mode 100644 index 000000000..66c55fce5 --- /dev/null +++ b/examples/translator/AppChi.gf @@ -0,0 +1,20 @@ +--# -path=.:../translator:../../../examples/phrasebook + +concrete AppChi of App = + 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 + literal = Symb ; + +lin + PhrasePhr p = {s = "+" ++ p.s} | p ; + +} + + diff --git a/examples/translator/AppEng.gf b/examples/translator/AppEng.gf new file mode 100644 index 000000000..50f1d83c3 --- /dev/null +++ b/examples/translator/AppEng.gf @@ -0,0 +1,19 @@ +--# -path=.:../translator:../../../examples/phrasebook + +concrete AppEng of App = + SmallPredEng + , ExtensionsEng [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] + , DocumentationEng - [Pol,Tense] + , DictionaryEng - [Pol,Tense] + + , PhrasebookEng + + ** { + +flags + literal = Symb ; + +lin + PhrasePhr p = {s = "+" ++ p.s} | p ; + +} \ No newline at end of file diff --git a/examples/translator/AppFin.gf b/examples/translator/AppFin.gf new file mode 100644 index 000000000..343d0d11d --- /dev/null +++ b/examples/translator/AppFin.gf @@ -0,0 +1,18 @@ +--# -path=.:../finnish/stemmed:../finnish:../api:../translator:../../../examples/phrasebook:alltenses + +concrete AppFin of App = + SmallPredFin + , ExtensionsFin [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] + , DocumentationFin - [Pol,Tense] + , DictionaryFin - [Pol,Tense] + , PhrasebookFin - [open_A] + + ** { + +flags + literal = Symb ; + +lin + PhrasePhr p = {s = "+" ++ p.s} | p ; + +} \ No newline at end of file diff --git a/examples/translator/AppFre.gf b/examples/translator/AppFre.gf new file mode 100644 index 000000000..1bcb817fa --- /dev/null +++ b/examples/translator/AppFre.gf @@ -0,0 +1,18 @@ +--# -path=.:../translator:../../../examples/phrasebook + +concrete AppFre of App = + SmallPredFre + , ExtensionsFre [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] + , DocumentationFre + , DictionaryFre + , PhrasebookFre - [open_A] + + ** { + +flags + literal = Symb ; + +lin + PhrasePhr p = {s = "+" ++ p.s} | p ; + +} \ No newline at end of file diff --git a/examples/translator/AppIta.gf b/examples/translator/AppIta.gf new file mode 100644 index 000000000..2a7d3715b --- /dev/null +++ b/examples/translator/AppIta.gf @@ -0,0 +1,18 @@ +--# -path=.:../translator:../../../examples/phrasebook + +concrete AppIta of App = + SmallPredIta + , ExtensionsIta [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] + , DocumentationIta + , DictionaryIta + , PhrasebookIta - [open_A] + + ** { + +flags + literal = Symb ; + +lin + PhrasePhr p = {s = "+" ++ p.s} | p ; + +} \ No newline at end of file diff --git a/examples/translator/AppSwe.gf b/examples/translator/AppSwe.gf new file mode 100644 index 000000000..7bab66ef9 --- /dev/null +++ b/examples/translator/AppSwe.gf @@ -0,0 +1,18 @@ +--# -path=.:../translator:../../../examples/phrasebook + +concrete AppSwe of App = + SmallPredSwe + , ExtensionsSwe [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] + , DocumentationSwe - [Pol,Tense] + , DictionarySwe - [Pol,Tense] + , PhrasebookSwe - [open_A] + + ** { + +flags + literal = Symb ; + +lin + PhrasePhr p = {s = "+" ++ p.s} | p ; + +} \ No newline at end of file diff --git a/examples/translator/SmallNDPredFunctor.gf b/examples/translator/SmallNDPredFunctor.gf new file mode 100644 index 000000000..144592933 --- /dev/null +++ b/examples/translator/SmallNDPredFunctor.gf @@ -0,0 +1,230 @@ +incomplete concrete NDPredFunctor of NDPred = + Cat [Ant,NP,Utt,IP,IAdv,Conj,RS,RP,Subj] ** + open + PredInterface, + Pred, + ParamX, + Prelude + in { + +------------------------------------ +-- lincats +------------------------------------- + +lincat + Tense = Pred.Tense ; + Pol = Pred.Pol ; + + 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 = Pred.PrV ; + + 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 = Pred.PrVP ; + + PrVPI_none, PrVPI_np = Pred.PrVPI ; + + PrCl_none, PrCl_np = Pred.PrCl ; + + PrQCl_none, PrQCl_np = Pred.PrQCl ; + + VPC_none, VPC_np = Pred.VPC ; + + ClC_none, ClC_np = Pred.ClC ; + + PrAdv_none, PrAdv_np = Pred.PrAdv ; + + PrS = Pred.PrS ; + + PrAP_none, PrAP_np = Pred.PrAP ; + + PrCN_none, PrCN_np = Pred.PrCN ; + +-- reference linearizations for chunking +---- should be by functor as well + +linref + 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 + = linrefPrVP ; + PrCl_none, PrCl_np = linrefPrCl ; + PrQCl_none, PrQCl_np = linrefPrQCl ; + PrAdv_none, PrAdv_np = linrefPrAdv ; +---- PrAP_none, PrAP_np = \ap -> ap.s ! defaultAgr ++ ap.obj1 ! defaultAgr ; +---- PrCN_none, PrCN_np = \cn -> cn.s ! Sg ++ cn.obj1 ! defaultAgr ; + +---------------------------- +--- linearization rules ---- +---------------------------- + +lin + +-- standard general + + TPres = Pred.TPres ; + TPast = Pred.TPast ; + TFut = Pred.TFut ; + TCond = Pred.TCond ; + ASimul = Pred.ASimul ; + AAnter = Pred.AAnter ; + PPos = Pred.PPos ; + PNeg = Pred.PNeg ; + + UseV_none, UseV_np, UseV_v, UseV_s, UseV_q, UseV_a, UseV_n, UseV_np_np, UseV_np_v, UseV_np_s, UseV_np_q, UseV_np_a, UseV_np_n + = Pred.UseV Pred.aNone ; +{- + PassUseV_none, PassUseV_np, PassUseV_v, PassUseV_s, PassUseV_q, PassUseV_a, PassUseV_n + = Pred.PassUseV Pred.aNone ; + AgentPassUseV_none, AgentPassUseV_np, AgentPassUseV_v, AgentPassUseV_s, AgentPassUseV_q, AgentPassUseV_a, AgentPassUseV_n + = Pred.AgentPassUseV Pred.aNone ; +-} + UseAP_none, UseAP_np + = Pred.UseAP Pred.aNone ; + UseCN_none, UseCN_np + = Pred.UseCN Pred.aNone ; + UseAdv_none, UseAdv_np + = Pred.UseAdv Pred.aNone ; + UseNP_none + = Pred.UseNP ; +{- + UseS_none + = Pred.UseS ; + UseQ_none + = Pred.UseQ ; + UseVP_none + = Pred.UseVP ; +-} + ComplV2_none + = Pred.ComplV2 Pred.aNone ; +{- + ComplVV_none, ComplVV_np + = Pred.ComplVV Pred.aNone ; + ComplVS_none, ComplVS_np + = Pred.ComplVS Pred.aNone ; + ComplVA_none + = Pred.ComplVA Pred.aNone ; + ComplVQ_none + = Pred.ComplVQ Pred.aNone ; + ComplVN_none + = Pred.ComplVN Pred.aNone ; + + SlashV3_none + = Pred.SlashV3 Pred.aNone ; + SlashV2V_none, SlashV2V_np + = Pred.SlashV2V Pred.aNone ; + SlashV2S_none + = Pred.SlashV2S Pred.aNone ; + SlashV2Q_none + = Pred.SlashV2Q Pred.aNone ; + SlashV2A_none + = Pred.SlashV2A Pred.aNone ; + SlashV2N_none + = Pred.SlashV2N Pred.aNone ; + + ReflVP_none, ReflVP_np, ReflVP_v, ReflVP_s, ReflVP_q, ReflVP_a, ReflVP_n + = Pred.ReflVP Pred.aNone ; + ReflVP2_np + = Pred.ReflVP2 Pred.aNone ; + + InfVP_none, InfVP_np + = Pred.InfVP Pred.aNone ; +-} + PredVP_none, PredVP_np + = Pred.PredVP Pred.aNone ; +{- + SlashClNP_none + = Pred.SlashClNP Pred.aNone ; +-} + QuestCl_none, QuestCl_np + = Pred.QuestCl Pred.aNone ; + + QuestIAdv_none + = Pred.QuestIAdv Pred.aNone ; + + QuestIComp_none + = Pred.QuestIComp ; + + QuestVP_none + = Pred.QuestVP Pred.aNone ; +{- + QuestSlash_none + = Pred.QuestSlash Pred.aNone ; + + UseCl_none + = Pred.UseCl ; + UseQCl_none + = Pred.UseQCl ; + + UseAdvCl_none + = Pred.UseAdvCl ; +-} + UttPrS + = Pred.UttPrS ; + + AdvCl_none, AdvCl_np + = Pred.AdvCl Pred.aNone ; +{- + AdvQCl_none, AdvQCl_np + = Pred.AdvQCl Pred.aNone ; + +---- RelCl_none +---- = Pred.RelCl Pred.aNone ; + RelVP_none + = Pred.RelVP ; + RelSlash_none + = Pred.RelSlash ; + + PrImpSg + = Pred.PrImpSg ; + PrImpPl + = Pred.PrImpPl ; + + PresPartAP_none, PresPartAP_np + = Pred.PresPartAP Pred.aNone ; + + PastPartAP_none + = Pred.PastPartAP Pred.aNone ; + + AgentPastPartAP_none + = Pred.AgentPastPartAP Pred.aNone ; + + NomVPNP_none + = Pred.NomVPNP ; + + ByVP_none + = Pred.ByVP Pred.aNone ; + WhenVP_none + = Pred.WhenVP Pred.aNone ; + BeforeVP_none + = Pred.BeforeVP Pred.aNone ; + AfterVP_none + = Pred.AfterVP Pred.aNone ; + InOrderVP_none + = Pred.InOrderVP Pred.aNone ; + WithoutVP_none + = Pred.WithoutVP Pred.aNone ; + + StartVPC_none, StartVPC_np + = Pred.StartVPC Pred.aNone ; + ContVPC_none, ContVPC_np + = Pred.ContVPC Pred.aNone ; + UseVPC_none, UseVPC_np + = Pred.UseVPC Pred.aNone ; + + StartClC_none, StartClC_np + = Pred.StartClC Pred.aNone ; + ContClC_none, ContClC_np + = Pred.ContClC Pred.aNone ; + UseClC_none, UseClC_np + = Pred.UseClC Pred.aNone ; + + ComplAdv_none + = Pred.ComplAdv Pred.aNone ; + + SubjUttPreS + = Pred.SubjUttPreS ; + SubjUttPreQ + = Pred.SubjUttPreQ ; + SubjUttPost + = Pred.SubjUttPost ; +-} +} \ No newline at end of file diff --git a/examples/translator/SmallPred.gf b/examples/translator/SmallPred.gf new file mode 100644 index 000000000..1625599f2 --- /dev/null +++ b/examples/translator/SmallPred.gf @@ -0,0 +1,206 @@ +abstract SmallPred = + RGLBase - [Pol,Tense] +** { + +cat + 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 ; + + 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 ; + + + Tense ; + Pol ; + + PrCl_none ; + + PrQCl_none ; + + PrAdv_none ; + + PrS ; + + PrAP_none ; + + PrCN_none ; + +fun + TPres, TPast, TFut, TCond : Tense ; + PPos, PNeg : Pol ; + ASimul, AAnter : Ant ; + + UseV_none : Ant -> Tense -> Pol -> PrV_none -> PrVP_none ; + UseV_np : Ant -> Tense -> Pol -> PrV_np -> PrVP_np ; + UseV_v : Ant -> Tense -> Pol -> PrV_v -> PrVP_v ; + UseV_s : Ant -> Tense -> Pol -> PrV_s -> PrVP_s ; + UseV_a : Ant -> Tense -> Pol -> PrV_a -> PrVP_a ; + UseV_q : Ant -> Tense -> Pol -> PrV_q -> PrVP_q ; + UseV_n : Ant -> Tense -> Pol -> PrV_v -> PrVP_n ; + UseV_np_np : Ant -> Tense -> Pol -> PrV_np_np -> PrVP_np_np ; + UseV_np_v : Ant -> Tense -> Pol -> PrV_np_v -> PrVP_np_v ; + UseV_np_s : Ant -> Tense -> Pol -> PrV_np_s -> PrVP_np_s ; + UseV_np_a : Ant -> Tense -> Pol -> PrV_np_a -> PrVP_np_a ; + UseV_np_q : Ant -> Tense -> Pol -> PrV_np_q -> PrVP_np_q ; + UseV_np_n : Ant -> Tense -> Pol -> PrV_np_n -> PrVP_np_n ; + +-- ComplV2_none : PrVP_np -> NP -> PrVP_none ; + +-- UseAP_none : Ant -> Tense -> Pol -> PrAP_none -> PrVP_none ; + + UseAdv_none : Ant -> Tense -> Pol -> PrAdv_none -> PrVP_none ; + + UseCN_none : Ant -> Tense -> Pol -> PrCN_none -> PrVP_none ; + + UseNP_none : Ant -> Tense -> Pol -> NP -> PrVP_none ; + + PredVP_none : NP -> PrVP_none -> PrCl_none ; + PredVP_np : NP -> PrVP_np -> PrCl_none ; + PredVP_v : NP -> PrVP_v -> PrCl_none ; + PredVP_a : NP -> PrVP_a -> PrCl_none ; + PredVP_s : NP -> PrVP_s -> PrCl_none ; + PredVP_q : NP -> PrVP_q -> PrCl_none ; + PredVP_np_np : NP -> PrVP_np -> PrCl_none ; + PredVP_np_v : NP -> PrVP_v -> PrCl_none ; + PredVP_np_a : NP -> PrVP_a -> PrCl_none ; + PredVP_np_s : NP -> PrVP_s -> PrCl_none ; + PredVP_np_q : NP -> PrVP_q -> PrCl_none ; + + Pred2VP_none : NP -> PrVP_none -> NP -> PrCl_none ; + Pred2VP_np : NP -> PrVP_np -> NP -> PrCl_none ; + Pred2VP_v : NP -> PrVP_v -> NP -> PrCl_none ; + Pred2VP_a : NP -> PrVP_a -> NP -> PrCl_none ; + Pred2VP_s : NP -> PrVP_s -> NP -> PrCl_none ; + Pred2VP_q : NP -> PrVP_q -> NP -> PrCl_none ; + Pred2VP_np_np : NP -> PrVP_np -> NP -> PrCl_none ; + Pred2VP_np_v : NP -> PrVP_v -> NP -> PrCl_none ; + Pred2VP_np_a : NP -> PrVP_a -> NP -> PrCl_none ; + 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 ; + + UseCl_none : PrCl_none -> PrS ; + + UseQCl_none : PrQCl_none -> PrS ; + + UttPrS : PrS -> Utt ; + +---- Lift + +fun + LiftV : V -> PrV_none ; + LiftV2 : V2 -> PrV_np ; + LiftVS : VS -> PrV_s ; + LiftVQ : VQ -> PrV_q ; + LiftVV : VV -> PrV_v ; + LiftVA : VA -> PrV_a ; + LiftVN : VA -> PrV_n ; ---- + + LiftV3 : V3 -> PrV_np_np ; + LiftV2S : V2S -> PrV_np_s ; + LiftV2Q : V2Q -> PrV_np_q ; + LiftV2V : V2V -> PrV_np_v ; + LiftV2A : V2A -> PrV_np_a ; + LiftV2N : V2A -> PrV_np_n ; ---- + + LiftAP : AP -> PrAP_none ; + LiftCN : CN -> PrCN_none ; + + LiftAdv : Adv -> PrAdv_none ; + LiftAdV : AdV -> PrAdv_none ; + + +------- Chunk + +cat + Chunks ; + Chunk ; + +fun + OneChunk : Chunk -> Chunks ; + PlusChunk : Chunk -> Chunks -> Chunks ; + + ChunkPhr : Chunks -> Phr ; + +fun + + AP_Chunk : AP -> Chunk ; + AdA_Chunk : AdA -> Chunk ; + Adv_Chunk : Adv -> Chunk ; + AdV_Chunk : AdV -> Chunk ; + AdN_Chunk : AdN -> Chunk ; + Cl_Chunk : PrCl_none -> Chunk ; + QCl_Chunk : PrQCl_none -> Chunk ; + CN_Pl_Chunk : CN -> Chunk ; + CN_Sg_Chunk : CN -> Chunk ; + CN_Pl_Gen_Chunk : CN -> Chunk ; + CN_Sg_Gen_Chunk : CN -> Chunk ; + Conj_Chunk : Conj -> Chunk ; + IAdv_Chunk : IAdv -> Chunk ; + IP_Chunk : IP -> Chunk ; + NP_Nom_Chunk : NP -> Chunk ; + NP_Acc_Chunk : NP -> Chunk ; + NP_Gen_Chunk : NP -> Chunk ; + Numeral_Nom_Chunk : Numeral -> Chunk ; + Numeral_Gen_Chunk : Numeral -> Chunk ; + Ord_Nom_Chunk : Ord -> Chunk ; + Ord_Gen_Chunk : Ord -> Chunk ; + Predet_Chunk : Predet -> Chunk ; + Prep_Chunk : Prep -> Chunk ; + RP_Nom_Chunk : RP -> Chunk ; + RP_Gen_Chunk : RP -> Chunk ; + RP_Acc_Chunk : RP -> Chunk ; + Subj_Chunk : Subj -> Chunk ; + + VP_none_Chunk, VP_none_inf_Chunk : PrVP_none -> Chunk ; + VP_np_Chunk, VP_np_inf_Chunk : PrVP_np -> Chunk ; + VP_s_Chunk, VP_s_inf_Chunk : PrVP_s -> Chunk ; + VP_v_Chunk, VP_v_inf_Chunk : PrVP_v -> Chunk ; + VP_a_Chunk, VP_a_inf_Chunk : PrVP_a -> Chunk ; + VP_q_Chunk, VP_q_inf_Chunk : PrVP_q -> Chunk ; + VP_np_np_Chunk, VP_np_np_inf_Chunk : PrVP_np_np -> Chunk ; + VP_np_s_Chunk, VP_np_s_inf_Chunk : PrVP_np_s -> Chunk ; + VP_np_v_Chunk, VP_np_v_inf_Chunk : PrVP_np_v -> Chunk ; + VP_np_q_Chunk, VP_np_q_inf_Chunk : PrVP_np_q -> Chunk ; + VP_np_a_Chunk, VP_np_a_inf_Chunk : PrVP_np_a -> Chunk ; + + V_none_prespart_Chunk, V_none_pastpart_Chunk : PrV_none -> Chunk ; + V_np_prespart_Chunk, V_np_pastpart_Chunk : PrV_np -> Chunk ; + V_s_prespart_Chunk, V_s_pastpart_Chunk : PrV_s -> Chunk ; + V_v_prespart_Chunk, V_v_pastpart_Chunk : PrV_v -> Chunk ; + V_q_prespart_Chunk, V_q_pastpart_Chunk : PrV_q -> Chunk ; + V_a_prespart_Chunk, V_a_pastpart_Chunk : PrV_q -> Chunk ; + + V_np_np_prespart_Chunk, V_np_np_pastpart_Chunk : PrV_np_np -> Chunk ; + V_np_s_prespart_Chunk, V_np_s_pastpart_Chunk : PrV_np_s -> Chunk ; + V_np_v_prespart_Chunk, V_np_v_pastpart_Chunk : PrV_np_v -> Chunk ; + V_np_q_prespart_Chunk, V_np_q_pastpart_Chunk : PrV_np_q -> Chunk ; + V_np_a_prespart_Chunk, V_np_a_pastpart_Chunk : PrV_np_q -> Chunk ; + + refl_SgP1_Chunk, + refl_SgP2_Chunk, + refl_SgP3_Chunk, + refl_PlP1_Chunk, + refl_PlP2_Chunk, + refl_PlP3_Chunk : Chunk ; + neg_Chunk : Chunk ; + copula_Chunk : Chunk ; + copula_neg_Chunk : Chunk ; + copula_inf_Chunk : Chunk ; + past_copula_Chunk : Chunk ; + past_copula_neg_Chunk : Chunk ; + future_Chunk : Chunk ; + future_neg_Chunk : Chunk ; + cond_Chunk : Chunk ; + cond_neg_Chunk : Chunk ; + perfect_Chunk : Chunk ; + perfect_neg_Chunk : Chunk ; + past_perfect_Chunk : Chunk ; + past_perfect_neg_Chunk : Chunk ; + +} diff --git a/examples/translator/SmallPredChi.gf b/examples/translator/SmallPredChi.gf new file mode 100644 index 000000000..11eb79e12 --- /dev/null +++ b/examples/translator/SmallPredChi.gf @@ -0,0 +1,222 @@ +concrete SmallPredChi of SmallPred = + RGLBaseChi - [Pol,Tense,Ant], + + NDPredChi [ + 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 + + ], + +NDLiftChi [ + 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 +], + +ChunkChi [ + 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=PredChi), PredInstanceChi, ResChi 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 : Str + } ; + + PrCl_none + = {s : 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 -> SmallPredChi.PrVP_none = \vp -> + lin PrVP_none { + v = + let + vv = vp.v ! UUnit ; + vpa = UUnit ; + in + vv.p1 ++ vp.adV ++ vv.p2 ++ vv.p3 ++ vp.adj ! vpa ++ + appPrep vp.c1 (vp.obj1.p1 ! vpa) ++ appPrep 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.s ++ question_s} ; + + 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 = np.s ++ vp.v + } ; + + 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 = s.s ++ v.v ++ o.s ; + } ; + + 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} ; + + 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.v} ; + + } 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 + ; + } ; + +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} ; + + } diff --git a/examples/translator/SmallPredFin.gf b/examples/translator/SmallPredFin.gf new file mode 100644 index 000000000..0f550fa57 --- /dev/null +++ b/examples/translator/SmallPredFin.gf @@ -0,0 +1,241 @@ +--# -path=.:../finnish/stemmed:../finnish:../api:../translator:../../../examples/phrasebook:alltenses + +concrete SmallPredFin of SmallPred = + RGLBaseFin - [Pol,Tense], + + NDPredFin [ + 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 + + ], + +NDLiftFin [ + 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 +], + +ChunkFin [ + 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=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 + = \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 -> + { + 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/examples/translator/SmallPredFre.gf b/examples/translator/SmallPredFre.gf new file mode 100644 index 000000000..c0a9abab6 --- /dev/null +++ b/examples/translator/SmallPredFre.gf @@ -0,0 +1,249 @@ +concrete SmallPredFre of SmallPred = + RGLBaseFre ** + + open ResFre, CommonRomance, (S = SyntaxFre), (P = ParadigmsFre), PhonoFre, Prelude in { + +-- NDPredFre [ +lincat + 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 + = {s : VF => Str ; c2 : Compl ; vtyp : VType} ; + PrAdv_none = S.Adv ; + PrS = {s : Str} ; + PrAP_none = S.AP ; + PrCN_none = S.CN ; + + +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 : Agr => Str ; + inf : Str ; + c2 : Compl ; + ne : Str ; -- empty in Pos, "ne" in Neg + } ; + + PrCl_none + = {s : Str} ; + PrQCl_none + = {s : Str} ; + +lin + UttPrS s = s ; + + 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 (t.s ++ a.s ++ p.s) t.t a.a p.p v [] ; + +oper + mkVP : Str -> RTense -> Anteriority -> RPolarity -> PrV_none -> Str -> PrVP_none = \atp,tense,ant,pol,verb,obj -> + let + oldvp : ResFre.VP = + predV verb ; + clause : Agr -> {s : Direct => RTense => Anteriority => RPolarity => Mood => Str} = \agr -> + mkClause atp False False agr oldvp ; + nepas : Str * Str = case pol of {RPos => <[],[]> ; _ => } ; + in + lin PrVP_none { + v : Agr => Str = \\agr => (clause agr).s ! DDir ! tense ! ant ! RPos ! Indic ++ nepas.p2 ++ obj ; + inf : Str = verb.s ! VInfin False ++ obj ; ---- ant,pol + c2 : Compl = verb.c2 ; + ne : Str = nepas.p1 ; + } ; + +lin + UseAdv_none a t p adv = mkVP (t.s ++ a.s ++ p.s) t.t a.a p.p (copula ** {c2 = P.accusative}) adv.s ; + + UseCN_none a t p cn = mkVP (t.s ++ a.s ++ p.s) t.t a.a p.p (copula ** {c2 = P.accusative}) (cn.s ! Sg) ; + + UseNP_none a t p np = mkVP (t.s ++ a.s ++ p.s) t.t a.a p.p (copula ** {c2 = P.accusative}) ((np.s ! Nom).comp) ; + + +lin + QuestCl_none cl = {s = "est-ce" ++ elisQue ++ cl.s} ; + + UseCl_none cl = cl ; + UseQCl_none cl = 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 = (np.s ! Nom).comp ++ vp.ne ++ vp.v ! np.a ; + } ; + + 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 -> + let obj = o.s ! v.c2.c in + { + s = (s.s ! Nom).comp ++ v.ne ++ obj.c1 ++ obj.c2 ++ v.v ! s.a ++ v.c2.s ++ obj.comp ; + } ; + + + PredAP_none + = \a, t, p, np, ap -> + let verb = mkVP (t.s ++ a.s ++ p.s) t.t a.a p.p (lin PrV_none (copula ** {c2 = P.accusative})) [] in + { + s = (np.s ! Nom).comp ++ verb.ne ++ verb.v ! np.a ++ ap.s ! AF np.a.g np.a.n ; + } ; + + + +-- NDLiftFre [ + + LiftV, + LiftVS, + LiftVQ, + LiftVV, + LiftVA, + LiftVN + = \v -> v ** {c2 = P.accusative} ; + + LiftV2, + LiftV3, + LiftV2S, + LiftV2Q, + LiftV2V, + LiftV2A, + LiftV2N + = \v -> v ; + + LiftAP ap = ap ; + LiftCN cn = cn ; + + LiftAdv adv = adv ; + LiftAdV adv = adv ; + +-- ChunkFre [ + +lincat + Chunks = {s : Str} ; + Chunk = {s : Str}; + +lin + OneChunk c = c ; + PlusChunk c cs = cc2 c cs ; + + ChunkPhr c = ss ("*" ++ c.s) | c ; + +oper + defaultAAgr = {n = Sg ; g = Masc} ; + +lin + + + AP_Chunk ap = ss (ap.s ! AF Masc Sg) ; + AdA_Chunk ada = ada ; + Adv_Chunk adv = adv ; + AdV_Chunk adv = adv ; + AdN_Chunk adn = adn ; + Cl_Chunk cl = cl ; + QCl_Chunk cl = cl ; + CN_Pl_Chunk cn = ss (cn.s ! Pl) ; + CN_Sg_Chunk cn = ss (cn.s ! Sg) ; + CN_Pl_Gen_Chunk cn = ss (elisDe ++ cn.s ! Pl) ; + CN_Sg_Gen_Chunk cn = ss (elisDe ++ cn.s ! Sg) ; + Conj_Chunk conj = ss conj.s2 ; + IAdv_Chunk iadv = iadv ; + IP_Chunk ip = ss (ip.s ! Nom) ; + NP_Nom_Chunk np = ss ((np.s ! Nom).ton) ; + NP_Acc_Chunk np = ss (np.s ! Acc).ton ; + NP_Gen_Chunk np = ss (np.s ! genitive).ton ; + Numeral_Nom_Chunk num = ss (num.s ! NCard Masc) ; + Numeral_Gen_Chunk num = ss (elisDe ++ num.s ! NCard Masc) ; +---- Ord_Nom_Chunk ord = ss (ord.s ! defaultAAgr) ; +---- Ord_Gen_Chunk ord = ss (elisDe ++ ord.s ! defaultAAgr) ; +---- Predet_Chunk predet = ss (predet.s ! defaultAAgr ! Nom) ; + Prep_Chunk prep = prep ; ---- +---- RP_Nom_Chunk rp = ss (rp.s ! False ! defaultAAgr ! Nom) ; +---- RP_Acc_Chunk rp = ss (rp.s ! False ! defaultAAgr ! Acc) ; +---- RP_Gen_Chunk rp = ss (rp.s ! False ! defaultAAgr ! genitive) ; + Subj_Chunk subj = subj ; + + 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 -> ss (vp.ne ++ vp.v ! {g = Masc ; n = Sg ; p = P3}) ; + + 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 -> ss vp.inf ; + + V_none_prespart_Chunk, + V_np_prespart_Chunk, + V_s_prespart_Chunk, + V_a_prespart_Chunk, + V_q_prespart_Chunk, + V_v_prespart_Chunk, + V_np_np_prespart_Chunk, + V_np_s_prespart_Chunk, + V_np_a_prespart_Chunk, + V_np_q_prespart_Chunk, + V_np_v_prespart_Chunk + = \v -> ss (v.s ! VGer) ; + + V_none_pastpart_Chunk, + V_np_pastpart_Chunk, + V_s_pastpart_Chunk, + V_a_pastpart_Chunk, + V_q_pastpart_Chunk, + V_v_pastpart_Chunk, + V_np_np_pastpart_Chunk, + V_np_s_pastpart_Chunk, + V_np_a_pastpart_Chunk, + V_np_q_pastpart_Chunk, + V_np_v_pastpart_Chunk + = \v -> ss (v.s ! VPart Masc Sg) ; + + copula_inf_Chunk = ss "ètre" ; + + refl_SgP1_Chunk = ss "moi-même" ; + refl_SgP2_Chunk = ss "toi-même" ; + refl_SgP3_Chunk = ss "lui-même" ; + refl_PlP1_Chunk = ss "nous-mêmes" ; + refl_PlP2_Chunk = ss "vous-mêmes" ; + refl_PlP3_Chunk = ss "eux-mêmes" ; + neg_Chunk = ss "non" ; + copula_Chunk = ss "est" ; + copula_neg_Chunk = ss "n'est pas" ; + past_copula_Chunk = ss "était" ; + past_copula_neg_Chunk = ss "n'était pas" ; + future_Chunk = ss "va" ; + future_neg_Chunk = ss "ne va pas" ; + cond_Chunk = ss "ferait" ; ---- + cond_neg_Chunk = ss "ne ferait pas" ; ---- + perfect_Chunk = ss "a" ; + perfect_neg_Chunk = ss "n'a pas" ; + past_perfect_Chunk = ss "avait" ; + past_perfect_neg_Chunk = ss "n'avait pas" ; + +} \ No newline at end of file diff --git a/examples/translator/SmallPredIta.gf b/examples/translator/SmallPredIta.gf new file mode 100644 index 000000000..664525c3b --- /dev/null +++ b/examples/translator/SmallPredIta.gf @@ -0,0 +1,249 @@ +concrete SmallPredIta of SmallPred = + RGLBaseIta ** + + open ResIta, CommonRomance, (S = SyntaxIta), (P = ParadigmsIta), PhonoIta, Prelude in { + +-- NDPredIta [ +lincat + 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 + = {s : VF => Str ; c2 : Compl ; vtyp : VType} ; + PrAdv_none = S.Adv ; + PrS = {s : Str} ; + PrAP_none = S.AP ; + PrCN_none = S.CN ; + + +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 : Agr => Str ; + inf : Str ; + c2 : Compl ; + ne : Str ; -- empty in Pos, "ne" in Neg + } ; + + PrCl_none + = {s : Str} ; + PrQCl_none + = {s : Str} ; + +lin + UttPrS s = s ; + + 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 (t.s ++ a.s ++ p.s) t.t a.a p.p v [] ; + +oper + mkVP : Str -> RTense -> Anteriority -> RPolarity -> PrV_none -> Str -> PrVP_none = \atp,tense,ant,pol,verb,obj -> + let + oldvp : ResIta.VP = + predV verb ; + clause : Agr -> {s : Direct => RTense => Anteriority => RPolarity => Mood => Str} = \agr -> + mkClause atp False False agr oldvp ; + nepas : Str * Str = case pol of {RPos => <[],[]> ; _ => <"non", []>} ; + in + lin PrVP_none { + v : Agr => Str = \\agr => (clause agr).s ! DDir ! tense ! ant ! RPos ! Indic ++ nepas.p2 ++ obj ; + inf : Str = verb.s ! VInfin False ++ obj ; ---- ant,pol + c2 : Compl = verb.c2 ; + ne : Str = nepas.p1 ; + } ; + +lin + UseAdv_none a t p adv = mkVP (t.s ++ a.s ++ p.s) t.t a.a p.p (copula ** {c2 = P.accusative}) adv.s ; + + UseCN_none a t p cn = mkVP (t.s ++ a.s ++ p.s) t.t a.a p.p (copula ** {c2 = P.accusative}) (cn.s ! Sg) ; + + UseNP_none a t p np = mkVP (t.s ++ a.s ++ p.s) t.t a.a p.p (copula ** {c2 = P.accusative}) ((np.s ! Nom).comp) ; + + +lin + QuestCl_none cl = {s = cl.s} ; + + UseCl_none cl = cl ; + UseQCl_none cl = 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 = (np.s ! Nom).comp ++ vp.ne ++ vp.v ! np.a ; + } ; + + 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 -> + let obj = o.s ! v.c2.c in + { + s = (s.s ! Nom).comp ++ v.ne ++ obj.c1 ++ obj.c2 ++ v.v ! s.a ++ v.c2.s ++ obj.comp ; + } ; + + + PredAP_none + = \a, t, p, np, ap -> + let verb = mkVP (t.s ++ a.s ++ p.s) t.t a.a p.p (lin PrV_none (copula ** {c2 = P.accusative})) [] in + { + s = (np.s ! Nom).comp ++ verb.ne ++ verb.v ! np.a ++ ap.s ! AF np.a.g np.a.n ; + } ; + + + +-- NDLiftIta [ + + LiftV, + LiftVS, + LiftVQ, + LiftVV, + LiftVA, + LiftVN + = \v -> v ** {c2 = P.accusative} ; + + LiftV2, + LiftV3, + LiftV2S, + LiftV2Q, + LiftV2V, + LiftV2A, + LiftV2N + = \v -> v ; + + LiftAP ap = ap ; + LiftCN cn = cn ; + + LiftAdv adv = adv ; + LiftAdV adv = adv ; + +-- ChunkIta [ + +lincat + Chunks = {s : Str} ; + Chunk = {s : Str}; + +lin + OneChunk c = c ; + PlusChunk c cs = cc2 c cs ; + + ChunkPhr c = ss ("*" ++ c.s) | c ; + +oper + defaultAAgr = {n = Sg ; g = Masc} ; + +lin + + + AP_Chunk ap = ss (ap.s ! AF Masc Sg) ; + AdA_Chunk ada = ada ; + Adv_Chunk adv = adv ; + AdV_Chunk adv = adv ; + AdN_Chunk adn = adn ; + Cl_Chunk cl = cl ; + QCl_Chunk cl = cl ; + CN_Pl_Chunk cn = ss (cn.s ! Pl) ; + CN_Sg_Chunk cn = ss (cn.s ! Sg) ; + CN_Pl_Gen_Chunk cn = ss ("di" ++ cn.s ! Pl) ; + CN_Sg_Gen_Chunk cn = ss ("di" ++ cn.s ! Sg) ; + Conj_Chunk conj = ss conj.s2 ; + IAdv_Chunk iadv = iadv ; + IP_Chunk ip = ss (ip.s ! Nom) ; + NP_Nom_Chunk np = ss ((np.s ! Nom).ton) ; + NP_Acc_Chunk np = ss (np.s ! Acc).ton ; + NP_Gen_Chunk np = ss (np.s ! genitive).ton ; + Numeral_Nom_Chunk num = ss (num.s ! NCard Masc) ; + Numeral_Gen_Chunk num = ss ("di" ++ num.s ! NCard Masc) ; +---- Ord_Nom_Chunk ord = ss (ord.s ! defaultAAgr) ; +---- Ord_Gen_Chunk ord = ss ("di" ++ ord.s ! defaultAAgr) ; +---- Predet_Chunk predet = ss (predet.s ! defaultAAgr ! Nom) ; + Prep_Chunk prep = prep ; ---- +---- RP_Nom_Chunk rp = ss (rp.s ! False ! defaultAAgr ! Nom) ; +---- RP_Acc_Chunk rp = ss (rp.s ! False ! defaultAAgr ! Acc) ; +---- RP_Gen_Chunk rp = ss (rp.s ! False ! defaultAAgr ! genitive) ; + Subj_Chunk subj = subj ; + + 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 -> ss (vp.ne ++ vp.v ! {g = Masc ; n = Sg ; p = P3}) ; + + 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 -> ss vp.inf ; + + V_none_prespart_Chunk, + V_np_prespart_Chunk, + V_s_prespart_Chunk, + V_a_prespart_Chunk, + V_q_prespart_Chunk, + V_v_prespart_Chunk, + V_np_np_prespart_Chunk, + V_np_s_prespart_Chunk, + V_np_a_prespart_Chunk, + V_np_q_prespart_Chunk, + V_np_v_prespart_Chunk + = \v -> ss (v.s ! VGer) ; + + V_none_pastpart_Chunk, + V_np_pastpart_Chunk, + V_s_pastpart_Chunk, + V_a_pastpart_Chunk, + V_q_pastpart_Chunk, + V_v_pastpart_Chunk, + V_np_np_pastpart_Chunk, + V_np_s_pastpart_Chunk, + V_np_a_pastpart_Chunk, + V_np_q_pastpart_Chunk, + V_np_v_pastpart_Chunk + = \v -> ss (v.s ! VPart Masc Sg) ; + + copula_inf_Chunk = ss "ètre" ; + + refl_SgP1_Chunk = ss "me stesso" ; + refl_SgP2_Chunk = ss "te stesso" ; + refl_SgP3_Chunk = ss "lui stesso" ; + refl_PlP1_Chunk = ss "noi stessi" ; + refl_PlP2_Chunk = ss "voi stessi" ; + refl_PlP3_Chunk = ss "loro stessi" ; + neg_Chunk = ss "non" ; + copula_Chunk = ss "è" ; + copula_neg_Chunk = ss "non è" ; + past_copula_Chunk = ss "era" ; + past_copula_neg_Chunk = ss "non era" ; + future_Chunk = ss "vuole" ; ---- + future_neg_Chunk = ss "non vuole" ; ---- + cond_Chunk = ss "vorrebbe" ; ---- + cond_neg_Chunk = ss "non vorrebbe" ; ---- + perfect_Chunk = ss "ha" ; + perfect_neg_Chunk = ss "non ha" ; + past_perfect_Chunk = ss "aveva" ; + past_perfect_neg_Chunk = ss "non aveva" ; + +} \ No newline at end of file diff --git a/examples/translator/SmallPredSwe.gf b/examples/translator/SmallPredSwe.gf new file mode 100644 index 000000000..c97e8b267 --- /dev/null +++ b/examples/translator/SmallPredSwe.gf @@ -0,0 +1,234 @@ +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 + ; + } ; + +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} ; + + } diff --git a/lib/src/experimental/Makefile b/lib/src/experimental/Makefile index c8b09a1c6..e6ba5444a 100644 --- a/lib/src/experimental/Makefile +++ b/lib/src/experimental/Makefile @@ -7,10 +7,3 @@ bigtranslator: midtranslator: gf -s -make -literal=Symb -probs=NDPredTrans.probs -name=TransEngChiSwe NDTransEng.gf NDTransSwe.gf NDTransChi.gf +RTS -K200M - - -app: - gf -s -make -literal=Symb -probs=NDPredTrans.probs -name=AppEngSwe AppEng.gf AppSwe.gf -bigapp: - gf -s -make -literal=Symb -probs=NDPredTrans.probs -name=AppEngChiFinFreSwe AppEng.gf AppSwe.gf AppChi.gf AppFre.gf AppFin.gf +RTS -K200M -