mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
moved the small app chunking grammars from lib/src/experimental to examples/translator; the proper place might be in the git contributions, but this can be decided later
This commit is contained in:
17
examples/translator/App.gf
Normal file
17
examples/translator/App.gf
Normal file
@@ -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 ;
|
||||
|
||||
}
|
||||
20
examples/translator/AppChi.gf
Normal file
20
examples/translator/AppChi.gf
Normal file
@@ -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 ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
19
examples/translator/AppEng.gf
Normal file
19
examples/translator/AppEng.gf
Normal file
@@ -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 ;
|
||||
|
||||
}
|
||||
18
examples/translator/AppFin.gf
Normal file
18
examples/translator/AppFin.gf
Normal file
@@ -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 ;
|
||||
|
||||
}
|
||||
18
examples/translator/AppFre.gf
Normal file
18
examples/translator/AppFre.gf
Normal file
@@ -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 ;
|
||||
|
||||
}
|
||||
18
examples/translator/AppIta.gf
Normal file
18
examples/translator/AppIta.gf
Normal file
@@ -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 ;
|
||||
|
||||
}
|
||||
18
examples/translator/AppSwe.gf
Normal file
18
examples/translator/AppSwe.gf
Normal file
@@ -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 ;
|
||||
|
||||
}
|
||||
230
examples/translator/SmallNDPredFunctor.gf
Normal file
230
examples/translator/SmallNDPredFunctor.gf
Normal file
@@ -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 ;
|
||||
-}
|
||||
}
|
||||
206
examples/translator/SmallPred.gf
Normal file
206
examples/translator/SmallPred.gf
Normal file
@@ -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 ;
|
||||
|
||||
}
|
||||
222
examples/translator/SmallPredChi.gf
Normal file
222
examples/translator/SmallPredChi.gf
Normal file
@@ -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} ;
|
||||
|
||||
}
|
||||
234
examples/translator/SmallPredEng.gf
Normal file
234
examples/translator/SmallPredEng.gf
Normal file
@@ -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} ;
|
||||
|
||||
}
|
||||
241
examples/translator/SmallPredFin.gf
Normal file
241
examples/translator/SmallPredFin.gf
Normal file
@@ -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} ;
|
||||
|
||||
}
|
||||
249
examples/translator/SmallPredFre.gf
Normal file
249
examples/translator/SmallPredFre.gf
Normal file
@@ -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" ;
|
||||
|
||||
}
|
||||
249
examples/translator/SmallPredIta.gf
Normal file
249
examples/translator/SmallPredIta.gf
Normal file
@@ -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" ;
|
||||
|
||||
}
|
||||
234
examples/translator/SmallPredSwe.gf
Normal file
234
examples/translator/SmallPredSwe.gf
Normal file
@@ -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} ;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user