forked from GitHub/gf-core
AppIta, with a small lexicon
This commit is contained in:
18
lib/src/experimental/AppIta.gf
Normal file
18
lib/src/experimental/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 ;
|
||||
|
||||
}
|
||||
20
lib/src/experimental/RGLBaseIta.gf
Normal file
20
lib/src/experimental/RGLBaseIta.gf
Normal file
@@ -0,0 +1,20 @@
|
||||
concrete RGLBaseIta of RGLBase =
|
||||
|
||||
-- modules in Grammar, excluding Structural, Verb, Sentence, Question
|
||||
TenseIta - [TTAnt],
|
||||
NounIta - [PPartNP], -- to be generalized
|
||||
AdjectiveIta,
|
||||
NumeralIta,
|
||||
ConjunctionIta,
|
||||
AdverbIta,
|
||||
PhraseIta,
|
||||
---- Sentence,
|
||||
QuestionIta - [QuestCl,QuestVP,QuestSlash,QuestIAdv,QuestIComp],
|
||||
RelativeIta - [RelCl,RelVP,RelSlash],
|
||||
---- Idiom [NP, VP, Cl, Tense, ProgrVP, ExistNP, SelfAdvVP, SelfAdVVP, SelfNP], ---- why only these?
|
||||
|
||||
SymbolIta [PN, Symb, String, CN, Card, NP, MkSymb, SymbPN, CNNumNP] ; ---- why only these?
|
||||
|
||||
---- Construction,
|
||||
---- Extensions,
|
||||
---- Documentation ;
|
||||
249
lib/src/experimental/SmallPredIta.gf
Normal file
249
lib/src/experimental/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" ;
|
||||
|
||||
}
|
||||
@@ -64,6 +64,7 @@ public class Translator {
|
||||
new Language("sv-SE", "Swedish", "AppSwe", R.xml.qwerty),
|
||||
new Language("fi-FI", "Finnish", "AppFin", R.xml.qwerty),
|
||||
new Language("fr-FR", "French", "AppFre", R.xml.qwerty),
|
||||
new Language("it-IT", "Italian", "AppIta", R.xml.qwerty),
|
||||
};
|
||||
// */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user