summaryrefslogtreecommitdiff
path: root/examples/translator
diff options
context:
space:
mode:
Diffstat (limited to 'examples/translator')
-rw-r--r--examples/translator/App.gf17
-rw-r--r--examples/translator/AppChi.gf20
-rw-r--r--examples/translator/AppEng.gf19
-rw-r--r--examples/translator/AppFin.gf18
-rw-r--r--examples/translator/AppFre.gf18
-rw-r--r--examples/translator/AppIta.gf18
-rw-r--r--examples/translator/AppSwe.gf18
-rw-r--r--examples/translator/SmallNDPredFunctor.gf230
-rw-r--r--examples/translator/SmallPred.gf206
-rw-r--r--examples/translator/SmallPredChi.gf222
-rw-r--r--examples/translator/SmallPredEng.gf234
-rw-r--r--examples/translator/SmallPredFin.gf241
-rw-r--r--examples/translator/SmallPredFre.gf249
-rw-r--r--examples/translator/SmallPredIta.gf249
-rw-r--r--examples/translator/SmallPredSwe.gf234
15 files changed, 1993 insertions, 0 deletions
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
+ <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} ;
+
+ }
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
+ <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_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 => <[],[]> ; _ => <elisNe, "pas">} ;
+ 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
+ <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} ;
+
+ }